From ea59f5311805ca625a0528ca5ece5c98df165334 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 19 Mar 2024 19:28:18 +0100 Subject: [PATCH 001/153] Tiled texture view prototype --- css/panels.css | 6 ++++++ js/texturing/painter.js | 10 ++++++++++ js/texturing/textures.js | 1 + js/texturing/uv.js | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/css/panels.css b/css/panels.css index c01d48b1b..1a0ba0ee3 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1958,6 +1958,12 @@ span.controller_state_section_info { object-fit: cover; object-position: 0 0; } + #uv_frame > #texture_canvas_wrapper > canvas.tile_overlay_canvas { + width: 300%; + height: 300%; + margin-left: -100%; + margin-top: -100%; + } /* Fix in Firefox + iPadOS */ #uv_frame_spacer { width: 1px; diff --git a/js/texturing/painter.js b/js/texturing/painter.js index a75931980..82ca0dbf1 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -2940,6 +2940,16 @@ BARS.defineActions(function() { keybind: new Keybind({key: 'g'}), linked_setting: 'painting_grid' }) + new BarSelect('image_tile_mode', { + category: 'uv', + value: 'off', + options: { + off: 'Off', + tiled: 'Tiled', + }, + onChange(slider) { + } + }) new NumSlider('slider_brush_size', { condition: () => (Toolbox && ((Toolbox.selected.brush?.size == true) || ['draw_shape_tool'].includes(Toolbox.selected.id))), diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 2d9bc4d71..8a7b1f27c 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -1670,6 +1670,7 @@ class Texture { return this; } updateLayerChanges(update_data_url) { + if (UVEditor.vue.texture == this) UVEditor.textureChanged(); if (!this.layers_enabled || this.width == 0) return this; this.canvas.width = this.width; this.canvas.height = this.height; diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 9c6f8978e..7d00418d0 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -6,6 +6,11 @@ const UVEditor = { auto_grid: true, panel: null, sliders: {}, + overlay_canvas: (() => { + let canvas = document.createElement('canvas'); + canvas.classList.add('tile_overlay_canvas'); + return canvas; + })(), get vue() { return this.panel.inside_vue; @@ -56,9 +61,14 @@ const UVEditor = { result.y = Math.floor(result.y); } } + console.log() if (tex) { if (tex.frameCount) result.y += (tex.height / tex.frameCount) * tex.currentFrame; if (!tex.frameCount && tex.ratio != tex.getUVWidth() / tex.getUVHeight()) result.y /= tex.ratio; + if (BarItems.image_tile_mode.value == 'tiled') { + result.x = (tex.width + result.x) % tex.width; + result.y = (tex.display_height + result.y) % tex.display_height; + } } return result; }, @@ -247,6 +257,21 @@ const UVEditor = { scrollTop: focus[1] + margin[1] - UVEditor.height / 2, }, 100) }, + + textureChanged() { + if (BarItems.image_tile_mode.value == 'tiled') { + let canvas = UVEditor.overlay_canvas; + let texture = Texture.selected; + let ctx = canvas.getContext('2d'); + canvas.width = texture.width * 3; + canvas.height = texture.display_height * 3; + for (let x = 0; x < 3; x++) { + for (let y = 0; y < 3; y++) { + ctx.drawImage(texture.canvas, x * texture.width, y * texture.display_height); + } + } + } + }, //Get get width() { return this.vue.width; @@ -2188,10 +2213,13 @@ Interface.definePanels(function() { Vue.nextTick(() => { let wrapper = this.$refs.texture_canvas_wrapper; - if (!wrapper || wrapper.firstChild == this.texture.canvas) return; - if (wrapper.firstChild) { + if (!wrapper || (wrapper.firstChild == this.texture.canvas && BarItems.image_tile_mode.value != 'tiled')) return; + while (wrapper.firstChild) { wrapper.firstChild.remove(); } + if (UVEditor.overlay_canvas && BarItems.image_tile_mode.value == 'tiled') { + wrapper.append(UVEditor.overlay_canvas); + } wrapper.append(this.texture.canvas); }) }, From c991aaed9f54006dbe68456ccc945c720e6061d5 Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Sat, 27 Apr 2024 13:54:00 -0400 Subject: [PATCH 002/153] Allow Textures to be created outside of a Project --- js/texturing/textures.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index dbb9a9188..6afd43448 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -185,7 +185,11 @@ class Texture { }); mat.map = tex; mat.name = this.name; - Project.materials[this.uuid] = mat; + if (!data.standalone) { + if (!Project) throw new Error('Attempted to create a Texture without a Project. If this is intentional, set the standalone option to true.'); + Project.materials[this.uuid] = mat; + }; + var size_control = {}; From 3ffb6d6615bac095a38425a606c3af54b8a2b4f7 Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Mon, 29 Apr 2024 08:10:24 -0400 Subject: [PATCH 003/153] Revert "Allow Textures to be created outside of a Project" This reverts commit c991aaed9f54006dbe68456ccc945c720e6061d5. --- js/texturing/textures.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 6afd43448..dbb9a9188 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -185,11 +185,7 @@ class Texture { }); mat.map = tex; mat.name = this.name; - if (!data.standalone) { - if (!Project) throw new Error('Attempted to create a Texture without a Project. If this is intentional, set the standalone option to true.'); - Project.materials[this.uuid] = mat; - }; - + Project.materials[this.uuid] = mat; var size_control = {}; From f7d46f11be1765281fbf5453afc5c4c7cbdf95b8 Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Mon, 29 Apr 2024 08:31:16 -0400 Subject: [PATCH 004/153] Rewrite of Molang Autocomplete system. A rewrite of the Molang Autocomplete system to improve plugin extensibility. --- js/animations/animation.js | 4 +- js/animations/animation_controllers.js | 2 +- js/animations/animation_mode.js | 2 +- js/animations/keyframe.js | 2 +- js/animations/molang.js | 1810 ++++++++++++++++++------ js/outliner/group.js | 2 +- 6 files changed, 1413 insertions(+), 409 deletions(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index 37c896eaf..54e287621 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -716,7 +716,7 @@ class Animation extends AnimationItem { }, methods: { autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'animation'); + let test = MolangAutocomplete.AnimationContext.autocomplete(text, position); return test; } }, @@ -1921,7 +1921,7 @@ Interface.definePanels(function() { addEventListeners(document, 'mousemove touchmove', move); }, autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'placeholders'); + let test = MolangAutocomplete.VariablePlaceholdersContext.autocomplete(text, position); return test; } }, diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 58e9725e5..3e2a19652 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -1420,7 +1420,7 @@ Interface.definePanels(() => { Locator.updateAutocompleteList(); }, autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'controller'); + let test = MolangAutocomplete.AnimationControllerContext.autocomplete(text, position); return test; } }, diff --git a/js/animations/animation_mode.js b/js/animations/animation_mode.js index d14de749f..31664b398 100644 --- a/js/animations/animation_mode.js +++ b/js/animations/animation_mode.js @@ -1400,7 +1400,7 @@ Interface.definePanels(function() { addEventListeners(document, 'mousemove touchmove', move); }, autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'placeholders'); + let test = MolangAutocomplete.VariablePlaceholdersContext.autocomplete(text, position); return test; } }, diff --git a/js/animations/keyframe.js b/js/animations/keyframe.js index 107fb536c..070ca80ed 100644 --- a/js/animations/keyframe.js +++ b/js/animations/keyframe.js @@ -1436,7 +1436,7 @@ Interface.definePanels(function() { } }, autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'keyframe'); + let test = MolangAutocomplete.KeyframeContext.autocomplete(text, position); return test; }, tl, diff --git a/js/animations/molang.js b/js/animations/molang.js index f028448db..19dae7b2e 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -104,409 +104,6 @@ Animator.MolangParser.variableHandler = function (variable, variables) { } }; -(function() { - let RootTokens = [ - 'true', - 'false', - 'math.', - 'query.', //'q.', - 'variable.',//'v.', - 'temp.', //'t.', - 'context.', //'c.', - 'this', - 'loop()', - 'return', - 'break', - 'continue', - ] - let MolangQueries = [ - // common - 'all_animations_finished', - 'any_animation_finished', - 'anim_time', - 'life_time', - 'yaw_speed', - 'ground_speed', - 'vertical_speed', - 'property', - 'has_property()', - 'variant', - 'mark_variant', - 'skin_id', - - - 'above_top_solid', - 'actor_count', - 'all()', - 'all_tags', - 'anger_level', - 'any()', - 'any_tag', - 'approx_eq()', - 'armor_color_slot', - 'armor_material_slot', - 'armor_texture_slot', - 'average_frame_time', - 'blocking', - 'body_x_rotation', - 'body_y_rotation', - 'bone_aabb', - 'bone_origin', - 'bone_rotation', - 'camera_distance_range_lerp', - 'camera_rotation()', - 'can_climb', - 'can_damage_nearby_mobs', - 'can_dash', - 'can_fly', - 'can_power_jump', - 'can_swim', - 'can_walk', - 'cape_flap_amount', - 'cardinal_facing', - 'cardinal_facing_2d', - 'cardinal_player_facing', - 'combine_entities()', - 'count', - 'current_squish_value', - 'dash_cooldown_progress', - 'day', - 'death_ticks', - 'debug_output', - 'delta_time', - 'distance_from_camera', - 'effect_emitter_count', - 'effect_particle_count', - 'equipment_count', - 'equipped_item_all_tags', - 'equipped_item_any_tag()', - 'equipped_item_is_attachable', - 'eye_target_x_rotation', - 'eye_target_y_rotation', - 'facing_target_to_range_attack', - 'frame_alpha', - 'get_actor_info_id', - 'get_animation_frame', - 'get_default_bone_pivot', - 'get_locator_offset', - 'get_root_locator_offset', - 'had_component_group()', - 'has_any_family()', - 'has_armor_slot', - 'has_biome_tag', - 'has_block_property', - 'has_cape', - 'has_collision', - 'has_dash_cooldown', - 'has_gravity', - 'has_owner', - 'has_rider', - 'has_target', - 'head_roll_angle', - 'head_x_rotation', - 'head_y_rotation', - 'health', - 'heartbeat_interval', - 'heartbeat_phase', - 'heightmap', - 'hurt_direction', - 'hurt_time', - 'in_range()', - 'invulnerable_ticks', - 'is_admiring', - 'is_alive', - 'is_angry', - 'is_attached_to_entity', - 'is_avoiding_block', - 'is_avoiding_mobs', - 'is_baby', - 'is_breathing', - 'is_bribed', - 'is_carrying_block', - 'is_casting', - 'is_celebrating', - 'is_celebrating_special', - 'is_charged', - 'is_charging', - 'is_chested', - 'is_critical', - 'is_croaking', - 'is_dancing', - 'is_delayed_attacking', - 'is_digging', - 'is_eating', - 'is_eating_mob', - 'is_elder', - 'is_emerging', - 'is_emoting', - 'is_enchanted', - 'is_fire_immune', - 'is_first_person', - 'is_ghost', - 'is_gliding', - 'is_grazing', - 'is_idling', - 'is_ignited', - 'is_illager_captain', - 'is_in_contact_with_water', - 'is_in_love', - 'is_in_ui', - 'is_in_water', - 'is_in_water_or_rain', - 'is_interested', - 'is_invisible', - 'is_item_equipped', - 'is_item_name_any()', - 'is_jump_goal_jumping', - 'is_jumping', - 'is_laying_down', - 'is_laying_egg', - 'is_leashed', - 'is_levitating', - 'is_lingering', - 'is_moving', - 'is_name_any()', - 'is_on_fire', - 'is_on_ground', - 'is_on_screen', - 'is_onfire', - 'is_orphaned', - 'is_owner_identifier_any()', - 'is_persona_or_premium_skin', - 'is_playing_dead', - 'is_powered', - 'is_pregnant', - 'is_ram_attacking', - 'is_resting', - 'is_riding', - 'is_roaring', - 'is_rolling', - 'is_saddled', - 'is_scared', - 'is_selected_item', - 'is_shaking', - 'is_shaking_wetness', - 'is_sheared', - 'is_shield_powered', - 'is_silent', - 'is_sitting', - 'is_sleeping', - 'is_sneaking', - 'is_sneezing', - 'is_sniffing', - 'is_sonic_boom', - 'is_spectator', - 'is_sprinting', - 'is_stackable', - 'is_stalking', - 'is_standing', - 'is_stunned', - 'is_swimming', - 'is_tamed', - 'is_transforming', - 'is_using_item', - 'is_wall_climbing', - 'item_in_use_duration', - 'item_is_charged', - 'item_max_use_duration', - 'item_remaining_use_duration', - 'item_slot_to_bone_name()', - 'key_frame_lerp_time', - 'last_frame_time', - 'last_hit_by_player', - 'lie_amount', - 'life_span', - 'lod_index', - 'log', - 'main_hand_item_max_duration', - 'main_hand_item_use_duration', - 'max_durability', - 'max_health', - 'max_trade_tier', - 'maximum_frame_time', - 'minimum_frame_time', - 'model_scale', - 'modified_distance_moved', - 'modified_move_speed', - 'moon_brightness', - 'moon_phase', - 'movement_direction', - 'noise', - 'on_fire_time', - 'out_of_control', - 'player_level', - 'position()', - 'position_delta()', - 'previous_squish_value', - 'remaining_durability', - 'roll_counter', - 'rotation_to_camera()', - 'shake_angle', - 'shake_time', - 'shield_blocking_bob', - 'show_bottom', - 'sit_amount', - 'sleep_rotation', - 'sneeze_counter', - 'spellcolor', - 'standing_scale', - 'structural_integrity', - 'surface_particle_color', - 'surface_particle_texture_coordinate', - 'surface_particle_texture_size', - 'swell_amount', - 'swelling_dir', - 'swim_amount', - 'tail_angle', - 'target_x_rotation', - 'target_y_rotation', - 'texture_frame_index', - 'time_of_day', - 'time_since_last_vibration_detection', - 'time_stamp', - 'total_emitter_count', - 'total_particle_count', - 'trade_tier', - 'unhappy_counter', - 'walk_distance', - 'wing_flap_position', - 'wing_flap_speed', - ]; - let MolangQueryLabels = { - 'in_range()': 'in_range( value, min, max )', - 'all()': 'in_range( value, values... )', - 'any()': 'in_range( value, values... )', - 'approx_eq()': 'in_range( value, values... )', - }; - let DefaultContext = [ - 'item_slot', - 'block_face', - 'cardinal_block_face_placed_on', - 'is_first_person', - 'owning_entity', - 'player_offhand_arm_height', - 'other', - 'count', - ]; - let DefaultVariables = [ - 'attack_time', - 'is_first_person', - ]; - let MathFunctions = [ - 'sin()', - 'cos()', - 'abs()', - 'clamp()', - 'pow()', - 'sqrt()', - 'random()', - 'ceil()', - 'round()', - 'trunc()', - 'floor()', - 'mod()', - 'min()', - 'max()', - 'exp()', - 'ln()', - 'lerp()', - 'lerprotate()', - 'pi', - 'asin()', - 'acos()', - 'atan()', - 'atan2()', - 'die_roll()', - 'die_roll_integer()', - 'hermite_blend()', - 'random_integer()', - ]; - let MathFunctionLabels = { - 'clamp()': 'clamp( value, min, max )', - 'pow()': 'pow( base, exponent )', - 'random()': 'random( low, high )', - 'mod()': 'mod( value, denominator )', - 'min()': 'min( A, B )', - 'max()': 'max( A, B )', - 'lerp()': 'lerp( start, end, 0_to_1 )', - 'lerprotate()': 'lerprotate( start, end, 0_to_1 )', - 'atan2()': 'atan2( y, x )', - 'die_roll()': 'die_roll( num, low, high )', - 'die_roll_integer()': 'die_roll_integer( num, low, high )', - 'random_integer()': 'random_integer( low, high )', - 'hermite_blend()': 'hermite_blend( 0_to_1 )', - }; - - function getProjectVariables(current) { - let set = new Set(); - let expressions = getAllMolangExpressions(); - expressions.forEach(exp => { - if (!exp.value) return; - let matches = exp.value.match(/(v|variable)\.\w+/gi); - if (!matches) return; - matches.forEach(match => { - let name = match.substring(match.indexOf('.')+1); - if (name !== current) set.add(name); - }) - }) - return set; - } - - function filterAndSortList(list, match, blacklist, labels) { - let result = list.filter(f => f.startsWith(match) && f.length != match.length); - list.forEach(f => { - if (!result.includes(f) && f.includes(match) && f.length != match.length) result.push(f); - }) - if (blacklist) blacklist.forEach(black => result.remove(black)); - return result.map(text => {return {text, label: labels && labels[text], overlap: match.length}}) - } - - Animator.autocompleteMolang = function(text, position, type) { - let beginning = text.substring(0, position).split(/[^a-zA-Z_.]\.*/g).last(); - if (!beginning) return []; - - beginning = beginning.toLowerCase(); - if (beginning.includes('.')) { - let [namespace, dir] = beginning.split('.'); - if (namespace == 'math') { - return filterAndSortList(MathFunctions, dir, null, MathFunctionLabels); - } - if (namespace == 'query' || namespace == 'q') { - return filterAndSortList(MolangQueries, dir, type !== 'controller' && ['all_animations_finished', 'any_animation_finished'], MolangQueryLabels); - } - if (namespace == 'temp' || namespace == 't') { - let temps = text.match(/([^a-z]|^)t(emp)?\.\w+/gi); - if (temps) { - temps = temps.map(t => t.split('.')[1]); - temps = temps.filter((t, i) => t !== dir && temps.indexOf(t) === i); - return filterAndSortList(temps, dir); - } - } - if (namespace == 'context' || namespace == 'c') { - return filterAndSortList(DefaultContext, dir); - } - if (namespace == 'variable' || namespace == 'v') { - let options = [...getProjectVariables(dir)]; - options.safePush(...DefaultVariables); - return filterAndSortList(options, dir); - } - } else { - let root_tokens = RootTokens.slice(); - let labels = {}; - if (type === 'placeholders') { - labels = { - 'toggle()': 'toggle( name )', - 'slider()': 'slider( name, step?, min?, max? )', - 'impulse()': 'impulse( name, duration )', - }; - root_tokens.push(...Object.keys(labels)); - } - return filterAndSortList(root_tokens, beginning, null, labels); - } - return []; - } -})() - function getAllMolangExpressions() { let expressions = []; Animation.all.forEach(animation => { @@ -653,3 +250,1410 @@ new ValidatorCheck('molang_syntax', { }) } }) + +const MolangAutocomplete = {}; + +/** + * Gets all the Molang variables used in the project + * @param {string[]} excluded Variable names to exclude + * @returns {Set} + */ +function getProjectMolangVariables(excluded) { + const variables = new Set(); + const expressions = getAllMolangExpressions(); + for (const expression of expressions) { + if (!expression.value) continue; + const matches = expression.value.match(/(v|variable)\.(\w+)/gi) + if (!matches) continue; + console.log('matches', matches); + for (const match of matches) { + const name = match.split('.')[1]; + console.log('name', name) + if (!(excluded && excluded.includes(name))) variables.add(name); + } + } + return variables; +} + +/** + * Gets the temporary Molang variables in a molang expression string + * @param {string} expression + * @param {string[]} excluded Variable names to exclude + * @returns {Set} + */ +function getTemporaryMolangVariables(expression, excluded) { + const variables = new Set(); + const matches = expression.match(/(t|temp)\.(\w+)/gi) + if (!matches) return variables; + console.log('matches', matches); + for (const match of matches) { + const name = match.split('.')[1]; + console.log('name', name) + if (!(excluded && excluded.includes(name))) variables.add(name); + } + return variables; +} + +/** + * Sorts autocomplete results based on how well they match the incomplete string, then alphabetically + * @param {MolangAutocompleteResult[]} results + * @param {string} incomplete + * @returns {MolangAutocompleteResult[]} + */ +function sortAutocompleteResults(results, incomplete) { + return results.sort((a, b) => { + if (a.text.startsWith(incomplete) && !b.text.startsWith(incomplete)) return -1; + if (b.text.startsWith(incomplete) && !a.text.startsWith(incomplete)) return 1; + return a.text.localeCompare(b.text); + }) +} + +;(function () { + + /** + * @typedef MolangAutocompleteResult + * @property {string} text + * @property {string} [label] + * @property {number} overlap + */ + + /** + * @typedef RootToken + * @property {string} id + * @property {string[]} [arguments] + */ + + /** + * @typedef Query + * @property {string} id + * @property {string[]} [arguments] + */ + + /** + * @typedef NamespaceOptions + * @property {string} id + * @property {string} [shorthand] + */ + + MolangAutocomplete.Namespace = class Namespace { + /** + * @type {string} + */ + id + /** + * @type {string} + */ + shorthand + /** + * @type {Map} + */ + queries = new Map() + /** + * @type {Set<() => Query[]>} + */ + queryGetters = new Set() + /** + * @param {NamespaceOptions} options + */ + constructor(options) { + this.id = options.id + this.shorthand = options.shorthand + } + + /** + * Adds a new query to the namespace + * @param {Query} query + * @returns {Namespace} This namespace + */ + addQuery(query) { + this.queries.set(query.id, query) + return this + } + + /** + * @param {string} queryID + * @returns {boolean} True if the query exists in the namespace + */ + hasQuery(queryID) { + // This function isn't used internally, but keeps the API consistent for plugin devs. + return this.queries.has(queryID) + } + + /** + * Removes a query from the namespace + * @param {string} queryID + * @returns {boolean} True if the query was removed, false if it did not exist + */ + removeQuery(queryID) { + return this.queries.delete(queryID) + } + + /** + * Adds a getter function that returns queries. + * @param {(incomplete: string) => Query[]} getter + * @returns {Namespace} This namespace + */ + addQueryGetter(getter) { + this.queryGetters.add(getter) + return this + } + + /** + * Returns any queries in this namespace who's ID starts with `incomplete`. + * @param {string} expression The expression the query is being used in + * @param {string} incomplete The incomplete query ID + * @param {boolean} [recursive=true] If true, will also search inherited contexts + * @returns {Query[]} The queries + */ + getPossibleQueries(expression, incomplete, recursive = true) { + const possibleQueries = [] + this.queries.forEach(query => { + if (query.id.startsWith(incomplete)) possibleQueries.push(query) + }) + this.queryGetters.forEach(getter => { + const queries = getter(expression, incomplete) + queries.forEach(query => { + if (query.id.startsWith(incomplete)) possibleQueries.push(query) + }) + console.log('queries', queries); + }) + if (recursive && this.inheritedContext) { + return [ + ...possibleQueries, + ...this.inheritedContext.getPossibleQueries(expression, incomplete) + ] + } + return possibleQueries + } + } + + /** + * @typedef MolangAutocompleteContextOptions + * @property {string} id + * @property {string[]} [rootTokens] + * @property {MolangAutocomplete.Context} [inheritedContext] + */ + + MolangAutocomplete.Context = class Context { + /** + * @type {MolangAutocomplete.Context[]} + */ + static all = [] + /** + * @type {string} + */ + id + /** + * @type {Map} + */ + rootTokens = new Map() + /** + * @type {Map} + */ + namespaces = new Map() + /** + * @type {MolangAutocomplete.Context} + */ + inheritedContext + + /** + * @param {MolangAutocompleteContextOptions} options + */ + constructor(options) { + this.id = options.id + this.inheritedContext = options.inheritedContext + MolangAutocomplete.Context.all.push(this) + } + + /** + * Adds a new root token to the context + * @param {RootToken} token + * @returns {Context} This context + */ + addRootToken(token) { + this.rootTokens.set(token.id, token) + return this + } + + /** + * Returns the root token with the given ID + * @param {string} tokenID + * @returns {RootToken} The root token, or undefined if it does not exist + */ + getRootToken(tokenID) { + return this.rootTokens.get(tokenID) + } + + /** + * Removes a root token from the context + * @param {string} tokenID + * @returns {boolean} True if the token was removed, false if it did not exist + * @returns {boolean} + */ + removeRootToken(tokenID) { + return this.rootTokens.delete(tokenID) + } + + /** + * Returns true if the context has a namespace with the given ID + * @param {string} namespaceID + * @param {boolean} [recursive=true] If true, will also search inherited contexts + * @returns {boolean} + */ + hasNamespace(namespaceID, recursive = true) { + if (this.namespaces.has(namespaceID)) return true + if (recursive && this.inheritedContext) return this.inheritedContext.hasNamespace(namespaceID) + return false + } + + /** + * Adds a new namespace to the context + * @param {Namespace} namespace + * @returns {Context} This context + */ + addNamespace(namespace) { + this.namespaces.set(namespace.id, namespace) + return this + } + + /** + * Returns the namespace with the given ID + * + * @param {string} namespaceID + * @param {boolean} [recursive=true] If true, will also search inherited contexts + * @returns {Namespace} The namespace, or undefined if it does not exist + */ + getNamespace(namespaceID, recursive = true) { + if (this.namespaces.has(namespaceID)) return this.namespaces.get(namespaceID) + if (recursive && this.inheritedContext) return this.inheritedContext.getNamespace(namespaceID) + return undefined + } + + /** + * Removes a namespace from the context + * + * This will not remove namespaces from inherited contexts + * @param {string} namespaceID + * @returns {boolean} True if the namespace was removed, false if it did not exist + */ + removeNamespace(namespaceID) { + return this.namespaces.delete(namespaceID) + } + + /** + * Returns any namespaces in this context who's ID starts with `incomplete`. + * @param {string} incomplete + * @param {boolean} [recursive=true] If true, will also search inherited contexts + * @returns {Namespace[]} The namespaces + */ + getPossibleNamespaces(incomplete, recursive = true) { + const possibleNamespaces = [] + this.namespaces.forEach(namespace => { + if ( + namespace.id.startsWith(incomplete) || + namespace.shorthand && namespace.shorthand.startsWith(incomplete) + ) possibleNamespaces.push(namespace) + }) + if (recursive && this.inheritedContext) { + return [...possibleNamespaces, ...this.inheritedContext.getPossibleNamespaces(incomplete)] + } + return possibleNamespaces + } + + /** + * Returns any root tokens in this context who's ID starts with `incomplete`. + * @param {string} incomplete + * @param {boolean} [recursive=true] If true, will also search inherited contexts + * @returns {RootToken[]} The root tokens + */ + getPossibleRootTokens(incomplete, recursive = true) { + const possibleRootTokens = [] + this.rootTokens.forEach(token => { + if (token.id.startsWith(incomplete)) possibleRootTokens.push(token) + }) + if (recursive && this.inheritedContext) { + return [...possibleRootTokens, ...this.inheritedContext.getPossibleRootTokens(incomplete)] + } + return possibleRootTokens + } + + /** + * Attempts to autocomplete the given text from the given position in the text + * @param {string} text The text to attempt to autocomplete + * @param {number} position The position of the cursor in the text + * @returns {MolangAutocompleteResult[]} The autocomplete results + */ + autocomplete(text, position) { + const result = []; + const start = text.substring(0, position).split(/[^a-zA-Z_.]\.*/g).last().toLowerCase(); + if (start.length === 0) return result; + const [space, dir] = start.split('.').slice(-2); + console.log(`'${text}' => '${start}' '${space}' '${dir}'`); + + const possibleRootTokens = this.getPossibleRootTokens(start); + console.log('Possible Root Tokens', possibleRootTokens); + possibleRootTokens.forEach(token => { + result.push({ + text: token.arguments ? `${token.id}()` : token.id, + label: token.arguments + ? `${token.id}( ${token.arguments.join(', ')} )` + : undefined, + overlap: start.length + }); + }) + + const possibleNamespaces = this.getPossibleNamespaces(space); + console.log('Possible Namespaces', possibleNamespaces); + switch (possibleNamespaces.length) { + default: + possibleNamespaces.forEach(ns => { + result.push({text: ns.id, overlap: space.length}); + if (ns.shorthand) result.push({text: ns.shorthand, overlap: space.length}); + }) + return sortAutocompleteResults(result, start); + case 0: + return sortAutocompleteResults(result, start); + case 1: { + const namespace = possibleNamespaces[0]; + if (!dir && !start.endsWith('.')) { + return sortAutocompleteResults( + [...result, {text: namespace.id, overlap: space.length}], + start + ); + } + const possibleQueries = namespace.getPossibleQueries(text, dir); + console.log('Possible Queries', possibleQueries); + switch (possibleQueries.length) { + default: + return sortAutocompleteResults([ + ...result, + ...possibleQueries.map(q => ({ + text: q.arguments ? `${q.id}()` : q.id, + label: q.arguments + ? `${q.id}( ${q.arguments.join(', ')} )` + : undefined, + overlap: dir.length + })) + ], dir); + case 0: + return sortAutocompleteResults(result, start); + case 1: { + const query = possibleQueries[0]; + return sortAutocompleteResults([ + ...result, + { + text: query.arguments ? `${query.id}()` : query.id, + label: query.arguments + ? `${query.id}( ${query.arguments.join(', ')} )` + : undefined, + overlap: dir.length + } + ], dir); + } + } + } + } + } + + /** + * Removes the context from the list of all contexts + */ + delete() { + MolangAutocomplete.Context.all.remove(this) + } + } + + MolangAutocomplete.DefaultContext = new MolangAutocomplete.Context({ + id: 'defaultContext', + }) + .addRootToken({ + id: 'true', + }) + .addRootToken({ + id: 'false', + }) + .addRootToken({ + id: 'this', + }) + .addRootToken({ + id: 'loop', + arguments: ['count', 'expression'] + }) + .addRootToken({ + id: 'return', + }) + .addRootToken({ + id: 'break', + }) + .addRootToken({ + id: 'continue', + }) + .addNamespace( + new MolangAutocomplete.Namespace({ + id: 'query', + shorthand: 'q', + }) + .addQuery({ + id: 'anim_time', + }) + .addQuery({ + id: 'life_time', + }) + .addQuery({ + id: 'yaw_speed', + }) + .addQuery({ + id: 'ground_speed', + }) + .addQuery({ + id: 'vertical_speed', + }) + .addQuery({ + id: 'property', + }) + .addQuery({ + id: 'has_property', + arguments: ['property'] + }) + .addQuery({ + id: 'variant', + }) + .addQuery({ + id: 'mark_variant', + }) + .addQuery({ + id: 'skin_id', + }) + + .addQuery({ + id: 'above_top_solid', + }) + .addQuery({ + id: 'actor_count', + }) + .addQuery({ + id: 'all', + arguments: ['value', 'values...'] + }) + .addQuery({ + id: 'all_tags', + }) + .addQuery({ + id: 'anger_level', + }) + .addQuery({ + id: 'any', + arguments: ['value', 'values...'] + }) + .addQuery({ + id: 'any_tag', + }) + .addQuery({ + id: 'approx_eq', + arguments: ['value', 'values...'] + }) + .addQuery({ + id: 'armor_color_slot', + }) + .addQuery({ + id: 'armor_material_slot', + }) + .addQuery({ + id: 'armor_texture_slot', + }) + .addQuery({ + id: 'average_frame_time', + }) + .addQuery({ + id: 'blocking', + }) + .addQuery({ + id: 'body_x_rotation', + }) + .addQuery({ + id: 'body_y_rotation', + }) + .addQuery({ + id: 'bone_aabb', + }) + .addQuery({ + id: 'bone_origin', + }) + .addQuery({ + id: 'bone_rotation', + }) + .addQuery({ + id: 'camera_distance_range_lerp', + }) + .addQuery({ + id: 'camera_rotation', + arguments: ['axis'] + }) + .addQuery({ + id: 'can_climb', + }) + .addQuery({ + id: 'can_damage_nearby_mobs', + }) + .addQuery({ + id: 'can_dash', + }) + .addQuery({ + id: 'can_fly', + }) + .addQuery({ + id: 'can_power_jump', + }) + .addQuery({ + id: 'can_swim', + }) + .addQuery({ + id: 'can_walk', + }) + .addQuery({ + id: 'cape_flap_amount', + }) + .addQuery({ + id: 'cardinal_facing', + }) + .addQuery({ + id: 'cardinal_facing_2d', + }) + .addQuery({ + id: 'cardinal_player_facing', + }) + .addQuery({ + id: 'combine_entities', + arguments: ['entitiesReferences...'] + }) + .addQuery({ + id: 'count', + }) + .addQuery({ + id: 'current_squish_value', + }) + .addQuery({ + id: 'dash_cooldown_progress', + }) + .addQuery({ + id: 'day', + }) + .addQuery({ + id: 'death_ticks', + }) + .addQuery({ + id: 'debug_output', + }) + .addQuery({ + id: 'delta_time', + }) + .addQuery({ + id: 'distance_from_camera', + }) + .addQuery({ + id: 'effect_emitter_count', + }) + .addQuery({ + id: 'effect_particle_count', + }) + .addQuery({ + id: 'equipment_count', + }) + .addQuery({ + id: 'equipped_item_all_tags', + }) + .addQuery({ + id: 'equipped_item_any_tag', + arguments: ['tags...'] + }) + .addQuery({ + id: 'equipped_item_is_attachable', + }) + .addQuery({ + id: 'eye_target_x_rotation', + }) + .addQuery({ + id: 'eye_target_y_rotation', + }) + .addQuery({ + id: 'facing_target_to_range_attack', + }) + .addQuery({ + id: 'frame_alpha', + }) + .addQuery({ + id: 'get_actor_info_id', + }) + .addQuery({ + id: 'get_animation_frame', + }) + .addQuery({ + id: 'get_default_bone_pivot', + }) + .addQuery({ + id: 'get_locator_offset', + }) + .addQuery({ + id: 'get_root_locator_offset', + }) + .addQuery({ + id: 'had_component_group', + arguments: ['group'] + }) + .addQuery({ + id: 'has_any_family', + arguments: ['families...'] + }) + .addQuery({ + id: 'has_armor_slot', + }) + .addQuery({ + id: 'has_biome_tag', + }) + .addQuery({ + id: 'has_block_property', + }) + .addQuery({ + id: 'has_cape', + }) + .addQuery({ + id: 'has_collision', + }) + .addQuery({ + id: 'has_dash_cooldown', + }) + .addQuery({ + id: 'has_gravity', + }) + .addQuery({ + id: 'has_owner', + }) + .addQuery({ + id: 'has_rider', + }) + .addQuery({ + id: 'has_target', + }) + .addQuery({ + id: 'head_roll_angle', + }) + .addQuery({ + id: 'head_x_rotation', + }) + .addQuery({ + id: 'head_y_rotation', + }) + .addQuery({ + id: 'health', + }) + .addQuery({ + id: 'heartbeat_interval', + }) + .addQuery({ + id: 'heartbeat_phase', + }) + .addQuery({ + id: 'heightmap', + }) + .addQuery({ + id: 'hurt_direction', + }) + .addQuery({ + id: 'hurt_time', + }) + .addQuery({ + id: 'in_range', + arguments: ['value', 'min', 'max'] + }) + .addQuery({ + id: 'invulnerable_ticks', + }) + .addQuery({ + id: 'is_admiring', + }) + .addQuery({ + id: 'is_alive', + }) + .addQuery({ + id: 'is_angry', + }) + .addQuery({ + id: 'is_attached_to_entity', + }) + .addQuery({ + id: 'is_avoiding_block', + }) + .addQuery({ + id: 'is_avoiding_mobs', + }) + .addQuery({ + id: 'is_baby', + }) + .addQuery({ + id: 'is_breathing', + }) + .addQuery({ + id: 'is_bribed', + }) + .addQuery({ + id: 'is_carrying_block', + }) + .addQuery({ + id: 'is_casting', + }) + .addQuery({ + id: 'is_celebrating', + }) + .addQuery({ + id: 'is_celebrating_special', + }) + .addQuery({ + id: 'is_charged', + }) + .addQuery({ + id: 'is_charging', + }) + .addQuery({ + id: 'is_chested', + }) + .addQuery({ + id: 'is_critical', + }) + .addQuery({ + id: 'is_croaking', + }) + .addQuery({ + id: 'is_dancing', + }) + .addQuery({ + id: 'is_delayed_attacking', + }) + .addQuery({ + id: 'is_digging', + }) + .addQuery({ + id: 'is_eating', + }) + .addQuery({ + id: 'is_eating_mob', + }) + .addQuery({ + id: 'is_elder', + }) + .addQuery({ + id: 'is_emerging', + }) + .addQuery({ + id: 'is_emoting', + }) + .addQuery({ + id: 'is_enchanted', + }) + .addQuery({ + id: 'is_fire_immune', + }) + .addQuery({ + id: 'is_first_person', + }) + .addQuery({ + id: 'is_ghost', + }) + .addQuery({ + id: 'is_gliding', + }) + .addQuery({ + id: 'is_grazing', + }) + .addQuery({ + id: 'is_idling', + }) + .addQuery({ + id: 'is_ignited', + }) + .addQuery({ + id: 'is_illager_captain', + }) + .addQuery({ + id: 'is_in_contact_with_water', + }) + .addQuery({ + id: 'is_in_love', + }) + .addQuery({ + id: 'is_in_ui', + }) + .addQuery({ + id: 'is_in_water', + }) + .addQuery({ + id: 'is_in_water_or_rain', + }) + .addQuery({ + id: 'is_interested', + }) + .addQuery({ + id: 'is_invisible', + }) + .addQuery({ + id: 'is_item_equipped', + }) + .addQuery({ + id: 'is_item_name_any', + arguments: ['slotName', 'slot?', 'itemNames...'] + }) + .addQuery({ + id: 'is_jump_goal_jumping', + }) + .addQuery({ + id: 'is_jumping', + }) + .addQuery({ + id: 'is_laying_down', + }) + .addQuery({ + id: 'is_laying_egg', + }) + .addQuery({ + id: 'is_leashed', + }) + .addQuery({ + id: 'is_levitating', + }) + .addQuery({ + id: 'is_lingering', + }) + .addQuery({ + id: 'is_moving', + }) + .addQuery({ + id: 'is_name_any', + }) + .addQuery({ + id: 'is_on_fire', + }) + .addQuery({ + id: 'is_on_ground', + }) + .addQuery({ + id: 'is_on_screen', + }) + .addQuery({ + id: 'is_onfire', + }) + .addQuery({ + id: 'is_orphaned', + }) + .addQuery({ + id: 'is_owner_identifier_any', + arguments: ['identifiers...'] + }) + .addQuery({ + id: 'is_persona_or_premium_skin', + }) + .addQuery({ + id: 'is_playing_dead', + }) + .addQuery({ + id: 'is_powered', + }) + .addQuery({ + id: 'is_pregnant', + }) + .addQuery({ + id: 'is_ram_attacking', + }) + .addQuery({ + id: 'is_resting', + }) + .addQuery({ + id: 'is_riding', + }) + .addQuery({ + id: 'is_roaring', + }) + .addQuery({ + id: 'is_rolling', + }) + .addQuery({ + id: 'is_saddled', + }) + .addQuery({ + id: 'is_scared', + }) + .addQuery({ + id: 'is_selected_item', + }) + .addQuery({ + id: 'is_shaking', + }) + .addQuery({ + id: 'is_shaking_wetness', + }) + .addQuery({ + id: 'is_sheared', + }) + .addQuery({ + id: 'is_shield_powered', + }) + .addQuery({ + id: 'is_silent', + }) + .addQuery({ + id: 'is_sitting', + }) + .addQuery({ + id: 'is_sleeping', + }) + .addQuery({ + id: 'is_sneaking', + }) + .addQuery({ + id: 'is_sneezing', + }) + .addQuery({ + id: 'is_sniffing', + }) + .addQuery({ + id: 'is_sonic_boom', + }) + .addQuery({ + id: 'is_spectator', + }) + .addQuery({ + id: 'is_sprinting', + }) + .addQuery({ + id: 'is_stackable', + }) + .addQuery({ + id: 'is_stalking', + }) + .addQuery({ + id: 'is_standing', + }) + .addQuery({ + id: 'is_stunned', + }) + .addQuery({ + id: 'is_swimming', + }) + .addQuery({ + id: 'is_tamed', + }) + .addQuery({ + id: 'is_transforming', + }) + .addQuery({ + id: 'is_using_item', + }) + .addQuery({ + id: 'is_wall_climbing', + }) + .addQuery({ + id: 'item_in_use_duration', + }) + .addQuery({ + id: 'item_is_charged', + }) + .addQuery({ + id: 'item_max_use_duration', + }) + .addQuery({ + id: 'item_remaining_use_duration', + }) + .addQuery({ + id: 'item_slot_to_bone_name', + arguments: ['slotName'] + }) + .addQuery({ + id: 'key_frame_lerp_time', + }) + .addQuery({ + id: 'last_frame_time', + }) + .addQuery({ + id: 'last_hit_by_player', + }) + .addQuery({ + id: 'lie_amount', + }) + .addQuery({ + id: 'life_span', + }) + .addQuery({ + id: 'lod_index', + }) + .addQuery({ + id: 'log', + }) + .addQuery({ + id: 'main_hand_item_max_duration', + }) + .addQuery({ + id: 'main_hand_item_use_duration', + }) + .addQuery({ + id: 'max_durability', + }) + .addQuery({ + id: 'max_health', + }) + .addQuery({ + id: 'max_trade_tier', + }) + .addQuery({ + id: 'maximum_frame_time', + }) + .addQuery({ + id: 'minimum_frame_time', + }) + .addQuery({ + id: 'model_scale', + }) + .addQuery({ + id: 'modified_distance_moved', + }) + .addQuery({ + id: 'modified_move_speed', + }) + .addQuery({ + id: 'moon_brightness', + }) + .addQuery({ + id: 'moon_phase', + }) + .addQuery({ + id: 'movement_direction', + }) + .addQuery({ + id: 'noise', + }) + .addQuery({ + id: 'on_fire_time', + }) + .addQuery({ + id: 'out_of_control', + }) + .addQuery({ + id: 'player_level', + }) + .addQuery({ + id: 'position', + arguments: ['axis'] + }) + .addQuery({ + id: 'position_delta', + arguments: ['axis'] + }) + .addQuery({ + id: 'previous_squish_value', + }) + .addQuery({ + id: 'remaining_durability', + }) + .addQuery({ + id: 'roll_counter', + }) + .addQuery({ + id: 'rotation_to_camera', + arguments: ['axis'] + }) + .addQuery({ + id: 'shake_angle', + }) + .addQuery({ + id: 'shake_time', + }) + .addQuery({ + id: 'shield_blocking_bob', + }) + .addQuery({ + id: 'show_bottom', + }) + .addQuery({ + id: 'sit_amount', + }) + .addQuery({ + id: 'sleep_rotation', + }) + .addQuery({ + id: 'sneeze_counter', + }) + .addQuery({ + id: 'spellcolor', + }) + .addQuery({ + id: 'standing_scale', + }) + .addQuery({ + id: 'structural_integrity', + }) + .addQuery({ + id: 'surface_particle_color', + }) + .addQuery({ + id: 'surface_particle_texture_coordinate', + }) + .addQuery({ + id: 'surface_particle_texture_size', + }) + .addQuery({ + id: 'swell_amount', + }) + .addQuery({ + id: 'swelling_dir', + }) + .addQuery({ + id: 'swim_amount', + }) + .addQuery({ + id: 'tail_angle', + }) + .addQuery({ + id: 'target_x_rotation', + }) + .addQuery({ + id: 'target_y_rotation', + }) + .addQuery({ + id: 'texture_frame_index', + }) + .addQuery({ + id: 'time_of_day', + }) + .addQuery({ + id: 'time_since_last_vibration_detection', + }) + .addQuery({ + id: 'time_stamp', + }) + .addQuery({ + id: 'total_emitter_count', + }) + .addQuery({ + id: 'total_particle_count', + }) + .addQuery({ + id: 'trade_tier', + }) + .addQuery({ + id: 'unhappy_counter', + }) + .addQuery({ + id: 'walk_distance', + }) + .addQuery({ + id: 'wing_flap_position', + }) + .addQuery({ + id: 'wing_flap_speed', + }) + ) + .addNamespace( + new MolangAutocomplete.Namespace({ + id: 'math', + shorthand: 'm', + }) + .addQuery({ + id: 'sin', + arguments: ['value'] + }) + .addQuery({ + id: 'cos', + arguments: ['value'] + }) + .addQuery({ + id: 'abs', + arguments: ['value'] + }) + .addQuery({ + id: 'clamp', + arguments: ['value', 'min', 'max'] + }) + .addQuery({ + id: 'pow', + arguments: ['base', 'exponent'] + }) + .addQuery({ + id: 'sqrt', + arguments: ['value'] + }) + .addQuery({ + id: 'random', + arguments: ['low', 'high'] + }) + .addQuery({ + id: 'random_integer', + arguments: ['low', 'high'] + }) + .addQuery({ + id: 'ceil', + arguments: ['value'] + }) + .addQuery({ + id: 'round', + arguments: ['value'] + }) + .addQuery({ + id: 'trunc', + arguments: ['value'] + }) + .addQuery({ + id: 'floor', + arguments: ['value'] + }) + .addQuery({ + id: 'mod', + arguments: ['value', 'denominator'] + }) + .addQuery({ + id: 'min', + arguments: ['a', 'b'] + }) + .addQuery({ + id: 'max', + arguments: ['a', 'b'] + }) + .addQuery({ + id: 'exp', + arguments: ['value'] + }) + .addQuery({ + id: 'ln', + arguments: ['value'] + }) + .addQuery({ + id: 'lerp', + arguments: ['start', 'end', '0_to_1'] + }) + .addQuery({ + id: 'lerprotate', + arguments: ['start', 'end', '0_to_1'] + }) + .addQuery({ + id: 'pi' + }) + .addQuery({ + id: 'asin', + arguments: ['value'] + }) + .addQuery({ + id: 'acos', + arguments: ['value'] + }) + .addQuery({ + id: 'atan', + arguments: ['value'] + }) + .addQuery({ + id: 'atan2', + arguments: ['y', 'x'] + }) + .addQuery({ + id: 'die_roll', + arguments: ['num', 'low', 'high'] + }) + .addQuery({ + id: 'die_roll_integer', + arguments: ['num', 'low', 'high'] + }) + .addQuery({ + id: 'hermite_blend', + arguments: ['0_to_1'] + }) + ) + .addNamespace( + new MolangAutocomplete.Namespace({ + id: 'context', + shorthand: 'c', + }) + .addQuery({ + id: 'item_slot' + }) + .addQuery({ + id: 'block_face' + }) + .addQuery({ + id: 'cardinal_block_face_placed_on' + }) + .addQuery({ + id: 'is_first_person' + }) + .addQuery({ + id: 'owning_entity' + }) + .addQuery({ + id: 'player_offhand_arm_height' + }) + .addQuery({ + id: 'other' + }) + .addQuery({ + id: 'count' + }) + ) + .addNamespace( + new MolangAutocomplete.Namespace({ + id: 'variable', + shorthand: 'v', + }) + .addQuery({ + id: 'attack_time' + }) + .addQuery({ + id: 'is_first_person' + }) + .addQueryGetter((_, incomplete) => { + const variables = getProjectMolangVariables([incomplete]) + return [...variables].map(v => ({id: v})) + }) + ) + .addNamespace( + new MolangAutocomplete.Namespace({ + id: 'temp', + shorthand: 't', + }) + .addQueryGetter((expression, incomplete) => { + const variables = getTemporaryMolangVariables(expression, [incomplete]) + return [...variables].map(v => ({id: v})) + }) + ) + + MolangAutocomplete.KeyframeContext = new MolangAutocomplete.Context({ + id: 'keyframeContext', + inheritedContext: MolangAutocomplete.DefaultContext, + }) + + MolangAutocomplete.AnimationControllerContext = new MolangAutocomplete.Context({ + id: 'animationControllerContext', + inheritedContext: MolangAutocomplete.DefaultContext, + }) + + MolangAutocomplete.AnimationContext = new MolangAutocomplete.Context({ + id: 'animationContext', + inheritedContext: MolangAutocomplete.DefaultContext, + }) + + MolangAutocomplete.VariablePlaceholdersContext = new MolangAutocomplete.Context({ + id: 'variablePlaceholdersContext', + inheritedContext: MolangAutocomplete.DefaultContext, + }) + .addRootToken({ + id: 'toggle', + arguments: ['name'] + }) + .addRootToken({ + id: 'slider', + arguments: ['name', 'step?', 'min?', 'max?'] + }) + .addRootToken({ + id: 'impulse', + arguments: ['name', 'duration'] + }) + + MolangAutocomplete.BedrockBindingContext = new MolangAutocomplete.Context({ + id: 'bedrockBindingContext', + inheritedContext: MolangAutocomplete.DefaultContext, + }) + +})() \ No newline at end of file diff --git a/js/outliner/group.js b/js/outliner/group.js index 1795e4b6c..cba84cf63 100644 --- a/js/outliner/group.js +++ b/js/outliner/group.js @@ -690,7 +690,7 @@ BARS.defineActions(function() { ]).show(event.target); }, autocomplete(text, position) { - let test = Animator.autocompleteMolang(text, position, 'binding'); + let test = MolangAutocomplete.BedrockBindingContext.autocomplete(text, position); return test; } }, From 6f40509b275e3d6d1c6272d969a3d59c8c1fe93e Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Mon, 29 Apr 2024 08:39:38 -0400 Subject: [PATCH 005/153] Update molang.js --- js/animations/molang.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/animations/molang.js b/js/animations/molang.js index 19dae7b2e..76489f191 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -251,6 +251,9 @@ new ValidatorCheck('molang_syntax', { } }) +/** + * Global Molang autocomplete object + */ const MolangAutocomplete = {}; /** From 055dbacd05f9a8ed5dda4dd4b5720227c1b4e82f Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Mon, 29 Apr 2024 10:41:36 -0400 Subject: [PATCH 006/153] Remove debug console.logs --- js/animations/molang.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/js/animations/molang.js b/js/animations/molang.js index 76489f191..c5dfe1768 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -268,10 +268,8 @@ function getProjectMolangVariables(excluded) { if (!expression.value) continue; const matches = expression.value.match(/(v|variable)\.(\w+)/gi) if (!matches) continue; - console.log('matches', matches); for (const match of matches) { const name = match.split('.')[1]; - console.log('name', name) if (!(excluded && excluded.includes(name))) variables.add(name); } } @@ -288,10 +286,8 @@ function getTemporaryMolangVariables(expression, excluded) { const variables = new Set(); const matches = expression.match(/(t|temp)\.(\w+)/gi) if (!matches) return variables; - console.log('matches', matches); for (const match of matches) { const name = match.split('.')[1]; - console.log('name', name) if (!(excluded && excluded.includes(name))) variables.add(name); } return variables; @@ -418,7 +414,6 @@ function sortAutocompleteResults(results, incomplete) { queries.forEach(query => { if (query.id.startsWith(incomplete)) possibleQueries.push(query) }) - console.log('queries', queries); }) if (recursive && this.inheritedContext) { return [ @@ -594,7 +589,6 @@ function sortAutocompleteResults(results, incomplete) { console.log(`'${text}' => '${start}' '${space}' '${dir}'`); const possibleRootTokens = this.getPossibleRootTokens(start); - console.log('Possible Root Tokens', possibleRootTokens); possibleRootTokens.forEach(token => { result.push({ text: token.arguments ? `${token.id}()` : token.id, @@ -606,7 +600,6 @@ function sortAutocompleteResults(results, incomplete) { }) const possibleNamespaces = this.getPossibleNamespaces(space); - console.log('Possible Namespaces', possibleNamespaces); switch (possibleNamespaces.length) { default: possibleNamespaces.forEach(ns => { @@ -625,7 +618,6 @@ function sortAutocompleteResults(results, incomplete) { ); } const possibleQueries = namespace.getPossibleQueries(text, dir); - console.log('Possible Queries', possibleQueries); switch (possibleQueries.length) { default: return sortAutocompleteResults([ From 1c74b116eee0e751486bc410925f5c590b2d4762 Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Wed, 1 May 2024 19:52:48 -0400 Subject: [PATCH 007/153] Add removeQueryGetter function Also added an `id` field to the addQueryGetter function, and changedquery_getters property to a Map instead of a Set. --- js/animations/molang.js | 2065 ++++++++++++++++++++------------------- 1 file changed, 1072 insertions(+), 993 deletions(-) diff --git a/js/animations/molang.js b/js/animations/molang.js index c5dfe1768..f0a14bbb8 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -1,136 +1,163 @@ -Animator.MolangParser.context = {}; +Animator.MolangParser.context = {} Animator.MolangParser.global_variables = { - 'true': 1, - 'false': 0, + true: 1, + false: 0, get 'query.delta_time'() { - let time = (Date.now() - Timeline.last_frame_timecode) / 1000; - if (time < 0) time += 1; - return Math.clamp(time, 0, 0.1); + let time = (Date.now() - Timeline.last_frame_timecode) / 1000 + if (time < 0) time += 1 + return Math.clamp(time, 0, 0.1) }, get 'query.anim_time'() { - return Animator.MolangParser.context.animation ? Animator.MolangParser.context.animation.time : Timeline.time; + return Animator.MolangParser.context.animation + ? Animator.MolangParser.context.animation.time + : Timeline.time }, get 'query.life_time'() { - return Timeline.time; + return Timeline.time }, get 'query.time_stamp'() { - return Math.floor(Timeline.time * 20) / 20; + return Math.floor(Timeline.time * 20) / 20 }, get 'query.all_animations_finished'() { if (AnimationController.selected?.selected_state) { - let state = AnimationController.selected?.selected_state; - let state_time = state.getStateTime(); - let all_finished = state.animations.allAre(a => { - let animation = Animation.all.find(anim => anim.uuid == a.animation); - return !animation || state_time > animation.length; + let state = AnimationController.selected?.selected_state + let state_time = state.getStateTime() + let all_finished = state.animations.allAre((a) => { + let animation = Animation.all.find((anim) => anim.uuid == a.animation) + return !animation || state_time > animation.length }) - return all_finished ? 1 : 0; + return all_finished ? 1 : 0 } - return 0; + return 0 }, get 'query.any_animation_finished'() { if (AnimationController.selected?.selected_state) { - let state = AnimationController.selected?.selected_state; - let state_time = state.getStateTime(); - let finished_anim = state.animations.find(a => { - let animation = Animation.all.find(anim => anim.uuid == a.animation); - return animation && state_time > animation.length; + let state = AnimationController.selected?.selected_state + let state_time = state.getStateTime() + let finished_anim = state.animations.find((a) => { + let animation = Animation.all.find((anim) => anim.uuid == a.animation) + return animation && state_time > animation.length }) - return finished_anim ? 1 : 0; + return finished_anim ? 1 : 0 } - return 0; + return 0 }, 'query.camera_rotation'(axis) { - let val = cameraTargetToRotation(Preview.selected.camera.position.toArray(), Preview.selected.controls.target.toArray())[axis ? 0 : 1]; - if (axis == 0) val *= -1; - return val; + let val = cameraTargetToRotation( + Preview.selected.camera.position.toArray(), + Preview.selected.controls.target.toArray() + )[axis ? 0 : 1] + if (axis == 0) val *= -1 + return val }, 'query.rotation_to_camera'(axis) { - let val = cameraTargetToRotation([0, 0, 0], Preview.selected.camera.position.toArray())[axis ? 0 : 1] ; - if (axis == 0) val *= -1; - return val; + let val = cameraTargetToRotation([0, 0, 0], Preview.selected.camera.position.toArray())[ + axis ? 0 : 1 + ] + if (axis == 0) val *= -1 + return val }, get 'query.distance_from_camera'() { - return Preview.selected.camera.position.length() / 16; + return Preview.selected.camera.position.length() / 16 }, 'query.lod_index'(indices) { - indices.sort((a, b) => a - b); - let distance = Preview.selected.camera.position.length() / 16; - let index = indices.length; + indices.sort((a, b) => a - b) + let distance = Preview.selected.camera.position.length() / 16 + let index = indices.length indices.forEachReverse((val, i) => { - if (distance < val) index = i; + if (distance < val) index = i }) - return index; + return index }, 'query.camera_distance_range_lerp'(a, b) { - let distance = Preview.selected.camera.position.length() / 16; - return Math.clamp(Math.getLerp(a, b, distance), 0, 1); + let distance = Preview.selected.camera.position.length() / 16 + return Math.clamp(Math.getLerp(a, b, distance), 0, 1) }, get 'query.is_first_person'() { - return Project.bedrock_animation_mode == 'attachable_first' ? 1 : 0; + return Project.bedrock_animation_mode == 'attachable_first' ? 1 : 0 }, get 'context.is_first_person'() { - return Project.bedrock_animation_mode == 'attachable_first' ? 1 : 0; + return Project.bedrock_animation_mode == 'attachable_first' ? 1 : 0 + }, + get time() { + return Timeline.time }, - get 'time'() { - return Timeline.time; - } } Animator.MolangParser.variableHandler = function (variable, variables) { - var inputs = Interface.Panels.variable_placeholders.inside_vue.text.split('\n'); - var i = 0; + var inputs = Interface.Panels.variable_placeholders.inside_vue.text.split('\n') + var i = 0 while (i < inputs.length) { - let key, val; - [key, val] = inputs[i].split(/=\s*(.+)/); - key = key.replace(/[\s;]/g, ''); - key = key.replace(/^v\./, 'variable.').replace(/^q\./, 'query.').replace(/^t\./, 'temp.').replace(/^c\./, 'context.'); + let key, val + ;[key, val] = inputs[i].split(/=\s*(.+)/) + key = key.replace(/[\s;]/g, '') + key = key + .replace(/^v\./, 'variable.') + .replace(/^q\./, 'query.') + .replace(/^t\./, 'temp.') + .replace(/^c\./, 'context.') if (key === variable && val !== undefined) { - val = val.trim(); + val = val.trim() if (val.match(/^(slider|toggle|impulse)\(/)) { - let [type, content] = val.substring(0, val.length - 1).split(/\(/); - let [id] = content.split(/\(|, */); - id = id.replace(/['"]/g, ''); - - let button = Interface.Panels.variable_placeholders.inside_vue.buttons.find(b => b.id === id && b.type == type); - return button ? parseFloat(button.value) : 0; - + let [type, content] = val.substring(0, val.length - 1).split(/\(/) + let [id] = content.split(/\(|, */) + id = id.replace(/['"]/g, '') + + let button = Interface.Panels.variable_placeholders.inside_vue.buttons.find( + (b) => b.id === id && b.type == type + ) + return button ? parseFloat(button.value) : 0 } else { - return val[0] == `'` ? val : Animator.MolangParser.parse(val, variables); + return val[0] == `'` ? val : Animator.MolangParser.parse(val, variables) } } - i++; + i++ } -}; +} function getAllMolangExpressions() { - let expressions = []; - Animation.all.forEach(animation => { + let expressions = [] + Animation.all.forEach((animation) => { for (let key in Animation.properties) { - let property = Animation.properties[key]; - if (Condition(property.condition, animation) && property.type == 'molang' && animation[key] && isNaN(animation[key])) { - let value = animation[key]; + let property = Animation.properties[key] + if ( + Condition(property.condition, animation) && + property.type == 'molang' && + animation[key] && + isNaN(animation[key]) + ) { + let value = animation[key] expressions.push({ value, type: 'animation', - key, animation - }); + key, + animation, + }) } } for (let key in animation.animators) { - let animator = animation.animators[key]; + let animator = animation.animators[key] for (let channel in animator.channels) { animator[channel].forEach((kf, i) => { - kf.data_points.forEach(data_point => { + kf.data_points.forEach((data_point) => { for (let key in KeyframeDataPoint.properties) { - let property = KeyframeDataPoint.properties[key]; - if (Condition(property.condition, data_point) && property.type == 'molang' && data_point[key] && isNaN(data_point[key])) { + let property = KeyframeDataPoint.properties[key] + if ( + Condition(property.condition, data_point) && + property.type == 'molang' && + data_point[key] && + isNaN(data_point[key]) + ) { expressions.push({ value: data_point[key], type: 'keyframe', - key, animation, animator, channel, kf + key, + animation, + animator, + channel, + kf, }) } } @@ -139,122 +166,149 @@ function getAllMolangExpressions() { } } }) - AnimationController.all.forEach(controller => { - controller.states.forEach(state => { + AnimationController.all.forEach((controller) => { + controller.states.forEach((state) => { if (state.on_entry && isNaN(state.on_entry)) { expressions.push({ value: state.on_entry, type: 'controller', - controller, state + controller, + state, }) } if (state.on_entry && isNaN(state.on_exit)) { expressions.push({ value: state.on_exit, type: 'controller', - controller, state + controller, + state, }) } - state.animations.forEach(a => { + state.animations.forEach((a) => { if (a.blend_value && isNaN(a.blend_value)) { expressions.push({ value: a.blend_value, type: 'controller_animation', - controller, state + controller, + state, }) } }) - state.transitions.forEach(t => { + state.transitions.forEach((t) => { if (t.condition && isNaN(t.condition)) { expressions.push({ value: t.condition, type: 'controller_transition', - controller, state + controller, + state, }) } }) }) }) - return expressions; + return expressions } new ValidatorCheck('molang_syntax', { - condition: {features: ['animation_mode']}, + condition: { features: ['animation_mode'] }, update_triggers: ['update_keyframe_selection', 'edit_animation_properties'], run() { - let check = this; - let keywords = ['return', 'continue', 'break']; - let two_expression_regex = (isApp || window.chrome) ? new RegExp('(?|]/)) { - issues.push('Expression starts with an invalid character'); + issues.push('Expression starts with an invalid character') } - if ((clear_string.match(/[\w.]\s+[\w.]/) && !keywords.find(k => clear_string.includes(k))) || clear_string.match(/\)\(/) || (two_expression_regex && clear_string.match(two_expression_regex))) { - issues.push('Two expressions with no operator in between'); + if ( + (clear_string.match(/[\w.]\s+[\w.]/) && + !keywords.find((k) => clear_string.includes(k))) || + clear_string.match(/\)\(/) || + (two_expression_regex && clear_string.match(two_expression_regex)) + ) { + issues.push('Two expressions with no operator in between') } if (clear_string.match(/(^|[^a-z0-9_])[\d.]+[a-z_]+/i)) { - issues.push('Invalid token ' + clear_string.match(/(^|[^a-z0-9_])[\d.]+[a-z_]+/i)[0].replace(/[^a-z0-9._]/g, '')); + issues.push( + 'Invalid token ' + + clear_string + .match(/(^|[^a-z0-9_])[\d.]+[a-z_]+/i)[0] + .replace(/[^a-z0-9._]/g, '') + ) } if (clear_string.match(/[^\w\s+\-*/().,;:[\]!?=<>&|]/)) { - issues.push('Invalid character: ' + clear_string.match(/[^\s\w+\-*/().,;:[\]!?=<>&|]+/g).join(', ')); + issues.push( + 'Invalid character: ' + + clear_string.match(/[^\s\w+\-*/().,;:[\]!?=<>&|]+/g).join(', ') + ) } - let left = string.match(/\(/g) || 0; - let right = string.match(/\)/g) || 0; + let left = string.match(/\(/g) || 0 + let right = string.match(/\)/g) || 0 if (left.length !== right.length) { - issues.push('Brackets do not match'); + issues.push('Brackets do not match') } if (issues.length) { - let button; + let button if (instance instanceof Animation) { button = { name: 'Edit Animation', icon: 'movie', click() { - Dialog.open.close(); - instance.propertiesDialog(); - } + Dialog.open.close() + instance.propertiesDialog() + }, } } else { button = { name: 'Reveal Keyframe', icon: 'icon-keyframe', click() { - Dialog.open.close(); - instance.showInTimeline(); - } + Dialog.open.close() + instance.showInTimeline() + }, } } check.fail({ message: `${message} ${issues.join('; ')}. Script: \`${string}\``, - buttons: [button] + buttons: [button], }) } } - getAllMolangExpressions().forEach(ex => { + getAllMolangExpressions().forEach((ex) => { if (ex.type == 'animation') { - validateMolang(ex.value, `Property "${ex.key}" on animation "${ex.animation.name}" contains invalid molang:`, ex.animation); - + validateMolang( + ex.value, + `Property "${ex.key}" on animation "${ex.animation.name}" contains invalid molang:`, + ex.animation + ) } else if (ex.type == 'keyframe') { - let channel_name = ex.animator.channels[ex.channel].name; - validateMolang(ex.value, `${channel_name} keyframe at ${ex.kf.time.toFixed(2)} on "${ex.animator.name}" in "${ex.animation.name}" contains invalid molang:`, ex.kf); + let channel_name = ex.animator.channels[ex.channel].name + validateMolang( + ex.value, + `${channel_name} keyframe at ${ex.kf.time.toFixed(2)} on "${ + ex.animator.name + }" in "${ex.animation.name}" contains invalid molang:`, + ex.kf + ) } }) - } + }, }) /** * Global Molang autocomplete object */ -const MolangAutocomplete = {}; +const MolangAutocomplete = {} /** * Gets all the Molang variables used in the project @@ -262,18 +316,18 @@ const MolangAutocomplete = {}; * @returns {Set} */ function getProjectMolangVariables(excluded) { - const variables = new Set(); - const expressions = getAllMolangExpressions(); + const variables = new Set() + const expressions = getAllMolangExpressions() for (const expression of expressions) { - if (!expression.value) continue; + if (!expression.value) continue const matches = expression.value.match(/(v|variable)\.(\w+)/gi) - if (!matches) continue; + if (!matches) continue for (const match of matches) { - const name = match.split('.')[1]; - if (!(excluded && excluded.includes(name))) variables.add(name); + const name = match.split('.')[1] + if (!(excluded && excluded.includes(name))) variables.add(name) } } - return variables; + return variables } /** @@ -283,14 +337,14 @@ function getProjectMolangVariables(excluded) { * @returns {Set} */ function getTemporaryMolangVariables(expression, excluded) { - const variables = new Set(); + const variables = new Set() const matches = expression.match(/(t|temp)\.(\w+)/gi) - if (!matches) return variables; + if (!matches) return variables for (const match of matches) { - const name = match.split('.')[1]; - if (!(excluded && excluded.includes(name))) variables.add(name); + const name = match.split('.')[1] + if (!(excluded && excluded.includes(name))) variables.add(name) } - return variables; + return variables } /** @@ -301,14 +355,13 @@ function getTemporaryMolangVariables(expression, excluded) { */ function sortAutocompleteResults(results, incomplete) { return results.sort((a, b) => { - if (a.text.startsWith(incomplete) && !b.text.startsWith(incomplete)) return -1; - if (b.text.startsWith(incomplete) && !a.text.startsWith(incomplete)) return 1; - return a.text.localeCompare(b.text); + if (a.text.startsWith(incomplete) && !b.text.startsWith(incomplete)) return -1 + if (b.text.startsWith(incomplete) && !a.text.startsWith(incomplete)) return 1 + return a.text.localeCompare(b.text) }) } ;(function () { - /** * @typedef MolangAutocompleteResult * @property {string} text @@ -348,9 +401,9 @@ function sortAutocompleteResults(results, incomplete) { */ queries = new Map() /** - * @type {Set<() => Query[]>} + * @type {Map Query[]>} */ - queryGetters = new Set() + queryGetters = new Map() /** * @param {NamespaceOptions} options */ @@ -388,15 +441,24 @@ function sortAutocompleteResults(results, incomplete) { } /** - * Adds a getter function that returns queries. + * Adds a getter function that returns dynamically generated queries. + * @param {string} id * @param {(incomplete: string) => Query[]} getter * @returns {Namespace} This namespace */ - addQueryGetter(getter) { - this.queryGetters.add(getter) + addQueryGetter(id, getter) { + this.queryGetters.set(id, getter) return this } + /** + * Removes a query getter function + * @param {string} id + */ + removeQueryGetter(id) { + this.queryGetters.delete(id) + } + /** * Returns any queries in this namespace who's ID starts with `incomplete`. * @param {string} expression The expression the query is being used in @@ -406,19 +468,19 @@ function sortAutocompleteResults(results, incomplete) { */ getPossibleQueries(expression, incomplete, recursive = true) { const possibleQueries = [] - this.queries.forEach(query => { + this.queries.forEach((query) => { if (query.id.startsWith(incomplete)) possibleQueries.push(query) }) - this.queryGetters.forEach(getter => { + this.queryGetters.values().forEach((getter) => { const queries = getter(expression, incomplete) - queries.forEach(query => { + queries.forEach((query) => { if (query.id.startsWith(incomplete)) possibleQueries.push(query) }) }) if (recursive && this.inheritedContext) { return [ ...possibleQueries, - ...this.inheritedContext.getPossibleQueries(expression, incomplete) + ...this.inheritedContext.getPossibleQueries(expression, incomplete), ] } return possibleQueries @@ -500,7 +562,8 @@ function sortAutocompleteResults(results, incomplete) { */ hasNamespace(namespaceID, recursive = true) { if (this.namespaces.has(namespaceID)) return true - if (recursive && this.inheritedContext) return this.inheritedContext.hasNamespace(namespaceID) + if (recursive && this.inheritedContext) + return this.inheritedContext.hasNamespace(namespaceID) return false } @@ -516,20 +579,21 @@ function sortAutocompleteResults(results, incomplete) { /** * Returns the namespace with the given ID - * + * * @param {string} namespaceID * @param {boolean} [recursive=true] If true, will also search inherited contexts * @returns {Namespace} The namespace, or undefined if it does not exist */ getNamespace(namespaceID, recursive = true) { if (this.namespaces.has(namespaceID)) return this.namespaces.get(namespaceID) - if (recursive && this.inheritedContext) return this.inheritedContext.getNamespace(namespaceID) + if (recursive && this.inheritedContext) + return this.inheritedContext.getNamespace(namespaceID) return undefined } /** * Removes a namespace from the context - * + * * This will not remove namespaces from inherited contexts * @param {string} namespaceID * @returns {boolean} True if the namespace was removed, false if it did not exist @@ -546,14 +610,18 @@ function sortAutocompleteResults(results, incomplete) { */ getPossibleNamespaces(incomplete, recursive = true) { const possibleNamespaces = [] - this.namespaces.forEach(namespace => { + this.namespaces.forEach((namespace) => { if ( namespace.id.startsWith(incomplete) || - namespace.shorthand && namespace.shorthand.startsWith(incomplete) - ) possibleNamespaces.push(namespace) + (namespace.shorthand && namespace.shorthand.startsWith(incomplete)) + ) + possibleNamespaces.push(namespace) }) if (recursive && this.inheritedContext) { - return [...possibleNamespaces, ...this.inheritedContext.getPossibleNamespaces(incomplete)] + return [ + ...possibleNamespaces, + ...this.inheritedContext.getPossibleNamespaces(incomplete), + ] } return possibleNamespaces } @@ -566,11 +634,14 @@ function sortAutocompleteResults(results, incomplete) { */ getPossibleRootTokens(incomplete, recursive = true) { const possibleRootTokens = [] - this.rootTokens.forEach(token => { + this.rootTokens.forEach((token) => { if (token.id.startsWith(incomplete)) possibleRootTokens.push(token) }) if (recursive && this.inheritedContext) { - return [...possibleRootTokens, ...this.inheritedContext.getPossibleRootTokens(incomplete)] + return [ + ...possibleRootTokens, + ...this.inheritedContext.getPossibleRootTokens(incomplete), + ] } return possibleRootTokens } @@ -582,68 +653,78 @@ function sortAutocompleteResults(results, incomplete) { * @returns {MolangAutocompleteResult[]} The autocomplete results */ autocomplete(text, position) { - const result = []; - const start = text.substring(0, position).split(/[^a-zA-Z_.]\.*/g).last().toLowerCase(); - if (start.length === 0) return result; - const [space, dir] = start.split('.').slice(-2); - console.log(`'${text}' => '${start}' '${space}' '${dir}'`); + const result = [] + const start = text + .substring(0, position) + .split(/[^a-zA-Z_.]\.*/g) + .last() + .toLowerCase() + if (start.length === 0) return result + const [space, dir] = start.split('.').slice(-2) + console.log(`'${text}' => '${start}' '${space}' '${dir}'`) - const possibleRootTokens = this.getPossibleRootTokens(start); - possibleRootTokens.forEach(token => { + const possibleRootTokens = this.getPossibleRootTokens(start) + possibleRootTokens.forEach((token) => { result.push({ text: token.arguments ? `${token.id}()` : token.id, label: token.arguments ? `${token.id}( ${token.arguments.join(', ')} )` : undefined, - overlap: start.length - }); + overlap: start.length, + }) }) - const possibleNamespaces = this.getPossibleNamespaces(space); + const possibleNamespaces = this.getPossibleNamespaces(space) switch (possibleNamespaces.length) { default: - possibleNamespaces.forEach(ns => { - result.push({text: ns.id, overlap: space.length}); - if (ns.shorthand) result.push({text: ns.shorthand, overlap: space.length}); + possibleNamespaces.forEach((ns) => { + result.push({ text: ns.id, overlap: space.length }) + if (ns.shorthand) result.push({ text: ns.shorthand, overlap: space.length }) }) - return sortAutocompleteResults(result, start); + return sortAutocompleteResults(result, start) case 0: - return sortAutocompleteResults(result, start); + return sortAutocompleteResults(result, start) case 1: { - const namespace = possibleNamespaces[0]; + const namespace = possibleNamespaces[0] if (!dir && !start.endsWith('.')) { return sortAutocompleteResults( - [...result, {text: namespace.id, overlap: space.length}], + [...result, { text: namespace.id, overlap: space.length }], start - ); + ) } - const possibleQueries = namespace.getPossibleQueries(text, dir); + const possibleQueries = namespace.getPossibleQueries(text, dir) switch (possibleQueries.length) { default: - return sortAutocompleteResults([ - ...result, - ...possibleQueries.map(q => ({ - text: q.arguments ? `${q.id}()` : q.id, - label: q.arguments - ? `${q.id}( ${q.arguments.join(', ')} )` - : undefined, - overlap: dir.length - })) - ], dir); + return sortAutocompleteResults( + [ + ...result, + ...possibleQueries.map((q) => ({ + text: q.arguments ? `${q.id}()` : q.id, + label: q.arguments + ? `${q.id}( ${q.arguments.join(', ')} )` + : undefined, + overlap: dir.length, + })), + ], + dir + ) case 0: - return sortAutocompleteResults(result, start); + return sortAutocompleteResults(result, start) case 1: { - const query = possibleQueries[0]; - return sortAutocompleteResults([ - ...result, - { - text: query.arguments ? `${query.id}()` : query.id, - label: query.arguments - ? `${query.id}( ${query.arguments.join(', ')} )` - : undefined, - overlap: dir.length - } - ], dir); + const query = possibleQueries[0] + return sortAutocompleteResults( + [ + ...result, + { + text: query.arguments ? `${query.id}()` : query.id, + label: query.arguments + ? `${query.id}( ${query.arguments.join(', ')} )` + : undefined, + overlap: dir.length, + }, + ], + dir + ) } } } @@ -672,7 +753,7 @@ function sortAutocompleteResults(results, incomplete) { }) .addRootToken({ id: 'loop', - arguments: ['count', 'expression'] + arguments: ['count', 'expression'], }) .addRootToken({ id: 'return', @@ -685,764 +766,764 @@ function sortAutocompleteResults(results, incomplete) { }) .addNamespace( new MolangAutocomplete.Namespace({ - id: 'query', - shorthand: 'q', - }) - .addQuery({ - id: 'anim_time', - }) - .addQuery({ - id: 'life_time', - }) - .addQuery({ - id: 'yaw_speed', - }) - .addQuery({ - id: 'ground_speed', - }) - .addQuery({ - id: 'vertical_speed', - }) - .addQuery({ - id: 'property', - }) - .addQuery({ - id: 'has_property', - arguments: ['property'] - }) - .addQuery({ - id: 'variant', - }) - .addQuery({ - id: 'mark_variant', - }) - .addQuery({ - id: 'skin_id', + id: 'query', + shorthand: 'q', }) + .addQuery({ + id: 'anim_time', + }) + .addQuery({ + id: 'life_time', + }) + .addQuery({ + id: 'yaw_speed', + }) + .addQuery({ + id: 'ground_speed', + }) + .addQuery({ + id: 'vertical_speed', + }) + .addQuery({ + id: 'property', + }) + .addQuery({ + id: 'has_property', + arguments: ['property'], + }) + .addQuery({ + id: 'variant', + }) + .addQuery({ + id: 'mark_variant', + }) + .addQuery({ + id: 'skin_id', + }) - .addQuery({ - id: 'above_top_solid', - }) - .addQuery({ - id: 'actor_count', - }) - .addQuery({ - id: 'all', - arguments: ['value', 'values...'] - }) - .addQuery({ - id: 'all_tags', - }) - .addQuery({ - id: 'anger_level', - }) - .addQuery({ - id: 'any', - arguments: ['value', 'values...'] - }) - .addQuery({ - id: 'any_tag', - }) - .addQuery({ - id: 'approx_eq', - arguments: ['value', 'values...'] - }) - .addQuery({ - id: 'armor_color_slot', - }) - .addQuery({ - id: 'armor_material_slot', - }) - .addQuery({ - id: 'armor_texture_slot', - }) - .addQuery({ - id: 'average_frame_time', - }) - .addQuery({ - id: 'blocking', - }) - .addQuery({ - id: 'body_x_rotation', - }) - .addQuery({ - id: 'body_y_rotation', - }) - .addQuery({ - id: 'bone_aabb', - }) - .addQuery({ - id: 'bone_origin', - }) - .addQuery({ - id: 'bone_rotation', - }) - .addQuery({ - id: 'camera_distance_range_lerp', - }) - .addQuery({ - id: 'camera_rotation', - arguments: ['axis'] - }) - .addQuery({ - id: 'can_climb', - }) - .addQuery({ - id: 'can_damage_nearby_mobs', - }) - .addQuery({ - id: 'can_dash', - }) - .addQuery({ - id: 'can_fly', - }) - .addQuery({ - id: 'can_power_jump', - }) - .addQuery({ - id: 'can_swim', - }) - .addQuery({ - id: 'can_walk', - }) - .addQuery({ - id: 'cape_flap_amount', - }) - .addQuery({ - id: 'cardinal_facing', - }) - .addQuery({ - id: 'cardinal_facing_2d', - }) - .addQuery({ - id: 'cardinal_player_facing', - }) - .addQuery({ - id: 'combine_entities', - arguments: ['entitiesReferences...'] - }) - .addQuery({ - id: 'count', - }) - .addQuery({ - id: 'current_squish_value', - }) - .addQuery({ - id: 'dash_cooldown_progress', - }) - .addQuery({ - id: 'day', - }) - .addQuery({ - id: 'death_ticks', - }) - .addQuery({ - id: 'debug_output', - }) - .addQuery({ - id: 'delta_time', - }) - .addQuery({ - id: 'distance_from_camera', - }) - .addQuery({ - id: 'effect_emitter_count', - }) - .addQuery({ - id: 'effect_particle_count', - }) - .addQuery({ - id: 'equipment_count', - }) - .addQuery({ - id: 'equipped_item_all_tags', - }) - .addQuery({ - id: 'equipped_item_any_tag', - arguments: ['tags...'] - }) - .addQuery({ - id: 'equipped_item_is_attachable', - }) - .addQuery({ - id: 'eye_target_x_rotation', - }) - .addQuery({ - id: 'eye_target_y_rotation', - }) - .addQuery({ - id: 'facing_target_to_range_attack', - }) - .addQuery({ - id: 'frame_alpha', - }) - .addQuery({ - id: 'get_actor_info_id', - }) - .addQuery({ - id: 'get_animation_frame', - }) - .addQuery({ - id: 'get_default_bone_pivot', - }) - .addQuery({ - id: 'get_locator_offset', - }) - .addQuery({ - id: 'get_root_locator_offset', - }) - .addQuery({ - id: 'had_component_group', - arguments: ['group'] - }) - .addQuery({ - id: 'has_any_family', - arguments: ['families...'] - }) - .addQuery({ - id: 'has_armor_slot', - }) - .addQuery({ - id: 'has_biome_tag', - }) - .addQuery({ - id: 'has_block_property', - }) - .addQuery({ - id: 'has_cape', - }) - .addQuery({ - id: 'has_collision', - }) - .addQuery({ - id: 'has_dash_cooldown', - }) - .addQuery({ - id: 'has_gravity', - }) - .addQuery({ - id: 'has_owner', - }) - .addQuery({ - id: 'has_rider', - }) - .addQuery({ - id: 'has_target', - }) - .addQuery({ - id: 'head_roll_angle', - }) - .addQuery({ - id: 'head_x_rotation', - }) - .addQuery({ - id: 'head_y_rotation', - }) - .addQuery({ - id: 'health', - }) - .addQuery({ - id: 'heartbeat_interval', - }) - .addQuery({ - id: 'heartbeat_phase', - }) - .addQuery({ - id: 'heightmap', - }) - .addQuery({ - id: 'hurt_direction', - }) - .addQuery({ - id: 'hurt_time', - }) - .addQuery({ - id: 'in_range', - arguments: ['value', 'min', 'max'] - }) - .addQuery({ - id: 'invulnerable_ticks', - }) - .addQuery({ - id: 'is_admiring', - }) - .addQuery({ - id: 'is_alive', - }) - .addQuery({ - id: 'is_angry', - }) - .addQuery({ - id: 'is_attached_to_entity', - }) - .addQuery({ - id: 'is_avoiding_block', - }) - .addQuery({ - id: 'is_avoiding_mobs', - }) - .addQuery({ - id: 'is_baby', - }) - .addQuery({ - id: 'is_breathing', - }) - .addQuery({ - id: 'is_bribed', - }) - .addQuery({ - id: 'is_carrying_block', - }) - .addQuery({ - id: 'is_casting', - }) - .addQuery({ - id: 'is_celebrating', - }) - .addQuery({ - id: 'is_celebrating_special', - }) - .addQuery({ - id: 'is_charged', - }) - .addQuery({ - id: 'is_charging', - }) - .addQuery({ - id: 'is_chested', - }) - .addQuery({ - id: 'is_critical', - }) - .addQuery({ - id: 'is_croaking', - }) - .addQuery({ - id: 'is_dancing', - }) - .addQuery({ - id: 'is_delayed_attacking', - }) - .addQuery({ - id: 'is_digging', - }) - .addQuery({ - id: 'is_eating', - }) - .addQuery({ - id: 'is_eating_mob', - }) - .addQuery({ - id: 'is_elder', - }) - .addQuery({ - id: 'is_emerging', - }) - .addQuery({ - id: 'is_emoting', - }) - .addQuery({ - id: 'is_enchanted', - }) - .addQuery({ - id: 'is_fire_immune', - }) - .addQuery({ - id: 'is_first_person', - }) - .addQuery({ - id: 'is_ghost', - }) - .addQuery({ - id: 'is_gliding', - }) - .addQuery({ - id: 'is_grazing', - }) - .addQuery({ - id: 'is_idling', - }) - .addQuery({ - id: 'is_ignited', - }) - .addQuery({ - id: 'is_illager_captain', - }) - .addQuery({ - id: 'is_in_contact_with_water', - }) - .addQuery({ - id: 'is_in_love', - }) - .addQuery({ - id: 'is_in_ui', - }) - .addQuery({ - id: 'is_in_water', - }) - .addQuery({ - id: 'is_in_water_or_rain', - }) - .addQuery({ - id: 'is_interested', - }) - .addQuery({ - id: 'is_invisible', - }) - .addQuery({ - id: 'is_item_equipped', - }) - .addQuery({ - id: 'is_item_name_any', - arguments: ['slotName', 'slot?', 'itemNames...'] - }) - .addQuery({ - id: 'is_jump_goal_jumping', - }) - .addQuery({ - id: 'is_jumping', - }) - .addQuery({ - id: 'is_laying_down', - }) - .addQuery({ - id: 'is_laying_egg', - }) - .addQuery({ - id: 'is_leashed', - }) - .addQuery({ - id: 'is_levitating', - }) - .addQuery({ - id: 'is_lingering', - }) - .addQuery({ - id: 'is_moving', - }) - .addQuery({ - id: 'is_name_any', - }) - .addQuery({ - id: 'is_on_fire', - }) - .addQuery({ - id: 'is_on_ground', - }) - .addQuery({ - id: 'is_on_screen', - }) - .addQuery({ - id: 'is_onfire', - }) - .addQuery({ - id: 'is_orphaned', - }) - .addQuery({ - id: 'is_owner_identifier_any', - arguments: ['identifiers...'] - }) - .addQuery({ - id: 'is_persona_or_premium_skin', - }) - .addQuery({ - id: 'is_playing_dead', - }) - .addQuery({ - id: 'is_powered', - }) - .addQuery({ - id: 'is_pregnant', - }) - .addQuery({ - id: 'is_ram_attacking', - }) - .addQuery({ - id: 'is_resting', - }) - .addQuery({ - id: 'is_riding', - }) - .addQuery({ - id: 'is_roaring', - }) - .addQuery({ - id: 'is_rolling', - }) - .addQuery({ - id: 'is_saddled', - }) - .addQuery({ - id: 'is_scared', - }) - .addQuery({ - id: 'is_selected_item', - }) - .addQuery({ - id: 'is_shaking', - }) - .addQuery({ - id: 'is_shaking_wetness', - }) - .addQuery({ - id: 'is_sheared', - }) - .addQuery({ - id: 'is_shield_powered', - }) - .addQuery({ - id: 'is_silent', - }) - .addQuery({ - id: 'is_sitting', - }) - .addQuery({ - id: 'is_sleeping', - }) - .addQuery({ - id: 'is_sneaking', - }) - .addQuery({ - id: 'is_sneezing', - }) - .addQuery({ - id: 'is_sniffing', - }) - .addQuery({ - id: 'is_sonic_boom', - }) - .addQuery({ - id: 'is_spectator', - }) - .addQuery({ - id: 'is_sprinting', - }) - .addQuery({ - id: 'is_stackable', - }) - .addQuery({ - id: 'is_stalking', - }) - .addQuery({ - id: 'is_standing', - }) - .addQuery({ - id: 'is_stunned', - }) - .addQuery({ - id: 'is_swimming', - }) - .addQuery({ - id: 'is_tamed', - }) - .addQuery({ - id: 'is_transforming', - }) - .addQuery({ - id: 'is_using_item', - }) - .addQuery({ - id: 'is_wall_climbing', - }) - .addQuery({ - id: 'item_in_use_duration', - }) - .addQuery({ - id: 'item_is_charged', - }) - .addQuery({ - id: 'item_max_use_duration', - }) - .addQuery({ - id: 'item_remaining_use_duration', - }) - .addQuery({ - id: 'item_slot_to_bone_name', - arguments: ['slotName'] - }) - .addQuery({ - id: 'key_frame_lerp_time', - }) - .addQuery({ - id: 'last_frame_time', - }) - .addQuery({ - id: 'last_hit_by_player', - }) - .addQuery({ - id: 'lie_amount', - }) - .addQuery({ - id: 'life_span', - }) - .addQuery({ - id: 'lod_index', - }) - .addQuery({ - id: 'log', - }) - .addQuery({ - id: 'main_hand_item_max_duration', - }) - .addQuery({ - id: 'main_hand_item_use_duration', - }) - .addQuery({ - id: 'max_durability', - }) - .addQuery({ - id: 'max_health', - }) - .addQuery({ - id: 'max_trade_tier', - }) - .addQuery({ - id: 'maximum_frame_time', - }) - .addQuery({ - id: 'minimum_frame_time', - }) - .addQuery({ - id: 'model_scale', - }) - .addQuery({ - id: 'modified_distance_moved', - }) - .addQuery({ - id: 'modified_move_speed', - }) - .addQuery({ - id: 'moon_brightness', - }) - .addQuery({ - id: 'moon_phase', - }) - .addQuery({ - id: 'movement_direction', - }) - .addQuery({ - id: 'noise', - }) - .addQuery({ - id: 'on_fire_time', - }) - .addQuery({ - id: 'out_of_control', - }) - .addQuery({ - id: 'player_level', - }) - .addQuery({ - id: 'position', - arguments: ['axis'] - }) - .addQuery({ - id: 'position_delta', - arguments: ['axis'] - }) - .addQuery({ - id: 'previous_squish_value', - }) - .addQuery({ - id: 'remaining_durability', - }) - .addQuery({ - id: 'roll_counter', - }) - .addQuery({ - id: 'rotation_to_camera', - arguments: ['axis'] - }) - .addQuery({ - id: 'shake_angle', - }) - .addQuery({ - id: 'shake_time', - }) - .addQuery({ - id: 'shield_blocking_bob', - }) - .addQuery({ - id: 'show_bottom', - }) - .addQuery({ - id: 'sit_amount', - }) - .addQuery({ - id: 'sleep_rotation', - }) - .addQuery({ - id: 'sneeze_counter', - }) - .addQuery({ - id: 'spellcolor', - }) - .addQuery({ - id: 'standing_scale', - }) - .addQuery({ - id: 'structural_integrity', - }) - .addQuery({ - id: 'surface_particle_color', - }) - .addQuery({ - id: 'surface_particle_texture_coordinate', - }) - .addQuery({ - id: 'surface_particle_texture_size', - }) - .addQuery({ - id: 'swell_amount', - }) - .addQuery({ - id: 'swelling_dir', - }) - .addQuery({ - id: 'swim_amount', - }) - .addQuery({ - id: 'tail_angle', - }) - .addQuery({ - id: 'target_x_rotation', - }) - .addQuery({ - id: 'target_y_rotation', - }) - .addQuery({ - id: 'texture_frame_index', - }) - .addQuery({ - id: 'time_of_day', - }) - .addQuery({ - id: 'time_since_last_vibration_detection', - }) - .addQuery({ - id: 'time_stamp', - }) - .addQuery({ - id: 'total_emitter_count', - }) - .addQuery({ - id: 'total_particle_count', - }) - .addQuery({ - id: 'trade_tier', - }) - .addQuery({ - id: 'unhappy_counter', - }) - .addQuery({ - id: 'walk_distance', - }) - .addQuery({ - id: 'wing_flap_position', - }) - .addQuery({ - id: 'wing_flap_speed', - }) + .addQuery({ + id: 'above_top_solid', + }) + .addQuery({ + id: 'actor_count', + }) + .addQuery({ + id: 'all', + arguments: ['value', 'values...'], + }) + .addQuery({ + id: 'all_tags', + }) + .addQuery({ + id: 'anger_level', + }) + .addQuery({ + id: 'any', + arguments: ['value', 'values...'], + }) + .addQuery({ + id: 'any_tag', + }) + .addQuery({ + id: 'approx_eq', + arguments: ['value', 'values...'], + }) + .addQuery({ + id: 'armor_color_slot', + }) + .addQuery({ + id: 'armor_material_slot', + }) + .addQuery({ + id: 'armor_texture_slot', + }) + .addQuery({ + id: 'average_frame_time', + }) + .addQuery({ + id: 'blocking', + }) + .addQuery({ + id: 'body_x_rotation', + }) + .addQuery({ + id: 'body_y_rotation', + }) + .addQuery({ + id: 'bone_aabb', + }) + .addQuery({ + id: 'bone_origin', + }) + .addQuery({ + id: 'bone_rotation', + }) + .addQuery({ + id: 'camera_distance_range_lerp', + }) + .addQuery({ + id: 'camera_rotation', + arguments: ['axis'], + }) + .addQuery({ + id: 'can_climb', + }) + .addQuery({ + id: 'can_damage_nearby_mobs', + }) + .addQuery({ + id: 'can_dash', + }) + .addQuery({ + id: 'can_fly', + }) + .addQuery({ + id: 'can_power_jump', + }) + .addQuery({ + id: 'can_swim', + }) + .addQuery({ + id: 'can_walk', + }) + .addQuery({ + id: 'cape_flap_amount', + }) + .addQuery({ + id: 'cardinal_facing', + }) + .addQuery({ + id: 'cardinal_facing_2d', + }) + .addQuery({ + id: 'cardinal_player_facing', + }) + .addQuery({ + id: 'combine_entities', + arguments: ['entitiesReferences...'], + }) + .addQuery({ + id: 'count', + }) + .addQuery({ + id: 'current_squish_value', + }) + .addQuery({ + id: 'dash_cooldown_progress', + }) + .addQuery({ + id: 'day', + }) + .addQuery({ + id: 'death_ticks', + }) + .addQuery({ + id: 'debug_output', + }) + .addQuery({ + id: 'delta_time', + }) + .addQuery({ + id: 'distance_from_camera', + }) + .addQuery({ + id: 'effect_emitter_count', + }) + .addQuery({ + id: 'effect_particle_count', + }) + .addQuery({ + id: 'equipment_count', + }) + .addQuery({ + id: 'equipped_item_all_tags', + }) + .addQuery({ + id: 'equipped_item_any_tag', + arguments: ['tags...'], + }) + .addQuery({ + id: 'equipped_item_is_attachable', + }) + .addQuery({ + id: 'eye_target_x_rotation', + }) + .addQuery({ + id: 'eye_target_y_rotation', + }) + .addQuery({ + id: 'facing_target_to_range_attack', + }) + .addQuery({ + id: 'frame_alpha', + }) + .addQuery({ + id: 'get_actor_info_id', + }) + .addQuery({ + id: 'get_animation_frame', + }) + .addQuery({ + id: 'get_default_bone_pivot', + }) + .addQuery({ + id: 'get_locator_offset', + }) + .addQuery({ + id: 'get_root_locator_offset', + }) + .addQuery({ + id: 'had_component_group', + arguments: ['group'], + }) + .addQuery({ + id: 'has_any_family', + arguments: ['families...'], + }) + .addQuery({ + id: 'has_armor_slot', + }) + .addQuery({ + id: 'has_biome_tag', + }) + .addQuery({ + id: 'has_block_property', + }) + .addQuery({ + id: 'has_cape', + }) + .addQuery({ + id: 'has_collision', + }) + .addQuery({ + id: 'has_dash_cooldown', + }) + .addQuery({ + id: 'has_gravity', + }) + .addQuery({ + id: 'has_owner', + }) + .addQuery({ + id: 'has_rider', + }) + .addQuery({ + id: 'has_target', + }) + .addQuery({ + id: 'head_roll_angle', + }) + .addQuery({ + id: 'head_x_rotation', + }) + .addQuery({ + id: 'head_y_rotation', + }) + .addQuery({ + id: 'health', + }) + .addQuery({ + id: 'heartbeat_interval', + }) + .addQuery({ + id: 'heartbeat_phase', + }) + .addQuery({ + id: 'heightmap', + }) + .addQuery({ + id: 'hurt_direction', + }) + .addQuery({ + id: 'hurt_time', + }) + .addQuery({ + id: 'in_range', + arguments: ['value', 'min', 'max'], + }) + .addQuery({ + id: 'invulnerable_ticks', + }) + .addQuery({ + id: 'is_admiring', + }) + .addQuery({ + id: 'is_alive', + }) + .addQuery({ + id: 'is_angry', + }) + .addQuery({ + id: 'is_attached_to_entity', + }) + .addQuery({ + id: 'is_avoiding_block', + }) + .addQuery({ + id: 'is_avoiding_mobs', + }) + .addQuery({ + id: 'is_baby', + }) + .addQuery({ + id: 'is_breathing', + }) + .addQuery({ + id: 'is_bribed', + }) + .addQuery({ + id: 'is_carrying_block', + }) + .addQuery({ + id: 'is_casting', + }) + .addQuery({ + id: 'is_celebrating', + }) + .addQuery({ + id: 'is_celebrating_special', + }) + .addQuery({ + id: 'is_charged', + }) + .addQuery({ + id: 'is_charging', + }) + .addQuery({ + id: 'is_chested', + }) + .addQuery({ + id: 'is_critical', + }) + .addQuery({ + id: 'is_croaking', + }) + .addQuery({ + id: 'is_dancing', + }) + .addQuery({ + id: 'is_delayed_attacking', + }) + .addQuery({ + id: 'is_digging', + }) + .addQuery({ + id: 'is_eating', + }) + .addQuery({ + id: 'is_eating_mob', + }) + .addQuery({ + id: 'is_elder', + }) + .addQuery({ + id: 'is_emerging', + }) + .addQuery({ + id: 'is_emoting', + }) + .addQuery({ + id: 'is_enchanted', + }) + .addQuery({ + id: 'is_fire_immune', + }) + .addQuery({ + id: 'is_first_person', + }) + .addQuery({ + id: 'is_ghost', + }) + .addQuery({ + id: 'is_gliding', + }) + .addQuery({ + id: 'is_grazing', + }) + .addQuery({ + id: 'is_idling', + }) + .addQuery({ + id: 'is_ignited', + }) + .addQuery({ + id: 'is_illager_captain', + }) + .addQuery({ + id: 'is_in_contact_with_water', + }) + .addQuery({ + id: 'is_in_love', + }) + .addQuery({ + id: 'is_in_ui', + }) + .addQuery({ + id: 'is_in_water', + }) + .addQuery({ + id: 'is_in_water_or_rain', + }) + .addQuery({ + id: 'is_interested', + }) + .addQuery({ + id: 'is_invisible', + }) + .addQuery({ + id: 'is_item_equipped', + }) + .addQuery({ + id: 'is_item_name_any', + arguments: ['slotName', 'slot?', 'itemNames...'], + }) + .addQuery({ + id: 'is_jump_goal_jumping', + }) + .addQuery({ + id: 'is_jumping', + }) + .addQuery({ + id: 'is_laying_down', + }) + .addQuery({ + id: 'is_laying_egg', + }) + .addQuery({ + id: 'is_leashed', + }) + .addQuery({ + id: 'is_levitating', + }) + .addQuery({ + id: 'is_lingering', + }) + .addQuery({ + id: 'is_moving', + }) + .addQuery({ + id: 'is_name_any', + }) + .addQuery({ + id: 'is_on_fire', + }) + .addQuery({ + id: 'is_on_ground', + }) + .addQuery({ + id: 'is_on_screen', + }) + .addQuery({ + id: 'is_onfire', + }) + .addQuery({ + id: 'is_orphaned', + }) + .addQuery({ + id: 'is_owner_identifier_any', + arguments: ['identifiers...'], + }) + .addQuery({ + id: 'is_persona_or_premium_skin', + }) + .addQuery({ + id: 'is_playing_dead', + }) + .addQuery({ + id: 'is_powered', + }) + .addQuery({ + id: 'is_pregnant', + }) + .addQuery({ + id: 'is_ram_attacking', + }) + .addQuery({ + id: 'is_resting', + }) + .addQuery({ + id: 'is_riding', + }) + .addQuery({ + id: 'is_roaring', + }) + .addQuery({ + id: 'is_rolling', + }) + .addQuery({ + id: 'is_saddled', + }) + .addQuery({ + id: 'is_scared', + }) + .addQuery({ + id: 'is_selected_item', + }) + .addQuery({ + id: 'is_shaking', + }) + .addQuery({ + id: 'is_shaking_wetness', + }) + .addQuery({ + id: 'is_sheared', + }) + .addQuery({ + id: 'is_shield_powered', + }) + .addQuery({ + id: 'is_silent', + }) + .addQuery({ + id: 'is_sitting', + }) + .addQuery({ + id: 'is_sleeping', + }) + .addQuery({ + id: 'is_sneaking', + }) + .addQuery({ + id: 'is_sneezing', + }) + .addQuery({ + id: 'is_sniffing', + }) + .addQuery({ + id: 'is_sonic_boom', + }) + .addQuery({ + id: 'is_spectator', + }) + .addQuery({ + id: 'is_sprinting', + }) + .addQuery({ + id: 'is_stackable', + }) + .addQuery({ + id: 'is_stalking', + }) + .addQuery({ + id: 'is_standing', + }) + .addQuery({ + id: 'is_stunned', + }) + .addQuery({ + id: 'is_swimming', + }) + .addQuery({ + id: 'is_tamed', + }) + .addQuery({ + id: 'is_transforming', + }) + .addQuery({ + id: 'is_using_item', + }) + .addQuery({ + id: 'is_wall_climbing', + }) + .addQuery({ + id: 'item_in_use_duration', + }) + .addQuery({ + id: 'item_is_charged', + }) + .addQuery({ + id: 'item_max_use_duration', + }) + .addQuery({ + id: 'item_remaining_use_duration', + }) + .addQuery({ + id: 'item_slot_to_bone_name', + arguments: ['slotName'], + }) + .addQuery({ + id: 'key_frame_lerp_time', + }) + .addQuery({ + id: 'last_frame_time', + }) + .addQuery({ + id: 'last_hit_by_player', + }) + .addQuery({ + id: 'lie_amount', + }) + .addQuery({ + id: 'life_span', + }) + .addQuery({ + id: 'lod_index', + }) + .addQuery({ + id: 'log', + }) + .addQuery({ + id: 'main_hand_item_max_duration', + }) + .addQuery({ + id: 'main_hand_item_use_duration', + }) + .addQuery({ + id: 'max_durability', + }) + .addQuery({ + id: 'max_health', + }) + .addQuery({ + id: 'max_trade_tier', + }) + .addQuery({ + id: 'maximum_frame_time', + }) + .addQuery({ + id: 'minimum_frame_time', + }) + .addQuery({ + id: 'model_scale', + }) + .addQuery({ + id: 'modified_distance_moved', + }) + .addQuery({ + id: 'modified_move_speed', + }) + .addQuery({ + id: 'moon_brightness', + }) + .addQuery({ + id: 'moon_phase', + }) + .addQuery({ + id: 'movement_direction', + }) + .addQuery({ + id: 'noise', + }) + .addQuery({ + id: 'on_fire_time', + }) + .addQuery({ + id: 'out_of_control', + }) + .addQuery({ + id: 'player_level', + }) + .addQuery({ + id: 'position', + arguments: ['axis'], + }) + .addQuery({ + id: 'position_delta', + arguments: ['axis'], + }) + .addQuery({ + id: 'previous_squish_value', + }) + .addQuery({ + id: 'remaining_durability', + }) + .addQuery({ + id: 'roll_counter', + }) + .addQuery({ + id: 'rotation_to_camera', + arguments: ['axis'], + }) + .addQuery({ + id: 'shake_angle', + }) + .addQuery({ + id: 'shake_time', + }) + .addQuery({ + id: 'shield_blocking_bob', + }) + .addQuery({ + id: 'show_bottom', + }) + .addQuery({ + id: 'sit_amount', + }) + .addQuery({ + id: 'sleep_rotation', + }) + .addQuery({ + id: 'sneeze_counter', + }) + .addQuery({ + id: 'spellcolor', + }) + .addQuery({ + id: 'standing_scale', + }) + .addQuery({ + id: 'structural_integrity', + }) + .addQuery({ + id: 'surface_particle_color', + }) + .addQuery({ + id: 'surface_particle_texture_coordinate', + }) + .addQuery({ + id: 'surface_particle_texture_size', + }) + .addQuery({ + id: 'swell_amount', + }) + .addQuery({ + id: 'swelling_dir', + }) + .addQuery({ + id: 'swim_amount', + }) + .addQuery({ + id: 'tail_angle', + }) + .addQuery({ + id: 'target_x_rotation', + }) + .addQuery({ + id: 'target_y_rotation', + }) + .addQuery({ + id: 'texture_frame_index', + }) + .addQuery({ + id: 'time_of_day', + }) + .addQuery({ + id: 'time_since_last_vibration_detection', + }) + .addQuery({ + id: 'time_stamp', + }) + .addQuery({ + id: 'total_emitter_count', + }) + .addQuery({ + id: 'total_particle_count', + }) + .addQuery({ + id: 'trade_tier', + }) + .addQuery({ + id: 'unhappy_counter', + }) + .addQuery({ + id: 'walk_distance', + }) + .addQuery({ + id: 'wing_flap_position', + }) + .addQuery({ + id: 'wing_flap_speed', + }) ) .addNamespace( new MolangAutocomplete.Namespace({ @@ -1451,110 +1532,110 @@ function sortAutocompleteResults(results, incomplete) { }) .addQuery({ id: 'sin', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'cos', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'abs', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'clamp', - arguments: ['value', 'min', 'max'] + arguments: ['value', 'min', 'max'], }) .addQuery({ id: 'pow', - arguments: ['base', 'exponent'] + arguments: ['base', 'exponent'], }) .addQuery({ id: 'sqrt', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'random', - arguments: ['low', 'high'] + arguments: ['low', 'high'], }) .addQuery({ id: 'random_integer', - arguments: ['low', 'high'] + arguments: ['low', 'high'], }) .addQuery({ id: 'ceil', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'round', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'trunc', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'floor', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'mod', - arguments: ['value', 'denominator'] + arguments: ['value', 'denominator'], }) .addQuery({ id: 'min', - arguments: ['a', 'b'] + arguments: ['a', 'b'], }) .addQuery({ id: 'max', - arguments: ['a', 'b'] + arguments: ['a', 'b'], }) .addQuery({ id: 'exp', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'ln', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'lerp', - arguments: ['start', 'end', '0_to_1'] + arguments: ['start', 'end', '0_to_1'], }) .addQuery({ id: 'lerprotate', - arguments: ['start', 'end', '0_to_1'] + arguments: ['start', 'end', '0_to_1'], }) .addQuery({ - id: 'pi' + id: 'pi', }) .addQuery({ id: 'asin', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'acos', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'atan', - arguments: ['value'] + arguments: ['value'], }) .addQuery({ id: 'atan2', - arguments: ['y', 'x'] + arguments: ['y', 'x'], }) .addQuery({ id: 'die_roll', - arguments: ['num', 'low', 'high'] + arguments: ['num', 'low', 'high'], }) .addQuery({ id: 'die_roll_integer', - arguments: ['num', 'low', 'high'] + arguments: ['num', 'low', 'high'], }) .addQuery({ id: 'hermite_blend', - arguments: ['0_to_1'] + arguments: ['0_to_1'], }) ) .addNamespace( @@ -1563,28 +1644,28 @@ function sortAutocompleteResults(results, incomplete) { shorthand: 'c', }) .addQuery({ - id: 'item_slot' + id: 'item_slot', }) .addQuery({ - id: 'block_face' + id: 'block_face', }) .addQuery({ - id: 'cardinal_block_face_placed_on' + id: 'cardinal_block_face_placed_on', }) .addQuery({ - id: 'is_first_person' + id: 'is_first_person', }) .addQuery({ - id: 'owning_entity' + id: 'owning_entity', }) .addQuery({ - id: 'player_offhand_arm_height' + id: 'player_offhand_arm_height', }) .addQuery({ - id: 'other' + id: 'other', }) .addQuery({ - id: 'count' + id: 'count', }) ) .addNamespace( @@ -1593,25 +1674,24 @@ function sortAutocompleteResults(results, incomplete) { shorthand: 'v', }) .addQuery({ - id: 'attack_time' + id: 'attack_time', }) .addQuery({ - id: 'is_first_person' + id: 'is_first_person', }) - .addQueryGetter((_, incomplete) => { + .addQueryGetter('variables', (_, incomplete) => { const variables = getProjectMolangVariables([incomplete]) - return [...variables].map(v => ({id: v})) + return [...variables].map((v) => ({ id: v })) }) ) .addNamespace( new MolangAutocomplete.Namespace({ id: 'temp', shorthand: 't', + }).addQueryGetter('temporary_variables', (expression, incomplete) => { + const variables = getTemporaryMolangVariables(expression, [incomplete]) + return [...variables].map((v) => ({ id: v })) }) - .addQueryGetter((expression, incomplete) => { - const variables = getTemporaryMolangVariables(expression, [incomplete]) - return [...variables].map(v => ({id: v})) - }) ) MolangAutocomplete.KeyframeContext = new MolangAutocomplete.Context({ @@ -1635,20 +1715,19 @@ function sortAutocompleteResults(results, incomplete) { }) .addRootToken({ id: 'toggle', - arguments: ['name'] + arguments: ['name'], }) .addRootToken({ id: 'slider', - arguments: ['name', 'step?', 'min?', 'max?'] + arguments: ['name', 'step?', 'min?', 'max?'], }) .addRootToken({ id: 'impulse', - arguments: ['name', 'duration'] + arguments: ['name', 'duration'], }) MolangAutocomplete.BedrockBindingContext = new MolangAutocomplete.Context({ id: 'bedrockBindingContext', inheritedContext: MolangAutocomplete.DefaultContext, }) - -})() \ No newline at end of file +})() From 29050ee5ec2cce56417dbebb40a01a61be5417d9 Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 11:21:37 +0200 Subject: [PATCH 008/153] added "solid with marker color" view mode --- js/outliner/cube.js | 5 +- js/outliner/mesh.js | 5 +- js/outliner/texture_mesh.js | 5 +- js/preview/canvas.js | 175 +++++++++++++++++++++--------------- js/preview/preview.js | 9 +- lang/en.json | 1 + lang/fr.json | 1 + package-lock.json | 4 +- 8 files changed, 125 insertions(+), 80 deletions(-) diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 397800393..93e6675c6 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -1113,7 +1113,10 @@ new NodePreviewController(Cube, { mesh.geometry.setIndex(indices) if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial + mesh.material = Canvas.monochromaticSolidMaterial + + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[element.color % Canvas.emptyMaterials.length] } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index fcc7c35a9..ebb3d8697 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -1061,7 +1061,10 @@ new NodePreviewController(Mesh, { let {mesh} = element; if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial + mesh.material = Canvas.monochromaticSolidMaterial + + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[element.color] } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/outliner/texture_mesh.js b/js/outliner/texture_mesh.js index f115bb26e..57dc977df 100644 --- a/js/outliner/texture_mesh.js +++ b/js/outliner/texture_mesh.js @@ -294,8 +294,11 @@ new NodePreviewController(TextureMesh, { let {mesh} = element; if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial + mesh.material = Canvas.monochromaticSolidMaterial + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[0] + } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/preview/canvas.js b/js/preview/canvas.js index f80418296..a1948f47d 100644 --- a/js/preview/canvas.js +++ b/js/preview/canvas.js @@ -36,6 +36,78 @@ const Reusable = { euler2: new THREE.Euler(), } +// Aza note: +// --------------------------------------- +// Not sure about the pertinence of doing this, but my reasoning is that it saves us +// from copying the exact same shaders twice for both solid view mode variants (monochromatic & colored). +const SolidMaterialShaders = { + vertShader: ` + attribute float highlight; + + uniform bool SHADE; + + varying float light; + varying float lift; + + float AMBIENT = 0.1; + float XFAC = -0.05; + float ZFAC = 0.05; + + void main() + { + + if (SHADE) { + + vec3 N = normalize( vec3( modelViewMatrix * vec4(normal, 0.0) ) ); + + light = (0.2 + abs(N.z) * 0.8) * (1.0-AMBIENT) + N.x*N.x * XFAC + N.y*N.y * ZFAC + AMBIENT; + + } else { + + light = 1.0; + + } + + if (highlight == 2.0) { + lift = 0.3; + } else if (highlight == 1.0) { + lift = 0.12; + } else { + lift = 0.0; + } + + vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); + gl_Position = projectionMatrix * mvPosition; + }`, + fragShader: ` + #ifdef GL_ES + precision ${isApp ? 'highp' : 'mediump'} float; + #endif + + uniform bool SHADE; + uniform float BRIGHTNESS; + uniform vec3 base; + + varying float light; + varying float lift; + + void main(void) + { + + gl_FragColor = vec4(lift + base * light * BRIGHTNESS, 1.0); + + if (lift > 0.1) { + gl_FragColor.b = gl_FragColor.b * 1.16; + gl_FragColor.g = gl_FragColor.g * 1.04; + } + if (lift > 0.2) { + gl_FragColor.r = gl_FragColor.r * 0.6; + gl_FragColor.g = gl_FragColor.g * 0.7; + } + + }` +} + const Canvas = { // Stores various colors for the 3D scene gizmo_colors, @@ -58,81 +130,31 @@ const Canvas = { wireframeMaterial: new THREE.MeshBasicMaterial({ wireframe: true }), - solidMaterial: (function() { - var vertShader = ` - attribute float highlight; - - uniform bool SHADE; - - varying float light; - varying float lift; - - float AMBIENT = 0.1; - float XFAC = -0.05; - float ZFAC = 0.05; - - void main() - { - - if (SHADE) { - - vec3 N = normalize( vec3( modelViewMatrix * vec4(normal, 0.0) ) ); - - light = (0.2 + abs(N.z) * 0.8) * (1.0-AMBIENT) + N.x*N.x * XFAC + N.y*N.y * ZFAC + AMBIENT; - - } else { - - light = 1.0; - - } - - if (highlight == 2.0) { - lift = 0.3; - } else if (highlight == 1.0) { - lift = 0.12; - } else { - lift = 0.0; - } - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - gl_Position = projectionMatrix * mvPosition; - }` - var fragShader = ` - #ifdef GL_ES - precision ${isApp ? 'highp' : 'mediump'} float; - #endif - - uniform bool SHADE; - uniform float BRIGHTNESS; - uniform vec3 base; - - varying float light; - varying float lift; - - void main(void) - { - - gl_FragColor = vec4(lift + base * light * BRIGHTNESS, 1.0); - - if (lift > 0.1) { - gl_FragColor.b = gl_FragColor.b * 1.16; - gl_FragColor.g = gl_FragColor.g * 1.04; - } - if (lift > 0.2) { - gl_FragColor.r = gl_FragColor.r * 0.6; - gl_FragColor.g = gl_FragColor.g * 0.7; - } - - }` - + coloredSolidMaterials:[], + createColoredSolidMaterials() { + markerColors.forEach(function(color, i) { + if (Canvas.coloredSolidMaterials[i]) return; + Canvas.coloredSolidMaterials[i] = new THREE.ShaderMaterial({ + uniforms: { + SHADE: {type: 'bool', value: settings.shading.value}, + BRIGHTNESS: {type: 'bool', value: settings.brightness.value / 50}, + base: {value: new THREE.Color().set(color.pastel)} + }, + vertexShader: SolidMaterialShaders.vertShader, + fragmentShader: SolidMaterialShaders.fragShader, + side: THREE.DoubleSide + }); + }) + }, + monochromaticSolidMaterial: (function() { return new THREE.ShaderMaterial({ uniforms: { SHADE: {type: 'bool', value: settings.shading.value}, BRIGHTNESS: {type: 'bool', value: settings.brightness.value / 50}, base: {value: gizmo_colors.solid} }, - vertexShader: vertShader, - fragmentShader: fragShader, + vertexShader: SolidMaterialShaders.vertShader, + fragmentShader: SolidMaterialShaders.fragShader, side: THREE.DoubleSide }); })(), @@ -590,6 +612,7 @@ const Canvas = { setup() { Canvas.updateMarkerColorMaterials(); + Canvas.createColoredSolidMaterials(); //Light Sun = new THREE.AmbientLight( 0xffffff ); @@ -935,9 +958,12 @@ const Canvas = { if (Canvas.layered_material) { Canvas.layered_material.side = side; } - if (Canvas.solidMaterial) { - Canvas.solidMaterial.side = side; + if (Canvas.monochromaticSolidMaterial) { + Canvas.monochromaticSolidMaterial.side = side; } + Canvas.coloredSolidMaterials.forEach(function(mat) { + mat.side = side + }) Canvas.emptyMaterials.forEach(function(mat) { mat.side = side }) @@ -1219,8 +1245,11 @@ const Canvas = { Canvas.adaptObjectFaceGeo(cube); if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial - + mesh.material = Canvas.monochromaticSolidMaterial + + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[cube.color] + } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/preview/preview.js b/js/preview/preview.js index 703879cb1..393df6389 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -2070,8 +2070,12 @@ function updateShading() { material.uniforms.SHADE.value = settings.shading.value; material.uniforms.BRIGHTNESS.value = settings.brightness.value / 50; }) - Canvas.solidMaterial.uniforms.SHADE.value = settings.shading.value; - Canvas.solidMaterial.uniforms.BRIGHTNESS.value = settings.brightness.value / 50; + Canvas.coloredSolidMaterials.forEach(material => { + material.uniforms.SHADE.value = settings.shading.value; + material.uniforms.BRIGHTNESS.value = settings.brightness.value / 50; + }) + Canvas.monochromaticSolidMaterial.uniforms.SHADE.value = settings.shading.value; + Canvas.monochromaticSolidMaterial.uniforms.BRIGHTNESS.value = settings.brightness.value / 50; Canvas.uvHelperMaterial.uniforms.SHADE.value = settings.shading.value; Canvas.normalHelperMaterial.uniforms.SHADE.value = settings.shading.value; Blockbench.dispatchEvent('update_scene_shading'); @@ -2094,6 +2098,7 @@ BARS.defineActions(function() { options: { textured: {name: true, icon: 'image', condition: () => (!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('textured'))}, solid: {name: true, icon: 'fas.fa-square', condition: () => (!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('solid'))}, + colored_solid: {name: true, icon: 'fas.fa-square-plus', condition: () => (!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('colored_solid'))}, wireframe: {name: true, icon: 'far.fa-square', condition: () => (!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('wireframe'))}, uv: {name: true, icon: 'grid_guides', condition: () => (!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('uv'))}, normal: {name: true, icon: 'fa-square-caret-up', condition: () => ((!Toolbox.selected.allowed_view_modes || Toolbox.selected.allowed_view_modes.includes('normal')) && Mesh.all.length)}, diff --git a/lang/en.json b/lang/en.json index cf05bb3fe..000beee97 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1618,6 +1618,7 @@ "action.view_mode.desc": "Change the model view mode", "action.view_mode.textured": "Textured", "action.view_mode.solid": "Solid", + "action.view_mode.colored_solid": "Solid with Marker Colors", "action.view_mode.wireframe": "Wireframe", "action.view_mode.uv": "UV Preview", "action.view_mode.normal": "Face Orientation", diff --git a/lang/fr.json b/lang/fr.json index 69da880b9..a43fc8729 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -1199,6 +1199,7 @@ "action.view_mode.desc": "Change le mode d'affichage du modèle", "action.view_mode.textured": "Texturé", "action.view_mode.solid": "Solide", + "action.view_mode.colored_solid": "Solide avec Couleur des marqueurs", "action.view_mode.wireframe": "Squelette", "action.toggle_sidebars": "Activer/désactiver les barres latérales", "action.toggle_sidebars.desc": "Active/désactive les bandes sur les côtés", diff --git a/package-lock.json b/package-lock.json index 85c274b36..fef5483f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Blockbench", - "version": "4.10.0-beta.1", + "version": "4.10.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Blockbench", - "version": "4.10.0-beta.1", + "version": "4.10.0", "license": "GPL-3.0-or-later", "dependencies": { "@electron/remote": "^2.1.2", From e5c2342d5494235b368b1ce3ec2eccdece5b6a02 Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 12:58:14 +0200 Subject: [PATCH 009/153] removed translations that are not English --- lang/fr.json | 1 - 1 file changed, 1 deletion(-) diff --git a/lang/fr.json b/lang/fr.json index a43fc8729..69da880b9 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -1199,7 +1199,6 @@ "action.view_mode.desc": "Change le mode d'affichage du modèle", "action.view_mode.textured": "Texturé", "action.view_mode.solid": "Solide", - "action.view_mode.colored_solid": "Solide avec Couleur des marqueurs", "action.view_mode.wireframe": "Squelette", "action.toggle_sidebars": "Activer/désactiver les barres latérales", "action.toggle_sidebars.desc": "Active/désactive les bandes sur les côtés", From a565e7209f2d260fa445dde36ae8daa8701e9ff0 Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 19:46:08 +0200 Subject: [PATCH 010/153] Fix custom Marker Colors breaking and freezing the canvas --- js/preview/canvas.js | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/js/preview/canvas.js b/js/preview/canvas.js index a1948f47d..1db6e349c 100644 --- a/js/preview/canvas.js +++ b/js/preview/canvas.js @@ -130,22 +130,6 @@ const Canvas = { wireframeMaterial: new THREE.MeshBasicMaterial({ wireframe: true }), - coloredSolidMaterials:[], - createColoredSolidMaterials() { - markerColors.forEach(function(color, i) { - if (Canvas.coloredSolidMaterials[i]) return; - Canvas.coloredSolidMaterials[i] = new THREE.ShaderMaterial({ - uniforms: { - SHADE: {type: 'bool', value: settings.shading.value}, - BRIGHTNESS: {type: 'bool', value: settings.brightness.value / 50}, - base: {value: new THREE.Color().set(color.pastel)} - }, - vertexShader: SolidMaterialShaders.vertShader, - fragmentShader: SolidMaterialShaders.fragShader, - side: THREE.DoubleSide - }); - }) - }, monochromaticSolidMaterial: (function() { return new THREE.ShaderMaterial({ uniforms: { @@ -336,6 +320,7 @@ const Canvas = { }) })(), emptyMaterials: [], + coloredSolidMaterials:[], updateMarkerColorMaterials() { var img = new Image() img.src = 'assets/missing.png' @@ -419,17 +404,32 @@ const Canvas = { markerColors.forEach(function(color, i) { if (Canvas.emptyMaterials[i]) return; + + // Define uniforms that all marker colored shaders share + let commonUniforms = { + SHADE: {type: 'bool', value: settings.shading.value}, + BRIGHTNESS: {type: 'bool', value: settings.brightness.value / 50}, + base: {value: new THREE.Color().set(color.pastel)} + } + + // Empty texture materials Canvas.emptyMaterials[i] = new THREE.ShaderMaterial({ uniforms: { map: {type: 't', value: tex}, - SHADE: {type: 'bool', value: settings.shading.value}, - BRIGHTNESS: {type: 'bool', value: settings.brightness.value / 50}, - base: {value: new THREE.Color().set(color.pastel)} + ...commonUniforms }, vertexShader: vertShader, fragmentShader: fragShader, side: THREE.DoubleSide, }) + + // Colored solid materials + Canvas.coloredSolidMaterials[i] = new THREE.ShaderMaterial({ + uniforms: commonUniforms, + vertexShader: SolidMaterialShaders.vertShader, + fragmentShader: SolidMaterialShaders.fragShader, + side: THREE.DoubleSide + }); }) }, transparentMaterial: new THREE.MeshBasicMaterial({visible: false, name: 'invisible'}), @@ -612,7 +612,6 @@ const Canvas = { setup() { Canvas.updateMarkerColorMaterials(); - Canvas.createColoredSolidMaterials(); //Light Sun = new THREE.AmbientLight( 0xffffff ); From 873730fd36b564da72fcbb8fd92b56d303f63bf7 Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 20:57:38 +0200 Subject: [PATCH 011/153] Added suggestion from #2210 --- js/outliner/cube.js | 14 +++++++++++++- js/outliner/group.js | 24 ++++++++++++++++++++++++ js/outliner/mesh.js | 14 +++++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 397800393..288f1506f 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -939,6 +939,15 @@ class Cube extends OutlinerElement { } }}); }}, + {name: 'action.cube.random_color', icon: 'fa-swatchbook', click(cube) { + cube.forSelected(function(obj){ + let lastColor = obj.color + // Ensure chosen color is never equal to the previous color + do obj.setColor(Math.floor(Math.random() * markerColors.length)) + while (obj.color === lastColor) + }, 'change color') + } + }, {name: 'menu.cube.texture', icon: 'collections', condition: () => !Format.single_texture && !Format.per_group_texture, children: function() { var arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click(cube) { @@ -1113,7 +1122,10 @@ new NodePreviewController(Cube, { mesh.geometry.setIndex(indices) if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial + mesh.material = Canvas.monochromaticSolidMaterial + + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[element.color % Canvas.emptyMaterials.length] } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/outliner/group.js b/js/outliner/group.js index 855ccc885..e2298e19e 100644 --- a/js/outliner/group.js +++ b/js/outliner/group.js @@ -439,6 +439,26 @@ class Group extends OutlinerNode { }) Undo.finishEdit('Change group marker color') } + function setRandomGroupColor() { + let randomColor = function() { return Math.floor(Math.random() * markerColors.length)} + let elements = Outliner.selected.filter(el => el.setColor) + Undo.initEdit({outliner: true, elements: elements, selection: true}) + Group.all.forEach(group => { + if (group.selected) { + let lastColor = group.color + // Ensure chosen group color is never the same as before + do group.color = randomColor(); + while (group.color === lastColor) + } + }) + elements.forEach(el => { + let lastColor = el.color + // Ensure chosen element color is never the same as before + do el.setColor(randomColor()) + while (el.color === lastColor) + }) + Undo.finishEdit('Change group marker color') + } Group.prototype.menu = new Menu([ ...Outliner.control_menu_group, new MenuSeparator('settings'), @@ -453,6 +473,10 @@ class Group extends OutlinerNode { } }}) }}, + {name: 'action.cube.random_color', icon: 'fa-swatchbook', click() { + setRandomGroupColor() + } + }, {name: 'menu.cube.texture', icon: 'collections', condition: () => Format.per_group_texture, children() { let arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click(group) { diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index fcc7c35a9..e553ede9a 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -872,6 +872,15 @@ class Mesh extends OutlinerElement { } }}) }}, + {name: 'action.cube.random_color', icon: 'fa-swatchbook', click(cube) { + cube.forSelected(function(obj){ + let lastColor = obj.color + // Ensure chosen color is never equal to the previous color + do obj.setColor(Math.floor(Math.random() * markerColors.length)) + while (obj.color === lastColor) + }, 'change color') + } + }, {name: 'menu.cube.texture', icon: 'collections', condition: () => !Format.single_texture, children: function() { var arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click: function(cube) { @@ -1061,7 +1070,10 @@ new NodePreviewController(Mesh, { let {mesh} = element; if (Project.view_mode === 'solid') { - mesh.material = Canvas.solidMaterial + mesh.material = Canvas.monochromaticSolidMaterial + + } else if (Project.view_mode === 'colored_solid') { + mesh.material = Canvas.coloredSolidMaterials[element.color] } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial From 5874d92d5140d664e2925fe8c91f426ca1862dbd Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 21:04:43 +0200 Subject: [PATCH 012/153] added English language file entry for Random Marker Color option --- lang/en.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/en.json b/lang/en.json index cf05bb3fe..9b34a9d41 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1387,6 +1387,7 @@ "action.outliner_toggle.desc": "Toggles switches for more options in the outliner", "action.cube_counter": "Model Statistics", "action.cube_counter.desc": "Displays the current number of elements and other statistics", + "action.cube.random_color": "Random Marker Color", "action.search_outliner": "Search Outliner", "action.search_outliner.desc": "Search for specific element names in the outliner", From 0c2c84b77faa08122641cb32949d42e9fd7d0f4f Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 12 May 2024 21:45:43 +0200 Subject: [PATCH 013/153] remove some errors leftover from a git reset --- js/outliner/cube.js | 5 +---- js/outliner/mesh.js | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 288f1506f..83cc5ac20 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -1122,10 +1122,7 @@ new NodePreviewController(Cube, { mesh.geometry.setIndex(indices) if (Project.view_mode === 'solid') { - mesh.material = Canvas.monochromaticSolidMaterial - - } else if (Project.view_mode === 'colored_solid') { - mesh.material = Canvas.coloredSolidMaterials[element.color % Canvas.emptyMaterials.length] + mesh.material = Canvas.solidMaterial } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index e553ede9a..2c4ad351b 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -1070,10 +1070,7 @@ new NodePreviewController(Mesh, { let {mesh} = element; if (Project.view_mode === 'solid') { - mesh.material = Canvas.monochromaticSolidMaterial - - } else if (Project.view_mode === 'colored_solid') { - mesh.material = Canvas.coloredSolidMaterials[element.color] + mesh.material = Canvas.solidMaterial } else if (Project.view_mode === 'wireframe') { mesh.material = Canvas.wireframeMaterial From 01432a81eb90361f4cd6c7421e1e823a0a504899 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 26 May 2024 19:13:03 +0200 Subject: [PATCH 014/153] Add license to NSIS installer --- build/installer.nsh | 1 + package.json | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 build/installer.nsh diff --git a/build/installer.nsh b/build/installer.nsh new file mode 100644 index 000000000..5a50d5ad0 --- /dev/null +++ b/build/installer.nsh @@ -0,0 +1 @@ +ManifestDPIAware true \ No newline at end of file diff --git a/package.json b/package.json index bb8cbde79..4aee4a8db 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,9 @@ "certificateSubjectName": "Jannis Tobias Petersen", "target": "nsis" }, + "nsis": { + "license": "LICENSE.MD" + }, "linux": { "artifactName": "${productName}_${version}.${ext}", "target": [ From 5b16025ec154fad7dbe5c46eac2cd709d5b6b194 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 28 May 2024 01:14:45 +0200 Subject: [PATCH 015/153] Add 3D printing to generic format target list --- js/io/formats/generic.js | 2 +- lang/en.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/js/io/formats/generic.js b/js/io/formats/generic.js index 6d8448fbf..5582fbc79 100644 --- a/js/io/formats/generic.js +++ b/js/io/formats/generic.js @@ -3,7 +3,7 @@ new ModelFormat({ id: 'free', icon: 'icon-format_free', category: 'general', - target: ['Godot', 'Unity', 'Unreal Engine', 'Sketchfab', 'Blender'], + target: ['Godot', 'Unity', 'Unreal Engine', 'Sketchfab', 'Blender', tl('format.free.info.3d_printing')], format_page: { content: [ {type: 'h3', text: tl('mode.start.format.informations')}, diff --git a/lang/en.json b/lang/en.json index 1100de5f5..33cb85131 100644 --- a/lang/en.json +++ b/lang/en.json @@ -119,6 +119,7 @@ "format.free": "Generic Model", "format.free.desc": "Model without restrictions. For game engines, rendering etc.", + "format.free.info.3d_printing": "3D Printing", "format.free.info.meshes": "In this format, you can create low poly models using cubes and custom shaped meshes.", "format.free.info.limitation": "Models cannot be loaded into games that need specialized formats, such as Minecraft.", From a5813050ffc273236a874238bd10984e425ddcd1 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 30 May 2024 23:49:39 +0200 Subject: [PATCH 016/153] Support removing object entries directly from menus --- js/interface/menu.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/interface/menu.js b/js/interface/menu.js index d843b0dd8..f618c0a7b 100644 --- a/js/interface/menu.js +++ b/js/interface/menu.js @@ -664,9 +664,14 @@ class Menu { this.structure.remove(action); this.structure.remove(action.id); action.menus.remove(this); + } else if (this.structure.includes(path)) { + this.structure.remove(path); } if (path === undefined) path = ''; - if (typeof path == 'string') path = path.split('.'); + if (typeof path == 'string') { + path = path.split('.'); + } + if (path instanceof Array == false) return; function traverse(arr, layer) { if (!isNaN(parseInt(path[layer]))) { From 921cdbfc0ada038465110a8e1ee5758b9666f2ac Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 1 Jun 2024 12:01:10 +0200 Subject: [PATCH 017/153] Option for fill tool to fill all selected elements Add "Selection" fill mode that's exclusive to the 2D Editor format Auto-switch fill modes when a fill mode is no longer available in a format --- js/modes.js | 10 +++++ js/outliner/outliner.js | 7 +-- js/preview/preview.js | 6 ++- js/texturing/painter.js | 95 ++++++++++++++++++++++++----------------- lang/en.json | 2 + 5 files changed, 77 insertions(+), 43 deletions(-) diff --git a/js/modes.js b/js/modes.js index 535202ce2..ca75c6657 100644 --- a/js/modes.js +++ b/js/modes.js @@ -205,6 +205,16 @@ BARS.defineActions(function() { Panels.uv.handle.firstChild.textContent = tl('mode.paint'); + let fill_mode = BarItems.fill_mode.value; + if (!Condition(BarItems.fill_mode.options[fill_mode].condition)) { + for (let key in BarItems.fill_mode.options) { + if (Condition(BarItems.fill_mode.options[key].condition)) { + BarItems.fill_mode.set(key); + break; + } + } + } + UVEditor.vue.setMode('paint'); three_grid.visible = false; }, diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index 8bd773ec3..6ee3f286c 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -434,8 +434,9 @@ class OutlinerElement extends OutlinerNode { return false; } //Shift - var just_selected = [] - if (event && (event.shiftKey === true || Pressing.overrides.shift) && this.getParentArray().includes(selected[selected.length-1]) && !Modes.paint && isOutlinerClick) { + var just_selected = []; + let allow_multi_select = (!Modes.paint || (Toolbox.selected.id == 'fill_tool' && BarItems.fill_mode.value == 'selected_elements')); + if (event && allow_multi_select && (event.shiftKey === true || Pressing.overrides.shift) && this.getParentArray().includes(selected[selected.length-1]) && isOutlinerClick) { var starting_point; var last_selected = selected[selected.length-1] this.getParentArray().forEach((s, i) => { @@ -466,7 +467,7 @@ class OutlinerElement extends OutlinerNode { }) //Control - } else if (event && !Modes.paint && (event.ctrlOrCmd || event.shiftKey || Pressing.overrides.ctrl || Pressing.overrides.shift)) { + } else if (event && allow_multi_select && (event.ctrlOrCmd || event.shiftKey || Pressing.overrides.ctrl || Pressing.overrides.shift)) { if (selected.includes(this)) { selected.replace(selected.filter((e) => { return e !== this diff --git a/js/preview/preview.js b/js/preview/preview.js index 703879cb1..0f75150b0 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -788,7 +788,7 @@ class Preview { } } Blockbench.dispatchEvent('canvas_select', data) - if (Modes.paint) { + if (Modes.paint && !(Toolbox.selected.id == 'fill_tool' && BarItems.fill_mode.value == 'selected_elements')) { event = 0; } if (data.element.parent.type === 'group' && (!data.element instanceof Mesh || select_mode == 'object') && ( @@ -915,6 +915,10 @@ class Preview { } else if (data.element instanceof Mesh && ['edge', 'vertex'].includes(select_mode)) { data.element.select() + } else if (Toolbox.selected.id == 'fill_tool' && BarItems.fill_mode.value == 'selected_elements') { + if (!data.element.selected) { + data.element.select(event) + } } else { data.element.select(event) } diff --git a/js/texturing/painter.js b/js/texturing/painter.js index 41f5c4808..ebeae5083 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -481,51 +481,66 @@ const Painter = { } } - if (element instanceof Cube && fill_mode === 'element') { - ctx.beginPath(); - for (var face in element.faces) { - var tag = element.faces[face] - if (tag.getTexture() === texture) { - var face_rect = getRectangle( - tag.uv[0] * uvFactorX, - tag.uv[1] * uvFactorY, - tag.uv[2] * uvFactorX, - tag.uv[3] * uvFactorY - ) - let animation_offset = texture.currentFrame * texture.display_height; - ctx.rect( - Math.floor(face_rect.ax), - Math.floor(face_rect.ay) + animation_offset, - Math.ceil(face_rect.bx) - Math.floor(face_rect.ax), - Math.ceil(face_rect.by) - Math.floor(face_rect.ay) - ) + function paintElement(element) { + if (element instanceof Cube) { + ctx.beginPath(); + for (var face in element.faces) { + var tag = element.faces[face] + if (tag.getTexture() === texture) { + var face_rect = getRectangle( + tag.uv[0] * uvFactorX, + tag.uv[1] * uvFactorY, + tag.uv[2] * uvFactorX, + tag.uv[3] * uvFactorY + ) + let animation_offset = texture.currentFrame * texture.display_height; + ctx.rect( + Math.floor(face_rect.ax), + Math.floor(face_rect.ay) + animation_offset, + Math.ceil(face_rect.bx) - Math.floor(face_rect.ax), + Math.ceil(face_rect.by) - Math.floor(face_rect.ay) + ) + } } - } - ctx.fill() - - } else if (element instanceof Mesh && (fill_mode === 'element' || fill_mode === 'face')) { - ctx.beginPath(); - for (var fkey in element.faces) { - var face = element.faces[fkey]; - if (fill_mode === 'face' && fkey !== Painter.current.face) continue; - if (face.vertices.length <= 2 || face.getTexture() !== texture) continue; - - let matrix = Painter.current.face_matrices[element.uuid + fkey] || face.getOccupationMatrix(true, [0, 0]); - Painter.current.face_matrices[element.uuid + fkey] = matrix; - for (let x in matrix) { - for (let y in matrix[x]) { - if (!matrix[x][y]) continue; - if (!texture.selection.allow(x, y)) continue; - x = parseInt(x); y = parseInt(y); - ctx.rect(x, y, 1, 1); + ctx.fill() + + } else if (element instanceof Mesh) { + ctx.beginPath(); + for (var fkey in element.faces) { + var face = element.faces[fkey]; + if (fill_mode === 'face' && fkey !== Painter.current.face) continue; + if (face.vertices.length <= 2 || face.getTexture() !== texture) continue; + + let matrix = Painter.current.face_matrices[element.uuid + fkey] || face.getOccupationMatrix(true, [0, 0]); + Painter.current.face_matrices[element.uuid + fkey] = matrix; + for (let x in matrix) { + for (let y in matrix[x]) { + if (!matrix[x][y]) continue; + if (!texture.selection.allow(x, y)) continue; + x = parseInt(x); y = parseInt(y); + ctx.rect(x, y, 1, 1); + } } } + ctx.fill() } - ctx.fill() + } - } else if (fill_mode === 'face' || fill_mode === 'element') { + if (element instanceof Cube && fill_mode === 'element') { + paintElement(element); + + } else if (element instanceof Mesh && (fill_mode === 'element' || fill_mode === 'face')) { + paintElement(element); + + } else if (fill_mode === 'face' || fill_mode === 'element' || fill_mode === 'selection') { texture.selection.maskCanvas(ctx, offset); ctx.fill(); + + } else if (fill_mode === 'selected_elements') { + for (let element of Outliner.selected) { + paintElement(element); + } + } else { let selection = texture.selection; let image_data = ctx.getImageData(x - offset[0], y - offset[1], 1, 1); @@ -2718,8 +2733,10 @@ BARS.defineActions(function() { category: 'paint', condition: () => Toolbox && Toolbox.selected.id === 'fill_tool', options: { - face: true, + face: {name: true, condition: () => !Format.image_editor}, + selection: {name: true, condition: () => Format.image_editor}, element: {name: true, condition: () => !Format.image_editor}, + selected_elements: {name: true, condition: () => !Format.image_editor}, color_connected: true, color: true, } diff --git a/lang/en.json b/lang/en.json index 33cb85131..fb38e567a 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1126,9 +1126,11 @@ "action.fill_mode": "Fill Mode", "action.fill_mode.face": "Face", + "action.fill_mode.selection": "Selection", "action.fill_mode.color_connected": "Connected Colors", "action.fill_mode.color": "Colors", "action.fill_mode.element": "Element", + "action.fill_mode.selected_elements": "Selected Elements", "action.draw_shape_type": "Shape Type", "action.draw_shape_type.rectangle": "Rectangle", "action.draw_shape_type.rectangle_h": "Rectangle (Hollow)", From ccd436525db3bb949fa9d64e9f2a705606d70b6d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 2 Jun 2024 22:43:29 +0200 Subject: [PATCH 018/153] Texture groups basics --- css/panels.css | 33 +++++- css/setup.css | 1 + index.html | 1 + js/io/project.js | 3 + js/outliner/outliner.js | 3 +- js/texturing/texture_groups.js | 94 +++++++++++++++++ js/texturing/textures.js | 179 ++++++++++++++++++++++----------- js/undo.js | 8 ++ lang/en.json | 3 + 9 files changed, 262 insertions(+), 63 deletions(-) create mode 100644 js/texturing/texture_groups.js diff --git a/css/panels.css b/css/panels.css index 0047436e6..a2dff33c3 100644 --- a/css/panels.css +++ b/css/panels.css @@ -470,8 +470,7 @@ bottom: 4px; width: 4px; margin-left: 10px; - border-left: 2px solid var(--color-text); - opacity: 0.2; + border-left: 2px solid var(--color-guidelines); pointer-events: none; } .drag_hover[order]::before { @@ -709,6 +708,36 @@ border-top-right-radius: 4px; border-bottom-right-radius: 4px; } + + .texture_group { + padding-bottom: 4px; + } + .texture_group_head { + height: 32px; + padding: 4px; + padding-right: 8px; + display: flex; + color: var(--color-subtle_text); + } + .texture_group_head:hover { + color: var(--color-text); + } + .texture_group_head > .icon-open-state { + text-align: center; + width: 21px; + margin-top: 4px; + } + .texture_group_head > label { + flex-grow: 1; + flex-shrink: 1; + overflow: hidden; + margin-left: 5px; + } + .texture_group_list { + margin-left: 14px; + padding-left: 6px; + border-left: 2px solid var(--color-guidelines); + } #texture_animation_playback { display: flex; diff --git a/css/setup.css b/css/setup.css index 2d65847a1..e8c447762 100644 --- a/css/setup.css +++ b/css/setup.css @@ -343,6 +343,7 @@ --color-checkerboard: #1c2026; --color-menu_separator: #b0afba; + --color-guidelines: rgba(136, 150, 157, 0.35); --color-close: #d62e3f; --color-confirm: #90ee90; diff --git a/index.html b/index.html index bb688fde3..6905bd31f 100644 --- a/index.html +++ b/index.html @@ -146,6 +146,7 @@ + diff --git a/js/io/project.js b/js/io/project.js index bbbd834b9..89c136e34 100644 --- a/js/io/project.js +++ b/js/io/project.js @@ -59,6 +59,7 @@ class ModelProject { this.mesh_selection = {}; this.textures = []; this.selected_texture = null; + this.texture_groups = []; this.outliner = []; this.animations = []; this.animation_controllers = []; @@ -207,6 +208,7 @@ class ModelProject { BarItems.edit_mode_uv_overlay.updateEnabledState(); Panels.textures.inside_vue.textures = Texture.all; + Panels.textures.inside_vue.texture_groups = TextureGroup.all; Panels.layers.inside_vue.layers = Texture.selected ? Texture.selected.layers : []; scene.add(this.model_3d); @@ -607,6 +609,7 @@ function selectNoProject() { UVEditor.vue.all_elements = []; Interface.Panels.textures.inside_vue.textures = []; + Interface.Panels.textures.inside_vue.texture_groups = []; Panels.animations.inside_vue.animations = []; Panels.animations.inside_vue.animation_controllers = []; diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index 6ee3f286c..1d5b753a4 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -1433,7 +1433,8 @@ Interface.definePanels(function() { depth: Number }, data() {return { - outliner_colors: settings.outliner_colors + outliner_colors: settings.outliner_colors, + markerColors }}, computed: { indentation() { diff --git a/js/texturing/texture_groups.js b/js/texturing/texture_groups.js new file mode 100644 index 000000000..2942bfa08 --- /dev/null +++ b/js/texturing/texture_groups.js @@ -0,0 +1,94 @@ + +class TextureGroup { + constructor(data, uuid) { + this.uuid = uuid ?? guid(); + this.textures = []; + this.folded = false; + } + extend(data) { + for (let key in TextureGroup.properties) { + TextureGroup.properties[key].merge(this, data) + } + return this; + } + add() { + TextureGroup.all.push(this); + return this; + } + select() { + let textures = this.getTextures(); + if (textures[0]) textures[0].select(); + for (let texture of textures) { + if (!texture.selected) texture.multi_selected = true; + } + return this; + } + remove() { + TextureGroup.all.remove(this); + } + showContextMenu(event) { + Prop.active_panel = 'textures' + this.menu.open(event, this) + } + getTextures() { + let all_textures = Texture.all; + return this.textures.map(uuid => { + return all_textures.find(t => t.uuid == uuid); + }).filter(texture => texture instanceof Texture); + } + getUndoCopy() { + let copy = { + uuid: this.uuid + }; + for (let key in TextureGroup.properties) { + TextureGroup.properties[key].copy(this, copy) + } + return copy; + } + getSaveCopy() { + let copy = { + uuid: this.uuid + }; + for (let key in TextureGroup.properties) { + TextureGroup.properties[key].copy(this, copy) + } + return copy; + } +} +Object.defineProperty(TextureGroup, 'all', { + get() { + return Project.texture_groups || []; + }, + set(arr) { + Project.texture_groups.replace(arr); + } +}) +new Property(TextureGroup, 'string', 'name', {default: tl('data.texture_group')}); +new Property(TextureGroup, 'array', 'textures'); + +TextureGroup.prototype.menu = new Menu([ + new MenuSeparator('manage'), + { + icon: 'fa-leaf', + name: 'menu.texture_group.resolve', + click() { + + } + }, +]) + + +BARS.defineActions(function() { + new Action('create_texture_group', { + icon: 'perm_media', + category: 'textures', + click() { + let texture_group = new TextureGroup(); + if (Texture.selected) { + texture_group.textures.push(Texture.selected.uuid); + texture_group.name = Texture.selected.name.replace(/\.\w+$/, '') + 'Group'; + } + texture_group.add() + } + }) +}); \ No newline at end of file diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 0e806a9fd..3fba70056 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2330,15 +2330,15 @@ BARS.defineActions(function() { icon: 'library_add', category: 'textures', keybind: new Keybind({key: 't', ctrl: true}), - click() { - var start_path; + click(event, context) { + let start_path; if (!isApp) {} else if (Texture.all.length > 0) { - var arr = Texture.all[0].path.split(osfs) + let arr = Texture.all[0].path.split(osfs) arr.splice(-1) start_path = arr.join(osfs) } else if (Project.export_path) { - var arr = Project.export_path.split(osfs) + let arr = Project.export_path.split(osfs) arr.splice(-3) arr.push('textures') start_path = arr.join(osfs) @@ -2351,11 +2351,19 @@ BARS.defineActions(function() { multiple: true, startpath: start_path }, function(results) { - var new_textures = [] - Undo.initEdit({textures: new_textures}) + let new_textures = []; + let texture_group = context instanceof TextureGroup ? context : Texture.selected?.getGroup(); + if (texture_group) { + Undo.initEdit({textures: new_textures, texture_groups: [texture_group]}); + } else { + Undo.initEdit({textures: new_textures}); + } results.forEach(function(f) { - var t = new Texture({name: f.name}).fromFile(f).add(false).fillParticle() - new_textures.push(t) + let t = new Texture({name: f.name}).fromFile(f).add(false).fillParticle(); + new_textures.push(t); + if (texture_group) { + texture_group.textures.push(t.uuid); + } }) Undo.finishEdit('Add texture') }) @@ -2421,6 +2429,71 @@ BARS.defineActions(function() { Interface.definePanels(function() { + let texture_component = Vue.extend({ + props: { + texture: Texture + }, + methods: { + getDescription(texture) { + if (texture.error) { + return texture.getErrorMessage() + } else { + let message = texture.width + ' x ' + texture.height + 'px'; + if (!Format.image_editor) { + let uv_size = texture.width / texture.getUVWidth() * 16; + message += ` (${trimFloatNumber(uv_size, 2)}x)`; + } + if (texture.frameCount > 1) { + message += ` - ${texture.currentFrame+1}/${texture.frameCount}` + } + return message; + } + }, + getTextureIconOffset(texture) { + if (!texture.currentFrame) return; + let val = texture.currentFrame * -48 * (texture.display_height / texture.width); + return `${val}px`; + } + }, + template: ` +
  • +
    + + error_outline + +
    +
    +
    {{ texture.name }}
    +
    {{ getDescription(texture) }}
    +
    + check + +
  • + ` + }) + new Panel('textures', { icon: 'fas.fa-images', growable: true, @@ -2437,6 +2510,7 @@ Interface.definePanels(function() { children: [ 'import_texture', 'create_texture', + 'create_texture_group', 'append_to_template', ] }) @@ -2449,26 +2523,16 @@ Interface.definePanels(function() { name: 'panel-textures', data() { return { textures: Texture.all, + texture_groups: TextureGroup.all, currentFrame: 0, }}, + components: {'Texture': texture_component}, methods: { openMenu(event) { Interface.Panels.textures.menu.show(event) }, - getDescription(texture) { - if (texture.error) { - return texture.getErrorMessage() - } else { - let message = texture.width + ' x ' + texture.height + 'px'; - if (!Format.image_editor) { - let uv_size = texture.width / texture.getUVWidth() * 16; - message += ` (${trimFloatNumber(uv_size, 2)}x)`; - } - if (texture.frameCount > 1) { - message += ` - ${texture.currentFrame+1}/${texture.frameCount}` - } - return message; - } + addTextureToGroup() { + }, slideTimelinePointer(e1) { let scope = this; @@ -2509,53 +2573,48 @@ Interface.definePanels(function() { if (tex.frameCount > count) count = tex.frameCount; }); return count; - }, - getTextureIconOffset(texture) { - if (!texture.currentFrame) return; - let val = texture.currentFrame * -48 * (texture.display_height / texture.width); - return `${val}px`; } }, + computed: { + ungroupedTextures() { + let taken_uuids = new Set(); + for (let texture_group of this.texture_groups) { + texture_group.textures.forEach(uuid => taken_uuids.add(uuid)); + } + return this.textures.filter(tex => !taken_uuids.has(tex.uuid)); + }, + }, template: `
    • -
      - - error_outline - -
      -
      -
      {{ texture.name }}
      -
      {{ getDescription(texture) }}
      +
      + + +
      + library_add +
      - check - +
        + +
    • +
    diff --git a/js/undo.js b/js/undo.js index a8d77fb62..d8626c343 100644 --- a/js/undo.js +++ b/js/undo.js @@ -591,6 +591,14 @@ UndoSystem.save = class { }) } + if (aspects.texture_groups) { + this.texture_groups = {}; + aspects.texture_groups.forEach(tg => { + let copy = tg.getUndoCopy() + this.texture_groups[tg.uuid] = copy; + }) + } + if (aspects.layers) { this.layers = {}; aspects.layers.forEach(layer => { diff --git a/lang/en.json b/lang/en.json index e8168541d..1c9c84ecc 100644 --- a/lang/en.json +++ b/lang/en.json @@ -26,6 +26,7 @@ "data.texture_mesh": "Texture Mesh", "data.group": "Group", "data.texture": "Texture", + "data.texture_group": "Texture Group", "data.layer": "Layer", "data.origin": "Pivot", "data.plugin": "Plugin", @@ -2014,6 +2015,8 @@ "menu.texture.save": "Save", "menu.texture.properties": "Properties...", + "menu.texture_group.resolve": "Resolve", + "menu.preview.background": "Background", "menu.preview.background.load": "Load", "menu.preview.background.clipboard": "Load from Clipboard", From ada1c0ab92d497eb8839f26717d3612062254742 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 2 Jun 2024 23:18:15 +0200 Subject: [PATCH 019/153] Add custom timeline playback range --- css/panels.css | 12 ++++++++++ js/animations/timeline.js | 46 ++++++++++++++++++++++++++++++++++----- js/util/array_util.js | 4 ++++ lang/en.json | 6 +++++ 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/css/panels.css b/css/panels.css index 0047436e6..a497879a1 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1184,6 +1184,18 @@ display: block; margin-left: -2px; } + #timeline_custom_range_indicator { + position: absolute; + z-index: 0; + pointer-events: none; + height: 100%; + top: 0; + opacity: 0.86; + border-radius: 3px; + background-color: var(--color-button); + border-right: 1px solid var(--color-border); + border-left: 1px solid var(--color-border); + } #panel_timeline .keyframe { position: absolute; diff --git a/js/animations/timeline.js b/js/animations/timeline.js index af5c34815..2ecc60ef4 100644 --- a/js/animations/timeline.js +++ b/js/animations/timeline.js @@ -69,6 +69,7 @@ const Timeline = { get second() {return Timeline.time}, get animation_length() {return Animation.selected ? Animation.selected.length : 0;}, playing: false, + custom_range: [0, 0], graph_editor_limit: 10_000, selector: { start: [0, 0], @@ -537,7 +538,7 @@ const Timeline = { BarItems.play_animation.setIcon('pause') Timeline.last_frame_timecode = Date.now(); if (Animation.selected.loop == 'hold' && Timeline.time >= (Animation.selected.length||1e3)) { - Timeline.setTime(0) + Timeline.setTime(Timeline.custom_range[0]) } if (Timeline.time > 0) { Animator.animations.forEach(animation => { @@ -553,6 +554,7 @@ const Timeline = { if (!Animation.selected) return; let max_length = Animation.selected.length || 1e3; + let max_time = Timeline.custom_range[1] || max_length; let new_time; if (Animation.selected && Animation.selected.anim_time_update) { new_time = Animator.MolangParser.parse(Animation.selected.anim_time_update); @@ -562,21 +564,21 @@ const Timeline = { } let time = Timeline.time + (new_time - Timeline.time) * (Timeline.playback_speed/100) if (Animation.selected.loop == 'hold') { - time = Math.clamp(time, 0, Animation.selected.length); + time = Math.clamp(time, Timeline.custom_range[0], max_time); } Timeline.last_frame_timecode = Date.now(); - if (time < max_length) { + if (time < max_time) { Timeline.setTime(time); } else { if (Animation.selected.loop == 'loop' || BarItems.looped_animation_playback.value) { - Timeline.setTime(0) + Timeline.setTime(Timeline.custom_range[0]); } else if (Animation.selected.loop == 'once') { - Timeline.setTime(0) + Timeline.setTime(Timeline.custom_range[0]); Animator.preview() Timeline.pause() } else if (Animation.selected.loop == 'hold') { - Timeline.setTime(max_length); + Timeline.setTime(max_time); Timeline.pause() } } @@ -657,6 +659,9 @@ const Timeline = { 'looped_animation_playback', 'jump_to_timeline_start', 'jump_to_timeline_end', + 'set_timeline_range_start', + 'set_timeline_range_end', + 'disable_timeline_range', new MenuSeparator('copypaste'), 'paste', 'apply_animation_preset', @@ -730,6 +735,7 @@ Interface.definePanels(() => { timecodes: [], animators: Timeline.animators, markers: [], + custom_range: Timeline.custom_range, waveforms: Timeline.waveforms, focus_channel: null, playhead: Timeline.time, @@ -1473,6 +1479,9 @@ Interface.definePanels(() => {
    +
    {{ t.text }}
    @@ -1852,6 +1861,31 @@ BARS.defineActions(function() { } } }) + new Action('set_timeline_range_start', { + icon: 'logout', + category: 'animation', + condition: {modes: ['animate']}, + click() { + Timeline.custom_range.set(0, Timeline.time); + } + }) + new Action('set_timeline_range_end', { + icon: 'login', + category: 'animation', + condition: {modes: ['animate']}, + click() { + Timeline.custom_range.set(1, Timeline.time); + } + }) + new Action('disable_timeline_range', { + icon: 'code_off', + category: 'animation', + condition: {modes: ['animate']}, + condition: () => Timeline.custom_range[1], + click() { + Timeline.custom_range.replace([0, 0]); + } + }) new Action('bring_up_all_animations', { icon: 'fa-sort-amount-up', diff --git a/js/util/array_util.js b/js/util/array_util.js index 00c170e92..80eb3200d 100644 --- a/js/util/array_util.js +++ b/js/util/array_util.js @@ -43,6 +43,10 @@ Array.prototype.purge = function() { this.splice(0, this.length); return this; } +Array.prototype.set = function(index, value) { + this.splice(index, 1, value); + return this; +} Array.prototype.replace = function(items) { this.splice(0, this.length, ...items); return this; diff --git a/lang/en.json b/lang/en.json index e8168541d..f488ecb10 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1831,6 +1831,12 @@ "action.jump_to_timeline_end": "Jump to Animation End", "action.timeline_frame_back": "Jump 1 Frame Back", "action.timeline_frame_forth": "Jump 1 Frame Forth", + "action.set_timeline_range_start": "Set Timeline Range Start", + "action.set_timeline_range_start.desc": "Set the start point for a custom playback range in the animation timeline", + "action.set_timeline_range_end": "Set Timeline Range End", + "action.set_timeline_range_end.desc": "Set the start point for a custom playback range in the animation timeline", + "action.disable_timeline_range": "Disable Timeline Range", + "action.disable_timeline_range.desc": "Disable the custom playback range in the animation timeline", "action.bring_up_all_animations": "Bring Up All Animators", "action.bring_up_all_animations.desc": "Brings all modified animators into the timeline", "action.fold_all_animations": "Fold All Animators", From f250392f61e8db3659b4d51a3f63f36ea4e84fca Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 3 Jun 2024 23:50:42 +0200 Subject: [PATCH 020/153] WIP animation merging --- js/animations/animation.js | 120 +++++++++++++++++++++++++++++++++++++ js/interface/menu_bar.js | 1 + 2 files changed, 121 insertions(+) diff --git a/js/animations/animation.js b/js/animations/animation.js index 4eabbf23f..19ae3e5c4 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -1265,6 +1265,126 @@ BARS.defineActions(function() { }).show(); } }) + new Action('merge_animation', { + icon: 'merge_type', + category: 'animation', + condition: () => Modes.animate && Animation.all.length > 1, + click: async function() { + let source_animation = Animation.selected; + + let options = await new Promise(resolve => { + let animation_options = {}; + for (let animation of animations) { + if (animation == source_animation) continue; + animation_options[animation.uuid] = animation.name; + } + new Dialog('merge_animation', { + name: 'action.merge_animation', + form: { + animation: {label: 'data.animation', type: 'select', options: animation_options}, + }, + onConfirm(result) { + resolve(result); + }, + onCancel() { + resolve(false); + } + }).show(); + }) + if (!options) return; + + let target_animation = Animation.all.find(anim => anim.uuid == options.animation); + let animations = [source_animation, target_animation]; + Undo.initEdit({animations}); + + + for (let uuid in source_animation.animators) { + let source_animator = source_animation.animators[uuid]; + let target_animator; + if (source_animator instanceof BoneAnimator) { + let node = source_animator.getElement ? source_animator.getElement() : source_animator.getGroup(); + target_animator = target_animation.getBoneAnimator(node); + } else if (source_animator instanceof EffectAnimator) { + if (!target_animation.animators.effects) { + target_animation.animators.effects = new EffectAnimator(target_animation); + } + target_animator = target_animation.animators.effects; + } + for (let channel in source_animator.channels) { + let source_kfs = source_animator[channel]; + let target_kfs = target_animator[channel]; + let timecodes = {}; + for (let kf of source_kfs) { + let key = Math.roundTo(kf.time, 2); + if (!timecodes[key]) timecodes[key] = {}; + timecodes[key].source_kf = kf; + timecodes[key].time = kf.time; + } + for (let kf of target_kfs) { + let key = Math.roundTo(kf.time, 2); + if (!timecodes[key]) timecodes[key] = {}; + timecodes[key].target_kf = kf; + timecodes[key].time = kf.time; + } + function mergeValues(a, b) { + if (!a) return b; + if (!b) return a; + if (typeof a == 'number' && typeof b == 'number') { + return a + b; + } + return a.toString() + ' + ' + b.toString(); + } + let keys = Object.keys(timecodes).sort((a, b) => a.time - b.time); + for (let key of keys) { + let {source_kf, target_kf, time} = timecodes[key]; + Timeline.time = time; + if (kf.transform) { + if (source_kf && target_kf) { + for (let axis of 'xyz') { + let source_val = source_kf.get(axis); + let target_val = target_kf.get(axis); + target_kf.set(axis, mergeValues(target_val, source_val)); + } + } else if (source_kf) { + //let interpolated = target_animator.interpolate(channel, true); + // Todo: At time of creatio, this might already be affected by modified keyframes around it. Interpolate values before! + let target_kf = target_animator.createKeyframe(null, time, channel, false, false); + let i = 0; + for (let axis of 'xyz') { + let source_val = source_kf.get(axis); + let target_val = target_kf.get(axis); + target_kf.set(axis, mergeValues(target_val, source_val)); + i++; + } + + } else if (target_kf) { + let interpolated = this.interpolate(channel, true); + let i = 0; + for (let axis of 'xyz') { + let source_val = source_kf.get(axis); + let target_val = target_kf.get(axis); + target_kf.set(axis, mergeValues(target_val, source_val)); + i++; + } + } + } else if (source_animator instanceof EffectAnimator) { + if (source_kf && target_kf) { + + } else if (source_kf) { + + } else if (target_kf) { + } + } + } + } + } + animations.remove(source_animation); + source_animation.remove(false); + target_animation.select(); + + Undo.finishEdit('Merge animations'); + } + }) let optimize_animation_mode = 'selected_animation'; new Action('optimize_animation', { icon: 'settings_slow_motion', diff --git a/js/interface/menu_bar.js b/js/interface/menu_bar.js index 7d1ce409e..6035b9573 100644 --- a/js/interface/menu_bar.js +++ b/js/interface/menu_bar.js @@ -351,6 +351,7 @@ const MenuBar = { 'optimize_animation', 'bake_ik_animation', 'bake_animation_into_model', + 'merge_animation', new MenuSeparator('file'), 'load_animation_file', 'save_all_animations', From 26c840b0eca44b97a1fda50ce580d4f5afa1fdec Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 5 Jun 2024 23:20:10 +0200 Subject: [PATCH 021/153] Make outliner indentation customizable via theme --- css/panels.css | 1 + js/outliner/outliner.js | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/css/panels.css b/css/panels.css index a497879a1..d459209ec 100644 --- a/css/panels.css +++ b/css/panels.css @@ -402,6 +402,7 @@ #cubes_list { padding-top: 1px; overflow-y: scroll; + --indentation: 16px; } #cubes_list > li:last-child { margin-bottom: 180px; diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index 6ee3f286c..e6c0efca2 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -1395,7 +1395,7 @@ Interface.definePanels(function() { `
    ' + '' + - `
    ` + + `
    ` + '' + '', props: { @@ -1437,7 +1437,7 @@ Interface.definePanels(function() { }}, computed: { indentation() { - return limitNumber(this.depth, 0, (this.width-100) / 16) * 16; + return limitNumber(this.depth, 0, (this.width-100) / 16); }, visible_children() { let filtered = this.node.children; From c2d2a40c0e3d34491ffe64824d6f5daf54d8a828 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 6 Jun 2024 00:58:33 +0200 Subject: [PATCH 022/153] Update texture draggable system to support groups --- js/interface/interface.js | 2 - js/io/formats/bedrock.js | 1 - js/io/formats/bedrock_old.js | 1 - js/io/formats/skin.js | 1 - js/io/project.js | 2 - js/misc.js | 4 - js/texturing/texture_groups.js | 11 +- js/texturing/textures.js | 383 +++++++++++++++++++++------------ 8 files changed, 248 insertions(+), 157 deletions(-) diff --git a/js/interface/interface.js b/js/interface/interface.js index d01cdbea2..5fe8aedc0 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -538,8 +538,6 @@ function setupInterface() { reference.select(); }); - document.getElementById('texture_list').addEventListener('click', e => unselectTextures()); - $(Panels.timeline.node).mousedown((event) => { setActivePanel('timeline'); }) diff --git a/js/io/formats/bedrock.js b/js/io/formats/bedrock.js index e84a74630..7659b0ef5 100644 --- a/js/io/formats/bedrock.js +++ b/js/io/formats/bedrock.js @@ -730,7 +730,6 @@ function calculateVisibleBox() { codec.dispatchEvent('parsed', {model: data.object}); - loadTextureDraggable() Canvas.updateAllBones() setProjectTitle() if (isApp && Project.geometry_name) { diff --git a/js/io/formats/bedrock_old.js b/js/io/formats/bedrock_old.js index 819a4dbe5..5118a33cc 100644 --- a/js/io/formats/bedrock_old.js +++ b/js/io/formats/bedrock_old.js @@ -114,7 +114,6 @@ function parseGeometry(data) { codec.dispatchEvent('parsed', {model: data.object}); - loadTextureDraggable() Canvas.updateAllBones() setProjectTitle() if (isApp && Project.geometry_name && Project.BedrockEntityManager) { diff --git a/js/io/formats/skin.js b/js/io/formats/skin.js index fad4fc837..5a9319563 100644 --- a/js/io/formats/skin.js +++ b/js/io/formats/skin.js @@ -149,7 +149,6 @@ const codec = new Codec('skin_model', { if (data.camera_angle) { main_preview.loadAnglePreset(DefaultCameraPresets.find(p => p.id == data.camera_angle)) } - loadTextureDraggable() Canvas.updateAllBones() Canvas.updateVisibility() setProjectTitle() diff --git a/js/io/project.js b/js/io/project.js index 89c136e34..c75ec9b12 100644 --- a/js/io/project.js +++ b/js/io/project.js @@ -281,8 +281,6 @@ class ModelProject { updateProjectResolution(); Validator.validate(); Vue.nextTick(() => { - loadTextureDraggable(); - if (this.on_next_upen instanceof Array) { this.on_next_upen.forEach(callback => callback()); delete this.on_next_upen; diff --git a/js/misc.js b/js/misc.js index 902d2b297..96523b92e 100644 --- a/js/misc.js +++ b/js/misc.js @@ -395,10 +395,6 @@ const TickUpdates = { delete TickUpdates.UVEditor; UVEditor.loadData() } - if (TickUpdates.texture_list) { - delete TickUpdates.texture_list; - loadTextureDraggable(); - } if (TickUpdates.keyframe_selection) { delete TickUpdates.keyframe_selection; Vue.nextTick(updateKeyframeSelection) diff --git a/js/texturing/texture_groups.js b/js/texturing/texture_groups.js index 2942bfa08..68f225b83 100644 --- a/js/texturing/texture_groups.js +++ b/js/texturing/texture_groups.js @@ -2,6 +2,7 @@ class TextureGroup { constructor(data, uuid) { this.uuid = uuid ?? guid(); + // todo: save texture group association inside texture instead of here this.textures = []; this.folded = false; } @@ -84,11 +85,13 @@ BARS.defineActions(function() { category: 'textures', click() { let texture_group = new TextureGroup(); - if (Texture.selected) { - texture_group.textures.push(Texture.selected.uuid); - texture_group.name = Texture.selected.name.replace(/\.\w+$/, '') + 'Group'; + let textures_to_add = Texture.all.filter(tex => tex.selected || tex.multi_selected); + if (textures_to_add.length) { + texture_group.textures.push(...textures_to_add); + let first = Texture.selected || textures_to_add[0]; + texture_group.name = first.name.replace(/\.\w+$/, '') + ' Group'; } - texture_group.add() + texture_group.add(); } }) }); \ No newline at end of file diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 3fba70056..9930ab7e4 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2,9 +2,9 @@ //Textures class Texture { constructor(data, uuid) { - var scope = this; + let scope = this; //Info - for (var key in Texture.properties) { + for (let key in Texture.properties) { Texture.properties[key].reset(this); } //meta @@ -342,6 +342,9 @@ class Texture { case 3: return tl('texture.error.parent'); break; } } + getGroup() { + return TextureGroup.all.find(group => group.textures.includes(this.uuid)); + } getUndoCopy(bitmap) { var copy = {}; for (var key in Texture.properties) { @@ -935,7 +938,6 @@ class Texture { Project.textures.push(this) } Blockbench.dispatchEvent( 'add_texture', {texture: this}) - loadTextureDraggable() if ((Format.single_texture || Format.single_texture_default) && Cube.all.length) { Canvas.updateAllFaces() @@ -2094,142 +2096,7 @@ function saveTextures(lazy = false) { }) } function loadTextureDraggable() { - Vue.nextTick(function() { - setTimeout(function() { - $('li.texture:not(.ui-draggable)').draggable({ - revertDuration: 0, - cursorAt: { left: 2, top: -5 }, - revert: 'invalid', - appendTo: 'body', - zIndex: 19, - distance: 12, - delay: 120, - helper: function(e) { - var t = $(e.target) - if (!t.hasClass('texture')) t = t.parent() - if (!t.hasClass('texture')) t = t.parent() - return t.find('.texture_icon_wrapper').clone().addClass('texture_drag_helper').attr('texid', t.attr('texid')) - }, - drag: function(event, ui) { - - $('.outliner_node[order]').attr('order', null); - $('.drag_hover').removeClass('drag_hover'); - $('.texture[order]').attr('order', null) - if ($('#cubes_list li.outliner_node:hover').length) { - var tar = $('#cubes_list li.outliner_node:hover').last() - tar.addClass('drag_hover').attr('order', '0'); - /* - var element = Outliner.root.findRecursive('uuid', tar.attr('id')) - if (element) { - tar.attr('order', '0') - }*/ - } else if ($('#texture_list li:hover').length) { - let node = $('#texture_list > .texture:hover') - if (node.length) { - var target_tex = Texture.all.findInArray('uuid', node.attr('texid')); - index = Texture.all.indexOf(target_tex); - let offset = event.clientY - node[0].offsetTop; - if (offset > 24) { - node.attr('order', '1') - } else { - node.attr('order', '-1') - } - } - } - }, - stop: function(event, ui) { - setTimeout(function() { - $('.texture[order]').attr('order', null); - $('.outliner_node[order]').attr('order', null); - var tex = Texture.all.findInArray('uuid', ui.helper.attr('texid')); - if (!tex) return; - if ($('.preview:hover').length > 0) { - var data = Canvas.raycast(event) - if (data.element && data.face) { - var elements = data.element.selected ? UVEditor.getMappableElements() : [data.element]; - - if (Format.per_group_texture) { - elements = []; - let groups = Group.selected ? [Group.selected] : []; - Outliner.selected.forEach(el => { - if (el.faces && el.parent instanceof Group) groups.safePush(el.parent); - }); - Undo.initEdit({outliner: true}); - groups.forEach(group => { - group.texture = ''; - group.forEachChild(child => { - if (child.preview_controller?.updateFaces) child.preview_controller.updateFaces(child); - }) - }) - } else { - Undo.initEdit({elements}) - elements.forEach(element => { - element.applyTexture(tex, event.shiftKey || Pressing.overrides.shift || [data.face]) - }) - } - Undo.finishEdit('Apply texture') - } - } else if ($('#texture_list:hover').length > 0) { - let index = Texture.all.length-1 - let node = $('#texture_list > .texture:hover') - if (node.length) { - var target_tex = Texture.all.findInArray('uuid', node.attr('texid')); - index = Texture.all.indexOf(target_tex); - let own_index = Texture.all.indexOf(tex) - if (own_index == index) return; - if (own_index < index) index--; - if (event.clientY - node[0].offsetTop > 24) index++; - } - Undo.initEdit({texture_order: true}) - Texture.all.remove(tex) - Texture.all.splice(index, 0, tex) - Canvas.updateLayeredTextures() - Undo.finishEdit('Reorder textures') - } else if ($('#cubes_list:hover').length) { - - let target_node = $('#cubes_list li.outliner_node.drag_hover').last().get(0); - $('.drag_hover').removeClass('drag_hover'); - if (!target_node) return; - let uuid = target_node.id; - let target = OutlinerNode.uuids[uuid]; - - let array = []; - if (target.type === 'group') { - target.forEachChild((element) => { - array.push(element); - }) - } else { - array = selected.includes(target) ? selected.slice() : [target]; - } - array = array.filter(element => element.applyTexture); - - if (Format.per_group_texture) { - let group = target.type === 'group' ? target : null; - if (!group) group = target.parent; - - array = []; - Undo.initEdit({group}); - group.texture = tex.uuid; - group.forEachChild(child => { - if (child.preview_controller?.updateFaces) child.preview_controller.updateFaces(child); - }) - } else { - Undo.initEdit({elements: array, uv_only: true}) - array.forEach(element => { - element.applyTexture(tex, true); - }); - } - Undo.finishEdit('Apply texture'); - UVEditor.loadData(); - - } else if ($('#uv_viewport:hover').length) { - UVEditor.applyTexture(tex); - } - }, 10) - } - }) - }, 42) - }) + console.warn('loadTextureDraggable no longer exists'); } function unselectTextures() { Texture.all.forEach(function(s) { @@ -2453,6 +2320,233 @@ Interface.definePanels(function() { if (!texture.currentFrame) return; let val = texture.currentFrame * -48 * (texture.display_height / texture.width); return `${val}px`; + }, + dragTexture(e1) { + if (e1.button == 1) return; + if (getFocusedTextInput()) return; + convertTouchEvent(e1); + + let texture = this.texture; + let active = false; + let helper; + let timeout; + let last_event = e1; + let vue_scope = this; + + // scrolling + let list = document.getElementById('texture_list'); + let list_offset = $(list).offset(); + let scrollInterval = function() { + if (!active) return; + if (mouse_pos.y < list_offset.top) { + list.scrollTop += (mouse_pos.y - list_offset.top) / 7 - 3; + } else if (mouse_pos.y > list_offset.top + list.clientHeight) { + list.scrollTop += (mouse_pos.y - (list_offset.top + list.clientHeight)) / 6 + 3; + } + } + let scrollIntervalID; + + function move(e2) { + convertTouchEvent(e2); + let offset = [ + e2.clientX - e1.clientX, + e2.clientY - e1.clientY, + ] + if (!active) { + let distance = Math.sqrt(Math.pow(offset[0], 2) + Math.pow(offset[1], 2)) + if (Blockbench.isTouch) { + if (distance > 20 && timeout) { + clearTimeout(timeout); + timeout = null; + } else { + document.getElementById('texture_list').scrollTop += last_event.clientY - e2.clientY; + } + } else if (distance > 6) { + active = true; + } + } else { + if (e2) e2.preventDefault(); + + if (open_menu) open_menu.hide(); + + if (!helper) { + + ///return t.find('.texture_icon_wrapper').clone().addClass('texture_drag_helper').attr('texid', t.attr('texid')) + helper = vue_scope.$el.cloneNode(); + helper.classList.add('texture_drag_helper'); + helper.setAttribute('texid', texture.uuid); + + document.body.append(helper); + + scrollIntervalID = setInterval(scrollInterval, 1000/60) + + Blockbench.addFlag('dragging_textures'); + } + helper.style.left = `${e2.clientX}px`; + helper.style.top = `${e2.clientY}px`; + + // drag + $('.outliner_node[order]').attr('order', null); + $('.drag_hover').removeClass('drag_hover'); + $('.texture[order]').attr('order', null) + + + //let target = document.elementFromPoint(e2.clientX, e2.clientY); + if ($('#cubes_list li.outliner_node:hover').length) { + let tar = $('#cubes_list li.outliner_node:hover').last(); + tar.addClass('drag_hover').attr('order', '0'); + + } else if ($('#texture_list li:hover').length) { + let node = document.querySelector('#texture_list > .texture:hover'); + if (node) { + //let target_tex = Texture.all.findInArray('uuid', node.getAttribute('texid')); + let offset = e2.clientY - $(node).offset().top; + node.setAttribute('order', offset > 24 ? '1' : '-1'); + } + } + + /*let target = document.elementFromPoint(e2.clientX, e2.clientY); + [drop_target, drop_target_node] = eventTargetToNode(target); + if (drop_target) { + var location = e2.clientY - $(drop_target_node).offset().top; + order = getOrder(location, drop_target) + drop_target_node.setAttribute('order', order) + drop_target_node.classList.add('drag_hover'); + let parent_node = drop_target_node.parentElement.parentElement; + if ((drop_target instanceof OutlinerElement || order) && parent_node && parent_node.classList.contains('outliner_node')) { + parent_node.classList.add('drag_hover_level'); + } + + } else if ($('#texture_list').is(':hover')) { + $('#texture_list').addClass('drag_hover'); + }*/ + } + last_event = e2; + } + async function off(e2) { + if (helper) helper.remove(); + clearInterval(scrollIntervalID); + removeEventListeners(document, 'mousemove touchmove', move); + removeEventListeners(document, 'mouseup touchend', off); + e2.stopPropagation(); + $('.texture[order]').attr('order', null); + $('.outliner_node[order]').attr('order', null); + if (Blockbench.isTouch) clearTimeout(timeout); + console.log('off') + + if (!active || Menu.open) return; + + await new Promise(r => setTimeout(r, 10)); + + Blockbench.removeFlag('dragging_textures'); + + if ($('.preview:hover').length > 0) { + var data = Canvas.raycast(e2) + if (data.element && data.face) { + var elements = data.element.selected ? UVEditor.getMappableElements() : [data.element]; + + if (Format.per_group_texture) { + elements = []; + let groups = Group.selected ? [Group.selected] : []; + Outliner.selected.forEach(el => { + if (el.faces && el.parent instanceof Group) groups.safePush(el.parent); + }); + Undo.initEdit({outliner: true}); + groups.forEach(group => { + group.texture = texture.uuid; + group.forEachChild(child => { + if (child.preview_controller?.updateFaces) child.preview_controller.updateFaces(child); + }) + }) + } else { + Undo.initEdit({elements}); + elements.forEach(element => { + element.applyTexture(texture, e2.shiftKey || Pressing.overrides.shift || [data.face]) + }) + } + Undo.finishEdit('Apply texture') + } + } else if ($('#texture_list:hover').length > 0) { + let index = Texture.all.length-1; + let node = $('#texture_list > .texture:hover'); + let new_group = ''; + if (node.length) { + let target_tex = Texture.all.findInArray('uuid', node.attr('texid')); + index = Texture.all.indexOf(target_tex); + let own_index = Texture.all.indexOf(texture) + if (own_index == index) return; + let offset = e2.clientY - $(node).offset().top; + if (own_index < index) index--; + if (offset > 24) index++; + new_group = target_tex.group; + } + Undo.initEdit({texture_order: true, textures: texture.group != new_group ? [texture] : null}); + Texture.all.remove(texture); + Texture.all.splice(index, 0, texture); + texture.group = new_group; + Canvas.updateLayeredTextures(); + Undo.finishEdit('Reorder textures'); + + } else if ($('#cubes_list:hover').length) { + + let target_node = $('#cubes_list li.outliner_node.drag_hover').last().get(0); + $('.drag_hover').removeClass('drag_hover'); + if (!target_node) return; + let uuid = target_node.id; + let target = OutlinerNode.uuids[uuid]; + + let array = []; + if (target.type === 'group') { + target.forEachChild((element) => { + array.push(element); + }) + } else { + array = selected.includes(target) ? selected.slice() : [target]; + } + array = array.filter(element => element.applyTexture); + + if (Format.per_group_texture) { + let group = target.type === 'group' ? target : null; + if (!group) group = target.parent; + + array = []; + Undo.initEdit({group}); + group.texture = texture.uuid; + group.forEachChild(child => { + if (child.preview_controller?.updateFaces) child.preview_controller.updateFaces(child); + }) + } else { + Undo.initEdit({elements: array, uv_only: true}) + array.forEach(element => { + element.applyTexture(texture, true); + }); + } + Undo.finishEdit('Apply texture'); + UVEditor.loadData(); + + } else if ($('#uv_viewport:hover').length) { + UVEditor.applyTexture(texture); + } + + + /*convertTouchEvent(e2); + let target = document.elementFromPoint(e2.clientX, e2.clientY); + [drop_target] = eventTargetToNode(target); + if (drop_target) { + moveOutlinerSelectionTo(item, drop_target, e2, order); + } else if ($('#texture_list').is(':hover')) { + moveOutlinerSelectionTo(item, undefined, e2);*/ + } + + if (Blockbench.isTouch) { + timeout = setTimeout(() => { + active = true; + move(e1); + }, 320) + } + + addEventListeners(document, 'mousemove touchmove', move, {passive: false}); + addEventListeners(document, 'mouseup touchend', off, {passive: false}); } }, template: ` @@ -2460,8 +2554,9 @@ Interface.definePanels(function() { v-bind:class="{ selected: texture.selected, multi_selected: texture.multi_selected, particle: texture.particle, use_as_default: texture.use_as_default}" v-bind:texid="texture.uuid" class="texture" - v-on:click.stop="texture.select($event)" - v-on:dblclick="texture.openMenu($event)" + @click.stop="texture.select($event)" + @dblclick="texture.openMenu($event)" + @mousedown.stop="dragTexture($event)" @touchstart.stop="dragTexture($event)" @contextmenu.prevent.stop="texture.showContextMenu($event)" >
    @@ -2573,6 +2668,10 @@ Interface.definePanels(function() { if (tex.frameCount > count) count = tex.frameCount; }); return count; + }, + unselect(event) { + if (Blockbench.hasFlag('dragging_textures')) return; + unselectTextures(); } }, computed: { @@ -2586,7 +2685,7 @@ Interface.definePanels(function() { }, template: `
    -
      +
      • Date: Thu, 6 Jun 2024 23:36:15 +0200 Subject: [PATCH 023/153] Texture group implementation --- css/general.css | 4 ++- css/panels.css | 31 ++++++++++++++-- js/io/formats/bbmodel.js | 15 ++++++++ js/texturing/texture_groups.js | 38 +++++++++++++------- js/texturing/textures.js | 64 ++++++++++++++++++++-------------- js/undo.js | 20 +++++++++++ 6 files changed, 129 insertions(+), 43 deletions(-) diff --git a/css/general.css b/css/general.css index cd0fca935..e53965403 100644 --- a/css/general.css +++ b/css/general.css @@ -47,8 +47,10 @@ font-weight: normal; display: inline-block; } - .code { + code, .code { font-family: var(--font-code); + } + .code { font-size: 16px; } .small_text { diff --git a/css/panels.css b/css/panels.css index a2dff33c3..4a006ae26 100644 --- a/css/panels.css +++ b/css/panels.css @@ -717,6 +717,7 @@ padding: 4px; padding-right: 8px; display: flex; + gap: 5px; color: var(--color-subtle_text); } .texture_group_head:hover { @@ -726,12 +727,38 @@ text-align: center; width: 21px; margin-top: 4px; + flex-shrink: 0; } .texture_group_head > label { - flex-grow: 1; flex-shrink: 1; overflow: hidden; - margin-left: 5px; + white-space: nowrap; + } + .texture_group_head.folded > label { + max-width: calc(60% - 50px); + min-width: 110px; + } + .texture_group_head > .in_list_button { + margin-left: auto; + } + .texture_group_mini_icon_list { + display: flex; + gap: 2px; + margin-right: auto; + margin-left: 4px; + max-width: 36%; + overflow: hidden; + } + .texture_group_mini_icon_list > .texture_mini_icon { + width: 24px; + height: 24px; + border-radius: 50%; + flex-shrink: 0; + overflow: hidden; + background-color: var(--color-ui); + flex-shrink: 0; + margin-right: -8px; + border: 1px solid var(--color-border); } .texture_group_list { margin-left: 14px; diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index a3e03e686..45e558b74 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -189,6 +189,11 @@ var codec = new Codec('project', { if (options.absolute_paths == false) delete t.path; model.textures.push(t); }) + for (let texture_group of TextureGroup.all) { + if (!model.texture_groups) model.texture_groups = []; + let copy = texture_group.getSaveCopy(); + model.texture_groups.push(copy); + } if (Animation.all.length) { model.animations = []; @@ -328,6 +333,11 @@ var codec = new Codec('project', { Project.texture_height = model.resolution.height; } + if (model.texture_groups) { + model.texture_groups.forEach(tex_group => { + new TextureGroup(tex_group, tex_group.uuid).add(false); + }) + } if (model.textures) { model.textures.forEach(tex => { var tex_copy = new Texture(tex, tex.uuid).add(false); @@ -533,6 +543,11 @@ var codec = new Codec('project', { } } + if (model.texture_groups) { + model.texture_groups.forEach(tex_group => { + new TextureGroup(tex_group, tex_group.uuid).add(false); + }) + } if (model.textures && (!Format.single_texture || Texture.all.length == 0)) { new_textures.replace(model.textures.map(loadTexture)) } diff --git a/js/texturing/texture_groups.js b/js/texturing/texture_groups.js index 68f225b83..dd0dd7505 100644 --- a/js/texturing/texture_groups.js +++ b/js/texturing/texture_groups.js @@ -2,9 +2,8 @@ class TextureGroup { constructor(data, uuid) { this.uuid = uuid ?? guid(); - // todo: save texture group association inside texture instead of here - this.textures = []; this.folded = false; + if (data) this.extend(data); } extend(data) { for (let key in TextureGroup.properties) { @@ -28,14 +27,11 @@ class TextureGroup { TextureGroup.all.remove(this); } showContextMenu(event) { - Prop.active_panel = 'textures' - this.menu.open(event, this) + Prop.active_panel = 'textures'; + this.menu.open(event, this); } getTextures() { - let all_textures = Texture.all; - return this.textures.map(uuid => { - return all_textures.find(t => t.uuid == uuid); - }).filter(texture => texture instanceof Texture); + return Texture.all.filter(texture => texture.group == this.uuid); } getUndoCopy() { let copy = { @@ -65,18 +61,30 @@ Object.defineProperty(TextureGroup, 'all', { } }) new Property(TextureGroup, 'string', 'name', {default: tl('data.texture_group')}); -new Property(TextureGroup, 'array', 'textures'); TextureGroup.prototype.menu = new Menu([ new MenuSeparator('manage'), { icon: 'fa-leaf', name: 'menu.texture_group.resolve', - click() { - + click(texture_group) { + let textures = texture_group.getTextures(); + Undo.initEdit({textures, texture_groups: [texture_group]}); + texture_group.remove(); + textures.forEach(texture => { + texture.group = ''; + }) + Undo.finishEdit('Resolve texture group', {textures, texture_groups: []}); } }, ]) +/** +ToDo: +- Drag and dropping textures into empty groups +- Auto-generate groups +- Rearranging groups +- Grid view? + */ BARS.defineActions(function() { @@ -86,12 +94,16 @@ BARS.defineActions(function() { click() { let texture_group = new TextureGroup(); let textures_to_add = Texture.all.filter(tex => tex.selected || tex.multi_selected); + Undo.initEdit({texture_groups: [], textures: textures_to_add}); if (textures_to_add.length) { - texture_group.textures.push(...textures_to_add); + for (let texture of textures_to_add) { + texture.group = texture_group.uuid; + } let first = Texture.selected || textures_to_add[0]; texture_group.name = first.name.replace(/\.\w+$/, '') + ' Group'; } - texture_group.add(); + texture_group.add(false); + Undo.finishEdit('Add texture group', {texture_groups: [texture_group], textures: textures_to_add}); } }) }); \ No newline at end of file diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 9930ab7e4..a5d0fec02 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -343,7 +343,13 @@ class Texture { } } getGroup() { - return TextureGroup.all.find(group => group.textures.includes(this.uuid)); + if (!this.group) return; + let group = TextureGroup.all.find(group => group.uuid == this.group); + if (group) { + return group; + } else { + this.group = ''; + } } getUndoCopy(bitmap) { var copy = {}; @@ -903,6 +909,10 @@ class Texture { if (this.layers_enabled && !this.selected_layer && this.layers[0]) { this.layers[0].select(); } + if (this.group) { + let group = this.getGroup(); + if (group) group.folded = false; + } this.scrollTo(); if (this.render_mode == 'layered') { Canvas.updatePixelGrid() @@ -1402,7 +1412,7 @@ class Texture { return this; } scrollTo() { - var el = $(`#texture_list > li[texid=${this.uuid}]`) + var el = $(`#texture_list li.texture[texid=${this.uuid}]`) if (el.length === 0 || Texture.all.length < 2) return; var outliner_pos = $('#texture_list').offset().top @@ -2054,6 +2064,7 @@ class Texture { new Property(Texture, 'string', 'folder') new Property(Texture, 'string', 'namespace') new Property(Texture, 'string', 'id') + new Property(Texture, 'string', 'group') new Property(Texture, 'number', 'width') new Property(Texture, 'number', 'height') new Property(Texture, 'number', 'uv_width') @@ -2220,16 +2231,12 @@ BARS.defineActions(function() { }, function(results) { let new_textures = []; let texture_group = context instanceof TextureGroup ? context : Texture.selected?.getGroup(); - if (texture_group) { - Undo.initEdit({textures: new_textures, texture_groups: [texture_group]}); - } else { - Undo.initEdit({textures: new_textures}); - } + Undo.initEdit({textures: new_textures}); results.forEach(function(f) { let t = new Texture({name: f.name}).fromFile(f).add(false).fillParticle(); new_textures.push(t); if (texture_group) { - texture_group.textures.push(t.uuid); + t.group = texture_group.uuid; } }) Undo.finishEdit('Add texture') @@ -2397,7 +2404,7 @@ Interface.definePanels(function() { tar.addClass('drag_hover').attr('order', '0'); } else if ($('#texture_list li:hover').length) { - let node = document.querySelector('#texture_list > .texture:hover'); + let node = document.querySelector('#texture_list li.texture:hover'); if (node) { //let target_tex = Texture.all.findInArray('uuid', node.getAttribute('texid')); let offset = e2.clientY - $(node).offset().top; @@ -2432,7 +2439,6 @@ Interface.definePanels(function() { $('.texture[order]').attr('order', null); $('.outliner_node[order]').attr('order', null); if (Blockbench.isTouch) clearTimeout(timeout); - console.log('off') if (!active || Menu.open) return; @@ -2468,7 +2474,7 @@ Interface.definePanels(function() { } } else if ($('#texture_list:hover').length > 0) { let index = Texture.all.length-1; - let node = $('#texture_list > .texture:hover'); + let node = $('#texture_list li.texture:hover'); let new_group = ''; if (node.length) { let target_tex = Texture.all.findInArray('uuid', node.attr('texid')); @@ -2580,7 +2586,7 @@ Interface.definePanels(function() { > {{ texture.visible ? 'visibility' : 'visibility_off' }} - + @@ -2626,8 +2632,8 @@ Interface.definePanels(function() { openMenu(event) { Interface.Panels.textures.menu.show(event) }, - addTextureToGroup() { - + addTextureToGroup(texture_group) { + BarItems.import_texture.click(0, texture_group); }, slideTimelinePointer(e1) { let scope = this; @@ -2672,16 +2678,10 @@ Interface.definePanels(function() { unselect(event) { if (Blockbench.hasFlag('dragging_textures')) return; unselectTextures(); - } - }, - computed: { - ungroupedTextures() { - let taken_uuids = new Set(); - for (let texture_group of this.texture_groups) { - texture_group.textures.forEach(uuid => taken_uuids.add(uuid)); - } - return this.textures.filter(tex => !taken_uuids.has(tex.uuid)); }, + getUngroupedTextures() { + return this.textures.filter(tex => !(tex.group && TextureGroup.all.find(g => g.uuid == tex.group))); + } }, template: `
        @@ -2690,15 +2690,25 @@ Interface.definePanels(function() { v-for="texture_group in texture_groups" :key="texture_group.uuid" class="texture_group" > -
        +
        -
        - library_add +
          +
        • + +
        • +
        +
        + add
          @@ -2710,7 +2720,7 @@ Interface.definePanels(function() {
      • diff --git a/js/undo.js b/js/undo.js index d8626c343..ea020debc 100644 --- a/js/undo.js +++ b/js/undo.js @@ -323,6 +323,26 @@ class UndoSystem { } } + if (save.texture_groups) { + for (let uuid in save.texture_groups) { + if (reference.texture_groups[uuid]) { + let group = TextureGroup.all.find(tg => tg.uuid == uuid); + if (group) { + group.extend(save.texture_groups[uuid]); + } + } else { + new TextureGroup(save.texture_groups[uuid], uuid).add(false); + } + } + for (let uuid in reference.texture_groups) { + if (!save.texture_groups[uuid]) { + let group = TextureGroup.all.find(tg => tg.uuid == uuid); + if (group) { + TextureGroup.all.remove(group); + } + } + } + } if (save.textures) { Painter.current = {} for (var uuid in save.textures) { From dfa32c9e66ce564fad45d642781964ac03184529 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 8 Jun 2024 15:18:52 +0200 Subject: [PATCH 024/153] Texture group rearranging and renaming --- css/panels.css | 17 ++- js/texturing/texture_groups.js | 36 ++++- js/texturing/textures.js | 239 +++++++++++++++++++++++++-------- js/undo.js | 14 +- 4 files changed, 241 insertions(+), 65 deletions(-) diff --git a/css/panels.css b/css/panels.css index 4a006ae26..d393d0233 100644 --- a/css/panels.css +++ b/css/panels.css @@ -637,6 +637,21 @@ z-index: 100; border: 2px solid var(--color-accent); box-shadow: 0 0 16px black; + height: 48px; + width: 48px; + position: absolute; + pointer-events: none; + } + .texture_group_drag_helper { + position: absolute; + z-index: 100; + min-height: 24px; + min-width: 120px; + padding: 4px; + border: 2px solid var(--color-accent); + background-color: var(--color-ui); + box-shadow: 0 0 16px black; + pointer-events: none; } .icon_placeholder { width: 48px; @@ -736,7 +751,7 @@ } .texture_group_head.folded > label { max-width: calc(60% - 50px); - min-width: 110px; + min-width: 30px; } .texture_group_head > .in_list_button { margin-left: auto; diff --git a/js/texturing/texture_groups.js b/js/texturing/texture_groups.js index dd0dd7505..68cf0b315 100644 --- a/js/texturing/texture_groups.js +++ b/js/texturing/texture_groups.js @@ -28,14 +28,26 @@ class TextureGroup { } showContextMenu(event) { Prop.active_panel = 'textures'; + TextureGroup.active_menu_group = this; this.menu.open(event, this); } + rename() { + Blockbench.textPrompt('generic.rename', this.name, (name) => { + if (name && name !== this.name) { + Undo.initEdit({texture_groups: [this]}); + this.name = name; + Undo.finishEdit('Rename texture group'); + } + }) + return this; + } getTextures() { return Texture.all.filter(texture => texture.group == this.uuid); } getUndoCopy() { let copy = { - uuid: this.uuid + uuid: this.uuid, + index: TextureGroup.all.indexOf(this) }; for (let key in TextureGroup.properties) { TextureGroup.properties[key].copy(this, copy) @@ -62,8 +74,9 @@ Object.defineProperty(TextureGroup, 'all', { }) new Property(TextureGroup, 'string', 'name', {default: tl('data.texture_group')}); -TextureGroup.prototype.menu = new Menu([ +TextureGroup.prototype.menu = new Menu('texture_group', [ new MenuSeparator('manage'), + 'rename', { icon: 'fa-leaf', name: 'menu.texture_group.resolve', @@ -77,15 +90,27 @@ TextureGroup.prototype.menu = new Menu([ Undo.finishEdit('Resolve texture group', {textures, texture_groups: []}); } }, -]) +], { + onClose() { + setTimeout(() => { + TextureGroup.active_menu_group = null; + }, 10); + } +}) /** ToDo: -- Drag and dropping textures into empty groups - Auto-generate groups -- Rearranging groups - Grid view? +- Search */ +SharedActions.add('rename', { + condition: () => Prop.active_panel == 'textures' && TextureGroup.active_menu_group, + run() { + TextureGroup.active_menu_group.rename(); + } +}) + BARS.defineActions(function() { new Action('create_texture_group', { @@ -93,6 +118,7 @@ BARS.defineActions(function() { category: 'textures', click() { let texture_group = new TextureGroup(); + texture_group.name = 'Texture Group ' + (TextureGroup.all.length+1); let textures_to_add = Texture.all.filter(tex => tex.selected || tex.multi_selected); Undo.initEdit({texture_groups: [], textures: textures_to_add}); if (textures_to_add.length) { diff --git a/js/texturing/textures.js b/js/texturing/textures.js index a5d0fec02..69e5418b7 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2371,62 +2371,56 @@ Interface.definePanels(function() { } else if (distance > 6) { active = true; } - } else { - if (e2) e2.preventDefault(); - - if (open_menu) open_menu.hide(); + } + if (!active) return; - if (!helper) { - - ///return t.find('.texture_icon_wrapper').clone().addClass('texture_drag_helper').attr('texid', t.attr('texid')) - helper = vue_scope.$el.cloneNode(); - helper.classList.add('texture_drag_helper'); - helper.setAttribute('texid', texture.uuid); + if (e2) e2.preventDefault(); - document.body.append(helper); + if (open_menu) open_menu.hide(); - scrollIntervalID = setInterval(scrollInterval, 1000/60) - - Blockbench.addFlag('dragging_textures'); - } - helper.style.left = `${e2.clientX}px`; - helper.style.top = `${e2.clientY}px`; + if (!helper) { + helper = vue_scope.$el.cloneNode(); + helper.classList.add('texture_drag_helper'); + helper.setAttribute('texid', texture.uuid); - // drag - $('.outliner_node[order]').attr('order', null); - $('.drag_hover').removeClass('drag_hover'); - $('.texture[order]').attr('order', null) + document.body.append(helper); + scrollIntervalID = setInterval(scrollInterval, 1000/60) - //let target = document.elementFromPoint(e2.clientX, e2.clientY); - if ($('#cubes_list li.outliner_node:hover').length) { - let tar = $('#cubes_list li.outliner_node:hover').last(); - tar.addClass('drag_hover').attr('order', '0'); - - } else if ($('#texture_list li:hover').length) { - let node = document.querySelector('#texture_list li.texture:hover'); - if (node) { - //let target_tex = Texture.all.findInArray('uuid', node.getAttribute('texid')); - let offset = e2.clientY - $(node).offset().top; - node.setAttribute('order', offset > 24 ? '1' : '-1'); - } - } + Blockbench.addFlag('dragging_textures'); + } + helper.style.left = `${e2.clientX}px`; + helper.style.top = `${e2.clientY}px`; - /*let target = document.elementFromPoint(e2.clientX, e2.clientY); - [drop_target, drop_target_node] = eventTargetToNode(target); - if (drop_target) { - var location = e2.clientY - $(drop_target_node).offset().top; - order = getOrder(location, drop_target) - drop_target_node.setAttribute('order', order) - drop_target_node.classList.add('drag_hover'); - let parent_node = drop_target_node.parentElement.parentElement; - if ((drop_target instanceof OutlinerElement || order) && parent_node && parent_node.classList.contains('outliner_node')) { - parent_node.classList.add('drag_hover_level'); - } + // drag + $('.outliner_node[order]').attr('order', null); + $('.drag_hover').removeClass('drag_hover'); + $('.texture[order]').attr('order', null) - } else if ($('#texture_list').is(':hover')) { - $('#texture_list').addClass('drag_hover'); - }*/ + let target = $('#cubes_list li.outliner_node:hover').last(); + if (target.length) { + tar.addClass('drag_hover').attr('order', '0'); + return; + } + target = document.querySelector('#texture_list li.texture:hover'); + if (target) { + let offset = e2.clientY - $(target).offset().top; + target.setAttribute('order', offset > 24 ? '1' : '-1'); + return; + } + target = document.querySelector('#texture_list .texture_group_head:hover'); + if (target) { + target.classList.add('drag_hover'); + target.setAttribute('order', '0'); + return; + } + if (document.querySelector('#texture_list:hover')) { + let nodes = document.querySelectorAll('#texture_list > li'); + if (nodes.length) { + let target = nodes[nodes.length-1]; + target.setAttribute('order', '1'); + target.classList.add('drag_hover'); + } } last_event = e2; } @@ -2436,8 +2430,10 @@ Interface.definePanels(function() { removeEventListeners(document, 'mousemove touchmove', move); removeEventListeners(document, 'mouseup touchend', off); e2.stopPropagation(); - $('.texture[order]').attr('order', null); + $('.outliner_node[order]').attr('order', null); + $('.drag_hover').removeClass('drag_hover'); + $('.texture[order]').attr('order', null) if (Blockbench.isTouch) clearTimeout(timeout); if (!active || Menu.open) return; @@ -2474,14 +2470,18 @@ Interface.definePanels(function() { } } else if ($('#texture_list:hover').length > 0) { let index = Texture.all.length-1; - let node = $('#texture_list li.texture:hover'); + let texture_node = document.querySelector('#texture_list li.texture:hover'); + let target_group_head = document.querySelector('#texture_list .texture_group_head:hover'); let new_group = ''; - if (node.length) { - let target_tex = Texture.all.findInArray('uuid', node.attr('texid')); + if (target_group_head) { + new_group = target_group_head.parentNode.id; + + } else if (texture_node) { + let target_tex = Texture.all.findInArray('uuid', texture_node.getAttribute('texid')); index = Texture.all.indexOf(target_tex); let own_index = Texture.all.indexOf(texture) if (own_index == index) return; - let offset = e2.clientY - $(node).offset().top; + let offset = e2.clientY - $(texture_node).offset().top; if (own_index < index) index--; if (offset > 24) index++; new_group = target_tex.group; @@ -2491,7 +2491,7 @@ Interface.definePanels(function() { Texture.all.splice(index, 0, texture); texture.group = new_group; Canvas.updateLayeredTextures(); - Undo.finishEdit('Reorder textures'); + Undo.finishEdit('Rearrange textures'); } else if ($('#cubes_list:hover').length) { @@ -2681,16 +2681,143 @@ Interface.definePanels(function() { }, getUngroupedTextures() { return this.textures.filter(tex => !(tex.group && TextureGroup.all.find(g => g.uuid == tex.group))); + }, + dragTextureGroup(texture_group, e1) { + if (e1.button == 1) return; + convertTouchEvent(e1); + + let active = false; + let helper; + let timeout; + let last_event = e1; + let texture_group_target_node; + let order = 0; + + // scrolling + let list = document.getElementById('texture_list'); + let list_offset = $(list).offset(); + let scrollInterval = function() { + if (!active) return; + if (mouse_pos.y < list_offset.top) { + list.scrollTop += (mouse_pos.y - list_offset.top) / 7 - 3; + } else if (mouse_pos.y > list_offset.top + list.clientHeight) { + list.scrollTop += (mouse_pos.y - (list_offset.top + list.clientHeight)) / 6 + 3; + } + } + let scrollIntervalID; + + function move(e2) { + convertTouchEvent(e2); + let offset = [ + e2.clientX - e1.clientX, + e2.clientY - e1.clientY, + ] + if (!active) { + let distance = Math.sqrt(Math.pow(offset[0], 2) + Math.pow(offset[1], 2)) + if (Blockbench.isTouch) { + if (distance > 20 && timeout) { + clearTimeout(timeout); + timeout = null; + } else { + document.getElementById('texture_list').scrollTop += last_event.clientY - e2.clientY; + } + } else if (distance > 6) { + active = true; + } + } + if (!active) return; + + if (e2) e2.preventDefault(); + + if (open_menu) open_menu.hide(); + + if (!helper) { + helper = Interface.createElement('div', {class: 'texture_group_drag_helper'}, texture_group.name); + document.body.append(helper); + scrollIntervalID = setInterval(scrollInterval, 1000/60) + } + helper.style.left = `${e2.clientX}px`; + helper.style.top = `${e2.clientY}px`; + + // drag + $('.drag_hover').removeClass('drag_hover'); + $('.texture_group[order]').attr('order', null); + + let target = document.querySelector('#texture_list .texture_group:hover'); + if (target) { + target.classList.add('drag_hover'); + let offset = e2.clientY - $(target).offset().top; + order = offset > (target.clientHeight/2) ? 1 : -1; + target.setAttribute('order', order.toString()); + texture_group_target_node = target; + + } else if (document.querySelector('#texture_list:hover')) { + let nodes = document.querySelectorAll('#texture_list > li.texture_group'); + if (nodes.length) { + let target = nodes[nodes.length-1]; + order = 1; + target.setAttribute('order', '1'); + target.classList.add('drag_hover'); + texture_group_target_node = target; + } + } + last_event = e2; + } + async function off(e2) { + if (helper) helper.remove(); + clearInterval(scrollIntervalID); + removeEventListeners(document, 'mousemove touchmove', move); + removeEventListeners(document, 'mouseup touchend', off); + e2.stopPropagation(); + + $('.drag_hover').removeClass('drag_hover'); + $('.texture_group[order]').attr('order', null); + if (Blockbench.isTouch) clearTimeout(timeout); + + if (!active || Menu.open) return; + + if (texture_group_target_node) { + let index = TextureGroup.all.length-1; + let texture_group_target = TextureGroup.all.find(tg => tg.uuid == texture_group_target_node.id); + if (texture_group_target) { + index = TextureGroup.all.indexOf(texture_group_target) + let own_index = TextureGroup.all.indexOf(texture_group) + if (own_index == index) return; + if (own_index < index) index--; + if (order == 1) index++; + } + Undo.initEdit({texture_groups: [texture_group]}); + TextureGroup.all.remove(texture_group); + TextureGroup.all.splice(index, 0, texture_group); + Undo.finishEdit('Rearrange texture groups'); + + } + } + + if (Blockbench.isTouch) { + timeout = setTimeout(() => { + active = true; + move(e1); + }, 320) + } + + addEventListeners(document, 'mousemove touchmove', move, {passive: false}); + addEventListeners(document, 'mouseup touchend', off, {passive: false}); } }, template: `
        • -
          +
          tg.uuid == uuid); + group = TextureGroup.all.find(tg => tg.uuid == uuid); if (group) { - group.extend(save.texture_groups[uuid]); + group.extend(data); } } else { - new TextureGroup(save.texture_groups[uuid], uuid).add(false); + group = new TextureGroup(data, uuid).add(false); + } + //order + let index = TextureGroup.all.indexOf(group); + if (index != -1 && index != data.index && typeof data.index == 'number') { + TextureGroup.all.remove(group); + TextureGroup.all.splice(data.index, 0, group); } } for (let uuid in reference.texture_groups) { From 3135869903bddcca11781c29e837c1a9c7cd1f8b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 8 Jun 2024 15:40:54 +0200 Subject: [PATCH 025/153] Detect and warn about unresolved Git merge conflicts --- js/io/io.js | 8 ++++++++ lang/en.json | 1 + 2 files changed, 9 insertions(+) diff --git a/js/io/io.js b/js/io/io.js index 922c02976..fe92de182 100644 --- a/js/io/io.js +++ b/js/io/io.js @@ -582,6 +582,14 @@ function autoParseJSON(data, feedback) { data = JSON.parse(data) } catch (err) { if (feedback === false) return; + if (data.match(/\n\r?[><]{7}/)) { + Blockbench.showMessageBox({ + title: 'message.invalid_file.title', + icon: 'fab.fa-git-alt', + message: 'message.invalid_file.merge_conflict' + }) + return; + } let error_part = ''; function logErrantPart(whole, start, length) { var line = whole.substr(0, start).match(/\n/gm) diff --git a/lang/en.json b/lang/en.json index ec70c55db..cd2659cfd 100644 --- a/lang/en.json +++ b/lang/en.json @@ -246,6 +246,7 @@ "message.screenshot.right_click": "Right click or long press the screenshot to copy", "message.invalid_file.title": "Invalid File", "message.invalid_file.message": "Could not open json file: %0", + "message.invalid_file.merge_conflict": "The file contains unresolved Git merge conflicts.", "message.invalid_model.title": "Invalid Model File", "message.invalid_model.message": "This file does not contain valid model data.", "message.invalid_format.title": "Invalid Format", From 5b8640e666a2062cf1e87aae9d12a89201ece77c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 9 Jun 2024 13:24:29 +0200 Subject: [PATCH 026/153] Add new preview scenes --- js/preview/preview_scenes.js | 16 ++++++++++++++++ lang/en.json | 3 +++ 2 files changed, 19 insertions(+) diff --git a/js/preview/preview_scenes.js b/js/preview/preview_scenes.js index c84d1283e..2779a2bb0 100644 --- a/js/preview/preview_scenes.js +++ b/js/preview/preview_scenes.js @@ -151,6 +151,9 @@ PreviewScene.menu_categories = { generic: { _label: 'Generic' }, + realistic: { + _label: 'Realistic' + }, minecraft: { _label: 'Minecraft' }, @@ -379,6 +382,14 @@ new PreviewScene('studio', { light_side: 1, preview_models: ['studio'] }); +new PreviewScene('sky', { + category: 'realistic', + web_config: 'realistic/sky/sky.json', +}); +new PreviewScene('space', { + category: 'realistic', + web_config: 'realistic/space/space.json', +}); new PreviewScene('minecraft_plains', { category: 'minecraft', web_config: 'minecraft/plains/plains.json', @@ -409,6 +420,11 @@ new PreviewScene('minecraft_desert', { web_config: 'minecraft/desert/desert.json', require_minecraft_eula: true, }); +new PreviewScene('minecraft_ocean', { + category: 'minecraft', + web_config: 'minecraft/ocean/ocean.json', + require_minecraft_eula: true, +}); new PreviewScene('minecraft_underwater', { category: 'minecraft', web_config: 'minecraft/underwater/underwater.json', diff --git a/lang/en.json b/lang/en.json index cd2659cfd..4e33dcda6 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2319,6 +2319,8 @@ "display.preset.armor_stand": "Ground (Armor Stand)", "preview_scene.studio": "Studio", + "preview_scene.sky": "Sky", + "preview_scene.space": "Space", "preview_scene.minecraft_overworld": "Overworld", "preview_scene.minecraft_nether": "Nether", "preview_scene.minecraft_end": "End", @@ -2328,6 +2330,7 @@ "preview_scene.minecraft_sunset": "Sunset", "preview_scene.minecraft_night": "Night", "preview_scene.minecraft_desert": "Desert", + "preview_scene.minecraft_oceant": "Ocean", "preview_scene.minecraft_underwater": "Underwater", "preview_scene.minecraft_coral_reef": "Coral Reef", "preview_scene.minecraft_lush_cave": "Lush Cave", From dcd6543fb38792b4f6c8a5cb24521d2fca7dbecf Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 9 Jun 2024 23:34:21 +0200 Subject: [PATCH 027/153] Make outliner indentation more customizable via theme --- css/panels.css | 3 ++- js/outliner/outliner.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/css/panels.css b/css/panels.css index 33d4c6874..c824187a6 100644 --- a/css/panels.css +++ b/css/panels.css @@ -402,7 +402,7 @@ #cubes_list { padding-top: 1px; overflow-y: scroll; - --indentation: 16px; + --indentation-offset: 16px; } #cubes_list > li:last-child { margin-bottom: 180px; @@ -438,6 +438,7 @@ width: 100%; padding: 2px; box-sizing: border-box; + padding-left: calc(var(--indentation) * var(--indentation-offset)); } .outliner_object:active { background-color: var(--color-ui); diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index ab0a758a2..c38937c29 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -1395,7 +1395,7 @@ Interface.definePanels(function() { `
          Date: Wed, 12 Jun 2024 22:05:32 +0200 Subject: [PATCH 028/153] Fix new issue with dragging texture into outliner --- js/texturing/textures.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 69e5418b7..9f620eb2c 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2399,7 +2399,7 @@ Interface.definePanels(function() { let target = $('#cubes_list li.outliner_node:hover').last(); if (target.length) { - tar.addClass('drag_hover').attr('order', '0'); + target.addClass('drag_hover').attr('order', '0'); return; } target = document.querySelector('#texture_list li.texture:hover'); @@ -2431,6 +2431,8 @@ Interface.definePanels(function() { removeEventListeners(document, 'mouseup touchend', off); e2.stopPropagation(); + let outliner_target_node = document.querySelector('#cubes_list li.outliner_node.drag_hover'); + $('.outliner_node[order]').attr('order', null); $('.drag_hover').removeClass('drag_hover'); $('.texture[order]').attr('order', null) @@ -2438,7 +2440,7 @@ Interface.definePanels(function() { if (!active || Menu.open) return; - await new Promise(r => setTimeout(r, 10)); + //await new Promise(r => setTimeout(r, 10)); Blockbench.removeFlag('dragging_textures'); @@ -2493,12 +2495,8 @@ Interface.definePanels(function() { Canvas.updateLayeredTextures(); Undo.finishEdit('Rearrange textures'); - } else if ($('#cubes_list:hover').length) { - - let target_node = $('#cubes_list li.outliner_node.drag_hover').last().get(0); - $('.drag_hover').removeClass('drag_hover'); - if (!target_node) return; - let uuid = target_node.id; + } else if (outliner_target_node) { + let uuid = outliner_target_node.id; let target = OutlinerNode.uuids[uuid]; let array = []; From 22b0d8e118c0c2f437c6cd39573cb3b1b408cf17 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 12 Jun 2024 22:06:03 +0200 Subject: [PATCH 029/153] Fix absolute paths being prioritized when when merging projects --- js/io/formats/bbmodel.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index 45e558b74..fa2062193 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -526,10 +526,6 @@ var codec = new Codec('project', { c++; tex_copy.id = c.toString(); } - if (isApp && tex.path && fs.existsSync(tex.path) && !model.meta.backup) { - tex_copy.loadContentFromPath(tex.path) - return tex_copy; - } if (isApp && tex.relative_path && path) { let resolved_path = PathModule.resolve(PathModule.dirname(path), tex.relative_path); if (fs.existsSync(resolved_path)) { @@ -537,6 +533,10 @@ var codec = new Codec('project', { return tex_copy; } } + if (isApp && tex.path && fs.existsSync(tex.path) && !model.meta.backup) { + tex_copy.loadContentFromPath(tex.path) + return tex_copy; + } if (tex.source && tex.source.substr(0, 5) == 'data:') { tex_copy.fromDataURL(tex.source) return tex_copy; From 1e56d4755140869cfbf2dc9504bf455f2469be2c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 13 Jun 2024 18:44:21 +0200 Subject: [PATCH 030/153] Display plugin ID in plugin error messages in web app --- js/plugin_loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/plugin_loader.js b/js/plugin_loader.js index 22360a850..be8df5cd9 100644 --- a/js/plugin_loader.js +++ b/js/plugin_loader.js @@ -320,7 +320,7 @@ class Plugin { }).fail(reject) } else { try { - new Function(file.content)(); + new Function(file.content + `\n//# sourceURL=[PLUGIN]:${this.id}.js`)(); } catch (err) { reject(err) } From f2e2080782d5ed76eecd1b22f98dfb5050f0c84c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 15 Jun 2024 00:22:04 +0200 Subject: [PATCH 031/153] Upgrade jQuery --- lib/jquery.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jquery.js b/lib/jquery.js index 200b54e47..798cc8bf7 100644 --- a/lib/jquery.js +++ b/lib/jquery.js @@ -1,2 +1,2 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
          ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
          ",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 Date: Sat, 15 Jun 2024 01:12:43 +0200 Subject: [PATCH 032/153] Upgrade plugin loading - Display plugin ID as location of error messages - Isolate plugin contexts by default --- js/plugin_loader.js | 149 ++++++++++++++++++++++++++------------------ 1 file changed, 87 insertions(+), 62 deletions(-) diff --git a/js/plugin_loader.js b/js/plugin_loader.js index be8df5cd9..430451060 100644 --- a/js/plugin_loader.js +++ b/js/plugin_loader.js @@ -36,6 +36,40 @@ const Plugins = { StateMemory.init('installed_plugins', 'array') Plugins.installed = StateMemory.installed_plugins = StateMemory.installed_plugins.filter(p => p && typeof p == 'object'); +async function runPluginFile(path, plugin_id) { + let file_content; + if (path.startsWith('http')) { + if (!path.startsWith('https')) { + throw 'Cannot load plugins over http: ' + path; + } + await new Promise((resolve, reject) => { + $.ajax({ + cache: false, + url: path, + success(data) { + file_content = data; + resolve(); + }, + error() { + reject('Failed to load plugin ' + plugin_id); + } + }); + }) + + } else if (isApp) { + file_content = fs.readFileSync(path, {encoding: 'utf-8'}); + + } else { + throw 'Failed to load plugin: Unknown URL format' + } + if (typeof file_content != 'string' || file_content.length < 20) { + throw `Issue loading plugin "${plugin_id}": Plugin file empty`; + } + let func = new Function(file_content + `\n//# sourceURL=PLUGINS/(Plugin):${plugin_id}.js`); + func(); + return file_content; +} + class Plugin { constructor(id, data) { this.id = id||'unknown'; @@ -137,10 +171,7 @@ class Plugin { if (!isApp && this.new_repository_format) { path = `${Plugins.path}${scope.id}/${scope.id}.js`; } - $.getScript(path, (content, status, context) => { - if (!content || content.length <= 20) { - console.warn(`Issue loading plugin "${this.id}": Plugin file empty`); - } + runPluginFile(path, this.id).then((content) => { if (cb) cb.bind(scope)() scope.bindGlobalData(first) if (first && scope.oninstall) { @@ -148,13 +179,14 @@ class Plugin { } if (first) Blockbench.showQuickMessage(tl('message.installed_plugin', [this.title])); resolve() - }).fail(() => { + }).catch((error) => { if (isApp) { console.log('Could not find file of plugin "'+scope.id+'". Uninstalling it instead.') scope.uninstall() } if (first) Blockbench.showQuickMessage(tl('message.installed_plugin_fail', [this.title])); reject() + console.error(error) }) this.remember() scope.installed = true; @@ -300,44 +332,37 @@ class Plugin { this.source = 'file'; this.tags.safePush('Local'); - return await new Promise((resolve, reject) => { - - if (isApp) { - $.getScript(file.path, () => { - if (window.plugin_data) { - scope.id = (plugin_data && plugin_data.id)||pathToName(file.path) - scope.extend(plugin_data) - scope.bindGlobalData() - } - if (first && scope.oninstall) { - scope.oninstall() - } - scope.installed = true; - scope.path = file.path; - this.remember(); - Plugins.sort(); - resolve() - }).fail(reject) - } else { - try { - new Function(file.content + `\n//# sourceURL=[PLUGIN]:${this.id}.js`)(); - } catch (err) { - reject(err) - } - if (!Plugins.registered && window.plugin_data) { - scope.id = (plugin_data && plugin_data.id)||scope.id + if (isApp) { + let content = await runPluginFile(file.path, this.id); + if (content) { + if (window.plugin_data) { + scope.id = (plugin_data && plugin_data.id)||pathToName(file.path) scope.extend(plugin_data) scope.bindGlobalData() } if (first && scope.oninstall) { scope.oninstall() } - scope.installed = true - this.remember() - Plugins.sort() - resolve() + scope.path = file.path; } - }) + } else { + try { + new Function(file.content + `\n//# sourceURL=PLUGINS/(Plugin):${this.id}.js`)(); + } catch (err) { + reject(err) + } + if (!Plugins.registered && window.plugin_data) { + scope.id = (plugin_data && plugin_data.id)||scope.id + scope.extend(plugin_data) + scope.bindGlobalData() + } + if (first && scope.oninstall) { + scope.oninstall() + } + } + this.installed = true; + this.remember(); + Plugins.sort(); } async loadFromURL(url, first) { if (first) { @@ -354,36 +379,36 @@ class Plugin { this.tags.safePush('Remote'); this.source = 'url'; - await new Promise((resolve, reject) => { - $.getScript(url, () => { - if (window.plugin_data) { - this.id = (plugin_data && plugin_data.id)||pathToName(url) - this.extend(plugin_data) - this.bindGlobalData() - } - if (first && this.oninstall) { - this.oninstall() - } - this.installed = true - this.path = url - this.remember() - Plugins.sort() - // Save - if (isApp) { - var file = originalFs.createWriteStream(Plugins.path+this.id+'.js') + let content = await runPluginFile(url, this.id).catch((error) => { + if (isApp) { + this.load().then(resolve).catch(resolve) + } + console.error(error); + }) + if (content) { + if (window.plugin_data) { + this.id = (plugin_data && plugin_data.id)||pathToName(url) + this.extend(plugin_data) + this.bindGlobalData() + } + if (first && this.oninstall) { + this.oninstall() + } + this.installed = true + this.path = url + this.remember() + Plugins.sort() + // Save + if (isApp) { + await new Promise((resolve) => { + let file = originalFs.createWriteStream(Plugins.path+this.id+'.js') https.get(url, (response) => { response.pipe(file); response.on('end', resolve) }).on('error', reject); - } else { - resolve() - } - }).fail(() => { - if (isApp) { - this.load().then(resolve).catch(resolve) - } - }) - }) + }) + } + } return this; } remember(id = this.id, path = this.path) { From 90bb97040935d93479c31b377d8213ea7f3c24dd Mon Sep 17 00:00:00 2001 From: Aza Date: Sat, 15 Jun 2024 20:28:21 +0200 Subject: [PATCH 033/153] convert Randomize Marker color into an action, changed name from previous "random marker color" name --- js/interface/actions.js | 29 +++++++++++++++++++++++++++++ js/outliner/cube.js | 10 +--------- js/outliner/group.js | 5 +---- js/outliner/mesh.js | 10 +--------- lang/en.json | 2 +- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/js/interface/actions.js b/js/interface/actions.js index 8b1e0217b..9e009e776 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -1892,6 +1892,35 @@ const BARS = { modes: ['edit'], keybind: new Keybind({key: 's', alt: true}), }) + new Action('randomize_marker_colors', { + icon: 'shuffle', + category: 'edit', + condition: {modes: ['edit' ], project: true}, + click: function () { + let setRandomGroupColor = function() { + let randomColor = function() { return Math.floor(Math.random() * markerColors.length)} + let elements = Outliner.selected.filter(element => element.setColor) + Undo.initEdit({outliner: true, elements: elements, selection: true}) + Group.all.forEach(group => { + if (group.selected) { + let lastColor = group.color + // Ensure chosen group color is never the same as before + do group.color = randomColor(); + while (group.color === lastColor) + } + }) + elements.forEach(element => { + let lastColor = element.color + // Ensure chosen element color is never the same as before + do element.setColor(randomColor()) + while (element.color === lastColor) + }) + Undo.finishEdit('Change group marker color') + } + + setRandomGroupColor(); + } + }) //File new Action('new_window', { diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 83cc5ac20..c4c38cd44 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -939,15 +939,7 @@ class Cube extends OutlinerElement { } }}); }}, - {name: 'action.cube.random_color', icon: 'fa-swatchbook', click(cube) { - cube.forSelected(function(obj){ - let lastColor = obj.color - // Ensure chosen color is never equal to the previous color - do obj.setColor(Math.floor(Math.random() * markerColors.length)) - while (obj.color === lastColor) - }, 'change color') - } - }, + "randomize_marker_colors", {name: 'menu.cube.texture', icon: 'collections', condition: () => !Format.single_texture && !Format.per_group_texture, children: function() { var arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click(cube) { diff --git a/js/outliner/group.js b/js/outliner/group.js index e2298e19e..676c43ad5 100644 --- a/js/outliner/group.js +++ b/js/outliner/group.js @@ -473,10 +473,7 @@ class Group extends OutlinerNode { } }}) }}, - {name: 'action.cube.random_color', icon: 'fa-swatchbook', click() { - setRandomGroupColor() - } - }, + "randomize_marker_colors", {name: 'menu.cube.texture', icon: 'collections', condition: () => Format.per_group_texture, children() { let arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click(group) { diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index 2c4ad351b..2047740fa 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -872,15 +872,7 @@ class Mesh extends OutlinerElement { } }}) }}, - {name: 'action.cube.random_color', icon: 'fa-swatchbook', click(cube) { - cube.forSelected(function(obj){ - let lastColor = obj.color - // Ensure chosen color is never equal to the previous color - do obj.setColor(Math.floor(Math.random() * markerColors.length)) - while (obj.color === lastColor) - }, 'change color') - } - }, + "randomize_marker_colors", {name: 'menu.cube.texture', icon: 'collections', condition: () => !Format.single_texture, children: function() { var arr = [ {icon: 'crop_square', name: Format.single_texture_default ? 'menu.cube.texture.default' : 'menu.cube.texture.blank', click: function(cube) { diff --git a/lang/en.json b/lang/en.json index 9b34a9d41..8da89eae2 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1387,9 +1387,9 @@ "action.outliner_toggle.desc": "Toggles switches for more options in the outliner", "action.cube_counter": "Model Statistics", "action.cube_counter.desc": "Displays the current number of elements and other statistics", - "action.cube.random_color": "Random Marker Color", "action.search_outliner": "Search Outliner", "action.search_outliner.desc": "Search for specific element names in the outliner", + "action.randomize_marker_colors": "Randomize Marker Colors", "action.duplicate": "Duplicate", "action.duplicate.desc": "Duplicates the selected elements or group", From b99df2157034a10d3395e7b15588505aee9e6c43 Mon Sep 17 00:00:00 2001 From: Aza Date: Sat, 15 Jun 2024 21:11:41 +0200 Subject: [PATCH 034/153] remove unused code in group.js --- js/outliner/group.js | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/js/outliner/group.js b/js/outliner/group.js index 92cea82ec..2f7afe905 100644 --- a/js/outliner/group.js +++ b/js/outliner/group.js @@ -439,26 +439,6 @@ class Group extends OutlinerNode { }) Undo.finishEdit('Change group marker color') } - function setRandomGroupColor() { - let randomColor = function() { return Math.floor(Math.random() * markerColors.length)} - let elements = Outliner.selected.filter(el => el.setColor) - Undo.initEdit({outliner: true, elements: elements, selection: true}) - Group.all.forEach(group => { - if (group.selected) { - let lastColor = group.color - // Ensure chosen group color is never the same as before - do group.color = randomColor(); - while (group.color === lastColor) - } - }) - elements.forEach(el => { - let lastColor = el.color - // Ensure chosen element color is never the same as before - do el.setColor(randomColor()) - while (el.color === lastColor) - }) - Undo.finishEdit('Change group marker color') - } Group.prototype.menu = new Menu([ ...Outliner.control_menu_group, new MenuSeparator('settings'), From 5a297f9624964b402521482a3b5df956cc3c842c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 15 Jun 2024 21:31:20 +0200 Subject: [PATCH 035/153] Combine face and box UV template generators Fixes #1817 --- js/texturing/texture_generator.js | 512 +++++++++--------------------- lang/en.json | 3 - 2 files changed, 158 insertions(+), 357 deletions(-) diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index 7f22599e0..1ba652344 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -47,7 +47,6 @@ const TextureGenerator = { rearrange_uv:{label: 'dialog.create_texture.rearrange_uv', description: 'dialog.create_texture.rearrange_uv.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template')}, box_uv: {label: 'dialog.project.uv_mode.box_uv', type: 'checkbox', value: false, condition: (form) => (form.type == 'template' && !Project.box_uv && Cube.all.length)}, - compress: {label: 'dialog.create_texture.compress', description: 'dialog.create_texture.compress.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template' && Project.box_uv && form.rearrange_uv)}, power: {label: 'dialog.create_texture.power', description: 'dialog.create_texture.power.desc', type: 'checkbox', value: true, condition: (form) => (form.type !== 'blank' && (form.rearrange_uv || form.type == 'color_map'))}, double_use: {label: 'dialog.create_texture.double_use', description: 'dialog.create_texture.double_use.desc', type: 'checkbox', value: true, condition: ((form) => (form.type == 'template' && form.rearrange_uv))}, combine_polys: {label: 'dialog.create_texture.combine_polys', description: 'dialog.create_texture.combine_polys.desc', type: 'checkbox', value: true, condition: (form) => (form.type == 'template' && form.rearrange_uv && Mesh.selected.length)}, @@ -80,7 +79,6 @@ const TextureGenerator = { form: { color: {label: 'data.color', type: 'color', colorpicker: TextureGenerator.background_color, toggle_enabled: true, toggle_default: false}, box_uv: {label: 'dialog.project.uv_mode.box_uv', type: 'checkbox', value: false, condition: (form) => (!Project.box_uv && Cube.all.length)}, - compress: {label: 'dialog.create_texture.compress', description: 'dialog.create_texture.compress.desc', type: 'checkbox', value: true, condition: (form) => Project.box_uv}, power: {label: 'dialog.create_texture.power', description: 'dialog.create_texture.power.desc', type: 'checkbox', value: Math.isPowerOfTwo(texture.width)}, double_use: {label: 'dialog.create_texture.double_use', description: 'dialog.create_texture.double_use.desc', type: 'checkbox', value: true}, combine_polys: {label: 'dialog.create_texture.combine_polys', description: 'dialog.create_texture.combine_polys.desc', type: 'checkbox', value: true, condition: (form) => (Mesh.selected.length)}, @@ -95,11 +93,7 @@ const TextureGenerator = { if (Format.single_texture) { options.texture = Texture.getDefault() } - if (Project.box_uv || options.box_uv) { - TextureGenerator.generateBoxTemplate(options, texture); - } else { - TextureGenerator.generateFaceTemplate(options, texture); - } + TextureGenerator.generateTemplate(options, texture); return false; } }).show() @@ -143,11 +137,7 @@ const TextureGenerator = { return texture; } if (options.type == 'template') { - if (Project.box_uv || options.box_uv) { - TextureGenerator.generateBoxTemplate(options, makeTexture); - } else { - TextureGenerator.generateFaceTemplate(options, makeTexture); - } + TextureGenerator.generateTemplate(options, makeTexture); } else if (options.type == 'color_map') { TextureGenerator.generateColorMapTemplate(options, makeTexture); } else { @@ -189,320 +179,6 @@ const TextureGenerator = { this.width = 2* (this.x + this.z); return this; }, - //BoxUV Template - generateBoxTemplate(options, makeTexture) { - var res = options.resolution; - var background_color = options.color; - var texture = options.texture; - var min_size = (Project.box_uv || options.box_uv) ? 0 : 1; - var res_multiple = res / 16 - var templates = []; - var doubles = {}; - var extend_x = 0; - var extend_y = 0; - var avg_size = 0; - var new_resolution = []; - var cubes = (Format.single_texture && typeof makeTexture == 'function') ? Cube.all.slice() : Cube.selected.slice(); - - Undo.initEdit({ - textures: makeTexture instanceof Texture ? [makeTexture] : [], - elements: cubes, - uv_only: true, - bitmap: true, - selected_texture: true, - uv_mode: true - }) - - for (var i = cubes.length-1; i >= 0; i--) { - let obj = cubes[i]; - if (obj.visibility === true) { - let template = new TextureGenerator.boxUVCubeTemplate(obj, min_size); - let mirror_modeling_duplicate = BarItems.mirror_modeling.value && MirrorModeling.cached_elements[obj.uuid] && MirrorModeling.cached_elements[obj.uuid].is_copy; - if (mirror_modeling_duplicate) continue; - - if (options.double_use && Project.box_uv && Texture.all.length) { - let double_key = [...obj.uv_offset, ...obj.size(undefined, true), ].join('_') - if (doubles[double_key]) { - // improve chances that original is not mirrored - if (doubles[double_key][0].obj.mirror_uv && !obj.mirror_uv) { - templates[templates.indexOf(doubles[double_key][0])] = template; - doubles[double_key].splice(0, 0, template) - } else { - doubles[double_key].push(template) - } - doubles[double_key][0].duplicates = doubles[double_key]; - continue; - } else { - doubles[double_key] = [template] - } - } - templates.push(template) - avg_size += templates[templates.length-1].template_size - } - } - //Cancel if no cubes - if (templates.length == 0) { - if (Mesh.selected.length) { - Blockbench.showMessageBox({ - title: 'message.no_valid_elements', - message: 'message.meshes_and_box_uv', - icon: 'fa-gem' - }) - } else { - Blockbench.showMessage('message.no_valid_elements', 'center'); - } - return; - - } else if (Mesh.selected.length) { - Blockbench.showMessage('message.meshes_and_box_uv', 'center'); - } - templates.sort(function(a,b) { - return b.template_size - a.template_size; - }) - - if (options.rearrange_uv) { - - if (options.compress || makeTexture instanceof Texture) { - var fill_map = {}; - - if (makeTexture instanceof Texture) { - extend_x = makeTexture.width / res_multiple; - extend_y = makeTexture.height / res_multiple; - Cube.all.forEach(element => { - for (let fkey in element.faces) { - let face = element.faces[fkey]; - if (face.getTexture() !== makeTexture) continue; - - let rect = face.getBoundingRect(); - for (let x = Math.floor(rect.ax); x < Math.ceil(rect.bx); x++) { - for (let y = Math.floor(rect.ay); y < Math.ceil(rect.by); y++) { - if (!fill_map[x]) fill_map[x] = {}; - fill_map[x][y] = true; - } - } - - } - }) - } - - function occupy(x, y) { - if (!fill_map[x]) fill_map[x] = {} - fill_map[x][y] = true - } - function check(x, y) { - return fill_map[x] && fill_map[x][y] - } - function forTemplatePixel(tpl, sx, sy, cb) { - let w = tpl.width; - let h = tpl.height; - if (options.padding) { - w++; h++; - } - for (var x = 0; x < w; x++) { - for (var y = 0; y < h; y++) { - if (y >= tpl.z || (x >= tpl.z && x < (tpl.z + 2*tpl.x + (options.padding ? 1 : 0)))) { - if (cb(sx+x, sy+y)) return; - } - } - } - } - function place(tpl, x, y) { - var works = true; - forTemplatePixel(tpl, x, y, (tx, ty) => { - if (check(tx, ty)) { - works = false; - return true; - } - }) - if (works) { - forTemplatePixel(tpl, x, y, occupy) - tpl.posx = x; - tpl.posy = y; - extend_x = Math.max(extend_x, x + tpl.width); - extend_y = Math.max(extend_y, y + tpl.height); - return true; - } - } - templates.forEach(tpl => { - var vert = extend_x > extend_y; - //Scan for empty spot - - for (var line = 0; line < 2e3; line++) { - for (var space = 0; space <= line; space++) { - if (place(tpl, space, line)) return; - if (space == line) continue; - if (place(tpl, line, space)) return; - } - } - }) - } else { - //OLD ------------------------------------------- - var lines = [[]] - var line_length = Math.sqrt(cubes.length/2) - avg_size /= templates.length - var o = 0 - var i = 0 - var ox = 0 - templates.forEach(function(tpl) { - if (ox >= line_length) { - o = ox = 0 - i++ - lines[i] = [] - } - lines[i][o] = tpl - o++; - ox += tpl.template_size/avg_size - }) - - lines.forEach(function(temps) { - - var x_pos = 0 - var y_pos = 0 //Y Position of current area relative to this bone - var filled_x_pos = 0; - var max_height = 0 - //Find the maximum height of the line - temps.forEach(function(t) { - max_height = Math.max(max_height, t.height + (options.padding ? 1 : 0)) - }) - //Place - temps.forEach(function(t) { - let w = t.width; - let h = t.height; - if (options.padding) { - w++; h++; - } - if (y_pos > 0 && (y_pos + h) <= max_height) { - //same column - t.posx = x_pos - t.posy = y_pos + extend_y - filled_x_pos = Math.max(filled_x_pos, x_pos + w) - y_pos += h - } else { - //new column - x_pos = filled_x_pos - y_pos = h - t.posx = x_pos - t.posy = extend_y - filled_x_pos = Math.max(filled_x_pos, x_pos + w) - } - //size of widest bone - extend_x = Math.max(extend_x, filled_x_pos) - }) - extend_y += max_height - }) - } - - var max_size = Math.max(extend_x, extend_y); - if (options.power) { - max_size = Math.getNextPower(max_size, 16); - } else { - max_size = Math.ceil(max_size/16)*16; - } - new_resolution = [max_size, max_size]; - } else { - new_resolution = [Project.texture_width, Project.texture_height]; - } - - if (background_color) { - background_color = background_color.toRgbString() - } - let canvas = document.createElement('canvas'); - let ctx = canvas.getContext('2d'); - ctx.imageSmoothingEnabled = false; - if (makeTexture instanceof Texture) { - if (makeTexture.mode === 'link') { - makeTexture.convertToInternal(); - } - canvas.width = Math.max(new_resolution[0] * res_multiple, makeTexture.width); - canvas.height = Math.max(new_resolution[1] * res_multiple, makeTexture.height); - ctx.drawImage(makeTexture.img, 0, 0); - } else { - canvas.width = new_resolution[0] * res_multiple; - canvas.height = new_resolution[1] * res_multiple; - } - - - //Drawing - TextureGenerator.old_project_resolution = [Project.texture_width, Project.texture_height] - - templates.forEach(function(t) { - if (options.rearrange_uv) { - t.obj.uv_offset[0] = t.posx; - t.obj.uv_offset[1] = t.posy; - if (Project.box_uv || Format.optional_box_uv) t.obj.box_uv = true; - //if true, dupes must be flipped - let reverse_flip = t.obj.mirror_uv; - t.obj.mirror_uv = false; - - if (t.duplicates) { - t.duplicates.forEach(dupl => { - if (dupl.obj !== t.obj) { - dupl.obj.mirror_uv = dupl.obj.mirror_uv !== reverse_flip; - } - }) - } - } - TextureGenerator.paintCubeBoxTemplate(t.obj, texture, canvas, t, false, res_multiple); - }) - - var dataUrl = canvas.toDataURL() - var texture = typeof makeTexture == 'function' ? makeTexture(dataUrl) : makeTexture; - if (makeTexture instanceof Texture) { - makeTexture.updateSource(dataUrl); - } - let affected_elements = TextureGenerator.changeUVResolution(new_resolution[0], new_resolution[1], texture); - - if (texture) { - cubes.forEach(function(cube) { - if (!Format.single_texture) { - cube.applyTexture(texture, true); - } - cube.preview_controller.updateUV(cube); - cube.autouv = 0; - }) - } - if (options.box_uv && !Project.box_uv && Project.optional_box_uv) { - Project.box_uv = true; - } - templates.forEach(function(t) { - if (options.rearrange_uv) { - t.obj.uv_offset[0] = t.posx; - t.obj.uv_offset[1] = t.posy; - - if (t.duplicates) { - t.duplicates.forEach(dupl => { - if (dupl.obj !== t.obj) { - dupl.obj.uv_offset[0] = t.posx; - dupl.obj.uv_offset[1] = t.posy; - } - }) - } - } - }) - - updateSelection() - let updated_elements = cubes.slice(); - updated_elements.safePush(...affected_elements); - Undo.finishEdit('Create template', { - textures: [texture], - bitmap: true, - elements: updated_elements, - selected_texture: true, - uv_only: true, - uv_mode: true - }) - // Warning - if (cubes.find(cube => { - let size = cube.size(); - return (size[0] > 0.001 && size[0] < 0.999) || (size[1] > 0.001 && size[1] < 0.999) || (size[2] > 0.001 && size[2] < 0.999) - })) { - Blockbench.showMessageBox({ - title: 'message.small_face_dimensions.title', - message: tl('message.small_face_dimensions.message') + (Format.optional_box_uv ? '\n\n' + tl('message.small_face_dimensions.face_uv') : ''), - icon: 'warning', - }) - } - }, boxUVdrawTemplateRectangle(border_color, color, face, coords, texture, canvas, res_multiple) { if (typeof background_color === 'string') { border_color = background_color @@ -594,7 +270,7 @@ const TextureGenerator = { paintCubeBoxTemplate(cube, texture, canvas, template, transparent, res_multiple) { if (!template) { - template = new TextureGenerator.boxUVCubeTemplate(cube, Project.box_uv ? 0 : 1); + template = new TextureGenerator.boxUVCubeTemplate(cube, cube.box_uv ? 0 : 1); } for (var face in TextureGenerator.face_data) { @@ -647,11 +323,13 @@ const TextureGenerator = { } }, //Face Template - generateFaceTemplate(options, makeTexture) { - + generateTemplate(options, makeTexture) { let res_multiple = options.resolution / 16; let background_color = options.color; let new_resolution = []; + let box_uv_templates = []; + let doubles = {}; + let avg_size = 0; let vec1 = new THREE.Vector3(), vec2 = new THREE.Vector3(), @@ -711,28 +389,56 @@ const TextureGenerator = { let mirror_modeling_duplicate = BarItems.mirror_modeling.value && MirrorModeling.cached_elements[element.uuid] && MirrorModeling.cached_elements[element.uuid].is_copy; if (mirror_modeling_duplicate) return; if (element instanceof Cube) { - for (let fkey in element.faces) { - let face = element.faces[fkey]; - let tex = face.getTexture(); - if (tex !== null) { - let face_old_pos_id; - if (tex instanceof Texture) { - face_old_pos_id = faceOldPositionIdentifier(face); - if (!double_use_faces[face_old_pos_id]) double_use_faces[face_old_pos_id] = []; - double_use_faces[face_old_pos_id].push([element, face]); + if (element.box_uv || options.box_uv) { + + let template = new TextureGenerator.boxUVCubeTemplate(element, element.box_uv ? 0 : 1); + let mirror_modeling_duplicate = BarItems.mirror_modeling.value && MirrorModeling.cached_elements[element.uuid] && MirrorModeling.cached_elements[element.uuid].is_copy; + if (mirror_modeling_duplicate) return; + + if (options.double_use && Texture.all.length) { + let double_key = [...element.uv_offset, ...element.size(undefined, true), ].join('_') + if (doubles[double_key]) { + // improve chances that original is not mirrored + if (doubles[double_key][0].obj.mirror_uv && !element.mirror_uv) { + box_uv_templates[box_uv_templates.indexOf(doubles[double_key][0])] = template; + doubles[double_key].splice(0, 0, template) + } else { + doubles[double_key].push(template) + } + doubles[double_key][0].duplicates = doubles[double_key]; + return; + } else { + doubles[double_key] = [template] } - let x = 0; - let y = 0; - switch (fkey) { - case 'north': x = element.size(0); y = element.size(1); break; - case 'east': x = element.size(2); y = element.size(1); break; - case 'south': x = element.size(0); y = element.size(1); break; - case 'west': x = element.size(2); y = element.size(1); break; - case 'up': x = element.size(0); y = element.size(2); break; - case 'down': x = element.size(0); y = element.size(2); break; + } + element.box_uv = true; + box_uv_templates.push(template) + avg_size += box_uv_templates[box_uv_templates.length-1].template_size + + } else { + for (let fkey in element.faces) { + let face = element.faces[fkey]; + let tex = face.getTexture(); + if (tex !== null) { + let face_old_pos_id; + if (tex instanceof Texture) { + face_old_pos_id = faceOldPositionIdentifier(face); + if (!double_use_faces[face_old_pos_id]) double_use_faces[face_old_pos_id] = []; + double_use_faces[face_old_pos_id].push([element, face]); + } + let x = 0; + let y = 0; + switch (fkey) { + case 'north': x = element.size(0); y = element.size(1); break; + case 'east': x = element.size(2); y = element.size(1); break; + case 'south': x = element.size(0); y = element.size(1); break; + case 'west': x = element.size(2); y = element.size(1); break; + case 'up': x = element.size(0); y = element.size(2); break; + case 'down': x = element.size(0); y = element.size(2); break; + } + let face_rect = new faceRect(element, fkey, tex, x, y, face_old_pos_id); + face_list.push(face_rect); } - let face_rect = new faceRect(element, fkey, tex, x, y, face_old_pos_id); - face_list.push(face_rect); } } } else { @@ -1108,16 +814,24 @@ const TextureGenerator = { } }) - if (face_list.length == 0) { + if (face_list.length == 0 && box_uv_templates.length == 0) { Blockbench.showMessage('message.no_valid_elements', 'center') return; } + if (options.box_uv && !Project.box_uv) { + Project.box_uv = true; + } + + box_uv_templates.sort(function(a,b) { + return b.template_size - a.template_size; + }) + if (options.rearrange_uv) { - var extend_x = 0; - var extend_y = 0; - var fill_map = {}; + let extend_x = 0; + let extend_y = 0; + let fill_map = {}; // When appending to template, mark already used spots as occupied if (makeTexture instanceof Texture) { @@ -1147,6 +861,15 @@ const TextureGenerator = { }) } + + var max_size = Math.max(extend_x, extend_y); + if (options.power) { + max_size = Math.getNextPower(max_size, 16); + } else { + max_size = Math.ceil(max_size/16)*16; + } + new_resolution = [max_size, max_size]; + // Check for double occupancy if (options.double_use) { function findFaceListEntry(data, face_old_pos_id) { @@ -1185,6 +908,24 @@ const TextureGenerator = { return b.size - a.size; }) + + /*function forTemplatePixel(tpl, sx, sy, cb) { + let w = tpl.width; + let h = tpl.height; + if (options.padding) { + w++; h++; + } + for (var x = 0; x < w; x++) { + for (var y = 0; y < h; y++) { + if (y >= tpl.z || (x >= tpl.z && x < (tpl.z + 2*tpl.x + (options.padding ? 1 : 0)))) { + if (cb(sx+x, sy+y)) return; + } + } + } + }*/ + + + function occupy(x, y) { if (!fill_map[x]) fill_map[x] = {} fill_map[x][y] = true @@ -1238,6 +979,18 @@ const TextureGenerator = { return true; } } + box_uv_templates.forEach(tpl => { + let vert = extend_x > extend_y; + //Scan for empty spot + + for (let line = 0; line < 2e3; line++) { + for (let space = 0; space <= line; space++) { + if (place(tpl, space, line)) return; + if (space == line) continue; + if (place(tpl, line, space)) return; + } + } + }) face_list.forEach(tpl => { //Scan for empty spot for (var line = 0; line < 2e3; line++) { @@ -1293,6 +1046,8 @@ const TextureGenerator = { canvas.height = new_resolution[1] * res_multiple; } + TextureGenerator.old_project_resolution = [Project.texture_width, Project.texture_height] + function getPolygonOccupationMatrix(vertex_uv_faces, width, height) { let matrix = {}; function vSub(a, b) { @@ -1649,6 +1404,26 @@ const TextureGenerator = { applyUV(ftemp, ftemp); } }) + box_uv_templates.forEach((t) => { + if (options.rearrange_uv) { + t.obj.uv_offset[0] = t.posx; + t.obj.uv_offset[1] = t.posy; + if (Project.box_uv || Format.optional_box_uv) t.obj.box_uv = true; + //if true, dupes must be flipped + let reverse_flip = t.obj.mirror_uv; + t.obj.mirror_uv = false; + + if (t.duplicates) { + t.duplicates.forEach(dupl => { + if (dupl.obj !== t.obj) { + dupl.obj.mirror_uv = dupl.obj.mirror_uv !== reverse_flip; + } + }) + } + } + TextureGenerator.paintCubeBoxTemplate(t.obj, options.texture, canvas, t, false, res_multiple); + }) + var dataUrl = canvas.toDataURL() let texture = typeof makeTexture == 'function' ? makeTexture(dataUrl) : makeTexture; if (makeTexture instanceof Texture) { @@ -1673,6 +1448,23 @@ const TextureGenerator = { } }) } + if (options.rearrange_uv) { + box_uv_templates.forEach(function(t) { + t.obj.uv_offset[0] = t.posx; + t.obj.uv_offset[1] = t.posy; + + if (t.duplicates) { + t.duplicates.forEach(dupl => { + if (dupl.obj !== t.obj) { + dupl.obj.uv_offset[0] = t.posx; + dupl.obj.uv_offset[1] = t.posy; + } + }) + } + }) + } + + updateSelection() setTimeout(Canvas.updatePixelGrid, 1); Undo.finishEdit(makeTexture instanceof Texture ? 'Append to template' : 'Create template', { @@ -1683,6 +1475,18 @@ const TextureGenerator = { uv_only: true, uv_mode: true }) + // Warning + if (element_list.find(element => { + if (element instanceof Cube == false || !element.box_uv) return false; + let size = element.size(); + return (size[0] > 0.001 && size[0] < 0.999) || (size[1] > 0.001 && size[1] < 0.999) || (size[2] > 0.001 && size[2] < 0.999) + })) { + Blockbench.showMessageBox({ + title: 'message.small_face_dimensions.title', + message: tl('message.small_face_dimensions.message') + (Format.optional_box_uv ? '\n\n' + tl('message.small_face_dimensions.face_uv') : ''), + icon: 'warning', + }) + } }, generateColorMapTemplate(options, cb) { @@ -1727,7 +1531,7 @@ const TextureGenerator = { } new_resolution = [max_size, max_size]; - if (background_color.getAlpha() != 0) { + if (background_color && background_color.getAlpha() != 0) { background_color = background_color.toRgbString() } var canvas = document.createElement('canvas') diff --git a/lang/en.json b/lang/en.json index 4e33dcda6..8a1f6f2ea 100644 --- a/lang/en.json +++ b/lang/en.json @@ -365,7 +365,6 @@ "message.keymap_loaded": "Keymap loaded", "message.no_animation_to_import": "No animations to import", "message.copy_paste_tool_viewport": "This tool can only be used in the 2D editor", - "message.meshes_and_box_uv": "Meshes are not compatible with Box UV. Go to File > Project... and switch to Per-face UV.", "message.no_valid_elements": "No valid elements selected...", "message.palette_locked": "The palette is locked", "message.knife_tool.confirm": "Press %0 or click here to apply Knife Tool", @@ -622,8 +621,6 @@ "dialog.create_texture.type.color_map": "Solid Color Template", "dialog.create_texture.rearrange_uv": "Rearrange UV", "dialog.create_texture.rearrange_uv.desc": "Create a new UV arrangement to give every face its own spot on the texture", - "dialog.create_texture.compress": "Compress Template", - "dialog.create_texture.compress.desc": "Arrange the UV maps in a dense layout to minimize the texture size", "dialog.create_texture.power": "Power-of-2 Size", "dialog.create_texture.power.desc": "Lock the automatic texture size to a power-of-2, such as 64 or 128. This is required by some renderers", "dialog.create_texture.double_use": "Keep Multi Texture Occupancy", From 2793ef2848aa899741b542171490e4054051ea42 Mon Sep 17 00:00:00 2001 From: Aza Date: Sat, 15 Jun 2024 21:54:44 +0200 Subject: [PATCH 036/153] simplify code in actions.js --- js/interface/actions.js | 42 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/js/interface/actions.js b/js/interface/actions.js index 9e009e776..15d8a60bb 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -1896,29 +1896,25 @@ const BARS = { icon: 'shuffle', category: 'edit', condition: {modes: ['edit' ], project: true}, - click: function () { - let setRandomGroupColor = function() { - let randomColor = function() { return Math.floor(Math.random() * markerColors.length)} - let elements = Outliner.selected.filter(element => element.setColor) - Undo.initEdit({outliner: true, elements: elements, selection: true}) - Group.all.forEach(group => { - if (group.selected) { - let lastColor = group.color - // Ensure chosen group color is never the same as before - do group.color = randomColor(); - while (group.color === lastColor) - } - }) - elements.forEach(element => { - let lastColor = element.color - // Ensure chosen element color is never the same as before - do element.setColor(randomColor()) - while (element.color === lastColor) - }) - Undo.finishEdit('Change group marker color') - } - - setRandomGroupColor(); + click: function() { + let randomColor = function() { return Math.floor(Math.random() * markerColors.length)} + let elements = Outliner.selected.filter(element => element.setColor) + Undo.initEdit({outliner: true, elements: elements, selection: true}) + Group.all.forEach(group => { + if (group.selected) { + let lastColor = group.color + // Ensure chosen group color is never the same as before + do group.color = randomColor(); + while (group.color === lastColor) + } + }) + elements.forEach(element => { + let lastColor = element.color + // Ensure chosen element color is never the same as before + do element.setColor(randomColor()) + while (element.color === lastColor) + }) + Undo.finishEdit('Change marker color') } }) From d201be8906cd9687e9c39f311ed60417f3487cb6 Mon Sep 17 00:00:00 2001 From: Aza Date: Sat, 15 Jun 2024 22:02:35 +0200 Subject: [PATCH 037/153] fixed icon using Material Icons instead of FontAwesome 6 --- js/interface/actions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/interface/actions.js b/js/interface/actions.js index 15d8a60bb..89f33f4ce 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -1893,7 +1893,7 @@ const BARS = { keybind: new Keybind({key: 's', alt: true}), }) new Action('randomize_marker_colors', { - icon: 'shuffle', + icon: 'fa-shuffle', category: 'edit', condition: {modes: ['edit' ], project: true}, click: function() { From 7ee9fbef518bb1ca3b44c5a379903a4ed232218c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 15 Jun 2024 22:26:45 +0200 Subject: [PATCH 038/153] Add warnings for invalid per face UV values in optifine JEM Closes #2381 --- js/io/formats/optifine_jem.js | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/js/io/formats/optifine_jem.js b/js/io/formats/optifine_jem.js index cec15cc70..fd3c66fe4 100644 --- a/js/io/formats/optifine_jem.js +++ b/js/io/formats/optifine_jem.js @@ -383,4 +383,47 @@ BARS.defineActions(function() { }) }) +new ValidatorCheck('optifine_jem_uv', { + condition: {formats: ['optifine_entity']}, + update_triggers: ['update_selection'], + run() { + for (let cube of Cube.all) { + let select_cube_button = { + name: 'Select Cube', + icon: 'fa-cube', + click() { + Validator.dialog.hide(); + cube.select(); + } + }; + for (let fkey in cube.faces) { + let face = cube.faces[fkey]; + let uv_size = face.uv_size; + let size_issue, offset_issue; + for (let i of [0, 1]) { + let size = uv_size[i]; + if (Math.roundTo(size, 4) && Math.abs(size) < 1) { + size_issue = true; + } + if (Math.roundTo(face.uv[i], 4) % 1) { + offset_issue = true; + } + } + if (size_issue) { + this.warn({ + message: `The face "${fkey}" on cube "${cube.name}" has invalid UV sizes. UV sizes with an absolute value below 1 but not 0 are invalid in OptiFine models.`, + buttons: [select_cube_button] + }) + } + if (offset_issue) { + this.warn({ + message: `The face "${fkey}" on cube "${cube.name}" has an invalid UV offset. OptiFine only supports integer values as UV offset.`, + buttons: [select_cube_button] + }) + } + } + } + } +}) + })() From dd104c178a974a2228031725713562fe8483b0db Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 16 Jun 2024 18:49:46 +0200 Subject: [PATCH 039/153] added basis for incremental Saving --- js/interface/menu_bar.js | 1 + js/io/formats/bbmodel.js | 24 ++++++++++++++++++++++++ js/io/project.js | 1 + lang/en.json | 2 ++ 4 files changed, 28 insertions(+) diff --git a/js/interface/menu_bar.js b/js/interface/menu_bar.js index 7d1ce409e..9c8b74f1e 100644 --- a/js/interface/menu_bar.js +++ b/js/interface/menu_bar.js @@ -140,6 +140,7 @@ const MenuBar = { new MenuSeparator('project'), 'save_project', 'save_project_as', + 'save_project_incremental', 'convert_project', 'close_project', new MenuSeparator('import_export'), diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index c1b86635d..8113a1ff4 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -696,6 +696,30 @@ BARS.defineActions(function() { } }) + new Action('save_project_incremental', { + icon: 'difference', + category: 'file', + keybind: new Keybind({key: 's', shift: true, alt: true}), + condition: () => Project, + click: function () { + saveTextures(true) + if (isApp && Project.save_path) { + let projectTailRegex = /.bbmodel/gm; + let projectVerRegex = /([0-9]+).bbmodel/gm; + let projectVerMatch = projectVerRegex.exec(Project.save_path); + + if (projectVerMatch) { + let projectVer = parseInt(projectVerMatch[1]); // Parse & store project ver int (capturing group 1) + codec.write(codec.compile(), Project.save_path.replace(projectVerRegex, `${projectVer + 1}.bbmodel`)); + } else { + codec.write(codec.compile(), Project.save_path.replace(projectTailRegex, "_1.bbmodel")); + } + } else { + codec.export() + } + } + }) + new Action('save_project_as', { icon: 'save', category: 'file', diff --git a/js/io/project.js b/js/io/project.js index bbbd834b9..a879e3f45 100644 --- a/js/io/project.js +++ b/js/io/project.js @@ -551,6 +551,7 @@ ModelProject.prototype.menu = new Menu([ new MenuSeparator('save'), 'save_project', 'save_project_as', + 'save_project_incremental', 'export_over', 'share_model', new MenuSeparator('overview'), diff --git a/lang/en.json b/lang/en.json index 1100de5f5..735e0c804 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1306,6 +1306,8 @@ "action.save_project.desc": "Saves the current model as a project file", "action.save_project_as": "Save Project As", "action.save_project_as.desc": "Saves the current model as a project file at a new location", + "action.save_project_incremental": "Save Project With Increment", + "action.save_project_incremental.desc": "Saves the current model as a project file with an increment (ex: project_2.bbmodel)", "action.import_project": "Import Project", "action.import_project.desc": "Import another project from a .bbmodel file into the current project", "action.export_over": "Save Model", From 7bffb0f623fbaeda4b9b596e4df07d4c8e478e77 Mon Sep 17 00:00:00 2001 From: Aza Date: Sun, 16 Jun 2024 18:57:30 +0200 Subject: [PATCH 040/153] added comment --- js/io/formats/bbmodel.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index 8113a1ff4..56cf2b5e2 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -708,6 +708,9 @@ BARS.defineActions(function() { let projectVerRegex = /([0-9]+).bbmodel/gm; let projectVerMatch = projectVerRegex.exec(Project.save_path); + // Check if project file has version patterns in it (right before ".bbmodel") + // if it does, grab & increment it + // if it doesn't, add it if (projectVerMatch) { let projectVer = parseInt(projectVerMatch[1]); // Parse & store project ver int (capturing group 1) codec.write(codec.compile(), Project.save_path.replace(projectVerRegex, `${projectVer + 1}.bbmodel`)); From 92588a8037c426541e925a6c5b209dbf23e907a6 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 20 Jun 2024 20:48:49 +0200 Subject: [PATCH 041/153] Add dialog progress bar capability --- css/general.css | 4 ++-- js/interface/dialog.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/css/general.css b/css/general.css index e53965403..8a9f3e19c 100644 --- a/css/general.css +++ b/css/general.css @@ -28,13 +28,13 @@ } .progress_bar { background-color: var(--color-back); - height: 20px; + height: 18px; margin-top: 12px; } .progress_bar_inner { background-color: var(--color-accent); height: 100%; - width: 0px; + width: calc(100% * var(--progress)); } .accent_color { color: var(--color-accent); diff --git a/js/interface/dialog.js b/js/interface/dialog.js index 1fe0abbdf..74ec5ac97 100644 --- a/js/interface/dialog.js +++ b/js/interface/dialog.js @@ -545,6 +545,18 @@ window.Dialog = class Dialog { this.sidebar = options.sidebar ? new DialogSidebar(options.sidebar, this) : null; this.title_menu = options.title_menu || null; + if (options.progress_bar) { + this.progress_bar = { + setProgress: (progress) => { + this.progress_bar.progress = progress; + if (this.progress_bar.node) { + this.progress_bar.node.style.setProperty('--progress', progress); + } + }, + progress: options.progress_bar.progress ?? 0, + node: null + } + } this.width = options.width this.draggable = options.draggable @@ -798,6 +810,14 @@ window.Dialog = class Dialog { this.object.style.setProperty('--max_label_width', max_width + 'px'); } + if (this.progress_bar) { + this.progress_bar.node = Interface.createElement('div', {class: 'progress_bar'}, + Interface.createElement('div', {class: 'progress_bar_inner'}) + ) + this.progress_bar.setProgress(this.progress_bar.progress); + this.object.querySelector('content.dialog_content').append(this.progress_bar.node); + } + if (this.buttons.length) { let buttons = [] From ec17d96e83d93f7c0d091a7af2dbf8cab9f3bfb4 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 20 Jun 2024 21:04:31 +0200 Subject: [PATCH 042/153] Make texture generator async, add progress bar --- js/texturing/texture_generator.js | 61 +++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index 1ba652344..8e0fba93d 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -323,7 +323,7 @@ const TextureGenerator = { } }, //Face Template - generateTemplate(options, makeTexture) { + async generateTemplate(options, makeTexture) { let res_multiple = options.resolution / 16; let background_color = options.color; let new_resolution = []; @@ -376,6 +376,28 @@ const TextureGenerator = { return uv_id + ':' + (texture ? texture.uuid : 'blank'); } + let cancelled = false; + const progress_dialog = new Dialog('generate_template_progress', { + title: 'action.create_texture', + cancel_on_click_outside: false, + progress_bar: {}, + buttons: ['dialog.cancel'], + onCancel() { + Undo.cancelEdit(false); + cancelled = true; + Blockbench.setProgress(); + } + }); + progress_dialog.show(); + + let last_timeout = Date.now(); + async function setProgress(progress) { + Blockbench.setProgress(progress); + progress_dialog.progress_bar.setProgress(progress ?? 0); + await new Promise(resolve => setTimeout(resolve, 1)); + last_timeout = Date.now(); + } + Undo.initEdit({ textures: makeTexture instanceof Texture ? [makeTexture] : [], elements: element_list, @@ -979,28 +1001,41 @@ const TextureGenerator = { return true; } } - box_uv_templates.forEach(tpl => { - let vert = extend_x > extend_y; - //Scan for empty spot + let total = (box_uv_templates.length * 6 + face_list.length) * 1.05; + let handled = 0; + outer_loop: + for (let tpl of box_uv_templates) { + if (Date.now() - last_timeout > 24) { + await setProgress(handled/total); + } + if (cancelled) return; + handled += 6; + //Scan for empty spot for (let line = 0; line < 2e3; line++) { for (let space = 0; space <= line; space++) { - if (place(tpl, space, line)) return; + if (place(tpl, space, line)) continue outer_loop; if (space == line) continue; - if (place(tpl, line, space)) return; + if (place(tpl, line, space)) continue outer_loop; } } - }) - face_list.forEach(tpl => { + } + outer_loop2: + for (let tpl of face_list) { + if (Date.now() - last_timeout > 24) { + await setProgress(handled/total); + } + if (cancelled) return; + handled += 1; //Scan for empty spot for (var line = 0; line < 2e3; line++) { for (var space = 0; space <= line; space++) { - if (place(tpl, space, line)) return; + if (place(tpl, space, line)) continue outer_loop2; if (space == line) continue; - if (place(tpl, line, space)) return; + if (place(tpl, line, space)) continue outer_loop2; } } - }) + } var max_size = Math.max(extend_x, extend_y) @@ -1028,6 +1063,8 @@ const TextureGenerator = { }) } + await setProgress(1); + if (background_color) { background_color = background_color.toRgbString() } @@ -1475,6 +1512,8 @@ const TextureGenerator = { uv_only: true, uv_mode: true }) + progress_dialog.close(); + setProgress(); // Warning if (element_list.find(element => { if (element instanceof Cube == false || !element.box_uv) return false; From e501d7b700d83844f8049c7c954f3dbde16f0e9d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 20 Jun 2024 23:57:25 +0200 Subject: [PATCH 043/153] Improved theme selector Add filter to allow desktop-only themes Add icon to show where theme came from Move theme author below theme name Add Open In File Explorer option for theme files --- css/dialogs.css | 17 ++++++++++++----- js/interface/themes.js | 29 +++++++++++++++++++++++++++-- src/index.js | 3 +++ 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index ad9d0b660..7ce1ede3c 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -787,7 +787,7 @@ float: left; padding: 6px; border: 2px solid transparent; - background-color: var(--color-ui); + background-color: var(--color-back); color: var(--color-text); cursor: pointer; } @@ -799,16 +799,23 @@ #theme_list .theme.selected { border-color: var(--color-accent); } + #theme_list .theme > .theme_preview { + margin-bottom: 4px; + } #theme_list .theme * { cursor: inherit; } - .theme_name, .theme_author { - float: left; - margin-top: 4px; - margin-bottom: -4px; + .theme_name { + display: inline-block; } .theme_author { + color: var(--color-subtle_text); + } + .theme_type_icon { float: right; + margin-right: 5px; + } + .theme_type_icon > i { color: var(--color-subtle_text); } diff --git a/js/interface/themes.js b/js/interface/themes.js index 1c56c7e51..c34482c98 100644 --- a/js/interface/themes.js +++ b/js/interface/themes.js @@ -57,6 +57,7 @@ const CustomTheme = { data.id = file.name.replace(/\.\w+$/, ''); if (!data.name) data.name = data.id; data.sideloaded = true; + data.source = 'file'; data.path = file.path; CustomTheme.themes.push(data); @@ -114,7 +115,9 @@ const CustomTheme = { try { let {content} = await $.getJSON(file.git_url); let theme = JSON.parse(patchedAtob(content)); + if (theme.desktop_only && Blockbench.isMobile) return false; theme.id = file.name.replace(/\.\w+/, ''); + theme.source = 'repository'; CustomTheme.themes.push(theme); } catch (err) { console.error(err); @@ -128,7 +131,12 @@ const CustomTheme = { backup: '', data: CustomTheme.data, open_category: 'select', - themes: CustomTheme.themes + themes: CustomTheme.themes, + theme_icons: { + built_in: '', + repository: 'globe', + file: 'draft', + } }, components: { VuePrismEditor @@ -193,6 +201,19 @@ const CustomTheme = { openContextMenu(theme, event) { if (!theme.sideloaded) return; let menu = new Menu([ + { + name: 'menu.texture.folder', + icon: 'folder', + condition: isApp, + click: () => { + if (!isApp || !theme.path) return; + if (!fs.existsSync(theme.path)) { + Blockbench.showQuickMessage('texture.error.file'); + return; + } + shell.showItemInFolder(theme.path); + } + }, { name: 'generic.remove', icon: 'clear', @@ -221,7 +242,7 @@ const CustomTheme = {
          {{ tl('layout.restore_backup', [backup]) }} - clear + clear

          ${tl('layout.select')}

          @@ -247,6 +268,9 @@ const CustomTheme = {
          {{ theme.name }}
          +
          + {{ theme_icons[theme.source] }} +
          {{ theme.author }}
          @@ -504,6 +528,7 @@ const CustomTheme = { if (!data.name) data.name = data.id; data.sideloaded = true; + data.source = 'file'; data.path = file.path; CustomTheme.loadTheme(data); diff --git a/src/index.js b/src/index.js index 25399f01d..3a641710f 100644 --- a/src/index.js +++ b/src/index.js @@ -19,6 +19,9 @@ window.CustomThemeOptions = [ LightTheme, ContrastTheme ] +for (let theme of window.CustomThemeOptions) { + theme.source = 'built_in'; +} import { GIFEncoder, quantize, applyPalette } from 'gifenc' window.GIFEnc = { GIFEncoder, quantize, applyPalette }; From f34dfde12061f32d970fb48bf076822c2e5a990e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 23 Jun 2024 14:09:34 +0200 Subject: [PATCH 044/153] Multi-select flipbook pages --- css/dialogs.css | 4 ++ js/texturing/texture_flipbook.js | 87 ++++++++++++++++++++++++++------ 2 files changed, 76 insertions(+), 15 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 7ce1ede3c..fb89fa884 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -2232,6 +2232,10 @@ background-color: var(--color-accent); color: var(--color-accent_text); } + .flipbook_frame.selected { + background-color: var(--color-accent); + color: var(--color-accent_text); + } .flipbook_frame > img { cursor: inherit; pointer-events: none; diff --git a/js/texturing/texture_flipbook.js b/js/texturing/texture_flipbook.js index 860a9fa54..780e4d7b2 100644 --- a/js/texturing/texture_flipbook.js +++ b/js/texturing/texture_flipbook.js @@ -161,6 +161,7 @@ BARS.defineActions(function() { let texture = Texture.selected; let frametime = 1000/settings.texture_fps.value; let gauge = texture.width; + let copied; if (Format.texture_mcmeta && Texture.getDefault()) { let tex = Texture.getDefault(); frametime = Math.max(tex.frame_time, 1) * 50; @@ -260,6 +261,7 @@ BARS.defineActions(function() { let frame = { uuid: guid(), initial_index: i, + selected: false, canvas, ctx, data_url, }; @@ -333,6 +335,9 @@ BARS.defineActions(function() { methods: { togglePlay() { if (!this.playing) { + for (let frame of this.frames) { + frame.selected = false; + } this.playing = true; let frametime = Math.clamp(1000 / this.fps, 2, 1000); this.interval = setInterval(() => { @@ -387,21 +392,52 @@ BARS.defineActions(function() { content_vue.stride = Math.clamp(Math.round(data.stride), 1, texture.height); let new_frames = splitIntoFrames(content_vue.stride); content_vue.frames.replace(new_frames); + content_vue.selected_frames.empty(); } }).show(); }, + select(index, event) { + if (!this.frames[index]) return; + + let previous_index = this.frame_index; + this.frame_index = index; + + if (event && event.ctrlOrCmd) { + this.frames[index].selected = true; + + } else if (event && event.shiftKey) { + let start_index = Math.min(index, previous_index); + let end_index = Math.max(index, previous_index); + for (let i = start_index; i <= end_index; i++) { + this.frames[i].selected = true; + } + + } else { + for (let frame of this.frames) { + frame.selected = false; + } + this.frames[index].selected = true; + + } + }, duplicateFrame() { - let frame = this.frames[this.frame_index]; - if (!frame) return; - let copy = Object.assign({}, frame); - copy.uuid = guid(); - this.frames.splice(this.frame_index+1, 0, copy); - this.frame_index++; + let frames = this.frames.filter(frame => frame.selected); + if (!frames.length) return; + let insert_index = this.frames.indexOf(frames.last()) + 1; + for (let frame of frames) { + let copy = Object.assign({}, frame); + copy.uuid = guid(); + frame.selected = false; + this.frames.splice(insert_index, 0, copy); + this.frame_index = insert_index; + insert_index++; + } }, deleteFrame() { - let frame = this.frames[this.frame_index]; - if (!frame) return; - this.frames.remove(frame); + for (let frame of this.frames.slice()) { + if (!frame.selected) continue; + this.frames.remove(frame); + } this.frame_index = Math.min(this.frame_index, this.frames.length-1); }, createFrame() { @@ -413,8 +449,15 @@ BARS.defineActions(function() { }; this.frame_index++; this.frames.splice(this.frame_index, 0, frame); + this.select(this.frame_index); }, copy() { + copied = []; + for (let frame of this.frames) { + if (!frame.selected) continue; + copied.push(frame); + } + let selected_frame = this.frames[this.frame_index]; if (!selected_frame) return; Clipbench.image = { @@ -434,6 +477,7 @@ BARS.defineActions(function() { } }, paste() { + let insert_index = this.frames.findLastIndex(f => f.selected) + 1; let addFrame = (data_url) => { let canvas_frame = new CanvasFrame(gauge, this.stride); canvas_frame.loadFromURL(data_url); @@ -442,11 +486,24 @@ BARS.defineActions(function() { canvas: canvas_frame.canvas, data_url, }; - this.frame_index++; - this.frames.splice(this.frame_index, 0, frame); + this.frames.splice(insert_index, 0, frame); + this.select(insert_index); } - - if (isApp) { + + if (copied) { + for (let frame of this.frames) { + frame.selected = false; + } + for (let original of copied) { + let copy = Object.assign({}, original); + copy.uuid = guid(); + copy.selected = true; + this.frames.splice(insert_index, 0, copy); + this.frame_index = insert_index; + insert_index++; + } + + } else if (isApp) { var image = clipboard.readImage().toDataURL(); addFrame(image); } else { @@ -557,8 +614,8 @@ BARS.defineActions(function() {
          • From e9e088d12b6c43bb8b9f32f36f52782e056f8545 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 23 Jun 2024 14:10:49 +0200 Subject: [PATCH 045/153] Select bar search field sticking to the top Closes #2391 --- css/general.css | 4 ++++ js/interface/menu.js | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/css/general.css b/css/general.css index 8a9f3e19c..1f824d2d2 100644 --- a/css/general.css +++ b/css/general.css @@ -768,6 +768,10 @@ .contextMenu .menu_search_bar { padding: 0; display: flex; + position: sticky; + top: 0; + background-color: inherit; + border-bottom: 2px solid var(--color-menu_separator); } .menu_search_bar > input { color: inherit; diff --git a/js/interface/menu.js b/js/interface/menu.js index f618c0a7b..ca6ec9797 100644 --- a/js/interface/menu.js +++ b/js/interface/menu.js @@ -238,7 +238,6 @@ class Menu { let search_button = Interface.createElement('div', {}, Blockbench.getIconNode('search')); let search_bar = Interface.createElement('li', {class: 'menu_search_bar'}, [input, search_button]); menu_node.append(search_bar); - menu_node.append(Interface.createElement('li', {class: 'menu_separator'})); let object_list = []; list.forEach(function(s2, i) { From 193a3f64557f895ced413541392152ccbb503ef9 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 24 Jun 2024 22:54:35 +0200 Subject: [PATCH 046/153] Action variation modifier system --- css/dialogs.css | 18 ++++++++++ js/animations/keyframe.js | 14 ++++++-- js/copy_paste.js | 29 ++++++++++++++-- js/interface/actions.js | 16 +++++++-- js/interface/keyboard.js | 71 +++++++++++++++++++++++++++++++++++---- js/texturing/uv.js | 9 ++--- lang/en.json | 6 +++- src/languages.js | 4 ++- 8 files changed, 145 insertions(+), 22 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index fb89fa884..1ca20223f 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -719,6 +719,24 @@ width: 25px; float: right; } + .keybind_item_variations > li { + display: flex; + margin-bottom: 2px; + } + .keybind_item_variations > li > label { + color: var(--color-subtle_text); + padding: 3px; + padding-left: 15px; + width: 30px; + } + .keybind_item_variations > li > * { + flex-grow: 1; + flex-shrink: 0; + width: 0; + } + .keybind_item_variations > li > bb-select { + margin-right: 54px; + } /*Colors*/ dialog#theme .dialog_wrapper { diff --git a/js/animations/keyframe.js b/js/animations/keyframe.js index 107fb536c..067235832 100644 --- a/js/animations/keyframe.js +++ b/js/animations/keyframe.js @@ -795,7 +795,14 @@ BARS.defineActions(function() { icon: 'add_circle', category: 'animation', condition: {modes: ['animate']}, - keybind: new Keybind({key: 'q', shift: null}), + keybind: new Keybind({key: 'q'}, { + reset_values: 'shift' + }), + variations: { + reset_values: { + name: 'action.add_keyframe.reset_values' + } + }, click: function (event) { var animator = Timeline.selected_animator; if (!animator) return; @@ -806,8 +813,9 @@ BARS.defineActions(function() { if (Timeline.vue.graph_editor_open && Prop.active_panel == 'timeline' && animator.channels[Timeline.vue.graph_editor_channel]) { channel = Timeline.vue.graph_editor_channel; } - animator.createKeyframe((event && (event.shiftKey || Pressing.overrides.shift)) ? {} : null, Timeline.time, channel, true); - if (event && (event.shiftKey || Pressing.overrides.shift)) { + let reset_values = BarItems.add_keyframe.keybind.additionalModifierTriggered(event) == 'reset_values'; + animator.createKeyframe(reset_values ? {} : null, Timeline.time, channel, true); + if (reset_values) { Animator.preview(); } } diff --git a/js/copy_paste.js b/js/copy_paste.js index e12a54df5..3201134fc 100644 --- a/js/copy_paste.js +++ b/js/copy_paste.js @@ -433,7 +433,15 @@ BARS.defineActions(function() { category: 'edit', work_in_dialog: true, condition: () => Clipbench.getCopyType(1, true) || SharedActions.condition('copy'), - keybind: new Keybind({key: 'c', ctrl: true, shift: null}), + keybind: new Keybind({key: 'c', ctrl: true}, { + multiple: 'shift' + }), + variations: { + multiple: { + name: 'action.copy.multiple', + description: 'action.copy.multiple.desc', + } + }, click(event) { Clipbench.copy(event) } @@ -443,7 +451,15 @@ BARS.defineActions(function() { category: 'edit', work_in_dialog: true, condition: () => Clipbench.getCopyType(1, true) || SharedActions.condition('copy'), - keybind: new Keybind({key: 'x', ctrl: true, shift: null}), + keybind: new Keybind({key: 'x', ctrl: true}, { + multiple: 'shift' + }), + variations: { + multiple: { + name: 'action.copy.multiple', + description: 'action.copy.multiple.desc', + } + }, click(event) { Clipbench.copy(event, true) } @@ -453,7 +469,14 @@ BARS.defineActions(function() { category: 'edit', work_in_dialog: true, condition: () => Clipbench.getCopyType(2, true) || SharedActions.condition('paste'), - keybind: new Keybind({key: 'v', ctrl: true, shift: null}), + keybind: new Keybind({key: 'v', ctrl: true}, { + multiple: 'shift' + }), + variations: { + multiple: { + name: 'action.paste.multiple', + } + }, click(event) { Clipbench.paste(event) } diff --git a/js/interface/actions.js b/js/interface/actions.js index 8b1e0217b..3772d905a 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -38,12 +38,13 @@ class BarItem extends EventSystem { if (data.keybind) { this.default_keybind = data.keybind } - this.keybind = new Keybind() + this.keybind = new Keybind(null, this.default_keybind?.variations); if (Keybinds.stored[this.id]) { this.keybind.set(Keybinds.stored[this.id], this.default_keybind); } else { this.keybind.set(data.keybind); } + this.variations = data.variations; this.keybind.setAction(this.id) this.work_in_dialog = data.work_in_dialog === true this.uses = 0; @@ -219,10 +220,11 @@ class KeybindItem { this.default_keybind = data.keybind } if (Keybinds.stored[this.id]) { - this.keybind = new Keybind().set(Keybinds.stored[this.id], this.default_keybind); + this.keybind = new Keybind(null, this.default_keybind?.variations).set(Keybinds.stored[this.id], this.default_keybind); } else { - this.keybind = new Keybind().set(data.keybind); + this.keybind = new Keybind(null, this.default_keybind?.variations).set(data.keybind); } + this.variations = data.variations; Keybinds.actions.push(this) Keybinds.extra[this.id] = this; @@ -1764,6 +1766,14 @@ const BARS = { category: 'navigate', keybind: new Keybind({key: Blockbench.isTouch ? 0 : 1, ctrl: null, shift: null, alt: null}) }) + /*new KeybindItem('preview_select', { + category: 'navigate', + keybind: new Keybind({key: Blockbench.isTouch ? 0 : 1}, { + multiple: 'ctrl', + range: 'shift', + loop: 'alt', + }) + })*/ new KeybindItem('preview_rotate', { category: 'navigate', keybind: new Keybind({key: 1}) diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index 569d05d75..ec3a21af7 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -9,7 +9,7 @@ class Keybind { * @param {boolean} keys.alt Alt key * @param {boolean} keys.meta Meta key */ - constructor(keys) { + constructor(keys, variations) { this.key = -1; this.ctrl = false; this.shift = false; @@ -27,6 +27,12 @@ class Keybind { } this.set(keys) } + if (variations) { + this.variations = {}; + for (let option in variations) { + this.variations[option] = variations[option]; + } + } } set(keys, dflt) { if (!keys || typeof keys !== 'object') return this; @@ -41,6 +47,11 @@ class Keybind { if (dflt.alt == null) this.alt = null; if (dflt.meta == null) this.meta = null; } + if (keys.variations && this.variations) { + for (let option in keys.variations) { + this.variations[option] = keys.variations[option]; + } + } this.label = this.getText() TickUpdates.keybind_conflicts = true; return this; @@ -57,7 +68,7 @@ class Keybind { } save(save) { if (this.action) { - var obj = { + let obj = { key: this.key } if (this.ctrl) obj.ctrl = true @@ -65,6 +76,13 @@ class Keybind { if (this.alt) obj.alt = true if (this.meta) obj.meta = true + if (this.variations && Object.keys(this.variations)) { + obj.variations = {}; + for (let option in this.variations) { + obj.variations[option] = this.variations[option]; + } + } + let key = this.sub_id ? (this.action + '.' + this.sub_id) : this.action; Keybinds.stored[key] = obj if (save !== false) { @@ -205,14 +223,34 @@ class Keybind { return this; } isTriggered(event) { + let modifiers_used = new Set(); + if (this.variations) { + for (let option in this.variations) { + modifiers_used.add(this.variations[option]); + } + } return ( (this.key === event.which || (this.key == 1001 && event instanceof MouseEvent)) && - (this.ctrl === (event.ctrlKey || Pressing.overrides.ctrl) || this.ctrl === null ) && - (this.shift === (event.shiftKey || Pressing.overrides.shift)|| this.shift === null ) && - (this.alt === (event.altKey || Pressing.overrides.alt) || this.alt === null ) && - (this.meta === event.metaKey || this.meta === null ) + (this.ctrl === (event.ctrlKey || Pressing.overrides.ctrl) || this.ctrl === null || modifiers_used.has('ctrl') ) && + (this.shift === (event.shiftKey || Pressing.overrides.shift)|| this.shift === null || modifiers_used.has('shift') ) && + (this.alt === (event.altKey || Pressing.overrides.alt) || this.alt === null || modifiers_used.has('alt') ) && + (this.meta === event.metaKey || this.meta === null || modifiers_used.has('ctrl') ) ) } + additionalModifierTriggered(event) { + if (!this.variations) return; + for (let option in this.variations) { + let key = this.variations[option]; + if ( + (key == 'ctrl' && (event.ctrlOrCmd || Pressing.overrides.ctrl)) || + (key == 'shift' && (event.shiftKey || Pressing.overrides.shift)) || + (key == 'alt' && (event.altKey || Pressing.overrides.alt)) || + (key == 'meta' && (event.metaKey || Pressing.overrides.meta)) + ) { + return option; + } + } + } record() { var scope = this; Keybinds.recording = this; @@ -489,6 +527,12 @@ onVueSetup(function() { structure: Keybinds.structure, open_category: 'navigate', search_term: '', + modifier_options: { + ctrl: tl(Blockbench.platform == 'darwin' ? 'keys.meta' : 'keys.ctrl'), + shift: tl('keys.shift'), + alt: tl('keys.alt'), + none: '', + } }}, methods: { record(item, sub_id) { @@ -538,7 +582,13 @@ onVueSetup(function() { }, hasSubKeybinds(item) { return item.sub_keybinds && typeof item.sub_keybinds === 'object' && Object.keys(item.sub_keybinds).length > 0; - } + }, + getVariationText(action, variation) { + return tl(action.variations?.[variation]?.name, null, variation); + }, + getVariationDescription(action, variation) { + return action.variations?.[variation]?.description ? tl(action.variations[variation].description, null, '') : ''; + }, }, computed: { list() { @@ -602,6 +652,13 @@ onVueSetup(function() {
            clear
        +
          +
        • + + +
        • +
        +
        • {{ sub_keybind.name }}
          diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 283cd5c9a..31b7d7614 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -1175,6 +1175,7 @@ const UVEditor = { copy(event) { let elements = this.getMappableElements(); if (!elements.length) return; + let multiple = BarItems.copy.keybind.additionalModifierTriggered(event) == 'multiple'; UVEditor.clipboard = [] @@ -1203,7 +1204,7 @@ const UVEditor = { } UVEditor.clipboard.push(new_face); } - if (event.shiftKey) { + if (multiple) { for (let key in elements[0].faces) { addToClipboard(key) } @@ -1218,6 +1219,7 @@ const UVEditor = { let elements = UVEditor.getMappableElements(); if (UVEditor.clipboard === null || elements.length === 0) return; + let multiple = BarItems.paste.keybind.additionalModifierTriggered(event) == 'multiple'; Undo.initEdit({elements, uv_only: true}) @@ -1246,15 +1248,14 @@ const UVEditor = { } } - let shifting = (event && event.shiftKey) || Pressing.overrides.shift; - if (shifting || UVEditor.clipboard.length === 1) { + if (multiple || UVEditor.clipboard.length === 1) { let tag = UVEditor.clipboard[0]; elements.forEach(el => { if (el instanceof Cube && el.box_uv) return; if ((el instanceof Cube && tag instanceof CubeFace) || (el instanceof Mesh && tag instanceof MeshFace)) { let selected_faces = UVEditor.getSelectedFaces(el); for (let key in el.faces) { - if (shifting || selected_faces.includes(key)) { + if (multiple || selected_faces.includes(key)) { mergeFace(el, key, tag); } } diff --git a/lang/en.json b/lang/en.json index 8a1f6f2ea..28cd49967 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1365,8 +1365,11 @@ "action.edit_history.desc": "View the editing history and undo or redo steps", "action.copy": "Copy", "action.copy.desc": "Copy the selected selection, face or display settings", + "action.copy.multiple": "Copy All", + "action.copy.multiple.desc": "Copy all available data individually", "action.paste": "Paste", "action.paste.desc": "Paste the selected selection, face or display settings", + "action.paste.multiple": "Paste All", "action.cut": "Cut", "action.cut.desc": "Cut the selected selection, face or display settings", "action.add_cube": "Add Cube", @@ -1814,7 +1817,8 @@ "action.slider_animation_speed": "Playback Speed", "action.slider_animation_speed.desc": "Playback speed of the timeline in percent", "action.add_keyframe": "Add Keyframe", - "action.add_keyframe.desc": "Automatically add a keyframe. Press shift to force default values", + "action.add_keyframe.desc": "Add a keyframe to the selected animator", + "action.add_keyframe.reset_values": "With default values", "action.add_marker": "Set Marker", "action.add_marker.desc": "Set a timeline marker", "action.timeline_setups": "Timeline Setups", diff --git a/src/languages.js b/src/languages.js index c687d259d..2d37b5a51 100644 --- a/src/languages.js +++ b/src/languages.js @@ -37,7 +37,7 @@ const data = { zh_tw: zh_tw, }; -window.tl = function(string, variables) { +window.tl = function(string, variables, default_value) { if (string && string.length > 100) return string; var result = Language.data[string] if (result && result.length > 0) { @@ -52,6 +52,8 @@ window.tl = function(string, variables) { } } return result; + } else if (default_value != undefined) { + return default_value; } else { return string; } From cbfb37f76614d0442eee9a43aae37e404c57f0da Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 29 Jun 2024 15:16:10 +0200 Subject: [PATCH 047/153] Implement bedrock block item display settings --- js/display_mode.js | 31 +++++++++++++++++++++---------- js/io/formats/bedrock.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/js/display_mode.js b/js/display_mode.js index 9784fa0c3..72a298a25 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -28,14 +28,15 @@ class DisplaySlot { } } export() { - var build = {} - if (!this.rotation.allEqual(0)) build.rotation = this.rotation - if (!this.translation.allEqual(0)) build.translation = this.translation - if (!this.scale.allEqual(1) || !this.mirror.allEqual(false)) { + let build = {}; + let export_all = Format.id == 'bedrock_block'; + if (export_all || !this.rotation.allEqual(0)) build.rotation = this.rotation + if (export_all || !this.translation.allEqual(0)) build.translation = this.translation + if (export_all || !this.scale.allEqual(1) || !this.mirror.allEqual(false)) { build.scale = this.scale.slice() if (!this.mirror.allEqual(false)) { - for (var i = 0; i < 3; i++) { + for (let i = 0; i < 3; i++) { build.scale[i] *= this.mirror[i] ? -1 : 1; } } @@ -1229,7 +1230,12 @@ enterDisplaySettings = function() { //Enterung Display Setting Mode, changes th Canvas.updateShading() scene.add(display_area); - if (Project.model_3d) Project.model_3d.position.copy(Canvas.scene.position); + if (Project.model_3d) { + Project.model_3d.position.copy(Canvas.scene.position); + if (Format.id == 'bedrock_block') { + Project.model_3d.position.y = -8; + } + } scene.position.set(0, 0, 0); resizeWindow() //Update panels and sidebars so that the camera can be loaded with the correct aspect ratio @@ -1257,6 +1263,7 @@ exitDisplaySettings = function() { //Enterung Display Setting Mode, changes the }) if (Project.model_3d) { scene.add(Project.model_3d); + Project.model_3d.position.set(0, 0, 0); } display_mode = false; @@ -1349,14 +1356,18 @@ var setDisplayArea = DisplayMode.setBase = function(x, y, z, rx, ry, rz, sx, sy, } DisplayMode.groundAnimation = function() { display_area.rotation.y += 0.015 - ground_timer += 1 - display_area.position.y = 5.5 + Math.sin(Math.PI * (ground_timer / 100)) * Math.PI/2 + ground_timer += 1; + let ground_offset = Format.id == 'bedrock_block' ? 3.8 : 5.5; + display_area.position.y = ground_offset + Math.sin(Math.PI * (ground_timer / 100)) * Math.PI/2 Transformer.center() if (ground_timer === 200) ground_timer = 0; } DisplayMode.updateGUILight = function() { if (!Modes.display) return; - if (display_slot == 'gui' && Project.front_gui_light == true) { + if (Format.id == 'bedrock_block') { + Canvas.global_light_side = 0; + Canvas.updateShading(); + } else if (display_slot == 'gui' && Project.front_gui_light == true) { lights.rotation.set(-Math.PI, 0.6, 0); Canvas.global_light_side = 4; } else { @@ -1748,7 +1759,7 @@ BARS.defineActions(function() { side: true, front: true, }, - condition: () => Modes.display && display_slot === 'gui', + condition: () => Modes.display && display_slot === 'gui' && Format.id == 'java_block', onChange: function(slider) { Project.front_gui_light = slider.get() == 'front'; DisplayMode.updateGUILight(); diff --git a/js/io/formats/bedrock.js b/js/io/formats/bedrock.js index 7659b0ef5..6c8c43056 100644 --- a/js/io/formats/bedrock.js +++ b/js/io/formats/bedrock.js @@ -714,6 +714,10 @@ function calculateVisibleBox() { Project.texture_height = description.texture_height; } + if (data.object.item_display_transforms !== undefined) { + DisplayMode.loadJSON(data.object.item_display_transforms) + } + var bones = {} if (data.object.bones) { @@ -1025,6 +1029,18 @@ let entity_file_codec = new Codec('bedrock_entity_file', { }) function getFormatVersion() { + if (Format.display_mode) { + let has_new_displays = false; + for (let i in DisplayMode.slots) { + let key = DisplayMode.slots[i] + if (Project.display_settings[key] && Project.display_settings[key].export) { + let data = Project.display_settings[key].export(); + if (data) { + return '1.21.20'; + } + } + } + } for (let cube of Cube.all) { for (let fkey in cube.faces) { if (cube.faces[fkey].rotation) return '1.21.0'; @@ -1128,6 +1144,20 @@ var codec = new Codec('bedrock', { if (bones.length) { entitymodel.bones = bones } + + let new_display = {}; + let has_new_displays = false; + for (let i in DisplayMode.slots) { + let key = DisplayMode.slots[i] + if (Project.display_settings[key] && Project.display_settings[key].export) { + new_display[key] = Project.display_settings[key].export(); + if (new_display[key]) has_new_displays = true; + } + } + if (has_new_displays) { + entitymodel.item_display_transforms = new_display + } + this.dispatchEvent('compile', {model: main_tag, options}); if (options.raw) { @@ -1357,6 +1387,7 @@ var block_format = new ModelFormat({ animated_textures: true, animation_files: false, animation_mode: false, + display_mode: true, texture_meshes: true, cube_size_limiter: { rotation_affected: true, From e68783eda071dd8b61b205a6c95cc6edcc531a3e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 2 Jul 2024 21:39:11 +0200 Subject: [PATCH 048/153] Implement animation merging --- js/animations/animation.js | 56 ++++++++++++++++++++++++++++++-------- lang/en.json | 4 +++ 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index 96457763d..ba58eb20b 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -1274,14 +1274,14 @@ BARS.defineActions(function() { let options = await new Promise(resolve => { let animation_options = {}; - for (let animation of animations) { + for (let animation of Animation.all) { if (animation == source_animation) continue; animation_options[animation.uuid] = animation.name; } new Dialog('merge_animation', { name: 'action.merge_animation', form: { - animation: {label: 'data.animation', type: 'select', options: animation_options}, + animation: {label: 'dialog.merge_animation.merge_target', type: 'select', options: animation_options}, }, onConfirm(result) { resolve(result); @@ -1300,6 +1300,7 @@ BARS.defineActions(function() { for (let uuid in source_animation.animators) { let source_animator = source_animation.animators[uuid]; + // Get target animator let target_animator; if (source_animator instanceof BoneAnimator) { let node = source_animator.getElement ? source_animator.getElement() : source_animator.getGroup(); @@ -1311,9 +1312,21 @@ BARS.defineActions(function() { target_animator = target_animation.animators.effects; } for (let channel in source_animator.channels) { + let channel_config = source_animator.channels[channel]; let source_kfs = source_animator[channel]; let target_kfs = target_animator[channel]; + + if (source_kfs.length == 0) { + continue; + } else if (target_kfs.length == 0) { + for (let src_kf of source_kfs) { + target_animator.createKeyframe(src_kf, src_kf.time, channel, false, false); + } + continue; + } + let timecodes = {}; + // Save base values for (let kf of source_kfs) { let key = Math.roundTo(kf.time, 2); if (!timecodes[key]) timecodes[key] = {}; @@ -1326,6 +1339,19 @@ BARS.defineActions(function() { timecodes[key].target_kf = kf; timecodes[key].time = kf.time; } + if (source_animator.interpolate) { + // Interpolate in between values before they become affected by changes + for (let key in timecodes) { + let data = timecodes[key]; + Timeline.time = data.time; + if (!data.target_kf) { + data.target_values = target_animator.interpolate(channel, true); + } + if (!data.source_kf) { + data.source_values = source_animator.interpolate(channel, true); + } + } + } function mergeValues(a, b) { if (!a) return b; if (!b) return a; @@ -1336,9 +1362,9 @@ BARS.defineActions(function() { } let keys = Object.keys(timecodes).sort((a, b) => a.time - b.time); for (let key of keys) { - let {source_kf, target_kf, time} = timecodes[key]; + let {source_kf, target_kf, target_values, source_values, time} = timecodes[key]; Timeline.time = time; - if (kf.transform) { + if ((source_kf || target_kf).transform) { if (source_kf && target_kf) { for (let axis of 'xyz') { let source_val = source_kf.get(axis); @@ -1346,22 +1372,19 @@ BARS.defineActions(function() { target_kf.set(axis, mergeValues(target_val, source_val)); } } else if (source_kf) { - //let interpolated = target_animator.interpolate(channel, true); - // Todo: At time of creatio, this might already be affected by modified keyframes around it. Interpolate values before! let target_kf = target_animator.createKeyframe(null, time, channel, false, false); let i = 0; for (let axis of 'xyz') { let source_val = source_kf.get(axis); - let target_val = target_kf.get(axis); + let target_val = target_values[i] ?? 0; target_kf.set(axis, mergeValues(target_val, source_val)); i++; } } else if (target_kf) { - let interpolated = this.interpolate(channel, true); let i = 0; for (let axis of 'xyz') { - let source_val = source_kf.get(axis); + let source_val = source_values[i] ?? 0; let target_val = target_kf.get(axis); target_kf.set(axis, mergeValues(target_val, source_val)); i++; @@ -1369,10 +1392,21 @@ BARS.defineActions(function() { } } else if (source_animator instanceof EffectAnimator) { if (source_kf && target_kf) { + if (channel == 'timeline' ) { + let source = source_kf.data_points[0].script; + let target = target_kf.data_points[0].script; + target_kf.data_points[0].script = (source && target) ? (target + '\n' + source) : (source || target); + } else if (channel_config?.max_data_points > 1) { + for (let src_kfdp of source_kf.data_points) { + let new_dp = new KeyframeDataPoint(target_kf); + new_dp.extend(src_kfdp); + target_kf.data_points.push(new_dp); + } + } } else if (source_kf) { - - } else if (target_kf) { + let new_kf = target_animator.createKeyframe(source_kf, source_kf.time, source_kf.channel, false, false); + Property.resetUniqueValues(Keyframe, new_kf); } } } diff --git a/lang/en.json b/lang/en.json index 28cd49967..82cd21563 100644 --- a/lang/en.json +++ b/lang/en.json @@ -27,6 +27,7 @@ "data.group": "Group", "data.texture": "Texture", "data.texture_group": "Texture Group", + "data.animation": "Animation", "data.layer": "Layer", "data.origin": "Pivot", "data.plugin": "Plugin", @@ -613,6 +614,7 @@ "dialog.optimize_animation.selection.selected_animation": "Selected Animation", "dialog.optimize_animation.selection.all_animations": "All Animations", "dialog.optimize_animation.thresholds": "Threshold values", + "dialog.merge_animation.merge_target": "Merge into", "dialog.create_texture.folder": "Folder", "dialog.create_texture.type": "Type", @@ -1774,6 +1776,8 @@ "action.export_animation_file.desc": "Export a selection of animations into a new file", "action.optimize_animation": "Optimize Animation", "action.optimize_animation.desc": "Optimize the current animation and reduce the keyframe count", + "action.merge_animation": "Merge Animation", + "action.merge_animation.desc": "Optimize the current animation and reduce the keyframe count", "action.bake_ik_animation": "Bake Inverse Kinematics", "action.bake_ik_animation.desc": "Bake the rotations applied by inverse kinematics into the selected animation", "action.bake_animation_into_model": "Bake Animation into Model", From eaf3819063029928c1e439fd1633dd801222046d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 2 Jul 2024 23:34:53 +0200 Subject: [PATCH 049/153] Add setting to inherit parent color when creating element Fix newly created cubes having inconsistent marker color --- js/interface/settings.js | 5 +++-- js/modeling/mesh_editing.js | 4 ++-- js/outliner/cube.js | 4 ++-- lang/en.json | 2 ++ 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/js/interface/settings.js b/js/interface/settings.js index 98f0b12a0..3a5dfdc2e 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -396,7 +396,7 @@ const Settings = { } }}); new Setting('seethrough_outline', {category: 'interface', value: false}); - new Setting('outliner_colors', {category: 'interface', value: false}); + new Setting('outliner_colors', {category: 'interface', value: true}); new Setting('preview_checkerboard', {category: 'interface', value: true, onChange() { $('#center').toggleClass('checkerboard', settings.preview_checkerboard.value); }}); @@ -533,7 +533,8 @@ const Settings = { //Defaults new Setting('default_cube_size', {category: 'defaults', value: 2, type: 'number', min: 0, max: 32}); - new Setting('autouv', {category: 'defaults', value: true}); + new Setting('autouv', {category: 'defaults', value: true}); + new Setting('inherit_parent_color', {category: 'defaults', value: false}); new Setting('create_rename', {category: 'defaults', value: false}); new Setting('show_only_selected_uv', {category: 'defaults', value: false}); new Setting('default_path', {category: 'defaults', value: false, type: 'click', condition: isApp, icon: 'burst_mode', click: function() { openDefaultTexturePath() }}); diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index d80e47a9f..24ef40e07 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -1081,8 +1081,8 @@ BARS.defineActions(function() { }); let group = getCurrentGroup(); if (group) { - mesh.addTo(group) - mesh.color = group.color; + mesh.addTo(group); + if (settings.inherit_parent_color.value) mesh.color = group.color; } let diameter_factor = result.align_edges ? 1 / Math.cos(Math.PI/result.sides) : 1; let off_ang = result.align_edges ? 0.5 : 0; diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 127bb3af2..f773c2991 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -1439,7 +1439,7 @@ BARS.defineActions(function() { let group = getCurrentGroup(); if (group) { base_cube.addTo(group) - base_cube.color = group.color; + if (settings.inherit_parent_color.value) base_cube.color = group.color; } if (Texture.all.length && Format.single_texture) { @@ -1468,7 +1468,7 @@ BARS.defineActions(function() { if (Group.selected) Group.selected.unselect() base_cube.select() - Canvas.updateView({elements: [base_cube], element_aspects: {transform: true, geometry: true}}) + Canvas.updateView({elements: [base_cube], element_aspects: {transform: true, geometry: true, faces: true}}) Undo.finishEdit('Add cube', {outliner: true, elements: selected, selection: true}); Blockbench.dispatchEvent( 'add_cube', {object: base_cube} ) diff --git a/lang/en.json b/lang/en.json index 6ba518a69..edfd489bc 100644 --- a/lang/en.json +++ b/lang/en.json @@ -985,6 +985,8 @@ "settings.autouv.desc": "Enable Auto UV by default", "settings.default_cube_size": "Cube Size", "settings.default_cube_size.desc": "Set the default cube size when creating a new cube", + "settings.inherit_parent_color": "Inherit Parent Color", + "settings.inherit_parent_color.desc": "Set the marker color of a newly created element to the color of the parent instead of a random color", "settings.create_rename": "Rename New Element", "settings.create_rename.desc": "Focus name field when creating new element or group", "settings.show_only_selected_uv": "Show Only Selected UV", From 2b71d43d255aec77a146629703239b00163316bf Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 8 Jul 2024 23:11:57 +0200 Subject: [PATCH 050/153] Fix issue in atob causing issues with unicode in themes in web app --- js/util/util.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/js/util/util.js b/js/util/util.js index 422906323..1a440caf6 100644 --- a/js/util/util.js +++ b/js/util/util.js @@ -167,9 +167,16 @@ function removeEventListeners(el, events, func, option) { } function patchedAtob(base64) { - return (typeof Buffer == 'function') - ? Buffer.from(base64, 'base64').toString() - : atob(base64); + if (typeof Buffer == 'function') { + return Buffer.from(base64, 'base64').toString(); + } else { + const binary = atob(base64); + const bytes = new Uint8Array(binary.length); + for (let i = 0; i < bytes.length; i++) { + bytes[i] = binary.charCodeAt(i); + } + return String.fromCharCode(...new Uint16Array(bytes.buffer)); + } } function highestInObject(obj, inverse) { From e89e6549d73ac23e3a0890df9061829adc3d9b7f Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 11 Jul 2024 00:30:46 +0200 Subject: [PATCH 051/153] Fix patched atob function for loading themes --- js/util/util.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/js/util/util.js b/js/util/util.js index 1a440caf6..bd75a8634 100644 --- a/js/util/util.js +++ b/js/util/util.js @@ -170,12 +170,9 @@ function patchedAtob(base64) { if (typeof Buffer == 'function') { return Buffer.from(base64, 'base64').toString(); } else { - const binary = atob(base64); - const bytes = new Uint8Array(binary.length); - for (let i = 0; i < bytes.length; i++) { - bytes[i] = binary.charCodeAt(i); - } - return String.fromCharCode(...new Uint16Array(bytes.buffer)); + return decodeURIComponent(atob(base64).split('').map((c) => { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }).join('')); } } From 954e7d7658221c1e907df41534d0a7bb5e9d1600 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 13 Jul 2024 13:20:07 +0200 Subject: [PATCH 052/153] Animation retargeting WIP Unused animator validator check --- js/animations/animation.js | 125 +++++++++++++++++++++++++++++++++++++ js/validator.js | 11 +++- lang/en.json | 2 + 3 files changed, 137 insertions(+), 1 deletion(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index ba58eb20b..51cc61b11 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -467,6 +467,7 @@ class Animation extends AnimationItem { Animator.preview(); updateInterface(); } + Blockbench.dispatchEvent('select_animation', {animation: this}) return this; } setLength(len = this.length) { @@ -975,6 +976,49 @@ Blockbench.addDragHandler('animation', { } }) +new ValidatorCheck('unused_animators', { + condition: { features: ['animation_mode'], selected: {animation: true} }, + update_triggers: ['select_animation'], + run() { + let animation = Animation.selected; + if (!animation) return; + let animators = []; + for (let id in animation.animators) { + let animator = animation.animators[id]; + if (animator instanceof BoneAnimator && animator.keyframes.length) { + if (!animator.getGroup()) { + animators.push(animator); + } + } + } + if (animators.length) { + let buttons = [ + { + name: 'Retarget Animators', + icon: 'rebase', + click() { + Validator.dialog.close() + BarItems.retarget_animators.click(); + }, + }, + { + name: 'Reveal in Timeline', + icon: 'fa-sort-amount-up', + click() { + for (let animator of animators) { + animator.addToTimeline(); + } + Validator.dialog.close(); + }, + } + ]; + this.warn({ + message: `The animation "${animation.name}" contains ${animators.length} animated nodes that do not exist in the current model.`, + buttons, + }) + } + } +}) BARS.defineActions(function() { new NumSlider('slider_animation_length', { @@ -1566,6 +1610,87 @@ BARS.defineActions(function() { } } }) + new Action('retarget_animators', { + icon: 'rebase', + category: 'animation', + condition: () => Animation.selected, + click: async function() { + let animation = Animation.selected; + let form = {}; + let unassigned_animators = []; + let assigned_animators = []; + + for (let id in animation.animators) { + let animator = animation.animators[id]; + if (animator instanceof BoneAnimator && animator.keyframes.length) { + if (!animator.getGroup()) { + unassigned_animators.push(animator); + } else { + assigned_animators.push(animator); + } + } + } + let all_animators = unassigned_animators.slice(); + if (unassigned_animators.length && assigned_animators.length) { + all_animators.push('_'); + } + all_animators.push(...assigned_animators); + + for (let animator of all_animators) { + if (animator == '_') { + form._ = '_'; + continue; + } + let is_assigned = assigned_animators.includes(animator); + let options = {}; + let nodes; + if (animator.type == 'bone') { + nodes = Group.all; + } else { + nodes = Outliner.all.filter(element => element.type == animator.type); + } + if (!is_assigned) options[animator.uuid] = '-'; + for (let node of nodes) { + options[node.uuid] = node.name; + } + form[animator.uuid] = { + label: animator.name, + type: 'select', + value: animator.uuid, + options + } + } + + let form_result = await new Promise(resolve => { + + new Dialog('retarget_animators', { + name: 'action.retarget_animators', + form, + onConfirm(result) { + resolve(result); + }, + onCancel() { + resolve(false); + } + }).show(); + }) + if (!form_result) return; + Undo.initEdit({animations: [animation]}); + + for (let animator of all_animators) { + if (animator == '_') continue; + + let new_target = form_result[animator.uuid]; + if (new_target == animator.uuid) continue; + + delete animation.animators[animator.uuid]; + animation.animators[new_target] = animator; + animator.uuid = new_target; + } + + Undo.finishEdit('Retarget animations'); + } + }) }) diff --git a/js/validator.js b/js/validator.js index d5b7c5516..a44f26a3a 100644 --- a/js/validator.js +++ b/js/validator.js @@ -4,7 +4,14 @@ const Validator = { warnings: [], errors: [], _timeout: null, + accumulated_triggers: [], + wildcard_trigger: false, validate(trigger) { + if (trigger) { + this.accumulated_triggers.safePush(trigger); + } else { + this.wildcard_trigger = true; + } if (this._timeout) { clearTimeout(this._timeout); this._timeout = null; @@ -20,7 +27,7 @@ const Validator = { try { if (!Condition(check.condition)) return; - if (!trigger || check.update_triggers.includes(trigger)) { + if (this.wildcard_trigger || check.update_triggers.includes(trigger) || this.accumulated_triggers.find(t => check.update_triggers.includes(t))) { check.update(); } Validator.warnings.push(...check.warnings); @@ -30,6 +37,8 @@ const Validator = { console.error(error); } }) + this.accumulated_triggers.empty(); + this.wildcard_trigger = false; }, 40) }, openDialog() { diff --git a/lang/en.json b/lang/en.json index edfd489bc..976756328 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1779,6 +1779,8 @@ "action.export_animation_file.desc": "Export a selection of animations into a new file", "action.optimize_animation": "Optimize Animation", "action.optimize_animation.desc": "Optimize the current animation and reduce the keyframe count", + "action.retarget_animators": "Retarget Animations", + "action.retarget_animators.desc": "Select which animator targets which bone or element", "action.merge_animation": "Merge Animation", "action.merge_animation.desc": "Optimize the current animation and reduce the keyframe count", "action.bake_ik_animation": "Bake Inverse Kinematics", From 846f3826104d9db33c3a429b44bf189c8059d876 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 13 Jul 2024 13:40:13 +0200 Subject: [PATCH 053/153] When searching, plugins are now no longer sorted into tabs --- css/dialogs.css | 6 ++++++ js/plugin_loader.js | 48 ++++++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 1ca20223f..0a0a47a3b 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -1267,6 +1267,7 @@ } #plugin_list > li { overflow-y: hidden; + position: relative; margin: 12px; padding: 8px 12px; padding-bottom: 12px; @@ -1375,6 +1376,10 @@ .plugin_installed_tag { color: var(--color-confirm); } + #plugin_list .plugin_installed_tag { + position: absolute; + right: 4px; + } dialog#plugins .version { display: inline-block; color: var(--color-subtle_text); @@ -1627,6 +1632,7 @@ width: 320px; margin-bottom: -26px; margin-top: -20px; + image-rendering: auto; } .plugins_suggested_row { width: 100%; diff --git a/js/plugin_loader.js b/js/plugin_loader.js index 430451060..dabaeb415 100644 --- a/js/plugin_loader.js +++ b/js/plugin_loader.js @@ -629,8 +629,12 @@ class Plugin { this.details[key + '_full'] = date.full; } if (this.source == 'store') { - if (!this.details.bug_tracker) this.details.bug_tracker = `https://github.com/JannisX11/blockbench-plugins/issues/new?title=[${this.title}]`; - if (!this.details.repository) this.details.repository = `https://github.com/JannisX11/blockbench-plugins/tree/master/plugins/${this.id + (this.new_repository_format ? '' : '.js')}`; + if (!this.details.bug_tracker) { + this.details.bug_tracker = `https://github.com/JannisX11/blockbench-plugins/issues/new?title=[${this.title}]`; + } + if (!this.details.repository) { + this.details.repository = `https://github.com/JannisX11/blockbench-plugins/tree/master/plugins/${this.id + (this.new_repository_format ? '' : '.js')}`; + } let github_path = (this.new_repository_format ? (this.id+'/'+this.id) : this.id) + '.js'; let commit_url = `https://api.github.com/repos/JannisX11/blockbench-plugins/commits?path=plugins/${github_path}`; @@ -920,22 +924,25 @@ BARS.defineActions(function() { }, computed: { plugin_search() { - var name = this.search_term.toUpperCase() - return this.items.filter(item => { - if ((this.tab == 'installed') == item.installed) { - if (name.length > 0) { - return ( - item.id.toUpperCase().includes(name) || - item.title.toUpperCase().includes(name) || - item.description.toUpperCase().includes(name) || - item.author.toUpperCase().includes(name) || - item.tags.find(tag => tag.toUpperCase().includes(name)) - ) - } - return true; - } - return false; - }) + let search_name = this.search_term.toUpperCase(); + if (search_name) { + let filtered = this.items.filter(item => { + return ( + item.id.toUpperCase().includes(search_name) || + item.title.toUpperCase().includes(search_name) || + item.description.toUpperCase().includes(search_name) || + item.author.toUpperCase().includes(search_name) || + item.tags.find(tag => tag.toUpperCase().includes(search_name)) + ) + }); + let installed = filtered.filter(p => p.installed); + let not_installed = filtered.filter(p => !p.installed); + return installed.concat(not_installed); + } else { + return this.items.filter(item => { + return (this.tab == 'installed') == item.installed; + }) + } }, suggested_rows() { let tags = ["Animation"]; @@ -1288,12 +1295,12 @@ BARS.defineActions(function() {
          home
    -
    +
    ${tl('dialog.plugins.installed')}
    ${tl('dialog.plugins.available')}
      -
    • +
    • @@ -1303,6 +1310,7 @@ BARS.defineActions(function() {
      {{ plugin.title || plugin.id }}
      {{ tl('dialog.plugins.author', [plugin.author]) }}
      +
      ✓ ${tl('dialog.plugins.is_installed')}
      {{ plugin.description }}
        From 82c834661de7dac492497aba8ce167f4a52d0e42 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 14 Jul 2024 19:09:41 +0200 Subject: [PATCH 054/153] Knife tool on cubes --- assets/crosshair.png | Bin 0 -> 97 bytes js/modeling/mesh_editing.js | 244 +++++++++++++++++++++++++++++++++++- 2 files changed, 239 insertions(+), 5 deletions(-) create mode 100644 assets/crosshair.png diff --git a/assets/crosshair.png b/assets/crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..aca65552aa81a0c11665ddfd2776988969ec75ee GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8lEnWAr`&K2?v<}IWyXs`utGo uWL(S^aFD^x>7q-q_yg9(oS7>m7#J>9iE#9m+~5c5VeoYIb6Mw<&;$TB4;hyL literal 0 HcmV?d00001 diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index 24ef40e07..daf849e8f 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -639,6 +639,223 @@ class KnifeToolContext { } static current = null; } +class KnifeToolCubeContext { + constructor(cube) { + this.cube = cube; + this.face; + this.first_point_set = false; + this.valid_position = false; + this.axis = 0; + this.face_axis = 0; + this.first_point = new THREE.Vector3(); + this.offset = 0; + this.preview_mesh = new THREE.Mesh( + new THREE.BoxGeometry(1, 1, 1), + new THREE.MeshBasicMaterial({color: Canvas.outlineMaterial.color}), + ) + this.cross_mesh = new THREE.Mesh( + new THREE.PlaneGeometry(1, 1), + new THREE.MeshBasicMaterial({ + map: KnifeToolCubeContext.map, + alphaTest: 0.1, + side: THREE.DoubleSide, + color: Canvas.outlineMaterial.color + }), + ); + + this.unselect_listener = Blockbench.on('unselect_project', context => { + if (this == KnifeToolContext.current) { + this.remove(); + } + }) + KnifeToolContext.current = this; + } + get mesh_3d() { + return this.cube.mesh; + } + get axis_letter() { + return getAxisLetter(this.axis); + } + hover(data) { + if (!data) { + if (this.cross_mesh.parent) { + this.cross_mesh.parent.remove(this.cross_mesh); + } + return; + } + let intersect = data.intersects[0]; + if (!this.first_point_set) { + this.cube = data.element; + this.face = data.face; + this.first_point.copy(intersect.point); + this.mesh_3d.worldToLocal(this.first_point); + + this.face_axis = KnifeToolCubeContext.face_axis[this.face]; + let off_axes = [0, 1, 2].filter(a1 => a1 != this.face_axis); + let snap = canvasGridSize(data.event?.shiftKey || Pressing.overrides.shift, data.event?.ctrlOrCmd || Pressing.overrides.ctrl) + + this.first_point[getAxisLetter(off_axes[0])] = Math.round((this.first_point[getAxisLetter(off_axes[0])] - this.cube.from[off_axes[0]]) / snap) * snap + this.cube.from[off_axes[0]]; + this.first_point[getAxisLetter(off_axes[1])] = Math.round((this.first_point[getAxisLetter(off_axes[1])] - this.cube.from[off_axes[1]]) / snap) * snap + this.cube.from[off_axes[1]]; + + } else { + this.mesh_3d.add(this.preview_mesh); + this.face_axis = KnifeToolCubeContext.face_axis[this.face]; + let off_axes = [0, 1, 2].filter(a1 => a1 != this.face_axis); + + let second_point = intersect.point; + this.mesh_3d.worldToLocal(second_point); + let val_1 = this.first_point[getAxisLetter(off_axes[0])] - second_point[getAxisLetter(off_axes[0])]; + let val_2 = this.first_point[getAxisLetter(off_axes[1])] - second_point[getAxisLetter(off_axes[1])]; + let direction = Math.abs(val_1) > Math.abs(val_2); + switch (this.face_axis) { + case 0: this.axis = direction ? 2 : 1; break; + case 1: this.axis = direction ? 2 : 0; break; + case 2: this.axis = direction ? 1 : 0; break; + } + this.offset = this.first_point[this.axis_letter]; + } + this.updatePreview(); + } + updatePreview() { + let pos = this.mesh_3d.localToWorld(new THREE.Vector3().copy(this.first_point)); + let size = Preview.selected.calculateControlScale(pos) / 8; + if (!this.first_point_set) { + this.mesh_3d.add(this.cross_mesh); + this.cross_mesh.position.copy(this.first_point); + let face_axis = KnifeToolCubeContext.face_axis[this.face]; + let face_direction = ['north', 'west', 'down'].includes(this.face) ? -1 : 1; + this.cross_mesh.position[getAxisLetter(face_axis)] += face_direction * size; + switch (face_axis) { + case 0: this.cross_mesh.rotation.set(0, Math.PI/2, 0); break; + case 1: this.cross_mesh.rotation.set(Math.PI/2, 0, 0); break; + case 2: this.cross_mesh.rotation.set(0, 0, 0); break; + } + + this.cross_mesh.scale.set(size * 16, size * 16, size * 16); + } else { + if (this.cross_mesh.parent) { + this.cross_mesh.parent.remove(this.cross_mesh); + } + this.mesh_3d.add(this.preview_mesh); + this.preview_mesh.position.set( + Math.lerp(this.cube.from[0] - this.cube.origin[0], this.cube.to[0] - this.cube.origin[0], 0.5), + Math.lerp(this.cube.from[1] - this.cube.origin[1], this.cube.to[1] - this.cube.origin[1], 0.5), + Math.lerp(this.cube.from[2] - this.cube.origin[2], this.cube.to[2] - this.cube.origin[2], 0.5), + ) + this.preview_mesh.position[this.axis_letter] = this.offset; + + let pos = THREE.fastWorldPosition(this.preview_mesh); + let size = Preview.selected.calculateControlScale(pos) / 8; + this.preview_mesh.scale.set(...this.cube.size().map(v => v += size)); + this.preview_mesh.scale[this.axis_letter] = size; + } + } + addPoint(data) { + if (!this.first_point_set) { + this.first_point_set = true; + } else { + //this.hover(data); + this.apply(); + } + } + apply() { + if (!this.cube || !Cube.all.includes(this.cube) || !this.first_point_set) { + this.cancel(); + return; + } + let elements = [this.cube]; + Undo.initEdit({elements}); + + if (this.cube.box_uv && Format.optional_box_uv) { + this.cube.box_uv = false; + } + let duplicate = this.cube.duplicate(); + selected.push(duplicate); + elements.push(duplicate); + let offset_lerp = Math.getLerp(this.cube.from[this.axis], this.cube.to[this.axis], this.offset); + + this.cube.to[this.axis] = this.offset; + duplicate.from[this.axis] = this.offset; + + function modifyUV(face, index, inverted) { + index = (index - (face.rotation/90) + 8) % 4; + let index_opposite = (index+2)%4; + if (inverted) { + face.uv[index] = Math.lerp(face.uv[index], face.uv[index_opposite], offset_lerp); + } else { + face.uv[index] = Math.lerp(face.uv[index_opposite], face.uv[index], offset_lerp); + } + } + switch (this.axis) { + case 0: { + modifyUV(this.cube.faces.north, 0); + modifyUV(this.cube.faces.south, 2); + modifyUV(this.cube.faces.up, 2); + modifyUV(this.cube.faces.down, 2); + + modifyUV(duplicate.faces.north, 2, true); + modifyUV(duplicate.faces.south, 0, true); + modifyUV(duplicate.faces.up, 0, true); + modifyUV(duplicate.faces.down, 0, true); + break; + } + case 1: { + modifyUV(this.cube.faces.north, 1); + modifyUV(this.cube.faces.south, 1); + modifyUV(this.cube.faces.east, 1); + modifyUV(this.cube.faces.west, 1); + + modifyUV(duplicate.faces.north, 3, true); + modifyUV(duplicate.faces.south, 3, true); + modifyUV(duplicate.faces.east, 3, true); + modifyUV(duplicate.faces.west, 3, true); + break; + } + case 2: { + modifyUV(this.cube.faces.east, 0); + modifyUV(this.cube.faces.west, 2); + modifyUV(this.cube.faces.up, 3); + modifyUV(this.cube.faces.down, 1); + + modifyUV(duplicate.faces.east, 2, true); + modifyUV(duplicate.faces.west, 0, true); + modifyUV(duplicate.faces.up, 1, true); + modifyUV(duplicate.faces.down, 3, true); + break; + } + } + + Canvas.updateView({elements, element_aspects: {geometry: true, uv: true}, selection: true}); + Undo.finishEdit('Use knife tool'); + this.remove(); + } + cancel() { + this.remove(); + } + remove() { + if (this.cross_mesh.parent) { + this.cross_mesh.parent.remove(this.cross_mesh); + } + if (this.preview_mesh.parent) { + this.preview_mesh.parent.remove(this.preview_mesh); + } + delete this.cube; + delete this.cross_mesh; + delete this.precross_meshview_mesh; + this.unselect_listener.delete(); + KnifeToolContext.current = null; + } + static face_axis = { + north: 2, + south: 2, + up: 1, + down: 1, + east: 0, + west: 0 + } + static map = new THREE.TextureLoader().load('assets/crosshair.png'); +} +KnifeToolCubeContext.map.magFilter = KnifeToolCubeContext.map.minFilter = THREE.NearestFilter; async function autoFixMeshEdit() { let meshes = Mesh.selected; @@ -1570,10 +1787,16 @@ BARS.defineActions(function() { vertices: true, }, modes: ['edit'], - condition: () => Modes.edit && Mesh.hasAny(), + condition: () => Modes.edit, onCanvasMouseMove(data) { - if (!KnifeToolContext.current && Mesh.selected[0] && Mesh.selected.length == 1) { - KnifeToolContext.current = new KnifeToolContext(Mesh.selected[0]); + if (Mesh.selected[0]) { + if (!KnifeToolContext.current && Mesh.selected.length == 1) { + KnifeToolContext.current = new KnifeToolContext(Mesh.selected[0]); + } + } else if (Cube.all[0]) { + if (!KnifeToolContext.current) { + KnifeToolContext.current = new KnifeToolCubeContext(); + } } if (KnifeToolContext.current) { KnifeToolContext.current.hover(data); @@ -1581,8 +1804,19 @@ BARS.defineActions(function() { }, onCanvasClick(data) { if (!data) return; - if (!KnifeToolContext.current && data.element instanceof Mesh) { - KnifeToolContext.current = new KnifeToolContext(data.element); + if (!KnifeToolContext.current) { + if (data.element instanceof Mesh) { + if (!KnifeToolContext.current && Mesh.selected.length == 1) { + KnifeToolContext.current = new KnifeToolContext(data.element); + } + if (KnifeToolContext.current) { + KnifeToolContext.current.hover(data); + } + } else if (data.element instanceof Cube) { + if (!KnifeToolContext.current) { + KnifeToolContext.current = new KnifeToolCubeContext(data.element); + } + } } let context = KnifeToolContext.current; context.addPoint(data); From 35993c5da7122fe33047c774b90aa3cca15f582d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 15 Jul 2024 01:12:06 +0200 Subject: [PATCH 055/153] Option to expand/shrink texture selection --- js/texturing/painter.js | 63 +++++++++++++++++++++++++++++++++++++++++ lang/en.json | 8 ++++++ 2 files changed, 71 insertions(+) diff --git a/js/texturing/painter.js b/js/texturing/painter.js index ebeae5083..fe4ae50f0 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -2778,6 +2778,69 @@ BARS.defineActions(function() { } }); + let expand_texture_selection_dialog = new Dialog('expand_texture_selection', { + title: 'action.expand_texture_selection', + form: { + value: {type: 'number', label: 'dialog.expand_texture_selection.radius', value: 1}, + corner: { + type: 'select', + label: 'dialog.expand_texture_selection.corner', + options: { + round: 'dialog.expand_texture_selection.corner.round', + square: 'dialog.expand_texture_selection.corner.square', + manhattan: 'dialog.expand_texture_selection.corner.manhattan', + } + } + }, + onConfirm(result) { + if (result.value == 0) return; + let texture = UVEditor.texture; + let selection = texture.selection; + let radius = Math.abs(result.value); + let radius_sq = result.value ** 2; + const round = 'round'; + const manhattan = 'manhattan'; + + if (selection.is_custom) { + let selection_copy = selection.array.slice(); + let expected_value = result.value < 0 ? 0 : 1; + selection.forEachPixel((x, y, val, index) => { + if (val == expected_value) return; + for (let offset_x = -radius; offset_x <= radius; offset_x++) { + for (let offset_y = -radius; offset_y <= radius; offset_y++) { + // Radius check + if (result.corner == round) { + if ((offset_x ** 2 + offset_y ** 2) > radius_sq) continue; + } else if (result.corner == manhattan) { + if ((Math.abs(offset_x) + Math.abs(offset_y)) > radius) continue; + } + // Testing + if (selection.get(x + offset_x, y + offset_y) == expected_value) { + selection_copy[index] = expected_value; + return; + } + } + } + }) + selection.array = selection_copy; + } else if (selection.override == true && result.value < 0) { + selection.setOverride(null); + selection.forEachPixel((x, y, val, index) => { + let selected = x >= radius && y >= radius && x < selection.width - radius && y < selection.height - radius; + selection.array[index] = selected ? 1 : 0; + }); + } + UVEditor.updateSelectionOutline(); + } + }); + new Action('expand_texture_selection', { + icon: 'settings_overscan', + category: 'paint', + click() { + expand_texture_selection_dialog.show(); + } + }) + StateMemory.init('mirror_painting_options', 'object'); Painter.mirror_painting_options = StateMemory.mirror_painting_options; if (!Painter.mirror_painting_options.axis) { diff --git a/lang/en.json b/lang/en.json index 976756328..2d875d4a7 100644 --- a/lang/en.json +++ b/lang/en.json @@ -497,6 +497,12 @@ "dialog.edit_texture.preview": "Preview", + "dialog.expand_texture_selection.radius": "Amount", + "dialog.expand_texture_selection.corner": "Corner Shape", + "dialog.expand_texture_selection.corner.round": "Round", + "dialog.expand_texture_selection.corner.square": "Square", + "dialog.expand_texture_selection.corner.manhattan": "Manhattan", + "dialog.extrude.title": "Extrude Image", "dialog.extrude.mode": "Scan Mode", "dialog.extrude.mode.areas": "Areas", @@ -1181,6 +1187,8 @@ "action.blend_mode.overlay": "Overlay", "action.blend_mode.hard_light": "Hard Light", "action.blend_mode.difference": "Difference", + "action.expand_texture_selection": "Expand Texture Selection", + "action.expand_texture_selection.desc": "Expand or shrink the texture selection", "action.uv_slider_pos_x": "Move Horizontal", "action.uv_slider_pos_x.desc": "Move all selected UV faces horizontally", From 604827fbb0aa3f94d384621f0981b137e8447ea3 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 15 Jul 2024 22:54:45 +0200 Subject: [PATCH 056/153] Display mode: Disable mirroring on bedrock --- js/display_mode.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/js/display_mode.js b/js/display_mode.js index 72a298a25..e72139a3c 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1806,6 +1806,12 @@ Interface.definePanels(function() { } }, methods: { + allowMirroring() { + return this.allow_mirroring && this.allowEnablingMirroring(); + }, + allowEnablingMirroring() { + return Format.id != 'bedrock_block'; + }, isMirrored: (axis) => { if (Project.display_settings[display_slot]) { return Project.display_settings[display_slot].scale[axis] < 0; @@ -1925,11 +1931,11 @@ Interface.definePanels(function() {

        ${ tl('display.scale') }

        -
        flip
        -
        replay
        +
        flip
        +
        replay
        -
        +
        ${ tl('display.mirror') }
        {{ slot.mirror[axis] ? 'check_box' : 'check_box_outline_blank' }}
        From 471748254238e3b379c9d43030a84b4ce6017ac5 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 15 Jul 2024 23:34:11 +0200 Subject: [PATCH 057/153] Add UI for bedrock display rotation/scale pivot --- css/panels.css | 4 ++++ css/setup.css | 13 ++++++++++++ js/display_mode.js | 53 +++++++++++++++++++++++++++++++++++++++++++--- lang/en.json | 2 ++ 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/css/panels.css b/css/panels.css index c824187a6..28b4d85cb 100644 --- a/css/panels.css +++ b/css/panels.css @@ -363,6 +363,10 @@ flex-grow: 1; margin-top: 6px; } + .bar.display_inline_inputs { + display: flex; + gap: 1px; + } input#preset_name { background-color: var(--color-back); diff --git a/css/setup.css b/css/setup.css index e8c447762..731bce25f 100644 --- a/css/setup.css +++ b/css/setup.css @@ -749,6 +749,19 @@ div.nslide.editing { cursor: text; } + .numeric_input.is_colored::before { + content: ""; + position: absolute; + pointer-events: none; + top: 0; + right: 0; + z-index: 1; + border-width: 4px; + border-style: solid; + border-color: var(--corner-color); + border-bottom-color: transparent !important; + border-left-color: transparent !important; + } input.toggle_panel { display: none; diff --git a/js/display_mode.js b/js/display_mode.js index e72139a3c..3b425d619 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -16,6 +16,8 @@ class DisplaySlot { this.rotation = [0, 0, 0]; this.translation = [0, 0, 0]; this.scale = [1, 1, 1]; + this.rotation_pivot = [0, 0, 0]; + this.scale_pivot = [0, 0, 0]; this.mirror = [false, false, false] return this; } @@ -24,6 +26,8 @@ class DisplaySlot { rotation: this.rotation.slice(), translation: this.translation.slice(), scale: this.scale.slice(), + rotation_pivot: this.rotation_pivot.slice(), + scale_pivot: this.scale_pivot.slice(), mirror: this.mirror.slice() } } @@ -41,6 +45,8 @@ class DisplaySlot { } } } + if (export_all || !this.rotation_pivot.allEqual(0)) build.rotation_pivot = this.rotation_pivot + if (export_all || !this.scale_pivot.allEqual(0)) build.scale_pivot = this.scale_pivot if (Object.keys(build).length) { return build; } @@ -49,9 +55,11 @@ class DisplaySlot { if (!data) return this; for (var i = 0; i < 3; i++) { if (data.rotation) Merge.number(this.rotation, data.rotation, i) - if (data.translation) Merge.number(this.translation, data.translation, i) if (data.mirror) Merge.boolean(this.mirror, data.mirror, i) if (data.scale) Merge.number(this.scale, data.scale, i) + if (data.translation) Merge.number(this.translation, data.translation, i) + if (data.rotation_pivot) Merge.number(this.rotation_pivot, data.rotation_pivot, i) + if (data.scale_pivot) Merge.number(this.scale_pivot, data.scale_pivot, i) this.scale[i] = Math.abs(this.scale[i]) if (data.scale && data.scale[i] < 0) this.mirror[i] = true; } @@ -1807,11 +1815,14 @@ Interface.definePanels(function() { }, methods: { allowMirroring() { - return this.allow_mirroring && this.allowEnablingMirroring(); + return this.allow_mirroring && !this.isBedrockStyle(); }, allowEnablingMirroring() { return Format.id != 'bedrock_block'; }, + isBedrockStyle() { + return Format.id == 'bedrock_block'; + }, isMirrored: (axis) => { if (Project.display_settings[display_slot]) { return Project.display_settings[display_slot].scale[axis] < 0; @@ -1839,8 +1850,10 @@ Interface.definePanels(function() { } } else if (channel === 'translation') { DisplayMode.slot.translation[axis] = limitNumber(DisplayMode.slot.translation[axis], -80, 80)||0; - } else { + } else if (channel == 'rotation') { DisplayMode.slot.rotation[axis] = Math.trimDeg(DisplayMode.slot.rotation[axis])||0; + } else { + DisplayMode.slot[channel][axis] = DisplayMode.slot[channel][axis] ?? 0; } DisplayMode.updateDisplayBase() }, @@ -1957,6 +1970,40 @@ Interface.definePanels(function() {
        + +
    ` diff --git a/lang/en.json b/lang/en.json index 28cd49967..46dbe83e0 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2291,6 +2291,8 @@ "display.translation": "Translation", "display.scale": "Scale", "display.mirror": "Mirror", + "display.rotation_pivot": "Rotation Pivot", + "display.scale_pivot": "Scale Pivot", "display.slot": "Slot", "display.reference": "Reference Model", "display.pose_angle": "Pose Angle (For Preview Only)", From 9daf941f11ecde7a4e3f5daa7196a5e67abb68fb Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 16 Jul 2024 20:13:32 +0200 Subject: [PATCH 058/153] Implement bedrock display rotation/scale pivot preview --- js/display_mode.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/js/display_mode.js b/js/display_mode.js index 3b425d619..d1275899c 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1314,13 +1314,27 @@ DisplayMode.updateDisplayBase = function(slot) { display_base.scale.y = (slot.scale[1]||0.001) * (slot.mirror[1] ? -1 : 1); display_base.scale.z = (slot.scale[2]||0.001) * (slot.mirror[2] ? -1 : 1); + if (!slot.rotation_pivot.allEqual(0)) { + let rot_piv_offset = new THREE.Vector3().fromArray(slot.rotation_pivot).multiplyScalar(16); + let original = new THREE.Vector3().copy(rot_piv_offset); + rot_piv_offset.applyEuler(display_base.rotation); + rot_piv_offset.sub(original); + display_base.position.sub(rot_piv_offset); + } + if (!slot.scale_pivot.allEqual(0)) { + let scale_piv_offset = new THREE.Vector3().fromArray(slot.scale_pivot).multiplyScalar(16); + scale_piv_offset.applyEuler(display_base.rotation); + scale_piv_offset.multiplyScalar(1-slot.scale[0]); + display_base.position.add(scale_piv_offset) + } + Transformer.center() } DisplayMode.applyPreset = function(preset, all) { if (preset == undefined) return; - var slots = [display_slot] + var slots = [display_slot]; if (all) { slots = displayReferenceObjects.slots } else if (preset.areas[display_slot] == undefined) { @@ -1332,7 +1346,12 @@ DisplayMode.applyPreset = function(preset, all) { if (!Project.display_settings[sl]) { Project.display_settings[sl] = new DisplaySlot() } - Project.display_settings[sl].extend(preset.areas[sl]) + let preset_values = preset.areas[sl]; + if (preset_values) { + if (!preset_values.rotation_pivot) Project.display_settings[sl].rotation_pivot.replace([0, 0, 0]); + if (!preset_values.scale_pivot) Project.display_settings[sl].scale_pivot.replace([0, 0, 0]); + Project.display_settings[sl].extend(preset.areas[sl]); + } }) DisplayMode.updateDisplayBase() Undo.finishEdit('Apply display preset') From 7d065357c0380febeadc97dbbd91fc9cfd257c3f Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 17 Jul 2024 00:08:07 +0200 Subject: [PATCH 059/153] WIP transform gizmo support for bedrock display pivots --- js/display_mode.js | 4 +++- js/modeling/transform_gizmo.js | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/js/display_mode.js b/js/display_mode.js index d1275899c..aaebbfc62 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1324,7 +1324,9 @@ DisplayMode.updateDisplayBase = function(slot) { if (!slot.scale_pivot.allEqual(0)) { let scale_piv_offset = new THREE.Vector3().fromArray(slot.scale_pivot).multiplyScalar(16); scale_piv_offset.applyEuler(display_base.rotation); - scale_piv_offset.multiplyScalar(1-slot.scale[0]); + scale_piv_offset.x *= (1-slot.scale[0]); + scale_piv_offset.y *= (1-slot.scale[1]); + scale_piv_offset.z *= (1-slot.scale[2]); display_base.position.add(scale_piv_offset) } diff --git a/js/modeling/transform_gizmo.js b/js/modeling/transform_gizmo.js index ca57842c6..b97c2550b 100644 --- a/js/modeling/transform_gizmo.js +++ b/js/modeling/transform_gizmo.js @@ -960,14 +960,32 @@ display_base.getWorldPosition(Transformer.position); Transformer.position.sub(scene.position); + // todo: Fix positions when both rotation pivot and scale pivot are used if (Toolbox.selected.transformerMode === 'translate') { Transformer.rotation_ref = display_area; } else if (Toolbox.selected.transformerMode === 'scale') { + if (DisplayMode.slot.scale_pivot) { + let pivot_offset = new THREE.Vector3().fromArray(DisplayMode.slot.scale_pivot).multiplyScalar(-16); + pivot_offset.x *= DisplayMode.slot.scale[0]; + pivot_offset.y *= DisplayMode.slot.scale[1]; + pivot_offset.z *= DisplayMode.slot.scale[2]; + pivot_offset.applyQuaternion(display_base.getWorldQuaternion(new THREE.Quaternion())); + Transformer.position.sub(pivot_offset); + } + Transformer.rotation_ref = display_base; - } else if (Toolbox.selected.transformerMode === 'rotate' && display_slot == 'gui') { - Transformer.rotation_ref = display_gui_rotation + } else if (Toolbox.selected.transformerMode === 'rotate') { + if (DisplayMode.slot.rotation_pivot) { + let pivot_offset = new THREE.Vector3().fromArray(DisplayMode.slot.rotation_pivot).multiplyScalar(-16); + pivot_offset.applyQuaternion(display_base.getWorldQuaternion(new THREE.Quaternion())); + Transformer.position.sub(pivot_offset); + } + + if (display_slot == 'gui') { + Transformer.rotation_ref = display_gui_rotation; + } } Transformer.update() From 60071138c602c67bdaf29c633881c667f6496f08 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 17 Jul 2024 23:47:06 +0200 Subject: [PATCH 060/153] Add bbmodel mime type --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 3100e5e52..1ebb90d1d 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ { "ext": "bbmodel", "name": "Blockbench Project", + "mimeType": "model/vnd.blockbench.bbmodel", "role": "Editor" } ] From e0782a8fffeb4fa2994f4417eeadc37590d6cf97 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 18 Jul 2024 18:19:55 +0200 Subject: [PATCH 061/153] Add file association and icons for JSON --- build/json.icns | Bin 0 -> 38234 bytes build/json.ico | Bin 0 -> 14977 bytes package.json | 6 ++++++ 3 files changed, 6 insertions(+) create mode 100644 build/json.icns create mode 100644 build/json.ico diff --git a/build/json.icns b/build/json.icns new file mode 100644 index 0000000000000000000000000000000000000000..1e2dd49ec9207c7c1a2a77dd3188002d683aeb3d GIT binary patch literal 38234 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

    wM6$kTu?GX`>=qH4xDh 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 1ebb90d1d..898cd56d2 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,12 @@ "name": "Blockbench Project", "mimeType": "model/vnd.blockbench.bbmodel", "role": "Editor" + }, + { + "ext": "json", + "name": "JSON Model", + "mimeType": "application/json", + "role": "Editor" } ] }, From 315cb87e6d6347c50b4b4ce8de07dbd616007ff0 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 18 Jul 2024 18:20:26 +0200 Subject: [PATCH 062/153] Update linux application category --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 898cd56d2..f6b3090ea 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "rpm", "appImage" ], - "category": "3DGraphics", + "category": "Graphics;3DGraphics", "icon": "build/icon.icns" }, "fileAssociations": [ From 404b232ebd5745f72683fc40572c499991d397a9 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 22 Jul 2024 23:53:26 +0200 Subject: [PATCH 063/153] Catch error when loading invalid plugin from file --- js/plugin_loader.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/plugin_loader.js b/js/plugin_loader.js index dabaeb415..2f8be6949 100644 --- a/js/plugin_loader.js +++ b/js/plugin_loader.js @@ -333,7 +333,9 @@ class Plugin { this.tags.safePush('Local'); if (isApp) { - let content = await runPluginFile(file.path, this.id); + let content = await runPluginFile(file.path, this.id).catch((error) => { + console.error(error); + }); if (content) { if (window.plugin_data) { scope.id = (plugin_data && plugin_data.id)||pathToName(file.path) From bd0a880a67c35be965f98a11f586ce77a9aab302 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 20 Aug 2024 22:42:58 +0200 Subject: [PATCH 064/153] Add java block/item light emission property --- js/io/formats/java_block.js | 3 +++ js/outliner/cube.js | 32 ++++++++++++++++++++++++++++++++ lang/en.json | 2 ++ 3 files changed, 37 insertions(+) diff --git a/js/io/formats/java_block.js b/js/io/formats/java_block.js index f5f657086..f49d16476 100644 --- a/js/io/formats/java_block.js +++ b/js/io/formats/java_block.js @@ -47,6 +47,9 @@ var codec = new Codec('java_block', { if (s.shade === false) { element.shade = false } + if (s.light_emission) { + element.light_emission = s.light_emission; + } if (!s.rotation.allEqual(0) || !s.origin.allEqual(0)) { var axis = s.rotationAxis()||'y'; element.rotation = new oneLiner({ diff --git a/js/outliner/cube.js b/js/outliner/cube.js index f773c2991..13012ee70 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -963,6 +963,7 @@ class Cube extends OutlinerElement { }}, 'edit_material_instances', 'element_render_order', + 'cube_light_emission', new MenuSeparator('manage'), 'rename', 'toggle_visibility', @@ -981,6 +982,7 @@ new Property(Cube, 'string', 'name', {default: 'cube'}); new Property(Cube, 'boolean', 'box_uv', {merge_validation: (value) => Format.optional_box_uv || value === Format.box_uv}); new Property(Cube, 'boolean', 'rescale'); new Property(Cube, 'boolean', 'locked'); +new Property(Cube, 'number', 'light_emission'); new Property(Cube, 'enum', 'render_order', {default: 'default', values: ['default', 'behind', 'in_front']}); OutlinerElement.registerType(Cube, 'cube'); @@ -1574,4 +1576,34 @@ BARS.defineActions(function() { BarItems.element_render_order.set(element.render_order); } }) + + new NumSlider('cube_light_emission', { + category: 'edit', + condition: {features: ['java_face_properties']}, + settings: { + min: 0, max: 15, default: 0, + show_bar: true + }, + getInterval(event) { + return 1; + }, + get() { + return Cube.selected[0]?.light_emission ?? 0; + }, + change(modify) { + for (let cube of Cube.selected) { + cube.light_emission = modify(cube.light_emission); + } + }, + onBefore() { + Undo.initEdit({elements: Cube.selected}); + }, + onAfter() { + Undo.finishEdit('Change cube light emission'); + } + }) + Blockbench.on('update_selection', () => { + let value = Cube.selected[0]?.light_emission ?? 0; + BarItems.cube_light_emission.setValue(value); + }) }) \ No newline at end of file diff --git a/lang/en.json b/lang/en.json index 2d875d4a7..aaaf8c36e 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1442,6 +1442,8 @@ "action.element_render_order.default": "Auto", "action.element_render_order.behind": "Behind", "action.element_render_order.in_front": "In Front", + "action.cube_light_emission": "Light Emission", + "action.cube_light_emission.desc": "Change the emissiveness of the selected cubes, as a value between 0 and 15", "action.slider_color_h": "Hue", "action.slider_color_s": "Saturation", From 91516e864e8f595e22b02663327261deb7da18ba Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 20 Aug 2024 22:45:16 +0200 Subject: [PATCH 065/153] Add new property to control java cube shading properties --- js/io/format.js | 1 + js/io/formats/java_block.js | 1 + js/modeling/transform.js | 2 +- js/outliner/cube.js | 2 +- js/outliner/outliner.js | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/js/io/format.js b/js/io/format.js index d0508d412..9e835e67b 100644 --- a/js/io/format.js +++ b/js/io/format.js @@ -279,6 +279,7 @@ new Property(ModelFormat, 'boolean', 'locators'); new Property(ModelFormat, 'boolean', 'rotation_limit'); new Property(ModelFormat, 'boolean', 'rotation_snap'); new Property(ModelFormat, 'boolean', 'uv_rotation'); +new Property(ModelFormat, 'boolean', 'java_cube_shading_properties'); new Property(ModelFormat, 'boolean', 'java_face_properties'); new Property(ModelFormat, 'boolean', 'select_texture_for_particles'); new Property(ModelFormat, 'boolean', 'texture_mcmeta'); diff --git a/js/io/formats/java_block.js b/js/io/formats/java_block.js index f49d16476..3277dfcbb 100644 --- a/js/io/formats/java_block.js +++ b/js/io/formats/java_block.js @@ -530,6 +530,7 @@ var format = new ModelFormat({ rotation_snap: true, optional_box_uv: true, uv_rotation: true, + java_cube_shading_properties: true, java_face_properties: true, animated_textures: true, select_texture_for_particles: true, diff --git a/js/modeling/transform.js b/js/modeling/transform.js index b97e22d2c..2e6eeef71 100644 --- a/js/modeling/transform.js +++ b/js/modeling/transform.js @@ -1724,7 +1724,7 @@ BARS.defineActions(function() { new Action('toggle_shade', { icon: 'wb_sunny', category: 'transform', - condition: () => Format.java_face_properties && Modes.edit, + condition: () => Format.java_cube_shading_properties && Modes.edit, click() {toggleCubeProperty('shade')} }) new Action('toggle_mirror_uv', { diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 13012ee70..61f020bed 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -1579,7 +1579,7 @@ BARS.defineActions(function() { new NumSlider('cube_light_emission', { category: 'edit', - condition: {features: ['java_face_properties']}, + condition: {features: ['java_cube_shading_properties']}, settings: { min: 0, max: 15, default: 0, show_bar: true diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index c38937c29..9b2cb0b01 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -36,7 +36,7 @@ const Outliner = { }, shade: { id: 'shade', - condition: () => Format.java_face_properties, + condition: () => Format.java_cube_shading_properties, title: tl('switches.shade'), icon: 'fa fa-star', icon_off: 'far fa-star', From f0db1cc7964e45207ca406b1986861e1630ba6fc Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 20 Aug 2024 22:45:36 +0200 Subject: [PATCH 066/153] Bump version to beta 1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f6b3090ea..97797f6fa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Blockbench", "description": "Low-poly modeling and animation software", - "version": "4.10.1", + "version": "4.11.0-beta.1", "license": "GPL-3.0-or-later", "author": { "name": "JannisX11", From 103e9c86cdafc1515bb86b34cdd00dd64c9b274d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 20 Aug 2024 23:10:34 +0200 Subject: [PATCH 067/153] Fixed small timeline head width on mobile --- css/panels.css | 2 +- js/animations/timeline.js | 2 +- js/interface/interface.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/css/panels.css b/css/panels.css index c824187a6..5a959f12f 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1500,7 +1500,7 @@ #timeline_body li > .animator_head_bar .channel_head:hover { color: var(--color-light); } - #timeline_body li > .animator_channel_bar .channel_head { + body:not(.is_mobile) #timeline_body li > .animator_channel_bar .channel_head { padding-left: 16px; } .animator.selected .channel_head { diff --git a/js/animations/timeline.js b/js/animations/timeline.js index 2ecc60ef4..481b5f3a5 100644 --- a/js/animations/timeline.js +++ b/js/animations/timeline.js @@ -731,7 +731,7 @@ Interface.definePanels(() => { animation_length: 0, scroll_left: 0, scroll_top: 0, - head_width: Interface.data.timeline_head, + head_width: Blockbench.isMobile ? 108 : Interface.data.timeline_head, timecodes: [], animators: Timeline.animators, markers: [], diff --git a/js/interface/interface.js b/js/interface/interface.js index 5fe8aedc0..027300c6a 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -330,7 +330,7 @@ const Interface = { }), timeline_head: new ResizeLine('timeline_head', { horizontal: false, - condition() {return Modes.animate}, + condition() {return Modes.animate && !Blockbench.isMobile}, get() {return Interface.data.timeline_head}, set(o, diff) { let value = limitNumber(o + diff, 90, Panels.timeline.node.clientWidth - 40); From 7cb0ed87e366418129295d482fe9d5d25474ab59 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 20 Aug 2024 23:35:32 +0200 Subject: [PATCH 068/153] Fix #2450 screenshot API uses special crop in display GUI slot Fix #2446 Plugin base64 icons are rendered at the wrong size --- css/dialogs.css | 4 ++++ js/preview/screenshot.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/css/dialogs.css b/css/dialogs.css index 0a0a47a3b..9c77a0af1 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -1308,6 +1308,10 @@ margin-top: 8px; display: inline-block; } + .plugin_icon_area img.icon { + height: auto; + margin-top: 0; + } .plugin_icon_area img { border-radius: 8px; pointer-events: none; diff --git a/js/preview/screenshot.js b/js/preview/screenshot.js index 00a91b286..dbb7a5a03 100644 --- a/js/preview/screenshot.js +++ b/js/preview/screenshot.js @@ -252,7 +252,7 @@ const Screencam = { if (options.crop !== false) { - if (Modes.display && display_slot === 'gui') { + if (!options && Modes.display && display_slot === 'gui') { var zoom = display_preview.camOrtho.zoom * devicePixelRatio var resolution = 256 * zoom; From 20a831b360fae57d072525cd0815d8598c03f49e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 21 Aug 2024 20:26:54 +0200 Subject: [PATCH 069/153] Move brush preset form inputs to new toggle system Add setFormToggles method on dialogs --- js/interface/dialog.js | 10 +++++++ js/texturing/painter.js | 65 ++++++++++++++++++++++++++++++----------- 2 files changed, 58 insertions(+), 17 deletions(-) diff --git a/js/interface/dialog.js b/js/interface/dialog.js index 74ec5ac97..f5543b9f6 100644 --- a/js/interface/dialog.js +++ b/js/interface/dialog.js @@ -655,6 +655,16 @@ window.Dialog = class Dialog { } if (update) this.updateFormValues(); } + setFormToggles(values, update = true) { + for (let form_id in this.form) { + let data = this.form[form_id]; + if (values[form_id] != undefined && typeof data == 'object' && data.input_toggle && data.bar) { + data.input_toggle.checked = values[form_id]; + data.bar.toggleClass('form_toggle_disabled', !data.input_toggle.checked); + } + } + if (update) this.updateFormValues(); + } getFormResult() { let result = {} if (this.form) { diff --git a/js/texturing/painter.js b/js/texturing/painter.js index fe4ae50f0..d7ff2c9b3 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -1588,16 +1588,18 @@ const Painter = { this.selected_preset = preset; current_preset = preset; dialog.object.classList.add('preset_selected'); + dialog.setFormToggles({ + size: preset.size !== null, + softness: preset.softness !== null, + opacity: preset.opacity !== null, + color: preset.color !== null, + }, false); dialog.setFormValues({ name: preset.name, - use_size: preset.size !== null, size: preset.size == null ? BarItems.slider_brush_size.get() : preset.size, - use_softness: preset.softness !== null, softness: preset.softness == null ? BarItems.slider_brush_softness.get() : preset.softness, - use_opacity: preset.opacity !== null, opacity: preset.opacity == null ? BarItems.slider_brush_opacity.get() : preset.opacity, pixel_perfect: preset.pixel_perfect == null ? BarItems.pixel_perfect_drawing.value : preset.pixel_perfect, - use_color: preset.color !== null, color: preset.color == null ? ColorPanel.get() : preset.color, shape: preset.shape ? preset.shape : 'unset', blend_mode: preset.blend_mode ? preset.blend_mode : 'unset', @@ -1657,39 +1659,68 @@ const Painter = { screen: 'action.blend_mode.screen', difference: 'action.blend_mode.difference', }}, - use_size: {label: 'action.slider_brush_size', description: 'action.slider_brush_size.desc', type: 'checkbox'}, - size: {label: '', nocolon: true, description: 'action.slider_brush_size.desc', type: 'number', condition: form => form.use_size, value: 1, min: 1, max: 100}, - use_opacity: {label: 'action.slider_brush_opacity', description: 'action.slider_brush_opacity.desc', type: 'checkbox'}, - opacity: {label: '', nocolon: true, description: 'action.slider_brush_opacity.desc', type: 'number', condition: form => form.use_opacity, value: 255, min: 0, max: 255}, - use_softness: {label: 'action.slider_brush_softness', description: 'action.slider_brush_softness.desc', type: 'checkbox'}, - softness: {label: '', nocolon: true, description: 'action.slider_brush_softness.desc', type: 'number', condition: form => form.use_softness, value: 0, min: 0, max: 100}, - pixel_perfect: {label: 'action.pixel_perfect_drawing', type: 'checkbox'}, - use_color: {label: 'data.color', type: 'checkbox'}, - color: {label: '', nocolon: true, description: 'action.brush_shape.desc', type: 'color', condition: form => form.use_color}, + size: { + label: 'action.slider_brush_size', nocolon: true, + description: 'action.slider_brush_size.desc', + type: 'number', + value: 1, min: 1, max: 100, + toggle_enabled: true, + toggle_default: true + }, + opacity: { + label: 'action.slider_brush_opacity', nocolon: true, + description: 'action.slider_brush_opacity.desc', type: 'number', + value: 255, min: 0, max: 255, + toggle_enabled: true, + toggle_default: true + }, + softness: { + label: 'action.slider_brush_softness', nocolon: true, + description: 'action.slider_brush_softness.desc', type: 'number', + value: 0, min: 0, max: 100, + toggle_enabled: true, + toggle_default: true + }, + pixel_perfect: { + label: 'action.pixel_perfect_drawing', + type: 'checkbox', + }, + color: { + label: 'data.color', nocolon: true, + description: 'action.brush_shape.desc', type: 'color', + toggle_enabled: true, + toggle_default: true + }, actions: {type: 'buttons', buttons: ['generic.delete'], click() { dialog.content_vue.removePreset(); }} }, + /** + use_size + use_opacity + use_softness + use_color + */ onFormChange(form) { let preset = this.content_vue.selected_preset; preset.name = form.name; - if (form.use_size) { + if (form.size != undefined) { preset.size = form.size; } else { preset.size = null; } - if (form.use_softness) { + if (form.softness != undefined) { preset.softness = form.softness; } else { preset.softness = null; } - if (form.use_opacity) { + if (form.opacity != undefined) { preset.opacity = form.opacity; } else { preset.opacity = null; } - if (form.use_color) { + if (form.color != undefined) { preset.color = form.color.toHexString(); } else { preset.color = null; From d86d35e588cd4e17fdafafdabb4d8552b3781ba7 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 21 Aug 2024 22:42:03 +0200 Subject: [PATCH 070/153] Fix #2451 Colour-adjustement tools behave incorrectly with Layers --- index.html | 2 +- .../{edit_texture.js => edit_image.js} | 68 ++++++++++--------- 2 files changed, 38 insertions(+), 32 deletions(-) rename js/texturing/{edit_texture.js => edit_image.js} (94%) diff --git a/index.html b/index.html index 6905bd31f..5efd495de 100644 --- a/index.html +++ b/index.html @@ -152,7 +152,7 @@ - + diff --git a/js/texturing/edit_texture.js b/js/texturing/edit_image.js similarity index 94% rename from js/texturing/edit_texture.js rename to js/texturing/edit_image.js index be6ad0635..dc4cdca42 100644 --- a/js/texturing/edit_texture.js +++ b/js/texturing/edit_image.js @@ -19,13 +19,13 @@ BARS.defineActions(function() { let textures = getTextures(); Undo.initEdit({textures, bitmap: true}); textures.forEach(texture => { - texture.edit((canvas) => { - + texture.edit((canvas, env) => { + let copy_canvas = Painter.copyCanvas(canvas); let ctx = canvas.getContext('2d'); - texture.selection.maskCanvas(ctx); - ctx.clearRect(0, 0, texture.width, texture.height); + texture.selection.maskCanvas(ctx, env.offset); + ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.filter = 'invert(1)'; - ctx.drawImage(texture.img, 0, 0); + ctx.drawImage(copy_canvas, 0, 0); ctx.restore(); }, {no_undo: true}); @@ -39,8 +39,8 @@ BARS.defineActions(function() { condition: {modes: ['paint'], method: () => Texture.all.length}, click() { let textures = getTextures(); - let original_imgs = textures.map(tex => { - return tex.img.cloneNode(); + let original_canvases = textures.map(tex => { + return Painter.copyCanvas(tex.getActiveCanvas().canvas); }) Undo.initEdit({textures, bitmap: true}); @@ -59,21 +59,23 @@ BARS.defineActions(function() { methods: { change() { textures.forEach((texture, i) => { - texture.edit((canvas) => { + texture.edit((canvas, env) => { let ctx = canvas.getContext('2d'); - texture.selection.maskCanvas(ctx); + texture.selection.maskCanvas(ctx, env.offset); ctx.clearRect(0, 0, texture.width, texture.height); if (this.preview_changes) { ctx.filter = `brightness(${this.brightness / 100}) contrast(${this.contrast / 100})`; } else { ctx.filter = `brightness(1.0) contrast(1.0)`; } - ctx.drawImage(original_imgs[i], 0, 0); + ctx.drawImage(original_canvases[i], 0, 0); ctx.restore(); - let ref_ctx = this.$refs.canvas[i].getContext('2d'); - ref_ctx.clearRect(0, 0, texture.width, texture.height); - ref_ctx.drawImage(canvas, 0, 0); + setTimeout(() => { + let ref_ctx = this.$refs.canvas[i].getContext('2d'); + ref_ctx.clearRect(0, 0, texture.width, texture.height); + ref_ctx.drawImage(texture.canvas, 0, 0) + }, 5); }, {no_undo: true, use_cache: true}); }) @@ -132,8 +134,8 @@ BARS.defineActions(function() { condition: {modes: ['paint'], method: () => Texture.all.length}, click() { let textures = getTextures(); - let original_imgs = textures.map(tex => { - return tex.img.cloneNode(); + let original_canvases = textures.map(tex => { + return Painter.copyCanvas(tex.getActiveCanvas().canvas); }) Undo.initEdit({textures, bitmap: true}); @@ -152,21 +154,23 @@ BARS.defineActions(function() { methods: { change() { textures.forEach((texture, i) => { - texture.edit((canvas) => { + texture.edit((canvas, env) => { let ctx = canvas.getContext('2d'); - texture.selection.maskCanvas(ctx); + texture.selection.maskCanvas(ctx, env.offset); ctx.clearRect(0, 0, texture.width, texture.height); if (this.preview_changes) { ctx.filter = `saturate(${this.saturation / 100}) hue-rotate(${this.hue}deg)`; } else { ctx.filter = `brightness(1.0)`; } - ctx.drawImage(original_imgs[i], 0, 0); + ctx.drawImage(original_canvases[i], 0, 0); ctx.restore(); - let ref_ctx = this.$refs.canvas[i].getContext('2d'); - ref_ctx.clearRect(0, 0, texture.width, texture.height); - ref_ctx.drawImage(canvas, 0, 0); + setTimeout(() => { + let ref_ctx = this.$refs.canvas[i].getContext('2d'); + ref_ctx.clearRect(0, 0, texture.width, texture.height); + ref_ctx.drawImage(texture.canvas, 0, 0) + }, 5); }, {no_undo: true, use_cache: true}); }) @@ -507,8 +511,8 @@ BARS.defineActions(function() { condition: {modes: ['paint'], method: () => Texture.all.length}, click() { let textures = getTextures(); - let original_imgs = textures.map(tex => { - return tex.img.cloneNode(); + let original_canvases = textures.map(tex => { + return Painter.copyCanvas(tex.getActiveCanvas().canvas); }) Undo.initEdit({textures, bitmap: true}); @@ -526,27 +530,29 @@ BARS.defineActions(function() { methods: { change() { textures.forEach((texture, i) => { - texture.edit((canvas) => { + texture.edit((canvas, env) => { let ctx = canvas.getContext('2d'); ctx.save(); - texture.selection.maskCanvas(ctx); + texture.selection.maskCanvas(ctx, env.offset); ctx.clearRect(0, 0, texture.width, texture.height); if (this.preview_changes) { ctx.filter = `opacity(${this.opacity}%)`; - ctx.drawImage(original_imgs[i], 0, 0); + ctx.drawImage(original_canvases[i], 0, 0); if (this.opacity > 100 && this.preview_changes) { ctx.filter = `opacity(${this.opacity-100}%)`; - ctx.drawImage(original_imgs[i], 0, 0); + ctx.drawImage(original_canvases[i], 0, 0); } } else { ctx.filter = `opacity(100%)`; - ctx.drawImage(original_imgs[i], 0, 0); + ctx.drawImage(original_canvases[i], 0, 0); } ctx.restore(); - let ref_ctx = this.$refs.canvas[i].getContext('2d'); - ref_ctx.clearRect(0, 0, texture.width, texture.height); - ref_ctx.drawImage(canvas, 0, 0); + setTimeout(() => { + let ref_ctx = this.$refs.canvas[i].getContext('2d'); + ref_ctx.clearRect(0, 0, texture.width, texture.height); + ref_ctx.drawImage(texture.canvas, 0, 0) + }, 5); }, {no_undo: true, use_cache: true}); }) From 4228555faa0adfe36fbcee0bbe5dd04e957b32f7 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 22 Aug 2024 22:22:15 +0200 Subject: [PATCH 071/153] Upgrade electron to 32 FIxes #2387 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index fef5483f8..e9b86c1dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Blockbench", - "version": "4.10.0", + "version": "4.11.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Blockbench", - "version": "4.10.0", + "version": "4.11.0-beta.1", "license": "GPL-3.0-or-later", "dependencies": { "@electron/remote": "^2.1.2", @@ -17,7 +17,7 @@ "devDependencies": { "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", - "electron": "^30.0.0", + "electron": "^32.0.1", "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", @@ -4303,9 +4303,9 @@ } }, "node_modules/electron": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.0.tgz", - "integrity": "sha512-GRwKphq/TUhSlb44OwSckXKl50f5OR/pm9MvF3rBLyqcxwfu7L11xejrZ0hDea1eKyCkzGd4B+cIqaQiDguPEA==", + "version": "32.0.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz", + "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", diff --git a/package.json b/package.json index 97797f6fa..ceb0ab3d4 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "devDependencies": { "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", - "electron": "^30.0.0", + "electron": "^32.0.1", "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", From 15b9242ced9d3c9eb648884a17c204f068676ba9 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 22 Aug 2024 22:25:49 +0200 Subject: [PATCH 072/153] Update electron updater Fixes #1755 --- package-lock.json | 40 +++++----------------------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9b86c1dd..aa08331f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@electron/remote": "^2.1.2", "electron-color-picker": "^0.2.0", - "electron-updater": "^6.1.8", + "electron-updater": "^6.2.1", "gifenc": "^1.0.3" }, "devDependencies": { @@ -3422,7 +3422,6 @@ "version": "9.2.4", "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", - "dev": true, "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -3435,7 +3434,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -4499,11 +4497,11 @@ "dev": true }, "node_modules/electron-updater": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.8.tgz", - "integrity": "sha512-hhOTfaFAd6wRHAfUaBhnAOYc+ymSGCWJLtFkw4xJqOvtpHmIdNHnXDV9m1MHC+A6q08Abx4Ykgyz/R5DGKNAMQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.2.1.tgz", + "integrity": "sha512-83eKIPW14qwZqUUM6wdsIRwVKZyjmHxQ4/8G+1C6iS5PdDt7b1umYQyj1/qPpH510GmHEQe4q0kCPe3qmb3a0Q==", "dependencies": { - "builder-util-runtime": "9.2.3", + "builder-util-runtime": "9.2.4", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", @@ -4513,34 +4511,6 @@ "tiny-typed-emitter": "^2.1.0" } }, - "node_modules/electron-updater/node_modules/builder-util-runtime": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", - "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/electron-updater/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/electron-updater/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", diff --git a/package.json b/package.json index ceb0ab3d4..593fa698b 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "dependencies": { "@electron/remote": "^2.1.2", "electron-color-picker": "^0.2.0", - "electron-updater": "^6.1.8", + "electron-updater": "^6.2.1", "gifenc": "^1.0.3" } } From 5247dfcb7ca5a378f7657679f12ccea7dcd9bc9b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 23 Aug 2024 19:45:08 +0200 Subject: [PATCH 073/153] Upgrade icon Fix potential error in template generator --- build/icon.ico | Bin 367005 -> 131903 bytes js/animations/animation.js | 1 + js/animations/molang.js | 1 - js/texturing/texture_generator.js | 6 ++++-- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build/icon.ico b/build/icon.ico index 134514ec205a0b407a29a0fbc33914f182548d48..03b3d9135691b1bb8e50f5cdb860c5ace9c9778c 100644 GIT binary patch literal 131903 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�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 z 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 V&Jd-gFkk=x002ovPDHLkV1oI!EKvXe literal 367005 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

    q`!#BYsVV=PC`Sa%nQpJNWU_0$U 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%0AQ)TcZmVL8f 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

    xAe7$1`A!S2-fM`EceyX|Z#MbTL+#v4 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 )!#&tiU_occ`>E`_vO=>CQFeI*N}>ms zGO~`~e^*S(gwml4ia^(Quru|kaB(GG)CJ?|N;|Zst{&R6JgU=T5Xm-7yk(<78V*nowsl+DazXyRo$mkUFUsAAZs!wT-Zj5>;k;-A~gjCg39Z z1X*z+2WM(p*RY0lx%g~0+4c=2OAXE9GB!vR;jsPw6QUkGbzV93xc^AU81f-`Op6!s zr)V9Wfmhk2PT1E1+BWixs-R)>Abs24a!NtXP{}-3tYDGMmjrv!Q_3h}1jAIvnjF4r zp_?V*rGDgV^KV&ervz&C{(NH#fPYC#NQ2%BbV<+md=@`NB@pJV?k`uu(cjIh6#(I0 zi%!BrN&Advch0%Drj5nzWAW|X9M9VreN@l{+s($=2cOdiU-hj+tg4Y#=cJ&Bq{7*} zDyM5K{wxw?(^Rhvg-FIOOTEklzSoEdbxSdyNa;>Xz#@LZgXIf$d;9j%bePDqLb$<= ziEy&a18oB4vj25Ys1@SZ+rYm|SMP2)eZO4K%7i=#_QFsNHkqBQJNl|8Yb`#{4vZg; zFq6!#4bVrYQ$2Ht%$!L|KSwNlHuKu?Q8*#S3npPZ;ZAq<73i(fK5#@@L=jY-faCAK?* zo!=%sJ+-QyB5*_yy>!asA$I)PGGhJ`3^7FRbA6n(V5SAAl&P6)#DVI5G#bC;(T}B^ z@&B@H3v!CcpSnt6u|OKG-(-sC?NcI9&Il=LK>YjiO5&;^7qO@UF#hM>BX}YOwvx_* zi1?Wh4r{n)e;KWRRIM2f0V|XvW?|w-(Bmd$W~BN{8)su3{7LVREn4Lrq$bA04)L^$ z*XCfMGo7wF5IcP_Y`KXbB$pu>917D%4q1qx16(#VP0DIL{O!m=jND(~ex{k!*4xFUv-XQb0V^KOBX`q z(g6E-+dIDzxD^>Eqj&(TzooDX!Hjf;45)_YFavREp2McT1e1m6c?&bIDjsp>CBzVZ z^HPVRO3uAG(*5p*C{OXWq7N9z)v&u8#Ft301Ag7w{}FW^?r?Tbdw2B`Ru|n8EksH5 zwmOO4NpvC-B0@x8MDKzi$`W0OPSh0y(MzI5kKV0r*Y3B!_sx5K|G;xS=bV{)?zzv* z9D`}Z>m!Y*Z35}qE`d>^v-fB`5A*CKRfRr@!1V|Xsm+4w(aH7G;mtwDoPNv(3NMk%;cfj@Yh0-5amUmE@XjI!1f%9D9``K-bH+<=6_WUjxXf6_(Gv4$X& zxF@*X#@~0Li6*K}GElhu2%DsgRf*(NzLBNF*mSVzLr8)lw0y}zn}a9|Oz|fAG9l>_ zFN+IX=c>~ru6F%cuP6YU`*4^eBg@1-&6$=hlcM@$f_I+1lgMjWPa1}jhly4d{Ok>T zF3a@-H(N-A%hv<`0q{zn&HMuZjN)upgvQBZuD>VRl)U>lf_(uJhd@U!DhaLUJc&IO zGu|OST#Sb@u~@=EuBJKFE*nF4=+!On3VaH$sSfgd>)6Tv3E;&nRMiFHu_8LG7696R zf>xm>_PJ7en?i*j?r6xZ^nC0iR`FcBbRykwlP6~6^ja?v^wQf#0z4e-f>d;KiP3~R zx@zJx`W7Fyosz&wmxX~61c1(^kplGepgSk zKO?3B*2a0~5?HfAn^aE$yUxq!V#$IozZ3lvcIxVVxj`WuCrW-7G`^JiDnqfTA{T&H zP4t>%G{ZY3OuRA;Yi>UrJzH^vdXkPF&6IgCIK(p}<8df#QDV%L(i>-{+1)6X7-x^uU09)k88KM@rtJj$v| zs62>_gYa!WJv6gi_yZuN`4Kqm_Oz@Z{SPh6zdQswqZ-7X8#75W20w z2VW5d&)lWEUm#2=bPwRj8B7A8y&fe9ejsFf(O#uwEz6-kj~ann6rKFLVwSpB=fx0m zayCsQx`1sm+T#Q1Nt41Kxt%oETMxuTGLLDUGm9F7WO#* zu=xnNbh{^4gIM2>VXeblFloXN#)BWcy)^Pf)O8e6?LBpTnMevaX?>+E zdLbqF&A}3X#&?^>?Z>aaEFWg6bUF?z+E%-Q{V(ayoO9eChWAMy6rHJ+QjVe*G@;L{AYXNm9goZ7sZ znZ_SKt&m0+IMI?Y#dB24tyPq%M+M9h|5@~Z;RcfD*=RIomiFVQpTngvJYeEVhX|;M z-+|x}3Vwj-jFL@~N84K?kXw=U^Z=W^#EE82s9UlRR2iT+^*kAo^qx1YDKoMqH~yB- zjie@;$aDAR!|#TwEz)7PTCb!eLIp_yarJ=xkOCe-?<;*@_$eP(Jld)6?$J`*DbR-HFKGUsDM1V7rv7F7xLcLK}I8M zu>hX;@|%0{a%z+z=&D7iE#+O6J8DE>Y@89PkA%4c*$8DfJN8}xPPJZa)%f>)PTz|C zhh0cy8CJH1M(Xy>}b zbaL{Yq*A7>MY}o zqMIn5P5eZ+sC1tURJwiU{E+$d3zKP3fXH_9!=YA7%~<}&*1~oNDb@k}xzcqRRh|+UT40Uvy*pD z=PwDLWP|%$4G;6~Z{{Fwa+jD7$K(#NZLx^#%_VE1V3YnrxuRp~8$VH~5kBLD_o1c@ z!SZ=e3#fakl!4hXwEG~ZD$4`?7ohqQJsCP+GmLaV;}#y7Ut@{>#u}Od&x*2ME_(+# z?78r=vl$3L}g>$p$zdLjK% zyj%8uWV{$RB&C;%UdtMwK^b!w7`!yS%3*{g2L`)5FX)pYie%fN9NMPzKp-$cgivs>4%oJ#l!wWA29GOD%S zGrjYz$+LBc%OqKe8m@0=QOx9h(66-Tg|~0;=6h~B$B*%OmP9tj-P`f`Dmju&N_mMe zK}dcwWnRnlGub7Dc^W;ki{sHV0&+6UHx6uf5I1wciegP;@Jpf{HoglaH#YOl(lB3r zGy&#or8tU4S;}iwaWU(KDt?9#p#KyHLYMpijQ`+J^GVav2}vs+4J8|wKbprp0lg`I zQpas;eQB)WvzD2zP)h*hCxr@<`-lX*){g?%t|4aPOqhddLHfv<^8?hP$ZPAr(4E# zN3tYO!{47-0`QcCZSa@7ppWoN!^7q&YvI35sfgRGtO+|0P}c6O^?%`~thf2GwTNqd z8&>FBFinfVAdgkbB4TQjcyr_pg&pD29IbDb^vhzFyN|LMxojO4vBXo;qV8DpKE`Nw zU-V~Tk|6+ty_5yR8k@9GT%k;#nFjweM8yqB_QTU94BHcZ_tX=qys@=Oemn7^HvooUJc9GrpY{}D#)i2sN0!tG;58Q3( zs5%i4XokQ0?R7{GFJO4*qJ97MUU^D;2LSNkpova7%Ra7Fvm@U;qk~w>9s*rT-#1s- zE>Qz0sB!eN`M>S>5(8T1UdpD(`(<#~J;}_%io{0c?}{3NaVrAGm`x)OK0n|j?__%> zQNrV;{`#G*sYGQINGIl_g?bmE<_NceVIkb`Z0!C~Z9zEGRg7&y48GB}`ePF&Du1CJ z{hx$^kTL58L=x6ej}(~H*FAV-EvSY`j5-~y6<@-X_bhc~FfJD&!s$K%aMK%Q_s9TG z%k(=w7F|%`*3g*1BN7gn zDtT^V%=RshEkjy}1oW`ymFR!#i1F0BZgNvzdh?^zh06bDVPINm$cM_}1wX{z7XeUQ zGz$|=PY!S2v!~N?@ucz5_@1cAhXo$51}QF(1+LB$Rq~gv9tc5VkweALHalrzMYHG1 zshPjEsj)SGCcY;sGlDkGdDqHlv+x)|*_Wf=kPuutq~LMf^%ZcWCEP(fnr(6Pym6oI z2f{VLTN9ebn$6qm?EXDxLuiM-Q-(&AY@8^#kkA^?}IF~)W zRKq_+mqnf_!m)I)< zNaFx=c`s$D0v-{AJu#7i%`cTKoy2JZrpzqoxqc@TSw*vzEiU@o+z(p(i)3F!v;C2j zw%KEo9SKbOJ;LU1nAp(tN~^I`nSs@)XBuvjt|s2aQP?n&x@7@-rFk&F(;sIeSG&a^ z!23(14r&7A*yCiZZmhgzr=9?xft6BxHjJtRH3}C8I6al#WtiB(2f72b|j4f@$R*HE}lZdDRJY|Aufoq=v+t^|Wp)B;b)+EfE7i6vF z=OSqFKx>u+#t%ectmB;oA^kL0Po+mnU2!El@(BHg?SDn5m1>WJ&(>0|aX|`Wxcki2 zPUD}@f}v**LhN|me*fwv?)IVW$|%!{qjqH4OJF3==%?KC3v1DRcZrM9ezC}nB$!9^ z6d0fjzG_P7j>c;BJ`okR-CUP+1Ad(-wR(j)A9RaBcpw#DJ_yTOSg7471#}LiOe^ww zAeYR>fwPk%B_MqZ)0YODWaUo3A-7HjQhT^jS-f2lX{T-m7LGh*?TADd^^7wwsl zDKKqz;vTIC=#!KGCZmMIey&sWDEAF#*bkEnht%X5U5p;yh8l274SU+(7rV{)7V)S1!*kuXb6No=ZVjcqdo1V-NuRRMXCu>{ae)|6#Y>!!Czp+*zbV0xxZG!Ny@qETs(YLG${f#KIQ=#a`%Z1^A?B+0Z~BQ# z&O$tGZa&$mj5>_E1ao|uOQ}r$;qmTgqh^B|nn~3VX;UC?7t?iG(hrmQ8dG0V>)D33 zpX9lDvRAFK_h*y4zK490RvJl>g(fm}Z4t7L_?kk4os64ucmLXV#tVqI$2D5v%=xfN zaHzMq9UBiXwH9JG#E-g@d}ERfXd#~oz^)orxfy>_LFO$TlW~Yy>mI5;2!6@c-{E|> z8EeT|oe+t+Z!i*L4xZ#ymTr8D7?Ao4*%Wk+kw@G1}=>7EXn;?nZ8yh$pZ-1oE99zLzOkCgpWp49igDdWJEd`a= zF-gZp&3z9Jnj`&lyofhMfUs2S4o0XN7mC^33$JN`nw+W6HJ90xAJmGt^1ROb5AQU> zJoS8QSj7PkdVn2Ed^W!5^fGqy4?7H1HdKCAx(x=t*uJP1wNRhHjjO5T<_E?UwNJKp zsMp{ZFjm+8-NQAkWiTs2^$9WydoLI(YG`Tef!pMDPayLhEDfP^48eyB_%wJDSfK_Y z7#E+S+)4v??q;x^@a-)z9&%{mV=Tp_!XW_(WdKS+ZEUx^qRDhH4r(fVS2E88-1`+rLKXPQa3_d)P|VjJ{D zDo6mGXtcT`kHZ<1Y&PxohzQ{ztUdIW7 z@#f7x>i^0s7ReF$^*e+>4V@2=I1X=7BETS-#$mVcFRZ{M)VFKL^R$u%Eq}Ic zTro*((3fZ}*~wfOFLqjN&E38)13Oy#V*cXJ+rBT8*1P8`Gz5VVz`q+XK%&3rTt)-Ki z-^m7xdz0OFT2NdA{t!RN$pIG?>I8WnywVHcS;(JRlT&mzQYsztM(i35evi$6nINSZ z_^AjFl-AU9n+gavDpV0hb)UaoIwoD9`B#3W=p*TEE?LZNRM%|g*o)gbkw)j=9S6*+ z_YHX6@-MICxne(_iZtYnIjgPsq``n>pD<%~ja(0Sf7r8RpwBWg#S3^u!c3_EL#NL^OKfSqP3C44;c{oBd9S>h7-b zZJX$J*Px)y)$4j^{zOzvc0-)hTLJ#Cb3nr`G4|G-1vTKmTbVGK=&6T#+a1Ai&UqNw z+26X@_=&V0Fm_F<{6*!rQvr^#hh6USBZ_rCC%&=Zy-DETd(w7<09}&Zb>BOfRe=3o zU+~p2Up&6;G*sb%q^uAClvZB`RVWU`RyAcA;2F2)@<2~^FAf5PQt!6M4<(nmu0KyF z$a*R?-VGM3XIP3+2PC69cdDzgJC?{OP?VS$wbIl=APQDX(epRddc=4fz_BycR4oz2 zW48?ea$R|Nyk|Np4FfVK6eMyqnBC`K;0no^PmH6h)_<9C3wuqgvf`m zsjrm@va7peq<e)EZyLY6qwIgQgbHkUZKs_Ohnv_^sTdJY{_$0_H zEjDQAQ4n9oIY#nPVg#lss~V=Q>X^w?_8m|x)q9F~>Nz_CM%Lfl(Ni{%F^H52**|H? zPcy|tR21*XS(o6A0jMl^ogtF#3!*@dLw84U%qL+%zn2@3M_4FH8 z#o0%w{Kw=sHX^OD_kB@&XG>9a(>H^@)3g8W^y;g_yB)WjY==uCLW_d4YC&qOrOG4 zIX>w)!gs2Z_!~HEXl3_3(-EXe-B*vSqk{kuM3>bxstODw_S+heLj&6N=fXOY!4-N} z2D8q6uMVrQj(>dqi?6)E&D`^D0n4;XBB((LnkHmJIrzbpiEdpjUa8s{MGiWV8hf>Z zq3DyDY4*v#A^_MzaJd;g-dS&(Ok??G34E0(8pCd-iF--pyBQVeTH_-Z-UElkVdQU{ z*JS657cv&s=?z_>|P7o<{ z1F1NBSxCUKet8gPAJ#%X;G(Yfb$2!Fz(7yft()LKtVoHZ^$?iK>8gh3n7M*8ax6TF zU+cprtz(~zax4_Qh}4#EtSNJC$eRoQ+_%NO#QOE4!PhQ z*g)FfrFu;<4I&;&5pKJYM?QE5CKTnkkgqHQe`CWq7ToQ<_PQyBE9WuJG2(};isJP;O^ju`i*oSJ#Z!maz=&lmVXD-rIadt`1Q(1ysLwo$-8S_jm*;`(!qgo{m2N^ zNhi;G!>#1MZ;{aaW49rGio`g#$!YePI?)3KT#N2J<~^>0Vrlo06|1U#B?%Ow9I0LG z`7u90V5M_UFYj6CDU`wvY=6>iX2My!AO?-PVMfL1`*U|E* zJ>V?lf-m-9giF48=0YufXn|fAx7C#>ul5sqQNjT3=E;?EDW%R-G zz6Tf4_Nsezp1-?id)Q>-K5fv56kl1<4-wAoQUjfHtgf5|&pEG~N5P0WE18p2@Qr_a zWPJXW@_x|RazBSxyxwvv2~%E5{!zMf$}vh#n;ZxoO-N%ZE{*8GH;CGbi}I9|!vo;V z{D$v8BiF!>0c>4n)T+D}Y@^?BGD0=7^JRm##a!^pGk z4W125qVTHOK*N614@9_y=evh?i%I=+nANPBi{I|mgNB9;G8|lMqNy@dD&d<{N<;&M zyc=HH&EZL1C!B7ts5(D3!L@u9wjhpCMxE{F{3%^%mGpgl`deTwHAU#0o|Ezxl#KLs zd#DCow*OF5P5N+B&|wy=LgDRS!k*CZ>fi;eRH_pB1jeLsva-wax?&*AKC+}zr{0A7 zKqRQL58XIvobEAkC?!{~pff7ENrB!wX|lqo45DXV{;pFjm?x*M>_!e>p>^(is{_Kb zM$PUQ6JrIHpr(Le2x#p}1?i)6^bAm*^_vp8V#2dVNx8zd^D=T<|FB+z=r7H1rP$29 zR_VWcvndP|oCspntiNPPnyw$9;AEN>C`n%?aN3iN^b&5>%(FiAuasa(xMhcnl%v2S z4F@M4E&u?nI4CKfe)@%8qEqWlifxsx-{cy5DQwG=o*F-RpJ*YheF;-Ef4{(1i@`JA z+)~xomJ~v9l^2&pc6D3^GNA>0P8o_YpTik-IFiVe2%yGL&m8l zkrb&w`@4pyr8XCeDF)82gNOmAH`UE~ZTUISaT?ocKGpx7%HSlMKLf#E6Ef{=uJYAl z%6jh*A)Rb5=zDt()pM@XN88QQj(O_s{DtOe`kU25DKYKW7t)~4zTLv+-1CASzfUUu zO5Y;V=%)D?Z8Y@{++oM@Gp)ObG{0ZU{&Sxx`%SQAj9HLQN!2KYIyJIwt?#yc&N*C- z#J1a;c>@#)fsj+yJ-wE~MtjD&VKiKrQ0gbcH~c6@`rC1(3I-Vj5!P%G86#cz#4>uP zE-I#FPfGIJJre`zK@f%G&x%jrxbap0`fj|z#A5&0$S2Vw;n%}q(ik|paOuJETb%Xq zFwR@qCjdlXtid|AG_hE5o%$cx-nkDE8g=6AO)>6@N6|Bg)4{UrV~*r6zAKq#%;g?; zK<48>-f=NjB5zRP7W!N5Dph` z_a3f8Dmu`GtX)QzUMs1}BoQTtnO&EytQ0=!~sZi3;Bk+Ow!e9gy2Ey`v9RlC1ZH_XQFGmT3^LJ=OyL+WQk( zDbyN6IiGfCoTHP4y~7^O^w7)OWcRejoIQel<-Ywu{P`-99zN2p!u|?Jo!?3hkKQ@= z9H^`>wbm)-WvbdA$_9;Dd)l`16Vv@n2ieErw!2p*@w^}iTF&^nhA2m?ZMJa??1Pwq zf$E%--Q2>atMG}OB&&dV2^z7I#-g+Q?+Fg?-uhQ6*pL43Tw)K>Y)as7$^g*$L6C#n zLk$9Q*#F=~8sO@$)Q1J)LqfLt=7`5NJ#;8dzvkLUyMJHp&m?dw-1;2^e^Q8mgP z!@{ngbP_ro8U$lM0YP#_Ip9aus&Hx-KWK1<0GO+K`Fz`*is0ZRY!k3|@*eK_&u@IafgdMR@*o;(7P>zbHf`DL9W*eccyd_(Dzs=cjuNH*yo1W1@+h3ypnWPR4GtI z5qc9nY@MH2UXXvfRp>&JeD13V0i3?G&zWl-rNPhzN9mz!$$)>)hAq4O%J+LW&bE|Z zo-|`~yq|>oWlg(7Q;xv{wBw!O5e8DnZ?i4Y!(Pc(Am|f+oTri!JYv?heiBCJo5z%drXl(*^T1ZP_XjPd(hf;p=EOA|B6Xf48` z@Qw+oLrNgrGOvK4A7k#wA94-vI)75@0o#Aj^cz|Xih*i6DqfICe+m&?4=30*cM#NI z@k@2VugPYY5fXg3te_V_L7{LBbabGaX+?kjEA~q1NcsP{sICs;(4)Ea;DbXCTo2f( z|K%Ad{#h`c)LUXZ!YfG@3mOU51ez#|HP0`A>J?!i%SWcMmmar1A=+M516QjCU8t6U zi4NS!zTfeZf6`ua@0c81B00G43C-29wLOd;_WVQRvC-xFGMfrkGkmS>Mzdn3L>w+c zbiT(XW2ws}Yf$DsPOGkb#l+d~X*2MBhBBF;SxOq-?ecw<(s^4bn0so4ZQf#h@E3NNo!ijG_C7q*%Il{g}udg7%Rz&y6@u|sAyI_7m zX!SEwPhG^&3!00oMU0eZ&8x^iU#mTjyYK+>_e=KnaD&xg5>}44Mlqa2SoS;Ec!|qI z|37Q6+9=4z{T+A3Wzm_|O&woFeWi8|jwH5DTN>T-C6qu&yG5K*C2C4Fdv&oPm~+I!!x0e&pAKkCy&-5ijEK#IN}UF2UBY;OaX z-OaZ8ISYnMr%A4CzF>Hw5cjzG&y92Th1-Ds7igvv^j(6~3C7G+{9M`W_)b3-H@aG0Zq0phO|j+flS!jBZVIrMIsDp6-Fayg8KM-T)%Y00g|SGQdf#NUkjuQ z$t(9{T!WWvdoD;c-h@lqVsj-Wb6?E;(fy$&vK-o3agxs9sHBs&DiT3W1`hrLJK2BNU~yburd$V2<*Ntp7|bnQ!FwT2Fxz z4tCgC@7;^;p3H!Usg=YGc>nU?IAt1`7UuS`#zzn! zcbeaDv>#@@B}|(P5MT<%01ZXP7GaaXJ58HOe!Q53$%LF(1_iQC_=pg~7#|Rvc+VoJ zllE!}yh`XQX?7(ihEyE=tr$@$>_dAFJFHyx>?UKP9Gt4ttK@}l7K1Hx7t1`KfVWg{ zUX!oUZLS7Wu_g`IjNTahROVSfok(h|1ALOZz$-hnFe(db>E$eJymTh7(==?}EgLsZ zT;N?B9wkGk%@MJ;M5b*{an`+gT@3CcTVBKi8<_#FBBOHZ8arMpj>2D8K~Nz?^umD36`*Fj63O!3V&jIgBEWV7 z41R{|LFvi$J+8Ch7dzr7fG9FD1hX?YWh$8Y9F0=~qGtS-X=*M}7eveU|Ms&?LkL%e zNm{p$849iZFelFF{wpqp3*H|=S8MErNgQ)46d9cZNRJ}6Wt~L3?Yba}K9jHoCsN$9 z@)Wmfr0O#6eO1!F(M(K3SN%MVb0NJCq9~TBJ|mcBpt6;?axNYC(A7mL6lQr|rnDfr z-$v*d23;fgK`7p-`LbavcSo~y7a`qZ%F}8Km z+;2oDM#Y|RHb5lI`G})!kaecUVA_AcwkraHlAGXUXK3Q|o{+6428q6B1h~o{_2z3U z3X1rAFCqJff_wb3M~Npi68>Ahf0_)LJK?{egw?)QwGw{g+?&?bK*-_~eFc5Xyu z*sgryp-{XTTSN0|jk@jbNmV!I5V26**M4xzP#5-27w->TF1`+fl=S*=Gxv0xf`PhL zHivH0UbQ@Jn$UJlvT0h2xy-ts3ir4(2U2gB8thx_LTgU|qX%{}$W;{IBIjF!mD1D^ z=Mj*pkA1%;{&}H45=c*C&RQ+gmdFVW@(x)bVg=i)8VkrM_e?P?8OM|;>@A)7{hL)u z$#bm2f4sepv&jobe>_3oX|6IoXllbgWW)hi`9LQJR{sxVkh2GQ$#!?MXUXH1t;@@f z7{HO)-JjAm)#CW9DwVaS?rt)^FO9=pRL?S{UpF0K)7}x=Qu(H!UxbZY)hQ(MfMW>+ zs5sNoG?>3Aozwjqr0YuWGB55Al9S%e`YKdTy+mMWW5Q zJOH;59!y4+&nrG8Z9@$O?*SXcd zT}6Lp#vvG)pNbJlpTsLiFY>?O{VYTvuTPR-{eH^C!PM*<@3BmrslTubsKZw?<~o2a zf3JmOT>B2$O-W_2-)j54HbXLRr$JMe!R%+<)YRq9iyX?X3)s8WSj^kJB<}}og{GE* zl!s5^(jC@d37WPIInhsjXVUd{T^b|@(nF;vm3Hn~{h*xFJpk=Gd|!VzG-}eHGNQa) zDHEXcZsV5i`gVOy`fcZ(HYvDrQcv)F4qufSzN}gJS$g-zw35vx@hLDLuaW(f8_>Ck zvc5lI^KTG{1g2a%Ja>XgBW$7we&L>UM9(S&*LDC#|0FOy0ssV%aJzVmK?z=*GTsns zB7IzrNY#_YzHe20LNlz+yW!JVVtQS2m}$1SLN^DR;GOnqZgE{Me6~$9zvY~QPMm3C zdzNO~d0nn$`|DLFhG@}XC;a_A%=6cMa)(7RJnN>gw3g3VDtVKR(BG*lfP){0AT>IOhdfySzmeq*ex0t zahve{D*Z`|;Rd4-a)lJoFi=AR%v&kaD@B+ohO4s=?+{*<%jDe~|9LFlY(EUXP(0FY zlvTobGSL7mPpZnRv0p}L)Ihs$!TYH%JxrN@Qq>^osmE_An`~?`cad{#a8g|dfk~B# z0?>-nYfD|&Q`o#h7&bBdd3~`qd358-!>=`Y5Hf9p;GEsXs34Iah}vNeIqg2NdmOzZ^t0880X%w-ZGJXoCRph* zF*0*KAIVE)8wxcI3yN`-JQqR=)0byGGxHgl{RmXGZ1&JqQ1i28d;W6r2txx`16=3M zeqW2DO2~nuM%vnMob<{l!E zkyq>dJ}32;XblfxY88KKkZa&}%E>v#-^PtS@gG{6K#F%v$(N78BZ2FnbrKP@ROP~W zuk?cED4Sg$66vdgILH8}-+4YL;8Uv;uY`2tX!dy51g;p`3IK(T6+A9vZ>4+PZa0+s zM}$*CPzB?gvmH5T{2|rQQJyA`? zGcE}1b<$fICMW4og(~%C*AHpY0dS^mb9POAP5RcT8BYUVssJ`%aEA3B`uaYQ$EI%O zaOxf6p_eB%!KOZO{C@&b!V6q&OArsAtBoJ}c1Tr}A~nA|6;^*|7=oGK)obJ&d^)Q5 zn)RTbpIw(U>eLA$e{bN=(Z?g%tG7=+n>%Z@y$KSBzrox|$4I3VJ(zK~7xQYjnx??w zUb!o*%wTY1E_=2XK299m+;=|(ElHAler;6CvslqKt6M5@fnBx&=U>+dXQK0UeuYVN zvY)mb4)NG1CLJ&ve2DUoo!J=a??~1Ps&M482LpV3WZ=9?+_IkfcfN3kGC4Tu45sCsk2^I@sG2XsUkX8^aehekpyl^l>Dv z;%@gjh7~a;#q$q>ePMN#|0su95Sem`xIQtt`qrpoiT}zk0cK5^_p!BV<4Wb%CTear z>4(CdW6^~fpJMBUC7f1i**o%`49nOFuP}VOjw2210$!Y-tSOh*l%j}3dybU32tPuC z#UvU`zp=39BYPwSKK6;2Q493E-SuRPxls&|yg#4@iuFRu>9AR_jQcFL{1{@0OnMd}(5l2Xbi1z91JIsBBeS z@Zz`2cn27k&r4^AD=4}Zrk_j08TgB{DeWLjP@S=l4${bmOx*#WFL4#{|C6A6wX8YY za@XM89KuV~Z@WtAL8w^gz+NXPE^YR(7k$w}b55RMjwBPmhx3UX%oFdB8PjIIkS4;# zvL`B+W94+y*J<+?Q?2$EM8W;01xGPdfb$)!QR80D9&TJwW^R8dQZ2ZKk4T-``C@b? z{od4VZ_DSs__WSM!8eL%oy`8t=g0RZV4q)kmIkV$b?6vN>HSI6`#J{_+W2DfDn>~d zaOF*lat|R7As@{!da?M$DCbRtTZK%>yDRPK9U zUagd5#5{0<6qb@%;&G(M@16c$eZ&v8Td3ONIzPPh{g(xcD^p{Y8;A9=3CV#Fj1`kZ zW-O{f`6dz(qHvWHjs3)P>GDLpB2&$qqmTFM?29T$Upkx$saU8p$$+CMX0kXGH^1Vs z;ROM1loG2M*(f*@N6bzWEOX5omkh6;G7|EI`M(~3wqku*gKNqFoWYUNiA}%ws4L<= z2qC@o1W3IVm2)^Czz5My=REAyT$^_>QZl-2zcZb-bTH~WnVg+dIU4RU0b1xlfMf({RZR_Sd9{O8}l(af5hjWetvO3^?^W@jRWl6dMjcjRAFzYCHjFNT#(L7nQh~ZOJ_>(4C-@lnw`+0Ewelj;GumzUjdw^}3@gM!%gE>!!2?gh|V5v?sdy?eO_;uJjc(9t@ z5Jd36?@{qE!T!?Nk1xN7oOjy7eN>zHrg>mLLSQ={-+J!}%B#Ad^NQQNF`% zK`ufA^Bdou`)DC>&ZsGJ%IzfU zns?}~MGJ!!)$V~z(lw)R;eWyEXL${OexVA#_wZf$OhJH4@LtkRYU3;<={F@dqK(y| z2h$qVBBS?@mkfQMI$H|e3v`Y>H2HkJ`RkOK4Le4+nyBA}YA8)A06b$(VuSf@*H*(= zNdQ9}7(dvXRpG&G^6Ywy6ieyX3*=0{Rp1iCjW@ZyxX;SwT^$p=H`32Xmu|s3y=Vbh z>UqDJ@4KH5*Q$_k-HkNWMGvQ7CAK%Y8MxNiW$s@Ty?J7WIURAlGehb7(kunG(!9C9 zn;y4k)?a9dcr~HUlVr(g+cyyXRJXAWTV^eY^$t2e9l2Se9Z}eG;hRpC+wb3On~!}k zL%f%(yQzQzV0CGkmkNro5+;d;aaWgQW8R(exE=QNK^LyEM`u-QA5e z?9w1o0#Xu^A|>7IBA|4qbf>g*2?$7sbV_$O%kJIp@80_l?DKqP-*;xtdC#07fkH?C#-TdxyaMsN?*7+JA)(LFqYI_z^=44U_K`M1aftgYNKCQ8{;aE3=Xlv2 z7O~;22I8oEj8X-F;j4fP&>#0_6Y+>ZH}Sb_1c4(P3IG#RX5270gv0{%NDynYmW!fc zgC&HYOw?Gzcc>EnCgH(mc)Yfl4!pShNwk6Mfj!@<17ruE3aLeudJ8cb*0o$-mM>}d z$I%;H{niPMWiXQjUnK=SERjegZ^rLaXF4Y!)VI4`c<6lbEbmM~r~vV&+8XuJxGATu zV@Tq2#+Aa;%~{Lss~KX-j#-^SO^OtAt0HeOZ4|^QO|FP z&i~Q||A_N}*({VH=)2-}_S8U07X~3^`N$u4HQy1hJ_U1$?BBQbC(-_UQEB?Lnfj%> zhFi}c0;&AZ@u)O=Qb2+9EDw8Vv1i;nhI;?_L$u{Pbg8Gk3=-8?$1{HBo}dD?INwzU75=Xa)S z%lz)xSqa@sVYO0pXDRza%EOvaR85!~lz=BDZnw%Vaa&&eiN0+Sw&&Rc?LHWZKOQx$SDJVT-W3>1XsRCgz_v zBJjS=HcWyUbn-mqTdlqKqHEwF{8po+nC!4ZkL1iBTF*kQBpgAoT+Yi0>4%K6(ilx_ zDL)G#F2H9kw2>n+9{$w{OCZ?mL@-?Wb}KYU>^0Aj?^5cUIKVCB|EdyO$Z9=T#qvjI zF*!QcU|Hs*ls(;OlZ-rM0-ZP6W-D4a0DG?N`z(5s_qCVzg@lMHZHUGAFuafcxwjd) zP08c&J!J1+k~@-6VFzYnAuvUeTm#@S1l1!dEQ39$3uqIc74(KQ!`z+<%E+P@6Q$Yc zZ*P-yH@#2pI&kS|m;#%h*BifzV=j5cI2Rc@?1IIVw4Ga=_3+I+nj7MkHWgs&Yh&UQ zZ~)SIRtk)Lz$xY+l;CHxB=_NO*rP|C`g_ZSbF=H9w0%;!H3Jz8>-6qI0o2}{*JzQK zU^4MiaA3Y9h0I&i#ot`#DTM=p54v%V=fp%a@=(=ooVE}9e*A=gY3Y8Q(rb4P#fHE= z70kMtqbvvs>z>11Mo(~?-}iT^U?c0ypnk{?l>jSWgn*kf-)UOs^{@1;T-iPLW5e95 zt*EC2taxcSi|n=}7=L}DW=i{TCdh2YfCSP7N$=0CJ#0~*UzRrFcc6$am7pmFW_CEx z2Xve8ca|P6fh=WD+2&gh#>^#OgRn+fAE zoGHfz+hYa))_56}tD0lasS;KsW`+@t36>n$; zjbmC<1=Fzd(H+=BlcX~(9fzp>bC{_Vm&8IJw9JPh9*goHtB=-0n_2s_4hhh^nY}X| z4Xt1K!r$ruV%*5qW38~6t#w=snk+Zb1{A>l)$9yIkSfua_kZ*>6tnZFBa=)kUM02B z+rfXKViGZQTZrddDZgVtp!zlpG2CP){D_COFyhjg(%ovY#FI21U+h6vpCIWAh?oz* zI*@-}-?>Tt#MO>}0?{>Ky9Qug2E?_bEK)@FISahgz#B2Pl#`(s--K4}COKYY#Px2) z{i7fhP(*OMrrp$VfWXk zuKj9`cUL*coUAfD7Kc(ci{?M;T3Ifr)y}t4PtuT7qeum7~xe9u7N$UTBA#nNX(fom34G1C24KPbmsL(*%O*nc-nY~fZ>OzBq-2dBU;6l z#s}T}QE1)I2c`Z^TG9*Sus;6Y6oNI=Pb#K43H-9W;BaN64>2*bfkX%Wq4MMasn1+lzi6AK6vn@G8C~oK7BVpBcJl z00#vx1Z_7D0}~k#@%D>PH7po;S6m@%F-YOlpVkv!rl4^j_@2^5;$#)Lc zXr}MhPXG5zOC$Q?qIvfoGX)9Be`q6WwYd?xR1FGNxjZQ6_9#R45*5%je@ROKhcAGd zUM?n08S9Bn;W;k)WrO$m#|(wjuqZ$*-hV{(1loDN#^UlvWE)N}&$ur7U3&g43%hJ4 zd)F*cYx&>*uLbxM^i&uJ%(hSPJN2aFwnO50nc2IC?RD`)whJ+8Zr^W&k2RUnSCj-4 ziqJ?XP-sb^d@|vtR5&)@FHa~XQ@V|@-c7Mc{>9B8A)a=Gl508&G<>dLz`!fb0QF-GrjF|J4BrB&&ma z(@ww#YD#g zA0QP0&?wYc(u;o@RLhM>12G>cAH?P5$EkDJLsO*o#Pf&b$jxsh-xGgu%e$OEeXXQR z1RL(S*(v**MvifcF@e##)|ud2^8GxQAm;0Jq0hU*^iXd4HkF@0jz8Da1^09dRuXU$ z6}T;Zx?n)CzMZ>rCwF`9k!gUn4TNVK1kJ;&JZU7F=$}vQ`B=6)Ih}cBEeg7ke%PL0 zmNc8fzR|tu;bJk5_hY(x=-SqzS3VAIvLy>mIW3N0 z23!TB4F%uptu{)m-%NZcCIN2TP<;tGv~u9nZtNKSz7VTKN3mUC+eX3zYBz6;x>X4Qcs-V;Y}n|1Cz30D3Mo})YEmBbN8zY#kUw5% zP4o}Ap&s2TipQNd>;sx5$U6J}YQb*-#NXe+1W)}IWE~5_S>?|~%$Q^5dFxn2EnS8I zgLwej)W(E>Pn)@eN^h|8ygYnSVy^lrc!z|f_sUcq=q6m+I#c_O&johRuU?_jxc?`I zOLJM;9Y8i`X;E8}^_Zp)z;k-k7>C~{AT?TJ-%GIQ*aON4FQyLn!tFGKCwtw!jF8)KUOOY&7yM| zV{#)M={raycQQ`|9E2)F;fnh)<{ipKKhz*o5%&AF#$SDe058kvL<`Z*mUl$Ta~>aw z&5tL9@^m5quX#2I$OJ9ug@^Iknug1$)O}N9tZ*gQN6W@UBL6t(1_n$vP4y=G5JQD? z;aWvlg!0wwZF5WrdzCB|-goXgp{kZ_L6RsIE!|~Q9|ggKf4&-q*BFG5C%Y1BFvz!$|qB#u|qdkNir z-Nd)vUs~|vzru(Ng8ULr&cv*TM*g0ZIM^xjnsKS@<>3ss568vzCnu+#g@kt~g8`G6 z#~p|3qf%yrbrw&LrR)Vb$qq{dAyv^HE=G#$-`^F

    ~S2gm2I#gbNv%&v9B+i%Z*x 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

    ZQH|h_sb!5Fw z8ca!g*ry+oGEiHQ_p4tC&&*0`m=z$P?40M6dlotS|s;y&$un@|)xv|KMoHITfV+GsqogyIA;ffo_N&BS5jTr=J7o-So3t+_>LflSD|g z%wsv3_^llccjb_zujTyJe-WE764x0n`l@pm9q4$)2$9~;8ZYg*GF3tUGkTl8^ElAh z+C*GFrps)Z6Pi>?&WJDir89?zMZEP|bgskWB){pcgPkk6N*hfCC(COkz4!Tnj7Ck! zyZt$mP`sI#Da?m8Q3TuC@a=%1TNK=3{}7^as)hp1;r4gUK+p)|p70_l@#$HX z4&f=D`Byj-Qr4?QHYnx$K4eK1#$^ZMTk=Dp!#SbY9rpEkqhnpr z4740Uhv8_lJv7eeA%f=-a}Nw5NUM~w!nm6_F!|4C87~61^NNtfk76=VHU!KU+W-%I zNxqbK9!A9*Yh|lw^2v*tt^)$*Ta=#%1yFQ96LC?rI;cW1*ls4OAigAb+r%C zlk(~YS|yYVhiqKcxW{{wgINEK{c{3e%EAyZ#1-+@N!!l1Cm0&M;ce2jE0Fi5-qE2k zT>PSii4oTQ9Gqmp$9aGA*H-&ov|A%;~%Z) zsafw6@N*qO6@)_@?0mIg9aS- zvEYMfVDUZVh0U0$7F@?kHE#znO(|KI5-SxT7tw@RgKksXn!R~eC`EyYP~y>}sjSx6 zEJijl%{!aC(aO@7WuB)>1@Ms(?&30Db1+s~jP@PR`N|~L_*?COK%x%O?f~B6H(s=Z z{gw7FQmd1!RbS7m^QK(i*$P_I5d0m{=k^(VF+9l0wSR19=!-QQ8opq0;z)6AWJtsD zF%`4b9n#+pzw@v;dZK=Wp}LSq(?B=ZjC)p>AYu2u@9+R8=p~xUBF_cJImOjKv1^7+ zyjs=LK55X*OGX-+r{f^#mU!rn7NH7ys&}U>5RPeDoEh21*qD=-+nW8=pf32vbzmrask+k`iC|Mr%b8ZWP&G7VTds!qXRVS2zT z^w&pI|I>#o*i1z@GE)mOQK4Nnv#w`Z{IIMpN9muYp?PsaDTwc>eRli9RQPvpH;3JY zY4IJxi$Y8Hv7#ZJ?W?G_zoB2b`3QHLb*GCtS7H{?6Bj<0y~x11z|e!OT6Rdr@=s&P zp&eJQ=#wX(J#f=6Ttv2B;i!Im2gQ0Ql$CU)@4!D?>;8b3T|Hqc6+`SwEc;bFr#`+< zn*Zu}G&64WU||0(9X#L0)2VDC5{i(3Y1*Fty|A}g^yfnz4SY|ry(|iSxJ;M7n0w!A zbKGo~-=EcKT6>D6c+R)k`Ua8Y8b{uMXgB9k%(5CD2I1!tYX!=QUx=b`!d5%QZVTV^ z4JLg7o#gICpWLD1qrVz!v&|Is8ke$sIcgkH8;!nhBsbmhz0$EI66v7hZ?WEY8xjz2 z`d<}EZ$r=&Bs1*a+wV+cLPxa2<#3iZxCH?KO@h)a2o11(U4=SDq$ z?_U3`SF!f#tH$*NGx$p$sNFWpeZ32YWZ?*6f^WoijbdcsU2N&TgAIs%TFkx_jDt^l zx5<4-D*7z{i@RiH)8w+s59raJQYQI1`$Hxn;mSsR?QZgooRsr-+{e<0o4LBRFO&gb ztMZxju;yTj^T~lC1k2`(0{LZGD#DGSfZE}IQ9%vzK}}xt2Yx$#A`JhO=~w{mAIw)p zyZ!FB(72=sv0jspmtO+Pp%S(}|(0EzQilNO5<^!tJr{YNk2i?y!9Lac{j4Ay*Fgd^uMEHDwsTr5nEYhH3k7LSJ%+@ z1#`uAP-BtMR{aD@OMqyT9Ju#@hgBqpFtYK%fQxoUw{d6IrF&Ir)&>pu2hA!QEg?8Q zg#l(U3#K-RhyU;tN_}wNK2Hh!ezl(0W!pWnZ@zRJjt=6Hnk2x(jF;+Q^nN{Mkg4NZ zw9$a$*y`kLHRAU-k!~)>vz@ry*RYkzu{+Rw1z!GNpcg@;_XmAXVckj6Vu~#NHSJ_r z?UxiHvhwlafIWJ(5!hnINixd0%UByhbs(2rv)3C57EPDaS(oNxbA^oe{`k%UEF^Bn z9o;6GBy4p|A88Xz#b2?%j$|iDYd2^BbxHyP;m;S1%}>xWB-TEEEN#UNNUQxx9CO8>>a~*P?ERgGGhHj zR27Q!mna$^eo}{-H53jF{E|rgh4#^|5_s_ z9cM*PNRd!kB`JMQCt_4BiRo{w+a1zpkE#?u-khH(@yv5c9b!~VP6;UE-=i{8;+lt zT0A7uM;_s<(=>4h2ipEH8v6D1NvivmO0xA>p?DWS9${;}M04m4Oo{r-u6DaY2I`6s zJC5%K`-4%Kaq_hj3BkJF1<{`+3{nqO^I+*Rx!LN1DzWvaNv5wK$4G6L)k)5-O>Jc& zmMHx75-0Kj<`I&VBtG`Zk2ieD9IqDnCB53Ubru425G|2qLUHIc#>y0nhDAWU{OYlE z5;_rIWv|{ho_|l|>nMprqxPMxFr2NJ_*5J=88=?CbQ-3>85@?IVMJ4LINBB6?n_q^ z?fPWRQDTek{NB|9^->1Q9%|$w8u=<%fwK6Z9EKw8z198&1OD>5JbD7~=mi~*##lqe zzV?ElC%qMz*q+&`PnDEFthf_bEM+zqX6Ux5@>Z7GoF~ozn9j}$rn2*E6iONouEAAV zxoJAFcx!^K3JnyWHSadK^of5a!GmN{Tmm5 zo9#lOJ&*y&V7zM!%10Ls?|yd8_=e6?uB%a=E>iW*o9$ujfNyr;_lnBUkX_kxfL1|M z=X%|}wu8+C=flg-X|~D7w)0YMI_#?eSIK`!(rw}eF8@EoqNDMb%bzjeHN!~@(r2C= z{uhw34F774cq0E2fzd(EKZlW(dx}5}Lr2bD%1e8JkKyv5V^1wnX$&_OhYP0l$KgBK zlvX5Oc~)|3`!2pr621qniN-POs%F z4~+;8_XURPr75G$TPyk9s7Fq=Z6nUc0b~cU(fqe!+HulN z^X)8*)7klS~JK@l$Kom_@TfWuI=b>vM3aQhgZ4)70?=Z zu?3+z0@NO5WSop?>UTF2=}&wZMef}=B(K7KJHqWlG{szZAd z`ZU&8pH*w4y4;mNA*2-z_EHWk5%$6xw`wK=fe(@^=)&tlhvq^%WJGz<5gEB-AC$XM z_yS+rMI0>7IltahVKd|=SI!bSr6q7ugCXi#@XUv`_n192%)H07sW&#v{>pg2okr|kR|3}*uo*ZWnT?FI*NRbFm*(1X#@v4@gPxEfR3A0FVICzfq1Qjcm z>`lyv{LJi4qX}j6QNJf*JJE<%gFA5{$a}-cind4CoCJJuk9yHW?;p;=^1Sd7FYc@R z-3+Cl>%n!Ow@xk^8vGSOD)g%g4S0*)vE!r)V|{ z8?DlPyIt|>w45hR zHCe-tPx`*f{W4^)VUrp_^bNK;O6XMg9ze%@mC{qgcgy)mB!>2SbL^+(Wc)?P>~{Ns z7+Wm7fc02L*@K@6X1n@lWNlJCa?za)mTuxH$L%>kd7mr)tY=m{hHNL090F^1qSMAL zg)ktmdu{y>&A0j8>raa43U5qhCHVnQHwh+tTg6PoK5X&7^8~{gvDq{oU*A zPFD8r5Y+hXqTA(RQ$eAcdh9+#<2WbvdHd=c#2R{#45Z*7b^AQ?v>p|V?V^PsWnRz> zy{{e{xyK{x=KUW1HRb>@0;>IckK13}DrZI}Hscd%FMIy)CiGHcgB_fHFkfPwT(HUp z`=5{QO&^kS)F*T)@RLj)4KB~L9=~>rc#88R#+#NLr42G{`r+bDp^0J zQW|$77a4J&ZZq*dBS*(A{y#@ZQ@;m$M#)>&Fk8K8j%7;O{e0|6wW+bj_cm2!O=I%a z-4-y%WsBAKJiZ#z-rWx4hx(nj!;r-Qrxu{n(WfCbC-iorl zx2`U&`zL~RSu+-V=;fwcSDG{0IOcgv-W+MBN@~>iek7_N?5ldWcLUx7FZ82B5cgVi^gbqN0jK6Hx^yGP z>#~0MK1AOiDz-X;X!YOGJ%6DAAoxh@p6+}wk6p=H0kSTq^cxy0Xyg8OGS*D8ia!=@ z4vu1zn^4({$jn&+F&($b8+Of?0MEG&uTxfmrFqd{6xgoX1^1(nmRoHs@_Ht zVmyFQjuS{Ii@IuPo;<*=F$=SF;Vy>*rt}!GG05jQcy{bQrDMuT@oKX^IT!qOMGC}H zuLR-%OUuL2c45K}&nafvPwVNJ($E%bN+7@BmvtlWlf8>v1DC*w1N^|q!fFIac>V_p5yz>40oN$1L0`X3#*;l> zwEp9RXa4*0nQ{cdQvbS?do(gK<u_*jc z3l0ueIF*ABcPt%&w*f7{!4`J&!Gjv$x7HeZ!0|LR-#@+m-8kgWh^X~t`|^D6I~Zy3 z?Y9s?@;Jj&qV$&=m-#f5e@=gMgK2wc67B^;K_;A<($GNmK;549R~+wPIuhY+0{yiH zsMadar+VC^QR%&{8>dcI*!DYM{_KS?QWY zg6AgMOs-YpA#4lLq`aATa)J53@UCNj#-S4$TIPODbytbwIjr?hOw>E5mSwDfxLL@7 zer=uImjejHK|zxaQcf4LYo3b^aYy81xDMs^nkvj*25v6#4pqt~P(#}kzYLz`f5(c9 z=%al>w3Kx%KjJ2@-N~bTc5~$VBGFP*Wy?bo zG{H*K%yUjwg4!B!oFl8q4+Y!p=PmYFZV69xweA0K!{qPiOdF+p&r1^*6U!0?w>@@r zF1m(O=oznREqLD;N*H>c;haSLCk{jnz$%p&0*n#ct?4XnTZlll>@3griUl%(v`)G3 z&4JRU02e6Wq%-gowK+zePYlTlA>c1(9^zMx4LlO1x7~mJasqECug2Sg`GSSj6&2ex z7`DaePZRG^;*$kY8GF{m(1Bc!Iwxo9zwV=v?E#_ZV<-xmbM$>oKE!_iwgo;agndKf zF%FMRvrwS|(C%t?CHH?)SVZnM1!>dAad?L7p;09)A3ks-rcTs9-0mSlas_gSv(8)5 zN)^g(Po(Srp9N3>Mv2;Q?l%}3zEKgCC7jbI;)}3m;MbkK7sx9`5fVn)R5i%?j2HLU zML1!#Y@K3t1c#t%IUe#zv2Jn)-A0Yg>;@6cdtq_CQ#psgn4Xb_=odv$2zw{PmGlaolgwLv|9nU6Vc9Asf7j=C#_1ro%(MP0)&sKHM|1B$y#MW``r4}G5-5(L1+8-zq2MqfEIQrbK4&X(_mQtYs zzx(v>XUYY9H0VFf06RJlrQxaw6+V=%G`6bAD z4}2vLnK%Zi#+eN80+eXu-IYq~_-NdYlwZhaB!d;QU|B@JPQhp3Pkhuwc890{1R?zF z$?Z3aXGRa>WQMn4D?q~-=n^r0CosVjop3Mk>e!O=Ja%hSQL;5Pq8L7~Po~`0V?L24 zxSu$@tS%G@sa96=2|o)iyNop2kZ?(b68`FOo9D59V^fwrj8y4Ktf49N^8{(Vv+7`N zVY8viI(kp?_Mol#<2q_KE+GF3#6M6;#6@M6jLba*5H2Ld7cyT8rvq~9{YuXcmNG0- zuROAGpjX)3o@w?XNFS_&r1M#Yzv557H5RF4JEfgX`?)s2u9Q1sGgpTT;W0HrU%xsx z0j3B8=CQc<_ghtq_JW4ZDBH2vdV5xAG*DNy;!iERK*VV4XKbsQ+$zwjXfxt!Jn$hG z@3J~nV8M*#7ekUh3wv9^DP=0(>FC94>~W*g9hwy@)-q_dZwmF`Bz9c=1@vZWAZd_T;cnFV?!Eo>ys|9I;f^i{UVY z;&wU^oE`Mpq~S7N9T>iBRy8)yl!vt{=j^j%ApG1*3`~A#(uP_~c6Vx8?2>PT`)c5Z zabS~*P9*$(5c3uP3&gAHBybV!JW$EX^2kyLxa*#z@v5ag0pWN-Lbtu%1^-^U^_WHt zlpo^9{MkWS_;A)gkog`_^lwSr2?&fNxUy%rZI0u%JQ$X}ZxFBeYiR$(T6g)qQ^Ep# z@@h7mT@LovK{Y;1HKHxMA4&5)&0ih1wQnNo6c`-{ZiNpxx5?DPxQ*;aauGWJ%LTpO zgN0_q?S=m3w-?1dE<%AQ|6m1@;uHyxuN$g}AX@b}UY~-WuiE-;@7t*3>xIMIE7`y>G2@ngIh&yr`60u`v?exD)* zfesGi%FSN7@|LtzQHVS!_9Jk)7{Dw7!OfPbHj!t9nUK=KfIMnDGnvh?-JQ_(_=$AN zdfG2!#=k^_e*4%Bw8t(m63WbJsl!wdKQ`_++Kxe_y~6ab$opdCMk(1ogpuI_R=e;K z;JoiDO0?1%L5nsAdbgbq?n#2Elo3}otsOj^JwnT8Dcml+cjF!DnHiD7r6FyN&KQ^ADBZ)Z)JQX;0>g1uR-$JhJ z`+GU9VI+RPM1Z+z6$hGR8BCwjU03O~fV3K^L;|9($6Z)1&6EJ( z>xTS6>L^Pk7pTUCESp(Hqev;oXq2uZWxvcfr{6?v3ET$R@Xh~N%b4xSDlu2RAk(uM zG|vN=CpGerHx(fRO8DtOZQHqn)T7yZUg`z`b%x(7aIXt$Kz~!?2042l$pPQ`WvsOZ zMF-y<$$)TLg(SL4!d59#@QolX{O=yK6TacWb)_hv>(MiB4gWb>-cvOZX+$dNyI^Nc zXfxz)bPRC!3-6j?-~vCO?W6$gD@7jeF;$;6aP|uJfGB;}SN$%(N;yGv1N5Q_YEhEH zSmeHKO~2(uOtqPiMsePUhkE^3*}t+pO|=erw5LQ8@Z+FX&sKQ#3Xg3(WW%wl#~?K)tDF;sw(DD;lS z6yv0#*JOhh?v3f|(~MUdWDSRb4!AhEq%(|@XA`1bN-1>+LIMhY>L(#%#$h_tLI_mN zItAy039QWAs%AbSeSd{8f2R_U!+pP$L*t#eN!(2M8Go=o92oy~^81zhTdtP{3G^?$ zsUr4G3!4+tEmcOK=F@UW_xfPUL2&p~gCcNE0sx$Zv^>#t&#*$4-R~&0v0$M;QroMa zSmH3eshS*~f0_Znw+N6>OXGWncSarmD$|{S>U<7k%TWIlC-> zm(M!+dwLXIFiE(YGQsNaKuX3FWs%9O&uR;$0xV|ic}0R!2pYZFn04>5w$iM~r^f<8 zm}cj9n|*lP&W78&0o-2c!9;+W!jB@GyRRK2=|D7fB~QOBojGYnD=}hi@=>Wb>;>xd zurhW+<7Os?&J9naO8mkZUvX|#4w}xKZ7%Z-F!UCMXMPLAs?Le)SM^m^tkeG=L)eH zrBH589T3);5QL@0=E)~z@@c$WFCR|TNa6cp$vH*_O+NSOpA0U z`pyDIKjjGYl7Nn_PQFE!>>u|SKVN9^1f_@>Wd*sjz(2cnUl9%I)Fm_BhI?9%JM5Zr zu@KF_lNhm@c{#eIoHF8RXu*P9DpvD?3Sh2@)tq8QAHnatmXknW(G?6xA6htGI@W*j zruQXR%jE*d+MQP&VnZaQLJXm0!Bfvik;fQf!a>!(b#@3^dEM3Z?sA9{DJmU^al&qq zoLcB3#~^EQA}6)JvAQlE0*V};Jb+5VW^d%&A*#65WOiIm%N(vsp=Z{EAGprV;gFKz{_&ZGzpQj8oe5;6Z>1 zo`!@&1-uounAN{pTZcmLoy$==ra8EzVFD{@MkivKB~yCy-#A;0nhw@NRsq1YPRD_hqfnO80lU01X9P~3*7JVtN`7BDtC+`z*ma8#yoc_{-m(% z1`!#d$c$6?<0JmQ>adS7G}HYsZtO@v6iL~d-Y(xTez5@cYx~O5WHi9@!mQuIAF()U!Hk2z^LiuLz3_~qEQwfd3CY<~3_lof}*%C*ktfQ`1jvu8q!m?`~r8<$Ws zGta-c%!LEf*fuzG!%&|@Q#e2Hx#DcYo9Wu&cmc{XRhN%R3Dg@)6P3I5l7N&KO& z;UO5$kAiX=K5E{c_Z!82>)-!gl$pCa^w_r+8=yTP_K8=I5y`mC2aNQYn;BnZOMUx# z+#8GOE@{i0?D&^>Js`I|yV!ho;9rOVF`%7HVXe4e2{5Tudae^0PN{OSw4#1WEpuO6 zSv2rPPDw@%+M*5{#|M9qPrD(_ZOwe#0T`I0Ipds;gI>o}u^-h+fq4#M-Y_Z(9wqGT zL_NEqJbjNOc{hCIVcB0RVE*@N=}00jT^a3G?^1;ltAzcZ%{8>>CTVa+w8rL_C9nM0 zl!HJ9m$`P9)r0@uE~(@-AplL2z6jv!Yeg(6S5iP1x8|rjclhq6D3`N)Fl0yb1En~P z;}H^{N3Ux5EQ?aK{&zg9b1F?`)y4FZX85Bt=m?Wr7-?EsEzq~~2g%;?8>$}C#Sh^t zqxZhYOKk!|sMn@+_`Iot3-Hsz8-{sn5?_B>uQngvXz}8$Mw6Bk!;OP8us`L|MmKwg|H9*NDJx*C(R>w|0Yr)|%TO}9P)X2-)L6h7A7k|F`TXQ}gE?tIYSEw#yjHV(pho6FyX zEFtE%QPhibFz+bDs>ihd!_?nW^q$@i1=F^AMfSFrNk5%W0M=r$K;{~FCpH;QYEJ8y!WVfZbT8&%-A51BeF0W%B&|bh>JKj2BG-V9o!Y{`jw1@ z8DRf478*SUO&9(@6Q4MyW&26;#YUFl`aVrT=}W@k=(*>^u~^==+zV zGNPk->geo$`Yoq!N((G%2G||Y2228>C6=SzbW)hB(4Zd*si_t6tThQyJ+&Bd7Zt;k4_;SEN4p`=r{8!k=qqC}h$ zu$&Kv`VxyF<<_P%K=vm+kX5rVRi#4xWS6N3BJ`TGqvOA3#Ih^El9`24MZ=FcB>H~r zu_P6XpQ#Oiviv3OVTP>?uO^Lvk}{obn!O206SlpKlm!hIw;BCD)I9f3!!ZN!klQ5@ z>Ur!w8CR)ycguZ}&$Z1BDew7NAhL_+rR}v!X8nA__a$0@s!uVIR9MmqMxBri!eXKW zQ4qZORdF_f5^A-pHbTw3m6(0Um_>}py_Dy7RTi;KQut>a@AOw(8+Alu_-Nt45<;6*!uH5@# z;`LGK!&*Gl{-)&T>!XMu$2R5vr4&iaUp9;T!8I2lu&sV+RAyI-=r8VTB1PhKVu-|_hR+ZAqFH$f(_I{-6 zPNrN>VTNz6Uq5HolwqtMiFtuBYTzufCHLyQ`b!t`-j1i*i2vM3*+9{-)lj5k|#ZYv~qv}=ze zR?PTV6+cs;kLmM%pj<)}8pjt?1KMdiY^x!GnT=Osz^yDyLN#k^dX>v_Es6I(g3RqG z2&tBBIO`BUbE*8=PpluD3MJpuGcOsRE$8RU3?H+B3%NR394<`KO$9;sMk9Q^T-;7- zbf)Uq7DW-P(lWGb%^w$V!bYcT$eUl=-|nEkDEKeaWCi6lszc)Qf#MJdG<^%TKT;2m z1!8pc0vCWp644UY_TS_&0A_6{>!=4Ekm1P3+(UO!cbE1YlV^{Fd$@WCF{KwVHEO>;;hBfrU>J@4UQ@x=-8Wbu5c*d1)Z2 zwDk=mOzmgjD)-B$|sAKt- zx?PRWYFOA)+OI75k~0znRH@^!&S}2Jkci^jErfux)^MD5d17DMooD$ZSLAK-=76ANIhsX|Gi{q#RDp%I}=m2Zh{J=f>=T^c88x5E%-PO!6c6FL3ty({C zE5?$ivo8z$^{x%1xP#t{Q5~?|dW-SxF)`Hy9ijG1Khyny;r!MB& zzPzfVn?SWub$FFYXB^m2Z0Y5rG0kh+RNl4;<2;FF^WWw5WIw6Y^Wb{fSNL+Ec%0Qt zqLBR}`E9f{47_d((E6F*bOfN*JO6ew!@H0E@5VS!c4l?QBy6I-Zo7%zv5^!Zlms;x zFiHhDfAXbNhot|&;#?)l#sCzs8ZU>hQ-T=2jyQLuo{2IC@{dejH3cEyh#Ts%C<{>X zg|1aqZB%;gu6_~=;O-{Ce_N%)Y?ODL36#Eh)&}1qMt|VJ)(SN<4vNcv`gfB?UzDZk z_T1Eomcqnh2=(5qUA7MJ#?+pcO8Q=k#*){k)irH|6^(}TSDe-fwa|=M zPZ4bl9t%)&2G`ET!yVkMY>xB@68A;(#i^fi!8{LOJVdE2#e~3m0V4M|Twv(VnbLci zrNb0i@OFcRuG%Ck%lqHdf7`3@q3$lorRL+h7S@?WKpuwo1GXePM;lPOC)h2LW4pAO znTcd8sW4B4sdKKHjt_7AH< z4v~f&|1^jACk6I0D<9vUY8T5C*!r3t=MW8IZ4Hy-c$!vCJP@!mSd#Fs;P-`CK_jn-93Cd~3YV3$8Ts>Gz`Uy~7uj@`$9r`UGkUg`kg z{h)e`Y1TP1JVrMCS)|(sNz_Td<3ZD1&igO26-s({Bp7#H`pD{~7;4qXvk(Vvz&(LAA5;WQX#)^2^GizM*uIAtBiz#O*05F3;TedCh;@&$ zW;AQ*T4N2*?9I<5Jm4r<5O>?+=69|ilGo6WBtC}-KOpzfT4Ski#B81j!qF{|Iw%Ry zb4Mf(TB5VH=2Hi9qWf*oj~k7IL-N|%wnbnap$0*~YvJ}x_c)xh>-cXYq9HWb!KOAi&{(55|+FI3y+j@?KP zgdGrlaq;u?5XZ3E`VxxEkK&0OByB8viiV&GimQmSJ+!6h4sOMek_7CuSs-uAvR1-D zNs8%!I~Cxhd=<^(68PE3nh5b#$ruHaW#GXYJts;m$t6F>1s;%~xXjNm++MB9U zdlf&Tty#OOb}5S5n-Iy9{-5W0kvDmfoX>rqah-FWb8e!E>13rlW&(HI+A7P<>mpWJ zNajkctVl6SB=7HB>*vhGMon$GwdZ0e+O;`=D!9x}a7J4?cH8kAA!j&#JoIECZE;pa zz#u#IuC8zD#KV3ZMXGr#m+C9HC&=M^&HpI zZ}5D3basQbv&rWj2?m_6akuk9PKwl+Ua0~|+y6?xKn`+g?H@%w9zY`V)8bWE5+0fm z_i&W(dxoezu_bx|#--T49;d2%Gqdf)Mmz;JU(GBg3baewZelWfho-Sag(e{p_e>qX zD!tn?su&AMc&roJr89swEc6XN;;dXDS3;^rs*(ZtAnyJ!#C<3!za=xKQbZ?kAo)%J1s3H3x3tg zVktyx-H|>J0hrDaS_k^nDn&?Z#97hJ!Z1+Ag3EX0s>s-8@gq9f#@8T6J(p4C$yD9# z7KB8qw@m5sT-+KWOyh4=Wkg?+5KZzzKlguy16==vGx{eS^XIRHR}tqI+>P1h-}_vs zJJunvx(A?!)sHuc>Md3wa)=qUjc4+=h?}r`kZZNE3~eO!nw(q6YlhD#Gq%6Mwd+)J z)?a*8>B(u6eLuc+JUr4#9%1(1aFS+GpA4s_kXn}$q2Q3x8$^8Aan+G@&6A?uk1@?K zlY0MP*Jo9GyP11cAFSlytoywj`JRaTeY?a{RULb2TS1IA+ZJ+YIbFZO&k+VH>*QtQwQR?Br zqV-D)p06gMZIO1O+L}X%;(6vLnUybJzMHC6ckK{sj#3uW29s0A6aRRzFP~3^kP{e- ziC>Vn({NaOF?#h-bgO{j>#vmHqmlTHS$XJCELG`#Ac&T3Vn?luELj=$xHLz#`ni4s zT^$2&b$HrHGAjeCm&}AdY-Rt^!=u77@^oH&HrR~t4g8xw<06Crz*ye&xnb`}7W0bI z%kbcCV{E$A>)Pc=F{B~H5TM8;Pa6u`jy6Xe4F+D|rfChE8F;6}-ag9xO8k4{3$NE| z8i(T@cTue!y+>l`TGxB97^mauyHDgOXf-(C+bXUsJzDM5Q5Pc2tab*+z{G zBZfUC(cY}fdUfo=H-qHq#&a$_Y##{#Cy5bizT_E`A2;fUc}Cwf)Ml0SgeZ%m zAC{lgm){{j2#*TWb}+g>nxY?`Y7uyjC$|<60x*RnbJ+kznGd#PO>RP89K*RXCi3@J zrQBb(VudYv2PL@l{GZ>2gvrP3h5d=aMncE z@=$BEPEF{0q&%CFc&o0jyd``kx0dW=YsB6Ay88Ckf(ST&EPsD9F+N;49raZMi7Y=@3`>FvbQBSqAGNcyqqla-nIrF6V+k_;3xA9 zJb)nSuqCqikj5)?X#-t%*%u4Mfw!5})qoD1S0!2ZWs-3K9jFA?2WtcAJpoL+Lo(GW z0mE~%SfDRxde+BhCgf8`ntIYeN7Pc)%GLW=fPoeWo1g&$<3!9*m~x3$dPH?b>=*Ux z3{ouH}+(IvsVZ72`4yxR$dOU1z(_H(^nz4pq$&?cYr#KkJaiWIKZJHqOGntf_l9K(^);U8hgF z?8uB5cBUJXB?bk3D;_>oxN%>+>$gp8_2&jXidcu<^MvsN4Z>a{__1mVUj30G#!KTm zzvUqYKNhozXQBqfXu5}qSt)Bj{gVz#cW>5Ikb%pQuv#KwTo)*RVIPGY;sR&~p|Hzc z31Ofq3J6Rd_8&7QzY&zC;{W~dEpJmASHEMQAw#&Em?pkwf*#b8k0q_T5%FZ3l$u@<8Rb|nz)3A6;sEbU#!v&;tl8~OiW(^<98)WL4AEX|8x!i z5(Ul%BCi2#M1rDqXf;_fTR78|<(@85j}~~kHA&K zB?D*%-6p}Ow_3j&YFT5b_EBTVYXwjr zfB*e1%4Eb_PLDzkFk98_B#t3@9O*4S#-#8OCg`lH*ket8+-al7Pfupv{c@{2sd(Vf zCd{n$S$NHBd@g6uNL;k^k7MSu z)|3o0bvJpJ=ol@IZH`!9e^dUB#v88<-zI@P`GYhWh8^Qz|__I@_N-C@BC&?az! z*C+sor)pMkKs7ELbiz#G2tq-ThcEH5?#R?DAf6-{VVkfuZ?h^wqVrk*Q~^4{c$JZe zrJ=jIaecyhO4G~HOi=D&2zPZ(Q1;nS+@>C~Ps~(Yq#6eCAuMgqBWdf~7SbrKVd zjZ95zN?W||8SKmPt8w!>9|eVj%I7FPEN8#eg<@w%}Ig z-_BdZ@~e_bfu=vGq~vr(xw95$|2CKN$V_;x=oT8i6Qo z@-O4#(}Lgevh0nVUEymeC#}%e;hDVnhBOFT@-h8{d*+|r6PszRHMxFkA&Gr2wcF-XSl7wMJ4ku)u!as=l46MCUv|#qmlBq7$b8@>`Yo z75KXueEJBoZsOz29)ShvL(9~4n>8l;_g1cjI$pk1N@Yh zdEIN?LDSS7h@hDoXZIQApd^dG381+Dpc3AzvMAs|IxVmO{p`6Z_lbK`4e+%5HN7c$ zsSRqJIyQyET1NgVRJwwITH*!E3OLfJM``*g1%}hzOm!=Wh$(GxSIH2qh1R+;v1d`o z8jrn#pmFY54<V;tXT@9Owho|OzkD*QyOklvWQd!P3x~Z zn_&5P0`DEwIh8B4F^J~j6&?FLa*jW?ftDb27;@|XiT4z#_hqSVx3lodr!>mqMsho2 zcjMRAT6Stdu)7OCtQOjh1b0_{Xnq9hzUQ*Bv8&Q*|FzYF%`Z5d1yuB>|I~(4GYJf9 zNODoAAo-PcYKY&7O*chqz6%n$lV1V^^OZ9LA*`B`E@coTA zp8RnJNsblZ0n`4Wa^fMJ*`J)y);2zSGv*~>7Zl+CZu6`CwdZ`Q8NgpDTvjYc_ba}i z34$Dft3m{sFiF;w#HjLb2HJ)3f{il{97i^8@x4&|=Sr1+xdEg2m(%04p=Q!^7j(fj zRc831sb-YIWXD9bnP;8rr09PboC!J#g^T8wQ6&P%vpxX1C^wU(>)H3u@9y(4v(a%S zlaE*4Hij5Jyc@J@2hKu~8D4spTl^?A3#fhibk$I6EvAMFov8R*zt+aQquC{42NzWh#D!9TzitmymHP!Fj`zoAAX0=w%U&nbaff z?0IIeM}o=o1s|oOv6J5eN~+lEX1{Hs+Th!C3aSjb*&rBM);l0Kwo~L>A)uwPV_I}K zi+sE$N0T2gx%WY11Oi7Y?m1Zny+?%IZu>zAEEKKP`uu@q18M_GDXu#VByhr+oi3tn zwcl|08+kuF;@rvAlzBrdD&z7MeE`tUKc|p-%$Q=Nmag8Gfz4f?o_bzO#EvibdkT7uK zFR;xPPL^Gdt_bm+twxwtYhPg(%_Vu` z>?T3Oggv83lC>M&THFfca2aMp!x5%{526f z<**Slq5rp4VM{3KRn>l9))5p|RXzW{lx$pB+ww-yjueMFEl6fZf1NY1omL`>tWH!^ zQOo$IbKd|IO_BE2eadtpp*7qU$T66diyLTRLh=h zsGatr8KO5E!LTT7TnfItdJCJUuZaB@SxY0$DC)#6-ns1uuh?`DN9#tD)wvHn;b!0h z5yb-e`*!})c5*NJ-K&m!o~?-zqw+*uykeErkcYQ*oZ1Xjuf160yVpxE_oh!1-puSO zZD~loW&1sLv)1rF?fua>ToNOO<;syl$}Wu?k_|4&Fx?NEhT~0Qh;;46Fz0W6r{Ht< z5vNN0B?yA5c!OZV5;~w3@;e=81p-|w%xf_~qylK>W&0Qz6uIPXl*GGe+s6cKjm}9% z^}Lj}s9u#B(gjZck~xCPZktpDt24s{z#KX>yQJcO&&k8S-J>`{TN%ayy+5&U<}xqk zhq-bX_;5a%-0#*Uo{{-)d8&~FUTmVr zv1Y5s4ukEWb(tvXa!v8L)}X1i5z7sJaQv|;1zjK+kjbu0SG1Y9X>iI0sSkv?;=>PkLhjQPpWib{vN_@V=k=4bKE5#MoG4w?A_IpHS$FvI(th;_f7kpX0-mc3gE7g&APlxvZ{-qn^d&c`6*tsX`x=l8<}@ibNzVKrPG~=V5bu zd)2a}mJ99M&LV@YKDz~gd*r-^2v~x;U6j;zAt|n)0f<${o0JZ?ZT}ak(!#{OSY=Ha z=~^#Yq+V7*-f54n0=Q-eZfvzXL92@&e8+^TqT**@XmWDFRBOZrHF z+(Zlf3i{r2f!3eIrz19VfBmOMYn>Hgeo2qlxu@E~zr3;xLneY2ZBqvx-&sRHzeuC0 z&o(QdY!p6>e-ZsbIq#K~TnDHTKDyLHyD_3rFajFDpV^;%$rM*yE5ClP?(z7UuC4p` zP9BxbXs-UxAZM#6{kj#oEBH|kKDl}=_N6A1q1_mc@o2x$@CxUH~@=QM&fNU7gDoV0*)$1V0XjI-38?MzbN!i`J zA>14|z0cqqWSxO@{HDs2Z6k`a+GT*fq(+44^TW~&MDBvv(q?|RCs2Knmhd6_ugQh0 zZn2`^atKxpS5NmadGZe0D)bUr9)glQj)>ho;oLUTUe-)3W5Mak@b4lp3Yx9A%Dd>_ z^EMaV{2*D?VvWui=oI`!2uOGix@*Kxj@EDEX#TA{ZkpTnU7^iIUGYr7&)Oj82@WN-ZM&%j_k$(I^4*C4$n4a>04@X zc3mb@)iKXp=#Uk`92r8}G_(Mc@c;?~9Vxv&{X_68eR&KRng?2fzo5!asBl)Jv1j8M zChzduQBj-k-Y(FUiJS$g1vc-R~{6xF#JdRt+B z(Pod*@BstTWBbb>3F}=3u2MHM2Qoly-#8~GLu6)?--&u_YoB=8;3FFpDc-Ob3s7>_ z5MGGNpSILFE!W;VkG-Fm9w%r9urd=wH2$cDr1dst5w8+gPB+^TnAc_jjCk;0Ic*+) z(d&!`GpTmoD|zxZI4N-Q(1KRxn!%%bC~W}$Kk&T>qMMRGc!?#lpeD$t^X6-Z*Ua^+ zuf3Ui^q?NaTX1C0-k)SHFqIb0MDL-`Z8lG1z;;3A`^7Dy6h7K6GQ)GPSbp5|^(=d6 zx2qOWW@nMi&nR;MQ?&30%gykDipT!-!anT; z!9O?h7NN+-2@7;J9xu|O0xaggE^6uEOiG=ZUwnPLF1}_7PPNeDty2V@)ih?183yW@ zZcH3`a5NOADH|46Y1(L+Cd&)X`4JK7iz23Uw$ev7sjQSty)pdz@15rmiPgV&{@#B% zoV7~bHipsDPR09UDqHG>%3WG4GM4@oGGb7;>gUv8pzgGLnDoRtSi~>~Qp8ZgK$vzps7LMp`Z-!l2#+ynFUi_&&@BPa=mhYq8 zjN}i$)`wvXNw{>##JVg?A0*Ww~|K*JHpp~P1r=ZYZ>jjc<{5Yv`Gr9WgK z)i|InsZH^AQn|;ckHB~ecG~%1>t6jRGvJ#0=td0#z^urSeoH4(t7rvFnoIUpi{S|w z(7j$1vQ?|jKS`840_yAV?zoN%*T&tBj2%?RF|B&sdsc!M0U-w|UML={EqyRcMOcjd z{Yg|S4=s5-c7H(Wg$r_)2B4joSd`uQ_4&6Z6e+_{^yUwcZS`Q5?3e!~Er=oo&sIIq zM(rm%dYX8}V*|>UWVX3BZ=u~szS{gS zlkY!^bfR%_W@Y zs$#nErj}^!@y6CLr(f9RZEIcl(h-SFn;8v2MLdiGiV_z8d900An70pdb$S!?9EI5KVEp4n2~d|T zN&QyCZ}Zt4$9jfuo?gLwItdL>;$l(qP{7jFaskVNPq?oToQOijqi^dasEtLBR~N{= z_~33df50kpE7}6jviGPdyDK#GXyW5Y%nF^7lHE_aoczTA6ItPg9K&9Y-spF7-U|j# z@ri>Bro)rSk)9n4qN;;V(lytpE9&AsBT9;8@qLl+aXU->TA>2gkys#_nT6PQu&v<* z!yuwAoBK>7Z9vIwOtj}#G}dH;#cx}+w(wCdmZlGsf7E`frM0plzX_R(PhRE(0v=|X07PL%l^%ezdHY3X`JDb!^oTSxhq~U zM@))ht?+dynmVpY*j;T7G4RG&a4qT%!@bBBWaq^ILdG)uI$sOZ`ty4=P1l}4%%(wh zq@G_i5%3j!mm5H>Zhlip`n51SZv=gax8u!J2)ObqlL z&ge+Kd_s&!vsEh8B~5VnaUTp5*%}KAxceh(0}{IAiOtYCQYxIRrs@1mLAPi}ao(2&^;dgn$qf}G`VP{kT1oY2CSYP^WE7IDhEyCxPY*i{zm=ndjT}#^ zA(utKiw2_HELin7#jMY{?v|JaX!wx@?SNKceBktjgFB}8tkc^BF$Q{qIgT}9dW*0- zB9}@9Tnxhc%yKH*CvCW@cdnogg28b#>fu;wFG3%0k`^p~Bmw$BPAWihG}@PNyJ5kd zyf9i2p=A7XpHQj5iUP&@!t)J(fDyf2qc4gð`T{ybg?{=F7O)YTBJiVN{Gy6&HJ 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 '${start}' '${space}' '${dir}'`) const possibleRootTokens = this.getPossibleRootTokens(start) possibleRootTokens.forEach((token) => { diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index 8e0fba93d..40c8bbf71 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -1427,8 +1427,10 @@ const TextureGenerator = { } } if (!face.uv[vkey]) face.uv[vkey] = []; - face.uv[vkey][0] = source.vertex_uvs[source_fkey][source_vkey][0] + source.posx; - face.uv[vkey][1] = source.vertex_uvs[source_fkey][source_vkey][1] + source.posy; + if (source.vertex_uvs[source_fkey][source_vkey]) { + face.uv[vkey][0] = source.vertex_uvs[source_fkey][source_vkey][0] + source.posx; + face.uv[vkey][1] = source.vertex_uvs[source_fkey][source_vkey][1] + source.posy; + } }) }) } From bade4f03cb1430c5e39c7cc1e5a08bdcbbc2fad6 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 24 Aug 2024 00:23:45 +0200 Subject: [PATCH 074/153] Downgrade electron to fix file dropping on Windows --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa08331f7..84641835c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", - "electron": "^32.0.1", + "electron": "^31.4.0", "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", @@ -4301,9 +4301,9 @@ } }, "node_modules/electron": { - "version": "32.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz", - "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==", + "version": "31.4.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-31.4.0.tgz", + "integrity": "sha512-YTwKoAA+nrJMlI1TTHnIXLYWoQLKnhbkz0qxZcI7Hadcy0UaFMFs9xzwvH2MnrRpVJy7RKo49kVGuvSdRl8zMA==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", diff --git a/package.json b/package.json index 593fa698b..0e6e82f6c 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "devDependencies": { "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", - "electron": "^32.0.1", + "electron": "^31.4.0", "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", From b1eae241365f997b7ebdf148ff59bf7e53d17916 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 26 Aug 2024 00:35:00 +0200 Subject: [PATCH 075/153] Fix undo issue when retargeting animators Add Retarget Animators to menu --- js/animations/animation.js | 40 ++++++++++++++++++++++++++++++++------ js/interface/menu_bar.js | 1 + 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index d819b2b7e..a3a2b0239 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -1610,7 +1610,6 @@ BARS.defineActions(function() { } } }) - // Todo: Fix undo new Action('retarget_animators', { icon: 'rebase', category: 'animation', @@ -1678,18 +1677,47 @@ BARS.defineActions(function() { if (!form_result) return; Undo.initEdit({animations: [animation]}); + let temp_animators = {}; + + function copyAnimator(target, source) { + for (let channel in target.channels) { + target[channel].splice(0, Infinity, ...source[channel]); + for (let kf of target[channel]) { + kf.animator = target; + } + } + target.rotation_global = source.rotation_global; + } + function resetAnimator(animator) { + for (let channel in animator.channels) { + animator[channel].empty(); + } + animator.rotation_global = false; + } + for (let animator of all_animators) { if (animator == '_') continue; - let new_target = form_result[animator.uuid]; - if (new_target == animator.uuid) continue; + let target_uuid = form_result[animator.uuid]; + if (target_uuid == animator.uuid) continue; + let target_animator = animation.animators[target_uuid]; - delete animation.animators[animator.uuid]; - animation.animators[new_target] = animator; - animator.uuid = new_target; + if (!temp_animators[target_uuid]) { + temp_animators[target_uuid] = new animator.constructor(target_uuid, animation); + copyAnimator(temp_animators[target_uuid], target_animator); + } + copyAnimator(target_animator, temp_animators[animator.uuid] ?? animator); + + // Reset animator + if (!temp_animators[animator.uuid]) { + temp_animators[animator.uuid] = new animator.constructor(animator.uuid, animation); + copyAnimator(temp_animators[animator.uuid], animator); + resetAnimator(animator) + } } Undo.finishEdit('Retarget animations'); + Animator.preview(); } }) }) diff --git a/js/interface/menu_bar.js b/js/interface/menu_bar.js index 6035b9573..c0f66c091 100644 --- a/js/interface/menu_bar.js +++ b/js/interface/menu_bar.js @@ -349,6 +349,7 @@ const MenuBar = { 'select_effect_animator', 'flip_animation', 'optimize_animation', + 'retarget_animators', 'bake_ik_animation', 'bake_animation_into_model', 'merge_animation', From 6e239b67e70caef76c3b39fe220fd612da70eb05 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 26 Aug 2024 21:31:23 +0200 Subject: [PATCH 076/153] Finish keybinding variations implementation --- css/dialogs.css | 1 + js/interface/actions.js | 17 ++++++++--------- js/interface/keyboard.js | 7 ++++--- js/io/project.js | 7 +++++-- js/preview/preview.js | 35 +++++++++++++++++++++-------------- lang/en.json | 5 +++++ 6 files changed, 44 insertions(+), 28 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 9c77a0af1..7eab5ac63 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -673,6 +673,7 @@ .keybind_line > div:first-child { flex-grow: 1; flex-shrink: 1; + flex-basis: 0; padding: 4px; padding-left: 8px; display: flex; diff --git a/js/interface/actions.js b/js/interface/actions.js index a0ac61490..7218e0b10 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -1764,16 +1764,15 @@ const BARS = { //Extras new KeybindItem('preview_select', { category: 'navigate', - keybind: new Keybind({key: Blockbench.isTouch ? 0 : 1, ctrl: null, shift: null, alt: null}) + keybind: new Keybind({key: Blockbench.isTouch ? 0 : 1}, + {multi_select: 'ctrl', group_select: 'shift', loop_select: 'alt'} + ), + variations: { + multi_select: {name: 'keybind.preview_select.multi_select'}, + group_select: {name: 'keybind.preview_select.group_select'}, + loop_select: {name: 'keybind.preview_select.loop_select'}, + } }) - /*new KeybindItem('preview_select', { - category: 'navigate', - keybind: new Keybind({key: Blockbench.isTouch ? 0 : 1}, { - multiple: 'ctrl', - range: 'shift', - loop: 'alt', - }) - })*/ new KeybindItem('preview_rotate', { category: 'navigate', keybind: new Keybind({key: 1}) diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index ec3a21af7..f8b6acd77 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -237,9 +237,10 @@ class Keybind { (this.meta === event.metaKey || this.meta === null || modifiers_used.has('ctrl') ) ) } - additionalModifierTriggered(event) { + additionalModifierTriggered(event, variation) { if (!this.variations) return; for (let option in this.variations) { + if (variation && option != variation) continue; let key = this.variations[option]; if ( (key == 'ctrl' && (event.ctrlOrCmd || Pressing.overrides.ctrl)) || @@ -247,7 +248,7 @@ class Keybind { (key == 'alt' && (event.altKey || Pressing.overrides.alt)) || (key == 'meta' && (event.metaKey || Pressing.overrides.meta)) ) { - return option; + return variation ? true : option; } } } @@ -655,7 +656,7 @@ onVueSetup(function() {

    diff --git a/js/io/project.js b/js/io/project.js index c75ec9b12..ca7a9768d 100644 --- a/js/io/project.js +++ b/js/io/project.js @@ -1196,12 +1196,15 @@ BARS.defineActions(function() { new Action('switch_tabs', { icon: 'swap_horiz', category: 'file', - keybind: new Keybind({key: 9, ctrl: true, shift: null}), + keybind: new Keybind({key: 9, ctrl: true}, {reverse_order: 'shift'}), + variations: { + reverse_order: {name: 'action.switch_tabs.reverse_order'} + }, condition: () => ModelProject.all.length > 1, click(event) { let index = ModelProject.all.indexOf(Project); let target; - if (event && event.shiftKey) { + if (this.keybind.additionalModifierTriggered(event) == 'reverse_order') { target = ModelProject.all[index-1] || ModelProject.all.last(); } else { target = ModelProject.all[index+1] || ModelProject.all[0]; diff --git a/js/preview/preview.js b/js/preview/preview.js index 4a746ac0f..fc5a86192 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -766,6 +766,10 @@ class Preview { if (data) { this.selection.click_target = data; + let multi_select = Keybinds.extra.preview_select.keybind.additionalModifierTriggered(event, 'multi_select'); + let group_select = Keybinds.extra.preview_select.keybind.additionalModifierTriggered(event, 'group_select'); + let loop_select = Keybinds.extra.preview_select.keybind.additionalModifierTriggered(event, 'loop_select'); + function unselectOtherNodes() { if (Group.selected) Group.selected.unselect(); Outliner.elements.forEach(el => { @@ -781,7 +785,7 @@ class Preview { if (Toolbox.selected.selectElements && Modes.selected.selectElements && (data.type === 'element' || Toolbox.selected.id == 'knife_tool')) { if (Toolbox.selected.selectFace && data.face && data.element.type != 'mesh') { let face_selection = UVEditor.getSelectedFaces(data.element, true); - if (event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift) { + if (multi_select || group_select) { face_selection.safePush(data.face); } else { face_selection.replace([data.face]); @@ -793,10 +797,10 @@ class Preview { } if (data.element.parent.type === 'group' && (!data.element instanceof Mesh || select_mode == 'object') && ( (Animator.open && !data.element.constructor.animator) || - event.shiftKey || Pressing.overrides.shift || + group_select || (!Format.rotate_cubes && Format.bone_rig && ['rotate_tool', 'pivot_tool'].includes(Toolbox.selected.id)) )) { - if (data.element.parent.selected && (event.shiftKey || Pressing.overrides.shift)) { + if (data.element.parent.selected && (group_select)) { let super_parent = data.element.parent; while (super_parent.parent instanceof Group && super_parent.selected) { super_parent = super_parent.parent; @@ -811,7 +815,7 @@ class Preview { if (data.element instanceof Mesh && select_mode == 'face') { if (!data.element.selected) data.element.select(event); - if (!(event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift)) { + if (!(multi_select || group_select)) { unselectOtherNodes() } @@ -820,7 +824,7 @@ class Preview { let selected_edges = mesh.getSelectedEdges(true); let selected_faces = mesh.getSelectedFaces(true); - if (event.altKey || Pressing.overrides.alt) { + if (loop_select) { let start_face = mesh.faces[data.face]; if (!start_face) return; @@ -842,7 +846,7 @@ class Preview { selectFace(start_face, (index+2) % 4); } - if (!(event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift)) { + if (!(multi_select || group_select)) { selected_vertices.empty(); selected_edges.empty(); selected_faces.empty(); @@ -856,7 +860,7 @@ class Preview { } else { let face_vkeys = data.element.faces[data.face].vertices; - if (event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift) { + if (multi_select || group_select) { if (selected_faces.includes(data.face)) { let selected_faces = data.element.getSelectedFaces(); let vkeys_to_remove = face_vkeys.filter(vkey => { @@ -881,7 +885,7 @@ class Preview { } else if (data.element instanceof Mesh && select_mode == 'cluster') { if (!data.element.selected) data.element.select(event); - if (!(event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift)) { + if (!(multi_select || group_select)) { unselectOtherNodes() } @@ -890,7 +894,7 @@ class Preview { let selected_edges = mesh.getSelectedEdges(true); let selected_faces = mesh.getSelectedFaces(true); - if (!(event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift)) { + if (!(multi_select || group_select)) { selected_vertices.empty(); selected_edges.empty(); selected_faces.empty(); @@ -938,7 +942,7 @@ class Preview { let edges = data.element.getSelectedEdges(true); let faces = data.element.getSelectedEdges(true); - if (event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift) { + if (multi_select || group_select) { list.toggle(data.vertex); } else { unselectOtherNodes(); @@ -953,7 +957,7 @@ class Preview { let edges = data.element.getSelectedEdges(true); let faces = data.element.getSelectedEdges(true); - if (event.ctrlOrCmd || Pressing.overrides.ctrl || event.shiftKey || Pressing.overrides.shift) { + if (multi_select || group_select) { let index = edges.findIndex(edge => sameMeshEdge(edge, data.vertices)) if (index >= 0) { vertices.remove(...data.vertices); @@ -968,7 +972,7 @@ class Preview { vertices.replace(data.vertices); unselectOtherNodes(); } - if (event.altKey || Pressing.overrides.alt) { + if (loop_select) { let mesh = data.element; let start_face; @@ -2207,7 +2211,10 @@ BARS.defineActions(function() { icon: 'center_focus_weak', category: 'view', condition: () => !Format.image_editor, - keybind: new Keybind({shift: null}), + keybind: new Keybind({}, {rotate_only: 'shift'}), + variations: { + rotate_only: {name: 'action.focus_on_selection.rotate_only'} + }, click(event = 0) { if (!Project) return; if (Prop.active_panel == 'uv') { @@ -2231,7 +2238,7 @@ BARS.defineActions(function() { let interval = setInterval(() => { preview.controls.target.sub(difference); - if (!event.shiftKey || preview.angle != null) { + if (this.keybind.additionalModifierTriggered(event) != 'rotate_only' || preview.angle != null) { preview.camera.position.sub(difference); } i++; diff --git a/lang/en.json b/lang/en.json index cd77c063a..a1bcc34a1 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1112,6 +1112,9 @@ "category.separators": "Separators", "keybind.preview_select": "Select", + "keybind.preview_select.multi_select": "Multi-select", + "keybind.preview_select.group_select": "Group-select", + "keybind.preview_select.loop_select": "Loop-select", "keybind.preview_rotate": "Rotate View", "keybind.preview_drag": "Drag View", "keybind.preview_zoom": "Zoom View", @@ -1275,6 +1278,7 @@ "action.tab_overview.desc": "View all open tabs in a grid and jump to one", "action.switch_tabs": "Switch Tabs", "action.switch_tabs.desc": "Cycle between opened tabs. Hold shift to cycle in the opposite direction.", + "action.switch_tabs.reverse_order": "Reverse order", "action.validator_window": "View Model Issues...", "action.validator_window.desc": "Opens the validator, which lists issues with the current model.", "action.import_obj": "Import OBJ Model", @@ -1673,6 +1677,7 @@ "action.load_camera_angle.desc": "Load the camera angle '%0'", "action.focus_on_selection": "Center View on Selection", "action.focus_on_selection.desc": "Align the camera to face the center of the current selection", + "action.focus_on_selection.rotate_only": "Rotate only", "action.edit_reference_images": "Edit Reference Images", "action.edit_reference_images.desc": "Turn on reference image mode to add or edit reference images and blueprints", From 7e928b6a35891fb02747b6705616afef9324fbf3 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 26 Aug 2024 21:44:55 +0200 Subject: [PATCH 077/153] Allow setting two BarSelect options to the same key to toggle between them Closes #2395 --- js/interface/keyboard.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index f8b6acd77..cb25c066c 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -869,8 +869,10 @@ addEventListeners(document, 'keydown mousedown', function(e) { for (let sub_id in action.sub_keybinds) { let sub = action.sub_keybinds[sub_id]; if (sub.keybind.isTriggered(e)) { + let value_before = action.value; sub.trigger(e) used = true; + if (action instanceof BarSelect && value_before != action.value) break; } } } From 897dc7761578076eb7d7a5ff088696425783d8be Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 27 Aug 2024 22:00:50 +0200 Subject: [PATCH 078/153] Add setting for auto backup interval Closes #2460 --- js/interface/settings.js | 4 ++++ js/misc.js | 24 ++++++++++++++++++------ lang/en.json | 4 ++++ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/js/interface/settings.js b/js/interface/settings.js index 3a5dfdc2e..1771612ee 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -363,6 +363,10 @@ const Settings = { updateStreamerModeNotification(); }}); new Setting('cdn_mirror', {value: false}); + new Setting('recovery_save_interval', {value: 30, type: 'number', min: 0, onChange() { + clearTimeout(AutoBackup.loop_timeout); + AutoBackup.backupProjectLoop(false); + }}); //Interface new Setting('interface_mode', {category: 'interface', value: 'auto', type: 'select', options: { diff --git a/js/misc.js b/js/misc.js index 96523b92e..c75920829 100644 --- a/js/misc.js +++ b/js/misc.js @@ -283,6 +283,8 @@ const AutoBackup = { ] }) } + + AutoBackup.backupProjectLoop(false); } }, async backupOpenProject() { @@ -369,6 +371,21 @@ const AutoBackup = { reject(); } }); + }, + loop_timeout: null, + backupProjectLoop(run_save = true) { + if (run_save && Project && (Outliner.root.length || Project.textures.length)) { + try { + AutoBackup.backupOpenProject(); + } catch (err) { + console.error('Unable to create backup. ', err) + } + } + let interval = settings.recovery_save_interval.value; + if (interval != 0) { + interval = Math.max(interval, 5); + AutoBackup.loop_timeout = setTimeout(() => AutoBackup.backupProjectLoop(true), interval * 1000); + } } } @@ -376,13 +393,8 @@ const AutoBackup = { setInterval(function() { if (Project && (Outliner.root.length || Project.textures.length)) { Validator.validate(); - try { - AutoBackup.backupOpenProject(); - } catch (err) { - console.error('Unable to create backup. ', err) - } } -}, 1e3*30) +}, 1e3*30); //Misc const TickUpdates = { Run() { diff --git a/lang/en.json b/lang/en.json index a1bcc34a1..bf499f306 100644 --- a/lang/en.json +++ b/lang/en.json @@ -876,6 +876,8 @@ "settings.streamer_mode.desc": "Hides sensitive information like recent models", "settings.cdn_mirror": "Use CDN Mirror", "settings.cdn_mirror.desc": "Use the mirror CDN to download plugins. The mirror receives updates faster and works in some regions where the default does not work.", + "settings.recovery_save_interval": "Recovery Point Save Interval", + "settings.recovery_save_interval.desc": "Blockbench regularly saves the open project in the background to recover in case of a computer crash. Set the interval in seconds. Set to 0 to disable saving.", "settings.interface_scale": "Interface Scale", "settings.interface_scale.desc": "Scale of the entire Blockbench interface", @@ -1691,6 +1693,8 @@ "action.import_texture.desc": "Import one or more textures from your file system", "action.create_texture": "Create Texture", "action.create_texture.desc": "Create a blank texture or template texture", + "action.create_texture_group": "Create Texture Group", + "action.create_texture_group.desc": "Create a group for your textures", "action.append_to_template": "Append Elements to Template...", "action.append_to_template.desc": "Add the currently selected elements to the texture template", "action.save_textures": "Save Textures", From 2a3cf3799f330c5ec043c70cf00ce1a716010a3b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 27 Aug 2024 22:53:29 +0200 Subject: [PATCH 079/153] Fix #139 Preview for dropped item too high --- js/display_mode.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/display_mode.js b/js/display_mode.js index aaebbfc62..368c7b2c9 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1386,7 +1386,10 @@ var setDisplayArea = DisplayMode.setBase = function(x, y, z, rx, ry, rz, sx, sy, DisplayMode.groundAnimation = function() { display_area.rotation.y += 0.015 ground_timer += 1; - let ground_offset = Format.id == 'bedrock_block' ? 3.8 : 5.5; + let ground_offset = 3.8; + if (Format.id != 'bedrock_block') { + ground_offset = 1.9 + display_base.scale.y * 3.6; + } display_area.position.y = ground_offset + Math.sin(Math.PI * (ground_timer / 100)) * Math.PI/2 Transformer.center() if (ground_timer === 200) ground_timer = 0; From 0827cb6ea580acf69e5bfa509b798d25eb15cea2 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 27 Aug 2024 23:27:24 +0200 Subject: [PATCH 080/153] Add option to reload animations and animation controllers Closes #2456 --- js/animations/animation.js | 59 +++++++++++++++++++++----- js/animations/animation_controllers.js | 18 ++++++++ lang/en.json | 1 + 3 files changed, 67 insertions(+), 11 deletions(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index a3a2b0239..a297e14e7 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -833,6 +833,23 @@ class Animation extends AnimationItem { } }, 'rename', + { + id: 'reload', + name: 'menu.animation.reload', + icon: 'refresh', + condition: (animation) => Format.animation_files && isApp && animation.saved, + click(animation) { + Blockbench.read([animation.path], {}, ([file]) => { + Undo.initEdit({animations: [animation]}) + let anim_index = Animation.all.indexOf(animation); + animation.remove(false, false); + let [new_animation] = Animator.loadFile(file, [animation.name]); + Animation.all.remove(new_animation); + Animation.all.splice(anim_index, 0, new_animation); + Undo.finishEdit('Reload animation', {animations: [new_animation]}) + }) + } + }, { id: 'unload', name: 'menu.animation.unload', @@ -852,18 +869,10 @@ class Animation extends AnimationItem { ]) Animation.prototype.file_menu = new Menu([ {name: 'menu.animation_file.unload', icon: 'remove', click(id) { - let animations_to_remove = []; - let controllers_to_remove = []; - AnimationItem.all.forEach(animation => { - if (animation.path == id && animation.saved) { - if (animation instanceof AnimationController) { - controllers_to_remove.push(animation); - } else { - animations_to_remove.push(animation); - } - } - }) + let animations_to_remove = Animation.all.filter(anim => anim.path == id && anim.saved); + let controllers_to_remove = AnimationController.all.filter(anim => anim.path == id && anim.saved); if (!animations_to_remove.length && !controllers_to_remove.length) return; + Undo.initEdit({animations: animations_to_remove, animation_controllers: controllers_to_remove}); animations_to_remove.forEach(animation => { animation.remove(false, false); @@ -873,6 +882,34 @@ class Animation extends AnimationItem { }) Undo.finishEdit('Unload animation file', {animations: [], animation_controllers: []}); }}, + {name: 'menu.animation.reload', icon: 'refresh', click(id) { + let animations_to_remove = Animation.all.filter(anim => anim.path == id && anim.saved); + let controllers_to_remove = AnimationController.all.filter(anim => anim.path == id && anim.saved); + if (!animations_to_remove.length && !controllers_to_remove.length) return; + + Undo.initEdit({animations: animations_to_remove, animation_controllers: controllers_to_remove}); + let names = []; + let selected_name = AnimationItem.selected?.name; + animations_to_remove.forEach(animation => { + names.push(animation.name); + animation.remove(false, false); + }) + controllers_to_remove.forEach(animation => { + names.push(animation.name); + animation.remove(false, false); + }) + + Blockbench.read([id], {}, ([file]) => { + let new_animations = Animator.loadFile(file, names); + let selected = new_animations.find(item => item.name == selected_name); + if (selected) selected.select(); + if (new_animations[0] instanceof AnimationController) { + Undo.finishEdit('Reload animation controller file', {animation_controllers: new_animations, animations: []}); + } else { + Undo.finishEdit('Reload animation file', {animations: new_animations, animation_controllers: []}); + } + }) + }}, {name: 'menu.animation_file.import_remaining', icon: 'playlist_add', click(id) { Blockbench.read([id], {}, files => { Animator.importFile(files[0]); diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 3e2a19652..87dcf1cee 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -863,6 +863,24 @@ class AnimationController extends AnimationItem { } }, 'rename', + { + id: 'reload', + name: 'menu.animation.reload', + icon: 'refresh', + condition: (controller) => Format.animation_files && isApp && controller.saved, + click(controller) { + Blockbench.read([controller.path], {}, ([file]) => { + Undo.initEdit({animation_controllers: [controller]}) + let anim_index = AnimationController.all.indexOf(controller); + controller.remove(false, false); + let [new_ac] = Animator.loadFile(file, [controller.name]); + AnimationController.all.remove(new_ac); + AnimationController.all.splice(anim_index, 0, new_ac); + new_ac.select(); + Undo.finishEdit('Reload animation', {animation_controllers: [new_ac]}); + }) + } + }, { id: 'unload', name: 'menu.animation.unload', diff --git a/lang/en.json b/lang/en.json index bf499f306..889ed1eba 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2115,6 +2115,7 @@ "menu.animation.file": "File", "menu.animation.snapping": "Snapping", "menu.animation.open_location": "Show in File Explorer", + "menu.animation.reload": "Reload", "menu.animation.unload": "Unload", "menu.animation.flip_keyframes": "Flip Keyframes", From 06930af8b60585797d6a0fab4344d8df0536629c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 28 Aug 2024 18:35:14 +0200 Subject: [PATCH 081/153] Fix textures panel freezing on odd animation frame counts --- js/texturing/texture_flipbook.js | 3 +-- js/texturing/textures.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/js/texturing/texture_flipbook.js b/js/texturing/texture_flipbook.js index 780e4d7b2..4d84dae3e 100644 --- a/js/texturing/texture_flipbook.js +++ b/js/texturing/texture_flipbook.js @@ -392,7 +392,6 @@ BARS.defineActions(function() { content_vue.stride = Math.clamp(Math.round(data.stride), 1, texture.height); let new_frames = splitIntoFrames(content_vue.stride); content_vue.frames.replace(new_frames); - content_vue.selected_frames.empty(); } }).show(); }, @@ -658,7 +657,7 @@ BARS.defineActions(function() {

    - +
    diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 9f620eb2c..edb3ab7a0 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -307,7 +307,7 @@ class Texture { } get frameCount() { if (Format.animated_textures && this.ratio !== 1 && this.ratio !== (this.getUVWidth() / this.getUVHeight()) && 1/this.ratio % 1 === 0) { - return (this.getUVWidth() / this.getUVHeight()) / this.ratio + return Math.ceil((this.getUVWidth() / this.getUVHeight()) / this.ratio - 0.05); } } get display_height() { From ab0187faacae31f4b03169816f165fa37b5664d9 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 28 Aug 2024 18:41:58 +0200 Subject: [PATCH 082/153] Double click resize lines to reset them to default --- js/interface/interface.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/js/interface/interface.js b/js/interface/interface.js index 027300c6a..f4ecf308f 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -12,6 +12,7 @@ class ResizeLine { this.width = 0; this.get = data.get; this.set = data.set; + this.reset = data.reset; this.node = document.createElement('div'); this.node.className = 'resizer '+(data.horizontal ? 'horizontal' : 'vertical'); this.node.id = 'resizer_'+this.id; @@ -39,6 +40,13 @@ class ResizeLine { document.addEventListener('pointermove', move, false); document.addEventListener('pointerup', stop, false); }) + if (this.reset) { + this.node.addEventListener('dblclick', event => { + this.reset(); + updateInterface(); + this.update(); + }) + } } update() { if (BARS.condition(this.condition)) { @@ -209,6 +217,10 @@ const Interface = { Prop.show_left_bar = true; } }, + reset() { + Interface.getModeData().left_bar_width = Interface.default_data.left_bar_width; + Prop.show_left_bar = true; + }, position() { this.setPosition({ top: 0, @@ -241,6 +253,10 @@ const Interface = { Prop.show_right_bar = true; } }, + reset() { + Interface.getModeData().right_bar_width = Interface.default_data.right_bar_width; + Prop.show_right_bar = true; + }, position() { this.setPosition({ top: 30, @@ -253,6 +269,9 @@ const Interface = { condition() {return Preview.split_screen.enabled && Preview.split_screen.mode != 'double_horizontal'}, get() {return Interface.data.quad_view_x}, set(o, diff) {Interface.data.quad_view_x = limitNumber(o + diff/Interface.preview.clientWidth*100, 5, 95)}, + reset() { + Interface.data.quad_view_x = Interface.default_data.quad_view_x; + }, position() { let p = Interface.preview; if (!p) return; @@ -274,6 +293,9 @@ const Interface = { set(o, diff) { Interface.data.quad_view_y = limitNumber(o + diff/Interface.preview.clientHeight*100, 5, 95) }, + reset() { + Interface.data.quad_view_y = Interface.default_data.quad_view_y; + }, position() { let p = Interface.preview; if (!p) return; @@ -337,6 +359,9 @@ const Interface = { value = Math.snapToValues(value, [Interface.default_data.timeline_head], 12); Interface.data.timeline_head = Timeline.vue._data.head_width = value; }, + reset() { + Interface.data.timeline_head = Interface.default_data.timeline_head; + }, position() { let offset = $(Panels.timeline.vue.$el).offset(); this.setPosition({ From 13e0d08571e2598aeb4c5660dc4f5e46b0b57c06 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 28 Aug 2024 19:40:03 +0200 Subject: [PATCH 083/153] Improve automatic animation loading --- css/dialogs.css | 12 ++++++++++++ js/animations/animation_mode.js | 28 ++++++++++++++++++++++------ lang/en.json | 1 + 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 7eab5ac63..d1811ac0c 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -170,6 +170,9 @@ .dialog_bar > .molang_input { width: calc(100% - var(--max_label_width)); } + .dialog_bar.form_bar.small_text { + word-break: break-word; + } /*.dialog_bar::after { content: ""; clear: both; @@ -2079,6 +2082,15 @@ right: 0; background: var(--color-back); } +/* Animation import */ + dialog#animation_import .form_bar__path { + padding: 2px; + color: var(--color-subtle_text); + overflow-x: auto; + white-space: nowrap; + text-align: right; + direction: rtl; + } /* Texture Edit */ div.texture_adjust_previews { diff --git a/js/animations/animation_mode.js b/js/animations/animation_mode.js index b6be8d615..5efff5aaa 100644 --- a/js/animations/animation_mode.js +++ b/js/animations/animation_mode.js @@ -26,7 +26,7 @@ const Animator = { if (paths.length) { Blockbench.read(paths, {}, files => { files.forEach(file => { - Animator.importFile(file); + Animator.importFile(file, true); }) }) } @@ -689,8 +689,11 @@ const Animator = { animation_controllers: controllers } }, - importFile(file) { + importFile(file, auto_loaded) { let form = {}; + if (auto_loaded && file.path) { + form['_path'] = {type: 'info', text: file.path}; + } let json = autoParseJSON(file.content) let keys = []; let is_controller = !!json.animation_controllers; @@ -707,7 +710,7 @@ const Animator = { } if (is_already_loaded) continue; } - form[key.hashCode()] = {label: key, type: 'checkbox', value: true, nocolon: true}; + form['anim' + key.hashCode()] = {label: key, type: 'checkbox', value: true, nocolon: true}; keys.push(key); } file.json = json; @@ -721,15 +724,21 @@ const Animator = { } else { return new Promise(resolve => { + let buttons = ['dialog.ok', 'dialog.ignore']; + if (auto_loaded && Project?.memory_animation_files_to_load?.length > 1) { + buttons.push('dialog.ignore_all'); + } let dialog = new Dialog({ id: 'animation_import', title: 'dialog.animation_import.title', form, + buttons, + cancelIndex: 1, onConfirm(form_result) { this.hide(); let names = []; for (var key of keys) { - if (form_result[key.hashCode()]) { + if (form_result['anim' + key.hashCode()]) { names.push(key); } } @@ -738,7 +747,14 @@ const Animator = { Undo.finishEdit('Import animations', {animations: new_animations}) resolve(); }, - onCancel() { + onCancel(index) { + Project.memory_animation_files_to_load.remove(file.path); + resolve(); + }, + onButton(index) { + if (auto_loaded && index == 2) { + Project.memory_animation_files_to_load.empty(); + } resolve(); } }); @@ -747,7 +763,7 @@ const Animator = { buttons: ['generic.select_all', 'generic.select_none'], click(index) { let values = {}; - keys.forEach(key => values[key.hashCode()] = (index == 0)); + keys.forEach(key => values['anim' + key.hashCode()] = (index == 0)); dialog.setFormValues(values); } } diff --git a/lang/en.json b/lang/en.json index 889ed1eba..f3aa205ae 100644 --- a/lang/en.json +++ b/lang/en.json @@ -12,6 +12,7 @@ "dialog.discard": "Discard", "dialog.continue": "Continue", "dialog.ignore": "Ignore", + "dialog.ignore_all": "Ignore All", "dialog.dontshowagain": "Don't Show Again", "dialog.copy_to_clipboard": "Copy to clipboard", "dialog.open_url": "Open URL", From 7b94776a5087ca10ba6e766bfad55fd84f73c06c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 28 Aug 2024 20:43:17 +0200 Subject: [PATCH 084/153] Outliner switch improvements Add state in tooltip Always display when export is disabled Changed icon for export enabled --- js/outliner/outliner.js | 29 ++++++++++++++++++++++++----- lang/en.json | 3 +++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index 9b2cb0b01..77ec46404 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -25,14 +25,20 @@ const Outliner = { title: tl('switches.lock'), icon: ' fas fa-lock', icon_off: ' fas fa-lock-open', - advanced_option: true + advanced_option: true, + visibilityException(node) { + return node.locked + } }, export: { id: 'export', title: tl('switches.export'), - icon: ' fa fa-camera', + icon: ' far fa-square-check', icon_off: ' far fa-window-close', - advanced_option: true + advanced_option: true, + visibilityException(node) { + return !node.export; + } }, shade: { id: 'shade', @@ -1411,10 +1417,10 @@ Interface.definePanels(function() { `` + @@ -1471,6 +1477,19 @@ Interface.definePanels(function() { return [(typeof btn.icon_alt == 'function' ? btn.icon_alt(node) : btn.icon_alt), 'icon_alt']; } }, + getBtnTooltip: function (btn, node) { + let value = node.isIconEnabled(btn); + let text = btn.title + ': '; + if (value === true) { + return text + tl('generic.on'); + } else if (value === false) { + return text + tl('generic.off'); + } else if (value == 'alt') { + return text + tl(`switches.${btn.id}.alt`); + } else { + return text + value; + } + }, doubleClickIcon(node) { if (node.children && node.children.length) { node.isOpen = !node.isOpen; diff --git a/lang/en.json b/lang/en.json index f3aa205ae..ecfcc1217 100644 --- a/lang/en.json +++ b/lang/en.json @@ -69,6 +69,8 @@ "generic.select_all": "Select All", "generic.select_none": "Select None", "generic.delete_all": "Delete All", + "generic.on": "On", + "generic.off": "Off", "generic.left": "Left", "generic.right": "Right", "generic.navigate_forward": "Forward", @@ -2162,6 +2164,7 @@ "switches.shade": "Shade", "switches.mirror": "Mirror UV", "switches.autouv": "Auto UV", + "switches.autouv.alt": "Relative", "texture.error.file": "File not found", "texture.error.too_large": "Resolution exceeds the maximum of %0", From d21be31fae30542a609ed9a20fd25c658e0a3b8c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 28 Aug 2024 23:51:21 +0200 Subject: [PATCH 085/153] Add Windows arm64 version --- package.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e6e82f6c..9c16a47f4 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,14 @@ }, "win": { "certificateSubjectName": "Jannis Tobias Petersen", - "target": "nsis" + "artifactName": "${productName}_${arch}_${version}.${ext}", + "target": { + "target": "nsis", + "arch": [ + "arm64", + "x64" + ] + } }, "nsis": { "license": "LICENSE.MD" From 24ea9f343dc1702952fb73137f10ad1e354e13ad Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 29 Aug 2024 23:32:46 +0200 Subject: [PATCH 086/153] Incremental saving tweaks --- js/io/formats/bbmodel.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/js/io/formats/bbmodel.js b/js/io/formats/bbmodel.js index 56cf2b5e2..80ea6cb4e 100644 --- a/js/io/formats/bbmodel.js +++ b/js/io/formats/bbmodel.js @@ -700,26 +700,27 @@ BARS.defineActions(function() { icon: 'difference', category: 'file', keybind: new Keybind({key: 's', shift: true, alt: true}), - condition: () => Project, + condition: isApp ? (() => Project && Project.save_path) : false, click: function () { - saveTextures(true) - if (isApp && Project.save_path) { - let projectTailRegex = /.bbmodel/gm; - let projectVerRegex = /([0-9]+).bbmodel/gm; - let projectVerMatch = projectVerRegex.exec(Project.save_path); - - // Check if project file has version patterns in it (right before ".bbmodel") - // if it does, grab & increment it - // if it doesn't, add it - if (projectVerMatch) { - let projectVer = parseInt(projectVerMatch[1]); // Parse & store project ver int (capturing group 1) - codec.write(codec.compile(), Project.save_path.replace(projectVerRegex, `${projectVer + 1}.bbmodel`)); - } else { - codec.write(codec.compile(), Project.save_path.replace(projectTailRegex, "_1.bbmodel")); - } + saveTextures(true); + let projectTailRegex = /\.bbmodel$/; + let projectVerRegex = /([0-9]+)\.bbmodel$/; + let projectVerMatch = projectVerRegex.exec(Project.save_path); + + let file_path; + if (projectVerMatch) { + let projectVer = parseInt(projectVerMatch[1]); // Parse & store project ver int (capturing group 1) + file_path = Project.save_path.replace(projectVerRegex, `${projectVer + 1}.bbmodel`); } else { - codec.export() + file_path = Project.save_path.replace(projectTailRegex, "_1.bbmodel"); + } + let original_file_path = file_path; + let i = 1; + while (fs.existsSync(file_path) && i < 100) { + file_path = original_file_path.replace(projectTailRegex, `_alt_${i == 1 ? '' : i}.bbmodel`); + i++; } + codec.write(codec.compile(), file_path); } }) From ac99a284f8d6825d16dec217b4eeaed11043f803 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 00:02:50 +0200 Subject: [PATCH 087/153] Updates and fixes to external image editor selector Fix select box appearing empty initially Fix #2419 unable to open bin executables on linux --- js/desktop.js | 9 +++++++-- js/interface/interface.js | 23 +++++++++++------------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/js/desktop.js b/js/desktop.js index 86abe6510..594579ca0 100644 --- a/js/desktop.js +++ b/js/desktop.js @@ -319,6 +319,11 @@ currentwindow.on('ready-to-show', e => updateWindowState(e, 'load')); //Image Editor function changeImageEditor(texture, not_found) { + let app_file_extension = { + 'win32': ['exe'], + 'linux': [], + 'darwin': ['app'], + }; new Dialog({ title: tl('message.image_editor.title'), id: 'image_editor', @@ -327,7 +332,7 @@ function changeImageEditor(texture, not_found) { editor: {type: 'select', full_width: true, options: { ps: Blockbench.platform == 'win32' ? 'Photoshop' : undefined, gimp: 'GIMP', - pdn: Blockbench.platform == 'win324' ? 'Paint.NET' : undefined, + pdn: Blockbench.platform == 'win32' ? 'Paint.NET' : undefined, other: 'message.image_editor.file' }}, file: { @@ -335,7 +340,7 @@ function changeImageEditor(texture, not_found) { nocolon: true, type: 'file', file_type: 'Program', - extensions: ['exe', 'app', 'desktop', 'appimage'], + extensions: app_file_extension[Blockbench.platform], description: 'message.image_editor.exe', condition: result => result.editor == 'other' } diff --git a/js/interface/interface.js b/js/interface/interface.js index f4ecf308f..1e2939555 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -777,7 +777,7 @@ Interface.CustomElements.SelectInput = function(id, data) { } } let options = typeof data.options == 'function' ? data.options() : data.options; - let value = data.value || data.default || Object.keys(options)[0]; + let value = data.value || data.default || Object.keys(options).find(key => options[key]); let select = Interface.createElement('bb-select', {id, class: 'half', value: value}, getNameFor(options[value])); function setKey(key, options, input_event) { if (!options) { @@ -799,17 +799,16 @@ Interface.CustomElements.SelectInput = function(id, data) { let options = typeof data.options == 'function' ? data.options() : data.options; for (let key in options) { let val = options[key]; - if (val) { - items.push({ - name: getNameFor(options[key]), - icon: val.icon || ((value == key) ? 'far.fa-dot-circle' : 'far.fa-circle'), - color: val.color, - condition: val.condition, - click: (context, event) => { - setKey(key, options, event || 1); - } - }) - } + if (!val) continue; + items.push({ + name: getNameFor(options[key]), + icon: val.icon || ((value == key) ? 'far.fa-dot-circle' : 'far.fa-circle'), + color: val.color, + condition: val.condition, + click: (context, event) => { + setKey(key, options, event || 1); + } + }) } let menu = new Menu(id, items, {searchable: items.length > 16}); menu.node.style['min-width'] = select.clientWidth+'px'; From e2a5fc52fabed2bc4b9dd659c7f8ab9162d7ace3 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 19:40:02 +0200 Subject: [PATCH 088/153] Implement tiled and onion skin view in 2D editor --- css/panels.css | 11 ++++++-- js/interface/actions.js | 2 ++ js/texturing/painter.js | 44 ++++++++++++++++++++++++-------- js/texturing/texture_flipbook.js | 1 + js/texturing/textures.js | 6 ++++- js/texturing/uv.js | 35 +++++++++++++++++-------- lang/en.json | 4 +++ 7 files changed, 80 insertions(+), 23 deletions(-) diff --git a/css/panels.css b/css/panels.css index 1a0ba0ee3..60d23fa38 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1944,7 +1944,8 @@ span.controller_state_section_info { pointer-events: none; } - body[mode=paint] #uv_frame { + body[mode=paint] #uv_frame, + body[mode=paint] #uv_viewport.tiled_mode { cursor: crosshair; } #uv_frame > #texture_canvas_wrapper > canvas, @@ -1958,12 +1959,16 @@ span.controller_state_section_info { object-fit: cover; object-position: 0 0; } - #uv_frame > #texture_canvas_wrapper > canvas.tile_overlay_canvas { + #uv_frame > #texture_canvas_wrapper > canvas.overlay_canvas[overlay_mode=tiled] { width: 300%; height: 300%; margin-left: -100%; margin-top: -100%; } + #uv_frame > #texture_canvas_wrapper > canvas.overlay_canvas[overlay_mode=onion_skin] { + width: 100%; + height: 100%; + } /* Fix in Firefox + iPadOS */ #uv_frame_spacer { width: 1px; @@ -1980,6 +1985,8 @@ span.controller_state_section_info { left: 0; object-fit: cover; object-position: 0 0; + margin: -1px; + border: 1px solid var(--color-grid); } #uv_texture_grid path { fill: none; diff --git a/js/interface/actions.js b/js/interface/actions.js index c05d20b5d..c4c1a0210 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -2188,6 +2188,8 @@ const BARS = { 'color_erase_mode', 'lock_alpha', 'painting_grid', + 'image_tiled_view', + 'image_onion_skin_view', ] }) Toolbars.vertex_snap = new Toolbar({ diff --git a/js/texturing/painter.js b/js/texturing/painter.js index 82ca0dbf1..957d63bf6 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -249,7 +249,16 @@ const Painter = { } else { texture.edit(canvas => { - Painter.drawBrushLine(texture, x, y, event, new_face, uv) + let is_line = true; + if (BarItems.image_tiled_view.value == true && (Math.abs(Painter.current.x - x) > texture.width/2 || Math.abs(Painter.current.y - y) > texture.display_height/2)) { + is_line = false; + } + if (is_line) { + Painter.drawBrushLine(texture, x, y, event, new_face, uv); + } else { + Painter.current.x = Painter.current.y = 0 + Painter.useBrushlike(texture, x, y, event, uv) + } }, {no_undo: true, use_cache: true}); } Painter.current.x = x; @@ -2934,20 +2943,35 @@ BARS.defineActions(function() { }) new Toggle('painting_grid', { - icon: 'grid_on', + icon: 'grid_3x3', category: 'view', condition: {modes: ['paint']}, keybind: new Keybind({key: 'g'}), linked_setting: 'painting_grid' }) - new BarSelect('image_tile_mode', { - category: 'uv', - value: 'off', - options: { - off: 'Off', - tiled: 'Tiled', - }, - onChange(slider) { + new Toggle('image_tiled_view', { + category: 'paint', + icon: 'grid_view', + onChange(value) { + if (value && BarItems.image_onion_skin_view.value) { + BarItems.image_onion_skin_view.set(false); + } + UVEditor.vue.overlay_canvas_mode = value ? 'tiled' : null; + UVEditor.vue.updateTexture(); + UVEditor.updateOverlayCanvas(); + } + }) + new Toggle('image_onion_skin_view', { + category: 'paint', + icon: 'animation', + condition: () => Panels.textures.vue.maxFrameCount(), + onChange(value) { + if (value && BarItems.image_tiled_view.value) { + BarItems.image_tiled_view.set(false); + } + UVEditor.vue.overlay_canvas_mode = value ? 'onion_skin' : null; + UVEditor.vue.updateTexture(); + UVEditor.updateOverlayCanvas(); } }) diff --git a/js/texturing/texture_flipbook.js b/js/texturing/texture_flipbook.js index d0ad3edc4..304e2dba4 100644 --- a/js/texturing/texture_flipbook.js +++ b/js/texturing/texture_flipbook.js @@ -127,6 +127,7 @@ BARS.defineActions(function() { change: function(modify) { let slider_tex = getSliderTexture() if (!slider_tex) return; + UVEditor.previous_animation_frame = slider_tex.currentFrame; slider_tex.currentFrame = (modify(slider_tex.currentFrame + slider_tex.frameCount) % slider_tex.frameCount) || 0; let textures = Texture.all.filter(tex => tex.frameCount > 1); diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 8a7b1f27c..366e42159 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -195,6 +195,7 @@ class Texture { scope.canvas.width = scope.width; scope.canvas.height = scope.height; scope.ctx.drawImage(img, 0, 0); + if (UVEditor.vue.texture == this) UVEditor.updateOverlayCanvas(); } if (this.flags.has('update_uv_size_from_resolution')) { @@ -1670,7 +1671,6 @@ class Texture { return this; } updateLayerChanges(update_data_url) { - if (UVEditor.vue.texture == this) UVEditor.textureChanged(); if (!this.layers_enabled || this.width == 0) return this; this.canvas.width = this.width; this.canvas.height = this.height; @@ -1692,6 +1692,7 @@ class Texture { this.source = this.canvas.toDataURL('image/png', 1); this.updateImageFromCanvas(); } + if (UVEditor.vue.texture == this) UVEditor.updateOverlayCanvas(); } updateChangesAfterEdit() { if (this.layers_enabled) { @@ -2396,12 +2397,15 @@ Interface.definePanels(function() { convertTouchEvent(e2); let pos = e2.clientX - timeline_offset; + let previous_frame = scope.currentFrame; scope.currentFrame = Math.clamp(Math.round((pos / timeline_width) * maxFrameCount), 0, maxFrameCount-1); + if (previous_frame == scope.currentFrame) return; let textures = Texture.all.filter(tex => tex.frameCount > 1); Texture.all.forEach(tex => { tex.currentFrame = (scope.currentFrame % tex.frameCount) || 0; }) + UVEditor.previous_animation_frame = previous_frame; TextureAnimator.update(textures); } function off(e3) { diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 7d00418d0..91ff842b6 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -6,9 +6,10 @@ const UVEditor = { auto_grid: true, panel: null, sliders: {}, + previous_animation_frame: 1, overlay_canvas: (() => { let canvas = document.createElement('canvas'); - canvas.classList.add('tile_overlay_canvas'); + canvas.classList.add('overlay_canvas'); return canvas; })(), @@ -61,11 +62,10 @@ const UVEditor = { result.y = Math.floor(result.y); } } - console.log() if (tex) { if (tex.frameCount) result.y += (tex.height / tex.frameCount) * tex.currentFrame; if (!tex.frameCount && tex.ratio != tex.getUVWidth() / tex.getUVHeight()) result.y /= tex.ratio; - if (BarItems.image_tile_mode.value == 'tiled') { + if (BarItems.image_tiled_view.value == true) { result.x = (tex.width + result.x) % tex.width; result.y = (tex.display_height + result.y) % tex.display_height; } @@ -258,11 +258,13 @@ const UVEditor = { }, 100) }, - textureChanged() { - if (BarItems.image_tile_mode.value == 'tiled') { - let canvas = UVEditor.overlay_canvas; - let texture = Texture.selected; - let ctx = canvas.getContext('2d'); + updateOverlayCanvas() { + if (!Texture.selected) return; + let canvas = UVEditor.overlay_canvas; + let texture = Texture.selected; + let ctx = canvas.getContext('2d'); + if (BarItems.image_tiled_view.value == true) { + canvas.setAttribute('overlay_mode', 'tiled'); canvas.width = texture.width * 3; canvas.height = texture.display_height * 3; for (let x = 0; x < 3; x++) { @@ -270,6 +272,13 @@ const UVEditor = { ctx.drawImage(texture.canvas, x * texture.width, y * texture.display_height); } } + } else if (BarItems.image_onion_skin_view.value == true) { + canvas.setAttribute('overlay_mode', 'onion_skin'); + canvas.width = texture.width; + canvas.height = texture.display_height; + ctx.filter = `opacity(${45}%)`; + let frame = Math.clamp(UVEditor.previous_animation_frame, 0, texture.frameCount-1); + ctx.drawImage(texture.canvas, 0, frame * -texture.display_height); } }, //Get @@ -1999,6 +2008,7 @@ Interface.definePanels(function() { copy_brush_source: null, helper_lines: {x: -1, y: -1}, brush_type: BarItems.brush_shape.value, + overlay_canvas_mode: null, selection_rect: { pos_x: 0, pos_y: 0, @@ -2211,13 +2221,17 @@ Interface.definePanels(function() { this.texture.canvas.style.objectFit = this.texture.frameCount > 1 ? 'cover' : 'fill'; this.texture.canvas.style.imageRendering = this.texture.width < this.inner_width ? 'inherit' : 'auto'; + UVEditor.updateOverlayCanvas(); + Vue.nextTick(() => { let wrapper = this.$refs.texture_canvas_wrapper; - if (!wrapper || (wrapper.firstChild == this.texture.canvas && BarItems.image_tile_mode.value != 'tiled')) return; + let overlay_canvas_mode = this.overlay_canvas_mode; + if (this.mode != 'paint') overlay_canvas_mode = null; + if (!wrapper || (wrapper.firstChild == this.texture.canvas && !overlay_canvas_mode)) return; while (wrapper.firstChild) { wrapper.firstChild.remove(); } - if (UVEditor.overlay_canvas && BarItems.image_tile_mode.value == 'tiled') { + if (UVEditor.overlay_canvas && overlay_canvas_mode) { wrapper.append(UVEditor.overlay_canvas); } wrapper.append(this.texture.canvas); @@ -3797,6 +3811,7 @@ Interface.definePanels(function() { @mouseenter="onMouseEnter($event)" @mouseleave="onMouseLeave($event)" class="checkerboard_target" + :class="{tiled_mode: overlay_canvas_mode == 'tiled'}" ref="viewport" v-if="!hidden && mode !== 'face_properties'" :style="{width: (width+8) + 'px', height: (height+8) + 'px', overflowX: (zoom > 1) ? 'scroll' : 'hidden', overflowY: (inner_height > height) ? 'scroll' : 'hidden'}" diff --git a/lang/en.json b/lang/en.json index c0f45ab19..02302ed94 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1128,6 +1128,10 @@ "action.mirror_painting.description": "Mirror your paint strokes to the other side of the model", "action.lock_alpha": "Lock Alpha Channel", "action.lock_alpha.description": "Lock the transparency of all pixels", + "action.image_tiled_view": "Tiled View", + "action.image_tiled_view.description": "Enable the tiled view in the 2D editor", + "action.image_onion_skin_view": "Image Editor Onion Skin", + "action.image_onion_skin_view.description": "Enable the onion skin view in the 2D editor", "action.slider_brush_size": "Size", "action.slider_brush_size.desc": "Radius of the brush in pixels", "action.slider_brush_opacity": "Opacity", From dfbe7ace21cbceadaff22ec668cc6660f25abab1 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 19:49:33 +0200 Subject: [PATCH 089/153] Fix #2453 square texture not recognized as animated --- js/texturing/textures.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 6e10e5bd3..88a62deba 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -307,7 +307,7 @@ class Texture { } } get frameCount() { - if (Format.animated_textures && this.ratio !== 1 && this.ratio !== (this.getUVWidth() / this.getUVHeight()) && 1/this.ratio % 1 === 0) { + if (Format.animated_textures && this.ratio !== (this.getUVWidth() / this.getUVHeight()) && 1/this.ratio % 1 === 0) { return Math.ceil((this.getUVWidth() / this.getUVHeight()) / this.ratio - 0.05); } } From 189697b58ee048cf541dfad24ea1d76dc853684b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 19:51:14 +0200 Subject: [PATCH 090/153] v4.11.0-beta.1 [ci-build] --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 914884212..e38ba2512 100644 --- a/README.md +++ b/README.md @@ -44,3 +44,4 @@ Blockbench supports Javascript-based plugins. Learn more about creating plugins * Modifications to the source code can be made under the terms of that license. * Blockbench plugins (external scripts) and themes (theme files to customize the design) that interact with the Blockbench API are an exception. Plugins and themes can be created and/or published as open source, proprietary or paid software. * All assets created with Blockbench (models, textures, animations, screenshots etc.) are your own! + From 6a812906780120dd9ff605b9f45998254afa456c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 19:53:25 +0200 Subject: [PATCH 091/153] v4.11.0-beta.1 [ci-build] --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e38ba2512..914884212 100644 --- a/README.md +++ b/README.md @@ -44,4 +44,3 @@ Blockbench supports Javascript-based plugins. Learn more about creating plugins * Modifications to the source code can be made under the terms of that license. * Blockbench plugins (external scripts) and themes (theme files to customize the design) that interact with the Blockbench API are an exception. Plugins and themes can be created and/or published as open source, proprietary or paid software. * All assets created with Blockbench (models, textures, animations, screenshots etc.) are your own! - From 5d48eb9e2134f244170b95c047b4056906e078b2 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 30 Aug 2024 22:23:11 +0200 Subject: [PATCH 092/153] Fix portable version generating with the wrong name --- scripts/rename_portable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/rename_portable.js b/scripts/rename_portable.js index d3b381a29..d99ba751f 100644 --- a/scripts/rename_portable.js +++ b/scripts/rename_portable.js @@ -4,7 +4,7 @@ const package_path = './package.json'; let package_file = fs.readFileSync(package_path, {encoding: 'utf-8'}); let package = JSON.parse(package_file); -package.build.artifactName = "${productName}_${version}_portable.${ext}"; +package.build.win.artifactName = "${productName}_${version}_portable.${ext}"; package_file = JSON.stringify(package, null, '\t'); fs.writeFileSync(package_path, package_file, {encoding: 'utf-8'}); From b31ff761247cd0f4968687bd0fbdcd602b0e29f1 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 31 Aug 2024 11:52:59 +0200 Subject: [PATCH 093/153] Fix ocean preview scene --- js/preview/preview_scenes.js | 2 ++ lang/en.json | 1 + 2 files changed, 3 insertions(+) diff --git a/js/preview/preview_scenes.js b/js/preview/preview_scenes.js index 2779a2bb0..08cf9f487 100644 --- a/js/preview/preview_scenes.js +++ b/js/preview/preview_scenes.js @@ -215,6 +215,8 @@ class PreviewModel { tex = new THREE.Texture(img); tex.magFilter = THREE.NearestFilter; tex.minFilter = THREE.NearestFilter; + tex.wrapS = THREE.RepeatWrapping; + tex.wrapT = THREE.RepeatWrapping; img.crossOrigin = ''; img.onload = function() { tex.needsUpdate = true; diff --git a/lang/en.json b/lang/en.json index 015a4785a..79884110f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2374,6 +2374,7 @@ "preview_scene.minecraft_desert": "Desert", "preview_scene.minecraft_oceant": "Ocean", "preview_scene.minecraft_underwater": "Underwater", + "preview_scene.minecraft_ocean": "Ocean", "preview_scene.minecraft_coral_reef": "Coral Reef", "preview_scene.minecraft_lush_cave": "Lush Cave", "preview_scene.minecraft_deep_dark": "Deep Dark" From 91000d50d73e5a1247113a9ba6deac7b80e4ca91 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 31 Aug 2024 14:06:35 +0200 Subject: [PATCH 094/153] Fix knife tool on cubes issues --- js/modeling/mesh_editing.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index daf849e8f..1444b5cc4 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -751,10 +751,10 @@ class KnifeToolCubeContext { } } addPoint(data) { + if (!data?.element) return; if (!this.first_point_set) { this.first_point_set = true; } else { - //this.hover(data); this.apply(); } } @@ -772,10 +772,11 @@ class KnifeToolCubeContext { let duplicate = this.cube.duplicate(); selected.push(duplicate); elements.push(duplicate); - let offset_lerp = Math.getLerp(this.cube.from[this.axis], this.cube.to[this.axis], this.offset); + let offset = this.offset + this.cube.origin[this.axis]; + let offset_lerp = Math.getLerp(this.cube.from[this.axis], this.cube.to[this.axis], offset); - this.cube.to[this.axis] = this.offset; - duplicate.from[this.axis] = this.offset; + this.cube.to[this.axis] = offset; + duplicate.from[this.axis] = offset; function modifyUV(face, index, inverted) { index = (index - (face.rotation/90) + 8) % 4; From 702cfb8cd278bc43f999ff42caa2c4ffd33fecc5 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 2 Sep 2024 21:06:04 +0200 Subject: [PATCH 095/153] Add ability to mousewheel on texture timeline --- js/texturing/textures.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 88a62deba..090586183 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2666,6 +2666,20 @@ Interface.definePanels(function() { addEventListeners(document, 'mouseup touchend', off); slide(e1); }, + scrollTimeline(event) { + + let slider_tex = [Texture.getDefault(), ...Texture.all].find(tex => tex && tex.frameCount > 1); + if (!slider_tex) return; + UVEditor.previous_animation_frame = slider_tex.currentFrame; + let offset = Math.sign(event.deltaY); + slider_tex.currentFrame = (slider_tex.currentFrame + slider_tex.frameCount + offset) % slider_tex.frameCount; + + let textures = Texture.all.filter(tex => tex.frameCount > 1); + textures.forEach(tex => { + tex.currentFrame = (slider_tex.currentFrame % tex.frameCount) || 0; + }) + TextureAnimator.update(textures); + }, getPlayheadPos() { if (!this.$refs.timeline) return 0; let width = this.$refs.timeline.clientWidth - 8; @@ -2857,7 +2871,7 @@ Interface.definePanels(function() {
    -
    +
    From a516f396e1c16bc684652599404053a2554e2193 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 2 Sep 2024 21:06:33 +0200 Subject: [PATCH 096/153] Tiled and Onion Skinning view fixes and options --- css/panels.css | 4 +-- js/texturing/painter.js | 69 +++++++++++++++++++++++++++++++++++++++-- js/texturing/uv.js | 67 +++++++++++++++++++++++++++++++++------ lang/en.json | 12 +++++++ 4 files changed, 139 insertions(+), 13 deletions(-) diff --git a/css/panels.css b/css/panels.css index c7fedabf0..fffe2cf64 100644 --- a/css/panels.css +++ b/css/panels.css @@ -2080,8 +2080,8 @@ span.controller_state_section_info { #uv_frame > #texture_canvas_wrapper > canvas.overlay_canvas[overlay_mode=tiled] { width: 300%; height: 300%; - margin-left: -100%; - margin-top: -100%; + margin-top: calc(-1 * var(--inner-height)); + margin-left: calc(-1 * var(--inner-width)); } #uv_frame > #texture_canvas_wrapper > canvas.overlay_canvas[overlay_mode=onion_skin] { width: 100%; diff --git a/js/texturing/painter.js b/js/texturing/painter.js index 32953f089..f67537e2b 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -3065,6 +3065,9 @@ BARS.defineActions(function() { keybind: new Keybind({key: 'g'}), linked_setting: 'painting_grid' }) + Painter.image_tiled_view_options = { + mirrored: false + }; new Toggle('image_tiled_view', { category: 'paint', icon: 'grid_view', @@ -3075,8 +3078,22 @@ BARS.defineActions(function() { UVEditor.vue.overlay_canvas_mode = value ? 'tiled' : null; UVEditor.vue.updateTexture(); UVEditor.updateOverlayCanvas(); - } + }, + side_menu: new Menu('image_tiled_view', [ + { + name: 'menu.image_tiled_view.mirrored', + icon: () => !!Painter.image_tiled_view_options.mirrored, + click() { + Painter.image_tiled_view_options.mirrored = !Painter.image_tiled_view_options.mirrored; + UVEditor.updateOverlayCanvas(); + } + }, + ]) }) + Painter.image_onion_skin_view_options = { + frame: 'last_viewed', + display: 'pixels' + }; new Toggle('image_onion_skin_view', { category: 'paint', icon: 'animation', @@ -3088,7 +3105,55 @@ BARS.defineActions(function() { UVEditor.vue.overlay_canvas_mode = value ? 'onion_skin' : null; UVEditor.vue.updateTexture(); UVEditor.updateOverlayCanvas(); - } + }, + side_menu: new Menu('image_onion_skin_view', [ + { + name: 'menu.image_onion_skin_view.frame', + icon: 'list', + children() { + let options = [ + 'last_viewed', + 'previous', + 'next', + 'both', + ]; + return options.map(id => ({ + name: 'menu.image_onion_skin_view.frame.' + id, + icon: () => Painter.image_onion_skin_view_options.frame == id ? 'far.fa-dot-circle' : 'far.fa-circle', + click() { + Painter.image_onion_skin_view_options.frame = id; + UVEditor.updateOverlayCanvas(); + } + })) + }, + }, + { + name: 'menu.image_onion_skin_view.display', + icon: 'list', + children() { + let options = [ + 'pixels', + 'transparent', + ]; + return options.map(id => ({ + name: 'menu.image_onion_skin_view.display.' + id, + icon: () => Painter.image_onion_skin_view_options.display == id ? 'far.fa-dot-circle' : 'far.fa-circle', + click() { + Painter.image_onion_skin_view_options.display = id; + UVEditor.updateOverlayCanvas(); + } + })); + } + }, + { + name: 'menu.image_onion_skin_view.above', + icon: () => !!Painter.image_onion_skin_view_options.above, + click() { + Painter.image_onion_skin_view_options.above = !Painter.image_onion_skin_view_options.above; + UVEditor.updateOverlayCanvas(); + } + }, + ], {keep_open: true}) }) new NumSlider('slider_brush_size', { diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 87524b4dc..192bb920a 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -67,6 +67,10 @@ const UVEditor = { if (tex.frameCount) result.y += (tex.height / tex.frameCount) * tex.currentFrame; if (!tex.frameCount && tex.ratio != tex.getUVWidth() / tex.getUVHeight()) result.y /= tex.ratio; if (BarItems.image_tiled_view.value == true) { + if (Painter.image_tiled_view_options.mirrored) { + if (result.x < 0 || result.x >= tex.width) result.x = tex.width - result.x - 1; + if (result.y < 0 || result.y >= tex.display_height) result.y = tex.display_height - result.y - 1; + } result.x = (tex.width + result.x) % tex.width; result.y = (tex.display_height + result.y) % tex.display_height; } @@ -268,18 +272,63 @@ const UVEditor = { canvas.setAttribute('overlay_mode', 'tiled'); canvas.width = texture.width * 3; canvas.height = texture.display_height * 3; - for (let x = 0; x < 3; x++) { - for (let y = 0; y < 3; y++) { - ctx.drawImage(texture.canvas, x * texture.width, y * texture.display_height); + if (Painter.image_tiled_view_options.mirrored) { + // X + ctx.scale(-1, 1); + ctx.drawImage(texture.canvas, -1 * texture.width, 1 * texture.display_height); + ctx.drawImage(texture.canvas, -3 * texture.width, 1 * texture.display_height); + // Y + ctx.scale(-1, -1); + ctx.drawImage(texture.canvas, 1 * texture.width, -1 * texture.display_height); + ctx.drawImage(texture.canvas, 1 * texture.width, -3 * texture.display_height); + // XY + ctx.scale(-1, 1); + ctx.drawImage(texture.canvas, -1 * texture.width, -1 * texture.display_height); + ctx.drawImage(texture.canvas, -1 * texture.width, -3 * texture.display_height); + ctx.drawImage(texture.canvas, -3 * texture.width, -1 * texture.display_height); + ctx.drawImage(texture.canvas, -3 * texture.width, -3 * texture.display_height); + ctx.scale(-1, -1); + + } else { + for (let x = 0; x < 3; x++) { + for (let y = 0; y < 3; y++) { + ctx.drawImage(texture.canvas, x * texture.width, y * texture.display_height); + } } } } else if (BarItems.image_onion_skin_view.value == true) { canvas.setAttribute('overlay_mode', 'onion_skin'); - canvas.width = texture.width; - canvas.height = texture.display_height; - ctx.filter = `opacity(${45}%)`; - let frame = Math.clamp(UVEditor.previous_animation_frame, 0, texture.frameCount-1); - ctx.drawImage(texture.canvas, 0, frame * -texture.display_height); + let frames = []; + switch (Painter.image_onion_skin_view_options.frame) { + case 'last_viewed': frames = [UVEditor.previous_animation_frame]; break; + case 'previous': frames = [texture.currentFrame-1]; break; + case 'next': frames = [texture.currentFrame+1]; break; + case 'both': frames = [texture.currentFrame-1, texture.currentFrame+1]; break; + } + frames = frames.map(f => Math.clamp(f, 0, texture.frameCount-1)).filter(f => f != texture.currentFrame); + + if (Painter.image_onion_skin_view_options.display == 'transparent') { + canvas.width = texture.width; + canvas.height = texture.display_height; + ctx.filter = `opacity(${45}%)`; + for (let frame_offset of frames) { + ctx.drawImage(texture.canvas, 0, frame_offset * -texture.display_height); + } + } else { + canvas.width = texture.width * 4; + canvas.height = texture.display_height * 4; + ctx.filter = ""; + for (let frame_offset of frames) { + let image_data = texture.canvas.getContext('2d').getImageData(0, frame_offset * texture.display_height, texture.width, texture.display_height); + for (let i = 0; i < image_data.data.length; i += 4) { + if (image_data.data[i+3] < 2) continue; + ctx.fillStyle = `rgba(${image_data.data[i]}, ${image_data.data[i+1]}, ${image_data.data[i+2]}, ${image_data.data[i+3] / 460})`; + let x = (i / 4) % texture.width; + let y = Math.floor((i / 4) / texture.width); + ctx.fillRect(x * 4 + 1, y * 4 + 1, 2, 2); + } + } + } } }, //Get @@ -3993,7 +4042,7 @@ Interface.definePanels(function() { v-if="texture !== null" @click.stop="reverseSelect($event)" :class="{overlay_mode: uv_overlay && mode == 'paint'}" - :style="{width: inner_width + 'px', height: inner_height + 'px', margin: getFrameMargin(true)}" + :style="{width: inner_width + 'px', height: inner_height + 'px', margin: getFrameMargin(true), '--inner-width': inner_width + 'px', '--inner-height': inner_height + 'px'}" >
    diff --git a/lang/en.json b/lang/en.json index 79884110f..79589cff9 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2106,6 +2106,18 @@ "menu.mirror_painting.texture_frames": "Repeat on Animated Texture Frames", "menu.mirror_painting.texture_frames.desc": "Mirror paint strokes to every frame of animated textures", + "menu.image_tiled_view.mirrored": "Mirrored Edges", + + "menu.image_onion_skin_view.frame": "Frames", + "menu.image_onion_skin_view.frame.last_viewed": "Last Viewed Frame", + "menu.image_onion_skin_view.frame.previous": "Previous Frame", + "menu.image_onion_skin_view.frame.next": "Next Frame", + "menu.image_onion_skin_view.frame.both": "Previous + Next", + "menu.image_onion_skin_view.display": "Frames", + "menu.image_onion_skin_view.display.pixels": "Smaller Pixels", + "menu.image_onion_skin_view.display.transparent": "Transparent", + "menu.image_onion_skin_view.above": "Display Above", + "menu.toolbar.edit": "Customize Toolbar", "menu.toolbar.reset": "Reset Toolbar", "menu.toolbar.overflow": "Toolbar Overflow", From 60cee0c186421e57032cbf1d1fd74bcadcace4eb Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 3 Sep 2024 22:35:21 +0200 Subject: [PATCH 097/153] Highlight missing image textures when clicking Improve style of missing file texture error --- css/panels.css | 4 +--- js/texturing/textures.js | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/css/panels.css b/css/panels.css index fffe2cf64..6992d37d2 100644 --- a/css/panels.css +++ b/css/panels.css @@ -690,12 +690,10 @@ } .texture_error { position: absolute; - color: red; + color: var(--color-error); margin-left: 21px; margin-top: 21px; text-shadow: 0 0 5px #000; - font-size: 20pt; - left: 0; } .texture_movie { position: absolute; diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 090586183..34f514867 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2309,6 +2309,9 @@ Interface.definePanels(function() { props: { texture: Texture }, + data() {return { + temp_color: null + }}, methods: { getDescription(texture) { if (texture.error) { @@ -2330,6 +2333,25 @@ Interface.definePanels(function() { let val = texture.currentFrame * -48 * (texture.display_height / texture.width); return `${val}px`; }, + highlightTexture(event) { + if (!Format.single_texture && this.texture.error) { + let material = this.texture.getMaterial(); + let color = material.uniforms.LIGHTCOLOR.value; + this.temp_color = new THREE.Color().copy(color); + color.r += 0.3; + color.g += 0.3; + color.b += 0.3; + setTimeout(() => { + }, 150); + } + }, + unhighlightTexture(event) { + if (!Format.single_texture && this.temp_color) { + let material = this.texture.getMaterial(); + let color = material.uniforms.LIGHTCOLOR.value; + color.copy(this.temp_color); + } + }, dragTexture(e1) { if (e1.button == 1) return; if (getFocusedTextInput()) return; @@ -2561,13 +2583,15 @@ Interface.definePanels(function() { v-bind:texid="texture.uuid" class="texture" @click.stop="texture.select($event)" + @mousedown="highlightTexture($event)" + @mouseup="unhighlightTexture($event)" @dblclick="texture.openMenu($event)" @mousedown.stop="dragTexture($event)" @touchstart.stop="dragTexture($event)" @contextmenu.prevent.stop="texture.showContextMenu($event)" >
    - error_outline + priority_high
    From 97fd6b26085b1333682736691db4720045b649c0 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 3 Sep 2024 22:52:30 +0200 Subject: [PATCH 098/153] Highlight the selected entry in menus --- css/general.css | 3 +++ js/interface/menu.js | 3 +++ js/outliner/cube.js | 18 +++++++++++++++++- js/outliner/group.js | 1 + js/outliner/mesh.js | 16 ++++++++++++++++ js/outliner/null_object.js | 2 ++ js/texturing/uv.js | 3 +++ 7 files changed, 45 insertions(+), 1 deletion(-) diff --git a/css/general.css b/css/general.css index 1f824d2d2..6178dc6ba 100644 --- a/css/general.css +++ b/css/general.css @@ -710,6 +710,9 @@ pointer-events: none; flex: 1 0 auto; } + .contextMenu li.marked > span { + text-decoration: underline; + } .contextMenu li.parent.focused > .contextMenu.sub { display: block; } diff --git a/js/interface/menu.js b/js/interface/menu.js index ca6ec9797..9762478ee 100644 --- a/js/interface/menu.js +++ b/js/interface/menu.js @@ -476,6 +476,9 @@ class Menu { } entry = Interface.createElement('li', {title: s.description && tl(s.description), menu_item: s.id}, Interface.createElement('span', {}, tl(s.name))); entry.prepend(icon); + if (s.marked) { + entry.classList.add('marked'); + } if (s.keybind) { let label = document.createElement('label'); label.classList.add('keybinding_label') diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 61f020bed..bcd1f4086 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -947,11 +947,27 @@ class Cube extends OutlinerElement { obj.applyTexture(false, true) }, 'texture blank', Format.per_group_texture ? 'all_in_group' : null) }} - ] + ]; + let applied_texture; + main_loop: for (let cube of Cube.selected) { + face_loop: for (let fkey in cube.faces) { + let texture = cube.faces[fkey].getTexture(); + if (texture) { + if (!applied_texture) { + applied_texture = texture; + } else if (applied_texture != texture) { + applied_texture = null; + break main_loop; + break face_loop; + } + } + } + } Texture.all.forEach(function(t) { arr.push({ name: t.name, icon: (t.mode === 'link' ? t.img : t.source), + marked: t == applied_texture, click: function(cube) { cube.forSelected(function(obj) { obj.applyTexture(t, true) diff --git a/js/outliner/group.js b/js/outliner/group.js index d986b6094..818879aee 100644 --- a/js/outliner/group.js +++ b/js/outliner/group.js @@ -473,6 +473,7 @@ class Group extends OutlinerNode { arr.push({ name: t.name, icon: (t.mode === 'link' ? t.img : t.source), + marked: t.uuid == Group.selected.texture, click(group) { applyTexture(t.uuid, 'Apply texture to group'); } diff --git a/js/outliner/mesh.js b/js/outliner/mesh.js index 629752740..a26033caa 100644 --- a/js/outliner/mesh.js +++ b/js/outliner/mesh.js @@ -892,10 +892,26 @@ class Mesh extends OutlinerElement { }, 'texture blank') }} ] + let applied_texture; + main_loop: for (let mesh of Mesh.selected) { + face_loop: for (let fkey in mesh.faces) { + let texture = mesh.faces[fkey].getTexture(); + if (texture) { + if (!applied_texture) { + applied_texture = texture; + } else if (applied_texture != texture) { + applied_texture = null; + break main_loop; + break face_loop; + } + } + } + } Texture.all.forEach((t) => { arr.push({ name: t.name, icon: (t.mode === 'link' ? t.img : t.source), + marked: t == applied_texture, click(mesh) { let all_faces = BarItems.selection_mode.value != 'face' || Mesh.selected[0]?.getSelectedFaces().length == 0; mesh.forSelected((obj) => { diff --git a/js/outliner/null_object.js b/js/outliner/null_object.js index 5ec33eff5..5e49da5a1 100644 --- a/js/outliner/null_object.js +++ b/js/outliner/null_object.js @@ -240,6 +240,7 @@ BARS.defineActions(function() { return { name: node.name + (node.uuid == NullObject.selected[0].ik_target ? ' (✔)' : ''), icon: node instanceof Locator ? 'fa-anchor' : 'folder', + marked: node.uuid == NullObject.selected[0].ik_target, color: markerColors[node.color % markerColors.length] && markerColors[node.color % markerColors.length].standard, click() { Undo.initEdit({elements: NullObject.selected}); @@ -280,6 +281,7 @@ BARS.defineActions(function() { return { name: node.name + (node.uuid == NullObject.selected[0].ik_source ? ' (✔)' : ''), icon: node instanceof Locator ? 'fa-anchor' : 'folder', + marked: node.uuid == NullObject.selected[0].ik_source, color: markerColors[node.color % markerColors.length] && markerColors[node.color % markerColors.length].standard, click() { Undo.initEdit({elements: NullObject.selected}); diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 192bb920a..2bcca7110 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -1551,6 +1551,7 @@ const UVEditor = { arr.push({ name: t.name, icon: (t.mode === 'link' ? t.img : t.source), + marked: t == UVEditor.texture, click() { UVEditor.applyTexture(t); } @@ -2696,6 +2697,7 @@ Interface.definePanels(function() { return { name: tex.name, icon: tex.img, + marked: tex == UVEditor.texture, click(event) { tex.select(event); } @@ -3885,6 +3887,7 @@ Interface.definePanels(function() { return { name: tex.name, icon: tex.img, + marked: tex == UVEditor.texture, click(event) { UVEditor.applyTexture(tex); } From 452829f333ccedb21a33331215640270d648723e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 5 Sep 2024 17:48:29 +0200 Subject: [PATCH 099/153] Fix textures not being recognized as animated --- js/texturing/textures.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 34f514867..51c85f128 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -307,7 +307,7 @@ class Texture { } } get frameCount() { - if (Format.animated_textures && this.ratio !== (this.getUVWidth() / this.getUVHeight()) && 1/this.ratio % 1 === 0) { + if (Format.animated_textures && this.ratio !== (this.getUVWidth() / this.getUVHeight())) { return Math.ceil((this.getUVWidth() / this.getUVHeight()) / this.ratio - 0.05); } } From 60aea62f3e088195969d48f3167a8f522e1463e4 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 5 Sep 2024 22:52:05 +0200 Subject: [PATCH 100/153] Add support for setting keybinding variations to unset Add selection tool variations to select modifiers for operation mode Add selection tool sub keybindings --- js/interface/keyboard.js | 8 ++--- js/texturing/painter.js | 66 ++++++++++++++++++++++++++++++---------- 2 files changed, 54 insertions(+), 20 deletions(-) diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index cb25c066c..4ed19cc50 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -532,7 +532,7 @@ onVueSetup(function() { ctrl: tl(Blockbench.platform == 'darwin' ? 'keys.meta' : 'keys.ctrl'), shift: tl('keys.shift'), alt: tl('keys.alt'), - none: '', + '': '-', } }}, methods: { @@ -699,7 +699,7 @@ window.addEventListener('blur', event => { Pressing.alt = false; Pressing.ctrl = false; if (changed) { - Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing}); + Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing, event}); } }) @@ -743,7 +743,7 @@ addEventListeners(document, 'keydown mousedown', function(e) { Pressing.alt = e.altKey; Pressing.ctrl = e.ctrlKey; if (modifiers_changed) { - Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing}); + Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing, event}); } if (e.which === 16) { @@ -993,6 +993,6 @@ $(document).keyup(function(e) { Pressing.alt = e.altKey; Pressing.ctrl = e.ctrlKey; if (changed) { - Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing}); + Blockbench.dispatchEvent('update_pressed_modifier_keys', {before, now: Pressing, event}); } }) diff --git a/js/texturing/painter.js b/js/texturing/painter.js index f67537e2b..3d59b000c 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -2629,6 +2629,13 @@ BARS.defineActions(function() { } } })*/ + let selection_tools = { + rectangle: {name: 'action.selection_tool.rectangle', icon: 'select'}, + ellipse: {name: 'action.selection_tool.ellipse', icon: 'lasso_select'}, + //lasso: {name: 'action.selection_tool.lasso', icon: 'fa-draw-polygon'}, + wand: {name: 'action.selection_tool.wand', icon: 'fa-magic'}, + color: {name: 'action.selection_tool.color', icon: 'fa-eye-dropper'}, + }; let selection_tool = new Tool('selection_tool', { icon: 'select', category: 'tools', @@ -2639,23 +2646,22 @@ BARS.defineActions(function() { paintTool: true, allowed_view_modes: ['textured'], modes: ['paint'], - keybind: new Keybind({key: 'm'}), + keybind: new Keybind({key: 'm'}, { + create: '', + add: 'shift', + subtract: 'ctrl', + intersect: '', + }), side_menu: new Menu('selection_tool', () => { - let modes = { - rectangle: {name: 'action.selection_tool.rectangle', icon: 'select'}, - ellipse: {name: 'action.selection_tool.ellipse', icon: 'lasso_select'}, - //lasso: {name: 'action.selection_tool.lasso', icon: 'fa-draw-polygon'}, - wand: {name: 'action.selection_tool.wand', icon: 'fa-magic'}, - color: {name: 'action.selection_tool.color', icon: 'fa-eye-dropper'}, - }; let entries = []; - for (let id in modes) { + for (let id in selection_tools) { let entry = { id, - name: modes[id].name, - icon: modes[id].icon, + name: selection_tools[id].name, + icon: selection_tools[id].icon, + keybind: BarItems.selection_tool.sub_keybinds[id]?.keybind || undefined, click() { - selection_tool.setIcon(modes[id].icon); + selection_tool.setIcon(selection_tools[id].icon); selection_tool.mode = id; selection_tool.select(); BARS.updateConditions(); @@ -2666,6 +2672,12 @@ BARS.defineActions(function() { } return entries; }), + variations: { + create: {name: 'action.selection_tool_operation_mode.create'}, + add: {name: 'action.selection_tool_operation_mode.add'}, + subtract: {name: 'action.selection_tool_operation_mode.subtract'}, + intersect: {name: 'action.selection_tool_operation_mode.intersect'}, + }, onCanvasClick(data) { if (data && data.element) { Blockbench.showQuickMessage('message.copy_paste_tool_viewport') @@ -2688,6 +2700,15 @@ BARS.defineActions(function() { Interface.removeSuggestedModifierKey('alt', 'modifier_actions.drag_to_duplicate'); } }) + for (let id in selection_tools) { + selection_tool.addSubKeybind(id, selection_tools[id].name, null, event => { + selection_tool.setIcon(selection_tools[id].icon); + selection_tool.mode = id; + selection_tool.select(); + BARS.updateConditions(); + BarItems.slider_color_select_threshold.update(); + }); + } selection_tool.mode = 'rectangle'; new Tool('move_layer_tool', { @@ -2802,18 +2823,31 @@ BARS.defineActions(function() { } }) let last_mode = null; - Blockbench.on('update_pressed_modifier_keys', ({before, now}) => { + let last_changed_to = null; + Blockbench.on('update_pressed_modifier_keys', ({before, now, event}) => { let tool = BarItems.selection_tool_operation_mode; + let selection_tool = BarItems.selection_tool; if (!Condition(tool.condition)) return; if (UVEditor.vue.selection_rect.active) return; - if (now.shift) { + + if (selection_tool.keybind.additionalModifierTriggered(event) == 'add') { if (!last_mode) last_mode = tool.value; tool.set('add'); - } else if (now.ctrl) { + last_changed_to = 'add'; + + } else if (selection_tool.keybind.additionalModifierTriggered(event) == 'subtract') { if (!last_mode) last_mode = tool.value; tool.set('subtract'); - } else if (before.ctrl || before.shift) { + last_changed_to = 'subtract'; + + } else if (selection_tool.keybind.additionalModifierTriggered(event) == 'intersect') { + if (!last_mode) last_mode = tool.value; + tool.set('intersect'); + last_changed_to = 'intersect'; + + } else if (last_changed_to == tool.value) { tool.set(last_mode); + last_changed_to = last_mode; last_mode = null; } }); From 1790b11d2bf2766c42ed39cdab60eebf6ecca41a Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 6 Sep 2024 19:23:13 +0200 Subject: [PATCH 101/153] Add keybind variations for UV actions Display keybind variation conflicts --- css/dialogs.css | 5 +++ js/interface/keyboard.js | 4 ++ js/texturing/uv.js | 96 +++++++++++++++++++++++++++++++++------- lang/en.json | 2 + 4 files changed, 92 insertions(+), 15 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index d1811ac0c..1d6b72094 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -741,6 +741,11 @@ .keybind_item_variations > li > bb-select { margin-right: 54px; } + .keybind_variation_conflict { + color: var(--color-warning); + margin-left: -22px; + width: 22px; + } /*Colors*/ dialog#theme .dialog_wrapper { diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index 4ed19cc50..6267717c1 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -584,6 +584,9 @@ onVueSetup(function() { hasSubKeybinds(item) { return item.sub_keybinds && typeof item.sub_keybinds === 'object' && Object.keys(item.sub_keybinds).length > 0; }, + hasVariationConflict(keybind, variation_key) { + return keybind[keybind.variations[variation_key]]; + }, getVariationText(action, variation) { return tl(action.variations?.[variation]?.name, null, variation); }, @@ -657,6 +660,7 @@ onVueSetup(function() {
  • + warning
  • diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 2bcca7110..92853b188 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -377,9 +377,9 @@ const UVEditor = { : UVEditor.getUVWidth() ); }, - getFaces(element, event) { + getFaces(element, event, action) { let available = Object.keys(element.faces) - if (event && event.shiftKey) { + if (event && (action ? action.keybind.additionalModifierTriggered(event, 'all_faces') : event.shiftKey)) { return available; } else { return UVEditor.getSelectedFaces(element).filter(key => available.includes(key)); @@ -807,7 +807,7 @@ const UVEditor = { maximize(event) { var scope = this; this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.uv_maximize).forEach(function(side) { obj.faces[side].uv = [0, 0, scope.getResolution(0, obj.faces[side]), scope.getResolution(1, obj.faces[side])] }) obj.autouv = 0; @@ -819,7 +819,7 @@ const UVEditor = { turnMapping(event) { var scope = this; this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.uv_turn_mapping).forEach(function(side) { var uv = obj.faces[side].uv_size; obj.faces[side].uv_size = [uv[1], uv[0]]; if (uv[0] < 0) { @@ -856,7 +856,7 @@ const UVEditor = { this.getMappableElements().forEach(obj => { let height, width; - let faces = face_keys || this.getFaces(obj, event); + let faces = face_keys || this.getFaces(obj, event, BarItems.uv_auto); if (obj instanceof Cube) { faces.forEach(function(side) { let face = obj.faces[side]; @@ -996,7 +996,7 @@ const UVEditor = { setRelativeAutoSize(event) { var scope = this; this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.uv_rel_auto).forEach(function(side) { var uv = obj.faces[side].uv, ru = scope.getResolution(0, obj.faces[side]), rv = scope.getResolution(1, obj.faces[side]); @@ -1065,7 +1065,7 @@ const UVEditor = { var scope = this; this.forElements(obj => { if (obj instanceof Cube) { - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_x).forEach((side) => { var proxy = obj.faces[side].uv[0] obj.faces[side].uv[0] = obj.faces[side].uv[2] obj.faces[side].uv[2] = proxy @@ -1073,7 +1073,7 @@ const UVEditor = { } else if (obj instanceof Mesh) { let min = Infinity; let max = -Infinity; - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_x).forEach((side) => { obj.faces[side].vertices.forEach(vkey => { min = Math.min(min, obj.faces[side].uv[vkey][0]); max = Math.max(max, obj.faces[side].uv[vkey][0]); @@ -1081,7 +1081,7 @@ const UVEditor = { }) let center = Math.lerp(min, max, 0.5); - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_x).forEach((side) => { obj.faces[side].vertices.forEach(vkey => { obj.faces[side].uv[vkey][0] = center*2 - obj.faces[side].uv[vkey][0]; }) @@ -1097,7 +1097,7 @@ const UVEditor = { var scope = this; this.forElements(obj => { if (obj instanceof Cube) { - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_y).forEach((side) => { var proxy = obj.faces[side].uv[1] obj.faces[side].uv[1] = obj.faces[side].uv[3] obj.faces[side].uv[3] = proxy @@ -1105,7 +1105,7 @@ const UVEditor = { } else if (obj instanceof Mesh) { let min = Infinity; let max = -Infinity; - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_y).forEach((side) => { obj.faces[side].vertices.forEach(vkey => { min = Math.min(min, obj.faces[side].uv[vkey][1]); max = Math.max(max, obj.faces[side].uv[vkey][1]); @@ -1113,7 +1113,7 @@ const UVEditor = { }) let center = Math.lerp(min, max, 0.5); - scope.getFaces(obj, event).forEach((side) => { + scope.getFaces(obj, event, BarItems.uv_mirror_y).forEach((side) => { obj.faces[side].vertices.forEach(vkey => { obj.faces[side].uv[vkey][1] = center*2 - obj.faces[side].uv[vkey][1]; }) @@ -1141,7 +1141,7 @@ const UVEditor = { var scope = this; Undo.initEdit({elements: Cube.selected, uv_only: true}) this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.uv_transparent).forEach(function(side) { obj.faces[side].uv = [0, 0, 0, 0] obj.faces[side].texture = null; }) @@ -1248,7 +1248,7 @@ const UVEditor = { autoCullface(event) { var scope = this; this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.auto_cullface).forEach(function(side) { obj.faces[side].cullface = side }) }) @@ -1371,7 +1371,7 @@ const UVEditor = { reset(event) { var scope = this; this.forCubes(obj => { - scope.getFaces(obj, event).forEach(function(side) { + scope.getFaces(obj, event, BarItems.uv_reset).forEach(function(side) { obj.faces[side].reset() }) obj.preview_controller.updateFaces(obj); @@ -1647,6 +1647,12 @@ BARS.defineActions(function() { icon: 'zoom_out_map', category: 'uv', condition: () => UVEditor.isFaceUV() && Cube.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.forSelection('maximize', event) @@ -1657,6 +1663,12 @@ BARS.defineActions(function() { icon: 'screen_rotation', category: 'uv', condition: () => UVEditor.isFaceUV() && Cube.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.forSelection('turnMapping', event) @@ -1667,6 +1679,12 @@ BARS.defineActions(function() { icon: 'brightness_auto', category: 'uv', condition: () => (UVEditor.isFaceUV() && Cube.selected.length) || Mesh.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: UVEditor.getMappableElements(), uv_only: true}) UVEditor.forSelection('setAutoSize', event) @@ -1741,6 +1759,12 @@ BARS.defineActions(function() { icon: 'brightness_auto', category: 'uv', condition: () => UVEditor.isFaceUV() && Cube.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.forSelection('setRelativeAutoSize', event) @@ -1751,6 +1775,12 @@ BARS.defineActions(function() { icon: 'icon-mirror_x', category: 'uv', condition: () => UVEditor.isFaceUV() && UVEditor.hasElements(), + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: UVEditor.getMappableElements(), uv_only: true}) UVEditor.forSelection('mirrorX', event) @@ -1761,6 +1791,12 @@ BARS.defineActions(function() { icon: 'icon-mirror_y', category: 'uv', condition: () => UVEditor.isFaceUV() && UVEditor.hasElements(), + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: UVEditor.getMappableElements(), uv_only: true}) UVEditor.forSelection('mirrorY', event) @@ -1771,6 +1807,12 @@ BARS.defineActions(function() { icon: 'rotate_left', category: 'uv', condition: () => Mesh.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Mesh.selected, uv_only: true}) UVEditor.rotate(-90); @@ -1781,6 +1823,12 @@ BARS.defineActions(function() { icon: 'rotate_right', category: 'uv', condition: () => Mesh.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Mesh.selected, uv_only: true}) UVEditor.rotate(90); @@ -1791,6 +1839,12 @@ BARS.defineActions(function() { icon: 'clear', category: 'uv', condition: () => UVEditor.isFaceUV() && Cube.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { UVEditor.forSelection('clear', event) } @@ -1799,6 +1853,12 @@ BARS.defineActions(function() { icon: 'replay', category: 'uv', condition: () => UVEditor.isFaceUV() && Cube.selected.length, + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.forSelection('reset', event) @@ -1838,6 +1898,12 @@ BARS.defineActions(function() { icon: 'block', category: 'uv', condition: () => UVEditor.isFaceUV() && Format.java_face_properties && Cube.selected.length && UVEditor.getReferenceFace(), + keybind: new Keybind({}, { + all_faces: 'shift' + }), + variations: { + all_faces: {name: 'action.uv_maximize.all_faces'} + }, click: function (event) { Undo.initEdit({elements: Cube.selected, uv_only: true}) UVEditor.forSelection('autoCullface', event) diff --git a/lang/en.json b/lang/en.json index 79589cff9..c9bbfebff 100644 --- a/lang/en.json +++ b/lang/en.json @@ -792,6 +792,7 @@ "keybindings.clear": "Empty", "keybindings.recording": "Recording Keybinding", "keybindings.press": "Press a key or key combination or click anywhere on the screen to record your keybinding.", + "keybindings.variation_conflict": "Variation conflicts with the main keybinding", "keybindings.item.num_slider.increase": "Increase", "keybindings.item.num_slider.decrease": "Decrease", @@ -1737,6 +1738,7 @@ "action.uv_apply_all.desc": "Applies the settings of the current face to all faces", "action.uv_maximize": "Maximize UV", "action.uv_maximize.desc": "Sets the UV for this face to the full texture", + "action.uv_maximize.all_faces": "Affect all faces", "action.uv_turn_mapping": "Turn Mapping", "action.uv_turn_mapping.desc": "Turn the UV mapping around 90 degrees", "action.uv_auto": "Auto UV", From b42fcebfe475622e8710e437e675688d99a10713 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 6 Sep 2024 23:01:58 +0200 Subject: [PATCH 102/153] Fix layer opacity slider not updating when switching texture --- js/misc.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/misc.js b/js/misc.js index c75920829..e3f65df45 100644 --- a/js/misc.js +++ b/js/misc.js @@ -203,6 +203,8 @@ function updateSelection(options = {}) { Preview.all.forEach(preview => { preview.updateAnnotations(); }) + BarItems.layer_opacity.update(); + BarItems.layer_blend_mode.set(this.blend_mode); BARS.updateConditions(); delete TickUpdates.selection; From 17909eca3277f4afc7962da1662b2e46d69edc19 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 6 Sep 2024 23:32:37 +0200 Subject: [PATCH 103/153] Fix an issue when loading textures for bedrock blocks from RP --- js/io/formats/bedrock.js | 4 +++- js/misc.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/js/io/formats/bedrock.js b/js/io/formats/bedrock.js index 6c8c43056..ce01cc30a 100644 --- a/js/io/formats/bedrock.js +++ b/js/io/formats/bedrock.js @@ -441,7 +441,9 @@ window.BedrockBlockManager = class BedrockBlockManager { let texture_path = `textures/blocks/${material.texture || this.project.geometry_name}`; if (terrain_texture) { let texture_data = terrain_texture[material.texture]; - texture_path = texture_data.textures + if (typeof texture_data?.textures == 'string') { + texture_path = texture_data.textures; + } } let full_texture_path = PathModule.join(this.rp_root_path + osfs + texture_path.replace(/\.png$/i, '')); full_texture_path = findExistingFile([ diff --git a/js/misc.js b/js/misc.js index e3f65df45..d818e2450 100644 --- a/js/misc.js +++ b/js/misc.js @@ -203,8 +203,8 @@ function updateSelection(options = {}) { Preview.all.forEach(preview => { preview.updateAnnotations(); }) - BarItems.layer_opacity.update(); - BarItems.layer_blend_mode.set(this.blend_mode); + if (Condition(BarItems.layer_opacity.condition)) BarItems.layer_opacity.update(); + if (Condition(BarItems.layer_blend_mode.condition)) BarItems.layer_blend_mode.set(this.blend_mode); BARS.updateConditions(); delete TickUpdates.selection; From eabb845d5cef91ae727b7da8375d5a79ce6fb461 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 7 Sep 2024 14:06:30 +0200 Subject: [PATCH 104/153] Add fox mouth and eating display mode reference Closes #2047 --- assets/fox.png | Bin 0 -> 584 bytes js/display_mode.js | 97 +++++++++++++++++++++++++++++++++++++-- js/texturing/textures.js | 5 +- lang/en.json | 2 + 4 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 assets/fox.png diff --git a/assets/fox.png b/assets/fox.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1f3dd6cb709a6c9b04470c23175a73436cd5e1 GIT binary patch literal 584 zcmV-O0=NB%P)Px%0!c(cR9J=WmcL6QK@`V78&=^8MG^^W0++~vh2{#+DhGBJ3X%8+SXfwCc_-Lv zdthN{k-{RKjdBNCSlz*O(ZV}BjX6-!z%F7sBiSq58FzF0D=}~p@@-~z-<$XS?t3$D z2mUjZAWq$CuVHTkSO}ch>;)^bOgFylg=QsD2JRnSKBcbDMGwklnp! zC)3YiZj-6S&;Qt74Lnm-SV|ZG(TLrxtUZoy81??L1O|SU5gv zP}U5l^C$H54NJSf_`;DIF>}ey6_B?GJV3aBnR{F1Ch5K0{yoOO9?}4#Ij}( z`}B>Y{XGCa%w!oHNi}o{vBLL0fY}SgCX7--KQG8utDhH|<%V`>#jdHdroC(aD{n_X z0`TYbC)NBcnB_?4blbW{?}V-;c#~PDV$R>il8Cz>z*&0j$p;{}+z4L>9dyt^`{6G` W-?Ml0J%kbf0000
    ') } DisplayMode.loadFirstLeft = function() { //Loader @@ -1480,7 +1552,7 @@ DisplayMode.loadFirstLeft = function() { //Loader }) display_preview.controls.enabled = false if (display_preview.orbit_gizmo) display_preview.orbit_gizmo.hide(); - displayReferenceObjects.bar(['monitor', 'bow', 'crossbow']) + displayReferenceObjects.bar(['monitor', 'bow', 'crossbow', 'eating']); $('.single_canvas_wrapper').append('
    ') } DisplayMode.loadHead = function() { //Loader @@ -1515,7 +1587,7 @@ DisplayMode.loadGround = function() { //Loader setDisplayArea(8, 4, 8, 0, 0, 0, 1, 1, 1) ground_animation = true; ground_timer = 0 - displayReferenceObjects.bar(['block']) + displayReferenceObjects.bar(['block', 'fox']) } DisplayMode.loadFixed = function() { //Loader loadDisp('fixed') @@ -1696,6 +1768,21 @@ function updateDisplaySkin(feedback) { } DisplayMode.updateDisplaySkin = updateDisplaySkin; +DisplayMode.debugBase = function() { + new Dialog('display_base_debug', { + title: 'Debug Display Base', + darken: false, + form: { + translation: {type: 'vector', dimensions: 3, step: 0.1, value: [0, 0, 0], label: 'Translation'}, + rotation: {type: 'vector', dimensions: 3, step: 0.5, value: [0, 0, 0], label: 'Rotation'}, + scale: {type: 'vector', dimensions: 3, step: 0.05, value: [1, 1, 1], label: 'Scale'}, + }, + onFormChange(result) { + DisplayMode.setBase(...result.translation, ...result.rotation, ...result.scale) + } + }).show(); +} + BARS.defineActions(function() { new Action('add_display_preset', { icon: 'add', diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 51c85f128..d82718b78 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -308,7 +308,8 @@ class Texture { } get frameCount() { if (Format.animated_textures && this.ratio !== (this.getUVWidth() / this.getUVHeight())) { - return Math.ceil((this.getUVWidth() / this.getUVHeight()) / this.ratio - 0.05); + let frames = Math.ceil((this.getUVWidth() / this.getUVHeight()) / this.ratio - 0.05); + if (frames > 1) return frames; } } get display_height() { @@ -2714,7 +2715,7 @@ Interface.definePanels(function() { this.textures.forEach(tex => { if (tex.frameCount > count) count = tex.frameCount; }); - return count; + return count > 1; }, unselect(event) { if (Blockbench.hasFlag('dragging_textures')) return; diff --git a/lang/en.json b/lang/en.json index c9bbfebff..6b4f4d64c 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2355,9 +2355,11 @@ "display.reference.armor_stand": "Armor Stand", "display.reference.baby_zombie": "Baby Zombie", "display.reference.armor_stand_small": "Armor Stand Small", + "display.reference.fox": "Fox", "display.reference.monitor": "Normal", "display.reference.bow": "Charged Bow", "display.reference.crossbow": "Charged Crossbow", + "display.reference.eating": "Eating", "display.reference.block": "Block", "display.reference.frame": "Item Frame", "display.reference.frame_invisible": "Item Frame (Invisible)", From f178d9eedf25511392467655e3c764b6d57b569c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 7 Sep 2024 18:40:03 +0200 Subject: [PATCH 105/153] Add setting to save view per tab --- js/animations/animation.js | 2 +- js/interface/settings.js | 1 + js/io/project.js | 28 +++++++++++++++------------- lang/en.json | 2 ++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/js/animations/animation.js b/js/animations/animation.js index a297e14e7..87f25c24e 100644 --- a/js/animations/animation.js +++ b/js/animations/animation.js @@ -506,7 +506,7 @@ class Animation extends AnimationItem { if (check(this.name)) { return this.name; } - for (var num = 2; num < 8e3; num++) { + for (var num = 2; num < 8e2; num++) { if (check(name+num)) { scope.name = name+num; return scope.name; diff --git a/js/interface/settings.js b/js/interface/settings.js index 1771612ee..0239ebd2a 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -446,6 +446,7 @@ const Settings = { WinterskyScene.global_options.tick_rate = this.value; }}); new Setting('volume', {category: 'preview', value: 80, min: 0, max: 200, type: 'number'}); + new Setting('save_view_per_tab', {category: 'preview', value: true}); new Setting('display_skin', {category: 'preview', value: false, type: 'click', icon: 'icon-player', click: function() { changeDisplaySkin() }}); //Edit diff --git a/js/io/project.js b/js/io/project.js index 7738aa99d..048a79895 100644 --- a/js/io/project.js +++ b/js/io/project.js @@ -227,19 +227,21 @@ class ModelProject { Panels.skin_pose.inside_vue.pose = this.skin_pose; UVEditor.loadViewportOffset(); - - Preview.all.forEach(preview => { - let data = this.previews[preview.id]; - if (data) { - preview.camera.position.fromArray(data.position); - preview.controls.target.fromArray(data.target); - preview.setProjectionMode(data.orthographic); - if (data.zoom) preview.camOrtho.zoom = data.zoom; - if (data.angle) preview.setLockedAngle(data.angle); - } else if (preview.default_angle !== undefined) { - preview.loadAnglePreset(preview.default_angle); - } - }) + + if (settings.save_view_per_tab.value) { + Preview.all.forEach(preview => { + let data = this.previews[preview.id]; + if (data) { + preview.camera.position.fromArray(data.position); + preview.controls.target.fromArray(data.target); + preview.setProjectionMode(data.orthographic); + if (data.zoom) preview.camOrtho.zoom = data.zoom; + if (data.angle) preview.setLockedAngle(data.angle); + } else if (preview.default_angle !== undefined) { + preview.loadAnglePreset(preview.default_angle); + } + }) + } Modes.options[this.mode].select(); if (BarItems[this.tool] && Condition(BarItems[this.tool].condition)) { diff --git a/lang/en.json b/lang/en.json index 6b4f4d64c..72c7a0f33 100644 --- a/lang/en.json +++ b/lang/en.json @@ -904,6 +904,8 @@ "settings.control_size.desc": "Size of the transform gizmo", "settings.motion_trails": "Motion Trails", "settings.motion_trails.desc": "Show motion trails in the animation editor", + "settings.save_view_per_tab": "Save View per Tab", + "settings.save_view_per_tab.desc": "Save the current view angle for each tab separately", "settings.display_skin": "Minecraft Skin", "settings.display_skin.desc": "Skin used for the reference player model", "settings.seethrough_outline": "X-Ray Outlines", From 65e720a2e6d0d91140d2d29988e2d163b7b5204c Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 7 Sep 2024 21:14:25 +0200 Subject: [PATCH 106/153] Fix beta issues --- js/texturing/textures.js | 3 ++- lang/en.json | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index d82718b78..cd0a3494c 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2715,7 +2715,8 @@ Interface.definePanels(function() { this.textures.forEach(tex => { if (tex.frameCount > count) count = tex.frameCount; }); - return count > 1; + if (count == 1) return 0; + return count; }, unselect(event) { if (Blockbench.hasFlag('dragging_textures')) return; diff --git a/lang/en.json b/lang/en.json index 72c7a0f33..d2590d094 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2390,7 +2390,6 @@ "preview_scene.minecraft_sunset": "Sunset", "preview_scene.minecraft_night": "Night", "preview_scene.minecraft_desert": "Desert", - "preview_scene.minecraft_oceant": "Ocean", "preview_scene.minecraft_underwater": "Underwater", "preview_scene.minecraft_ocean": "Ocean", "preview_scene.minecraft_coral_reef": "Coral Reef", From 4e0a13879703395135be280611c070b98c202962 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 7 Sep 2024 21:56:19 +0200 Subject: [PATCH 107/153] Fix issues with onion skin options --- css/panels.css | 3 +++ js/texturing/uv.js | 3 ++- lang/en.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/css/panels.css b/css/panels.css index 969798c10..f9a4425a7 100644 --- a/css/panels.css +++ b/css/panels.css @@ -2085,6 +2085,9 @@ span.controller_state_section_info { width: 100%; height: 100%; } + #uv_frame > #texture_canvas_wrapper > canvas.overlay_canvas.above { + z-index: 1; + } /* Fix in Firefox + iPadOS */ #uv_frame_spacer { width: 1px; diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 92853b188..0f11d7b4f 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -305,7 +305,7 @@ const UVEditor = { case 'next': frames = [texture.currentFrame+1]; break; case 'both': frames = [texture.currentFrame-1, texture.currentFrame+1]; break; } - frames = frames.map(f => Math.clamp(f, 0, texture.frameCount-1)).filter(f => f != texture.currentFrame); + frames = frames.map(f => (f+texture.frameCount) % texture.frameCount).filter(f => f != texture.currentFrame); if (Painter.image_onion_skin_view_options.display == 'transparent') { canvas.width = texture.width; @@ -330,6 +330,7 @@ const UVEditor = { } } } + canvas.classList.toggle('above', BarItems.image_onion_skin_view.value && Painter.image_onion_skin_view_options.above); }, //Get get width() { diff --git a/lang/en.json b/lang/en.json index d2590d094..7ab5c0df2 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2117,7 +2117,7 @@ "menu.image_onion_skin_view.frame.previous": "Previous Frame", "menu.image_onion_skin_view.frame.next": "Next Frame", "menu.image_onion_skin_view.frame.both": "Previous + Next", - "menu.image_onion_skin_view.display": "Frames", + "menu.image_onion_skin_view.display": "Display", "menu.image_onion_skin_view.display.pixels": "Smaller Pixels", "menu.image_onion_skin_view.display.transparent": "Transparent", "menu.image_onion_skin_view.above": "Display Above", From 1a46e5f381997ab68114eae56ab9e8c0e5f211c5 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 8 Sep 2024 18:22:51 +0200 Subject: [PATCH 108/153] Fix issue with onion skin view on non-animated textures --- js/texturing/uv.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 0f11d7b4f..e5862efe1 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -268,6 +268,8 @@ const UVEditor = { let canvas = UVEditor.overlay_canvas; let texture = Texture.selected; let ctx = canvas.getContext('2d'); + canvas.width = texture.width; + if (BarItems.image_tiled_view.value == true) { canvas.setAttribute('overlay_mode', 'tiled'); canvas.width = texture.width * 3; @@ -296,7 +298,7 @@ const UVEditor = { } } } - } else if (BarItems.image_onion_skin_view.value == true) { + } else if (BarItems.image_onion_skin_view.value == true && texture.frameCount > 2) { canvas.setAttribute('overlay_mode', 'onion_skin'); let frames = []; switch (Painter.image_onion_skin_view_options.frame) { From ac157d21a8360a370f79fb4450bd6a0120b40dff Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 8 Sep 2024 18:59:23 +0200 Subject: [PATCH 109/153] v4.11.0-beta.2 [ci-build] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 596bdb1e0..49f73e8af 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Blockbench", "description": "Low-poly modeling and animation software", - "version": "4.11.0-beta.1", + "version": "4.11.0-beta.2", "license": "GPL-3.0-or-later", "author": { "name": "JannisX11", From de65f00fc5b74174ad0090b37412860ab6f042a0 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 10 Sep 2024 18:38:13 +0200 Subject: [PATCH 110/153] Allow switching source repository for scenes via console --- js/preview/preview_scenes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/preview/preview_scenes.js b/js/preview/preview_scenes.js index 08cf9f487..4f86b467d 100644 --- a/js/preview/preview_scenes.js +++ b/js/preview/preview_scenes.js @@ -68,7 +68,7 @@ class PreviewScene { } } async lazyLoadFromWeb() { - let repo = 'https://cdn.jsdelivr.net/gh/JannisX11/blockbench-scenes'; + let repo = PreviewScene.source_repository; // repo = './../blockbench-scenes' this.loaded = true; let response = await fetch(`${repo}/${this.web_config_path}`); @@ -144,6 +144,7 @@ class PreviewScene { PreviewScene.scenes = {}; PreviewScene.active = null; PreviewScene.select_options = {}; +PreviewScene.source_repository = 'https://cdn.jsdelivr.net/gh/JannisX11/blockbench-scenes'; PreviewScene.menu_categories = { main: { none: tl('generic.none') From 1694d0aae48c6ec7bcac0e4c810c5212f261d587 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 10 Sep 2024 19:04:55 +0200 Subject: [PATCH 111/153] Hide outliner toggles in modes where they are not used --- js/outliner/outliner.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index e535a7bce..d93c55c05 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -36,25 +36,26 @@ const Outliner = { icon: ' far fa-square-check', icon_off: ' far fa-window-close', advanced_option: true, + condition: {modes: ['edit']}, visibilityException(node) { return !node.export; } }, shade: { id: 'shade', - condition: () => Format.java_cube_shading_properties, + condition: {modes: ['edit'], features: ['java_cube_shading_properties']}, title: tl('switches.shade'), icon: 'fa fa-star', icon_off: 'far fa-star', - advanced_option: true + advanced_option: true, }, mirror_uv: { id: 'mirror_uv', - condition: (element) => (element instanceof Group) ? element.children.find(c => c.box_uv) : element.box_uv, + condition: {modes: ['edit'], method: (element) => (element instanceof Group) ? element.children.find(c => c.box_uv) : element.box_uv}, title: tl('switches.mirror'), icon: 'icon-mirror_x icon', icon_off: 'icon-mirror_x icon', - advanced_option: true + advanced_option: true, }, autouv: { id: 'autouv', @@ -63,6 +64,7 @@ const Outliner = { icon_off: ' far fa-times-circle', icon_alt: ' fa fa-magic', advanced_option: true, + condition: {modes: ['edit']}, getState(element) { if (!element.autouv) { return false @@ -1596,7 +1598,7 @@ Interface.definePanels(function() { value = (typeof value == 'number') ? (value+1) % 3 : !value; if (!toggle_config) return; - if (!(key == 'locked' || key == 'visibility' || Modes.edit)) return; + if (!Condition(toggle_config.condition, selected[0])) return; function move(e2) { convertTouchEvent(e2); From aa72ae803716d565b66fc4c3fced38f6c9a7ea2b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 10 Sep 2024 19:49:38 +0200 Subject: [PATCH 112/153] Add "Reveal Elements on Select" setting Change "Default Preview Paste Behavior" name to "Viewport" --- js/interface/settings.js | 1 + js/outliner/outliner.js | 4 +++- js/preview/preview.js | 13 +++++++------ lang/en.json | 6 ++++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/js/interface/settings.js b/js/interface/settings.js index 52541ab50..59c35bdaa 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -456,6 +456,7 @@ const Settings = { new Setting('highlight_cubes', {category: 'edit', value: true, onChange() { updateCubeHighlights(); }}); + new Setting('outliner_reveal_on_select', {category: 'edit', value: true}) new Setting('allow_display_slot_mirror', {category: 'edit', value: false, onChange(value) { DisplayMode.vue.allow_mirroring = value; }}) diff --git a/js/outliner/outliner.js b/js/outliner/outliner.js index d93c55c05..42d0d7433 100644 --- a/js/outliner/outliner.js +++ b/js/outliner/outliner.js @@ -493,7 +493,9 @@ class OutlinerElement extends OutlinerNode { if (Group.selected) Group.selected.unselect() this.selectLow() just_selected.push(this) - this.showInOutliner() + if (settings.outliner_reveal_on_select.value) { + this.showInOutliner() + } } if (Group.selected) { Group.selected.unselect() diff --git a/js/preview/preview.js b/js/preview/preview.js index 9ce293cae..3da210f67 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -800,14 +800,15 @@ class Preview { group_select || (!Format.rotate_cubes && Format.bone_rig && ['rotate_tool', 'pivot_tool'].includes(Toolbox.selected.id)) )) { + let node_to_select = data.element.parent; if (data.element.parent.selected && (group_select)) { - let super_parent = data.element.parent; - while (super_parent.parent instanceof Group && super_parent.selected) { - super_parent = super_parent.parent; + while (node_to_select.parent instanceof Group && node_to_select.selected) { + node_to_select = node_to_select.parent; } - super_parent.select().showInOutliner(); - } else { - data.element.parent.select().showInOutliner(); + } + node_to_select.select(); + if (settings.outliner_reveal_on_select.value) { + node_to_select.showInOutliner(); } } else if (!Animator.open) { diff --git a/lang/en.json b/lang/en.json index 7ab5c0df2..e4f22f5ee 100644 --- a/lang/en.json +++ b/lang/en.json @@ -983,6 +983,8 @@ "settings.double_click_switch_tools.desc": "Double click the viewport to switch between tools", "settings.highlight_cubes": "Highlight Elements", "settings.highlight_cubes.desc": "Highlight elements when you hover over them or select them", + "settings.outliner_reveal_on_select": "Reveal Elements on Select", + "settings.outliner_reveal_on_select.desc": "Reveal elements in the ouliner when selected", "settings.deactivate_size_limit": "Deactivate Size Limit", "settings.deactivate_size_limit.desc": "Deactivate the size limit for specific model formats. WARNING: This can cause invalid models.", "settings.modded_entity_integer_size": "Modded Entity Integer Size", @@ -991,8 +993,8 @@ "settings.allow_display_slot_mirror.desc": "Allow Display slots for Java item models to be mirrored. WARNING: This only works in Minecraft 1.14 or earlier or in special cases.", "settings.vertex_merge_distance": "Vertex Merge Distance", "settings.vertex_merge_distance.desc": "Distance within which vertices are merged using merging by distance", - "settings.preview_paste_behavior": "Default Preview Paste Behavior", - "settings.preview_paste_behavior.desc": "Select the behavior when pasting something into the preview in Edit mode and multiple options are available", + "settings.preview_paste_behavior": "Default Viewport Paste Behavior", + "settings.preview_paste_behavior.desc": "Select the behavior when pasting something into the viewport in Edit mode and multiple options are available", "settings.preview_paste_behavior.always_ask": "Always Ask", "settings.autouv": "Auto UV", From 3cc455c08790cc684e0ab6522cf522062ea4444a Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 11 Sep 2024 18:40:05 +0200 Subject: [PATCH 113/153] Fix onion skin "above" setting not working correctly before first changed --- js/texturing/uv.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/texturing/uv.js b/js/texturing/uv.js index e5862efe1..37581613a 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -332,7 +332,8 @@ const UVEditor = { } } } - canvas.classList.toggle('above', BarItems.image_onion_skin_view.value && Painter.image_onion_skin_view_options.above); + let is_above = BarItems.image_onion_skin_view.value && Painter.image_onion_skin_view_options.above; + canvas.classList.toggle('above', !!is_above); }, //Get get width() { From 5cedf21fcafa57393afc0f758aae33eec39445b7 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 11 Sep 2024 22:57:09 +0200 Subject: [PATCH 114/153] Prepare cullfaces for bedrock support Fix java block format scenes being shifted down 8 pixels --- css/panels.css | 1 + js/display_mode.js | 6 ++---- js/io/format.js | 3 ++- js/io/formats/java_block.js | 1 + js/modeling/transform.js | 7 ++++--- js/outliner/cube.js | 2 +- js/preview/preview.js | 1 - js/texturing/uv.js | 20 ++++++++++++++------ 8 files changed, 25 insertions(+), 16 deletions(-) diff --git a/css/panels.css b/css/panels.css index f9a4425a7..98f2b4a4d 100644 --- a/css/panels.css +++ b/css/panels.css @@ -2279,6 +2279,7 @@ span.controller_state_section_info { flex-grow: 1; flex-shrink: 1; width: 50px; + overflow: hidden; } .uv_face_properties_labels label > i { vertical-align: top; diff --git a/js/display_mode.js b/js/display_mode.js index 390bb150b..11868cfd4 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -1312,9 +1312,7 @@ enterDisplaySettings = function() { //Enterung Display Setting Mode, changes th scene.add(display_area); if (Project.model_3d) { Project.model_3d.position.copy(Canvas.scene.position); - if (Format.id == 'bedrock_block') { - Project.model_3d.position.y = -8; - } + Project.model_3d.position.y = -8; } scene.position.set(0, 0, 0); @@ -1336,7 +1334,7 @@ exitDisplaySettings = function() { //Enterung Display Setting Mode, changes the Canvas.global_light_side = 0; Canvas.updateShading(); scene.remove(display_area) - if (!Format.centered_grid) scene.position.set(-8, -8, -8); + if (!Format.centered_grid) scene.position.set(-8, 0, -8); display_base.children.forEachReverse(child => { display_base.remove(child); child.position.set(0, 0, 0); diff --git a/js/io/format.js b/js/io/format.js index 9e835e67b..5586464d0 100644 --- a/js/io/format.js +++ b/js/io/format.js @@ -65,7 +65,7 @@ class ModelFormat { scene.position.set(0, 0, 0); Canvas.ground_plane.position.x = Canvas.ground_plane.position.z = 8; } else { - scene.position.set(-8, -8, -8); + scene.position.set(-8, 0, -8); Canvas.ground_plane.position.x = Canvas.ground_plane.position.z = 0; } PreviewModel.getActiveModels().forEach(model => { @@ -281,6 +281,7 @@ new Property(ModelFormat, 'boolean', 'rotation_snap'); new Property(ModelFormat, 'boolean', 'uv_rotation'); new Property(ModelFormat, 'boolean', 'java_cube_shading_properties'); new Property(ModelFormat, 'boolean', 'java_face_properties'); +new Property(ModelFormat, 'boolean', 'cullfaces'); new Property(ModelFormat, 'boolean', 'select_texture_for_particles'); new Property(ModelFormat, 'boolean', 'texture_mcmeta'); new Property(ModelFormat, 'boolean', 'bone_binding_expression'); diff --git a/js/io/formats/java_block.js b/js/io/formats/java_block.js index 3277dfcbb..ddb836ff1 100644 --- a/js/io/formats/java_block.js +++ b/js/io/formats/java_block.js @@ -532,6 +532,7 @@ var format = new ModelFormat({ uv_rotation: true, java_cube_shading_properties: true, java_face_properties: true, + cullfaces: true, animated_textures: true, select_texture_for_particles: true, texture_mcmeta: true, diff --git a/js/modeling/transform.js b/js/modeling/transform.js index 2e6eeef71..ff928c1a2 100644 --- a/js/modeling/transform.js +++ b/js/modeling/transform.js @@ -19,7 +19,7 @@ function getSelectionCenter(all = false) { let center = (min[0] == Infinity) ? [0, 0, 0] : max.V3_add(min).V3_divide(2); if (!Format.centered_grid) { - center.V3_add(8, 8, 8) + center.V3_add(8, 0, 8) } return center; } @@ -1950,7 +1950,7 @@ BARS.defineActions(function() { }) new Action('auto_set_cullfaces', { icon: 'smart_button', - condition: () => Modes.edit && Format.java_face_properties, + condition: () => Modes.edit && Format.cullfaces, click() { if (!Cube.selected.length) { BarItems.select_all.click(); @@ -1977,7 +1977,8 @@ BARS.defineActions(function() { }); }) - Undo.finishEdit('Automatically set cullfaces') + updateSelection(); + Undo.finishEdit('Automatically set cullfaces'); } }) }) diff --git a/js/outliner/cube.js b/js/outliner/cube.js index 45afc7462..cc7719f31 100644 --- a/js/outliner/cube.js +++ b/js/outliner/cube.js @@ -619,7 +619,7 @@ class Cube extends OutlinerElement { vec.set(...coords.V3_subtract(this.origin)); vec.applyMatrix4( this.mesh.matrixWorld ); let arr = vec.toArray(); - arr.V3_add(8, 8, 8); + arr.V3_add(8, 0, 8); return arr; }) } diff --git a/js/preview/preview.js b/js/preview/preview.js index 3da210f67..0440bc039 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -1098,7 +1098,6 @@ class Preview { intersect.object.localToWorld(brush_coord); if (!Format.centered_grid) { brush_coord.x += 8; - brush_coord.y += 8; brush_coord.z += 8; } Canvas.brush_outline.position.copy(brush_coord); diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 37581613a..7a9818903 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -602,8 +602,10 @@ const UVEditor = { let face = UVEditor.getReferenceFace(); if (face instanceof CubeFace) { BarItems.uv_rotation.set((face && face.rotation)||0); - if (Format.java_face_properties) { + if (Format.cullfaces) { BarItems.cullface.set(face.cullface||'off') + } + if (Format.java_face_properties) { BarItems.face_tint.setIcon(face.tint !== -1 ? 'check_box' : 'check_box_outline_blank') BarItems.slider_face_tint.update() } @@ -1495,7 +1497,7 @@ const UVEditor = { }, new MenuSeparator('face_options'), 'face_tint', - {icon: 'flip_to_back', condition: () => (Format.java_face_properties && Cube.selected.length && UVEditor.getReferenceFace()), name: 'action.cullface' , children: function() { + {icon: 'flip_to_back', condition: () => (Format.cullfaces && Cube.selected.length && UVEditor.getReferenceFace()), name: 'action.cullface' , children: function() { let off = 'far.fa-circle'; let on = 'far.fa-dot-circle'; function setCullface(cullface) { @@ -1881,7 +1883,7 @@ BARS.defineActions(function() { }) new BarSelect('cullface', { category: 'uv', - condition: () => UVEditor.isFaceUV() && Format.java_face_properties && Cube.selected.length && UVEditor.getReferenceFace(), + condition: () => UVEditor.isFaceUV() && Format.cullfaces && Cube.selected.length && UVEditor.getReferenceFace(), label: true, options: { off: tl('uv_editor.no_faces'), @@ -1901,7 +1903,7 @@ BARS.defineActions(function() { new Action('auto_cullface', { icon: 'block', category: 'uv', - condition: () => UVEditor.isFaceUV() && Format.java_face_properties && Cube.selected.length && UVEditor.getReferenceFace(), + condition: () => UVEditor.isFaceUV() && Format.cullfaces && Cube.selected.length && UVEditor.getReferenceFace(), keybind: new Keybind({}, { all_faces: 'shift' }), @@ -2425,8 +2427,10 @@ Interface.definePanels(function() { UVEditor.updateSelectionOutline(false); }, centerView() { - this.$refs.viewport.scrollLeft = this.width/2; - this.$refs.viewport.scrollTop = this.height/2; + if (this.$refs.viewport) { + this.$refs.viewport.scrollLeft = this.width/2; + this.$refs.viewport.scrollTop = this.height/2; + } this.centered_view = true; }, setMode(mode) { @@ -4041,7 +4045,9 @@ Interface.definePanels(function() { ${tl('action.face_tint')} info + + + From adcbf80f830f04b3cfb982e358daf6a24885f61f Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 11 Sep 2024 23:11:10 +0200 Subject: [PATCH 115/153] Add reset vector option for sliders --- js/interface/actions.js | 19 +++++++++++++++++++ lang/en.json | 1 + 2 files changed, 20 insertions(+) diff --git a/js/interface/actions.js b/js/interface/actions.js index fb38cce53..ad59a328a 100644 --- a/js/interface/actions.js +++ b/js/interface/actions.js @@ -823,6 +823,25 @@ class NumSlider extends Widget { this.onAfter() } } + }, + { + id: 'round', + name: 'menu.slider.reset_vector', + icon: 'replay', + condition: this.slider_vector instanceof Array, + click: () => { + if (typeof this.onBefore === 'function') { + this.onBefore() + } + for (let slider of this.slider_vector) { + let value = slider.settings?.default ?? 0; + slider.change(n => value); + slider.update(); + } + if (typeof this.onAfter === 'function') { + this.onAfter() + } + } } ]).open(event); }); diff --git a/lang/en.json b/lang/en.json index e4f22f5ee..8884d477b 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1959,6 +1959,7 @@ "menu.options": "Options...", "menu.slider.round_value": "Round Value", + "menu.slider.reset_vector": "Reset Vector", "menu.file": "File", "menu.edit": "Edit", From 33c69927a4867584d22ada9b7affe9c5dee8863e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 11 Sep 2024 23:29:06 +0200 Subject: [PATCH 116/153] Fix selection system undo bug --- js/misc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/misc.js b/js/misc.js index 53e756f16..3f8dfa4cb 100644 --- a/js/misc.js +++ b/js/misc.js @@ -145,7 +145,7 @@ function updateSelection(options = {}) { } }) for (var i = Outliner.selected.length-1; i >= 0; i--) { - if (!selected.includes(Outliner.selected[i])) { + if (!Project.elements.includes(Outliner.selected[i])) { Outliner.selected.splice(i, 1) } } From 1db2c0e3ad09fd73c1c03d7c75d563ebefc10d22 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 12 Sep 2024 18:19:46 +0200 Subject: [PATCH 117/153] WIP blend transition curve --- js/animations/animation_controllers.js | 144 +++++++++++++++++++++++++ lang/en.json | 1 + 2 files changed, 145 insertions(+) diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 9f94f26b9..e4a430d8f 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -386,6 +386,146 @@ class AnimationControllerState { } }) } + editTransitionCurve() { + let duration = this.blend_transition; + if (this.blend_transition_curve) { + duration = Math.max(duration, ...Object.keys(this.blend_transition_curve).map(key => parseFloat(key))); + } + function copyGraph(input, duration = 1) { + if (typeof input != 'object') return {}; + let copy = {}; + for (let key in input) { + key = parseFloat(key) / duration; + copy[key] = parseFloat(input[key]); + } + } + let graph = copyGraph(this.blend_transition_curve, duration); + + let dialog = new Dialog('edit_state_transition_curve', { + title: 'animation_controllers.state.blend_transition_curve', + width: 460, + component: { + data() {return { + duration, + graph, + }}, + methods: { + change() { + let values = {}; + for (let key in this.graphs) { + let graph = this.graphs[key]; + if (graph.points.length === 2 && graph.points[0].allEqual(0) && graph.points[1].allEqual(1)) { + delete curves[key]; + } else { + let vectors = []; + values[key] = {}; + graph.points.forEach(point => { + vectors.push(new THREE.Vector2(point[0], point[1])); + }) + curves[key] = new THREE.SplineCurve(vectors); + } + } + }, + dragPoint(point, e1) { + let scope = this; + let {points} = this.graphs[this.graph]; + let original_point = point.slice(); + + function drag(e2) { + if (point == points[0] || point == points.last()) { + point[0] = point == points[0] ? 0 : 1; + } else { + point[0] = Math.clamp(original_point[0] + (e2.clientX - e1.clientX) / scope.width, 0, 1); + } + point[1] = Math.clamp(original_point[1] - (e2.clientY - e1.clientY) / scope.height, 0, 1); + scope.updateGraph(); + scope.change(); + } + function stop() { + removeEventListeners(document, 'mousemove touchmove', drag); + removeEventListeners(document, 'mouseup touchend', stop); + } + addEventListeners(document, 'mousemove touchmove', drag); + addEventListeners(document, 'mouseup touchend', stop); + }, + createNewPoint(event) { + if (event.target.id !== 'contrast_graph' || event.which == 3) return; + let point = [ + (event.offsetX - 5) / this.width, + 1 - ((event.offsetY - 5) / this.width), + ] + let {points} = this.graphs[this.graph]; + points.push(point); + this.updateGraph(); + this.change(); + this.dragPoint(point, event); + }, + updateGraph(id = this.graph) { + let offset = 5; + let {points} = this.graphs[this.graph]; + + points.sort((a, b) => a[0] - b[0]); + this.graphs[id].data = toCatmullRomBezier(points.map(p => { + return [p[0] * this.width + offset, (1-p[1]) * this.height + offset]; + })); + }, + contextMenu(point, event) { + let {points} = this.graphs[this.graph]; + if (point == points[0] || point == points.last()) return; + new Menu([{ + id: 'remove', + name: 'Remove', + icon: 'clear', + click: () => { + let {points} = this.graphs[this.graph]; + points.remove(point); + this.updateGraph(); + this.change(); + } + }]).open(event.target); + } + }, + template: ` +
    +
    + + + + + + + + +
    +
    +
    + + +
    +
    + `, + mounted() { + for (let key in this.graphs) { + this.updateGraph(key); + } + this.light_data = `${5},${this.height + 5}`; + for (let key in light_points) { + this.light_data += ` ${Math.round((key / 255) * this.width) + 5},${Math.round((1 - light_points[key] / highest_light_point) * this.height) + 5}`; + } + this.light_data += ` ${this.width + 5},${this.height + 5}`; + + } + }, + onConfirm() { + } + }); + dialog.show(); + } openMenu(event) { AnimationControllerState.prototype.menu.open(event, this); } @@ -402,6 +542,7 @@ new Property(AnimationControllerState, 'array', 'particles'); new Property(AnimationControllerState, 'string', 'on_entry'); new Property(AnimationControllerState, 'string', 'on_exit'); new Property(AnimationControllerState, 'number', 'blend_transition'); +new Property(AnimationControllerState, 'object', 'blend_transition_curve'); new Property(AnimationControllerState, 'boolean', 'blend_via_shortest_path'); AnimationControllerState.prototype.menu = new Menu([ { @@ -1749,6 +1890,9 @@ Interface.definePanels(() => {
    +
    + +
    diff --git a/lang/en.json b/lang/en.json index 8884d477b..39b6ba830 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1948,6 +1948,7 @@ "animation_controllers.state.transitions": "Transitions", "animation_controllers.state.condition": "Condition", "animation_controllers.state.blend_transition": "Blend Time", + "animation_controllers.state.blend_transition_curve": "Blend Transition Curve", "animation_controllers.state.shortest_path": "Blend by Shortest Path", "animation_controllers.state.edit_transition": "Edit Transition", From d2615c8ff76d76a13e6c112e77024da14d0d434a Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 12 Sep 2024 21:46:38 +0200 Subject: [PATCH 118/153] WIP blend transition curves --- css/dialogs.css | 91 ++++++++++++ js/animations/animation_controllers.js | 198 ++++++++++++++++--------- js/animations/animation_mode.js | 1 + 3 files changed, 216 insertions(+), 74 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 9e994cfe8..4835d887e 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -2096,6 +2096,97 @@ text-align: right; direction: rtl; } +/* Animation Controller curves */ + + dialog#blend_transition_edit .blend_transition_graph_wrapper { + margin-top: 6px; + margin-bottom: 10px; + display: flex; + } + #blend_transition_graph { + background-color: var(--color-back); + border: 1px solid var(--color-border); + height: 412px; + width: 412px; + position: relative; + overflow: hidden; + cursor: crosshair; + } + .blend_transition_graph_selector { + clear: both; + display: flex; + } + .blend_transition_graph_selector > div { + flex-basis: 0; + flex-grow: 1; + padding-top: 2px; + text-align: center; + cursor: pointer; + } + .blend_transition_graph_selector > div:hover { + color: var(--color-light); + } + .blend_transition_graph_selector > div.selected { + background-color: var(--color-accent); + color: var(--color-accent_text); + } + #blend_transition_graph svg { + height: 100%; + width: 100%; + pointer-events: none; + } + #blend_transition_graph svg path { + fill: none; + stroke-width: 2px; + stroke: var(--color-accent); + opacity: 0.3; + } + #blend_transition_graph svg path.active { + opacity: 1.0; + } + #blend_transition_graph svg polygon { + fill: var(--color-selected); + stroke: none; + stroke-width: 0; + pointer-events: none; + } + .blend_transition_graph_point { + position: absolute; + width: 11px; + height: 11px; + background-color: var(--color-accent); + margin: -1px; + transform: rotate(45deg); + transform-origin: center; + } + .blend_transition_graph_point:hover { + background-color: var(--color-light); + } + .blend_transition_graph_point::before { + content: ""; + position: absolute; + width: 24px; + height: 24px; + left: -6px; + top: -6px; + cursor: move; + } + .blend_transition_preview { + width: 12px; + height: auto; + position: relative; + background-color: var(--color-back); + margin-left: 5px; + } + .blend_transition_preview > div { + background-color: var(--color-accent); + position: absolute; + height: calc(var(--percentage) * 1%); + width: 100%; + bottom: 0; + left: 0; + right: 0; + } /* Texture Edit */ div.texture_adjust_previews { diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index e4a430d8f..9746f9626 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -386,60 +386,92 @@ class AnimationControllerState { } }) } + calculateBlendValue(blend_progress) { + if (!this.blend_transition_curve || Object.keys(this.blend_transition_curve).length < 2) { + return blend_progress; + } + let time = blend_progress; + let keys = Object.keys(this.blend_transition_curve); + let values = keys.map(key => this.blend_transition_curve[key]); + let times = keys.map(v => parseFloat(v)); + let prev_time = -Infinity, prev = null; + let next_time = Infinity, next = null; + let i = 0; + for (let t of times) { + if (t <= time && t > prev_time) { + prev = i; prev_time = t; + } + if (t >= time && t < next_time) { + next = i; next_time = t; + } + i++; + } + let two_point_blend = Math.getLerp(prev_time, next_time, time); + return Math.lerp(prev, next, two_point_blend); + } editTransitionCurve() { + let state = this; let duration = this.blend_transition; if (this.blend_transition_curve) { duration = Math.max(duration, ...Object.keys(this.blend_transition_curve).map(key => parseFloat(key))); } - function copyGraph(input, duration = 1) { + /*function copyGraph(input, duration = 1) { if (typeof input != 'object') return {}; let copy = {}; for (let key in input) { key = parseFloat(key) / duration; copy[key] = parseFloat(input[key]); } + }*/ + //let graph = copyGraph(this.blend_transition_curve, duration); + let points = []; + for (let key in state.blend_transition_curve) { + key = parseFloat(key) / duration; + points.push({ + uuid: guid(), + time: key, + value: input[key] + }) } - let graph = copyGraph(this.blend_transition_curve, duration); - let dialog = new Dialog('edit_state_transition_curve', { + let preview_loop = setInterval(() => { + dialog.content_vue.preview(); + }, 1000 / 60); + let preview_loop_start_time = Date.now(); + + let dialog = new Dialog('blend_transition_edit', { title: 'animation_controllers.state.blend_transition_curve', - width: 460, + width: 452, + form: { + duration: { + label: 'animation_controllers.state.blend_transition', + value: duration, + type: 'number', + } + }, component: { data() {return { duration, - graph, + points, + graph_data: '', + preview_value: 0, + width: Math.min(380, window.innerWidth - 42), + height: 220 }}, methods: { - change() { - let values = {}; - for (let key in this.graphs) { - let graph = this.graphs[key]; - if (graph.points.length === 2 && graph.points[0].allEqual(0) && graph.points[1].allEqual(1)) { - delete curves[key]; - } else { - let vectors = []; - values[key] = {}; - graph.points.forEach(point => { - vectors.push(new THREE.Vector2(point[0], point[1])); - }) - curves[key] = new THREE.SplineCurve(vectors); - } - } - }, dragPoint(point, e1) { let scope = this; - let {points} = this.graphs[this.graph]; - let original_point = point.slice(); + let original_time = point.time; + let original_value = point.value; function drag(e2) { - if (point == points[0] || point == points.last()) { - point[0] = point == points[0] ? 0 : 1; - } else { - point[0] = Math.clamp(original_point[0] + (e2.clientX - e1.clientX) / scope.width, 0, 1); - } - point[1] = Math.clamp(original_point[1] - (e2.clientY - e1.clientY) / scope.height, 0, 1); + point.time = original_time + (e2.clientX - e1.clientX) / this.width; + point.value = original_value + (e2.clientY - e1.clientY) / this.height; + point.time = Math.clamp(point.time, 0, 1); + point.value = Math.clamp(point.value, 0, 1); + console.log(point) + scope.updateGraph(); - scope.change(); } function stop() { removeEventListeners(document, 'mousemove touchmove', drag); @@ -449,79 +481,97 @@ class AnimationControllerState { addEventListeners(document, 'mouseup touchend', stop); }, createNewPoint(event) { - if (event.target.id !== 'contrast_graph' || event.which == 3) return; - let point = [ - (event.offsetX - 5) / this.width, - 1 - ((event.offsetY - 5) / this.width), - ] - let {points} = this.graphs[this.graph]; - points.push(point); + console.log('add') + if (event.target.id !== 'blend_transition_graph' || event.which == 3) return; + let point = { + uuid: guid, + time: (event.offsetX - 5) / this.width, + value: 1 - ((event.offsetY - 5) / this.height), + } + console.log(point); + this.points.push(point); this.updateGraph(); - this.change(); this.dragPoint(point, event); }, - updateGraph(id = this.graph) { + updateGraph() { let offset = 5; - let {points} = this.graphs[this.graph]; - points.sort((a, b) => a[0] - b[0]); - this.graphs[id].data = toCatmullRomBezier(points.map(p => { - return [p[0] * this.width + offset, (1-p[1]) * this.height + offset]; - })); + this.points.sort((a, b) => a.time - b.time); + let graph_data = ''//`M${offset} ${this.height + offset} `; + for (let point of this.points) { + console.log(point.time) + graph_data += `${graph_data ? 'L' : 'M'}${point.time * this.width + offset} ${(1-point.value) * this.height + offset} `; + } + this.graph_data = graph_data; }, contextMenu(point, event) { - let {points} = this.graphs[this.graph]; - if (point == points[0] || point == points.last()) return; + let points = this.points; new Menu([{ id: 'remove', - name: 'Remove', + name: 'generic.remove', icon: 'clear', click: () => { - let {points} = this.graphs[this.graph]; points.remove(point); this.updateGraph(); - this.change(); } }]).open(event.target); + }, + preview() { + if (this.points.length == 0) return 0; + let time = (((Date.now() - preview_loop_start_time) / 1000) / this.duration) % 1; + let prev_time = -Infinity, prev = 0; + let next_time = Infinity, next = 0; + for (let pt of points) { + if (pt.time <= time && pt.time > prev_time) { + prev = pt; prev_time = pt.time; + } + if (pt.time >= time && pt.time < next_time) { + next = pt; next_time = pt.time; + } + } + if (!prev) return next.value; + if (!next) return prev.value; + let two_point_blend = Math.getLerp(prev_time, next_time, time); + this.preview_value = Math.lerp(prev.value, next.value, two_point_blend); + if (Math.random() < 0.06) console.log(prev_time, prev, next_time, next, this.preview_value); } }, template: ` -
    -
    - - - - - - - +
    +
    + + + -
    -
    - - +
    +
    `, mounted() { - for (let key in this.graphs) { - this.updateGraph(key); - } - this.light_data = `${5},${this.height + 5}`; - for (let key in light_points) { - this.light_data += ` ${Math.round((key / 255) * this.width) + 5},${Math.round((1 - light_points[key] / highest_light_point) * this.height) + 5}`; - } - this.light_data += ` ${this.width + 5},${this.height + 5}`; - + this.updateGraph(); } }, + onFormChange(result) { + this.content_vue.duration = result.duration; + }, onConfirm() { + Undo.initEdit({animation_controller_state: state}); + state.blend_transition_curve = {}; + for (let point of points) { + state.blend_transition_curve[point.time] = point.value; + } + Undo.finishEdit('Change blend transition curve'); } }); dialog.show(); @@ -1891,7 +1941,7 @@ Interface.definePanels(() => {
    - +
    diff --git a/js/animations/animation_mode.js b/js/animations/animation_mode.js index 19971369a..3f5359d2e 100644 --- a/js/animations/animation_mode.js +++ b/js/animations/animation_mode.js @@ -318,6 +318,7 @@ const Animator = { let {selected_state, last_state} = controller; let state_time = selected_state.getStateTime(); let blend_progress = (last_state && last_state.blend_transition) ? Math.clamp(state_time / last_state.blend_transition, 0, 1) : 1; + let blend_value = last_state?.calculateBlendValue(blend_progress) ?? blend_progress; // Active State Timeline.time = state_time; From 51632d9a6d1ecac5acee42abd207b3eb3c756a2d Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 12 Sep 2024 23:53:43 +0200 Subject: [PATCH 119/153] Implement blend transition curves --- css/dialogs.css | 34 +------- js/animations/animation_controllers.js | 107 ++++++++++++++++--------- js/animations/animation_mode.js | 7 +- 3 files changed, 73 insertions(+), 75 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 4835d887e..76ccbd0ac 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -2106,30 +2106,10 @@ #blend_transition_graph { background-color: var(--color-back); border: 1px solid var(--color-border); - height: 412px; - width: 412px; position: relative; overflow: hidden; cursor: crosshair; } - .blend_transition_graph_selector { - clear: both; - display: flex; - } - .blend_transition_graph_selector > div { - flex-basis: 0; - flex-grow: 1; - padding-top: 2px; - text-align: center; - cursor: pointer; - } - .blend_transition_graph_selector > div:hover { - color: var(--color-light); - } - .blend_transition_graph_selector > div.selected { - background-color: var(--color-accent); - color: var(--color-accent_text); - } #blend_transition_graph svg { height: 100%; width: 100%; @@ -2139,16 +2119,6 @@ fill: none; stroke-width: 2px; stroke: var(--color-accent); - opacity: 0.3; - } - #blend_transition_graph svg path.active { - opacity: 1.0; - } - #blend_transition_graph svg polygon { - fill: var(--color-selected); - stroke: none; - stroke-width: 0; - pointer-events: none; } .blend_transition_graph_point { position: absolute; @@ -2176,12 +2146,12 @@ height: auto; position: relative; background-color: var(--color-back); - margin-left: 5px; + margin-left: 8px; } .blend_transition_preview > div { background-color: var(--color-accent); position: absolute; - height: calc(var(--percentage) * 1%); + height: calc(var(--progress) * 100%); width: 100%; bottom: 0; left: 0; diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 9746f9626..965978afc 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -32,6 +32,12 @@ class AnimationControllerState { if (AnimationControllerState.properties[key].type == 'array') continue; AnimationControllerState.properties[key].merge(this, data) } + if (typeof data.blend_transition_curve == 'object') { + this.blend_transition_curve = {}; + for (let key in data.blend_transition_curve) { + this.blend_transition_curve[key] = data.blend_transition_curve[key]; + } + } if (data.animations instanceof Array) { this.animations.empty(); data.animations.forEach(a => { @@ -127,6 +133,14 @@ class AnimationControllerState { this.sounds.push(sound); }) } + if (typeof data.blend_transition == 'object') { + this.blend_transition_curve = {}; + this.blend_transition = Math.max(...Object.keys(data.blend_transition).map(time => parseFloat(time))); + for (let key in data.blend_transition) { + let timecode = parseFloat(key) / this.blend_transition; + this.blend_transition_curve[timecode] = data.blend_transition[key]; + } + } } getUndoCopy() { var copy = { @@ -183,6 +197,18 @@ class AnimationControllerState { }) } if (this.blend_transition) object.blend_transition = this.blend_transition; + let curve_keys = this.blend_transition_curve && Object.keys(this.blend_transition_curve); + if (curve_keys?.length) { + let curve_output = {}; + let points = curve_keys.map(key => ({time: parseFloat(key), value: this.blend_transition_curve[key]})); + points.sort((a, b) => a.time - b.time); + for (let point of points) { + let timecode = trimFloatNumber(point.time * this.blend_transition, 4).toString(); + if (!timecode.includes('.')) timecode += '.0'; + curve_output[timecode] = Math.roundTo(point.value, 6); + } + object.blend_transition = curve_output; + } if (this.blend_via_shortest_path) object.blend_via_shortest_path = this.blend_via_shortest_path; Blockbench.dispatchEvent('compile_bedrock_animation_controller_state', {state: this, json: object}); return object; @@ -406,33 +432,27 @@ class AnimationControllerState { } i++; } - let two_point_blend = Math.getLerp(prev_time, next_time, time); - return Math.lerp(prev, next, two_point_blend); + if (prev === null) return 1 - values[next]; + if (next === null || prev == next) return 1 - values[prev]; + let two_point_blend = Math.getLerp(prev_time, next_time, time) || 0; + return 1 - Math.lerp(values[prev], values[next], two_point_blend); } editTransitionCurve() { let state = this; let duration = this.blend_transition; - if (this.blend_transition_curve) { - duration = Math.max(duration, ...Object.keys(this.blend_transition_curve).map(key => parseFloat(key))); - } - /*function copyGraph(input, duration = 1) { - if (typeof input != 'object') return {}; - let copy = {}; - for (let key in input) { - key = parseFloat(key) / duration; - copy[key] = parseFloat(input[key]); - } - }*/ - //let graph = copyGraph(this.blend_transition_curve, duration); let points = []; - for (let key in state.blend_transition_curve) { - key = parseFloat(key) / duration; + for (let key in this.blend_transition_curve) { + key = parseFloat(key); points.push({ uuid: guid(), time: key, - value: input[key] + value: this.blend_transition_curve[key] }) } + if (!points.length) { + points.push({time: 0, value: 1, uuid: guid()}); + points.push({time: 1, value: 0, uuid: guid()}); + } let preview_loop = setInterval(() => { dialog.content_vue.preview(); @@ -441,11 +461,13 @@ class AnimationControllerState { let dialog = new Dialog('blend_transition_edit', { title: 'animation_controllers.state.blend_transition_curve', - width: 452, + width: 418, form: { duration: { label: 'animation_controllers.state.blend_transition', value: duration, + min: 0.05, + step: 0.05, type: 'number', } }, @@ -455,7 +477,7 @@ class AnimationControllerState { points, graph_data: '', preview_value: 0, - width: Math.min(380, window.innerWidth - 42), + width: Math.min(340, window.innerWidth - 42), height: 220 }}, methods: { @@ -464,46 +486,34 @@ class AnimationControllerState { let original_time = point.time; let original_value = point.value; - function drag(e2) { + let drag = (e2) => { point.time = original_time + (e2.clientX - e1.clientX) / this.width; - point.value = original_value + (e2.clientY - e1.clientY) / this.height; + point.value = original_value - (e2.clientY - e1.clientY) / this.height; point.time = Math.clamp(point.time, 0, 1); point.value = Math.clamp(point.value, 0, 1); - console.log(point) + Blockbench.setCursorTooltip(`${Math.roundTo(point.time * this.duration, 4)} x ${Math.roundTo(point.time, 4)}`); scope.updateGraph(); } - function stop() { + let stop = () => { removeEventListeners(document, 'mousemove touchmove', drag); removeEventListeners(document, 'mouseup touchend', stop); + Blockbench.setCursorTooltip(); } addEventListeners(document, 'mousemove touchmove', drag); addEventListeners(document, 'mouseup touchend', stop); }, createNewPoint(event) { - console.log('add') if (event.target.id !== 'blend_transition_graph' || event.which == 3) return; let point = { uuid: guid, time: (event.offsetX - 5) / this.width, value: 1 - ((event.offsetY - 5) / this.height), } - console.log(point); this.points.push(point); this.updateGraph(); this.dragPoint(point, event); }, - updateGraph() { - let offset = 5; - - this.points.sort((a, b) => a.time - b.time); - let graph_data = ''//`M${offset} ${this.height + offset} `; - for (let point of this.points) { - console.log(point.time) - graph_data += `${graph_data ? 'L' : 'M'}${point.time * this.width + offset} ${(1-point.value) * this.height + offset} `; - } - this.graph_data = graph_data; - }, contextMenu(point, event) { let points = this.points; new Menu([{ @@ -516,6 +526,20 @@ class AnimationControllerState { } }]).open(event.target); }, + updateGraph() { + if (!this.points.length) { + this.graph_data = ''; + return; + } + let offset = 5; + this.points.sort((a, b) => a.time - b.time); + let graph_data = `M${0} ${(1-this.points[0].value) * this.height + offset} `; + for (let point of this.points) { + graph_data += `${graph_data ? 'L' : 'M'}${point.time * this.width + offset} ${(1-point.value) * this.height + offset} `; + } + graph_data += `L${this.width + 10} ${(1-points.last().value) * this.height + offset} `; + this.graph_data = graph_data; + }, preview() { if (this.points.length == 0) return 0; let time = (((Date.now() - preview_loop_start_time) / 1000) / this.duration) % 1; @@ -533,7 +557,6 @@ class AnimationControllerState { if (!next) return prev.value; let two_point_blend = Math.getLerp(prev_time, next_time, time); this.preview_value = Math.lerp(prev.value, next.value, two_point_blend); - if (Math.random() < 0.06) console.log(prev_time, prev, next_time, next, this.preview_value); } }, template: ` @@ -541,7 +564,7 @@ class AnimationControllerState {
    + @@ -553,7 +576,7 @@ class AnimationControllerState { @contextmenu="contextMenu(point, $event)" >
    -
    +
    @@ -566,12 +589,16 @@ class AnimationControllerState { this.content_vue.duration = result.duration; }, onConfirm() { + clearInterval(preview_loop); Undo.initEdit({animation_controller_state: state}); state.blend_transition_curve = {}; for (let point of points) { - state.blend_transition_curve[point.time] = point.value; + state.blend_transition_curve[Math.clamp(point.time, 0, 1)] = point.value; } Undo.finishEdit('Change blend transition curve'); + }, + onCancel() { + clearInterval(preview_loop); } }); dialog.show(); diff --git a/js/animations/animation_mode.js b/js/animations/animation_mode.js index 3f5359d2e..0b41c5825 100644 --- a/js/animations/animation_mode.js +++ b/js/animations/animation_mode.js @@ -319,6 +319,7 @@ const Animator = { let state_time = selected_state.getStateTime(); let blend_progress = (last_state && last_state.blend_transition) ? Math.clamp(state_time / last_state.blend_transition, 0, 1) : 1; let blend_value = last_state?.calculateBlendValue(blend_progress) ?? blend_progress; + console.log(blend_progress, blend_value) // Active State Timeline.time = state_time; @@ -329,13 +330,13 @@ const Animator = { let animation = Animation.all.find(anim => a.animation == anim.uuid); if (!animation) return; let user_blend_value = a.blend_value.trim() ? Animator.MolangParser.parse(a.blend_value) : 1; - controller_blend_values[animation.uuid] = user_blend_value * blend_progress; + controller_blend_values[animation.uuid] = user_blend_value * blend_value; animations_to_play.push(animation); }) Animator.stackAnimations(animations_to_play, in_loop, controller_blend_values); // Last State - if (blend_progress < 1 && last_state) { + if (blend_value < 1 && last_state) { Timeline.time = last_state.getStateTime(); controller_blend_values = {}; animations_to_play = []; @@ -345,7 +346,7 @@ const Animator = { if (!animation) return; let user_blend_value = a.blend_value.trim() ? Animator.MolangParser.parse(a.blend_value) : 1; if (!controller_blend_values[animation.uuid]) controller_blend_values[animation.uuid] = 0; - controller_blend_values[animation.uuid] += user_blend_value * (1-blend_progress); + controller_blend_values[animation.uuid] += user_blend_value * (1-blend_value); animations_to_play.push(animation); }) Animator.stackAnimations(animations_to_play, in_loop, controller_blend_values); From 79a7a74f6e3320e0b7bd1fe2eda2cd03e4d42356 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 12 Sep 2024 23:57:59 +0200 Subject: [PATCH 120/153] Implement query.state_time --- js/animations/animation_mode.js | 1 - js/animations/molang.js | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/js/animations/animation_mode.js b/js/animations/animation_mode.js index 0b41c5825..8e619a790 100644 --- a/js/animations/animation_mode.js +++ b/js/animations/animation_mode.js @@ -319,7 +319,6 @@ const Animator = { let state_time = selected_state.getStateTime(); let blend_progress = (last_state && last_state.blend_transition) ? Math.clamp(state_time / last_state.blend_transition, 0, 1) : 1; let blend_value = last_state?.calculateBlendValue(blend_progress) ?? blend_progress; - console.log(blend_progress, blend_value) // Active State Timeline.time = state_time; diff --git a/js/animations/molang.js b/js/animations/molang.js index c3895482d..f2fe6e89c 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -30,6 +30,12 @@ Animator.MolangParser.global_variables = { } return 0 }, + get 'query.state_time'() { + if (AnimationController.selected?.selected_state) { + AnimationController.selected.selected_state.getStateTime(); + } + return Timeline.time + }, get 'query.any_animation_finished'() { if (AnimationController.selected?.selected_state) { let state = AnimationController.selected?.selected_state @@ -774,6 +780,9 @@ function sortAutocompleteResults(results, incomplete) { .addQuery({ id: 'life_time', }) + .addQuery({ + id: 'state_time', + }) .addQuery({ id: 'yaw_speed', }) From 4dece62de7c95742e44b223ba65e80d732fe85d1 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 13:09:07 +0200 Subject: [PATCH 121/153] Fix texture selection affecting additional pixel in corners --- js/texturing/painter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/texturing/painter.js b/js/texturing/painter.js index bc1be6d0b..171dbf00b 100644 --- a/js/texturing/painter.js +++ b/js/texturing/painter.js @@ -1999,7 +1999,7 @@ class IntMatrix { } if (can_exp_h && y + i >= this.height) can_exp_h = false; if (can_exp_h) { - for (let j = 0; j < h; j++) { + for (let j = 0; j < w; j++) { if (this.getDirect(x+j, y+i) != 1) { can_exp_h = false; break; From 849446821ea30aa470fb7e731c733ebc856994c4 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 15:45:58 +0200 Subject: [PATCH 122/153] Fix texture dragging on mobile Fix texture generator progress bar staying open when no elements selected --- js/texturing/texture_generator.js | 3 +- js/texturing/textures.js | 74 +++++++++++++++++-------------- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index 40c8bbf71..4209eebd3 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -837,7 +837,8 @@ const TextureGenerator = { }) if (face_list.length == 0 && box_uv_templates.length == 0) { - Blockbench.showMessage('message.no_valid_elements', 'center') + progress_dialog.close(); + Blockbench.showMessage('message.no_valid_elements', 'center'); return; } diff --git a/js/texturing/textures.js b/js/texturing/textures.js index f7e57e7cd..2661dc47a 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2378,6 +2378,14 @@ Interface.definePanels(function() { } } let scrollIntervalID; + function isUnderCursor(node, event) { + if (!node) return; + let rect = node.getBoundingClientRect(); + return pointInRectangle([event.clientX, event.clientY], [rect.x, rect.y], [rect.right, rect.bottom]); + } + function findUnderCursor(selector, event) { + return document.querySelectorAll(selector).entries().map(([i, node]) => node).find(node => isUnderCursor(node, event)); + } function move(e2) { convertTouchEvent(e2); @@ -2423,24 +2431,30 @@ Interface.definePanels(function() { $('.drag_hover').removeClass('drag_hover'); $('.texture[order]').attr('order', null) - let target = $('#cubes_list li.outliner_node:hover').last(); - if (target.length) { - target.addClass('drag_hover').attr('order', '0'); - return; - } - target = document.querySelector('#texture_list li.texture:hover'); - if (target) { - let offset = e2.clientY - $(target).offset().top; - target.setAttribute('order', offset > 24 ? '1' : '-1'); - return; - } - target = document.querySelector('#texture_list .texture_group_head:hover'); - if (target) { - target.classList.add('drag_hover'); - target.setAttribute('order', '0'); - return; + if (isUnderCursor(document.getElementById('cubes_list'), e2)) { + for (let node of document.querySelectorAll('li.outliner_node')) { + if (isUnderCursor(node, e2)) { + node.classList.add('drag_hover'); + node.setAttribute('order', '0'); + return; + } + } } - if (document.querySelector('#texture_list:hover')) { + if (isUnderCursor(document.querySelector('#texture_list'), e2)) { + + let texture_target = findUnderCursor('#texture_list li.texture', e2); + if (texture_target) { + let offset = e2.clientY - $(texture_target).offset().top; + texture_target.setAttribute('order', offset > 24 ? '1' : '-1'); + return; + } + let group_target = findUnderCursor('#texture_list .texture_group_head', e2); + if (group_target) { + group_target.classList.add('drag_hover'); + group_target.setAttribute('order', '0'); + return; + } + let nodes = document.querySelectorAll('#texture_list > li'); if (nodes.length) { let target = nodes[nodes.length-1]; @@ -2451,6 +2465,7 @@ Interface.definePanels(function() { last_event = e2; } async function off(e2) { + convertTouchEvent(e2); if (helper) helper.remove(); clearInterval(scrollIntervalID); removeEventListeners(document, 'mousemove touchmove', move); @@ -2470,7 +2485,8 @@ Interface.definePanels(function() { Blockbench.removeFlag('dragging_textures'); - if ($('.preview:hover').length > 0) { + + if (isUnderCursor(Interface.preview, e2)) { var data = Canvas.raycast(e2) if (data.element && data.face) { var elements = data.element.selected ? UVEditor.getMappableElements() : [data.element]; @@ -2496,10 +2512,11 @@ Interface.definePanels(function() { } Undo.finishEdit('Apply texture') } - } else if ($('#texture_list:hover').length > 0) { + } else if (isUnderCursor(document.getElementById('texture_list'), e2)) { + let index = Texture.all.length-1; - let texture_node = document.querySelector('#texture_list li.texture:hover'); - let target_group_head = document.querySelector('#texture_list .texture_group_head:hover'); + let texture_node = findUnderCursor('#texture_list li.texture', e2); + let target_group_head = findUnderCursor('#texture_list .texture_group_head', e2); let new_group = ''; if (target_group_head) { new_group = target_group_head.parentNode.id; @@ -2554,18 +2571,9 @@ Interface.definePanels(function() { Undo.finishEdit('Apply texture'); UVEditor.loadData(); - } else if ($('#uv_viewport:hover').length) { + } else if (isUnderCursor(document.getElementById('uv_viewport'), e2)) { UVEditor.applyTexture(texture); } - - - /*convertTouchEvent(e2); - let target = document.elementFromPoint(e2.clientX, e2.clientY); - [drop_target] = eventTargetToNode(target); - if (drop_target) { - moveOutlinerSelectionTo(item, drop_target, e2, order); - } else if ($('#texture_list').is(':hover')) { - moveOutlinerSelectionTo(item, undefined, e2);*/ } if (Blockbench.isTouch) { @@ -2787,7 +2795,7 @@ Interface.definePanels(function() { $('.drag_hover').removeClass('drag_hover'); $('.texture_group[order]').attr('order', null); - let target = document.querySelector('#texture_list .texture_group:hover'); + let target = findUnderCursor('#texture_list .texture_group', e2); if (target) { target.classList.add('drag_hover'); let offset = e2.clientY - $(target).offset().top; @@ -2795,7 +2803,7 @@ Interface.definePanels(function() { target.setAttribute('order', order.toString()); texture_group_target_node = target; - } else if (document.querySelector('#texture_list:hover')) { + } else if (isUnderCursor(document.querySelector('#texture_list'))) { let nodes = document.querySelectorAll('#texture_list > li.texture_group'); if (nodes.length) { let target = nodes[nodes.length-1]; From 8994cc637bf1076c88b46fbb43e7bb71851aea00 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 15:51:46 +0200 Subject: [PATCH 123/153] Different name and icons for beta web app --- css/panels.css | 1 + icons/favicon_beta.png | Bin 0 -> 17876 bytes icons/icon_maskable_beta.png | Bin 0 -> 23471 bytes manifest-beta.webmanifest | 37 +++++++++++++++++++++++++++++++++++ package.json | 1 + scripts/enable_beta.js | 11 +++++++++++ scripts/rename_ia32.js | 12 ------------ 7 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 icons/favicon_beta.png create mode 100644 icons/icon_maskable_beta.png create mode 100644 manifest-beta.webmanifest create mode 100644 scripts/enable_beta.js delete mode 100644 scripts/rename_ia32.js diff --git a/css/panels.css b/css/panels.css index 98f2b4a4d..70ca667fc 100644 --- a/css/panels.css +++ b/css/panels.css @@ -626,6 +626,7 @@ flex-shrink: 0; overflow: hidden; position: relative; + pointer-events: none; } .texture.selected img.texture_icon { margin-top: 0; diff --git a/icons/favicon_beta.png b/icons/favicon_beta.png new file mode 100644 index 0000000000000000000000000000000000000000..dcbded9c38e848413cf5fce7a7f557a4cd039d74 GIT binary patch literal 17876 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 DmT^Uw literal 0 HcmV?d00001 diff --git a/icons/icon_maskable_beta.png b/icons/icon_maskable_beta.png new file mode 100644 index 0000000000000000000000000000000000000000..5e96dc7615a207051e787731605d07b55df53484 GIT binary patch literal 23471 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 Date: Fri, 13 Sep 2024 19:29:21 +0200 Subject: [PATCH 124/153] Fix texture dragging issues --- js/texturing/textures.js | 39 ++++++++++++++++----------------------- js/util/util.js | 11 +++++++++++ 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/js/texturing/textures.js b/js/texturing/textures.js index 2661dc47a..c81b71036 100644 --- a/js/texturing/textures.js +++ b/js/texturing/textures.js @@ -2378,14 +2378,6 @@ Interface.definePanels(function() { } } let scrollIntervalID; - function isUnderCursor(node, event) { - if (!node) return; - let rect = node.getBoundingClientRect(); - return pointInRectangle([event.clientX, event.clientY], [rect.x, rect.y], [rect.right, rect.bottom]); - } - function findUnderCursor(selector, event) { - return document.querySelectorAll(selector).entries().map(([i, node]) => node).find(node => isUnderCursor(node, event)); - } function move(e2) { convertTouchEvent(e2); @@ -2431,24 +2423,25 @@ Interface.definePanels(function() { $('.drag_hover').removeClass('drag_hover'); $('.texture[order]').attr('order', null) - if (isUnderCursor(document.getElementById('cubes_list'), e2)) { - for (let node of document.querySelectorAll('li.outliner_node')) { - if (isUnderCursor(node, e2)) { - node.classList.add('drag_hover'); - node.setAttribute('order', '0'); + if (isNodeUnderCursor(document.getElementById('cubes_list'), e2)) { + for (let node of document.querySelectorAll('.outliner_object')) { + if (isNodeUnderCursor(node, e2)) { + let parent = node.parentNode; + parent.classList.add('drag_hover'); + parent.setAttribute('order', '0'); return; } } } - if (isUnderCursor(document.querySelector('#texture_list'), e2)) { + if (isNodeUnderCursor(document.querySelector('#texture_list'), e2)) { - let texture_target = findUnderCursor('#texture_list li.texture', e2); + let texture_target = findNodeUnderCursor('#texture_list li.texture', e2); if (texture_target) { let offset = e2.clientY - $(texture_target).offset().top; texture_target.setAttribute('order', offset > 24 ? '1' : '-1'); return; } - let group_target = findUnderCursor('#texture_list .texture_group_head', e2); + let group_target = findNodeUnderCursor('#texture_list .texture_group_head', e2); if (group_target) { group_target.classList.add('drag_hover'); group_target.setAttribute('order', '0'); @@ -2486,7 +2479,7 @@ Interface.definePanels(function() { Blockbench.removeFlag('dragging_textures'); - if (isUnderCursor(Interface.preview, e2)) { + if (isNodeUnderCursor(Interface.preview, e2)) { var data = Canvas.raycast(e2) if (data.element && data.face) { var elements = data.element.selected ? UVEditor.getMappableElements() : [data.element]; @@ -2512,11 +2505,11 @@ Interface.definePanels(function() { } Undo.finishEdit('Apply texture') } - } else if (isUnderCursor(document.getElementById('texture_list'), e2)) { + } else if (isNodeUnderCursor(document.getElementById('texture_list'), e2)) { let index = Texture.all.length-1; - let texture_node = findUnderCursor('#texture_list li.texture', e2); - let target_group_head = findUnderCursor('#texture_list .texture_group_head', e2); + let texture_node = findNodeUnderCursor('#texture_list li.texture', e2); + let target_group_head = findNodeUnderCursor('#texture_list .texture_group_head', e2); let new_group = ''; if (target_group_head) { new_group = target_group_head.parentNode.id; @@ -2571,7 +2564,7 @@ Interface.definePanels(function() { Undo.finishEdit('Apply texture'); UVEditor.loadData(); - } else if (isUnderCursor(document.getElementById('uv_viewport'), e2)) { + } else if (isNodeUnderCursor(document.getElementById('uv_viewport'), e2)) { UVEditor.applyTexture(texture); } } @@ -2795,7 +2788,7 @@ Interface.definePanels(function() { $('.drag_hover').removeClass('drag_hover'); $('.texture_group[order]').attr('order', null); - let target = findUnderCursor('#texture_list .texture_group', e2); + let target = findNodeUnderCursor('#texture_list .texture_group', e2); if (target) { target.classList.add('drag_hover'); let offset = e2.clientY - $(target).offset().top; @@ -2803,7 +2796,7 @@ Interface.definePanels(function() { target.setAttribute('order', order.toString()); texture_group_target_node = target; - } else if (isUnderCursor(document.querySelector('#texture_list'))) { + } else if (isNodeUnderCursor(document.querySelector('#texture_list'), e2)) { let nodes = document.querySelectorAll('#texture_list > li.texture_group'); if (nodes.length) { let target = nodes[nodes.length-1]; diff --git a/js/util/util.js b/js/util/util.js index bd75a8634..566dbe8f2 100644 --- a/js/util/util.js +++ b/js/util/util.js @@ -480,6 +480,17 @@ Object.defineProperty(String.prototype, 'hashCode', { } }); +// HTML +function isNodeUnderCursor(node, event) { + if (!node) return; + let rect = node.getBoundingClientRect(); + return pointInRectangle([event.clientX, event.clientY], [rect.x, rect.y], [rect.right+1, rect.bottom+1]); +} +function findNodeUnderCursor(selector, event) { + return document.querySelectorAll(selector).entries().map(([i, node]) => node).find(node => isNodeUnderCursor(node, event)); +} + + //Color tinycolor.prototype.toInt = function() { let {r, g, b, a} = this.toRgb(); From 070e863bb44a91d4539f2408e1c6ebfcba06a4cc Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 19:46:43 +0200 Subject: [PATCH 125/153] Option to disable java block/item pivot export Closes #2481 --- js/interface/settings.js | 1 + js/io/formats/java_block.js | 2 +- lang/en.json | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/js/interface/settings.js b/js/interface/settings.js index 59c35bdaa..5caf4981b 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -570,6 +570,7 @@ const Settings = { new Setting('minify_bbmodel', {category: 'export', value: true}); new Setting('export_empty_groups', {category: 'export', value: true}); new Setting('export_groups', {category: 'export', value: true}); + new Setting('java_export_pivots', {category: 'export', value: false}); new Setting('optifine_save_default_texture',{category: 'export', value: true}); new Setting('obj_face_export_mode', {category: 'export', value: 'both', type: 'select', options: { both: tl('settings.obj_face_export_mode.both'), diff --git a/js/io/formats/java_block.js b/js/io/formats/java_block.js index ddb836ff1..015ce4b51 100644 --- a/js/io/formats/java_block.js +++ b/js/io/formats/java_block.js @@ -50,7 +50,7 @@ var codec = new Codec('java_block', { if (s.light_emission) { element.light_emission = s.light_emission; } - if (!s.rotation.allEqual(0) || !s.origin.allEqual(0)) { + if (!s.rotation.allEqual(0) || (!s.origin.allEqual(0) && settings.java_export_pivots.value)) { var axis = s.rotationAxis()||'y'; element.rotation = new oneLiner({ angle: s.rotation[getAxisNumber(axis)], diff --git a/lang/en.json b/lang/en.json index 39b6ba830..c17cb6ab2 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1073,6 +1073,8 @@ "settings.export_empty_groups.desc": "Include groups without content in exported files", "settings.export_groups": "Export Groups in Java block/item models", "settings.export_groups.desc": "Save groups in java block or item model JSON files", + "settings.java_export_pivots": "Export Pivots in Java block/item models", + "settings.java_export_pivots.desc": "Save pivot points in Java block/item models on cubes without rotation", "settings.obj_face_export_mode": "OBJ Face Export Mode", "settings.obj_face_export_mode.desc": "Choose to let the OBJ exporter convert all faces into tris or quads", "settings.obj_face_export_mode.both": "Default", From 47ab8c3d3963ba61c76d63de7438718e80bf9830 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 23:00:57 +0200 Subject: [PATCH 126/153] Improve blend transition curve editor --- css/panels.css | 11 +++++++ js/animations/animation_controllers.js | 44 ++++++++++++++++++++++---- lang/en.json | 2 ++ 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/css/panels.css b/css/panels.css index 70ca667fc..fc1d56cd1 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1821,6 +1821,17 @@ .controller_transition .controller_item_drag_handle { background-color: var(--color-marker); } +.blend_transition_curve_button { + margin-left: 4px; + cursor: pointer; + display: flex; + width: 42px; + justify-content: start; + align-items: center; +} +.blend_transition_curve_button > span { + color: var(--color-subtle_text); +} span.controller_state_section_info { margin: 0 8px; color: var(--color-subtle_text); diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 965978afc..cf1d50219 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -469,6 +469,26 @@ class AnimationControllerState { min: 0.05, step: 0.05, type: 'number', + }, + buttons: { + type: 'buttons', buttons: [ + 'generic.reset', + tl('dialog.blend_transition_edit.ease_in_out', [6]), + tl('dialog.blend_transition_edit.ease_in_out', [10]), + tl('dialog.blend_transition_edit.ease_in_out', [16]) + ], + click(index) { + let point_amount = ([2, 6, 10, 16])[index]; + function hermiteBlend(t) { + return 3*(t**2) - 2*(t**3); + } + points.empty(); + for (let i = 0; i < point_amount; i++) { + let time = i / (point_amount-1); + points.push({time, value: 1-hermiteBlend(time), uuid: guid()}) + } + dialog.content_vue.updateGraph(); + } } }, component: { @@ -588,12 +608,16 @@ class AnimationControllerState { onFormChange(result) { this.content_vue.duration = result.duration; }, - onConfirm() { + onConfirm(result) { clearInterval(preview_loop); Undo.initEdit({animation_controller_state: state}); + state.blend_transition = result.duration; state.blend_transition_curve = {}; - for (let point of points) { - state.blend_transition_curve[Math.clamp(point.time, 0, 1)] = point.value; + let is_linear = points.length == 2 && points.find(p => p.time == 0 && p.value == 1) && points.find(p => p.time == 1 && p.value == 0); + if (!is_linear) { + for (let point of points) { + state.blend_transition_curve[Math.clamp(point.time, 0, 1)] = point.value; + } } Undo.finishEdit('Change blend transition curve'); }, @@ -1651,6 +1675,9 @@ Interface.definePanels(() => { Undo.finishEdit('Change animation controller audio file') }) }, + editStateBlendTime(state) { + state.controller.saved = false; + }, updateLocatorSuggestionList() { Locator.updateAutocompleteList(); @@ -1966,9 +1993,14 @@ Interface.definePanels(() => {
    - -
    - + +
    + + {{ Object.keys(state.blend_transition_curve).length }}
    diff --git a/lang/en.json b/lang/en.json index c17cb6ab2..4fac33c29 100644 --- a/lang/en.json +++ b/lang/en.json @@ -625,6 +625,8 @@ "dialog.optimize_animation.thresholds": "Threshold values", "dialog.merge_animation.merge_target": "Merge into", + "dialog.blend_transition_edit.ease_in_out": "Ease-in-out (%0)", + "dialog.create_texture.folder": "Folder", "dialog.create_texture.type": "Type", "dialog.create_texture.type.blank": "Blank", From 78c3b3b97f429ccb471cadfb75c9edd810a90fcc Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 23:21:11 +0200 Subject: [PATCH 127/153] Add selection only option in palette generator Closes #2468 Change java export pivots default value to not break existing workflows --- js/interface/settings.js | 2 +- js/texturing/color.js | 2 ++ lang/en.json | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/js/interface/settings.js b/js/interface/settings.js index 5caf4981b..2de32ae63 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -570,7 +570,7 @@ const Settings = { new Setting('minify_bbmodel', {category: 'export', value: true}); new Setting('export_empty_groups', {category: 'export', value: true}); new Setting('export_groups', {category: 'export', value: true}); - new Setting('java_export_pivots', {category: 'export', value: false}); + new Setting('java_export_pivots', {category: 'export', value: true}); new Setting('optifine_save_default_texture',{category: 'export', value: true}); new Setting('obj_face_export_mode', {category: 'export', value: 'both', type: 'select', options: { both: tl('settings.obj_face_export_mode.both'), diff --git a/js/texturing/color.js b/js/texturing/color.js index a2b2c0f01..d00a8e844 100644 --- a/js/texturing/color.js +++ b/js/texturing/color.js @@ -725,6 +725,7 @@ Interface.definePanels(() => { width: 460, form: { texture: {label: 'data.texture', type: 'select', options, value: selected_texture, condition: !source}, + selection_only: {label: 'message.import_palette.selection_only', type: 'checkbox', value: false, condition: Texture.all[selected_texture]?.selection?.is_custom}, replace: {label: 'message.import_palette.replace_palette', type: 'checkbox', value: true}, threshold: {label: 'message.import_palette.threshold', type: 'number', value: 10, min: 0, max: 100, condition: process_colors}, }, @@ -740,6 +741,7 @@ Interface.definePanels(() => { } Painter.scanCanvas(ctx, 0, 0, ctx.canvas.width, ctx.canvas.height, (x, y, px) => { if (px[3] < 12) return; + if (formData.selection_only && texture.selection.is_custom && !texture.selection.get(x, y)) return; var t = tinycolor({ r: px[0], g: px[1], diff --git a/lang/en.json b/lang/en.json index 4fac33c29..80ec0b5b5 100644 --- a/lang/en.json +++ b/lang/en.json @@ -410,6 +410,7 @@ "message.load_images.edit_image": "Edit Image", "message.load_images.add_image": "Add Image", + "message.import_palette.selection_only": "Selection only", "message.import_palette.replace_palette": "Replace old palette", "message.import_palette.threshold": "Merge Threshold", From c358b5734ffc97f5872b121f6ce17355782fc984 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 23:39:57 +0200 Subject: [PATCH 128/153] Fix knife tool not working with inflated tools --- js/modeling/mesh_editing.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/js/modeling/mesh_editing.js b/js/modeling/mesh_editing.js index 8491ad0b6..fd169796c 100644 --- a/js/modeling/mesh_editing.js +++ b/js/modeling/mesh_editing.js @@ -692,10 +692,11 @@ class KnifeToolCubeContext { this.face_axis = KnifeToolCubeContext.face_axis[this.face]; let off_axes = [0, 1, 2].filter(a1 => a1 != this.face_axis); - let snap = canvasGridSize(data.event?.shiftKey || Pressing.overrides.shift, data.event?.ctrlOrCmd || Pressing.overrides.ctrl) + let snap = canvasGridSize(data.event?.shiftKey || Pressing.overrides.shift, data.event?.ctrlOrCmd || Pressing.overrides.ctrl); + let modified_from = this.cube.from.slice().V3_subtract(this.cube.inflate); - this.first_point[getAxisLetter(off_axes[0])] = Math.round((this.first_point[getAxisLetter(off_axes[0])] - this.cube.from[off_axes[0]]) / snap) * snap + this.cube.from[off_axes[0]]; - this.first_point[getAxisLetter(off_axes[1])] = Math.round((this.first_point[getAxisLetter(off_axes[1])] - this.cube.from[off_axes[1]]) / snap) * snap + this.cube.from[off_axes[1]]; + this.first_point[getAxisLetter(off_axes[0])] = Math.round((this.first_point[getAxisLetter(off_axes[0])] - modified_from[off_axes[0]]) / snap) * snap + modified_from[off_axes[0]]; + this.first_point[getAxisLetter(off_axes[1])] = Math.round((this.first_point[getAxisLetter(off_axes[1])] - modified_from[off_axes[1]]) / snap) * snap + modified_from[off_axes[1]]; } else { this.mesh_3d.add(this.preview_mesh); @@ -746,7 +747,7 @@ class KnifeToolCubeContext { let pos = THREE.fastWorldPosition(this.preview_mesh); let size = Preview.selected.calculateControlScale(pos) / 8; - this.preview_mesh.scale.set(...this.cube.size().map(v => v += size)); + this.preview_mesh.scale.set(...this.cube.size().map(v => v + this.cube.inflate * 2 + size)); this.preview_mesh.scale[this.axis_letter] = size; } } @@ -770,13 +771,15 @@ class KnifeToolCubeContext { this.cube.box_uv = false; } let duplicate = this.cube.duplicate(); - selected.push(duplicate); - elements.push(duplicate); + Outliner.selected.safePush(duplicate); + elements.safePush(duplicate); + let modified_from = this.cube.from.slice().V3_subtract(this.cube.inflate); + let modified_to = this.cube.to.slice().V3_subtract(this.cube.inflate); let offset = this.offset + this.cube.origin[this.axis]; - let offset_lerp = Math.getLerp(this.cube.from[this.axis], this.cube.to[this.axis], offset); + let offset_lerp = Math.getLerp(modified_from[this.axis], modified_to[this.axis], offset); - this.cube.to[this.axis] = offset; - duplicate.from[this.axis] = offset; + this.cube.to[this.axis] = offset - this.cube.inflate; + duplicate.from[this.axis] = offset + this.cube.inflate; function modifyUV(face, index, inverted) { index = (index - (face.rotation/90) + 8) % 4; From 68aa6d517595e40881b2c0a725464e04e2833818 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Fri, 13 Sep 2024 23:46:34 +0200 Subject: [PATCH 129/153] Fix #2476 Add support for numpad operator keys --- js/interface/keyboard.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/js/interface/keyboard.js b/js/interface/keyboard.js index 6267717c1..6a3a7c6ac 100644 --- a/js/interface/keyboard.js +++ b/js/interface/keyboard.js @@ -190,6 +190,13 @@ class Keybind { case 19: return 'pause'; case 1001: return 'mousewheel'; + case 106: return tl('keys.numpad', ['*']); + case 107: return tl('keys.numpad', ['+']); + case 108: return tl('keys.numpad', ['+']); + case 109: return tl('keys.numpad', ['-']); + case 110: return tl('keys.numpad', [',']); + case 111: return tl('keys.numpad', ['/']); + case 188: return ','; case 190: return '.'; case 189: return '-'; From f58e2f487c542d0dc37173aade0037970a149874 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 13:13:29 +0200 Subject: [PATCH 130/153] Add FPS Limit setting, closes #1880 Improve accuracy of animation playback speed --- js/animations/animation_controllers.js | 10 +++++----- js/animations/molang.js | 2 +- js/animations/timeline.js | 4 ++-- js/interface/settings.js | 1 + js/preview/preview.js | 5 +++++ js/texturing/texture_generator.js | 8 ++++---- lang/en.json | 2 ++ 7 files changed, 20 insertions(+), 12 deletions(-) diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index cf1d50219..7b9b85c20 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -216,8 +216,8 @@ class AnimationControllerState { select(force) { if (this.controller.selected_state !== this || force) { this.controller.last_state = this.controller.selected_state; - this.controller.transition_timestamp = Date.now(); - this.start_timestamp = Date.now(); + this.controller.transition_timestamp = performance.now(); + this.start_timestamp = performance.now(); this.controller.selected_state = this; @@ -457,7 +457,7 @@ class AnimationControllerState { let preview_loop = setInterval(() => { dialog.content_vue.preview(); }, 1000 / 60); - let preview_loop_start_time = Date.now(); + let preview_loop_start_time = performance.now(); let dialog = new Dialog('blend_transition_edit', { title: 'animation_controllers.state.blend_transition_curve', @@ -562,7 +562,7 @@ class AnimationControllerState { }, preview() { if (this.points.length == 0) return 0; - let time = (((Date.now() - preview_loop_start_time) / 1000) / this.duration) % 1; + let time = (((performance.now() - preview_loop_start_time) / 1000) / this.duration) % 1; let prev_time = -Infinity, prev = 0; let next_time = Infinity, next = 0; for (let pt of points) { @@ -632,7 +632,7 @@ class AnimationControllerState { } getStateTime() { if (!this.start_timestamp) return 0; - return (Date.now() - this.start_timestamp) / 1000 * (AnimationController.playback_speed / 100); + return (performance.now() - this.start_timestamp) / 1000 * (AnimationController.playback_speed / 100); } } new Property(AnimationControllerState, 'string', 'name', {default: 'default'}); diff --git a/js/animations/molang.js b/js/animations/molang.js index f2fe6e89c..ef285c809 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -3,7 +3,7 @@ Animator.MolangParser.global_variables = { true: 1, false: 0, get 'query.delta_time'() { - let time = (Date.now() - Timeline.last_frame_timecode) / 1000 + let time = (performance.now() - Timeline.last_frame_timecode) / 1000 if (time < 0) time += 1 return Math.clamp(time, 0, 0.1) }, diff --git a/js/animations/timeline.js b/js/animations/timeline.js index 481b5f3a5..505fb8fad 100644 --- a/js/animations/timeline.js +++ b/js/animations/timeline.js @@ -536,7 +536,7 @@ const Timeline = { } Timeline.playing = true BarItems.play_animation.setIcon('pause') - Timeline.last_frame_timecode = Date.now(); + Timeline.last_frame_timecode = performance.now(); if (Animation.selected.loop == 'hold' && Timeline.time >= (Animation.selected.length||1e3)) { Timeline.setTime(Timeline.custom_range[0]) } @@ -566,7 +566,7 @@ const Timeline = { if (Animation.selected.loop == 'hold') { time = Math.clamp(time, Timeline.custom_range[0], max_time); } - Timeline.last_frame_timecode = Date.now(); + Timeline.last_frame_timecode = performance.now(); if (time < max_time) { Timeline.setTime(time); diff --git a/js/interface/settings.js b/js/interface/settings.js index 2de32ae63..f7708e7dc 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -438,6 +438,7 @@ const Settings = { }, onChange() { Canvas.updateRenderSides(); }}); + new Setting('fps_limit', {category: 'preview', value: 144, min: 10, max: 1024, type: 'number'}); new Setting('background_rendering', {category: 'preview', value: true}); new Setting('texture_fps', {category: 'preview', value: 7, type: 'number', min: 0, max: 120, onChange() { TextureAnimator.updateSpeed() diff --git a/js/preview/preview.js b/js/preview/preview.js index 0440bc039..6189fdf41 100644 --- a/js/preview/preview.js +++ b/js/preview/preview.js @@ -2034,9 +2034,14 @@ function initCanvas() { CustomTheme.updateColors(); resizeWindow(); } +let last_animation_timestamp = performance.now(); function animate() { requestAnimationFrame( animate ); if (!settings.background_rendering.value && !document.hasFocus() && !document.querySelector('#preview:hover')) return; + if (performance.now() < last_animation_timestamp + 1000 / settings.fps_limit.value - 1) return; + + last_animation_timestamp = performance.now(); + TickUpdates.Run(); if (Animator.open) { diff --git a/js/texturing/texture_generator.js b/js/texturing/texture_generator.js index 4209eebd3..ff51d47c0 100644 --- a/js/texturing/texture_generator.js +++ b/js/texturing/texture_generator.js @@ -390,12 +390,12 @@ const TextureGenerator = { }); progress_dialog.show(); - let last_timeout = Date.now(); + let last_timeout = performance.now(); async function setProgress(progress) { Blockbench.setProgress(progress); progress_dialog.progress_bar.setProgress(progress ?? 0); await new Promise(resolve => setTimeout(resolve, 1)); - last_timeout = Date.now(); + last_timeout = performance.now(); } Undo.initEdit({ @@ -1007,7 +1007,7 @@ const TextureGenerator = { let handled = 0; outer_loop: for (let tpl of box_uv_templates) { - if (Date.now() - last_timeout > 24) { + if (performance.now() - last_timeout > 24) { await setProgress(handled/total); } if (cancelled) return; @@ -1023,7 +1023,7 @@ const TextureGenerator = { } outer_loop2: for (let tpl of face_list) { - if (Date.now() - last_timeout > 24) { + if (performance.now() - last_timeout > 24) { await setProgress(handled/total); } if (cancelled) return; diff --git a/lang/en.json b/lang/en.json index 80ec0b5b5..6f20ed44b 100644 --- a/lang/en.json +++ b/lang/en.json @@ -928,6 +928,8 @@ "settings.render_sides.auto": "Auto", "settings.render_sides.front": "Outside", "settings.render_sides.double": "Inside and Outside", + "settings.fps_limit": "FPS Limit", + "settings.fps_limit.desc": "Limit how many frames per second Blockbench renders. The actual frame rate is limited to what your device can display.", "settings.background_rendering": "Background Rendering", "settings.background_rendering.desc": "Update the preview while the window is not focused", "settings.texture_fps": "Animated Texture FPS", From ba980535e5f3af4cd04084f7de51d6976cd32656 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 13:43:49 +0200 Subject: [PATCH 131/153] Update electron builder and electron updater --- package-lock.json | 1801 ++++++++++++++++++++++++++++++++------------- package.json | 4 +- 2 files changed, 1300 insertions(+), 505 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2993dc00..8f7b367b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,24 @@ { "name": "Blockbench", - "version": "4.11.0-beta.1", + "version": "4.11.0-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Blockbench", - "version": "4.11.0-beta.1", + "version": "4.11.0-beta.2", "license": "GPL-3.0-or-later", "dependencies": { "@electron/remote": "^2.1.2", "electron-color-picker": "^0.2.0", - "electron-updater": "^6.2.1", + "electron-updater": "^6.3.4", "gifenc": "^1.0.3" }, "devDependencies": { "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", "electron": "^31.4.0", - "electron-builder": "^24.13.3", + "electron-builder": "^25.0.5", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", "workbox-build": "^6.5.3" @@ -1783,11 +1783,12 @@ } }, "node_modules/@electron/asar": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.8.tgz", - "integrity": "sha512-cmskk5M06ewHMZAplSiF4AlME3IrnnZhKnWbtwKVLRkdJkKyUVjMLhDIiPIx/+6zQWVlKX/LtmK9xDme7540Sg==", + "version": "3.2.13", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.13.tgz", + "integrity": "sha512-pY5z2qQSwbFzJsBdgfJIzXf5ElHTVMutC2dxh0FD60njknMu3n1NnTABOcQwbb5/v5soqE79m9UjaJryBf3epg==", "dev": true, "dependencies": { + "@types/glob": "^7.1.0", "commander": "^5.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" @@ -1829,9 +1830,9 @@ } }, "node_modules/@electron/notarize": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.3.0.tgz", - "integrity": "sha512-EiTBU0BwE7HZZjAG1fFWQaiQpCuPrVGn7jPss1kUjD6eTTdXXd29RiZqEqkgN7xqt/Pgn4g3I7Saqovanrfj3w==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.3.2.tgz", + "integrity": "sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -1879,9 +1880,9 @@ } }, "node_modules/@electron/osx-sign": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", - "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", + "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", "dev": true, "dependencies": { "compare-version": "^0.1.2", @@ -1946,6 +1947,81 @@ "node": ">= 10.0.0" } }, + "node_modules/@electron/rebuild": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", + "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/rebuild/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@electron/remote": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.1.2.tgz", @@ -1955,36 +2031,44 @@ } }, "node_modules/@electron/universal": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", - "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", + "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", "dev": true, "dependencies": { - "@electron/asar": "^3.2.1", - "@malept/cross-spawn-promise": "^1.1.0", + "@electron/asar": "^3.2.7", + "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", - "dir-compare": "^3.0.0", - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4", - "plist": "^3.0.4" + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" }, "engines": { - "node": ">=8.6" + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.14" } }, "node_modules/@electron/universal/node_modules/jsonfile": { @@ -1999,6 +2083,21 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@electron/universal/node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -2008,6 +2107,12 @@ "node": ">= 10.0.0" } }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2025,6 +2130,56 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -2097,9 +2252,9 @@ } }, "node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", "dev": true, "funding": [ { @@ -2115,7 +2270,7 @@ "cross-spawn": "^7.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 12.13.0" } }, "node_modules/@malept/flatpak-bundler": { @@ -2169,6 +2324,45 @@ "node": ">= 10.0.0" } }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2373,6 +2567,16 @@ "@types/node": "*" } }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -2401,6 +2605,12 @@ "@types/node": "*" } }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -2459,9 +2669,9 @@ "dev": true }, "node_modules/@types/verror": { - "version": "1.10.9", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.9.tgz", - "integrity": "sha512-MLx9Z+9lGzwEuW16ubGeNkpBDE84RpB/NyGgg6z2BTpWzKkGU451cAY3UkUzZEp72RHF585oJ3V8JVNqIplcAQ==", + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.10.tgz", + "integrity": "sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==", "dev": true, "optional": true }, @@ -2694,6 +2904,12 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -2727,6 +2943,31 @@ "node": ">= 6.0.0" } }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -2753,15 +2994,12 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -2780,31 +3018,32 @@ } }, "node_modules/app-builder-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "version": "5.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.7.tgz", + "integrity": "sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g==", "dev": true }, "node_modules/app-builder-lib": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", - "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", + "version": "25.0.5", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-25.0.5.tgz", + "integrity": "sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.2.1", - "@electron/osx-sign": "1.0.5", - "@electron/universal": "1.5.1", + "@electron/notarize": "2.3.2", + "@electron/osx-sign": "1.3.1", + "@electron/rebuild": "3.6.0", + "@electron/universal": "2.0.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "24.13.1", - "builder-util-runtime": "9.2.4", + "builder-util": "25.0.3", + "builder-util-runtime": "9.2.5", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.4", "ejs": "^3.1.8", - "electron-publish": "24.13.1", + "electron-publish": "25.0.3", "form-data": "^4.0.0", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", @@ -2812,8 +3051,9 @@ "isbinaryfile": "^5.0.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", - "minimatch": "^5.1.1", - "read-config-file": "6.3.2", + "minimatch": "^10.0.0", + "read-config-file": "6.4.0", + "resedit": "^1.7.0", "sanitize-filename": "^1.6.3", "semver": "^7.3.8", "tar": "^6.1.12", @@ -2823,37 +3063,8 @@ "node": ">=14.0.0" }, "peerDependencies": { - "dmg-builder": "24.13.3", - "electron-builder-squirrel-windows": "24.13.3" - } - }, - "node_modules/app-builder-lib/node_modules/@electron/notarize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", - "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" + "dmg-builder": "25.0.5", + "electron-builder-squirrel-windows": "25.0.5" } }, "node_modules/app-builder-lib/node_modules/brace-expansion": { @@ -2892,25 +3103,25 @@ } }, "node_modules/app-builder-lib/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2927,6 +3138,12 @@ "node": ">= 10.0.0" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, "node_modules/archiver": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", @@ -2994,6 +3211,20 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3128,7 +3359,6 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3244,18 +3474,6 @@ "node": "*" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "dev": true, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -3263,16 +3481,16 @@ "dev": true }, "node_modules/builder-util": { - "version": "24.13.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", - "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-25.0.3.tgz", + "integrity": "sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", "7zip-bin": "~5.2.0", - "app-builder-bin": "4.0.0", + "app-builder-bin": "5.0.0-alpha.7", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.4", + "builder-util-runtime": "9.2.5", "chalk": "^4.1.2", "cross-spawn": "^7.0.3", "debug": "^4.3.4", @@ -3287,9 +3505,9 @@ } }, "node_modules/builder-util-runtime": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", - "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.5.tgz", + "integrity": "sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -3298,39 +3516,6 @@ "node": ">=12.0.0" } }, - "node_modules/builder-util-runtime/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/builder-util/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3378,6 +3563,85 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -3491,66 +3755,54 @@ "node": ">=8" } }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "optional": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "optional": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, "engines": { "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "optional": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "optional": true, "dependencies": { - "ansi-regex": "^5.0.1" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cliui": { @@ -3567,47 +3819,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -3625,6 +3836,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3668,6 +3888,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -3733,13 +3962,13 @@ "dev": true }, "node_modules/config-file-ts": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", - "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", + "version": "0.2.8-rc1", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", + "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", "dev": true, "dependencies": { - "glob": "^10.3.10", - "typescript": "^5.3.3" + "glob": "^10.3.12", + "typescript": "^5.4.3" } }, "node_modules/config-file-ts/node_modules/brace-expansion": { @@ -3752,31 +3981,29 @@ } }, "node_modules/config-file-ts/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/config-file-ts/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3788,10 +4015,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/config-file-ts/node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3801,6 +4037,12 @@ "node": ">=14.17" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -3945,6 +4187,18 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -3974,6 +4228,21 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -3981,24 +4250,24 @@ "optional": true }, "node_modules/dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", "dev": true, "dependencies": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " } }, "node_modules/dmg-builder": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", - "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", + "version": "25.0.5", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-25.0.5.tgz", + "integrity": "sha512-ocnZV44ZqInoSFaY54fF7BlCtw+WtbrjyPrkBhaB+Ztn7GPKjmFgRbIKytifJ8h9Cib8jdFRMgjCUtkU45Y6DA==", "dev": true, "dependencies": { - "app-builder-lib": "24.13.3", - "builder-util": "24.13.1", - "builder-util-runtime": "9.2.4", + "app-builder-lib": "25.0.5", + "builder-util": "25.0.3", + "builder-util-runtime": "9.2.5", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" @@ -4093,19 +4362,31 @@ "optional": true }, "node_modules/dotenv": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", - "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "dev": true, + "dependencies": { + "dotenv": "^16.4.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } }, "node_modules/eastasianwidth": { "version": "0.2.0", @@ -4146,20 +4427,20 @@ } }, "node_modules/electron-builder": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", - "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", + "version": "25.0.5", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-25.0.5.tgz", + "integrity": "sha512-Uj5LFRbUqNiVajsgqcwlKe+CHtwubK3hcoJsW5C2YiWodej2mmxM+LrTqga0rrWWHVMNmrcmGcS/WHpKwy6KEw==", "dev": true, "dependencies": { - "app-builder-lib": "24.13.3", - "builder-util": "24.13.1", - "builder-util-runtime": "9.2.4", + "app-builder-lib": "25.0.5", + "builder-util": "25.0.3", + "builder-util-runtime": "9.2.5", "chalk": "^4.1.2", - "dmg-builder": "24.13.3", + "dmg-builder": "25.0.5", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", - "read-config-file": "6.3.2", + "read-config-file": "6.4.0", "simple-update-notifier": "2.0.0", "yargs": "^17.6.2" }, @@ -4172,15 +4453,15 @@ } }, "node_modules/electron-builder-squirrel-windows": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", - "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "version": "25.0.5", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-25.0.5.tgz", + "integrity": "sha512-N2U7LGSdt4hmEhjEeIV2XJbjj2YIrTL6enfsGKfOhGTpL6GEejUmT3gjdKUqKBS5+NBx0GWhnEwD3MpO2P6Nfg==", "dev": true, "peer": true, "dependencies": { - "app-builder-lib": "24.13.3", + "app-builder-lib": "25.0.5", "archiver": "^5.3.1", - "builder-util": "24.13.1", + "builder-util": "25.0.3", "fs-extra": "^10.1.0" } }, @@ -4269,14 +4550,14 @@ } }, "node_modules/electron-publish": { - "version": "24.13.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", - "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-25.0.3.tgz", + "integrity": "sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "24.13.1", - "builder-util-runtime": "9.2.4", + "builder-util": "25.0.3", + "builder-util-runtime": "9.2.5", "chalk": "^4.1.2", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", @@ -4325,17 +4606,17 @@ "dev": true }, "node_modules/electron-updater": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.2.1.tgz", - "integrity": "sha512-83eKIPW14qwZqUUM6wdsIRwVKZyjmHxQ4/8G+1C6iS5PdDt7b1umYQyj1/qPpH510GmHEQe4q0kCPe3qmb3a0Q==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.4.tgz", + "integrity": "sha512-uZUo7p1Y53G4tl6Cgw07X1yF8Jlz6zhaL7CQJDZ1fVVkOaBfE2cWtx80avwDVi8jHp+I/FWawrMgTAeCCNIfAg==", "dependencies": { - "builder-util-runtime": "9.2.4", + "builder-util-runtime": "9.2.5", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", - "semver": "^7.3.8", + "semver": "^7.6.3", "tiny-typed-emitter": "^2.1.0" } }, @@ -4364,12 +4645,9 @@ } }, "node_modules/electron-updater/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -4394,11 +4672,21 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4647,6 +4935,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -4746,9 +5040,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -4819,18 +5113,6 @@ "node": ">= 8" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4884,10 +5166,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -5137,6 +5439,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -5202,6 +5510,15 @@ "node": ">=10.17.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -5273,6 +5590,30 @@ "node": ">=8" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5312,6 +5653,19 @@ "node": ">= 0.10" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -5400,6 +5754,21 @@ "node": ">=8" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -5521,6 +5890,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5568,16 +5949,13 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -5634,6 +6012,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5858,6 +6242,22 @@ "dev": true, "peer": true }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -5870,6 +6270,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "devOptional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5886,6 +6287,42 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -5967,45 +6404,104 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" } }, - "node_modules/minizlib": { + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" }, "engines": { "node": ">=8" } }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -6047,12 +6543,45 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/node-abi": { + "version": "3.67.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", + "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", @@ -6060,12 +6589,85 @@ "dev": true, "optional": true }, + "node_modules/node-api-version": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-api-version/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6099,6 +6701,22 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -6158,6 +6776,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -6166,6 +6807,21 @@ "node": ">=8" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -6193,6 +6849,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -6202,6 +6873,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6236,28 +6913,48 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { - "node": "14 || >=16.14" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/pe-library": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", + "dev": true, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" } }, "node_modules/pend": { @@ -6364,6 +7061,12 @@ "node": ">=0.4.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -6415,18 +7118,30 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, "node_modules/read-config-file": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", - "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.4.0.tgz", + "integrity": "sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==", "dev": true, "dependencies": { - "config-file-ts": "^0.2.4", - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", + "config-file-ts": "0.2.8-rc1", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" + "json5": "^2.2.3", + "lazy-val": "^1.0.5" }, "engines": { "node": ">=12.0.0" @@ -6437,7 +7152,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6601,7 +7315,24 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/resedit": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.1.tgz", + "integrity": "sha512-/FJ6/gKAXbcHtivannhecWsa43kGVFK3aHHv9Jm3x0eFiM31MoGihkAOWbm3UsvjYLRVw0zTkfARy2dI96JL1Q==", + "dev": true, + "dependencies": { + "pe-library": "^0.4.1" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" } }, "node_modules/resolve": { @@ -6653,6 +7384,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -6662,6 +7406,22 @@ "node": ">= 4" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -6832,6 +7592,12 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -6880,9 +7646,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/simple-update-notifier": { @@ -6932,12 +7698,39 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6977,7 +7770,19 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "optional": true + "devOptional": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/stat-mode": { "version": "1.0.0", @@ -6993,7 +7798,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -7016,24 +7820,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "peer": true + ] }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -7046,30 +7846,6 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -7178,18 +7954,15 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/strip-ansi-cjs": { @@ -7200,13 +7973,7 @@ "dev": true, "dependencies": { "ansi-regex": "^5.0.1" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + }, "engines": { "node": ">=8" } @@ -7628,6 +8395,30 @@ "node": ">=4" } }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -7698,17 +8489,16 @@ } }, "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", "dev": true }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/v8-compile-cache": { "version": "2.2.0", @@ -7755,6 +8545,15 @@ "node": ">=10.13.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -7929,6 +8728,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -8219,59 +9027,74 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -8300,7 +9123,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "devOptional": true }, "node_modules/yargs": { "version": "17.7.2", @@ -8329,47 +9153,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -8379,6 +9162,18 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", diff --git a/package.json b/package.json index 65599a65e..a64f7da4a 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", "electron": "^31.4.0", - "electron-builder": "^24.13.3", + "electron-builder": "^25.0.5", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", "workbox-build": "^6.5.3" @@ -137,7 +137,7 @@ "dependencies": { "@electron/remote": "^2.1.2", "electron-color-picker": "^0.2.0", - "electron-updater": "^6.2.1", + "electron-updater": "^6.3.4", "gifenc": "^1.0.3" } } From 930935a6ebe966a1f33f0b8cb4b70bb639df7ee8 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 13:50:16 +0200 Subject: [PATCH 132/153] Fix panel resizer usable when panel is not in sidebar --- js/interface/panels.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/interface/panels.js b/js/interface/panels.js index 718cb58d8..034e964de 100644 --- a/js/interface/panels.js +++ b/js/interface/panels.js @@ -694,6 +694,10 @@ class Panel extends EventSystem { } if (!this.fixed_height) this.node.classList.remove('fixed_height'); + if (this.sidebar_resize_handle) { + this.sidebar_resize_handle.style.display = (this.slot == 'left_bar' || this.slot == 'right_bar') ? 'block' : 'none'; + } + if (Panels[this.id] && this.onResize) this.onResize() } else { this.node.classList.add('hidden'); From 06fd67e0fe92dc1f29544a2ca758c290ece462d0 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 14:04:08 +0200 Subject: [PATCH 133/153] Resizable UV editor in sidebars, square by default Closes #2471 --- js/texturing/uv.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 7a9818903..f69f7efdb 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -2212,6 +2212,7 @@ Interface.definePanels(function() { float_size: [500, 600], height: 500 }, + resizable: true, toolbars: [ new Toolbar('uv_editor', { children: [ @@ -2405,8 +2406,8 @@ Interface.definePanels(function() { if (panel) this.height -= panel.height; } - } else if (Panels.uv.slot.includes('_bar')) { - this.height = size * Math.clamp(this.uv_resolution[1] / this.uv_resolution[0], 0.5, 1); + } else if (Panels.uv.slot.includes('_bar') && !UVEditor.panel.fixed_height) { + this.height = size; } else { this.height = Math.clamp( From 50c8358738fe2168d386b2afbc5393928259bce5 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 21:26:51 +0200 Subject: [PATCH 134/153] Add blend transition curve generator --- index.html | 1 + js/animations/animation_controllers.js | 106 +++++++-- js/interface/about.js | 1 + lang/en.json | 4 + lib/easing.js | 307 +++++++++++++++++++++++++ 5 files changed, 397 insertions(+), 22 deletions(-) create mode 100644 lib/easing.js diff --git a/index.html b/index.html index 8becd4775..8319d65f4 100644 --- a/index.html +++ b/index.html @@ -89,6 +89,7 @@ + diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index 7b9b85c20..aaf5ee0ae 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -196,20 +196,22 @@ class AnimationControllerState { return new oneLiner({[state ? state.name : 'missing_state']: condition}) }) } - if (this.blend_transition) object.blend_transition = this.blend_transition; - let curve_keys = this.blend_transition_curve && Object.keys(this.blend_transition_curve); - if (curve_keys?.length) { - let curve_output = {}; - let points = curve_keys.map(key => ({time: parseFloat(key), value: this.blend_transition_curve[key]})); - points.sort((a, b) => a.time - b.time); - for (let point of points) { - let timecode = trimFloatNumber(point.time * this.blend_transition, 4).toString(); - if (!timecode.includes('.')) timecode += '.0'; - curve_output[timecode] = Math.roundTo(point.value, 6); + if (this.blend_transition) { + object.blend_transition = this.blend_transition; + let curve_keys = this.blend_transition_curve && Object.keys(this.blend_transition_curve); + if (curve_keys?.length) { + let curve_output = {}; + let points = curve_keys.map(key => ({time: parseFloat(key), value: this.blend_transition_curve[key]})); + points.sort((a, b) => a.time - b.time); + for (let point of points) { + let timecode = trimFloatNumber(point.time * this.blend_transition, 4).toString(); + if (!timecode.includes('.')) timecode += '.0'; + curve_output[timecode] = Math.roundTo(point.value, 6); + } + object.blend_transition = curve_output; } - object.blend_transition = curve_output; + if (this.blend_via_shortest_path) object.blend_via_shortest_path = this.blend_via_shortest_path; } - if (this.blend_via_shortest_path) object.blend_via_shortest_path = this.blend_via_shortest_path; Blockbench.dispatchEvent('compile_bedrock_animation_controller_state', {state: this, json: object}); return object; } @@ -475,19 +477,73 @@ class AnimationControllerState { 'generic.reset', tl('dialog.blend_transition_edit.ease_in_out', [6]), tl('dialog.blend_transition_edit.ease_in_out', [10]), - tl('dialog.blend_transition_edit.ease_in_out', [16]) + 'dialog.blend_transition_edit.generate', ], click(index) { - let point_amount = ([2, 6, 10, 16])[index]; - function hermiteBlend(t) { - return 3*(t**2) - 2*(t**3); + function generate(easing, point_amount) { + points.empty(); + for (let i = 0; i < point_amount; i++) { + let time = i / (point_amount-1); + points.push({time, value: 1-easing(time), uuid: guid()}) + } + dialog.content_vue.updateGraph(); } - points.empty(); - for (let i = 0; i < point_amount; i++) { - let time = i / (point_amount-1); - points.push({time, value: 1-hermiteBlend(time), uuid: guid()}) + if (index == 3) { + let easings = { + easeInSine: 'In Sine', + easeOutSine: 'Out Sine', + easeInOutSine: 'In Out Sine', + easeInQuad: 'In Quad', + easeOutQuad: 'Out Quad', + easeInOutQuad: 'In Out Quad', + easeInCubic: 'In Cubic', + easeOutCubic: 'Out Cubic', + easeInOutCubic: 'In Out Cubic', + easeInQuart: 'In Quart', + easeOutQuart: 'Out Quart', + easeInOutQuart: 'In Out Quart', + easeInQuint: 'In Quint', + easeOutQuint: 'Out Quint', + easeInOutQuint: 'In Out Quint', + easeInExpo: 'In Expo', + easeOutExpo: 'Out Expo', + easeInOutExpo: 'In Out Expo', + easeInCirc: 'In Circ', + easeOutCirc: 'Out Circ', + easeInOutCirc: 'In Out Circ', + easeInBack: 'In Back', + easeOutBack: 'Out Back', + easeInOutBack: 'In Out Back', + easeInElastic: 'In Elastic', + easeOutElastic: 'Out Elastic', + easeInOutElastic: 'In Out Elastic', + easeOutBounce: 'Out Bounce', + easeInBounce: 'In Bounce', + easeInOutBounce: 'In Out Bounce', + }; + new Dialog('blend_transition_edit_easing', { + title: 'dialog.blend_transition_edit.generate', + width: 380, + form: { + easings: {type: 'info', text: tl('dialog.blend_transition_edit.generate.learn_more') + ': [easings.net](https://easings.net)'}, + curve: {type: 'select', label: 'dialog.blend_transition_edit.generate.curve', options: easings}, + steps: {type: 'number', label: 'dialog.blend_transition_edit.generate.steps', value: 10, step: 1, min: 3, max: 64} + }, + onConfirm(result) { + console.log(result); + let easing_func = Easings[result.curve]; + generate(easing_func, result.steps); + } + }).show(); + + } else { + let point_amount = ([2, 6, 10])[index]; + function hermiteBlend(t) { + return 3*(t**2) - 2*(t**3); + } + generate(hermiteBlend, point_amount); } - dialog.content_vue.updateGraph(); + } } }, @@ -562,7 +618,13 @@ class AnimationControllerState { }, preview() { if (this.points.length == 0) return 0; - let time = (((performance.now() - preview_loop_start_time) / 1000) / this.duration) % 1; + let pause = 0.4; + let absolute_time = ((performance.now() - preview_loop_start_time) / 1000); + let time = (absolute_time % (this.duration + pause)) / this.duration; + if (time > 1) { + this.preview_value = 0; + return; + } let prev_time = -Infinity, prev = 0; let next_time = Infinity, next = 0; for (let pt of points) { diff --git a/js/interface/about.js b/js/interface/about.js index 143a71e86..c143bb9af 100644 --- a/js/interface/about.js +++ b/js/interface/about.js @@ -116,6 +116,7 @@ BARS.defineActions(() => {
  • jQuery UI
  • jQuery UI Touch Punch
  • FileSaver.js
  • +
  • easing-utils
  • PeerJS
  • Marked
  • DOMPurify
  • diff --git a/lang/en.json b/lang/en.json index 6f20ed44b..4dc7a2bf5 100644 --- a/lang/en.json +++ b/lang/en.json @@ -627,6 +627,10 @@ "dialog.merge_animation.merge_target": "Merge into", "dialog.blend_transition_edit.ease_in_out": "Ease-in-out (%0)", + "dialog.blend_transition_edit.generate": "Generate...", + "dialog.blend_transition_edit.generate.learn_more": "More info and preview", + "dialog.blend_transition_edit.generate.curve": "Easing Type", + "dialog.blend_transition_edit.generate.steps": "Keyframes", "dialog.create_texture.folder": "Folder", "dialog.create_texture.type": "Type", diff --git a/lib/easing.js b/lib/easing.js new file mode 100644 index 000000000..de44377c0 --- /dev/null +++ b/lib/easing.js @@ -0,0 +1,307 @@ +// Based on https://gist.github.com/gre/1650294 +class Easings { +// No easing, no acceleration +static linear( t ) { + return t; +} + +// Slight acceleration from zero to full speed +static easeInSine( t ) { + return -1 * Math.cos( t * ( Math.PI / 2 ) ) + 1; +} + +// Slight deceleration at the end +static easeOutSine( t ) { + return Math.sin( t * ( Math.PI / 2 ) ); +} + +// Slight acceleration at beginning and slight deceleration at end +static easeInOutSine( t ) { + return -0.5 * ( Math.cos( Math.PI * t ) - 1 ); +} + +// Accelerating from zero velocity +static easeInQuad( t ) { + return t * t; +} + +// Decelerating to zero velocity +static easeOutQuad( t ) { + return t * ( 2 - t ); +} + +// Acceleration until halfway, then deceleration +static easeInOutQuad( t ) { + return t < 0.5 ? 2 * t * t : - 1 + ( 4 - 2 * t ) * t; +} + +// Accelerating from zero velocity +static easeInCubic( t ) { + return t * t * t; +} + +// Decelerating to zero velocity +static easeOutCubic( t ) { + const t1 = t - 1; + return t1 * t1 * t1 + 1; +} + +// Acceleration until halfway, then deceleration +static easeInOutCubic( t ) { + return t < 0.5 ? 4 * t * t * t : ( t - 1 ) * ( 2 * t - 2 ) * ( 2 * t - 2 ) + 1; +} + +// Accelerating from zero velocity +static easeInQuart( t ) { + return t * t * t * t; +} + +// Decelerating to zero velocity +static easeOutQuart( t ) { + const t1 = t - 1; + return 1 - t1 * t1 * t1 * t1; +} + +// Acceleration until halfway, then deceleration +static easeInOutQuart( t ) { + const t1 = t - 1; + return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * t1 * t1 * t1 * t1; +} + +// Accelerating from zero velocity +static easeInQuint( t ) { + return t * t * t * t * t; +} + +// Decelerating to zero velocity +static easeOutQuint( t ) { + const t1 = t - 1; + return 1 + t1 * t1 * t1 * t1 * t1; +} + +// Acceleration until halfway, then deceleration +static easeInOutQuint( t ) { + const t1 = t - 1; + return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * t1 * t1 * t1 * t1 * t1; +} + +// Accelerate exponentially until finish +static easeInExpo( t ) { + + if( t === 0 ) { + return 0; + } + + return Math.pow( 2, 10 * ( t - 1 ) ); + +} + +// Initial exponential acceleration slowing to stop +static easeOutExpo( t ) { + + if( t === 1 ) { + return 1; + } + + return ( -Math.pow( 2, -10 * t ) + 1 ); + +} + +// Exponential acceleration and deceleration +static easeInOutExpo( t ) { + + if( t === 0 || t === 1 ) { + return t; + } + + const scaledTime = t * 2; + const scaledTime1 = scaledTime - 1; + + if( scaledTime < 1 ) { + return 0.5 * Math.pow( 2, 10 * ( scaledTime1 ) ); + } + + return 0.5 * ( -Math.pow( 2, -10 * scaledTime1 ) + 2 ); + +} + +// Increasing velocity until stop +static easeInCirc( t ) { + + const scaledTime = t / 1; + return -1 * ( Math.sqrt( 1 - scaledTime * t ) - 1 ); + +} + +// Start fast, decreasing velocity until stop +static easeOutCirc( t ) { + + const t1 = t - 1; + return Math.sqrt( 1 - t1 * t1 ); + +} + +// Fast increase in velocity, fast decrease in velocity +static easeInOutCirc( t ) { + + const scaledTime = t * 2; + const scaledTime1 = scaledTime - 2; + + if( scaledTime < 1 ) { + return -0.5 * ( Math.sqrt( 1 - scaledTime * scaledTime ) - 1 ); + } + + return 0.5 * ( Math.sqrt( 1 - scaledTime1 * scaledTime1 ) + 1 ); + +} + +// Slow movement backwards then fast snap to finish +static easeInBack( t, magnitude = 1.70158 ) { + + return t * t * ( ( magnitude + 1 ) * t - magnitude ); + +} + +// Fast snap to backwards point then slow resolve to finish +static easeOutBack( t, magnitude = 1.70158 ) { + + const scaledTime = ( t / 1 ) - 1; + + return ( + scaledTime * scaledTime * ( ( magnitude + 1 ) * scaledTime + magnitude ) + ) + 1; + +} + +// Slow movement backwards, fast snap to past finish, slow resolve to finish +static easeInOutBack( t, magnitude = 1.70158 ) { + + const scaledTime = t * 2; + const scaledTime2 = scaledTime - 2; + + const s = magnitude * 1.525; + + if( scaledTime < 1) { + + return 0.5 * scaledTime * scaledTime * ( + ( ( s + 1 ) * scaledTime ) - s + ); + + } + + return 0.5 * ( + scaledTime2 * scaledTime2 * ( ( s + 1 ) * scaledTime2 + s ) + 2 + ); + +} +// Bounces slowly then quickly to finish +static easeInElastic( t, magnitude = 0.7 ) { + + if( t === 0 || t === 1 ) { + return t; + } + + const scaledTime = t / 1; + const scaledTime1 = scaledTime - 1; + + const p = 1 - magnitude; + const s = p / ( 2 * Math.PI ) * Math.asin( 1 ); + + return -( + Math.pow( 2, 10 * scaledTime1 ) * + Math.sin( ( scaledTime1 - s ) * ( 2 * Math.PI ) / p ) + ); + +} + +// Fast acceleration, bounces to zero +static easeOutElastic( t, magnitude = 0.7 ) { + + if( t === 0 || t === 1 ) { + return t; + } + + const p = 1 - magnitude; + const scaledTime = t * 2; + + const s = p / ( 2 * Math.PI ) * Math.asin( 1 ); + return ( + Math.pow( 2, -10 * scaledTime ) * + Math.sin( ( scaledTime - s ) * ( 2 * Math.PI ) / p ) + ) + 1; + +} + +// Slow start and end, two bounces sandwich a fast motion +static easeInOutElastic( t, magnitude = 0.65 ) { + + if( t === 0 || t === 1 ) { + return t; + } + + const p = 1 - magnitude; + const scaledTime = t * 2; + const scaledTime1 = scaledTime - 1; + + const s = p / ( 2 * Math.PI ) * Math.asin( 1 ); + + if( scaledTime < 1 ) { + return -0.5 * ( + Math.pow( 2, 10 * scaledTime1 ) * + Math.sin( ( scaledTime1 - s ) * ( 2 * Math.PI ) / p ) + ); + } + + return ( + Math.pow( 2, -10 * scaledTime1 ) * + Math.sin( ( scaledTime1 - s ) * ( 2 * Math.PI ) / p ) * 0.5 + ) + 1; + +} + +// Bounce to completion +static easeOutBounce( t ) { + + const scaledTime = t / 1; + + if( scaledTime < ( 1 / 2.75 ) ) { + + return 7.5625 * scaledTime * scaledTime; + + } else if( scaledTime < ( 2 / 2.75 ) ) { + + const scaledTime2 = scaledTime - ( 1.5 / 2.75 ); + return ( 7.5625 * scaledTime2 * scaledTime2 ) + 0.75; + + } else if( scaledTime < ( 2.5 / 2.75 ) ) { + + const scaledTime2 = scaledTime - ( 2.25 / 2.75 ); + return ( 7.5625 * scaledTime2 * scaledTime2 ) + 0.9375; + + } else { + + const scaledTime2 = scaledTime - ( 2.625 / 2.75 ); + return ( 7.5625 * scaledTime2 * scaledTime2 ) + 0.984375; + + } + +} + +// Bounce increasing in velocity until completion +static easeInBounce( t ) { + return 1 - Easings.easeOutBounce( 1 - t ); +} + +// Bounce in and bounce out +static easeInOutBounce( t ) { + + if( t < 0.5 ) { + + return Easings.easeInBounce( t * 2 ) * 0.5; + + } + + return ( Easings.easeOutBounce( ( t * 2 ) - 1 ) * 0.5 ) + 0.5; + +} +} From 3ee1d8d31054d2caf390a89c28210f1a37398498 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 21:45:07 +0200 Subject: [PATCH 135/153] v4.11.0-beta.3 [ci-build] --- js/misc.js | 2 +- js/texturing/uv.js | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/js/misc.js b/js/misc.js index 3f8dfa4cb..75a2cbfa3 100644 --- a/js/misc.js +++ b/js/misc.js @@ -204,7 +204,7 @@ function updateSelection(options = {}) { preview.updateAnnotations(); }) if (Condition(BarItems.layer_opacity.condition)) BarItems.layer_opacity.update(); - if (Condition(BarItems.layer_blend_mode.condition)) BarItems.layer_blend_mode.set(this.blend_mode); + if (Condition(BarItems.layer_blend_mode.condition)) BarItems.layer_blend_mode.set(TextureLayer.selected?.blend_mode); BARS.updateConditions(); delete TickUpdates.selection; diff --git a/js/texturing/uv.js b/js/texturing/uv.js index f69f7efdb..110027bd8 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -264,9 +264,9 @@ const UVEditor = { }, updateOverlayCanvas() { - if (!Texture.selected) return; + if (!UVEditor.texture) return; let canvas = UVEditor.overlay_canvas; - let texture = Texture.selected; + let texture = UVEditor.texture; let ctx = canvas.getContext('2d'); canvas.width = texture.width; diff --git a/package.json b/package.json index a64f7da4a..5d8caf717 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Blockbench", "description": "Low-poly modeling and animation software", - "version": "4.11.0-beta.2", + "version": "4.11.0-beta.3", "license": "GPL-3.0-or-later", "author": { "name": "JannisX11", From 92eb0f74dd8451ff7b57011f5b216599941fc47e Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 21:58:24 +0200 Subject: [PATCH 136/153] Revert electron-builder update [ci-build] --- package-lock.json | 1460 +++++++++------------------------------------ package.json | 2 +- 2 files changed, 281 insertions(+), 1181 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f7b367b6..b3d63821c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Blockbench", - "version": "4.11.0-beta.2", + "version": "4.11.0-beta.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Blockbench", - "version": "4.11.0-beta.2", + "version": "4.11.0-beta.3", "license": "GPL-3.0-or-later", "dependencies": { "@electron/remote": "^2.1.2", @@ -18,7 +18,7 @@ "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", "electron": "^31.4.0", - "electron-builder": "^25.0.5", + "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", "workbox-build": "^6.5.3" @@ -1880,9 +1880,9 @@ } }, "node_modules/@electron/osx-sign": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", - "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", "dev": true, "dependencies": { "compare-version": "^0.1.2", @@ -1947,81 +1947,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@electron/rebuild": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", - "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", - "dev": true, - "dependencies": { - "@malept/cross-spawn-promise": "^2.0.0", - "chalk": "^4.0.0", - "debug": "^4.1.1", - "detect-libc": "^2.0.1", - "fs-extra": "^10.0.0", - "got": "^11.7.0", - "node-abi": "^3.45.0", - "node-api-version": "^0.2.0", - "node-gyp": "^9.0.0", - "ora": "^5.1.0", - "read-binary-file-arch": "^1.0.6", - "semver": "^7.3.5", - "tar": "^6.0.5", - "yargs": "^17.0.1" - }, - "bin": { - "electron-rebuild": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/@electron/rebuild/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/rebuild/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/rebuild/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/rebuild/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/@electron/remote": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.1.2.tgz", @@ -2031,44 +1956,36 @@ } }, "node_modules/@electron/universal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", - "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", "dev": true, "dependencies": { - "@electron/asar": "^3.2.7", - "@malept/cross-spawn-promise": "^2.0.0", + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", "debug": "^4.3.1", - "dir-compare": "^4.2.0", - "fs-extra": "^11.1.1", - "minimatch": "^9.0.3", - "plist": "^3.1.0" + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" }, "engines": { - "node": ">=16.4" - } - }, - "node_modules/@electron/universal/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=8.6" } }, "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=10" } }, "node_modules/@electron/universal/node_modules/jsonfile": { @@ -2083,21 +2000,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@electron/universal/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@electron/universal/node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -2107,12 +2009,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2142,6 +2038,18 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2180,6 +2088,23 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -2252,9 +2177,9 @@ } }, "node_modules/@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", "dev": true, "funding": [ { @@ -2270,7 +2195,7 @@ "cross-spawn": "^7.0.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10" } }, "node_modules/@malept/flatpak-bundler": { @@ -2324,45 +2249,6 @@ "node": ">= 10.0.0" } }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2904,12 +2790,6 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -2943,31 +2823,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "dev": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -3018,32 +2873,31 @@ } }, "node_modules/app-builder-bin": { - "version": "5.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.7.tgz", - "integrity": "sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", "dev": true }, "node_modules/app-builder-lib": { - "version": "25.0.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-25.0.5.tgz", - "integrity": "sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", + "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.3.2", - "@electron/osx-sign": "1.3.1", - "@electron/rebuild": "3.6.0", - "@electron/universal": "2.0.1", + "@electron/notarize": "2.2.1", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.5.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "25.0.3", - "builder-util-runtime": "9.2.5", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.4", "ejs": "^3.1.8", - "electron-publish": "25.0.3", + "electron-publish": "24.13.1", "form-data": "^4.0.0", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", @@ -3051,9 +2905,8 @@ "isbinaryfile": "^5.0.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", - "minimatch": "^10.0.0", - "read-config-file": "6.4.0", - "resedit": "^1.7.0", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", "sanitize-filename": "^1.6.3", "semver": "^7.3.8", "tar": "^6.1.12", @@ -3063,8 +2916,37 @@ "node": ">=14.0.0" }, "peerDependencies": { - "dmg-builder": "25.0.5", - "electron-builder-squirrel-windows": "25.0.5" + "dmg-builder": "24.13.3", + "electron-builder-squirrel-windows": "24.13.3" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/notarize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", + "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/app-builder-lib/node_modules/brace-expansion": { @@ -3076,6 +2958,19 @@ "balanced-match": "^1.0.0" } }, + "node_modules/app-builder-lib/node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3103,18 +2998,15 @@ } }, "node_modules/app-builder-lib/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/app-builder-lib/node_modules/semver": { @@ -3138,12 +3030,6 @@ "node": ">= 10.0.0" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, "node_modules/archiver": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", @@ -3211,20 +3097,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3359,6 +3231,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3474,6 +3347,18 @@ "node": "*" } }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -3481,16 +3366,16 @@ "dev": true }, "node_modules/builder-util": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-25.0.3.tgz", - "integrity": "sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw==", + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", + "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", "7zip-bin": "~5.2.0", - "app-builder-bin": "5.0.0-alpha.7", + "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.5", + "builder-util-runtime": "9.2.4", "chalk": "^4.1.2", "cross-spawn": "^7.0.3", "debug": "^4.3.4", @@ -3516,6 +3401,19 @@ "node": ">=12.0.0" } }, + "node_modules/builder-util/node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3563,85 +3461,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -3755,39 +3574,6 @@ "node": ">=8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-truncate": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", @@ -3819,32 +3605,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3888,15 +3648,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, "node_modules/colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -3962,13 +3713,13 @@ "dev": true }, "node_modules/config-file-ts": { - "version": "0.2.8-rc1", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", - "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", + "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", "dev": true, "dependencies": { - "glob": "^10.3.12", - "typescript": "^5.4.3" + "glob": "^10.3.10", + "typescript": "^5.3.3" } }, "node_modules/config-file-ts/node_modules/brace-expansion": { @@ -4037,12 +3788,6 @@ "node": ">=14.17" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -4187,18 +3932,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -4228,21 +3961,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -4250,30 +3968,43 @@ "optional": true }, "node_modules/dir-compare": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", - "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", "dev": true, "dependencies": { - "minimatch": "^3.0.5", - "p-limit": "^3.1.0 " + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" } }, "node_modules/dmg-builder": { - "version": "25.0.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-25.0.5.tgz", - "integrity": "sha512-ocnZV44ZqInoSFaY54fF7BlCtw+WtbrjyPrkBhaB+Ztn7GPKjmFgRbIKytifJ8h9Cib8jdFRMgjCUtkU45Y6DA==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", + "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", "dev": true, "dependencies": { - "app-builder-lib": "25.0.5", - "builder-util": "25.0.3", - "builder-util-runtime": "9.2.5", + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" }, - "optionalDependencies": { - "dmg-license": "^1.0.11" + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" } }, "node_modules/dmg-builder/node_modules/fs-extra": { @@ -4362,31 +4093,19 @@ "optional": true }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">=10" } }, "node_modules/dotenv-expand": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", - "dev": true, - "dependencies": { - "dotenv": "^16.4.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true }, "node_modules/eastasianwidth": { "version": "0.2.0", @@ -4427,20 +4146,20 @@ } }, "node_modules/electron-builder": { - "version": "25.0.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-25.0.5.tgz", - "integrity": "sha512-Uj5LFRbUqNiVajsgqcwlKe+CHtwubK3hcoJsW5C2YiWodej2mmxM+LrTqga0rrWWHVMNmrcmGcS/WHpKwy6KEw==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", + "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", "dev": true, "dependencies": { - "app-builder-lib": "25.0.5", - "builder-util": "25.0.3", - "builder-util-runtime": "9.2.5", + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", "chalk": "^4.1.2", - "dmg-builder": "25.0.5", + "dmg-builder": "24.13.3", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", - "read-config-file": "6.4.0", + "read-config-file": "6.3.2", "simple-update-notifier": "2.0.0", "yargs": "^17.6.2" }, @@ -4453,15 +4172,15 @@ } }, "node_modules/electron-builder-squirrel-windows": { - "version": "25.0.5", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-25.0.5.tgz", - "integrity": "sha512-N2U7LGSdt4hmEhjEeIV2XJbjj2YIrTL6enfsGKfOhGTpL6GEejUmT3gjdKUqKBS5+NBx0GWhnEwD3MpO2P6Nfg==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", "dev": true, "peer": true, "dependencies": { - "app-builder-lib": "25.0.5", + "app-builder-lib": "24.13.3", "archiver": "^5.3.1", - "builder-util": "25.0.3", + "builder-util": "24.13.1", "fs-extra": "^10.1.0" } }, @@ -4503,6 +4222,19 @@ "node": ">= 10.0.0" } }, + "node_modules/electron-builder/node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -4550,20 +4282,33 @@ } }, "node_modules/electron-publish": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-25.0.3.tgz", - "integrity": "sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==", + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", + "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "25.0.3", - "builder-util-runtime": "9.2.5", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", "chalk": "^4.1.2", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "mime": "^2.5.2" } }, + "node_modules/electron-publish/node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -4677,16 +4422,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4935,12 +4670,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -5113,6 +4842,18 @@ "node": ">= 8" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5166,26 +4907,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5439,12 +5160,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -5510,15 +5225,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -5590,30 +5296,6 @@ "node": ">=8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5653,19 +5335,6 @@ "node": ">= 0.10" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -5754,21 +5423,6 @@ "node": ">=8" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -5890,18 +5544,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6012,12 +5654,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6242,22 +5878,6 @@ "dev": true, "peer": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -6287,42 +5907,6 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -6413,93 +5997,37 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { + "node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "minipass": "^3.0.0", "yallist": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, "node_modules/mkdirp": { @@ -6543,109 +6071,18 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/node-abi": { - "version": "3.67.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", - "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true, - "optional": true - }, - "node_modules/node-api-version": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", - "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - } - }, - "node_modules/node-api-version/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "optional": true }, "node_modules/node-releases": { "version": "2.0.14", @@ -6653,21 +6090,6 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6701,22 +6123,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -6776,29 +6182,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -6807,21 +6190,6 @@ "node": ">=8" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -6849,21 +6217,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -6934,29 +6287,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/pe-library": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", - "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", - "dev": true, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jet2jet" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -7061,12 +6391,6 @@ "node": ">=0.4.0" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -7118,30 +6442,18 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/read-binary-file-arch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", - "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "bin": { - "read-binary-file-arch": "cli.js" - } - }, "node_modules/read-config-file": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.4.0.tgz", - "integrity": "sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", "dev": true, "dependencies": { - "config-file-ts": "0.2.8-rc1", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", "js-yaml": "^4.1.0", - "json5": "^2.2.3", - "lazy-val": "^1.0.5" + "json5": "^2.2.0", + "lazy-val": "^1.0.4" }, "engines": { "node": ">=12.0.0" @@ -7152,6 +6464,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7318,23 +6631,6 @@ "node": ">=0.10.0" } }, - "node_modules/resedit": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.1.tgz", - "integrity": "sha512-/FJ6/gKAXbcHtivannhecWsa43kGVFK3aHHv9Jm3x0eFiM31MoGihkAOWbm3UsvjYLRVw0zTkfARy2dI96JL1Q==", - "dev": true, - "dependencies": { - "pe-library": "^0.4.1" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jet2jet" - } - }, "node_modules/resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -7384,19 +6680,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -7406,22 +6689,6 @@ "node": ">= 4" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -7592,12 +6859,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -7698,39 +6959,12 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, - "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "dev": true, - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7770,19 +7004,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "devOptional": true - }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "optional": true }, "node_modules/stat-mode": { "version": "1.0.0", @@ -7798,6 +7020,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -7820,7 +7043,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/string-width": { "version": "4.2.3", @@ -8074,15 +7298,6 @@ "node": ">=6" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -8395,30 +7610,6 @@ "node": ">=4" } }, - "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -8498,7 +7689,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/v8-compile-cache": { "version": "2.2.0", @@ -8545,15 +7737,6 @@ "node": ">=10.13.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -8728,15 +7911,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", @@ -9001,17 +8175,17 @@ } }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -9035,68 +8209,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -9162,18 +8274,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zip-stream": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", diff --git a/package.json b/package.json index 5d8caf717..0bf46b648 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "@electron/notarize": "^2.3.0", "blockbench-types": "^4.6.1", "electron": "^31.4.0", - "electron-builder": "^25.0.5", + "electron-builder": "^24.13.3", "webpack": "^5.74.0", "webpack-cli": "^4.5.0", "workbox-build": "^6.5.3" From 9410244f6a097f3d6bcfd8ff99f3b6ea40fef7aa Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 22:22:25 +0200 Subject: [PATCH 137/153] Fix issues in the english lang file --- lang/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/en.json b/lang/en.json index 4dc7a2bf5..9a165e8f6 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1827,7 +1827,7 @@ "action.retarget_animators": "Retarget Animations", "action.retarget_animators.desc": "Select which animator targets which bone or element", "action.merge_animation": "Merge Animation", - "action.merge_animation.desc": "Optimize the current animation and reduce the keyframe count", + "action.merge_animation.desc": "Merge the animation into another animation", "action.bake_ik_animation": "Bake Inverse Kinematics", "action.bake_ik_animation.desc": "Bake the rotations applied by inverse kinematics into the selected animation", "action.bake_animation_into_model": "Bake Animation into Model", @@ -1891,7 +1891,7 @@ "action.set_timeline_range_start": "Set Timeline Range Start", "action.set_timeline_range_start.desc": "Set the start point for a custom playback range in the animation timeline", "action.set_timeline_range_end": "Set Timeline Range End", - "action.set_timeline_range_end.desc": "Set the start point for a custom playback range in the animation timeline", + "action.set_timeline_range_end.desc": "Set the end point for a custom playback range in the animation timeline", "action.disable_timeline_range": "Disable Timeline Range", "action.disable_timeline_range.desc": "Disable the custom playback range in the animation timeline", "action.bring_up_all_animations": "Bring Up All Animators", From f45d5e6a05dc1a0419ea9eaedce2ed852550e935 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 14 Sep 2024 23:46:45 +0200 Subject: [PATCH 138/153] Display arch in boot message --- js/boot_loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/boot_loader.js b/js/boot_loader.js index 45729aff1..59ca14458 100644 --- a/js/boot_loader.js +++ b/js/boot_loader.js @@ -51,7 +51,7 @@ Settings.setupProfiles(); console.log(`Three.js r${THREE.REVISION}`) console.log('%cBlockbench ' + appVersion + (isApp - ? (' Desktop (' + Blockbench.operating_system +')') + ? (' Desktop (' + Blockbench.operating_system + ', ' + process.arch +')') : (' Web ('+capitalizeFirstLetter(Blockbench.browser) + (Blockbench.isPWA ? ', PWA)' : ')'))), 'border: 2px solid #3e90ff; padding: 4px 8px; font-size: 1.2em;' ) From 13fd69700557ea0685d7939247d72a55b4b93589 Mon Sep 17 00:00:00 2001 From: SnaveSutit Date: Sun, 15 Sep 2024 15:39:02 -0400 Subject: [PATCH 139/153] =?UTF-8?q?=F0=9F=9A=A7=20Molang=20Auto-complete?= =?UTF-8?q?=20Enhancements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added suggestion a priority system for Namespaces, Queries, and RootTokens. - Contexts that inherit other contexts can safely define "duplicate" namespaces in order to add more queries to inherited Namespaces. --- js/animations/molang.js | 130 ++++++++++++++++++++++++++++++++-------- 1 file changed, 105 insertions(+), 25 deletions(-) diff --git a/js/animations/molang.js b/js/animations/molang.js index f0a14bbb8..8d330f2b6 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -355,6 +355,9 @@ function getTemporaryMolangVariables(expression, excluded) { */ function sortAutocompleteResults(results, incomplete) { return results.sort((a, b) => { + if (a.priority && b.priority) return b.priority - a.priority + else if (a.priority) return -1 + else if (b.priority) return 1 if (a.text.startsWith(incomplete) && !b.text.startsWith(incomplete)) return -1 if (b.text.startsWith(incomplete) && !a.text.startsWith(incomplete)) return 1 return a.text.localeCompare(b.text) @@ -364,32 +367,36 @@ function sortAutocompleteResults(results, incomplete) { ;(function () { /** * @typedef MolangAutocompleteResult - * @property {string} text - * @property {string} [label] - * @property {number} overlap + * @property {string} text The text to insert + * @property {string} [label] The label to display in the autocomplete menu + * @property {number} overlap The number of characters to overlap with the incomplete string + * @property {number} [priority] The suggestion priority. A higher number means it will be suggested first */ /** * @typedef RootToken - * @property {string} id - * @property {string[]} [arguments] + * @property {string} id The ID of the new root token + * @property {string[]} [arguments] The arguments of the root token + * @property {number} [priority] The suggestion priority of the root token. A higher number means it will be suggested first */ /** * @typedef Query - * @property {string} id - * @property {string[]} [arguments] + * @property {string} id The ID of the new query + * @property {string[]} [arguments] The arguments of the query + * @property {number} [priority] The suggestion priority of the query. A higher number means it will be suggested first */ /** * @typedef NamespaceOptions - * @property {string} id - * @property {string} [shorthand] + * @property {string} id The ID of the new namespace + * @property {string} [shorthand] The shorthand of the new namespace. Eg. `q` for `query` + * @property {number} [priority] The suggestion priority of the namespace. A higher number means it will be suggested first */ MolangAutocomplete.Namespace = class Namespace { /** - * @type {string} + * @type {string} The ID of the namespace. */ id /** @@ -459,6 +466,30 @@ function sortAutocompleteResults(results, incomplete) { this.queryGetters.delete(id) } + /** + * @typedef NamespaceUnionOptions + * @property {string} id The ID of the new namespace + * @property {string} [shorthand] The shorthand of the new namespace. Eg. `q` for `query` + * @property {number} [priority] The suggestion priority of the namespace. A higher number means it will be suggested first + */ + + /** + * Creates a new Namespace that is a union of this namespace and another + * @param {Namespace} other + * @param {NamespaceUnionOptions} [options] Options to override the new namespace's properties. If not provided, the new namespace will inherit this namespace's properties + * @returns {Namespace} The new namespace + */ + createUnion(other, options) { + const union = new MolangAutocomplete.Namespace({ + id: options?.id || this.id, + shorthand: options?.shorthand || this.shorthand, + priority: options?.priority || this.priority, + }) + union.queries = new Map([...this.queries, ...other.queries]) + union.queryGetters = new Map([...this.queryGetters, ...other.queryGetters]) + return union + } + /** * Returns any queries in this namespace who's ID starts with `incomplete`. * @param {string} expression The expression the query is being used in @@ -570,10 +601,18 @@ function sortAutocompleteResults(results, incomplete) { /** * Adds a new namespace to the context * @param {Namespace} namespace + * @param {boolean} [createUnion=true] If true, will create a union of the namespace with any existing namespaces with the same ID. If false, will overwrite any existing namespaces with the same ID. (Default: true) * @returns {Context} This context */ - addNamespace(namespace) { - this.namespaces.set(namespace.id, namespace) + addNamespace(namespace, createUnion = true) { + if (createUnion && this.namespaces.has(namespace.id)) { + this.namespaces.set( + namespace.id, + this.namespaces.get(namespace.id).createUnion(namespace) + ) + } else { + this.namespaces.set(namespace.id, namespace) + } return this } @@ -585,9 +624,17 @@ function sortAutocompleteResults(results, incomplete) { * @returns {Namespace} The namespace, or undefined if it does not exist */ getNamespace(namespaceID, recursive = true) { + if (recursive && this.inheritedContext) { + const subNamespace = this.inheritedContext.getNamespace(namespaceID) + if (this.namespaces.has(namespaceID)) { + const namespace = this.namespaces.get(namespaceID) + if (subNamespace) { + return namespace.createUnion(subNamespace) + } + } + return subNamespace + } if (this.namespaces.has(namespaceID)) return this.namespaces.get(namespaceID) - if (recursive && this.inheritedContext) - return this.inheritedContext.getNamespace(namespaceID) return undefined } @@ -609,21 +656,26 @@ function sortAutocompleteResults(results, incomplete) { * @returns {Namespace[]} The namespaces */ getPossibleNamespaces(incomplete, recursive = true) { - const possibleNamespaces = [] + const possibleNamespaces = new Map() this.namespaces.forEach((namespace) => { if ( namespace.id.startsWith(incomplete) || (namespace.shorthand && namespace.shorthand.startsWith(incomplete)) ) - possibleNamespaces.push(namespace) + possibleNamespaces.set(namespace.id, namespace) }) if (recursive && this.inheritedContext) { - return [ - ...possibleNamespaces, - ...this.inheritedContext.getPossibleNamespaces(incomplete), - ] + const inheritedNamespaces = this.inheritedContext.getPossibleNamespaces(incomplete) + inheritedNamespaces.forEach((namespace) => { + if (possibleNamespaces.has(namespace.id)) { + const union = possibleNamespaces.get(namespace.id).createUnion(namespace) + possibleNamespaces.set(namespace.id, union) + } else { + possibleNamespaces.set(namespace.id, namespace) + } + }) } - return possibleNamespaces + return [...possibleNamespaces.values()] } /** @@ -671,6 +723,7 @@ function sortAutocompleteResults(results, incomplete) { ? `${token.id}( ${token.arguments.join(', ')} )` : undefined, overlap: start.length, + priority: token.priority, }) }) @@ -678,8 +731,13 @@ function sortAutocompleteResults(results, incomplete) { switch (possibleNamespaces.length) { default: possibleNamespaces.forEach((ns) => { - result.push({ text: ns.id, overlap: space.length }) - if (ns.shorthand) result.push({ text: ns.shorthand, overlap: space.length }) + result.push({ text: ns.id, overlap: space.length, priority: ns.priority }) + if (ns.shorthand) + result.push({ + text: ns.shorthand, + overlap: space.length, + priority: ns.priority, + }) }) return sortAutocompleteResults(result, start) case 0: @@ -688,7 +746,14 @@ function sortAutocompleteResults(results, incomplete) { const namespace = possibleNamespaces[0] if (!dir && !start.endsWith('.')) { return sortAutocompleteResults( - [...result, { text: namespace.id, overlap: space.length }], + [ + ...result, + { + text: namespace.id, + overlap: space.length, + priority: namespace.priority, + }, + ], start ) } @@ -704,6 +769,7 @@ function sortAutocompleteResults(results, incomplete) { ? `${q.id}( ${q.arguments.join(', ')} )` : undefined, overlap: dir.length, + priority: q.priority, })), ], dir @@ -721,6 +787,7 @@ function sortAutocompleteResults(results, incomplete) { ? `${query.id}( ${query.arguments.join(', ')} )` : undefined, overlap: dir.length, + priority: query.priority, }, ], dir @@ -1702,7 +1769,20 @@ function sortAutocompleteResults(results, incomplete) { MolangAutocomplete.AnimationControllerContext = new MolangAutocomplete.Context({ id: 'animationControllerContext', inheritedContext: MolangAutocomplete.DefaultContext, - }) + }).addNamespace( + new MolangAutocomplete.Namespace({ + id: 'query', + shorthand: 'q', + }) + .addQuery({ + id: 'all_animations_finished', + priority: 100, + }) + .addQuery({ + id: 'any_animation_finished', + priority: 100, + }) + ) MolangAutocomplete.AnimationContext = new MolangAutocomplete.Context({ id: 'animationContext', From 945e7b94b489e0925ccb54f3174dfaba4e5e54aa Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Mon, 16 Sep 2024 01:06:43 +0200 Subject: [PATCH 140/153] Add property query arguments --- js/animations/molang.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/animations/molang.js b/js/animations/molang.js index fb91db6eb..7974c1dea 100644 --- a/js/animations/molang.js +++ b/js/animations/molang.js @@ -861,6 +861,7 @@ function sortAutocompleteResults(results, incomplete) { }) .addQuery({ id: 'property', + arguments: ['property'], }) .addQuery({ id: 'has_property', From cf1c8f45ee11dbe91926d1ed9f6192c61871c7f2 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Tue, 17 Sep 2024 22:01:45 +0200 Subject: [PATCH 141/153] Blend transition curve editor live preview and extended graph --- css/dialogs.css | 6 +++ js/animations/animation_controllers.js | 57 +++++++++++++++++++------- lang/en.json | 1 + 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/css/dialogs.css b/css/dialogs.css index 76ccbd0ac..96e8aa016 100644 --- a/css/dialogs.css +++ b/css/dialogs.css @@ -2120,6 +2120,11 @@ stroke-width: 2px; stroke: var(--color-accent); } + #blend_transition_graph svg path.zero_lines { + fill: none; + stroke-width: 1px; + stroke: var(--color-grid); + } .blend_transition_graph_point { position: absolute; width: 11px; @@ -2147,6 +2152,7 @@ position: relative; background-color: var(--color-back); margin-left: 8px; + overflow: hidden; } .blend_transition_preview > div { background-color: var(--color-accent); diff --git a/js/animations/animation_controllers.js b/js/animations/animation_controllers.js index aaf5ee0ae..4796473d1 100644 --- a/js/animations/animation_controllers.js +++ b/js/animations/animation_controllers.js @@ -472,6 +472,11 @@ class AnimationControllerState { step: 0.05, type: 'number', }, + extended_graph: { + label: 'dialog.blend_transition_edit.extended', + value: false, + type: 'checkbox', + }, buttons: { type: 'buttons', buttons: [ 'generic.reset', @@ -521,6 +526,7 @@ class AnimationControllerState { easeInBounce: 'In Bounce', easeInOutBounce: 'In Out Bounce', }; + let initial_points = points.slice(); new Dialog('blend_transition_edit_easing', { title: 'dialog.blend_transition_edit.generate', width: 380, @@ -529,10 +535,15 @@ class AnimationControllerState { curve: {type: 'select', label: 'dialog.blend_transition_edit.generate.curve', options: easings}, steps: {type: 'number', label: 'dialog.blend_transition_edit.generate.steps', value: 10, step: 1, min: 3, max: 64} }, + onFormChange(result) { + generate(Easings[result.curve], result.steps); + }, onConfirm(result) { - console.log(result); - let easing_func = Easings[result.curve]; - generate(easing_func, result.steps); + generate(Easings[result.curve], result.steps); + }, + onCancel() { + points.replace(initial_points); + dialog.content_vue.updateGraph(); } }).show(); @@ -552,22 +563,26 @@ class AnimationControllerState { duration, points, graph_data: '', + zero_line: '', preview_value: 0, width: Math.min(340, window.innerWidth - 42), - height: 220 + height: 220, + scale_y: 220 }}, methods: { dragPoint(point, e1) { let scope = this; let original_time = point.time; let original_value = point.value; + let scale_y = this.scale_y; let drag = (e2) => { point.time = original_time + (e2.clientX - e1.clientX) / this.width; - point.value = original_value - (e2.clientY - e1.clientY) / this.height; + point.value = original_value - (e2.clientY - e1.clientY) / scale_y; point.time = Math.clamp(point.time, 0, 1); - point.value = Math.clamp(point.value, 0, 1); - Blockbench.setCursorTooltip(`${Math.roundTo(point.time * this.duration, 4)} x ${Math.roundTo(point.time, 4)}`); + let limits = (this.scale_y > 188) ? [0, 1] : [-1, 2]; + point.value = Math.clamp(point.value, ...limits); + Blockbench.setCursorTooltip(`${Math.roundTo(point.time * this.duration, 4)} x ${Math.roundTo(point.value, 4)}`); scope.updateGraph(); } @@ -581,10 +596,11 @@ class AnimationControllerState { }, createNewPoint(event) { if (event.target.id !== 'blend_transition_graph' || event.which == 3) return; + let offset_y = (this.height - this.scale_y) / 2; let point = { uuid: guid, time: (event.offsetX - 5) / this.width, - value: 1 - ((event.offsetY - 5) / this.height), + value: 1 - ((event.offsetY - 5 - offset_y) / this.scale_y), } this.points.push(point); this.updateGraph(); @@ -602,19 +618,29 @@ class AnimationControllerState { } }]).open(event.target); }, + scaleY() { + let max_offset = 0; + for (let point of points) { + max_offset = Math.max(max_offset, -point.value, point.value-1); + } + return max_offset > 0.01 ? 90 : this.height; + }, updateGraph() { if (!this.points.length) { this.graph_data = ''; return; } let offset = 5; + let offset_y = 5 + (this.height - this.scale_y) / 2; this.points.sort((a, b) => a.time - b.time); - let graph_data = `M${0} ${(1-this.points[0].value) * this.height + offset} `; + let graph_data = `M${0} ${(1-this.points[0].value) * this.scale_y + offset_y} `; for (let point of this.points) { - graph_data += `${graph_data ? 'L' : 'M'}${point.time * this.width + offset} ${(1-point.value) * this.height + offset} `; + graph_data += `${graph_data ? 'L' : 'M'}${point.time * this.width + offset} ${(1-point.value) * this.scale_y + offset_y} `; } - graph_data += `L${this.width + 10} ${(1-points.last().value) * this.height + offset} `; + graph_data += `L${this.width + 10} ${(1-points.last().value) * this.scale_y + offset_y} `; this.graph_data = graph_data; + + this.zero_line = `M0 ${offset_y} L${this.width} ${offset_y} M0 ${offset_y + this.scale_y} L${this.width} ${offset_y + this.scale_y}`; }, preview() { if (this.points.length == 0) return 0; @@ -649,16 +675,17 @@ class AnimationControllerState { :style="{height: (height+10) + 'px', width: (width+10) + 'px'}" > + - + +
    -
    +
    @@ -669,6 +696,8 @@ class AnimationControllerState { }, onFormChange(result) { this.content_vue.duration = result.duration; + this.content_vue.scale_y = result.extended_graph ? 220 / 3 : 220; + this.content_vue.updateGraph(); }, onConfirm(result) { clearInterval(preview_loop); diff --git a/lang/en.json b/lang/en.json index 9a165e8f6..43e1362e3 100644 --- a/lang/en.json +++ b/lang/en.json @@ -626,6 +626,7 @@ "dialog.optimize_animation.thresholds": "Threshold values", "dialog.merge_animation.merge_target": "Merge into", + "dialog.blend_transition_edit.extended": "Extended Graph", "dialog.blend_transition_edit.ease_in_out": "Ease-in-out (%0)", "dialog.blend_transition_edit.generate": "Generate...", "dialog.blend_transition_edit.generate.learn_more": "More info and preview", From 83ca182424078993b9877a34e48073e25c1a8eb7 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Wed, 18 Sep 2024 18:13:20 +0200 Subject: [PATCH 142/153] Prepare start screen for 4.11 --- content/cube_knife.png | Bin 0 -> 61177 bytes content/knife_tool.png | Bin 24419 -> 0 bytes content/news.json | 23 +++++++++++------- ...flipbook_editor.png => texture_groups.png} | Bin content/tiled_view.png | Bin 0 -> 29209 bytes 5 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 content/cube_knife.png delete mode 100644 content/knife_tool.png rename content/{flipbook_editor.png => texture_groups.png} (100%) create mode 100644 content/tiled_view.png diff --git a/content/cube_knife.png b/content/cube_knife.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd23ae49f09f2dd143c8f71d7b342f32ecd988a GIT binary patch literal 61177 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 literal 0 HcmV?d00001 diff --git a/content/knife_tool.png b/content/knife_tool.png deleted file mode 100644 index c897c0c4a55296485abb3b049b43171e506ac959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24419 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 K3PsRo@BRlbAP?LC diff --git a/content/news.json b/content/news.json index cc157731c..51b7b7204 100644 --- a/content/news.json +++ b/content/news.json @@ -5,20 +5,25 @@ "layout": "vertical", "insert_after": "splash_screen", "text": [ - {"text": "Welcome to Blockbench 4.10", "type": "h3"}, - {"text": "The Knife Tool Update!", "type": "h1"}, - {"text": "Check out the [full changelog](https://github.com/JannisX11/blockbench/releases/tag/v4.10.0)!"} + {"text": "Welcome to Blockbench 4.11", "type": "h3"}, + {"text": "The Texture Group Update!", "type": "h1"}, + {"text": "Check out the [full changelog](https://github.com/JannisX11/blockbench/releases/tag/v4.11.0)!"} ], "features": [ { - "image": "https://web.blockbench.net/content/flipbook_editor.png", - "title": "Flipbook Animation Editor", - "text": "Setup animated textures, preview them, add, remove, rearrange, or resize frames in this new convenient editor!" + "image": "https://web.blockbench.net/content/texture_groups.png", + "title": "Texture Groups", + "text": "Organize your textures with groups!" }, { - "image": "https://web.blockbench.net/content/knife_tool.png", - "title": "Knife Tool", - "text": "Cut your mesh to create new details, edges, and faces and shape your mesh in new ways!" + "image": "https://web.blockbench.net/content/tiled_view.png", + "title": "Flipbook Onion Skin and Tiled View", + "text": "Use onion skinning on animated textures or create tiled textures." + }, + { + "image": "https://web.blockbench.net/content/cube_knife.png", + "title": "Knife Tool for Cubes", + "text": "Use the knife tool to cut cubes and speed up your workflow!" } ] } diff --git a/content/flipbook_editor.png b/content/texture_groups.png similarity index 100% rename from content/flipbook_editor.png rename to content/texture_groups.png diff --git a/content/tiled_view.png b/content/tiled_view.png new file mode 100644 index 0000000000000000000000000000000000000000..ff48553ff8ab0cb3016f8a2180f5b18fc6ab62d0 GIT binary patch literal 29209 zcmXtf18`*B^LA`)>||nlW81c|v29Q6-PpD<+1S{a8#~!p8*B5;`}^uYRa2+#)VZf_ z_wDm^_w$^IQB{^fMIuCkfPg@ila*A5fPnIXfPl0?fCK-sZVF0*fFMHk)714)H}fWU zadWn^b+9D&@O7~yxAd{Kf`IT@ugli^PQ~XY`RR&83Rwfmi>Cc$J7nxwL(;r;mhj`R7wx39rYIEduK zbyM%{_3K~GTh2h^#=92+xUorR+6j}fK;WF(15WA8UijO@s? zI#>RCYS{U6y}flMRM17VM!aZg!t)Rqcg?fSn>91*fd9$xi5JvxZE|dKH^f>E>R3K~ zKTIN};0%&L6Nq;i@)gn1MPVPqVid73Wbd(HUS2(rFTlKE-PAQYv(<>p#7$EmPV5`S z-1h9M9~&Xm*$(v{?f+GII~#m83;lW8M@HMJ!-g*QV@(9s)KHDw6u&yR_l^Y#^J*nG zou_XgFz8vNPjgigb~5MBC@PwWNJS>~dqmy+S#E%9_t!U-K452`azD1~<)Eo}G1Rs= z!$4RA`)`cQG3h`!$_m*1QmCSzm^>x%eAFep%xCKX<&jU@y8Fj$_u>HgW=(n}m2mST z!{&KsR0LEV^dW-&+Ln!F6qwr=YL|cOJC}^*7dGv8 zKCByD2cod>|J^kVe?mu_;$56-QOxlKtsU$3TOVnq*LAL+*MnsJX#<9^IRU(S>9(%-PZZ6CXBNG5SGHo z!(NV$9U-pt(Sn8W(3}oH=9AG<{tE5!t4x!kgo$AWtr{O^igws-sA2s>t0P#SXYAsi z$vN(4y_<5`+h=92#%WN^rpWJ0=W5Vc$;LfWDa$uyvvJ9{EnWh}{P?fe@&<T1$lIKZMqG{R$9skO8IB7i6>ImiYzw@rkLHfxPspU{LY?g?b`HNqjbK2iqU`^I@ zhR8O{2Y+j7tpQcy!qk0D$aM|n7NQ~$;zv7(QZ!bT=OW+*lvSb+`OUzwqIpO$L7k^& zPLQ*ZrRoHZlXs&Npsg%6owc*^vJ26em(|?^k9UH65`3?TFKxt`h^aFZ`F^i;ZoGl? zQvuqgA@9$;$D`0dorxzz{>vW(2Sp2U|Bc=$Eys<7ZoK-5DYbKKluH}y<4M}*@fG+# zy+RpUUf1xxZeN8EraRlKzrN=js%O1Izsf^er{HDd%;u?nWPQjTq^l)Hn7Wkr|9wh9K`-&{4C4Mq7Z(T<*iC1(6#;J zH)KD#)%I7bL<8FG2)x)=hg>(x01>?hP)JPBM)G805w~B$-@MJAa*1A{d>3ee534im8w8jg(4^JJZg+LrMce0^ zKch(HZC*|>)I9z@_s9!Oy+GD^_~)AD3s=l@=k?8OQr4v}^WHu-IfOspLre}h&vg^r z{QPljtiwz!WgKY2hGmMB>O`v_iME#RY?Pj> zrE8>ZFRQ#Xz1=KZM9t zk3G!Ja@zIc^)eG$W#u*nG|~Z;0p5tJbpQb0&gxIsKla+X=>}|s(iQu;mNN&l5B?3D zUYCn?t}basr=r?9;q;Y_1^7$8@DXdgm&0qXKe<^Xd9O+qVpRyRsr&Uew9cI!5GOVZ zMIgnw_PJb#S97|$G=ufYx;YEjA1k>Ova9M_&tdLdG`%ovAZwA`<8CNQZuogZ^1htn z+Q9zc9Q__MGN^r+nW*flBm%!1(J4d;k^CSk*=BhX*Nb^B9*4yjhe#~(TkBF2X4J=2 z%ZcBqKCzL_4-R+tZjl%Q(!x7{e;fL=g=R^Mb@>24ue|=K9ky)=%gtHUqlxG8U*L}D z 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�w_#>y5qM<6 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 literal 0 HcmV?d00001 From ac5aa285776cb7e3a29d826d82f249eb4ca6a3f7 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 19 Sep 2024 00:10:43 +0200 Subject: [PATCH 143/153] Fix resizing of adjacent panels in sidebars --- js/interface/interface.js | 8 +++---- js/interface/panels.js | 45 ++++++++++++++++++++++++++++++--------- js/texturing/uv.js | 1 + 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/js/interface/interface.js b/js/interface/interface.js index 440f810ad..384a092c0 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -154,9 +154,9 @@ const Interface = { }, getLeftPanels() { let list = []; - for (let key in Panels) { + for (let key of Interface.getModeData().left_bar) { let panel = Panels[key]; - if (panel.slot == 'left_bar' && Condition(panel.condition)) { + if (panel && panel.slot == 'left_bar' && Condition(panel.condition)) { list.push(panel); } } @@ -164,9 +164,9 @@ const Interface = { }, getRightPanels() { let list = []; - for (let key in Panels) { + for (let key of Interface.getModeData().right_bar) { let panel = Panels[key]; - if (panel.slot == 'right_bar' && Condition(panel.condition)) { + if (panel && panel.slot == 'right_bar' && Condition(panel.condition)) { list.push(panel); } } diff --git a/js/interface/panels.js b/js/interface/panels.js index 034e964de..4b64dc010 100644 --- a/js/interface/panels.js +++ b/js/interface/panels.js @@ -15,6 +15,7 @@ class Panel extends EventSystem { this.growable = data.growable; this.resizable = data.resizable; + this.min_height = data.min_height ?? 60; this.onResize = data.onResize; this.onFold = data.onFold; @@ -153,6 +154,9 @@ class Panel extends EventSystem { let height_before = this.node.clientHeight; let started = false; let direction = this.node.classList.contains('bottommost_panel') ? -1 : 1; + let other_panel_height_before = {}; + + let other_panels = this.slot == 'right_bar' ? Interface.getRightPanels() : Interface.getLeftPanels(); let drag = e2 => { convertTouchEvent(e2); @@ -162,9 +166,25 @@ class Panel extends EventSystem { } if (!started) return; + let change_amount = (e2.clientY - e1.clientY) * direction; + let sidebar_gap = this.node.parentElement.clientHeight; + for (let panel of other_panels) { + sidebar_gap -= panel.node.clientHeight; + } + + let height1 = this.position_data.height; this.position_data.fixed_height = true; - this.position_data.height = height_before + (e2.clientY - e1.clientY) * direction; + this.position_data.height = Math.max(height_before + change_amount, this.min_height); this.update(); + let height_difference = this.position_data.height - height1; + + let panel_b = other_panels.find(p => p != this && p.resizable && p.min_height < p.height); + if (sidebar_gap < 1 && panel_b && change_amount > 0) { + if (!other_panel_height_before[panel_b.id]) other_panel_height_before[panel_b.id] = panel_b.height; + panel_b.position_data.fixed_height = true; + panel_b.position_data.height = Math.max(panel_b.position_data.height - height_difference, this.min_height); + panel_b.update(); + } } let stop = e2 => { convertTouchEvent(e2); @@ -641,9 +661,10 @@ class Panel extends EventSystem { let show = BARS.condition(this.condition); let work_screen = document.querySelector('div#work_screen'); let center_screen = document.querySelector('div#center'); + let slot = this.slot; if (show) { this.node.classList.remove('hidden'); - if (this.slot == 'float') { + if (slot == 'float') { if (!dragging && work_screen.clientWidth) { this.position_data.float_position[0] = Math.clamp(this.position_data.float_position[0], 0, work_screen.clientWidth - this.width); this.position_data.float_position[1] = Math.clamp(this.position_data.float_position[1], 0, work_screen.clientHeight - this.height); @@ -663,29 +684,29 @@ class Panel extends EventSystem { } if (Blockbench.isMobile) { this.width = this.node.clientWidth; - } else if (this.slot == 'left_bar') { + } else if (slot == 'left_bar') { this.width = Interface.left_bar_width; - } else if (this.slot == 'right_bar') { + } else if (slot == 'right_bar') { this.width = Interface.right_bar_width; } - if (this.slot == 'top' || this.slot == 'bottom') { + if (slot == 'top' || slot == 'bottom') { if (Blockbench.isMobile && Blockbench.isLandscape) { this.height = center_screen.clientHeight; this.width = Math.clamp(this.position_data.height, 30, center_screen.clientWidth); if (this.folded) this.width = 72; } else { - let opposite_panel = this.slot == 'top' ? Interface.getBottomPanel() : Interface.getTopPanel(); + let opposite_panel = slot == 'top' ? Interface.getBottomPanel() : Interface.getTopPanel(); this.height = Math.clamp(this.position_data.height, 30, center_screen.clientHeight - (opposite_panel ? opposite_panel.height : 0)); if (this.folded) this.height = this.handle.clientHeight; this.width = Interface.work_screen.clientWidth - Interface.left_bar_width - Interface.right_bar_width; } this.node.style.width = this.width + 'px'; this.node.style.height = this.height + 'px'; - } else if (this.slot == 'left_bar' || this.slot == 'right_bar') { + } else if (slot == 'left_bar' || slot == 'right_bar') { if (this.fixed_height) { - //let other_panels = this.slot == 'left_bar' ? Interface.getLeftPanels() : Interface.getRightPanels(); - //let available_height = (this.slot == 'left_bar' ? Interface.left_bar : Interface.right_bar).clientHeight; + //let other_panels = slot == 'left_bar' ? Interface.getLeftPanels() : Interface.getRightPanels(); + //let available_height = (slot == 'left_bar' ? Interface.left_bar : Interface.right_bar).clientHeight; //let min_height = other_panels.reduce((sum, panel) => (panel == this ? sum : (sum - panel.node.clientHeight)), available_height); this.height = Math.clamp(this.position_data.height, 30, Interface.work_screen.clientHeight); this.node.style.height = this.height + 'px'; @@ -695,7 +716,11 @@ class Panel extends EventSystem { if (!this.fixed_height) this.node.classList.remove('fixed_height'); if (this.sidebar_resize_handle) { - this.sidebar_resize_handle.style.display = (this.slot == 'left_bar' || this.slot == 'right_bar') ? 'block' : 'none'; + this.sidebar_resize_handle.style.display = (slot == 'left_bar' || slot == 'right_bar') ? 'block' : 'none'; + } + if ((slot == 'right_bar' && Interface.getRightPanels().last() == this) || (slot == 'left_bar' && Interface.getLeftPanels().last() == this)) { + this.node.parentElement?.childNodes.forEach(n => n.classList.remove('bottommost_panel')); + this.node.classList.add('bottommost_panel'); } if (Panels[this.id] && this.onResize) this.onResize() diff --git a/js/texturing/uv.js b/js/texturing/uv.js index 110027bd8..1c4467a5c 100644 --- a/js/texturing/uv.js +++ b/js/texturing/uv.js @@ -2212,6 +2212,7 @@ Interface.definePanels(function() { float_size: [500, 600], height: 500 }, + min_height: 200, resizable: true, toolbars: [ new Toolbar('uv_editor', { From 4a61b401cdc0be7c6ad9a90b98ad98c13bb6eca1 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Thu, 19 Sep 2024 22:42:51 +0200 Subject: [PATCH 144/153] Fix "0+" at the start of keyframe values --- js/animations/keyframe.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/animations/keyframe.js b/js/animations/keyframe.js index 97932130a..d840c0bb4 100644 --- a/js/animations/keyframe.js +++ b/js/animations/keyframe.js @@ -154,6 +154,7 @@ class Keyframe { value = trimFloatNumber(amount) +(value.substr(0,1)=='-'?'':'+')+ value } } + value = value.replace(/^(0\s*\+)/, '').replace(/^0\s*-/, '-'); this.set(axis, value, data_point) return value; } From c3d111bbfb37515ee0ac798903cd71c27ac29040 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 21 Sep 2024 21:17:53 +0200 Subject: [PATCH 145/153] Make jump to timeline start/end respect playback range Fix toolbars not updating when changing playback range --- js/animations/timeline.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/js/animations/timeline.js b/js/animations/timeline.js index 505fb8fad..d5805e4ee 100644 --- a/js/animations/timeline.js +++ b/js/animations/timeline.js @@ -1806,7 +1806,8 @@ BARS.defineActions(function() { click: function () { let was_playing = Timeline.playing; if (Timeline.playing) Timeline.pause(); - Timeline.setTime(0); + let time = Timeline.custom_range[0] || 0; + Timeline.setTime(time); if (was_playing) { Timeline.start(); } else { @@ -1823,7 +1824,8 @@ BARS.defineActions(function() { click: function () { let was_playing = Timeline.playing; if (Timeline.playing) Timeline.pause(); - Timeline.setTime(Animation.selected ? Animation.selected.length : 0) + let time = Timeline.custom_range[1] || (Animation.selected ? Animation.selected.length : 0); + Timeline.setTime(time); if (was_playing) { Timeline.start(); } else { @@ -1867,6 +1869,7 @@ BARS.defineActions(function() { condition: {modes: ['animate']}, click() { Timeline.custom_range.set(0, Timeline.time); + BARS.updateConditions(); } }) new Action('set_timeline_range_end', { @@ -1875,15 +1878,17 @@ BARS.defineActions(function() { condition: {modes: ['animate']}, click() { Timeline.custom_range.set(1, Timeline.time); + BARS.updateConditions(); } }) new Action('disable_timeline_range', { icon: 'code_off', category: 'animation', condition: {modes: ['animate']}, - condition: () => Timeline.custom_range[1], + condition: () => Timeline.custom_range[0] || Timeline.custom_range[1], click() { Timeline.custom_range.replace([0, 0]); + BARS.updateConditions(); } }) From 1cfd9a2e75037a3279537b61f46b5f75f0baeec5 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 21 Sep 2024 21:46:15 +0200 Subject: [PATCH 146/153] Disable fox display reference object in bedrock format Fix display panel aligning to the bottom of sidebar --- css/panels.css | 2 +- js/display_mode.js | 10 ++++------ js/interface/panels.js | 9 +++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/css/panels.css b/css/panels.css index fc1d56cd1..61bd55387 100644 --- a/css/panels.css +++ b/css/panels.css @@ -111,7 +111,7 @@ .panel.fixed_height { flex-grow: 0; } - .panel.bottommost_panel { + .panel.bottommost_panel:not(.topmost_panel) { margin-top: auto; } diff --git a/js/display_mode.js b/js/display_mode.js index 11868cfd4..cf4c43891 100644 --- a/js/display_mode.js +++ b/js/display_mode.js @@ -234,6 +234,7 @@ class refModel { this.name = tl('display.reference.'+id); this.id = id; this.icon = options.icon || id; + this.condition = options.condition; this.initialized = false; this.pose_angles = {}; @@ -1211,7 +1212,7 @@ window.displayReferenceObjects = { armor_stand: new refModel('armor_stand', {icon: 'icon-armor_stand'}), baby_zombie: new refModel('baby_zombie', {icon: 'icon-baby_zombie'}), armor_stand_small: new refModel('armor_stand_small', {icon: 'icon-armor_stand_small'}), - fox: new refModel('fox', {icon: 'pets'}), + fox: new refModel('fox', {icon: 'pets', condition: {formats: ['java_block']}}), monitor: new refModel('monitor', {icon: 'fa-asterisk'}), bow: new refModel('bow', {icon: 'icon-bow'}), crossbow: new refModel('crossbow', {icon: 'icon-crossbow'}), @@ -1227,11 +1228,8 @@ window.displayReferenceObjects = { }, active: '', bar: function(buttons) { - $('#display_ref_bar').html('') - if (buttons.length === 10000) { - this.refmodels[buttons[0]].load() - return; - } + buttons = buttons.filter(id => Condition(this.refmodels[id])); + $('#display_ref_bar').html(''); if (buttons.length < 2) { $('.reference_model_bar').css('visibility', 'hidden') } else { diff --git a/js/interface/panels.js b/js/interface/panels.js index 4b64dc010..dbc12953e 100644 --- a/js/interface/panels.js +++ b/js/interface/panels.js @@ -679,6 +679,7 @@ class Panel extends EventSystem { this.node.style.width = this.width + 'px'; this.node.style.height = this.height + 'px'; this.node.classList.remove('bottommost_panel'); + this.node.classList.remove('topmost_panel'); } else { this.node.style.width = this.node.style.height = this.node.style.left = this.node.style.top = null; } @@ -722,6 +723,10 @@ class Panel extends EventSystem { this.node.parentElement?.childNodes.forEach(n => n.classList.remove('bottommost_panel')); this.node.classList.add('bottommost_panel'); } + if ((slot == 'right_bar' && Interface.getRightPanels()[0] == this) || (slot == 'left_bar' && Interface.getLeftPanels()[0] == this)) { + this.node.parentElement?.childNodes.forEach(n => n.classList.remove('topmost_panel')); + this.node.classList.add('topmost_panel'); + } if (Panels[this.id] && this.onResize) this.onResize() } else { @@ -802,8 +807,12 @@ function updateSidebarOrder() { let panel = Panels[panel_id]; if (panel && panel.slot == bar) { panel.node.classList.remove('bottommost_panel'); + panel.node.classList.remove('topmost_panel'); bar_node.append(panel.node); if (Condition(panel.condition)) { + if (panel_count == 0) { + panel.node.classList.add('topmost_panel'); + } panel_count++; last_panel = panel; } From e379edef1c9f69df5abdb52c095a8917b8de2f20 Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sun, 22 Sep 2024 12:53:47 +0200 Subject: [PATCH 147/153] Add 4.11 splash art --- assets/splash_art/1.webp | Bin 154410 -> 133954 bytes assets/splash_art/2.webp | Bin 119208 -> 204626 bytes assets/splash_art/3.webp | Bin 142944 -> 206136 bytes assets/splash_art/4.webp | Bin 149486 -> 0 bytes assets/splash_art/5.webp | Bin 111924 -> 0 bytes js/interface/start_screen.js | 14 +++----------- 6 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 assets/splash_art/4.webp delete mode 100644 assets/splash_art/5.webp diff --git a/assets/splash_art/1.webp b/assets/splash_art/1.webp index 0bdb202dd5f6c2c076da33a3e2b28aad8821fad2..44de36e00ac713a677b15caa2a8b3bdca5dd2a92 100644 GIT binary patch literal 133954 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 z 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 diff --git a/assets/splash_art/3.webp b/assets/splash_art/3.webp index 6d9a356a2dc375a02a29d7ce6d79e4b4413f8956..a68305b0d2962d7fd0497812db6c1459aa7005c0 100644 GIT binary patch literal 206136 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
    hctP*7B6_ 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

    =apx($;k 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

    g^LKETvfKgqRJ9A}m& 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 Jz}*vse}&h_8jN{t>*}a%Nk}dIpyS-a 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 z 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 JLpt^W0060mE>Hjf literal 142944 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 diff --git a/assets/splash_art/4.webp b/assets/splash_art/4.webp deleted file mode 100644 index 7f5d1ba3283e8e01c0ca81192bfb8a788a16b7fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149486 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

    i{bvJ~HLdriaZLu;|?pjk+? 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

    G!EV@#Mp&3e;mLHh+1H&)7OCV((zF{MmE6o zwW35m3{wO04&kps`}S6LGGPw}cKS<86EJ}ykux_o0}>nKl${X%H^8I1>hfX}iK4{n zj#mAnUD3^;zm+k6OY`EMZQ#wqIw636jo>iaW%mQ5nZ~w2s(i6P2WR(GIxCu!NAL8Y zsfajZj=f?9`mVki(75)glG#XO#WlOL?Mq`HBI+SY2y1*j>$RbKgJe$ciA zzB$Cr2-M7g7%!anp~M1v01IKK`!AKUrI-1yHmS*9Ri7oWGeRux$jHrHB47dK%!Ke> zIa!$4^|0>ndL~M(@HStTQR_j@DDVFJ2W%HmyI%`-`46hY2>VI?wt0lpfcKwu-QtOOai*MkjI4SCaw6^O znU?JXoJ)C{3`(jE-VUq09|>%eR?!CRQaMFHg(SNn;W~}KUZgKw7!f-JX>VH}g!RiO?O*eMF<-17cxiQr0=*7AZmLp}Jw$T8 zTkpi5qBWysVz`9+BdFVuntsthHAmRiQh~7+r8rK-D}LG@Rwr$ZJarDL*d8JIKo#ZI z&i?(!g;(~I*vd5u0PAsb27P@wCQ>F3_js8QWn?vUW3Oz2f7a&rZ;0m0+Cy2+O5S)s9xX~k>PDbT(OuoJ@vk-CxsK(i6IkEa#6t2avfF`QfOQ6BEz8sps@aT*jk4Nu`|w z$opgi)*+-kC@+6x?im8c^Y+myZ%8EH?+BgKiW>Yoo-jf6KLm6-8xD~N>y$5}*hqO^ z%JIfh4u!0C%feE(&1ar?V2Ug_#wEecevJUDD|U@_N_XyhRkfuU1=96*Vo=O=hc=>q z7^hj`jN#ZKb7l(3-j-g_e-b*DxLO&j2$lKJfAM>EGm9C0!XA){jxQpg5J(;phdloo z45OXnT7^*l4{70}81n0*C}La{*X4UBBPhGeuH^aqBZCQk0b9{DxyOYn`V4sPA}K_|M+eEj}>Uf^hQhky`lt>heS zjG9!T^56unfr!!HN0SZNa;xDt4KP@x5O0*D==kkLHU}-^K9SdNP2WhexXHU z)=hu13-b;c`Vb_Qo6Lj}E^=y$a)6ckqH>vWd*5m$ADg*AdZZc3$8WwWZBrCZWK_e> z7eGdkX^+1{E%?88$?z1{3_Uqm%6?|;)B{WvQ&K5Ugi+02YZ+BV0>d-MkLEjsQ?7tJ ztPZ(&VLf97BPW=xn0ko7uKV>E&V#O_dHt*Hr)4^4NRfgy$j(YgAPSJU^=ho3kE6*o zAO#F<+vzlF=BErvNhxHgXIX#4Q4tE&#V3FYb6xq<9kO`Qff!>#<(<1aM(Jz?j_Yb)xF&d z0CAxxG?p?R3#uC8GTuJbqtliBUw8w$`t42Zjti_&Bu1XeX284BW?7uhB)|%%{V=YH zufScw<17y-^G`SRm!u^B_($V9DL};%i+<7|c9P%ojoX{7=KeubQ4?edjTX~2_a z#S2EZlRoa8?f59~)}7-5Urq!>tTF^^H*spXf=aPl8RXi#Rf*PFB|4@7V6V4(b}))r zURfo-mW81SldWnJ{7Xpe>hic>wUnF6r4bf%+kx`KQyH_77lR=m2lH6xTR+~EGVOPe zQ1fmYyv%_L=V?r_q1UD+tdrIM z8AO1KlARbiJ|_h^=sa~;crHUaO!S*V871Cr2>WjnH^tA(8)=k!Zq`AI0t=}*qfjxDP4^X_alY6%>t2l=F* zVjJ~WxGRY`y{z_C=pdDm_s)D_j?`HS$wLATq4t=cBCFTa@uR1cf+_g(Mn@`7@G?Id zWH2T{9J&Y95rqW!{=?9{F%6+^Vz>5EC^I;rUf0swsMczXaa_{kU@FF+7>Tn8<>1V+#Parop~Fl(D>c zzqC6ve59q17O!(Wso1)VtLQ7?+4)71woyC7WKj^FcvCacFty31+)tOwyMHcQjv`19 z?vWj^Ljh;^p=>^|ZAMqcCn#dA5 z%c8JkJXnYwoDJpm#H`b6WIHCsHjVN+$2 zVBmDlpZibyOzetnczq6ko3SgP74I?DsYml%sab9SdFcRfXPpO5$UCDfAxf=(Qiu$6 zm1!0S(}ez^{RRZ7zO@@k-Jb@scNrC#)IF?+o|Q5eI;DND>fOpTXpMyurc5#Lbo^4bf11} zyW_DqS2z;?>em!P*9};6X&(pk5QkuLGKd(y+8@puICaIRZ`Et2+d<4%Me7LHkXI$G zIjr1=UW>s20`V!Qe=S$)f^akMmsNbuKY3Ysu93)1O2TX#hyh_J-aIHv@SQG z=$V*M@UpNY1U%bCWC~i&A;gOcLf{!sim;Ak>*@0kM6|C5>x!>f?RxFz^ThNs@|lVGdyQKbXw+B zeOKquan6%;qZjS*4&G%{NZaQCy>n-py;1Mn7*80!Ds{li`jbN{T?rKXugk}So!i{f zC>F84V(pbhhlK8TkcLclP>vZfTv&_l;}(hrufFWwZ4JWG=N-ds%H$3bi!Fh_@hm3+ zfq(>f3a`}f1b~ei>{_jajhsNShJ){*q3s?VnG#^YJYtzRf=F!F>KX64h0F*Wosqbh zC^?!ro;)M%&3knundEU6d*d`;9ZD4&?`3fAreoG!3lNoW9XdZ69zdZPsQlIj=PtrQoA#I$~DF9_3_n%sp86T_sv_vB5XcGDsGHC?#Yh=(|KEe)qt?b30d2ouMf?J zCx0fUH;GL(S%W;mS+trwqrkUHP`&Hmtp=Y(hBFI5g9wE7;?{!aXxX^9I*A(^g?a8% z#~i(g9M@(jpiNm8rFb64H$$lMr1}(b2uvV_xeqWq*_9`zhJzsn$I-(BNyZ=9O&gr$ z@-+h9I@D~k_Dt%xu2ac!79D+j-HpB#$0WLbj) z<~P`hSMP860m$^RGn}e`nSlT_(kt&gGOywIhw(L*JpNgL- zcuh-3dIrN^;y^oGx6eL!!Pt&nikxyNJ2_ET~SLP z4mCy|>}27C^Tjy_BEMvRJ0yhSr0AaRj2B2!>V_4T(a15lmt$DDZl_v)EF5kfkc&v+ zW0iJ)^$|LdYFgC}BuEKdzQ!eeJEn{(;#L$XN*--gpi6K|vv9VWj>8dyY2t5APJgQ3 z^>l(-nmr%B!cenq;@cS>Vm+|f<)H))SxmZ$Ry;t0)T|(x^2?~AH_3IfE#XPxAo(V4 zug!8Jk6hT*&ss!?{sD95)7nJ-?@JuE^f6|~0M`3Sp1jiN?+DnhMX%#W>Zx7NMJ5o) zeOGKcXN>B{ryrx5r%)&S3wnB-hSlz=EG@a4{FTi&*e`u+T4-Dd>}DCVA>_VkbWSa` zCP!VMp7f5mSBZ|C_^TP@rYaf+u1wv+jfE5b9x}_*9jPxL*1qdVrWd~Yb z4d)bLa~Op){gXN0nIyl7nhq$@SKijBSNKZ}HqpnpgJ7SJhP*BJ7^*jmyZUP*h(5AV zFi>BAj3Si_-@-mMC-q?&!teuypJhlh;8h8t%5SmgH5J^>$ja_Dh&A4=TkmVD(6)2wQ#FPqYklLa;7an?1gEzunp{x!=G`YY@wHCZbO=1NM>g*4! zjd8Z5j1SHI9K*u)>IYWA4<{utnfHA7^-Pk@!>5D`HWxBrq!C_*4VhnCh{4Q3&=)M%#h; zIYpkSH(U8cI98qBF1g(y2$BjsQxk4SQHf^p-5GSa<8&46=j1#c5!S>n$A-L`lV0Bv)d7e|h zCTY+b6IdZ?l&ueENexuSamiMnyrchz3=V`$Rb-k4_S>m)<9f(ec@8E2#j+8bA|KC9 zc615LeP)31L$v0w<;jG{YT0R%6Qm-BSlFlOnISX#Dr+Oe(-2`cflpB`w>lw7C2>qy6QguPOAU$3ujj|7>PPu& zCB|_{-aPu|*Z=wAjU4oQj~AG&d(qhK@acdgAu;9O4vmh8E@FU{YyVtB0(2{2x&Oz{R*WE|4ow%^)vjKR2vUp#{} zSw2W*7Loo-C66L}2|8o7Hr2Wh#oK~Ae_$KX_8B|B<8(mvGE$I!ePJwXR55^xW>(|9 zC4zSv`DN;O;QtUaHt)1Y=Y}hE(MdtCDT?5Li zIPP5}!bRAH3}_%~EN*oa(nmLgOR?wc?|2h_kKZ`=w0mw-_8tR7*GfmT6ic$d%5+`0b**T0fkUmInxGwKrKK5TLCi_ zDc+mkhfunw`s?M?p49d$KNWszNwDDfrSc52WH2QpBte#;KWn~tNjdqpgt{>H2DMMK zbpD;21L0D+-VR6_Fd84l)at_g6J)vJ&1J~>%1%()y76k?8%P%cV(jm-uDujhrSs6) zMs_|HqJO&te$bL$^RgLbz1Stgr+CcNW_7Qlc1)yHcA&@`=%&dH!VI4#_)sqLkv7(< zo&o>im#JG!)g;sPv9P?6NBCm(Tsfw=iJKC;|GKx(dHpP`4lgB6c@5{#jBN~zvH#lZ&eaR%xv+l-I)v|G_-d86 z5f+pTA``aNFJ3c3Gs{iazNFH5G2-m@KVqwI z`T^vcA2&bar5K&%gop=)X~X!S#<=8Al+?PskT!GOAje?nGE6~nM>;XB-#i^mcke(m zSaysOMBcFgBY`n}pJWD7HxztEN9ZXgTA!9mrl4 zt9S^nz#Bg2fu}GEU;VuvRFrxTFi%OYAx1PTKc1FWdrl^}oCLr;+I{JOR@4#iLV6y7 zr0n?6yU`*fFX1TB07_K9X+@6j6!2W7zalm-Qf+S#eXLJgdLtSOvCib=E*4rYw)JmU zcYN9!H^rv9ef4!_7b*DF8=~L1p;Ep#NF$s}4-UPbA7HvnApqV7wK+ql8m&cNjxLT+ z(JMsC06N5SL0-T$>?i1Kd}^EjEF!lE&Mktq2+{mEP{>}Usq35a4?V@uj!e-+UB2@P zugN2i?%zS$wTnu}sIrw*sg@|#hjzg2M89z%8HBXm^uaZ`@EP&OO}Y{J*sB_oj@IyR z^Q)IUu^XNqp!NapR;(*UH@iU{L0&)K!aM&BLc)W_LZU!bNoY&l>1bg`vE`iFNEeB+ z<4D*16ugt0Nxp|*_`7^d;P!t>B8#mwm&}(GRa$oU9eY<~!TC?IPDG@Vchu5p;3Y~o zHcjI3aqWWZZ6L#vv_vvWN5DDZs-{H#@3V8UYHmEm?KP{jV$Js4mbN6tcI z@>C&8>0*M1Nw3`_iJ^{3ToY0SMBU57u%40wBO~UE-6Oc?U#Qqx5Wo%c;oY)T#qGQC#SN4 z-~ls{WLZ00dWHreWcjN%o|c-o>*tJ9gR2Z=Rzk#IBG@5py_717u{y*128RL9nAgZ= zBG!>N!CpO3$;f( zm6?%k#nPfF8yC6CxYfax_r;eQ*IQbA+XqktC<_+76QE=!uKk=aiENW8mB1nhMRB7B zF|{dF>-^vjFFl(Gz|gy)edI)krNfQcY!n~BT1}1*2w-s$@AohJ?@`4CG#|BI>ub$= zk+0IzSyF~kZC7Nb1$e@x67jB}u3$~9L%hY)Yws>n;}K4r6^av=r3ouRO+N`Y;}<67 zkH8(38-a>|jlg-I$6>#gi(V5zA973nLziV2DqNb^gR+yiRX?XQ1l#>4sA6|6<*pU> z!ajgL{}x#yT>hqFp3k$Q-GFYk{C}q6HYep^M#d$R3a?@+v(v)+yF-S7!Q6ov$0^+N z0sdTZg3EX|RlTW`MhIm6WAvG@r?Cv@y-Tm>7+YjLGcRj0VfTr~@tJ%Q87u8WIEzfg zvHhs_mGdpWfq?)}tLpJ`e6O&`Hx1H!#R_|UQ$5IvuwdV6sq{Ke_Xc#_5k45EttSu* zHDxN2i0K$mX@t?JG|&`pANwe*6r}?S|8sT%!rj)i%)_cCf6G=duAkJ?;6~--6Z4L) z+srQO6;y}vPO7mlt^7B?{vpWmx!w3Dn2~_#iw+Bl8G@F2cTB6`yCTp-i=GN-!@W;zBipz?w+dD|z zQ=AqD<-!qU*8kS+zi){!oED;^aUB|E%OC5SYGBca!Uv@CA zsHajOXLerg#IvP^P7j_cv6lsWbH#0b6e6$*$N?K6HWiI3*Jg*qzouxJTgr|<2v0j=zU0gfJLEI2Y5*t(8FVuZk3Cp3uM)Q& zbfFhH-h4@xj&7BSyrVhm6%J2}MX_~4ROn6TwEGGu!)V?cEjiBs8kC@mddlmDo$UFb z2eXl}|7#+@u~2-`i~2tzo^4$8^8yfs^g`){>hoo|#DzcN1&#u+fbcwgh^=+?8clPPeApqAN$!y`VKD?kYC5Cj(GI-5=6JAXHVsnqvTFFcx!wDhfRjMpR*7V0A zrf=Cj0=YP+M&;ZIao$HL=2&q|9=a8=g|W<49$xAW(z0#P+LVcNyig4MmuYpU4s?q@ z2;E*H-9Oh`Dd;gu=PFy8meU^Y3rJeE_FSv|Fi2>hB7Ub^olR=uy76{$oYAHpXeRK) zOJR*9vTdToGk_8Z6~&&w4J3jVY6Txm_TCYy_V24sOd#rBZ%F)QATbS+;0VC8u&eIZ z6i876WlwlB^f`52HPw|Fl*oQxiA_$)lKTu5L0qAel$vY7s0xc?7VY^MGx!P{-`1h3 zo|jc@De*f0J&VgBx_HVh6;iv`3vSZ2NLO$WBd6_*i!Ey+GI9WjSeYF%38`SSgq^0e zzSoHXGb4#92NW1&o3=#l0KNezDD6HC*isZi7PMu0-uD6a1{)CP3D8TjW1r7(C~Wn0 zH&}dxK>3kVAbq+ydF+ruZh#z~v<8~c4pEr-6+RI{JP%hL&twFdK5Lwvvm?xvW}h9y zLC`O2)ggP5_Nu0x^+d-6M60zc`{-~YK%=>VW4DpCnJhBd_-9{l&+|s0^aTiDO4y^X z4Wz7a;wFIWH&0W3nR$00!+Z-e)s%l~Wur7NVs+C=8|8Zdp6CQ3dKY%KH*!QpbH%UZ z%yI_LHxotsU;m)oGkFYj6OK8yD&mVw(f#HVe~GEZ5{xPs4 zH5+~qzB{d57yMiq3c@FG#tJm0V&_CZ&uNzy>v8p-dJi8t3SltZdcUsCLd3+-4<~F6 z^JI*5dPH=eSSKYg0@5-B^5r|TnExO8`ULX|HH3&(T0qApr4A8PvOmipH+6j*Vu?JQQvm{+ zRFPw>+mjv-|KFcE?SB{TV^tJkD@%Y(>>SQ8vCm!v1>Ag_-Jz!$K?=H!_xUS~03DGt ziOYj#O$n$3PI7%+he%H%$PnDMI3zzNU%wQuPcZefhS_oVCj*+Ty*v^nr=URBP?@2Z zQCdjspMBcVsh2V1}Myg?+}!El66771M&#O%X12-Hxt z-V`)FLtlg}N47)WDB7&#f?iuE9rJr6q5t~V;UiYw?=~uwEsja>`RwbB_*9HD73&8- zldNe>o9CxboMi*4l&#;~2WLsUdRFL4AIp~a_>|e=BIEPd5?4r^6f4xRgi-`-7{Sft z>^faJW?t$09=4imoIsSZsLf&;Sr)G=ghY8>9{-jR4>)J`<`n=5Xt0@@-#feCZEh3j zF4JF1+*7#3IU_JDwX>Hgj2sPgrp7)pI{|T)>csbrQg0 z#AQ1zT*_pN!C8-ng<&WzU^lB(cjm-9du?W1914X`gL#m3 z;-{uav(1hp&vc{V*3Df71|7JK_7H41^>aw zy*HtNITvSrH&qT2j8ga@D%Nec1l_dsi8T;V?36JL5%m6_bKZhx^8y83MC~g_gPUIn zlw7ms08Bu$zb75zJOO&|_w}uI9qSMpXhw2b+pWY=>`a8{Q89(K*}brlmMwyTQY@%Y z5ZUk2u21o8#R!OdQ6Q{{H$J9ER=CZ{|U-#YD@D##FC zDoW$JxpQ$mXql3R=?}czu+IZ;nznT@ak~*s^*~Vzn+912L^&nF}0UJ^2 zds@;Xl5_Lv?j?jfzr?5L?5%MX2P+#pHrokld!l{%z9J;sf@2g8ZwD;b$0F0GXXBl= zYK(;ZWT9qP{BqmCora%|{3MP-jGpgWg}ehqD_aZ3+O0D79doAGy&?ISB6e^0hFwz) zOEAuiHTlI41ip>%1h;V^nGQIK@vPI4g_Nl$@rO zRpW<#Rbte8Sv3Mi)jI3cYH!9If4T}*1s_!+%`bVt@599kf-Bv)#9newo84DKKlom! zEg0v;XW?8xEz4h0BOceP-uC~(s!S3jya|8LZUrQzSum9CYK~Ga%yU((Q!HBQQkm1L z65DuowgHzv$djSWzhZ@ku71ts^E+&csmu<4(pi(6HRC>yDGsB}V}6D0&e;d%Tih1t zeGBA-WfBchhdIf*)=*+jO4T%RwitBJJ{3Rv!3`Y2y*h(NS zpXK~r%Xj2!$WvH%lH=GqnJ}s~&AN>SnhRcm$d?i6!Dz8w`p2Uk5r28i+i3=>rLCcM zi^f|8a-DTOLL-;ChsXs1&f_l&WA@%<&(P>@+-~&N9zpm4y{QPOG=|mlKm~6oEtsZP zpJetcX4yv>M@tsmBlK$z!Z+MU3ce0q|A12E<;5QifXy;Mea7lr9~qt!`Hb1C7+0lA z)GNwp%U}sK7IEI;sTYe);=}dxB<3cT2El%Q&_OpQ0j-BOmT4v(bDof*uM!dNmAn}#Ve55$ zP}d?MScDO&T3OzGePlj~;CvC0!<7iZeoyR1lBMY6Ai_066;ndlj}ghKnGIkZbYHY5 zebcq-?QYK;q#+p-)nu*Bf{<0Ta5HMB)w`#j9EiQ$RInYTLT7yMt^K@s^{yAKnjPZ{ z+&=BO`fz6d6Lh~|ty!}LH3fE4MuU3Spo5*t83QG{awuSD6|&|}JXFexayoF}8mFB4 z0+05p7N<@=o~HI5o6p*Y94C3D4+K|w3TctC9DA?_#uDQKOoaKRjp?~UBU|trgA>Vc zes|AoD{_FMYoVu#N^g3ee&~RJ5On9L5R(YY+#5NAaCF)V`*Uf!0oUx=YkS zt#y85jG<@G+kAPS>WmUJ%|E2C>5@-iq5bJVv^!($fS)$y5l5#IzF~}Pwm5fGn@a(v z9G(25^pn^p-Y?CNU~m0Y>vYzY5UtM(=h$q_3t{{O^1N5sgb)e8F~G;BmyZGEC*d~^v_U6M#oX3f<| zpXoNoF8Bwt4UK7;$`We7>DR_Puxn7>lZ$Cgw%8M4rFhs!%Qot9`Ue$*=MStSTo@dr zM>(s{f^R|^#(ZVCpwmOj%c{fTn^P*7!>If>B3&=*gXF3Wca44V4V-A8i6!eJ<4hV$a zys_r(y>ga4k`uZASxw~Mm1};9@4kDy9s@T&WPX~xE%o{F8-g1u(V52Uo%{|&TF&Vo zzm*Etvrt9QN$bc3Mrg_oNTdK|S;(Ecs-QN`3@&dJdqZ-_g1S$>UxdRe$2qK9a;R+w zB)j3Qc(O>BzxH1BK^uNXA2iMHFou<=|AsXnCMzCYSm5H0Y5n?zxy5cLQ%CoZ7O!qb zksv+Lp4+XH8XEwnZ~x<{=?jxV?G93L-Ilh8AzDHhw5)$lO!KGvT#)vR1hhYbn3IOQ z`d$d&iH)hIOnl$eQ7R8HgnV5h4Lp#m7D~St;2B3&9eIy{eupl3LI`EgbhkXLt{@d7 z>)kUVlT5%l?nHQTXZo-LhMMmqq#c)5HO)o%eid$~VoPPaTDmB7I;M!6C8%f_&4NP6 zfJW1#`(@Z56G~U#3X&kePE4-e#6?k#nK$8LlADgnMW1~pZaj*$ zq1eQSkhpfhqJ`fTdvEb78DFHY%H)+hVlBMAnh8~c^2&L6G*AtKY)|3JL7sOD_KZ0} zVin-rCLPWfHqx=aK38n2-(ZY4IPP)-dJVIp2Z=sMTvw$26%9!v)_Y3f=yS>bK>*XQ=OvFI_Z z=R$gSWls`Sn~vL2xBYur+?CBhuIk=~%^M%xnHcxgEW{KdHo*6r5V-s!rWl;O#d;z` zQ6Tt|Pbj;sYGj`Ugna*`5O88G8zpZ>DcV|;H%4Nt@G5#O3mAw<^p8kxQB;4=FBU1; z4|G8Ku2OxFKjgWophIv*BL?AEg)-QDCd2_24_~opb4fDH@?kG{sKl3PJZ~kWRuX>m zKY84sRyyuti)`LYC5K8OG^%CL2-g}7O1xp2IJ?qgV9v<6Y$VKF@}hOQ|bN^ zSTY3tUN(CUcG_Yvye+QD_>xR7@f1wI8Ngv8>U+@A7D55d zvIv;f!+dYVTOrw+OkshZPcOuBAJ)IEX6duJ`Te$!hO8#V1Q0MAEtFz~hgE}2c#U#Z zS&fVOesm&M)U|QEOMlcl=kSz?WW+`3>Ubqhzwd5eoULeQZw{X&1~q&sqwjtcKCk6h zfH&x!({^0xP$9-)Rar}_7qPb<>urV#d<`CIHgf_ch27bJFo+~3ZX@+s#4LQ&XCG~1 zT`Kk7gUc9+b^!)~WyQ|{aI0Gh z)6pqb2cg%_tsW|AVCKSXpm$3Ra1!GM>LZ?GBjEUVwJeKZ9CXw|88#&C-mN8|iba(+ zj`kP50@N_Z*RR;!wTsw2J=lMaGddog0PfJf!3{;Wns5Fg82v&xV);MM-fI#avUb7d zhbk_$M)u{limnv|Yz;_kxXnsQHdVW64FB(GYN%`cE{Wa35Sp37S>gv;xaQf39pYm- zsf>%owEyqn-}(PvnkO=cCEz~psdkgjAQ&9Bmz&S5Ka@vjZ{1uod*T6c8vz+GN)x(9 zgzGLYSiGI{Mp!U?&2f+?PWvD^n3e|kb|QDa*EIs$%TFBp2vH6g?>f8kqrO0ECG_*Z zip3cDKE|r~d`1N9x1IqB}Wh1X+Ht?6B?>;c)B(qNL@o zYVue?>2cH{MQL`JI3|^5ybI6gpfbR(DE&LtQXgRNl z5PbbN>-6uFY68Jv@>T=wxU=OuO83H#bMxy70UTiRm|AtElAP89ndd`82|0Y76kG(D z&*^IA#mxMJ7WJT8?-}Q*fK;9&qZehLLR7b{-uF`$QfLJhIqAi$2YKXO7Qdywek0sM z*)!Hx>H?i;hlHn_Q_|wo=`46Tkt+DZGxtJldX!U_@?XRf;lRhLl$Wu8h?gSeiPIllpLWW9QuJnGzM9=HScf0) z=2!e3Mfg}?tYG9MVH-Lm{5oPxR+#{PZrNyy#)T0&)v;vrRXv zzrr>sMfL;P{kg_u;Q4=SUbY84(Bu%xs#+vLI zjeQ^)%T~Pg(28?=uxBU|PYb#xD2LgK?o9p+;Mi{!ja{*oTNu0JVK^VdEd2I+*KDd- z(EjF8ui~_z81Ksg;>i5=J*%AFGm`BT82`*oESC&;Gch9zG zLve)%dn?BeH8@Ji&|_%5)VzDMNWpxMXuL|a*CRgY5jDu>34{9n1a2o=!v@vXqZMx# zr_xmU2jk5w_UX{AB&3iuBIbT71CHA%NLVfiG|}pHb?WYtcgS%z)792-*EW+ zZ^LOKGxaCYHDuxo-e78|ls#bWl*2dc{B6NfFgtB@-W&#MGcnMc!&MS;RV(lOdeN^@jC6mg+|P>iq&fG+G#9j z8vpZVT!JG_AW4GNkYnNwJO=4IY587|g9@Cp4`1+ElXiu`S5v>=U<~Gi<$>#h6KnF4 zv|jyn3kM)?ncTyZZ_l-+HQe6Lvi+Z>O9O}R2C))jdFm?z1Rz&j@0n-L_ZIcT#|flp zz$jIC#E9An+B$#-NZlvdr$DqjIgGZKy<&d+@IXr{N21{H5-4oAkor z(|{%ukUPx(Ds#in zNk_mtTOp_VK5VywR@6lfThK|8)-f~(+VXjr?{J+dm`4QP4GV__ z1h(;wz8WYFYXMBZ!UMR-5ug79?`O$8II~TO9dyGkOwE&a%eQE)ki1Xlshi?Hs&pM_ zeIFUKeYc)7|L2^xO9kS2Dp*8Ng>sE0Q)Zn!shoafiiT=6KAu~KcgmjW@P^`{32YTgR@G-aL(TyPdRq~=sO9cqz>U+9XBU_K%4yPI z9-AKs7L>eW2x~f)7I5P+-9;eUa|7fw#A{0Q)%zo4exQ+-z7G8nFV;2C+a6049g-gm zP7__%zr)svBey{|!e$vFWVz56HnqG!i{ZbEhk}XLJyPe20l?h|#CPTpN{TpJ%98t< z**wpBPe>&qAxC{4>00j#HIepB-+ULOS>cz{ZABh*3woq(m&OKGWuKLngtbImfo1; zx~K0WSh#5hPUv;p*PA@H!365Ip@fZis}+vdWFksx<$BVTLkB-IS2-P)srCv*a+}xL zuxpL}T?GCXgl8X75nn!_>Q^X0EdS84{!qBwn$3G3 za}0+{5o5I`x|oQV1v&SDSf|cW9E-bB=xu1>pFW)2?-q$f$I7)%iI#z$Iv^+2Sr)QK z=5w=fo5os|Edq_5n62$Yj5GV;qHGqiNj!9&DZbV>E6`(Rvd>5uvyX^y?|4I$kGw7^ z|CZ)+sVo5NADzU&$DxQ$#H5(b!ki9Ol)SF7&HSx7F&|i9%xYN$z#*%SQ)sr!DA+TM zigzTw2M=j7k5$HGX7a%6LFS89($K(3ocYLWb&^1F?Q_A+XQCZ7H23gFsoEl4A-EO4 zpYeMC#TJ1{?z2gM5U%rRWWDe<5I|9*gBC#bpoq|XPDB6{)K>LUaqQh_g9mX`- z0#V&|wmV?$HU_zETLiX-#o%IV5X~dmznNZ_=CwT!wp?~nx|>+j?n%T7%>S5-YCnZb zXm^?K^;>rcWQc3$v+e&5n)!+?5SQ((n=F@=WT)HsuQ+y%zu%T3k0V)mnCHlg`ip~Q z3%Q9F$_;pFm?cy98RZV?gprNNbl9iTo44YzGE?6P1fQbkEvh;i^KqqYY3R*i!x;F} z^<=D;72~ih^(~vKqq*Nfh3uFabBs!l74%R- zggszK7>M~65La*SGCitu2BB_&yWge8oi$L*6HrAEyPG2qx!$(PLRKspdW{2%qmTWQ z8hY!$(T$1C?wqHS7bKD_k3lIC85*3&a6#z(g}kRRlD8^@0TZlIKKP=-aAXC*$N>3z zgvLOhsA0udEj`N-ccNeSOhB#OUPwaVhms-AFJQK>d^Uh19AfMfyo?Z;DL>mWr`+4_ zCb2E{@R&z&c9Lrk&Tv9cC8l8!*@@YlR({`DMZfP%o=gnc%?NcpuD2=?ElgAGG!{Wd zVjng)YDMJyk%(J(alhhxi>0910d}DCO#;6GGP~4`Dj)Eas0XkT^gR{y(j_2S4Yt96 zkJ((%WHOB)EO~5bGGif@gpFF6hbj2Pnx_YfF%STZ5c2$aav* z9b%}*oQ3q?yLF*xVGl)cOm1ovzRE`MZrmaF@iNXDp|91ASris5#J=4+xC}wQ2(X;W zTuvcx`G+iGGSNT&#_QEp6jc*QSz}2SpVk1r;eE9sK9$b<-k@dnp33kZrz$~C$gALE zXKb`9=^H`(^WWY7b-v9S>*`O_Q8GJReipu@H%xa!b;`gPc_W= z$2Zw5d-Hl*XndN(g9s!022>{TcJ8O*j^PmRn$|wP?BlL@+&6=~{Ffk@1Ba_MN1%z% zh+SOB4d7+%s1p3hCFiAl8*ZfYalE6gz$-p208u1nF+_Cd1Rjw0bJ-oxXKN5TdcFQ` zcHM-~ac&r^;pd2t?KLtyswH9>(xCCrhUM=?9H&xH1iFR&w+__6>67EDNTM5!Q(}Ro z;f!1O1Uk@=c$I6-mjA1YtYM+IjPoEx&qYUJtF=P;;b#aJxP6{DC8#^s3*1R{B7qo- z!xIn4G=YP2oanhn&IWHr)IZz_e+!3D}d-ZCaUI%j{KpBE=RqQnT^x0 z1V~s%vv`QhSw>INxCIao5*)~GrN3~+!goij`D?@os41$ML>VTVJdJvI@t7+g-nY^K zXHlekYN4K}dL{7I(fd_Ip@oo=wcWOM;NO2qaUQaO&V~_WY*#B#{lk|Tl}Zs8DoN79 zYVlM-6xfK)L7c<4P<$m2K5mg2`AJ#Vz+`xF)3}awm&8!^$yBAN;)jKd;0bwtO-#4Y zm_^VQc+QUl$6DavosW{(`zLpLwT;CKs5St)F}nG?WY}jj@!8U`Z@$hR8Y0vkuMe6d z!^Q_a_lDxrrX-L~qF4FC7(5B-`7%dl41w$NlkeSV-%{Sn|C`j9lJ$Qk^P+(4)#! zse=ckC=J1Ej+ssj!)<2|rAwPmL-k%|jK*~UY@bmm(eKtK@`7cCc1!aPCJ|;hWtO=P zD+fEmEv!5z@V+Y~HtgOmF69=$WQGpp46lyTDM;mMUnS<`edGMODuZEK)NT-eN?ZQW z@}I)EU;pqI>gSq1u#;dvx!`?FcRo(;N;(mJoLEGK`Qg8C_9C&)Zt|r4c)CV16X0)a z4pTsfU?ZZ`_@#NFq(0uCc&IXhW4 zIVMEV<-Z=XvVcX+5dpMPOm;7j$qt71qIj!+utnY!V8~tpMQ%!x$5jCDq=qL;;Lu7Y zU!lfY4R~^Yv#d{=srhk#g~&$}`0tzahO2d3ZK+OBpT>O2G3NU+C^5>Kjj$@vu;n|` zGuC?)R5oajy(e<`!l^0Ho2U>n4;3Sb{|^RY6E?~o*dN->D@hR=aWi~*Yr}lPrW*0b zF71%xz==E<*Z-H(wYR%DcQI=IEYszL#{kEIY`io|Q4STzA=()-3mP7KMhT%?;obwg z5Wc-!tyAx7O1UrpLGohmjb~4n?h61h^KEp=IaO5uN;KiGpZR-b`p}86f>d?1O^M=< zhNfomT3W}X>4~nnq6UR{iEg%?1DssJ+YE4Xtc!$~PE5_h{!_UF#Y;Vdlael;Copk4 zFy^q&Xk)pGHEClNhDAm=&l!78bE3*r(th}FM<#|txCZCezbwh|0QX&dPdBqbuyDYt zv6?87=SCE-kA|;K!fEj3=G9V33$fiC*reFmsz^4CxbP}O)9uIIj4kcHRHr}3`aRo8 z(D^~keLb9!uh7&ur!VqY)~+_FAo7qlvmg9H3LfsdqEsEbmTIL;F)7Jhtdo7FQ`?NMmIgY z^mvUDvtz+AlhcYQz3E^lf)tDc_`d|2G4-A-T!F$#_Hv7WXKk~sXLTwm32pBU(&q7I z`B4!j@)T3Y39IaSy z4PX?+ZMFpu>lvYnC&0FRChqG$q)@wY#0jA%jtr(S=Q*oUXV0;$@P)d0Zl=_Y9ig~u ziL?TgD#hqC^fXcogo7w}EICRFf z{6P_j|2}PJmc7RXYRL|JY72BUgK%Lq@j$mrCrhIdQ9oK3Zhxu;M-ONF_8(Y$lO(Ty zdGuloK_<%OdZPMD8;ZDq$IEOYOWtH8fuF0RcJR9Y*$LOJ>%W?rB>R8rd#iNnZt*7@o6zEg8>-DvEQ=3a59u_@nr4DO%@t zeO?KhN!sI)kilX~BIk+9ti6rC8hk7|xPEC&XA3NTEB(9PX2tNi2M_9QIBsWp1q`JM>C%=sekFalG9YEOr^=-bx}fH0I<)JvNRVxu z+)eKqZF4W@2gdFOJlZFp8IhB{WT!Ib*8wbab?rU}KjZ&9HT$VeCh6A@oW$wcwF5Xh ztvKB7awv(QeEVSqOsVz_8PtlMpwlKvTuRArwQTV++9#j7B}J>L@CD(LyKbHFKSA8n zCk`w7$xgRl$ni@~p7xtWb!ld`jc5HR;71PO#_3lJaBW?D{K|DwVLSIbD*En1b!^|3 z<1MnoI?)EWB%k93pyy-)d(d(Q#FG0N6NbfL8c>pzV^*`S&J@X84cSSjhZgYNaZ!-F zhzIjGY!=VjpV54vjV93{v+d9(5 z%|ohIWqGx20Y+wMcNT}tfso760k(_~+c4v{0c#=QEqC{{p;N{U^3K`=;M$u=7nrRC zmreG+8252t-Nk(!cZ!M7Zbrul@}Kc6aA&${S509RS#Pa4&R~~0KdAe8NK7|B{oURY z6LsgklMecl`QmmZ-fvV18;$EMrsB=K==#L3i;XadPBDW>nf4-xTy631CyV)xIz9K7 z4VqU(U2bA=c*|paM8G~@b&q<4@G(CTZ=J&S7KKq$jlt~m2};CBBJ!xloMSGn@gg;2 z;?Jro84A?MF|&BDjw;9+!0JVhFWKi&(f3>wSbzuQamaWXN-6cdrXagP++_*r0f+%z zEAV^V;*^=*V(V7y2ptf(MeoF`X{UYc#XJa0?vi{q|M6Dk+r&Zc_UaQopVg7E*^9mwmJJ}<~WG;PoFFo;+tAJG3MyDZ#n|);8_shZN~QJ^akB%92Wd# zbQRoNt$Km4ESiD*@~NK6FV`drX}3xj7T5&y9*Hqbd9R6Qnh!4Gg1xcOk;&?_Fio&6 z+ajq$&GJ>xHoO(m=gdsa1u8w6W>biw2RTa6AW8d`osmK976OlI{Mib{HJ?{8d1QzI zPfT#c4Z|cR-*gaY+d+SK3*f;nEzOozchAU!8iL8@h-qq(Ucm+9nG?3636ujpo}z_DOt86&r`6j)b9d zxy_L1yUJ*3%nVTrZi95eiB2+16)`3+b&5Fm5Jj$pyqeF_ zh%Ds2I^4`^Tq)d8A7Y%oGJS#+mmt5^k=#a&0Q?O7u1$StANOy9{{L49&)eUUJx6f4 z&`S9GbR*r?(vU0&P{(Jddwaf=oZaqT%?3vXk~pa9r;>t>ykj#7zTf!*;)@H70X~NQ z!*m36Ddp7-3*||skz=>u{di|3>P~Z}S=mk2*RtA)9LBTa>ZIF$YRU_zk~^WHv)g|F{Hg zar_Z6Zz;S%JuSmn_ z$Xw5}$m;S1KPJ+dx#%6ELomT5>Xs2F)bEue(nBzmI+>F}u`OAFG7Pl{ZG@e-MyTt< zOe{a!mh;7C(RR=%Uo-kxPq`J_xE}DsU^kF;FFRN5QGCac>v1}XaiC4K+V1K~Ha|z= z_y2S`IuGoT_IUZ|-AQ|V_tZe@_w9Ci==qmvK4VHDwWHY9U|LeFM=h4*k!o~BmJymy zRcO0A0fO~Q!+~f$FLsc)>Nn(C75a(IaunIx5up*Q#7>MuiOmpBc-McTin^3ZR4J@V zr1f|#aVO#M28^vy8Gq5eZE#mZh)@sbA-<_qP3Oa=`q?XRM@=^S-rSPXdlWx|-HDzt zx;Jp%n$<#p(#2nicj$?*@s^{>?A_*OaeKR}d_z1N++n}GZb@PygEh#K&e|%%Hzrd3 z^P-8`-8|YWeXu2muR3~gSsLeThvUZqS9J79SmxVYf$%iuOPyWS?LwXHgIM#unRi&^ z0SgTJWbpxBd%?P?e~+jHduPO4Qq=bg%;10CPJNFZuyRR!$rsNLoK^^5+n=kJs=hKX zJj@`7NfE3f6NU01=)$PMx4O3U0%T2}R0ss0B)k_VENxaXU_-^uN^q{!q}L-&_nvZ< zUIUFRj^cMd(Z+uDPP|A1IYd8?Ss7NT2>T9)FqS~9DgOk)T(GQEDDi2jvO%YH(nhfH zGCMGmlEAi4a#2dW*|B&=z3fm4g^eHuX&fW!GpFkKPKn(et_HJdV-D;+>-Z zV<4QZf5f+3+9v{~Mu4I{m9&GKZtO3#u(>B}r^-fHYSauStuR^+@7eZZs1SvbgY4tC zq4we~O%cL=4%BrunbW9ZxlPa;7G8Jlndl1vgS+f}ovHXtWB>xTy2a_?DT-nJvpgqP zUZFtMDTtRNJvD#jQ&>=FDF{bUwLF2>jUVFb_#&Ng%r!#!!W&x$g7Q2*F@9FEXCy%3 znryQo<*SeoMJh{7goojM^F)UybXi^FA^k+wP=pxI>g$^wtGnE=HxLOa6WN~PFb>U9 z=<+roy-VG=4;rh{^8(qL7Kv}jLrAIa;x>ECsK=NkZ&#-$5y9~=@9-L+OoM2b9_1uEP?Z z#EE}&$34MSna;7b2;zw>ud|W(j~A6a>)Ko;IiyKdd!EloAe98R zt=ZNb)Tg<|iQxZYA=QiI#a6rFOv5$+2AT#~ho`81KM7h?7oMoH${v?olJX>49`78< zr*7XxRAars5r_SWR{}_A9)qK$%kJvpU8U-|eqqP>K@`=l7nJAaa^I#N;eTIGRCG`J z$i7*^bMtDw@2v0&Six!Vsno)j;3p?~IfDtBCuOhMxWtOZI1a_=a6&BK_6K_YX)t_d z(Kh>dKAwPJ>}jkb%yTVStpFxN*pAn3;L&8kbGn~ z5(WBFp(vU;L&z&?P}mR~n$Wa0$sg;M)@ z_r*OlRoYggk5lQa6AAT`(!+^Dc;>a=rI*vV)5aa_s3$VZcbu$Gn;XYogn+8D&txB~ zz!o#MSFWq=w@phJJ$LI??|vz~mvbFFSgvAWZei5Ds^P&FwoYrRWhKk}kIkMHrD@BnfzR)QkE%KvMCf_IW<2x*z;=d01hN2%FivKLY~(7S@at(Ym|F@U}H z?Qa6B2cy@pg5A4M1fwM);YcHaDC^{-_wf6B2nw98ud&}M@8T!H39E5e`t-Nsg5PIl z{0@lnj_|c3rA5*2m2j^}7j%;m%rrY(&&x*0s(TL%$!T&8tDc$V8%_XAqUDI&)SZ*n9Te0> z$>Rk|PzHDM@KciMQji@nHl8&(oLloNvj6u7&&_0MzM0RMXncJEcXobcoFY96plc6y zHfvGzNWqC)8D+J3UDwsEjmAh+NA(Uu%3Sb|4Nb_1WDr38fj6Pf;>oFQh$KNJZXu4r zzyxy(R z2@F6a{bqGMm{8T&4F&wFHf{$@`H?HGZ-5=32$spX?jy2OeW@H{_qRMdH~{AI=oEuj z@c{$CK&GMKC$t%OB-SpMxSkm@(y%ZZd6!XkI1Q}&k#TbQupeQc3z ztv@S;q_?zaA7~U(rUg5zzhowql#tE$Mu3X0A)Fy?N0QswzU6Pf)>zJ}m=u2X105aL z1UVJ`1(0!o&lSZ6!04UeP>24r4hJYT^`{ zDhZaksDKG=xtm>q9+!CX3;rEBEf|^Be1EmNZ#dfHIIU|__q2i7NHUJlgI8vp=)3EX_H{WimT5E-={j>FEU zR)MzIV7=>|<9raIR0%vWXW$pii#qje;*28@8fv8@%c4Jcd#=@ZcpqSc2JN<|=R2+x zM=$C+baa*Y5;RwUakui5xy?(dLXkc~z0YbO;~8A~kGL}I)zFb#V3?D*ZYTiT>6Z`t-MhnNTh6B_kxUwkaPfh{ofWdsw^}54+nAZQ!Gv z+IW=fGk?-GO~(WQj}oM}AY&AK=0(XqiXb#vCfr4X7Z5%M%_f{m@}gFn{%TID_?OF{ zr3d0E3Ba4^2FA?6g5X!7A73BS%%gb+r(55Ny+pM<9C zh9>t0%Poj0g-`YyHE(mGmU%5I2c8tAw5LK-jVNH~YLjM}EHoGrx0#yyW3H%;dCIpj z)S50ElQeAyKY(+D`5I)pb6n3k?+WN+2K`KGWliGcBtQTYLNSq?jKM<*dAp>KuXBq@ zP0YYhppW)aL>|FMG)HuZc#|0Gc!O%~8StFJS;5w|9A>+Rl(od1tlERSA8k0X4Xn6V z?p9^KdF1Yr;rGMyfXVK;U^l`;9@QqpavT-8ALqX|*JrPP${^eb)s0%=aIt7-yFoz# zXY0mSsJk8#H!{e6?8&C!pe9|4Xng?*&(BCUT6%A%9s|pEv=pVv(T%y5cTp&Jww9f- z+*%MMkjx2N#Zbx7|*XjUQ?khSEFYGT8Wq#n|8xT&2HqcmL@x)@llp%9UoM2 zNxRLc%pKK0>|gHP(@UGepuoxI20(}6u-BjQd8tpkOB8}GaG8`S3ekNb;Y@oM1KGln zG1Q+)5SEf_Y=ly-=mdHVlICdwYltS8Xeo`bYC4b+7z{4tDXu%qT2Mblf_%ns|E=7R zmBcG|C&T@f&hkn;bHuENq;Tc>gtv`2miZi)n%7o0r_~OT6cq>9H&#>Tkc-vtdS&S; z`5oA|j+p20*b@|6d8t_Td5Wa=S6`&fi+4d!abbq-zGNZevfoxWmnB56$p*wYik5YL z8tq0NW4&F+4%~zn4R}5xqW==8n}GwGyM#T$T>$thc(`-ROl7~1Xi;4URoshOvr1kX z)o~Y(dW}=S>2T(^5ONtjJOG=hE+b^u6VRT1U~JfFHhH>a7l!u(k7s^ulg)05s&)8C z`EEPwQN?F?*H;Mbrs_scC}76*=9qYpj|+bBMmvl7_;jkIuUyX09R+G%65bonRhm>8 zDFN|6#7PZiALMb=tIO}@sWuGy-PS%k?saMtQ@$n)!}R%ax-->McYmZeqMzB&+3qz3 zZ0}XUjfDK$&a*mb*cA4@?j0#ZkY@FIJ=6kBP-9Z#2uUPpVf(NB$GGRjaHqY>%iwc% z^1pYnQ9qkHW{O-v&`|EZEITHUM9P8up#mLl&dO!XqPPrP6(6MR5|rLk1>?!uzR{%} zf5#a?Vo!2)U0V_0h>(d0^{-dpW|2%#V*Rj*&D&~CzSec+XIlES%e9WVP3WF2RtDME zN)UPOy1@5cg@}AgRTfIMB(cOk=TnkEjB9#AUUuniu{e*p*oW59Ng$NEhO9-&*a%U| zI9{9oB1-qGMv1Upa8RPd6KF?p+*|(+e1MN*j#Z0u-sQoPieg}bd~Tnk4380dPN=(Q z|9&NDV?eN8s`Low-fzK=K1s@k5UFLI0$O2K@KwV&peD znE~58W%}v?6`++P&c7dmrOfnqPrQz_zW33fK8fj8h>dU1HH3eI!+JdJy8W`+$#cP(LEQOoO4AA@1`?W8>l|wc2bM=e1BycoAOsnon z8mi$0kc)m|$NPiHKc*r7776cW?Ki8lapcNzbJ)5Zv_kq9gtF?(yfaB;=e0WV)v&X- z*|!7JN-IE_b?1{0>)6ba6qOd`IoCki^36kOXxpBj!@S)%!a<#u3P9r%)j&)Z31|l3 zG{1{Q502>4}Nm9I9s&1h+F4_im*)*66ROIj-@Bkzj1fD}|GWcA6n0OZo!)Q!rf~4Y5u>_0fWUV{Y-8r$Elj+FQ`!7(5spjoZ9GQW37ss z=f0zzboDMG0in==N}71>MC9$(5Lr^YN)#50`KK5{G2Fy#;9}i;AL}I0Irp%L-`aXW zcpi+qp4_L;2Q5FP&3_Uez{kIE^e?DEgXw~Mrv|3Cs+S$=Wt!tqQZTkmDk|ZeekcK^xsamiaXr|40n~tQTJ6KY8epnHb%I z?x{Q{J_26?ueCu@r$I%ZFUgph{!bK0@rW_5n-y}jY*->FnILSI{LZc%}6}F zv6zT5Jk{bBok8hvb}iK#OkUxc{^6fhE6e_o2`3c-08~!hqBb#bPtDIRF9S1URfIfT7n{LqPg@EG)9g9D>5*_n zC_CbV;P|2d;QL^H4S0$%A8QH8A_t+#G-bu}3%M!bQ&x9P;oEnWPPE(Qwqv5=(Z&ez$pB)SFjTWM>L^Ah)Xsc--mq6wVMpED zAiO|`MtesR(JS;hISHsuxPsx#nG58m2fOoMtn1_RsG1Temv`x|kVT z>TIp^zGUJB6n#1*0djDuhB+jO2m%$R!Iv@M5uOc7Cf0N$e8reuEpSX__S0|3*LbS) zCRL%guCEsdpe%Hv2S&hHJN~ojC2Hg8lUEoMR_bkO9rJJkHQF8NQAF2#o(x zJ9n3@>BGYQ>n;FE2vgJ4tx9E=hXY|nVzP)8kPje5NzUR@$G+iBz}Y@4!7JA5^~`mr zw+BbZf!X%Buka=+kHZ1f-ojVOXhZ+8#!UNTuaP|!EO^!BZD%MHCyF4znYbTtc+#}5 zFPu)7l+JF+X+4tmez%!L?$qlPeV>BOuGPd)vJKmE~{ z#6wi);Z@3C1q}b^(MZ_V#HGAaK`||Lu@jrkJt^rN7Qv2eQs+m8O0JOuW>}07w_J&e zgBZ1kGdGi7oNn9TQfgtBQc#ul4=1xYyoz&odwjy>HVoi81sA$wCJ|vRBtlX2vKQ0! zWB51m48#SSvD`k4)xV(OaVY|@eE^X|>_j0lO$^UYH1lkY=h|7Kw)x6DN$iT9 z&Dhw;#OmYu?}hf%-n6-%&v*BiR%h9&-|qn?QE+`TIerTFPMhq{OV#vyRs1P4B{0js z-c!56V>gr+GADD)J^EHZYV)2nannN7L^b3H)g9A{CKey$F&CS_61F1;m33Rz%@*DC z>}J7r0R7~k{(~L66tc1#UHh1Ux}j+eyQ-f`VLue_9la)zj}P!k%kX0b;(#i z)-(v77;{RC+2vi*2*XO(dKh$R;Ru1LKMqQZzMbl}+-k*2Ha$d;zQE2Wt9P3k&}!*p z_tr-wme9RihDnQO7xe5C)o-BX6Oj5|Hw>v=db!aiIypXyJ*W^lwhQsvJ`3n|ziBV= z@n<+ZAdXKym@DmNKheS`Ujuu277K%^1wbzW*r(nkDj4mqU+{Zd#~v)1eRnN~&oFPf z|JErumW<)WN@;_e3hs}jXNaymRr-0W;=h=8Ai=WPudLkB>B{u}S*Mc5B9l0AE2)gH z8qZ-;Utfo+9N05;KmMyUzLA-6m^)8X!)yaw&!kjETTbUtjevBkKTlW`MJr?*Hbs)IBZH`BG|v=@B|$R0)LF1 z?*r7ikUjNVH^&hyl?D1Ky2a-T3^vL96zKED7_rlEWu_;@|-J zN7xY$k-41ckFvNh^;+#y(iTiC9k~`-WdaZtmw3&|S_SsBATy}6?I>#uu4~xvOo`~-Q zWDvfMRXL)P?h}z+w{m_)@7`F{f8rI}yJP53hXKjzQ@XbXPqz{3-OHmO#n=ZzQf%4$ zW=Sq}E#MD9qb1R=7^6=1x}E*a$vFwwva@rb>1OhTzQhqXkA_+@k2hhbg-107q@G4$ zv}8(VMczuR^3kBqM`7XaF+J^1pN5A~It}spSclLN`S{S%_kRwxpJj%Gk86Jo1D)t; zgb~lgQ7T-`zz3T+70Fnl_A2cMOIlkbCV4uToUwlUTk9sgHg56z7{7-*ia*)HL>ojX zmIZI#1vW*y?xi=+rLSE!sh(eT_%`o06Y_7DkuP9_40Cy?K+)X64PNW_BMnzL8X$zL z8;YW!FeBvb0k<9Aj!3+ueCtjnk+1XVN$kEvALF1}3VZxZr;a|-tjQpkhtY8XR7ga(n%!BedA4uKZLjauuaE)!I(7n3gtqdusO z1>oLSteG-(R`{lVMcHB!5_nPy=1F)W@4k5JO{V3SX4&~bsz-s!|Kb`@Vee6r;pivt zLp~rte$TzOOEhJu2=hgkx>fTT_@E(}*e}aUv8?a+04u1vtD{Mw`ezTBA`5M=POxeu62)tO1Izrw z533dCr(Af(Dus3w)OL_u>p0%`5~Wagq0SAqssbAT^j#vT-RnnvY70{c8<=q9Wx z*G|?+-AUHEdH^fN1@|a(SBs^s2Bd3XvP4S#b^C!w0X;vXH#R);{LC)u(gT%~tTQ}N z_ARP%eRa?KB`Ge2iU2?khmUiEsaqE1B&Pmd01VZ6ps3 zXOPeCvQ4R|&LD1H2uNGkp%-^!0a)gE&7Z`boWB{F#Rz>0|2vG}YMb=;b>7WNl35tb z58}(n93#XGF?M9N?mZh*&!c8&Y1g;sLU64QcO!+iLGX&AG%Xw3BOzi=UL&j12BVsZ z9<(+KJfXHuNge{P6kb974o+9X}*L=+=DAfHZr>l#osEoQ-! z#MI}Bga$qx@Qs?nM3rLmPn`*56^vkZzQKM-TbBdNN!usk$nVz1l}KTMdf7k{+qrce zKOJ5E%SlM?W~aMBWSw$v#ov1vK2OxeSUd6SOVy~3dKT+;7c+;_cMhB*pTb;NSfsOn z8`Yb!7|7@Svnq^+b{v zCdJNw=*EmrY2We1U{WU#5-XPM@Egp7ok`j})Dm8f{u)Ur&`e38XBaz+O-0Y0&mG^Q zha-f2&rYa$b|i-WcwEt9(Q50dsyV>@QrWRm=V-H}ITXO}N__b)0XEI$j~U_Hr8esU zKoxfg7%Lt86=9*&5L;dDWh~IS4!B@GOD=C=)w1dlLYDl|WQ>~X>*Ne)nWo~a1GM^% zXR2g8EkyD|Ei8Qb?V>ioZUV$>pqHa&o9?5>PoOQ_m$91nQ@lHbz#4n&<||ud8BN`m zARhyOI)h|BIBOG=&f>&sUIR58Il9Vr0_Rk+4F|HiA9Q_DN4W9M($m>5as1;ZY=C2S ztOuFYSn#!~&5O-@`)_Cvi2p@xPf?9iJIsq_&w%HDk)lW*P>J7N^cCcOW+l%{ywC&$ zP9G`b4a85JItoq}5c0A90zW2A<~7-b%&5S$@%C6p*@SsS67fjdczbD;AwDV)m%)u4 z=_|6eg1bPfgSJ_2i*LKg4JI;jDOs&9B%h$uD8kMhDM+s!U|{n( zov7{pvJeA#%W$aT+<#MIx`9cOO)HbS{Y`UfLa;FO@Bg44ln2O)<-mlyyHlWiO)%XfC5{<_b?0FPIzA zGqZtWdatwJvu{ke@k;v+dD}v3rqv)eO1djY_?+P_ zsGzPUc=pf$ScF6ucIekTKshz5Eta!1Ui>Qx`;E&@o^gzhf1VxnRdq&AA76_XiY|F4 zJYOcK1x(Vus^)%HY52}wnNjj5cY-XHc9nQ4FOlBrjy$gQ=pLZ^GW&aa0%_~UX(Xp+ z35ZX~sP^8-b)}8UU{k>+ zh)v!Emw51==NLa7@9Qi^!BtrM$d$oVSp)wX=LD2(O`>$Bo|x{i8b4CidN`u^^~dAl zOebEai5NZJx`q^NdS-(GVSuYo*jEo7p%eF*C@_mPA*nG3*=i4dv9%*ZGM-Ort&*Vk(|a_f;F}YY7O9kf zGb6@%*s@_vJ7|QfEbfG%QlXDWgnHwdsRiIUbRF6OHkQ7eXMD88D5X9B+<4aQF<8VH zmOk1(G3SoZbtvi=mG*XLWe`YVmS|rEJ%w;@d*N##T~Uy)u2GGNH8fWVzd5-MGc7YJ z)b%V`=j`}1RXs_L&oGVhCS!9azbE@PNS6CJR9Nds^cys90vri#5CXADDQj_d?sHtT zt3qaATBmh>TfouHt1oIIUD9PNWSJ0cb*w3uYPoK|YF$y)Y6q9}btcLCa`C!o8}5OO ziI)h>=!dzupB0||bq1I-nX@#CTQ&ncBPJAwEw|{mResN^OS%c#&4*SI?zln?hv55& ziS$$w5gz?Zmy7gXL7`Ic5lNLhfy7SC2(*4QXP6i&;0NPbRlR+eSm$_G4beY1Y_Uh5 za-JNB$nwk7>61J(h|Ph(9^L6>u-JT{3I%cA-5l6lV)zQmTEW<_57V7Y>T(27nmK_k zqdAm}(uj$Z!Z=v(|<|>rK~1`01FNNKE3D& zozd!!i{`j6V(7q2ZZaiRgVD`3i!xwTYDT zXF8oi3WsVl-H6i1rAxmmo_Df)*Yv0%Ww3(tplt%4{PaOMv5x{3;?7zcf}vaSJO7y< z7P0}i>k#jjKB2~1wuDC~b@wFT|D^F+PcoH%Uae}S0+!D_#qK9Hl(hEF@4D!ZR=+jW z@lcG!JunVkuJMR1`vS}b*{=@qbjs{0NK0|O!L^;Inbp*C9q;}8I#PDf0aQ9u?0`Dp z;AymZ@yjMhKVNbVLBKFdXLb_D&i9eNh&ccu$kghiXEi7W<8}Zt2oIA$=vc_!V8_M| za9o%_S&V=4qE;V#%Ia0vquLYTwit~bZHGl-oty1)v-SODZGu80>a)C!1>x>fXH9@G8k{Yb;5RrCo$S{3Fd=O~89xTK9LdxnsELL|MS~D= zq#drq#vLHCod@Du{r)F9h{yEFMLm021Z1lGma0<&y|2XMcAnXAO=RIgvBwH#*-<(# zSY}T7TG~d(1j#_t$U8DXX}yXLsfzbvcyUOQ%-?txf@eR4)b93ujWHid)?zkWKAjES zQf$ibYR^mR%v>BKPzqz(1LjX{(z2U8N%v=z%t3usZEB|J`icRn#q%gfIR}iAh4ZU^ zJaYcuy@?Tk_(~Q6(Lrk;K8>2-FdKO+++hqrGA(}W$yT5XWKltkx3f&picjC$^_Z+a zNprR-SE{T78ykZ|)ZVxMpL7)19t18c#e6TOKh0%*vGoEY#wngfwG<8>SEaj)2`q$zB)Z$@^Wp!d4D zvp0N?c92H_E;DGE?h%h~u&sWWzA1vn7YU;~F;aRB8lU>)7hy4;dFl1B$o(c$(w z7!zD(=IJ9S_f0trA13e`B=fv0lB>hxpLI+OB_*xQMYl^bNQR*hC$;J0f1Pm(BGBLz zIzQ>3-Ah^W{=EHU>(O0Td#DF%Vh>PK`=aZC`SvDupKuH@;YAdy1-2mGd3LTfd7Fep6yvR?{Eg{9|A$(k;K`N3w}@^JYTn zNB+pb#GcJ>)CLW>|4c^FjlG^xfSJQv_j0=Fnm=`@O>52!MfIErl+KR4XUiCkcudg1 zjKbAxmem<=m#k?8USpO8U$?PD?z6!FV4?d7BP(=+3|E`SyUG|-{M<|4>PB-t&v~n2>8Z8o$sW?g= z!5-k($Z2L2ryX+%u%#UEfBoo5s;9@S*s7v(;zPzv86j913E6Z$j41cg1n#=zHF)iY;W{DdkhEW%nd039$&E z3lK*ZCFyG7HDb>^y5a}#5Z^iM@9HE)P(o+#{6M`-gZ`)W+bDn|l&do=c?K{oS?sT) zOL&E^>oOvelaEpt{7gr0q$0Fu`o9zBL~Dya`_B@I`yIXRDNBd8yI)6(Fi{+mdRdwn zJ{g+gX(FTevWiyF5QXks5Y?wvcbOVyksAIVuy7~4a6T1z5CE)E#Bdw~^Nj(NtOE3Q z-S}i?%=QDcKsld)DWZu6U&Zh2VEiM z6G)|55l(Vn^?p_M3y!QVBRyOMAv?YDXY!;zV)OI5y(2y z+O(ibc<2pN1(A96WK(^Xvx*mvx+exQca@zn{+d?RS1mS(cY@lP>Q3A(@_t}LDs6X` z9b95{99y*W4UWv1Z3)z=lPntVYZYAfc~)-$tk4dH9i(_7r>PS>?t^w_zB?^W#XGwZy8`29P1JfuDc7KFs7 zF$6}l4oh#ybFIJ(=Tt2{bG#TttfOlPaWS|2q6_+;Nw^eO(Olg8XMogW7(g-@;E8r# zq>b-{zR}@H=UWqT zBt7~q3aNg@!z^Kq{D+LyLmaL5zfS->((F;S-$Z$O*J1U`xL$67lFAuWR?SiFNYQnX zM|6L4J{5OsDR+j5hN1F(PFP<>%0!g#_d9G z1J2uo-(SWZ>~t#JKd^O6>G;Q&47Tc&h)<^-5upCUR>Pyfz!}4@5T#dNlV9t z(vH#!do0aU-F|0o^R-qz>5S2d%mW)~F7G_ZD~@-5vBp>Z<$3pss5|(9{W)*iVicsm?MuCScG0;!COb+q3~u4r9X`Oe!l3$t_F znGXu?v8({7688=YaZB!)LQcIz@|>7cd^2Vs@B;3S=Tb#oVYU5MB}5@LDXghiP+a0e zWx0xbCR|=+W0I`G8vaj{c7CK^MW5ql^?!Sm$j(I$B`OU&Y&0gQ@wvBijN(|H-Em0Y_?&oi-RTdj%HR! zfgU4zxoA=7t=z`NVMzVbOmO62t6ps{crgC+CcAhy!GZ+0H%P8y)&7%?KKGA+;Ds<* znR_k??2doj?BQe9mYXlnCd+i*oOY!tRiJTGdw{WN4~*DA4k?)qoCtY1iClc+m7io4 zi&T^d!!E6qPTNV02foFNX0Kp+B_T2r;IWX<>39{X&k&c4VeIii6&~Lle zQ9H%vTmi@AX>aR`9@)v%LYw#p($D#&tNY>ATI;nDMD3e8cbgjC$IKf{vvLc+0kHaO zIh@XsVZ!1CRrc_cZtyVD`{F@5WvyPvxmwBLr)a5sEe*!pIS#bUisY8_0B0w92~y(% zeFlOpt=*rFMtabu*+c9L4MF8M`A8>6vyZGyGN!q_b7O6fJ2>>g_<8UgkjMf1sU!>I zVkRAI;aye&5mIc|5x7z6F;|5GA`PWwqG{xR@Be74B+U{JHItXJ2Ji=6;SkOfbOPuu z^=S(c- zkL)cZg zIdHYVh+o>9dged{)SLpxUZT0bUnXnB);GPBWU+bu^HcD)JfNtI-0H}#-8&(d&${}z-uHx;KA>XtFJ!A zF^jrzfO2{8tzG8CH!lELOkA}Q3Wh=5C0!<)L|KOy;jKM_Ulb!?sW8lfm#)l$^HrEN zftiG-Cm=idu^)LGT3sS4Hi}Kgz1k72dOk>)51D41iRSvxJHC@csGy*{3BNpCDGFOjc5Sg7r7L>lxTfNS zf)yN?$8^os3Z^#cI)h+;Vk>6Pf_aq7$!K!Un_LqJfDFi{3HrudBAM1ng$}`q zAIp9qzC9Lt1)Ro->Si%$gOr=lj^~*Qv2wKgc7l)~33Qz;u1m_HWhVeqSagHioPWBi zgIik9A=v{QO5Mu}Esoju;)}d#5MDm0WIoa#13*r6eQc%=IJKx?c5aJxPmKQr@|B!= z!-2)CBf%-9$>n)DlID-rq_#4EI(pIuUZg#8_EvGZ;u+6RJA*%Ui+|grS z!Arz-J3d$1oHxwfRwXX_2Drz)6Zkc$OcAYwSsr)2|N9KwFR7lx{X6a3K%>Jf2E|#3 zzX}Mq=bDrrbYtdTz0#pmuU4b$a0=mzYPg?^q1wa}cLyF;77{yhv1Vb+{T6WqCqqMi52UOoX)E0>F>ghT{kod6wI&M?yK z`Zy9Bn{~3JxYSL#z{Hi916wc?Kd2nfY0P0(&3{p#e)g6+Aob4j;eY}k z2Skkpj{PX;u62ESi}t`)I&c^kTH-NA1X0}%H|oc@wP9K@McgCa1j23tKs_*{-usPj&{F<_x<>|zdLR; z6k3PW$=BQT(*Lk$^lQ*o+GnQWO?@hKe*(d8NpjfvA+8v1J6lKe_Ub_6itU?&K4Rn7 zs^5~vqQ!fAH3+Q~)N5xiJqM?Jl2>3Zp_b^w7jnrLXYtBxs?`2)B?ABvU(zFO#w3c# zjMd$h6BE?3pEyI;xuo^Hb`R=V7|s254h~nKJON-wU^~RUhtWe9XWO7q+Op3y!`iDa zYKRK-EE3LgA4WIk@TUoj7|gzUF|k-?qfna&R&#Zgd|C%G>IXM7FhL}4^zyZy(mMBk zez4pDq9fdqdNvGB_;b+H<|GhmheU>%$H!Zs3%#aN@Q;*N?JgPC`kBz zaSNF4_)MK~R)CgFD7fOSB(}B4(&Y%P{eX5wSR=moYPeP69I|Jw4PV* z$PYuG9ZmQcLs~T8w&ceS!20T{LJN^1-B}9zlBnOy_x+%>>y1{M5(oE`uq;Q zQf@?v&2UQnrBei2bZRrs2sU`Q$;O!ii6ScsOW!&fty)nCnQ&}XL{&H~_r7D5d|uc- zx4GWbJU70RL0@ko_96UyS2-`?jLxcCZqg|iwFD>m%%{q_YJlX{T&;e%RR4qm>=b1V zxX(Yn=j{&M6r9>AB+1mTH_e|XMBLAog`n;u4FqSO&6z>z=Hn&yPsx!qB`aq^QaKtqt!P?tvw7x2& zscJmB)*{*FxV);8(EZ{8g{%fvL708$Cy|5$i0#mARuSiD9ldNw-US%WPpP>OL^F6H zB6A{Kh6HUzA{Loq`;jdZM_2{xY1=-Gl_KKG1c0+d4p?H3e1E}Ffj3$x-fx6W1YSmT zogjOsNEEjS+#P);o>WL0@#ZkdoOEZrTC8#z$$t4rP)W($w^D^`qSXEt-igs`r-zzY zRcB|ILS5rC zD-=OiIC(lu8AW3dgL2LM`eBKCzwNi%awGc~Jj zp03ltC7s0KbwidR!j>FI>;|P;0G}^s3*wX`pR~J9;Y63{(hsLP5cdg1wisK$johbR z&4~=nh~G&(MY^{o-$o{^ycT%s8AxX2k|D5LCE){x1*I7w#LF*tffLOzc@2s}$_`ZH zoNgSKunCUoFJB)^lo(|`B;A{cnkKkrZ{jKXNI~jexcV%72kGdH`9)YYqlMkD7VeV@ z&`S&n8-EP3F;Mx3&o47I)tB(Pdh)Ye&EEx0+B~9z>a9a+(jDjlV~TGN0TmwTPn6=c z8m0k^w(?76Gbcxion(N~lKrKHyI4I1ecq6!nJhl*>J2M(tRMQ#+V}U2!3>!R02Z#B zorB@!ADLU8s86FYj4Hq6Ot{r0q#2CpR#5lE|gZ*85 zG|yzpy>wSf)ymgU;XS&92%g1eQMgei<2}29hUp(uZ8=9g@kdVY&UwpIbCQSZ%(J;8 zqWU*Qt7ukz?o2j0Olu_Z7)=BtsNk;X7io)=`SWDz16MMmlHN_2NGU)wdrZAxWs6ew z$&4~-p_&;~!*SblaHW^YKsT8}g(#IgObO;Hu{P_yZLh-r)E-%edHU;$`=>0+O_+!1(z&9XER$KJWJ{RaX1`~aSNuiI&s{E#5@6WHKGtnTJSmyP!bK+ZFOlKhx+!5>3oVs@5&n`_~3L*vKaRHJlHbAa^Qel9msEx59o&qrj}Tg z%Qvwuo+N<&;1w%Pk~&a*^9qc4D*Nl-_mRHi)y+N74aF{S2Bj{m|Fo?^?1J8~q$jUc zQhWiH5&ld{+sx=dTMCkx#jdf}jvnuV(J2q@CgeoP6k5bP{Ug~5griB0EG7^4OsTvq z0)#hAzE9(fj6*+voWRtZPMwadm-z63M++XW;%9Nypg@(&7e@Cy8F8E_QR?PVni!r0 zQ+5=OdA?(JMP~O7hYq@UYTlxqFV>n?n7IEvyLXFF+5vqQzN5?Wk%Z;4ea%3oH~Zcl zxLlE2*h)EeBe)x4JU`#?0IM&Th>OB1E_zT!k+6+}2B0!9Yu;yIfJOiOG;2BFiNR8s z{Gzws9sX3z`j5%ske*sAu-sx$&aR%)E!R4qb5?^lZ?zHKisPunQZ>%(#>(wD*?Xbk zd>Bnav`a|$2*R>pS|G@L2R!GLFY*}Ay(?n>)V?1EO5a{5|thQ^2Y@ zL-79wAqw-Qwe$PSKaN<}D~*lm6S*?R8?HQW$JX>+DEOZ8X0lso4p=4&*#?baz~QrIU#Dv;4C-_796+Co>0Ee+ z2LB$0skGGtZb*b=*|laB=pz8cT$JKVrjA=H&6b$br`JV-Nb?zM{ok)SN-4p)K-adD zg7>4j!*Ba*{Fy&gJd$EF#SdT@jgPebSb<^6lWB;^1_Vel#)nnyl_j}6n{yk5DW&YB zNwBle+xOtqOW9h|Cn3fNdF)=N|P-ltqq=rC53hR$*W@PN< zqUs4q@~%h>qjPmEj;rR^M*&7#-4`Jy4OY<>hs-QwDp zuuS0|ZDmfm>w9}tUM+eOM%-ryc3_uJ7By)7>G&wsP8fs4ftW?KZc5`>7IO4m-s(n%9|FjZdTS zTdq%;d%@Wr-nnavvhFKIv$*==pc)Q@^S5)tTN2eU5~vwwFbYCny@snmpAJYdcP3Dk zKZ%%ltdJl1wC^J*bBRH?Dz#r2L80#V*dl_(kUPpslcgBxjzy&IFzmV_g&I zrvi4&g{Og)U%YNAW}2ZaRWTLwOz;%O(sCS=pZgk+=6K$>aT&(9ml#3Gk0M56&j*0nmf+`&O`4XZjXlPOwPObU9^r<(pg-&&Aq&WcLoFa^s5LUHcnWg%4!fAqzywnZ^n0sMcJnn+2lI=JJowSLl93|V}_!7Fc<5m=fy z{>upaTBBvwt4Hfk3E{ND)&F3$O&L#M7+&LWjiHl}!#QzVyHr%{v}ekU!i?9SnRd61 zE?3RFMB*|w^4CzKj+_*??k!tgChUGwVApLYUh@g+5?!d5xThF6C|Q{> zwDyaD4>-DU94AEsrZq7G5P&%7F{tac@wQ^gt4|E&{}Qo72h)Px!zXT%DcxmLr3}z^ zlXzs?LDXmP)P|{MLJ(Sy?Mti#hzY}{>39mhEDy-qM`9{f19-TYj{e?(u5m%8NGt`M z(TCuCHS5ocwo2w0!z8nLI^SpEpAo_|2P&3{*OTyc2^N+{D)pEf7Ils37NDtcNl~y0 zUF?ZL$W-2oJ&m5_AQrR-EF;Nm&>j)^oZ!CJDnJlkH@FU*MN@nsFvvt zM@{V8-R&Ue0@08NO`iLH+JlX7rNC{P3jJ`Q*2knqO5-?K$HTd>~W#N z5h?WG%zk~>GtEGiAu!|MFCLXX%g+0$$E>C-jwLmmx*SP2?CPoIT&p->PS@uN3|EnV z*0uI z4euN?*5z~LF+_dF+h*)yEXh$R@vB)ntBg!%L-iIkCkr*5T;*1>_xQH~c8FNd)|#t} z(~8()3Uoh|8)gIv?_UdKx~JSCDhoX&a%AVtgUdU+H9bB*@rL3{~6^>YGb8A>E3k^It#Fv)9lcU6%c=O*&s z<&65*qDwhE!@3VQ7$Af%;+|BhTydJIJ_1l4Z2ahX*7_U%Wl?}{r~6zIjZDucR_03O zB}O&Oy^sxE`e*Y!3ZmJ=jf`5y1>sGFn}2;iDS9pjx?SATUcKW}o~cJ5K|ivvPyC66 zEvnX6m6t$?j)g%< zKS~aG9F|2Nq0TwhohVb&Ezqj5}AgA&k+}lwA*sAZfC5pVPx0r5QPMyiNL` z_;L{HtqsQjX5DHTb5>@+q6KQNl&^e;d-eoV(i>sbi%JIY`lTU$|Hkdp3|XjqQ4%=q zpGaw7&$@!r3Hb1g6{uPaCCk-jQh7`~{@-n~S4x5_jndM>j<)1*GLa)iX_HTHVg{xU zU1RP?UiMhnZ}b(#@GRDQXiS|}3tRU~R19j-dJn|0*lg{4TLZQaAHC?jl8D2L8ZxZ6 z1=MYas%gn%!VeWoS04El8Dnnr95#B*wl@#d9#d4h@p!Jf8Uk~BvdSxlXSMa((7?`E zPW2mB`P|c2ay;DODH&ar6$VWxSgP+_)X$8v2l{lMqG>ih8)`#|n51M*d$) zH1hD&0AzWO658#@5e0%w4%8yF{dZ7+CQ2%V|B68RB`|~s{$yUSPw+{9aBw?zbS2#QW(ftAYk0mnm4#K8oeQ0%J zkUGV2v{VXXw3RhWrQ;+!J9|%(+I^r_Nh3swRrW59p?zY|0z7`kxHYqRCp-M~CyFc2 z5^-zs46UzuooY%$A(Lqq`2yr3Nt|*VOB$M5{pSr{m#IpM@>+WwEPRgbIkYw~iN z*0DIZ)fLwt5Q{bxbmX5TWa?Nb^z=r_H6CAYVs0jx>Y_DLgEq>h z!L_~vk!=gri!{BZ0p~^ax{Ha7uDoB&UqhXJ_6otn(BjFs`kGl#!1Sv%iL^T;h?8SV zp#IO+@GpoUGvm3tZ>fM*f8WIhC2HBq?RgUp1P(UmBfp42V!T%=F|I!LC|tU_V1k00sio#0X7tkHOrm?v*H3;!p4SF+)||1cpM`$7_m9-x{VZhTqIS>rE2TlDvbjP% zcyor_H=~{sn1Aj2&6qsN*HKEJ2=V|}Y3{}Ad2%L-FO5{Yi)nWut%vrjWi&-j?lYH< zOvDy~j`1jlX93_fVVcGPg5nlK)rV46O}$hbKCr`Bmvnp={V5OPk+qU~`H+Dge{063h>||8`Ih!kek5Lw78v!SK(77-nYr zoA<%*bWxqq*RiP|Whm4*O+KX6O61MaTc5>ZzqyDKgGb%mTI1Zt79~=g z#P$<|xyZ(^1S}W+DnzVdpH0knu-@z$OBSPe@E_c!))}jvy4Kw#E(6&+huii6fb7ic zYDEaCEC+Q$Gt%p0|J|Ve_QKTepA1z*02cdV;)wRsR5VEdZ~bD*_d5nJGX(CIo7x8^ zECRp8T-@@q5UI_{z$p0Aya*h!hj|gh=^NaPEvy=t(6)JvFJ4PGotiE5zO{I;L546v zz))QE3JsLLjuVtCM1QNN=kHNS8xU?j5559hCfxM?sv~nMykGJ-2JGoL(q_ZH@P_Fg z!HhxRX+)V_6jE{%3pgd3SY!Y3&rqW#PAh3_*h#r&&NJ8iR6~yb; zCFiA^Hp#a06l`L#Iom2uQiPD0t-F_#Tvy%cBHnx1mqxg@@eW^ZZn>Dr!@@oJN>#`( zFR>@*B*#W{A*{F!3p#0&=u4DW4lHX&powvf5P?_&<7+Sl)8E79+n2)nsM zp9j^Ay$fx2n&!wD#>ERW_4eM#^VLSS+gdbL0TFbs$|mRzcGrN*axAYl^CS*8+HkI_ z_sx^Hj6|p>n*;D(6XSq3cklYAi>lczvukWuB%I39G2l^X1~+N*Gk$w0vspBcf`Xrk zm!+GJNLaf@Y5KP@GlydTq+-i^P~D~e1b+QDYe#0`=v!#_nK z(qWrHt*@8_wjohpSK69WPh-|FWJ>Vchp0p8YIMr*IRSz{0CsC_C!Z>aIy2o>I7Pes zOijp->NzdkK?73I-6j0#Vb?ooCS`$JMGe1S8co2N{;F9`lIzv$_2uBcpM8gVc#=O{ zED&FD9NWxGFQhuX?tcx9)Nb0r1kdO_@1tp|-8*c_20I@2V%LKYCU>1=3tCD5LVK*H z`I2l?bhOFO0_-ozF5#b_n@}{5ZDV$R8B?xzdB9p{C>S83z?plf-mMTAd5&$`cEb_5 z$y)>@WIH?ua#{;FRIgyQ6MijmJ_c_t2Kaxw6pQ~9mSoC|?DT9?aSq5zt<*S1uaSFv z`Nt>+A?m>wdXUuAno6l6ILfrK%b!E*ODlLK@n8$kN)RZSP6XrCuQ?#sH8;*9Rpc>bnyT5yV<{hJZG>(-0Jtv(icz zPu;XV3t@=FTU5FJr+uAm;xwkoA0gWE!Spt4#B5)G{8ngoQkaJv?w=I%tQFPFl6mb# zI;yQR_mUeH!r@o(kU`u}d&J51mvC8i%(+UdU8tIKqEbeX||TYOLn zx)9wz2WsTnTiWx%hLJ-AZGb%6oRd)5$DxCEb?Ve7Fe#LqecBNjWE}`yUdc zr6#uNDmYV<-g4?dxy+AgjylE31YeJb!3{Yo9L9Y+k^ora5x}Sn!_%owbwoi7_E?y? zzW$bF4O&q;#XW%o5yZ98+oFIkaL~Yd}KrmHyJlgUw45YhA-lPZ!!ZS=VaB=6XCfP;q~Hxk)rbJGq3~=ts(k7sLBCX=>V$pANuzox>%-?W_MBF;GE2ZAn78$=G4 zPZhjj2vCtNf=zJ=1%Rf`={F1v>#P!tc9P^`PGqf&CDRDm6kOodAsMs&>AFXa;0&IJ zp&y)_%UKy`wbrMeG|ujv`C9G7DgPPK3xRe>{3DrEk937hh9iqIW^T`4%h1+c2jTF) ziu!0Nly=S`Yav>p6N5 zE#B~aZZTkLtp@@{PK?!SmeDU~g&}=&V2Mo4HdqPJk6{H9*9Vkhq0B=c3FAFPGpbTp zl4yj~YDKK1FrLvF_9)5lLs0O}g_;VnjqQe#ROsmN&>%o~nT0qaTpW!dwe-F9>NODGz$Np*Pnho0(IYb+^vYB0{(XZ(Q5jugLT$?b!_NQ1#)L(!od4SD z372T=H6OYhXO&Q(N*I}tep?&O6UJ;S*v9oZo}}t>4LJ|<1@A9VkT~jhyc(o@n2BL< z0Q)}YaMzI$@~V0t(>hk#n%Ud4@2<2AvkME#_8(S+rbwz1J=Z3m{)CyRVZEKod_0NJ36Q| z6OnGQyZHce<|Q`W)IMb#X=7H$(p`t)SH)>LVV-#)9t!YI?TDlF@+ihBE|5Rh!Ione zb#KzB(xIa%@OHc2?EQ>iwa5}iGm#!MuhlYBG>EZx@tZZ*Caj3lnA{P*S#{aI7O_*y z>9}^$&Wv~PrOj=&D0sT;tUpgNYb>njBD>g_I!(mFv=^XxRPXnQ))s!NS6qPaDfh2^ z?*K?Zx4-6Fty>{{XbmZ6jK_ed8X%I=dWys^%yYZ}0VHlgFWO)X7IujGbwWt@pRDqd zI;4b5y#Jwr^#3iAh51J`l+$;;K_kPe(}FadN~{irXym9b(@?grp~{lKR&4H&!C7k) zOc6-L18PMiK7F44FRQGC`DZWY@k@@;F^M?6y)GPCG6yD2#F&ZVqjl$MZml!LA1-AV zEkVlc6y~@_A5w>LutFu|Q0=G$N9D|!zsoV-NAUUk_2DK#NdVB`hv8j@KTm7BAaNL( zcAw*m$d)^|G#1XfFdpIek8llz-G$+i zVrgkFf566o1$AEHrVgX68Y*Le0-T<9q3qlKB?uwD{>Zt>I=LkcJW|Wp^nXP?t|a<} zI_9$jM|-#b7VSYfrQG3`UA?HB8KR*yS$Q}v2bGWiw^fC9*LIxpoeo=yyXgs0OJ-Y! z7KXC#JK^pUQ~zy^Fp+EOZ^;cJQ=P-poxF_Sy`9#W#f*8ZAxW#D-}B?9PlTGLmQU1t zxrEM}$J&vy3giaUwE?q8$U~&PN?=~(A78b*riaS0c}DD_9$uNgA4DwHaxcr7mFG@m zI!ec~e9O(8Viq@Q1pw@-E)sUzH6Cc?WX6VzP|dXkJ(#c$_`#d{MWDQ~m3GU}6_04Y zz{(_KbmKc{e42mE_bK_C>^d1YrL-c1vbh>;1XN+zUp;R=B1i>ACXZteapl_{j#Co_ zUG5TPJbOqQx>Yf*Zk?)aLYDVg@rRZkFQ1*>sbPrzY#Z9YNv#EqV_yKf*PE@oHI+l2 z4Wh+QSq>ywyz*NLo#}hDuO?t;YJFCvM$;Lq%97|P&)IR;T%0Z^1UCv4OuQHaK}fYf z)M_MddkHyN${*nf$xW6iKJ7hJX&e#58QWeEus+^0dY_Ma(EiE2qR$%x+C<-_iB;$? zW^N6)T^-veNx&wbyxF^kEBPpZl#J!tsh4gjV2!@QLgJ$CHuPENjn}l>iD;}|>hzRn z1n0K`zkDVAT+JYm0mdOw2i6u|+Z$}1WLXw#RhoM1Pt)3K~Z(zM)poVvD*QMhmgK^-IVA7$%_l}+% zAQ(tE42y)zm`p zhp&8HquyO7nyhNnSnc8@06@64WYBuwF&?N9v5@sC_}def-%&Y)x1^m&cMcWb1^}&B zlcZk?hCsV-fgt`diA40_B^lcqAj7<5T_-ILx>EgeV@z2U72i~^ChQ8xE6a#ZMOOBQis_qqA3n6@EiOv7^l_upp?!Rmcf_ zr(}CcA{pq#@-ExlWalcl1pWX2p_$0h4AU3QX1oY>!L)yV;H^nqVYmx&AE%r^`byEo z3ImwatR1ZA|GNeo<&VwaFoLGzSm1e9m(B9#%*>53Wn=ou|AD?shuN^dhVDM?`KzdD zmz%NyM|>E3gyun-Pi@VR4^pK|xt+N4VaG$)@+vzy&B_Arnn&}mS5kh*sNjc@?L}CnsE%EmjD#zV90zDUmm=F4rSVpG zbAisiX}iYqW#G#kig8saAumh_9f&ngSS--|zH|!~{#AU};aN6z>MYq6vy3jX;4X9r z*UoVFnE=LsHm+@qyp{dV#~j70(vm%iziJ>7C|;RNW05Kx7S?mSo*k>p6QPsEPL{I* zcjNu$mkTK!k_0Bx-?$9duTo9xM>2`E-!a%bN~^{!+>~%pS<7Gyt%US7W(^_!d)>wW zr(@Ivp8pE6)&(I>jb2Y$q{L4-5&D0K;n|W|0H0CmI%B|YXx-NnW5=tXqk91eWuXiW z=^M(8pF3uuS_9#eu8`*5wc%$&QqSl2F-1~!U4&|R1gOzN@`C`I{$JdfUPkUU`cShY z*8)4AqnN_+%SIoQymKORoQVX3Ju@^Kgv*Xs~6aAjqi>*%U_Kv1+#nmitbLv*2xT zvNo%V`{kaVoU<${bY%gxiyGS71EGEo#LYsY${Xu*3g z)J@(sTPdgc3|xO;{0Ts%kFJ*OYW0Z<9^h$u!5LsL^JT&SyGmEAJrRrwOrEn?C)ez0 zQFrs;$bG38NP&yIhX>u_qVcH>D7#bxopFVo$MD!ig3c0>s)`+_-D^XItH*{p;s~}I zh~c9C_jIICc0BkB&@R$7r;(Sl@j4|1=B+E#b~YZ%UM?(>%#vhtAUdx8iZ>#nfvq%T zc~R63NaL#wYxSM7>I0TJr7dXhuf24aQ^1)#EFXvMna?{23!!ZbA3Ce z7OrR^%g72ZSUNLiI<(tt$$5tl@*v#aUL5XGCip0M4=q_6M3HK`8;I7rDa1R+s|A9N z-`JI;3&9&Q9-D$>@EVxd4`>jAJPph{CJj(GV)&A)9<^+()>ZF1$ytD6^gp!(?cO-} z&@=jyD3@+nwoKSK-|`soJL0laJ~f>6!XYfob)$qi#lo@F^0-%~N~my$oR-P)Mb zH>!~6s5DL0sw&QnJNZg?oq;mI&<>8|J8Z&wp?+UIXyogZhiECR-uy8bymO}s(gz=w z3C5jrKoiY}X*)D@0YA>tv3nFnX(#UQp|finG7uiMuiF=LL^@B-KfvW*Jg5qQ{{gYw z8oS=txv_|^K5sOPs|qd~fAk_j&UaE4wQTV%ul-zU9%=_j0@2&ofpUk#T^82o>!7iG zw%?j~_!mX{>cg&Fpn2svW-{o4-bVFe-N)>HqgWOz7Aqmy7k(Yk=CjcP$^OH5lICTs zJtb->W$vIGP=00?CI&Qfsq^(Au#6PyqfBlesTtO7W7X%m4qhWZcjR#q2mn-ZA`AHL zg5i?Eu$NVf!}ouGSt@#87dFH~_WdiZptlCEi~&qIR_;+fi59qZgva51#%z8 zJyj}vkfy=I0hPXoNkpr`jv{p^ya*7WFi?M+f>iFrOYKz2;JE>uDN_%vN=rntl?&QM z21{6**_2-fu3EdOqM`64DF*{TQBqvhRV70-Y&pV5Ki8yR+*yC8J^gD#aCzK{8k7{W z)Z&smC$80Od)LFKm|_2#-|gfjq_`oS*$tqNVHvBpPZq|zuB zqa)-D#&UfUzhBmVm>%fcm@7H*OJgH%98?gUcy=A-IDds4J4Ls%TYE}hhQoAQu2=06 zL6&NZ;gO}dI{SwT*}?`75j83#QvG4!ZTt_x6U6CJ7_f3})nW|}Zq^>X?R|kWKk17N=lc!9E*mRXmy_ikTrHQKiIV5Fx(R5#^waYj|ubZ&EOLVA@A z>KS2kD&7+ZZoB76 zNO6pJmJ*w0thGqmNvu=7cWBYa`#;9s&Bc5R=w6a{tXWnW^Gl~k_|Vv=4`$?UO!x8 z5rM@m5Lu)w7o=BG98iJ8&_Z;OPkY(jHSztvGOHS?s@3?vM`$adrpQBqf~Xtyq<{w> z#idrg>@TN&{V4+`bj0H?bQ%(c_omxu{SSsiB<6f|k2dvJ0+x;N6#l{<3Y}fl_HIiQ zAj0L7(qxiPci82KX<9iG8zeAq;mtunxad_1rW~Jm-H-SSVq_r2kJRjS)+q7Zpr^!vOXDe+Qp(#q%__e-@Di<3+J*i16$0%Z8q1}6qpiz>5-p$<*S%2zA@$t zH8GG#I#Ak_JaY3iMs1E3UT-Y`F@s3YuP;&e+dtk`%X04GZPBRM$h*%R+vr?E9WYt# z;C*>MF?U3EKSs*j4T1{O;z-FRt+;UTcKPLAgs`CUk7G+_@h)>gU4}b4$WOPxD32)b zzwpknT053=s=ZUJd%aXcvCYjyLXhZ`Jx{PAgCQ%}`e;lw6R!P~vQviDea+N+JJKqX zK#};DQG?SKk$JWt%g9z=AkUov{JsA_q9mjA>EIbGpTyb6i$_mxKbI*vA?&V zGBxHu(9M0+64e~XiwoG*sW{6BSQ3UFDq-iP zo`3ZWZY+JNAYOqfx7Wo~&NdWj0T0b#*6w|krLp=>s|mOrGv&PhOdj^s1FrB^xa04} zc2oT;XrN*MN@DJKm*ePCw{6I@8|XFuDcL{<_-uub;ULTr9YR(F)ut^?a0@J7_12FG zk9D%XXL+>rYD{#jv8x`-8-`g$B|D0VCLt4FJB-A$-0IH$KJkRUCA} z#!SKruRwdm48!J6kofU0{PEOsR zLrH=D26x=#Z9?6ms#O@*3V@2con1$WSjxjvn?s=69Z?iDPJ#cxxzi7a$oRiJZLNUc z-QUX8qO?qyR=E<9bztTJ*(-z4hbsPQvTcTOsy!-YtuIjc&# z-Blqf3tVqzvO69)mH@9Q11(V09%3C};*Fx62IZcT2b2epnE@K$0Yt0Ld|iG?2!b2P zqK)CX8ZW3kmc1BejA^>4+KJ=y>#aZf=whiq4Vh6~xU;K*C>VS-OU(^X+$l);P@rmX z#3M&~P_cRm{UN3bUbC1r zJcnIO%{iA@=s_8?@C{o#Rb;+1AgpldfA1xzUZhFV8HD&UU6+7``Rh8LTErP{fjp4! ztD$U=K@+OzGn9b|U8uf#XonGoF0RD;_~VnDk7%0Cd%m}b2X<#uUG;eFsN};ya%Yt6 zI!zpsd-p)G;Hjc4gLp(rdRBj@Bwny~e7ceXnF>Ch<4I+EAoOeSnaGH8e(ni`4x6_z zCB#N8bMPld1|rSiK5TcUw@$G&G6F|f*?CT+&9=sGI}i%fW2#ozJ`1ZD?27%d-Tz4Z zy%2gd8HKwVJi z4i7 zsG@((zW0C>rECy>mFseBQ?;w4ordZmBmj+wmYV1T`M;AxB_;50xdaIkU`>Q-gzZWL ze(g6?sKS-z6^fpocb}r`c|T5mzVxXytO0sOI-vL~%lnxJkcK{&eNI7YF>#oLx3N_oc>U!C`7$Z2UOORlIz!!QDp>hsLQCuO;r}EShsf>A~QC#Cw+!_+?3V9 z`8VMfxQR}sn%CYfQeKr7Mw#@a>iHf2D&12}gb~>DZ$8bHoG&5|@+{wI>kzPPI%J(C<-qult7uS%G!eIq&9&p<@!Llr8-;sD+IAdCx^3?WT*-5 zrnJavlFW~6Uq9R*puTT`8)_F$NF>MUTIX)Ec95Q*@-j@C<@gKlXz z&XBm{Pf*8H^MA%~z2k=R>?Umo&y&SLIJTCMy3Pw;>{Lnvh!_+88peM#UyMocyM>Ru z#n5sA;_g}J#R~^7y$p%C|RN1jC!-WAU3J-eW!!TjxuqKzd! z--DqjRcbXvhN+!sNQFvz_iVi%NH-=CoABfqCA0Sthkmqs?bQXLtF*35JpTCT^*uQm z9a&Ywa9VKHKcr^M2oT>5h}0xdR(>8CBVOJ&86Z$hw(=oi|5DE97wp|}20K|uLkn5y zX?K~L;F^FGUNT;4eSO9wn>M2WOAEu`68QJ0hwcRpA&XX1xAYZdrt zJ*L+jp>(_AH2c?OheNKxBqMAx^-a`ffWa++ULV}_cwb5(;i*+D1txND9H!&%3_xf2c%eM+`0Soxpk&>pd^XcGVTI~Ni~w=}u% zFAkZZ`%Ryx*&a&~zrRL!K)s|2@F!yGW>a>dq+0nb}lUVL=ZV?sxN8^1k5||6w zq7}YE?$?+u-J>`mTZmqKm^vxlOQ=B^(0ZQ}F8XqBBKF;B=#+szbS8=DEuZL554#6p=b)0kM%=56 zzN~hr?KE=vTK*nD(Ie0o$u`-1dOJrHGK+*0zgx&SYUM>Kiu6$^%O8A6roEg~zt;5q zkm^&dXPF*OD>)^_7Wai~E~%>vJDMxl?6Dt7gk{6E_f~Rq-nCFSzx5VV?}Dh|3jva5 zz6nM{_P5i8qyOkVj^7MtjEn?*>@h}itRc((k-mTV!axe`nD;qs$haxDmHt(KYV$xF zaA$CRSxaT+7EAG+kPQR1!U=K(R=Qf}9Hcc#6~X&GPmMsr0}uS@f0;NFvWSlU3EkXV z$CH!jKaYQrPAt2#nr_^a+%r>loz-VK;Jr(PVZbCu)&9T z6d_3(oY=5n7Sj8x!^v!afk7vc0SF&!ZZu~Z(A`<7Q;E4olP&7T3y!j}Ew{nSKX0)` zcJsZYD$wfsA%tN`C%!~lfcla&@24DLeMH+z=3q6}ABTv!Z6Gyr7-;Z16M38RR%uD< z-93U0M63@rkBK@&)ucPCA?|WV<+7L4$hi(hhRcOgoJ05TbXm#>Tm(mYjIR&j55-84 z`Ve5J!vJkP7@|2L>rBv9$dOs`tNz!A2#Zr~C@U`~{&DZD&r00 z`if*h_zu#5I1ieRFv&6UG5hx({bJn_+Z|`0(K1(-k~`9~JFSY+WGT5k@ars!>4INl zFoOcWU}{t-D+EX{b!frN-Q7=fGs0Ms*%)4XnJc*;zYMa`SN;M^>t4XyVBm7H(1*c?L`}RqUgl zB0H*P4!3)x|Y#CgICOA)OK5%OVQB>tNn7N{GLGuKjH6k3*S9if7k(| zTaWHN2(0&(E|OACb*apSbNlgH7^nDm&V?a3L`_BDT?3g}!XU|dn9^CD)<69v3}rs> z_kJ*->h{;+yWK$O`Oq~1G(+WfFSA5YLIY313sq0JoC|lD+6;acoIk}IVW5t z1wlVFM<+UlScAf}p#z}V8c)9PS$6toq^%S_tRrsNY1}wE8L#ZRV~ALRD)rT29qvHJ zqqP}IXxB|+hh`vM6o2)>^a+5_Byj`NPR5(0LhdY(MB7S10&F_Nd%jv4dLs{c zA)rRa|9BONOpCz)aTsG?rDM&AJg~+3UN?W5qbh3Hi&r=@a<$gM^3z;xF_K!!SDkg9 zUDv}vJMKHZ{@ML9bK5vcAp0SwTh1Ls(fTr^p0}fN0zYa#$X$H-1iC{MMFhI7)`Jv@ zqJ6|>g=l!ZCf=ydUsl#2C&#tlr%pTawbJL z=Ke69^FjUdIqC?w$>Lf3?Ww{JFeBw`g08z1FQ*RX8$S_qkh;ajrQUo)xizMM=F&GK zhJz2J&7iuQt2iEab`P~zqef7eJ!>ZJ>w>pBPh)hy<73@{Nv1*+$yexY!pI%Ok=y?# z6RgRp!kCvto44fG=WOJF2oWAQ#5=uqpaMBQZ(p_wUaV8d#4B0eWRw+KP?xb(MR^IC z$q`MAz$L+1W%u8b%?=QQ%ZKWXHsML2#|*G95RG1c+?^i2I;$Cx!x%Mz`5rIv)dGf= z)h_l4-w$WdLygG^i0s+18P*G}s?JImul7`$pww!Nf#`a3fzokq;R&BuXfzQ6S%J+3 zG;27Dm0TebGUfr7=ioZS-sO25e7eeF7cS1mRcm8Z0s4@gIw;IK_opRDE(qxX=Zu<6 z*1KWog6i=#g(7iR8z(}5s#sh@BpL;>HSFguG}@s!owQSJur#z(3eX= z<0tprQx#6y5@+`bh#;i*$#y$-jJckfM%5cw^%^gUpRLSNpzle0F$&*Z4+oV=8}Ys; z6<%^a2cs5aj78+Wg0A4PDifak5%~bowuSsgciSE}=QiEr*z)v>M)tkNu$$2gs*6c# zaJLzRiR}GwB7y%3lmE@Z7M#I6rxtF#F9gO^B1McS=%tj2BekDCs*z5it6P6=1I5GI zuKO)91yXD%l2eu!!E{!-+k8yK6QB#Y9Tclk*D&10s{bT7-%GmDs=@%w{|4Dce{dtf zMhsw3L{Yn-PwPRace+-4Aj1N?BN3L43=DTH<+3d&TxH4IHj|2Z82`AC*n5I1db7Bz zG+w2CERl&=$@2-S)#ZC<-$YA5IwELeQ>FKy`lj;_VhO=Y{u^CGe%f!gr6V&CyYQu1Xw&wlsci+z{>!bdEj67O1=1l3$- z5$RG|I3+GZOYg}rZ{=lgFK^X}$=e!6CM2aYQ9toDmZyi278G~0k$(#KjV_^oWq}cL zzT8806oNVGjC6}Pe>|2_<7KYr?rSiNH4|-|>IO7Nn=X=GKb8 z$Lb{hWHye=OD|ToinzG?b7mRXPgv;IY~eZN3EpxW|20{$;x31mD^)&R2XBRs9Fe5j z<`C9N-Ss%B1mZp0wE)ynTt-7N9cnB_^w831>{|+9Sf2@vAz**>@4#qsdMgxXLJjhk z_(n60u!sWkZtp(*xZD^ehQfVB&%S-FMvaH=7<)DEBaB;d3wpLtS+Fc2QW9A|^dH15 z0ux~(wq6eeVn(D|XI07Dwb5cYcsuS1YWvL>$R#}F8qeov*0^f0(fMEYMPqyU}z0*K}E4dV5Z_$3m z8zdtqauc!2f-BOQH8`{9nu!&c5ok8yXIPrd;c*(fWjlulyGnUQ zCHhST*AlI%#mi|@^(U(GdDWdLcfW|kwi!lFPKKe{tj3jWafZB}29~UMqVPNIgWrsP zZ%YQ{0^yE;>Mc9v%fhZR8owkW|nCA5PPx#_pwj1zWFn{r6BzV05T16v@(O*9Z z`+2QXHqiQ~lY5moAnsL*!zI=yED->bw+A0pAkFU^_aVB(Yi%O~VNLLU{ z6a9#tk5QYKmxd6=%GU!kgTlXiiKq$)!ru2R)t%(H^WrF8iQHz(>U9gbwsrX+rMUf|tHIaKhYGa$v`%erU!m*Yh6%{;efUF}yK^-Qv z0H8<@rARkuKfX$m=kxp!_w^iOycRFNSB9VD1oYe-nWDR$ARy$lkJ+mNK@ zw-Zx80@;mv1LBN1Lc(iu(wYyQbIJ{^hS?Qgbb-*niO#bT}O(P;jn zaWJq_(!Wzwh<7!CV7Rt^%ZokD0skXP{Ct4ak$^n*yzDy2GCRw4L|}oj28eMjzc? zNXQ1YDy@rK^FwDVE}65FVqC3jWf_@?l4F(YR*dqz)ja$MHZZ+8@*ZekP^G-S+Ony` zQ1{pia=2OjYmsc}EeUFCn5aDPe%oo9o<$QP_p1GZuyJcGga9mP6>ib1@G6aKNb|NS z{f@(AMYU)PQ9pzg_f~8x7sFptNwmE?(k;tqGDygf&HKht+Dd*Iss9gfXvq>D8d zQ&8>qO#{a|<`-d|4!r2yQGg%kn{k_!U zlJfU+(lR!SXg>%X%j74Hs)XY7(a<`g5j(I!nuT>V7~`lJBw!$_1C!pwctjfTA2M@aV64LEwXx`2pFWXxkN zEp&nRWb@d@zT!o-5wx)+p7wi7#SjsK@Ekp=wZI}z$8;tq$6P&4c?z1Y75AV;ES8|! zy~mnf!3`wMQ&5bS;gYtCmCq?k;X|OiyEJ!tiA#KU83IXoZTXvdT1)#k7|R`6^iMis zG=azE1mZMLNg=A#BMUdYM*%%LJA3)AVlP$8O0=fjfRuq-77S7jMf1;aG1y|-mU)WH zgHa<V3bzA*)hicnliXw9+dF&s|r=x^M$+N%OCUe zjUj@fCTkLRV7npvA68?Q`hbVE#WR5XVz%`_Xo6yeG$I{%Lo4M*mT1HplrmQ)wL`r| zWGLJ~zl|5*N(5}7SxV%)d0d-NfHY3)IEIfhD(X<-!{ngA&kh z!3JsOzf`z7`m93xXR71cemJ>|%7F9f-2IxGJ(&hBy|#N|WIk@gMpDr# zni-k-X|};$VgCYkzGE{nqG?6EWn=ibe?3UD;WIZ9S_%STI!RUirB7M_K zaQ%xE!@Dp;Jt0oxNwE@Vy=@uYJQj@WKWd)|{ld!^H==2p3)d2Rb7y`!SujoCY?Sm+ z^ptNMd`gM;udh}SX9~P&<*;un)5_6i;%daQNIVZJAfB9E&F4;2r+mxw*nXpEuJ=e( zU1}4HN(0bhh#DeKDX+Gy;@JCJbuQshPnz4SVXUk`~c`&fNK5u;oZo&pVh(^ z!j%N2|Bi0B;-_VBAoV@n!=j`AOSocdS8|}8qgMm;JQj-G#5{4T5=MEr%L`p{XdXd6 z5y9VXZ9bY)Diw1xU>!D1v0IBqEc(gfbSB-`Qo!m7<<56iuvBW$QS(?w)65}ITAms^ zwlAS71BU~l0-Wb8B8Wc48b0L)VSOa=n{V59-L)7S%63dL@8F(k4Kqo(l6AO$b0;pB z8NDywR9q!t!gEysd^1+k9V}D~Y!lEu#7V6V9z@0+r5cU<+p2rg<#v`beoiTKL}Uve z4z(i!_X*^|yR%wpFoI>=?Xz_c(tHZKnAc(^#sO`-D?TCmENXR-qm_MGa5-V<(UB)7AnmLfQ<%yB!SOdpKz`^V*LmV0@ssfLMI<~u{ zNN_7x-gS$KD~wju15X8mNAi;uozT2CP{-+ZfQvrKb_n*6um37iVLv!u8AkQrL5fO+ zAOGL&={0{`8^R2F^u{Pa;Y@5u>`^HIC}qpV?Cj=-cqL8NU`MYg7nvv~Kp`i95BZ$g zDUMNH7(>QQZh?6GUq?#vy)9`9xl$~ejpANO;1mOSbxL-#A|`8)7RlTG{UnwNRjH9E8U-Qmff=oeWll!fL z$H7ds;4b6Wd}dFz#|eUZ++m;rP{!s^f(dKfo>_Ye z^9*D<5uc61+PJ)47)wBTscbX?^qpPMmK(;2T!IS}ch<8JWE zKmzoyHAAeOX2fk8$^EHC#Mct`xw%8L89I4&``5Pr_|JhJI0=9GS*`!(qGse?i(Snn zcRu?+Uu&axh5zaV{x0(gF|qo^y^Zyp>v#N7-_ZYYMlv0Ls1?)-n$ONeiPHq*GXG`C z#)a&aHnd_nmSGt2JA{$H;G(HQe~N=0UP^cZEX1C#qu_=Ax;ENDVBvtQ;AVF_rw!l^ z-<0Qw$2$Nip7&ug*7TRS${}Jzp3)<=4$RwOzR)_chHcj(_fdt(F z-emM#lHW!>>z^LO&$V7)!l4?*#r&Th|RPJUPdXcUj2U1vg{k z^qUzM>o8rh$ruaURE6wA{y#FHD=yIewVb`K91YRsnZFS3L82kqa|%LwLrh?tLy~W4 zQ6x6ZdM>8y+mjk!l=_Mzlscsjv6~I}&VVF9Sp#6wKmEPCKxG{iw0{@k937yklnL#D zYzz$Qil0r^=KMtdD@$%9iKO(IJy-93{8ml-1+0zueJ9DINi+k!8M}}?{R0r(c6q&0 zG5}k&e7`UwF=HT~S^wv&A{*oxk2Y-h8mZL43m1}(C_e#-xt9`w>z{#u0>v2eW|zKK zqGRI#K4g`wsHsLZpp*Oyv9t%M`RXD!?o7!#yx;JYJ`#va zk56F8^UmNireNjgry_5F08K7KzJ2IJWVHcx@3&bbU6}Sbvcq zK4M8??r$YxUXlsmpn~hD_}BAz@KW$1P0o1sbI4=u{xZ-6o^yyRt}C?2ziKMBu2r-W z1r=W0roFl9*N)rdP_>Q21Qznb|a;PV#LtC5f!N?=qY zQIXs6IO9NMEvp zS8Tu3s}gIH+XNgViKu{5aBRt1{Bemc8-)-~TLGxtO@hAQjc--~RCSEob3$0ZYa`JR zdQTDosX5L}u5_@Q;j*cx=h~)>Ke=?E?vB=EGwi+Hx{&@j!0PVY5-RlG6HeF8*t*q$_NuD~ZXRrzm> z3;ERr?kXF{b1$p$NTQgH-Z4iXKNq$sykXD#Z*k)r#-iifFIQpbG=H`DPN!DUMXGN? zT`4kf3&D6#JU2DSo{Vs-G?)M}ZMJLc3R_PM*u39{v(##GveXPnT96|XiHvxe_4*`+ z$C0~$(Tu5c9v_&&pF*^_VT(fo1qykwaj#L|!XhI55iH{Gg`{*M^w|-b4)RQ&?agok zg*BBz^Wc2XX8}@A$k;M?X!*j=pi0F743r88MP9PXf_)dy)_naE(pnFx zAcPvvsiGXzXAa2lkPFy|RU&OcXBYWF#7%RU7{@bCV>OpXYTDZEn#V|EHFd&KaJolE_*#KTh9b| z5C!mo%V*z2l!EqVc~ve}f@p8Q8~##ZCNsY;ar>tWv+`IrvZQGqP7VyFsbIMukz~uT&LN2 z1Yas&P6)scr7kS%x_kC`$S0MIwe-S<*3XCDzk+(3VuA-*Eb*$3{P zz88S#M_-Em)EBCb=l^K-2!G60e?j(8MReQcYM%=ng!%o0-Qb8KUcLpI7Y|n9C8j(7 zbvc?QadiCzhm^-z5X#=}c1fGmWD2*Ir*hBrRQXZiAd}-`eV2o+M>%iuOsFxspVr#7 zMkv)A*hGe!hKh-w)UjO8z3~i_PM44W-65!~j@=zlgfc|HB!lwtm!d_22lQQEBeFa7 zZ{Oyy0=}9~j*XFVdeQ2l_;n4hIt0D35f=DO@MAh1T@~9VD))OyPkgdPd0@p@8Wr-rA$n5oDOVkP_y);74hDg5Eqek?z)Uqm34V zYa|%>D5|4e~2(hKU@H_!I5m1)H#9OI9|k)A8p%GeFEH>;C+_E4sbs z%A0cYkb>wjKO<;vMXX>!887xgvsVROgtwlfwfW1qekMgwVRd9SX5*X2C`j_gQ$=)Y>%sAvS~)TfEXK3f_r^@q&rVe#CYD zVFE;l^w0G@o_W~{v1`a$v~>oErd6Dl!K=J5ff8_B!wAhq-e^PLe8a6-@mU?8$tz-e z(QL?gN;O`zTY2Y8k&kb$DrvC-=-*Qju1}y6sb#9_ly$eFRppvO5ZvKC(+?nm&iky* zJP=Mr1p^M;;&NBeyu2qJ@DXP#so%~tHQ|D|h8`XBM#J{%@8GbN`q!QS zu7ovK%VX>~Uc--VbA+8REvbMazvI;p>{K7n?!i1EHIK2{+@*sak<6UYAUIPL*<4}X zN@&_5F>8xX+Q=*N@SKW1hPYd=db$cwGxM`lj;s+=BM$Vjl9>_u<9j&6geW8mzS#8H zT~#`(K4)tM4%pq)?vJTMt+E+OCWYnM-RS35co3|t1Q8I?!@j-lhYe%HpZ?0nLlq7x z{T&8%8dC>yD*RloiPT-I7VMW5p+4|74H;U^jb3$zjW|_dZ_Z_lOQl22x%>hxb5i4- zv-JU5J*)sMhQs_DQJ~`;8s*e>@Ewm_?b^q$kb8r05$rA^4g)l4%DZX={y zn2rE~HNA!GR|N!ScEid1)!fE(Z}x@rjD)W(Mlh~=gUx|+Z3?HmPGiLr*?R11EIlTM zHC^+6EW)73;r=6jusfzvIGcP`uM^TTALuBFvbSvtVa84!B#Q?{9@ zzvfrLQgw}%v`?D2%P?@C`f+x#V?aq<;n@GN*&gyS!R$c}LGTp~pQoKzbIay}Lf%IE z-2HkDsSoo&i6;01b&$u45MEa%o@h-f4GmIVU+G7|G`nXAlCMoXb&ej0p})S+c`B;J zyHP@t-A1JUfsph{6wS;BeZh>4lg(jW(4`XMH+`clEk(k`-*5|ETYnWlRDC~YIq4bd z=heTCL!Wfabf{}0Z;9^Gr{0Dl+aAh#&K#J|0ytk}x5rQ}!YNMKDpkTOdZ2}Ub9fK7 z5v=1&8Uueq$>)-meUs=$6S-2Xy!-E$9-{(ELKMH0L9*P$Z8MyV_r6Rvz#FHOkaXP` z9@?q?d-a#hmk_)I*+e|~Movx!t>=7z0XlW`CYt|spxvKG;PZLI974FyPIL0M2J0QB zgoHKB2xP>~h-g<~C>^WE{Prk|vrmvCT~DHRL6&F|f)TwXp$P}=IIxmQRER$xqXhZL zIhvJ_5dAGwvh(O2*5!4vbu%%ZgX0=FfifF3)^s9|S$|YfTgN>r*838!A&7Z&R3$ZS z3yQjL5Z^y71Wx77^@(Efxc#(3ks-X;vSL7cvt9r*K+L~7!h7r5_3juaN1M3bg>N() zGod9=dZ{YseaFO3_@aLdgBee;kZa~i%-bFZ7q%5N(m&}w`&Ti z*==cEvp1(oBKw&W1<;cB>e+Ea#vD9oR}t@e1Q{CiJ4h zcdG`bcy^wd#-MR*0s{Y1*goYl^1wS?5fJfq&ufX&D{EY4!|J^|Yg=D|jS^7tQd0c| zAXGyFhk7AD&S{c($f)HpqH|~GHQkxex$uk}@8~W*QqNCS!)(fG#y7Fwd0Z02n%>DH zlLg#UC9@w3-;{#T zlxEwMeQwDCAF}kTB6wdN4^Qh*LG%l#FZcXEMept(uw|hWHWd#2&2d!RQJU7P zMox>ruhBir8K7!!!yjzXD2qptNRFUE;0iF?NV{O%{(Faz+sGy6PE9uDo_fIHbR)jG zuK$Htg{2U?C0)@o{f}Vz)=7s7ts+p~SA!&$JAvpUx?0T?$&-BSNGhI38B1V4fr*lt zL53nRaz)zWOEjaiJu)rCR-%&%Vyonon;z%0(7==rD7K=^ z$)+Aod^+F+eYUX69}+^)09V)YPYtMHFeDm`=dd*boj$8MH;y<7-p&JI$1F#`eDcV< z&tbt=HdtvD2|5zPnbbb_CVz^r%aR|pn;gzUrp82MxJoVWOFO5-B~X9bVse*G`435? zqv2w8%r~XIy<-|7|aVnlMfQw1ZV`0gkfOQ)pS2VtPz2oN#_)?fBvSsES{%H01+zTA;EhvjM=F zMsw0Vu}j^7;-sw*a_vXF(4$)ze3aPO1P`Q_#yO+#&?y;fV|b(6czd8&3KZ_dFd+bj zDl&<=$pAzXwoO{U$cwOHh~TdRT?!p1Qvb%OA|p8iE?M*f%Xw_4pv z+*sSCn>8q+p&g+FKsU3Z@|#&9<7TLt^vHi#NvJ4B`&pMuPREFg^x-Y-N_0n&mnI#{ zG!lVNj5NnDG|d8@DZ5M7<=gr=7YZhW5075pc1Ma-29mpCe$Ld#fZJh*6+_)*qkBBG zAVbbLefK)anHxZyLrPF`3bH$aK5AW;7FoY01Urpa-}@Mh-o|q@HSdU&BeNJRJuY)e z{naH-j02H?A+`lXq#}1yycMklIitjZ>1KMtwLx;rH!H&&M)yOtIi(dUP@)l9u9NADcm&RI@VwVTv|_RJG-dBqzsdf8p1 zu#U%X=JB{=K_vIc);66LU+4eNrlQXB*bU6HT!vwUFz90cli=`KSdHo~&OC?5^oR(>{cT0}8lrpyF-vZPv3cjD5MrmbCsN;S}hk@8lz zRS}+D_1-9sWOp~yU){i872cmITM zFRIU{iUQIu2%@8m&VMX(ART)oH+qvdI0#UkGbL?J%%{JVqp#Bzemy%Sk}*6R?k(QA zMi6%_YxVy%CCx2g^4i{;6`4u-KIB?wID(u^I2;hC_pr(+TtTp;g_{f5mw;=vg#y! z2>SFmWLa<P@3y7p7IV#@J;O5ZLi&c z!lDqYI5`Z^qH;^6@%ArEhz;1G^>CsClH2P`-~T8*AqoH2PzWG8uYFIjpo57Bz0@8k zW8^S^epC|eAnfZmpJH-hO%8OF{F{*wYX@~D=8YqQuBsu>0a-D}VG0#7SGKyUU}U8L3JY5;Ecns?IsQ|Pk3!t$q$Ucv7wvQ7 z;uO$iQi;HTS8m&q`EUQut!k=&5=nnk^7NjL1M~ZO{&>z?q=N0kEJB<-Hn0VMy|LV7 z_dPgwbcz^4KaP`1FS36zas(|W&G=y~?i2spiaq|ya;94~AvIxh&OJddw_wqU{gKoB zhIeyN(Hp1k?=SK5nucPLiI_`B*nFF6^g25Pei!ah#dDh`zf6RuLFmV~K%HK9l*X-K z6^I1%g9Y}N^xVo~973Cg0DG(OQZ?UIgv$DdR^<&>SFls-B)PF8EP!{Ar6G-$;4JJG zV1(TnB9FwRgdLM;+d4qk5`-V@|Fitwvl_5;flzSqE!mEMMx$}M6nz~pO*aEv>J+bf zA=1_16{X?{U(jyh3RtEYDUE1vJo&bI-Ffy%5>Qy_P8ha3wyY_!@pj)hkdeXwMDAtTPmA501cZt5aM zqty~+{!cg)2Inhm{%C>EtqX=hh}`=RaS=Y=C;G7qsbG2OBgnWwzJ)wwGYyE3f%IXN z|HaWp-XkB_WW40vjre(_UuG&VM<%~2j`GqGM{Y-Mz zU^*dhZOQ;~`<-^Sc&AQso%hA&Ec+}FmN)XA_8aC*yUoLL{`7OnNFipxWW1w#OPmMD zEglbRyAnT>PXKmwd->%|J=<6-*+pr;L2Yj~P&_|HtiFfazUEWQT(A(GZKV`=2Z-;% z$yIcVXh(e7TYmMsLW3&!3~-ij#VyfR6fE$@b&f=eHbnlxSs1$JeAS`{xJvy;gonmD zMG=xM(CoN5W?n+1;{c>Dvq6@;8?OwY3J*h;+ehKHiw)kR=e z6ZY8Uc55xgqTm<}CYe>W-~*`?QHr)y^DCD(U61qB2oB_KJ(32Y*i3nr$^{zwXMvn+ z-X?tDd12Wbvj%nj2g|Mz+E~=EAuF|hE=34fE2=1EaXEfhp&q{IosVn>{!55CWyAfv z(RFM`RQSP6;***slam%NIso?K|HKEKaE+@!J6cGz+HrXz)<8hI58=Y6x5lG5&TS&M ziZIaPgl}0KZpL}(>qR`b@uBWwvO_SIlGsywg;*oD>Akn)<$0nbW9exY@{>H#^1FjL z3tedx<=RS z_0XhZqZwwchC`~qu3tOXIkUw71mM^YfTaMuSuNo(U*^T~f85u5~FEy;b!G)y>WCAd+YVSQr|8=u>P?Rqz zU<^Nf-L)6DhPs7q$~Nc;V6eTKjfsS!GvkW^pPJT#*^v0>9{Z_8QBs3zTqJ zS|Y2}m?}bRrS$CSn1LR7lxB@rtODz=b=OE#fl)EO#*$00=6$`dqxKoRCAMmkYRr78 ziY>)(ID>CjkiWoeddE3;ed;CT!4eN;gwZU^`M#z_=S1a+QJsgNyMid zM}DpD2}OTWz3l61u5#dK}jx^}imh+7s;1LP%PULsJHgsI=dHjN`2( zD#itxXQf-F8Ef0!S96oz*7Ebl^3?dcR$uNV{PR6?#*ZPxK{S^wywiX=>IUv1halZ> zcSXwaPv;)oh7Ksa)nRi=jk5tkh$3iL9sU6AFHo9`@ZhnF-dT4Joe~$q|3x}&$^J_{ z_?bYuH5};SM5$iJxDIBkL0}{T`-wiBWaAH^1$9aKJf{#|-_AYt8`U+=AqS)ps-LmQ zLt|`4gDaY)m3EBWQI5p?VXrDFRD@f2ji zb(QH-+_??kA*YQ(`zx&2rBgzfkCXL_o3z(AXLvsuM0g^H=X7c>Sn(UE z2+t*Ace(R?3KabkSY52-hNB7ezO{!jqhE6@K-`8Z&Jw+v(>o}CGcZGg#V(j=U50qK zcFTO2XG)3sm?f{0_dH)=p$r?$IA9iq=Dt0!)IM|6JVxSF;5&K#A%=A`sJPO$^EH+q z!Y(lfB1RbLkS*YjGL@7Je(wuX3D3j^ktaPL)mK7;>R@gCow2yRNdLxGnsEZ~=J|Ar z0#bLdjnm0Jp`(w&3(?(8=V$uj=u4#0r-*2_*mi}5QpAPbH8I+@<7}s87u+-7P5_ut zLKqOg6WrZTvPKVUJSiwoEbxLb;GA}EnZ&sPob8iD?qy*iMVPSe`qG%}p)wcf1xP#k3AOnpx|DS^xHPoPhkjWc;3%Zsz_Tdk(C zzbD?UCygIg;o9E4Wq;8ZVRb|q#<(EFJ;_@oCW5G`m?OR!U)ykvpXP=q2GoO z0^I!8b4usok>^C%SVuHiVAZ>$WuTe&abWiCU8;5Bx`;Q-4h79&}kXn35zW`maIOX;#5w6TB@TQyVVRM{!!Jo15|5tsRj zg}U}ase7htuNJuhhf zSd(E4X9sdg&#b{Y77pqB25Y-Z9x*q{zBY^2mu;0zYeGG!Q5v#-KpByd=>BSZl@@`G zfqxzx8;nO2V<{?^l#yOX&fd?NBAp+DB2Sb>p_R0AkZqf*8xE(wuCa1#@+i_k69w1( zjwPI_^7@~D#HyEbQz|TH&rc`YRK8BHx1An6(G3QkUH9gCu+}B#$Y3`a5TqpC`-gOCNEb)MJO4tgntaAr>bMhv{)Bjm^lTd}yJGa;?cuj?qUQ5i!e!a?F2c;c0)Nij3IH0CWjDe<)bbTnb z6Oi3<=-9`k4V%$0ktAIqa$&G#m&UO+Rl2G}Hw<-bZl2p+8RHI%MX)vf!Rm>Tk3y-W zpQVoftztp#9+LLXKZ|eX-<%s@tHc}9VlKC;LT%o@!_9b9z@=pjNU9f8!kv{*r#PA` zA~t7KU6-Gs;GT(uPUR_i7jLc=(E!#$tyXKXEdvp-fAbMC zcW=|erxo8%MVcc+nk>Nh^<;xXF6mNfIXCsIsK9IQ}JP zOLYB6$Y9vHqf*l~_6}F*Z0L*NGo)%C6IAW_tPIwjx!31If|GAV_(nKM%nh9J4bbk^ zP}hVZOJkEjr;ti3b%ZHjIyk2&RYxjrgAw;jjt_CAg&VH_gIRM-=EG3fvC8c3dGc?2 z(EGlg$c(-);24BxL!tVsxk3}kR2wsbhrWDhSujb`9c=+>sY2;*jkbx#iNEY`vmHA^ zpIVyVy|$j0#mN~N@&XK1xNO4{gfOJ$bx=la<19jYl107?vLDtQ>f0>xBO=bs0GFp> z;K@=8XmO1eE<_ZU144{OczVtCe5|l;j1}ef4#eX#i5XAs z4tI08*?a1c`7w~xRtiNIIo}sLQ%X#^jvCOkr_lDTZ6`F|wV9f;ni{U< z9BgLAi6jSbGHH+yaq>ABy^eivzx~s& ztG#rEO+#DEv6JuT4Nw|kG=e@|K(OH4R5g&Yf4&Eq9(oW~@68@bzgMA;JMs=F@mQEW zjYzZmKFT3i8QkB;?{d*B-L;5cPhIo52DzsZE3i~LLJz*rlbeA(8HbBndY zEpwXDw4QuLqZXs;fyW%)4}c)Eaa+qJYUB_qVogQel5|UPgU86J^?fYoHWyC#Z>X72 z_*Y5S7t?@ar6xd}6#oJ99A4m5-Ui&dsem!mvVJXL@Fcr;LzA|Y$Gc#q5QIvSpU2-8 zA>-dQv}QKC(8E!^T8BR9k*DT4PMI6zD){#iicuZe6t-2C!0!#NZqW0CfhX9X36V9@ z+&GmxCJ7>(zfTG8pU})Nz4eWj<>T(w^{0&f7<_{#im{Z3`jBtpxVVfPHWsiKrEu{2 zIAZT&AJYRjjN+^nGYp>W(_S+{UVMBFE06@;{1IQ(6Yh~!Ot*$Kxq-y;kAusrs`0j8 z)pqI5aBc_>f|iGq+lAe)yL~=RT4inn{(MP6At*Pbhp#~+nzrKqTqu9%Y}Z>}Pjj@Q zQ@&H@!b8W#3ACm%NRNdSRF~>!x8al>i=|$QZxYPFvg}=;p!CH@2pg95PHgCW+S1mn zXK*yU+vChP5$33y5M{dQ)08CCHn8?Ta}VkzZ@0RbjTTfB2Wh8$v&Ck6-%So;87F{~|t3?#b@`{;~e3?>PljTkwJWQ6ws7Z1gHM+UdD zIDjcFB-hZnSl)CcP4}zJQ%0k~#yPXKL4+7XJ!ePy=x>eM8w4gh^hr*T*Oz9u~+ z?4cN3nM=6i?fI|SOdq~O8DioRsb)O~VBiTc)y^EnLxN;uVv55|EH{njz4mdSUEbY; zi+%^+owMANgO4>M6M4tnLw>_0g<{l|@*HU|qUogTRES~*<{~9VPj=JR(CEjss9O1l zgK`H|yWbpj4vtk)cz&=^tPutmh1zNBt#>4L2PffpwzLm-&%Gv_&_)WfA!)CoE1e;tyy+ zh<1ewb}xc<1FBA4LyZ@U>(J%TSJ#j?k6$Mdb2b=5j27_zcmjD- z2bl$#t-43~bbx9EKu>CM_j<*WN>cNV0J&<)m8+M#c?%+X0JkM4K=cnUg`K|0S;tZG zxI+1v7EV@U#`C0-iK23I{k`EsSMtI4*z&&|M&f`W-j>uX$&QZ`XX zlH!RN0TV0*F|c?0nZ8CEu`A(&+$!+)`+&?c`;L$BEr)xK%mmivZ_Y^hiO|efYx>B2n(B#viqHE_Jh5rJ{+^9uN9;39C%5^Vg0f8gUW6E|zS%WS+ojG=-Bml4-M*-y_6@H%*5D^G}I;;dDMClCiX?o$sW0>#%CG%68cG}ua!!Q@tV6cScw=Mn; z0xFapbk&NHwo0`P5WYgs-?6*@3a%W9(THWl!jOiDQUzx4TB$TAi!Q4kj2Z_z;C(8^ z-))i#*P*sU8OeY7!SHtXN&eEhOz>8o?dpFnv3qf^EAjHRl2ftbQYk z-eI1e7YC8%^a@NB`p))~_p`l5HI#z%thDCOv>@JqZlt9+fuqD!A@H~=Ir8h{YIT6^I(HkFC~(sr3`nAh~KdcoOUe`NUn&Qo~p(c-&QDgj16V<(XCk0z%tJm zM+eu?9h?$nfqt=FgGBjPh5 z>|S7xYBD2vP{zCHY{$0Q>hE~_lUiZ(vRStbZ{zf0&rfkA?vLBnfz)x*>0!vgEziJ# zLv9c^yM;Z}mCDhB)g!nZooo{3iK+uuB6iCC^+&l#oR)Dv-1y@suIkY?jBty15aN|{n z0t}0qi+J)Qi`f?>7 zUX||w`d|;!ZiNNy=;2+t5YSzd$ikTFYY89zL(z?J2T`Un*nUmUxqzOf!5ri>_}te_ zQ>u8u{SD!#Y~-Tx2ewjcT2=utK_-m9_nr4F-$0?a-;f&^e`c7(@27dyOk+!}_2n6w z#25YDR7>?90}yOMDWanpDMh|P&HKGX^F5P;`hhD!VBH|rFf+eJAtF$ZdDLI!kU!uV z9BOl=*VPE<*ABQgq&xiUgC{J}ePYe4WJ0!MG|zeam-ONphedGu-$*-yZsrjO%q~31 zuy^`^U)J+Ok~dd*En|tXTEDb zUhBT7bkz3Qw@O8_S?uT#%Ci0~`-!oB7TuWXcQg09ViTQAhNCm8mN~4_4PM}8@CSOV zE8H`=SULJ-9d>FlZ!2>ig&b#=Q~grPoDtQ+UD7_-c|Y{N-gdhsVsO6-kOE4a9&+IV z9Z#|hK#J;hJ?tTr%g}XSaA(LUp_HOs^uCtVssD{tg)Jl%d(_uto}3WHz6m|I9>GW7 zN3{3ce~G_qE14RbegKyA_4F4b-gPk^arg^t?fT#wN(a20G%bzWZ9K`bM#HR;^BY^4 znG^L1{8REHd*h+k3~jCCJj2NK9y#6Q)v^@)PL$j6TaDLyyxBZ^`R+wAK}wx+gl9;% z27mY@Vg#rZ!=!LEsii+_cl{FQgJ<8`t#Wq&_$M`$QtWGK_t(uL_+J6^5fA&0EskLG zc*5%^&{cp?rE&-VXVs3BQCqeqh#J(XBw}loIf&jlep-PH)SK{&qLv4w4KXlHa%^z% zLgu27ae2|9i+1SNzD{tWL6p%Ggfz)!S$K;tjY$!H^uM4LIHD&cJ@dBG4jLOT7vIn+@dDv1g`Gb{g@7 zhxWEo#-wX_)B((`Qf+L%=Bp8T&8FUWE|oW_HUTG` z{bML3$0sBxYrhI!3u_0N>9K`nsmQsUY4y_9IHcT%hMa zMza!FT07Cw!@5*8r5r&v`-7O;!sw_1b8mg`<>h+pI(iTB)Ap02_Pi0>gNbOWFfbcX z40d}GC-Q3cF@{hD!Agb2uLol2ODYSNra$8fq4co!$Y<`AAoGa4sLU^?-;#yesEoeQ zHw(IDao|Bx&t-Xt6P!8kG($RcIpQ8fK4-vDhX8(mOHZjmVfbp+uDnhS5A>3 z#S5oWYLFY`0K8t%B7{do_=UG`DIo3?hZE2K`?@A(Z~RB;!NRi|KE%$KlU?Un*ZyU> z`%7J>2&C<=-#^&l`*;jy6BR(LufVNnmV`I8w@GLhZ74vUWOSNsL&CO76iQeH7|$+z z4$VWy)M%Bh!Rag3;EorEauX!cwx(HVINskAx$|%Ct;sT{#ET)W_>245{@YEI!c8u? z0T#B>K#5Y1kXalla~&JgwgUAo!va>9@mXuuOmD!J(|&F&g{#B%nR=@(;AOBa2o;-4 z*?;2?C zxY1_YrYJ_Dkk^}aD7TCq$-WQ4HD-*>79w7om#Q~bm@y*jnyje)RTh92V}Ra=nb6dP zC2AAkKE`9NpztX=HS&BQiI+J+QRU-S^vnsETf9`FEO_KCvE8*hFqq#C48fVy{fJMV z6xRhuhxaxy7UJ9roI}@_W=YDVJ&}YpIIrTvX6j`&8F}EoK^U*JJR$4D+ulXhk2WSS zw5tkr(+}*PVwLw5rZEjcW0Q+$i~qhJq@F$a$YVBmFA2XG*=Asmtjhv+7TE$wn z1}1E^OJV1?%JmjcWI~~FzOJkAp%Ni|J?m6;^bm64tyT@uZ1hnmF__FHt))Ot@&|=I zl8g&PJ_F+lOGHc&`;2$F#Ax~eseTx**L{I6PXIedKi!dL8EFLN5hYdL(rJ&LdoUc6 z0~#8!TD}1VXEZP^bC!W^<9uvC=;6r$bq2_GoThs2G-~Wh2rjI(q6=nzXKVk&OJXmx z7S2cR%^M;dkc_UHT)Slp#5A9K?ucPuM{vI8PK|hSwOd20@JyCJ^B5(9>b8ahx!{?Y zfBgAVrE@lk89;1ezs77lfA9)u)RrFpX0lH3!L+J%+;qKbG#U@pSP;I10(M{;+Hygp zqwNlsV=YI{->^Yv3XUMeK4USl#tfHnY4M)h%hVk|=kqbbW`wteAbi)CGt4qnX~?NI z55@7V1%+_~cNIm8oG6ZSGh^r0UT#LczyBG$Dwo;gUz(5LkWghF2VAREaur)7dnC2t%JB%7^FB#8;|pC6;oqs=S=7`RiHBnS6nxyh;qne z(*cy9A6>px6BLF9|4fQG;^n|C$J-kUuvvhk*V}0ziY%T&Kc0-$Yoj$z9q4g-=BEzy zR!m!}K^3zl+R@YPAR!o#r&uhE8{CF}$==IhO(v}SLt+z5$a8eR&B@GPuD89>7uQiq zz|(?gBME8(d9QR@`_7n=%y^#qkZElW2e3OK=Oaf{(zly!!(5k?1K$eULX7vGSGha? zMrX;B$kGJHRE13T6mJMvwQ$I+#xV1B(NzrBznf+64W|NvK0?0Y$Dc;f=vxp2NS%iZ zfT&hvJO|q~NU{iYKAMLhie*A^VY>tERwc2MYKokI)Z`@d@eJ|zER&)0D2%uO3x59n zFI78bnNZBEsY70q=-ajP822qs9nMnw-QrXl#IU*DkO1ZUTuCNkp_<9t3@Q%-nn`S! z%;b-JdCA60TdO+n4EbdjRoSfLq+DKlUFhnFJBWZo9BDTYDn`-=KOky$??NpCAgA)L< z$u3wp*#`1{N;Ud+S4|NRR6WWgkDbe_3w_O+k+bJl-n>>)i)@lQjs7;Xdee)>Ac%FP zD(4&8d2ec9fsCABaS^`=ze7Y{356?6j2Jz_-qW`BDd~!P#(;k28|upK{D@$$c8zE& z|A%`m2y6Tw8Hv-TcFU`rW8E8GCw)br$?|z4O-h$b_1=m6<`bW2BBv>Bp*8nk*pnj5Nt*p`l z_O;LuO=D)kFFX1+jOy{@XG}@A?Q>axyaTfpfNGCrMl#X;{J)_C;>v1Zr(jRA@jVbH znn<3igm@QoJH8$83TT$j%#{12Xt=pzP6zc1EOuV~JktpH!swOWN8Ces_6LV=)B&Eo z$5(UcByPL%DP$E{wHa7X!5Ul7@*vl>K-TUhW|cA5gw>vObcsgt2hoA01HXc2Yc zD5ub2+IH#KKPTX^Ia(dZpk^@5lB-JQI4c+iR}eb)YK3Dgg=z)B8_i`z0@AVs_mkIreD9_CIY(}yj!yv2|_2&4cDQ#PDDO(j3#eL2&Esbl>5+TZ(( zDTr4yy{?bLDHk8F40JTSQJ7X3@1z$CH}XB~8X#1ZJyh)F-*Ww_c0c4ek(? zDOe_C`@mKnvftk}`@H2PWGJ50{taq;DHMhN6#_fBQQ5vq;T_&t0KgAkpwzCWhg=J# zVszjjlNBz2{?g&-wmX^AT?GaRq?m2qG`DOfbV0pE(v!wvWN5|~U$-pEv>IIZlGHgL zGYDHc9a{~IZlrhOp~P|Kq4OSSc-Bc%)$5ita)zP6GkfIhtT0pU{dY#bClzTD6T2{X z8`crKus|G-S&el2{b(c9{Je`mlG8P{9S=RP)u>w)m)Sb_>ictBf5Y#As#4U$QIfj| zOu0hhc$kjB7LvT=nyz&e80qySn;t(*nn(cr5Plsx%bx?Rqz2jB7#O3|V_CNhYVmmH zme16lNJ+OAwdKDr^|-=6Z!_awv@Y*fliAV;Jo-%LQS*W%f6IbP5Wy8acY# zY}f~O;M<8aN$;#h6IK7MDMqi$_e9?KBrYen37zj;)5UuqwEWRQn0>Q2LC%F)g{t7@ zX2>0|Q@xXpBW<>TGbWc&g4UcfAIU|3BP47Obf~#8uLUb#mXW*d`zT6+3a}H_0 zLQMSuRtGk?%5gHn1ZIKH+b2nwzxo=_D?S!~Eoj~Z08+XtUM86b#$7rtLDk?xh``E^ z1FD~_?>HSJOf7>pD>Fg7*8M+wU~Ph)6ksfSaW<6$X5q&mWhF+5P&LPBVBy+^u>^nYYma(4 z$JFIdm(@>4gDP)p23`9@vn@f(9nrLF71@cBcvq~c(vETMzryU0_76BQR6e4?)5Zbt z?Hd&!4AX_B$2h`-KD%JPg0 z!;_>zqmD|}brdWqi>!qAbB7QNzU$BHf2kzf(heoh4W-KW9~}ah^=09;T*QgGj@^&S zuiX+cQV{+rCnU<6NV`y3r)tMr)E8%P1mTePd~lFJ0L9+)xp`K)6E3GTA}&&hY5sD3 zN`f5(m&(^&ksk~=bC-`rIylNPy$x7pIym zxp1KtH3PqL9oLEHW>JCfV*x(*_%Uq=_N7f=y9xx4x%xuJ!XN3m(|AZOKku>W;qyD4 zShcIyZ}!0P*CkpI!9i~4JbOXUE`H?)=he6LDrf#H-7%NtWtvT1{j1uQQF(RQhRq|z zP)T5_W#AQv&NY9rrE$yz6%PCjC1>YZ$+dx&_TM1vn^T{|x3ANDASl#|4{MJHCZvjQ4bL15g z>z5Arr{L9&gd#&7$GO^uAH!2+psH;RNW0%Ln8D~#kI)BKqD+M?4?;MJoWsI*cWXZa*M zo0oY_!8|UD+(7(xbVQFr^;v21M&RT7*AycR#lw6%d_PhBp~l`-VmO!NmXa;S?7Ec}H_e|@ZLdyq_N-G3u*hy%| zbki+xKqwy=Xs#(QH6=RW92Ue8NnQ_ECx7-oV~@S&i}zffCkuwg#URot6V@}w|K>_A z@UXVpb(S)zKBw__1305zP}Iy1EEnrAhfyr@C#ZRp$?=*`q%h<_smE+ptf>VYGhuRv zXDQyVR!AY%mcv=vGZ;vh=4rrnhK2*J>yqdbzkxgmQErS;uttnNI&IGQ;saLEX zHMxEuc+aT%h_Sbun$N0BaLyUhOb?#@)s`|k;KMp&6i!t$z_UDBKEd@;qu_YA$%L%- zYY0Nt>_@YeR$)C+lW~mC$Gg$;Y_1D78bNhz8$SXM? zWGT(w3WOjl0N|jZRdIE6Mh-I*&TW3&F#-y7*z~W|!YrZ@02`|XRX)LNc zzf3a#3KmXCm<=&sodd4u5*-|)BX$9!GdLjr{I))zarZOpRwHwQc|?H!thUy{Ke1{7 z>DYtH4UG@X6B|@pAf?tSfUxWU35okw z$Cvza0P`;&;Fc?Nb4-OZ$gr>4J&m#uMdYK{o1jK!Kk}?azFs{t)8Pm=Wokqer#kF@ zy}S0yX=P+|ndMJSF=_~gUa@e$1uL)D}_gYh&rx>!w=xLmsTb=acbIX z;nzqzEX|y!yU=R`rr$y;gPa7p#YJ0qB0&Mto)Y>eSey*q2phqvnfZX|kEmKvZs`w6 z^0NP&?IPOa$!C(o=N4JgF%5|A&K-xw((j%5<|hWn$J3t19$N?Cbu>S^5)biBU70Tz z_nONT$5g%9))xb49uj>B2FDCl4lCK()jq{&KITCGm|&JPvygyB_kxE%`B#EhE3 zHm6I$z7D>t;5=YtQkNKCN#m7_wz+#7+ZvWP+hIvxt$YWWwRL%|OChXi4!|566@6)4 zpjhB+m*0IM(C^TO9L(KveE5h^CiJkDbAwrKx@puOzfvsVA%hx#=gZ{2-eDxY(KLf) z*OcT-x&L4L;^8+h)PUg*S!`4mJli6Bowzzz}a>ugX zcm!4BJ0v(NSS$04YSOH6%Ko#&4#kOy-@ag^v6X~WD96{ny+#o=6`wYwwGPn-yL%MUGYp@UJQ-g7g*i_k5v$NYj(Zv zTQ(pp+92|!?7=sqr|XLfT;Zn$Yr4;|0>}31w0uRJSSPgZUKY1^IBYhRbb9Z17oULp4 zNP3wRSTfwnig{js()o3EqXw=jggY>*u5)Jnr8!3k_x?HR=pEhuB&Gx1!py!=M_r7_ zRFK)ESkUD)-^{MfS9Re7a?IPx@oplW@l_#7tg|t4R3;=ZN31a_$m$P1!%eQk+J}-{ z7`N71(kyYP{gIBg-=jac#>Ktkao9kf!)6_eKnQ}7kp2ut>AS&Z7U>*$bzV_r4gtP; z5;by4Rq@oUDn4}b$pG*{dR2A zvF?GD$)EWQu5<;N6YDK{v=@W&j88~gmUX}A4gWr+`1lmOZV*E^L`-?Smho`O7kBBdXsNq$`f zP+x2rM6a9Dl1Vnu7Y3(r?EwB!`Z&q|)!r@_>Dt}v-6`W`0HJdNBcAwla<01O5=?Tu zNiuvwR!jrLF2&fE>~ZI)GM;Fmp&`JNVxT@D0L|)#GkzC!Yall+LE!52GpPguJmai4 zG=4Bu@L*#|;JtM`!X2(?U&RIML8nvhv5++KF|I7$?(?x%y=hsGBIF7Fe5`C$l9r+I_kD zvyCzkyBV7h-RZsk4mTvw+XP4IlkkByw-MRs9rqwRcqH7Fk@-;}H4@0r!%hVKcmf&Y zx?W+u6)1&;3c|d1q%-U(VW~w&KdxZKoRA^PoZT`8V6KVy%0#$a57`2n#i2m2BCF_; zT-*bl{KgUivJs~x{!m8y$BK^k)h^}eg~VDw$ggERiD6&+ce=Dw&Lde9Ycezk^kg?> z!C)&b)C!h5Pun(mO*w&NB9IqHTltxp7rMa1A+X6)$3e;|e3>7`wq4e^i!6ypnJ^g; zP6s3`*@o{I){ltj^ai|~2{k1Uq^PL!U zTJv>9ZiL{`G%y{hMWJIikPR{(DK!><&{;jdFP+-Lu>LUV6GdKBXLzD0=tePoFuSBI z$#sgHoAaoCj!&0*MaBXkDODP88~NkdicFeQ^%kbGU0@Lt_c)VBzkyGL&ddj`~vZ2a0Pow<^dcGwO_kV z7;(1hkZ?I)%bcU~sH4_XLw3PGjxo_cSmkaq#-Be|{z3njQ273J8npgHq0Ur5ueXWz zkQR_>9#F4n#=%f|*;+E+1bC8W!RL+E3zWK3#VtLdSt)*=@L6oU4|d?_?X$P9fxwk} z#7#NsMPY8mV>r*}Zb`NdX!jg6PmH=-XziWD9ebpyBh#`L{U;DVT>GEv`@|ZbCxud$ zAmfTLtomJDX{|(I*g6Q4B50bgu zL2I^gPuZlOs6n&RP;w2NP}$W*ZvaNu23n_AT&coL`z)GP)&1z)MGaU58_MRItt0Xa z#=)9iwpbVqiW@kZ+K7ZS*k9~OIa-RZ(g0pxpyCZgX~6@ z5WhdmpJ%51TG!~UlgU+}2;t;>hNcS_q#&l5Yx$9wZeS8*Jgufn^N*I=zbMA-$v1R@ zp5YFJrP*MLEomrj{l+E!!|h$Fnhh3BGkuuLMq=nIT4?-~;t&5#AtW96(LtT%H(o70}_EXj6vrROe*ay;FNs%8>9kE5U z08Aj1X1U*oJFbFJ4>c(bspWdR30Pi%q@wt{z{Zf0s3%paZ!pm@z+m|1Yafrt?0jv> z7yvp57+M$6MeW_(@&cnk8t@HmcKTdm^;YfRF6jsqLh_k&5taZ)K)Ap2-yCvGMZfKZ zbY0^|li*6U<>0M06#uv2ForVP7oHHU{OZ#}MX}3FQ359rn4R3Du_tu;t;Hrc{l`|f z()5O<8j=tXb{d1r0VON4sdQ~V|LL{&g)~uiR3kg&s$OznRH2pn)96MX&j~2ezl-X+ zSt!?+BWwZl6^)?c(x*mM+KVRNAUVcW9u!|kDsogLvuTDq?p7PFN6RPPuPB7#pHLPv z2x!_7TL0%+@0M~%N`g0_3z3)5o&(Z}@BIZX(AAOV^$r+z$c`Go(xEcG?X5nU80!BY zFS5%29w+`+y&eq=qI?Q4J_7rZ!z@V>;B5YLO?t--#eZX?tHh<7f1mopp6_;lwc&j$ zxjo@Uj#6z=zaFtIpGuR4cYNP%~#iSlMGZ98(e| ziI*5!qyxkM3Zm}sqs;SQK1{u)t2C*7s}konpjktnU}ftzsE+NNw#yYgGJ7ijR4pa#2Bram|Dp5}GGB9ZuPI&`HWEKoR(-w#D=UV!``GSI|@=Eqi zg4g_-frPPuGa2h+fUcnZ_UmaW)4EJQZgknz+6y>Sn_I1#j0gd#E1s^=_&`i%&#mt* z^28tF_}=Z?Q2TO=%!&*D;NAOwj%F2kUrXh`0$)z`D=Q?&=~ti+UvDx zYwZgz!bBMX1`oEfrIn@Lqn^LtF~7OjXCbSHU-tWWhb|YdHY#2-n%K=OI9VZN9u#NHtm!loyk}#Y+ZXa9uuoNPaG-(@4T-(rM6$N zHWb3X&7HYkSKy*;<3@3GLXG=?j0$;%8qenDX85p-B5w|)YdhM3{=nc`#6yAAt$au_QV zUeONqHP$Q|H#6LNNFhNI6RI5p5$a_Y!;eo3nOWwP9RFrL# za`#}SVWxc8(6b}@B)04cDUT+4Mr}EQQl9v2%W8s-L$RKe*`N=3v|)(S!qHROzgAhE zPF^c>&F1>~{1-gTS1Yle7s`QODZ>r-hNzWBnO@>9I&VAz+ht7ej~@Xj*CgsHO(^4m=K=GhMLFJ002{|so>WYn@sV|}8NoB=gq z&f=-L-T{-O8GBjeT*YZRwS(1_c$XFWD&izv<={34k=df4tnpXWSa;Uh%2P|L$#o8_ zzIzsRY0x80dnHmJSKI;#6>*L(n)VdwC zr6#S%vUbV224KoiqZpiY+VMTeYd@t%4qqW*c0^0mw7f^j+DzyjDAHykFC^3~;!fQY zh!Bc(&*v6_|BM(~+9cxHDYXdgAq5s(qLd$-=_(BWm;+^y$2Rca>NZo{JbaXUNBghv zvv(Y3XIsZXUcM2Xk9{D`)yJmoxF>g2mx>E9lt`YeTsdQH;uhNr_+(}V_3~8d@D3^fARBSv3 z8%I^_d$Up@jF5unU%^S|k5rbyMwFfvl-arj>>%M6ewncqI61k>V=>^(zq1S1 z0)P~7odmC;-QaM_6y0Gzvq}5y@0=9CxJFTj3vDWK4WIJ+w#Vd~dw|ak!*XH1*Z=SE zG_?%H7IGL>}?rwn&3k5 zKaDulq(c~={q(nXTbV-jDxWfX+FJJgKa;Aw!tG@DX{(Op&Utiz>eKXvmQi)6=36z0 zrm&@loun)KH|?%*?rP4QfW13t?320q>$ka_ga~i?C-%2aj(u-`(^;qP<~eLH$jm^_ zt>vUtRBJ;Eu|wyjs#HhE6eAenIh}%8-ywznP!l&-zs)->nWX}%-<&t2((Z(QHb1l8 z+^cILq(2Qm{vZhw)b6TZCai{d%L)q0WdFdhD@UI)gY56No;XdgmHOq#7(9yU^E$*H zj8?KsW*E@rH@C7!!bU3lJEMA+N-eON3e0xd?qP^dP>zHyS+Pa*m|s-1QtE?P4bCJ& zhJ(i)v@9V`yv4EPf-y$2bkx*QJPY-`bcP{vHai?=_+z&9yQCZMQ_iHhuK*90F48*n zDd3iV62ywXg#s7t;+&u^%7hu{ej6CjrQ0kGr`{Po`|jv8z|0g18x>%{tG=O=x&0X|K4ewhu)ZH^U#P2;V(* z&nWzETHcBEIJ(($L-_*bUbJZ}^IanC)8?*Mh0!t)fy!vMg zf@yssqv2kUKoE^8{GL^a?k4iQwaZJ(1Kq_S?($}&eec#1{HgbwPfrOr%(#=SqV1eDm0l9mJSam@5m{K zN;jT>LQ{h`4f6|I$#21sv~`f?@ie5^5Ug9O?cCxVF9Bur`-=~JFwC!?_HNBLV*DTj zRM%GnP(3R4;IQep>%UYCW42z^r5Jn8(#WYIeFQ&`yc)3rf!M_DPg$cL!cB=HY`=CJ z%@^0k_0Dde)Z%Yq7P3mfE*?M2=G?ctX&bE+&2TmN{NG?)z!?;aXQYgcjYDDhm}DU% z3b(o)ZcE#K)*;=RUdw;K4E z_ZiXUGfZ~fi)d17Dl03G|3E(C<1~s$2uIe42j5a*vuIn}VNu$oHIYT;TkWsqcww8* z*E~^={sdmq4CXuM80; zk(Q*tEG7viP`VjvJC1&N$YQg3I0L~LaKC?T{yJW$eHN#IAV?;TR=Cl{NSp`x6SDEq zm%iL+vp`Nk_F4@M&|Kw`NeJ|Gnj~-G0p+?TwCvr4wTDog9KEXUA^dCfEgwQ%X$e5G z=A|Z18031k8oOMipJsFlJC{Oi>dct4<55*UK%AmX&#RK`V~pQJyVmg}e@1AE?d+*4 zxtW1|4W1DoUstL&?TsJ|%VQ)K2vEIQjg2UGhzWp9Q$PJhQ%2g~j=nPCM1a0Uo=w#0 z0$}Tg1E%uVJLqU?Q)RMXMBqWXy#EMfnBKj+EO)lBNn}~%c;7eMVzL7QE*$L{AH1Q& zc><<69v4#BFU=!DOnVNvDOVv&%G~zu)Snzx?+2V$on`g)X1-6V83Ke3v2XVeR>3h_ zO*c~B;WYwO;LxwBFfko!&Ug)_dY!aH=n&g`wejn5eiwAzoX%L-XqZi~heq)4H{IQH zEi~$*3T((aY}=Sl3l>^bKou0YFV>NYhM|;oo{Jg^$OW~U{VB#8mkMJpzEctdAPih5 zu=uJ@j*2PzORP%?Bqimgv^Ygb9y%vq{Z53|w2$r`91$>PFIimdff-~$N3Omyv zuV?Lbufu^a?BbGc23_5$<5?nUtz&DVWIQZ|Bs@`D2Y&%nKl2zb+aH;b_^Rk)u{V7c zY+R^L>8+bjA!24-*uN*jwx0>O(j#VByI;@$H=8La433}sVW{omlZ%St11UkM^PJ*J z=^$|Zs?mJ8vl>CHbBL0)TpPW zmXgsfqTicfGU<>c!pVKqx&%zP;dOec;zpBpkk04#2*UVjUA=TbzwVXGa)o}cy;#*b}G|Ay>Kh&x4E(ebXNmhNDqqJ7)@OOz1WgohspZ+!jlEOp}g zd4U%w&yESD3mc33ESu8d-gChE&VW1r9NtMB+DJhnI%7yjg2p9tR~d02B0q#|;lmqw zNgd>X6s8<(u>KK|6@OGhO6Ln*+1}GtGP7xbeaq)!4X<(iyy-ZF4|VY5hDCL{0TY3m za@SctmYw-uY_)sP`!(2W;xLD=D^A73l@Kk3I>xhbbfW`Jg9s-j6x4zq7!5LAao z>@KTkP35E~mJ8si+u$k!#`)PqEQg=7h{07?5|CT*+#PQvDT-L@8DYD>2`__aZ&pJX z#6L_-@emtXF89rpx+RA)PlgUcwp6YdmS@Bm{;yd7a0<*!+nWID4}GR{ob^tMzArGo zYSnaTwI2g)#&|NFKG$dwuf8q7r=X*J_CjKHepX00)WPcZ@f{6va|7dbL*X&$)*_md z^eOeCN0VS7~G7x06y9RspclJyeDldAQ>pai0WFZHWeEzKGxrcts#O#Z+ z2ks>b0y^mT$BjMVS zwEsszeosK*{uxQY3Ja-+NlBG|%Lzf2%P^s0)ggc5Iy+znD;_2{BB@H9M*Dw(HC+}-VWM=QiZayF*#}@9+4x+)yn4SlY&!WhX^p;>t*JBko=`0X zDnWL2=`o`zGyY}v2BdbzSV{WSsPO2Xi6|XkN>ryP_)?G56B;Icb~1dV$M^4%`v`J-cQ|(__Ind z6oRJaSTc?QIIHObqxB^viH4GL{w2yWS;B+8J$M&WSL>gTF1I|-#Lj}uf?W@GR}(n2 zb$Ihjq7OkpYfC#>mf%dn*D(!s&#%|!T+5HQY6As~N2|cBH*N6cS+4^shr{_37w z9!ra9M6`h>COs-!U}Iw)e0?b6?7#qPaAq}Q&ud85H31a9XEMm;B_&*GUMqrf!wy*f zI>q|UMPplBgTsdra?7%)>A}o1bdNVH5pftWP}q)4#(5tD42&vtV(C~|nGH_Tklvy< zLvRou@NhS^v%=@)o8b(cF8_^dw4kg;Vk}dj`kqak&vCNd0ULhDmW!d+)a6I=lwsQZ z`za{TJfq*3ZEc43Em6JgunOZ=et)vCXg=bp)8qzXZf^I0Kyg;oE9#FqzjnvtMEKkT zt>eNokez4sr`3nZMTHI=R0D6!dgB^TeS(^RU5OWkr5~ozorlfRx$+{x8lW4#KG?8v zT6YRz13x}u4Q9T^k{Dg}y9kg)YGq)kAmrYrhzsNGa?i}f@}4Wg-}Sb|3Z>(3vyCR` zN1M@vx)IM~7k)phrK9{uOJ?>LTQ2eN0Sx^Kbkixeng}`M(F+1=L9yu@IHc(OTlB!% z_gzkXBjEFbcS1jph`Z)mK1sNyd@^1ufq_F9RvTc9R7RSi-Oh*TrLjdZG zzSR8*{-q}KxdcZp;AcQ@GG;vLO^Ziv>qYAPI{IYO3((?|d<4hh4Gm^_@2&R9_?izb zK^AvC+Vr@5ACPAYYz?sqXc33(gLHG56w)EyfpF|4H66TF+Ag3)kO}ux)P>{M{G7*i zB`XE^JY#dMgwjWcVmKG(1147tXiy0lO;Zdp|4dK{tM(ndS=}YwiskFtMt%nskNf&| zei(bhvk%;je#@s5Vov~R{$fLaGUJ|3GU)2=PI<2{X;3uorgKjh!+%oQ=Az?D&lD0L)Z0mn;GMdz_02k?CpY%4gQBxnFcfVL1sc>NDTMhJnfZczM>D1lm?` z6A1@ZTd;HL1?|y{L6aQww2jd}k#P6QFN&gV6MG!QN^g&UEK~27MS@=kyz*ixsZQkF zMI-7PhsA`Slw)>zZs_9?`6JnY-I1J^g&q8~Ze30_!N5~jm|~)8K>E%9%sMUmaNwDk#h0LFp+rRtpZMj?L?@o$4$qn~g7q~t*Ig))i3i8} zMr5BF!s&PA>&bHt6_NTb(X#7!*zqs{#t&DSVERZ?v2IpB(6(jjSrq}(73q0j$C{kXRnA1aOje$(IjU$BE6 zaWsApotWStusp)JOg!!e1-&XF_6;gq4#K9)~nqgj7s;ax1(^9C7=T6Bq-wZygzSsqSeBA+2e zsjVt}E^QRlq<~^VN~TvcN&eslRHZdv%2j{M(+o;n?en;4fMXsu7qQa zc+j*%agl->72x=Xhn_PYau2hb_v1~^L~Cz6r)4owy?A8mycm?RNiizXiP>vvMNbu> zq9$WKOh>mb)ZKI$#W)vmyu=&=H=2YIhvINd2ctCsNd==f^I%w?NGBqi9h}C5`MXdc z0&ET<&;F0A@0q{fmOh@nO>Ob$L~RO&Z5NF^`%p%NO9qsIob*YL;`21! z(jl(DiFE+R)(jPif->`-5AC{_2hEoP-N4&sENY3&`M4h-q8&_`g{<{lVL^3w$lts~ zH^}rVWobq_?Y1~{digX=%(1LBl|xaDpXY+?!(0(?t ztursTpNAG4r?H2}NrzsCb{XLo7fZ}ahW^$>Lb2hr7f%Ph_z45I?k3PwU^ zY(5umsuBktHkkYU_yuV9RXtLN9Lo47a7*WAojN|LuNHIEWD(u?$9;Wp*8xz!8p?r$ zv1>P_O%QTdP#rp$SX)i#Eu|Y*9E<86h~B4ynlWoR2wW2*Dy@*^tCjcGv)CG|UAmW9 z(z$|$ZR=kiB=!^)@*Gg%$o8qncwqzJ)jE0=C4XL9w9gM2zMljusEUkUl_#Z&L00qGUDK`Psk*t9A%)m}IRx?#@7 zu_yP$JogOYbey3%hus@twd9AzahByjjq6A@<(%K<+1k)PpSqGmzg_<3J3i=8gp*8b z1<55iy^?TvWLKW6cm{61oMVxH)3xeTAUkGG@~8^B+{;t#3e(gI@WUlWy!=gIZDd(K zWVk6qZcv>?6p5i~Lb*VGywc-sHeduYp2gFl2Zn=6ma#?nG>3cuPNk@pr538q^ztRB3BoS7XQA7 z$_TejCzDx!tZ~-#HN?u6XT{^SWKeWqEBh_GPR>Bx^ykI-ya z3fHG)w$u5ZJ0A7Z)uM+}5n3i-Zn9KF&T#VZ3e4Ho{LzWAQKK;^$@}uIy(O~X8P0=ROP6~FVZy;?<7C(+NX^T> z6l2S0)Ll3}w%|fLQhCS+P++v%5S7qjyM1O@_4bIQvpEfkQRKp?>NBzFFRQHDG}$Ql zmfz;D=GFaXAO!~VM9`UFG!9)RARc#}Bb6j5*F1||jv2LRWBSFR42K);em%e)= zH~X?@`ruMCS2L zETe2yCM3^QAAzKFjFcv*C#k%8qg{=xK_+m~1kS$RQ(^d2&Ci0MIAmEVt-x>K^lNLabpO-_YuN9r@PX}ZdcGz!M-ZcGKS?6Qv69)*rbTSP5)U@3_PE@J zW-`kmrK3_*LOGJ>*qHJM7wB&C`1NaoQj@>7lQclus%C(wSg zG2^Em9V&yE8p%RVILZvOzHrsf6oRxY%9u9r3V+geIDbY80nG}ZSV_bR|I>F9^|vp) zz{x`df?*2CKkc6iKE=D9p@2re((|Wl?D2PES>&zr-FO3vG#ELiPK7jgxfs|O{5s&X zg#9ErM$$g7aM851uW(o1`Osk0>10sKRXq-c%V3(7)<;7Syd!oO}6<|c5^_07=<8&%;lZuNT2V;TrFgob!5*d}N z8*Z*wpJxz8HuBk%LJ*hpN9Iyf5y8%DvXy&Qszp^G{!jnC#qCT%e>*qm)6%Q>om@W) zb98l0c6~#e1-}KmWA3giw69d9HTnPc=e}cX5RsAs0m9M3qvy8}GK8>|Ma4XhNS7r| z%49ms1b@>Uv}QD=0rR-#L>X{eF?qMeP`G>63znIsd0DEid?q@NSvG!8C&gNkk0r~h z5^mwPCUYpKI%O(jPgbLE-e4Vy=i?y`wNqz6NsJxIe}~O`>>z=S=&IM=skca zUcAUL2*}p`E&Xt*6I-7N>6F0pJ(_rsq$5PW5AW8skdw+x;hphsUm`tC5mB!vQI`3* zC1zN$Dx>RoZRmJHGhPG|YlopuB|D6ng(#wp{9QljV>G@ejqu7}g96_PcwoXV@Q$@X zovs%qA}>HjGO)X2iYmJvRx~xdNUaAmTWU8jY09T?q`eP=%a^+0v4)1e>W)OXX!3~t zD zK5yfjYePQ0=U>&N?@N*29L%K_5Wv~h6A*R|5lLvenfagwCSKf79OXc?B&+>tsoVh;mDe@tkqc;6M(kqiGJ6ml9 zm7W*e%5jDx+1AIv!PU2_llk#Tc>Q@#+-`FyjQMofgnVPK{y@L0zPr?Q6X?RSR@m=r ztae}=+?363${MmS+16!`O?Zl|HB#5%wym241cEC^8FJpxpZa(kw?6$6U_ znSpuu(RSDd@^M*8_z|+##w^^A$7sRB32$f?rD=L7B&uu;G)ui}{INT1) zC$d(M2rH+9m0T4-VS-8%<7NjK|2-CpAHu$Qhhz+ekpv0nd(!1xN*OSbQp-w^>Wp#9 zO7Yd|*WrjzO9EIB4t##Nxp*{CJR-3Z7PbMij(V-tt*Km%eY7~#yZI3iyE13;Vvixa zXxbZE{~h#P;(?bCFZEZ|^9|TZX@;dlOGfG=Cj4oMQH(4zLrBU!+tJ2hD5O@V;aaOm zR?EAKQdmf?(!imM*qH!|1ICUjsCHj^kK|i@JA87$+C6Pdn9v4mTDw5FPNAEmznu{3 zVXCKfW`%J*@u&cTx9+|MLw!_6@snKfPe3@F46%S{`D7O`0m16<5T%X;E~@5`Gw9gd zH^!M0LC6PmQ(Dsclc7p!r{yJscGrk1ymAZZbp1HK|5U={1*qx_xklf6m7W*$&P%Cv zf2eyS?9JshoE=5T~*ADg5M|+OE zjWvL+rWSv&jO~7L{O^eGm<5TJ%?5zI5hX1kMDJrENDdiEw_Z@3h^t?;&9K#pfwbCoMV_evoF5 zmp9(f?vC?N&YuZteUX^j+h$3sC^sV#C%o0TZsjbn=9`s=9xwu`E+x7F+I47m@qpQm zKye3pYr5!|zM!UJL|}hCnj;2nP6KEwG9}W#>-mA%p+%3h?3fXuQsTFn;?FIP0v_hO zxfmi1y;Xf4ukZqwu03VPDgeqag~?OdmtIAN6Ge2sZCp>o;l$GY zZ~qK}H6c%n$m3~Q%iGd>{oCMNkd0louP`;PB7T)FHuO0A_2)4x8(=*-K|@?o%o}RZ z_;U;YE3uE$>a`<%FWT-N+RjLbj$Mj-8epmeRt(Ub0_GmIIRf8B(m^3D+1WeeX6 zok=j+1Ie3*HBVLfBs`|t(*8_!9lE#|SJDF7T(kEgbn0e6WGt|6r{urLW%e=?MKSO{ zC2ug$7IvJZ&{>EZIEVD|v5$9G!PS$9!%ct$;vkqZ%QIyYg^uvamd(Fu&ihJ#Qlctz z@lkOigkCfy5a=HC7jK5VW}#rHWQc?czq&)Cx$jc)0_IStCu`=JFV3Nd#{tHBkmN`C zOySkYsT6C4GhJa2ys@Av@i|Q`7uEfUl*jqu$zqs0--n^8Wyyoiy!UmWmb057b&DxG zzmV6D4bN{YyJpFI3)oA15V0l*fvu+qmk%fX9hiRLvJ*IB3_L=vG+-Ds6cr!fSYxbX=UaF7h*r$YydvwU%=L9I_DQTRJIH?-Hv<|3q=GL5l8M<9ImvJ zU?pN`fvGxT^xc2n@Rmy!ZUyID-hc>?$B1!&NA4&nm^1X%lM?(y`O(~AaS0RIWR_jz zmzMp~*t@^55(LYDT_3NLrZ%c3M*c|*y3r^dgDmU9O#(qt(Qx~AkwhzKDAe~(x!Q&> zEQo z#f5Jmg$Xz~=2=k+q`vWc3{tC3!{T8(dWK^fkot8eD=u|1OYb?fIJ-cq z#{xQM2Y*UmwA#Y#jya))^5dcPpZV3U$ywzBBcKWx`rWBM7PkM^O0pvz0FW?2Q6I;U+BhXxkkKR;q!fY+{gYt} z$P1CUi^|pPzk7GZE2jbZJnWC$tGC3x{}QrI*Q$A+^JN`5)3cmxwz)gtwU6p`C|`tR z`F@gc92o}r4DxyWLQKxOa!#12H|pt31|M|KMIsRkTI%mkxM zA*+d`E|;Vpd6VTH+jKmGU_^i{7oZb>hTIj#r!s*%Yr~Vd4*PwhzsgBC_t?wwH7_9A(avG{HoTzIbj+b_0VDlkk4QPbgR2TkkK|NS;W~Hs7P9YpP7x zC>Gm>qdTSSEFj!8rl4?NmbFcgXINGMV1MPeN)2JfiuQ#t>&1R`!9v>1?5B4}FYkyV zt)?kr!#0Hp18qZ6xN&OpjNkJ3^jpfl?Mq+xF7*Th7}A zL^4FU^AJjoi)bGvCo5Xau(b`-HC3&muT1&WSM@BaP$TFx z>U=~dnlwuRX_gBF(-bOwX{fVnW}JYvpZD02pSyLk)Hb#C4QW)XuNOC?TsG%nFmy7u!oy2c@OWCx?*6E-uldEm;!@7@sZkpHb-i)yEN zO<{`Bs53k{;%i#Spp{sVRi{33u^X|NP-Uhwfb;sn765pY+W3D*+lR4q zUnHZAyVfZ$Uf5QHk5Y4l094QiLUaqi=kSTHb;DHgH@yUYE&giT?^Vx84jk79am0?D zY8`g1Yh`-X_=eZ(SB;3d(K1f5#57PGC~2xFhF%h!T49Tm19_Vri%~^~nXDp?oZ*T&mNazWs8g z*1xJD5-z5!wMDYp8WwX!hWnxo`6DaRXHVOOsgqpDQScQkCzn*--oH>~S@wpdOU%te zTRZo7zdgk0K`0X>i9yY!ArM7$1L3kU{;iT=y3Nd0?|nx$1^fAoGeg9l9lcrCD=A<& z?k?8WV`H?@2=P%RzxysDoi25z5}u4=5T&*2!yl6 z2!VyA8W)h1{df0}hE}1d4GW5Ks>qJ7@xf2NfG%~Di8B25gJ^h>opqB?swA`xWNY!& zK`<7F>>RHOC^f_+{e`wFR{T%t+G>#ZwvT7QKfn!oDEgzxE7p)Ya?i4vYEDnr)EO-Z zoT;sz;c-t7aSZ|TI5&I>>jZ|2US>0f>UIj_;FvV9$4Z!Y*kKQbn7{7J3cx)JI;&4p zC1Z+|4Xc0FOULU!o2h5C;#B(UQDivRnEs^%gm6fq^K|TO4FYPnn6XPo;`M%YBH*!& z!RP)y>^-E&2iLccOV-CpJC3-=I;&tjf1`xE9l;JP1n=KBxFvq!;>j}ZpBPEK`0plU zH0XcKU4QnrveGs$XAq7<477J@nBfP498JCh@&narP1tfjgp}~tpTv|7b+&W4JIg5F zsbcdm)8&&6t#2LC{c%~IKp6Ryn<3S;%N`aMzfafW1-FTw8yfn|4S;Js?@y&;;R zHjv426|xGCk?69iH8TOGZwCfRUomKY*;!}BhB&{*+|Fm*w@lXP`K)hMM?h>4A8$H2W;}Lmh$q%b+Nkk&XLlp&vuym$r#mFX#L@U+_i_BPXahOjBPqjZAm+i zgr$6gi3-bQCSkY!oY+~5skm^XCVJ?y@^u=O!bppT`Y4NRTLVlyw$er%&SxM?nBl+F znPg^-ky7giK9l{HLH<8;5*(Kh;__uZsd~3D3|eh+{xgNRq7}o(UjTZ+@CIpH%{!fM zou-^s4!0Tkj_AY2PmdLR%>TJ>2yJrURtLhS(Hib0Kv$JcynfC4hXpqtC55&RdZ4Fx z?e9QSl7!SG9+d~vFU>5jBil6nWg))(gf*($4JfI|xX4_y zTKTH~wo4YTQA%Mpx0^v8O_iprlv!Aysw26P3GEKNCz5V7!cg|Qn}`27i>~`&&@406 z<%p(~>gw%?^N+|vZCKnI~A20*7}VnxgYmh+2nKIXU7lS({9v`dDqv2asR zL|&HJ2riWrJdWncJ_Gc}nN}gsH&g$*9u`EWdZ7d!NQz#Xf&^5$-8Xj1_N`BRSL^+S z8S^IHGU(`tmgG)|pX%G~v{zW%h7?x;j9jDsP0M_)JsMfbMfN9NOvhz@UhIxsT2iIqvU~ce(P; z@mOFO0N)D=r_oS(lgmbbR!E-UiLdnv})P`oJB>Hki%rTsWCvuO*W#^%T z%|56`#KWQAQXu7zeH(SxScA3W0Z@Hu3jD=jURpiHb&Ky$kfujZ_=(;8UT2ELrETOatvCi>1I%t#WAwCtcXwHfo z!V@_Dr`W}*{Cq?t+0evQbl^DU2-U-FVT;elv2-;wPsL&0j}%cA=Xt(2ZV3$isz1s4 z0KYczeWk-*lA7CpNW&kgd7F1MRh3;}{Pwx-+N@{w)4RnlXnMexixNUy5UwSN3w^P9 zT&|E;SU1HX4}iF=vWF!B^^MRjOWKiz^a*k{pYjQh&0&%Tz)ZZ45(%km10B1L(r5qx z=FV_sM_S0po=OtiO&!el==%0^#XeCZ@joojphI(K-@nqb;I<9SYwFU2h>D{INzqCJ zYt^Q(h%MKbRStmCW zUgYn$QLUEdCCE(Qo)h&$KwVZX)urn=sUj&W87qa{T-v)H%D0K9<@RJf&bZ(`T`aX? zqlA6K7*NfE7<3QQ%7iKC_ZB7Fi`k3Z5rp!X9D7S=Zm#iglmDA8DPLqPvw|Cb~ z1sQ9!L>V9H5qUyp5^fgD4O5~4NpS4E_*c3QN1>_X#p{h4IUS2=9g4HI(t8A7P&P)U z;f!EZ9PJMYoA>aa9Aj80aa$4OVQMP}2d+$Gm88dbn#i%WQ@wrOt@NWB6(?n6OgC+W z2&WT*DY2#1fW*1f^^=_dh$nQf5b(|p(OC>p(ztCb-Ci=^R@{ZlX#~kswvr3v(dj;T zB8&%u`|KXWdrnH}o2}X|j7&e7=W^jl)B=y54`p|cb@%z?I_K+i2tRlM96;z6viw!QJ0&aHwmi@{Jc3fXv`*LyXg?DWT9!=t$C@jNGtEK zZ~~n^=HaGv6*`86#m9vA;>`Xp!N9qFnOiy^Z zPx0Mb(71?ky*yB$)a;!zP3Y5UF|(bWA< zu{nlQMih&a_LLW5!|}+8A+tDVeLpjhE6h`ZWoz=-7=jR*9bDGdu+V++w*cV%Qza>3 zVW8S^AY-X460B{p89pcZz=mEG#B2B06xKSeIby45cu2sqfVNE%{LORrcietN*!)4YGY#lTnG8{L;SJQ<4q*!Y!1$$oHUATcnLhzeYId+b zQ`BzFSXs=G%00RajLv_R_MyDA%hShZzQoh~RdhKvv6*C_f!AmpjAZ6aWvf>>0?J@V zIsB6mL#m0Y`CuRfQT9p^RRK6aBp%Q`x+gQ-k%s{ee``)Sh-dD1l;6^-z}==q+&ZcV zCdQ4f&q(%k0-*1iqwE$OHKe^1`uzFmuz zpzUTK`q#2P6Ad?qS{a#^3Y&DxFW;kW*V^|d+gs?xX{YOwIyX+T+i+Er9#&E(3musPNT zvJWY4e}H+e*}FoeHf(F)Nxg_j?2V*JO{QUPe^R-KM(-VPhu|PTkPn^SBf-IF5>uL{ zW~+4ND$}{6&t{;uxz!?-f`R5FE4Ehz&?5H z{d1ERSjo!?DI?<)0#WoR9g*yjMH5f=8$PVNa^)`?BN625tz?KDQf6-LP$MzG|(Ugxhs4b#$lj{zFLVZkx-?=qGl zcUi&9;+-J)7L4C9Xj;GK0ny4rL$&0RUqbJoNH0JAUs2*>#^s)nmQSCo4uYRSes+v9 zj`|Lag5&yJ373Q855`2@WK+j7WxvZaj8$KffIcIq=f6&F(lErJ+mNegqo+CuAmV9V zveX9t&YfL@dSok>>ZV1efwJ?t*rBV)kyXr}K2=GBP8p9lU(V+Zfun~uk|9i_!EjFP zb7;w8$V5dIz`b}}ybFt!H>=VGgP5LQyUu&RV#{OaP09J9hGXlr;RgEqf>)td5P~Ea zCMO~WBF!A9`mp*i%60_MM=!e*^_9^>enWcow#in~!9I!XT-}0b@y*676v%%9iZm#~ zLXXiEJ?QbxO@>>|U&l$eC04JhN8j=fR!}F09nIG~(q9#)*i)>OMo;!;@koYM@G>`$ z>9AH|cXbA=H_r%PW&Sg5+JrP#H7-@_=+)F7wU7mhT&5J!zd>AaUyP+2v^0r7nxjHW z-##p11xKraS_{XnNweH4O0%7@b*Ba%+Yu`&iis9`5Qhu?5~!R`!J+GS|ISe&O|Ugp z(x#7ME5XR@Q!pT1(A&>u_n5X+1ocTNAk8Omn)PUIylE_5-(A$2`r6vEL$rOZV}S&=#-9b ze29(lWa2u2l0oX76I$A{hnNuGXWue1F1w^4!hk|syv;Akm~Cdr-RwwfH5lS`i(d9e zN}isJbi@OnOA)|#lBpEA=pek5F|v53d;CxnZaSLkr>0E?0e$7aK}bg6X?buGgx9F^ z2NIliBhyXVu%rWKe2H-n>Ei9wK}sSolfJ2vw-JvmmNOw^mr21e#m+z;zJD(uf0re9 z$o-`<7~30k^XF@>g0&k6aRrBQboT=>Vn2O!0vk75d1}0SY^qK{%t5D0M$82A>Fmue zcX7(;0^qWyxe>TDiqDEys3Q3wg}MTEbF87uckO++)^_V>mGhE$9=#|2Nkbi(xWVrq z$<|_Ibac98U&Iz(Hm;dFwwAPO`-AI{Tr5)KRqV3ewH!z=Pyagofwn(!?Xp?V3C4y& zB^2XGPOD$NG-?STQUMv1lxv^9q+T)k{A?ZPC+I6ho$l&0@cCw1OE>+!VPfkDaMV-) ze29MUoy>{BxZVPcEgzjlv97tVb1e&#wAFWq1qB3Xi}cL&xi~Ee^d0e*Cvd-B&TsUQ zE8LNh^{88+gtj!o8IfxkGVOMHT`ASMecT+jUfM{1**Ni6x8Z2`#P^nwI?hWB`!cST zgtI4!g(V?&k*eLMB86cd!n0Hhw)tActyqj zc8vwxPVHdppqWX$w3{30@A|nvvC90)HbXXXA6v)It2Q)K&ryr?YPq_ho!=pGBC)C_Wsczht7I9ab}Q zbr02jR_K;7HW{xj*>%i-8Z) zTCOaYpwq+3CISo7nGn2_DQLyT3aDugY3aesZKF&l;v4)Gfu^ChfnBv5{`@>6%*>iS z!sx_0=)ikyatrBkGaza0);3RuJht84a6QbtWm;8oZE=w-m%12Dw^yon{^@4Xtj7n_ zv~V_Gt9jgTu{h{eHZ114G(30d9nG(A4bBOweL~jVC|DkyM!KxGiDLu?B4=17A?QD_ z??K&DT}R0fMX<-1%l899I(h~c=rfxbs@(acO2yFZtELFZU3hq=HBJGR6tYZ8kMhC~ z0r!*HmLMwAFt~XOr$HKpm@|H0C$bR>UQ2hU&w;sxqnxG6MRA*cnYcaa(k(_cKG z<>_MdO@|`fAzcL}@f2|c;OEhf02BEx%SS=DX3ZJ0T|-Nwz?SGlRl5qe%qxu~;w)N~ z-MY3GqE#&o5LR#-v{@*;-6+`&Oh`-}%%r1TkjiZJyK4xmC+@w2d4%Xhn;o+Ai%Jv| zjx|zGEmI;2>e-5Rrl7_MtvB8H0X=)Rr-5*-y7T;7&4tBm){+=(XHw{P@CH;|P|D_- z)ZWNS)zHZvSILVRR^l@Tz;g#Vx$^GJ4a)cs9vDZqG&8W)12n zee7A(BcllAcjT5%_xDCsMPg(p{sUFMBP6{)Xdh^#C%Y}B7$YETZtNpSn3Ema1jbNk zOy5W7MqR`USW6jl)BN50gxTy%a!%(AaY^p|u->4i?W4YpUZra|`=_Bl9E}$0fL?u&sRnJa@=F z8iG!={=}v(hBo!myOd)^YC*-TStnv~Q|M`Z{OSJtv;cw!ydy0t2%DiI>%v|K&?-G_ zK_ZbgBHh=M_v&k1bl63C_4pUy65}UsyRoePmIz(bS<*fgMxm`%`yB&s<-A96Jnogi zAWj~v8(rSuwBxdViPNz1^f+WPo3o!G_-GEm?EIVMU> zl^b=$$=L9~V#Fx1#naq<8Vi+zr}m(we0DQI99+DEm}*G_8njaHG*8K|b#vq?ERgl0 z)zU1-@PG!uban!`yXJjf$L=GR%VAcc`Z&j$UZ*xB4HW68H0V4r&Aq*+7zs#tOa6fm z$e*ZzS<*6veR~JAq~-Q|pM~8SK=5AJNwES;wvTF4aZ@e1yx)yys*zbwLJUUap+;$=cQV<@ zQNRSvuS~vtd-|+t3;O(O&)MLz8~6u-7$-%B@}ksnfCMlHFyA%aU6CMUBzcMrJ_-DS zLH@(`0NEaY$cGpPsT~BgBBF+~OyqL)F8ZUiDR56T76>5KxgjsVC$_$%M67mAu0_-f zuhkO&RV!z=RX>aF-_hnIH}*bL!B-z1&HLG1!n)v-QuYV04ByQ&19Vi+_*@4bFim6x zm6t@F)-lyk$!P{rHkpdkue_;FaU%u*ydoMhSe`erFR^FX(x`0;SC_Vml0_|#ld zWMQ{rC!TM<{Xg>K-xQ@w7IOibF~W9}n@X(i?z3!`pLtF;2xX~uA>KsWa-@Cr2~_#~S){7Qsq(Y` z!!B-7_uvrIu$=UC9y=SwV*EFImoPk3QntbL+vW1k!#Ev{Uy(?T-1Y~3yM)3!y%JykP&(^5f{nFL|Xaa`wG{aFdBF~ zwu@E4xym#gUDh=ncpY~{JYyhZjF_AQxhUneE$6H8x42r#mRBM_N*wVb5;wr5&}%5|Co3siTdF&yJ>8cPX@SfNr~se_)%WsgP7g?W->9?S9#7aXJuPLg?#aK zSSS9F+tDXMT^e)gbu|?V|2eI#4bkL)#K$LH{4ox!hr@2-<#+-5wRlXt%{8{nN;u_` zsV;sR+aOom8ebQc6R8g-P{un3)Pc8r0b=`5d$7`9p+@%~< zuGq_+f_}5N8ONVu2Yg$(lvHMX`>0rvO{#DTmc3j(LPsd`8zMzW13We8Z66udBY6p} z&SC}K<%D$?z@fl!wh_p#&Vk;~`Av%8A|MC^&;OhmWG;M{MY_}-{cxUi3(87UgGMIu zOLQxc;OvDA8h7zB2I{nvAW$6MpKwE8HkQcC$58*m?*F7_KQ-ASFM|~mdl)&t9=mIk z0QLe*?WezLhmM)GboHUF2?f_aYWw*D63au!{E))qQ@tS+uaGiCHTil874OHMCjXTgqu>oU$Xmcyxt;5ej7nB8jXW<{q|Q5KspD2` z`hBEc#%;L+hAt`S)}A3Mvwpqy4~(%MM%E z>j$Wm)2Yqyq@r%a%%ZTUYLbItIeIJ`#a)1#VM+IDS!LTDw3prxCy> zHH2D28=y})HueiB1Ta94#G+&m7c?8hBudX_5L(})a9nA3=2bd~TJD^fk|P+LbziD2 z=B>JjssFkqQ3o3Xb6uD9g7%eOKFlV8)z!@{$1T;7 z1d%ghW*k0;U23dwP#A;;c^dlPJ=F_IZoPNao@2^P8bbknFej0UElgt>w zypT>?cmve@yWNCJ7%-(-^LMaBJSHv_Yv9b=^WVDDu}=t_g3j*=$6fm%)DLKXWT7HH@r3#F0)g?nxqZ)_8y+6S$!QMx{NP-Pu zA7khrhJM|^f_3Hd5lJj*8c!y0r?L;9-EM3*9(ib7Lr%YuBU)#*Nb!;#s`BeI0Oa2n zQB8vVNEJ02k+ev01*Pg1I5|m6&kCVLbGM#)ob=Lr;T*RduQPGa_tVZ}{gM}5)2Fd5 z5|a?~qq5E_7S}m+Kob;F1YK)#38Z5KJvDaLX+-%PCeIxwIeQT%W@MFjAYesw>E}>k zf31F6!WxzTJRysV~Hm`>Df+2c>E zgzxgZo`>Tlk#qjuAA>z-_*X)FogdXIbAo^YMs8NeVj*7h*mCYKNgGATe3s5!5Ie%fbntJfZ)^+3X=wwuVS z@l6>XLFYAEq?4gDPbt zbh1>HmYEd`R!rsbd>vbzoi>7dUUV(?6rd}{tfNL!bSkf=*$=b3Yua__8G}7_M4k`T zvkk?>sU7hOY${|q_yYQmwmQfw+W1TzIERGFWwm>QG2hn(K$Kx1)`LCtt{G@GLtV0% zi1V?<(`_V5;?XouBXt_|UWP5L&POs%E2&r`9<*6cg!|GOogUpz zPL~?Uej&7s4_ua>&)9;w@6_%7v`pHTH80gVgC4|o3 z`En<}&&Z?V)Nb;zJL9gWPTD9xnW&24`d~o{k5(sOwB#NaXMniON+{w1%Ca|SzYvS9 z_39Y0dhK$&YXSMvB8s+xFycm96-p7PB-d#i9ooaf9uE>^p~_4h+$fn;*6UMa*PNBW z>W}0pH+&1zyvbw4W(<+(l?Bhdw!xj|o(j z!~>LnyVS+!3BfE=0+4yjvf%mD~@$26x z6i=Jvdd>}(yqnP6mgSwfz|%Fpfk`Rk6K4Ri;Y=G<5AV(|xmUkOKcg$1w|h~du2^LQ z2_=|YdHAJM24cut%Kv2l9xj9KDhsMyJ-5LeFP>$qV8N9#h0V(5k{)|fLa&|;^uHi0 znIP?K+tu~7_VFT!IEGS|dh4SS*?vFDLN#l(*o8FizkFolqByqQfG}sv3iz{>SE7`p zOOng4kKJk&8t$goVH1o)$-3xOc)PEj8Hn~oD__7zdx4`7*zEi78#~38ccJ=bhY8}D zh{1+Y(wsMnf@NFebae;V=aav$S_GNkTslBc8S~#Ws>}jb`fYv;D%ZbckFsVttXV=uceA}y zFsPJmHAAx5g4CHf6ldWO#kD6 zjO5Jzw#WjRIh#?hH*?{61mGIZj`3UR%$AwI-`t@~pvMEvnSR-Pi^L2iUO>n>ksm}W zSx%KMiO*OL3mkG8oOc;1gkn&tuE6bvne(P%i7d7VD|Br8#8O4% zBBd}BM$>X&ByZ@()%dsTZ^pRh#rvX)(3gEDBLq(%W4b)ki+b&b->N5(i7Cty^i>T2 zd`NFt!oJCL)mpjEa=4Ta;Xi-w0x{U>P5|)N;kHU+7QZ76h$9-HY}&XSzwSmf*RO*| z(GACzjlaT^h-WiqRog93ok3r->1^;~_P1!_4afr`bFzc5B}mMT`(_v=SI|i!6v2C2 zUY~X9+fs9`6vw@#t!1A1*)m3=z^Dm6&%E*kGi%&yZ z+)5SJ*WGB1EEc|BV}sMi_?XB16v_a_Fc5;+X~Y{6X?=XxRR=Jx50EzkT5V%_=&>ao zvsbC)%*hjhZv2KEUi;=W_}@>?+%Ws`6R>DtzHRN%*hg0`%1?T7M*zciV<%DON08wx z2?syEglY}ZVURi9#O=5c*244wcHV{t=TO##Me_wdY#lz_*S$v^pI@q<}% zL(cLVotPG!N1Y`+OT-n}IenH6Inw9`KvY>iSFt51k5AMUaBDggm`2|xsLM}^H19e4 zx=C{U^5JDqsvbAg;p_+ap&BLB;$i%N|0~Zb!s80b)#qWyVHs*J>S+E8_psNE!bkBq z?AHX7vD_yBpkuf&ddX%=`lk;eS@?4a7nk;_sIS2k(=d?ESdU>{LA70!(UT9~Nq@)) zs&>d220V+ytA#}W-;j-X+FYukD&(aUA2_4ycNH-=XlozcY(;CU3>1MojdoM;s-@F{X@%z7<$?!QYGkFh0Ds!B^zs9gYm0qJRtY`^=V}_|5gL#% zWl~y{(0T6;>hd3d>%su!GkQ;HdzcYqK;Tr~%;x_XTb-Y{zQFu8(%hSe4(jgximOI_ zWQT6}%~9+?wRU3;s?f603vSjlW}P?KrcGmSc2w-_axD`%7_Ou#VFYIw{ou2QUBKz+`SRTx&?n? z1(Qrsb;pro$gKC0wQ(l}{}lzIfnW>;VHNMCTA2}B9J+N;GCP!T(mB?lWtlH0o_Ra? z;`yhgtijho1E2z|tU6&O@BxF3xGr)Dg}kD)v*61pKYF~DK0aA*n|xJuP(??uz*3|C zfMcna4O^w{f?Ju+gVWoU1s*C12K@AkyjwYPsz?Y7K)uFv)APdh=Od%fl^gJdr0K8 zj&mL-j>wCbqRYIVV53O7(QZ-XIv$ZcD4lHH(Hd6Lilb>|FT$1Sm5Ksto~ranhuUNb zFNQMbM~;;yd^Z9hOaGqap0hfL#+6oZs8IIy&8Mr(}DKxurt7uSf5p*+kP_F<%%U)V;Ou z8Dkz!Qc~0KZdZxU^o_j~8#N2LH)u^5Oe5?6puE}1Zg6WOpzN7nA>^y7nN_S=_8Q7mQ|3U?? z=XfT-j-6|^Y*KZtl_UTuKCQRL7zX9p3&09K+iC46bYi7#N~0Nfm)3Bev$3a5psPYc z1)J!;O}5aPyeL`?+MD$2%V(#PQrc1dS-Lb{z50XSV=&Ztk$UwxHbRS%S+VhI@1PvZ zSl48f$i`MnxH-4se=*P4{^`uSi8~dMzws@fBD(5>)?`Cnqy6Gp$M}DivZt+y^9`o% z?6@y6u(tD_qiN+aGGxML*RdW8$+*kuC%*54B(kcMAE;p%k#N3na{5LnDRkfusJ>+F zjhwysb5x+2{G9Mq?Q1H?@8?BCe^}O@tBSs(jPI>1F~^{bcL%?>%i@_XYxaZDOm`~w zdq`~m+!*!oCoos%+$F7Xf`4hCwm7nBygNm$d9}dy*r74M=l&;%KM&PuX^Xm|`_6cQ zj<)lA9iJccMyTxTwBbl{7$KJ0jX)jq;8xY02_>Y>wP7HF^N?1nLFBS+adNI)^mQ#(x3g9;9(X$pHX}9}n@b#q zG%Fo1%$29da&l9y#0B!P`=2A@)w-}dPoz{t#?!NVfRLUbYtIfW)-kLxn;Hkj|#NCv@~l>`BeLoO)Pq~Nd{5CT5>qJCibs2;oFZ3-|HZ~2Q z)H;;rfohK1m!q@&yje7#tvJ+DHKZ3PB1AacLv7r*LK_Wo^Ra0qonh%ui0Bs9!Gpr2 z4IBy1&$wGVPW~Zx>CE(Ra2*IoREGe<8l%6Ctl+?TQ<8Gws|=n4{xHmM=F;R^Q-Q7l z;;|S#`zQj&)-*)Lvi*c3XPx{ylT6=_m@5l0CHaW#C%#iexQU9APq$P5*odNUNTW_g z;DuZbD1oCB=m+llQ0L-s#|t|0-m#c7cMF0uOZVvn@io02^sN*I;g%(&HyNFC647?M z&}>TKE38|ezr|vVf3VYb?Q!gq5qE2CgB{9JY=iXks+WojhF4H)E-SyXh4u=M@j%pr zpn7H?Z(q^Hv5_GKZb2L}yM&Z*!07Ta@hQgpj5t`Gtc_t?z2)+KO*K(HX9CzVH z>iZcs|6Q!u9#5U576j2L9*+X&bnSGrP-ZP*R)nAOwaMMm8C53G zT?VOh2410)IWt?ivmjyr$Q%t06jHnWCJc!wCN>~wtAqDG{+4+I;&e>Qt)) zs9EpP?B_$T=z+ONCKd$W|IfwWjcNdK$;FdzBye-rH8kVN>&q~`VTAPt+r>_A%&)#` z`t%UdV)RQ{=U=-K4D1>K9hZbanoqNd0s^E<-Q{7Ft#y*{^n+xUY0T$=MgxSjpeXaL zw_Y6>`G!ZZC&ZPrDY1c=jAJ2-m1Tt|Dl-X!KIwtFVJNp=Y!=8|1Ic|<6yt-~0B{|I zwSGnw2us79g|}#Iewtly<5=Q%7>6C%?K6KFbnY+=fXsdA>KgfU`^~vk?wVYf%QXjRl0EZCpqbh|)ZM z9Bg;zRe9K80dxFFhtP~!>(07(A;;wj3oS8hn>W~H#piS!08NS1JXY?-v%bRZ%jez( z^8l3Z-=qr?w0+wl%H;>TKFJS6KHJYh%2-DkpgdP!LbyNurxd2*2qE$FC5>__2kqf$ zdln(%xl}p}du^Rc_fPjmO|bB;7{|di#vUEJ94K4h*%&kX$kDdZYJJW3T09SZN_@3- zZHM#}6XCM^c-l|P;<`Os)nQo8{L)`|6m}3SOQMdM&M=H>K7j&Xn{r~ zl48cag}9K9hPPpt`uV3IpSbrxAy?pD^jKA34c4zM;&>zOEu;Sp)V8einalx5KS9{C zlA`NV;WZ;dsTW{&n~(uUy=`x(*A(`r$m+@+iAoJeA(PJ|ajN9Gfq;}QCuP4ouVWrS zUi5^9Kmm+#6?}aG6J=_DKg?nGU9%TU)S3{qty7iK6!&KbGEzEMik_h*J`WG85Fy8D zzYp?6{(Ym;a7sQ=h38QU<-_Jb)IJ=@?9Bly__ET9=V6|J#7)lNl1pYD0yyn9hHZcp z?b+g?v)`^(OXU5JvfEYZvzQ_#~Vby^XovA@iMk9fv`R;5RcIRCW+zh zaX`F)sxz|Y?YZ4IHvil6EJ|So1esOe5Im&azu*Q-1X;rM{N|*C127p_2Bni|8JM4c zSXg%LKPmeSMC&X|I+Caf8;|C^$0k@-eUD?wr+yOaT3>JBk6g*w_Z$4@A3Mg7>6|wt zM$x@vjtdQqfg8U92Oqp>kFuETX0g%lf$nFqU{8mOs2d*VqG$1lY$Fm%?G_SXk}`_g zP`UhcKt^S$ch?iyQU8S6$`)Oq#a30^F_0&6+(?3-IkFCNC;x}nHQk|*f&QtF4L7At ze(%kRjvhCFTBy@o@F*C~pX;iB%HZSQHnQ(`S9EA8qEM0Hov~29c1}Iz%x|pfc?C_Z z;e4*mJvfYjUfJ735&cw=$JJ;8Q&dlhmMCHQzg5Bz=es28Emw`}-pKQ$SZ;Awd|iTF z*2(#2Q&a}P3O|S18;CO;QdMV>$becYD>tK@m~e8}(J=v>Y052ur@PIDzI3kcf1dB3 z!6}Z5_WT$IPg0R+BUYIOT{=oB+syb|zQjEWt)~J6(Rwn{0<<*P z%SJd^eKvcc!BETiiu|E&O6E(38AIoqnUkRacSW!!a`1r)|h<7t3VgO2MTU=+wFWrG#C*zJd^Y9FC@ z7*;80YB>(fzBO@V?jYqLD~dXiWf?6C8gZQuD-Nr;XP@<5<0qHZGFL(Ls2Nq$k|L5r zaGs_dGb#eV<1q#onP?<+-{HfSkH;m_S3hqt`gGro`rJLbC~N7TR@^guevFEDYhJR90-gTqM<|%=70mn< z@T&!^-A*zG_zb#jcbBQUXRm~%yDo>6ghpVKAJe^nl#vOS%Z-7JZU6Q*nzW%mH#{E9SQeTb4ClrhgmFdxjEMLJ zL_#Bs4<-cP5|kugWr{*YmaZ0Xl^mld==Fty3ecA*%N*@4{wa{Ktl2IPbcTxmr&GeN z_$hhl^H{X*j10|JilD13nGjdk#CbcWE=g|s|F>ZU@pgxWbz4?VEA+BDI$L<5MF#*6 zI#VyHIpPKxXo25*dD;kLWPK+@-%P>~{AHx)tSs{z^SvW{sVMC>1jNAMB6Pc5sqy(U zaA_NX7_p;~o}PadAUV`5pIf7gb)n``VkOV%=S*XtaSLhR@a{qHv{Tdh$g}Rg+~n(GC0CwF{F#uV*`#j5JGYcz>2sUnJS+D zN|DF|xt0Gp#rvTl^KU2D@6~Sh@?on99Na1cFR=OrGcjs@p7S7twX|_`=SuRbnyQ6cqUTMY3?_pA7yo%S7=~3>x(!m(~-s; zyqHg9t6>Fef}Z6|kBS6=P2sH2&DT0yiTH{|UfSvF-d=J)a5eDqD~@DTL9cYL?EpaY zDGyee&BT+7AA;-1UlB^WW6IlmDy>Z5j@>9V(|ZAb)|!|?Z)sFqmEf1 z9l-8*e37Yd4lcX0&EJCvl?8FMyGYAS2pf7!gc>UvV1!Sbf~oeXZnF^^v>xjHJs$gH{+IDpY9a`= zJ*SKaXIbC74KR#jAofz+EP1^qn6(UP|9GySlS(xEGYUyTlzfd;om5yM1k?2pP?A1d z?%hg5(djaQbjlD?QG5@=I7m{^asoT3uNAr8SzF{mK@`kUpJE(q1gzlIQEUimA*E-E zli{FksC<@Pb5O|P!`=5_sc7>j|3iu-*9@K{3t(3)QC6!}a&k*}0SW`E;Sld*0sOI7=uz1j-0 zuAQe;0UUTu#eDT%MHW78&j;~wob+hMRsqAdbmmw1L&!<96W#Fs6*B5KcEUM+4CapW zYY6R%E7;-H?JNxeyAD(#%oh}9Y8eM=0aB?D+vfa>1T9Q$Fc%FY!*joPT&_1Jn|JntL40PO{2S@Za3QRi*gHty)+Q##?AiDE&JEC1R*g zNi7*m+ZLQESAlN;RIvufd(Dk9r=PMbdmmLaS6+lJq@J11>%gfO8nGS3mIlPX-(y?trieaVK5umvDNnj8O{x943)!3u zIbWJ%3Kcy8!qNHcKmTf{Le+JiDC*&TOp(bBgZHUph4mmpwB-4V)qO#x4WX5k&X4#q z$FX;G@ARs+gu6K#{7>E^LyN7E5(IkkyUo<)%HG@s5)O zQKJ?r3NMV%=rn|{+LTwf5gZ5*$%~gKBn@xw$aysCisKxwxu`)BS+9DP9Je1gQBu~2 z!@YyMCykv|szEugwau8JCPpyMlP52dpAlPLs+{Q1(^}h&zydloQ>_qzZn4j301FBGr{!pf>mB6 zB45^oH&}e;X=^Uc41x6nxvba&!3V{0^Vz|I+V-aCb&3fXyankcfBs zGc?w6^b#u6UW&1}29%|_dg}($pTdWQkNw8s^Rd?2jBU`^CM_tv%(d$#3zMw!K&D^N zzBecM9v)@%{~v+WHIIlB0OB{04wp%?A6Aw)5b;^XEyP+zI>hKWf!;D87G`4SsoXE~ z{7!dH;W#egBT`~Dg5wNXCf#zo?l}Tlr}uSml#*ohe%ZA1&<45uL7=(GahXb3ml!I0 z)Ky1b>35peokbOJpV$BLiq$0fId1LjKavSHtkopxr$Krf(I&(E*0&KihImm3)2vgd zu6p=6mXIXLb9lQHo`Ly=@&=x1X9NzFVTTB^_;2?VKhSjJ&9D$V4|{3);r9=j3tGtk zi+LylFLa^#JTjqJRqyW~A5Q4a$?P1H$yj*-=mWlpte+Cn?NYH6Mzx@+nGj#O{}^t| zDsDOG;w|r%9vpc=E2WL_EV$sRPOIv3;};SNrR5I|!{SvM8(f(BH4XCR7bX2V7N26R z*THThIAH#O26p()WG)ogn~cu2GM$QCG^>gp$!Kn3s!Z|A#eaSsE!5P91)tjS7_ z4k^~U@os$wBNK)rMtV!9ml6^X2f8Ck7or;xf{K95r+y`{icZg4$M}+*s(e{+rg&As zh!D^OpZ9?0dT7M*Qhn|}AHFFkk}M+>Q*xNQv&#_ZGhLTcj=eTWZ9;HO4gUHf)z;(} zD;V|bY>f%al@pq)Pd3<}t>=#1*94LvEt^5yT{J@-Urt6g)fYBqHdDMuW>Qp%nFm_> z-@xfku6zvyOz;@j){lVPLh6?`ID34%GWT9)cBKTRNM9mJf}g1E;0ol9B#T&r!f7M`=8>UXSgpWMV*Cn=I70;2RPa)hWjZcqbDB zfwX=Ts>wmjS>)?y3<)wD$LY2cwab5DD7VvcVZ)R*Z<#PraGai}P}N^uG$A5*q;e_i zINH8W8>pJ=yJcYU=2-J1&K=g133&4ZXhk;>nhALx?#1P*Mhk-QrI!rU6x?o=z{Q4r z*lkk@S7tvsW_1?~xky8Qa7xC2Xy@nT{7XPw3;fC2&*4*B_UKl%tg`@}_4K%rA4z7~ zO(;VV3?395a5Hv0%WIShZyjZgryX!&aeQ+AvQeqs3%YJ;M!DhpxfJV@V0p%!?f{D| z!1a^IAX^p118OXC0*65WD}~>@83CR}US*pV~fQ$TL!UKZhC zUwL>5*AOV?Pc?$c7D7y?2SDasY2mW_Q(B3O->@XR+GlmWcP#M=6T8`8&G0eIKlL zhr_NaX$9)&`0z5^oLy_{bT*P3lFuw%26|?dEf}t1jZo?gEZA`3wl^SP3{pFR8?d$a z4(#A5FXhy>HPl|Xd}FI1tDkUFGB$a%UueILae8_tPhN`7aY(1;u>aihDT-IOeZ>)V zbe2p)V?np>Jd0)r_YQoRvLxb2u$RXAT!kVPK>&ZM{SBFHyfQde zY5<0fZk@ce6stb-b7|~v*psQIB zT)=rTE7K}kD0>|r^fO%HwFmi}>?xie1;6@URud$C81fP<&^dVHxH6zKEbASCJnXa9 z*Y=W&H2U{YFHS)a-md{I@q}%^C?F`{%QQQT!Dd8wazyirzijP9P5A?ZeDRZs6c~I=!lXZH ztCDI;j_b__?gxHki&HM$Sp~jBIvvyVgpvj=x1wGW9 zt~l|DzICGPHOaKOjS3#6$YtTZU+X<}w_?^Nuv!GAA-qS?cRk%d0D~6V-yS z-#z>O?;+Y0DdZjtL7nq8ggFZRIR+0>qM>p3|IcPg{7yNB=q-$2#=G3&1o~r# z(~SAynRex$3y-~E6qg?WQ;7ky)7oyu8m$11jlX)m3!fP%BF&PR%sH5d?(RN}+shQZ z@|4gCRxZ6>>VUZ`Dh=V%z+o{#^QY*GDQFK&vpx|4HklTquyM}U3@7to$ID_SJ2U61 zA1;YVgA%lB;DET*gq3-F$sQ=45U>nQQ{wRGh*2OZ{kp3SOb4(T8)VI>sX4kzaugACUFszjE@&<^WWZE=OvZjM5Q)J zJ(o!vi#rh<2&jB8AIOzvr1EWG*}=?Gx5m)NKT}q*Ns$RZjgf_O{wxdHk7DHFzK1_o z(h0{9Sde260!$kjkCIS+UZ%R~&I5U7G%se7`F7BGy9cqOu@BzRHLIHTq#SoZ14I>uHm4KhQ;I(?5>|R-@qz4m!oWAsDHL5Spf(j z8n6*6C77=(odb8brOdH87&bVa0un~0AzlhNH+3VgWnYzBTAi~rO1}VU4?au%D_jx1 z&t;e@P{&Pqea>9@*{0K&e69nDFKiVYp`l;!M++kR{zWQ;f#08>D$ zzlcNjc?d;6ns)Lijn2v8CUl_4?P9s=|BDN7=KTVhNd2*H?~VhJ?}RljH?_%nLVn4xZAVIfI)3v#ys*VA4*- z@5g|Xl^)sPz?{Hfgy_)rO`(pFL&$O>5_R?v7nsSyw+hzrgvQ*V&?6%JI@6J~eh&h} zrm}PKM~RT(ws?K(_;VKBVedGW>nwyb*R^+#5hzWbQEI6TrD6$9gv!*j8JCKN>|vnf zn0*5`oc0hZ3;0G02^sXY5@DczQ^L)N`lX2fJG4A&>s(bW_XY`v$5e;!d{yIlt3vn6 zP?Qx3i7~!ajDnc1ECpI5h!hVyg9;RByyoP(?3jzN0rO@sHpS)+%ss;dv2RmS?!&cP znfrx)%nUXuZ?G-;y@SUE+;Cq&QA$s~J}-B#d(8vrXxkJc3JnzK@ISTE0ttbxozH0u z0c&p4_x#~Aa1J_Rt%xKZ)sbg^#&w_XG7%!#i#tyT`~DHQL0U-$ro8;0^;kC+Gwcd@ ze9QB>+tP%qOru7L!)N&Z@`t!&La4z57X=kD{YT*a$u&_E^Xmy z+}$U2PP;HGCgRSS&(0cz#KWH(%F2@6Yk%mW^2ZfJBVpneqED{4I448APH;kp#~6bWAlG&b%<#}r+biFu$=S6!T9 zd!~3Y;&ddH)Ds&Q%g{@O#fJP9#e4WK>thg(ebmiyT{!v2)K^M4Pn2|{z8DfT9EXn0 zZVlAW6xvTG@KkW(<(U}73mZ9&_eJ(=LT0!TNZ)&7rfDIsb>_)FgZBCptTCUpSfNkq zLoW1i;Kiuz4pl5G9!i(N8h-v>T?tLDf2+6gCtr`NNEloqPw-#+0h!4DgG4=ecOtP` zmkc_`m_II4ZY{QUZ#&_c%PgD9?vM8^kW1V~hT+{}{PxftY*Y&osx7i_%A&xLxst_? z$2p`iD%?6Q{@2eB8KKZ%3iqw&C6Nnjl89n9=2!$|o0KwWZ_H7w5N71aGy`4}qv?BB z@PwHney5v5arTt~PWkXZ)2J@u8)rhgeKpnjd}TL(R=~ftDO;&pisG7cEKHLAS1YAF z`WYG(RbnYv{~$))Xn{;&DU^HhFO_KI6@^JY2D5&^yb$PiHE|$5$UxN}#FlmDgl{0Lps` z96^f;K==4StqUT`F;cg>>)NDEXEP}nY^E1~(|580Yai(jtrdmPPAuhO0^_t_ISY)S zxjwt7u6``)ZJpy%D;?+Ln4S}9;oUu8Gv#eg&=F_AYX6=LAx-XQ2zpj?+S?{^O2-`e ziZ9PO@xV&9V5A}{?4=MzbK0X->#i27qwf_1Sb!`UNR=VXMJkpc#-vv97Ku3CQaGAd zyvW0AAak5K<83S54Od791!AX0zcQ}JMK-5_TZKfY&ilCekA<{?48$pHgbs$ORg=iA(>Ltmo)Bbau2S-qRQY-l95yt;E$ z1@WS(6(|i826r4oJ!gjfgX@DN*)Ip8%lss`0{dthPqq)?6?&~ z4#7A>%R6y}6*PmH^+L6KJb)8!0_lk}=^%K?4DbIH*Ad{>&i3ZjExrl^b@JosJr!@}N421-5&_pjyruskn7)a#){1&F=^)a6wrxSv7*%L_>MBgR zAwp$stnPhKyfT46@OS{H8l^NJF(pLc?*CDLrXLq>m3>#x(~&wd|K+r^XdE8Sci~jM zcGBwfPTNp!dV6p+2OmP9-5E@7J&rIs-Z=Up2McH1a$5=eS+jxcv;yxZ8qJ_?Klp;R zN9FAte*ag7;H@Y|XrZC0eZ9 zql)RRiuYO)u^u{T#Yjc0`8+z>!L1P(pq1UNDc9)M=BSB#u_#m7X)E@wl721fm-@Wn_`>l%Zj#B$?Lk zOy^|o9~coPxP3UW$ZmLc6*6+U9{ zoeM_a!%O}z|2!n;`!AP|i9-VOuC&0%m*c-_xlx8)Fjr}cNL!=2lsc?CzM~A${MDl6 zN!|q`mf`~Sk7M!)o=UklopIsokgH0L7d(y%Y_Nu?|0wf#w29I3RsdxDFPewGV=Ui* zJMNypMv*u_PDJa^l%Qn~1bW`;MEI|DcXcV;7KwtR&wRH#jr~3^v6iQNTHZe~8`iD= zb<|0XYnVDsA5$BuAh!?-V`YEfwSOMw3?K_!6(fr;=zxH@6}v>@PIiIVpN)x81K9Aj zq|-(5C?$lLjum*{q?0VrPGdk@+~(_@0tAiig?f!5aZvNb6=B$G4`6fMw3~qQm@_aQ zqfuGhfV$62HKF)>vZVGzYorLvwl$42?Haocf^ZLZa07mQ*gt*78|W=D6E?^ARk&{HerT2HWf1fP8VIF}f< zd0AYUQ|jnqIHQWAWMlkIt1zyTg{5*@4QfL3aNV@UgL&D1wgV?A*MUCOSaT@5wl5qf zxEck#nbL!-Y+w`DOfZVg!<*)NkDqa6vqo${Am}`o$U|BZY4%9TMjz7d$ARK~2>H@y z@1h>`!q=56}yKJta{CGz*IKl9B8(f5aWNQZhEvWf5gOA++k@(q?-<&7GrCt-|E)V1+ru zE%(AF>bw%wckp2)yXvbvoLm2rXgyK)8+VsdeZP&~xh5vN)%CTG;!;AaZ_m3yhZ?Du zO8bT^Gqa`Px$O$LKUfx3P=oG<_{~Wx`H0OXj=50`W~zYgud!+I-4yT^N<>Fp^Nf)Q5k`R}OK;*yoH$8$g7#a|>?zINHx%){QE*CEm?Q0f97h3Y`ga8FS9lN zWG%>yYb(4i!q6dpd6<;_ElC=taa64iF*ZAKzR7e`UgA8h>eh7-d|pG>RCId!@|^vR zh9#;t`Zm!Ne15sns&z8*B)LMpTmr$k32 z(s_)@LN%2XJ2+~?HIovDbe6pgG7jK5`R@Ys@8u=K=~Vtc5BzdDas0l(khk?WZyw}K z!s2nT)&S9dhFti(dStl=sVV_Qdgm05`eiMVdA0|7XSH6QUImY(;?AdCX)wi zDnN%BM$#Mw1pz$u!!kerb%y;GXb-p_4ZyM`(4CKTWUgWz4fJqws^hMU_$BCUayi3= zPWR?D9N5a(ebBUQ$}KsuYvoa0>#**Ml|BwU2SkqDg`ItL|$9ZxKqGw z`Rpdx0bJ57@UEsOcl`JRykvE4eH(*( zs`@?4fBAjkR-ySDSy4{CzJ2EpYohh?+ph z&K4^BS03bJ7qrk3VU&8z(?~$EqK&e(M9iSGq?MYI4wXsDqifwhE1v0)GL>oDSAK z`}<`IVd!A^^E?41yqIzsg}vHe5I!!2R3<{D)X$H4E&jO=U3&8PO+153?IMI)!v+z>mVm5 zkz~isd-gYcvBc3OeG;qP0@5^t!wW>sK}{X5DvFipwn9vO z#?{R;hL25}u!-zs9QdT-e4i6?mgc<$4H1>H;}a-b;kn&Mwp!&FBT0tFp$?lLle<79 zVpZC9R*~cN>Sj&veZnc8i2?Nn;#v}D>3GVrf zI{jzGvxmSj70c>+d7~HnpmPEzRB}`C30bvutm#)-!D?QCTEb(V*-J8$ zlH%5YZ)NofP<=3Xf+lSbd+o~vNYDCWxv|^9EMsVNobV5e9x_pum!K2OVS6>*X0aEa zf-S}HzM+d;R9e3i@jL&OcREVQ+tFv{J%znRt_{baN~Qn1TK>CHyZCi+vn;Wdx|2+2 z6|pE=Sd3#<)Yj{}s=9MQ$$cnAmU{0yZM25Fuy=?L)a=pc0-Cd|()j#{!__Hof7Ymu zxN~cY(KwLFYr=*9KgbngDFX|LK^oYguwc}N&v07X=-XaGAx7}0HW$(ilPb{4^>?&U z8zDopiVAd7%I?7urAd>0xm?E(h-z5}ESd|S?}e{sx~-uGHQ#Db*YoY@9I^yEX&=TM zV57p}3a4+DfnRr++T0&B2n#rSy@K!S+VoJiv|rH)vLI1A$q&(=EclB+Ow^SL(iCYH z8xlyZ->=N7q$)|LpV$ipRHTx>IVk#1dhqcD){9d1k{z2f_sqAEKv(^Xr-^kCfQ;*_ zLBqS8NLh|}Wm}>YZ%lJjrRtQ=WWM{jxNU;%)7XGA+a%cvtZ=XF;Z%mi4M~>%pZ10C z#5|`f;vAD$?jQj<(mbP8>NGKI@iI_lw6GpR6>)2fb>`~4Wxl9vSb825D!smy6lWKw zp|H4oGrd^8b>}$TSYW^GFWATp-%&u{oQ-&}I@lL$p5NV>#Tzk;zJvv-XNM{wm;@K} z)6a-+Y*+rNc6DiUoAY^@-?93*fG(GU%nh_Ekt8_et-^ z`Mm?-S>HA8a)k@E_h4T7AnGBh z)?MITeW?lcijXK@6ZtShRfl4OcpP`}*~0Kd99*q^PZI`GukI_t?obkmb$qjWv^z;a z(Ctxs(zY1KNQjOW{?}9{FSSftjSB1#z`F=(1I`|>*VRfB$+bWpptbGiJYl~Iq|c6; zZW)HFsUseMJXeyp(?I?F_fLvXJ>U+mq%BL!T{o(|n!03W`Sk?WMiLGY71G%v%y_yn zT&fP5)B4W4?&rY_jF_~y2S@4cXswIDqXGqburI^V`p}7$2;wqnqP|hvOaVBg&_UM} zwds7jBcAuR=&Q>$fe}iU5UZH;W_@`#u-oMK;Fbu}1YC()W!g+42d#C9$1L%6VP7IU zvKQ(4?C5k=^1l-&Di}2{c74G@e;Nnh z*8BeZZtEXKAvHedE2+7lzBf8-jx28OSa(VQv^jZh5x~e(?JhfdWdUtbqH^y0#N*@3 zf|+O_ElT80n#8=C&or?;ObW52=3QH{ZFUbJ;902`<_;z-p22uuFwDVx-@>xrKXHQ) zvVwF1E+wv6`_uSKQ4n_LJT;Oh_%m)f?SNsmX5ySd=&@KqRO7mFH}p-i-G%e4S(4l- zRX5_{r31C;@N4Vbn>kj)2dy0``Xcit61Zfi-jC!EPjRaZXC^dOAgGJt$`u4XJaBtH z_Qm!&vw1LsGrTG@LU|dkti_~4pQh6rXwS+7e2r;!v73aEJn(Jdh+blE0J%sq-e*TZz=SPgGI zH29C8X(|_d0g=0X3`Vh%%=yoC{f*U;Qv;{U8{{1@s0#_O#x}tKCh41ppA0#oTT(M! zGb-@!$-qxVLZ=S5+51Pz#3wuRBwgADec<#+4J8v>0d?x((-5AtCza?v~8_xrm%XZW?&wQSiDz)U;eZ7_son-cz-#p?z*$2!0syE2<;Z2323m=qK<)QG35t z=*YXSYVy{W;3(^jK1PqpxYNnZL)}jpfD~X7e>B@eA_N-DCy=u1%zZaezJsxQu}NfH zWq^|IFDTv9I|1copOli_KKT78-6&B83zRtgx?rAHu$UfEHFum90X^k5EK8o5km4ux z`)6CR_yhSd$xrWrUa144APiOzBZQa$(<&;`ImTl_pVNW^Va65(TMgDqnQ|-^E?!tE zlR6QQaTFlR<`&dUa~%*iy|dA&DXSfWAYd=m$hbteT(DHgB!l|~6%!Ou#Yn1aLO|Tb zI6pACW`}FZjpzNd^Q+N}T}@Df63^wCixoj0E8*Gko~tgpzS^Z|1j25dNOet7T)ya^ z*WBkND|6zHuqPWvA7XohVUfB^3i^sf&iR!-n#8}H`pRq*$Id5mOB}%q{!rK8L6lar ze~@y>uDx$K#R%-5BWaAhBe^H_jEM>v%wSn;Ama>FS4#d=Ux;n3nA6{~o;La&zokG< z^wZsi8VFtwWZI6Y2R+9=n@T;H5L4}fqoEu0oj>8+^e6u;M&K;Ja{(jF0-T9X*TRPK zSq(Z8gqJS*63T8FLmRDKA(OD$3$qS-&(XyjLKhUXTk)8UrXx*=qKl3S8oU~Rhz52vl;eJa4o_%RMWM77<$?Qk&Gb_E??8jKlSE}%@3_2qlTY+@% zMp}&aOuf8he|`IVXJ(%lgJujQFw{_XaO;@fxaHs^%GP|TxQlS8{GI4fi)+3=q?o2? z)y)7ZW7bkdvn(IIRMpO$?DPfE)#~1K4Ss2A{O&o=#gJlJ=2L8@nr^>FA}NXdz7Xao zUR(GH%U-`0SXUNfEU&wwP1%2+_&tn_CR`oE^$#xI|L@XvXvIo&F)es}H6!KgJho3} z>&zF7%U^vn!Y#4z{9e(Vnv`m(clhSqZ*~Bp45p)WsUg|us(v^tKZAs)mx{?yu_|I+ z(nG3&?Yz?~;mOGR>}THqox<7JwvBVB9m<()(5g(Wg;NVdvgtDMUB3n8pX(?Kpe=5X z9msb`7ZZm+Gr-^`*lj{EG(wSXY~NG9dov7(9dWz337;*t>K4iw@8?`jZzeCDbJTD? z;)Lr3h3BkrYzBIgHKO4*>-o*{nM;NAm`F!- zT8n&a992B+BX)Y=JZ%b8-N|vhEVRwpoNn6lbN0GLo30zb_Y7Qj1#bBeKqop`p9A^h zE`b6E#@gPvkUo1&V{!Q&M%x#BUg#C?J5Mqc0N?BXoBH(B%!jCtG+4X!@Z|@1Q$%!yBC_K&KgaS zv!b8G@JRU$a_na9rAV+j1!sohTvnZJot(o7kkoop(7rjx==X7P)`p{KzK~P=} z=D&YHazn2-&2%8<$sm5pKNVojJ&u3F-0FvAEjiu4rqUlC;<{Uosh}O2@y!53WBV0v zQ?78tVHLxpg=1ioV=ayVR*18juzSw2Le}q;uFVOUuOlAh2B#^obWL%xwf`*-2 zqa#B^=)T|^t0`SS!EblBUfcXAVgM&5RV1|1-LYsMAv;%~J6&hO?E zu}jkY1CbH0qQ767n+djUHotZ`5(!mYR+Mv`uDHtC4?cl)isNGc_1%LhzZlXrukVxvFBY@oQNgkLa;PZ)Z{ zU+e{mosj^Fb8FMtCWj1TMJ2H9f8v9n2*GL1{iqirB(o&weB=g291LZ)g2A2;Xv*JQ z8^M^G^I{zejRav#SVmUu%mt|~z7ZZw zllHT7e&!cnYj%sFSP@dSWf==sz(8R}W7X)@kY^HgO6Rdm;^Ob47>iM`zxuJevA*Nkz%e2IeZ99-&T} z=W$RlW@M(d$6-|+(fB6_wMg|-9o%PEUV9n%>b~a6Yya5v>JWil6BDxLkVg}UJHQj0 z-hgryEM}7)ZvCULHvTH8HnU*tyx-z})|`l9cW}9q1vxxzCUM490$n%A(p?yfsF9)2 z2tb}Px?SS%?;GtvQQfw7@2DS3amf)P*VZI44Eo)Q_|IK{GXkIL$e~|55+JacZLov` z$uMWRX!l7cM1gRNu&v64hB<=}Fcw`=IC$|hJu&30BwFkZBy6DFzwV{E=V7r+h)NLF z$XpCS%4wyY+R7^NU05K-Z)^p)?4yF>W~&1dd6i6$NL6Cc#JTRUh&;R;1Z_N<8LC#I zQwsrNYKc z#kS08UQUDRs1Y$)4pdwb00hRAA}|(p{xV8yx<0+ddrY`q$1}4i#!!b4vK5RUyY+k# z^J=Bm`n?ROwVL$A;z|yjij(+_9c#6jhrFLbW41O@Tn#MR!Zf8S`22gRdw&j(ov6Vj z#ev}3#pSWN>Txfs*`Q2;TTYw-Tn6iP6D@ibODlG2}DqQniuG^zd6MmLc@i)%)e+X>Z^N;)nkh4vu?02$JVs+OxW}+^_7psQoCR+N+#Vjhkcte!(Cik!0<2`w+0`-70(Tj$1(~ig!8_eC@;-Q~ zX0?;$Xh&v8srQUgpvnjX;Lddf1k6;xwa4Y_+UsYo!;Ng}{I zUmpwXJZDu=U2URufJIpkSh8JQbwl#1$S^@EP;Vw!I)v$0XEehm|f%Q(WiH1pT*L3 z?_@8Op`*n}%y@vDp&=92DRM)(cMAecE@sAqIbsh@?&8qiGNO40MITo*a(3~bUQ#kf z0;=FzP(NPZ;Z;Q!<`NB4zDY(+O+4r5C+*^D&vD7_1dhILrke&71EuJrm{Wkoy{uZ=n`cr@|v)47fU4oIQ} zdQs_I{xnc)oA(WoM-oBA)vX5axKN;nTaX+UOCf%mq8Rp1yT^*~UIQpMpUDYh2S>#t zj3LU|p)67HjK#E&P5aNKyJfP`-DbNLgv78&kY!(f`Ir!P@I}n`%R2mGs}88ivCo+p zS&I;?jjLejk6hKv`TCSE6>8HG+;pSd;?J}bqW zyi8wP{Blduoeahi_jYX}$xxH3+LudjKc{lgX)eKnkeSBVgi-wXY&$Y~?IZ-(65Sl} z*vIyMX%Ul*^SL^>+7aC(7RFmuN|i}2uSNr_)Vw3F_+}dy1RKs|OHZe)nLvh>)X%@1 z()iI>U1JGy#3l+n5c_bnu%CNG3=PAc{$#$B_lal1^D3XcK(3SAou7dkhD$#M6(F0r z{FdsbkE=H6!f|Ei^`4WR}kMAT-M2|puFgEZthh7Ga$~UXT5EE z6kI?@UI!IKHmVtI9I(bq56c7E0}Mhh=V1Ge1mTg=Tnw{*w-m7{6%b%)Lpi~*6~!^5 zq;%iZ15X0qVCKWd-KDt_H1DA;_3{4p#qjwt*HhJGBWME2aJ_lFUTMaAhU4*2B&Mm} z<&GmHFUD21Wv%Hs`u%Yp5<+p*dA(PztL_a>Nb17XdV%R97lV8%)g_Pr95px0z|OjmxC6iUaw@dk6m z@wvAZvXzFFI@NXx8Nwm_fogV=2Lw64w50O>Kz>_OGiAN=wJJHrqA2KN+3@F!^pwfH zo8)^1njdh136A7R9git$BqEH~i0zmDjhUgM zBiAgLC7wcyB>4SMV~RJCgs7vfH#uKRolx{KS}n0tt~b{f3_Z90Dnh+k7JBm5c<$6D z`=p#F*LG;0s7HD})VP{L7>~n_eiYJwo#wwD=wVPX@myDhT#k8Tp=Zb5g8Bunn08DW zK6gt(EP>;ipnAg~w&~0U&w6d);7=T<1JVu=PtP_bLX-HvMVcWh)Oi~?%DMojj$r^# z2H;~;1cq{avIdS0&VmFQT_xsSh+NbjMU#Je9uI>zErlfzlZP5i~;G9^~l?w0wM z;=&D4<1*VGzd6`!!cH>7<&6)>qR&=rI^9Jy2-gtOnUxNcVDW~7={^o|O~eb<*N4Mo z6w+rlQ30{#)g(SRfIP3|VdPcfDcsO|&bMy~6J_0X=Oa~v}$nY26YYl)r zLWdAGmU!fxn?I9&?w>=t%^2Y8+u>S%nB8HJYLAW-(~Pc`?&79*K#^fB=3ERHSY>O( zH}_=V&Xlh4TmY0oa!B7<$$x?^cW{`HEgZO(j9th+9y3X0b6CV+gXpncGgLf-prrb9 zYlBw8Jp8i0Z?t`FYn*v(HlfGPWtBVJHOWZ{`(sy;FR7K=GIpP#%njMHeyp~%C$%np ze`CEbI-lyi#W-nM`t3o`Y;4Buz9(jk&L>vP@8%BzU;7K_xjcCk@;zh}jEvNxL)^{} ze3dQ5PvCV(Q)5f7UA6EWC6pxx28rqm@zfUfD=u`ZlA7)j&-k5Cb=fu9cDR6pv4p>S zwRG3@J`O5$Z;AA`PH_2AN$dMYjawVcgE;JAadOjN)lxI+Ygs`uP{F#>W=s3KMQXj& zJAhON&;n~I;&FN~3`Wr!@d+bzWu^CV=PJG*P7tfCDC_*n`9A9m9}pWRWWlSY0S$s2 zEGCj*oMi>iaSoS=$ZG#IBMS?A^j9hA8uDf@4MnzElN zm%~wmRRK=BC*am3?(~f`U^eA-XwUjbn*ezj4I)|bvf`NKV?p>7=*I2we!-BFC(A4e zm>ybcu+{#)p&kk)C0wTv6~Tigz>^*;8FUR{oB%^D0IlHp>s`88EQc0I%aCMhMGdS- z#QzS}7b_auup?!KbRv{UdEU6??uA@{M$JgFyjEQM?B99ax|pNZ%y0)*t_y?r6vh_Y zpEdYzMTMTI8PE%%FI?etYOsSYJ6mRiw12kBt%o39lM;oDrGnJmb#7lSG+gh3%1f|ev1&z?WXNJ)H^4>!POSomi!(M!i(VB+b$1sZE zE{k$Pt6DrD5IVE()Abp{o705wD?e({9TBFa5J=l}-)lJ*4zx2WW`GL5+&0~<5x8kLl*jrK-H zMfe4@|5KL@B`Mn2nmKL$3(`J4<_|%xv7J-Ku#{ujen*WOSkx#sLh5(l_;D}2&D3BL z2YE$sSql{KzIw0$cpywK9HO2vDjj{63cTM~5L3?SjQ|vxE5e9*YcQ3&)j`S_Vw;65G8yji0IWH%CLa@M)NBoazaz2j-8~u|w#u`HMG7 zIRZgt6k)0?lTE4>cM`rB)d)d=aule+%qm+)pw4MD%q}aSl=N3Vs079eAi0$6$A@-_ zly&$#t5g_G^m?wVR+7Noui)6b=jla@h+V{8*N>%;r*mon*sgaF)Iz!~LFe(RDwg;g zu-iy9B@XO2?u9`G0QsnNiB>XNDpd1e(&zp67aKAmW8Pwa%j4aF7oTuG+PAJ-T|gE7 znG8v%eeph-m|Zo&r%;Qas-%==I&OoqtH~*FSueJK%?TwOGtd~}4_a6O%c z*lm&&{(N!u4gqeL<*Ov-a4p~73lO}qN*&a?mk1kxGCfKMck3K}Ph2u|y^3WEAuC|h zoX+ry=l>#`58asL+NSUJ?=GX>GH~+`3!1Z}V8g=;`2dP+JTB$gG2(AaSIZlHyJH6? zZ(D`!_?(tIo*`tOgbpYlcA<=FUwK3+^M z8vn#=3TCM4kA8}JSS^`6Ar*}5D{Wr97>W{2sQ;J5O|PaLfNjgL5xJF!w`M)6bT05o zd>Ja)HlHIj4%Iq^h(Pl@0czWB^6#SHxl>t6wXcvds!Ls_^dfHhv>2 zR9rXIaX0C==MUp5Q zCeiwi4Om6mx+qM=Cg3YAm0<{h9+;l|Ww1)^b=Jg1lddGb?h(vlw?VgT%aRa+4-*}j zZg$mKxi4PF3p)6RO}3@!xw+k3`t=Ie`-!T*#dN4)S+=NH)TDXx(P#Y~ccTMMB$iYn z@%XrvDsb#o^;w?EhEB+2Q1Vu_?}ei_Vl+nP7yotv%gj?lUq#NPoySvGu`l!#^1ZY8 zqKBu2zz%uA=^_NE*U%C6dA`gg)StSt^`gFqLu^JROzdMp84s% zKF!=+HA~f7T92uwf(RI5cB|K&KIZ-7N^PC{f zp0uE8oK~)n)S0_0tAn%1_SJ_^t>9*0xaCKK=o3$7Jt19biIIMpdG+a&g* zjrb;f`P$!WDHnF7>+6d8i2^P*73xIqODqt4t``sNNA9jyRK59r!IQJuSVA*dh=L-jhInNp6I&>UFp->=W7GOI=fM+>^ zj)OpXhGUp;mRUVAqe((FGSa&IJd1X_`$WF=_Y(GgI)_QD%ttwgI?$baQjo8#`5eI% zB^~-`*??_exh-*e6ZbFH?a>d%iWeqam*PTc(=SjBgvWX(gLeyc)SB5<>8wvIgSI@S zKRn;xLZ^`TmtN*id1JskX51~e@&pAb)jl)jV_v=s*qHXs%2x3C305{yR>#Qd$Db|H zY6&lrl2-nm&h}IVdA!1hm6@t}@ZVzFN7L2RLRs5$IFr5z{ml?P|D^1pMF{{TO($G* z5Q4LL3uXdXdXf-$+%Auwm)z3>+l%HlR^RO}nvN@YNZ2IBO|@pB#d$-mD0VUTmu#!g z#x^B>bWqfD_u93F z?;?X6?M;K=nOIbnDtz%4K#y~!fzbHN$^y_x7-UW`0cWQPxq2p&2!7R|1bU~IWjs0R zlsr zYNTwkj9Fu&39f-m|3F?J`Qv<5-Os1o#6g%}C_+(;1zh5<$Y-i?Or0GeUk~ zA8?_wI!%yGwGi8%5mz93|R z)47*|Vxspq!LtJDs4->=^c6;kcK7p(QdPzv=WF$z*xQbTFcR|rA3uVVow$);BT+ng zi>4ATGw5}F*sU+d1`FE~R0imk-z=mHc!-(`$--Ob# zPbot@r_uF4NLOsYcb;f&$xX#gH5^}kZT?HD)TA(Xo}-nKsX}9(U&FSGE~!G`sb)#t z!|Qi6%bnSgsN4{L{jD6WZLtflU3-r=$(N(9j`mWHbK(F_nk0vNNmxS}(YANdXAiV0 zqn!p^3UrLP)9p)>`+xRF^?iki5eoR&R4ty-QUW3Y6>lZ66EfKTLyeYR6o-;+3yV_0 zgX+plps;tN9<5cwFh1=@0eW|~QL{KvAqHiMRQgd&O#FBEY9V>opSpf_>2_)0#K%Z( z-{$8F9hMFa(Re;KH!4_`SbNmPf|N_sl_tn)rEu|P-F^#DnA7Nr*#q^Ai8oOLmD2}d zm-bK*^>V}V}WbJCHeIo2rGQ2eKI0-#iWdsbQ{5+CQupUVPe;=iAJ)yoaQtM$NZAUFId8D!{J z61)HcB_JLW?}Gr{;GcbJ!dphd4^p~vI{T&Ggt$T^lM7WCC47JYgzgQnVv5?Naug30 zvW8Zv+ub)T^&9^IT6z;1*G6JP1+t;Oz8gLM89J|56;p?8MMREqLaeSiMc&#Ym)5dGuNh$Qt1MNgBR^FXbLm?hSRWM-b|`;>5~VRCI>Gg zt^sb(&Sa3$GjOR(I7Rw3r(-K(*vwZ{nQ`xMT0JWC1rSs=Gg`$2;;q_PE;_1+Q#u9n zA9L*&fujh(sH&OtP&g~ejQ;@5KK#4$ z7Qhx)2nDZ)7a=oG-RRL#aA@fwb6>Fg2hCKGV)pGadTw(Z7Rc#V9MO}&FdhR9++H|vtF<2;Qrs+_QyOI8R>k`2waX)4 zL5p40WIjGNe_*FlzS=A@04TlMQi{na{lN?tks@o`Hp9$hCX_vcjxvG z&z!HF=7m~68R-5ilqtcHNv(u6Pe;uFDif#ZXZ@L}f13PB70~H1!xn(-n2-MTwBIoB zAgSn({NAlE?J)&z?NSM_NZ16LER!Pr*l&yqaT!343N^bv-y2rHLw(yi+(I z{Tl(#|LmXTC@m(YwOJ!^QFCQ`Nw#UaFeO~5Yx7889;?R{nosx*M%n)S? z52l`V?ofmDL}p+`gn$8-Lcz2RA7tLnXPO6LPoN1Sm$0^Nvq|8B*IYHgEfYJY2@?fS znhLnUG>58$DHnkn6)e^QfkfRRvU~O-r3Fb)zrH|NM0_uN#kU$;roua`(Je(w3txueTG*_hVtNM@ zj08}@nGxNvU*VD(UgB+)E1qj)Y-ujCLFB!>V*+K+yhp@|1}j3J{7i8&aeS%gCW(a(&@u!3r*#?vENu6d2f-+wz>}$t z_EQ+kST9W;&E0w6OEK!P<-4 zcGFeTvkG(d%V{UL0NkCC)7^X2V4g5ZwQ7iGc`iuB;+aU?c+wYAK1R0+=TX`%k+1WNCvq=TqR z0-C3ot|0uS#d_)VU-w~UIRwdr<^*n9j(+lCmXJ(}F6Vs>3e5ygTC55nBh&@b`;myf zf<*c{rGqcd%pj9Bo+lgKyP# zjq=DZE*mvvD`ZJqn-MkE<6p^2NQJjd?EMn#i{iMfabFAOE&Bpw;J&>!^m&nSn0i|( zh7{~3T5@vDBsp8XPYsdmer80hZfO+kC_Sw@3e>y3XHCK9-T&$Eq|jYBUEQ&1nv{h# z`(*_z2=s~K+@>|38E{Ug{Z6U2UbBg!_09|3>M0NEHfDQl$c`6mk84}B_3NnyGc2P4 z7Y)tR$CsUpFBq{8>Pu8C4Td6vSL*NkB8_SQe1?l;hBL7s>X|*{EjukOF|eOeopSi2VOffMeW4*7EqJsV!cNN4K^{*l1pY z_{#hFHA|)uB|(wSCD9>dM%Bk&mxkA`2ACumDsPOs1k_pzxiSIJs|??wo`%U>YIL3R zfgjxU=~U%{vFFbH>SZd}!-VL{o>iJv9SlU{D6AOJm}ie&9UU9&^AX^SBXr*{#4zH2?&%XWI4 zy{unqYiqeFEP^SAm4O4ZS5*^kZzp14mdE#WH#QGn`8p8; z(hWZ2JGjB)G6Qx579Y*3cURo3@AzMbt;- z!1D39za-b!Eln(UzCjG-sVL?~OXsFuNW46g;m3DVvqYo}k}`CsgoTW&>{Ma;G1^qP znC-P`9N0CJ$dpMZ0)OPU(Yo>9=M%JVFEepH%UEWu9XwN6_BY((6z-K&``q5S&0N z#v)?Hgc8IX_W_8*{(Zq91dMsdYPsVNX1hs$g=@derjc zG>nWcm~@)LbG!lpsy4qHDIQh{%~?TBL&z8@yt0j`WFh>yS{O@p5~`7-2Cv16S_RO^ zWhV1QPjk6DAQ3YgS!eE&ANfHYZAn%~vg+)$oe0;by_`faP2{){mDho4_Y@>B0M9U* zFRgM)bpd0(*ihBV!zU*aPfUG#H0LrL#K02jV8B@3DVc@Wx#bT;jpG(GL2~TrE!lWh z!9`F?9l~3eJHXl!d60bp#5r{|pMov?K7xdWkrb4Myf=Foz0vzg=G zGLo672v<&FA1u`Gw?Xh4bP5agO8fs9u<0L9Sa$*cY=p01@27VOZ_1~~UH>enN>as2 z&#g&3qT}%m+ttY_T9i|PS=QFUVSru#j`_T49Bvb8x95A~7K$8LSBX4cV-t97IGw#p zvZwkBqVezPD%Q{V=FrL>6-K8D zER1_dcozU!=e`!)e)!ktq@60~En4zV2w}1@(#V#( ziKmrD#&bdSYa*$CjFgI{UnOM!kJ;D$LXbIMTO^gD`N^pr7yna$=H2Q^x`X!Rtn7PD z7pd12jr-T~Xe{FGjfa-anjWS#onf>LO)0Itq|=bQRut|qI1X-s>!#MB*7hfI92@dy z(D&U@7Gp>_8k8@H>WqUxlHp_m$xCc#pvCK}=9Fo_-UZp4oV%q-ZO8q-$^EfL)}R0z z)#-e1nn}}AucZNM{SCdy!NW5ocB=4*^1%&u)e#5hJzkdjS9uoQ@ei{R9&O?rHEZ=u zMGq~e>SQgpoAa)+CTwm0M%%qyYcuUVNOT}uCIcx>4Ww%8GUJ@dbDpnD6=Y3LPR(fo z$BjBFC9!6+M-b2O*NMG5^KnI7`uO8rOcxhncF~IjUV0R__WsjVUXSXv;jH(`Kg*wh zowLBTU6EX6Pl%0Byu8qoN8|u+f>)Nf;xb;~(wdEeP@Yw{f@~>y&%(uhEmO?*gzyP; zH5S~TyQX&pTq;q+;!Jf4|GPEoYIRTQl5E#=%|lQV*Z5rt?DSJt*>>;2JTohS+91Ds z4jIF3?UyZKG_VWCOlxDz6wKGys$QC@V8xhX!eC!Opl2$)&A{dUW5Ko*CIxJ15S2P@ z!e8DFsGXwBe4){ze~_#nI~BhScUN#RT+LEY`Dg5aR$)YJk^)@~covTMsGWQbRN7LO~H8fm_48$IE z{+#VOwRcps2r>%5MC|d^)|TFBwn3(kI$Hdy=^j)WqVCY$a-{f<$OSRabSr&)U!HPELqSL!@5l?V_E(6y6MDl{Cl#JWH~UOdBz-pP zBLZ+6&?5Nhw+CocltlHrx2**1W;Zp~u3XfpU2WI67hD#=ZfuO~mGNK=hI`Y^m=yQ0 z;Wc+o7#DWQ*AppKO~NQBQ%$)R_&48IMQdY|qveCFZ^K*PVh^UTb4HN7z!Jx;rHVPd zA_`%s%njqGVg8SXIZ!Ni<(OzWf@$t3##lj0Gygn-i!~}&>Z>yXb=C3h5zKC`F~Pol zy!Mu|9iqN4sLF`N2Q#_?YioBd5!eVRMD6qC&2|a3|5n)j$O=l(Vx(j8&|0fM7mGmxN{||skAwtCRKXwACtmCPUqA(bLcer$D zOZ9X2vbnF_B0{Esyo++TcpiXO=aS1<$wG{~NV4r@`7KdtQ5lVZWB`<9ro-$$HBaZ@ zwwroWR~9&=sjAyIqdoxtqVcTGT3;-N^@jr@L=dcmkafOq#~ozYbKx5@&Iw;!rg%im zbJp%^aux0+)XBqm%+357yE%CpEe~F2rDpRwOpq1^*AK&^?{$5imfZAT@GjaB9i2tYb` zCbUA2kHy`DUuCibq>yj&ko2{y_QEblgU^>~r%k;i^L!?^;#!EE^E8YsS#2$PgjN=a zoRl-ihx4{?>0*0x7)a=OYN?5plt@mcfMN~MggoTBu-zk`g)^azNWcKP$h=KIX&@!$ z;Rmh<4xS%lLdUn8p19xW3_b4Fit=+zH_cv5n1IdL>;Jh)%g$b0Aj3npkS9*_{YuYp z#Q3#?5w&>t#1DFN=9~<$66+YzA|iE437}KUd(meUF6y_P`WJ#=f7)Z|@jGyEZoui9 z_U_e0a#foy(-bGxA^oB{T1w4wrul&#WeJ7A2~Vyd(+SGV4x-GX?$+cxL_&=U-@kN_ zdU5jS_jzry`BWV`Z4hXJaL1~A^gl+dA)8K(V=10Tfi_nQ3+i3n&^G5GF>Y2|eK(Si z!N$1CReg&d{n)&wv6;S!m{Pcsf^-=%C7PDKCxg5&a#NoVT3}6h^hLEO=Tds(yjfnH z)CYb`GvzTzZ;g*(daRGHSFJ2xG7EKjEKaHkI?3(bxo{^gv(#Q&u6Ei^(aruNB_9!9ow~4gRx#JZ{AI>o8PZ5p{;F4=45dR?_#;k} zweb9FJs~rjy|GYJq2nM^NG<20m>U_NT7#6`Cgb{8+-05b^W9Z#RsSF^K=7kj6ZNoU zG^0vf(nSvl8x>#--;$Pf<%(jh&+>MKB#})91?x2j8!7KA;-!?+5}idaXj;a3U6$jZ zIb*!t75VGt69|sm3|zCJBnKbx+-&l2+I%ihmpXWdMW){|w+dU~{K8`@RtLV(BGS1! zjRFzRvj&)+{IbLNA@hAp%uEoIEdPGeHc6R=Gt66=u5c#HDj_w0hG~&&a=8z`Z zu~c!}6U#M;;-3{tVJNy)4b)z@j^m91mn}oWEyPOXcKdY1mVaTtSOZuBI#nvw2JTo4 zB}okk$WA^d{IruA#6qj{kay)soxejKL@{GnNbr~-$$GY+r0WUH_q2t-MNp3X|K-Bo z(%`yCt`|-@lXF5R4Y?-(#T<^RwZE^I4-0WdEIS#BYP@6WCn}%{b6<3%uV?s|L+gP3 z;EmEg`I3ncWVRB`Q-hAaKdeoPVGlqy^}$zU6s#PcL168t+h-3k2W5i)sk2=eC$Pi3 zCBs2l>Up=QtW{c_fyXaopXktYiVmZj;3r^d+Z3k**^GP|Dj zN}(=5K>jp=S2>d_ z{-D<+k6vm$4ShvadL0C1#hYppi6nu%!HmU;t-9nVt|IqR`+Ih}MrIIu;7GccORGKj zXbHR7@>TG5{Z}~t`mAmzczWT`*mO3b#UuVF=lA)5?=Tw{>a*gJhVXhn8Lbr4X44H# z0S1AnXsE)mb(5Nu*?Y@DJpdP7ZG;M~P$b=IfWXstbC2ED%c)+;|LjE(bWIq zM@}#Ja9QH=)G&sS+b70j8{+FcWfos_ns=SY@ZYn?Oaebp^N+=$yxZ_^&YdMW*cXgi z6`Hw-mKQz_E>O&q)4DlT0fdz~2O>=QJY3?a?L+HJy3g)Rlx*sOTxReyRDE znb2g`eK50mzR`-X-heHPW>evf1otbqRhVdH_4g1I&puY7QG2eC;;7Ly99sv5d1PhO z6i0(Iwok?ur$$^6@o^)u=51>=$TldTkb0{PJk#}bEd4$AK++n`D^{o!*;Y=6;x0B^ zcac@q7{nuGZC!;JA4gF27%Qqs%#xAtuFV3T22b@=a=YXiR(JY8>Xlkg_J!+89o!fG znPaXEM=+oW)?07w1_-`39DHI%$>{bO274BnCoO>xDpa)Vam)#j>7gQJ7m{VCZq3RTwCif^7}5p;k{*1xOdr+9go6_EHpV?LeNZP;+y~fojR>#o~h;^ z1}xM`bQe?D)SZh zI???g&R3I(mHF>iihbK4lOlVSFL<=_BDhqUN&>hgu65f+$_F#($N!4#*V$sG?spL! zXgU^#VaA<|#YLRZG}ueTC1!;<8@FF$)E%QQp9b;8OGGpeV;$z1A`2Kp+z zX-)q-nOFsJ5#kRS#nLhq>O#1I=R$F#E3yP=kcsjA53?SnMa*H%u0$n5UIYn&G}$P| zJanag;m*CT)}lsOz>10&3S)v%)BY?L?ZWyE4~=BAwE7HWg5_YET*CkJ;@2R!>ZItHW7X@lOFB^gWX%ZN}KTV zOIWTVFerA4;OFykjr2U6)#RApv0A?ziZF_|JV_e=?axbZ*#uO}D1gYHY6BPOeesix{>G zxW?B&+>;U$gVUr!#2CnV8H(&`0EcIOKk*g~Ib_Vp9em{vFNkW{D==ND5t6IbzGY0& z>Ds#Lt_iyRKW@=kA^8I#?WSNS7vdTi z0`2GOvYuqDZP1mKHIbqiC`*d`3NbR+)uQb5hos zGGcz+J4v)nej!I{NXPgzPeC*sa-6%Acv-ejw99ADNHQf(%{rCcwFM#O`9C+0n0CHU z^MKo8)yW*nN^+Zo{i;v6i3*ok63BxlfB?NY4JbEPC~MzeclJCVf_pI7!~)~*R|IJ~ z_S|ao-gnjIwwe`q1LGIqv?(OrDVx80APC`e22gN5^>t$$t0eGwCjtAr1_oYYr+E|+ zqlj3<*6wr3C*lE(9GO7&>T&qqbytq;RVar%zf)DZIOf@8vsQpx*!GSQj%Ik|MR))N zN++(@uT^3WK-FH-yB!SY%PQXO*lgp?7nCD%oihXzx(Dn^uH1*Edhw)JJDHm?VLX8S> znJ(Gup;G^UMC@2(BP>k}V%{d!->FbnpJ!Dw+;+W^cFZr!SzWBrA!~U+!Q@{eZ;LuR?4L$-GTQA-Xc{<$Ed^nO z6>C!k6RFm)n!HYc$Ttj}?gPgqyqX<@HdNDt-pkP4ivg7-95SuJ$lrR(jA#OrVRCeJ zD0bubKT=X#<5eLhMQ$As{mci-2^=yWa8W#>^~Quhd&Npm_e(pwXuYd-BD?|;iRaFi z%tYp2|M!RBwf(;L7cSAOns=D(TN@qzSn0BZugyAId1l18=ADPo8qQuH=%xg#1st=M z#$}O6?UnTCvGh72U`#=eK+!{&+I?_61`@#ObNT|PxcQOtB5Z3t-J4N3J^0rJbL}1)UU#y#)&OEvAEiABJdHn&GRS9*pqxS#EvkCjc^d;VK4I;*RSW?9rB-!@96wzD$dU=ktba%T z6MhDo5_#nAVG^UZ{e>&#*0)@fV>!0Sc4jEd$QwBtt-Q& zHRTe9Dkzj-$JS`Qy8%$1+B95tc{6^-d1ST25g{?7v0HJ%OP)kOoxwM?C@$yL`Rb6v zt%Uu+DKzPcbnZ30Krvaj@JiO7D!f&Ybre4q8~4;cBOneyi~#8BjlGEXQ)QjDX`=ay)RSXe4Fey ze@c215e~r&Tknj>6b2@c~{fu$ajk`nNSoM!rOdyi3Jp8SWWuyo*nj!e2Q`+ znWS}4mmGVAiN#ODwH#V*N5L8y_T1zbs76de*FDBNzn%O4^L=DY`yT5_V0<2LI4}X? z{TYgDt|t>&83nW$pleB(!AM%ZQS2i-LX`*ChF3z{}2NP>)Tb41SfDGL(&WG0# z{_e9wq~(^b9ZJTTThRl}B&Q}RHnzz!-rp!s6hV(b)gP}dO5xUdw!%G-7+>#w%MfIyT5~U;M7U(Dbq1)9p{4$ zEHQ#<$>WQ3w?kULY%Ko*ABtUdyW1<^!hln4O@@eBFVI|}kr6X?d*oc$zZXp11{}{2 z3-z2{3uWgHedzZ|3ir{KNYys6DcW*^PD7)@o10bj2}#m8=Mz+Xx<&7HN|cR~^k!lF zKy*P5Kim%iWze!%8vtLzu@?8bZYt4TS-Ea$QdJc+Eh7jn?G@>G2#Rj;+FDc|?Q2a2 z5QJ^G?AifX#RpE!582O=HB0Y##hwcDYUxuP>f^)&mCF(j=9GsJf$FqDzk-kgbE z$JA~>jrcJ(kI8<0DSpQIFmuiitX1rzi1mh2sZ;(&xJ~4|B9+5hmUA}b!%*N#AA{t z17M~_MkN%nXuey5^OVv$5TI2pE%pDUd_ZB78+v?PNZ#c+Zy!=AI~eigQ(51irq>#V z>75+StDHlBO34bF@K0)gNzi*JGbe%?`@!%7(R~-^K2r~Fx{Yngm*6SH0jGR0Hf1iHj^N@_jhu~tGQ%P_vtnvWBNr_~a zf=^Fqi(NpZ9xdW>WW;ig3mGw`SA#Er{>I|my`7KlvV2LtzP_$~K7H)ZiF9aO_6cJk z*QK9CyZiG3oxtT#=WuyZVg;f)JM6IGs;&W#KggvM5{qeo0WHi@WlN4g+iuFd&M=s#c#OJ zpeVmDn(M3)fo|MjG}eCd6uWr$qOkcx%hQcrGA=zBsJ`$!#fb1q^;z+8Mf?&lAuNa8 z);9sE{^x=K%!xCw1o$}llSIz*6=8Xh&h!56AGhDaIrKrVM>*SESyl>2?3u)~0_qh3te`q3RM`l^NdcVRs{d+`k3&tMK72P4LjOT2Wmj7M<68=qLiX? z+^$b0*2rgLB@+qLc$Sc)LbLe<#f77j+>QjfhUb{#r)LHU^^ZnXL_vGZ77DFy979Gc#qx?x=iqa}n z0bVOQD@Qyla`&j23CFGrfT*WR&w)C|}1FeVn*mKr5R$NrEMdg$)Duc#l~FToW1 z9?u*Q_bzN&KG?Cw<7j`2s^z0UV3a>ziJ_8sAPFjNS-<&{Jw7GTC}{KI_3J~wqtH}d z+kub`uJB6*K`!q#vu4^jbG0I5^xi`a1R_o-)t?SuAale|b4aU7U)k}J=}H!6c%-O2#TPM}0q$VCt3>H&O2;6O^5@8MY$aby%uxfRB`4XGk}5U( z)-ukiLw7$#L&*i8_^UTVT z*9B3o>qoK=<88h({RrD-R;?OF%|;&->=U96m!f+zAEXU+BD4 z^0cs042ZfceQXWvF0S|E10~MDNA=jWGC3^OmOg~%pug_^c+`UtYjDAV0Wq=Z_=R5g zJwv(KJt^B9pj&v-i_m=vQ1Dr5aUT`fP}%@lMT<{tatTf_o1oq;qZRlKEn?yAhv1(1 z4PI})+SwNwOgL~<`>10g#>iH7$F_38k3%L(5EcKm-8Pm-hgCpU5snDd6rOzm$z3=! zKZh*u&%0oH=Tp6;GU^)q1hkM94=rIVotzmyksoO6HwY}oI91V5M9bllDFHwjtcLwcvo5Wa|J2>6)Wn&uS zRHZhkO`N3b;caK6mP}J=Imx?U?th6XDuBjCr-h3D^X$;|NmiJ^=VPOLL) zYo#cXD$AxcYGLyBJ`8zB2K2W+1iY=b5%qvawfOp^W;7RooMd0#&z|}BdXLB-_V{~T zIQf$5e%v>7n@^N-1?YE4-3MgxaexC%JQr?tu;Y>G!w~?l?*H`$|6BZHI{a2(b#4*I zuN~*0#5mgZ%PASL30|O%g!4Yi$%5R}DXk9^g9JncN=Rmlr(FzOyRP5hD6Ln`_mj{N zE?SOegnp%eyNw6KF`g)U#Lt*y-=lC9AuLzFrn>C`JBX#mV&r}<<2%eelKmL5oG_wA zq+NBp9zNvVXQsrt^dt~TIiPYPX5Dp*4I@sivlE=W3%$S@7O1RR;|A$$BCD7Ozmyt`(Q}6pkI}@-{-98&n=7 zUyRn~0x4x|+oQmBeY(AC=8D#Pg$2@X!DPkIFk=i+iA9D(hz57QzclNnI^3y4tC_#_ zZ45%nh#S){ve5R#e^mT^Hnz|dxP0A#XRS$VNz%JD} z4Qe@PzgegRroyvx>D_0zW8{Z2q_8oIm~%XRKm`wXMpBvaEsyRbafhfq{ESRU0-Htq z)IXZzYyjkX#=oF@eB7rK6JZSnS+)eO%@o*>+#^V?hU#`Btz74cM1s~P>!g>S2RL_k zgTdtO#@}I)169Rc`!8NuO$ZNjTPCqco7EQlkhgYGN;VgT_Q(|X`JL0mQk{_^2K|w- zWyeCGLFKMD3;JO!&THadpHWmf6RR0=3o1Wnk-$YVYC^9Ksu}!97gcixDI=T@xu6Zr z$UY+H=F+R-X8WJdh*#LucP-LdoqFg}^dva7h)V|y<-^s_d2(mj_ME;i6GAL$L0bp- zl;58*+KNfVnB}f?UJYPhJmT35G<7#JH<@a{AI~Ak5_jQEwR;M~o2xMkUiiImoHWD& zy$69I0I{ySnTj(k7!gyrH*NuG`t_KEaNA#^0TugR1aCdwJWE8zIedYVf|}ql`+4(} z-VM9m?2L7K%RgpyvAEUH7oN9X$^R2McMx(j*4#}{Wsk_q==6*AxZ;HNMwBoJHuUJX;9`Ib!vi_VwCK--2&&?+e~&tW;<&8i77<8} zJWSm-Yf9E2C6;7AZh`Y-KFZk?T4}S=#VDR2TQ^gS4MFBf>yl0fE!JYTin}#yPUPdv zQE8{tQRmRZjZMz>G?c5Dn;jTumxjuII3b*mx(^zZgxxXN7tLkN#xU>uhX$;1Msc(y zNJJ_-@|`&Hdh0GI0fg}SsnQ3^^rf7KU~bL8jF9&$DvF(1e98kiD(-#s9`#)+e9H1L z;*~655f^B2;0==foCtmoOIgz?1g+5a-DYUuBO3HF6>aIsqgn^&h7PRJ{!v0dw3$BITi|pk zz1cNJd@DkI2WgK(33X3W)Fe`q15SORUlqNy2eAi^9Ct=uVSDoo>$&&QBhO2m2$lnT zwpU{ZEu3wxvs~&W{d{?YTQ#pyskQ}+{1{*>PC9)M%skgVrp(pATm5lEz|qv`3(rGa z!JL(|zsI)32G~ZSNB`91T3fXc{sNaVCBSi8uEvPxE>S#js;UOcMV1B~jajno;Q~>m z_A6eDgvX>+HeqBI-(I4KPu`Qt8f|9k7BE$sAzTTKI( zYlASW(lN9c=H&h9P8kut%6Tl_(nR>~=l*eUyWU>0VlO4;80C&F)+<8sl};x7Bgx`H z#u5*wrIaWOd<{QKSr2^d>g`xL6%jdmaGqHX>Yd0Ym<_T-g7t>Am=5!wU;t!iNNOk~ zPf^CLzGq5s2>KVt8!kC!*#GE2W>N?B9J1VB^h`As-nQ}kbPe0(p&I}xKaBmaQ|**D zr5w2L`gmkDThq^$p4MH~9<2ptV69T3S^~HSXs4j z`mgfoYCbRFRPET=y~9inicf<&R^bmF9de;l6eg!W*odKR!5~r=@e4P^>w^U}y3JF^ zbz3E+OsR5u75?yonYb}Lx3YCB9dc?kw>Tcasz8g=>w_Wb;^IF0z&9T<3e? zW>~dUo$cY{di?wfGy9h8%r!}gQ)P%(F^g9sETC`WlWv#TW&0!!!4s9((`5+y9_@L? z>#S+{)ClrB4udQXYak_pnztl z(JmrGa=7e;lbg_%jp&;!IpI9K0d)PfP5>Zd%WxVrG?lF_qeo-FJq{p%7Z)|Mk4!Rk{aec0L*&9Q@_*cZ)~$b@e`8BqkOaH zNeC?xBeTt_F5Jge;tJ0I{Ewx?a!fWD7x(n#U;yu$sBD5P^@L~kcVGmXDmpzx*1BSf z?Dv_CtJD%7|8D2#9o4vBRY&*0yh8<+0eTe)E=nR&>h$G^(Ay5X)yEhFj>_1p;I(u5 zw9;zQ=%Skg#hs&0BE?Dv&08~D8?AJ?Dq`I#oe)8HzV@h=%O7Z@eAWu%hdyb{L)w3! zRqjtZCC?HpTS?d4xu$1}Zz$!giX#|dJ*&$Xe3br;lLfF`VOnhf@97xX4 zij4uKScvghGRj1o{nEh7(3Atlt7p)*_^TuJ;5A%nj+|$nfLER?{o<*PQOF9IjxvB5 zIAWFtvpw=BEX+}sy|?b0=J(5!qs<_a@IKjB8ERt<+!^<1t{p+&-)mNZ_ zBPZ$}QLdgu0q)Oxk17i?6gj#bPBjAM7R`~AKTx~*L6c)Qms){;?nyKAMGFuM8@Hw? z=sg2cgr7BaFR_nL+|6z^0BxvPjUuipKdtzXNd=%i9!E?`V?)N=24~U)aQ|W=;#$9Z zhXWuL{x~Kmg1J*AwgFzN4*qrD*Qx+Gwiwt+wT?Ji(tzrRAnuz=C5NSUh+?3V-L z!(VCW_o%OBp#lcEFRKPD^#*BH~4P#KK)g}evN4Yht|P5EN^t7LB1L;-q~PTk;kP{a-I{{ZH% z|92Bs7K<+u_XP~cxE1fj6#WZw4Xf@4lgUsn#@YM(Jb=keN6`8xY(|Eaa>x6(Me5hz z1)uh$x#aU%-qnPG;afe0WDM@nowzG0JNZv3!HaE^{dX$GnS(Z}}iy)Ply#+v!<89)HTP*IbNIFU`XgO2fY=BOs7iLGnpd3JnjI`#0z zXahFq5=!DsM^~>Wx?qJmse#I$e6^X~SW=b0i6itV(L-i8_X6z=)w{fsEDP29u^9`L z+9bw=O?>b%(x_xE3)O;m9z9m<8jKM5++U9wR0B0GiC(nRJ-gKXfrU+Twn%4G=1J&a zHn4pN<2LqN??w!z%6mpt;rpXg-#Ij_jvfpbc6(EA!W{qgD0_`=q^XF`KbgBH6#sbu z;$dd`a9ASm4PCkE6|!r7mMu{7Ib?HG@g3(Pky@AsDTUFsWC=2+-6y(M^uyHQ;JW_? zHQ;U=o+wL&nrl3G)Pc5t>W;q4nR}PIR&DDJ$(|1y9eSCa{bX<7{pW>D#7ET>n)4M$ zYYf>NQkm##lFfpzK3lW}F>{@JlPjPO2Oat=2`Do*V#k&%iFK2#-a6uw8ZZwQp?T2` z*n=O7>_lmK^q6szr{4d?`da3d51o~EX;O#{JhCL`o;B8|#aCM%ELVrnvnI^|TZ!Z> z7d0H7UaK0t^?OB-DOeiJX-zZ>3O5it(+7;LWB#7X40Mu9sd_;0SH6L#`OFHEGdyQ7 zoR_HTc^9+r)yJswXb8r2*doVL_Lz@Mu{I=EtE$$vKGt9k!hutUNYP zN4FvPv28nvqXmiUI3l$2M}$<)N>(Hv>;!7}Ht1YmHlxv>Lv85-)3It){qu^jTC$MM?F>vm%)mCm17|2XS9i%zvsdRt3 z_-?1qQWLyYKZd=2B0mcpd}9n-H~e+Ug=va?JorEAH}=ON2nd7Lh+qiZqs|SH;+e}A znnybOR5^zoU@>~(KG3v!XkD|!k}|hLxmD7u-ulPgKWj|oaL>g-CrE))nVu4-gA~GD z&(<;N>k(|m0ZmL`;6}zA!wYajecen04$t^AInveJNCs=nb=u1cw@Zg1AJS1PxFt`! z2J}ZR#Pf|wK8%J(Qa%N|Z0w&cT?RpMY7L&UpCh}bIOLP15BM>;s=#_{LIjI5qNFJ% zJ5^UYH$IV@`6-ho7PRtvs4bYxNtbfS6<_k`v6e|xB=e@>8NrsI`v(qc8;8RqkrV%C z0oS=Xi_C?n1JxkQNHbg7xQeLHOpbIppX#WmB(nU;p**_)MWfV%CdrHR~?# zBGf8K#?LgKgm{e?_dO09!;*DqiWd{89n!_6SCjA~_UthV^unhk+`QX`qVfNO&UB0P zX`0~2fO_tUF|gHsU1q2>1zcmkHnL#r5J&8bYpF3pIxq+fBJrKUFq^AlqYYy3;U@U|<^ZP-+f*X=U@;$ohUcv+F;3GJEdKRe4p zqSsg*5r`28qLH14vo<@AiEw<;6(dX<|A%|%CQ`8D&`#0aCqUWMyaK zaQybK9xesep8=eatHF$=4EAyn03GHjXKJd*D9q)v=AGth0VAR+BP2x)4)8<8XXBU6 z@=gy1xpI@oe&K?@O?b$7RRUfG3gRZN66&1Rp`WXFz@sUhs=;>&iCJ zpG^kNs)6vlB9HD9xO%!fdBw)9*8d1Sa(a{Vk(FB3V54|EkNu@!0AUMKp=y8|c162T z5eyKfv)X0pVYtXX6ko62jNb}vd4oF4mSXmj9pax23i>Qc&%NhEpezrW`s2Oh9Z91W z8~95{<76BKU}{81%3qjfa#!)iN$XoRQ1^r$Abp5cK`Q=;sY0HgPT^W}D`4;3wmY&a z*9y7I$qVuv9BScY$)EBnro{2#P_Y^CjqO@p!Ur*(ruXe{h~&mbW`ZTux$Kwgl9cMDEUg@C+e#FkLop$1Q8W-6LCeo!&k1k1|}l>8KLNh{1viv=z- zo~h?46J^xmE|ZfM}zeuS2LZRsJc=coBl(-rEbhl{MO<$l|@>O}cw zWqW744fj$@cQ3Q{Lrr~u*I64^d=6rDb8$Y2u{47k&+aS%1Q~OxKi_;8lfl2E8*EnGARRnN@0l!(*V&JM#$%R1G zX*3M0JJmry&3wLm?LlP9oNczc*tLro8TzpV_K_%btRTAfzB>)ECeDJ~PzxaDT0hOt<0)U{ zJc*C}scTq*J}ZP8Lrye3b@@o$gpY8Hfa+P(X8#=gQNX4_*x8cC5ziglrt~N24>{S3 zHwZ;!RWm{>0AXV&Pv3l>Jh>BOcYKGu(U^rpcxIn${j796e%|2UULpOsL9pBX#Nx4v zFwpv&=}Q!E_wNgpz;t^marA1A#$XUx$D%?7XuzfYX5~jLqXvCq!}wpj!#-rxs4}z2 z@HA~Kci{wP(zcO?ts6BQPa2wF5Vz!{84LtzEy>TI!bB`rovZp_*q$P-wcC`!t{pK* zXUsqrQuxEGcafCwC^Jr=kt+S(7YHVit9rsopfp|KBjx<>mPa100uu>{NM}Xp(+$G# zv}$O>a73|eaee`hUa)EKC0Wd$?H^9naf2O-0Tbcf1nDQhMQ-kIj^{kKauf#5VU4`cZu4IBT zxH!(9eUBc08-tB07;OTzwio;s4%Eej51RN6lEXb0|0<*haH{Lhuo0%0V-_vj@Z#0y zrYQWD;6%D0Rk0?W+PvyzsbJuU&AJ8b_f*Z+W%FrPtqt6m=Z{#k5B`kc?NnVChK(dq zIJS`ku2=uCUZmf5-y1E>GZ}8-(u}2N4EBAiT`+BxD7VPZHu3?vC_J6*%S+;1WeLBl zVr*Mq8SRW=jmKu6>*HarL-UI-lfWMx@<^qSoRC_st-^kzpv=`T;R?;kJNPY7quv+I zqQUiGjG9nkarQfOFUQlqhn%-)6z@%j|8cgM0>RRRSlqf{@@5NDA)&^uk;UGTGm66! zhIqd(m&6&2)&-XGakhT3z$EY2__RAMKazW|Mc=ats5Ap1nD;4)iH^*{FfKZ^a6$8W z(QkIV12b$1#-_7_s|6=VdY7#~w=$U%ZJF5irCWr4<_aqyhk{3T4SKoY;O2CA|$5UoA+QFel6)94;=%`yw(MBrjik)FAELeyap z5Y+764m(y$$F$yRnM&8H$_i*AEkEZ(>iVQiwAmPje*|}{T;KyHu>L#dE1e4%|2iPu z>)rniycDiVD_a2q8~x;Dz<1JBc?f*1pRxF+${Nsu=an!9@uXa**03LQzgQP#PFeQ- zZ`T;!6t`bErrqhxWai*0c~mkq6wApxP6wA%Uxt0Hz;fV#5;QM4KsX(lx^}@ z=uto}>`u}VswlLnLQvq(`ilvgf!KEV0#am|)SULYng%KvnZ_ zZHUOtV*>$%Fx37Hu9j9;#set-55ZIi1iOG9l=|b_72#Sm+9Fm9)AP>plm^a=+^h!x z4-hKl2F15jR_@B2;Ip`^pNjqt-639r`FefqOm7x~H$H;@Id-yhDjpk?EKD?(DV5rZ zTrtn-0Fuo^`mPgNv4tNH8;=!AoTqw<6^;m}R)D}N_0I`J3yMQ$ag&$Bi`LU2dYC+3 zH*plhi?ux2O7*MWNPT>-uy?9YExZcq3eYLBV8-n=ZHr+L_ZI930bnM7zvJfFxk`UK zNqd-mV=7cJ7(*ndeOZ2ZOK`5dvQFI@d9y>HJ;D<2d~|*9d4Q6A&)_ye38>aFa*xV* z^q?&VntpcNht+qc%HxCWQOB+L`fT;& z6bKI1BUH!tevO4EDbF`j3U;%f0FMYravHR99q4yKdgg(`j&vyUi@S?31I~`N?C7{{ zH1Q8jkR?M;TkHOff01z@$4?i|e-k&$KMBmH8Nt>Z6F?;b9-x`leDOSfTcDHmI#1Jg z`-xQgoQEUevx!#ukAYz%Q^2($V~WtXuf*1!|4d%*zG{~QZoLJiA1y1kt~#IWm2P8r zI(dCy<2Fmej#0oePnM0+8TxGRY+SX>B}^mrSH$C--rHvvN-3GkH-0zrsNG2LJ-qR$ z!m)U(%&PCLP6tN@o>qhwuwz+qkYy3hpyx%&gC=`50YP!+TGu8eTRHR9A}9r}7@U9| zxTnQ<#qv=OIaXqX^A*@{&dFG>-#=AUS{cnkG;opx)7ZSsB@%(wfKcb@2ZGH$mJfdU z#IaA0*G2zbcn1W6ObXy3At-vILLOI2$!X_#>~*n!xSgO7sC{lzHPKeHV8;>CB@Lvk zg{n1*Xgy#HeBFGA6hG()AIQpTr!)Qfh2lm)O|0MyMd$?S6P^cVOxX1Tv`=9uAeAU~ z3SOZuN_R*;bycfpYcd=)h4Q{9eBoFbGdoQti5waRE~i_fS+ls$vE1qcv%iD`!2p^s zFSYh~9qA7+-f;Adakf^+p(j;VtCd~z8lcJ<9H~@v9{C(mH(dXi@iC$umPUxP`1EQF zKmkk$-wTmzMd=dJ_7&M0f?jlKma`6{0kG@)aJW%~N_}Nw_G5ahg!XR6j{Y!T%JEk5 z&QoB6q)v?FPYW<37!rfzO*!D2kr;B@S*3@&Zq4I&C4~hCQsaK+dB4(V3e#!>ezUNtfh%CYXsm*g3Mh=RUJ(%l9e@1Q9~@3@)OlA7}j68j}ghZcl!q z+oA;psOYIOgl{M?7AOeEyY(!kJVWQ|!`1sSzW-MV%XdCuq!_*f?2ob6VoCZ5%l8$r z(7)DA9jPp>-=3mpbX4dk$?0TL%e)b7wLKVK>&j;J?_1Di2xm|cL6dd29?q0 z5NOr)G!*(QJU*bGmd9~l#2m8@!{bdU&8JXBqCbrqIy{d>!8DDJ@t5i$k-byCe2dq( zAl^_B8sz7$cdSA2kC6`w@+n<-!X^_AaWH=y_U}QNcu%kfy~SDgm*@Ps^!36du_;4D z&Mp@%ire~=DJCRQLbgQLAp)xraggN=(o>s!X>GvkM zG!}J5>cgtvn-mBEQnYD=rCs?-YBg~e7~NJpStS8K%K%GtI|vMh#W}HNQi>1p=Y=-s z@H!tW))eS&`5`{CF~cyvYzlvW1_?ncd3JiLYm!y^^%N|}ol!0^z}7o$mW7p39>VZ~ zK92G*T0T_33oz}`YvN3;jTy($IS2j_hrx)u3z%HP5u)04Ger`{c*45FGAEBcUKhoX zp|>Qc20P705GBtKtXvWWa2GB}=Wkio;!Lqegt9&%U=S8)X2Ovv*)Kr)^AS;+&urWn zoM$I{rGSY>i!T;2J)W?oT`C&FQsHQAfLoohW*8?p-OS=9vog3f_4d7^w%w3&qz-97 ztz2aqz%dR&P0ctpw^UE|%4kSuAjK>BS zM*l}N?N2G0tQA2LpYtUgbjE{-FX0FI*!rA*{@?za5&k_NKk{%>MZAFUZNx#ir0S5# zx#%Ze>6Yx2_0c7w40E6+DMVQolp8oIP6s&&_${EgtVdC$SKOhlS#S@e<9thTj?}Mu z&~&WV0EQXqx%r3V*TID`>cj}(2?0jC1XwtChU}3<>w&j|HkZEg&EE=2?fR$J5v*=)i5H3t%eca`kW(tBet@0`?jiCyEX}rk;)A#f@uz}PaiCJZR=ptf<(q@`((LS>LKcJi_b`-}h4g{naJP=ZSFhz569SFt z!e&-d8Im>{zJ~kQLRLt5%{a8_`4a+TejFJjV=~&Whf2!~-hfe}!28?Y6B44q>749m z@B)K7cm!Me{LkuV?7?xTZhIF{-fMH%NNB+R!wiPv4Z1l(OdeZ;f$x6x!;LY(0}Gmk z6)Ow*1Bzs{T;h)BJh8__zO+Lvy~Z$+SbER=gZKSqX@_Y$4WoDYrZQ2gIg0_q;nv;M z$)=&Dx@CcfFI|RQuD2a?LaNYUlP%xEM`ZGxZ`PzD2{P;{R`&BRXQ?*3gt4ABT&=Yw@~RI%}6C!5`lhhiOu zEtAuM7|8WDZpz61NUh)yx=Wd0^+Ls$6Hqn)<443okMHj;)k526o7Cig`tDY)4;zm& z`U_>}IHn7ac=6KL9c=n7>b6bQE+Ap9P)VCk38l;8w7e~VlH@ua-I*fv$vZxO@CA4PbGg;gI4&6Fl#Lp4K&TLwj9N3 zR9To1XzB??{_Q~pbM7}TFoq`s35`E`J03P=AFSbc8RpSr1miTvqTZqGr9AQYk($2h z21|}A4x#|6qNSDH3Cwo?fiSBTlG+n;Q-BVMUxtPezLB2#PWY5IMs0bqcc;zIaw|Zr zy1MN+TmVTd^H})!?+fv*qVV3X`ZIT zj3{ zk(Z|Odk#j2p*Lcxn4eamR^;TAp_M6ObcN|84BSLeLh5+)^JbL$UH)}U5+D{jX=G)* z_%#ugtbi9h29lGPVm}0U=WEZRn(U{5d-KEo;oOCjodUd7#v@nvyT34YU+C!(C%&BJ zcR_GJNeM1n%x})6A%L99=Y=26iyaZ7EDa)b(TDLj#X`98Z&PN0Fi-Wz7xY7`gK-}N z%zH-{NlD0WI{qRC2jBdqNkH&0thoM|wczTR#MRlZnY#-I!tyLk32>)q>T;R52fz?F zF{#%Q)tCfrI97JCm#~Rgt~{c2<6y0!7dGTCx|gTRZsV=(Y*7;4c13%EiUV_WG427; z5q;le>&{#$evLy0guWv@!4qaI`{6Aj=$f=h*P9SBWV;PmA)2(%bl}UXe{*|_kFGH0nB95K zOIG9tzmdQkPGuIn)B^?F+T#4OZSjHmh!60m0T1fIO-&v=C;koGXb%so=l-oNAikA6 z7&b`SoOW56ziopZG+Ut=->kc{O3aGwYyKtOu*i_oBiR>$42}#9Vn{yhI+xON8-p=La?TzMKQuHtCZd{M`5&{6tPE`kyMH@ zVIM_XKr@t*B8sOA-`tO{b<(V^yy5g<37~nOceXSQT6Zpd22TOeiQbaslj$15yCzG2 z2|cObBldz`Ti1cfp(?Fx`wcqK}H!J5Rh z9*-9#=kBzD*hC^sy@)ppmg`Zc!_Iydf>&jdrdnle7iKA6gF>o+ z4L=m}36xU4AJVCiZ7US@O-p!D3G?oh7MO6D?0s+&nNfHDK<|23GFAQALs;#bIubdO zT~Q_80&`F-N>5awK|}JeeaHEYXEkPjhmYOAb#tfN@g~Phr_lWK0xwjb({|ES&?%TF zM$|k$=H&6v8sJRGP?%rM??A7FeD^y3XdHk8OYIg)v9^AjK)8b6Jjvw znul<$YgP|7!fA(>t+so0D9e6BrEIW@=5;+{PL^1&I5BG`5=y^e&to4 zAQr1})X%^A+qLo(*V#np?8{>>N+U@P`b)M6r@C9g-3lwkux6Hrsb#;k4%+w29Z6!O zP7)m3^FC2Bm>IRpVhT||&vK#*v$-Tq=~~iU`-ZtzOeXI#c8UveKJP$LogzCDu)%VN zU?;5J7}9v74qb`s`z-Hh8#0>dRIa+WD}ksi3j=^-FJRj$=*Qj@vArdB-pZ(`x0OFm~rGXOS2ggtc4))7YBr@6JznKTK#rICvx0>@Vu4ftLlwSIvL*fU@#E@bPslLWF&;k_*k z<-kfw04({r!mVHcl{di)nRyogg{?GDC{=yAee=R#Y>mtr39A5%VXZ$4khJB z^Fcizj{iwv`bnAtLEv-|?@e_L&>X#59TC(e!r3IJc~q|5M(>rXcTqQ#l>QJuI?BV6 z(P0*j1Q)=z&@fbidjOn1B?}-WavtkMZ_ z)X??!n$&(bj454XcsjUG3Zo|TNbUWyE^2;F$4z_#0A2bkA!h~)y8z+8;aG(apf!04 z2Y6yodMdagh16U~*TEj`iU0Owf;ZNi-TE=>mXwk-V(#%Pt}-LI?TTr?z6_Uj?s}+c zzTbJTceG97?^wAPLS(050IN6H$Ps;#^&>S~@uLS|M?b#63 zvN;+gv6}mHmn9sQpXr1uW#w)cs#KsA%5{D35sEKI5eQ^bS(m6ChrZsN;p2C>&+I~A zQ8W6kxC#-!9l@Yt*NuH0hm<5(8I=h1j71`2p5{&h{eY1&RvaialhnQHV{0n1Iy-F>ITF>DG@ndi5tjx_Gk>O4*0jDmh!9P`~VcpXp{h)JqjG9 z06_MrlzsH0MnHWig39p9lnw9M6we|uH3MfzH)@4F?y0kKl(BQrcQbMR@tEy53m3uQ z8d05k=kA32t~`2CY0dg=1LY7V?zYDR{=2tH!hO5+|MO=ZgZ}o^e_S6J3;HIooO8C6 zq@lMq!TMteXNh*k!(smZW_)1H^jnbXg58ba{BT~XM~Ey*vv9uGnP62~8?uGYvP5Ci zc8rO62=@Du0U|Xv*NK4D6At~M*7W5^Fj^TWV&hMh?>)Jh6EMB?t3bAY#W(J*XgA#* zWhP;^ZDe8LRP}q8t5xji>uqOIDLObgn8Y69zC>Qa8lM{(#~aPWsrty5$lpfDnDXkn z+4QJ2I&-Lz&pex-=DBTnj9~&N!MMExldZcW0p>N3tRnEw1tqD?SO*+^hdSNH!w&hR z95-44@I06h071R*Za{4Pl(}d5O#e`fHs;#55(xrc2XQV#n`RD@{^_XoYAq~K#S^n; z>HYgP1?|IjQ4qN4yMp`UOeN`q2}E4a>~P;42xGS&%Aj!+oqz>RVCso5x)hX;%<7(- zCmRl0R1h`KpID}Kl}HD@ylzcJeV3x7ixwN!bCyZ5@By~~5t5Ly_XY8jhTDeR(0}vp&_9qAl?8Qy;QNT<&0CsXbP97jSktgFpCJUJu8xMxs8mKL+#;~ zwlI9=Flv|w|BAg76`TDJjJY5oN)#sme1Rdv*GEkuW1?=dz{4%+PZys{X>&9(ho?{z zXaDYvq)}L@Q;KHH8d=&lXKMB%({)K))d--J7osut2Xl**7O>6{O!jq^EzPYO87(Ag zN<91Kr&PkACc=Bc2n#@%o6qSFpKO+F!qSHzUG-@D^+ZwpZ(1~$N)85tRG#2^jDo?z z{KG-i9oyJ?82R6g`BI>K+W(!yL{2~)p3cdZYM`&~{NiD$8hC|AB@}pP3_#n+LNm{u zwv(zS*vZj3ps2acI`j}$^cAtuoK;(Vw9zKvC{N!{#~B{J42NUr{Z?CXeX2)q6>{6A zVIa_l`@@IOfEhUVnr7)eWIXGsg4N}ljGSEu>DtgxlTM&3%>+~hD`>g1;yAsSLp?V| z-BCMEiT%;_5I~MpDiUbKI!yv20%gc5m1w{^bN~R^>vS4NlYq07-lfyiwz}v( QS4mpzmh=>hHF6ZQJI=wlT47+nCtS#L0W-`_8TVJAa&WSJm$Q^t0Bp zd#}}~uG-zoQsUwT3m^auF=0h@MJ`QP002P!uLVE>IKTi>A|i?fp#OFOpar%jb}ryd z0DzsntFy9%FtMhVHZjy000IC7Kmrf|z>G{>9OYERRsR$Hf41jU0LXtlOZ5L4>;D|{ ze`OI&&0I_X01)DT5rQU;&aVHk;Xlmb;p+GwobeB%n^+o|{=+r@FrD+i3I4&k&azp>e6I=Xm*!X|LCYH{2|6kNaP};y;z~Ka~~0NUAe@B4IltVZkSwme0>%Lq ztaMEt0jlmQUIT!@o;#(FCLnN= z3|M~aFx2*f^cm382X4?A0Q?FR0Df2p0Dym&`woCzz4_lNU#H(l6b6;2tX+HS0{u_8 z6a23X5z`6#Ii*0K`TXrKA>PsZ+E0%PjVA}m+fM;+KP&$=pv$^TnUf@wUl1&j(U(W~ za5}|g(1d%2SfW#SuW`2!LVppu$JB=}nvWj@mg{_$sCEVlF@pD_MLLbMBuE5Rn}d`Y zuhz_cuJT8SapeDvBqm;-Hh z!I9OX&xqc~1szXmpU*te)))rzI8P)AElxGK-0#6#gruaDQ#Z4Fqx!!m{LI*34dRrq z{p4-%pL}qlrrd0UBrI%%GW=h?WSwAL*;~Bx6-p-vM)VDgUs+|(6uRh+K5NS3z4sKa zS+2Fcbk;uP`0iMEQ2sqV@SHcAe~COzS5G=zHCv*6vr)8>`MklH3G3;?r+M*uj#yD| z`(n1r%Xfr3E7M+zXIEEoS3V$0?*h_A>MnbI0I$aPj_&E=p50SLG#T8L5 zp7wByo1E2lt_CMFVva(FmLH8yhb8RkaFkTHgX5gxCJO9eaY3eBKiFnVrpkvBSb8ljeBis!lkZ|vg9M& z4CU!Bf+%M~0$ZJy7-o8)73kR8gh)AX+$us0DY6?`a@eQQu)mlDu-t#W-_HETWCo+* zOO*jqgTed=IxcqKoU9pmH2xMdOgygsWZ680^|tdB)0*q|I@<%)JQik^LfD z`5Xvs5aTcexfDsyb?aVLuGsDSrMWcFYd8EluLboA1MT)4RL^N0t`L9_D|#9jd$#qq zkiXyyCuJK8Jf&acaiXr%*LM2ghfNk8bGCc_Ny^(d?9;oa8W4z?b{Pd=aTCx)CYY1} z5Uz@f;fx%$7#*g`=A9=*Ng-x$t)cXYIQ01@>C~h{ZzpUlIOPh`@6Bla> zfHmc0;P#y?4^;bWNCED&79ucZ39c#2_ot@Xe^2UqRlV903p~o$Cw+fEHn2CV;FPLx zdMmQj;omd5egF(B+>y@}U1GdU_2Ece-&tn<7e5Et#%{oC7!N` z${Sl(ro_{txN}U@j5C*3@}8pNV*ZhTQjIpBXU1C1ebTc&&deW-y(*Ty=mX=kIW9}g zE47bmaQVgAi#+1nlbGK!^>z=;VhdB3o0t)rtl5COeW=4+e2$uwTZ($g(HdPQByvyx z`}rFIg-OVC6p~=VB{EgnE1F|GTNSGAH=(`&m2IYDszo2O9vIBFMPdrB z5b88EkNXG&{^&%b>fxhj6RmKCPtUTxJhn})wKKuef)fa3V;*kP$<_j<+OSD9NXWIp z&CP?yFv?u5cUklPcG>M}F9hndI>KGlx_oy!-?BCnnmG>=8mHJoe%h|aIL~|Xzy(Iw zy`Yo_1WkKtpaW|4`aE7H$-$?LiHlwzP~M1pt6&27cj9j|N{jti#>CWO91lXw32&Pp zgi+LwUV4B|2~dc`93JQvOSe{kZ9g#g0pf#&-%K65ukCj+M3=jol7^wl zI!uRQmYB)?z_i9Rta!j~0P`>PlqIV7*(vWSTC0ZoPPej4IsA7f2mM)FR$wxf$Kkmi z?dZnM>+ZsxDfhBF)G=_Mx%6$X=~x-DR_D^|(VEoNLg3Bn%)<@`!3a6l&(LeydMk+v zl#vKWw@04Air+c&S+K^16LG6SM zrI5>Ti3SQRE}7sV_j&ZL*>9IT$s|E?p=DVgV+H$u2)S7`F>-jZE*(P^jRrn8K5038y!2fZiM&Z%*tHMZgs9Nb-O?*S8~bsI?DLe@z~|MEy-S!5x6v4njDP_~{-71Iq-*pah^K~x5Xt=Y)Of5SgiAjK0xwvGTKG$O+U~!)24xV}AG4Rp z98Vymvr5iMA7^){iP~1EJ;?D`;xx1S{Mp97I@1`wH9$4~Tr5)Vn-@ebCm}RKzjpdf z7%cJWh^izV76J)t9eQ-qqhE_u zn{oZ;b(3jEG_k-(6MMI3lWEvT< zP%*;?xcT5(aJw=lNF6~dXw+$tF790u2!ivD6v#S2IWC6ZO*!hK&YuyI0l+Xf6}6O# zs`f&=%*$R{`O501rDT+Psz0>#ZNSUHrkEw!UFBYu#D~ppuij?O`dQV9#cl3R2Nt*R zUB$jciGcuRG>>6Mr<6@ZE#y|I_Ejj`Q+;pVz+Du$a>YjS39(W0J6el>OTs)?lr-WZ<>RqxF16>2z2tS%O>`{x!}5?Wb2K?( zScb(;0Gyc@v#*=!3J`eBd@?tgjH{QxC}*gm*gpPy(#0Yad@7|KqEQ{mw>9iG&nVB8 zZugaH;-y#mZ2~3hfVrVh3(x1yJG(_x@A#KN;le|qRIgT7j<9?!QoU}cFENu*HEUd- z2EETA)Fm=*XxyY;PBrBTzv#qTgLGk!?3Zf@)vyu56vg=%Sw<_`cALGA-Sw}kdr zwOU<@r7X7+U+ci$z1VRI9E9rQ#m5smoRL#@Vy-BSBc1s86mWLmF=}?@Rv|L@<5~g5WWo3DO!vJ_ zxkrdF!SBg~wtm;@b3Cl^v~7ANAJd$XbgI(L28hpWU|5Y-#LeV;XTHnJOtJyl^LN9! zHYS-sHl8v#(J_xP*vq36W3S%>w%=nB)GUs*d5dTrvmFlcD3Ybp&>K?X=yKnO%UX?W z>owEg-(0fKKI1X+Vj`Tr_}b_}0gGHCEwZ-_wkA^L-tV)bQfv}b3UWaicO@Ps$7;`P z@U`SnSdBJ{L_5KW>M=qPQEnVhrQUy$Z^4DWvtoXl-qKJ?A~D*s%5NoN6Mf&pI`%RBl-xH9jmWTKQ_(yY`=Z&U)oopgQa5)arYQ8`XLl+U%sF z$3dlxZvz6y{IXZ8PeOZDa$G4y8TygAvB~f!4(FS1T`f4k_I=(sg!6gO2tQ`Xk!*#+ z5zl#{BhWuCStp6sw(OAOO$NT!s=?AJMsz5Sm9WZbs`Gp_llJC&=0<7Tq;Jw_`(E_t zj0)~ssXlwn8qQ13;7a2r2}o}A#4l}#P?7UKb$)%m<50x?h$O11yN9;81F#l%ftURf z{d1q8hs7m#M;eDkw0f~9Y<)hk8B{B%Qt|1`6~-96?OCh{XHA;q~5jh?3{?op*+kckSp(!M-#Y(0XvY*lJe)g|#WV4`Z|K%wO1ofCrKzzx= zsH{+a3h%>fwxKemG1Vze9}w%(^!$xAPu+Q%VGV=5VGcNAoS_g+YC(7%Z(gpgbDr*AhH@osB-lbSFfuDoMt>acXiX-ox-;Kdvl_EHYc z@xm_&(kY$BRx7xlz>-eXE9%6)_PA!F$jkGa26B+V8or!N}-7KJ<_mYqr?%)b@^3MT~aQ@^2$UfEzy@ zgfBke!Oi`C(QW+6M_?G@UpiMENBAq}pT^Tzp>L?=#iIg4IZjsT4D#GQMXQGp-KX_^ zzlW8KDc|LiDSYk$BZcSn@BL-(!6(mgJPrI6zGlMiRvYUt&9b1qtUBRt?dTDu^=*-s za8>Z!8LSr;1rtk(>5&WmZ*TWNmyJ;ssX$Dg<93(7)3B>SRf@RX14}RrP+3IP01Pjx zl|-Ele@F1WCifv7>m46LkN+;2&Srd233x=^Uz=zb@G5`^UaPJ->YMJ>I zw-FLYdGBT~bEjJyn9S`boZ6pFHct}|kK48dJWWuWIy?WC>U@M@EdALne7=iYMDptk zaEQQNRb9vik3RF~uH@>?`f=ljhv((iR+Nmp$jdgLN!b_8S304#L5;&DZ~z!$zD>6j zss5$kViQo}`#onCED-VqxObZ7{`js=Vs=!X5NZb;I6B@R&uO}NC#bw3efL^<;=+0eOxghAnAH*T`EeEG!)dt z7dF_&U)+^v*!sOQNRna{!q^m!KUpr5ailewIamEr(@K?H?sIe|Kx99geIpL2$P$0& zYP7hd?x$@rKN=pA4yQeB?FQ&F3Q$_ZHBN_DQ`Mojb}50fb61e96?5(|r&zw~RG619 zepIosY#KM2^WO|3kwr)>nr#w*NOU zfqS~;EPjX27&rB5>NU+fGnMTK=8XLd1>#y8)VdG?546`>m7+XixQ1PlacJbFSf|k~ z-E7kY0a1oGSTsjIxI(dIPR5+zO#6Mz!%{XFQ+vZ;1V_%HEaJJwU=o|)i11-GROOq} zgl9v90zPeVySAARt=mKy~Uo)uvN}N-fUXvsKYKZn{_E2p*xTN8I76$tw z8_>-Bd14JNkLIJuNI&(57ve%JSlYjqQ|G>!g;l^*{!Dg0-To~`YN09_2EQ5fAnn8sDdmjM zSQClr8X#F@0{(h$Da=mCGUP*O_CSV~gR+=4g!Y$fKW(|B17<2LQfNYS6u%_`6Xxg3 zI1^9HcatLDVAWs%((=M2@(M`d=L8^%Zdf$w!+4cIFexTY2EC%@E`z3N=y~rKC(XX4 z3SF?*p1HT`#n1{AAIWosmCu#j>?cWgQz>OzFSh@HE5eDL9^~^bHu>sZn9zs}?6hGi zv;8o`Ktt?oC_L|2CnF!saPDU=3s1ONPgWgfp?+|d))@s}BzfD5YOO*+^8?sRR1J>3 zJy8KYff&koC3+?Eyao2I_Eod?25SlVV^{k!=8aCewRbx%M#JvMT6=Q2nWYU0>C^+7 z2Pik{Q@lzO%@?dZ1$~tfeuzaLLn^vL-lp5M!f~_S2;|wH7?oxy(bpA+&MK&>G(D?Q z#KCwS#I2!~>*$}NasxkK{b~zWY|6i3uwyHT=OpB;!8wC3ZhH(^V`*T+@FS#KDvXmZjoad70$$cI4!&Z8xp*&GMUo7uhQ2Sind zr^pV=;z@=>W!~UQ5H^i3sC>7-#gXmRN>ET4@Y3tQnci?t>Y zAaQ+J9KogJB}sh@SSQfl{e5&Vd`6oM$~|8$?0Fo5{e*S1d$H1=)2hAw*vn)Hmy3Mw z_b9MdwX8=I*|5)9`J7ofb!4jEY|FhNwtXdsGPKRDY`Q@c=boRVU%(O1(y*AOcfiG) z`!B3+&LLH%uQif#-{N(c{F?>;N>cA-_s)==E&o&Oz^ak7!{qE~dO1`nCN z&$KCNrfVI1rph-L2)0BX--OC>l8(=cbI*3Z40>LL~4eM<; zytMFQ^lBD8WjXq#Ye;H&mtv&I>!nOyA_lGpm!kk$lAzFd#+*&H-|= zU^b98=XZpE=xjDx)hV4-!x&h%rn#thq`FbNQdAaBMEa2nd1&oT0#(lNp@c^dE^|wd z5;XxzPEH7=-c-HJIHGZ4PddYoy!9U3W@$of&vMqK9R5Hy11=CW$l_7q=n`j6B$sH=*U>Ih5C{y%| z0+A6z1p8~0C@GE#B`=1&Ksz@v;R)+DQOm-@d<`4rbPcPQ7 zLdvqZ4xzcp_t|~O*<7%{`*Y;}h+EiaYXM0GR*2lFbz$dEGj-nXT{A-X6gE=d=KHD( zh-8`;>e1trz|$?xEL}vGS6^<`o_F-O8RTQbIHXeopns{N97KpYp%$kGFn$zsC31xZ zI$m*Erp8b;uA6o6SV=GDLL@WaDs}}c;cZLl&UeG_6KtWD?9Z41T~iI08lsy9H8RUR z3}g9gR&{anQPK0II|>R3)vpyjk8^Bpub?h(MaUl&Ymp(T;7=?e1h{^wqkK##8;x%g z@A@gIdK(w|dcgQs&c~i36xv)hQ1%sfm5<$Y;#iF@IOn19jZGlq=(i@z1ZKTIydshq zZ}RJY)%kJLRJF_i`|VoZhWA|fIvl13=k&Gln`JFlFa@l0Iw)&Jqbg%ZSw4G7+WCJ- zMFE&M$Y%6d0Gi7sUgWf#Xc7&Equ0`a^2d|N_2ra8(`%h?o;yG)QGmIS6NGAk-R&GE z!3%3G>HUe>(K;f1jxi2`7Qx>bU>>Gq&VUEJ7{PN#4ph~Ldko3acVot8;Hn&Z~1i<{1|Y@aBDYbp!1EFCE0`{+QEo}8X@SBJLCy3_Y$Y|Ve@NbRqIsJL^;aSfna@%~DneIibFblb zwfkV!$V@^d{V*&$lU{9$uOF`(xrMwL{O6A37&r!j{QG&6hCo@()&!>qTr$}KNQc(Q z*227t;eOx}vPW)G^%LFa*yMagon3`nU`@SKdcmizAvT9C>1<;PRdvq_{kxI@Dl_v7 z6sCcyU>?ISm8q=e_wXb<9jSfxN8C&P2v(WO8$=^wsgsN|b1@t20V>3+z?FLNI|b9E z+B4M_#M6T8Y1?FVqEx|^BuO%>?&ZdPX zeWVTHDR+s@{_5IiV`a`rEHQ0FZv@pinHI|`w`UZ%(f2T9k$Bmc24;Ruv_PE*^WAhd z0&5s@g1_)A?~&Kd#CCn$BW5|VvG(v23H|LktCw`-+tqWyvzsgd`(uF**hl z?`qH>(osrA=$_*H)C&0bSPMsfv=Qm*t0;q+a~Sj68p@ZO6lRsqo_6;)=we$jA&5--F5ivx=Qhy*7)sP8G*;=0bE#uw|8qHSA82bve`hpk(IFVUvRNL8t5yy0#yn7 zyy`u^U!fIJ2%Yaiu%sSdcoZ`gX>FiTrvAsdkCbdN1RDZwAD($-_}mr8xWmNSZWzlSArI;m&2&ILRug8 zcppVm;5)O~iiRlNx2N`E(?mhNmII5~46F;o|ubW>mKF2k8tP~t+yv$6P0V;s&{t%`tS$Q!1BdPwp;u9uXRjG$2tlao@e z51n0k#7>#MD6Ny`*On|fXDHuSBP*eIX|&Ymd$-vT1a{(<6=r@Em|YAiFcK6(;aM05 zgBppaaLr)2FblH~T3zY$(;(IppE7?Izz#gJRT@3p;mn1AK+c6q&Tr)KrV<#@-zM9I zsTbX5Jlo(@ZJq9HeSI{<_r5uPLMYb7oB2l2LQpSPISb?0V{H(o73)z_^Bt9pR>1@+ zkkB6z6;-mAtTbErC$Xg$nL*^kNoJfQ$Cnaz<-@d$H8@jOXbr-f_}!bGCnn8t2XV2d zJ0%4w?ZGX#H+G#7h`7-2+GBuX_&7_9se%inBAOR1&vBbqaULta5K=N;eb<`P7{D#WFp&dU2U$=6q9)ojs|o7p_6f?;|YBg&pR*DoH~# zaVevb8a$jA*+S3u^lbm9L6om+VMNAOkk>s-gCe~8c1&VJBN1(^Vbww-AvP(I4;7f!SWteOX z4(aovJK8L(t(qfJqN*X2;|6=3+L||Ja2gq^`;`x}7hW39=v*~&$Oem>u?%hY@DL7@ z{pEmmI}xa)(%7^qw`{)WYR2A-;9xMe6d}M>Et(f&?9PKSogIMoM~K2~bi*V#15jr1 z-giZh78blCi)xvM<SPayIF6^ zQ3qp_^2~yQWD7W!&@fxn)6E(;vT2)O!XdkS-UOXP7R;@T9s$dS;xA zGR)J^Fn%EX3BtXI?ip{Nnw|=3rGZ9mp+KTQ6q{j{&#MZ*)g(uli)jJqkDVA{%9MV1z5yN7pgniH?>f9XnM5|d+|W67 zCa31P9`2tco3V~GTadWRd2|5+o8#r#9yFW=xiWPrAGOqz)m*llGYN;oVjgZR2=OlI zBq?a;XDi;|u}CINHev%O2kMfx4h--jZ8zk3*2dI1sc|_80sMW+)b#W_S7B0S5etT4 z3GbNGE_;a7n+#y+E_u@7s6HWooAEB9F?7(w`v)VVMQiKr@sisr-s}4)Q9Pt?jePCz zQ8(7af+7wcwBTrrY?WbO#a2)(5N#Y@VJ_KPTWX?l-G4$vKgpNglh_L=VK$5-pZVD# z5*^%pI-fA)ub#SIYklQZFNs*IM`&V&S3$5sEyw6<7M4NpPlW zW%t6ym-QLB?KdP(H z;;C1GvH#{#8jZtn7j^#-21*U-{k=3bLcfSi>y58@ox9QQdzl?-KH)Gfh&bVBTs&h4s?E*7pY;F!>?+oH(e^p6~vVLggvK)hT(cY!crT^^xmcXqiD7+f78*Jeu#4ODLUTRG7A=8c~i+V1? z|Lor5p#FX3sTg^#n+4Q@#qog`B`@YcB46h1?0$gGrpWl$h6+=n4F60x>Ny+fl5Gm* z#|44d=;U^Jibt2NNAuGW5xG@-Y}INKsObqI9%Tgb&sEx7t;J^KTryv5DX;eJ@2uU% zgebd+2f&5+)5GaXx6mw2b%s5P-%rt{fJ(GT2`cZL-3-Ngijf>HAKZImBp78aiBCCN z4Tk50ekp#D8mYB9W*0*1yaFR`yj>J}$Y5$+JEy^x46)oUnz`DW&VM&v(={{4Q`<;m zF+pcgeTiH*5KtR*;LFP@AXo-GhpIjJ7o{#L^p@>%KR-sWP?n8yg9M+z}iV4O( z+^S1YWpZ3)wpgltx);2jTjQF>9y+{Ai8&f-csqn`$VVxJG&dQ$9&8zMLAEo!FmHP{ zQJ%%oL8YjMH6?eyqD~+`kLR=`8kBwFZI(xR?#_s$!hrp8j>%qb*CrxHreR*V&)D*p zTHzViy}byizCA!;diY&6Vn63Xnc43zdSZL6JYL>u-7$*$_!m3lAq5uUdxC2&0nB7H zbmdobOBaots8?Ic-x@JrKMoCW4XGrECM?}i$JaQ604D+kGZYElBl$iQ_a7mC=w1DP zyGQ+>4qJu5b)wMOm9=3c=&NkmdICfCs!XMhO$1fz!P0b!PU%x^m36+Wg0>uy|<}6MBC&6O^BfxWg3Gq zd7fXRYLH%})7MB?L4$eb9RDEg_1O{yKFPQ9UAD~7R%O!AaxJhC9!x+qaV`drlSI~Zfx4E-85cuCl*yQsS4^;PQA($ zD;NYddYXpaYDyh3=#J?gLsCsc2dAdh0`Kt)$D~=MU^H6?Z0O^(cobo(#DfSvE7FNn zpoCUCSH}$v1acg0f>5q%p;NCB3MgN_9y&B`F$T)=Uf)PA(e z{ae0+?eg!F`G9(xsrl(aC>_v!>nBfP=~bqbN=4`1*)YE?o%ri9O`$5S3o%@FUlmtU z*H%@x8iJwt+E_yh2OW${?^*4srKco>DXRKiQXJdNBGX8@+Uo^&bhXC%toyiFL6#v? z=8K#a$&9BzU`p$>?8KZlbP>s8^c9I4wYBdtWx3n8el=r$UFEofs}s0V9xainOURri zIR8r~#OVvTFqwZGA0f=(J;v>qU|r-V z3u?rWA(^P*fWQ8Az_u}NhHu?RU(Vl04Ru)`8u=R@X5eQA5fCgK+0ECU39_i4?z1Gr zmQ!J{7(#T0oEfJa6o%!i9mQ2#=|o%gYYf>ZD3}&z!O7k=)P7nU{G!LHQIi`j@hX`a z%o1VI@%&KvNnNJc)f=U9RH0=Tj|EIDwD1eOnYhU#1WcMtMXpX_b$rT)9!DDsOG|s_Hk8j>2v}};qcf) zx)c0>ld}-p3$NVA5)9HrmPr%!gA@^VQYky?qv{B(+<}`QMh7yelC8<_V1h}83y1D>u#%I@}#grL1e{ z`ve9fE?7;1$_Q`D`YFc)6pdTopVAG3KR-<#Z7vj{bQmn|!E;&*wdujW2l+YQS+t7M zJMnhZULVPiAyq5AF4%bKPW2c@*m?f+oVExu11V`O+wFVKd8Elq@1;7Fc2TPUF;XIG zX*G*^aTy2?g4R#(=jGRy)`Nw@3HGgF_-{j4ZsWkZJu!FKJ23RCVn)8`{Yj zx~vHf^DiHR62HZUZ5LgZ{#-M&suP$^Bz)r(WV z_mM_HJhgx#^Q*TxKU z)x$qbH7aybJS{zzx>HZaf%ByMF5j9;#uM-D2EPk4NClUri`rIy7uliDMK7 z=PU7SPGwe+rbV;q^F*6K_YnY@vgEXA$TIn?bdcChiId;oVhxrYwah@(?#0N&PKZ$F z6I9G%3_|K_%;`0M63xD6i|EshWfxC)ajAQ`*P+;okyUd?4>+CCm?NPtPTa_>Uajy> zW0iBEuA~O!0bS7?|2Pw!_Q+^@_lpA5%dQn$nh-gpaI?Qday{-t9yf%5;#Q3L_}t1_KiWYuOd*6u(I0qGKP?g+~7a z?TZ~lkR;L)bbHOi|2pQOa=8I6%Q*c9EECl+*>v=g0tG_YkdSkM@tya_6-%_yTop9p z+~#CfgOo>~R3%{+OVGP3V~S^kt0gcN?v2c zfFHLiM+}fmQ3>W-3DQ|e`do>JIp_G*O7;iTCr(5!lq44~`AcNKzi}1bN#f*Qv089W z$8B~9ia-{KS)cu=$CWwzjY~Gb@%y=>s_AN3JuT#?ceH1a} z#DeEQBdPuU{=^1RealG7dFk3nXAJ$u*g+dV55C)NBXBE5(}Q|e5u1?^Xi10oUCe+1ifv;i5 zp+b&G5?@UNRjn|Lllx!UY?f22opUKI2lb_bK69xJ?{Z;{RC|!dS)@i`U^98mXWUZ$ z0bh9V?Ye6h!|n>iFj)gUBwW}K0)`v7#EA&&L`H2+ReE!|T0}8P*{@vpp6Peks0!G= zv{tFhB~2QTN2Of+ZgBDy8u-9>ly(db%6N@*VjS!@sRR}8ZtprhlT(*wXfL#@1Jen(+?bzw#wa?*-X01;K8kM!px>#nu zB?L~3=0VlHl7Gq@iFW7!2-27MUNNTCqPU<&53N^QLclT-q|WDY2} zf%p@Qsy%M4-|t zU1Y*qBAW=vxnB@`=cTrKvhl~9e_N!~|t+H)nEtV0LpXq1VI+LH3rH5d86P-p+n zfnEU!Lwr^pJAM?i-wGhls@14f8|BG(87>uAbnU%&8prsNRMwqpw~?Q$K+P<9;C7LG zc~XO)zD1FE5(FNJWplZpE<|VlaWxfx=ItSpdhrJ?LnqOdSxsEhk8LzWo%1RzI=Zva zB4w^Uz0oq(HuP|#;9ocQcD7SW1j}PTX8VNwIO&O^4Es(6SQZh653!@l~0! zZ_0|no=4E$6Rl|7@%I&#d)29-{k@J&M*1u}uS0=~g-b24Q`aOUbJ0pvp>+f+t3KHy zf+0TKxr*e6Ge&XX+d&=Zy!!Bx_R$c1)kpo*v4i$Ik(W+DrTpKwlJbhWHB)Vm8pE{Q zWFEg-f4T*&`D`yU43P!^z`k^DcG$3V)~4pa`WL2Lp=g^fJrX-1bIzC|7Pnb!@TzNI zxS*q(_4G!>k;LHk(rqv(2sL}J9^w@ZF#x9D5pT=7?=Q=5`T8-xqd|^`H;>rhuhBsiW3t;ElVup@@Xlh~_(SODCxJLvxh+sMw(~R+ ztN0)u7uv~6Ft=mxNFwoWAQ{XLAGGuFm|=VL-PeUXHQcgvVJq7E^7k%D)THsIh2#X6 zlPRJ*3RrQUyNQEG^W^CLrY(`R8$&@Ky-D*vCJNu2(9I(=bL0q=P zIle^t6>(63G~oS|pO*3toD`w%3cOac>za7X_n^NzE-?C!|1DU(r!1F=aL|cz5sRJY z-jql(DgvB(HID4wQ6|7uzWw5CDbKYEbtUvcO>Fl!RGrHBQ!YIh4Q15RkU4oN3U94Z zNh(x;sk{`Fue(%G0x|7O_+yuS9MM`33>rsLl^tk!j4FPu8d~=7WkvP$yxayt%^L;|3tGE67#2QVhda$GkuSnJLb@2C;gh5_l^W%_~Bw8t%)j$yr zj~L!dg`Tn-<5ZrcX}V%;t#Ut?ihf04pPEzqEG;a9Mvr08WHN0wgMr(C=}s%Bz2uSa zkWup~65iH>mGozge1yF9@C!(<(DM=d<9(XOa`t5-HW5pv`$eK*1NpKJg{043fSBs` z24VWTwn=%_1lV3c@hfe(iKKW>A|N7R{9||KCOnUx3SmLCbfeq?MJ=jos}09c{#~pS zn-v99IInsP+t}C7ZymT)h5hLrP(C`r8@J8cxS-nY! zc?_#HMm)0SK@sp_xBl3Zba~*;;RzdMV*|%j99T3c6($}vpG(QEn7_lnANNXN-8!?C z5`kLIR;b}dnRvv{T~I&n#=}WrpX?0!Csedu>{J7(nP3|UzKcTE!XU8{msXNhsuFXa zKoPSQ#Nspg`PktFKj?@ek+4NiEzZ#2RKx1|z$;!GwjhJ$j;``yG=2v)9txTry^H{B z&q=f{z1&xTv;Crloe~C729VdcCh5 zul->X%+}h^^6RwJpLh7CIxyPe$%+u!A(9gD+F5F`>A)qcI8x@f@9zlxN{U18^mF<$3!t_p|o$KCh*>W+g5@5CD!$_F6UHCgc)8R>hTdYQjl z1%fDpkFk_6G9N+QlIFEFZ*L-5vVZCA7xZ$eZTy&b4yGVvR}V6E!hKjZ!klUs4+r(` zK{`Ar00pMb3*yM9z`C>?CvE7+IdT3f74aU+ujgH|wbT=Ev#6#F^$Zh&#i=;8rghA|=-U7_NVE+J`aCGUKjP0@ua2u=SGzcGeyfX5|Jl7AS~} zGHl-Mt+kT}RnH8RgeisCS@RkhRS4^K9+gC<<+**j{`ORNKr{_K9%WGV>&khgs_hv& z8}%H0y0?EE_@9pI9;(0inWr?5zmef!zG&snD7ePGAqys5{imomoE^edsH0ZD^(f-l z2){KwnZTjN;j#fc=9s#SK9hLEI?Y+)KZ5bMCoBfj@V>}@4`8#yM9X*c_v7pWUUuEU zGIQ&*+^Y+AT-XqOZMW&s-5!N=Z(4}B;rvNIxG5jXUSHL~#%5brc@HumR!}L~3t$9- zS`(WNz%L~P*LzoH1s9hzFvs)knJ~Bsd<~5{)T|}%e^Z^U0rSnO2#GKZ7Y;H;Q;D2{)Ee{f^8y1y{2|s-m}dXa zA&Lj;+r|EI|DJdH*vWK(8847 zjk6qwpsEgIR!{>xgM+!Et)VFWofD{Ph_cCc4fe^vqBU(> zqaB)lW@RqJ$+w*=c8sKjRZCYIf^}I1^e&LGx3{jZLX0oLeGDMs;2}r+-QurRo52)d zre0M&0$-EJdCPG=Tqto?8(C*aAE(LQj8k@jfRwDDHhe+9xu*;olb{|#L!b!16@SB@ zjnU@jFzD!FMsBK($J_l~sYsJ?`w~(7AZXQKB)gXfU~SEXqGO@T-f-$W^dp!IB9Ayr zTP0}b2rgznTM)9YN)xB!(LZR}qoD?{ym8A5wVf>Oe5Ws_)lJou3i$jD9$G5+V!!Zk z09nX8rhvoO$~n>WY4(@}gIA80xL%kAXMpguCdB{qSkOrj_}70H@AlCWBHZJXdsCNz zxVz-VY&InU^=9_->@f~gb1NMsr&49-0?U>7RCU8FbaM>8fIzL84Al^4tG*9CvAWa> z0Pf6-O6l{s#Vy$lewLRfOl2N^z^({u8-l4h)&2kVmS;#_bSn5x=u;gDc=X+t+*A$_ z_Byw|of6dsSii<;bvVEuAsS@NgJR&7$~)RT$&sWCoG{S$5#8|zv);@iY+>kd3XaEt z+d~#$+JH@;8F-4ceZY#+Af;&x1gjjz)VAj!;%XNu>_)CBZasF2)IMC3>dlU4b%#Kf zW9!Ak;;RtDrI7`RPe(kE4caj<1**8y7V}nD**Wd>vcl8@@OC_h=Oe5)J-F8Idp z`zzt8K(FD+aNcTjz+M2f;4 z7lGwL=RaQ{Vb5-OYBNjt14JjqH@Y$ZU9l{$6=9(j`g0K&^|u1$O%`OT=>`{t!>M$m z9@!IbX|N!Iv>*kDFIi5V;%4t{Er`T*RkJNYP&hMZ*7W|IrWvVUGM}V9>gOU4yLs@k zu6MG%79&2VGWp#)Ye79BsT-aUHmrik?5W(8f0b$HdPl~o`06NBx2Y@vbaz1F43I&7 z)hhG=e(`vx{ND!aJKI+x7hBPynDzCpPvu&j*s$&=ORQoTOoRv#I^vH@Cv&>;+K%SQ zb2X2w{t|C$>|W>#U4SbU60kPrcBC6u(=t1Q1w2ve z=n|wv7P$N%a|R0WuL^oX^`1wvdxG1%v0hfpz={1oiAm(l%(Gw^sfzsP|McwNDL&VW zF4mN#BUprpsFknN?G&a1tmRy2^SVbdi|${iY|gz&CQ;t5BY6cFr4h1av*xIh_tN%W zEO#a0$dq?=fI3m~Jw3!?8{hxc?Hm7FI3s9d__Db&kroyCub8(gaVPUWiz0v9)tK{r zX(_x|;F|%GiH`nC<0@PA#HR3%TKtt#))N>Rz-y>vf!Qa}IY!%|by2mM_+2V35cFjUF_lqU?K-t6!HFOXtN#D*V@V?tQL zb?p$+U0>cZce#Q+HIF{6k!p)exJs@^uFd2Bl*(DOf}D0CRgG7pa5$GK_+(S3xVBeJ zVNhcCT=zZGHPKfv#pUD6-_QtW6GaB6oo_Dk#XMPCOeF)y8!x2dYArd3%PhdjpO!fC z6e0g4lI3@ryL#UBvjwu3=Y>iN#y=q^c%0TWUMmuCl7!^z#o(SGsc*5}do6XVV_s|n zx~T4EOozc>pha7JYDwDM>}=&nkJL^Z*uOv<(S)|$j;5kj1?!UgKvgEF@d7Q^o#kK~ z+jB)`5uC^Fphe7Vw6-LVr~*`~^hs1?$;W+m;MkzF=sXxv<*9o$*V(n5=^RWSXm#Og`;m#kHWsbXLSn~GaN8|6c9IbR^TTNuW3Dd z-vl0y)?mo$mBw6Tw3zMU`H7Y{AKMPh@;6)I?#W9HovJu>hh*~j$dYig`FX!1ZNgC% zVQw(Rvy9IS0T8(XeV3z_~c&P-_ovfJbj!~EG6XK16{AqzbV>^ZhZJFv>u0efey$i|jV{Vr zA!S)KDIdV(e$G7YQR6h%>M1Y&&Q?k@)4v8sn6l5chz&t50(6o58R2 z%^ju4u34SVXNq2`vThri=;>U{Eh0RtD;9icA|6=bXvBR=>_n{aSSgkDWeor?8{wn! zmptw_`kX{|ZWBwasuX6L$thsLE-(0%a;?B{A3v?tPH6l}M#pmCwTdF%{vcnrq<+z6 z)}o$5k<*$0A29nr|5}D``3xNu2Hm!L#s+76EoR{M6xPY|x?yad7sBW+EfTKiqX8)a zPVD+wdE8u!w`@(|4g9*d%>zV=9(oBz`q%4AVdH^m%yFEqaDV{*vyt#Yf!T7Yj4J<= z*f$ZB!oE=Z$wJ@r7*H~GUvF2!^>31{21f6aFHb7?@Id_nzkEiE#B*X9YA%<|!Sr`k z8pd|ftv^4>NCx6GrQqMDC0wK!Q)-JP5?+@@Q`ss7cYB?r$W~#v6Ni_eI=fuo$sL6k z?kO6RAtwPu$p8I2&L=tF=UoG7+pC|Df{~=qfiz9f7G8iVHzUuGb7paW?Rv@C`N+S8 zk7CTv2)T~Xd4pida5REz=p_8tew)B; zA?RFx=2ap+Nlq4vSNvp!VKL+VmQu)b;mk}uCz~{+Fm3Cd>ENYssi8(I<~tuys9@2M z-wBpT5e)IquFzxN#tb3L)^uVFjc;+Lhj~f1@2)^TX^Y$zuHk1J>);wTig zBhiJJ@yKPV4y-TAVoz2|1bgbmHA!K?J2 z1~^1|x~S7phTeIogY!1ZnoV%d0`n>^9kOTXDsqTJ>E(p-KTVNh5kbs|q>$m7e{NdT!F(0+}{0(O0wik(%pNXR}y43>ksqdh{*cTc<$121wq zlo7Fn{~u6)0rr4_A}8x|n_b)%w{MQ8rEnwJ7@CZ zne6AOCTP2W0m%5Jfsq4){XJCSMo#VWPPpLsV2*ey9IJJbn+B&KK>kCqhk+1A(C3?6 z0wUaIP=cHC>s=YY=Y%>yD?(LpP~ZCm*A|zL{*`hVr{*Pjqb#z!;w}pINbwf8=}U--@=Ygb36He@Xaf9{e`M{@sy#qD`biD6O3EwQfRPYnwM5 zj=p-j(()}L_QI<=pab5J1}f3y{L*r{sn65nFL3cAuY-vZkR)0w7>RY`L+( zlkF6CI-$vv$4(BqmRc(=Se#%+vfTJw*M_vL^>F+z6(4y-$brfwtY2z~tp0#DiQXNV ztj7w6tYI9qLLsO}Za$!Z?ZT?7YY(6S{}z`CMe0GG7Wbv`mF%L_0i}_2w{Wgt#o@W? zDUTI)&K>Z7h*2?e86e?x-hyezQd?a^?Rt4;8PdFvlLda@z?i@Q03ei^n*pYRgcM1` zNL=H#8}=MvDaqQ}-C4MHYhM$Sn?V3>d3f-e3ij- zg*uRfGZS+vjS8t`a~RP3;p-fB%>_`yH@-)X+X=h~#6id9l?DU*mEyy zHMa?e428|R571#a5))_|F+BcRX9&Sxw#ODqGK+iY(M&Pvi_B+=?aOer8D+ z3VQpKhQmqkXSYZIGOcwVDj$XAi(7qtX z;pP79K8@Ja(}#?NjO{4-#e02?j@&m}=I8?cLv_q79<|bzLboWpC?4yYDY40iB2{eR zmWQbslWb{*L^a*VVn1!VCj|#^jNzG_&jyvr!?BKtBFo8)WmX0tA%dDC$BR|RlBtySO8WDeXG@HK0+0fz13~wc#PMJ*g zWV$(@|4rLl1GXNeXP+b}Q2q3@kH4+bWQX6$`+^c|*>6`Wx(;=0s6Oy##kqDgf2Z76 zOLFnroskaswW9c77kOrCcn#y&dn z8I<$JIz|*SV>JmSGbpmf{ZypU5yDu#=;@#18LFc?yHCpeznPGL000@KM!L@>uvr4o zWyjvT`fz@Mk?Uu!f-JHik~wluIV?Ry*QHW*9Aze^ApPRwgmMHbP>p%( zpz!B_ErA8An}HR(Z$x-Hf@22=A%o$m1`Oh14ce~P@pJ(_^8TpSVuv+Gc=J(h|ANXU zUi^AY_n^Vm5d3hR&>U$xaTR@45@tLBnXTCQGCo8LYl!*{r05ZqLd)-c0$6UzY=It- zSfH5J{#2`+umBuj|L5o(@s0>#a6ka27F(Con@D!=A*w(K?G^DbosqEG>~dPsV0Nhhmh%VPl16!NTePmb9XQ5s z&>_+$ysro{&Oo?i0V3}r>ZVX#Sq;z#lS>JO7226wiG@uPp80Fl7oAL0>NG$h(Q^1V zkCVh^VnfnFW>*yKAfvG|GopJ>s?a<;15I=B~_AaHn4dvR(0MyaOP&Waga7<8hKFG+|yC@tCeBh+Z; zDr5;fh`t%k%b}yYMMt5+ag_nO_X%A3oOuR!{vWV_y}R zGm&Xp^~`H8dqqZ?VP)d((roOqeQp4LB9v=L_y=>=k`Dd`1}5{|poH3);mYS;p)n)# z0%uK+CC(sZAOzs(2DmgK(Cz?JJF4X%12gwGl5>ktBo9EHCe6RdqX1FV1V0#+$i`HG zCo_+0>ky2|%HxjyeNib%S+7$%NTq^{{vjbphi zrj8Z)%wIzT4-&dK0RwUfN6y$K?xj}$**x)hM( z@kVG_IZ^DbU^Pt^0M5HuCSlAM80nouV$09N64ffXDp{@I_sI#*)p+D#4_?;yL7^B~ zZWqr-%VnMoe2Q|i&C(4hI z-Kq-Up{^2v>MoR=sLcCD-dUi~k@2`KaB#oI;q4Z~;Ox$EI2_>alsXP`dtWI0m-=)O z{K2DcgPMj`Y9Ftld0Lu%37XiI69eL3|f2a3ln&jGy2Tni&;0 zCOr8705~MS5sL~Y`+!5~>PI=F<@mJ=0=&abI3In9NtI}R8h%@L z0?ELLa6jkdMrXKfKp;X6&~NCYuIJ1H+;|8kSF>PkQ!qGcD4>7p#q8Wx;Hqe;ljHps z0WJGCaCdm+TBFpwMxq{RGECzF9UFU1oY$iL>>4|Pc%}$S_XqaR8V8mZs>s!rm`|P8@F=p>;$6TVNFgQfH}{QEP}a#~&&?<(v>3MK=35QEUq?%3 zND21)c^?wqvWdU+7UmrA8>_u`0+B!^oQCvx_k9h&Qw_;kMp7SGCy=KqNsz0f z)D$+Q88xI<5yqi$^I~$U33jcSMXUA#isAJw2OSLpO$S|^gde*51s!lDha{7ownm~dsgm|u-9Gx! zv_M-hHE>7E=gM&f7%z0XBB3bzo8N*CZA6?^bHiwp=(aDXW(7n-r&*o&0JY%yn)|qN zCChne_2)0GgQn9K^$mx`PDmlgr=<-*vE4cye+q`LoagT_V>!`tSJxupH=a{>BYe-s zg!QHIstiSz!79eHp>vnPpZD_N>B~L2VEOfm8;t)r(vR<@voC}PXaYe-lQ5m9!We^1 z2-AhnCxa|FkIDui5~!M;nzjbluS@U(lSr?m_0!8$fd~OMl_`mkkIPVd#;Ce(p4d%{ zsrTuskL{(d@p0wj8d6yVT4|y;W&76~%yo81QQI9KlijBqirUB>OmcF>Z3&5kE$$s=3snB4 zV=%oj=1lU$F5uF&nDZvic;?S|Ma;xMZSfJCOoF0m(fKR1*i!1bDF@MONDyzOc%HBc zQm=s8Z=buN#A}AXUbL*Uq}pgnAI;S?zgwd;k2HQk4p{|?A+kvm7$7W;1j(j>84Qdv ztEGISJ9ahEOnFaK-i;32o_`HQ%pFR+FB@2;V)u_2&tbCMrTVqXS5-pq3T}w=Y3o=& z8m6!UHXzPc(vC718JII|;OW?MW2`d5*QOcO8p{y>W&SXfnUDPCYafJsAB&AdF@-4R zr!LfkK(fN1>KjV&UeL7&gak?68UUq}qs>DLtlX-qLp!>0^;G!+Xl-8uKdivM4-ZGx z$-l?=ONl#cH7SDl(E^lSvD#*8tHvNkF>e8QyxSZYeu-cn(0t9b0oL!a+F3dG*;$af zzxoj&7EpeT36BC(bZYr_k@x>2PIdO-mhGG33Oi8gOn)-Ba-dhf5fo_w8|0aX1B>{r zV}K+CTQkT_*5}#E?;_nyu_srd&m9L|=J|5EbI>wFKhkJ+@aRg-5c~|pD|RmnVoT@n zUDg_M?3v{AczD~_9uj`~k``Z`yCeU%n3ls^Ug77I8RoAx;NF@aX56$pwq25<$Ts$i z$+dRkdlyeC>rL1iBzy=x^4AMfh*9cKI%$3Z)7&2>SzeifV^Zb=hsQoh9yA^kmrIk$ zLH<97m^&Iii+pJ>$W)-<)($h))WU?7y(7I5+KvG{+W4O8UVRbCDa@5hBJK1;Z9ply zUbikJ@Y)exzXAqNX#PE0X>J72K+?KaaC$LCEV{Bxm#0GMg`b(9!Q%o#VsrwCRl z+G)PK?+NWAV}^$h59M0+#KH!mM&?caCZ~bQK^33~<{wR26SR_1k>I#zPcByDIMT=( z?M_EXcApmRNIRsS6K;8pLi%X$O{dFXY9ip(DQRy*q51u!%G~H-Av5J~QMSO^CZoM3 z_^i&XTQ!N{Vi(&BIF!d(tqt4LUmT@MSw2TV4zX`RYX?D;Bo2;6GgmMb4C7#@a<$(F z2}&@SD|8QM0p)swWoX!uorB@Vq#$5r0ju1bJAD_@Bb-B&N!9WJyW0s%lk=gAP?y_B zsMW0+H=#=xEty%fJ&L4}UqJSqsdt~BD{S` z;D-FHn1M^QN=K^IxgVZIHA*_=pmWG0{Ahx;b|>DM@7!66L2tgcuY1kvaA#@!`?yk&Q$VoXj4i;Efa zrcgpxMCBvlZM1B}F@m*d`emYC8bfG=8GdLKES84<7mnW+#Cd!jHa0>4t0mwc%6-Vn;5 zmbbRQ&CDzrP7Y_0b#@p$=CT@Cm7uK>wD9JH0EQ<~LG$C3TT~x_2;h_cYB}s8+z9*tu;wzUkHmyUN81m-Rdw4stuOKHpbJBmkwAYM154R7NYf7Nms^tz*F1HYG*b^* zBY}w~G-xqULSOiT>qqNQy&!}VE&GhGKXZzw?O1ult^~{`qIbbWn6BB&x-9*ig+00J z2ZxMJOed6Cy_8>al%bK!ojkj6Bd9fgvYnjCp3s;m1dWq+1pQB#71ZjFp4}S;Ds4S^ zy_ioc;hq!(7u?pMFyuR07w$^y*`gdPrg#`?wM^>Nnbp}PMs$Q~1q2RSua4ct0dhU~-3g!I|EbcI4M2TF$XlicG%*1|2Y$lb! zp=sm;9P_rvTo>lKH4FIchfZPF9oXZQYt{G5s9me)S$K$8$GXJl*qF zD3xlBS6qdJ$C~0NQv(fXppgfoKohrre zPUD<1B5;H{DO60Xyo6VY5ipsXFl!dmbh)x?QR~-u%o-Xybl#;n!~h6mh2eCOd+MUG zdJIYy!@U|EmlRS(+)fMW53LPu(nncd0Q+#4`Nws{e>!u6Y+sxOs zuJywf@j2iS{*4Hm_>Q#4-ip{^dIY@jX)x}!?p&3VaW^j)@bZa4UIhBxhuP_OV|cCK z_1N}OCmA;vURY5CZ7f>un__VvF}wM94P*%EJAVjoKjAtOw-!z7=w?CK$*BLP4Q3u= zMUnuxi0|X#%ISMzZAXKqMN$}SaNn!XFaUIE5>)0$(mh)JxqmkMC2Y;2;=O{~FM&i= zxP$2qj1-B6-~!?>U#ALxD$}s!1hP|aRR(qHV5hVVwvLT2S!jkEwt9E#B&W9cpCr3F zDJomQFb(QEnVvM_#r3qGCDnwC#*YE*UORTt%Qq1qJkG9zjNhg)*qmaHPqQW3hCQv>-7GcP9$@$G^hjjfncQhQJ zGHZZUX?%MncLmh7>FcA%;V|wLKzevOdZGE7Xc<9dyBN}0{YEU z*Ma)@3P1LVn>gQI0`E;%`7@)uG;5zg@1)d>`Cc3x_)IasiP$MTWNl+Vb}#o!VwkS> zXOWfhhJ^n>y5nON^kSnOqEfk!Zfc@^-bq7v84oP*2I*BuGWb~RxWKLf?-In)*Ts>X zpwCqs*L!E5dzY~@c?-SWvE1v}pFhY!SeLfSDaF4_qd1%#J>610$R1v_)jfFQ=ab)(Q zG0C}(+)L~Ob%q^J5>i%kOHT`5m>(1^9<~TPMr`%boR~NYASA6xf`as?`~qConShH& z06Zmgsl*wz0X|bGU*hRkt5u5H=O>A&#-KCX(Vr# zv^3~IBe8HBy2}nI`jBc9HGCHYo;;@pXiBPF}2pkH#<$8o)ACljDjGYK`9Uc?1_a!Vrm zntIG3ns8u@&yWCL6x40OgYU&Tu!yiR(T9K&pb2;uU_1l13|;D>xBH|>Qv3t&!j}eq zB<1XT+naYY!1s7OY5=p1BWNILcWucl zs_awZ01^HsbiSK!_}V%yT@JDd1Qw?d5YL7EyvM` zNgQo3E^6fJ_0J}#dO@+*0WloUSVro%pIcN|KPR9hXai%tNQEx!M#&M^TP#-4h*`+w zc5u<;@x!F{ENlOPShj)6k|V3xhWqpqk!56%G{?ls=QB?{Mt?{7MFm*JKTrC^g+Jy` z&}PEY_A+B#QT(^`Ktc$(ssK~ZS#dVJ(Pma_{mxs30qRy2)>mFmNLe^1fP*=_js1Kq zK$q6ufepK%8W~=p%AuKof*4K`B%#V)1|ABV$n7^SASBI%ZLB&omMbTZJN8nE0^GHlZRrodw`~ z_OW+yxE(f1Y~`%s1U2=7dnQYymgfd8**6a?wex|5EiCnZPYBS!h62JNz%&0~5jCU( zaBlFmD^{L%(^TlILzd}iPSk!@_&kJAFP8K3n3f$$1 z*-pbz&4TV~jCY&5638-Xrg+sS_XErZziFfP86Zdc(>m4|r$?4xaglWyG|OS({J0V- zhY$O*)|$RvFi`aGf@)I+k^H(sXzTL1ykt$T$(RVXq(%7sEne+4fDpVYC6arrtSyBe zp-)%%EwXyp$){$HG%AT;=1k{5!!&s`5pytnFpJCRv&CP6)eZ(g2)m{#(8Qx3(>J_K z46PP~?z2SPBicYH6q-b#4aJSRcH`5*z6UQ-vdK7TN#*0?8?uNf0sIYvlkJwODWekK>>F!w?6AG0=Qb6lPBkdgOMZcWI z#@EsnE^BQjRZ{0N5+$0_#hjYcCAmgE-9Wzc=JQ=xY$ubq# zsbQ3cmIM-3p1oaJ7KO_b`6@sVST~@UtZLRmc8Muvoe}WGuM9ymH8xdq+I>G!0i#Yp zAReizlgs$*%$%;8t(Wi`b{hT9Td1>ip`1isXb&RYIRl>L|Et&$FizCl5k>Nwn|A-H zzc}zcJ!#~%xd?+EIpbRbn3gB@w+GSg8Afr(m4w}C?W`&9fDn$u`bJV%@ZhhPE;SET zc#~qR6m6HKb-zU+KgM!THAZH)!lo)3VGBg@>8Ba1eNYWK8O>>B9OB8^b!KNG4>NZt8LD( zv5K(fX@~P7CqzhMIhPrAu(uu3#mMlo9*H? zS2E161x1XKo{WV9meXnr;LCNQQJ#?s~-ubHuSw->Ig?X5||BbsM)abAFwXc zuZGa?d50s?yG2MMRt-YKMiiyeW`{Ag>6xkWO+i;ZAvqzau6p1bO94JU28(^QN(1$m}9lX zWSUE*P}aalRup>_)1V5;J8o(#XI(m2ZJiaUgFgur_A(A|n~zAS`8D?Ch0@X;ndxI; z$Rj;5^}=goXv?SB|41}1(sHH`9WKjQc~4D#hGXGy!N;?6U*9gCb0^cLyCaV(l`2`V_c=NSSDJf@Ylg;)uU9&Wqc_$GN zorY0R>hQZdTR0BB1{q`>``sD2)Y6tU&Z=3H+i$$GM_Rci7gkO3<;_Z=b|-4a|A5oe zvQmIdd0c_qdxJmJoof)Sii&^u@fu_Iyoe{BvQU<8W#XSYO?hAE5Z54H57B0s75SIl>7v zMop=RKz(#sfN7=!LaLt0IfgYfQz*C3A1;~cLr~))er&F=`CMw`tjX<=fz#sYy={W6 z%OpZNr#yU3)MHc5?r&w6mW?(G3TVSyy7j_r;~9*d?-~Teehw7UjD@5yv+1Y&9J6o@ zFX1J@?i%>zp8_uu%Uc$Pc(Mi5D>pLv;BgCH8LP3U#2Nd#e~APPfX^+XM}EDDj$7l0 z9{PcOYiY~Mms}Nty1qUkXWsZdvca*#y;I1ac`igcKwk5bqWjS2B0wScD9FTK_8E-CDC zAj^pJq*YwXL8y{yW+FH5AVfnSxV4mv5;yJhREWk2-5+nM0(a@RRh>MZe?as&>6klP z-H1XGt|F*yn*y7kVkCRMe(x9V&WvoA1L@ax7Yi{TS$aec7~}i6RhvP@_WCwYkfu8H zovTuf7>h54#^B*81;F&_PJ$PgkGe7>08{j*YT++St=WC|e7#qFwtn zm=UG0^nE}My;osb!uyNUGozJw3&O^QEouMEB);#Uu~%xI1Yf~B@(!V`GOI=iR%+h| z>_$WQ+bA3{8MpVlE)H%F-#!iiW@DugQfFZ^=Fll;pg2UJsDiyXzF-NzR6Fujn`WF$ z>Ha21>D>y;F4h4UD;Ux;mWm(Oz46Q#Eh1(PoV8(D@CH^08TAtz?1zHOrII6boj=q zSW~OhigOgtNOifxLsnFP%%HmemJq(h+qfI#YXv=_CVPl=daPQ6GWo!>Y~RknBP5&0 zw)J+J0V=uZ891R4GW^Jp5L3}785gi!1uiKw+8>B6jV+&nKxsHmVQ^rqWE2G$i)_Jn zN@4XCXf(!m>Z)yt)QGDX-0L)ovJ){ zHMz8Tt2xKQ(VLg7$&+>iw!CFqF%n(-kJ0xFLnj18vd=n$sSQw>9O&YJ5$L)$nqs9Y zpEVsI>Ccwqgw$lGW+^}zLqE*S(oay~dR-ogWz*C8mRL{&A&wBl*-|+;Q;3`!a|_x~ zXcHl*ry|SSpoOS4*TESpCe|xj}E~64D0{(O6l81V(ZJ;Ffxb& ztKz{US+F1wqjx3GF0CYM8WXzu0&oO=MnImifUrS0A_D*y)wN}hRk&XyFhUt7&QUhO z4l^GC%8@9;kfS&+fBc~KT>*B|nt_w$4xX@9WIPz0vrkb&l$W9~y5Q%A5dKe{U+f{*_!&vLOt(i6?gC-tPCxN>)W$9$aDc6?j?e6vu7*lbfB`9{Tbq ztn3c<{lrB&u;s6i(ybAQ#Y$S5!zdztuEJNzAYexc9C zh}RB`<+>SGwujN0t(0+bv}?wYG*?&HP3=;_BFNyKC7v@TTcBlfSsD(SC~^_i>;F%+ z{>N8kHrN~y%zAG@Ffn=&Cro^i7u|ZfD_*>7A_U!O!WcnbLA{e^(Smq0^TX4_+~?P9 zV|#hLn@?08d&{!3t%-*xxa%}_q4%E~h3G+>qpZQV2V!66jH@hX#;CT6ij#v_Isk20 z(o-@6o>)=PNe(iRug-NVX7xgeF2IVl)m!UdDQ5ktUHA7tKy5tL<9<}l)Q|l{j)xM z%BeW6{kb$vy|<4jNK?p8xGRr%RCXZmxnWJ@s+3U#nBQ-jr?YzqMe3C&k17alS);}l z&t(vpDr*bI>Ycf~25^PPf#vcW7)#BbAA5Wf z`j#Gg&;j$Q!d@{0)J{W9$Tot^A=5WIrkM@=VyPghJMMz7%#=F=3yHFdKhJFWb&_mm z6HK_%9_%^gPwOQwVyz!Su0hFlvv?J*)tl1q$r0}Zz=CIM68l7w1XW?Gm=0UQfbh70 z_heEji=(;zgOS#?`bs+8)x!xa7*9{#`FSrruydpR`C%3mX76ywba5P7HG~1b@1ou0 zap{HD?B!8k;eZrJt710SaUZ!&Lhs`g#Yi-F%p#Fg>I}ln(uNiQ4?V?jOE9kxL`zo3 zE-fuEWo9vQ6dPu`w>Y;$Q4$TtZ7y2mB=do7dvGPL{L;3s5UBf(@BPAaOCdq|vCe*6 zb>htAmhMH4>SQSMDH!{I#S1LvRL%Dt4ks1>~t%scSQeKFm$jBiggNI%$KhLK`{8m4p2o*{N!If8Puwn^xH z_Afu}ph|rNgYi%T#yP47)M75yS7NheZ9~pBSkB6RI)CPyt_ipm1F%Y3S1n_;Ix&<4?0n`IxV?|(@&V-H80^a3oy ztt==%JIv!e20Y$u6=L2vfBq@a8ucCGAH1wt`iCl*{;XA_#9x3uzGzfuNtjdtR&ivy((A9Ak;Xb6 zu-goHCWMirvHFQ9s=EJ0_l5E?oqeR8T=CgL>QY?qjcOrXLAO9ArUoSZK-XzX zW{cy%zuc(xU0eUkhanWSvn8E+cP#ClPPe)lj*{j&J;Qjyo2b(&?ieA zPPWw zH3Lmff5P(&fIz~Rkj+30`d^qyURx#V*ysX31#V6|2l94!&I+m5ScYjmcSm?ufo_#b zIY7fC<*hrs`d;(Jibl2FQCal2yMC=}A{NUl`#UxW?^pAX^CO(Tu*hF^#*pmCiY4p_ z)IQ`pXX#Ozcy$)p^e4lmw)CK2mYUWTlt33l;`7+5b#q=_V3mt_Ishy(cT0G-B8DB_ z5*sa!Q_P~_iy9oX+6+UMnvft4#m7mf_*ujS90j?=Lu1VJ3l!j-mc%gEnI6{hlY31a zp&diifGS~@!^>6JsNibF)jZYBF&;cNy8OCG&t;(rxWtb@Zrs{YqcxnVOeKq5bh907dN! zd%}n4PS8n?;a8Ic-&_#{Vf z2N z>41w*s7CL>BMVx6*E)>86T?~bc6K!jECe(Vq@cL$&QJb$GNapv9W=`SpO%Hq2!9kGZFL58S&Edyb&*K4@Plw^EaBrb2my~oANSCM- z->17d*^VcWkb6AX*uaOXGBf>=GBQ!ToalSdM3~gy_KZL~87R3X7L9K5gjwf8;^*)s zF?IQzJJf2Vy7@`Ooo_h|go+*%g6F09tk74i<+g4p+Zn7^T_EKkJC!dHlGfxM{*M zd7R~noeV~?+3zhzRkfSV@6?RcZZcxgcnwj8VR%S1-ucM(&XI?JT*9|5(TG8dc280s zuN0wm+`#E@X-YuCZi*(W>)FhK9gZz{YETGQw!fH;zr^!1~)RhNb=QVNdj|6z$RHN|#6$tWpTk5>Adln|_P@Vc>6 zH~8U65?a2+tHhN^e;!{>833?!9uv~t$t!wn>fmpK?%^!D1hE|FPBx7^%N&Q9$G85g zr@Et;-nHV`EI&>TOl>d|U>Alf@BdSwkpM0ApTo&>>opB1jws@!od(rjDk7Wd4nB(! zMcnev%MXY0FE{CrULgLIv7Ve_XlDkd-7UrIcDWOw(73B&bxXX@dUgsyWHpDIt)SWK zi3>B&&PWdO@F%ZnzR*t^@vv@TG@jT&AMqjWHu4_7WQA|Ao%ZPV+M!{J3u&OK{7neV zntGROUX7n}=%oKqs4XeiQM`+}^}_5&Gk{#xQ9GY41ZoVML@}`1bgT2-derl=0ni1o zx?2te;G~T{f3fU)VFmId1&pGMtG*M*t=>u{d4rv=KU4$>7Xpei8xT-99=c;_h(_Lc zEt$Eb7V*W_NT(y(4DtZHiI9fA;-P31gUdF>C?$liLQ_n)>(u5@n!4_<=WE4&hLbla zs)IO*$K-N87FYPe$GfEux{f^LVNvv*{Id<{Yhug&1bYvbikqF%Vi>Na8v zHH573=@~7vkqX+CN4hk&;An-TW;Ul6Q%YyDw|=T0W+~$IE)_jP)4{v+r08AuvCH8_ zuN=6X97V7i#zcTT!~`CJx!cEKDv)?J0rFlGAhNIYs7Dr4Cb+W2o|NB4173zSued;W zfil_DJXak$!-%`602g-`H`B=lzFdTaV3o#Sczau+jpC>krV3Z3Qw=!b2dTN;cH}u; zdUi@di|WZMte{Q(zE0_VB3+t7bF#ct=72@J2YgeC0Kc-yOzYYTd=d2iH3Y>4QK;rK zVcHO%toKAiN`Ave=3G_6NgFk`=$C|HMTym&6OOJ~=1y3*t0xdUtt28%O6`cS6d`pU zgFc_sHhQiX`hv)nkEDTK%^(HB^gSbqY@FYKcR^|x0iAmW9sHB|l(SnWM;CnBCo*AB z8Go>l$n~ZHXH%ib1P*D_ zg%-Cr6q2hie-aaraet<3sp8l|6CL%3+QHe9%Q-#a4G#rc(4|Lwc3yG$3yv%^eXwj6 z^`U+0F(~6#5HTp(vvxjVCFi;S=J7e~Cl2Qy1YkdSK&QlPjOKie7-Tw6C2#MIqe54rP9o+i&|t5^?4u)O&*FX0hQ zP30}xN6MJ)XZzB=2xvU3uQdmrrsfGa7$EaBhIPO|z`3B>Y-f9jRkX~Vr2wPqGYDgJ z(`n#O7Dg2X4%7oGDr7DQ;T->G={ak9&Q-CoQ9Pzs2U`hs%PwmUK^EV8NToD`*&QP& zl~?@7BWY8=&$`rAL%t*2|30U#p33~n0hgA__PR3Sa|v>tB)seZLzrX3W<@LPND{!e zHnB{Xz+G_UVKbsYJ57=`{SILuzXd?u5~^fP($*-Q18Vr=$pedz^3_d9XK2fr6;ISP zn5%l+Nxa>0qq}5YpE4#QL16+U_cO084nzeR5*JxvD><9dFG&Z_Z9BZT+#d8b*n-3_ zF^!kCvR~Z76WW`7O{s8)X*P6)@P0Q;V%k@`tPScDOpTG9Ppy+@o-^}C6RVINbcXNx zC7%DYYfvctf_|nBF0_ZRSB*?J)5!JrPjIhX&UuQPwKj9!K@^ zYGpxMp;?p!(ms+KAm6+$IFJri^>L1i2;O z|6M$K{&@W&BrScfGtI}CWVo@cBn8718L!W~pDMs2)x&F$rSz+coFBwNGSWoEcCMhE zehx+sH1bR%dU-_vk0MisIyUB~BVE>;df^5`{J%kzQCX6zZ{E+^K*lSpOIlIo4GNuq z={dIY*<#ouqGJJ8_*ncyD%-+9?zh+;TGw5;xqhWyGF{d62|Bf-H3sIPb!__0Mu@A;ornXH@~5Gg+T}ZNh-JEZ=JHf`nDJ{ zemv%A#wG{C>RL>FheOjhD`s$cxQk9eKOU1ES)Wo50d&*9O)(VSQ}2iLRTyWUD@%?~ zEK&%i5w)*|D&Tc8miipn1Z=(}`^$T&cg_oz*6YJwK;@NXG^VUz#1mQE0MGWlEa98H zW&IkzWqT3x{V1qzgTV5~razA^@ic3!7^iKdftcJs`8{1j{MJ&)wS2=98_Lp0f*PlX z@t6+3vOO}r7ahh~uly&bv8Hjc(bfEjuMM0t-=1=u`Dx@Y(~_tI=v#@&h8(4>#5riE z2d|m@zCq_!M(nbU8|oRV6@nR-o8%LY*_)RVlo)VvH6V9U%O78>&D}48`(U$<3MO1= z3K?KOTIco!kV1Q?tCPSK4Ej^pr@V>f^>n7|j3qX3R6i8;MuPKnSEMUcCYmStc~?pj zY8F)V^AH#x3O;xCWZTcT+QGP79Y6upoYKHk4_!xJu}oo^lg=D3OPj>WHVri}oWooi z;Wch+=d{64gaR0~L=~cV?_D$aXoyC2ihPXTzET^5FYoWlao<9JQ05DO0mHjy7ePiy z`+k32F`OnHhbFfGAXis8zE}_A0ICbkBQLJBK?whEir$VPh#COLcS%K@-IMF88VcUiU(LK&2bZin^*zATD!>K9366X);ZOi1`M_2Hk?wh}Zf+vImJqCP zB3ulv3*}%$Uq#cQ{I+8vt+n3=B0MK8K)Cjs2!b4LhXM6YsL&l9;b8+u#*6VOIi9{I zU9rC5Lf$9tsv7Z|aH$a$;+E%@UN~h$PVj1MiwZs}rt+I9H+FXj(uF36n1pNci7lyA zR)4wC_knws`18ySRe3ST`W*s~?}tZ?_3;awyculyJDlv3;wmbhax?iZir?G^2t0!?mRMV)*)y8QTrpyG%&xi!# zg+jA-%6j8qb=?2bcX}e$)`4TN=cy))#w^eUZw5Q_u4Xzfkt@bnFycIeHWxBnoAJE9 zP`2d{XA0+}+6ho)Q~Tmn{0iGS^y@)HUgZ*Lp)_PHw#T8zghn(CG4UKlUI7sHRBPUJ zYztJF2ZOIKMoM%*&JmC&ON>okQ2>{!C4zvBuWVRQFT3Jm=5HE!(Qv$urmHrZ#GxZZ zY?8`OeED+`WTXY~zP&iFkYxOGFpSHYE``4UbS1}4Rfk?nkrQ!DkuJW@&5>iP$o&yb zcxd2fQBeN1wKNlZ{#Tb86k{sS?i?}O%v=0M&Xqz|fMp+jX9U1h#kKk+a&=ju2h`#< zwzO@br)Uz_SqRj}yT@X}w=5rwWt#4>EYTfM(u;khw3DPE8JM!nW(qQCYnN^uNb*^7)$!4?zT%I3cwRx!AQUfGu{wcV>QX-_)?)z0+f~14TPSRLIVM6)7 zTT)V_Bm==)Bc!0QrJ`zJDz5r^1V-At=1QcOOJ6sqkiM}(T3l9Y7i7?K;Gdmf7s*MR z*7(Df$85u`)SZ^zvD-gd~aji8PDE21_oDcQum(u?7_urzZJ7$}(p zdbBlq8sr8tX>2=k*EfThdJ@aN{XPH~Kz%?-JHR!c2ZcBhy49hTZh6bE{!FBW26Zxg z_EY|;+Vc2R-sC>raQ|h^j&t0uT4cS>|G<>*tp;z}Jixy6wM_&cNm!Xu(R#~DS~Edt zW4bjPmQ&mC0MSQYNm~k67eS72I+to?(>(j*|F2>5Tjckd|V8HX^CG?~{cAiQ? z)RvhV1V?*Lp3exOdP6lNfE4lf8v>{;!Tn7or_;-JVZdtSZ~sr0b0TZQ^U|#JHFs)g zL4~R}C+ctj7(vcycqjl>J=_4to(R_fyMtXMprSwk4{UpgM$=#tb^tN%b5Yh7&clbL z@$an-!zuxPDucG&jFkN3f2||-0w2T#hzDK&nlHF2^8_b4Du87|o$8&5!q3~y4?f&{ zy^Z!J6o#v^pS0rH*9a_WQ2t5TtJu(UXpN=eYNMoo@ZIoE-L&-o(56C*nbSks;Vux+ z0GhF)OFN>y3E+KdH1ALSioIB)VOty!v6&1$4`D}+y+4T>U=O`!x`*g@zeJtT3}<(k z(3%2`{^W#CGPq~jHl%S+TbzGKN{TBlR0?t@xNpxa}j975pa zMe-$ZOESF~tsw~u&lphvs{U3V`C6B?hD3~h=RocJ-yiMd=PoYCfWQmU@a7(HYA$!& zQK*|4%)7r9Y4eH-z-+o(u|J9Lj`cd9|G6v5R7LD6=y!dw ztVW|+?MZ3IWdnFaBzM)8VrVu$qUMWR*R7MrRGqwP0CQ=#MXBUyd#k*5TdJ%5C)NmN~d021TlWi<1 zb1wF&xm{+Q01+Wj{?sSA*Ywk`X8?uBdRod6Grd_H^yC$dZKiIVQ5ZP$)>J`LsAvcb?E5_0 zU+1ZO#pygUZ=~$ML;1B+K)|h4O>X?|u6RTu=VF2T)z?^S?EVMm*iMP!tm?XtQZkIr zhH)j7mci&=H0v!A@F=gkNa{ zr-m&xm%svK-)7QTNafbU+5iX;)tw7vdNb7c@LzPe$ zRQ~{8@ZT#*PTps-oB58Jh?9;mvurcV1C962fSb7-4P=aX!NQ>5T}`SF>*`YjD;R+b8VzC3=_2k{t1>`9?gMo z2T%`^MS&V5jaYZ@B`UXbw`Vu)dk6$NNwDc=llNMkD7;lkJj}3OJg~4x+%+3LZ5u$i ztDw5YX{u#>sc(s9lYE_O&WOns_G~!{hmTAq5a_zMINOd&h(Xd;Iv+OtDUGtOa>VOi zzI(+bX!bp`AR>a4Q_kKeZsun&1ws+d`-F)8!B*}IOQT5@Z^ak0Ndc--RV-2NqDC_gJp6hJd`{q5w8Cy! z&)r{!6aL5jC_dX0V~f&hH-mIkg{-{0*^&_eumrLR8SGAHb4&EOs5&8=W7u1S?pZjA zfxioA9yzk}eNe%x3@0i74}*2>f^?1ihvV;$q=A@8Ajy{)c{u#3Z{k@2-8G92SQ*86 z^dVcOfUYI4aI+E_qi?k8jR-~AAAcFq`0eh`RnvPo6Do^qvY1eqNwRlJzB%;`AA^WX z2>8#Mx0jR%48@aY?QWm#-kkOdPkWIw5YeYI%XoY=k*2|%G6h0*YtaZ3!Arm*L#6W7>+_4c5qTmRN!;TE5^C;eMb;~iXPG4zgqS(l7FP->& zvOg_S#2By#?Y@i|Zwo{@Biq8PgfSQCJ+3v|vdK{E7TJ@kxJ8SByUKBHs$-N}VbE+%2c>wyvPcVB#)xd|YUyiaDgCN@l}6 zx5{LO2-3(xOWDCP&LB zG9KNM5i4t%UjPvJw2q~pNA1qbSV5r8OG>`Q4iSN5-=t-A47Tpwy|#bMs{(%8Y7>CY z!$AOTGeM`wRZ6~tc_jD{1MXM&=;&dJ6cw~O#IYWbgxeA^s(`=C_K}4ejKjQ=he5;d zj?RSNZ}$?oD~cQeN^SibK3dQB`D;5*(vJ2zlH?&)I@qJBB{GwVG6Y)^cWhTqF!0WA z=iDY!;a3|NRF4HZ7SzEUL*>?=~w^mGbRVNZ;5$xN8`tE-YD;329++8XS4EmP(Lo2a<#^=uIt*esUMl8 z8}lvO{hl9F4RD(p_y3x$`OMOM%|jP$M+ob@r(7m}_? zilyyGLyR4hXrRZc-7U-)2{vjSOb)6W$!8v(A#a_j&-Rxzp6ZbmuO?8o%IJqKXpnM> zO?`^%A{58b_hrX+!}`%>r4H+|t7RTav{6Z*o|X!x3@R4_rVf@#`xwo&p<}RmPTxRB z?Pzv&YQMG`k;7c@>gr{c3Y*DJVx(7%Rq4*A6ei$nXZ?MuXUo)ol} zE+vwK!?}ed2U^&BzBO4{K$w6nw4GjJ0GW#gLf?3lVi*%3YZMtJEPgpGHw`$T0PMS3 z2BfngTuD)uw&YV3T*0@G!g%_+kAmd#?JZ2h#njBj@&7Dszf-;dRTr{ORp+W6M9o__ zE1qL+ZVBR+jP@&>4Lls59gX0L(b{GStXuNNK~{)P2pP5BjJmXKJukI;HmBXYbQwkj zLDkLAK^46O(0_Nww1UUBEs`)(sTzzrmBkrWkjU^IAUfTQ$#P=LX$0^G!bjZk{{pT~ z^iIVK3__0i;U@o4D`f{(4boK>UslodTc57`Ft`6o~hn|=y!|wGW z-8Kbt3!q2-$kCo5CUco@;Y?akzvDtC2`nT3%gt|GN} z`CF~%+_#m}V-h~@X_SlBT-D1u;@XZCd&{X!Vix{b#fBc=6Q~B`1NG6sG`9vDJq!Niu_LhEn{_s)l_0DhktnTeG6=E6sOrIGulatc)|H zuQqRW%t{NdB;tEhIj4SQdrvM-Q$)1FgNCtRMrq6tr1<#yGf03%elJYMAh%TM&-|0A zEZ1!o=7nzu7l@@DQm!NS?tIv6v?zfJ(E+0IS9t_+(!sM7uJ)rmWubRwfZ zbZfBOZ`_T~M1f?lRZGYM1QeSFeM3pEP(L$0gUQH|SQov$qf7bpLr8Jo8Hn6E|DIu< zab9+)0_AfW=`~)Wy;k#3X2xl&xjdx+w`xJ`!e;~$efTJ8re?WkFMydGZbaVqU?-Os zkWmEHo>0udQo=2i z6{P(D07UPh6$jo)j*VFjqBr|9uW7Uno5_X59Gx`t4JcY4Ds}z$=Cf;{peV>^~Q1LB9e(Jkn#@Qpc zj5^&0bo}Dmc1QLZ=E|In49+8c=xQ~Enf z(d~kwUyUzDB6)S44B>w+gM7T3HmP7c)X(bYq)Nr?gh3Ss&2L5Rl)^i3xGdw41 zwA1c`>;+!c6}d&o5_Fhoe;Uy6S)st)(@I6-pO2f<3A7oBey8ps>LAh$6+lcOqL#&h znGxIZr{8J!I%bYgfYo^%ec;TUBOc>T&s?DT%u0G>9q?jYCa(s1&+{9b8g^ z;hgVUXj4WsDXkX7O$n_c)_X9F7*aw)<0%o;Qi`2DI%JHA zF67vZhef|{>{;59uK9U~_wrBQR|?=YsvC_BL!{q)vg|b(it3>Wjjm4o0QZ4g zo(i`S_f?A(**Pl7KxP5}0%fQH28_NqK-$vOA+fgswbRApirnB2er7tZ4XlnI3}hRO z9zg@xXM-?pnGeoNsEm7PgDOsSQv@W+G|{X<-8XI+DYm4aH(6`m!%;wrQBT5mS5&dB zBiaZUS@MdLT)Qw`L}N0gDP}bmFb|~b?kYyCh_$Y9dQeN^PQdw0(%{IB-DlM~e{xOt zgu{Kd3fHm)M#|^&!#{`bwXHr~Zp~vbYMp%8Bl#~JMFMVd)8ys~;#C>d6PUu1;dW|a zu>=5Uc0_Lc8|jvf*FO=--%4|ffC6c;d|oISj;uIzK~RCqf(tKKknUg$`34>6Kk>lU zvICkqt<;o{r(cmix+ov(K?TnJL=Y*eyc~YXW@hF+J$9{`(sHxM^4tc<{6+=kBXH~@ zam9otea8>4WG*x#69}5Azkd&cl5Rrd0+>hTL{dm_l&XJ>$v5$A)ys{%l?dAr>h8}7 zvIyrw{?@2;ww~+T(fKN>kRZhOOIz7p(id`arU5aHxX^jCKvtzYUmAEAHYQ_r^0W67 zio10ijr6*pDOcb^9ez=MU(4=SeqH>j8-ec2DfkrAk9b@PFlZ4O#+dz-Y}{x*mR*}< z$2X4NGpW%m&X4cQMB(b!7=O{1?6yaCk{k2kiIWnjNdYmO6G%oO5!!E^gZN;~_$fU;zdTwY> zH=O&Hd)|Sf8=28s>bCH@Wt<=Z8Qr(zq5_LjGdAGT+>H@mls$jNzgguQ%5Zqj=y>7@ zu2hS9cHe)4cnZZ#*ehtD%2IV}WM=@~K(Vl-HNr{fcYS+kE~QP7o;c5U{4sJAUAf9V zeH^6VGsedueajfnp3y?j0LN%V8@Zd)n3@xdAZCo|ogdbH=?j$qp?CB|)vi|Fi9nz+ z+^R~oWOL#>b~VS)O2^vcOYlLL(qrC*Rc#~VzXbR*k(zn$-?+Qp(U@A%Fh{1&7u!`BL zw@uTT5Cyo6qqV3i4sJ-uQ7!T%@E(D6@9u-;E(uEy?{bZf z=8`2fc4)I=*qmJw94Kkl(pv_V#aWurC|%U4!HyPokF!PsJbt9!W&pJHe6!n?!jua` zk0Ii{Q8p^`hrfLpoY+0a@6h3cN9XTNIiEC&xZ~00bXWtVEklcV!SY?R|5QNtt28vX zU`;P+1^;nwAAi~ufZY-QJRh?@E$7QEpz-9d1Uw}Jad+a;WJjX!ZGhjF*vluu!n@5T zX3=&5qT=GRsi7WopfaZ}MO3I2JLVdfN^|C(Z^wCYwUmWa_Blo=N$2qHpsbODhsERh z#$dxe1En<1j~mKVEn&%YgnPj~slhRufBc3Caf~-0kSaQ=He12@<6zx>*Hv<>CL>`~ z9h@;>6hUMr)gcFrD*3QM=hHA|-N$!p&LBo$O+*|5)J-=6Vf@sJwlHqFu{vgYNQFX9 zf2VjYJN8->RRP#_2UbMIg$dFru#U4V%sI4ZXYG(?-&hCeYZsqHmsFnYb7jr@VZE)) zqv9!U3}4x*wArVc^n`6JC9JV`K(GYeuLHTS7pS!x-2NL@9W@TP3(a$SeQ0%f$d!QFc_OW zo;lbUTI!ABl%G^gJY+cKrE?{gd7;btq8u5qSMaG2D*B+PE!{R9h?+cX0UxR*h4&q7 z$3$;0JB%-@d{By%E~7P_dO79wgV#7>WE&tlk>@u9-452g+)34ipKx&VSTO?yY=&8k zw+CsL`vT9Kr$~~o9!9}Yp0Jm<*`*K@qjdg|q}`_*%p=g8@J<7oc8B5QO(M>;j)b}v z&YgtPU&HrRMh?V%xmWe`gJ(10;+NSi?5UE{g}c10uPp44lcz&r#r4oUo&-$hz!Ath zi|YRQD1r7=coo}$mSWcH4#i`A(`0-}60tM05ZH7Zl9ZR*dUh2^*Dq3k*wQ!bF(t5g zE1h}~&e&4Czq5ibc0=DzQD6U42tn});5*;yW^iCfE;#+M`O#x+^Xg&zk6ZaSx59Mk z2WNKNxgu(h!$5}*kGSF8q-yC*#f!|HMfpo0Btv=X*DsA?LTRk!i=n%P!>&}c&`9>h zX+6pT3k5P4n8%BqCr8! z0Aju&M*O;puxCgMEJbqcw1asg0L}kRI!1?im<0A#26LB{!l`fU=Lz`v>5#0q*O7`O zP``%vuJjG!7<_R{_mp}MRFn@0^S&FPU`$i0>*~xoCRgApX;l1=u=$TsUQM4E5EHx; zH$c+PrP?zX95h6~a#JYV8@L>9^ISvOMH{2mS8H8eJod35u|X_`n0b~jI%?$dj}7i9 z)op|aKUpP{Y&|q@;govA3Bk$wiU4)$2)FVG*t=VE=+o>?FyOOB;HN&CCcNdbr5N8y z<7G31ze-NsQKq3CS8cL-(*y6R&T_q?lqV$;T*!Ws`o{pain_a$a`&RfOu@Tg4%1W$ z97tu)0`9KOkAvN}S_OaNzgLJf|2Wi%bg0a6k}}B}xzS!RY-XJB1+brI1k*l&G5F~; zrEtMkhvA;9D8;co!(*<9p}mYW)nh1fBjW|e+u}zSGtMyQlUv{xer7DZt)Fs^z9ci^ z@xJ5e@6WHPHnewuwx^i>`BP{C+Y$i z-X$|xqVQ&ZSueJB#yEQmwk~5oGU^g!B!5z_6o#~S2gP4f+ zzEB%)ASLPIdn1C=WNeE>4(VkMR%6zj2m${rlr!@rAb1LTKu>PMC6tD^f~7iAwqW0C zr=)EvLf-RR?77VMJsZ$snqqM8o2Kxu2p1Pcgp@e4#Wt2evZWbeX>ljrI@EWkQ(cdm zMOxFd*b|15x!h0--38$C(G z;i#M@FA(09_0upkbjsn?A7Hmd7~tYl%JzfcRyvd zxW_eGvI<(@P9tVIi^%w5DGEa;P^1)`8pN%n!t`CC!5Pbwaz1tmWT_{c?UVj`mn_fL zE%Z1^lRx(Srp|3eFUq$wQ?qqyeAsb;1On*kfPPF>kR2D{6Pv-yX;Ym`Wl{P}U@!1@ z7nb^cy%;mJ9)k(r`CLR>fivuq9UM_y9cdKk#`HU=uy%he`}U(^KEXl?9sP2i4_OAr z)2qem#@0I4_>-%7qTv0@SM;Dj)Q1s`W^=4MCDtPIMuCvhn>oMCzaYH971-ni z61F&$hwly$)28xVjqK`x12Jgyk|Cd9z=7{4wkKm5TrVHBxz@<{Rz>$m6Uw7&NbTrp z2LvV+MLu#TpZFkQ#(cH*?j73oTnD~6w*98xA5^_cjg$}OwyP!nvR_;$K&C2>H;S%` zkVnUq7+36U@iq-6ED8H@a@bjQB_#8_HsHNHCT3x`f>jl@*L1E7L}B_?DKwS;_oaTR zNBAYv4SvkjQGNID|HiH^)D=xJAX*x?0v^6~BiMhe_={1IjF;iQF8V})y7K~Ijiw{o zG=0zNe;x--eu+4n5f^4Q08rap0-^YZtox0!n}wEJwcjJKRCp6_DEY^a0b`t|vb?%e z#=K&UDpDF3*vJ8j0o4pTxu@U$w97ZXY^KL=q87oIia?8J=e~@0B7YnUcW&9i9(;{w z46l&do^&TVtlstiZl+aWNyon>LqR?q|8h6&PbRqIA;)jo(Ws2!Rf}&XlN!l5KArqa zy>dn;vaYqGK(}3{DzQ9;AA`%jra10G-jQDqm2GeMDZk%M~}U1DkBw zB%i<%wmJ)1HoX;!#co*C=I*jYd)|X8Cre%~VEwm8VU1>kpcZ;`b}rLjTOltAjxE4Q ztt@rWR(PMWP_Rx5eM=o!(Rms;qf3D0p4}md<5nRF+}JBq3!H!q7h@}ZEE#p6i(Jd9 z{vZX&EgqN^RdG1chAn;;J?YduUq%YNHw?`p3CyUC8k9wf@U8c^ls~=Y78aX5jp6nla-5qGiUutRIehdjpebc6>yJ}_Z%m9ftGhRBB)lTH8Z6ThkEYOD%n=8}AusgESAr%x%+~KV zNDzfRL$Dqu(jprl%0^V5`W?yKY&PjgOqLZ3DgCA;^x4#64j#!0Oqo!8aI(N+Ioj`g z8F`XT9~S~)qeQn1FSd-_Q6x+X?C1&1)J18P%IE6{+w=AySOtd+d7z7k4J)_gcdSKm z6V|=9VAoA*2X-|CC-$>d4!3lkvQu3Jxwk3yVA(KpU5}4tj??x}rVr1AgjNAeK+VG~ zzU|;io|PQ4Z;P7UV)Wit$TmfqLIBbcQ|Xk)9(X-zyz`%gF-Ou}~)tKe`B`bh@H+9|afqTp}k?U&HiFt;$(YhbOPCu8opEeKleVr*H4tD+XdqC$41J(Mn(sXJ^GEhqOzxA?16F z0zn=mD2tmqT%3bX1~Tt&HJc%DftO};?!qRVfzKd1q*JU(-qv6?oWp-``WC%HmgS z6ux+M!q`AD5DgO9CWoS|nyj+a1cIyeW~)b>*%+~BynX3*0c$VODb8&Wxk7=4+8Yif z4Or%N0?8VYlv=q%Jvz&lz!#EnynW`TTn-FH-QK?_!?hktC_d)^209=*28f4}KvQ!v!mmQcy% zFp%U+=9e-mA5AX)&@L(&A1Q$!N4kutxsk=#vwt8q;cru+k;@h#SmzlDY=)94Z^J;c z=^y?v2>yccyU9OWM$JT3o4b;){fb0j5T0+_Bd*IK3_sz3P9xo8_>L?d&f<&f!V%77 zX^aY_4qTdcxLa(O(S>ZF&9_OqOA}T6kNUkOKwm#+y*(=W*4w2?Tptl{RQoxeg|*>T zTvjiz=9B(Ca2R4m;&7;e;;x4rX8#0V9psdKH^5+kgDKuZN6$h)!3)HXNeYlQTL8_6 zQcH3ZiR;G8>V@W$mIRCt3hPd>*J9uFM@D7n%LJglv4<9lTh*C=dS6`8fD6!-&Y?u& zjJpARI+1VjA4eR>u~bt z&OKElo0s))D9QBWZcY<^}?lNt7m6!Sd>Z0A8<8koK1@D%^4dhZI05d!`n_Rw%c`PZrUfYK_ zq^mNu1;6vln@uW~wQj~&+O1CE1{!Fsxbn(pc;nztm{P|>HU*2Cr}XOC%?JV<|MZ2jR#K{0OygC1+V~wh`TSbZSNkE&yFX7 zgV=trQG_79vRv4bt`C;hW#EAS-0h*$cbjNu?!DPAYa!9oA>l%rS0DSlx*sf57<$G+ z3FUfe0um5Hs+ZKjq5=}Y(HNZP`uIiiNm-#wycOKop9(&;Smn6s2f1+lW;Ukk6vyVR zvN*n}CKtQCxUgIO8GPZ6m&S&R#9W{MVKhUwvwL*=?X0XdG9T%}w<#!be&5rH_g%5< ziz4zJ$=iu-&XFw+mTq4uPcowacy8hsYQLAqH>E&?e#`wtv5uTJ5m`ysnaDFk^)2u1 zQq|52*-+1P;B&QDGoZ6!{_nr(%4RAK#2p1M4+jx#A{!Xu2`*TUq9T)YE(gbS-`E@IsG!B|a0z z9(~}}c~Ok0u%Nn4c5M>SOzNcagd(MxMc}wP=c36MYbYkOX507OS9hFMp?{jJ7dVyI zOjieLePdzfD{+wlxUjQ^z1xm=CO>Cz8kl|g*u+KCeCo5!nj*zSVkjT&Lbk==L2MyB z1AbHRtNF%13XzyPBJ7Tz@_Tuc`gv_)14tgCAL^PFa}^UlQ)4hB6?jiQus9Sz5|m1! z=8)*Ci_ERj4z0`gC`O4=D~-NLUU)iwB2_t5S)U3%M}1Y3E_ALi(9cL6fpI;I(G5`X z=o1Nu{P?N-A-ABorjad|BC8j!-I@LHv%M;!Y|%Jix5@}3>yRWCi<%22zi1fsN;$P1 zcxf#ECD!Z0X}#kyKmltA+1{57?||&uQ-L-xhPZE6+>~b2y9@f+FH?_$>fM)N6qt$E zY5Q(FmdV4@gjD9KG`?$GSUVXX5A0O9&8$am=vC_T&_BE&QFLrHAs+`8 zMe$HONGt5XV&u#)stNOs2LcVQ)+vYVs1{NjzQVk8GVv5oH;`~1z|uPdh%9@K>_)Cr zprp!(Q0VAbNxpC{0LyhG%f|IW$VGZ^(n;Lu0uH1W`_dpR{Ck5YzJ#?;@RoMU2Qc(W z{V93k5-o2Ex0w8+?V ziqhzXRCr3|99S?@)Oi(u)-41a!;#7Cke;RUxwHDq!?iqyg6URIaZ$gkAG19XXQQb< zTn)n(Ey|(HODFzl$s3ly(0EXh@sWP2rQ%`LuiwBZ!MawiIjU|+%Y_Ji>*uaJQ6DTvN-$Z0(0du{-Ge=g!d^w;r}#J(k(43 zi?PIkbt>OX86Gs|(zm3s=~#8>#vv~MLusA zSA5hS9t*Q^01x^Y*&^|NRYulUXw)AWisM~&_r)W6nJF3b+! z5qrV?`jv2(<--)bpZj&VYlNwk=Sks>01-?Y#z6TsA`h~&!-v5x)-E1aMAyRfwW!Tv zGA^I$liXH*F3ca%?d#gtf2J5GgvRG(EZj zI9kcuxeEpYLwr;qp5b}BK%pyx{u5Y2p0o^SI!W&8joqS5H)_5eDQ4q$h$}!8A@rh) zVPaV)Z3sL*r`cb30e@qPJ>R!a0wADiunJBpx1y#e!%~+7b^{R&P?bZa_KuUVVbW3t zZp(0O3V1s3JSDrp-%688lZ`fo5xh*onq?zuoGySF%vg2|r-^M>qnpne+yHHdnqlQf zUEV=neiDm}>|rS|)6QR9>bVlOE%=94nD7i+)lFC%musM?-@fhs^bP`X$}+cp>u3n} z9~XUHHZ~-{ISKu?x?;qKbsj1!c5i$8T%$erlPx`_O*)w&MX}YjbGRz!O+W`U9_SA& z^4K$-ywpnvlvf}HyWUdqv}P*ouX)*m>hLPxXEw`Iu=kE)Pz?2Aj<}F&8uEW9mp-`FkS*KQIIU~A`qp#H-uEQ5%~4Quv*RD z`V#0X1$;Y``eljb8wcUhWm*e4n%cSAavgWuod76`gl38X9vSM#aSPPH@F|%C%i$xr zW0%X(slOl=OScITu z3RC^Q1e!z+dy0xRH3qw#w(p;+;HEY)dQghYLdCWK%CF(n#B%;6Z6L*IX7d*MrO@1G8HNL}E1 z_01&q?%47^Lp&r*qj17~IF3)R4?Sro<5QR`GcL|JZs(RLpOyXw4<|ez*6c=U|G+t+ z7qWU`q$rMs#;cXQg;Ni{MMl9(V?d~>s)nFL&&oPCJ_#|`dHB{~DC638p9%*AewF|^ zK*qnfnnr`qMr2gBk5L^yu+9ueRFEeWPr=&zZdT?zl;{2va0$JLum9AdGSP&Z&^s)N z2|A|Cq4V`?oR9F^19+@|e)Q>}7H{k`2gbQK;U-ct%^JHRa$SxG&#a-BPB5r_TAG^s zx4QL&?vNVkI|4?Vj-loD((LCqC|uY?Slpe4yIxF3s2Q*U0HCXpCqG9h*AbpLfXvl9 zWtp3viE+?tLp3>;%AKM#{(XlSblW>qak1D4!)lsB77eX81hoq&cOyGq5bH)Qa=dzUt5-9oiRLJZ#W>9RF( z;?8X+z(bD3l|Ki$8PTX21f-}BHH|as(e!5}kZ5+^K&|E%BN_qiJuG@H4<<0N`Cypy z=e8r2SkPvi-BZezpAoU{^;_-0EP>;M!EdgQ#BcxFljKFN&SH{N61-rsgvAioTRxQ3 z_a=_N0Zi>g@eTn}=NqyI^JH-MP-FA~2AEAdWNMR}_UaXQbB+vz4@oaST4eyHvhZ4>ZSsamnX}P6Zrs~)(OW|UUAa+zXWVbKGPfhm z_#FTGhJ~>jRD{6a!>#o~n#Z8zujn=`d-Wi=ab&P1OmoA;5sZ&oYisdRHZsP|T1D+`Fd9vhg$ZIbWzOrx}b8w?JB2)H?`UL0iW{Jq8oD7rC=ixQphvrp&VdfY<8vT1;;V6V$XF%0mEtiii~`N+ z3E)Do2GhYv9N}{S>rYzgaEB+h2b4jz{ITIS({m;h^{&5%zC5*R6>gOS5f8HY3I;4? z%B2T}0DT5Y&*zUY^`%8c1J6x%3Ye;A+J9s*h*yc=k+643_=6(;F6qM#VNk?mC2pc% zmtThyNV4mEwkOH?ia1LEHz)tn=tx1$Nb?XHpMZKl5)x_8PyZbcFHI0{>pPEY{PfzK z1rcniZ^!gkYF%u;jtXY?$to!QVyLdfm$Ktxe4FZdj1ai*ifD|SPUDc{Pi@x zuDusYPL4yroAkRKXv|g}ltlQ$GmA7Dk#&*>AR{ZInLTh@2T>sbZSmCf*#t4{3wZp~ zbd@k_0fh%NlAg!qReJT$oY1M9?JXLmmGK@26bf)d*$q(So+ZWJe6m_udF9HTHQhTi zYO0~$u*fXZd6%WJA`Aw|rEAr%R9V;DtpY9Bc+vOl}QshZ057KX@46hfi+N#lu2^y#F!Q^U6l}^?@FK7g-x)tJFw$`?Ihmg9RYro` zEUW7xf;a{RS$6A~>j<&8>5{~CFb2iQ3IL4>1ZN`3LSRlT2nj)XBtV%@{BMf23Lm=h zqU}l-*cG!0AU8vposQExlkLX7{tP##|8?X~+25@zFE=x4It9+!@P4qaq< z=9{=!6VLu<02DjDn!o;=PncD0>CoZaqB(VR{X`1d1869!yV2A#uXxX_E#gnQ_L_Y6 zYVP+U%0GkTR!H3UR>DJOZIV)8=^IbBE6<^QF0t&i41uD_U08MwQ0dYBIw65LPoQq{ z?Y7D-uON-@9F{whiKn^m2Sw&OWo$hW{TM-Q7NGFdQ+h@3IQ-fTn0ua0bzg%SikGBp zNhBY*EZ(xOr7wJ4Cl-uDCXaaDpi0KKdtn zVf`wPEsE*w*Fn+bb~mlraXHODMgFOHCXvxo&IHiVf@9X|TmVbEW5gk#4E-+1zgT=% z1w2zQJ+NCzQ99GYp2=Gqqs3vOZI#$QD)xg*%QCv@*-}|qDmyO@aKoV@UbsAHhVoE6 zvlY7AJd)B=-BDAoXA*9(x1X6MW2?BOXEjdG!D9A0KxES~Ser)@6r*3UovFjjR->gq z%+8WwIdwQHsW8NGMdd+$6NIs=X|A|X)!#wSd#9R)r7i3n9kw#}7j8L%K2#}-%vhkE zI4#p*kLMFllySJZO=ZmSLHil^c$DL3q1^JU=7Qf<6%*Mr&qdCL8q0|0z4t_<`}aSt z6*BNr!&h^63VKrCP!bNOw!ur$_enl}@z;N)d%Ct+#LKfuUOYukq-#W206Q_71IV*4 z?DnxSTb|EESw(6GRi8D`I-!PHaDmv7``|q9MlrT4k)nfT{^Y~AO=o75|)v? zN+kD8T>cDwub9jeLb&J_T_Tu88F-PSwhhJs02r>?f? zz;Q{=bVZEuLJxhzGWt^5nq!*W1Tq<%rt+beFmx&UClfq(ySfvOi}A@H+Lx~J64ZtW zWd9lTw;Nlu!s=wa?98Bp-T;lW<&Z%}(T?5D3+eo@{&Qo~2xi+y&yZ?V~1XC{&=Xkd!numPkBWfy^6@ zEueQNXX(D)mGL)M5pZCXsYQv6R{wTt$d`EEO)k5U19%EE0I`irjx$~A`C8lgFVD1A z03p|eH!D~e&N^GlKlQ1d=|1t_uABID50)?BBqovM40^z=k>J^s&`_(Yk^?L+-Eurb zKGXTg4Br9V1~^2tR!5GiVBLV~8Pjd3>^5uQ;%liY^va@@084KQViu%etO>r@iV!4S zgeMl^gu>)SdZ`D|xD`RsleEQG3F1mu%i9;tmkny$N`KmZ2`&^>K+pL$xNYOv{ly0O zb~zXp*y)frME;kjme_C}Mjr&}^$`hpv`q;q=*7=)z~PX8U@!2m^RfFKW|Y8cBz<#* znl7~(NJ?YqD}}G&KATVGH5BRH-Pb>Bq|OtZLB8#o%E==vHE~d3XLHIKo_;MFPCNtMsx4!D zuy_H?@Zp)nM)8=u*V$sSu}r26y!h0#Sd+0$E$8|7Vb1dqfgf$Nve2iyNfdC>6!*Rx z8~C(0FkH4}t!SQ)7Z|)x)m#wVL)OBUr-D0!MF!LyL0Ivk=pQ?69|MhJ-3uU>wNYS zHL0nz#iWd|bjTr~QhRNQ^=TZ4nP5Gv|D3HHgx{Jys^Zq zxod4Thg9y51kgu(x8!}vhA@fUk@C$-Yj{4waWd%zuQH}wY!+vgEw4ae&%;~2A@xEqdz=UwdD`7X`?6 z#5W@?vcrKNr>V>!u^!}tKUSHPO#Fc7QFC859K)03Cc{R1la=@Tc6uYgJlk|^xDo%j zH%O`3bH%H4SVI?2@#Qq#YTPm+7fvQJ5eVE0?A4fBNcSekT!!Rx$Zd?-DEBg7tr<pQOB8NaEy0$89CTj?T1lwTdRXDq@gQ=8D4>AN9DDTbmZa!8v2}Wc*n8$D z@=Kt_<1u!{_-K1O4*oMaH@w(1-L~V94C(hs7SAmRri{!8L*_;yr-~A1+**yeC61N? zT)dkBw2&$m0-lp3kB;$UvH+a`TIit^ykGnT!cAq$dquRTM^z zA{DwC$lmK6Ryy_^!NSU2On8lAv>b_Co5tp?noLlqxdXYF`*^3HE3N#F6VQt4z%iSh z1*z=CCE3dgq|N1CD9R8wAnFlarM}~_{b{B&LufWmyvavNBK9GS!O`_>M&T2sv)N01 zMq$Aqx;l>!!)!bbcj^5|)k>3n4+Fl->q>ANTmf}EIsM_6Vfgwo?D|mgJmq!BUt!x4 zLOM!vqtlSsUjc<=nGP;mrvFdyLe*6V4IIE31o4lIw5tL~yxU357#XpQayXsSsb|hC z9x5->BRWLQRHh{c84+`}HTU-{?YGR3((-jKs@1I3nB~+8IwmkZd_J~VQkUSMkywt- zrMCr?YtZaQK#iEq1bOAHSHz&mxuxLmYA5^(I)5$(y$JB!TG7|=#8aZRli=*^!~9X! zt&TvSUtiF0t;C6qe=$X!zuIv}md78anY4sVSF+JN!YFj8@2;G`H$@srpX|Xor|Fch z?p2@NEcTOH>F}H3HA%(i{20#)oXo2-yq&d9X7-;is%|bEP3#)9KKDK~VY%MKtv^xe zi}$~$GyYu$>G=*|GM#&;Akc#hbSmb~9^o8UqHBb^_%uZ1hzlF;)r(N>#9b{K{on9{ zuE_+EoPXZ)U(E6+p5Kb0dMAvZoBLf$c5OK3b*#`8uEpCJdMkkE4PMN`h=@jqyz|Cw zF__5n%UXoLCiwIw<@XB3#9ICv1WXIiwX}E#z5U>YMXF5-D$&uS2!}g%)x1D#c2(!e zCWms963FMgWWXOc!pPM!50x%1ipp%xvnkMNwmB4x_NK|g?;Xl@L_H}ZAnG7R@fFO< zwQ(yMVysq8r&-byrT-B@g$s4?W@&14VxEN0#kK8@Xe-St|8#-PfDl?`_?3Z?R%(Gv zWY$hRD4LFY$~_EW1Q_?;J6G~z8y z`uBKvj}d}+W5mKPAW|R?;Wcc! zab*@UtyNyciV-V2jz=x^yX_P4deRgmYCrZw_rO4}#q)Vy_lM%DT^X#fNm>L7#jOsy zp$1xnFMZCWH>gzuoU|;hg%Lb#J33Yz|7d)OxD}&1>kBoeK3lB4r-&|U&azmYt(&L# z-!~|i`lr5*ak7Md?E+Tmn9%XmM6%62h00?85je5p`8}IOy4_Fxpho8CKG~0bJ#0+L z`eRGHx55?i=VXaq;efHoO!v$4^O~(d`JHg|Y#3n7Z$leJGH^PJm2DPh-c%2~rd3{B48E#S?RW6=a5d-vohz*$yedl$;H zziShhp0D;2AwR%G-90|1@R9A>@)`+{2qrUXPMif<7QzP2VGW>kCG8Jh{)G?zztSN1 zc-9#NNqil5xs|XByym#2a5-d|5MJO2hou8L7a60p)}smtBNi6dA*8xj{wPMe|BI#gFe9$`OblYN*}3) zu8{OAKWqlhOsosvj(N>$7<{pRvgl-dU5-^ZLObh&$}poqn5$0e*z0-b5OAdqeNZ=+ zQRe`T7*GlEWj*d5#5!qJ$gZeauEEJ3u4Sf-RzRA7Hnu#img#TqJ0|L10BQc(;ym;< z_Kh99f|y``nvH1HlNzq}G_<{E^=UeWTZl(fN(4${ zwig9YOxc*7+vaQae5fw122bp@Mn6&{us+2$Q*DtYOL;CTJRE>I*%u$1otVn1&)ENs zA}z$p8_UmZ7%6suOt>W7A;d|Zp@qsMG~IF0aFXl@<5GYkPd+>LifX}66Vv88K96Aekl@;=cL?_C;t91?! z1I|*C&Dc4(wSQ$72vDpB7}2$RSPtM(`7dxteTMdRZnx;^ zEoiAu>BRZof>BNYu233tN5}YwW#gL&Yu3Yb`daoNj%n#g{uIKm{7r$|c4U0B)FTiE zM(wP4%rU3P2Suhg``ve*V&uKKO3BYrWPs({G~(jtvyl3dX_NX%DQX|Z#bQV>sHZ+1=?gpnP%A&d0z(tuWa9=CJ0T6*pq3@^&B73^z zSHBF5nt|r<)}`)f06AYt6-SCH(i%8(j+SGcshtlB>y%=*r^a;Ai7A{SSoTDA$!- zzsqFh`Dt($638E{Rm0ymvB9#b9v1QzvnDHGm_S?(Ss#T@s+TJ2U=fEfIq9(G@JCQD2t=9h7XoRTPBy67=O>$8b___4o z#UII$oUGecHz|tmq}({#gg6qv$#6r2=r-E8m80kEYr!nISp9 z;EhRWH`fE5dv69{hs6@d>&Mn|Vt=3q{??;RYz7Ep@F9FZkXrNT@$6Guy{#ChWAF*M zboYBdP5oF*vpp#0HL~FpbP|*f23)L2lhCiKf%FX}s>gGLG-e*Ult4>~lP`P{+vP9=OVgRL}joYJ(Z z+SD=~u^~(ZVJzu}z+lR=*y$4Fya&HQFu4!W@!m|~tX?)j{`m|9Iqy-92$m`+`*NjU z{>u^=k5z9VG1>>w-7~Zr{;%rwBqs$Z7N3Sf+NW$DHE`i^vPJm@Wl{;99kqhe_1(ms zBY!VnNXHXjtj1Dwl&Ia6qrq%{2JyBa4LYnPt=PAcB&_sEEpE=uhNK#PVkTTEW6Bn$ zPwcAfdQV#7c7yS|56(%$2NIeHK%ttEp>Pzj1xxWXU2jQZk^JJBO5+NDi=wh!O}GSm zx_B_?Wd7%^>!?`~v3mmbSx$B+UsQ{F_S{@Lpy8dC%6}9lQwnGoY68l>7^q}aBryQ^ zEoO-PZfOGVJf^xMRnoTrF!fkE4iMOdBEnhQpb8DeRtURdps=VHx=Dd|lEEJ#M1`}^ z`b_{%^52~g6c$ZoY*V(zy{|HB|D$dG_#O-I`%^1cCka9^!C5X?B#l6%@BwSkUybc8 zMLHznT}|B$D&^-5IE-&*scSvlD^%vcY9@5^ZGh+a(U06yo~+~iOFYw%!Nj>veBwFZ zO))_HG496zZ(_bkzxZKsU%OM&*4IYWC65%i6Ls{G=tYSTIfx)={iICvUCPeJuj_BEKC0;zsMohV+i~65JVF{TaW4rTlm8Ct zqAWax?h&W8PW0|`;~;K-wK+}e7?hYG=wzf{vYweaEMe<@fNWA*905!BwFn{1viaa4 z7b{4xtg~^)#%WO-8_Tm}f+TS)gXI!Fk@{g&UoG`rU^?kyefg`ZYbKeLEtGqdLx{0Z zsRG7bNJ%B~6I@5ONVE&cO#WjTimwqtO3(~j*q!;|bugZKbU`C72LM#Ej=2=1kX+K} z2S-nHzrSIPY`eyV&V6>m)($bIJ4<-@ff?c9V+b^CkD=*Cyg44 zaP`|rRghk5qZ&YZp{G3rKMADbqaz`n_#?_>(F=FW8gqK3YoTK}00f z(6>i^QB~@@dtgo4)gkK4HOq(?S~G^amGo-K3?|+Tl{qxL5Zf~r?-_niaN-O#$#*f^h#0+ z5Z=yz6n08#;1jvHxMG#%9BNi+vnI~>?ugR(yi6K6xVu+(bD)D>?(AzYZCFS`+z{m7 zJe*zX=Q%^xYxi(I2;n?S&2`|?R{kcom%3s?+!k!phX4_QF1fZDQAvL}!XR?rs|LA#9j~c(`U_O=>NM5Nsb!Om@0>Z{2K5B_x7+ ziU1~0GiVNyU(Wv_F=AHZpm3BBp;EzOh2{Fx)f~DF? zyfqQXgpz-ZwjipO7sx3waU^0MgLtY4=7#5&m_sw^8aLGGva4J>2ZG6IK&}xCg1A=4 zpvPnwQej2#NElzT=cxD)%bumeE*g*9w5gPa`&>VZ;7f)FQp&>P7B+hBS0(oNZ=6py ziH1OUSDR{6FLWL2?K<94}1gU=;a9y)j9qwU|RB7BHo)e)mF>i4e@#&GhAbRYXh)`WCh+?fM(;(3S4R@7=s}t z)h+dXq~G%1qZzYtYQUHYbYixhI1GhOi;qAIIvZ5Y;I5{w>99@HQ<`{(0D3`CfU;OI zaWh+jX*qhndc$M!VtV08Pje&s&sWP>FOtUs0bfK#vXvJgYx+50R;2&FXMc$R)h#Ca zRuC5{-oh4oA>`f&ahQ=7a`nuC@|`xHGnT0m)#=9L>2x4XPDtrB-^;qU35deF2V#2{ z%nriJ{ECTqTAICA-#d$}RAb*C3a#>1Ons|HJljoR zm8cLw>-+cMT70M%B{YAs!c%kdd@cm9&2`SjYg@>Yu0sXf09o0uI|UiVs(!%_6!3+{ z-9AXjpihfW_4S`C*!9RKS>dCq2x)%jDiKnGY+Gih8d4eF;PP>f8%I**ls;tIV;}tm zg;SwINiZ!XL$TS_?;g;!sXJBvaZb8G)3ay%^R_kN1m85gBIfC#wg$?ha4+@^YfzLx!~YJrp=h`>;w!a_udB zO1=ZG3Fpu$*OzCR0Hsk)sDLy3T;{s25=3Q|ff2V6v&t~vpa@KA7WnM8y`f}DlCK)^ zVVL?h!i!rB8f)A)P@}96fVe3#pDjSgyUe8%t^fcjVjlx%e#BTof^MW~bT`#46TYN6 zmO#*lQ-t}r!^Ktl0bKx>@tOb%LxqOMe{IysLiVj*DsfanH3F&wQ=Yn-O#~RrZMC79 z0k)7nIWXTMOiEqL*f8ix0TMCWvo!GWW8VzfWPGDBq7TH>v@%4AU*zB&yvkZpoxucE zPL3fXvURCa%!&zcU61R6p0=MI1F2%@1AP`&o-9F%KTu4wN|Oh!>sSk|S^8`JebVGD zMrIq;w)|tRXLwi#g*rrAd2P7mD@|_SWNXcaWS6~};C=AczNJ|;{sZ{mv(x1aW4zi6 z(bXlo-?!79i5Vnfz_}cxS~>n)A+&j1R&(|*A$Mf}9FJ3`>J`D?hAK_mT|AVG%7k`! zA^c9eaf(Jou(=JVpoWLI@G}F(Jr*2nt_NAHGg?tf^Hs`RYgLL~e{ye4^WZ0eCn>)w zCwHK&LCU_Mk_&){O_U%5t;d@b+F#T6T^+ZwWTosKkyxP#);%55ZXtCiqLlrX-iN;%*iZ^cK}_B(cL(hkqQxf76+wxs%k-Uwj4-TtoXX zM(39_?&k(o0pZsK-%?h@bNns{O;0GN@7^;gk^ z`*|urAgC(9i*K$Q<;KPT)=)`umLr+1`cKV5bGNgQYaqE@TW$4aWIThrG?)(4>%|5? z((@^x5U|n|Der(ZA`fD?xZb5Dhwk2}l<8}G-x@8Vz(T9G-G=ek$=F4H zzzOQM#NKVD;K**I(f@v-LPHumRNjlyi-Cq}DoYx0;$&M8PH_QkGOo>*e4k1sUIFY9 zz>f*B1*Tv%Y>O$Rz`j*`Pr!E=@yW!*`RA++yBcJeOAQjKoMrM=W{*c2`i!a&`lYCX zTv_-QPPZG`67Q;YV@RnLR&`aB=C^4c`i4~Nw-(Upe%V#3I(=xxB%!a+N-&8D!wk~v zFuj%cVXpytVdb6?bzRgh51>`+2XBT$PzAQ;|u|-SUgs-ZR?c3lfOlwGM3b*mqYvZ!X;`GU8 zv>I#>5t|1fMj#h~NU>E>>Serq0Iq53lLNpt(~9OB8J;a&M|3wV%(v5?HrxX2d}WDR z1R=Wb-C;NpJOU~Tjh@m5EMdiYfC!nb#d~yr;-;Du{O*N!cUxf}M_szS9v*D_dIr_B zCHc&;y6N%#MNcl$aCO?zN9%e^)rVShCs^D6#T@KEE|v}$_nF;NVa|r_LuQDeth-~t zBoYMl?iE^q%D7M$aI&gztg)?bEH(@l?FZ|`Z}bvro|6dm6;>DF?hy@NU^?tN`xuam zx?O(0(wD*NSz1g>4T8)$o$+giYaH{V4tjS-fEAGBQ>m8Rm`+@W`R^1Ih2y735sE}bvM_?4pnKFEovnSeUfauM@ekjWB_kcc-Sg29 zW1j=u^MpLSM)Dyn--c{$Le`#az|#3w$ z{ddndXq!C+ej)k(RfB5R66J(1#=MZIP>dvp;c3^^iC!JU@*fn9xMDsWLjW14Gm1If zH>+QO_L_d8B?(rc;KWS-5DDjSLNZK;Ee=68eG7p~7A;bk+NyLy>cnpYa;(v&O0!x> zgFP`hWkSGb{N#K=>)>D%=x(CHiiQavIetzJ@&x8XapGhAZ}?#G(_UkDvggZ94`mA3PX5JeGRs1`KC(?J>n)7ac9gL;g?Ny~DAVyp(Fbi{% zXzb+xix{EHzUU=5KPog*`5@`K>gTtf%qfp2$HL`X(V0vfSuG@Y{b)#;Vq@f@?X3AKPFuRVQeT;P%x@%N8ag zv0rXwWbKY6Gl|-+r0!SqUf?qdxR&*kQ)J}bs*Kq|sqva8%Ly*bB_MRz{jkaH@;%ezv7sM`V=%yRc_vg`_A!39bzeCb(9s$X1YSQ16FJt82tU}!m{qg+P z^CeDY(iXqey9;6ku19!RUy%Kh6%lbRLgR4ox*5k7vYL)Hmr7QUd)#B{EPPFe96hr1 zMXWa0oO&&U%>$?Sc|ISONz|$6b>;NZ_-(g3tsX^7DV^QAFz&~NsL(XQO>#{c(AE;J zEqu7-=SdJ3Vhfv4(qQt8QGO8>sVtd2EBdq!&<2ZRpAPNc$c6n^ zW#juRF-Q{X2-+a&b+!=}ieX?d1ToK50)Fyo>)~_mL7{I!ysEC1BH5bNp0qEUSZQfy zy#4Z}U=R1B6eDm@F$Pb98XkKw{4%svugMeQtVFFev^LAdkYmOg@doHmUg+^@G5G)F z1j;nEoBK~9Yd)lGHFx^^? zFG>I#s%Nr~&M>Z#uNtePj`2%~yAK=}5WElJcB%Q(U!52eX#Du>LEFTcM{ZRQx^NWX zmU=?0-FQtq<*nmT+Dd=%Ct^Wk$LRe8GX>5;(Uk}QpSsBe$UgEDtxs`6KEZUM^{TFt zN@xg*DSPFYx`*LJ-;7)-SSpE#oF917wjlJBrQCVHs@1)vjUddck2NhO~s<&v;<5I4cSWNBM8(o4Nv)=QafG)R5}%~dI9rj@G6&K09zNy0LDGZ zhJ{C=&_w^|Sc7$+siJk;&_~v_Lirxp1Hq)};F$h8oLnAH*)`5K+lh}D(MfZQD*c%A z@C$)j9^E2r>mbMn@*oKwW<}WaiGKvLgHMRwX z;;9_wFvjyN|8`W}cn?r_^*&=!WgQYK8cuo?2nn$)SfotDG&6ite=Pf^tc1 zZ~Csvdl=EKHgV7}kxTW{q=pYSz=|r^78O%#1 zqMK11CW$U`9sw~u!s*vO;>{bEJVt;m&Y zs3kxG#Ye1F7 zXsL+A6Ig)GI&LY|Gk!cqKsHYzX8&moD6ym8Z_oHrS5|$Y&t?oK>)H;zdpTQq-`Gx_R=)62-a;me7$3$>*02`o|2?`Bbq z+Ro4(JVUfP6O;&o-RM=gVuO}!;t=Lo$ALyYX|*7J1(CBC+qn-KX!e(3nDv^XkuThL zx(|!ca$*$9j{4WnFImM!VXIdo!J^|-1|Fz-vZHsre*9gPrWDpqIEi_on6*~a#cu}Y zKhj;4sZB}5?XfwZo3Ko`48k|NFH0{JX;ygmYxv3Vpq9B?x?J|TJYp-%sokBGVwzM2 zLHV9TcN~3nfv~(`E)_F31<*}Hu})#j{dfn)3J0=%tDXfKc>u>{l|HBHO$) zALQ;PHsv|1CIKOM3KI_D?PfTV1Q{K^R5UrvU0jOTvy<7&g*rv!s5hH5tI5FCp$au) zm(smnr2|2DsB)-08d=*^^eaJd0?0+b9}9QS;E9U>S3#=Jy}Q@Mr<9MtM)BL-FFB4L zV6tFpyWt=5$1A4za}(V`DBJ2G3nTjPKWPvP18)ThVv5hk28CYsyop4pXszq6b_-WK zzCrAPy@#3h0izD%OQ*3j=u#2An;DX4IuE})B@RkU*WLH4eYV?P=qil-yY*48fq`tg zZwgN`8AF~kQEA90tpeGGvPRjQ(9UgUW_DSdf;^uNA*)}8nHmM1wT_<(MoZ~D?*|PP z`Et9KxUZ7Uv{qF^9SvOSJotpw^*|cirEA0{i=+*a3{{1;J0e@Q%7d)WSz?r{BC`jpc8rGKd-L%_mcC1 z#F*g2LyELeZ3`kkm7K-+Bev)t+UNg&tDLK7ESeL0vDtSX#Eqvvax(yAggC-rt-cw# zs+|cJB5dHC1*DJIK$R z!!<8u{_}-67gi9BbAyxXWXRSk>?Y4rN1%<-4eMatDwCX3FA7L=k9jk~_!9GR!%E=$ z!6qD=@(zn@9+7RP=M*aCiL;st+>~{_`x{moDD3RK+L;~e=Qnmp_QBm5IYI5yOUMQf zJtqfv=UrV*LSA>_^NYI&Q8yut^vg1iqh-DUKR836EHo?Ml<`#g+|e7fMKr`@XpC{e zwM6k#JQ?XPr40ez*rW01U#BQ2ke^nsj4G85zIsfLubanGNtlQDA|X32vqwel@y^uICi{U2pk0RAtloXZ=rPsTM^*fzsr9;DOt_C}0%=JU?mq zqmrLb2KXHvAKlGeB&d+x5Ly`Dg^_;Q6zG!n$FFyt5X~wm54Wk(9Nde7oQ!135;yg; zb+*+9%Z)CyjA6K2pK3Q^sa%j8tsD2G-gh-G=bm**?=R!YqY$hYQ6J>wRd~x z&$UuQpmmio+%E#!+%xEeHO^K53HH7d5|8Ew)*$@W&%OSPuOe`oVLX_(=lqAVCIytx zMDg>B5hfSlme%O=>%BQ_LGP_L!#r%=90&~-dfeXwlV&n1?f1J_^u+3p@uAZwh-Mt^7An-KK#Y=^H;3 z8Z#4jKSsGnR75(5_@nJxbUDj8ZT{aXw=1BxMti@;g3-j)BMToIRe;Xh7-Y8~ly73T z7q@@+d2!R(yr9Jco???4S`CCH>IjEHl`y7yyFi_2taJ7PXM|~KR(vN$jqd2IW)ViX z`=b{e82V%fJ{3PQ}xTiI|XdR%fm^1KMvhfL~T-H!Mz7e}mihX(cT>8tW6)cp%whG`=DK@5vp zf^Mw+$!AAbcbr3*t!R<)O4QT`R9zVFP?gHjxOs{CAH|_aL8m;W7sj(Zeyz? z-mvL&-Z^E6&}E3x55Fij`1Ci37eoHTI+`YilCQLsyR%N#xGB1(i;>YNk*wY5A$M|k zygW_u&aprk|!>igQ1-)^E zO@8B*{15pv_2>>!^J%64BDops+>pUbstI>Ypg30=w2VAXlojoS5Y?9Lz$?f zrdfk*2EAJbk53SbF59ijPAR#8v9Re(Wobic$QM^R*;lteXGc^&5qlu(cx6I1vrh~^9I|XmIJ#_CV ziCsf7#;D|4c;jBk1Z0ji%>|I686d=|8=+j6I(?MoU=%I7R!dS?Wal7cbL zmETBg!tN_krKnfTi`Z*sgH6Rgo5B4@D%`7UP+Zhrhu%IBE!6(n-mNk8BJWs&KLu2GhM* zH82oI%Wm*aa;H&h{a9R#dC+f&v3${Nn9~?J0c(Qd_GL!d5n&h$e%ekehRxL)E+XkZ zfWaY4xz-i74Oni3){a2~dI)Qi`&k4C^Rq@3;GX$0YIXeF5ht564}YV!#IiT4ZY32k zK<%dIK)M_Me_umt5&X~a$|0L3Q*<_;?u=2=9MbE}HM}4+{x-%8y2H*(pv=)4H+}%4 zp{yL6zpy$AW#MCBr9WSpy|U;$&qN?z&N{GSaPMlNI<60kVdlW~@;UFyx2UlvGP^&S zX@|4-{~0LU7+SZo$-EH*ia@g`u;?13$R{ASgGITaz3eP zkN}sl4fXu5{-@env9S&u^P(MK=24q(+I8Fuod+>>Cp2NZ7I_S4lgmu)^wM%jUS{9m zBYOc0X><13rJH=Q_VC1$*&TODeP>x7Dl?^*ME+5GvyxBlIz-wxL}d95OYJ zP{D)=oA#HYuis#{1FRR8emZ5+vj23Omo1o)W->dEIs+*%@gcGW|5vP&%lA2xflK5I z7h}QmR==|w$AI0>q6Qn~4%f!@hYANoU;>mF3L307E+*VG>aIMYJ3-t99A1mqvluD zw-Z_kq^3*f&^nQ9d12~DRStv1|A5QpLXyuKN!&jk;XmJpo_=y&norLVht z2kq?~hDo929>3&Om!AB|B>~pa;;{bRQ#}Lr+ZJ0@*AjCLwk;qs$vAQbh+j=pM-Xn& z4tXz;rjQ>F-If18yq@ex&DFR$w2~}Uxbj?6@}hfUtOiDrRPw2Mk*%Fv(dn;}lkKq@OwT z`dy=0(UnUL!BVF^a5y`&64_M2=#@Vvzpsz^9HT`JI4Co`>2Dl>d9SI#dZL)u;HRLn zw`b#qYQ6-js(AX|{Uk5oQ8v?=o%75>mK1y#@WyKmx4KTFzPlDOj9hjP>O!d16MQM_ z48o!s3%W3M@AmAraS0_XT40O0bNG)?4@A!uUFFIT61ZUc!=vwfj3s8~2-F#n&x98u z+(=*D%Yj70SL?GwjTVnQ$0l@Y6v7RGlHowts*Iraj2Qh#Ug zK6ncrvHimmKZuVS8F~-Cca|Yp$P;yt?E5IJ_He6AXs=SKf{BFsjBfnw#0Iq}*Kw9+ zg6yWGkc>gHfanrPW?)17mfSS;Nmr<{RYjCF2k?)1;G@S^(^{j6HYx1(99$7e1Cvo)*iZ|^Id3$GP-eIo(Oc&-f$P)qFYYyNa>@E6RdOmaZ-Css zn4bpdt{-)4?mlN)8h`Z*ymQy~ZLZirW>&$Lh<3^o6nn>L-TyOB%f`FEt^cHwhv;N< zmkVH#5N)bRR`;Vh5~+P08JHjGbd_ek`GnX0trDYPWJN#_P<3wd+H%FY`3=*VZ!<)l z`(uQaYsawhEhc?Cph?Z>j*{ValIa_}^Etn^WfMYVU!4x1U#L@9-(DXB`;+pRL8QE) zy0K%2Qrd8+CIY-6vT|uvj*oLJdp{G)(r+4j7Ebm$%{HNG0>CiWQ0QwOD&pmr>lKd` zf9Xpq4&7xoes0%50=>{0JX%iiw&jGULaF9yC4F@WfD8nzBQgG1?jyW--*IGf)0X|# zWG>Innd@k=P+vQkZqS8FKZsSmHg22X6VL$&((q$Zx=8(d{={i6Nd=H*As4&0?J{6%_rOYKk8Cu=#I&N;1ZKr!32ZaoG~gU- zkB82@tKY@Alc|k?IUkh(jnY9-j=+W3Z4{T2Lcxvpti7X@uCAv zn?8d;n|wc5u8U^xmLSPLyvdk8SC@%;+k5_X-*AAr@JZD$WgTJ3YP~{``pjQc)(D`z zbu&50+sMW6`&L{HSlAimbs-$u_AIGatM+Eu)>2t~T_^ScNXtgS4iRUHSNRsi;Gx(? zFyDKMy0&=|2Z6HSi4TkL8nWaJ@EQG92-6j_T7qoAIFFw)b4oyn;9r5YC08k%o%2x8iHCX8KIM zp^ytJbQf;4gwqdw)O$MVcVqM|d0!KD;K#kzidim7wMr-Lq#m{Zv#Gz&@6~3CxZD{2 zv|$NF#SQD|Mvbw$dQFrNuDfX8{MjT#)gBD0g|TY-=5RfnMhqO!mdU5uuGQnY$|)Qu3q9x zFfa<-$B^e7Z7RU(Fn%vqf3$emm@%iyw~80y!YZdQt`=|xy6vPtaj4Jg^IxHhhHR2p zz;I5dNm#HAvYnN${lEw$oOOZF(7xQt_7?b+P^jwYwwa<2k%!CWH( zpGQ=1qU<(5o`8*%jn7GrGN2kbKYb5x(LL=#@D(Gx(hqbkK@xLnd(636b`Bx;tB%ib zp32h_5z?25)+jX>4MXcvKtnZJ>V3()W8EhEMULu4Y1f0|!{bQ2TS9R;Z&;A++FKT7 z!5WiL2eitZycf%RO%i`D`{#hFfc;Wy-#*JZ`vr{-obe|{ajW3o?KX7jE-z@?io$71 zB|@C)R2?->Pw~TsMC6N?OE1NRD zKIuPo3$ql8j9}lEQrEwv=pET%{K3VJ9RC%+n*pq{=;&3ox_oJMAUHSBYze-V=mmg-QX4nK$(YX*P#7qW z3o6O*Y%j)T5QpPiln5l%L@_B#YUXQJF$@-&C`jpe3=;nhLV?w#_`+z8q|9nAv9_REcMPT*_aJ3i$8UrwEodwv$=z zh)*SORl!LLKF*9qc}&{47p|8~KDn{YL?^3e0Qqpz+z7i0)i%zN{MDKmWuWg9`4%k(wll37d967-*?Dmy=0g5WDp^2B7{adgt0h|zO7nt5FU4Qi zmQ?LwQ$gh%^TMKM24!A@5}KE=av<_~-eFt$RK~JE9e6<7P zcp4>@jxOpmnFx;rJ@y?f7Dx91`M_ zvt!=Lo28M`L-&MgIl6z=4EsmcBUud)b4amewA1t_(fu7ePAU><~LyZKp<9vi8cH^OB?%# zl?JG|2fDDVQy?e!ItqTbQY0`Iw_#qZ4feh*C1qF4EDmpI;L2#_kHnf3r^9G*9^XE8@ zvTS?&l{|a^*yE0YFR)iI7E|URrG0KIPXRJ8mj~^}7G-2ny#JJV$FBY1W`$jp=pY*sdn<^h?#%KM2pw7K3^yQ+F$V-MgE$v7JsV1!empLB> z*~yKhUjUpFfC({HtLk-Gk`*6aU75dRQz-~wE`QczmmgM{OKZHn3mSSQrwE_+d@Nzl zj9?w+ijBH0Vmx;g|-7( zNFWDHzlK`|zGDI;79}c3K3Hz$j9-yXjmgTT5H2i?UK>-egNPQJD7lai^tG5w?Cbo~ z3rJ;-b-LP6A?vWc#2Twx=n}JZ-Afslqo8TXsb6j|^$y=y2hWlO zd6j1o7B?%gioj$6sIpRS5qiIcYV^cAp|o5Uu?XQi8`E^IP)7RClQlopqVsz;4Qf?03>jq|-W=Xmd ztGjNMhl7*>s_JkX$F<#l{UHgx#t4I!c>WiRXV1Qt!;a1Ddz4l$0WzsTqJ5dYOe{{E zs>RoXBwGSVIxIkp`9bN9@a&6R{{rmZ3n+RcYvH=Tjrq;hv1UOFPy!|0+O%xt+|xzG zd8V-dw$}|a^wzoODZ;(aw%kOOubIq|{wJ&EU@kIMA#y=?ChOp|oj_?(dam{hRm;CO zPB%Una?=sI=lnsGdg=a@roEn=ORL00AQ>}EAIWD`c_KWBI>mvGgRIwB;TxC7*zi4h z9OmtBl(#Q-%jg+RY^w=rFyD6O-Ys-@-1#x3O-QsYTvgmRlp%Ecnw>kfCTIs1SSAqP z%ic7RJ)cFI6q*8@eLS?0(}2ria98ej$%rt}axReoCdW}VCRZCs;2H67cfLfht|FqG z)?-FTue~q>@_^YL=j4vSe5<;&lqG`5#oHjmjHwrH?jn(L=gO%W%;gQxS%l%bIA~&*f4L{ ziL~Yw6=ECuR{y&cT00TorNh@j6lwDJoLhGOVfxsy4eOLWii_yd3P>@!16AQ8x2god zhG+^xJYDgy#8!?n<{g2UFF+RlhXa89C$e2&z>7c`3_J(btBy;;tGP2`i7fs^avH{2 zS8|JdG2}$7(st3pL|O#N*9PdL$P=~%RVUqJ{d3t=H0KAn;*fx|1RP_%r3+htS+B|;CBLn zr9P*6oP*&B$~({2#Ws#d5RzbcIhT$wM-2Rnxgm9qlXB}5<3R%wHFup3={Nmz>ti|l zlWWVO;)OOe?$@OS)c5(RO$91RCr@{?*gaMoSe~&o%L0;`l8Vc!}?SJ0ZurCa_QM!Na*w|fK~_&A_1C4#e^yXKru=5TfPXY#jV zgX?ewhf@5ur2v^&$H4iUE(4gSJGQVlfmsEiByNT>p6%=-TsX9*AEm{Pc|oKgX@^3i zR_K*4@*)LQ{7KR*1Z(M+j;E?T{47cH4$pNonQhXViwhyIM=#>sT0w~2Q5mYazbC%W zCq8e}7d&X(jCT_$$|{%R6jk8;*gh1)w_(|}2d@}~1}@znDC6}cgoDdD*^|{^OTvH0 z{QYOtX~=|EBJuDr^d5jB<@52C02QdqloRTzuHAM{e?W)bOfKK7VDay5nDh2j z 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