From 23648695e9622086b6b55c8835f7b5224b107c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=8D=9A=7ENex?= <87421482+NexIsDumb@users.noreply.github.com> Date: Thu, 20 Jul 2023 00:48:20 +0200 Subject: [PATCH] More Optimizations (#188) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bye * Updated docs * Adding docs to gitignore Useless to keep and upload too plus it contains sensitive stuff that takes when generating docs (eg: repo's saved path) It's prob smth that the docs program uses temporarily to generate * Re-exported gf chrimah Atlas exported christmas gf by @EnderNile8182 Gf adjusted offsets by me No more black lines Co-Authored-By: Nile <102095746+endernile8182@users.noreply.github.com> * Custom Credits * Better Custom Credits * Custom Credits template * Re-exported gf car Atlas exported car gf by @EnderNile8182 I've edited some strings in the xml No more black lines Co-Authored-By: Nile <102095746+endernile8182@users.noreply.github.com> * Re-exported gf tank Atlas exported tank gf by @EnderNile8182 Gf adjusted offsets by me No more black lines Co-Authored-By: Nile <102095746+endernile8182@users.noreply.github.com> * Yay finished gfs * Better Icons Mainly Fixed offsets and adjust Tankman ones (some transparent pixels) * Added bf x gf week 7 gameover * verbose!!!!!!!!!! ❗ * tank bg "bug" fix it was also giving an error what the hell is tankBg even * No more game freeze for desktop on freeplay * Some freeplay optimisations * Making .temp folder hidden idk i found it ugly * Reupdated docs --------- Co-authored-by: Nile <102095746+endernile8182@users.noreply.github.com> --- .gitignore | 1 + TODO.md | 6 +- assets/data/characters/bf-holding-gf-dead.xml | 6 + assets/data/characters/bf-holding-gf.xml | 4 +- assets/data/characters/gf-christmas.xml | 24 +- assets/data/characters/gf-tankmen.xml | 12 +- assets/data/config/credits.xml | 5 + assets/data/stages/tank.xml | 2 - .../images/characters/bf-holding-gf-dead.png | Bin 0 -> 3070722 bytes .../images/characters/bf-holding-gf-dead.xml | 127 + .../images/characters/gf-car/Animation.json | 4002 +- .../images/characters/gf-car/spritemap1.json | 39 +- .../images/characters/gf-car/spritemap1.png | Bin 125661 -> 121069 bytes .../characters/gf-christmas/Animation.json | 41098 +- .../characters/gf-christmas/spritemap1.json | 85 +- .../characters/gf-christmas/spritemap1.png | Bin 304502 -> 374850 bytes .../characters/gf-tankmen/Animation.json | 35016 +- .../characters/gf-tankmen/spritemap1.json | 62 +- .../characters/gf-tankmen/spritemap1.png | Bin 184781 -> 163546 bytes assets/images/credits/credit icon example.png | Bin 0 -> 159730 bytes assets/images/icons/face.png | Bin 3370 -> 6797 bytes assets/images/icons/monster.png | Bin 17246 -> 24061 bytes assets/images/icons/pico.png | Bin 13896 -> 20019 bytes assets/images/icons/spooky.png | Bin 6900 -> 10314 bytes assets/images/icons/tankman.png | Bin 3300 -> 5814 bytes buildnumber.txt | 1 - docs/doc.xml | 328057 --------------- pages/funkin/away3d/Flx3DView.html | 10 - pages/funkin/away3d/index.html | 10 - .../FlxAnimate.html} | 4 +- pages/funkin/backend/FunkinSprite.html | 10 + .../FunkinText.html} | 4 +- .../MusicBeatGroup.html} | 4 +- pages/funkin/backend/MusicBeatState.html | 10 + pages/funkin/backend/MusicBeatSubstate.html | 10 + pages/funkin/backend/MusicBeatTransition.html | 10 + pages/funkin/backend/XMLAnimType.html | 10 + pages/funkin/backend/assets/AssetSource.html | 10 + .../backend/assets/AssetsLibraryList.html | 10 + .../backend/assets/LimeLibrarySymbol.html | 10 + .../backend/assets/ModsAssetLibrary.html | 10 + pages/funkin/backend/assets/ModsFolder.html | 10 + .../backend/assets/ModsFolderLibrary.html | 10 + pages/funkin/backend/assets/Paths.html | 11 + .../backend/assets/ZipFolderLibrary.html | 10 + .../modules => backend/assets}/index.html | 4 +- .../chart/BaseGameParser.html} | 4 +- pages/funkin/backend/chart/Chart.html | 10 + pages/funkin/backend/chart/ChartData.html | 10 + pages/funkin/backend/chart/ChartEvent.html | 10 + pages/funkin/backend/chart/ChartMetaData.html | 10 + pages/funkin/backend/chart/ChartNote.html | 10 + .../backend/chart/ChartSaveSettings.html | 10 + .../funkin/backend/chart/ChartStrumLine.html | 10 + .../backend/chart/ChartStrumLineType.html | 10 + pages/funkin/backend/chart/SwagSection.html | 10 + pages/funkin/backend/chart/SwagSong.html | 10 + pages/funkin/backend/chart/index.html | 10 + pages/funkin/{desktop => backend}/index.html | 4 +- .../funkin/backend/scripting/DummyScript.html | 11 + .../backend/scripting/EventManager.html | 10 + .../backend/scripting/GlobalScript.html | 10 + pages/funkin/backend/scripting/HScript.html | 10 + pages/funkin/backend/scripting/ModState.html | 10 + .../funkin/backend/scripting/ModSubState.html | 10 + .../scripting/MultiThreadedScript.html | 10 + pages/funkin/backend/scripting/Script.html | 12 + .../funkin/backend/scripting/ScriptPack.html | 11 + .../backend/scripting/events/AmountEvent.html | 12 + .../scripting/events/CamMoveEvent.html | 12 + .../scripting/events/CancellableEvent.html | 13 + .../scripting/events/CountdownEvent.html | 12 + .../backend/scripting/events/DanceEvent.html | 12 + .../scripting/events/DirectionAnimEvent.html | 12 + .../events/DiscordPresenceUpdateEvent.html | 12 + .../backend/scripting/events/DrawEvent.html | 12 + .../scripting/events/EventGameEvent.html | 12 + .../events/FreeplayAlphaUpdateEvent.html | 12 + .../events/FreeplaySongSelectEvent.html | 12 + .../scripting/events/InputSystemEvent.html | 15 + .../scripting/events/MenuChangeEvent.html | 12 + .../backend/scripting/events/NameEvent.html | 12 + .../scripting/events/NoteCreationEvent.html | 12 + .../scripting/events/NoteHitEvent.html | 12 + .../scripting/events/NoteMissEvent.html | 12 + .../scripting/events/NoteUpdateEvent.html | 12 + .../scripting/events/PauseCreationEvent.html | 12 + .../scripting/events/PlayAnimContext.html | 15 + .../scripting/events/PlayAnimEvent.html | 12 + .../backend/scripting/events/PointEvent.html | 12 + .../scripting/events/RatingUpdateEvent.html | 12 + .../backend/scripting/events/ResizeEvent.html | 12 + .../scripting/events/SimpleNoteEvent.html | 12 + .../scripting/events/StageNodeEvent.html | 12 + .../scripting/events/StageXMLEvent.html | 12 + .../backend/scripting/events/StateEvent.html | 12 + .../scripting/events/StrumCreationEvent.html | 13 + .../scripting/events/WeekSelectEvent.html | 12 + .../backend/scripting/events/index.html | 10 + pages/funkin/backend/scripting/index.html | 10 + .../funkin/backend/shaders/CustomShader.html | 13 + .../funkin/backend/shaders/FunkinShader.html | 11 + .../backend/shaders/ShaderTemplates.html | 10 + .../shaders/ShaderTypeException.html} | 4 +- .../editors => backend/shaders}/index.html | 4 +- pages/funkin/backend/system/Action.html | 10 + .../funkin/backend/system/BPMChangeEvent.html | 12 + .../system/CommandLineHandler.html} | 4 +- pages/funkin/backend/system/Conductor.html | 10 + .../funkin/{ => backend}/system/Control.html | 6 +- pages/funkin/backend/system/Controls.html | 16 + .../index.html => backend/system/Device.html} | 4 +- pages/funkin/backend/system/ErrorCode.html | 10 + pages/funkin/backend/system/FunkinGame.html | 10 + .../backend/system/FunkinRatioScaleMode.html | 10 + .../backend/system/GraphicCacheSprite.html | 10 + .../system/KeyboardScheme.html} | 4 +- pages/funkin/backend/system/Level.html | 10 + .../Butt.html => backend/system/LogText.html} | 4 +- pages/funkin/backend/system/Logs.html | 10 + pages/funkin/backend/system/Main.html | 10 + .../system/MainState.html} | 4 +- .../backend/system/OptimizedBitmapData.html | 10 + .../backend/system/RotatingSpriteGroup.html | 10 + .../system/framerate/AssetTreeInfo.html | 10 + .../system/framerate/CodenameBuildField.html | 10 + .../system/framerate/ConductorInfo.html | 10 + .../backend/system/framerate/FlixelInfo.html | 10 + .../backend/system/framerate/Framerate.html | 12 + .../system/framerate/FramerateCategory.html | 10 + .../system/framerate/FramerateCounter.html | 10 + .../system/framerate/MemoryCounter.html | 10 + .../backend/system/framerate/SystemInfo.html | 10 + .../backend/system/framerate/index.html | 10 + .../funkin/backend/system/github/GitHub.html | 10 + .../backend/system/github/GitHubAsset.html | 10 + .../system/github/GitHubContributor.html | 10 + .../system/github/GitHubException.html | 10 + .../system/github/GitHubReactions.html | 10 + .../backend/system/github/GitHubRelease.html | 10 + .../backend/system/github/GitHubUser.html | 10 + .../backend/system/github/GitHubUserType.html | 10 + pages/funkin/backend/system/github/index.html | 10 + pages/funkin/backend/system/index.html | 14 + .../system/interfaces/IBeatReceiver.html | 10 + .../system/interfaces/IOffsetCompatible.html | 10 + .../backend/system/interfaces/index.html | 10 + .../backend/system/macros/DefinesMacro.html | 10 + .../backend/system/macros/GitCommitMacro.html | 10 + pages/funkin/backend/system/macros/index.html | 10 + .../backend/system/modules/CrashHandler.html | 10 + .../backend/system/modules/FunkinCache.html | 10 + .../backend/system/modules/PlayingSound.html | 10 + .../funkin/backend/system/modules/index.html | 10 + pages/funkin/backend/system/net/Socket.html | 10 + pages/funkin/backend/system/net/index.html | 10 + pages/funkin/backend/utils/AnimData.html | 10 + pages/funkin/backend/utils/BitmapUtil.html | 10 + pages/funkin/backend/utils/ConsoleColor.html | 10 + pages/funkin/backend/utils/CoolSfx.html | 10 + pages/funkin/backend/utils/CoolUtil.html | 17 + .../utils/DiscordJson.html} | 4 +- pages/funkin/backend/utils/DiscordUtil.html | 10 + pages/funkin/backend/utils/EngineUtil.html | 11 + .../utils/FlxInterpolateColor.html | 6 +- .../backend/utils/FunkinParentDisabler.html | 19 + .../utils/IXMLEvents.html} | 4 +- pages/funkin/backend/utils/IniUtil.html | 10 + pages/funkin/backend/utils/MarkdownUtil.html | 10 + pages/funkin/backend/utils/MemoryUtil.html | 10 + .../funkin/backend/utils/MessageBoxIcon.html | 10 + pages/funkin/backend/utils/NativeAPI.html | 12 + .../utils/ShaderResizeFix.html} | 4 +- .../funkin/backend/utils/SortedArrayUtil.html | 10 + .../utils/StrNameLabel.html} | 4 +- pages/funkin/backend/utils/SysZip.html | 13 + pages/funkin/backend/utils/SysZipEntry.html | 10 + pages/funkin/backend/utils/XMLUtil.html | 10 + pages/funkin/backend/utils/ZipProgress.html | 10 + pages/funkin/backend/utils/ZipReader.html | 10 + pages/funkin/backend/utils/ZipUtil.html | 10 + pages/funkin/backend/utils/ZipWriter.html | 10 + pages/funkin/backend/utils/index.html | 17 + .../backend/utils/native/HiddenProcess.html | 10 + pages/funkin/backend/utils/native/Stdin.html | 10 + pages/funkin/backend/utils/native/Stdout.html | 10 + pages/funkin/backend/utils/native/index.html | 10 + pages/funkin/chart/BaseGameParser.html | 10 - pages/funkin/chart/Chart.html | 10 - pages/funkin/chart/ChartData.html | 10 - pages/funkin/chart/ChartEvent.html | 10 - pages/funkin/chart/ChartEventType.html | 20 - pages/funkin/chart/ChartMetaData.html | 10 - pages/funkin/chart/ChartNote.html | 10 - pages/funkin/chart/ChartSaveSettings.html | 10 - pages/funkin/chart/ChartStrumLine.html | 10 - pages/funkin/chart/ChartStrumLineType.html | 10 - pages/funkin/chart/SwagSection.html | 10 - pages/funkin/chart/SwagSong.html | 10 - pages/funkin/chart/index.html | 10 - pages/funkin/cutscenes/Cutscene.html | 10 - pages/funkin/cutscenes/DialogueCutscene.html | 10 - pages/funkin/cutscenes/DialogueLine.html | 10 - pages/funkin/cutscenes/MP4Handler.html | 10 - pages/funkin/cutscenes/ScriptedCutscene.html | 12 - pages/funkin/cutscenes/VideoCutscene.html | 10 - .../cutscenes/dialogue/DialogueBox.html | 10 - .../dialogue/DialogueCharTweenContext.html | 10 - .../cutscenes/dialogue/DialogueCharacter.html | 10 - pages/funkin/cutscenes/index.html | 11 - pages/funkin/data/FreeplayJSON.html | 10 - pages/funkin/data/FreeplaySong.html | 10 - pages/funkin/data/FreeplaySonglist.html | 10 - pages/funkin/data/SongMetadata.html | 10 - pages/funkin/data/index.html | 10 - pages/funkin/debug/AnimationDebug.html | 10 - pages/funkin/desktop/DesktopMain.html | 10 - pages/funkin/desktop/DesktopScreen.html | 10 - pages/funkin/desktop/DesktopUtils.html | 10 - .../desktop/IDesktopFocusableObject.html | 10 - pages/funkin/desktop/IDesktopInputObject.html | 10 - pages/funkin/desktop/MouseInput.html | 10 - .../desktop/editors/CharacterEditor.html | 10 - .../desktop/editors/EditorPlayState.html | 10 - pages/funkin/desktop/editors/HelloWorld.html | 10 - pages/funkin/desktop/editors/MessageBox.html | 10 - .../desktop/editors/MessageBoxIcon.html | 10 - pages/funkin/desktop/sprites/Button.html | 10 - pages/funkin/desktop/sprites/CheckState.html | 10 - pages/funkin/desktop/sprites/Checkbox.html | 10 - pages/funkin/desktop/sprites/DropDown.html | 10 - pages/funkin/desktop/sprites/InputBox.html | 10 - pages/funkin/desktop/sprites/MenuBar.html | 10 - .../desktop/sprites/NumericStepper.html | 10 - .../funkin/desktop/sprites/SpliceSprite.html | 10 - pages/funkin/desktop/sprites/TabView.html | 10 - pages/funkin/desktop/sprites/index.html | 10 - pages/funkin/desktop/theme/Theme.html | 10 - pages/funkin/desktop/theme/ThemeData.html | 10 - pages/funkin/desktop/windows/ContextMenu.html | 10 - pages/funkin/desktop/windows/Window.html | 10 - .../funkin/desktop/windows/WindowContent.html | 10 - .../desktop/windows/WindowDragHitbox.html | 10 - pages/funkin/desktop/windows/WindowGroup.html | 10 - pages/funkin/editors/CharacterEditor.html | 10 - pages/funkin/editors/ChartingState.html | 10 - pages/funkin/editors/DebugOptions.html | 2 +- pages/funkin/editors/DebugOptionsScreen.html | 2 +- pages/funkin/editors/Editor.html | 2 +- pages/funkin/editors/EditorPicker.html | 2 +- pages/funkin/editors/EditorPickerOption.html | 2 +- pages/funkin/editors/EditorTreeMenu.html | 2 +- pages/funkin/editors/SaveSubstate.html | 10 + .../SaveSubstateData.html} | 4 +- pages/funkin/editors/UIDebugState.html | 2 +- .../character/CharacterAnimButtons.html | 10 + .../character/CharacterAnimScreen.html | 10 + .../character/CharacterAnimsWindow.html | 10 + .../editors/character/CharacterChange.html | 10 + .../editors/character/CharacterEditor.html | 10 + .../character/CharacterGhostsHandler.html | 10 + .../character/CharacterInfoScreen.html | 10 + .../character/CharacterPropertiesWindow.html | 10 + .../editors/character/CharacterSelection.html | 10 + pages/funkin/editors/character/index.html | 10 + .../editors/charter/ChartDataScreen.html | 10 + pages/funkin/editors/charter/Charter.html | 2 +- .../editors/charter/CharterBackdropDummy.html | 2 +- .../funkin/editors/charter/CharterChange.html | 2 +- .../charter/CharterCopyboardObject.html} | 4 +- .../funkin/editors/charter/CharterEvent.html | 10 + .../editors/charter/CharterEventAdd.html | 10 + .../editors/charter/CharterEventGroup.html | 10 + .../editors/charter/CharterEventScreen.html | 10 + .../charter/CharterEventTypeSelection.html | 10 + .../charter/CharterGridActionType.html | 10 + pages/funkin/editors/charter/CharterNote.html | 2 +- .../editors/charter/CharterSelection.html | 2 +- .../editors/charter/CharterStrumline.html | 2 +- .../charter/CharterStrumlineButton.html | 10 + .../charter/CharterStrumlineExtraButton.html | 10 + .../charter/CharterStrumlineScreen.html | 10 + .../charter/EventInfo.html} | 4 +- .../editors/charter/EventParamInfo.html | 10 + .../editors/charter/EventParamType.html | 10 + pages/funkin/editors/charter/EventsData.html | 10 + .../editors/charter/MetaDataScreen.html | 10 + .../editors/charter/NoteDragChange.html | 10 + .../editors/charter/NoteSustainChange.html | 10 + pages/funkin/editors/charter/index.html | 2 +- pages/funkin/editors/index.html | 2 +- pages/funkin/editors/ui/IUIFocusable.html | 10 + pages/funkin/editors/ui/UIButton.html | 2 +- pages/funkin/editors/ui/UICheckbox.html | 2 +- .../editors/ui/UIColorWheelSelector.html | 10 + pages/funkin/editors/ui/UIColorwheel.html | 10 + pages/funkin/editors/ui/UIContextMenu.html | 2 +- .../editors/ui/UIContextMenuOptionSpr.html | 2 +- pages/funkin/editors/ui/UIDropDown.html | 10 + pages/funkin/editors/ui/UINumericStepper.html | 10 + pages/funkin/editors/ui/UIScrollBar.html | 10 + pages/funkin/editors/ui/UISliceSprite.html | 2 +- pages/funkin/editors/ui/UISprite.html | 2 +- pages/funkin/editors/ui/UIState.html | 2 +- pages/funkin/editors/ui/UISubstateWindow.html | 10 + pages/funkin/editors/ui/UIText.html | 2 +- pages/funkin/editors/ui/UITextBox.html | 10 + pages/funkin/editors/ui/UITopMenu.html | 2 +- pages/funkin/editors/ui/UITopMenuButton.html | 2 +- .../funkin/editors/ui/UIWarningSubstate.html | 2 +- pages/funkin/editors/ui/UIWindow.html | 10 + pages/funkin/editors/ui/index.html | 2 +- pages/funkin/game/Character.html | 2 +- pages/funkin/game/GameOverSubstate.html | 2 +- pages/funkin/game/Highscore.html | 10 - pages/funkin/game/Note.html | 2 +- pages/funkin/game/NoteGroup.html | 2 +- pages/funkin/game/PlayState.html | 10 +- pages/funkin/game/SongScore.html | 10 - pages/funkin/game/SplashGroup.html | 2 +- pages/funkin/game/SplashHandler.html | 2 +- pages/funkin/game/Stage.html | 2 +- pages/funkin/game/StageCharPos.html | 2 +- pages/funkin/game/StageCharPosInfo.html | 2 +- pages/funkin/game/StageSprite.html | 10 - pages/funkin/game/Strum.html | 2 +- pages/funkin/game/StrumLine.html | 10 +- pages/funkin/game/cutscenes/Cutscene.html | 10 + .../cutscenes/CutsceneSubtitle.html} | 4 +- .../game/cutscenes/DialogueCutscene.html | 10 + .../cutscenes/DialogueLine.html} | 4 +- .../game/cutscenes/ScriptedCutscene.html | 12 + .../funkin/game/cutscenes/VideoCutscene.html | 10 + .../game/cutscenes/dialogue/CharPosDef.html | 10 + .../game/cutscenes/dialogue/DialogueBox.html | 10 + .../dialogue/DialogueCharTweenContext.html | 10 + .../cutscenes/dialogue/DialogueCharacter.html | 10 + .../funkin/game/cutscenes/dialogue/index.html | 10 + pages/funkin/game/cutscenes/index.html | 11 + pages/funkin/game/index.html | 2 +- pages/funkin/github/GitHub.html | 10 - pages/funkin/github/GitHubAsset.html | 10 - pages/funkin/github/GitHubContributor.html | 10 - pages/funkin/github/GitHubReactions.html | 10 - pages/funkin/github/GitHubRelease.html | 10 - pages/funkin/github/GitHubUser.html | 10 - pages/funkin/github/GitHubUserType.html | 10 - pages/funkin/github/index.html | 10 - pages/funkin/index.html | 2 +- pages/funkin/interfaces/IBeatReceiver.html | 10 - pages/funkin/interfaces/index.html | 10 - pages/funkin/macros/BuildCounterMacro.html | 11 - pages/funkin/macros/DefinesMacro.html | 10 - pages/funkin/macros/GitCommitMacro.html | 10 - pages/funkin/macros/index.html | 10 - pages/funkin/menus/BetaWarningState.html | 2 +- pages/funkin/menus/FreeplaySong.html | 10 - pages/funkin/menus/FreeplaySonglist.html | 2 +- pages/funkin/menus/FreeplayState.html | 2 +- pages/funkin/menus/GitarooPause.html | 2 +- pages/funkin/menus/MainMenuState.html | 2 +- pages/funkin/menus/ModSwitchMenu.html | 2 +- pages/funkin/menus/PauseSubState.html | 2 +- pages/funkin/menus/SongMetadata.html | 10 - pages/funkin/menus/StoryMenuState.html | 2 +- pages/funkin/menus/TitleState.html | 2 +- .../funkin/menus/credits/CreditsCodename.html | 2 +- pages/funkin/menus/credits/CreditsMain.html | 2 +- pages/funkin/menus/index.html | 2 +- pages/funkin/menus/ui/AlphaCharacter.html | 10 + pages/funkin/menus/ui/Alphabet.html | 10 + .../{desktop/theme => menus/ui}/index.html | 4 +- pages/funkin/mods/LimeLibrarySymbol.html | 10 - pages/funkin/mods/ModsAssetLibrary.html | 10 - pages/funkin/mods/ModsFolder.html | 10 - pages/funkin/mods/ModsFolderLibrary.html | 10 - pages/funkin/mods/ZipFolderLibrary.html | 10 - pages/funkin/mods/index.html | 10 - .../multitasking/MultiTaskingHandler.html | 10 - pages/funkin/multitasking/StateWindow.html | 10 - pages/funkin/multitasking/index.html | 10 - pages/funkin/options/OptionCategory.html | 2 +- pages/funkin/options/Options.html | 2 +- pages/funkin/options/OptionsMenu.html | 2 +- pages/funkin/options/OptionsScreen.html | 2 +- pages/funkin/options/OptionsTree.html | 2 +- pages/funkin/options/PlayerSettings.html | 2 +- pages/funkin/options/TreeMenu.html | 2 +- .../options/categories/AppearanceOptions.html | 2 +- .../options/categories/BehaviourOptions.html | 10 - .../options/categories/DebugOptions.html | 10 - .../options/categories/GameplayOptions.html | 2 +- .../options/categories/MiscOptions.html | 2 +- .../options/categories/SaveDataOptions.html | 10 - .../keybinds/ChangeKeybindSubState.html | 2 +- .../options/keybinds/KeybindSetting.html | 2 +- .../options/keybinds/KeybindsOptions.html | 2 +- pages/funkin/options/type/Checkbox.html | 2 +- pages/funkin/options/type/IconOption.html | 2 +- pages/funkin/options/type/NumOption.html | 10 + pages/funkin/options/type/OptionType.html | 2 +- pages/funkin/options/type/PortraitOption.html | 10 + pages/funkin/options/type/TextOption.html | 2 +- pages/funkin/options/type/index.html | 2 +- pages/funkin/savedata/FunkinSave.html | 14 + .../HighscoreChange.html} | 4 +- .../HighscoreEntry.html} | 4 +- .../SongScore.html} | 4 +- .../funkin/{updating => savedata}/index.html | 6 +- pages/funkin/saves/FunkinSave.html | 14 - pages/funkin/saves/index.html | 12 - pages/funkin/scripting/DummyScript.html | 11 - pages/funkin/scripting/EventManager.html | 10 - pages/funkin/scripting/GlobalScript.html | 10 - pages/funkin/scripting/HScript.html | 10 - pages/funkin/scripting/ModState.html | 10 - pages/funkin/scripting/ModSubState.html | 10 - .../funkin/scripting/MultiThreadedScript.html | 10 - pages/funkin/scripting/Script.html | 12 - pages/funkin/scripting/ScriptPack.html | 11 - .../funkin/scripting/events/CamMoveEvent.html | 12 - .../scripting/events/CancellableEvent.html | 13 - .../scripting/events/CountdownEvent.html | 12 - pages/funkin/scripting/events/DanceEvent.html | 12 - .../scripting/events/DirectionAnimEvent.html | 12 - .../events/DiscordPresenceUpdateEvent.html | 12 - .../events/FreeplaySongSelectEvent.html | 12 - .../scripting/events/InputSystemEvent.html | 15 - .../scripting/events/MenuChangeEvent.html | 12 - pages/funkin/scripting/events/NameEvent.html | 12 - .../scripting/events/NoteCreationEvent.html | 12 - .../funkin/scripting/events/NoteHitEvent.html | 12 - .../scripting/events/NoteUpdateEvent.html | 12 - .../scripting/events/PauseCreationEvent.html | 12 - .../scripting/events/PlayAnimContext.html | 15 - .../scripting/events/PlayAnimEvent.html | 12 - pages/funkin/scripting/events/PointEvent.html | 12 - .../scripting/events/RatingUpdateEvent.html | 12 - .../funkin/scripting/events/ResizeEvent.html | 12 - .../scripting/events/SimpleNoteEvent.html | 12 - pages/funkin/scripting/events/StateEvent.html | 12 - .../scripting/events/StrumCreationEvent.html | 13 - .../scripting/events/SubstateEvent.html | 12 - .../scripting/events/WeekSelectEvent.html | 12 - pages/funkin/scripting/events/index.html | 10 - pages/funkin/scripting/index.html | 10 - pages/funkin/shaders/CustomShader.html | 13 - pages/funkin/shaders/FunkinShader.html | 11 - pages/funkin/shaders/ShaderTemplates.html | 10 - pages/funkin/shaders/ShaderTypeException.html | 10 - pages/funkin/shaders/WiggleEffect.html | 10 - pages/funkin/shaders/WiggleShader.html | 10 - pages/funkin/shaders/index.html | 10 - pages/funkin/system/Action.html | 10 - pages/funkin/system/AnimData.html | 10 - pages/funkin/system/AssetSource.html | 10 - pages/funkin/system/AssetsLibraryList.html | 10 - pages/funkin/system/BPMChangeEvent.html | 12 - pages/funkin/system/Conductor.html | 10 - pages/funkin/system/Controls.html | 16 - pages/funkin/system/CoolUtil.html | 10 - pages/funkin/system/CrashHandler.html | 10 - pages/funkin/system/Device.html | 10 - pages/funkin/system/DiscordClient.html | 10 - pages/funkin/system/ErrorCode.html | 10 - pages/funkin/system/FlxAnimate.html | 10 - pages/funkin/system/FramerateField.html | 10 - pages/funkin/system/FunkinGame.html | 10 - pages/funkin/system/FunkinRatioScaleMode.html | 10 - pages/funkin/system/FunkinSprite.html | 10 - pages/funkin/system/GraphicCacheSprite.html | 10 - pages/funkin/system/IniUtils.html | 10 - pages/funkin/system/KeyboardScheme.html | 10 - pages/funkin/system/Level.html | 10 - pages/funkin/system/LogText.html | 10 - pages/funkin/system/Logs.html | 10 - pages/funkin/system/Main.html | 10 - pages/funkin/system/MainState.html | 10 - pages/funkin/system/MarkdownUtil.html | 10 - pages/funkin/system/MusicBeatGroup.html | 10 - pages/funkin/system/MusicBeatState.html | 10 - pages/funkin/system/MusicBeatSubstate.html | 10 - pages/funkin/system/OptimizedBitmapData.html | 10 - pages/funkin/system/Paths.html | 11 - pages/funkin/system/PlayingSound.html | 10 - pages/funkin/system/Section.html | 10 - pages/funkin/system/Song.html | 10 - pages/funkin/system/StrNameLabel.html | 10 - pages/funkin/system/SwagSection.html | 10 - pages/funkin/system/SwagSong.html | 10 - pages/funkin/system/XMLAnimType.html | 10 - pages/funkin/system/XMLSprite.html | 10 - pages/funkin/system/XMLUtil.html | 10 - pages/funkin/system/ZipProgress.html | 10 - pages/funkin/system/ZipReader.html | 10 - pages/funkin/system/ZipUtils.html | 10 - pages/funkin/system/ZipWriter.html | 10 - .../system/framerate/AssetTreeInfo.html | 10 - .../system/framerate/ConductorInfo.html | 10 - pages/funkin/system/framerate/FlixelInfo.html | 10 - pages/funkin/system/framerate/Framerate.html | 10 - .../system/framerate/FramerateCategory.html | 10 - .../system/framerate/FramerateCounter.html | 10 - .../system/framerate/MemoryCounter.html | 10 - pages/funkin/system/framerate/SystemInfo.html | 10 - pages/funkin/system/framerate/index.html | 10 - pages/funkin/system/index.html | 14 - pages/funkin/system/modules/FunkinCache.html | 10 - pages/funkin/ui/AlphaCharacter.html | 10 - pages/funkin/ui/Alphabet.html | 10 - pages/funkin/ui/FunkinText.html | 10 - pages/funkin/ui/index.html | 10 - pages/funkin/updating/AsyncUpdater.html | 10 - .../updating/UpdateAvailableScreen.html | 10 - .../funkin/updating/UpdateCheckCallback.html | 10 - pages/funkin/updating/UpdateScreen.html | 10 - pages/funkin/updating/UpdateUtil.html | 10 - pages/funkin/updating/UpdaterProgress.html | 10 - pages/funkin/updating/UpdaterStep.html | 10 - pages/funkin/utils/AnimData.html | 10 - pages/funkin/utils/BitmapUtil.html | 10 - pages/funkin/utils/ConsoleColor.html | 10 - pages/funkin/utils/CoolSfx.html | 10 - pages/funkin/utils/CoolUtil.html | 17 - pages/funkin/utils/DiscordJson.html | 10 - pages/funkin/utils/DiscordUtil.html | 10 - pages/funkin/utils/EngineUtil.html | 11 - pages/funkin/utils/IniUtil.html | 10 - pages/funkin/utils/MarkdownUtil.html | 10 - pages/funkin/utils/MemoryUtil.html | 10 - pages/funkin/utils/MessageBoxIcon.html | 10 - pages/funkin/utils/NativeAPI.html | 12 - pages/funkin/utils/ThreadUtil.html | 10 - pages/funkin/utils/XMLUtil.html | 10 - pages/funkin/utils/ZipProgress.html | 10 - pages/funkin/utils/ZipReader.html | 10 - pages/funkin/utils/ZipUtil.html | 10 - pages/funkin/utils/ZipWriter.html | 10 - pages/funkin/utils/index.html | 12 - pages/funkin/utils/native/HiddenProcess.html | 10 - pages/funkin/windows/ConsoleColor.html | 10 - pages/funkin/windows/MessageBoxIcon.html | 10 - pages/funkin/windows/WindowsAPI.html | 12 - pages/funkin/windows/index.html | 11 - pages/nav.js | 2 +- pages/scripting/CharacterScript.html | 4 +- pages/scripting/PlayStateScript.html | 2 +- source/funkin/backend/system/MainState.hx | 1 + source/funkin/menus/FreeplayState.hx | 36 +- source/funkin/menus/credits/CreditsMain.hx | 55 +- 550 files changed, 48290 insertions(+), 365046 deletions(-) create mode 100644 assets/data/characters/bf-holding-gf-dead.xml create mode 100644 assets/data/config/credits.xml create mode 100644 assets/images/characters/bf-holding-gf-dead.png create mode 100644 assets/images/characters/bf-holding-gf-dead.xml create mode 100644 assets/images/credits/credit icon example.png delete mode 100644 buildnumber.txt delete mode 100644 docs/doc.xml delete mode 100644 pages/funkin/away3d/Flx3DView.html delete mode 100644 pages/funkin/away3d/index.html rename pages/funkin/{menus/FreeplayJSON.html => backend/FlxAnimate.html} (63%) create mode 100644 pages/funkin/backend/FunkinSprite.html rename pages/funkin/{interfaces/IOffsetCompatible.html => backend/FunkinText.html} (54%) rename pages/funkin/{github/GitHubException.html => backend/MusicBeatGroup.html} (52%) create mode 100644 pages/funkin/backend/MusicBeatState.html create mode 100644 pages/funkin/backend/MusicBeatSubstate.html create mode 100644 pages/funkin/backend/MusicBeatTransition.html create mode 100644 pages/funkin/backend/XMLAnimType.html create mode 100644 pages/funkin/backend/assets/AssetSource.html create mode 100644 pages/funkin/backend/assets/AssetsLibraryList.html create mode 100644 pages/funkin/backend/assets/LimeLibrarySymbol.html create mode 100644 pages/funkin/backend/assets/ModsAssetLibrary.html create mode 100644 pages/funkin/backend/assets/ModsFolder.html create mode 100644 pages/funkin/backend/assets/ModsFolderLibrary.html create mode 100644 pages/funkin/backend/assets/Paths.html create mode 100644 pages/funkin/backend/assets/ZipFolderLibrary.html rename pages/funkin/{system/modules => backend/assets}/index.html (56%) rename pages/funkin/{system/modules/CrashHandler.html => backend/chart/BaseGameParser.html} (65%) create mode 100644 pages/funkin/backend/chart/Chart.html create mode 100644 pages/funkin/backend/chart/ChartData.html create mode 100644 pages/funkin/backend/chart/ChartEvent.html create mode 100644 pages/funkin/backend/chart/ChartMetaData.html create mode 100644 pages/funkin/backend/chart/ChartNote.html create mode 100644 pages/funkin/backend/chart/ChartSaveSettings.html create mode 100644 pages/funkin/backend/chart/ChartStrumLine.html create mode 100644 pages/funkin/backend/chart/ChartStrumLineType.html create mode 100644 pages/funkin/backend/chart/SwagSection.html create mode 100644 pages/funkin/backend/chart/SwagSong.html create mode 100644 pages/funkin/backend/chart/index.html rename pages/funkin/{desktop => backend}/index.html (51%) create mode 100644 pages/funkin/backend/scripting/DummyScript.html create mode 100644 pages/funkin/backend/scripting/EventManager.html create mode 100644 pages/funkin/backend/scripting/GlobalScript.html create mode 100644 pages/funkin/backend/scripting/HScript.html create mode 100644 pages/funkin/backend/scripting/ModState.html create mode 100644 pages/funkin/backend/scripting/ModSubState.html create mode 100644 pages/funkin/backend/scripting/MultiThreadedScript.html create mode 100644 pages/funkin/backend/scripting/Script.html create mode 100644 pages/funkin/backend/scripting/ScriptPack.html create mode 100644 pages/funkin/backend/scripting/events/AmountEvent.html create mode 100644 pages/funkin/backend/scripting/events/CamMoveEvent.html create mode 100644 pages/funkin/backend/scripting/events/CancellableEvent.html create mode 100644 pages/funkin/backend/scripting/events/CountdownEvent.html create mode 100644 pages/funkin/backend/scripting/events/DanceEvent.html create mode 100644 pages/funkin/backend/scripting/events/DirectionAnimEvent.html create mode 100644 pages/funkin/backend/scripting/events/DiscordPresenceUpdateEvent.html create mode 100644 pages/funkin/backend/scripting/events/DrawEvent.html create mode 100644 pages/funkin/backend/scripting/events/EventGameEvent.html create mode 100644 pages/funkin/backend/scripting/events/FreeplayAlphaUpdateEvent.html create mode 100644 pages/funkin/backend/scripting/events/FreeplaySongSelectEvent.html create mode 100644 pages/funkin/backend/scripting/events/InputSystemEvent.html create mode 100644 pages/funkin/backend/scripting/events/MenuChangeEvent.html create mode 100644 pages/funkin/backend/scripting/events/NameEvent.html create mode 100644 pages/funkin/backend/scripting/events/NoteCreationEvent.html create mode 100644 pages/funkin/backend/scripting/events/NoteHitEvent.html create mode 100644 pages/funkin/backend/scripting/events/NoteMissEvent.html create mode 100644 pages/funkin/backend/scripting/events/NoteUpdateEvent.html create mode 100644 pages/funkin/backend/scripting/events/PauseCreationEvent.html create mode 100644 pages/funkin/backend/scripting/events/PlayAnimContext.html create mode 100644 pages/funkin/backend/scripting/events/PlayAnimEvent.html create mode 100644 pages/funkin/backend/scripting/events/PointEvent.html create mode 100644 pages/funkin/backend/scripting/events/RatingUpdateEvent.html create mode 100644 pages/funkin/backend/scripting/events/ResizeEvent.html create mode 100644 pages/funkin/backend/scripting/events/SimpleNoteEvent.html create mode 100644 pages/funkin/backend/scripting/events/StageNodeEvent.html create mode 100644 pages/funkin/backend/scripting/events/StageXMLEvent.html create mode 100644 pages/funkin/backend/scripting/events/StateEvent.html create mode 100644 pages/funkin/backend/scripting/events/StrumCreationEvent.html create mode 100644 pages/funkin/backend/scripting/events/WeekSelectEvent.html create mode 100644 pages/funkin/backend/scripting/events/index.html create mode 100644 pages/funkin/backend/scripting/index.html create mode 100644 pages/funkin/backend/shaders/CustomShader.html create mode 100644 pages/funkin/backend/shaders/FunkinShader.html create mode 100644 pages/funkin/backend/shaders/ShaderTemplates.html rename pages/funkin/{system/framerate/CodenameBuildField.html => backend/shaders/ShaderTypeException.html} (63%) rename pages/funkin/{desktop/editors => backend/shaders}/index.html (62%) create mode 100644 pages/funkin/backend/system/Action.html create mode 100644 pages/funkin/backend/system/BPMChangeEvent.html rename pages/funkin/{utils/native/Stdin.html => backend/system/CommandLineHandler.html} (55%) create mode 100644 pages/funkin/backend/system/Conductor.html rename pages/funkin/{ => backend}/system/Control.html (53%) create mode 100644 pages/funkin/backend/system/Controls.html rename pages/funkin/{utils/native/index.html => backend/system/Device.html} (56%) create mode 100644 pages/funkin/backend/system/ErrorCode.html create mode 100644 pages/funkin/backend/system/FunkinGame.html create mode 100644 pages/funkin/backend/system/FunkinRatioScaleMode.html create mode 100644 pages/funkin/backend/system/GraphicCacheSprite.html rename pages/funkin/{cutscenes/dialogue/CharPosDef.html => backend/system/KeyboardScheme.html} (60%) create mode 100644 pages/funkin/backend/system/Level.html rename pages/funkin/{desktop/editors/Butt.html => backend/system/LogText.html} (56%) create mode 100644 pages/funkin/backend/system/Logs.html create mode 100644 pages/funkin/backend/system/Main.html rename pages/funkin/{desktop/windows/WindowCaptionButton.html => backend/system/MainState.html} (51%) create mode 100644 pages/funkin/backend/system/OptimizedBitmapData.html create mode 100644 pages/funkin/backend/system/RotatingSpriteGroup.html create mode 100644 pages/funkin/backend/system/framerate/AssetTreeInfo.html create mode 100644 pages/funkin/backend/system/framerate/CodenameBuildField.html create mode 100644 pages/funkin/backend/system/framerate/ConductorInfo.html create mode 100644 pages/funkin/backend/system/framerate/FlixelInfo.html create mode 100644 pages/funkin/backend/system/framerate/Framerate.html create mode 100644 pages/funkin/backend/system/framerate/FramerateCategory.html create mode 100644 pages/funkin/backend/system/framerate/FramerateCounter.html create mode 100644 pages/funkin/backend/system/framerate/MemoryCounter.html create mode 100644 pages/funkin/backend/system/framerate/SystemInfo.html create mode 100644 pages/funkin/backend/system/framerate/index.html create mode 100644 pages/funkin/backend/system/github/GitHub.html create mode 100644 pages/funkin/backend/system/github/GitHubAsset.html create mode 100644 pages/funkin/backend/system/github/GitHubContributor.html create mode 100644 pages/funkin/backend/system/github/GitHubException.html create mode 100644 pages/funkin/backend/system/github/GitHubReactions.html create mode 100644 pages/funkin/backend/system/github/GitHubRelease.html create mode 100644 pages/funkin/backend/system/github/GitHubUser.html create mode 100644 pages/funkin/backend/system/github/GitHubUserType.html create mode 100644 pages/funkin/backend/system/github/index.html create mode 100644 pages/funkin/backend/system/index.html create mode 100644 pages/funkin/backend/system/interfaces/IBeatReceiver.html create mode 100644 pages/funkin/backend/system/interfaces/IOffsetCompatible.html create mode 100644 pages/funkin/backend/system/interfaces/index.html create mode 100644 pages/funkin/backend/system/macros/DefinesMacro.html create mode 100644 pages/funkin/backend/system/macros/GitCommitMacro.html create mode 100644 pages/funkin/backend/system/macros/index.html create mode 100644 pages/funkin/backend/system/modules/CrashHandler.html create mode 100644 pages/funkin/backend/system/modules/FunkinCache.html create mode 100644 pages/funkin/backend/system/modules/PlayingSound.html create mode 100644 pages/funkin/backend/system/modules/index.html create mode 100644 pages/funkin/backend/system/net/Socket.html create mode 100644 pages/funkin/backend/system/net/index.html create mode 100644 pages/funkin/backend/utils/AnimData.html create mode 100644 pages/funkin/backend/utils/BitmapUtil.html create mode 100644 pages/funkin/backend/utils/ConsoleColor.html create mode 100644 pages/funkin/backend/utils/CoolSfx.html create mode 100644 pages/funkin/backend/utils/CoolUtil.html rename pages/funkin/{desktop/windows/index.html => backend/utils/DiscordJson.html} (51%) create mode 100644 pages/funkin/backend/utils/DiscordUtil.html create mode 100644 pages/funkin/backend/utils/EngineUtil.html rename pages/funkin/{ => backend}/utils/FlxInterpolateColor.html (61%) create mode 100644 pages/funkin/backend/utils/FunkinParentDisabler.html rename pages/funkin/{cutscenes/dialogue/index.html => backend/utils/IXMLEvents.html} (51%) create mode 100644 pages/funkin/backend/utils/IniUtil.html create mode 100644 pages/funkin/backend/utils/MarkdownUtil.html create mode 100644 pages/funkin/backend/utils/MemoryUtil.html create mode 100644 pages/funkin/backend/utils/MessageBoxIcon.html create mode 100644 pages/funkin/backend/utils/NativeAPI.html rename pages/funkin/{desktop/windows/ContextOption.html => backend/utils/ShaderResizeFix.html} (57%) create mode 100644 pages/funkin/backend/utils/SortedArrayUtil.html rename pages/funkin/{desktop/sprites/WindowText.html => backend/utils/StrNameLabel.html} (57%) create mode 100644 pages/funkin/backend/utils/SysZip.html create mode 100644 pages/funkin/backend/utils/SysZipEntry.html create mode 100644 pages/funkin/backend/utils/XMLUtil.html create mode 100644 pages/funkin/backend/utils/ZipProgress.html create mode 100644 pages/funkin/backend/utils/ZipReader.html create mode 100644 pages/funkin/backend/utils/ZipUtil.html create mode 100644 pages/funkin/backend/utils/ZipWriter.html create mode 100644 pages/funkin/backend/utils/index.html create mode 100644 pages/funkin/backend/utils/native/HiddenProcess.html create mode 100644 pages/funkin/backend/utils/native/Stdin.html create mode 100644 pages/funkin/backend/utils/native/Stdout.html create mode 100644 pages/funkin/backend/utils/native/index.html delete mode 100644 pages/funkin/chart/BaseGameParser.html delete mode 100644 pages/funkin/chart/Chart.html delete mode 100644 pages/funkin/chart/ChartData.html delete mode 100644 pages/funkin/chart/ChartEvent.html delete mode 100644 pages/funkin/chart/ChartEventType.html delete mode 100644 pages/funkin/chart/ChartMetaData.html delete mode 100644 pages/funkin/chart/ChartNote.html delete mode 100644 pages/funkin/chart/ChartSaveSettings.html delete mode 100644 pages/funkin/chart/ChartStrumLine.html delete mode 100644 pages/funkin/chart/ChartStrumLineType.html delete mode 100644 pages/funkin/chart/SwagSection.html delete mode 100644 pages/funkin/chart/SwagSong.html delete mode 100644 pages/funkin/chart/index.html delete mode 100644 pages/funkin/cutscenes/Cutscene.html delete mode 100644 pages/funkin/cutscenes/DialogueCutscene.html delete mode 100644 pages/funkin/cutscenes/DialogueLine.html delete mode 100644 pages/funkin/cutscenes/MP4Handler.html delete mode 100644 pages/funkin/cutscenes/ScriptedCutscene.html delete mode 100644 pages/funkin/cutscenes/VideoCutscene.html delete mode 100644 pages/funkin/cutscenes/dialogue/DialogueBox.html delete mode 100644 pages/funkin/cutscenes/dialogue/DialogueCharTweenContext.html delete mode 100644 pages/funkin/cutscenes/dialogue/DialogueCharacter.html delete mode 100644 pages/funkin/cutscenes/index.html delete mode 100644 pages/funkin/data/FreeplayJSON.html delete mode 100644 pages/funkin/data/FreeplaySong.html delete mode 100644 pages/funkin/data/FreeplaySonglist.html delete mode 100644 pages/funkin/data/SongMetadata.html delete mode 100644 pages/funkin/data/index.html delete mode 100644 pages/funkin/debug/AnimationDebug.html delete mode 100644 pages/funkin/desktop/DesktopMain.html delete mode 100644 pages/funkin/desktop/DesktopScreen.html delete mode 100644 pages/funkin/desktop/DesktopUtils.html delete mode 100644 pages/funkin/desktop/IDesktopFocusableObject.html delete mode 100644 pages/funkin/desktop/IDesktopInputObject.html delete mode 100644 pages/funkin/desktop/MouseInput.html delete mode 100644 pages/funkin/desktop/editors/CharacterEditor.html delete mode 100644 pages/funkin/desktop/editors/EditorPlayState.html delete mode 100644 pages/funkin/desktop/editors/HelloWorld.html delete mode 100644 pages/funkin/desktop/editors/MessageBox.html delete mode 100644 pages/funkin/desktop/editors/MessageBoxIcon.html delete mode 100644 pages/funkin/desktop/sprites/Button.html delete mode 100644 pages/funkin/desktop/sprites/CheckState.html delete mode 100644 pages/funkin/desktop/sprites/Checkbox.html delete mode 100644 pages/funkin/desktop/sprites/DropDown.html delete mode 100644 pages/funkin/desktop/sprites/InputBox.html delete mode 100644 pages/funkin/desktop/sprites/MenuBar.html delete mode 100644 pages/funkin/desktop/sprites/NumericStepper.html delete mode 100644 pages/funkin/desktop/sprites/SpliceSprite.html delete mode 100644 pages/funkin/desktop/sprites/TabView.html delete mode 100644 pages/funkin/desktop/sprites/index.html delete mode 100644 pages/funkin/desktop/theme/Theme.html delete mode 100644 pages/funkin/desktop/theme/ThemeData.html delete mode 100644 pages/funkin/desktop/windows/ContextMenu.html delete mode 100644 pages/funkin/desktop/windows/Window.html delete mode 100644 pages/funkin/desktop/windows/WindowContent.html delete mode 100644 pages/funkin/desktop/windows/WindowDragHitbox.html delete mode 100644 pages/funkin/desktop/windows/WindowGroup.html delete mode 100644 pages/funkin/editors/CharacterEditor.html delete mode 100644 pages/funkin/editors/ChartingState.html create mode 100644 pages/funkin/editors/SaveSubstate.html rename pages/funkin/{shaders/WiggleEffectType.html => editors/SaveSubstateData.html} (59%) create mode 100644 pages/funkin/editors/character/CharacterAnimButtons.html create mode 100644 pages/funkin/editors/character/CharacterAnimScreen.html create mode 100644 pages/funkin/editors/character/CharacterAnimsWindow.html create mode 100644 pages/funkin/editors/character/CharacterChange.html create mode 100644 pages/funkin/editors/character/CharacterEditor.html create mode 100644 pages/funkin/editors/character/CharacterGhostsHandler.html create mode 100644 pages/funkin/editors/character/CharacterInfoScreen.html create mode 100644 pages/funkin/editors/character/CharacterPropertiesWindow.html create mode 100644 pages/funkin/editors/character/CharacterSelection.html create mode 100644 pages/funkin/editors/character/index.html create mode 100644 pages/funkin/editors/charter/ChartDataScreen.html rename pages/funkin/{system/modules/PlayingSound.html => editors/charter/CharterCopyboardObject.html} (54%) create mode 100644 pages/funkin/editors/charter/CharterEvent.html create mode 100644 pages/funkin/editors/charter/CharterEventAdd.html create mode 100644 pages/funkin/editors/charter/CharterEventGroup.html create mode 100644 pages/funkin/editors/charter/CharterEventScreen.html create mode 100644 pages/funkin/editors/charter/CharterEventTypeSelection.html create mode 100644 pages/funkin/editors/charter/CharterGridActionType.html create mode 100644 pages/funkin/editors/charter/CharterStrumlineButton.html create mode 100644 pages/funkin/editors/charter/CharterStrumlineExtraButton.html create mode 100644 pages/funkin/editors/charter/CharterStrumlineScreen.html rename pages/funkin/{desktop/windows/WindowCam.html => editors/charter/EventInfo.html} (62%) create mode 100644 pages/funkin/editors/charter/EventParamInfo.html create mode 100644 pages/funkin/editors/charter/EventParamType.html create mode 100644 pages/funkin/editors/charter/EventsData.html create mode 100644 pages/funkin/editors/charter/MetaDataScreen.html create mode 100644 pages/funkin/editors/charter/NoteDragChange.html create mode 100644 pages/funkin/editors/charter/NoteSustainChange.html create mode 100644 pages/funkin/editors/ui/IUIFocusable.html create mode 100644 pages/funkin/editors/ui/UIColorWheelSelector.html create mode 100644 pages/funkin/editors/ui/UIColorwheel.html create mode 100644 pages/funkin/editors/ui/UIDropDown.html create mode 100644 pages/funkin/editors/ui/UINumericStepper.html create mode 100644 pages/funkin/editors/ui/UIScrollBar.html create mode 100644 pages/funkin/editors/ui/UISubstateWindow.html create mode 100644 pages/funkin/editors/ui/UITextBox.html create mode 100644 pages/funkin/editors/ui/UIWindow.html delete mode 100644 pages/funkin/game/Highscore.html delete mode 100644 pages/funkin/game/SongScore.html delete mode 100644 pages/funkin/game/StageSprite.html create mode 100644 pages/funkin/game/cutscenes/Cutscene.html rename pages/funkin/{utils/native/Stdout.html => game/cutscenes/CutsceneSubtitle.html} (54%) create mode 100644 pages/funkin/game/cutscenes/DialogueCutscene.html rename pages/funkin/{desktop/sprites/TopMenuTree.html => game/cutscenes/DialogueLine.html} (58%) create mode 100644 pages/funkin/game/cutscenes/ScriptedCutscene.html create mode 100644 pages/funkin/game/cutscenes/VideoCutscene.html create mode 100644 pages/funkin/game/cutscenes/dialogue/CharPosDef.html create mode 100644 pages/funkin/game/cutscenes/dialogue/DialogueBox.html create mode 100644 pages/funkin/game/cutscenes/dialogue/DialogueCharTweenContext.html create mode 100644 pages/funkin/game/cutscenes/dialogue/DialogueCharacter.html create mode 100644 pages/funkin/game/cutscenes/dialogue/index.html create mode 100644 pages/funkin/game/cutscenes/index.html delete mode 100644 pages/funkin/github/GitHub.html delete mode 100644 pages/funkin/github/GitHubAsset.html delete mode 100644 pages/funkin/github/GitHubContributor.html delete mode 100644 pages/funkin/github/GitHubReactions.html delete mode 100644 pages/funkin/github/GitHubRelease.html delete mode 100644 pages/funkin/github/GitHubUser.html delete mode 100644 pages/funkin/github/GitHubUserType.html delete mode 100644 pages/funkin/github/index.html delete mode 100644 pages/funkin/interfaces/IBeatReceiver.html delete mode 100644 pages/funkin/interfaces/index.html delete mode 100644 pages/funkin/macros/BuildCounterMacro.html delete mode 100644 pages/funkin/macros/DefinesMacro.html delete mode 100644 pages/funkin/macros/GitCommitMacro.html delete mode 100644 pages/funkin/macros/index.html delete mode 100644 pages/funkin/menus/FreeplaySong.html delete mode 100644 pages/funkin/menus/SongMetadata.html create mode 100644 pages/funkin/menus/ui/AlphaCharacter.html create mode 100644 pages/funkin/menus/ui/Alphabet.html rename pages/funkin/{desktop/theme => menus/ui}/index.html (60%) delete mode 100644 pages/funkin/mods/LimeLibrarySymbol.html delete mode 100644 pages/funkin/mods/ModsAssetLibrary.html delete mode 100644 pages/funkin/mods/ModsFolder.html delete mode 100644 pages/funkin/mods/ModsFolderLibrary.html delete mode 100644 pages/funkin/mods/ZipFolderLibrary.html delete mode 100644 pages/funkin/mods/index.html delete mode 100644 pages/funkin/multitasking/MultiTaskingHandler.html delete mode 100644 pages/funkin/multitasking/StateWindow.html delete mode 100644 pages/funkin/multitasking/index.html delete mode 100644 pages/funkin/options/categories/BehaviourOptions.html delete mode 100644 pages/funkin/options/categories/DebugOptions.html delete mode 100644 pages/funkin/options/categories/SaveDataOptions.html create mode 100644 pages/funkin/options/type/NumOption.html create mode 100644 pages/funkin/options/type/PortraitOption.html create mode 100644 pages/funkin/savedata/FunkinSave.html rename pages/funkin/{system/CommandLineHandler.html => savedata/HighscoreChange.html} (61%) rename pages/funkin/{debug/index.html => savedata/HighscoreEntry.html} (57%) rename pages/funkin/{utils/StrNameLabel.html => savedata/SongScore.html} (59%) rename pages/funkin/{updating => savedata}/index.html (63%) delete mode 100644 pages/funkin/saves/FunkinSave.html delete mode 100644 pages/funkin/saves/index.html delete mode 100644 pages/funkin/scripting/DummyScript.html delete mode 100644 pages/funkin/scripting/EventManager.html delete mode 100644 pages/funkin/scripting/GlobalScript.html delete mode 100644 pages/funkin/scripting/HScript.html delete mode 100644 pages/funkin/scripting/ModState.html delete mode 100644 pages/funkin/scripting/ModSubState.html delete mode 100644 pages/funkin/scripting/MultiThreadedScript.html delete mode 100644 pages/funkin/scripting/Script.html delete mode 100644 pages/funkin/scripting/ScriptPack.html delete mode 100644 pages/funkin/scripting/events/CamMoveEvent.html delete mode 100644 pages/funkin/scripting/events/CancellableEvent.html delete mode 100644 pages/funkin/scripting/events/CountdownEvent.html delete mode 100644 pages/funkin/scripting/events/DanceEvent.html delete mode 100644 pages/funkin/scripting/events/DirectionAnimEvent.html delete mode 100644 pages/funkin/scripting/events/DiscordPresenceUpdateEvent.html delete mode 100644 pages/funkin/scripting/events/FreeplaySongSelectEvent.html delete mode 100644 pages/funkin/scripting/events/InputSystemEvent.html delete mode 100644 pages/funkin/scripting/events/MenuChangeEvent.html delete mode 100644 pages/funkin/scripting/events/NameEvent.html delete mode 100644 pages/funkin/scripting/events/NoteCreationEvent.html delete mode 100644 pages/funkin/scripting/events/NoteHitEvent.html delete mode 100644 pages/funkin/scripting/events/NoteUpdateEvent.html delete mode 100644 pages/funkin/scripting/events/PauseCreationEvent.html delete mode 100644 pages/funkin/scripting/events/PlayAnimContext.html delete mode 100644 pages/funkin/scripting/events/PlayAnimEvent.html delete mode 100644 pages/funkin/scripting/events/PointEvent.html delete mode 100644 pages/funkin/scripting/events/RatingUpdateEvent.html delete mode 100644 pages/funkin/scripting/events/ResizeEvent.html delete mode 100644 pages/funkin/scripting/events/SimpleNoteEvent.html delete mode 100644 pages/funkin/scripting/events/StateEvent.html delete mode 100644 pages/funkin/scripting/events/StrumCreationEvent.html delete mode 100644 pages/funkin/scripting/events/SubstateEvent.html delete mode 100644 pages/funkin/scripting/events/WeekSelectEvent.html delete mode 100644 pages/funkin/scripting/events/index.html delete mode 100644 pages/funkin/scripting/index.html delete mode 100644 pages/funkin/shaders/CustomShader.html delete mode 100644 pages/funkin/shaders/FunkinShader.html delete mode 100644 pages/funkin/shaders/ShaderTemplates.html delete mode 100644 pages/funkin/shaders/ShaderTypeException.html delete mode 100644 pages/funkin/shaders/WiggleEffect.html delete mode 100644 pages/funkin/shaders/WiggleShader.html delete mode 100644 pages/funkin/shaders/index.html delete mode 100644 pages/funkin/system/Action.html delete mode 100644 pages/funkin/system/AnimData.html delete mode 100644 pages/funkin/system/AssetSource.html delete mode 100644 pages/funkin/system/AssetsLibraryList.html delete mode 100644 pages/funkin/system/BPMChangeEvent.html delete mode 100644 pages/funkin/system/Conductor.html delete mode 100644 pages/funkin/system/Controls.html delete mode 100644 pages/funkin/system/CoolUtil.html delete mode 100644 pages/funkin/system/CrashHandler.html delete mode 100644 pages/funkin/system/Device.html delete mode 100644 pages/funkin/system/DiscordClient.html delete mode 100644 pages/funkin/system/ErrorCode.html delete mode 100644 pages/funkin/system/FlxAnimate.html delete mode 100644 pages/funkin/system/FramerateField.html delete mode 100644 pages/funkin/system/FunkinGame.html delete mode 100644 pages/funkin/system/FunkinRatioScaleMode.html delete mode 100644 pages/funkin/system/FunkinSprite.html delete mode 100644 pages/funkin/system/GraphicCacheSprite.html delete mode 100644 pages/funkin/system/IniUtils.html delete mode 100644 pages/funkin/system/KeyboardScheme.html delete mode 100644 pages/funkin/system/Level.html delete mode 100644 pages/funkin/system/LogText.html delete mode 100644 pages/funkin/system/Logs.html delete mode 100644 pages/funkin/system/Main.html delete mode 100644 pages/funkin/system/MainState.html delete mode 100644 pages/funkin/system/MarkdownUtil.html delete mode 100644 pages/funkin/system/MusicBeatGroup.html delete mode 100644 pages/funkin/system/MusicBeatState.html delete mode 100644 pages/funkin/system/MusicBeatSubstate.html delete mode 100644 pages/funkin/system/OptimizedBitmapData.html delete mode 100644 pages/funkin/system/Paths.html delete mode 100644 pages/funkin/system/PlayingSound.html delete mode 100644 pages/funkin/system/Section.html delete mode 100644 pages/funkin/system/Song.html delete mode 100644 pages/funkin/system/StrNameLabel.html delete mode 100644 pages/funkin/system/SwagSection.html delete mode 100644 pages/funkin/system/SwagSong.html delete mode 100644 pages/funkin/system/XMLAnimType.html delete mode 100644 pages/funkin/system/XMLSprite.html delete mode 100644 pages/funkin/system/XMLUtil.html delete mode 100644 pages/funkin/system/ZipProgress.html delete mode 100644 pages/funkin/system/ZipReader.html delete mode 100644 pages/funkin/system/ZipUtils.html delete mode 100644 pages/funkin/system/ZipWriter.html delete mode 100644 pages/funkin/system/framerate/AssetTreeInfo.html delete mode 100644 pages/funkin/system/framerate/ConductorInfo.html delete mode 100644 pages/funkin/system/framerate/FlixelInfo.html delete mode 100644 pages/funkin/system/framerate/Framerate.html delete mode 100644 pages/funkin/system/framerate/FramerateCategory.html delete mode 100644 pages/funkin/system/framerate/FramerateCounter.html delete mode 100644 pages/funkin/system/framerate/MemoryCounter.html delete mode 100644 pages/funkin/system/framerate/SystemInfo.html delete mode 100644 pages/funkin/system/framerate/index.html delete mode 100644 pages/funkin/system/index.html delete mode 100644 pages/funkin/system/modules/FunkinCache.html delete mode 100644 pages/funkin/ui/AlphaCharacter.html delete mode 100644 pages/funkin/ui/Alphabet.html delete mode 100644 pages/funkin/ui/FunkinText.html delete mode 100644 pages/funkin/ui/index.html delete mode 100644 pages/funkin/updating/AsyncUpdater.html delete mode 100644 pages/funkin/updating/UpdateAvailableScreen.html delete mode 100644 pages/funkin/updating/UpdateCheckCallback.html delete mode 100644 pages/funkin/updating/UpdateScreen.html delete mode 100644 pages/funkin/updating/UpdateUtil.html delete mode 100644 pages/funkin/updating/UpdaterProgress.html delete mode 100644 pages/funkin/updating/UpdaterStep.html delete mode 100644 pages/funkin/utils/AnimData.html delete mode 100644 pages/funkin/utils/BitmapUtil.html delete mode 100644 pages/funkin/utils/ConsoleColor.html delete mode 100644 pages/funkin/utils/CoolSfx.html delete mode 100644 pages/funkin/utils/CoolUtil.html delete mode 100644 pages/funkin/utils/DiscordJson.html delete mode 100644 pages/funkin/utils/DiscordUtil.html delete mode 100644 pages/funkin/utils/EngineUtil.html delete mode 100644 pages/funkin/utils/IniUtil.html delete mode 100644 pages/funkin/utils/MarkdownUtil.html delete mode 100644 pages/funkin/utils/MemoryUtil.html delete mode 100644 pages/funkin/utils/MessageBoxIcon.html delete mode 100644 pages/funkin/utils/NativeAPI.html delete mode 100644 pages/funkin/utils/ThreadUtil.html delete mode 100644 pages/funkin/utils/XMLUtil.html delete mode 100644 pages/funkin/utils/ZipProgress.html delete mode 100644 pages/funkin/utils/ZipReader.html delete mode 100644 pages/funkin/utils/ZipUtil.html delete mode 100644 pages/funkin/utils/ZipWriter.html delete mode 100644 pages/funkin/utils/index.html delete mode 100644 pages/funkin/utils/native/HiddenProcess.html delete mode 100644 pages/funkin/windows/ConsoleColor.html delete mode 100644 pages/funkin/windows/MessageBoxIcon.html delete mode 100644 pages/funkin/windows/WindowsAPI.html delete mode 100644 pages/funkin/windows/index.html diff --git a/.gitignore b/.gitignore index 7b2a0583..df3d060e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ latest/windows/haxe/ !.vscode/settings.json !.vscode/tasks.json .haxelib/ +docs/doc.xml mods/Baldi's Basics in Funkin'/ \ No newline at end of file diff --git a/TODO.md b/TODO.md index a8533cb8..f347b9ba 100644 --- a/TODO.md +++ b/TODO.md @@ -27,7 +27,7 @@ - [ ] Make it so dragging the character moves the offset - [ ] Disable volume controls when selecting stuff - [x] Use latest hxCodec -- [ ] Re-export gf-christmas, gf-car and gf-tankmen with padding +- [x] Re-export gf-christmas, gf-car and gf-tankmen with padding - [ ] Multiple state scripts & Multiple global scripts - [x] Re-add shader camera stuff - [x] Make update.bat use libs.xml instead of hmm.json @@ -37,7 +37,7 @@ - [ ] Dialogue - [ ] Finish Base Game port - [x] Add credits -- [ ] Verbose mode (`--verbose`) +- [ ] Verbose mode (`--verbose`) - [ ] Tooltips - [ ] Fix bugs @@ -51,4 +51,4 @@ - [ ] Full 3D support via stages files - [ ] Multithread sprites and assets loading (for faster load times) ? - [ ] Stage Editor -- [ ] Optimize flxanimate isOnScreen \ No newline at end of file +- [ ] Optimize flxanimate isOnScreen diff --git a/assets/data/characters/bf-holding-gf-dead.xml b/assets/data/characters/bf-holding-gf-dead.xml new file mode 100644 index 00000000..cc80ef1a --- /dev/null +++ b/assets/data/characters/bf-holding-gf-dead.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/data/characters/bf-holding-gf.xml b/assets/data/characters/bf-holding-gf.xml index 9cf573be..83d28039 100644 --- a/assets/data/characters/bf-holding-gf.xml +++ b/assets/data/characters/bf-holding-gf.xml @@ -1,5 +1,5 @@ - + @@ -10,4 +10,4 @@ - \ No newline at end of file + diff --git a/assets/data/characters/gf-christmas.xml b/assets/data/characters/gf-christmas.xml index 89a9947a..f293b7f4 100644 --- a/assets/data/characters/gf-christmas.xml +++ b/assets/data/characters/gf-christmas.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/data/characters/gf-tankmen.xml b/assets/data/characters/gf-tankmen.xml index 70d29d7e..47b8fa92 100644 --- a/assets/data/characters/gf-tankmen.xml +++ b/assets/data/characters/gf-tankmen.xml @@ -1,7 +1,7 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/assets/data/config/credits.xml b/assets/data/config/credits.xml new file mode 100644 index 00000000..c10e7b05 --- /dev/null +++ b/assets/data/config/credits.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/data/stages/tank.xml b/assets/data/stages/tank.xml index 78ff6b7e..bd5dcd54 100644 --- a/assets/data/stages/tank.xml +++ b/assets/data/stages/tank.xml @@ -1,8 +1,6 @@ - - diff --git a/assets/images/characters/bf-holding-gf-dead.png b/assets/images/characters/bf-holding-gf-dead.png new file mode 100644 index 0000000000000000000000000000000000000000..2745d6b8a0fd36fee347137394bbf5eb43c3c030 GIT binary patch literal 3070722 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�!rMsjujzo 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 z zp8FzBaSe|~A*72%W&;(w41dzt*kP1a^sA2v8!3{*075~ymR#zIaL2H=<;+j=jW^8l zWu~Tw#M%qf3|mNPDut|pXp|49YU&2Ml!H>3urm z6$&lBWY)~UyVR%!Q_b&EK!fYk!XyXg@-ZMlMcV_Y0v7nLs)S|a`@_I{5sr1&n=cEZ zavBagvcbj%=d}mF@&1QZDGkm@ASV6KiP=P^7z{5D3@W{Wma7A_;kbP~O3T8fa0Qghg1&ZJSna*9^sdlf=IR z-zIqaUVexoP|4fu%uAhboWPxp?my0aK>;jO`;N7#F=f0!nOB7L+D6R+X#@(|ben}A z-(a}}*%YZz6axNoT8#fhmEnvg|5RGRwC}^pSNuLE?>&tbT(ARO<16B1EK;viafaV$ z9jED7VTZ^Pu{8E%9W#+=M${0kBT1FAUYq=lVBT3jHPR!Zhp?LdgoB;S`SsN!^F1F#+L?fR?E%sNH53dlKdj>lW57z z3E`<#J{;?*w-rd`c}7$D zdN|S=8yV1BjRggZT~3Y z2RK9|3B4F&5mk;xzdY=9D3#!?+`kWX6gKKz;NmKRw3V*_+D&Y+wyO-F*6?(HGPIvR zrTn!R(-LDPBFaF#jAa!KX$Ee2EqnBwDC5Y=2rA5YH(GG@j5B+~Lr;bwk*EVt=Gt09 z@)<=IW*L4|;57;4X!F}fj6x|MGI{TKb|p0c(=*MxQCv7^`#Tf5U&hqgoFgwb!;!W-g-{-q#f>K z%D%Gj6IElA^F~fe=RRD8dKKH4*u!hw#`|kZ$LrtkBx0E1+=UMv#+z42#%sDF0nLXQ zH+$wZ_Vd_m$v0p1^iy{XZnPfV|FjnfH48BU9_j^CcqTQ>I4>Z)J5Uf0TCQ4l8d(V% zl=eF#og|x{%0KBf2_~rmH2}oPVxpB+w)V#Bcn$}BvOpY}!|C!RAc0GlU)U1`52PpBt7Le}P{>f-JdD%UR$af#lWBRD+LOKP!W){Aw0| zPJO~Sq8z`eMY>yCi2(T>I1yDJ`S)Q{g%s)R&UU7z<7Y4BZDs(Uo{!C``bo~6UF815 zk3o;*8JZJF0-olHL7@r0LJo4NXw!E-1&gf%L4mK>D>e248a_MUu{T=7bc-j}7Di*m zyeb+_M3T(^?ndJI{hnBRFbM&7b=kH;{sDtCunpvYXcp@lTvZ31U%#NPEDjPThPcwq zfQVj`&Z+Er<2tuYDM?AM@$K4$#pJZ>k=z|2jvRY-z*f);PPitqyCd6^(!e-I%h_Lp zdY?Vf>!-ag|I~-MKSnI1n^mF2hWpb}UGqmL1w!jCDBvy*27bqfPGBG#XRhAGVYbc? z;h$|lVMS(&wc2^?hwDOxIbT-l!vH3A;^pA;luF_1!{&KmFIz%qy8vUa4eUp=!(}=* z=hMhT8G`M3I+Bld9)=C%xWNsGI~oC7fA|WZxO$eFW#9F_@cJqxWHbl>4H0Lw7j;(8 zGgc$v6Cf8h-YH9Rb`KKTXw~o?lWt^yZ6M13%jsq>GbHGVtlBnpKkj+Ic)&56grwfw z_6_1II0+@Zc(OWm`~_%``Qlv+v896!Qm&?6c|~)i_V_vb&7WSK)hl%mt9P7BUo9vq zRaV?jpNe64)!t}VmPUNs*7_U4E{K$DgCDik&t0{lSPr*<-Q&9XN6GC1+L5yTl!e$c zwa6R&a_d^1U`48gaje)z_4=hQ;`DIRHjXG>aM_{4<{)%Jt2Pni<5D*uq}2g+X~nn5RQ|xw04Uqy%eKx-U&bx`na0wcw9wz&z4-KHdAAZ zZw868Hq#O3t>l;{uT85Gddc-{5Knptlo>K0ExKP5$GU7JG3Ru~YV5dk;h1L?na?ho zD+t}l3BFb56u68g3dA`5^R+KR-IMt%7k}#O`=33|iJiJ|&jpyBw*R@_{QY2=XC`sf z4E_hxZ}3l5`k$ZrJ<0mA@uGdP@VOjpx-F`IvuR{d#c0BWl*WwU zv7`+TyZjdBBowz}sgEJgr7Ifn0yT<*j~U+Qxy(t2(UhC}9c<=h{%MIrLFW}cg}q%5 zmGlJ<^()*jhHCw>`>chGkm_Do2sG5;UrI1RtjrVE{ZoVnILv4Ap)7#&s|Lb4izz>W zV4QOQhqP7E-5-mP9U&swCuuSWrYbFdT@IZ*+~@2W(ql*N}&a+MiO1E!f*E z<-afBTfFKsSNX=v4kCgJc15yh!^iptf%!x7ZWIb*% z3{|YvZf60?e%i!J>qTLs*tJhFerh(2+m-EXr{eh?*fQ|RyUqzT*k=&SXk%OXB)h9U z*B{)f(c*C%McV41OhU{OQx2bDbH37cx6sh&<2pRVEba-a&{FjEe7ZK_dw3B3XQV(~ zG)F2*m;ToQ!lt6asn7+}URwgial<;pbWjXO=udcDq@>q9K|Yh2PMmP#z^=>ew;V+I z9|AOm43oM`zvh|JnF@>~gnS%tX^!q^PK@B}9C z^U(Ep;eM38$A4QOq;z^(L_aD%%2_>!<{uTt8d0K46(3=Ij<;;^ikYy?Xm~1e6YeP@ z6E44+~)hN3y*!*iO5%4M!GSu7}*#yV4A zXO!etim;l#MvLdFW_NeI@`!(pixW0qZEb3)M}_p?ZFqQF)1O$GoY3(&UWf6xotL;x zj)0UFMMH=DD=2HIFXoR}XjPl!syuZ+|of{?S8^L#7;;4RnWS@uz2Q6UFAn=;qd6b$ibJ!(ff*Brh(gT>j zue{-{l+f46n+3Crd_>uZ+O)`9MKj8p0yzZ{l3Eok3G(xl;>1Jlm*c2LAFfZgLp`3e z!OK1;oyPSp8IgTuKM=}+irK?`AI}<$kA2jwccI;e(=Oc-u>R=y<;)QO>jl7DhHkOM zL=P5)9h?UPEWinoT(&b!fz*T;Y<+H--Rx&mQ(>!mnFff)YUWvO}&%H_+PE!6Nf@TY?vV^~M5|y6l1qFquv?6E5Svw&6 z;9=;&W0I$R2?>@$93a?L#|GFRw_;<>dGhYw09hD254xj7 zSWD`;$QOyl-$GD&B`CEcI@-B%&aD)QzL-d&g2oXYxIbXP<0 zlJdZ1a|wnqWXLOWaPO5aXpEPCo%Z5dYdB5AE((?N1hI$_azS07%3Sk(cINdxu|C!7 z{$lCm_ZObaw~IfuR<~gn69nr|oa>j9%~w-IH;?a5)HSwC=)%ms6w3)0I#C7Peu4=5 ze(ALs$VMlX-M?50NIB&2I6?*}=ub7(oNE~%DREX_m7HtQKh9g6TDodAZX?P}v!)Uj zXmGw%_Fx)%0Al4J4$rZg(uaf2^*h{9xzUw24J2lIrU)cOKAfk2w=xT6K@zLL3Pk$X z*E&SC5Ro*HlmGcbR2G@%4U8CZDMsbBL0xxVY}cQ4(P=fsYu0x{TF88mdiHE%QIL)o zcd7nfH8ZHBMbMI#f*NnrurZM?`mIu&IAg)u!O?ugw z?>(l2gys~EAY#D?Sww?!dU3ROKUTFjPgiBM@a2AQvwvd(x&4fF+l#H#g?1?07e411 znDTh0CA9U|;Ei!%5Wd%1f#A|{TeJ3+aK54~VBTtIiuL}}UIc7{Bu4^n|4f!0IFzE` zP)?vw;?UJX8Tv4C^1WM;BV<5fGiVQtr;QFJ$EZa|WeXbprJ%y%`UW8wyFBW7jfPs? zDA{1a4=tT){592bg27r_i#b(|Q4%&Mx-9+vk?ruzlkx zpK&?DBE@;eOv8E417~JtJy=s(I*|{}rh=-P1_*%DouZ&R=^x6-%o$wp=-p|A#=8^! z7IeCQ1CJ}}?ocIV-fQ9HPL?q|3DdCSquc<)(8X;#6S}}tt#dzM$QFu25HOsH%t=uF zX3P?=%z~2*urHB0t|egcJjKoY_My{sYdhbd zCvq}tVu|@x}-{w7&%QjD>p zpP#|mBLXnU%}Z31C)`BmXbdY4)2Q+W`cZ1J1?It@;w2-y3PI$(N}AQ_}x8CZ-> z7+K4C(tF)&%bfAW@v^BO-h7Vf(^!sPp8->6z?iR_;Mz$Wvt-F)1oW>UJVgwfs4GqK z(7HTzyz#UA_h6V(gifQ~^yHu$V5lz(OnmC9$FLViBl3Y}1O9lcW*4(xKf)ixp0Xw= z)4ZBbg3}M~#;9rYELm=-KdEI)^oq12ZyD3sV6w`MRS7DB@y(8F;qolxT$lqx z%hc@T2z@#QRvnLY-#w48PJK2B*L??I7Okq+q`V!9BHbr{sZT1%HE96IX6kT=r&0jsPhYgrHg)) zcqub?E+)`(gW1}S^z&3AvezO72%gFk%^wCAUQW8UOWPK$`>`p2qt=7z#wxLwsi+AT zZj$40&IQv>UD zQ4WR2259}7;qBp{jqeS6AUv?J9^#c z7Be5DDKG!b&Md6;yQJt&a-`@2yI|g6E}n-&7tJmNB*C#$u-W@_k<(jCO#%Xe_#ElXRgw$nA6#f$?=AbYMe@q>imZ9d{v$uyY4nGNmjpX8a}oM z?siZe%j6N`K1G(h)H!ZBEwya}-pP846klLat9OL90%c(V5hrxz;*rSz~-`W9-NMe%%J{-|mVu+kwBlZ~AJR$0rgLBK4jIkTYm|J>c`AI@mUf=$j-e?5qZ(A$5K zF@4$Os5!IV`%%@C{pWJeV0C134@wZiU-g&TPO$C+nWY@#I1X?sidzS_MLylN?y!^z z={j1CLEPXVYsk=J0cPVvv>NA=Y_`@o7S4Oz4M;F$auPWTHvC8A9&P}g{_pR9_(d)v zv(e*o0HgpiM>RIfR?ixwec8d~ohdFQNlk|qH_uLq;JHvT=vp$tg+6$EZ3^4|uH?*{ z)^FEp4NUZ1MVcfol8tmbdBp`8-Ma2H0H(IYFUW$wQM_NtPn$0E`%fjNd42FV-me~> zmP@H``Y$p^KHg4kDZH~;kq>=-li$5*Hl5;BXn8^DD856O04GQ0iS#OmaQm0vv%zPH z^jquVerSAT(ju7?ZoaPVmsAcqZyON#$xUqUy>dkc(zN;4nP0|wEUf5(a7};ms;o?5 znMOJvO%AnAb67bwwvq+CIQ6m~43kP|aGdj8@n4zlm)%HQ7oALF%MSY5?p;mUlj5AJ=pDZXouv2O{mvJ}epKFChO-p%72z7&s$anD@2gv5Npu~_T`+qw z>BNE|ooP~1Kz}%p2lmX~_=$Joii*s4M6Gd~DgA?Saj9Hb7d zs}4Aa5?@!-Wtw02Zehx!p*g`CJC4sQrk%f`xFEvt*Iw@JD~=gEfDy0DX4Bmj>GKi< zPvdela;Eov#(V$yF7dhn@{<^9bNK~o=ny%`wh9P*slPTs1|cVCH@&Nk^Jx6=jyGD* z+tTOz`8J%FjUXnQ+D~IJ=)xLX_w7CygM=}Y)50}qNj}G}f9Fc!@ceumgrhs2GufTW z)pchm_&O3>d*J&L<=!!4E_cu_^ultsVSnJY!5eMxwri2s%`hIEs%fOgpwLmne|xTI zBaocTQjJ2djH_1KA2y|RLie9Jhnfrz$BVH-mj;h1^7mb9Pi~uO1rNNXMjFc4^^^41 zn|jT63a~3jVMOnNCF>x4li+jT9IK3y&``K>tX&Q8?ZjF)0)XOgIb4rz1 z8}x5g&=~SB+;So5GGbe1zbbrsPRz-E7qsaqEpk-oI2K}!A7Z!}xYlYS%CoqzSjo}2 zv`Ik`rIu*D@la)-pAC=;zElzyW^j1rb|a9^-9)63j7s|*@itAF8(3KgGKo#M`v zml^y$ul$VDSo?g%Ij?(1p($O&{5Vc_y-$R{H#XK0tX?R9o_nMW$g87mZI~) zkzbyh8Hxg7_}!oIekx*%%y$e$YZcwWxcKYX-~(3sZCffuFFsDI0S^HUm`8nPxDIu^9%W)pmZE=Ph>ap}9jg@yR%9g~|yY>Us+Q!FS)w1PQHH>P;lhRs{k>9EA`UX(` z?Swm**SY3e);}x$M?+ZQTJ?vAe&_SG-$<_3Cp6%v?$7$(+REYR8F0iNgU|f*N5|-& z_&8B=IOIF{rRp&E4T5E_4)vcDfGRSy;+-U zHAS)^_DJVIVJx~ha#>8z>r$r76E&u9vM&9tRH|MBR4!F4p};DOE+~mf3&NX;VpmV% z*UH6b)Mf7Mh4`}N1i{WO+>fi-iS7CF6)r1%{zRxcIAGkWXgjGJ&)+jwf!(lQl6BuD zXFkv^2wB(1XFC^UG-#3)Sa!{(AuCgkkDKv50z+zo@()L7c@cNP>bJqTHq|d&9r*mk zjjFB6$EDJu5$hMaHJL84OlCcZ%x}N+EZ067Rq;9LPrHscmu%}Vkog~nR$49sx~Ds< z5@z{y=Zs*i|7=T_tMlZ`;$42B*Yid$U#T`vw8F9$u9q-j*ZSgMX;^RbbF!Y$36=+L*Eh9Cw zf7SYKu_XZb1u!_@`SxSGu;*3uH&AZ2JdLKNu2_-kGX^!#f|@x-aQ^;oOfxaG^5g_3 z(!mYt94asa*~C4Ck?E2#AS4MgnhqBV_)9CCpFSvODPqn{2DS|83$uN0!jmEqRF#yN zIR;Txj1iV`QoELk#~E}V9%m5LgTO#Xxx;o>_dAk_nuBaSWaP+W-W_%=dNSNLViS4{ zDa)ceKf0(nhREO7$NcqB%)WI|?l9=dkPr=We1&+-5Z{30)J~XWLujHZZ%WHJDo%$8 z=W2FjffwNoenEyH@Cuze%g2K(Ysbk_n&=zklpxYw3dq#FA}+|81NxGtZBbZlSRz^W zM|zGea0{V}d#0k3T7e`e{`#@<#{G7_J*{=7ocoacVlSyZhToK0YIXcEF%7x#;l<#boaTqI$xht5?#nW^CSBQvT3|-m|*$Kl09+WYB3E?Oj2^(bBh#R%vD}LA=+gyD3n?mI6VA|^A3 zXdBfF=NuXJ`|th+?-y>Z=dmfJPH|8djlOvD$XVP`cMZ*YBW)a9^=tP+g%8fk~41NTk?*%H9BGLYx(BY?s?%Im7*N?<+9l zRH6q_ae9sw=};}Bk3z7VLlRoRwv$%k5WEL{Myb(-)j)vJP>)NvugVpHuexis9n5~V zIRcdf;aM|}eP2#E)Y4(!dZJGr%4Q3T^6{o`-*)=lzU$O_PrTF+BjZTx$4-1tzZ~gf zf7m>xNhMasg8tkqPf&YaQ5cJ~xF}O+cyc7Ct_li;q{Dt_mclv%vMSO76cON?b?vo>v7V zjulQ>&I}nkJ$ik@@2PqwW*&;M6l7=1>iQK0G=Ffr_C(JZ978S9aSxvAJY+B8P?gOo zFAy-`T;vgz5$Y2mtSS?pZek%k1E`Al$0dm|Zz;(4p#Zfo=jlUte(7UKDeq9V5Xk5W zrruMk0bLdi2J7O`W|ZS1>2f(^4V4f$SSlT^@leyyl3a%#aUGI)@{R-F?TNGS9)eDY z&#ex9x*`NqgdEplvXdQpc#8L#!cq8^!(w_=x8F@MNoAv%^9DSS?<(0>#-($TLiMZ~dtT z^kkrH(~*3zpUhXOydUx#6QR3T*Ox^Wei_qhx#R}A5ROJ!QGeC<*h_7b^!)1&hGGz4 zPGr}(|DRjl^c8Vv(7d1Au2XBVLR8Egr#39@lWdtejp0BupF_RxpM0a56x?k529h5W zpHBik0GsH<1J?upZ$GDUT{ht) zd4K(J+Oa@P-lYMKC85{#)$35k#sCY+8^y`;0#t$JTdq}66}~3#MMBAc}?JajdTHT;NUjG|~R>y!!_{8yj~4wi*s6em9t@6QP+nU?*qVn)QHWfo1k zI}N7xS{`EBTduc-obE`NG}d=0Pg*qu|Fr3_)5kQ9o$6-pezuEK3{E%9lnPrAHTKiw zb_kHvtoZQ6S>V9yrag}HcRkF~tf!AKCJS7zFm{wgB&|;u{Q*01xztAd6^U@Xv^wo? ztKlrYkpSE(t^Go_3%!dEXR6A9+H0Ei3Joh)#BoTx@Vij)%;;% z@Vq!-W3jT^Ir-R}6j>&yPz1L{h{g_x@WIiq<&T8DRpU^MNe6FbG1!p22AV=EO)!ya zXX7>>{Lq;{vJhb=+fY}_JCJff$ggL|C#^?i-K<_0YdqJBA4|Fa3e*SRohdT!?u7S# zAW30Cff!HrLS!*(WpT!`1ujJBBA(-%aYs^u(~C{{ zr8OImos+A%bvhZp9-15Rp|=v8Hg5duO4ftu_d5(;)5jP)f?{HjAxT*{4-DW;No{)% zy4+bP67RP0@lNVI&T4BKYAl3OO+<=12UD=p?3@Pg^r-_KLc64Vhj*e<%m^9iYXn!S zVdkp8U2}$lXsi8`JXj5o_N=va?|`L^6-XSDJ!4TE%jF@1xS&@llAT8o$&ez5JF+0= zh2Oz%!$>UF74?4E!C-&gS)kbajzHIW9V!hP+d}NFE#LtHSle{=eZKJ{`mE`N1}VB8 z)ljuC=5r2f(XKH85x6#KUA+7kKM7ATJ2>ATz2!PWpJ!KwYv~q9XZjRUf8jIIl~q4P zl?;L;=xp$=uu6BN!$TToZz#bC{<;L_#h(;Qii79b`=5>Lh#wcbyC1rkq9WH^PR?{a z-z9Wi-zn2jLg&T$pAe6y;c*&-6QfuHn>1#pS@r11?N}{4MJP%&Z3r9O-+}|J<4cIS z+$)WK)*5XB;**#XUPW%h^)6f>educJg~q?H$311Boup5eD^?(kbsU70S8YAFF4PRY zdtIe5`NRous*>A&z ztajs;>v>F<^_nj?zl(^*bNn#vbLl|(5ij8cT*Ox)KAfmuyTM!M#_V3NQ1B&56q!pY zdSfFUy;;NP2J7@(o3>=vErz%>>+rS3bYnx1>>o$x@!&u*HK962VfWavZrqRC@Oc|{ z++9#X$PITgM!G`2;`xd&jJGev5c4++bk$pJ;16H$^>Vt^h%u{vyT`j~&;~X*UR!N! zGdS=C#dbXeHdO22AhY3+bfS184)ye~Vl%#?@9-g;JxA@-o7nt@=eYR(AC=X&AI3KW z`*DUE+XnFU{!&vSncUv>VQE^I^eWpq#Ohq7Y4x}Fa2V;h3twzro&((+-xKKCi6~%Y z-vi<5j61{sy7xZvux&*4nhTOha&{Ra;zlDBEi?knydC7L^yhzkcB|hv(74h0Fi^v=rj!Br%1m z4IiDZFaOzRE`hiBb6qD*DF^;KT7Zb7aDJ@MHiz7Nsg~hHnHF1To~9w>Jkr$LrgB@h zX24B$NaYZV=gUY`I;THy#3bh?-M;g{mGE^Zwr019+G9K3<7buKg0N1xWUy5h^kN&d z>@m@iaKvDZ{hH71y9rI@%!aIwm<{vR=bT@N!V`T_GV+8|Yza0wnwRmu$ed8-smGF( z=NS+}r}|AYU^mM01eg-xd@R@<+&n4JezMyrGs<}}0@Xz~ZIH#-r*`NcG6<);{+(ut zEh@snes96sJZnF721S9>Blt;s@K5}9rA&^%OV@K7H3B=AzAgw>p9Vj+o4M|Bbf5vB z(``i9JA_>EN)?ZReEZ;E^UODKMzT1fH2hiX+Om<}u&3t_`%Ya$#`wg4-$$ z&8SluabYoLW9a47sZCUcfe5OUwkkhiSIWXsu~d7wez}y179ZL%1bd>qDde0u!6Mrb zy7p|z%te8C;(0^MWjSi(2uuIqvqsJ|>VB_G-YyTXQaNz4`fe=-3lsBMr@tt31PvVZe{p=Mt|h)!#&`03aiU;9KGIiB+gr_ z2hC;9+`)bYr9SVf!HH+D=%d2OH+=)E?S20k+odm7T>qf+>1Y+s%Tf8ziN=~6T~wp} zF&{+A?;V=r0u^C{KM=l9vC!x+cKXycRnzWB_G;#K`XxqL1!3oseLy#zFlG$Dx26qCJ35Pi>UOXJ^HM=!HPhsojToZpX3gvDvf`CEjg&AlP?& zKx$^TI#$(h9};>XaP0L#aXNEgGM;{mHLhJ8FlO;2xTUp0nqSG?qcLf~MVdhEjhN6j zmLJ?L3RFNP2$;5=>V_@il3ABV3r(NR)P^bFF;pZ}#-VI6TI64#-m$6AE6zJ@$G%Z@b-YeYMZSdj|9Th;4?n=#j#Ql7h1-N# zkgLHdpVZpQ_>x0P+bMO{P^t3d=p|?K6qG$YuIIMd6WbMP=jL-3cCl9Owh>%k)f%>u zb1!E9K9lrEK_?}8?&kNb*}_6$cB7piX({In?;S$e6*u)MvoG!485VIf`Ats>LG=dY z@+c4}y*xb@ycp%EFhi%0Ug;Di!`*(A)KU62eV5(dJ>NNfH;z}-rjG$BY;n*L-L{be z0c_zBUJ6s%-oOS71GCxakB>%LH0dgzFa&(+>Y6ny1K@hnyNaSx)F^x$do(0>ji<+% zpcDPAEm+*=DMm@?jeb)d8?ao`K?llg8lZA#2zGlH*i(i1iqo|TD`YT+gdK!5vVDjbKHe2Owl14*fDhe)z@q8?F1Ld8jK@_s z1w+sml+BclSH`gv`rgRiuz9w@U{n-BGU621`pZ(Ln+Q9Ff-Wa)g`hK_y@Z~HvU6>8 z6d330+ERew)j&7jK4NoCJ;0rDevWR;%hObuO%781j&mevdUOo^FN{jO80iHR9kk>? zA=Nyso+dWTAJQG_)@ivCA!y|NFBdFS8h$fuy0V|jRPua`YjH;1``;Zr$(z?4 z$yF>G>SnUrKU5YDr#&8S4(dN*sn2~-O%g-He{pakfTEW**z=l#UPNZ<=S$wPZs{>% z*zNr8XA6c)z%*5?pg{QC@*-EsOh zr#5@7M@Voinh_p4;Y{cuy09B6A$1uJjkjx!>wZPe@^}yKKobgHEvi1LX#>J6FSLwr zYh@D`@OB^$5T4WB+#MX%pRxeN7f4i2sp-9HjUvl#l;EXb*RNtb(kHLj8=oUWAx%R$^PRm%^GV5Ie$?PWE4k!nf z6aO1Zp#K9UBE@xd?#~43H6t$4zsY)enZYx|X%f?>Vtkf;&Mj~*iMd4HGyZ*3b-9Sm ztyu!v8a|G}%pUVx2`n;aRlw0tfE`QG6ZYGHP@6G+W11O8tQLBVUVUC5NM$WZ%6fP{ zXj$y{>rRREd$u9&Jb2I4;OSKt>!^f`MoCzZuTQs~q%K4!4)u4S6Tzu(ZH>V-%4Dw@ zJEVc_8#krbG&1LKX3@;JpE>vR@HAvN`74-xXdo}tXgkckW4!eUMVVA4$NZJMtJKVpBtEU&ujII%kXn#%&IYF{-0 zp&Brm5Yf*aTODMF8!9UhJK^;!;r+!@zw>3X<6ws5pwa7;ciXG^M&HZvy>j8YAfbC= z4(9`J2jByu9zE!Mz`bf2sCS)6Ql(|E6}UsNZYEF0D;QGYI0K`Q;eVkJNl`Egv5iYj z`S1g*Y+uI^Ypu>vR+{8tY4W;OT-U8rvCI-P&m#RD4C_S?sqh;yy=zno#TXg48YmCh z9W;rWuy&-H=fc?2pI@SHkvs9|yPm_D+Nc+P85IR-0^gz>dwOAfLZ(40Z3uc|2Gf=$y)wA6KTM$eQEo?HaP^PNXi*P)b)wc_t7j4;{!II?W)+ zuq(44(g$*9sm;#LqE2l=mZGv}cc|l8sQTC$nfxx-?EIhdQHkA?={Q!Yvk|W(+4pmMf9cF3wc!I5y^VX4ZujoDq(Z zI&aOXCc2W*uYalXzC2X4ui5W7S@&`tvE#aYQ&HGsI`}{{>E#JjY!I4&4QqCge8<{1UofO}bkqZ;v;Q`_QL8Lrz&7ux6rT1p&{n( z4yxo|GCA^K7%q8LN!S!x)Bh}w?Wz21wd_u>)SMer27U4C4mCmk;O0AL$w2u46?2sU zCf6;P7`tyAydQ#8T3+*IFBu7QWwKB|%Js@lKs4fjpb|HO1XIi))YS1RYuuQk9Pqi<~6 zHm5~thAO*allckL>kA5=lrOh3JPt#$R?-95Hj z17(#)mcV29e|GF}eaX`*OW`d6jP6_t7IqLvKSfxglaug;4VNT0)YSlJ;wEr#Rc!M#szr~Vd{gV^N zZ)od!-aifm&)OX_p^FsYQDD>U>EA>oGBqPlw6{f9#5uCrKFG@ya(5l~OO9~DgQyu| z6WO`lwd8)j_PB^6&{v7SG2eFH#;G>m7BSOl|0PMsj(NfpwKJjG2jd~zaq)+_)-_IS z=!60dLW9-Z;#g{DB@_`F{}&=8&H0B2B~TD2sJ3DnIhJx9Yu`Z+5YZ_*MsQy*UwdF4 zCYv+mH*_%fp7NXN_GvGD#D3h;m8GWCaLjm0&w5KIcg44#HG$^fZtf=*cycsss|ehN z(pp|if#w+;5&RsVqS*=d*1U1LUe2PL?*(>}cvTs7MMt7n6xP zx64Z@%P?YpLcY}+den%ou@ZtM-EY7Iw`@H<))vDt8~68I7-+>{^pBSXVAive%(Q(! z4lys&Tm9)f^H?r8j=VT)IVqs&>f}}-BhEl!Z$>1Nyo<>Mc0A9x<~q_LHeTqs-@zCp z>JYN&80>t$Sa?3$S*t66lCLZA(;bV2`DZM@D$G_=ZNK8zLp> zRqExY{@igk={2~i>%97NR98zu;Ec}|EZAvC>tSyp((H0(a-(A~bmM|&KV;CY>>3U_ zPA&84OV#R~69B(ykax2ANum7snEF4LWZ0h&O0+J%BNHi8M8a;`LL}>__@1@%>NoBi z@)TXn)NxYEkoCTY4Qh%bev&WmmyOP`j3EYigWu-2t{z8KXc@ArJiYfOiCy9k)et&v z$F*H|=jvtC26UgJ2vm6pUcHYAUmoh~nx7|l`vm+|&5&O{!GFd%O}qDx%=z8yJ+BvJ zd^>RBZty89)?i3E=G=4?Ua9Ux^Up26cd}YVm&sayL*Z6uu<6KCx`rq<@Z+o!U8Y=m z&zNr3xcOdG9@sQC7hJf!wAQrNFAjdyby+cE6!2Wdfl}KT=ZTKH^&~B#=3u4HJ5&aN zb5I5%>hm2qcuHff6KgcJv4yNL#bPE3u|dkb1ejmeRRyJ4c>hJSB>r1%M`~Y#O0w&X z^2Q#IpWM4WlygPoG`t5x{?H<(hy1ln=I4RPeGjW}5`yk#H?Df;)q4-m%rTFlZ%tt< zf)CM6cH?@Lxy}P@cVM4&pQG8c_FWfmyC>I{=XqYIwt3@J8BD)iFnc_LsHQpDg&dBX z42fg68J~r*glfQ89}C+dYSX)!RdKY$C>p!!hF(lKD6p_4!Pfk?v?xbRWE`JJm;Xf zUEvHBsev!aC7B1QbB>a+rj6hyK+P64Ydur5bUz>b8IFeA>J%P*yM-Vy0S z_L4Z>@tzXukFUwq>?H;^SHf6Tkz8Vx&LKf%7m8+cpIS@z@!;$v=}eVjmH8zd!-9fm z*}vMC4j`dqmlQ)FQ+4m3o*V4+E}MCRk7aH>xT|FFv5SxNe~Qv5$NmUIrg#}**F|j< z8LCJfJBa#XOF)zstjiT#f%`WVO-yP|AD%2=;k`;vNFP8Xm8;w_nWzUZY8J83G$zzr zy*Pka70gD2GZI!f@-(~l*f)@)~bf>ogwBY4tH}_|ZPygT}gezKP!-PW1^yABShf0+ly~|Gc z>AlTbF{kd{uUremxp0F9eGF<=eN3li39(*fkwa9$TyUA-pD zAMrYhUy-apFAq~nl~f`^Jou@Wrls4e*AZ>k z==M8+NR9y7pHO|Jf>FZD&045I)-P5Eh6bMI{p}Z8M18NtriBPV_Evq}SNkdSd^8Y} zGtm>_tfBAVtYbc2p)Qub-Ndk_ZHeKe$!K z6^_el?p}*po-+f(Gv-F-t9($6%wz~JJ1kQ965k$1+Lrd~f|<@a7aZUEoAe_J5(}GK z6eT6eO>RdCc(5nSpc z@B=yHaq)_r_(%Kc>vS)UCvo}x`Im_R^(VEj9FaDw^?YyEb2U(n6BO&U#4wxPowNz^ z*@A7ziD@qx1M%^^aXqy3re= zT+Hs;d7)+1M>8nzSzRI{`BZMmWC2Y%^*nHWsIS!JPuiuOKunirGw1lA7H(s?bzPJ> zlslNYlbL3--QX$kw(bK=tlU_3WZcOF+74)n7{-nLm;(4WU}HFOV7MhQ2X<=+<5qCu z0$E^t%nOy+h}aaT-t|Fn1!D1bekhq|;d7b6%Gx&%@50L9y^(9L2V{2za*~taQpE+P znV`lo1ZW?Su`<|EihnGs2K?GgA5;_mWIff)0&9BHc}-*q#e5|A>~f)f`0VG7;B9}& z?7ETZaL(q?!Tb^c5d~>;X86TOjn?HnVb^eA zQ^&5mk2eQ7l$yRc5chVGFMEv`9B1wvM`&F~C{#>B{Pw$H=JpKOYtsJw??KfY*5+2}@Z>ddzNK!wI!jwuV&QG6=RH@6Fgcar!QjtuTOaU?BKo#RA^V4Aba&%JI=2t5&H|c9}sm}9_`|dVa%tk zv<$DyL%fpV;_&i(O@2fg&l*o^MafmbXB3RgNL#X?nS@U}1JTqjH>_O*x9u%93iF1@}_*95nd^ott2>Mt%K!rG82qyg=YVU zp>WgM%{1WyHG&a5W9;9?w?kZRbUFL9GZD}WX9z00l=R1=f6Di`GPMbl$16wWu+UV+ zsSL3uw(GeW+1-*sqWuZ{w>vrengprD%Y8@h(F(_^eocQYd|@l{4^~ui;RaUr#VeX+ zUO?6A7$BfWEMxM+DWgM8cM*k3+ERl7fHyodS4q4^p5jZ8?oB918q)Z%d1GbTJ0chS zxzP@OXvki#U1bvgdL1cr^?ey6Y4A&P6S--bwh%Pp&q9siRQ;hHnV@X1Mogk(P_6vP zaDG!sPSgG&mDHK&k3J1|up@g^Q|4?D*EzHKyHxmY0BSPU?ytfxY|Vf4)B9BTEykJO zzzB~MF@sFN1w!ttd`4FL<4qucURv72mIdYYT@=9tW2Za({klEpM2G`(5scZy#}Ku% z7LQvvCzrLpaO=pTP8(i=%nI=clL=sF50+~uL8oI%8W)S(tM+~4C$0O}=;=B&#?&}(Hw&wvrMcuk zJDS*~au!474x+RiAAAG6oAm?C!;MAe3_l#xD~1?Y_iPMMCuL|_8&(xsoM;OMu9i?- zFd=G>AsJaEF#r7%9u)Gm*Sj)!r49R1;+zE@&#aB>J;6~zPk_eMFP0A#w85^+p4plk zra8JL1^@xpWQB^cO?W=A=0&M{0obIF)xLVEAaa%mb=+>GtNl8kLsT(J1_cZ~JIpPl z9|2_v=Cu^_AeIc5&9mm}P&uEG+shdO*I}M`UEdk+b&9QbMg4t;ZRY&)0R- zP~k&_KXgrSB#S_A+%L}tu&s+$`b6zpSbgQJar5&G*o;A{Y*sENwoTF>%GL2M+~wgV zu#3q_Ht6nFL_Wr&?hOT8Xs`!Ny9z?E^wvcsu+F70bqpi(>2*Z}-2e!%fF`=Kl@< zTWrC8b7YYTs1NU`nn!IL-h_HG&Be~T=5E3QFIhhl=FhPp&g(^YqBpv%Nen!szX^tx zCMnK#$9}>*zW%;((PU0_z)DEZ#{mF@1$;s^V*kPMD%VX(^ghWxL=C(XzwTC(FVIg0 zZ&^$fq?EZUT!A5egfdUN;OIt%1rlvwHR5OZpr>yIR!YPr>Ub9DyxYukJ0)tn3RIHQ zS3JIey!_MfK*DXW!BL=O;`AH(y)};_!2HLrLXILAU<0~xT`Z@Xl))MKj6lxB;RyN@ z{$pBg&&i>^X-3Nb^nV{gt6yQ(A6Ho7(6C*dC22AI#pdba-W^AvNSv`#a-5sR2DGE| zcHwWIDHv;(w)>8CR`nPv0G#9L{8wh5L%{aWD4-w%~glGFo+5 zix_*QY+kJGmwH%3_vvx=>HIcJ6t|JGS(ox&GXD7oTB7~8GM?lKz`><4iFs_Aav0*i z1v&D3GIZK#*3r(_2*kQlqZ@i;ZEKn3(WCmLN7&Q)f{yxW9Pn(nKdjG4ef5dXw2ZOo z>}B7EpN50_9NdBlC0eP+iNIXT&wZn)u236}@T-=^w{!l1plnU64K=i^pl61$cL9#h z0~QBXQ$^t_kT7TgY5CxvDO6_P(L-iFzH@;{NcZ59{rM8;khh4b#rYVzI~OLJ%5oh$ zf!{)+F4i#KlGO z1FMbQ3;oX@<~9~v@pTg$m%&84 zwrcC$XZRnf2ty0PvUXR`-@?mY-SECeD}P~+W_U;w?ZkXu{k9P9Wt{KPBEz2L9zILu zVgDU$78M*K$?pg#@>4s#m`h;xs8Q_xSax8dQjs+Hv{1`)YSeH%+M;&j8rSP(1b>PX ze{Q-4tyb_i*ZKU>S!}M?kS6H*Y2fjb05+^SyRxb+rQn`oMnilx;aVd6 z7!8iH&KTDzPFVYtasp!vu5|k8%|$n~D0kIUuvgaed|+Yn0b8jsVys{Gu_py|F%)J0 zgh=VQK;J|v$tnQdLYJ2Z_{k~mLFzpMJ zK661Szo|d>zk~{QVBfC*7)hWxxX$;X9e}@${!YR`-`p@s`V@V-DO< zc1)>E_e4GK^FeL*;jGU?dju+zikTmG0GV^|P(?nrk=JjCLq>79aD+HnH`#m6v0$|% z`4Ko|$K7U*X^f!tDH>||9pz3Pe6wAN36)VQ4V^+bTr(8go}^;H7~g0ts+6FS{^uol zzbesEX9?!mIr7geT}X=6V$c2U*_uiQZMx^iD|b2Hk3@V@9Do&qsp@{tMB6eP3x^pK zj;Uk!@1>JH+uzPzuMhho^^>4NtblW`;F6i3w@ND;i_KYL?o5@vGu}?Sz}U$~fu8vpEsG3+Q+J(^$UEnB*NGPB zV|#FPFw0{++m$=9Z?v8UbLl^!Bkbc%)m3U5G~7t+Ihb2W9^=&+P!t@_R;`F~uSzC$bIqD8P8T?-@fPW)ai?a5@F8(lx zDSeWSPRLz`&swi}|6*}!5ZmnC2R7F4-3VRCP?64TAOt^r0#^O&ZL)lqHgu1te3?vo zT*6!5kB1gdo;^pFyAwfq7uP{_(?#FR#EzQaBOKxBakNCTNODF0Rzwj;b@(6=YD8W z10u=4XgvoD_bMBF7DbhCPYThI5_%sB`dX?k#2eb7=Ku0!6!CWlpwz6>v4?c)f%+2u z-Uo=s8Z_hWfE~qu!?d91Melho=1%NmE}kCQw&)iwJbQ%$ zY7Az7C;qSdrUHVL!#KZ!hoKIhYlPArsrP&{$QBUJ_+l{7OWiLB}kg(mVlsBOEe&ZhCZ&Z)SK;(8*|}ZX&XOe|$x~9U`fkOvIWLm}iGGiCQ9|CB6=LW#D@V zXtQmLLx(JQE_!8kJWND&a^`}USPBErUr)qACo@?)`HVgpD>fbMSvnsHpxqz{{0w$O zuM@T%vMG`=#GDh`&Jy`ua09Q@vQpW~qa&m#h~ri?XSGJyQmf{!I!LFVrq`8yXY zlAChL^C+|4jSYKjz4>$T^G}a@W&?y12-;|6BMK@b_&+t z0|%`X$s&U}+u$=w^_C+LkE-6dIV%82H;>P5%7INAG{Bt4wdFckJ$KiK?($N1V0&D6 z9kP4FV3FrJ{ZoQJ1h&}nQ-%41HG7FZRJ`$(9o4?>)`(dWxv>*YEN8P0)m&5{`ORRO zB;!Ld3~FAs37u1AZ>0vz7IbVT6XOq%`OXwEOQT^i1r`m3P^q7CpY6^MCP=Pe`4`md zivj_Y-K>d*zel1iVzQ#XaGAao#P-`xB* zZ8VpZr4l=-_R8qUF;T9nn$hf-r1YArciF=uNNam64GKr73U17n$7M|AW^Q4ZM5)xKmW)>LZn- zz)$>7;SwK6_36n(N3TmA)JA*3IAnSIF6A(bfzgh!_qz;}Z;bhYHWP>=`4fm@@#n`D ziP?M#H2G&=25i1tJUf1MEfQwzG|ew*(aiz*sq&IvXcP_h7*@KnfwP_F++{@CL(9Qg zJ?bKcD21AHpHP{H-Yt5U^_Yju*)1#Ir~U3<4zPrn$0n+Mb5`Y6BOM6={QB8Uh@Yso z75L#v9?x@^20#y`s1GW14sGt-{j!{D6@gjD$@&6i%Br)Gtf54 z@QTrxtxCmQ5`-Jwyv0HJ80XG}=iQVNTM|!-gx<_NztVsHJR+>zlPIIM`3^gvxGx+X zlt)25!L67Ud&jG2pWi7aLwEQqPb?xbIO*~NRtlHj@jWZJ71>CSz1{xn_q7A~yT=m} ztGYL6bzATG;n`^~xA=HI^xrHA(WF92ov9DM^G?z|F&hn>ivW))uL_aTwIVEcWM*{7 zSAF>Y#8ZpcIvq0VPVMg(^vX(ZkG8(ie@35e)txb=t}dceG_XpBz?CelNWWcR1{#(5;QJFQ8VekH#-$Uk)SQ^3dV!A}^XaF`21vBGXj zKP7NTQ>E6;z*}-IIoY1t|PMU7@qjk zweX)L0LAq-y+7;X-ngLYpWh3ojb4K5AD7kGOD}Elqg3LL=+93H)B9VtD7v>IW|}$%y@aaBfjb;bX7V!?8OXd`=*3s zG^}6OtWC+o`j=U^d5TM;612fdYb_1H(=U_JugN~{@3D?(j4Wv|>ZTD(!JZ0L7-p&s zRhKF54CpUNcHzKT)M-!^%Z;<`|?-WYhhwbFr!7}~a^e501 zu4eLB(C)zYU;X*=UawvIkb$J063nW6=H(&=Gd4o?G4rLWFLB-V<(HztXRi6W+X*7H zcur}FA`COWe^Wa%b-gbVj+@UD+qiCf9aA2+Ag*rK>kfC%TxS`!yQOm4e@MGL-r2H^ z6jAX_AP@4Ar>+g4F3dFE!kCV?!0ltji4pbuE_AoD@i9!w%HhXT!CrwVKqr_)(1fWN zRfQr&SbdlN<*Y-F^_GB(XvM%@`We-C^ax?0A6jBiT|;gbwP;L=Qg|&?hbMlJof3kU zFYF(7*UPU-%VFD|rc%c6=Z66DL?FD3h!Td{st4@M-q=}E1sq$6!d8C7hNc89tFJv9@#!FD7&fz20LDJZq6+mQ80>@v4d zQkn_{c{ypKEkmZfF^m8kU+T(qUu&Oos{{H@*Z*c3j8+7HMVdRfDu}ff6&y zM}NO;^6V<5&$to7FKu1UOA4^2qFLhA=O_+d2?{`OCLI|@;5!Pi(-UurttG)tt84~; z+~m3gVOPh#0E6H;t5c)vM!Z7E6UrWe}BYVaV12j+@0 z<1M9YY!XfA58^1LQ;q2O>axbp3pei+p1#Ls z4#agk$12Uf&cXW`=xdN0yg7VBZ;^`z%i%YvJLYKPepghk;bm`{YE?fmW(`P7eK@k_ zWcE6vv+3MB?lp8YJH0w}adx_x(drzWv~7vYoM5o(F=e+JQQHwxsXj(*nJJD_0iXha z@+AkLrR-JneB4EcM!bHK2#gd(T(Lc?a%Iy>3EYq3R`nb-JJc|+1f zG8gU3jYRCaIdIzThj7At!>(Gm^=V?Y*o;+o9;J#LWsp%AJ`Y@(FpB*Eo521_w}0>+ zX0#-}Vb~8G{6Y!KcJaV8C7h6ef-mK#yXU1(PaeM0qru26g;CF4CO=X4P}6lmT*Vin z)&(I0gXTS5h7A8XSLivoTcqoSU61Qr$;k$Y(+AjQjWaJInDF%QOscyXR$4M!XZ$@9=_2%XWeUWivLJccNBgy{G0Xk&t2=kA0 z*uef=Uu4BD%ogcji{fdvC4_4u(W$>y1YjC?ju>|iK~K&yHNE&bQ{SESdPO#NPRCp8 zb<=^>rB&!8@9JeHqlpup%%F)oG;h%L>8jT#p;MEy0S0NyYw8}6njyZ zJvD`dpt=fPgI*sHg zkqhvLT&RThdEznb*|`->4{T=iQV&b=(4N!FC~52eaE114Wr#{7;l% z&l`L<2=DsH@S8mVl~=#!(9z6s&c`Qh{pCtm;CWMSs-}W)A4`naLPK8DLntAy%8Yvy zJ8MKhi7~I`Q6l|5oX{J$53pC;P&Z=esimx8Wu7-;IJbywxX_AQ4U#TOg`Z-VmdOr7 zwT`{ln zp)RB(x*f)*d~zFGtq~>2ihK=2R<}JC4p*ko78=%lKnZTv)zIn*9L~ z_cI0ePuf;30@J+_i@m-Wp6OcojgHUoO1<_IQs@QMSSdt%Fc}}{$35eN>Q97y#HPS@ z#eRDs;;(;77zHCaGaXopye}YZZ0x8WI%Z=TeGRUwy|7))!N`I)%sk60_7g_o;=I#q z@z>deULB(vwL6&5QC{JD^Q88gtc|x!nt;9PitAw=@1Q$lsMYVq|Np?_fW1<05v+Yj z##H1Oo|`8k12fOhD;fni@E%{2CjlJqDfPWF#K5pYX-qE^yU@=z5hVjPHR;+NNxD4ppvx&v=jG(gZ#j;*?Y}s}}K!EV{bk)6& ze${=u!pX%YAalHVE!h+G-l&tA4`IjO9xHYfrNLq8YqPmBVQ7<~tZS_G#+)+-cdn_` zM){{24(UR-=((uCvLJyUe31g8G* zdqTml62!?1+)38!B?rp%x<(K3gN*p%)WlpPd008bO8#gaNdtL04~GpqXd-$=^Y-t8 z#A*{Cry{xpuEfEhotpHA3D=8E$BEn;cRTDfZdm+55Rk(?tlfsA! zS@+yrM%SPLzGjD`E{E_h!qn94P{evyhQ{@t-Dy&1D0Ax4_1@VPn^S#*<8zbEUL<~} zh?=L_d|wJP<_Dd!Ue?}^Z~eZl2JqIZgNeH)q;Y%5wJ&=DjlK(WvOBxCo9o-4zX7XN zJFJ+ti0X~Z^!C=zU$Ad&M|E)~4Q9V=Q^4DhloJ8_geMf?Wqvi04C1k|?DnJ2Q)hJy z4%t1r1OP!l?_S%#g;!k|c$G|FmE0h>VbwG3PftsUAlA8KG;j>73}~{Lyr03F-0p(F z4ibB?*}9*Xw4blmxegiD?Tzmaw4H5$vtIq=d^Y%&d6(@m7d@CzW;RRB% zCQ#Bnz3N1UHd&k~Vo{kTqqUIx|MF@0XAdG=R#PhP_O;px=FrH^P$GTfIF_=j&o!`| z>OHh8j~8W39W?VgFewX(QB~yoEz-m@+<65Sl(dPNLbm4)hsYPkk3aa*?XJ>VZc;~E zZf0Ciw2u~#wBV;7z-W@763Mi%**LWKJsmb={`&fl=#~m^zOEo1P1`9krA_3MTqnoDSd&8oM2CpksjH1lnt<- zq3%uxiSkZ%?Ryr$k(0T(zF$CHVbvy(kvOz|8Uxc!CyjkSj?80g{-UROJCAqGM`1O z;G=(y;0l?DXpkC7R{jiL&A)f|n)!t%x#SgM)&w3eo!h!a3V><2N-ZojwP|_w97_>Q zD(kX?6Fc^S-mX`cTXtLVn{Qk356#d2n8y*5{<>Fes|prP!T)!#W(?c!RW`24=%2U$nU}XE zq|2JQ@Iz=e-l22ks4BNgRJ6;ak&di4p5-bvc>&qmD2?+id9I9M;x5l`@&i$-W@c88>HVzRy~73^GN_=sm^{fsz(s}aTYdki1% zwUq6=?N}*1mHX8_t11!;U;Wu%u=eQ~efsVg>!xavrq3D!&kh*TgN*`bYx1s=WATrE z4Ot+3XrE~`n@sO4=jeu-sKC4VZ{KRy&g?+~Fsb6*zrAwgk>|53$ZHVcGV~kBnG=PD zyeZVJ3~NRV>-&>Gfn@Vu+mF-(-(fJc$ zhMev4ZbS0T-=+2wzqpjQr#=h3nV+%hNbGR2!p%hUBO7{3U#ZD(Gisj>wKQ&L$D5sy zLjr&JGV8O2)6CjC9e0wA=#Om#alNH&NilX4e-Od*VQ@uX>dbQSN?&LQ#nU3%e`~1H zH(7r6vw6Gk+nY&m!!y3r_dyUmTD$T)16Ff=!)sS>Ei$8CTa$8mesxu&>W|M62!g)G zz~6BGbXqfW2?p`%oKnS#Rm<4$x&51UU;E53=HC7|(n^#1_dmyU!Bfm(#jef^>@%1+ zb3D-DO920T)c^*%Oi#%H+&FAoGCI$&aMS9NP}B9x4cT}r&o-dl~k0O{xha#nK3^Op_djP*!gg3w@0>r3i6Y}E6 z1ZFqFA0g?7MPmx#e8(|ySM;xibISRySe#Q>NX4llB2yD&nDbpGN1{eOTb)i(Dc(`T z2>9>A8iiuU0UkA|jQ4BBu&65*2jcXag9Uvq&8&3lU5XZLPF|nwu3RUKz%>X8bl6k} z0e%TUMTy?+{O>hin<6Wss=c=>dQC!hxas7R)C)Ny4Og3I%*}C6noKAA-<kQ~Lu@gBPCInNM0FYzN96(L9?Z6jd$46m-e8SRzSCQA zRaY2NSxX_;--lw)|G)rCQMA-@t9@exg-85RE+<97-WZe2`w4BP-8aT&pdXm{4VF1p zAs?bsuH_Sm`?$pPPBqPHW0A7z>C5w2s*su|LRnIIH|}_hE$CKua#W8P6u{WEuYJ~W z=y~Iu=(lIeq6-q_`Qn0h!PAfA5(zkW-UkO8fOIN|YZ+^5lGKH0uM>8))%-?ida} zHIS@dZQ?kgtWhVt5i+V)y=i#Rb`gm0NzQI7$*$2@%9Q!yE-1Me_1T(n+JPvd;pHwe z%YL_QV!H~RuXYC5zOfs8-Eyuox$2J|e{4Y~W>L=05-yuIR&IW~&RD3e%a}zCROdPs zbZI@!`F(wy+102Op))wgf2{WjQYxw?OC9MpaaGnxE9;hHWY$lE&k1hSx`%*7s5P`>$Y$h@uK4(sOB8uyWjcQr1(EMsMU(xY?yMBj61}-e8W#d?_77Eg!c%#~K z*r8sr{UxGm?a*8y9cT9XL&yrcUDM)I&ma-je4A;hT+Z&IY-QD zeL~r6qc^J_HzaP=d#S-nw{82p;i*tez=ikOkMb7yed`sM5#NPev$;IJZ^!KXli)i6jCo{Ad47H2AS;WDxe zVr?|#+CCCvYBc>|1f;d;{~TU{-_zV0!-kW#bKBo-%2Rb;%VDlO@KMWxw82F3+o<2X z8Eo0opO1Y@LpHvn46F$cl zFPjVKr#ArNr_dz(Te;3rm|(&H8IUJ z?&P6w2Cs>_>wW*;6~ zs~*LgZLst3mX{wc3Ve?*@H&5Qzu?R{v$962iI^k)U5eqa`X+kb&hyeiH1aIRj7m9T zYXoPnJ&z@0FZEwXeRr8PD=^R1yTaKIr&gGAYX7SRKo0v==DYk&+S)fM0)vRxp`9;t z^#gmzMJgIk3J1XqPZakpMxb^5c;qih(B-%5LH`tqqIIfzZ3&ZvA;X27-y79V(v>@3}6f{6)_l za`QAXZYD1tr^V_#RE89SuDN_hp5J=(3i)xMoSF6CaX9S1IrHgg3@KI_o%05nv};#(x_V{9tzKO2ZgzwSBmL5B|aGG&Ulq`_PtK<_Bm zP@VWUllXznl1KfXK z*%6W%dDiWkBaSg`A6|ot^UUmD_~q$a-D+OK?H8juP1Zc}1ydO}s~wIKQ(QAtALji? zo`Apz3`c8egn1Th!y!a2%jSK^t--dXuzZwqSdf%CTqGrGdex)44=1N# z3IJsQ+(tX^BdyZu%8RyND|T?|mLZ`}l|x*b9;nhAc=*RPPMK+R@KK2P4t{|b&Dqxg z)-q@=AIY9r5(X&z%5leB99^Xxl8%mbbo8w)FqIGg=vaDoFhcX^@_Pb^EXbAc*?hK>ZkxVqv1t#bZJGMGbCO#Bnf`_Iw zPBBM9g2)|J`h0TEh{)iI;)RQH#Q*NMCZlmn<~ef&aNH^6VySACY&M0~ul6tBs%0l2 zagz~ZaiOHrR=)AD?oZ_8Rb=djC1ywLHOGPLXPO{W{P*_D_O`pcYF=@fl{SY__1J_* zEqR$(8b3j;!VvXD|8NjS^0(P5d>~83&(3ob-e=5I?k;DNB&cVT0x00mSg;7NZ<$~@ zhCOLu!y>5I9Kgka1S?#kSAGf3w>)=J%b`4#-SV(DLf1>SMI#W=$1A)}b(99e%~mf4x?@aEw(rE4Y&I`4X+ zZD@nWa8HU-Iu0kO$t_P*nAL@R22rqXYZB5Nh&K^2eks=F&X$YGt%&z)R&%`*I+mBp zvd}l6QU_&b`v<}Rc#ia9dRVY$Qp60l?%r1wIMv>zj83cSRz)Q8oJ8xj9t|8Pv)iJb zTA$MCwSOo>t@0T~gobnU*QV9d^ZD_+Ir` zC05^_E1v5y1kxKrS=xHL;R`rz=A%!#U@jqb+N(tNUQ5Cw$#VPTWinM+52gltZ0y8XG#L zE{s%iYNX*Aq!L3{qq9)F;h?7YHD6L%4mU&7x~+y5iV8?l#Z!{3P^(O%&bw|m)n~rM zQhMab6AYT>YkPF@cuqo?S4#0NsNdR1>I{&oY9aU~PVD``h$*0DBBR(bL}@w zm^mpDhp&@HsqB%*A&FsN_o;)Y_yWtsh=m;$rxi}NX|DrZr&+wg0(iYqaPPY z%%go?*3R8mXmuy)*PDIs8t({ow+r`7Uypg$w`P)be>gfyP0j6G=Wo3P$?q>NH2JYl zYBO}wP!-C!O?Ex4G_3qz9&0bu50P=4bA+Er9H4HDREi&<_5fVt$4#d!0B^E}(zOFy zn6RAna$E#GT2#&TX+ZnbS0EFREJ6pZP2VHKd}WK__w}^WV#2n&L|bOFS8XUpQ*Sh9 z28>_YdR{}V>Lu6~+|;>+s_oj(?&RWRAk6q{TJ`9U|7)HzSS#gT34T)ETBJffQz;CP zI{SnWSEDf3DOwdeAR%%$p-STJx5uW4&wk3ph zG+qH2`ygx4N|qBw-St0YEjFd7O}eh6ltd8CGsq#Mt4D<1<+9p!-1_QhPB3xeVF}GF zp5@hKtU{2AoZb(gx2KawuYs=TthbKk@&63ArOjW#+>-WxB}1PX-Oj9Lpx?((2{y@^ z5U1jXHAxNYs3CV7Xk2YIZ(Q6L<^Hum<&_ZE#@>q>BQEu&I0~<#K$q^+_>@&`=$@L# zC@Z!AVz6bIh@HfjvoB1ZlIW1Yk}}}#<9)L1F7CPzu;rPY}F-glqag7&w~J( z=b;p9hN>Ef$oXZ`94eFl{n~lEG!{&~y?!eP`FR=w%}Hd2{O{tQD;{_oc(_laQj1u_ zj&gP~et%D(&t2`{6onKyk&Lw6Z6-y|UdxQaUv{oi@$2YR2?bwF%9dCFzd8mzHX`c! zdB-PI^m@OVj!|*wt@-bci21e`p0E~4CM~tqR1U85V{O#N!9YHIoO$@d(giZc82r80 zC4uGu`diYZ*7AznLTQB6<2KSuqkwc#;RaH2F8pqc(q@mxMYg9iE&va*j*!NCa-R9&$csJKt*-Wd@rdtLyx`AZy<9e!Fiu<0Ml50zo*j$XQ*N;U|42GjB= zSM_f9gkDAq3*}yIyKbOz?Mg`659r%9|B2a>sK{}>tt;1TjL9#EnTNeIcnB*xxmYH1 z7B%hM`}*%ueL1qnUccq_X!Vdt5WyKaP~Nu7$4z(S+C4Z^AGxZKQxLrSnkwD}$lFa; zge8sRiL}V*L0{Q3k+FEwGBT6biSVIY291n&q&+IEtDae;jK4O%!Y!R)D(##sGi(2a zj5%g{W_S57;ArVZLr$nynH;KaeH4R_^=~4I+(&f~`?FKyV8VgM|c# z;I6@gySsaE_u%gC!3pj**x>H&?hb=<=Gou3-}jt9bM^e~zN@-xtyQ)B)xv-3Zmtcr zGjNBZN-x&jxJ9NrZdLd_@+CL9);;ue)w*0;Rj^~*D)wDypja8t#-tdlA?eN?`Tl^L z)O#Fs4{U5?azw(8s!@fahKBz%Ip6C_!rpCCXzYW`-A)s9jwHVH`-S?ew>rWp)iyqD zYxS3fXq2=NZ6T3B9b-U*0-Ptm^IZU~P#Fq4?lbWtHYVwqD-kvPMuCGx_8-TVy6^MC zkeR+phxU?ED^w_I#ZmJybxlj}ES9w3QFc?CVMPWFDZkC$zoQpLz5@tm9bkJa2@W*R zHY8MbB8Q9XG2V9tU$6B^_k-|~Uy_o^ARLq2x8kS=BZOAlU7v<#Mx(VfZ~`{ulXavu zYmC}Szp#}_zahwRH#$7nYNw0&1+bi+7i|4t9H3$Uo(nP(JXz%tmAJjc(Q?AR0_6+D zKwwh+=+aQ3U`wa4(qL4R8pEHY<3A(6UrZjG zCXMR(9z1}RphMj%KZ0bZ)rgXb?$mY@eE6AP#GyGpTQeUf8$w1MxAmEqKMBXzf{{z@ z0I%)O%Pxd1=T7RiHqCib&8_a2s8y!m-MHF|L1iVPvl0Apzyo9S9 zWLlKKIIx=eY1$@RxRu5dsGdNHC_)fbbyvda#0MYx`_Uma{0MK7QsIW_ z0R&Islupg+ZSd(5uXW{lk@v+zXMCnV=l|#Wirfglo3s<=hs^Ne)M{OdzD*kO&vT*c z>+}4wi*ZhYBLDgG(!ogkz2}Ab$)ohjTh=~5zqH$`fPN`tqx`E;?j2ML0PS?RpX5Vc z=;+`^|DbRZB6nNhYYHcOCWmnWQDB0CB3UAy zknt|!`Z=oCyPFwX|KP+5287fHx4L3+%#C?j(wrlI963!Rz5c7L%_+Zk#V?UMggHYYrCON6+|aE(d}EwR02!6 z5V{}7oFS3oQer;|r?G+tWSAXA`<)$X*<8U;S+dN*Qs#=1Xf>dqkYX=Pkf-uHw@l3+ z`FAX!?ODn>wf*>nv9{KaPPZvkZc#)+A6*Yt9JFiSGFK2iz)R(u0K3h62$_1;;v32l z!*;J>{R;@P-ewD>x~Gvt-lZwJT8U&x347mf6z2||0jSGOt4X73ln1?a6x)L8b$l*h z$GGeTH{7lz2)KR6@)o`Bf*f?7v#Xu<2N|~1H`@vAME$TTC*Wllwsr8Nae>*#vz>CX z%zVNXOFVMuQxL!gKwGRZDQ2qax9P2z=s~-C!$ujBRz=JWtsQf@HwgM=K@X(UZ z!e4FvcB)Omxyo2=>`~@2!b6NtQ$We947?y(K=?<~V1nUmEBijkRi>)!ho&=6%kS;x zsjrnCd>_N30uX=@De`S=KzmBOep3h;qAq}x8M`Z!-U0o7&yjngvU`l##EB6hAq@13 z33e*mEy+l28kjfbQUx|T5^S`_?6f%NXD+h!%hkVaU?VL{o3H+=rA?zK1E7uf0r(T6 zlkeCUn&^?MMFP^2`Y)py2S!PTnv~~J4J96(2G1H z6g;z-#FpWWKHA4u>kZ)hscmUU#QYr6m-3zV%0AW+z^HN<*$(V9OQK3PmsAd2;IS}a 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

PIAwoSZ(E6m6NhNv*wD`=RGSa4JYMe{ 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

v5fPOBUw%e$t?H2rOS)gNFusN8T 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
)|_|HyqHS>jVq-M>xuF07bgaA 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%0D}>B{ju|>PptDt6p+ck=oO>r(^Gr$ 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

WVvSz+CadpE8dA{rCa1JC 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%0ANRizJ!}t)(CRjNV_b&n+DnO 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%0D7*q8AEXaOZnexVlXHPib~|MeN&` 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%0A%;(zt70Nni+5CZ_2mnf4zg(KO&`Y-~XO9F@i zfZhqJA#BnD5gF*Wav%UL2EHcq8KHDhA$9&$NNtF~;s2kP3Z)P4qVzq5AT>@!L1Ti? zKLdrv5MX*JBCK^*@XOFM(c@Y)U6uZkfE{0i)ekxzgwN7+Q}Z+ooC_dQxlprbl5j(k zJzVw?2goWK2-A!Kf*JhzfIBwrzDJxda=f3>UMsLqS~H3xA9VS zj;ZtCzX#kK2yplnbYY7F<{QE+9j*!24NZ)W79YN~@bX=W8rz!iZq6lo80nsa>SO5A z?&#^QKF(cV?=8aGhL0;Oq8Z;+di-jgtN;?kb#Mg1Rv;w&@$B7;zTczNyz^pO3lAcQ zVW{73O+5eGZGrTUn1IeR8w>)_dGJwj10jPy9%5LyV0aZz!U{?!H~;NjW=jk(8Z=$! z#mZADDiY0kdXIy-5dd3XkOAHWE)5Q*RUHU}&|9sg(c5`%{cg!ziG-Irf^DridqCn& z9{ESXxi8{$Isw^*04E<3-3gpv1-M3TPBEwjLZALwOR*v&Eyp<1;YU#mjr<82SteZJNy|LF%neBLSv zqyY|7xsd>K#q^G}4#fm-;RUOfo{w%YZWI%~b8Kzm;h{_EKPn8(Unc`P{YBnTPScNt zT%=!M)88;X9u}>uC>qVrtt|J^xsA9+3nWSCq(7FBxNFt>rR8@156nAxhU#1*GcToe zFY+en8L85>Tb^c9f`S#I^ANr>!9eLmfiSClELHRdaKGB_lbz8GN-G(F>K#!9NRruC zpj;QA4oo@45f*#Vb#fA4{)2G|)U_p)y&F6U|LWDnH~xp)1%dZr0t83@3f6nr1PDPT%W~k7 zhT=f|KNSmD5|FN<+WYccSCuOe&th88rU$*DF|V z23J+!#-9oEcHmlz=60Wd&KmYe)D*Z{Jh!sK^76s@k@~OnY?P_lA(^D2-j9t68Uock zc|GRruPEQ=8db-13y_I8{9=Bz0G6O+DL`Dj?IQ&A4$Lj~4b3@9sMv>n7b`{#`zw#hbJ34199>jsbxqMp+0L)7c_DQ*xh1r05!j(MJVRc-{6ExTR{>&Qy)`QmQsmR6U$F$$isqIDkW^XwcElIx)R_`RO*JJ=FH za!%KzRb9)$55jJk1J-_uJ9~*gNu5B0R*pNomGIaqRx0ZQ-vUQ+! z*9(g z2c+oyyz+i1;J7pVj%hNd+`lrOk5_=`uuzRzT0Ce3>v9u5)8E@bnX zRiq|3UN7|{b=qcXSQ4tgWXS+*201O`yJ{pe3#ba_p^|SeQ4*jv*v+o$b>@7W%A0T% zJ`N-IO&T(NL30ewyv@vH6{*V0zgV=&=R>5=SFe$^r+(Ib`$JCqQ$HOw*S?s&MZxH8 zoh_?@GM=N{Po?s=C_34kfx$6{+JM+|c19c*kjLKHxsv95Ewpzveip{THW!Z^2rvueF4Ac{p*pw z{400f|NOxyqZK43p&B>Pkf8ddVc=-NPz+YDYc)Vf2>s9ZT>DqVRH29&LJ@;@>%ZUX zGXiSTg`kETY7(T-g4hPS!3)?e;-5x^{G!i8$#eE#2u3j?au;SU4g8A^O(ps0=%{F` zzXvI4V`HN|mgGV2lovPz!N*U!5Hl06?qLG|06U$RS&6~gfSo@&iGcQ?^>p7$0aoi2 zlK}|+pSYm#+YD%c5!Ov!L2a_w*YV^>yLVG0SY`9nP>Is86eXdD9`gTu6F}02sGF#y zmugZB%{$-eR`!+&yqp)9Arm5*ba4FluMK%0L=1j+$!`Tc~ zT$FZ|F9ga#GhHQPICCeQNM7JNZ~35n?@OiVS3up8z5f+0$1Ugvk#B-}<%ZCZphmW_ zr;49Etps=@E zktKpRrT4&Pg;+xD#)UoWJql_qdSSMDY(j)Na!^UiGNS~t5LLv|;2%X3ftMwJgJyd7 zazNz5))*qVn*%vUhtSQRBYsp~*T^g{@7%Yf3_V%Z=sAW6FZYFrp9XlrAE-c(pmRLQ z&mW;iJTtbTUrzjLSp00SNAxf#m<+z!@SGJTi-y9c?I{6CO2=v=p6Q%D7%b4htwpsi zOAO~XIMn*W*yM2EeHbsAVByIi8@-nkX%6m<1Y#4&MEd(IBGW+MO(ll$B!Q;euDac( z2{Y1Nx6+^d!npt#KZt_{#t!&ldYe}RF*oot5Qn6>Zwp<{8b8o3Q42QvE8qY{l?ymM zyjL+fR6l-R8ZOi#+w_IxP|5xzA^TkI;Y)8&3`|E=TDI!woH%kL6KHBzzFWltPs=`D z@Go)N;?bqwYM!%NOPQAbQs?1+b;&mMK05~49t-3*-IDp)*(pH+n7THbP>JM(@-SI? znctv}^SmV&d9g!Qn>PGFQECD4n)#q$qW`qt6#oWS?U9WZ=)#v*I(-$?7<+fYNP`Dm zQDu)y1SNru+s|>O)CmDEuOFmIIF}yf#Ph-e1PFLTbekIfJs+3I{K2yI=e(`^fwKjT z6BX4x5tFORqSwfr)5QMxGA$2eDDi*aN8_Yos`*ois}-=pp}2$_t8s9tiTJ@_Wt7Qf zt$+!-wLha%hiVge@;>(6W|!I10UB{ujRTOqriFFUk{*zfgn6es`{` z&C$V(IakxS-94o5>hit&S&+Td-ticRUqmEQoeeY5+H(>@#C}Vb-!dmhgJk)y{pEz( zoKxLO%$xf$se=tLJZG ztQ}AiTo;1y;wy_5dD->)utS;z3NpmG{-6H|9O811YTCXzBBx`r@F!O{$sHse(Q(rGG9Rlxw(@w zG;Nt~>TJ{Jt2%hWZEzVHL5q8@KG$xLxVW5Auol*KI>j<;fb)p2L%aGJW2_BKYvkK2sI z*MDaAQKf~Wxk$yeOqcv2>kMbW#C)`)Tr-5wQ|FdWk*~0b2sV5Y=_Vn$(9f?v zTvsnD#q+9ty>FRlNk?w|meZOvOJe4)faW+67?E%CD&=iGbXZeUn55@(#^PMiTJJHd z+vwClilA9IZMGb34+@fWt)FlQomk-o={8JTGFIJel1$I|^cZJC@;<(UC8=Jfbf>Md z%(_pBZN$Oy_7@(R)RfmI-)xh1R)_BTrMErLefetY{ksJ|u0+$RiF-t_fG$pUn-=d< zmoD;eO-HX`r+b>k+<2|XSYx&9BciS_?)-T2=Y({6MmC=JpnrF2OPD2hr;cS(zYsDN~Xba&nPu=nr0 z=f3Y97$40-65mzYE0?;ZL(%E)$0mgykLdmOF4i z<~6$H?sV%<*@~}`y<47tZr@unlL9A_#cv*$znKxNJ}|NMxm&gOIxT%Tu3_(;+~{|! z)vsmNSnEIK=O>>B^$zSYxVy6h9nL>AJRZ<@oAJZym{%V21y(Zog5?v2B!wGSaI@hlI$J6Z(9(W=!PmW*w-EzyRE1vNTUsu;M@P=xiw%`s z^{r^X)KCrSrGusRQWe=56ANaywJc1%T*mL?G=X?Xj& z%&%rlZ}593y!kDh$Qhs3q!=eXv*T;{_F-F06a&ds1zf+zyq&Z<>tQsA3|8FU){%VJ z!+=yzUEMYwuQu2lx=NR7b8KPAT8ucL#-0H7221G}KS_b0KSTeakaEGJBV$l0#Ma_-OAL8Gi5WgE6-ip!--P{|>0 zi@5gWL=1h$jsL#<1;d+nOosf_!w-n^Ot|sx~(ah>&RHsrv< z^H!We`a4ezf`V!IX2?b7QnDb`Dm zMrGU#*WR*6K7o(L=nIbJYCe@~D3JxrL7f>3aqn>>L&KfD@Hw4lo`ybGeV!f>5GIy= zZKW_RXRcu{Dcf!LHjnA}U}aqhPYO274SMx__l$reowO{CE=}`yXsdYT96sIHxZJ4m zw|iA$keJ?{&zB@fir1JRf$htY!t8HP`>)Wk z@h(hbO>~(N*r0YTp4(Z{b61E_j(XgtbV}9K#tS#3sMi|rv|9D+;-#-vvQ%Iu#x{V$ znJxHWHe>hN;47yqkv8t{+Ex2oDfQ=Vjg1b1ZQ6{(%?2q_b-HdEOgH;w2A(FRj{kf#YmGXs{%F68%E0t$czdl7i7t$-~^w=7oP6_ioc^I2jJT>$cC}!yu&cC%%L6<6?=@q!Vl*i$D*Z&S( zjn@yw9(zeRx_#o^1CvJra{1!Ib$hMf#4oCMY*bf881Jptzbh^MwB5==5w7-S`GIOM z~w zbV=bO`{0R=*WoMN?*8by_^C#6Ki?p_ikP+EH&Au)u+<8{%t5DFdUO?WCU^=gjYCp} ze|$Y}J~wLV$|m##t@^vXu0ZIu3^c{uJvflk-((eE&&YS<+O?Oa2??8A;tKo_;HG-5 z{%4O+&sIpfX;$K~%oI_ckV(R=qJ?Dsq^78~CwK1fIo6+T|0=DSK?S?-FGW4YQ_>LJ zc&PobTeE;&M5d=_qsXsA$4r(tv1+#_CsPG=JpJ2iG-8Lf(KLR2XxXKrYMVm#x_`=o zW{t?6epu$bihdg$X}cpIrraw7h%>l?TQC_>A9GU_wNw5OjE`Z(SAOn^&A7MpZsR4e#8OyBlN7~tm~^;?K`zkxx?L|MR8y}MX5gdH- zfWDh9iFG%qrA7Ap_Yu~lVvfK>keQMZXm3LdjXPlc?wmzZWZ|<)*6@6 za@wd-_AAP(4z9Ih$&9yN%PsazMZ3Sh`*}#Aoq=uLlb=IYC|a>o@ONLFsayvKt@Ubu zR@~u_fg(-kgRhbSBs{^{9cFv~UuL($#}uqA^W5}H*g_}~1e;91*qg@pF`g;S8ny7pN#lJAc0f6Bws|D)gP zmV@prB|kb;O!K+#?bGMBZsx!6;CuH=`PYV)B<1C)kO@LX4Cm3Qj(e>hl;e*4l(c^5 zE{Jq8$&4_P9Z<~{K!?iA!QuUcS-1zuIyKc)CAwX%QAFo^83O}tzev;n4#`y$wPz3X zUgP%I(nG^&f)uwDo(lD$(MQ-9Tv6A3ami0y)q^K7150}c%(PE!4kOQ^K$zQ*XE zwVNz{)5VIB#H3~ad(=0$Hxge{zc%7V8yebDYSe9gx)bEqGc$H8*p{2Qrh6PSLG!lO zz(CQ}0?Jw4M{E%%6OE>xM=NLm`(n7P)b7nR{awZGFUFH(;l`e#r6N37*{Y_ z^*ff>;`N}-`I@gg|6}a*!KDYi1N?c8^S_K19%~MS?(XvSj-4{@E>{MRjmf(n%v#!2wr+f5;R~G^MQR{@ z(NoWicT(cNgMw#ObR+9YC~opn;6JJQTcd>5B~-{<8L?gTK8LSjBpGTmxm}m5rXj2kOZapW8#; zH}PqXojTd6d2G??FvZ7H&S*sLaKZckwe8`@2J-|`{gf!2Fm$7$(teB^Z0!u=&Dukx;7V`W-MiB<(gV+|9+!l}Ak;KX;!dwfenie4dy5nM?~E_0kw)xU7SmS5+$c zR=wTWJ}mptB!XP9N&zxpWIMKCjhK{FOUt*??^Fl-8;Y=mzytF5_F^uY%2y^fO^OTC zylk6hcGCfd9exzHB*x_5P_I!lvQE*~8Zw!OP{7#iHl&2YViy?rGqm8ryqq%1Id3CL zu8?=OwNh+E&#LeDY!$pMFmpzPB+I+Q`BOChJD5yl-jNhs2wqULs$DPe+K8 z-{OhLr74tT<}-6{{AH9d>H?+|uP7&{=#oRYzDs56!`;36@|dYmgddk4J{&H)7L|7& z)|q!YFoWM$gO$;PBl>+o0mqsn4ea=ME@(gZ{puS5M@+yVK&wW0s8*Dnp7H_cxqG4Sv%eTSBMVWD$>wHh6q9v_!aXQ(aN z*1CKm$C*ot^`OC7N7~Z;4wXSM;{^fu|K|dRIo#7<~Md4rwRs~w&TY;W|G7cmrM9ApbMN%jFH&A+lUfiL)CQKGe@H&Fn zk{;$snfLj326G!VJACiK5xDHkr_mp&u2+eZU`Z_^lJH~n1Wizou<4mo<1;59ua)n0 zT&B8|nNh6e*9m*!vQ7L=xHVOMuU}C<%^oCRBVALs{XLYSV)w)rSBQpMo%)qXZ6Vgs+J=J)e zf)gD)d&|{jm0ge~a@wUswyVXX?Wbc!Qd*w<(r-hG+@lHpcQ~r#=*){Q<&kK?R=E>FVv$U7Zc4iV1)X58%*30%=si&eI3{*Fg}Xnl z=G5JH_J3@jt`+mL#E930Sy1zzNu>Wd-TT4)?S-2y0h4f)q>alpZmrz81aGuRUB?F# zeRFQ7Z1+386(+?pYwkpPTb?_U8U9#AQ?RCLf3uTgV>Us53VKA<6^`f!?TkA4_b63F zotHH_q+iKhmSli;w7);C#&f(RZEjk&sN zXis-a^DwI2cu_`noM}B!MO#cm%|m|6Qy6C3YUk7*FD2+r)Ccxo%`lFR(i+&?7yaFN z7L2hYy{dy|U^cgv9kcr+ODHj&{PK4`qfN2LmI1Ce88)q4_LnQ>PRpZ z-|tWEPW&?2$@ODK3l}>NL*pYOBEGr%-4*-Xe=s&XC#b8z7Zt&ZXiQVCB{^< z%La_ry|5h5X(i~Z*@&z~Q)_Uu6l3zyTfu_NNFeF?SlcE4Z@CuQE>g~|_Z<9;Zm z?5tnyP_csn2Vf3DW5M>@#odd$OooAR@x_LDF{TUD_?yuZj3k4@w88i^w_VKf(S=Y% zzP^o7;Y9dhXA=(L>C0=8w=vTwFuhB?ZnxCHp{KdQ1JxU{=a&jdq@<*v>4U@zyY2+Q zq;}WFBc&w|rk$o+3Bb$;xV;_qt?KabLH?avc+9yQ6<_H3XBJjZ>B^UvW0^-6uhyB4 zX*o~{_+;}rOW~awF1-kkE->F#WDFcIt8aoPX*0gQc;O;HKI7m3G5~5huZ^Xv3`cjc z(na&5M{JSjSz2DU{F!ZkMazTWFoc z_MWw=BhtJ7q8P8$(HRcmW@t8s4(jyhLLpjZHh z`ZL&P$lU?`Og(|-{rtSE<~1_*VtVZwmHZ}E=1kmf?>AKi&{Z;2d?(RMIU$5w-DEbg zgV(Km{#3h2>U@xYv)Ldn;7=sIRX9b#;H9uYgAKD*!D6$hL0>I|9TU7t&}P*nZos+V zhw_92iy8Ad7SX*M{^Wc{QNqYMcEkUuSkvDlbCjUvo39+Ufgjw6JiMw~`iB4e!aoff z%%8%gF=OK}8%p;R_uYFtK71Hz`g2O@peu96K4Y?a~u`<56$zQxi{6AJFLYv^Cex;o457vWF^g8 zvK$OUx_|*T)>k-*4zSPV>bSQDs@&#UW2(>^xU=^f?Y-fvnp~RIIpDEE9RsL8z_UL3 z+4FGw(pbuwp1qfHy8+BoaOE_?6=IbhY=N7$2H-_D2A|P1NhpB=wqIi{$#`!Voi8~C z#+|E;Px8@U%aN%_x--qcr1chOy7Fzb2RzCUfp~a$h%7AoSt|f*=1eu0$Ls4&ZUoTa zyd#0rJtT(gpMAoiLyH@(4zeLg{=a#N*!n9$pf ze*dnh!P+95K$00_H}JIxasvyDzS5t=zYL=_>)v_4Z6A4vV~Ml7O~7MmXm5X&Pt^7K zWDW8K6=`sl5nzZ?aIlbCbZA8PHB*#A$VNwgexK;*pJa-@!MKX_(bagxL~l#LQ2BeIg&25N}jaAv3GTUib8;^!zM6<5#UR z#EC`1ei|Su_)qI^Rz3{%5>_vPm^?q3Qw!(WS-rCLFG!qq;9>*N7&4o9{;T7+M_S?k zhp(SgU+f=2f_ee0mB5t!r@ucxqe?(OfdbG4;%9OHIVJu%EyzGK4`2)B{~8?-@{au1 zg-QxEsM3&1@}Gg=22#4U0MJD_6h5c<)H?b}Mm<<*mRVOQA1;K1*#99nVKsjx%iO(8hv()hB5SK@0w<>pG_I{3sV7O*p51hmY*X z7G2GR6>uuI5**nx-8QH$mQF#&;9c*-1+7(EP-@xhKgl~&mo2pSqnlw?wZ%k+dh&xN zEhMA;xggKz%ceZd}*D z)ov5TL0SJe>KU6H;Cco5PXTjQOn-xGldzL;`*UME^WT`uXLa7TWK>YYurlr{N<@=$cfadiWvI zzDR2Mp2_K3Ph72cwLSM|&KwH*AUifhx4L_QyAB-8kk}x_=A7I``8Bg_@SH`Pg4_)G zMoj^rcw%G^C^J`9u%5I0zIE{g%@ys>&FI<_0J<%*E@ZjiaLPvgK?@jIs&Jxb#m2@3 z?7{>iQU#ws_L7RnT_Dh`VkEeeRPZwjTHr+`##R|y#C?>L8VGg9#aupONm*Gob!s{w7(Xl=}C zn5cg!1rP@hIEem3g1Ex9c&+<3?MveT>fDY?ss8p-)D?uCCs$e- zGI|^HU>4_kA6<9{zeX#fxJH-=nj(fdW*8Ybxw-uybRWs3+j~UVSyVKvPSwN|HW(;* z9gbOQ!RHU`qg>hC83QgDZK^)($;|i@p=@LUtfanvI%CfxIgIG)eEIcbjj?g{d>ynl zd*Bw~t%8}vZ3&uDig4?qLguX6SztH;fq(pa7X)39+yIqJl`lbx`6*BI1B;Na zwBq~s(_fbN=HR?C;4ArEGaA=G*%g9w?arNaV>eChsng9(;Z*=xgPX6mEV(ll`vwML z(}*4m!37+!R_B2SZFE7!N^>hi3Td{SH!>=mSN_-^i$==T(5@<_32XKj_C4C-Dj3LF zLYI&`FRvi5lgS0FN$@|j5A^WJi~ zZft25cbUn4eL?~`V+u83soZC>s7+U4RZ=64=P9MDe1d}6PiYC;UgftuEwdK#U0o## ziKi8E&TTjK6xCl9)y=ke#!nr;BhN#wt@GwPOT~g6zr(#cs58sX9?_BCd+uME-|81U zt3^U10XY)1eY!e+dg?t=VK23HO8**H=&6$j@SXy6=PxGAYPo_;a4_3*nUZS*s0-af zenma>$J;cf+;|T%8A&aT9_uKixi`01g9G@=f})e^*%~*$n9Sn$K#sn8YWB1Nn~G z_dY=L^kaNHy}AHIB{krKCkQh9;&bK=Yh9mJ)l-J60c?Gng^>Y!;;M|snVm*+k$0>OB^s-8mzT$YbS`j%DLu!irym~bK@}A`=(yCKoN)4mz;dG za5JB`|6^sOaF(KgYul5ztG*{ve$U=VnN3MN*F%L6J_h7{65J`(U_+PPIb@4&|A?GM zzzFv&SX9uP1g0fXe2=VarRo@V^;oUv2R0K9D9@eHvOhX`QQd2BGQvC* z1gBbM`oCvdu$7h*t;~B>uKVwaQ>?L5Q`?}$G1yzR{4zW$_y+R0F&@h&YOVZ%=Z|mj z=Gm~_8(Mfgo%vK(uQCff(1W#X>O7APdeV9fcwJQOF|M;?2SK%d7yf61mSVpL%;DKN zGuq~mbKL~Q&Gl|h{DdybDO3fNd#B%xvy}COg;I>20Exu1;jY>7%aOUo0RsayC>c{6 z_Y%gt6|5$ja&UC zT#-ST>MNl=Llid|(_Q9BRFNT3X|yd}9)nTgqY|u~Q7lJOBM3myt0gDS3}H;nR&#aS za+ZuaV-%;bu+FadU8tcL7b;vgj5@5tWmtgH$U3;gf;|CMJk^xP0)5&cd>BJwy}enG^>_#UxZh&xG=mJ9>1;I%LHQp<30tJMZ5B zMTgKF&og14Js8;`*nh+u`nTOR4ljY?L92iEdlilCaSYqwC%s00x6^w3cd4d+Z}|XU zn6|s}OOwIZ`trIA`HTeEB4x?9#wP?{XuFuFwYI&|XBO{d+ zPm&-oF$WUMKv%VW^>gqmm-aYHF#y?x16x5km&}`D!Tzo;7&u9i7yx~vcD?Rz8=r1q zB#?P1s^-^ZAPK!1C?wukjJ{hCf&tWiXW^!2(Y|qquj@VQp9hBi+;rrYsKcZ8UYJs9 zqSaqeX+-DI5=5?_?Kfv+;S*o98ta?rsnQ`u+3@T;I|csjF`_tFG!+2^3C}_ShzdCc z4!prQGM^~{FOMK^(|Mzp89o9x7gf>Dfq7{Jz_3r|}D zlqT*LqqKN=B>Cf)vcqVq@3Pi7!jT3j)N|^5E80WMi=j z_jnJVoUjs3X@#Q89@d|_lUIvN&_h&s>`8SEY)ird*Zck}iZak!w;7>tUQ^95J0F!8 zH(9GG+U$W{zh%X%t%~zb%c%9;BW(EOB{V+~IA=Xr;A~?0M}h-v%J~npv`~U022Pj^ zl5=7jnSRdCp>X_jcH*5*Rp%02F$#;)5 z&pvf`PybyMBowbnfCQ;qeFALt$D8t9=@M|bZTz=q@kqxi&MYF7jiYC}dX12&H8T6f zlu^s;kkF^8ZTfgeX_ieOqI2y$u3(zRAXY z`oP(m*_gd+oYpNr9Ig4Q7B1>8l3)3`;i_X#b5!beH*?5Hj;9_T9pN=Wm693&`nwJb z0#5I0dnL=rSSqHdEE3v`pPmSoJP4CTWE9KEv3?Ev?;j5&{nRGW$|{?S9(%pnURNg? z&@@?;S|4S=`RWnVhog!~nF0@t_O_U+YBAr@)z+2a`wnX-Vr9o_Os#Zv8ZMnEQSJ642fir;wFPbHFHpRx;U zuyH}KfI+P+#wWMnJ%XcwicRK0DZ+@{ZFoKQfm}RQ{JjRhg^>Bh3=`uM6;|P=g?UR$oSWPCLsA)D;Vpnt$G7LtYj-%0WS|06>B*@5T;apXVQwB^Ms-Rt#2=<`QVtv34M7(*bG!wjp1v1V$`{S4GM{Ka{C(QfM>iml z&-Hs_sKH_bxxiZp>jOr_tEk~glk5CW#!$CuoG~K^D5#J_`F{H8mAn5`hd6-0iBpHy z@)Z^SpesH1=ffVRTaWMEyp941(-$VZ=LQDHSb*B@-Qc0kxx3$GucJ5haYp4HK|hz< z*0}Z_!Uy&pWs$CRkGAw>wpG?wSBr^jr?3?0fBZy6N>dOOzKnml^C2SL$sVqGRx*Ki zw5s#95mB!0NdKLR|Bn`+vu3$0aPM!aEJ3vjf=;8M(X{X6tDK z?aN^Y)1I$N<>wZ&G}4(jpForg73X=czr)YH`X4))^nT&^>AE0}vLB>>R4RKJq{u zkP+0}um%GL2<=%-7tqP@U?J_lB2XG&CWK;nj$LWoLA*fy(qQF*jTcaz&k1rK^#8e= z&Q?%7a%Z0}Rnf9j%lLxrCBSqLOsN%Ox+F2_C7$u6!b+ItzK@R>>cFFVUinXGuJ zG~(GDFf*6z-aY9gE!{crL|U0KZeS_Tj>Z=sH=YNFbQS8aPv`1Z=r+qBG@%9RAYeV;1o&`#FL*cMs@t(Uj)_+0~? zHd#%Ta_GB)7Ui9qy}(j1%J=uYex`{)Zo7yN%u2#6^H8z5RhqZ~;T+{{Wq(s9SdK7a zzhdc2(M0;rrr*EQpADrU`jb&Ft-`WoZb@o`k(u?w$NtIps~WZpM{1AWO&!WD(V=bH zi;Em2Si9(T#f5)c2$W6}`(q{Lx{$f$Hh>Z_z9(|0FeCX6Rps2{>pEsQwPFR{svorY z7@wHyrOUhb%yg5tyCi)Twbj?BeWPUFF=P+56uG*d6X@!ZEd?t*)X!hkNxzq?MqX7F zF@MU}*|~*)3o3HC%%D`n_>@r?EohJ;1Kqb4sbd255h?Tk{@x<_u@Nq`Ko zRa-P_0VfM@Bse8hu-=EuSlUcz-W>Z!`3a6qr&Q*03NI1R?~x$XE6X**bUNQ0a}Tu$ zS~85*f_H2-L6?q!+Fy1E$73JZPe4bHjz$KctZ5*Za3mg`DkOL5ei@u`d6FpoE(nN1 zVVWKWiq~JwimwxE`IRHqXY+hp)FuOUzGe`EL)HN2HeRs&35PKnOXhxUlX zRY8_y=Yvn53M=@70S+J|y8$K`>R-PSHbz~r*7plNGbGd#4tcf!@!t>%bnXu=+@=-< z)eWs!((NO2ppFW+->}a&K{x7t{l(r~{lH}Iraiw5uLD;2XLJORQr;VgkLQIYd`i6? zC@#bN`g&T}C8t+F?p-go*0$md%f|rXr+xqaeKMv2R0`1Gbch;c1ZYg?VZRUyoA=RNfjSXFq-)2|5wW}qJ+~_t85IQ!j|H%B!xW5EKM$S@ zqx{g(r;FjQI<&=7Cnvqv6PCodN*gJPD_MH*`nkEd(8`B(oyUDm2Wxts8E(R<2xAlf z^S_V!g3(c5)+%|o^YHm?RSvZ_uNm9hlOTt>$60U?nsXktD$es^is>N2fW1SLBm0b`h@xb6nLEHElC9QI1XS;z~SVF;oi1NrJ5?&7bTQ zdNKOJu&KmB|IOhYB9!PJm+Vo%{|^HPy3sd^qitQ=R*(Hw-EXFjgK`RRQi84b1&(62 z^tOmrc)6ijD@=w(fzkTp!vDkM*_#XctY0z2hrb>U++_$5JSTSPXd>0$5aYhu!29&% z*Bz;Q^s&JDrU27DF`F=Ot8wICR`(VO4$zX#(>ckrTL*Bcpdf5lXbmkwoGwaUEv#*t zg7S96RaL?DiZTL{r0>Gu&H%CS;DAN2qCG+b5COmi_MoECk6=~MbDL$<()L)dKTB<$ znK@#(EQ$6yE*JOJTIm(OE%(~Q)YO)a*jtWgcs%Sn6(|Yf+kzjry>J30NyXk68;9+; z#g7|py3OB7XF7~zYdO8%k_PDeJe&F8rFG8=i=*=IRARQ>HWrP+Y6q^`f+B1ldL#}w zi?cBute+XNFZIQCQF@}jF4?n6pza5IErBx~Hs>KH&y@eEF9ly{+jNEZi69}3u*N3r z^zz!Dd`U|j+14qiWU3jjqhO9eQOU3@a1IesYc& zb`cQai`P+fNTfO;>rz6h#|E_aZhLk>LQhT_qB0T!C3BwS!>S$teJ-GYLmeAgCt27o znR+vl8MSrZihYdm$)|ROa{$p=3sMz_t%`KtiENM;StrYff z_MH9M)D|A$eYK_5c4tjT%dPX+b8I{`)a6UbHr?Ld<6`g9ERFY9eM*jT5ikttJV8Wm zFz&c{u@qF;tuG&*5+NT1=*zc{soTJ`0_yAAqNlWcE=`7<9r@bB_wS@s8 zK=b}L8<(a@ipM%)TwKwi#!myM`QdW`5cuOrMqXj(*2Fy*Zh;_pZ(tUEz#b1;E61v9 zJ%z0|&kASDE4FGJr3Qp=2k<0sEh@`#Whj_kFX(Y{THpdrQHo2QrRGvVAQB`)fe%X? zb>8Si01!?+&!IK;k7E#G>TE*X*~?P-dRd9X6*Gl__uo&nS$YkQ6f%s z0JLhb*?X>$3>4C^1qedU<>#0_6ciA_!2p|Y_^_L{gx@HAS~PctSb(FwwKgaW zr09XXAIsy&wnP+dV)xK?z(yCGl6 z1Z^2j4et?KjO0g)6NK*uBA-^%J5bDKwVTZcwAB1ZCURvJ3&0OQce>W2{omCR{(*rH zdf#ekr{JmO$n&@O5eGp>!eg&hWbU>Vtwp1u59whtGB{x4`3fd??XJa~JBsvX(Q zg&Sx$9aLw#b3cCdCskh(`rQ1+Wb9eziO8KT0r>F#=(XqH8@mPCuCi^%-if-gH^uQv zr=R)OtlZJk*}A68+{t|T-wyQJQ$R6?PN3a{Y#n5Sh@$PZ%5)$^JNxLCZ%7Q!<={J@ zr`^0z^p95l&0O;})B}@W`&(0yrnL2g3#+08@K$$p>_JnZSu$p_C=D+o>=<*d_Bf$> zaF-rhq7G#mOceDz!X#!7131(Oi?UTFiuDk0-g0{ty?=g-jmvz?ReCTxbTfR=P@p6B z9ay>t4zO{+hc0Jg@#pJQ#)OU|86Sy?f+FEygCO52#S3nmh8;o57?f9=is6Bu ziI=x!OBjFxFg3Tfh8SyUX&m`z>7}XH5Pstl7S3fhEG3RN<$_iqvMtub2mJ*KP!A|q zu66vMzAZeDKcOS06SZQf)X(h5K;R3&<5}FTi;eh7pbA+dJl6>Kg5xjvu=e-Uu(B&< zock2VGAMpO-YQG3{-_6l-HV50KCi>sz&Z7#9}lDfS%)GqG*-r%WWM_Xvu>gZVRi9< za4QZ_X55ejpJqnA*diZA(c}=V5_a5J(2sN4A42d57fx?h#KB0~bggdjJEaS7DIFb@$xKorbNGVGX;o(HLWP^f`>;Sq*O>U;?l zq)}l(mfrb9)xZAF7&T)A8>FZqi;oDI(=?hOy9IWPM2CWg%>i!l|9Zzt0_?3@hJBS- z*1S~b(M9^J)z!URptb_U5sGf^QK5%B`{eG*&3ld<12CqFyFb2>oaO?o? z)a~~24N~2ZnAVnd z=8R+;ipj|x1ycpqa<@J4>_I1M;7wzjRQ4=;T9V1Jp@fG|%$u<|YJgn%Hnui1Xs|#^ zw0UZtF6tFPL{5^ut7CC|5Ds*^aM(I!Sz;di!Tkmf7wdj4j8!U+pPfL>r3k>z@ z*a3}aZYJ98v*R?WM$4C!>tP{8<6G@u%qN$#;b0vmM?Vy3A} zn?dANT1rkPPZZY5OA+3$)AjM$8yhz_(Sk@`G1|tamjmBKA40PV4$!T|2Ryg^#Jlei zW4sIesmh=8wq9(=oYQ3XzRJL(+xynVgJ55hXKc2oehJpTM@#|IH{NB1g9o3Cw2WPX z9~{m4-FTE}FpZWeqx$t{^S@3hCQf3!z(JodDn#q^339b+zKUrT*QO`&Dzqiy66-Q2 zNcHp$DO}_94pz#sOz_NytjcO6(DT3)8ml3$&;Sw9_c|~DUIk>BcVC_TY^=&$%7q(CteNJk$RIC{Vd@hEZ#w* zKQ5qvYKcprE{q3UJO0*Tbo<-6vUXjTgm{{X)lniI0x|)7M(WY+3vh0aR=+aL5 z(42=5v8tdq{bpqSGc@E6Hou+a_b3$b+WNb-Y+-j=r|q}*_QJQd-kI@O9ezU^d|%kw7u4_Lb`Am946@5dvK)uW^b6m*O&*94z4t-aZncDKlSLs3W#kg0u!(|xIZT@mE7_1Gw| ziObJ=m~iHeUdTPt*0;Rw$3;;O(?yjPE{qn>7iY}uot>=R1(8bgEEKg7DZfAjdJQlK zeT#^PjoOb$M!5-){oO}1Ffi~`TS?2qI)|+j%5KpGXaDQvUnMC~H8ab{s0_Sdoyg#uPd_nEIn>P?++ znODey^5$uKScw6Dbn*UxYQ?jpvf6Mi%@zZ9^!p@5M~mB<@EV5Y-GLecz@@;#18UHm z10F(uocUbB8dLAOTw~_0HCw3FAXoMEJZm*8o?Y}qGa3&t)g0_``G=``pt*8m5$~YC zRVp+#&(zJ026~{ck{_18ep8;DM`+lVd=?4f1}^+JDr*mXfE4xlQLt*V@`#Eh4iOH6 zB%ybo1=XTq%(gGJMEIs$@R>JtEg0Ga*KD&+FQE`a9B631aLITYj*mXFf3I~z-B>yM zUdb2Y$9aPclMdnY-W*{fkzrx5B@}YeGfLZ3Lm$fWc)E(}6xlvuR?ETr2dghBtu)|v z%0J={c%BA5Cb%RRWB&jdLIl1F9#tLiOY<8SzE}+XOM)SBSD;VbQ0+Rn6euVth_Xp_ zuu$;un)L`<<}3aQdb$5*mg8M zH(GubZ6+%)PC8e^@}*8WQAo}M$6?5lTiSh23Wy6GVE9tIR#`?cF1uh^II;M15oXI+ z7}H>ZEaAN02QY5Dx*V^h8{zW&7akaPHJnq!xorMU_~>_<9cQla-NQj4EQs8w1PpkH z8Bv5U7?==r;?N#)=WhCbXI!wxo0giI%{gl1<<}U*4~_)F@d>04SQ%rp3m%&MLevAm zaUrG~XeOLnKOgMZL^bktK739k{)=kiSb8k;jPNnLi|g_6FVYV7@vY#@)&rTj!H2 zd?M%FK#2^9!Z(`)rHB60$CYS!!SV5BaTvMRLHnw|J2C4HZ43ad4Hm!2UMYQ|HF)}z zGU>ag>^v(u^HpzHZe#5hyo>RenPpG2Zw8%tQk-BxB1Wdcj0#DzawgxG2OT!hAPYvjGfCUvkCDSyR0q6Qu72oKwR!yJ>{K$fN~h;`)3-5IVjZV5jfoEHsnEzlVe*4`ui5F=Vau! zLZ`TqJPwVvA3vfNc|@+@b}&jpdW7r#`r5rQNtOG&mhHMx6qttXVZncKny_`)_8!iF z3Bv~h8?&H(wu|tu+VO){3@u{1p~y<}C<>f`C+Ad%C1fZj!*;(z=+}u_kZ7}CupMLw^ z2ImEmH{ah$`qx=7_3zRWOLD_+?#d3 zeKvL|Hzs0ebbuo&d-AI1XYm8vq>yfFpthz2miZiXSZN~XpSi0pr8qn&H6I%+v2GfW zdnSFT#p>o$z~))6w{=`BbLaHwQsb?xrwXi}?t1l*4Bj0}J)@ZqP|)Og2gIMD;%K@m z%p~B|MFGy6mnU*>DYk1p12Dyg;yqQd zrBa)BdBm#ir!f&>CIEb33;45=qf3X`pJ?Qw_7Bi#f-)qqVmT8vCr!S2Q(N@%c`R0y@ z6XgwToDVx?@#y+A@1r+Rnu=7zD>eWW3`!)KaN_`euU4qZ0K+|ui+$;{k`QIJR8_BK z*KjP1B=uC*o12N=2V4aTzOmUHBSc~$Cg`&5J7e5p`oGFRb@QysN5mDe)>}O#Lpc5B zM#M7QZZZcbrv%6(L1T#kiyI*Cg%+Ichq7;7OvV>bQEIRn`O0TxX0q}9_?T%YLWemF zRzc&zHd|)^r(sfMVZ4{5kP5_Vqm7GgqJ&z8J!t9f>*k;Bqdv|Mgqfav(b5eedipvP z2s-tFjoW?<2x)c&e;|Pr%W6iaKT*^tw)y(IHv z+Yh`-v}MFefW#XC?m!ZJ2LWRCJFc8oRJzv-|JRTw--P)a1h-chOvh?HD1m~2lwAR! z#;1ydUMi5{;q#gE+?J23iy0vOUU^5vt}Ezi})q_2DI(GOs>{Z^-h zN8NTED)wr%4#dn%r78|TqX~V+xEw@wY`@k*!r3aE zes*#sKb)UjGCx{b4J`%#UO6Pnf%RxT{%H<-+Ud*wYegHmD$k0Tlz#QkeSO}T*#NxX z72GTuDYi>SaD|Gzea|sj+JWKM(0oZ=$~tEDM4+^2=XHrNM9S$!MSq2HU=DiVE6dnzIDFt8@%1;zz!T5%~7EX zuqRd`g$0HQ_!VFPN5CWvIAMINoAB7-=%{m{$0a+@J z?Dv8}#PFX%ey#@jJ+)D&dSjV$8h0g<2J$r-w%e%@ewz(lovEv(s_Go`TPwaS&&-R5%FA1WkZ_Y^J`N6_ zlv3;`wzkMc7bbI4BR+7@s`dA8m2aouZ3i)?M8UwP)Q3GKpC7ijAgRjm@;KqQv|!xd zw&xPvm5+NG*yCX;wC?1%to58_AEVsQl6fG~;d+0?A3)II-kK(vI*SjSNCbjNh3s<+ z^UTr(^jWNS{uqVk;x;myE>|9=Js@5?np=NDAGPC3OWufesy`Wyv6b%>l{dlFDF`*- z(%4!Hq7AdEe?N_F!tJDIe7)I!*h~D+luZB~e=7RG;nAlqeE&kpZc9rlcI{kdJY%K# zhEh3~s%sPc8dpDVp0tKWqWh`|y;kpv7M~F1<(;F8%XaAJt#n?Y%-3aEzFDlF-OOy7 z%O0r~Q_H%n@|U@$m(J#8np(4Fj>NHujrFzGpFc^ZZ!A@i>NI7292FQ(e>M?}!FAQs z?|t|R>D6?#8%@2fyCsRgH#Z4N%IeT-$3hMcimxtxp7U>;mUX)pxwd)m6YipYHr35b z?8!>=VZb5{aQib4?`;p5B%iW4U^Kl*oH0x0B#-&Xh`zgejf4MDm%V|2l95tc$#uCV zljMFo>XAUqolZs0idP$_joLOllZc)2$>>J*0n?c5AiSGE3!R z?HF!l&1FYNT1L^FjXl<1J$NY0rdjFDvhlU%k&&0dUbVHgoRs0n7D7Rsn+Yzk+lT6@ z#Dd+Q$k|z2x64&H-eqL>iC&&)XjR3KFe&FK8nHiGvJ=E|=rJQ!{Z!DCX`J{u#qe#{ z{Jz~EqR6(89Vhd~z_{tabZzZ%W@gvAq_C&Y1+l(qS9($X92YxzSSX;usHVm^xs%r8 z{=Isw4llIjLh<06vPe@+if|dwgmH(jGx$6k3dg&xJ9u;nw`KZF$?e)67ixbt;U;Xx z@ehig!delPd;4dG_z2IYe*KeGXm#&l)#a@%bH_46ZpB-tUVE!{awL0|j`JiqldPSR z1p`~|SJPt|F1z5yJ6%a-O~Z@(h7p)?*};wc_p{40o81nKfu{7Qj`{gYn|cK^n|~;P zjlz%nrlO8R*892nfj#a<^par8!{epJzMOj;bY0|(ow=?f^YFtLUK}y|=*wkZkH*&u zu0OC)$(XNr_4u}Fh@2JS%ag>EqbNQJYYPi(*nIKhnWJS<(_}lpK$7P*CqXRb-D{AE zYuXz!ywaVBx@voqdUtw0{Ux6By269Z+ZLsBVWAGbBWnavhnml;N1 z5hydX^2lf+u?p%ApY?N{?iBd6{Ixh0*kJ8M0SLsHZ4$GPO=PT?N%q6ONYO)V-W0Zix@~u_R*%G)KQxai;k6OI^DAA0%Ya+a64i~yY5IRL z_m)vvwq3XIg@hs~-H3t+k`fY^@Rk6a9J-h7EANp)%2m zIG`l+FE&*ud0Az!W*g!K&00D?D1FNE0FGu z|NL^;T(Jxfj7(}$XM^^PsegV7tjd6MfE-bxEC`@Rf%6ECkx*EG3ui?WlG9QR1FYkN zKfrf^12G0?4Xl=RDAk0+qmH1d)x*;hLV%l_&kRa63;BK1PVc12%VXV)!+MbYyJait z>FD;8yl{8Tz&fI~OvR9_7pC(z^KdVQoKw>3H@jUjX60T}i~y~Q2f>8*;R%t9F&-&d z@f#set=z%v@+-GWUUgjG8^0L{XaJmWOJtXCWJ~*l52=)tl>HWiuYBuVdsMSQDScWO zg3VBm{p*#?8Z;^405rF`99B^DT!;CfZ)D%fi^Dh z+l|uqH4GMXLqu9j*r?K}R=jb(cO0+C;hR2;teQBL%OPL$q>MH<-L|kNR?c)$+Q~Up zF25r7*1ph4I{x*PiC;pG(vmM_8g;HrWQ%PxbcJ=?_NMmxG;nMZTHG<83O-5_&%??R zyL&J049F2{*;*EUVG&9sknJ+VMkqxu|c1)sI|tubXoB9xSr{>?KF1f}waObX?z zUDx=_H67DL(G(Tzs12Q~<;HMY0B7-0excn$l39dd;)Fd(+c_#bcXI_3%08QN!rcS? z+V`Z|XZ)WrIdQAf@JE(%;N}+Z@KNf5rhsy=uCC6X!3?+wdk(lGcnoi9nx?xicCFYIuH!7Z#^O$MdY;}w<^ zQ8W2C)`leW+0O25%rRm1q8bcJjpQ#xWa+>88OKzrTY0@l zx%TBXo511eIXaDrQ4gKMnJsx*{3^Wc_ve9N=;_Zm?p0l|!5m>G)GorTv*c}9Z%N(M zxDXg$QhUUPypSvk|GtE@5?InQ8Aph*>n0T9YgwT=3ZrcK?dj&KJB~LATtRW}^)tSr zrvamyt24cG@;Xq3!?Li@qP@+q-h1m8nI_w|+~zNd0+xjPUB?kbo~%POhgE znuXPL*y+{N{A~iwp1mJxg^m4JVxG0%L0I(Y(al>nU zMZrdy`EhpbLQVaG<$VTa7|BXcN-EN~R9o0W_Mn~cUXRAy>#nXT*tX8aru{1Mb6UdE zwuk*}3${8dse0jXtfdyvsc=a{8BdQ-BF41tyz23-qoeA>t@rj{$9(1-{SrjwqlNH(Ms|QyyW-7{V49P|Ga}tCgEa#>c=R&Q=NcGp^`fD29UDfb z)>8Dyi{!AM5mpMV5NZLE0R?X&2n(Z#kOVP|Vb(w(m3_uwV>C%Mzh^(K9lii&9>X*{ z*j)Axz6M?=CCjQB-Fb>6i-sZhYWul00J_BNKDWLH1O|Zo?_d5Gj%Uu$o9DmK8&+;0 zaD0|TDg;sgA2^=*3&(C}AO=g?{(<9*|G+U~0jOFca4c3eI_$p`2bX{!Tol3ccl4re@a z%E(_b(%JaoHP-_zA|_=NBDxDoc6c<}eyWze`D~eWaHA@&a3a0a7fF(yrX>B^-PxTg z<-|4YaJJH#;2;iVhY1h&UWj!$xHAd}DlmjTC%yPRJnnpqxn{Gyc5mPPibu?zdK}ul znxBQzYV|8L%NTm#(=QlcCKd?Mj^$%W;vXMPbD4wM4zu>;0281;XvC9d((FRIh*krm z;78fjHI+ddxG60>l%``H_(axEU%j{XIl%?69<6bu2HuE<0=)jRPJB)0$+5`BlSHPQ zD=szqw<)2ssPR3k?Lb%`A7=ej5~qf2-g0BI?L!0onRDvHjfcC+HnW%=aWd#{lz84K zJ*HF4jHNHL8%=kx-h@v{6%`RtT`nP&6wLUHw8P6u|KFXGrFUs0@MZ{kf3h{lTw6va=mOEj-{44Lm!_64AIcaVwstFb@kwWnx zC~Ec`=JY#v=I5!*ti8{Bd?JAt9+uW1t@8*A1wr30OWVj?z_z)B_@cY)Yu!tScjDhz zvs-8fxY6PfUEOaHsGL-`%2vY87>nMH?W9qp4>*^Stp7rtbI$3q_R^ALH3fq}BgYrA z@mH#rlCHZHZl8WhS3};`r0fnGHWx*_v3rad)CAJM7?sc6WsfG?fov{@Pd&Fary{Qk zGZDm(Qg(N}`Ip%}0-u51S{pE}(EGq?b{ojNUWI0uMHeI{Y(5wo7|@lD=8^}^ zv+)m)1`)LOW=>q=ax5>sl8)sgOaENR!|6JKr-nw7+?}16E5)(iLiaaKzK!jZ=7=e5 zJoObZba=-{*#u>&J<~e=9Pz|H=JiMJ#6L7=`~Pq{E<#K-J`&2OwyS&FV2lnhFcgMq>Cnl7bzd3i0Fn;97y znPf|lcL7lx{u)`%1}J>?70^y#ef8hS2rXG=$RB|1!IH@T{8C8Mz#sko1<<+x(9kD_ z{E_sG6(cYV1L(nlg{gUD`I!InL;joLz87iNzPaZm$NV_qkG4t1sMmt;EDTNhl@3Sg zHi`k2h-0n5pnSjhgMrOzb9ntTnAHp;cXLT<6~J1Y0o&euVt%u?#WQE&Gl3(!&KAiKVJH*fta!& zFk2hrz24qHop%jP#*7b{45z9S&dDZv%(Nrai>3Ty-D>x~l>;y~BF2YCwKPAP7PpL@ zRB6Xz!&5h z&d$b(vwCoq2TfQiY&>((m3Gbo403WwYZ(}btBp*Mc?=9Lv+62Cu!j+Mks+F1@s9ee z9rZH%$lVz-EjnAdoL_TyXI9lOhJ~p)^u`nw3vNXDraaZLZEb1_%v^Z9CDHsqwl1fY zBAU-oJG*(z`IeV9#z#s=j!Q8#p5_)F6bk0n-i-4fy$@TJ`-jJ<70ahR>@X8}Vc-iN zH(C1f&xiSQ*e$<3p?3@eMd+*ogdqBmn=-|~_`j-&ztkgXHPw1pV+@IA^ny1VBon5oVuYJvvx5`=NvH2{Y}>5>HhM_5t&O-1C<6$t4ps0PRW4igAqU+Oh&ZKQ0Z6OwA*KGC(^x;cKTz9NewKfvyM17&HI+NY4w0rmhP% zEhRY?sUP>koY9aTH$lu%zMRT+{L3x=GaYC{ZZn&`y)m_|U23Wfr6qPxcWWwCPQI2? zk*R#Fjfy(&C-sBvi!=$vv)2^?59t(SRgE;xfBik`%v|?n3AjEW49m|??}$C}&OrmZ zZSnV3SITGCVyLQtK@V0+&@HLM+32~Ga!;XezPwNHYQ`6XUc+t^?%R}?ieubAEfUq= zG7xMU%@;mL7g4HR8fg{ccGdfjq6DGX(`D(5*$1e_Zzw|-&9V^;7vD9=rw4+8>JW9z>W%(NWcjm6c zfdZenjN32;kbB}F5olOT3kCqDW90X_4Wn-lrSY1koh}=7YnqZX;fQw)L}VB;_Id;&C-9GYB_0Xhgf1%L!5`4I|xj(_kHCJg<> z%OZeQT=)a>$A1%A%g?PC$hJzrOVxklB}~GHA9;qCB>(e6GIg~2C0?JeS*=%@Z5{iN z`AB7|buaBs%`cPl@;Sev{1PzDwjaj3U<&t z5_1R-X4d_iZBvGZVM|)Kw%&e~AwIJn%j<4YO5B8iWd;!x_7k_#41Nb*9Z44@eY2uz zP_GgK#50KUD}0!}9-j(G>fBGr0V18}L*REN=g`@Smb=AP=j&AKgU(2x=go2q(3Srj zI0Dxq>|5ToC!jW1i__+)&R?ScvH6gd?Ma6wPF}_K6~IaQDMIqdXXpL05-lZXykFW5 zokNt_lM_M7Abr*$>htZ5L=g_89}XLOEFujB8|+KCKtR-~dpS}nGDU1+iWl!L z-cTjOXeRVS-B8fOSf+L@xjDF2qQoV?wXN;ArJe*38I*&~%?~KQF}v5A&7B>=28>u# zU#rSDI8244Z;GhaMXR1#xbIK2P}hs~2Li^}uTA>?_|7mzjfS7BTko;W{4j<8rM+mE zz`!O>@W*z=6*Po|5|TuuNn{Oh289T0vK`f#_EEq_2rQp^q9~g04Q*}OZ4DtZ#{Mer z{FTPgE5-wI7@j?9jbnVfSFjEhi4!i-mHZw4&3k#vPaEwhKvdmic+uP2%fN7{t*uQd zTAGbiRwo3b6x-qkq7rmHP~LIBe(&4G!g<^sTjAp2_5B?D3*VkAjXfJ4b}cDczXL}D zsOu!DwPf5=JXCsavk&)KfzKld^5hAlJ7dP)i>?}_I^`I~(+W*CFpkzDR2}NQV2X9i zE`OIm!~4q^=NvVNK9%)DdgiOKiZv9(6*cFt1db?FY zNFg%TAJG_OQhVxDWJ1K%_V{Bt_QudqN6WSxyYC%};?Z2 z`+6O)_%(F#%ycG*~XNJvOHUJDwaBgmy^_*Ve90n%nE z`CsVtJ;OQZB0`FA5J{290a2%ZVC*T}-4dWWh%?yS`a0P{=`c&g0`lEDUy zwW0anAN)+BRfW6<{N(@P!IPDqEPr>MVmr`OyXnP_b(gr0)reeOoBhPJS0ELg?C>yE zGiatDu#zn%uYb@nX_w+HZ1fzMFuaC;#;V0X^@twY35TvR#QATj#!K zF=}>$EBvO5fp{qqnTi0S%j|^h`JQ~c^c9fO0xD(0k_?U5zGO20rM|1pRM@jISH2I? zgzEi#6Ka7+%W^$5bx-D)@~oEhHZ;5pwG<+lUkD^6+BFwp_rJd^eDwOe+Q5`O)VSm0 zK?E0CgyM{KeRSc;f}5ngy*7Cem^{s&cPThBzGhOsT00V-=8V6Yj|bBUWvcLBW^Hch z}%;|nF!KN3q>0wL!<+!5_9^4xIVntZ?O3P-r+ zan>U5%Ph@ z0)wX|!eO}7vM2MwCSAY{EhThXn^5QX4q~g1ea`5-G5QQJ7cPc6hO)ZV7SR)XEGUn0 zaL62JbT3j$YHkMDq|mx^w>=g}d9vHoE+H<8R!4FvW|duD{uYrJQqxLv)g6n~qOF4n zSaeCQURg2e?RZvSi>r&(bK#^d9%E73Lb8kywO zmry;*JZE=c(D(J1(;cG9K$xbj=fb-+o&YBWGZ&T*|E`JH&9&JSdPy`eS}?<6yg&Xc z3s7$lP6LP;>u$Zdtm5pktE-}hBSqKU{`{0w40C+-3ir!W-v;~pmmOc-<|3#hqKe7i zvzhTG_xxO0nLj=FhqiXLjnS>=b;mdH(CCL#2tVzj)GB*IE-g2y?Xb#!4=+P zBD_ogJ`x&UrX%=l^bF@j{1TsEE!_0a17Q=lGuhtddsp&7Mv|jEb3PHp zx@f{JD%ItdG1Jpdw<6Hix1AY3*7UtDv?jNx!2bT-x2>sZQM!GPFwE&an~P)3pd-$_ zgM+ZX-m;fxN-tV^$89#RC|qiPKACkGN&?e}JHEz*_4M{Oncaqk?S^25!AMHsvjrZ4 zf9;)YP%7nwtHD!3fX$(F9A=yVAhJNbzzBw|Ks?|h(oQmT8K@=1k-??90pB4C6Dg5d z_XRG0kxvGcN(zV4BN+4r>pOvv!rov|PS2hJjIRg$bUuTZD`)swIzUS%8>Gz&Q2P!C zai&(_$xack8K4N4j#$ui`!(`Z9uJw`ccdOQi=}d`!TZ+jT+n4KFf}DwXi6SVGMJ!a z8>l_`IQD+)%Pv8E4(&Ezg#GN5Ku>P-P+W`2Am~p=eEb>F=<%#^x_iw zAGt7(GrT@~);HnlRZx(1wH?+~*M?=0Hod65vq9|wHxCfRSyj7BA9RHRqrxss>fY(+ zP(m>7Ork8i);CWk7&JstqK)zF(yUj!Pbr9Ye7ruHixji*9^+A`cxlDn-c6T>geZj8Rjodb8M8wH3V-vNQE0i( zZY|Wp*r{eGGp5mB3aCx}xIBC4t6b4gjCK?u%1gT{(~vd5?KlfAxo`|Ej?7Vw;gh|| z`n%IUGT$dFEAgt4m#= zp*v~R)o8vspgDjNUIktf>l-SRsp4ss5yn?g1|1C>0k5HI@_Log@Q(b8EXkJ#MsA)f z>?X~9%mb#ya!HkJgc_iGeE_Zkf!A>0Dee^{7ugns+N^l*XZ5eI?t1hw`q;L(1c>H6 z#TVsdoUgWYSMXgw8{=0%mC7Zp9CrVr(o1Vl-3!nD(<>${_bvMOzvS;|)emjAZ%uP#N z`h%(s_x0P36E}mmlH4lYzhGEEI4pJtNt={74$ zXtg=QX~W8@eV2ngtlC)SBqcR9aL8hQWdx~Riyx`*n&;@~ld~TtXj4$LP{v)DWOxb4 zFaUbr`FST!P^ES!J@H7x&d`Gyh6Db^6?2gO&_lx>0}uNR*1|v71nliHOil+dafT}N zAM8LL35XZql)!)gc8AhVz!89$3uojF*&f^i8zqeaq5!>M772n#ls^n+VQwxLaJ2KV zlmozyslqIY+)FO|U0N6#Oz{8teHEQ=OBklL@e{!HLj7FZSBv5oFmNcE;8eaSqQ<_~ zGWlsvUDq}KhXG9#Pw}F!TBtTVFDy0B$e2BfOEcdf{I6F*OvVzS84=bxvvtSzw#v={ z2fUNW6-E|;)@6;pr`46bSG2#or#xu0oRBjTp2vHbErWb?EZde<^@G9lm1sv2h9LCi zz6RLg2Av-065x}n=S}~zAx9^TBRA$h#G&n{5s`7`URy`@)z9Onk^2hFZ|g${++dvB z?H_U`l$Q@`*@1gXd)!UEbc3LY_NDlD6n;e8i2}Yo92{5MrMppT!+luojn5ME&7QCi z?nAlo=i;!q#?K|kU#LWuF;kAJ&st%|kj`k2y4qL679siUR^8q?FlrZjQ(4?t|LPk! zBE{4#7B@aUl`6~;7iw;ou-h4{|5C~o!M&v8M%Ne`!I+$kD)orHa^;q=ZufT7?d~r1 z5xzb(=7Gi6wRfzkx^hNt{azJ$2KV%fF4-u?h{(wJZ&-?lcGT*TS(LG0WCvc$lg!0M zm#wxfm(lC~MO~%3a_=h(E>VT*$G*5YX<#<;au?b|#D@`qe|PnYwA`z6rOCXIwW+Sg zgQ9_P&+T?NF>)~nzL8!M`yyim20Y)1Y#Ast%E^(u_mQ_x-!ULh2Yx`~#7f*s zgSMrv4)*i18Pi8XC$`iEzKu!Fw?w=vAN9X><@)sg55~&}Mpsx^Iz)B`7#Z$cW^Qw$ zzDN_7Vh3(_b{8AJQU|6qy(>sm9M?(n(yG@@*8YDU(rKIIlUshJeZ$FEXlQX~=xn-A&{MHwvz1ukW>FP!33Zc+BP#X*GT7Ia9pDfnjVW>)&v6G}cld72nt#Cc*M@=KKm( zZJ1T`hU9%@;q%5?UA6ePHMp|tY$m&?5+d4D=8O)sYCwCn^{?wO>8dhgyQ3;Y+`iyE zp4QGOw$q_Rs5cK=X~9CU{$X%;SwI{yQQ1DXR)V#=4TPlsMVR$<@O0I2;by(ZUJ2`O z^MR0rBA!9PHGmH6YWOG44T!&-LJ4>Y;VJh3rHG(X1PlT17b+%rc;HO_07;BcWx_W> zg69}e2Dalu4RD8b~a|H^5Qpx{)~NRKB37_S^qW2!Hu zPBFdrP_V}}x z*V$uTPkw886`#VsWo?5(@;8&I6g5m)3lb+aNb63#6In_+M{s0k6KPn$Sx@0M1ec(? zTy4nB2#c?2f82VvhK1ixtboJ-3)d}rT|gv;&^{|Ej$dNE@1K4t%m`!c?5=!v#T%f_ z?tOH>wIi!Le09^Fz^i%#Us&NAf6IwKQUQ6m;f&X| z)D1m5*YHupBdO-4#z}G!MMW{-aNL%-1b$4ps+Qx}rpIh++oOBL@PUO4)E? z;$mtgCc`|Z^rfZVZ|6zw+S=OoFZuxa!arq>`!|JbPoTov(3s|{{p3Ohwi3zJFjcy) z#8~o+pQvRmm+U<D^F~9*O8m60@QFfJA<~D8l6F>$NsDjB?YOuzNKU@Bc8jt4er( zR}x=*8y4a?TxoVqU)b7*9vRv{F9yJvq0>lduD%mlCXq$>Y4DDnok@;wW$bWD?^8=^ zM$U6Lf6ITh=mB>F%ju)z7qg)E48bzl%s;mmL$6p!(!Jacy)~f7e2L-%><0ZI_o#AW zrFP_v11C6CUc0fj?54n5e7UrqnEUoUIAzHdms=oTu<>l? z62`>orCnFbjkp7zGxC30r&J$QUr`&PcUX_$K62+iWD=Bc7cRom3L96=`fPoN0=^wk z2?b`o>#$)3p@z)yJLDtG=Ux{F)5b8R_^T(8bNMXPFB?DmFM-6xLC&7LeApnW>yXaE z5>w@SdLN{nrZrck<2RepRSa;8^u?F$Tx*x^@+DyG^dG!4?N}|h_@wA*JmgZNByTLh zyMx71Nik>t;~;8I@4ViakirtMb>ypLx2fp(AXwIB^h#uMYE8(LOa3(RNSDV#VRJ}W zz~_knkB2Zy&&mo{^knZkpp>l^$aJdtJjO)>&~JJLXHfcwh9TC_!ugdt@%{rN$mPxf zaB>LQ&vkq3TX>ae(_3qCBx>GgOr8jfn0Z4!PrIWdA@oiyM{Z(a*YxCQaZ6_*6mx5( z&t*z7mZ(iN!i}h%lVmLh=Ew}|zZh3~xJw+r}88hJm9nr8()ZN=H<_;=uJ!u+=I?<}nB5m5>n#s5Bt%fwL}b>h9{XR3|6HpwsNs z!^OLrHPr1JJLa$;YPKaL{P1JVDN@}0;Bm>cv4a5n`F!CEV&n%0+5#c;Txc9^4%?0P z>m0aNsO4%xgA4j0$39tUGCLHw?6Z@fuEUWsxO3^!B?#uvK|IjCBD>!V(hmBi>hQb$ ziI@I(k^UQ!8j(dDs!MarAITuC5@HSX6ha;RL*-NlZ$dU4qC1fIOeSPaX18Z&Nx-r} zL&3F(3665n=h2Hd#@JZqBmNb(v{KHK`}s>+p5_AL%bbuRQK=%;w_#|0tp+pl<8nJf znRPS#C4gSN-G35n-TBk$z74d%>QV?mqu;m$E*Y-ig0 zZAiFNU`4`(mYnpfPv`;~2jyBV%S(O7mzBDt|hG1QRh6Ywar?V&(IQF1kAqTAr<(IEU5B@OTc3r#7NUBKhxc&PvG%^?q zk3by6inn=@rFi@*)EIMDzLRWa$!s|C`<=!dWBN{+2S|#iX)-4r{Zs&}^4{aI*6sZ! z$!4VZhRpo92n6Jx&2RzbliTk-fs(~5(+jg~=B}m{H^s9V2RdxJm|YSv@GK?+MZ`}a ze%ix>_jP2EGWtR0<&1-H$s3X~xCIba{yTIFsygd?>^p?Ov4DOFUn844(`G<&x4>~I zO#rHe=TN$WR!t6A3hFtOc3LmOJ_TsYc>#07``o&RC`v3)Fpm3cFW&%oh0aUQyXn^g*QeP^cO!Vf8KS{@%MrHbL_u4DbthA$SB8nAM}Qz~IhT zkM6uCCPVkT>U%_BQdUiUA03}Xz;j)1p&i=F@4Fpu;}|aqiUd3eD3i_(&(iKoSy^)2 zmZ2x8!SCz6gt2-ZKk+`~VQyx=8M=HUt@z0jd*ypB>|(xSOKHfX&u#n=^0l&JT{CSX z1+Ms?Z@}v+a?x#aGIWDLb|@kIAk36vEn>kF@_T6#G4VFROz|v+N~V6GPb4mgIY~l@3lW(*#g4aIt5$Hxt%DEDfAkc{m2PZhmB&4$o?fJ!2U@9`?;AO11-IzJt5{l@c4#M2IapvN*KRrZSQh=n zWFG2m$VRcd)%;@;SSsoB9^oQ|_5I~r{4k3>w~rJ$UNEmJi~N^UP+P12qDzqIG!3^< zpZQNYogoWWsyG^0SYz9rU#EqJ$_1^p9GdV^a2kP;jXi8yDgFzhAec+f-(KR61W^b# zz^>)u1#T0dyFe|g;_vXaa}EO>I3cI9z$#OZ8Y9rD=w}(@#;{_?g@kt}mS(cr-b;-4s z$K``#L$uE$jTaNSIXRsN!Z3NzjYtd(!aGD_jC2GxU*{>!AiOupVk&kMKZ;K#97Ua7 zemy2HLp7OjY6hAcHx8D_lnBN48BUZD=$+RlJ$gq;0QjNe-M_%h^?88#T;|A>k{ zC+-;aM-CVejR*GuDqMogxr`Yk_aV3*KC$BB+3TngFE49@fAP}wRz(S_)wSEROADWz zKk%PN?L7Da+hv-|fzk5OJoe=Gf7ubm)mqX5#~qR|y&ZnrT9^L)<@i*8u&E&$TY3z) z7=O#;{bIQgeRtV$_gj6w`>x~Pj~AocD0F|`kHu=|+|h1Fti~e4i$DA2!yMni#Bh+? z&x$_P8X$7%3hWHLP=HiiL0guYV&`M3s<72E=5{lLF7O^<6?k+i9 zrglPD;3BuFVY+8qw|z?C*GkAOmRDTLf>Z@C*=b_3H`|vPtibF)m+_s0~BpKK< zW)(Mvw&$T9b^%piBwbt13h5fO zSu-x#n)%%+xiM%VrTusIMMUWW7Ozz4nMI3KY=CdZg^zhMM?CZ5_q{@qv9kDFavcia^9VZ9h>$6`eMjleS$~FFzsSB#L#RaVAdCjz z^9o#ifv^|2e=)BpaCQfwLq2+L2S?PVJ{Xhq*8gb<%y`({F!sFpXS3~Hg)_OVtQsL^ zfVcL1*z`gd6q?BMr_pYFP?EjO_uXqv7qDQS;VpPjP&pPz-w%9!<_=8BF`Q0b@P8}M z8$;iR&ObG>IDqyA-A|lw$dNkBl)N`3|5D_$=lZaH`-V*j{ckuuV%avLAG8AWqR8j> zpICc8QH9H6c!b+?6w(AlPmyKRVAnt*fAb)&Z}HiXMPQGKEWID>gMhzI5%CsSRCgkD z*CFa3LVDVe3U$)#rm^R@p`SR-TUUnUo7%89r==w}k)5;;!DI5^2tn?0BeM^qHPzN>R(ra0y!r&hr4ZV)QWjTi&B%gLdE<|)L# zihK86bEOeG(vTVj8-$K0AuOcJfqUv2t7?hZf943@LN)zz{T6J7i8qFBbNI#Gh8ds- zG8^zgur0pGyrZdPXMw~W9C*m15v%dX^90!Kh>n1%bMSJMOntl4#mZy9&-^ex z!S-(6?bkJjxNslQ&+3BEfV@`_dhht6+2%qx=}z3$}1Jc?uFQqGUSOmXOCfO(Tp=0dN-!QVReC*U2!|9}2E_P4=CQ`uM=k2G%Mws^6hzRbMcigs?D8MhN9x!}c9@b$bC`{RNsvjkp zWfSz$0~(7=BiaPlWU}Rk#Xf5m-kDqMH}TwuNwP>U$SiD{03ffFe+?}o!C~L)PxTe2 z^5C{2kNW+4k~_EwLZ5gF^fx_BnF8PgLp-||LZ=^bHUu;P^VV++(Fc>9ehRaXE3&F6 z7n$sj(8{QY^&ul=M~q+;2x-lIqERSt^XOFtEv5KOnxBTR7=zci_?U$WtTE`sf=UHp zs+cGA;wfe-O>_5BsPy*oO~}yNALs0`-Lq1I4A7-^d)1&2O;pZ!bI0e-PWm<1qvd5* zAsU6u9Yt!mA)?yR;TO!a&xhzT=|F|$2w{8shMQ0==WtY9G4bwwm8T$sCtf;F=cqD7%kBiuc(daBXCEkplJ;)FTzko>u`!jUiAt=6QhVHx_J zNpQq`53JDAF@0pmU_d`1#Lb9`;l9uV)6;LXXBmVI7OqOMq>Io2;UQImLFjdZusFqTlHB0_<mWM@;|L%0ieS%7^ShB_wSkHf_aHN^bGvIyy9hm(W$3CRKS(B6 zsN|)p8rSFUjFG-a8&dbke!{dF2xg6qjfEd>9Zz;PVxXjMGbiCscsDJqyZhqFjX7YlV%KhC$F zBc}m~cmMs>p@B7CPeOFpY*Pp4*qsAZMw+5?@C4ExG9>5yo0 zM}e3a@;w5BqR_bpF5ExKIFcb3k@?W15OMIe_~pSy5BE3thO4yy1!`UCnjdv=ps1_@ zuhA1&A8ecXVPFsWiQM?25itM-c2MS^7uOorb5^SZG9Kk+FIBvN8W&34kI%KO&ibkT z-~0%Fe0JX3x9QzxG+=Nqv;eHHj{NGq5z0b(esO`n1EZaj2o9B`?BdWryHorA`s63? zY9#1f$k0)7okqPb*Q(XG!I>a~AqRNXqr9*cX8S5x*N*m~7vct_D7jqZB+iuVP&xc7 z5oG5N1a~&qA1;Kx3;Yp+0jZWSI5WoU97s<-5vw;rjzwlH{z&Nf$43KDVC>@}N4|62 ziT&G5j~Nk?wx~-DldrmX)-7_pq0o%N_erC-?Yn*lh!M97f7{o4k{%j)QoI(b0Dw@Em|9nosnYaDxHERVl%9lcn9{ z(gVlMZ_oyu`pNIDojM5H-GL8)(ghbhcqi<~5BXnDR2xu+jPW1;p~7k+H%TjL;^gH- zxxsb{tOJ>y>MFMz1aBrnhb-j3S()E{m12Di&Feslo~h;|Ln?;y)wTp~J*++#mkpNw zy7QLKazb6o9^{e#yWfFDbxF<33X=7$hs6F6&4OqHN)LKE#@5T;@46S13eUSBKQTBgJ1KHR!Mgn4Dv2=DfMzdbQ zxS>qjngX6bdgR@UIUOjjFaIR!}IR{EP4wvCrKlT`O*-n zZu>xwGP`}Bsn`|-(3OgGef8AF!s(dzky6Z$8Bea@vggoW(Zws8R=Rc?&?J+Uz^tS* z)Zq?3FVM%w6&4e+EJYe1hZk`L-Iz7}7ra$&=b3MG4+nG+nH@WDIlY2ZyL zhVNqkbwc^cBV@Xh=SVR{&88YkYO}R_lF<^I_0#RWzlT_zKDM;)g|zEc7Trc*m<36g z)M8trlsX&HDSn=3JqGzC8XCYzSt};e5XwY7s*iA3zm%7G(*@{*gj*AO3E=1-0xsZQ&88(k3s9=3O z0zJ9_J#gp#FxW>B3+6^5umj%X3MK+Ob;y^$JcFDASYqsn#K7Xu8eRV)nhzkF&i~y* z(guXd%gf)mC=&;B8iL>w4IyH5i-M3=KNO9w$;o~EY0%+F32!AQnc$a2hooLcveyJe z>?2PH``?Q9LDebHXZA3ckR7W*j-5dVb$v zdmq51guWZhiuwv(Wf4|ZuU;+LXCSgPEGbbl9&sOll63zkFSdX1kbptrTXem>u%qCB z?d|TVA?Vj64ZD%umIkk_dBzWZSIw8V;ydd$BB!M6{6c8AG7hYg6m`UN2qA;}n+vl( z!OWYfZKzAvF;Or+1x8%pLy%8i{uld(GQHpZBc6k@zh+BIQKw!qk?Ip-qCpDH6BJQV?QOv_jiUpLI-RUD{ z^wuQ#s8OH4-mGFneU^&i<60g3`Pp47O;*nY*ufBAxvxzby zStca&X+Xaj#9*|{1I+?+pg&FF<=sx+`YGg~UK#be*nHN*vrurzeUDFf$p2r384D;d zGCNZE;<#s>uPJf*nWV4%9Uh~=>bVferCVicY6{EI2p^KPgReff(Ez_-1%gF|iBo~) zNYRbRsJRU{H}q$4$1<%xe~UzNpnsWO2()(OWOx~T6*9_1?e1B$wWoj9_<<8u$(%2I zBlN-X|AWgyl)rP>m&xkVvM;C>={I$mCe*nx8=fXcF%dt}=!=sXqWEBXAc%&7X>t>) z47=Am&$mByu8xioV&ReQ7)$L%kNv5EE>4&7gxOfK?8@M{KzLwaANOi9M5|g2n9N^B zw$F7?tfBmJ81CN-bA)jkb*gjLaEdFVa^RQ*60eRj3DrVDg44W78h%rgWAuymj+->wYw67xmcE1yQOd7-^~AB;;3la>AA7|vVK>gRZ)O^nby=>rg zA^@%=0IpcAtt}z=$o@ZDM;c_15^#wb$d8^?3w)!mi#jq33=Ba{_Fezpycan&|K|y4 z;FsT6*T6jj=G&j)#F|(f=sI4zjfL>-6_M7zxhXrA@}RX>m;6NreW5oJ3JbzwHMM#v z=oSV=A2em8GZ`5Z^7+U!{CYyJFFQ0N6Z7P>wz5DhQu}N5L?ZUd6GGDIfaNa5{1FL% zd~Sq)2alrVSUDz&&FpTG2}O-WeqGwu8&kJ;hl_J*A138MV>*n_TI@?#nDE`0m4Hcw z-)h~t=l0=N#yLe3_k+Gu*Pfsj9)241F>vWY!htCPZ-^s+cKl-_GLNDciTY}9x{2Z( z1wj`~zvm|?2oc>wJy4XaaoS+`KnliV82!oo;h_U#K5Rai7J7aie|753sz?dJmmJC$ zFE11*ne(nOUkQ2&8Iac>r6BnwL6^6K;+k=~ya&~HF7n?u(Dos#<_@6?Vfark@^lh$ zXZiZFsWvWt8Cm?jvR1z(;d}b$l}e`^2d*h5$HfNf)8dqn+@uF-qu&r>+%=h1KwYu0zAI|K#8d6?@k%Vn&D)M4f(Nm%Ss17U zkyMPe(_CC@=D48Pk&b&Rw)8jm$OC>r62Has7fA15KktZ0analS;FiX0v8k;jyj9dK zmE+%y`ZDIuRs2t}6jWxPQvRC$*}&nvl~crx;LbsK?wI`Nn>pewqHa)aU=I|6PAQhv zuV+BVBT0<6+IpqOpcHx%Uw`<(XDEn_Wq|P-v)jWv(G*tru6iyk(511Qz>J21#+k%) zQFIs<0^#w8f;-SW3wV3uP$MT~83uu^PF{Jsv~k+&_ORRDr}a=_QRa7zHWC@OCZe0} zd#>~D^C;uglo;33hU4&w{d1FJB5UIF(`QzvT9$2)zR=LmgqzgRy(S-tp1eX1V-z>i zSbK*pb?V@TW)d>G9>LX0oi9j<05xRBcPex_1@&jG-1k z`(JQ3G*gtZ$a6~8JV4cvS&k-@$cK%gRgk=(J{9%crJ5LaU&J}_d=OY})cMA+HALkw zI!}-=C0R0d{?ECZyDh9Q&bbmyuySD8a3=?25}N8-+58+;*LzBu`LdQOH)q7#@Pl98 z1;f6~vS2GR!3L+NkFXZbmGRu@?D$&Zks2Mra_2p9OeSm6?G97j&u^qR)?Wx6Io{kn zL<9ZpGX)x;}PKh!6+wCOg8XlBg`*C@Ed8CF4KQo7U3 zI{YoMmGZfU97UPBqXDUr!ybvP1KgGx5Wou^t zP3U=swM4CR3J)K`O0*dmk#i$zWknb(tW|NRdeA(zeioZ2>F%`NZG3(=7mtJKFx0o~ zlY*}Xq=uv{f&cNeKdL(_YmtSCAB7$k3ZVOZKlVPF8M|swVkqcS>W$}9GiPh}xrC@# zcrapWb&u+3a#N{dkP)RehlfJFl#iJC5c>8(r;Y6njZ{RuIhJZ3^a4^27#Waj3U(5@^@8j;=73BW%mc0tH(9i^K8c*iS0|7oW1 zxd%D|g)Ew%@x?Yr911kkqk{crW~fZ=?xA%QZEL^#Cv07+KJ8Eqh3E9P$BavY&D;;z z7thUoeFEnfENzrXH)R?av1cLYTy7|?sZaM#ktu}X0N&&g-k`IHH*U;0i4BT~OQ|j3 zOLv(Hu&IZA72vL}erZtZH|vvCipLP+wIUr&{~$UbRnQd~J#^uDn68higTm8y*QHCk zhR)GTPX!xrCF>FpJieE^jbXM#LHVlkGTzkQdc#vH-{D^a_oSo0MPq~wZ*{6aVWZ(q zeQ4Uq3xnfe=6d-$mKAHby+CTP_-0uIFxc-pM<4%`Y>aW46cjc_uJBuTp8E17OKsBF z5^L0poo?b5wbkb@dHp$9UEbZ;^U|4drmG8Zw8U|~QcsyomZFnNnx_6p_% zVF+f++}4eBtu7n}b{aDwX@5q1e)8{C_(XBVGG8)WDw z!{6|>V$S*G?0x?(3>^SX$uoS)mTuP_WVhwlA2G9gUKgZHZF21x*sfiQGThsndGgqB zBu1Oy=-a`kpr|}2`RG!2{kuWm42~Yq`{(5`je(t|+)?^Ao_?*n`>8z3%J1~nfV&s` ziYMnDtvnzU%8nc>TMSrU+Y8^=upeF7c|ZAP4hFtDRO>;cWoLQp{X&&#AGVW|Q-TPG z?B-)TyFna`%aXady25D>m#iMSXGxpuuZeqMXK<12U*Q!A^X1x|+bMIYwO;O6cv?71 z;!QTmyEDD`WU9G7@$6q((hn8(KF!}aGHDl~<`uySD=P81*Wmkw;+ixeYWg(v*4!<& z_Z;xaX&f0G(iG-qbO!66e`tG(_x=!$W6&ijQ4JH2G(yIp88yq-2Rn%(GQ z>h>Vndc5!T4h?Sjc2-rvZiC-&Z^P|B+{8Lu2lxKfGW8XXu)KEGVK2ZN9Kag@6Q6E_ z3cwqhGW9LM1vY?|FpYwJPG}4&OY{Jg0HCP=6uI?(`Jnlv8myEN29PqRQRq;nB@Ag; z+6I0w$0)iVV&IqtpY%yBR;aOAbx<3;oHD8&(;@FjuCh@q6V7dT>VRyP@bq*G!g%Us zmJGJG$U;{Sop*ORKUiK^v+`uO^<*$Sp4=RW|9QUraex+mu@&z&f6g}XtKJ2ZhUCCO zY=90mo)!7+dy6>kQ3(mf#`SBzDIXnux`e{IuiIED=hJ0eHuio>i#ZN3Wzn-kQ`hwE-3sS|2=JjaR34mgdx`mLvHRweLM2X9>KcvJVKB~ zpl+E}>5Dw1C&j<$u2;$r3keFQ_hb(7y^q#ydJfPeBrXC(SU41Ej(S~*wrAV8 z>zsbGf|Tsm^`rvZqLt-kQ@lF#>j7^PLm0(5CE?IX9nTD4P)lH8tF9eY|;>0>#`mTFH!~j@?IgE5Ank zB+A!6f|l7wrlz7htHMuJn1cjeACgiZR+gU6l^=dbrdCU^f4#_-*==`+=Kd+pDUN|_ zpTWV&>63NpvN!GKF(l6~2_`$(Ki@d1C$Tzo8L|7mKq=G8x&CD4l32bouCVZP;&iGo zOb)*PMcjJ;Rkb$TqDurs34%%x5CjpFj1rWnNREQ!92Af&IfDvF&KUtENX|(zhzleO zNRkYabIx#k;lKZL&b_DVRh?JwzACo0i-I-hTFmYqJ;vz%_S_nF1$U} z#KgwF1!}3o;Mu(!Xb4z#6oxblZhjBj%Uf1?to~rZ5meMwYwk-f7n0&~UUk*PO5Igj zpPtWM)~^}!JUL>aBEp6PL}an!n$&GEkKK9PRo?WY5{66B?m*Vu5zFieB=U?y-ctGH zv!#L2aTc}P`2#Vq_?S>ce=^wvC(VSIic{$DDOf8_drd32L;OFD*KC7`i&cc*xLxIZm*~>NPYfaX~RG0(2V! zLE*>D*Y<^qynHz@oKa7L?LFZZo#P7RyC8KkE)NKL3@ z1*r=cl2vY$D$d}3yLEbRY&jF`s9xJ6KEe5>XSd>1JoTk`p`?@Tq4lStiE=L-Ty!=H=;6x$zPrl7e)%kBPCnP4 zw0peSogNjM&vp_iW?0A0xMJ?|F^0KGo-WTgQNBWDb=<^`e%5#wAA99mW+z;|sO^2> zfxY#o$`;a1!!Ikn!m7Ts<~d7Ym2@AOzitz&`!H1 zPdVaHYzI<=_IP1(7gJ<<#QYBJ_Fj^x@_2K|uM=DiX6tiCYMplZub~l8+1Sl8 zQYSC6YwwvFOF(X)yf_g-6G)e$<9J{%ycZY{pkrlqjX9d3iirg0+k%armDQbmaG=2H zGha2BhtNi#e*-K5Cs@KVo?S;PE$1(eq@SavUxX75Txa+itJZjUNWMDq`0eTG79g=Z zuvxvWTAyx8GDbRYl8dKSyH7A+=%p@|z1a$9?eQjSt)$4yr0azDtBH?DuXou@??pu` z1Z%QbkU6swXtxe?Zp^!N`1QmOZHo-CMMt|wYu~MWqIM843L&Av=)V?_<1TObcY9-BHuoyS5ov-|5l2;5od)d;kX_T}GuHn4w`nV4_=XizZ^ z|LSejbmuswEbnG-TyiiRw#H46WF+$F9#poe>mGzPaVopBp$ZMc(a5Ri5BcPuhUp|F z@;|qv6ARlWxUIQ1c@rr4mP=T{Jp>~9l%{2DBb7V$eujP`DI}DX`A#AU2`AvpFPU1S za}49cCovzw_>92Esdd75vf&}8kuex#y|kxL_cZPbt=Bg5riKmx*~{1 zMdKfLbUV!RTQdD?A5~KZUFbM^(auv+Dp4`X-~7<7r=~;15U3ge4auGJJQAQPg?*kk zLe<*!zMtnCHviXUGKS|Qp>4egXw;N`%2 zvb&`di_Ez3A1|h9YH~k?nRb}^S7}6<-{PCS5l~(4y$|r<`ebvzVx8;%Qn$@|c`zkXqDXaCFp_Qe0d&fw|T3i*(FqeoYtlEoMms(|Qyj$=#jre+>H4b$v9eQ=xuj2y-eY2IaWxJ}Ag|l}9OCX&+ zqq){HoQE0`o7>VgGRj!4Am?0VJQ_6E?kt6*pK7h?*e65Yi#pGkQ|MH8pCj#6OG3` z#&t`ECte~)ryvEJGXI2du77QE#jJ}Xhsdbgc7hmsp_UKsp`!v^d;H6G0v>_m(?`1r zO}Xk8gt_HrQBq9>UmYrLx3LZPLEOu(SWDK}wFQ5`GBNCc%53IP&nQCA=6_$GD8-l+ zB2{I0-9t4%K@Y{Fi1g{8V!mwh0z~L{6p0d$)xapyu4mSG5n|mJ#h{QVzDI@pZ|_U( zda2h?^a)!QCMtQ9;$DqGirqcuP84ua5pP09!Rj9>aZa3Mkhbe7h!YhL@xlSnOf=W9 zZR3NrEWXvcCMg}SX%un0`ef z33IgMZUvkTk}i{J;w`Bfo`#1nh<;bxNhQ?)4-iEbY`#I0 zHN6pGd;0vI!mb8mSnaZY{HX49XZ673&dy^%0`+4xbU(-4Yd?7>3|p{;$xQt*el#qQ zDG!@4|E7f@t%($^0k-QA5(OH+o>bsHa;2GS-s-B098ll-14mv4 zc5#~WXJ=o4HVF*IPrCIZHY3Pu#?a$CE&_Y>{-*qWwefHQLG1^<1O#%gxpV2BbjV^k zERCvED*1VdMz>*nXuJTvBsjYq0hfo9#2_&hb!|A+>>qD+0Y!toi`sbsZ6mNTMP07W z!`6$Zm)H$@$u@>>oeVW+{-U3q9c!+2P1h|AB4l?8_PY@zGN(ZJhmK-2->Eh!=Y;Tu zZ)8^23yVn`w4}a?vvT>3uP$uVuqTA;Rk^G*U(NFXA!;~)(oZ@LcHgI(zf)kN!Vgo| z2$5)bu~vBZG6iSiUE`0y8>NKN)cq`06{dcXb``D2t4{)4NU$KeD9BZKyzd%Uk9#rv z$)<($F0{1`{2Z{ysi|qc5+qRWCd(Es+#~L?JI{X@ZMfd@TbqC|vuGCH8EhByduZ7C zV^$CG_4JW97qz>opD^j?kJMiqe#V!t8QJ80wpP_nYJ^xu>if+UTAAKxY*r9RqQB#r zH!tl@B_DYrpKYWe1kfv6YcBop3a}J+Gpln>kGCuocX*!qHvGhf4vjNjwC~;XCsylf zPvl6Rqz=k3EnX5>VTn?K!EzFa!yJ=pM4n{ z+a+%oCK^hW&xT_VqFhbccR$yixja2l=2`T8>(v%LFE8wE<_-7IsVpH2wgOYZ!Aaw&{d#nHKc$iuT*nV zQph0BFfWZ4kXG5%_(F%MIHGbWo^lh8L4G?_DTQi1{_~X!nERQHyW6~5x#Bh2oLx9h z6GR@$$u2zH>&hKBnUE?={1cXegXCvatk zeF{3PX9Iy?ia}v}`I3O>^pR<`4xR_4AxLDK7_I*N{CpEc@8&MB8!pG|%!rB6!GRbb z7De7Kea6VpJE9Z7W7%+{zN{+X(0CTXFq(kiU4*<<&rP9R~vH$?lc zcL8|+?V}ow#KAXlLT*0jAj@Q`;x4`x;?tz+?Hyy{dhQ6G`A#W<`3H-mtoKQE6lNQmAP4Txv>X$4(WF$VYyAwGjDqY&*^&MU0}8%GTC z9x)Vch;_wt@qx`B6`vIlvGCKG-_DD+suWzTRZ*O1X_2%ZK+h&WSs|%Y&1J}f_zuj&jbN^v7H8Q8~NkxbB1s%?cFWpkV?)N!Fx+h6E zL-XVqymM&2JZ#TB+;xv$9@ypVtQ^jm@X&`*=gi=0)LKHsuo0KOZRvXPnI^Mxcj3w| zx0|QS5<|AE9Ct2upB`f^|FzIC;Edt)^jAlV;$faJHcQZLbORnr&r$Oa(Ea@lT~-x` zmVyfRuxk|qdAZ9g()oM!y#sns4S!x-7&+vtuClr`a4m9AlNT5*>QEG^g`%ycq@^dJ z#`*CH%#29oPR_R`t*^Ew_{}{x0qXP9fc=0iP8xZw^Pc+r{Bw#rKx`~EHkaSO*Zx#@ zR=qp`#2OCHM^Wg`{nnVC+j{;yDj`)5o9H$+rA}5#>2*T;Rqg%3B0%DrhFVvOh6ESm zLnJ#8C}!MCc2#ZM`AEID=PrFFXXX!qNQ)7344_!?pgS%KzV3_RDF^}}-u5m9!=ux~ zX%c=nhw|kucSt~;x#QU_8Y$FXDGb&ekCmBBnWYRhBzfyiH+7%Q6@7KM+43?cPv6FF zmzc@(h1ul`N!~~U0qjwsRGQcTs?eC|(ei^YUtr_IY@wBx;OC;?QnACLU^Bb;hcnRK z1NV(U93FKw>dbcxC&lMeFVKu>R=j_^_6|}W6}>!RAnZHyetr)^t2|D6QXwGJv&x+Jd(}hEDJtdH2(DGTWdR-x7ET9Ej$ZqGiWSX5%@l- zy_K8H6iW|kYjcpezeajq*Sx?IYJFUmK8LU6c0k%bOQ7igY{%)k)E8ZqTzwLfNBM_N z(pa7luhi*?1A*xbvA!Hk!Q3@Aba_D?;Z)1X?&SX7*H?%%FY$AzZUF1ZD$sIxedF%7 zJMnkJ;MD=w<6c@5yO9q0OvUz&nj~fSViocNwPwFWi#Hn&b=E1eX= zGygYN^cA@=GVVl*tK(3&nzT%x4?*yt6_fO#7pqVKnk9#*1KJFFUWM!JdR{Te3@Zp% z;M}0Wm6K-mC)6WKX=U@5K;O(La_~QUp<0QenC`(3l*bb<;1j_J zjA-o}8Vc5|8v72h3+N~3WpR=okfm8CRU=TSGiYOwSK#_HkP0Z5^q5lSFZH?0KRqMM z>YNoxQJ#+Ea_o~=h&Yux9_h-Xa}-!R)Y?4)xH?i{eGLkD=jm90-wo*0i^9V2`9r=#SjFdGPSzr7u~xB(XFP zIwXBEOv7jd)w({*85kO}@$&}(uZ+?Ny6ss%sIn1s?!` zKfl7KWO)o-p`Ta37`Ja1#i%G~ef+9NCPUIj;ATbL>umc?*q%J3pC=GB8Tf;e!;CYY zp!NQUg?XzpJNLlPik$o|-8UOWQ)~c}G7pa-@p8s*B3b%^#yo$k$ z_*uwgjGi$FnF5*y&D9O~8|*h+<@Xw0{m{pa3H+JeTO)%D^Ld&UdR>XZ&=XPERZ(8N zI0xG}GqN5_UaQu?S1U{&Fs)Oo14N&sv=>dJ$v$-9GGZO;HKP7t$AZA@otiQGZESfYgSZs*lD`j?OO7_V!|?D-*_L_ILx=6+UoX*OtQr!0uqpQSNdXXd54Mrp9N6 zhZEbJt1FV^SCeicpbWudWj|InGc!*3Q91LHD$TWqUpEA1HSeCmpStL*-pgarn_8AX zIBDlfGB*}FUXb$ETCt|8t#{P?)7Z8zTvMfno7&1RGF5h+Qwn9vSkg%2k2ulDYC=Rr zL@Xgv;9TXe8hOk7pga|_&G7rcTY#FKPP@g>tRt%2qE9;|$*~ao7jVFKHeS%YIfMPvWii&-T6K(X;Q^#{ z9-1)TK;!>%J`vozLNa zn|zVgS%Z?pZE-W4m=)Xe6-@gVZ0w%=dTlhBothydR5G-`@6i2a1BJ{dCT_!gI4o;s zMD1L;v~1@*_6B$afuo_WR?_^B)bmQ4yJd6h**ngT!vMQb^29sj)DuHPcP(0;a<{8M zFR(O5F8v6-1E0fJs~HJJ>sny?yCVf)K|=8Ckg40L;OLg$$W&0kXw^796irp-0fd&* z!nLp#m9eB(d8@0sLn{jIg7dCwflT7-MjV`dTDL7NkD*n;6MvT-HU~kN<@7fFO5T%+ zPsjdT_b=aHsfM2S4wJ&eo>t`+j$_$SfvGe0p>^%D9V5PkxIwCgLTdS+&(Lm%phK#^ zBER3f|6pv*MQiCkC$4|q#k!%wtFwJUrXp^@<{N~Y?EiY1JNy+$5wHO$cMJajF5n80 zml`9UN^UE*NNXWLA}Cpj?x(pum#!mjC-fg=3-}jAx~3vb4Al|ED(YDGS6&iji(EZ`k{8dPZsAPY8}i+ma6?RqpHYzw1U zv2UY2DQlU`?_Z;elQBMhJeSM-(T~^^J8i09A&|8F3n%B^LIu%TUS37AV)br&kThRb zp6=Nx?ES9w2I{0BKG#4&U&&-$%R_zJxzR@0MBf+W3I=X3)Dlgm28sCB9g7OCtuz?HzikIJR zIU1)GmXb#=Edyg^Q`vamk~AblY1sWFNM9N^${(+hoyAWsf!q-J6E(#K-Ad7TSC@7@ zoQP3<0<0LwQj+lU1uEniJB&S1G!3_~$Qey5>78?4vbZYT6|yv#^(d=*?(3r#AhUEC zzpwSTnriSc@2VRWi4;yDNRC-QI1+` z&0`qx!!}P$(lA@D`Q6v|q}!eBChdz?xUT@|?ym6UA_H5>XwX3{?aUqBKNQbxqBS=B zf51+TLjMK(*1H~u%Cht@hu zDc$ciA_kmjE}K6=FHIC>lg;B>KCVh{y)|Tsno4=+y9)NQ1I89ZwaVVpHp;$!{Dm4B%36=2(dS)op zpm{^#1?Gy4K1ekn0^${G8h$1i+FYO41LMSkBX# zKw$kc;#6;*O~ms3jt04za9i+E1!-Peow)xinxmSI+53ZaB{tG!Yaa5H*^nv?%lpP=*>l?_Gi-1E!lb&;sLy5Ietc>nORq8K$XQ9_P?(bVq%N35v>_;At0Ln53u^d{sLmHsaC1a#qQ-x zbQsJ;m1gb)sLnuB4;j=Ob|oshoI*%h2${dOdW-Q#`?+um9D^b4=rwG~{WkNvMB{AA zK)ep?_I-+C`!&(|}s`HrUK(pjmBGLruU!Ab>e~T0~PDaA%&K4 zu!a`4C&1quNErHUJioMQX}&d_Z0S}{Z~6T9P?*^)2j}L}bjYpsI38NxW)!M$mwMZukz=9~)RV=!f z9cOqqx%)mmAQ(4iMt<`t&OtQ?{tTPz1=6}4q>4SmP%*{`+f~S$lk4}}yR@HkaAgJ3 z*G(y}0D zqxCg+Wu$5C5H12R6aoQ6^rttdCKpxd^6pY7@b&|@3>BIc`gk~ZY~E5Hn>-!Pe>_h-@bjj1#)+j zpw0WspZ8vKl*J`;6ZHK`?Z19c*?!M*EKoU@`~iRV&W%NA9PIw^b-pYNfVLY5n=A^t z@&a?tc+_X+DM$sM;@8p5njd`U=c*ER@epW#1A>-al>`z29Q_@S$_~TXn!I86y%`o( z_@YkS+)mNVM-O>C8`BFaN$Vjdpv+v;cC{tZc5}oUciDQaip`z*hUW6BmBqef*vtHt zdFmg64oh*dk69VSL(bB&2&g9F6ZyY}V+$(sT&!1G{M3;@mpaxaYix1$(Px5^lIb;X z{GxDD^;0_KYft2{5cOU=7G%6Bxsxx#OLgRoP%83_?4v@`JjvaN?C{x2XXOKFcE}BW ztHtLHi7;^_bo*2k7J*!8eZhZnN8d@yHN`Uvvw{=6jB{Ep1u7d2R5mDSP}u;N%7M_s z1U~eJ^U8J}qYyNbzzMUS7f1l4B%tE-he53Zu@(v>;8qc^c>NDvrawRx2mdJ|3Pq*# zKO9Q_=OvF4vp)Uf1^D~&91uR5IeJepep=9s@pQ=w;(Za&y3)w|4bs1<_oSg7< zb#zibjGdmGd4PWj2pr5}M|2Q=7sBy90tco#PB>{|4`0_1b{fx4)v7q9H2pi!mWuip0`^RR@O<8T<|XGX~i7Xxh*-{`ykJP>RsQ!wT@I++cjL@{H1OhKq$`ZfvfRFJtISWtIdA0Q5#pl#?0J3ug_Td{ag5GpA{q?rKev#m0GGW)xGm%LAVwu zO9~Mjm-jNc$I&0XJkD%6N@m7Ww~A^X9@X$0I)ldg^I%R0y_>swD3uUw-g__0&x}tf zg7R)KlV3*t}uDh6}L` zdJP|tMl&YKj6?*2o9Jlyc(403zF_><3u|A0#nzAf<%?#CxHlBRNiYA1G~t!J7%lfe<&{Bcq;BaSC6wJo-iPmfblygaKKsdtfdIYwIF@!OXRoy%L zN+Xlwy)iw{gme=H`t;;vuDg#Tq}hIIdwusoqYK7 zHQxne8Q`eDA!thzo0atYZn6#*YA(J06#=lxq|0W`OfoHT%qYqvBP*)mr+Pt$DW^Wb zQD{l1XzA!67w8tMppF<%|0BHq-+@1KEHLl=8~hFV^Xp8bnZiJUIap9Z3=FoYtMPPj zsaV>)LAzgV`r4K348mjq*W92X#}Y*ionasL=gPpx*e_ z`xbVM!xoNB3ICab0KhFCsy%aNZ5{eIy9CaZ8p5ZZ%|NQQd|0ZqP4fOT*IE~KsLH*i5ioiH85NUcctJx_)|{KW zluX;9l=1tEX(`z{Cvp#M|H7nWK6}Y)%Nir{93Of*pLr+j+YPY7+>z}2FTMP`i#TFe zE>NMnovxF)L^7WK9$7y9AZ=UTuGiQsJND@!;*3Pwe7mH~69#7-h6nFdt^G^r`r=>2 zREbCaV41N}0L+@BRY|R@N4vw4Dw?=IR@-J^YNS-{)n262ds!aI^c@Z@soOV*Pt$w9 z0V>levx5Q&(S!2=Mb#Ys?fy_9CGr37H($phJp#Lmt_vC_B~tLG^^vQ2K6_19ta5Vh ztT;~tX)46So5_Pebp6hh-UfDYCmBu5eJszmURvaDu2KE5Bfwp*G&YAUuTtJVaE*R| z>tVm*^w8o641#g9ML|L4HgoXv z*)y=PHvjq+v20>@7bR&lcdI+>RIy~Q`reR0zBzg0CVQ`DEaJq?y0bdgMP>72sLeHK z(s4PxC8IjJ8yq&@_0mj~6?g>eiLuCevnOxRsz%?Y&Z0y~ zGha9}chKnz4ZB3uWG{RO=rZQ>s)VNO*7;D$4BzS!4<@Mji*Go&if)mS!Q{d_c;>StfX4|v<*?8GdDI(5mv@pXoGQ-RmLX)|#iJ>SI5@_ff*VvS- zI^*@UBMY)0L@Fz*B?Z{Vq0bZmd6?J9IT#A%+m`QS@iRs9+^mD4?#0e#W_c4|fmQ)^ zHk)+%zXKUBw|*P^%VdBrf$Wni)pK&SfBNRoz!tPB2tK!=8L_?615WBN8pjfnc=qWVXrD#!?s@(p5H!4sj+fZCxaL%~zYN^yp1XbDw=Q z%G_b)u>DPQWcgZmF@Y9yp^4_FPvW`2=RCI?`<}c$heeiKax83Cd$0`H2 z8!x~1n9#5fz7P9m#{)qu7GjnX9D_n4Fb!${t$;Kr9j6upiKAC&!lHMov44n z0(cUJ{q|F!{Yg8FOdLBx##89Q?Q!lDzf|l--*}4R@Y=Cst12Oc*@}(u$`$QOEUpP?|J1&W0OkKj|L5BMDQsAE z++fN{%x7`$kM7k}%rKg-rKCqKYj)8})1aJQJXcN$vB=2>bUynSL**d?;xZ6McCNht ztQ`J$@E`Jtuu#Q~pd@|nxz=aJ6~_yx9jpEbzPx(Uu z&|^E*8DEZJnC(q2rfm97oF@7;xz8y2#B0hPa6hoo-Czt9*l$P&4*`qw2z1}5H;K$I zEG)$Asy#66)N6T(^EpIRkqyj`0xXq}p3A`e zFrJv3-rdt4MsX|5^9FjD;KcZgB})+o=MFQX3Jb=tf>4YHTx*p2)41GcD{pYl4r92Q zXH;x%J$gB)YIBBiT5DFkDBh4@suoXEf?lLT$C*0xtcet6B;q@0o$)?2z6G}Rxt%u6 z6pKmXitr|lN0}Qg zvqwsy3$CdH_H$-+;PDibk-6h|r^|-eR9$Oq{?)I6^xC~1!{8_hitvSEh1}=&Ji*W2 z3R{iHIc}!(u~+Km;ID7&go}}p*?#xdvVN^+YSi>eky()dt1(Z)H?=z!VL+#)dIw}^UA!_Ber!V!h+`ln9 z=UAAQMkj2BVx#h-0xf(qeu7M_N@Wv7S4XKPQut+_$R7jm!?O*4SV#0^*N`N*OCKh@ z8ClL``YHfq6Zl5#4YV!opaxmN5e;pDAiJ98=qlhtH}V=U<+`Jy#Q-9J9j?9K`bL%z zfLSfZJ0AEg{R29dT8E_bxz25~Y`n1nne;DF<_JcjjD5${MErFOv`aI}`s__FS@#zS zahvG^O&M83$pys{f7kZ=f5Hy~Bg+uqI3 zG{Eklf(C+#2cl~c7$Dlefdb$kxdl`U~KtUW@x&CUlaOh8CSkjJmW=l&;@)0jZ@bWGUO%%oL zmSwgWYYljY97o>DH#wM{77B!Qe0-1KKbXzc->!dKuQCfWu1)hle{PG-F4eyk_!vqv z+3i$Y3XkV>yahi~R3*1uD3>h+r4d&nPR?WrUZT_O=Fbd z9yWarKukIKtD zGKF+GtD_vA7jzgcx4G3-u*l^>xHON8%&i|=A?PSiF#sCWa6qj|RA8>x;on#!5UGNuA+P&;+6k>loFS zFE2Nr)7kK@zRhiA#%Y5~_|G322sC)x5}e7d@aFR9l-9RaoOMj;0Na!gp83@vC{dT0wXp~ zg8T8nnewo+uONEd#NP=o9sCk3#EH6Zqr3>tDiIu>tk|BYaMeFtFvqMIYX@Kk{um^; zZh4`AJoTA!JMcs$bDS<_v4FNKHW8TI^;2(yTsXaYt#P{8&u3DN7 zo5$EPE?9657T$t^&jjVFk!4Vb5YNMfe}n)3$wnbJ&zAKh^hGfC;y5f(^R#)=5>OL0 z`K&X8KLLz)Zs#3-RG+)h)0sXnPK_moSKE-x0m6tPh@GgI2Mbabp#fVm%5(@-7-do_ z1qZ*vw|J2f-ebWbn3fOOmglIgtUV45UD}8eC}(6!j5t#F|_LmMMAnk zMLT$xjAvSsmL7R*z+lF#jhf*l1eH7y?8btASIa0RmPu|2UhSXX z^0F;tGQ07lTRX!*JQ!@$EM@UopMaQ$#S<{dFk}XkU(o81^$es_Fh+$|pHU(nmAmCn zb=6sj8i*$iki7;A!tN2U|6i@=Xb|@dN&|-eJgX+CP~3V91A!nh60=|1Jvt$wj9#lz z%PC~O5Qgr4@k9Jac=m?tH+mc!J(uL3J8OnwcEs zrGK4rv&0e+wyD`jYxp+@n4mdi13aln{v7_E z*OON;9k*gKR8jp5pXKcd3{TOeieJ6Ie%<(+bFP@j7@)szcxP5Ocv{2Vm2&_MY?K*m zJ}eG+)YRMzQ#x0o+amY2u6haX4|TaIg};dq5~h#u#k*-YRq$pmoO*9Jtm|aCTOO<_ zWD6Ao7m$FYqv)^Ls> z$u?wE82VLWXZfaZuKt(IRu2a-S2R70;Eug(wuAIlZ)lS>_gG5g ztql)qM8BmJ^37cncXB3(`S=6V@m8?Vu>)B5P~3q7`db;X{k>n@r#o*<+v*N7wD{*; zKI=4m2T!Un%~Th2ZAM?b4Qj@RcFJq$p}zI%NcAAG$1-)8hA}{Jp|FYA#Jn!O4pe&z zfyPNivlm`i-EOk-R@HP#ho~1Oa8V{hH;85m7^wvhk{QbR2NC)~HDK}o(;rGaemv(k zyH1!pE7@Mt6 zV$uk7kKR+sUxSe~1djJuHEkBmBTo|#@3A{MaR70P2!H)3pQR55KH!ge%14hHW}Mj( zlSoqvm1_Fg-L3f(U3r1~K1|QSm{zjE*T^62m9~$_u|S0YcK~LWRqKM{&pepSs*9V$ z4lRlpR^SCc@_1^1&kfwG<0Ke8{JC@8M$qhm(sCj4(J&uC9Xpt!MJ?-C%~rHv zppTGQ;#CVeOHFJ_zC$2)u^>+9E&$XNAd|>F)-Q%>Lfz~+tOV?%2hL*HL$E?ujLgZy zEC5FV3~~FMZ@y@$p52Xvj{?35h9%E-HqV_C92J%qIhozgG4rwFl^e?Z8@<(Dy3`iOuFoVIuPEr;Acee$FiM@)#21OQn?Y6NzOMi{!J;oKg9?+;36n7M}aLv3rRSu1dg z^|Ky*jQjKGA(-p0#3AY^Z8{kh9ZSdwrbh)qQ!ItG6nw(tdwv zf0GyRvNz<~3Wd&F{Rb+k`NtnHeixhAt3Ukedoqh|pjT%~McPtTN=AB_s6ejXCVwvSUHT5++hsBtzf1Mh{lr7RNX7kG#*RH~zG=08*5x9AAef1b zHKaHx+)pq}>|P@wN*b%b0j}?3ZP19F0$(MW z@G}&n>AycceP%+L-h1HB97MsVW<#OydP7L|s(U`K;ug-%_FHoPn5VylU|G;5$V5oS zFW?9fA_Z-X7rf3425cRGA$o4Zk`mCi)L{VtNY9~|U{k&dE@wYgDQiF=>^`vi1LQHK zcD*>zp;Mp2N)ph$%JhhOVW%23E}#zz$SH)yF|$C9zyA5-M}%B@8#m2m=BGcP$AJ}X z|M9cGAF)KWe8-XC@I*`~Yx1a<;k!PJ6Sv5F8-5hO2iQ0M^z`Hs!}w(GD&@CNCb`^* z3ca0^lMkDI7u^dsZ@EYLvD$C{DMe0SAOX;9i~G6Q+Hz&?CGP>>*y7FhVF6`}*ZlGF zyt4M?mE@@r(FO(v>u^eR)?!NC8NLbY{SX?5^mGOW((K*^Mvv58jq8yg{e6^FbHnKn z4rF{mPLk>RSY9%bnhb>@%G-Rb3sqTT77riyl%}Ls^1=cODA$F9T zoS1+v>h3k`q9lKq2JBsk;A>j2q3;){bl!WgyHcglqasdds9zj-0|y3%L6Xr?z z5XQLKTq)>0x9=;Tnm&z{;?2+fh)P!)2oslFzkVIuV{k|< zi;4y(Y!8{VyiFPy<;r|l+u)kR!(CiVBD#&HO{NhsH*F_ML~d*4KVEq`mnK1`yv(p7QQyleQh{MdfY?NUO*0oRm&#Q}}?Rpr{oAyIdvY)bLG)4C}6 z{;8~k{s9rc*dJN$w$YM-C1}RUzjuR9^eEl6 zjX9=y1Om<+S&1yy5d^Hu!Ji6w`! z`nr`dEr!ZU@BUMF-ASu4emv2Q{ZH(oYAwk@b`3bfsjw9hmX)0cAYc#b6&PaR{~N4! zs9=Q+VzA&WB^OqBKuC)@pDz_V&l9&GPy7a!!sTzCSOK4P5A0o>g$#ho6Oc_pcUe)3 z)Xwt+59EoG7UKk7Caj^`h~V4x3a0MhyoR>o-!J`V7OA8pSj6G!(dYD}ZoIacSlZM)_3xX=jJdz?WNY{2kwp*`qBY#Bv6r=GO$OcMC_lL}}ug z)hsg02mGS74psUba4>nCoO6-(jF!ydEt7j=tF1@)$2;7_1Q(Q+{#-_ki3F#N zWyvuV;=h;C4tI<9l~aDiWA+j@>F*s8E(zVl!GwYZJ9WU~R}K~pi3TShGN2SZ8+BoN zy>D8MRFuBd!^j4$d)^p#7m{t!j$i9tW$nz5agvak);HU@3Jkk$f_$EYU1__NV_F5e z0dJEID=c7cF%QrFEEE|^``gHazAf{U#brsY81r)>lZ`!gxHWa>H&Z@XF&*Q&LJABGzj5Kra1p z9sYQFr+}6}BC=hz)w@D^czbK^VFRl++;ED(fLmuIv(t-Aj3Hrkh3lP9bllC{zhdK~ zeYx5Aw;X*sza{#UcJ@h8dOiXXA|KP0B5B_RzMx6 z^1cB9M9$v0yY`N!J=;LOw)T>`%<4xnI{TeNEy&)w4*S=D2TsosUkI#ir?F(J@F@;H zjVqUCb~e+%x7-rP83^YAh5=>+4Rko82xK{x@d({QbtQ)fK=>-78WeQF_tA%b@abJ?A4hpFn^qw7g5F_h9@3Z>6jxVQ`pRs0eS4Gd`Wb3wA{JJzex_onWFwO+9L>pWU6 zLbQ}Yw6Oe*7BW<{z}gO2sD-MkzrmxD3QN3T(bsvP!gfDuGYC{z@rA0YoTxyB9b>TE z>pYs?LZGTcprYoNprFIPFQMOhr80i-wA&&mp4NX6$ZBEiSNTuBEcw}y?d~O>@&PL` z^qjuxq0%J>Eed`zi!tqP31L%fVMXv!ZSg0uJiIKG8fC&?rev_{K$Ji4e4~7CJBPTh z=71)u`~;V9C(7GfCW`%w{9e}r)U>ghxi)SkY?{ks#(!87nAO?wCBy35MHMiJ+K5Fj z{4J<7v-npMU<}~r{O6LAj0mODr1Q-kz=ily*ftb&A+Ekp?V%H_Egrji*ex<+)$sCxuA7!4-s*gJ3V4o(w|}dcmXS|q zen1sox6O418@~NJTK+D94>ufLLR3N$0w`tq+D(QX8X~H6spe9eudZ(yVO2$;Jvy4t z7p6;oyCbfb=3g;f?oKyc`-T8cVU=SP!v4WR{VB^D6YVHJ%6WYex7F{8&(X!VC&Ubo z5`83ImdYf0VA3`AF2Ib#3!mnTifc!Nu2-d;4#<{Qro;w(QU>(?!egrFcLB`PH%BCUi-7__u>cXu}k z1|c9I4Izb=%b=F`Kg#KAo&DPZC8tTBTl%nsdS}I;{6$}EKbZJ(cmd@w18>3J zset)7@D{dM*k?wAKZ+}(Z-NTsDj$}^kLDfzhs}j3f4~N(qE$4s7Wv?!1h!`cCNM()Zoub( z1VS*;=MYFRF@yvX1_Y8S%q5Kd&3H^m#v_Cn20slX&;nOumuupdRV?)Ms^grfgpGP0*@9VWYyozsUR~J?J8)baH`o zCEi0155?_0N`}Q~00D2_vLvOX93P^uN`&DPpjQN}XJr@A)D5M5q7vOqiuRK)hIdm# zv4*5W64Dle%L&Oe^VaMw*cX-n;`7k!p)q_PMoo)DrETh`OP7QpbZ%DO{(Gc|d*>P48@&h*Zrb9r# z`zlSS-;$kdWhxcX8q0^24)PDR;!B!@1hOvnK@=z)T@ZUV_V$|r01%h$Rq8ZZ_R*i% z&TFFZ@@Nbux?T8#g(@!HFKKLJbE7Boi)zUI`}d=xqwD_(&8PUU$V2i^V71AA@^@>C zW{oQ`2&tNmkKG$;J@_fdEceo*Ce~Yy*1_6A!s{%lD4=89ov`sO6dEfjb<-I=Do9A; zx}V*tE_BDHq}>dxo+Eis3i{z&g;jXb<_G44cg$5C&)^s-fo;spS=X(b?XLhqh)yx zMMy8VTo#64%2l(<>bkS{=AH~u>f`tBpzZEaer;!&sQ<`kB>(GE9fCyMlKidV(~Oh! zOx9xVlQn>wT3A}psMyu$R=2cZGt@oFQc)WuaoE?%xD~fgmOFoPabJx}9Qw5B{{fBfh{c7wMvtL8@|r^qlif_Eg12F z1ttODQROWVSVMKY3K1v@cod9%kr4!B^iOaEhVYL6PWpj2=dE56F`o?O1{K4?Z&3dJ z`#t?#fvuGX`jsTllCJ=yzHG@d%U5=dD5rR9s?7<@D9nLe((UK|-X_;+&8hF`puk5l zfv>|fLt@FsjX!?0`W(@-#f-TeNQgP@u|gE2W|w&@UP6Ul(W!BSD>ms!Z0AzKz#~#w zH*!cpA&`QIH0Ls^Tmn1IO5>WFZ92LWpV3`qshEJlH1NBS`;1FTd?$bg>>VZOUI?84 z9vyZp9#)sDNf8%|jnR2ls{$2vwh*9+{Eq!x$?f z6dho;l}_Z>*w*cywbg;0k1y1a=ds2Y0`sU@`^nSo5~u*{xR2<)3PrRMISTUXyiSA< zJMXZmKW8SXF050qDj+5aq^xqh3D076lvIB-g5&})OwF|clA1CHMJfqZq4WQsJ@I#$ zQb;04{ln>cV<%FygPMrvwY+Ik&odJf*}HkB0)H)Pe4qR}j8GTGe%lE7*q1&a;0Ts% z0^}d?h@y#5t?%tM`mV2wTwrk6iDye7+mPYxRy$U5-ma-pgt2={ZT8AQX5Q9+v4-+C z-BUg*cH?+2Q`58Mfh7riTDNO&p`j*Xl+AIGCYwLUK@Od^E>;NV=1mVWidy+?>I9?~ ztqNI_H}gZE^y+m&L)rF0xsZeR>^Fs>3(lq9K1@|+f!Yu+H$t<1*7iuX8x>|lHgK;x zzgrn8JG*65F5778TIV{4>0*)9kE&bvcpS}vE3rxbqzc$6XD0SQvsR&I4|vXrm2K`i0_{VEy)KnMs^xohEHf&b_ns#tFEVp@!*qf0xF-uwAq| z_2=POjoUS-G&qU#Cye>Sb7y~yj1Tgla)nLIlzwM~vVkZB!04OS--=@t{`)pZyBHmv z317#??vBA>4fXTt<9FMQZ-ARoCfDH8(4MaLBpFOY&xG+)GPM~xOu5FtjS0zw6TkWD zFF{fF^&U45&jJ2pF`;C&U(?ghJ*wf!^!WqBtpno+z)aZ8wng~tIO!iTqzLOhdg!`M z|8kx|x~wM5RpdJMXd=G{IY25|1?>BO>xbyLN3ZQ&9rz33N=-@%cbAPmv@uPd-+n2 z_@;CYxXPoW9;F055}*l7wR>QTBPghvZnlk*c`7WN-r@6p2OBk8tFpNDb))52-I>_H z5xB3Rh1cdRop6TV(s(33qD3UMe{x#=brUSN0Qx~;*3y$A(oWG02@)@)CB<|i4{6>x zMJJrx24*Iu*bWP5EMnqlg`$m%LP_Vy54lr>_MX$u>0@_8F#W%RKUVyoUWGQm1Cc;T z^e<0YZgVeLKq^oAk(JFX(U*Noqnr4b2)rTp+9JB#D;LqAkEdxllG)p;&H;H2{sET= z{VPkwmf-eyNk1aLmo&5oF2HJP{a-@WM+fyVF9uIFlb(5d95K%_6*1B#1ncNL;pfUa z7!jf&7?@AC6?-DTk^UPn#x?Jnrbc&!u^AvoBN%u?+wh{zN2U~S(f#wLMzdauL$aj@ z^()*Qu2dz(r;xoaY41=c#4Eagx*e)q*DyZeMYeclRCVKJiYpsKM~^U#r@j5Qj`70p z^j$o~+GiEteMXBn4txSd9zDV|AeE;jv}?w!el15q2}svg%i`NZ4g;p@-T*%^bW;8& zxGa$1dUkFZeI8tD5M1N{K>rD@Q6#v)z5;Bb&w~qENuh5bnxH&Hl4Kbq$p-*H|B34| zB(ACdE3TO!uCD+9mBvDiH{CNLF$0O$zuzXmFT4KafeLhiX??QnxImh{@?!(n zX?*q30xm*c2&TQ$^@39dmnE&*J*v>?#vyRW%~LaiWr%m6fPr5XUT0UwzBrJ09kgF- z(p{ct&(EjExsuQn;>C-b<6zs@4h%u}$NRIMBjhv~%kuYITc8+?9^i37^)CPEshY!e z4Y!I-Kx=>KZI3ZH!M}wTM*n$-U%*) z{*oVzbA&7PdU4;-Jo*V;{zZG58@PJr<`M%NP=vrymUJ;pspVfzS4wgfg6bx2cXcVO zyE{!hLr+=tP{L6y$yM&U#W9bCy!grOusdRZq$F=TS6$@GIh+$Ggdi@KmJaEX_kuu9 zeS;LKhX_J|O0=Lfu+X08O=abafQAyeiwU)KC!AMPq)z9`R%)eL%$Z1LkM4l89DgDn z9wmR%&hn6g)T%G$QYI$*@X zxalIen7$}6W-Mhk5iVek#S$FsU^KD`aX5wt^MhV7>-t21m$OAN7s`jcbU1x`C=$J zz3xzQ+KNiHr>=i(usGNJ^(s&0B&^|te82$PzJOe=dl^0A~6bSlJK8M=7(-D zjOsrBC+-h{g@u84CL{%eP0atnH?y;|8@vj5Y6^8K(z*HfMUx#hb2E&z8pd`4XYmbt zL$V*1lsVlx;CmC5zG1j>-96@ReB9i8_f$?nFcl!D*RR_Hjyz(-w0U>%Av3?xVm!Nc zREwwUY(g#&^5)N4%A;serdwf>O1x|TaOQQ&r}z2Q4{*1J`$u+xitM~oSQ@1&tZ@g| zX|4Xi=nQwyX|2Hcooa+Q)9=z>klfw;>xg;t;qXDZ+B&GN3g-u=z6*;8<#_qY6CMNG zS=NOTkuky%STvj~k%Vy<>r}%t*(Z0f^(wtySN5;hjcduJba0%&vVoDLJ)MUSG8haz zKp22PlGo6%f2ft@b+GN*G4{FpV#AJU`20C=U?9(W6 z*h7Zh_|ztAh`1I}$)`vmpPN>2rL8>yrv=(wN?k-urTKHgGv zbzC^5Z~@iZm1Jjt+lzyx3H?b?ludLvsjlDvfQXMj7K@&Mi>Hz^hKR@=N>utRQTrUV z^Wd!XIr2-c;C!-R&jZbp4Jf;&Axg9F;0_)3*3&vui-b_*sS3j_SF{=-QDzmdF5q!! z-_sEl-r8idJg5R_>M2jn7w_c%GvLx@V*7#QBCMwfIJ^nfWzR;5co?lT)n|c`iY=I` zp<5G)$Xe?`Lo@KZsIlU44^$1fSIH7E+*swKEow8F=t)E}-0dKe$_2Vp~v) zmP-QxjPicu&%v>XVVZ2CiK_^Y)9+FPb{lZ9L&?Fb`dyojV*PANCqtAIxbAYI?i4_L zfK&pu9Mif)?ip;1Ynq9jlw6~v?4m~a*}(?HkP(t-9>THWK+I_)-j0xi5$V-~Hz28I z4Fp?dC?gSZ6*;6`p6F(9XoNHj+AW$O_yS<*4qb7GYEWl|euFPSpT&?3s342iklytm zy+g00I2xFwGLUzr@}=A2fqe}?;{W!S#A8TDk?O1rLdYysr6ZM6K}UYoitYrmQN=Nu^Ln(J&aaQH0Yk*i_hI z;#w{@HduJ<&#zHVd#&uVoeJIfrp7lrM3daRvq$Lzod6M$iS%8_Gj4nQ-x3~?%I^_h z&KqL%S^H0YhIfhLho@oqt%f^N5RWtl|8`bl;NZKT?AS0ec_>=fL7R?> z3@3k}r%;*EjKd8~d|awe50{ay-gBOE`URckG0okdYQLJA1P2Z;zilj9H7u@NA@_&L zx1P*RwE*x~1fB-kdV#wUtxar?j-CVhuUxbhvixXvuV5%=$+=GJ)EN$ehezzkz-&L- z2DQ%EaD#XOI8l$xqzDN(KAuM=!K+*~d>PN#E|L%DEzt^HHYvGv(ILC+T~LDDq`Z;cUk02K<@oyi3gRP!RcngaDXc@&LNJcER z`ch}c%!>QMt)=~fYSpK%@oyOA0y01E1 zaM2QvwHQAD30&ipwR!CE{r@fUAn2ksKsGG9^J^)vhjq`ti2t0QdKMJE3|AbK*l^u} z8ANt4^jDx)O&wExud1e?`^%yNy?}$m6^jui6E=ga-o@x?Nvf#!v~0YzIQ+EVPr}N1 zu6a(bl5giO#kIFu!`2CGqcG*RbZW62yj(2lQN6+eOd6mHE}(pT{B(Db|4hmD5_BKe z^ztr3_S4=%<2l<+tt7#C5U$0yg*FU*BZuIM3?mTL;1wY3>u;vX(}fK*94|`73Kjq z^k70*B}3oj|AQ|wd;{yDw1nlbh0~gPeZr$U zpm3CaY0+Ippli+p9*Z#AR~S#MhmzMHPu63hM1dWTSg*>y(}Dj76-KQauLE2~RvBWd z1C<%Qk>~@ugO$taa>J*a_wN^wrUx_d_TBXj=RXJYiH*h&NLHP6rr6;K_AbuFguKXh zOPw==j7dD7$=MYnYofS(6B;IpC&0eGNaNk;`i~YMbgOtAqz6}fI9yTWD*^n?AmDEi z0|lbrMH$#p^zWhFsj23Sx zIdp&F#DWXWeb}jbgQeOU`m?kE1E9r2E7*q8#6r>~p_LBHSJ&1hb`Rge0%4M4 zlIcTn6%=}bx5TlN4pqORKYoPe&dej-0HlkHTMUZj@B6jPl4=JeXD&H|CH29ZfZ|IGUmTuBJf(~J^4PVzkB-6j_%4!nbDeDl$uE4MkaK5^!} zIs@JCuAtwIr6F3-OM+Gkk^1)NgclY>c3Ef{WrfXMIOWo7$80=gDxXa zIPW1m)wMAHOxp7$XJr8@x!k}DL6s>8ZfZGTbga;!+YAb2BorBdSY2fe%+n>g2LncY zkR}n!G}E^#=ETLyHo&$5jpWw`W~q-lbaSGc!MDi_4>Bc~trd>wkf_0|(2c(#o@~pC zY)|{iU|0xNP9wl45r9owu48nwB3mFa>`nrCq@U=Oa1$I?kAi6gOFA!6dy*$;xSjl- zQbN=l@c00G4%w7+&i@i|3aFhY$YKkZ`dxZE+-Zn^ZMm3)SChzsHD;`6bnVwsg|Q^| z?TvlY24jX0+Qs;R+_(}2s?TTB{U3I2+@}m>N7#r(bcBk>11es(5M^y#gQ~TUx12->gj0Cg-olg(u5uHku{HSQK?2!Li*@?gu{&nY?u|un}uJ_QK(7joX3~ID7$!D%t)sOCWq#FP9xYy$KZ6S;1``feT|tnC?-ls z<0I1@%Ap9Y8JPw7oN!Ys1tW?hwb{8_1hKp%>-u2qAZqqzOQua$nC`fOeWZw-`7Inw2$dE5=y zxu-b4H}?j`w({6xxDAcG{Gn7t$lBoG+M;jr*r9$}Wgau#Zq%N2#~Z+U_F&+o=2C=D z33XAzJ4pzi5*!JWV5YY`8n`czIU_pKg6WSD@3B4Pb0jKF`4yyEq8W&5JT$)=zkW4H zrJA}X=0k`lOVgB3#K5mkDDi`3sdR9Ldp7Y+$~4qoj-zR z{!G||w6??ibi^|L-Wt3X{Rnnfx-;}zpft>E$jgVcf>sCImCkt`T~AL4)T8V4T1tORlC)bn!8m#gx(HdjU2NxmVo3H zpI|w<+Lr@yOK_7y(F)0|ja;qt?kp>ZR+Tk3Y&yJGl~i0)-_kE^2sj>-(RmDw@Sl}U z>AVk0Y!NP0)`o;h;bxzpaMP@c&1oAb4%UK`@tTk!664(+6)xUSR~w}%JQYf`(lAoh zcD7d<5fNZl!bGd3(*5ixK-gpY@*4(Sl|Nk{|PV z8We|o_65Qgp>rz#X3v{YTq1-n&_Q!w8Ih!Ge?DCMP81lS|C<-8wr1inAi0P4Ki|SV zBZTpxeD{q_q4e$V>ZtwehP{`LcZVq(#x~4VJW7(|vJ7T}-s0-4{A8;LA!UyBWXAt) z^{&~Phwvpe*{h-Dyv+Q^HDvaO!gxtcw+WLrfJv}rx7RDB9;jhnm#Eg?7`zG|6~&DDv~D^!->GbuaFd^8*)NCT8$z$hlBw4#fkDisFC6B(ub;@|#z@#FOD!#R}{-YV}X`!f$<=QL-j&@X;=( zxsh^pMR?OKKB!v{RD=~1S4Ca$N}*BEGh~GE`4mOiwUPg(&*$9_?a<8~`zx@xpxhb# zw(6sAWeR4U=NzU%5MP+&%*YJpzV>WY^@d0q4xlCP3H~a#JPVb!T#vCUH_=g0y&1g^ zhR<%^JmjZ+;k3bMzdVBpj-}EnGkpQ&U%dSG2))|PCMvLuK@SKP1G%m`GSFg%N+QeC z*bx2?lNkf;EC4GR$q8V10?c@WpQNPQXsQg^_{f~pYSHxM3(0Y-kakvIoz{19P^ z6de3}Vwr_N+h3K&!b-b}S^3r#- ztTA;xdp|zS8E(Mgy;hFKM!(}3fyf~jElM9>-#<5b(BTXK8l0d!!y3v+q&eIfs{e|L zf0=kaBiK{Ha4kgvh%n~HGb76o2r?VKga+ec25L)|O=5*{geUt>Tv z^Xn@dhv8MIN~bcrN=ypLKY-+nF5Kir6%397zj5MeRX(Z^a_0u_45So%Ap)RtnWJ*F z6TbbWX!Z8i?n^3U^v-O2AN=zUVjT|d4i{iizy%wscm4LymVP|a2BRkpa)v|H2$LRg=Bg~`FDy$+n*gQ zS(bk~va-n@UNO8qWvy%zH`eS+4!bQU_XYtZoCAjXRY%eqzqmw!x1voUd~RKza?CPw z*#@41or=YtYfX0W-qCCb2+M~^N@W(8WZlcYAKd!e;Ze*O;UqX1Ve^`$Yn$0X32Vj3 z&FxTdC>qmdogAy&BoU#1c(wwg4<8${cZWLwO@SbmzN%BVu>bhj^v;M~Om>*NF)JCk zF2lNmNqZh_DfbLHY@|sGdN5t%1^waqT;h}-6r16xHi9i0t@u@#$C|wskqXrHXfz z$dLc2H0AGBK6f+}9u#TC(|32I&%93ak_bTmvKZn4hxiU>#mRvSRbU{@w=;mNL6} z9jKWIa1)>LQqUiy%HH)wdM9UNC(n+{=0yV5Z;R8(wO8!!U$Ep?`F7m5xBGOS9N1ha zaZ!**`cER{$TJ~oP2Xr}b8=?cDF6Bh_ew)m3HneyiiCznQ5E;;CTVlyooO3oLnED~ z6?7DIr`4z10%!A`k1$Z{$8Kyl;PafhVcolz6viKA%I>uNU}X%v#l@z5Bi1j^P2?ej z3a`6ZS#TfFOhn86{>fO0-Q|iR=J&!|kp(f3D6%QATSI+b*1yaNqQD4M1kvWT+jsSP z7PT?8t^Qcc`$HOs6a}K*5X@}V#!QN(h(^^05Va6>`XlvgO+_p+a&x#G5fR2l9+YiH ze_?s&x}C#&FuRYJGHUoD9wXtNCzaOvJAYYS%4zSj`5RAA-RrQ&z=_897X-u!xHDkz zEjhFda+1n!iak}vpS*~!MfJHZf9H))16m^LdlpUD4Ir6T5+h_<0a2X-Ieb;wT`>p< zY`8D}0$Sj5-;3vYs=tHbn(lcu?8NKXjie0tS{>_0r?BnMbs)=tUrGfeb)?n*f*q?^^NU1h|2wQ>JuoW~Hi<^7v^JuSQ1rLw z`}}QaOl?3M0zG7vRnP8k^BVDXF|IwVvmB-NJ+OSGLg{?~r zkgA5Soo!eL+%p?o7z5yD12X$t$?@WI&Cq=NY&CIvtZL7uXJTC(X>$%y2-L#|xervr zdnWYjt?58OO}1~}lHm29nhT!|yZp&&$AIo7ixT0!_3R^*`l+s)pDmUfr}F2ud!2|M zswP}-UEdI1iJP9`wa5BAO3`N$V)&%BWDJSj_?mNla8U#!vd6gcZSyo z^5QO-ImDk;d+M-%7ANV?)wog4Kvj};Qj$#*#&qVEAq43g!3)Bh)IeE3=TRiGfLVpR zYPYmOWdpM9WanJ)a8j-NM1kQys==94&_1ztCt2avtrwgL%w`v~qiB`Usm)Md3FGB_ zf)H}%1#?fNJ>S-*HekKIAPa@KdbM+5>dd<@Qa9FIasMg0o_Ct`w@DllbbXt**%Hg` zd6vZx((8vb>yJ(@y z9y$H00yGQUHxwQ!ft&l-oNeVKjFGX&aF)8&XhLn^6Jv4<)^fS>LTg89j$La2 z7{AVIr}T5JDD4&PYbu%UoEdb2Pw?zSy3@;E{Hn6fc2n{dmj8$x;=ow} zG!(;L|MZg>PoW84mizva7HS3l5b-}iDTT}j1_KDnDf*lY)hGz=^cb0g^-LCvtKY)> z*F$dK2F+dH$9Zdu>LUZfA-;Zqz!BRih(Op}4Ncfv$w7bJaa3|i{&r9aESk=Jr+~AD zn1(K_pD`@81@9_I#o$K=om@!Sf1Rg_m6`swVQEHSboCSods7H|Xyp?0z}j0dz=GQa z8_)yXDt={QvD1bNOp zt!hhvS-yjes-mLMeQW|d&iK7kISUx{KpM3$cBpYr&JC(u^Muj%rFBGK#mOI%DWCe| zy0zS#Hr1ntv0Blt&VW`6IYxuV394Lzqvv zO%y1@b8=GB2X$^~z$kPoxn!s)dV{w0i_SJEEdepa#9Z@BRxTNr``hn=J&orWu7htt zm-Q!6fkko;Jsn;DnHopTm;$*%RXBny5;>p>6YM9CM-Zk1uFmc+u`H{SFu$~!dB1aL-6ti@`n6BA;sber8L55jueh!GMfNCO1y z+Z9e|B$EWzT~6tX%)q{^S+L`Bx%$pN3iqgiB~r zBHpi*Ee{ny^OuUyzaEwl&ukf-83>rMR)OuMo#ZlqYRy&r4u z5QllyPzG2LGc-%f!FOPBUOe2s5T%Cglarc!m5`2}} zA?c=qj)EV86+kz*D7Qhhg@Wke5K=NAb?{7PKu|RZC6=J=1DG1N@#Ww^HV1LV|J4f# zi_|&S#n;_$hjq69^L?a_xfJRW`ac}2J$ckL^U~Bw!wv~lF1{*-GmTSFZ$Z-9Frbrl zpC8wpoC$fElyq4nYkd6dDr<+iWnA1Ng}wDo0jD#3n6h`^Gr9-L|NkI&kT->eP*T*U zGR%X(6H2eN>0LQf4Hbl;>G)l$mKUBKJj4wNOsmq5lt7_L_h33x>JB#wH~NK6jfWn- zkYIs6LsYp6%Yr1j#lz4Y;;iu=7;%B-J`9qXHUE;N3)ih_b&U4Sih$3|{rx^JG@!G0 z1)#Y)X2}J+qmp}!2bL%Yl6ONp4b`rj-Gu=GO^+P~Bp9GZ1rs(y!;8Wx1W;o`f`uLL z@c*r?Euo|3zax7+0}7+&H*u>9VRBQ*0|)nG6Y$&&L75(Wc~1H|d9b@y?z!*%cGIZeVcL4g4gp{d7NZdxH7x8WELP5nZU$0I0RxFP@T$Y>3M_>x*P%mK0m+&H|Ar(GT{)KlPs<_S-=WKZ zk;(NREkNFD6?5RU6p*N<`8TS8JInTgBuWH{7aGN8(D7|yR3t_&1IWC8FN2>vhK1RP z#zP3E;;}?e<*>Wi10&ve^(Dh4@b6EQU#pH*g>DJx&Yx-&KQ1*tjyn$`&zPRjcI_|n1Oi}go3XG#yfn(=_~161#9n%vir*!G;- zhBkTv{&wyVggh5+(2;u8Pdp~z@CJ-zlrX=5PYblD&0ntFk&5>oT2^qVed>?`oUDR} zakK#bPpy5LNWV5jTY2?WZaJ|jxdpNRJ^^l(S!~4l0=M>br71QcC|Z$DFl^?8pC#-7J!XGy^ikpklQCKW}m?Hz3_-;aaUWcBK-g&7+)K+LeX1WWWkz^*@^nRHq5ml_)&=5lS zsLN}OZ|y%&!iEeST-2GRIXc@w-afwi1TUZIuf1JD+LLD(hi8v|6c&vjGeNE ze*3A`vs<-TYV*6XJ6dL-_&9#RlVdtDR=ouO3bWn&6kW7ziDJ{pK{N`B?xq_m%RBWF z-{qDqnR-piY;IZwv&^8E|5jgbgM)M9UM!_vA&TWMo)>@S(}2sS3$I%EDxVid+t7Ky zNW%c)#Io#&W|U876H507YtAtINR&xqMhn&#?*qrZ#C9HAu=SPzHc2b0#gigg7~&Q2 zlM{sf@B<|O#w$3^(ZCM*T$m_;a@l!O-fT>jcc_ZqaZkp3&v~#(Wi)ErRr~>r8t7`zz2pX-ecl8hqr$tPSOW zs(qap%zMEcYpR^nvMqn9V9&+y)*w)X3U)mHnZ;X>mI@#|@AuN8gtT-!i5-*tpBnjA z%HwAWhb9=6I6DT11W<$wFs8kaYa0Ogi991um=*$pO1~Tg=?$yQ<04Y|mi>w_t;$GJ zx8zwuA2%=zCDXE2$E(aB1mppuL+V}A@a(P%piu6WeAl2`ah(?fn~N3|@&V^UX{H>Q zJ}|G9Z2)>qN2f?MGj6flp85 z+;RajluBE*`ZqE93DO{Yrw-hsqv?5L9ynu42thIG@QIY9#7`JHEmy3UOEZH6MXVl1P$e<(75P71s zwT;l3&prvE;JaKtTH`pAq3|Q6|;f* z(=Ly1L84278KA4H}IredeyiVK>G8)W1CJb5?m8(H>ZH6<(Uk>^L@7l z#-OO>X8YX?F{wbk~y1kHw4J{>1Iwt4xqZ|mu!Ynk3Jd*?n zO+Wy5x2xHL1Ei!teOE5%1QB(Brk2@~iU!P=O;c1=BodW977UFWKZxq?nNo~qvXq>9 z+fzHOYkvFsb$0quB+|P=Rszv5fB?(FS~GVCvgkU1;7iD#U4cJ4r>hHhJYt#|ko2Ag z_!^dF0;gS8%Tla-8!G3_2Y>fc0`Wb#XF!sJ4!1-E+$Wsp?D)^aT4;44HFz&v6A<74 z_0=Y#RB{O+;N@Y48Aclgs6NQY042wIDjE1cUl}@C5zr8t++D@a_A1Zm8Gh&oef+;Z zEoSRzpw>V}zY;R!knwRkF8G4?zzv6^MDL0=LY|#y(j#zi+dB2E0n71j&)xeDzVhcV zNmVQ8A8I^q1UlM+X%A?IC4{btUjg`|{aFukqtG7HwpCI;xzcM>!N0<0#a~f_qJ-5i zUL3U-R7(iP0Z)qrJEnI^kKSDoplZu46Y{vP-W_1cPFJTs%oBVPa`ec|DKT&O^?k8- zcj{V1LP&EqYwLFShL?Aykv%{30Z>4KJR@YGl79d?Rc8Wjdsj!lc@zYlUh4^^5o&vP zPb6Rc==O`fHc=~bxpX&XW^37C(uaYhjzTlZ*hin(uEc+fd*PQ=%=`LVxyCn+Ajj}+ zl=Q3BtXY%Yz4TXfm4lY4mqz?=-M;lA@|Mu=vDZ(935`U%toNne z`Mux!-RL@Il#4a0-HJPCD^fq)oGFfwptD)*y$ytyajfE2UDi)*6U%&8my{kCeI1N{3>!Xb-dI1v)s@DXx+BedCCdnyp`Q=u1}Uco zW*PbSd6XQ6l^HKe_PGyR7WSB>R51M}iJMf7ES=q$eyPF~J6vDd`51Up*8nA zd!E%wdQHYAOy4K^#VYWeXv4*53H_PcW77QvXVUU-!cuMl{H)*^d|Kv_ z=zFC@mcRTSPh(>XE4wWrm(}SDY?0Z{pFfw$$OFE3CX7xj z(+rMsDo1|m=n(8KcfBFl?-Jd7ti%+^w}*FKCD*yIbL3-Q`}WzD_uE0(R)-`f*Q0(N zFv}7pWt-j&yl{Od#hi25^cP4tA@y^>t?(V};LZw}2jNwqB7nBEpe9@30TlOJNH1*w zq2jA`Nw#2T()@V?458v(ni=N=3=6x?yV(d8zZsy?0q*b#(3n%nMX31S;9zqW-OO`N zt<@kuCI>!XWohXrc3V)lw>e7({wD*GY!P(DBxwjB6qRK2Ojt;~*yP-E@foWK?fcu0{b z^RV6LE|#bvyU1ALyE`;AhZn07%9Uw1GyFeNP~%cDV_{rELBD|VDl#}H7QWH>&*aVM z^uZs(C5|wuEYT;(87BnjSceQnW)QzWm>&I4_??g6q>mhDAdrJ(J{1)Du2Knm64!ay zm#6!3$PyKnl)QqGLgU!E_?o=!+39sw$t#$6wS#}Y z7SJ}g(S;BZPvofD6g|#Eo?M|_bE4nKH@I9rXJov;c-a=>dhpN{_f3+vN!D)NOsQY9 zE&vU++OaU&ORf4vrfl0$CoqGY`lw~>@K*J~0P6VRk{zRpi}bRLLa98NR7M{w4q9Jd zpJbhGn8j2>U6=0+h|Jygs0vGnP zw+F<>Grf|2Pd|M~`dW4IPhahN#mL(B$TRmpJI~4+g;;;Q{geOljkH9(n%66(sN!JK zd6fFolXG06$9sxeA|oTkOGWEPU-v!&W18YDNu?cvQ9POQ51|`|oAH1yn5NsM65()!yiFf-R zz!~y58$R}&eQ`Y6hv}hVRD43?be(ceDYmR;+GA^P)or+MIl+_E(8x$*r_p*z5*z|k zSh%V&8_v}R^EpqG-diN{iD8v!KgfIWJRwhW!}-P=oe!?qS=p+G2iM=c zl%bd3<1AZ0x_(m0VAy8P39}<*X)WQ`!)U1^#Ggch9l3wNH3t(Da!L>T8%gg`#ln`! zYKmXJd{$OBDqm$~stmM!<0+>%$jbAJa|X~BglA^%>pb~>2Zfp$3#-(X*AjV-)6+-F znq3bJ+&~HUTyLcF0&k4ObZ^>oQCdPI>J$cS_|AC#@Esp!ok)_|%*Vhfo+xk+C|4vk zRrLhKpCy0UUl0{yRE7v6Hl4%qJq3pE6Z!x-hLI|emIa+-gHQCA;pU?bpaGZZ=dZ`7 zyFZ1sgg`rS?(Pj<=Y}0IFRqIhals^xjD&Qez>F^?WjtWv*S8{VEFUT)-N_ICbEBYM z-cSr_4ulUGR`m{ixl`G!Tgc?n*4f&rN;G6rE=}|rMYl%!=u3^1?r$Xd=RB& z8UyX{p)782miSokg{VGID>D{Xq!WHHyzk;H;e#hz>eG}cmBtBBG<`71W;@t zOkx>Okmt9_B_zs8;WjD(+R*^{4k-keR3mlC>bDjnA0HVR^rZJcodr>30M7WdaDQXm zWg72G-a5aZ&ffw@G4mX(VYp(_<^m~-V~_ApRf7jBnIJDkOWN}&24<(dwRLd6hs|L`_4Jf&WwfPM-0?hX(5ms_CMQsl*HEL1qWviy3N+H>;&;UHuKXbljSV_bh5O>wX?H>EZ2X})~)-yu$?JSVrK!T1y0^> zH=fmyLsxOR69R^QR_zf1fC_g1?>I};NVHAP62tF(C7D}cx_hxu5RD7DX|ThEwS zV+cA0&rgDvh#@a7yAJS292~O)-XTsVYkY|||I;_K6F?-EPlWE3KtI3ZAIAZPq(|wO zEXcjbrjshlifpmp*o;S^3EcU66{zBl$twuaguFDm1RdXxPormLU zCxn#lC-~1trE--B1Dii(n=WeSa9^7OI>CX`7y!Hs{qOcmn6gBnQW*pxZaFW>-n=wQ z^dNyo#jrW@e}BQRWrg|4^xR&x?!9jk;K*JvuS!+@1paLX0@-eAhw)R~yF+68f0k{1qrVtF@7X~}2aQ8VM zJ5#(#`YE+y{2Crn7_FZD_H67Of!zG@XUtIzzp6-YoZXBo&M}FFrxARW?ILChxBY@c z_t_gMJr!1LjC)DT0<|Mch4`{Z+9X@)#45RP(hx`&MlMWem%37@+qo5?q`6V830wl` zZNR$#$@X(smH{VR=+Ff)0LTEz_H0&2paMk!BVn))2Z0XJTu1<;6i35X0T>_%qvJYq z6?m(3z*k}Y&EMC8m?x`eG=#4LE+81zA=!EZw+D_kNiqB+xEB0Y-i36(!btj5I?Z3w zppsC7pP5i$4}U0EBZfwx@Bq%;+G1y#@4H!UC3YY5ImJX(Oy1z_b&cxtq03dnaAdvnqWV_OoCU6c%QBdrf>+u7x^hyc0F+hk@3AeRr35G~;)2$VwBPbTDq{;y_? ztc(8_YhNCXb^mrNDJm5aGLr|Hg-oGDMIp)TCi9%kGerm?$vlP3^PE|Pgk+w{9JhI% zo$Gt+`JMMY>#Xy~S?^l?(c|HE$M^bN``UY7`vav67p`m6N40UVY23SIs`VyM;r4He zYk~v6&VCVot^c(si`vm{>*Z#lm_+we1V3RNDR!1LPv2BgE%O3opdA&3rr!l@clxw0 z9**}fnEYP9<{l#QvSVUiglYbJ!8?cBOQ!ei_+w-j?DudaN>BKRtYxNe{6vz30HX?g zjicb|EEP4iI=BFA{>Po{0>Sns9qzOYwLYn9ii*Jx88QrhK>c8VlZb^sc}u}_6(uUNqmhSla~1IccIEqQcz%i9WmeYp>c<=D zDW&$hH;q>X9(~ZsVKmIi8LfvSPM&S5;iIG6nR!I2TifE_?bPis4LR(?@ByRr!U6Oqg%m5(Ky$B>j1DipR z>H_2yLEs3Xd@1y9(!vN4ga6kHRlwArM@!6m_tiFqYOk+qD;4zWD$E?91ihXx)YPY3 zg*7X8mP^dNBw-)g7eMgRVf*U-h@K_QjpAF3i&NzhBUNabE{U6wMT;R=SjWZtj&JNm zrX7c}JGXb;o!k~@hIzTTwq(TK4O%OREZp4Q(o~k^l>uvs{Q@VK(B94HIiW7#ydJ2F z;3dkE28;@rt3K>`s=K#PSQ^}-pI0tSkFPGgrzRLVG{!NSF89*NA=SzYNg%6u?mTK=vT)M~u5q(ai^fyEvoIB^sJ`g?}B z(I%E%fzgJyk!lz=p085ePOeY%??nd6OOO!#v6{RiLMcrDv0QkN0x`BjUTQVbd~ECY z+=;O5)SK+Jv{8d#+?-{PayUwJ3 zr6A>jt1q$04(LW_lEHnreKRV>8>m7JxYe}IftKs-*RL?%AlO}HZn&>=|CH=i3R~V80eTi~5;TNA(n1J^ngVBM`mD~J{g^B1szZ!w7No;M z%bOPkqRihme+%?9@TbwkhrlD#TL$aVAj6$C$OmQqZ5pJK%);IYCuaC&LCmROwuyyX z8Ij@vK@RRgeG6tATjUO@|K|&}!nmYDa9*uq0}EO6UN-K~#Ej*NkWM6_KbXzY%La4m z%l)lP#cftMm`MRBB*)2xlFz4f8JAg}GWpjF5F==vGA|@t%rWzgS7u?fYG|wMFAPjI zFYVlNF))0|GqN%eEun=xDRF`D(N#d16B-ljcY@gq*Xpm%k2KAgbW zZakT3o3;{tLr&M|R$*QsXd%H~Zn@gLK^98T`RkH+L2t;xAx}z0)V(AZ{s(>!&Dv$a#m}CFql3(J- zOS0k#1Su&gFOLo!fgvRGme2o#@&}b1)u&B%e~!DJtHec1LpE%>yi{2)it$6U-rTFX zpRvMM{E&=W_o$k48I#fdb*ZOh=(9riE|JHGVj zX%^kkNIDE2w6u}Ul&fyMG7=a00hOFxGyb%-P<*(o2aoaI-d5;&t(5eyT*OU`3vSKO zc8Yidl9P?WkaSjp+uOzM8uG|H6%4S!A2I!}E8ch&`6pa7XiwgYC zrnaYYuX?<9vRl&j>C+L&vn+6cIh{d@Blj`JAPDQVc4~$^={6T!;G9i5s5Q#64svNTxHT4`voo zPB)ZIh2i{}(~)OxOQ9?iffrU-R^_5~!mndp{L9DNPpltIjex;}AgJk4q!SO|pvR2C zZAwdBPQPo*?qAHEyn0?_4XM-lM^}PFV4h)kwI=p-Ohv1Gd}-tYko7gbN%I;*`}pOA z=e@Y#9`Z-w90Q`q+HPl%AteL7TR$nc+LW+7nS5(mOI5DsIzK#%2(+Cv+(DWo!xbQO zqf*QrFWaJUUp*bmRN7|9_A-u2J}yPOmZ|11ciBNbIjK6?!o)6pJT@lgoshtM|Gwe7ZIN`53?&>{(5&PC7=Uco!G%=V&5d z4#06^Yv~@eDufwhlCT&N@}Hi5+_MQZ)&Itk&}7W}5Bpv(kN3$fTI@Nf=>r_rME#ub z%pKvwALSq*%W|mu4YRHKrO$e*jT;-h9Pq?Q(98FgsQ*J9gzU3H@)wNrIgMrIIoE?9 znhBnp&;zphR+PDJ*qQnQrz;3>v%k!k80LH5BBq4xvq`gNyz3Ui+k}P1xM%P0H(`BB z@l_Q@ID2S>L>n*CF%Y|7bX)v6)-jz3E@*F5*UjWK{l`xR`V109vE3<+hW2>_Ag+K; z5P(ZmI_HWqSBs)jj0M0*2xrnKWiBb! zFpu}nirc3#hLrTs>hftFDwx0He>O` zUspSM4_xUoy}TOqh`)t;c>}*V@8!jTh25yIfCe2!rsMncgiY<%0xngHoV=O$V1UvQ z+wY)MhVp@(`0s>?W3HNgOT^<8_y1s6Rs(E2$bp>YO4H0OEFrZ#U zAR~;S7FqtbB+yOsS^oA)$ah9VSOR$4fSQuOhDnd^RYfLJ#Ds?QP6&w3D#WaZAtaGL z6e>lbiXleQLKrCMrI0Y4|FaHpi6fS|0U?*2M*X{Y5_=}oQq&8{pm7TR@7IfcM!Mcr zSH}lIRSE1ovCMv;WWZq5ZTdj|Bb72~CIj(#!CS%0Z_d^Z9nN&14(z6vOWH5uA1pUo zx1-MS+1}yH*wBOt1fO{zN9=zk$S2x`j-{6MKZrf z>VGA`VP3ERYgrp(krS41+jxB>sGr1QePzH4r3eOSa7>ods%8S-^Y*Sj#J)v7HCnY_ z5!IJp_DP*>UP(xPj!9D9Om5=1(&F;b;+&_-9qprnX<#(az2ffK2lS%%^R{ z>=z^^I^DmcLM#cL(#ic|J#*EVx3&ZIJ=Sw|jq&xIH3yyH?b*grAo--|Sh^o0u)FUg z5ydm%mMg@d$VRpXZ>2vWl#hh-sRC;vG)xs$S}B0iK`jsx^Vl`Hhx z35a-*4}2vOC#>KRad8>mDw91DRMb)BV#{RudM;jK1gMr#**2X!uB2k!Q4N)kUzB8; z-t@Nx@VN)0oh?YZ&cb~Dpb9%7H3cNk+j7jP$L$P@6o{S!%*_36&~+CuQ(`7CF&LI7 zaS1acwo=1h2U0Ac_?)~NX1tt7Rxp6(d6(vl`LaTAjY9T2hBA^EF~ulBQyT}+apo}1 z=402*#f&(%u=ZJG7*Py|ByWI|Fk9JERvQ|#6G&s(vxLS<3I*z&$DY+GV5XJ}rh zcrBAdNlGZT5tx0mc;V3sierwzGV*(wg8IC*s9aA2>mhX32N?Qwb#wU-)(6tr9z6jJ z(sRs37!2ecjA6gdBvf81#xSAPDeF2f-X`LyhQWLa-OgokHO-iu7bLpL{>Ly{flyF< zNsJ=z*z(W5!(6lByk<~*<(BZ^!tU&t^~jy05V@ZNTT2<6BGzgtkyX;H9lRF-N9MH4 zz|w*?S+&a+%Q>90mMg!{Y-QQBb)KSwsb=n79X}!AqQEqjKr=L7Z#>$IDtx4o%F4@M zd5b%nYv7$D&mYhsFodeWL%+LQsG?pm_DSB|)KSoLdK!OeY>YW?Yb#Jm-u)B`@EYOy#7 zh*ibEOj8e{WWN!_6eA#2kcVjcF1dX4zCl5Fh@{|)u+nE-v>fko9q{_d5d!znu2NiA1RjU4|ax8 z26M+3>(h23ZCHM@`aRvonQS9Ejr^lP9s#PgkBRf|8OOuJ=0_B453Ezy9Xgb8WWA3? z#LGC|!Cr6g#5mb^Es$U%w<)y4YIq99!HkM8vn8s4$``Hm2cKz+sB92^od+h;5091POG>IUDj-2S?us z)hr$^e@C!$c8@@PEl#mDmaCvabwLcCBOay+eh zc`k60&mZhE2yrtH|CX?&yDTj?JLh&aBE!Y{jVQly!PjkLT0Xjn%KGBBGK z^B++oHGLy(n=j2W;&beoOVcZuF>~R}-irA1+7i;bHLH{}*E8ByRxEEjtjLa3^&+gQ z#aIhfq$EXK!E-ewITtu+9dQlmtytOd@XXy;3fo6VI}5*Yf|xL8GZ;R~9hCw-F(Tz0 zst@Fkp_z-EK%v^8AQ`!7cvu64-jiI)jZoM6>h<-LTvBE`VmUAxWy`Gp0_&<-Hx8|N zWjr%7;P9Q_Cjdc%S^AOFb&OwV{Lx|IXuEp$+O9ri&0oSWhS3FWvPug#BAX8)L=e_B zS!iX$W`EZ}{FRA4S4pg~Nit_Dkvp&gK)NQz8N*QCxQRws zeTS7|@5kf`KiDonNMBfU9wECt6B$kXx$O;No7CCm5$Ds}%QYRpxZl)|cOLzeIVIn> z`IN9S_WbY7C0roan2Fb>$2Krvohd%uStQ^$pZnE-!0LCd`}|Kiw|6&jy5(o~n07#&?54MJ?q6s*n2D{1Wf<*?un=&I2b153gV$8<_`|m!tpN z`C@K5;yITG$1H^_!<;(~$Y@+*S)E;gbhrmMI)8mznfbB!b%5^Y zXDnW@0ot`^gKFB@`LbwzLdFcrX6&Y8T|v--VA?;4DcU53eeA0E{SkkzoxgEW)jr!6 z1s*A5wT44pK&2o@UVvM-NuklfXT7t{hfZS+_mTWtVPfE@*8Ly;$V9aBp{d6&)J6SF zRbam1G*^s{L{ta}p#qOf9$V&uqf8gfYD4pyUxrrWNV5N`Bjsn%I$J8F>pt;FHBA@w z#qC+_OxLE(+LqSAEoTiD%11Buhff@2w;Uyk(@W(ZUJtrphgJOKkJQhf)H$QyU%zGX zyKnIr`=Pm;8L-n8_MFc~wk!VeqbHWUdoywa5kV4=cITOc=G(L~{zuFiD=Nhoe$wl+ z?R`}_@!N}E+v8o%=8vYjl11_(lR%-*x=O)XTwe$Dr`b5?Aq95vKK&u`$*pa+P-(C% zIPPVgure7fSNH9%iVY0`9r;v@zP5~0C260S@7~GTTIxh*-cpeDkrwYfS`p^FOLm$M zHW-Hl2v|R}uonX4Ibq4wdWfd5KxqLyJXp$Y=aHQJ4{DO@%q?Gl!(y%mHXsYwfQB`5wD7}~6h@t( zirZCo&}iX@_1s}c0Cd@b=Otg+E-+&C6gUx+r1=Ux;B~rJl;vUGw~jcu-mQaHH`-_J z_g_%NNa|I8UpL}+>QWyVz-jeJd!4kb1{+J$Y3-Vr_e`|YnsUd=3b%60<%^PZe%wQo zr@MGf)qJ{|1MHd&ytP4Z0lpbL>Fjtj1&{?K8gPHo`Mu0m~jNdbyOL&3@0tx$dsVi`F0~7qA`E#bLbs@;h5%FUF z@SCg9w+&HadZQGzv%B9EZ#Q*DNEUdTY-$fvfB!zp_zH*B#LRQ@4N}yya0&^}O;BE} z6!1wi1%QW6VLOZE@4tMVfUFJ_XSISuHI9#GVeq0Vj4&ieFeM2zyB9wY#}U&BH41q< zAVWj}%?T?Eh!6pZJODY{AW#xo2+~A=Yyrh#27)OOFbM?-ZX!UN*4+NEh5(BQiA$g) zf_o9@R9I&~bP9Xq6ucmQmk6imh%wS!4}@Ew)RY#@U+%79Y%^^=aEJj2C4rl_nB@T7yj1;clAXw78!=_K3inpn6E-E_!#I_O=@x4}V?zKcbm zzb%Zp2VQ&``wvg#^>8&%8%~@6{hiiUP*qUTe49d7B=cvgnH3Zi06XRE*MS5zuiqUw zkf6#S#ljZ?0;TO{k|Pjp7TFxX5&lzf1$9tl&;OZvmL$g-9keo|eBn#U-kAa~KCD`~ zII_A66>)XY!!pgIy=)H*rk8hsbP)-n=})^yDX_vSSNs;9y+FQ3ov|k}UGqOPXWQd_ z*jfTNiNPNroeV;K!?v}PQ+ZK!VppmhjD_GM>U5Y~b-0Jr;4NorpwixmOK19Y-eS9O zmi9CIqlbmL41|QmA#orqh5+I6CV%mcSp_np!t~MPiM#wvgt;C9q+98o$39xwQ8=g%rx|a{72UoaXt0{JYnFZgftH;M2Sfq^ zx#F-rV$Thvk_wx*3Y(Hp{wK849L~K8-iT~HYa&z^?;}b43eE~5rrO54BLMN|$zic* zA9-klME7nWCQab;$~0zWtc(mPaE%_ewo(p=@K{gbU+#P>B&$Y1FnILaFup1vn*TUG z#p4SF;0ACGD=LD5`MqGlF+RnZ9CP@wWzT|!V=lbfk&WSS!Lo_g?Bld@Zz!AI+Fid5 zW&&NUKep4kAau$^etE*?2kZKH9PF0T^6g)kz$hTDS~{>=x^vQqVLJ_uZ!piEqXHNYGoJg@+H zT_Pcg;k4UiiO-E|f=SgWffu&$mm(U5Azlae0j)-&8dOM4LEeWVmFT|sx90dLkRk=z z^lYonG%^N81t3KVP!KX zf`8!TC2jMq;E1t@ItHP5rw~=J=3ueuUtZerSj=(4xM?=SRaD)$FNf}p`1woJE*CvL zJ2F~uu|3JCMZMtwq;TG%w5Y=q_SgT)M(i~8c;g$ehlZgO4yl} z0!W;t(x`E(+OS=nXaL%jtHwiX>c}sj)27nM&1|2qM8MyDXYKmI_-ZQnk)(4Ef1@ce zG zr?IICE;hOGLwlwU;!l>7=L5_c&Z*THuH~k>XZGUA2?{c^R|j#L zGR4QNi}>5q^2L`<@bEl{i;eV+Gt`oT#U*|qVt=J4c2Feh-z_y2y?})X4`fY<>Y(sAmz1SVUJq53CjS|k_BKOY zjA3OnDjZmm@uZ-@A-6C|`8UQfIb1mf>$TphJr`y;75~71Akex8 zCv1^VLc;tRlLA9kE}T>6DSlnC&B3q>>^%#co0PEV`+MK_K43ra4*RM~mgn5-;x&po zi|QNVus0|5Z*Vciv4~;>qr=a5F|F-#x6x8uG557=-<)FQZt@SFSa@y&tv+iD{*Q^W z+0n)v)V&<7Omu-c$7V(z9AQ14EISO79zne-cpy6Qda8l?*;f+$;U5JG0dC4 z&KKpczloW!pFLMqk|x0M3gP$t&KdkYo)P=hUGq%=HGSJn>fYWZUH$1^{^QuD$)-}1 z3=vsb*+E%6d0@s4#hz&WG-8l{H;yaz<@eAY5XnfB)0lySH1L{Xg~{d*SX9{QvUi)Z zi(u~q-F#4V)OeQ}yewNP7+-i!ZwN*mvrab#rg~v$yI^P>ZaWaBM>rPiwPEYy`t>O} zVOXANK-{*D{CtlwEUOZD1u&meSYNIJK79VB)(s<%1MG?+{8C{Yg#C=?T3h^ur7;l%W z@P%%T!z#-`-xAH;`GM({k|=F6OS?ytZSH&nEF*|v z9MYIjO@|JA|Iy&lqjHEd1Q9v6%0Sre;&ojvbAUtRX-zKp|MYGSbR7CFz-9uo-^BdE z3;N(%7{jT;=RkS|_#fw_Zp#8RrHXOO`OguKFsF{#%1Wjmem-+5VexWK?(B22^I>5r zu4B*HNWeVt0Ma;_iN%?pl{m`zUA#S%pNIBlkU|E}`-wH*53gdabcVF=aPy8u{Kpp2 zj)pUH#$*@v7ZBgY(&!;-z`FP-#unvc9Hk$$zblyIqfG{=6HI@(m21*%xh)2TFgzkr z>lqozP2|&{*B}D>(P2&9XjLkCNo;I0uwi^W)}Idz;O@{iI9TXku^Sfl^;tu!SMT~J zAx~^NY7e6XUF2i&55sN8&%i}VHnKdS$8;mk2J03hL3cyd&docczCa}4XjavlUV3fqA~fz zszVcLU*W(ySgUD?pQ?#`ECCB67M;1Oc$AkV{h9(YCa`^07YQ_AUfQ=V!-qQ8w%v4V z@RwvEl+2%Cz~LvQLw1%zq`>lJBQ$c0be@e}W^ytJ!=D50sMbu=HPq3m>-iR}!(o@f z?;4@?I#^4R`PXb0o;tXF4+G2ZGzCU)_wmZWo8tDleCfXM;RIzi%zs=%gtljg02egGYn6w}Qmiii-z3}#-$ ztpNT0tq~Iv?PU!adtfy{mWn%MYfn7Eh>&_g+zbfT ze{1Il8vx|5Dxz!bKEXK+j3OsrB)dTYXnAqHa4v(SG3jazEZ^MdGK^<)Hs#$CGV&iw z<`in3)rvrJ1)u?MEsvwIJR-y{*IzLS=(hHo>MHf{n_Vi`y32Zq_^f;9#WQ{6!+}B- zc==l+)2G7{Ay5cD0BJ8=k#Jf*`Wj3R*j^7;o$Cdb`!A>bIdS(SFS9N#^Ye@3Vw|BK zAbj=|RZ`@uWOY+K`M?0}{o#ij2U!Z=wUSrCWAF}LBYk!rp!;^ptd5NYq1*zNLM$u|f6i}xbz9(D1;r`z)Ryo)d&Q7d;;gqpIPCl+M zS8#|0n?JZL{xi?h9R7(y_qlEj41IClwl8TPs511{rj3>Dvw2Sq?+kv<=lt#~5bHnk z9F*l2+OtZHAGSFEcYEpf!|Q|Rpo&vpTQHpl#0uMX=@}tc{rAbS1gvKsH|W=ob3Iec zHvXU^ZyDdm!PHn~WljG{so`AA2Zqp_%z43AZ^eK7WjkWoIboMbaL1wV)uQ#l0Sk;n zO?^jy)h0gkSp*YhwhWXPC<6un#kiMGsssEFIy(SneD!Y54HUUzBZ|i#p6PZOl}7Ic<(4?nN)+*cb0z2W zdvJW$WS`h=*R0Nhi)D3Zm3?g9545_E^)Y|SHKX!=hiQ`m+lMfcMJ4^ErzwhaVHp$7 z$|a|MmV3qdCW~l7|+8JGC}jfy=4e?CpF;SM!-C| z@5v;70lomi@&VsY25~RdRsj75`S%gP0CRX9+YDg-LY3=($8bRx0iJ*G!aCq^UmmzEuY6n>o~Y-PLR@(rv8=UrJ`EB&L4MIDIrWL43h} zEkixp3{nLnazmTWmWj;gfptXfJ7X46rL}+pDPXHm^GPvAd@fsgm2QXSXv=5U@#?}h zLAfULJ|)vt(p?KXbeM)3+jA>9u2S&=D%^EBQw{cT;AbwhbeJYtOm6-U)Kb{AUvVE; z=?+$WESxD(`vq)dSViJrpAL+@1^y-Y*Ze7)sFP*aXLoDEOpKGy&TU4-#Jovlj`J^U zr~`+sxozUGFN(*J6TT%&=vs3Ae*6B`Z*UxW!j`G%yVmHrVjmc&cgx9tVb>zIWQdKh zIxLqH74%8|XWu$MdJOS$NGEfNEFM)Ze*1>gIcFmizd2#(WPN=+@d-1WOmAS8mHHrk zJdzXU8DYl{Vh>nf=CzC1TMC|f&@v-5sQ{0pgsuPmW8MpRgwH2&_K-n`1do3i?h#Fo zxCjXYkiCgoci@$&higPlHLFMX67h1F&trIVFx!GU6nN%4pb{7>cFJ9ao1E<@VZX1q z%?`Ebl{@OAn@1AvUMfAdRC zB+!Y^3j2@U3+rqes26zLWD0q|>a8C;r(f+!LQLOx2mU%pSVAlmrkiu;w|7wv)dPl%vZ za*r-uBHXMpqgkPs-xfsSJ&x8JRQoH2ndF2%t9U}*AEBX9nb!;}`djrUvv3Kt%v@9f z8CqxTq%466dus&f`lRaMerp88;{IE8$d(PzU!MO~-Cy?W>))zNI;pzt=OorJXsc#* zoYaytSi!$p9Nqd-v+EWO9_!>>7g1%~n&nVtKYf`ta&zk?mYIUK<925?@I!!CADQcm zsL(n~par`Dy_~Um`wPbMA*xk6@X$5>ICXIn2zGkH>@v>;gNIzDaG}MPQ+E?hyw$KA zM9nHHnmb3~dAJU>H#bXtewyy53+G_7UZ;YHBw`l#eQF_^TJ53ALIlY8)p1i z*?X`k1iy|DN!F?d0R#(kk}J_f3kGySz}3a|@xgfj8Y^s*ZJIiKv0uJ8TyyMgfzFh) z>@;4r?vr9-G8r!>(0sHi42E-;c0hkRlRE1%_!|gy=_@7vtZb|mH$FF~79CcAxO9_1@GbMd|Yf+gho>Y<$8UpyI z;y7NN)FI+_4+dm9SnN!qi-KB;{X6BtYMKdH7+}E-6EgcY%^8w2;J@JRBi$1c8Okpc z7TE;kM-GDijjYDP_=n(2Luu{;%d#B#iKvQ z+~<3=a&#;aKol?gBG&1GgHIRRD&~jm<^Voh^iXMVtsL zi#9|MO3Ci}erx&oDzb67T@uv{YL5PyPNYI7!#})z`~3`5XhCt+DjSx|TC*Sk(rT^>G=;bG_yb>d%*vP?N-S4UrP=`{vgQ^g@uLSz~aK!eKaYD z>RbK6n%i9@E00H8XS$#pl<=-9vnSWcfT3=CL_b#vX%<}EIgj?A2O62 zMEirX48#6j#RwRio)~3Zh-y>%JhQH(*5~e0+;f^Pv9bR)cj4faU~P5(KT;nS#}xR_ z{MI4bce)vl@s1_u!iHS=lN@Ai2B$#vct+NoQ)yq@nXodVo>yk*=0F=S3=HQqss>fv z8^J$?lnYd-h+#IMzZXAnJ}g2@WRRNwvYkY-NnB@o!)<#zXxvB4WoYuxV7UHQtWQ_Z zhyAFOlxRcv)S@hx&#AZtw0O-*L8&C*wL4i>j=FWurV!|M8zFObEhEx~<{-QM$%!+< z4Y?CIkHsj#2*My`=Tbem3a&)99wSZ1>8oIgsprzr!cjC{ONC5<=Rxaw@pcMx*s-#3 z-ySF}FGdei{aSE5zjiKv)F$JjaqkhjRwkn2BzoEFTF~2DNXsKCP+5&h?`mjl@K5zu zZOvUbD(;rfKz*`aoj{gxh1!>r0|(euvlJK&Zu(zEpeiuN+d_1RJ&6jmS&XONrBw&O zDy*6#K^3q!D$zX$s25%yR#73T;s=5wySV+!nvjJuB&s45d7)JJgdk+=49ThhLHBy1 zEPMjSLBV~D*<`&h5z7JV4kYJA2=C_U)k>eo9?XqCyw$*12p*8|qoK!Og_I{|2w9{+ zIm-Djea9@P0azC8h3}4PRjud-|LqSW$@q&8=r$MD^qm8?M(0TpH3Y<@gY{*;WJfN( zFk}fTZU=l%KV(+krg4BB1&uW|u^svDklVSK`o3&c5G<(zpfl47!EA4sj*|K(!t)Mo zWuTia5iJCc)!986%+kcsrSsEOL4JrY)n@i!&dkpBpObN+tE6uUtbp*mN>|mr3TTay zPR=lBYO6k2do*TcS}ghys$r)iC}+1IyRpFL&O_4kBJ&Fi+Q(7p&_;`|CBV)&gU{vT zIh}k6qKm6v9Lm*k6jWG6SYkNWgCBmjxl-O)07fXvRybGLTB>iknI~gd&k3}UznFDP z0d31o*cMyF!FoPP+n0NPE0l71BtUD+ofLHAmN=fZ%$?t8pPj{|3ShZ!XNwV#yN6q1sH(mp{@8^Q_V-(;;e-Zz8-z=xJ5xlQKMm zk{KB=4LS`nUA-^~y#Uw+*pMp~*TDGlt7Ex1VSt8f_F8lko}_(DH96!rkF{4ShEe3SI@2;EoLXg84eM`4 zUwqfWqV)r0B0bcXf`Ow(pyt}gegq8(9SA-q%$NyxE-Zs<7gNb6D$=u7ol%UP2`c$S zXo6(RO0a0a-WpUg0+Z7eAe;hPF(}JW$zV!^+J?{?=*2>iZu3`4lI4S=Z)xs^1lxrI zS{1@OZ=bm#A}8924cRq0t1TR`on46|K@JmRuvY}y=FbnN za~Pzmxzk|nO#a$lMflHxDuX}!2V&+lG*qtF_P45rr#jxp!xWmod_~@xQq*Pg=gi}& zXZ(4lyfv!%fqAhCsIOf3zz?;HID&fy4tqUS4)pbIyoPFVO$b>T%oo!WDcKffxn&Mg zFjWUS4HnZ9em(1QzCe!g&7jpFjtZQ3;sTT$o9R(;aa+0$GCX{IXQVzrWm7tv&y@$R zuC8XFS+<7OLSXGzfJ|Us)g?)}RJ-8Y~rC5h9kFW@c zsxu|h7iSP&OEM{{%DaC2se&?A@@W#)FtF-?`gm3MaI_@8p_^V(UYcoz4>S59Dr8e5 zx|mq|kQi_z*DqWwt_zMX5n8L2Ify~nCuoJLE}; zHOr`3Z#AyE8*=7=2FY^F_138AEyj&G3RL<0nYv(_2Fd!0P8TR{}64!c7Q-C zm56Q6@YP*9693SxK3U15Mah@HhaTS+6g(%>bz82$tOS`1L7j&nAy?OZ@@kP9rVCeC zsBynQch^(R*%=tAIaY?1`e!3UCMg!OE2)Ntm+c!l{~@$3!q_dV=Q4F+c>u{JQZsR@ zqKEIpc>k8km3v7Ila?A)PFG1eHDM{y=Fmx|>p9t3;1t>ftxoJn_Ab>=W9|1>CAnL` z?orQ0Dc3D5|F7K(863nu)0C@eu?DdJq*qt5c5#C>nyqEAzFyKfWQz&T)``{Q_R+(} z63a2i33r7L`dz`|(z50)fsafUL(sIEPoHW$CweY;DNp^Ay0XoF1+I)`5822g>VqZR zE?er+I^Gwn&fUDa3nQLWIV(GUGL~OP^oBRE7pR{Eoo8s^%+HdK^{2?KqHb{4tH{4y zM9li(pVjSG*P`4Fym_Xc&^K&fz*7sZj|`Ty8eQLYGZbA9H`P?;5_t9cH9z^@HlKds z`@(?|UM2~GVpu?%&+=hol)4f~B|PJ(G58tnbTnZsDX-CY9rx_$%gR?hIiu=PW#^er zDMt~QCx;fO@Ms9MBGYSk1{8WBH8S#Mhaf_-2Gkm;&!8s*jRY4RA`@>Eki@na-U?I#wzFKoV}_$*Msq}o|~AQhqFE^#qlS$X~1@oQ7l`dvl=f4qHm$HgtGkk z+)=H5(W43pcZ4~%8wp>a(;S^MwI^wg#afz%hAIexGBYc9rb4nx3OeKT+^(yM)Ys1z zdWjA7Tx97vyAa3&(I^=iVInVjWn$h10_S069{EfW;t9e;=wV5uTJF6wU)Z?ASRZ4D>Pft!( zeJo3zWlRM(yL-{%3ApUMl(*o-@IdpO7A(Z)LpN(PN_@cJ@j8*YM5I`{toglN{JL7? zp<*_U=V^zT$WoUv1KR>}g7?ZwgTw}8Am&Q;Bu|m>3OLYp^p+%Im%Xld6s}pfwidIv zrsSns_{Vtq=x{$rRtS6&ETLAmYrh#_@t!;Yd=9h6>sFmfXdwytjbgzHh5AvGa~@cC z3D(du$xj7r=RfMN%khtwbrhA_Yqx~m>o4ELwH1`Au$tb9!nca>@=!>X&E6|PXZPNv zkSDgBd1pPgud<+_@c8TseYDr5J1Es=mMFX0J^znyd$Y&K*JrWtX4>r}S1|E1W_?7L zeAt;*s6?E2wZ3!wgDk0kMEkl!BTr<8jea`vfO4k*8lb6|{cLZ%D2D-@R_f^ht%NpV z<$GGZ>Y49O>Wcwy8e~UT zZS|97^p>uhpa3Al_3j1;wJ!iPgdd}V=;}Zg ztCH||erN$%-kz-tk_43&%H>~Hs#%ECYA8~xkTxs94jmZWSb(m3VNYBa>6C03*bQMW zW)Ki7f>2a#U`qb~`lPeCoZqlt>l5NJoIWMd=j2`)5lhts^*S+HrIq_*i$3_FsOLG4 zC*2gamF{jlx8kNn*wtA5PgSN$dV*qQVwnYSzg$JXO^uXwy5zV!;V1RMJ)=)Ei`m}C ztk&0-IYvueUO4O=uqsS0C5`(}6cI7~TEnkjyZZ*3RwjW<-Sv2RVn5%AC%A~z zx2@gDQDSJZQkA2jwSNarSBzVzrTkvi{KMCG%(G=Km_ElM2)Ms~cr$bEn(mfpr!Cck zKuXKaC`O^&Tz_Hv(YgQ%vCO?qud>#KtDl*rj~pfCU+%1otJxPm1mvEPp}$P18iqO^ zVa?7&j4J*6Xb7Kt00eN6Y-x;>qoDrs-Vc)jvpW}XK4CwJK!JYS(-ZbV{h{{c0J=}B z9-@hgP`w<_2fUJ`+e}_-eB}+5RvclrwXq@YFe3J#osu&+fDu|k-iEDQi8c5k@ge0U zpLL=u!$+4qXzvibNyIkiC2#2NepY?T2#_3Gi|sDe{6A!rcLdm;HwA{HO9H&S)OU6! zmwU|*v*!nkP5Io9B;>zgwks^WebYG7u|9@|-m=xvF)|lYBa*)d7t*+Azr;=*nG(#r zzwWhAEw;$m3-H9@_6uRhoDWc~^2F=A$#Fo(GDyLx@C;R|AVnX12STHdsaom3>=q6b zp+0=hI7TTeK7;(jlI;ASMgPQFU@Cym9jZ)$>;6F7jVB;G_3jQG_Mth(?V}HzvcFldYmXaHr5q6 z>MpvT>QwFy4K3OD_U(yvECE31|AI%dV%Yne7QtybeS$ycFoBJq;LUxeb`*|NbIDU%y@mE-ATs zO$#2iNH+F1_>q0ro8P{w)c>colHWXevLcar*LeVPNfqxE71x0bt4RXUZN1>-l=p{e z_!?U0$SAB_<%Xi7<;o{ph1sXal!HDJvmt!u7JLUL+GmfqzSgLSf*Ro#y6tW98T( zyh{KU!-3hl90O(K>O`3?GqKB|PPf8t?uR%jrsF;}4%`e;@E(ERU_V@2gep;IiT0{2 z_@KzUSUd3J5fKc@VYO<@cX-GsD+x?Z)tiIr-1g>JBcdrvHF|Siv%SBNpu~igtX&L5 z2m#KikdUQ)EwBon2>Z&Od&Ox6#|O{j-u@FJHT3%BT>@G>ad}IPE?%&Y8S$RKOVC>> zpQDaELIu+Vb>rVMcoR00R@ttuTjwQpp3`UkSQ{sj3$uIAhc<&`vl3KX1ew|hClS4g z1E3K9jE2d{c2y2#W2+dH{18Wt)Q2~^O@V?-Lx27li8iHYoJSD8iK?|TPjuu!!(}+z zK73BBb4r3A7-ZBP9v<%2__MVju@-(1&WTd@*j)eD3(#L)d=xUgG~!&E_Int5;Y*b} za4)CF*VlYEzH_p-=~#7+e8v*~FQ{ZySy2(V=klp72(`NfYJ0UNTH3=qLwV znbT9KGRH7(+LyCiJ_eDPR>Q@Gg_rjsRc*gqnsn}?0Y@RpGxMrc$Z6(ze8&LL=q6+= zYh)U7_cmBT`Q~$!>_I<;ixMyvXYf;|!G9W6VSEscY-b_Yhy@U*8k`9j12cpy1t9jN zUW&ioNvuMZBqR?4dD;K|64$6jX?_?K&fTGXuZDI_zb``m6BeXg&Jy7yq*P6ghvnSr>TFb!Jb8x@5AQ|?+JGGmSBt*fUgD$*w>Mc^v~i&Xw3Ns!8RWPa zI;BMW-c&5A&4887Sf+~?7F`t;T}>yJdcJ?hgEq7>dFQp2riV7+Z>O6b&YFj2dcD4NWvOYqr?ZJpK(jfZp{z`9N$5l@8@|ESY>3k$!*t zj$bHXJH>l)PT#e8)aWzJjQ$)P-oetYEfd_s96}!!ofZO*;Z1pKf6=7=u76oIjQxTM z82yoT-Sdiy>_J4u#QV@Mnf(;`m9@-gf5yT_Mvi|D0^j7sTr2f2OxQ0~dQtGZDQ%)J zFfqagghWzD;wkF?6KaI`XWl3o!T^mx;PHoMwcHOk3#`x7M1+WEWud5B{sS}`o8qlW zReayNto7(UIrqw)>1(Eu_Bct7rt8&pms;~Y43Mz8Z2;O7A&iY3A zusbTE0qzU*yXO7ch*#}dW|pnE&W%*3`D$19ptk7k!RlUPY@0c<${h5cM137&ED1;Do>jiSC7y z?}b6Pz5NI@9^m$e%L!rfbOv!KA0eL#bxB&Fpdp(O3=q1Qk+g{|tR9(Y7htx90RV6@ zfKM0Z=(d#CuZ%{SN(Q=}+U02N<1zw;O?y8W%Y}{K@AAO_bWS2UD+L&VYJl z^RY$Vr=YcS{K4@TN2a40-&E64O_2b0(ONA74pq@U$|_&AxblKd#sW^FjzQ)HvEAL- zWgU|YtFbx>`cojw#$WcS5372crD>?#msS)Y-Kx8BxWA2};cs(E%E-_itLQP$ef&HEnpELcAqbnnREPzk6LeH7a7 zx^*5^Vb@j?l%?Kb)V*3YYtJbi0vOM3L1kbPX<;?TsIgLI6PE+QEj~tidaK&g$rtY3 zo0Y@GCTNQnJKVV1+7=Mbu6zSW=;~I%K-TnRD7mT-gmuHt1hR69>sxgb|FmDC!;6)< z(uWKlHbSvtghV)}JZOmzQI#uM)AXZy0o^1<#JP8^tTFagRL`qdl?9zCd0!q&yuiO4 zFNS*u>lLeV;PsIF7e!P^e0TYxQ%pfb&+{S_;V`;3H^q1t+iu*x1a)Ms2B|4~!)YGH+AhUwXd16kl?H zwc6nCvqp5PiX}D+-Xzd&`x?(!h@FwdaO0@O*}KG&a;N!wWg@nq@wVctt(GhWOU0b`I7c6n^ z*7o}H=d-v{WuE(fc0L;g0>+g({BO4h-$tcLkpTO1Ne#&7Dy zUF|X&pr8l=#zs)}Hc*>RBm1td|M`$XeiOnC&3i$IME(K`=P-0agacR+fl9)xn?uDx z%{iU87%|J{K?vsUfek-GkNmqRf#_r0`JJ%t@GbXeqJvRpw856$)sQXFl? z_4kf)?HwKRfLy%IL|dHIZukCBeYahdhUA~?pg@Nb&hl4;tq~AE7^F(7T*Y78x%3y( zbZiAwn-x+wlF0=3rsaLqtr01i5 zV%Mg|S9_F|trkqP#C{hzb3OBHUZ@BC`wRY<5Fgko1E;#8VvDS(c*2uv=Ge!KuIF4q zCjP+CqO+t1x9R~v1Odo{794=!oqwD7C*u_Rdx|0pi`-?Y0hrfGF5a}U+oGc+`86W) z?)l5-ZREe*)|wwh#MfwSqKOa&{Jy)pyZm)E%u14(|6nn|K}j*wC?!SDDU77?gZ%DL zx=n%p+Tfpoi;zYeaNpd$UHUY2CR66AQ;xuJL`IOUrA~4Y7QabI2-3WagM9<*i`yZj zbL>BAnvRWf0d*!Wj=E(Q${x(w9lDz=9=O<( z`D!})#Pa~KXwJ~~m>vTDaoAZ=Xl>W>)=tY|l8S)qX!9M{u?B}KIsjX@MdRi zBVD<;8up@W?*3Hc2|6@DWf5*Qe?|*|aZ~@WuKlh_g>Nbr7uU+!@(Ld+t>tG#tRwAp zQSZW=Po?PHG*-XvUt~K`A9sjXYU`jjYmzyGP4$X&uKV7t3xd(+j|!LWcMk%oqjcSn z8w(z|65Y?TA%0aaGiu7ygUP)8GL^N8U8`-_Mk^mSWkARRt0DI*()k^*D80op$S>~w zj&x6}>=+nGL60RP1Pp76_?OIz!A^*DFl=~na;WKk6X>dxP^vg^oe3XOrah2_Bmi}Y z2eT>!61VDPLT-yC#7Gd7YwFu~Nh+`y~hh%TZKDOun==*&=&+qj-|2?m^*KsH&4+#wgKd!W7lW2Bh580YxG}_6tsYyJ&4ed-uyD4s2 zm`Y96RF3MD+sEK^Czic~;e9gnql%h5TXt)WbEE5n_XBirDe2JB73K?5QobT!;Wh@H z^oZ=SFPA~}IN0|gJg;oQ>ET(Eq3GhDYcVH=tdKEn$nReJ)@t{|MD>R#DFN6?%Ib$6 zz{Z1Df}PbiCq{e4UKm&VTS#*MIK?8jPaP+4P%z(5M+?FR_3?n@&Wx?>Sdm4)uWpZM ze*o^*Le@8%A9w{0d`om0=~aJemiJY5{RX;dYXUD$O zS{I&~*>>g|FU{w#V+B)A4fAgQ-iiK4hX-Kpn8Ul}W7uC@b;o~5( zpagUtkZ2$~>`b_d;Y`$_-oxC-iH|1KzopX>(>FGOJc>qM9IixP7AX&ijURc%UV4}6 z4*Qqo8=}PhI{NK*oAeDD>t8%maUXP&>}z7UrhC`GMqO2fwDRaDXId596!Kw4Dfp-d zi5l)QB9}vSI`Fvj=%Sr5N8dBcjre5^+Ye(w#Q!Y+uC>emX0VjFU1Kf5s8T^TaYLTa zQ{$-`lKT#(U-yUo+5^o0G_;Fa-%l4lQrwZ#<)vprzC+z3vWpn0{_wlyzrSs4B&C>4 zq(8ggH=Xml*xgN9BI|%u-@XT1m8nH;@MdHtpY|!6nO%;I5-I5yO&m_fhZT$!k`qsU z1~;BO@o(E^U7e#v|I3XT7?;>C0~)gA#-yIm9LLY}x~yMqOM6p=^LX=L`w<_kkfgHG0mQ0k?cm zmDLZTJa^b@M{7G;@>}wBF(>f9B*w=VFi(EgzAC6=ucZ%XY*dTAJR`!|oL5fiUvS5` ztNI2u;K{7F-*p>w$h4zfYrCb}T|&^CtV%^m1C-ax2ex-LpBPzgK%Ud2w?evBvy;?` z7?%9Sus@}0ETW9jdJNlr$DOs?^87%-NmRkcEIO^lr+jlpq(6nde{UP^Y`W0^OcBZN zLUSrOk7eyc#g}psmgyNCx9;|g!H>ZyxCX<%lD{z`1gR66Pb{3A|ADgbm0^gm^p1M%*MJ8lw z%E0vE`(|)hel>@m=qg1p$8m?%vc|O=K2N2q(Y}pfAbqE&A*p)|B>Jqh)o_A)U>Rvl z9qDxu|g0=-`L>)W@N^1#Vl~WNx4BQ0_4%Xm2 zfv6BA1Teyo2bX%vw}t$=NNt`e8`FLlTF6q0eIu6Z3OKSqFVzg%YJcoFkjYR8fEpG8 zno76TyAyiMUS{L~2X^>484bzj*M~XZ=Ohs8O@$oTw~#aW;c>k<{zPzU96yo(Ip)Cw zjVuDlIg31!0XfAXApCd{0LV!I!C?yMIZ7KKH|S;0-di|1Nge3}d5DyDuXU5Z6mtqg z-R^tn)W-@Q2M61{u3iEec#9d5TqiD5eU=L=eepN4U}q;XE(ieA@(* ze^t{qMmTh1_%DlyfO{Tp5q_UK$xR8T`2g*K>&=;Z zw@Yi*RHlWiHsWpQPk{D094)(jW1wv2N1yQ?#R$$HQ48-c{UaWfcerHN(7yTf=ZSnwZZ z>#5iqywI;|RrA0R3pr(s{PHA=r47#P+08}MY&YfziL&3MK1_x+L22Al0$Q1rIhlP_ z1-ByXvlBj##cEx)3K1i6GN0(QJ~ARa2Xn(5Qhoyn6+v{k9KjsTZ5+N6V1%E_UKdL ze{PiMo?5VuiLG&&;fIz$+QgNLlnnJ)kV+&8EbULSvTB)$Ro%~-i9uu|j2dO7%+7q& zsAgJnzr&3JE7b5Nk;QayL+>Of3hvJM#G=~fagF=rhwP$%yppqX$zMAmNf4I9Tg9S{k3b%rtJzD*0& z^D@U0--yDZAbVW1tUa(~y{|eH$O&IscU??t76B(iUtig4ET4lOmC%BO`#~sb&oZk= z_|t~ilgDn-uU@^PgfWDT>?=G*jxhQPDrnvUVpquSM=rhJO9u!xy&Z04p|#biXgE@crf4U9l+I z85sX87k1fWh-L9J*z#Qo6>?ubhmV>~^);(hx$rM>{Fciah|AumhNTLv5*ul~6rZtVspl?o|?vxIn@oSZaC-2GDLE<&2GtLv|=b?3zafSP28 z`!F&_o5!kp1jJ%D`Bi9hdlstjI38XC73wD5B<~#$Y^_e2$}wUt-*;eTWCZ0qmZ%C& zLx{LfsJUn0?q+ljKAN|nLq2@^>0=02gkBnL8I^7Ws^9pH=HzPP)d+&o=KZ%%PR|_H ze%2U)cYK{V;JKMz9{bLRCa?D4+Gh#U{X#B#i8E>LEzeX3jv8@4s%z>jVlnWy?vb7l z`L_XG?g>*D$oIRWE> z6hZsv3E%Wg;witjBgO{o&Ema?xe$b5D1LD?(#bL^@T1ZP7YBU!*Xa%)N>Z`{-Me6r zdD~Ie`b8+@xk|gmp?Z0L5G<0s3fy`XR9FPz48@QFjbil}&6#!wUX>Zbjvp5jq`Z8B)dCF&JAPbD z5YN}GGr+c<%F+JvWGh+P5ovA!8VvP%j|^WotC93tI}c~;rhn43to?#wtQ8>HE{jil zDQX#B>ZgDAG*ZDYWRXaWg>gG;PWV)bvvGSU8%d;JFyfZEF(fg5GpTmEBBjpfN<{0Y z5Ry{2KR1(76mlj`>S2z08%h1^_6ueUGh-C@F~mpssOL~!x+G*mu?~w3sg9l^spsJP z@FaVa&cfJEhx-ZY8}N9#b*oI2k`Ha~Ql1JZTWG!C$9UW{H-npEP{h*G60ThCyHHx< z#lZX%=FK*^`K&O@<3VDq{MLLG8H8(PJ=E+vr`ppte>p+rL`x)d@koY316Sh!l@Fyf zj?~Fsi{{#o9<9bf6v;Z*tC{=l;YhLmq+B53K+ z(-slB6z_S8^o&tgopM>f-I4_r8rb_0q4a)1iu5aYb|@^&3iB(=i7);B5D=>_uPVs9 z-cgmXP!y@VxF(KRn7+Ev+0-OYX=8V2wdhLnMEs(x!uk5KoCCB&&DmWScvjkX?L z?i&u+mRf>y43bTfg4ZHa5-5pC^i7&n;KqtcH2N}w>iFJrmr&cUXe(XH| z>k`cLW~nnQQLF88H>DTf_!ac6ku^s|ANqD+>VX)MmVg1^emAu8BM|?bHQem%V3X){ z-3O2cmp(Qdp0b|ah3}1~wP^TkOi}+|Kquo}j=O#|Nnn()e+J5HLO`wM*Nez|YQl{+ z2PVv=&198s%-&Y{?1=Y$s>V!@93DU8@*7lu?zQgwDIf=^R%|z5$`;hC`Sse)`1e?S?D9uHq*H*9}*N=xWnP8-~Y5#(YdhxA z^!DkAvvTtzrt4uV*#Eo$o7g+*A>v!(y@GP<_I?r$`+P@7&^5YxkXtVFv6k2w^Ckte zkX*%QGp(o(eS2dASp7Of_HadH%GNyT&Hi@_AeN~WN9Q^H`~;!Dmg z!XBPX3jMq*5<#T<060HTpNOtHIJ@Ze3pJX*w^}F%xPWXJGR=JnRSKeiw!jnvb?A5# zQQhB~gouPtmXLKtu-^pv@mIKm&~+$Fh(7V3aCf}t5H_A5HR-Q#cf7xF2lk=D55PG& zh_Pl6gcS+`-5hCBza}AVqq@Vy>=So_(wgl$AlnB#32#^e5Y#?*sHb$`-7%)i{miV}}9(UDiRq4ZAYcxAF8AF8FE9 z7pM;@NXhgCT&LU5{k2KJ?f5l>93zln!*I+Lp{f;8^!~ zoM%zFU|r76k?Oh&&S`x<$evZ%<$zHtaCYQ(swpnyXu}0<5_2`rv3ClcZ)W!A%vO@C zd4JwSh4-dTixtcjFIB3)KcLVG1{H2Nt>x%9WJNzoA&D869@Rj z!ry5LT?n6gJ;&Z5sk8@qOmYcc{hJ!U?dfv=7fE^oSHzRV6hGLcyrB8)-q;Sl8iUJ& z3SbZ^@`6Dt8e+n?;QCijjf2$+ikk3co>FcDhEl87U*EoE*+U$JM>wVTW=57rU4SSA z*4}S~mQu6ES8PyAD8L^y0rV6EiTJOj_Ify6d;_VBC49dmt=@z58K5e|Qa+*%m{4V? zGmx88`HufuiaGsGOL8QgF47XE4218D7wec9dT(4v7dYtb@vezKYOLRAd> z^yu}1Y_6k$PTA|IKk?}FbTtd;c4XA>W*7Oo%GCgq=@dk?Ou#HbY$}l;c1!`{10dc$ z>m(UC3n9al+Z(H{syam+v;X?mC!Q3v%JI1YF>2dh9@k$l&V2Scz?`KN1AolSaMk8T zIFWJ|KUk&NcDo& z3P2k^XegjoBIE_MK=&+YsZcOi3Th=390T|$LN|H?Znqu<>v;ApN=e9%!gHHqA{pZOnm2^2h{En|%xE|)thYEmEPr>!4VUTV}SLbTOyCWI&z<6UDNuPhVmWuvbH znEWYRce^b>TfE2iPnb}7CbFIQl8-Y|q+sW?gfVluIvfMu_$sh@UX&p?Zy|Pu0kU#jSv$Hlf zz>%tZcih!Utwx|7)RmoZwzO_;kV&(L5*QH=cW=?ePw#g&Ls@n=;qP@fxv8IWhe730 zZ0QH5azcJ~=4yO^bhQf}FEq<7J>pQBDNkK^*&3}*50NFC{)U(QSd#*A?xi2=lIliY z(#=9_SD?hk2EuBqBpF0G2pIBzu=6%a#=6fMjk{nZDhG3_c3xg&T3TG@ z^gLUOUiLa=m9$6?b{5i63;PgRr)AG3*iG0GZfcG;2xnqBR&w^?6A{Nk7Gyhl9fvW2 zLK_e8=3R|IsikQX~69!5+5ft!VDb(eV+6DUr*$$Oh!mi>YZkC=Dua2zFbty z@6+#Sr~N4J8Eg%^W_9Q4(q3lVff4F7CSfV5HXp;sxRRCASet7%q9HGC-OM=0h_kI0 ziDM_Vx;g|@8@q&TWP}~!NdWdhV%tKMqZkaUW`rkVS+yQVt&jy1NG{Agz;wo6d3Yizz(PgrQ>*^IXaZ>0ye zKeDUZUd6Pn{i}n^-3#E5I2#Ia5b6hEK-5YlEB&RI(rpw|4Gdzl+rFyh?D7q^-V*_z z6g_k?aBH%Wl)2pjxDb|Re?Wms@!!2NibWc*G|OC%ca%i<28Ap4vzv>pCtScBsO}Fp z#mQ?Fd`T7;-zcM%ir}7peSRu16^8Z$G3kb9ZxPRaoCuc*wYZjeXqvwGrLVb=g3-GG zoiRk+G6-?=rENF7eRO9o=r#o*WMN>waVQot#c^^x6jvA{Z}{_gO5qdH%KyNs9%5#` zliw+UqxFp~ZnFmzV$~x4Rp=$uXLX8=|4xtpqg(bgxrr_Fw;L%XSKr#2Voge|jtXb} zVq9Y6(Y58<3ID`iLXUirdLo@_+z2S?x!k(UW1}bg4F@(*u9By0W8-GtEpQ#z(}0Xk z>;HjLGgn9_MfzWH-h5|cIJl!M_U0kjxRwZsC33=c9JpLO;oxwZ{QfEoZ6$IJ#^j-L z9r+w5f!O#QmRO-7nG@bBek?$u%5_?Y;q3%0r+9>{1lcKEplFYP3D{xsMBTu-%?Dp&Om|{ zcbI)gg~st%#WTR6w#s#WqTvYjadh7$b!t5r5L2Kj|1dEMI*zD}(>{n%NiQ6?y7x(t z!Upp^pnT5uA6L1#-ObJDBz+gA?gtEDjqazYUANWBb09Tb)N8V1u+pv)>=UgooLOAz>LX zQG3Fl6qMi{;nSz%?VEKImH-(AZrz20r4I&Qq$Glmwk91=^`mlM#wu!6+|M2PZvn&s z*Ia4Z4DfmT0II5n@_UOS7c6Sqtj%+B?kQSJr)5Q;UOry?GQsxZ^>0PfLhp8DFszP6 zJZ@pmfSCLdT|KPSfn2+;muI`O^?r@c#015Jk3EQvH|j$}0;Z=WTnk zt>Rv9b2On&reW!av&LZ=mG6kGc z#{KBV^y87Y*x;F;{UlG#yhP|u1)I??s|Qglw$gopyuV#Sr-eK}gwsXd>TT8oL5xyf zHa~nVfEAO2fND7Amrcfp}djRR%WgpUE2| z>W#X(LqVaT@0)XFC^dV)YY;$oL2+GO&a2hA=>C{TIrOkD(=QzNfJ|EhpnJl&LxyCs zC>FG0b-r0pz!8>y^`0Xuq6l_m(+T+;l`X9S=?7=aJE+G97`%R82&Q~~Sh2?j?~fYCw0;0Zbago8`TTNrxXZ`J7Q}}$ z(QFH;LH*!1T<~zdq}sFQCav0I#Cp2#mU-SrxYvt(arrCCpYFW0l1%jj10b-u(Wl!j zOOhBej&t%}pV!g34%ri5YyBK`+*Hc4P7_Q8Tt*fW-qFF9Hj++88~<-}W!Zw19Nb|t zroOc+SaG?SRPOo7x`3UQ{qx-l0k!WLkEHisOxYebZWBV`yX!RKZ@c9ZG8~kc12p+< zfMXE{M2a`g1RCV{!*B*o-yN7X0AZIou3z*F?6QFIv-wnY`2#9D%+~9feo13r_vPWr z{UA-%9^}<*j={{p@lK$GCZkg)h{15D)MFyl0R^cSqJL6#+YvW8Bv5+f02$6}L7UAA zN;v$0>5k{0X+Se0N7}mMP1!eog+XihuYd;8TQGhL%a;CS#gWBlrI5J2`$8U%&~&Bp1=-)$uYN}nDt}Ez+?_a^DpoVUK;5C@;QiBIPH&{uKNmxHs(0+408Oe z?RHZ-MKrVu`ooP=BEKhpUjI_uTb3IG=Cu}n2Cf)DN|c?&4#4)jeWrAJ$fgGE*_ zgGhMoaaPt&fel&T5P-LxMxK|pZyj_N+wX}$f8hKB!&D%StT}|-2TXdj2_ewm(Bt8u z08yF)q4dxs!*se%Xk|?Ph^Yp%TgbJ=;axt{xbYve1c@s%Wn3?NdK@j*r}2WmHu5Yx zO$=5z5trHRL}ovE3+=Qzmj%$j2veMHV?`wZG?5OGpQ2`#+&OAOJP2m_tPyZb|IKAx zJk*B`uk_5!xmSca-?aV#)!1_;+2f_k#q8fHJy#7paF2QyE^rvy!o!u}8V7n7O;TD^M8p)AbXeM~P1-vHYL7N8-|w?-n$(a1ta_O?vQ0$S&%*sqY@Yv zDUQy{O1T&SKns|$)LAVl^P#tk3&1t-`p2sN)m8#wknPhQknqGAdBX0jx*Tovv?RIz zDkL?&J2dFGx-c|f*?9~2t*bDE>w68h81IC>^Z(V*7l>@*j>-gec*imT z6a>Wi_eF@5)AUUtT4I{;AK0hIeM^UK3Uw98Y4@dFWu2DE5OVp_nw9pPG1!$3OmL6S z@?`6qoq!f-K{#(l>I=lR3QRcGRhWAfc1-@H+g>0(3Ip1g&u5wLbSeS)AJ12vqq1+C zvrT=icZMBVJI3qV6@xHC{AG7*YkGym+|B~S3Ao#~=-}a`K--g|!I+mq|k> z#-RPv&JG$Tf3L&bsih9rlRgAFJ#66Xd&__Vlt93E+(=D?xRnkhV3ZU-l^QrP?d-BL ztCJ+uL?6541L(B0mh+}Ol3I?#uGV~g``v1|qjY>0O&m$Tejk9Xb5yZOCs(5~8o#S(@EZoserp?qIm z!6S4TR+F1LD>L>%3e}4jFFfV)A90Z2n*{MC{5Nj|#&ExPj8&pYpneDScpHEE3 zgcdz3bck2ADPQvTeZ2*3HF6BJ2drLMOyqJyTI}xeFB2!tGC{sSE{L!E0-nhh(t(%Z zIhW5~0U|mm_@TGls#2PZyJ|6OXQcLaO~9g8M&yWss>bg#s$(H;qC@@3jv_7bO(A5N z!EhVwm4u?E+(s@({nKrvtkqWRZ-Cvz!$C0M!N6EATLgDl*(krUafi-5Hjbhqw*_)! zq>(@MHrxQzM38U=P=F#xCz%lDaT>=8vKt2BZ4Fe}n##=>UBThX&?f?o2TJc#AS9eU zEn-}HMs_H4}d3^~mmPOQGXwJt0-&a5_yzCKndLeyquUvR*3oemt8z(1*suYLB zCnNb62hKe~rTOPL{txUf=1SoF<{oNccuH&!!sAetp%g`YK5gniM7(J=gG51iV`<#5 zY-_b*^VhFvtXKOjs8`d|Ib0b0N|!6up@k-8tG~2D9vTu;Y6dFP9u|~{hC>8M)|Hp^ zfN2Td#nj%lM3PunU727ABrB^*4(FgfO?bTy4q(_bwjX@HG)(COCUKaMR`9bf`Gl1^oiYMfuB1I#Cp7Hrw$I*uA2=u369@^*m{`G1ZAZC^YlHljDS%e zoIfnOHn{O&PAPwm2NivqF2#0PkcYz%cy+g54-IlwIIMC5RrjjzqZDN z=#j_W@t@JoohYb~V4~K&nHvkOEHAj2z&r6A*)rRU%rb$A5{e)PvX|BknNos*B}5TG zw!Sm})g@t?kQ3PpuX_`zpMQgH{;yBBK#1r1TiwAk|4n_amV#`u<1?#QwRHsP5x8GQ zw~%#gqz19JRYwhmmy=riufy^xxHmz95{$Utu@~D1A^D_& zLm24-FBgf!sUzP%70JlW3k>j6V_BW0nNLxNbf7=w%@zU(M4-Y<{}I#xpt>17@=cvf zJE3KHG*f*0_zB^DN1;Zqtk}a8K-nUu1gy76%0-H7%pQBLuvpTW&wx>2$eoAxIUzp! z65Aj2vpm!CqjEU2bT++3fvQH8m3}vT7;SwmFEl znZceo`D+Wa!_o4WL^{B)6plUOoUZdUie4V+i)siIq)EQo`PasTkdMWe%U7YLy&YAX zQ!$FzLUuR(o-g~bG~}@ie{sg6llR29@9^KP?GZh5e_?LC>3Uh96xiD5uLWIYdkn6& zqEIjgj6Wb055vfA!C{NQLJ21ylo!A_I42oV>{J z>&KBMO@l8H_*Vs_XH?C

bma?;8#E$K%KeRV^5`rh|sFJqCKxzX*D=bZQ^BlYlPnY~YDy4x>37)`-MUuENEml#xAvCLJ& zuEKYZTGeEehb0Q)Xkl6+R``pxu#0JXzrmC=@86CXPL_@t3FH3m(NWWq;Yybo-{f~W z+^5J`<%~A;!RUv23|EdHM(sT^M*_}tJK&527Rp8B4w<@^LOs6h?r3)QT;;o=}sKj4x{r1@Y4a zj}aI-gdv!RnZZ)i2E`lv;32IwycCXCDb+nWc^)=uf*}OF$~#Y)w78=oDdv}}d1Py* zuKUKUCNfDnZBGqe7OJ@Oo}7G6)|6MW+^;`^KP6;e_$&Ye7B|8}qM;0${)Lh8G)UQmDeYavtU(apl!KVc!Nk#foOA-a-;haA zZqPJq{{m5AUI39dB(Gm*tzjV{yaPE=xN$-1Q^DY~to3@`Q+NSfzdAbo9jU{<@)B>n zhq1%$*|41ij!1?G@7kL_HIM+<=c#_$_Dcp4CFO#}Cd3pjSX^~7R*AKOQP8yJf`x0m zznXM!izmh4Ke?J{5cT=u$w}`DZ5c^BN97}y_mR~<2k9U9Ej$7WAtq;U^>NQW`` z2WfG~3N%)6CTEVPPDLX=BSSN_VEci_Pv2M&}!6_mr+gRn2q4uE+r9!5iQaf#>( z&7qLi#q|eq6JTOhSC6tkO8+VMD)_+4)=IBu;cr|GwXC?bG?}qFW((zZ762s#2la0p zwEsqIW1Tr*u_&+;e|G|ZFs%h-G=45-6;;)1u~tBjBg;1v^9hR8nw()$9O=&#yS3Ph zs_#pu?WMFdk^e3;zW6W2cNnm>ELV{!-9dGrS7yg&_rdbo{;7W=M;_ZeKhHQ|Kj7om zt`^LvD!?(9n|Qw3UURr(d02%e?Xp(2TX{L3-sYhb_B^v@Y0c$U+TdYhW%uk890GIN z|8zZ-k*=slVOmu2&s$ntdOV81Md|-))a~ez>-fZa+6RfdWvS{hJl$U9g}GR-PVCzj zZ4-VQ>T1`@pG$57+IR4@yh_JU{<%}0Z+i9K{+{*P?ic(4M$_Q;1tjk7bShIyH<~X} zR^5HlKwK>(DR+TS`Z9CFhZF%)@~vBH(-s^PG7266Q8#6cKRf!K+1 z(9jSC=?U{f{h!WnA8&jUNGZPG)riG?opNrNbLC0Nab}{!;r!R9Ex838{@IQ{$$l@G zXzF5YY%P8Y`FAq82lngrgAR4%iLC-9tK zcQCDcJl0^+Lp(^d+8pBG9+x*q!JSOzB*Z}e*iMn_lIybr#gNlCL5Ax)7*~&4} z9g>pkc2Z^XV!atxwl9l67dCiu6*V$4a>ak&^H$TwC;iwaWY!N^Uq(Ul*<@hG%Y^%} zpg<7XD$jLF(QM3C-f2AO-tO!JV)tcVx~8Tx%5=3c@Rl^R*88gDGT4H0WZiu-&c)NI zsRcH~RuCw}k*#T0*H?P78OaoOMZ1pDJ`_ERhH(D28>N{sq`n+jp@L}mG3H?vk7k%h4H>+ynk|bEcrz@CVdLk{l z7v04TdJlg}&tQ2(6bOvQ&s+uQjz}uwyI^W%>OeX7}?ba@hr81C&zrF*z zSuD=*o!vQ=8gR$~GeLCF9IAYMb&<18@q^^y&W=~)#8!TUH1SDxgTNwst3ubcy@SU4 z54ovtq3f*t{fTbfHdVHjb#!;9mSNR+n;M$h0E~N73qgK=czXK9UR$4R;c&cv=9PqF zt(*?`z23@r-Em6L_)KJJ$y}f>lgVuMlRKPJK_uk(x!+gCOJ#*CYZ||xP~Z;Nr2W8G zMr~C%sX@yb^b&smz!xhJ-SkV7_Dvd}5(#^B6Y`k5VMY4R$aDMyziZOorfaj9=Z5Ei z&!K3uKpw-dXuu~K-9*BEoD*Pv?cI(TJgS)nyo0VX1?zRkG<#dYD2THY! z%eh_V8TSpjKioI`4!Lda*;7M z-W&|L^Upu-m+@B!H26-OBUSvIlXXp5IdlI++1*!q6$QKPu7n@H&PR;*u#1Ru%-z>F zx)b@uH*j7g&CBvjx>fI@q$f#>+JWTS+Ua{UlDzK3k3v|}xF#Bdi$WHWSTg*(q(!3)>il_dU1=X!Q*)$_;CpHC-RqE2%u2ty`tZ*Om6 zxfM83!byM)ghi)*A9wJBF-yp>K=5fb=RLWAL*GUMqF->Cii(SerJo~}7LpyI!*Lk$ zIJ<-w-0zyQ+A~N=?J|EO$U&j-T;J~?cU_9v=yry@=StbU*^f^VKfO{yMzN+_c+omy z?u)V;MT=h=9GBnmu3Wo?iK5AmSd~RI_HDxl`?KYNfU3a z@6KXf_SbXW7=N|Ho1Q7P-a@qBcJ=_EO=#<;7LV&DtQurP)Kmzio5t-y^9TpgXq zyGmN5_VwjD=6$ccakE8Es+=q6o{FE}&0;mWO%$q&_|eg!>1P2!50jb=tlx{?heRzl z)v7N<69kCdGyyG(AW#VSWU7+EJsgW*q$-UR!p_uHdMFuO?xWhv= zY0)eR6~bKBk5&j|e7Dghj(XwK)6>xbeZ{W^?R0Al1XJ`QG*wkQ?xN-NMHza%q@)=Q zW8E@>Ub+Pr#Y2@{yb41`A@de+xihs{Kou(@u!0X1(X$7g5Bc{I26mh8kuuo&p6{ZP z0iU!6?OnhB>LBt8$fBEcS=;`fPjP>)cpE$HrBizDRqsQnd=z3~Yu+`8u(-Hpn9A7c z#5C;S(RM~YSC^NM_OzWiqkb$6L&w9I(B|?v-&$)@bP+6+^enr-n6TiS8sdEBz8-;h zdegi@R|y+ZsEt)#%v%gTnYYO9GRzIVoL*m+i%cfZvX zbNW`6hPFx4ldpy*>n_D4Ay-r)*6A7cmEz^ZXz;oM!YeBcTBV4BgSXLjJB~szacBn@ zPcu}&Cid{m#g-N^=0Lf8RO|@x>gNoqS57AJ4m{b-PdGE~^=JBSor4RWpt}Uqe?;kL z8o>J{ZlRodp-cNt*-7G*(GQ*~_H@z+WJ&-j%29Zu!?@c?Ko@E(!A&)Gk>-i!7?-ev zmt_tI=i1s#4wfO#(KYRi(ubqtsVUMUke66gaJ=z!kTcp^1Ba~rk49~a0R{Gyv-W$YV%Wec5UwavDkawicJe7 z!5{kvK|5rL^-ST!W<>tUGnRPuQ2eU5ZZlSv2eg~J-c#^Af-h&(vPWp->W^^8dJXNT z2VK~Pi(2pRF?#KIBb89j@#toE8OrQUCO#YyjXh)juEsv5tM^pG|C!_^3}pG$SDU;c zF2c{CNO6^op<{K{RWnYFuC(dy&G42eK}+u{Q}>jwV;c7J4C;#?Z!dr3dUZ{xzEP3% znK|H*AF~No2Ho|nl7PtMQpv504X%)dH{ll#@>RWjGv7LWhc=uD?qAn#9*J^#+Hm5A zcU+uw^iUFYb9VUHgFe=i)So~>^cbsW;Fy7mI?mi;oVOS6U3l6{+!9oKv&;bNQeCQ^r8x`F1dMEl)3$3VLH%eZPN&dyA0w0eodw-3@JElwkh%#~N3?gc=^+7f*V_LUD@kUf)%=cTz&4y8Xt>iScT2 zNxs5~6bj?-_%13M*jY`@=)J3`V4p}WhaTG64zrr$>L;l+Iqw|$+)A>PF+K1a`NN05 zJHMaV2%;!Ddkp998feqqP5vzKZ^c8N1;AhOe-#e^-(3T!cwGNgygTp@S}2;K{}oL@ zk}>dEZpYXWDVqP|Db}2wr)3L|W_BLW7n>#}CPI^P!GPVQm`kj%{pDiuJ~J6H6v4!H zfey(~@Nk>t(>atg3dHg9rzYFm+ow%y=w|Dz$=-vqSnCa6wEhLSDO+0KaE-Z2fkq3s zM}{TpA@-@=^{x{An%M+esO(pcp)R})V>>rPv|FJ{_+M;@?j25e>6Ug*V|mmf^N_vF zE>qjcAnr|gM3?^00By9LzXRoGyelz`vZ(Ij4?RB1O8{ksf`*Xcqoc% zQcp4cO$V`LEI!v~Lk+4rK6={`ryQ|Y;p5KNa4l>d(Z^N=Rya+)wHs~ieuYd>vM0tgv0PT55H&TnQ@eW^NOB*_gFESNz){BlhUVEx1^_q zOQr2Z@A9(4fSvgJm8JEaKhBl#QeLsZ>SuJ4%Rzm;wiT^HulsADVp;!m>s;8f$7_=`yQdn3Wa52)pm$)0p} z`ZYd}-rc>M=W1V9XS&m|Ri-HjcI)QJWLybSLde@}Q(S|E- z_++^^Msugkm=_P8r_*b0mO^mO=j=UHgV|~L*Uz%9;b9Jj=T}J#PAZ|qQSBZ_rM|eZ z8g-JcBj%smGoFLg)U@NKDTn0TBf7z==?e5=r*5pvA8ZOvSW}z5=dRsL-Djm|S!`M{ z%NH8a`2LypTd&Og9JPIR#YZOMr~|@jV;Ui9`>T3?SU4VyEqF&M+`00{&=Ai#LTVC13KGIUxIH{R>dmRO#Fh!lGZkdP z3V*H$Shk!-K?C|yg;&6#{&!7W!#du^W=)3o6OLxHfhTQk{l)L}S*CQiQ6%iPNw+fs zSIj?d;kuXHxqN@KIzp=om%~|xk_V-RW6qUk#e+W$L-cvJHjDU@`mV){J<=BuDgb!7 z;WhW@${$y$V8*Bt=)SK69LgXb*K$n6RknhM4(-D9?(a%AXsGEV%)XwOx+XQ3rpw9M zs$5z|@_>^r+?S9Y~+k0awxp3j&Yu7o5d;URROVOvswu& zkSH@)2@^#(#gan}i#o1h5k>L%Z5HT|qJjCF2GAkDR{Hlj0119Tkf8DhzVydM18eX3 z%65_d_vPfkQnIdDN<>X+yhf*m(g)$O`<88DRiV3B~teYvEc~Zo8I;tfQ$nB4t6_B(V8e)-`%Z^O*Xls`;5*%Ygqf>!_hA9@cv@hy#H-9c-H*!;$Pp1KKz4H zkWGI6B0Nd1SEBYA(hs{|Y{@`yoOJ%e5OEsI_3AC=Ccr!^{#v2Vqsk~DYMOVh80#02 zD&O0A8ye_F>uZuy|8yS+wEFVzl@?@b4-UWanaRSC?cQpi-6k*vIH!kA?-KVaZ+g^;>iqQ4sYzR{*kgyL5-2X(* z#yID?!k3)hPX~RGTaz20KL$p|G52cd0E13%=w^#8AEsyQ2}?-C{uCDc7jiZL?Uz7z zjE3eitll|+e)WGWSsxgnvj(1gIgW&y?Q=9Qn7Yv z`AG91%?GZQBniEG|35_WZP^!srwkXyDu|pUFZWO?ANouQ9?32)3dFZXz-QGP>4nzj z*EN0EyUv42XsWqelV;N(y;R|G`^yp>cuby$(T~0W*fsC3{cw`iBjCvAxsn@8B^?U4 z?@LxaX*D-Hkntv9socYL(RP2?Ev>lteelGV>HK__W4H&C^Wv7;O_2ru&0f7D-BlSj z=0N(u2DU4af!z;OY@{DrcrAk0Q$g4$qvw5LAtgUQeq zH7*YgzCSF@BHO*Q%Lh5*VGG;7wLvG07$THlsSksHoqQ%OLZm&*k z&whydfx(1>GZTJ7UWKTH1Xl@jhE`AN>k12k>%IOn&z{Mtpljh)zpX*5b04_U^Z95Xyq_+Ul`u_olSp8Z{?nkxoMz6WL4PyjxY9qarV|xRjuK-@aCX`f`HO(Q3BE_f*>Ic(nv`vA|)Nt zAdP?sQi6nlbhm&T1O%kJV}mqE*Y|8Z=icv*@%!iAG0wo@akKYYYp*rm`OG<==Y4>t ze?Nl$dk-kP(K??oQu+KKxfp{@@X>s*sK~DB%Yw)!;bg_aYqdRpfI}crGFw9UF(win z>a#ZdRKRIB4&1B-6JbI4I4B(!aPqHs+sXnKw4{r`LGjAI{I&E|4Y_Nx@H4K& zG71fSIZuznmY0Ju5q0}B42(?9G_PNOj*Z>F0y^(UzKG6+>DFH;VuSUR4}J>;08=Sl zgGMUSH%&7bHoNuDu9}+B^So+T`T@1(EkWlV6!Eu-{p^*ks9BY%kvi2eJ;gn>?lL)( z{x8|NgLW*zOWWxpWwsq=MlH;HJDr_!Gl1t{ZHPCgGg!h0l2NZ}u1Ws(dagGM4>>CVZ#XPJGq3~2v-V|(WoAcni zeDjX{SA-kFg4vDgMM@X*H~L;N!VN=}%7{cyKU{7Rp0IbP9?@U2UkO$q^{8|rwN6yXTnXi+YH7Vk zi+c%{J05)OizN3BlODK|pi`v%<^W0mv=QsjK!OYU`XN!i>zb*|L_6ZGV~;EBRcxCfE_w{m3Hxezf@j z0v-Bez??AoE6Y(c1|y}kSnNUF!$&i|R#5C_z~c~XGaNpb`i!yueGd=>AE6l^S_Rx^ z3{DRNY&_TghHsg77ezNszdh2iNq6mfpTxYh>2&?{*!<<$xPv|^ zV1+ASc}Pk5?25SgMi^Jj(=ROiR@N?iu+~-g`oFf@C zVdWWz>h6(|AZvb>C9TRoLUd%f^rhhj?AYNgw_WRqqvD^IjGf3|Mq3US(-QkM*jgOV zObQ9oUIkAu7~67w86kKOPkjUd>(T*t#(PZPK_7cQky&qv{4w=Ne$?5a>n!Zp`97GmkK!1aBVi{P~APGN47GHwkY~HjEGN-=p-`{A!N1gzYN_)Lb{9;%$Ev~O-9YlQ zLzF*al-g|hP(UvB}u7E;_dybXEwL=y$v?v?~}P$YdGb1F+Wt3f8cVu zk0_m#r=)QU0;)$Gb5K)@^|@)55iE=vw+H?-xU)c%e|G-7+v2*dVA9$#aL zbIg~OEwaCbGNahL)qnfO#%DM*W;a&tq4oh|gX-4;LF^~KAPfo$<1@*|c z3-Uk+a5^9=1y3CCjb~GDR!pg5Ow_Dy$%up3IJn$zXVhpLIG!+P&3`A^2dK%DBc;gr zr@lQs8eDeKlkHvk-~6w>Z}cc`SXue<+u$Orp}-ojj>d1&2GeHEs}5$y8wK6Zqx;4q zseR3PE8sc{$qT6cTZ1hl@9$S9hf`-2LXoV@ByeNdD)^Vz67bhMX^F{hD+C~ zFMX8vxd@7-+zWRQSB)=Z_A(uZG+RaleRvvK`iDMN)v{CA{m^bKe$CKLn3jb^c5HG` zZjPgT^eV`T@%J+`kDxvW%DQ`UUF?T#DhoXt-hloHtCB{+oYb4fxghubg}ih?I3}QC z5vAVepPmIcCmfATJBLbOcUyl^?NI5jx2wg>7~J|73YQ*f$pu0E`#-*!VR{i6!I{=O zAf2GdflwNa1VtQ%$^7yh0Pb0&DJV?pltj8Ee=F36i-`*Fb9%Z&&(ABG{CXeS(*^ER zgoc^CIF{)uc}(k);YWt%aYgE2U(oa;pGesk{sBL_?{0SR#Rb&4W7~S-b4~1ezptO( zyXz(T(=2h+p;-?hM3DgUiBn?c!(($qnzUio_2*!o^N?& z$$&|zc7x4iIbFy+JIErNPS#63bSVx?4%LL&YV_@<#SPQepFj)wF$Y$pQprlsp84^c z`d_2cvd#K=C@ex?ba$#5Gsjo#sc^17=jxSrBhGQ|ywV~og)T60r`oKvXDxl6C5f7- zT`kkbpY=FEk{afiuUzK)61V>Y#q3J-@s|qh>{i;tu1Whw*cJb? z@$91Q2f&YbIpSX^kG;wD2{x0v`3gsMEr;tj1w|O*I>T{W@98UPVz7r zi0vJkpdNsET>Erp_4oFbDW`*u3cn+G8LV)3@AkAzU$B0%+}KXXU^Wrib_n`JXr;iC z1j*DzQ#6MlAs z0IZ}w@y}ECRelYG#l@e4+7C|N6tKi^?2_u2=*q3u2svPWpE(goQ~;7Q-5dv!EiN=9 z6yp`J$8t|}h{%90pmR^72Xigv(bK1t**W!HVPMfPD4GYW{OiVw<+FA6O`DW5DBjB~ zc>}7el5DYdE)-Xd1{Y#XKm)O!`5vf>ukziz6k;xqe_I9~SGSDDP=Fp>KbbE$#G~s| z_`y(1{mbQh#DQ*pSy^@S6xIpDVz+J@>wZQ%offOIbm4HPTT@~AKeL7%ePB^bX>Mi@ z$ry_a*+zBAUMfAW>hZN9bAXJui&-{(k$6uA2vsCUH1a!R zaPBKr($7_zk!UdD^gp*(OGD9tlsjk@%^25&gQLyxC8Y`clt#M;tz_q(>;Nx1UlJ+) z|9>NN-h>WqIovTi_ko{|o`+Jd1HXGrA9&jQv!fMN2sC6vD7mi~DG(ObVPh_D27@VB zUG(VMiyC=J%nD(M$6uCKQdWkpN5oVHjFU^3c3j}%&F~_1nLx>O>ZETky8K}DhDiNC zqh+;~dGQ&&T&&FX8m{M^HO zLQ$AO+u%kwj&4JJUOg`6{^$5$J1DLRAPmxH@E-)!h_0lhr(XnRZTf`%w!!_ z3w(JAgshqHabQ~Cx#}%H-_LJ77d;~#AL+VxN{lsSF?LZS1t=}4J;Yk(+S$#l&>dRHvjC^wb%Ec{B?_K2HyR68NO*ZK=&{XT`GRScOWj zEihS8b09Q5 zSJO=(_UR+a{p!W0E}W$9QF!xx3$1V$!QL2@A)2vnkrpUD?`r4!@%5&f+SBm3CF!y1 zoxm6*IidwaM`n(nin^Ty+ptfU1B& z88-V1bY~rIeWB+!;~M$`ZL7y2ISA9RV~FZLEPOX$kL?o%3=*Qj*M9oG%N<>N>x@P8 z?Lry%pl9jZbTtN1!zU>l0U#)2Z*NFt)e+zY_~CrkW~svv!vm+adc4ukBy83fBlW{Q z*6)D>0|UNTezsIt`GYw1lgVY2uN_wJ-|fo}lAkZqGIugaN#Ye63Wk&qFj2k~cQ{OW zzUO~ae(LIYpPnk1+ZQ<*@`WOyPcMrNU=t!^zG6${SkHOmiLq>|bnbzm-mg=lnu;lA z1RQF`p&BZa7T432{q3prYDixbzvZFB$_bw5WxA2j+w3PyAY&!n&vtP7Ju z_&~tXC*0Yypu-U&=;`ZJPrgEsFgs3WiR;Jm4t?Kq^GzC{1cW?Wi?=XtaPoTpAgkY)w4nj5H&W76J4~zH>}()c z+Ms-$qz*>IHSVDEnsu`hUk@5PxEBnBv%`QANC^3qHG zFhDK8g&FHaC2pyQ5wh@er$P4n@fb@pmMak|99-7L#ka;T9k11?__w@gTxd^r@`;Y9 z)IhcgrA$YCmpx*7ZjEFkB39$5fGp3j^|!S^RAFdE==)q zJ2(nr519E}jyYnl1RgfEb?5(cwjD+SY7}`#2XS7EpGWW@aICR|Zi z^xz?bpWySCl$1P~Zs!w}fk;S!20Bz-*FCS&EM!iO8hkT>-lFmrbRX?lQuseH}Y0bOB zYf#`5Tji|Xpc$uaoZ?et7b0i|Nx#CeSR;0FZ>N0m%2*Tpos0(iwo^I&Dy`$^_2qTN z>j79U-ER&wA_=nqfQK=zA_`hny?of}yk;V|#Op4s-WFGnGf;AAyk=CYtzs@rNmz|d zc*ReZ4KKY70=Ki9jCCaIPuG@#bNop{Ik$2K&hT3fD=-#6G)TwyB#3m7M7&|)*4Kzm z*7t<<^2=8@b*EQ6>&*>DR*Va@E$tpRjXxm;zCijoW9xU?mSoiz;ubSAGh>`tr~|BP z{uIsdT9xa6NKA^)kusStPJN-Ga;;T3+kCYM^FlN(m^IL9?NXI5!%2n!oAp}q=^?7( z%|ZPXcsLdAC;z}d&7i}GXSBx)c>Y)}974Z>9={lo%ZU7JM?Scqa z+4BAux(V{nXSEbw6?lO^VXkziYa4Ejg3(nN-d3QUJH?N8?*k5aen8u(T2gXya9YA? zu@G=$cs?V83`p8;9BdzVDWC}h5$VMbwZTs9#~}mjV5Il&-@hv`X=P*w_r4i{Jt^*f z(&4x$5HxQVIC zL=f&OPKx#20jO z8S5$-U+~C)_a#3nJC|}%_P|XTnV$n|FFN)yC_MkApZNB*HY4AN{@|h^aAub=(Qpcm z#jyXse@DY6EV{4$exfis!TkU5&lD7vJQ&J+2sv0ibMjAfe{XFjG3Q0M%n9fBvA9cC zP(V29L;FQgvO&Wz)1|+)`_&tKptNHu8+Sdg4VH;VY^RkG$mpc^w643B#tAJ`e2z0b zEK#tWe56SD*wMkr{MpR9=bS#m(aM8);raXDvx&Lf&FBr=?cEniHUgJyaHzXbv6ce^ z06ql4V$0RmR+@aftE(fsGnpL4F}95rvf~kW5XaPS@?mstQDMTFYhac8}M@@-p+ zXpo$S?Az+{*(ZMeHP@qk8`^~!H`?W0TD37rp(e~)G8!UOT5W(H$yWd3j|-BQk_~Nj z4%a#U7?ACq?LTz#TiY>mSU6hmhQqg>Z4(Fy!+krzJgy!9zY^2e3*7?-R&Mfrw5phw zJbB&`s|P8NnnY<@g{2B{Gwj_F=VCYQV4iMoje_8JP6HU6 zB^zwZ)@cVpJn!K#TtLQ6_uLRhsmdTAjDc)uYZvdfXZWWSj92tfeLuUKBbmFy4$q#= z)PYLmpvYP8*;^6kdDMQC#+!RY_V`o+euvG20GYTd&i0K*iTk{7A+)pfCs0{Vv0eYI z$8@HA(CE>h!M3>Pqq~WzQAMB+xQ*YwM@D%i&NsfQ8I6WlY1oN4!S!gF+b60hW3$2w+2(BfdG(z9<082L2q(BrZz&3rU^+M?>-6&ZQoQ(?iHca5u-?R|B%=Gl(XO zOm!-ctqMhlLobxRXUdny4tk@=dL(Lf&;<4V{i^`IWQLEt4~VbT4x)%Z!ICb~3$bG| znnmR2Bn3EWE?h3fppMIv+po>bjn?k*n;#C^thmXAM`JL zKGID+TfgGwNtv7oa&u?OYU60*n;4RY4ttTH`1+WSabce_kIZjjQV#h#M9e!0f8uA0 z6MY8|2>BaEMzkxrnOfap3R$-n$YEb79u9#DEG8zVd$#!8#Wp|j$wo8l-8T^8qcc7*d%BQgkTZJEHvR0je{VZ_UGQVU0HI^LKPZ2Ke zHcv)1nN7{4HbME2&V5;`ZDK_bc-0s0l27E)(ihQ6V5a14vzyOH^s}9RtvWE{b>c$y z%ECgfa^g#wl|XOr7RnmHj{=QBWfR}4Ewh?uHy>MCDz_PW9(L4flZQ4};4>mf-t3jk zea*9O{p4Q5?BPPyoU*_VHtRb~lQ6YO0WLgCYM|D8+1ZqW0h^ES(q-OsDH|?g#e} zB1Ab0eH!>wL;vbGI1YGJLX}PxnU-$0g$;9M1VESUgCnBI`%?uu}M0S>A*3 zKw}!?!TB>|^UrVMJed_13XG-+~#*&b%@r0Z^3dUp#hP8=OZAmL(_VVu9I!)E*H1g~qM8H< zoxzDJM>b@euMD{^(jj*M_LL^~KW4bI%*fgK^&8u%R!*dsuD=86AIiaJ+!UMLQnaA_ z0}+&dAjb>}j5R+u8=Ho{?04IwZ75|5j9RK+R!&eL>{euGFQ9{W6mwtyV0>Z!2m3~c zsAjSTLPe`|<1XMVuq*UM#Yz(K^J$s*1|0CB-u@Ds_0$h0Dt_B5f7?sYOZiq?J73!N z2K#-13@5{8(8?6@ojZfHbKI_3LwI}dj8Ww6Hv`7T7}ocxFCO_!!dI=%&HB!J#}Fu> zP}L;e$Fi4a-DzdSTyWkX+uynRO5OwqV)quDYE!^D16Ky#|7dLg9@*A*arK9IAEgl!b?*%EVdfG}$y3^>iL9?#_jw zoPigEuWhYaIn=~HqR0((2__)$ zd=94^UEIxwc4G8Js;2Iqz$MY zY6bNV#NhcFlSyt*VetgcNtRB^BES=78c!gc-9Au7RqN!1;J#I&pvsA<28%uZyfcg@ zOSfEg7Cd^7G9$k9*70cY^Hl1jTbAt1>&igr_M=FMv>W@jYFnv_RpsF5nCW&q;yRkH zl|qqiQn=&)8x%4$N}=&-$OVm6Xp|y6N2znH0+fpXiCyFWE+6_Q zw4d?5cwS-Bx3u7g9|5S(o}U+u^xXGo>ZRLt{+w=81q=kfL>{ZB_i)IskVjkQ z_{`4p6}GCTI6nnF#Rk?q-?dY{UGjXaB>lxerSh|uf)(Mn=u#$|qIzK!^C5JM3{`IH zLbDWC%Fe)DFfEwVX9HjPK%t9$GwU-N$_6OUd(R%E>OlSuVE{F5;#|eahnNG%O#WuE zC6twsA)NTtw`kOT1ov}@n>!9+_@m3OZd1*$^YMgH#o@lQj5uCB%rr?+=zLgbwd4dAXs{;%;#Bc}q5t)3A+#{xrI%v6-iWWE#4T0jmG}1dVB+7a4n?dz3~zxGiawRGfJn zR%O5J(Z&C0WTvB#V2|60wvB-f>K#ATrfngxwQKb9&7E32(*Mf>gz`ap{N?6`5I!h5 zAPYk<1()i*Cgh&bEgZ0f8psbk{j7WewUF8w7Umub8MqQY&s$LM4iqN57e){Zvv41& zM#ty0pnYm6@%|LSUF?^9Dz>`=s|*!%Ib7ER=O$&qh3s$5qOfS_Odo>3%a{}!8Uhga zm(Ep>pW+8?msx$d)R^A!DpZ$ zVE0$DZ2X%-Y#72Vo;Q3y4097?5E$sqi*s?pG2M19M%(a5^*1`VI24e>c>u4D3 z)4RkPoopkKUXQeCRG!Vx?Dwf&c=sdL*hN~4JllLec(w@>b8%_G7zGWDzm~Vfdri&E zHm1BP9tsL_qS@IaNb=x5s9+{fsO+H`UvHdr-^T&wg9o?&>^%{{d*FWDq#GZU9Iseja~-6!&{ed6hH+UpY1pkCkXXTUhmq%e$4S1~_PDJYxv$0lpPs zCaF*pjlh%~rM2Q=3kV|DtO!9;yo_>AGe)gelmXhWO^dx|=enXI)43Um5E&VVL@0oo zGH@ZZEFQ?vheI5tzu_ZjK)a~7&tjvk6cqks7(peN(|`B=IwV;?Vzo3Au2*PlYxmgt z^gL@Ep-x{sX`BSDmvq2;2d| zvtkTBcp{htHVD*<5V`w{f^JOIir|%iHUObJ;D~^sbKMa0jX?84cpV5?7co23<@t)6~n zyZE4$K!H;+{zkdSy3Fn=^~y>PkRTK3a7X}PqE#rY@Y7Q$kfjB1IHlWKY6YG(EbhbN8h&P%PH(v+p{md3L#g|KI7 zDE!!Xiou%G@8zN)!pCBZ0%>fF*B3gvIt(p7VNDZc9#X7U2LxLA#C8vnKHubE*K8&_s!@ zWF~SIt!Im0Kd;{B&C@?+bL#62{0|sw(ZmZH7cwX)5tJxIfN@ z)<-)88sCD3o*K?9SYZzidg=;b1PG`+000o@>Jzaogj5TN>zTcQk&)Md4oQ}Z7z?7g zpZ#)|LGeW;^%za7zWy5&7xBNP_ck=!9I@s8**s761zM)#KWun`2x{OIsYi^Kt&2m8 zvhloKRd3esd^@^6E%b?+@$8Ob1&CJa8 zm9bJq&Xa+T$-oI(pMuO_+BE%mUrY`%6{D+?j(d$=Yp{_v zTCd(ScLGXUbZMo<5t!_7OdL;mf&MUY%sgz^ti5*-#RWS|JmhPk3UfR^S}kBN-f zSI(E(0?|t6-Mhq#fEyJ(Sfbd{!P^KOTQ0H%^1joDwOFp31GI*ZHe+z9)EBPq9b;^B zsX&aKW?V{taxikKQ{SzYHK)J<^>t^)!`V(+o|(T!j`4kAwS)>qJm zw@~HtCA+kp)u)iuzv;s|=#1Pvn+J<;- z#tVbA_IcQ&i$M&JZ~q6wy=hi zhlgs6?;PE~QQifJnQ3n=vEnEf+Ow{IH+pL&jCws4y2o;lw6mc@vP{ni^5tUZD5OD6 z-Scu_^LtJ@(p<^bIbfE5Xm!)-OJtPAD>=(#=p@{wPgQ-MwT+esU(~+PX2K+a&>yPP zvA2v?V0&A@0_whjzR=4zbI#q~wtvvadNq8l6~ucouyS(RmSmZ z+4JAXpy%^9rM^#A4FwP~C_~h^Js|H643e?NLvW0(%_x|%&s-TOMCID2G%U}AA4AxX zGR^;Z073(Flbe_eRbxNsz2*M5J52~pBP|}JR{cFhdk(S3Brh*bX$clW52>np|DBSX zx(fGX%+HuoUl&igT0t-(v+6iT5DQ@d4QfX2d+ZN(#W_776-YRFiEg{3ZCvSXg3be5 zKBAip8sRmexVBqYBI5NufrR3E*z4Lr7vT}X%83|fEg(Cbhl-9Obc?8~^$!*9{c69Q z&&NeA3N=;fz_bOTghxV0^y*ch>nzBx1+CuUTzWN)4E$?lh_YS<$iBL2P1}J|gr}0u~)M3+V z`fT~^?*06XfuP99C*39g;$i9wbiIsr5UH2W*6IU^^SH9meOF-#J*ouZKqt^Tf2$j{ z0-{yToa@`aQw<`uG}gQooAh&RW*a{FYw4*xVI4S-^~KYd0Ab7(7niaIUs(c%X%(n~z*EVl*^h zyz7->Jzd{Wy^2oe#p+k(;(@q$N88HjlSWDCbi?|j$nPa_W1)lK65veewF*RjGTfVd z{Ak_`#UR47495yNnu+yrfC#a?Y?U~;G$mvAApMrpEzH}A3JlOx(K0JNdeM#5htVjq z@@?0)kel#i(R?0sz`?|tu%aRjuDbm9kZ0f*p|yWKcKTI71Rj2BXnf7XFfdx57p@MY z6~TiVAijhC$Z`BR_boEqHodX;)f*JWPV8AD9XPb^f0SiNeT?`{q00fM_q?gqMg$+6 zlZGdb1kgAL@j;;C*^9U8!TVAxbqK-3pIWl^XylvuPT1}WFCh95&5TFn4vP|GP}Ry! zc=?RlV@P{l+;Y@XeZ)FUx%k6^?|a_leOOdkNlp_k#oe{Ohwc}+Obg%Q#TKTRPPL0Z zqN*Ai!5O)IR|VB`h`k;@?7b1;_U%TWw^Kwys~A+b z;#zGIfSu@E8?KbJ2rjqgqdevZoU|M|Mc|?@XY_j{G-T)ar@U<)dVOd#%62cy6Yva*ok)`sA$<>4 z5v&K~px|jd8I6KYTJ*F5kRidW0H8iUbac{ME1Mk0-B?@(+QyD{zsH+djTtuoypTUs zZ&S!>kM|RpUCBDlLPoR1_Es?O?fi&_{ize*a8Vq9Gr*)fN4j74mb*6Rr0b0jLEuQq zF4MEAMTb+&pCBTV^${6qM07v75T1Zn><=CU!gCJIT0t=nHjbHc^@Hv_-GP*HjpbdE zy}L4fFvA6kIieloC)5Ajpp7nm{HQ6n7f}=V^|ShRkM<;3;09W}tiv}YvuNkRxNd3+ zsFxdk(>J$3@~kDyvC!u8{`xOySIEdrum6DHOnRlR&3#2L(+A5l9~Qoac*$$%B#S05 z35z%qg~av0b!^=gPNeY@pf=KsusZf5D`&UUZvN?bz38O-0ikq!;(PARlbP+w+t=S& z;U;%LM+N(P4RnL&u-LxgdD(fS+q%;1^VM9CnTGu{@!ugDKRRX8;&QrBK0vTwU-Itf zzAdv}y-U7GL+L*e-_Q$D@PcW9j1NW06H44@ru6iDgV8d+5BACJbQBk9Ll=f1cJy9~ z9mHcCr1u26jfK}j=`7?TNzhnM_s~OpdMTRL&iGg|WFp(?jX1sSG2xoS4`kD z!Z5JnUZ|;n106EdQD9zUg}LeP53*Y~U`-kKU`3h&iR1wiIi0g9BVnC;(b^ydyVE9N zHzcSXV0UvPMrK!gt=;mm zI_98ijQuP|1?*Pe^kgfr8fVtV2k*2aFI6z;7AzD3m05`fSvI#`Ntj3xT@f{GRolr++jdnLHIx?vcva~ft_K3u!< zg6)Wv=G#|)lrz|qnk*#4lUV7=n|7=EVPosBs;qu>3r_W$mo}od>D-HzLq;Z3AGn^1 zSPUt}_3X~3K>RntE`=o{tY~P&;poh4ea&dJqF1QFgQ@Ou+T*OpOfID?cb~M!+^4A> zo)EvJP-50?d1q5n!4xae*zwVA$2D9R&mXhGI`|6+m2Xq*KJjwTS9lx}YH#$hM0O%b zX?d1f?KypXN2sg03h9(rzpD#9ksBF!X%R$3r=0e9;6yaaurT{EiA1dk?L%u#w)(pQ zWyiUhZ`8UvdQ+ors7O~Tl6fp9n`li`*?9!?TyrHC<@H?)wEX@^a99|-E@_?a-njcj zQ4#7Hcb?U;+~TtrVvp;TNMyr{hSntPIUw7Cg?|1I#I#r*v>8^Do+FqjI-bWCjqCy6 z!}Txnp&{@8^+k%*)O-sjoOkr71ccvU2-BV^zlt&8s$jk z+s;z;MpxI{wQBN?ZpSMwnSRWfP`uuU9$Rr3jFk?Vj?;HG7#KS53|PC?s5vgNNg0g+lItp`jbmWZ3w( z(B-q(eVID4(Z|1Mj!!+deoi3w7g1!#i>zaHr})?`oj8_!!iUZ?|FA1$=8Fw(i?lBv zSeU&zi&(6(i0_2PKA5#i0wtkU{RuA&yKr%JeO*UpL`J`CgsHjbivhLs;o+fu=sVU* zonSa8G2L-Ld4UO2BP}PbvQMv!)0%4gQE(DC#lIShip+^fg7^};B<_@W`yJ_{?0@cH zvkDXG?rls*PuZqt|1)^DN$KX=#xSiDd1ZN5>T)6!}XSDAf(`|}kp;dVf&K`~{1)V>inzmS$H!XMMC3Uj@tg=eT zyxwN>?k%mkeeu-p$;rv$@^TXtkDmsYZ$`B`>0iBi73KorUb=LtNEpAgioCxcrKG-F zljeT+uAZc9`w_q0A|{OJirlHYf3dw0S;X1Cv2pF>*ROYP?uHPG@ydvb_C+6StIz$EExlzjzIinZEDl@q*SB%gB-=1v#CE?2HMH zdy!jPy-Hcx#Us15dlT(0VvwF=rwD~$l($xXX{lP<3;M@#M2Rxb8<8%w5z_s=y-{kb zuk7rI=%ZffmI{NIa`;*zJ$qu~GBiv?Dnd$FnPl`NJEzN}R2K^FG!~-#6oJHJPQARH z(j8-tl&YlB)rI5n_5h3Z>fN0k=_)B^*opFO9YQoG9qSkN&HGp;95&HN2fplJEn6Bz z?DK{&Fb>dfJI?s`|D9V3P%56kuFWtep@s0AcG*G$1eHnQIJE!Mp*DTbTVThONC>60 zEF3?xn6^3#!6ZDeD*mUplXpF`&XK#+i6hcG&*A^9=M;B+X=z%hWgW&Nz$C}hG5J%+ z)XYpNyZeP4HF{R5H}hJJy<3gNTwU+O-TrHGGQ6QdwA*a5SD7)`dVgP*kwf)%0YBUR zX7<(P(}9rZvAJrZv2HhSx;t%vIbLnarWpDo=D_P7v`k)5(dQ^{9&y6BodYq&eA^gHqEIC$7GdogGUhV`6%d{xK-X9;{ zgwdX5inL7Uk#_gFaK5Sya$J+u3kiP{mM`o|iVn7_Kf>sK^?=LKW_7Us``q`peItp= zZOunxt)|fMu{+0Y|3G_o;+n8EB6Q%5Y1psxoyfSj-UKoFwe zyyM_fgeoyH+vlpovAmj3fO96Cn#P<%{sH$FXF?*zQ)oP=@YU&C{>hE?L}A3#J9>pm z5?s!Gn0MXs4sED!;fyn)gRr@VMnvsSNn{yfU4H}nUbq?V%_Q<^s@or!trr6nKNqm8 zrwu$eJd?cOgCQsH-ZETP@;zd=1_{dx^1$MY`HvS=T|ae0#`k@Tzrr$^`AJwnIApWC z>zZa;o{f8gg8s$yZ)bY|dlk;BK|_|3(pbYpoRo;oIM(am85)eEa^apHAiP#Yr>cp6 zVeQk`73Y1o#*15SQSGJd6l`Lj1vd5*SP-5D)>l$~l}rf>j;|$I$0bzy`wKF?z9z=& z!*t-IJN@^{@fX_5oT|L=HTgx|#0=i9S^3;q{cxh{Rp?J^o^Iv9w_)hPC@26su`%$^~k@&4(>&ipxsc$B&lf9NI8jcu* zgd&R79j@!OAM8(9IxTo-;b1@|s=;kx?|C^4-Rod9MD7I>w#5%0k4Hn|5q-4elj;r~7i8%G zl3`lk_8Rj-BvM9J7Qzl!@(1I4PodG$n)9~{P2@F0K=4A%qC;1!;$d{2TL9I(S8KNv zIVD)BgX7O3O#?0CWf4pV(9Q}Tf-B_awt&_E(h~l!PrlSC4~IFtW4BnDcLs)Kz#yyhY4h zU0u6-dz-WttoeIRbvoZy#flyUYA6GrTd93o;k*;ncgawRl?M;SnRZpH%o8)~XIjlXSyZ zS=nWj2c3W;JM;5}RMQTq%&T9t$3uXVH?Y$akqpe4{7eipnf}L^H!h^~N%(E3PmPU! zlpkJ*Ecs_2Cxv*YnIt+U#*FG=N8elCcjKMjrvcc9rV@kIYi}@PLTzJ~{><}l2Ao|! zJs|!$zW0r*8nHLTy*3#K7mcc}?oedIx~(*C+Z=enBek#3Pv%t42+b+)8wmAXoK3mc z$7_G5E}QZVzJK;5cEvu?-2QEfhB7L568~%l0VC3EdnH&S*cJi>$+9U7zL-CJr6QGD zXklPOb9zADidsufZaBF=$N>76d?k`;^tz^sq}Yfd%a*{IllEQT zwe(tAa+J);>Dp;Cj`)Lh+WlD{hgZpc+K+UjnbOLbr@6rg3z9Y)(*d+H0(RPX0gtS0 zA8HM6dlTM<9f1E1uKLCvV$eObyff3zRu8qb*RVzN z&Twlde7(IJuRfSiH_(dnGr^f4qggwK9j2%^!-jn$5}PkfF^Dl!P#))PFoj%|y>2$xkSD_5IcTX)ZSFGA0hyCZ{hrg6_m(UdXQutiG@%j({-i z2ao$m4b!ZqUkOncfbZ*IgqX{`63@WHgK9<`i?s=d)3}E`HdeMC|DgXSFgrUt1i7A? zdP`MJO=SVqd&+uSvK9P{YYF`z`wlu{m{LgYiQC9w=|SGQ2OI$Rh)KC%S!EN1=lfoYPYrF z8DPUNn;DU*z!B3vUZlD8CP%;aC7JhvMiW7jO-}qf`LVT*INguQkm>VZ#yl8bxw8^| z^p{b)8oKb%vR=8`S1zM*Y%E`VuzsTvXFs@}fJHZRe#Zs&69|U}Goh0|y$SY^RL;Q~ zjC9|h4ggQ?SQf&}tx@!_iopanU%p8FHk3UkW%Q@LU8Cm5; z8iZ&y)lK8$Dih8!6R>Z(g4=QrmJ^(QbXN;A8Yj2>ipWS!3TxpHlR_PIC~*$w-xs09 zfy(o4KA0G-18W@#+PJYruQ_PBpn@@Yl@+au&ZC=;@8~lI+W=R8iWX(tiDAKcT&JpW z_NRrDynK_T-Jf0LjNEDzc1?rjksa43Gx-e#?VJ6Z-lC_=1TZUT%(6T!Bj$WyAdW*d zHH^Rao;`FEj+LW_FT|-D`_^Iu&#yGc|6h<)D^2mRswOP0RDXCb>lZUyi--mX(3QDG?S2O!#Qfm?><4r7gLB>1yZU$8NO1R^Lk(_<=8$E2AudP414|yFZ=oKCPxV%F;N?=M zt1lTNm@m3MqO-wR>{_B6Hs<2`FwVnsCX0Wgy^8!=Q!K$1d6TcMr7%D<&t3Xi`RHb_ z{_#H_*z`%pGrq2H13rA}rUHvsV9_oS5wSa_(mJml9WCUOeU~dl66Y?nzL&Zy8Swh? z$tH!CBI{P;#rLhh?hCp39?D#YC5`fNVLwB}ca{>R^t;z0d` zV85c{dyFqJ*wNK>^ZN9pkjBg8Z-ay1*N-~J9Ru@vm;Rt@`{~DIUM3<4@cEd0#a@!~ z|E+H0ki)N?P1kJcNf8f`rzEYjh{E8)*1&6>MMfen)IbiQh)Gh58U`jY`#E_#hOabf zj=M?i<<6H^7AR`AK;_0PtLp=oez8n-prC7& z*tYmFuMLKZ_v7!$WujJ`@3Sccbs5N-FZgrJpCpv|XcB4<8Ie9u9G+~w?YnZvTV%*y zur^J!u|WcoA5mGiQixfE_9@;?J!xM3{EpqtlEG?}|E!NJHHTSKw{x}S-4m57hzMdv zxEhA`T0)8}BAwD%xbLrew-dHRX#P}q5GJGM+i${_`i}j|+;Gdz#V&5tYlGJKSj64; zX8!RgbIMVP@?5|?j$wn{iC1z8xWNj7Z*lVT4BY;_hT_04=5rSveIh-oc-0b0w*1et z{_^yMbz#?@s5?*qJYnYny@f~#3*ruaCHC;!#tO~6$aedo^7Vhl)2ljL_hmS9wss5sm_qx<;E?(nYan#cuE+WfQq zzZS^>+c4r2o~F*9Uwr**iRU>VwXgQm3tb`jJc`0zl}9wb8n+Wp7#JkkUDsn4oexlE z><+VpZ~;Ege$V-}l!Nhhpoaay30_;fqM6X%_zLijOx?-R_@|dUm+by|E05QK71io{ zc<2IS+)Cm&-oqSHq@n1G7fevUz$h5h`d29KkcO@80?lz93twp;Zo!3u0f;a+0u(Po z{He=@qpRd+6YHanUi7*IVh%8V`XxZ&gXscVz5GXZ?v9R*3VZb1iAXYkQAI_3D!hO> zcUBS{Xwkc+vAdVwfw6nw78nx6W?C$u{PJh>)YJ{wIO11tFD6WwIQ*t`j8SWcZ_K`}GPk8#9V^%EX1xyFuOzJfHqkwZRk67@4 zh@Db3GyxeU^!l}X0n0O~&+m2d-lyKBltB%PQ}S1Zp3jp%KjAJN2wdCi&qT&nC!g5R z2q( zXSf>fC<46PjZRj*QB2Ra6V@8siYSR&1wZBsWQSXxmpsf_C0b>gbEvkN`F^?PU?Co+ zqZyFB@ZkLp$?Bn1haroyuX&VxzfC*M67vWFK>$2sKGY*YVDJ^|tvON61|f9d&i}{S zTZdJ>f8C-B6p@e?5D*j)P?2sBkWv%@LFw-9P6HHJAShB&0syJnH$fTNl?E1EXZJS{5p%z-HIt6+=E!`P@NEO}tDRg(GL!tm z>DV{JIl=kN6?s?VN3eJ(rYyUp>SDTp$O#t{f0`shh$`KZW7ggh60O-5wV}GJ6fuD9 zozVE$v^dB|86#o^_m$~>TL_~|N=ns?2MhDdcc82M6_FqeJyU5xDMMtOSD7;n+c3Hu z`iUh&F-S{qaD~_YQ8eFWqh5ZyB~ONq+=g=WX;aKR6g0~5l_+_Lt1!+-HvV+K{AP~D zo97J3ulZwDDf3if326nPc;GNWLUMQv!|Qq4o{n=D9-{k$&ytmRlRz(F3%vV+X<|i% zltt7iv_)m*x4iLQ{#UpTiQ)8s0cCBhtd+Gj-!Uu9dNvRffT+Pn1JLd|FU|?c~-}mH;H== zLyH+xjbM?iw(lNswrJ|W!HggDeWi8T1QY{RL81GKC>XvL_Iwp zj;^m-dq>GI0OQ-)->FWDk@^?Y$0%a%s)tMp_QhucO<8Tw+7xJH| z549pirzK9v1s7+#r{pwUgltqcfmy8CUzvYHC-VoVXez6$2i}J|o8YbJ7meGBdG(sC zb@F|$Q_H@}kC3lme0zCU$0F@bZt@jv&pqyWV=|(V3p$&22{ZVL&Gz#3gNHpa&g~3s zMWsV9dHN{H^u3h*t@O2GY7k4tO>bMJYA8dD8N-Fu(@6paqlN-kP-l)` z@1-4irZ3U%QtqN`=k|2tBHZtjhx`jhGFV*mj{;J-il37P`4BJA z(dVp^X;}Rrv92qdoSHZZ?h&c_{WQ$&5$QGTiIC2QjVY~z0xD0I1=|BMeO9|7_Ltm~ zAZ~Q;o^;8N494vaLc}cUTmS%}%Xp9OKL;Y!T8i?YHM91kThX^j<5W|>cw*x;QX=qi zalus1J423JKU;Y_vwn&|GgXOqVOK>AK);}%f>ni0iOJ#jk^n~aA5HRg2WA{~E;Su0 zYGF4ogYR_5_l?AU$==~pmr3n;MnO-cA?9NEK-@=}bjn_^R*LTJ2%|M+kPrL^Ar{M> z@VneHdVzBvth#M^p0d%$T=KPxl+Auqm3R55l_*Cg%pu0_i4yKnzxJe(xi2HS(Px2L z#mulhW6*z|wHk*K(*YG@bq#%0T>k0P$46@*&TCZ$@sUj% z;|b_>wO>FYoG0y{$})0tq;`zYYidyIfbm z#hKJ|a)F2SQ3S30TCeU7m*I;heA({r<8efNnzkh?l1yJD6RXLFTy_=*B4bZ=H1#cn z`djiikTO@2WUeSzNj>Miy))g2TyZmLT-i-5D0pdun?}qw6G{t0Fl49X{hUF2-DlRg zxX7gCzE&vlT+ZYz#5aC+5RSUqhwoS>`%*c+ZN>I;8W6ek$cQ6KUQI1ve0;p&Uec2JAcOxP#{ek*<~F4dRk5flWyHw1y3`Y-P#DHuyI2T6l@I?SUc44UNFXpWOTukk#20{YaI!ZS7<3jz~3(^?~7868yHEA!5nO_PwXtcfeKyf; zx5E$cHx*TiEIlrk+)w*48f?1%pv3xIi7mfz;*IqWHTQ)K+3ZK#=AI=37rZ)TfuZh+9_;T#JP@{NEsT`5 zqK#&zz^Vs~3p;GdDB70`y1f{EU4v{>=ylgxLz4CRjVkvfRZrJ-jmG+scP=jO1ltp1 z@V^4N^G?TolZST5l-d9_Awdl7yTZ@!*WdVlOnAwZTlVGfiuF&7u7X)l9~YxiGX1b) z^=~iJFp3|rznlSY#^$leAt%+k8{u`w2dX!LQCxmUQ|a5XHPyh8t8byrk^UvKt@YsA zdZ=cZ!(IIZb+cLlO1*1Vbe|;2gUD`2m~VT@-0BZ0g2J+(zylF9U-OEd0g<8DP0vs2yv=Bpo+UE4n6%;>qk`enxSTJ)(`+ntf`q>c7rUl*YG zG{sq*>I*9fH7rhla+x&km^_HIcR-s&lZMs9Sa69$9elFTl7i89n3b%psSzDsQ^eW% zN8AMjt-mGDdBWW#9C!K0l|4@-xp=ju?6(aI3i*Hc?vO&wDW33qZq0pY29xgtO zDLI9}9}zBxhT=YB7!40D^&wSyS;6e4IX*Fg4+IKg31G{dg8+)#Bo!2JrC%~CyAgw8 zqz(_yIUTBZ?5Tv$h#2w5Dvk(QljuX+uA4IY0Ct&(Y++lM{x*>9!rgB^h6YPy47s$2 z5*a5H*LM)2hOv)q0!vy?4NWXEi8ZxHdf!0hMxq(-aVADgGM$n-G3125NIxdebM4wq zOB(9+RiqRSIU>a)Fn(z&#)44`8}vuusZjj29-`6QW(dVXxjul>NSK@1Le~yzegsi9 zdfjfN$3iDWDQt$LWU@5=4{$WNdOvxbX@z=Qer^$pIdMe%7P}~sEw6?9UVH88a`2>n zxRS0vCVQ*r;Wy%J{ki2o$UXzEzJjd+lad3?X`)Kx5x7h$f}dTz9o=xJAS7=P%;nLrE&u{ri2?h>ez8mv zsXbA(xMrB!0p`r$yht__1=Oth?>py_!!`k3ROwv)`kBe?i(;Awegr64hXO?>wEy=7 zz>hq>H2R=a(p7Yp1Ya28fest|2=EaLg{VW;zrnM^ryOO28?;?BHJ&d?zGqD%83BTO9Q4l2H8Ma7n3;Igph_4u`5&5c#ore;L z9uk<|N0d%EG^HVilg3g6!<_%)8}oz|GMM%5FBomqR!09^kEjn^&pSo4z zN5p51s&IEPBz`{i{lbawWqifn+F-vrSTN>m3w)rNIHJ5R;+oXFiX{sUP}Pjphh}g>uW#TA&1mbHI-#exRTXqt^!Q(n$SGT`U(UmC!ykLQ&^RPq zC(CfEhXu?5(%GNJ9Uwd&1ERwaDZrr2fSWf~G7%rNR#M#sP z-hYjMz(+764AgJ5!U;p$^N0nGg9J{4s>l(eRc2(y{UQNP<6)zG(N*;O(b30;)6fCc z`fkdF`FqrZKOI?b0j;VZKU{7+c(9R_+3}{V49ES9meuJUMv+NDO$kpow3I^>ZwoC( zqwG-0LtBBacPsKDf0;oo?Coj8zR+IyiGlH8=x$Vk0-xMvjDX2EhG)ADydt)r+@#kG+uRjsC;ip-4pO2Q%z1x3Ame*<`=-=b&fXIEDNFA2B&c~~=3<`~3V6#|kGwBm>|^CfAKBXejsG22?1gI7ql zC|mufKgp1`c%~Qy9PdvMX%>%vum{f?;#=nPoSg?{LX=yWUKTv+!)yQ8oXys>WqJ{A}k)ukM%eylnE9Mz|5_%!^2Tn^tw zs){n#j&Q)(a>)1R@84p|z1OlS%;Bb*0`MjPu0icDcdQfCs8AT7ih}+8 z;^JbN+3S`VS>s{%Y;0dVM@O>1d*437&zIm`xv+`r>>4(dlJss&Z zw=2p%PkA(KM~bP^A7u3&4q?d1w%h(4>_|VyK0mS3iv}+We@6$DhCl#I8x|a%8_%rV zU%{XS(s~L!G6ig;MLr|mBrHdeqWjzgO z?L$^LeBmN72sYw*g@psGo2@2Caw$ukH`L*J)-kiAP4#*r_$c9N2~U1m-rJ##@5Mei zC_2zf;YAZQJN_80>s>~(+?xIO{--N9C?baApQL8D@+nnJ%x?8~2WBmJzYi!2FBmyq zFt*v9(YE`TjDmr|xE_9MWt3^@R|2L&MVG#?8OKUOpHm`yH(J{ovz?!~NuSb>z!eem zBr5^c{V*^$%;K}ct6f&J+wQTz@Z^-I+(Q!`exE0r@ei=xRt+^6gC7;6l@|KY6rgQ= z?lP?O`PzVy8Sv-1Ge80fYgyYefK<$W`&#pt?lwhZU+n>feU;G8~?V! zfV$S6xH7E}7F#T!R7M^#WzhEyv+llcv-%66Dx|S7E2rT>$y2WQ^p2J7mVSvMbEC>qW~?wN0u6FJWw?O#K5g7qhyMr z(w@h-)$a|*+=|9w6(y_W3TRn0Jw+=(t8tzIzjv7{QqaUSa z*VQIe^l0`fugsf~oBgE%Sar z%l#TyP60vvr4w7ASOyu)c5Av(B9m1WnhQtA1M5T0jJfmmz*L(or}3BA0qLx!-S5NO*kB-mS6;bq-wF9H~0eH{QvR-=;MWl@vA7!GcoxIe0cxy=#Qm_ zd`LX=6&U+Gh#%P%{uX){**JhA^r>60?GmaM92lLBEJVN-6^PkX-@LsD&pJlLJ1(DD z+m$)mJ-cT3od8IPvnMtxP}Ka$5-uL{HiA%!cu24Ywe7-&ei8UDLDZ^u_a6=w!Mrti zkN$7`AWsR=zBZEW_Uu_XEYdkAK!0PM?^V4&IjPgRQPds*jWLGtQVMUf>ar37GfP6R z?c#Hcv%{#2CU9_q=Vj6`22Oo!o>+_;Q;z6Xuy>=Rt|qz8pdlhN*%hc?r&z}q=I-TY zU?4y_0kQe*%1n^4xml;QaJ3_2L;Fy^JTGyo?*Nzd0GfZtH z&le0mfc6tbeK0HWui$)!gaRUprHtEA#g=bG$kGt1V^Axvo1OZGQoeNg6)pQ+xk z;ClPbnqliWDya8;u3ji9$5#7zhp9*>Ip-*QZzC?r&%}aIc4!IpdyaNA<=NdQ;BGVc zb!1ioY=rBp(P-(mVl9#x6lhe;0l1|h@79ECeokZNxhZ^6N7vg=<+#5ZbuQG^QS|m{ zifWEwTz;o`_42xoYn1o9rz`{DZbaNtqDrCM(O||QyOnHne) z%_Y5ie3wK3ieyPn)x5Jaug>SkLAN5zbFC*ZzC^^2|DIVT#6uKKP0>*viv&S)h{1s) z*qdAUEWkUwVda$3<<3Os7;HRkJlMBBL%;4=$iz+}p7~%prfrqYGzfq`CT^i^Xfm8}A~ z1n`{FsR~iukJ&)|hu`BsA1p{R&nrXw40hHyZ+vmI+QNc{Ck);JloiJ2k+;>|39T*M zQ=JcKQBmenn+$kJ{=kzXUZ&`b`O2-e>f_zr-9-Fb&k8@OqBc-L`z6NS5snO4Vl-p{ zMg^}{1>D3@FK;M0}_&oip2 zQ&;yjNT4r+ghb+QFkxQt3sP`tz8txW%KKW@Yq_}2eVLGN@>K4@QYI8p3#UP$+m}W} zt6mxt(h$YORJ>3&b$QZD0E&ss;Wtoh?GQDIBc_TAR!j)yH@fiFK-)y@sv-O9|M|fX zuaz(kg-czd|(aYUQ!7mi;S=LGopxk`4QSe0a0`@pwl7V4W0fsC& zFFG+I@Rt0-PJghG;~l@!@_oJ)!xvGDk-^l@XS$P20WHZXy{?wl?9-_1iDzd&@zC;G zeEU>6F1PE2@R0<1&FVud;iv0z^pY^6vn_>adMpCIGIcNwIo4`D7aaTjn^604vtzmp z!%A3LwpfC=>!B$eoX+bfTXhyfehffDS~Gx~DKoj+18f zEF0JJIu`=qmOh3NB9*Nsii&I&a5p zpvgu)sX2Q`dlYRHXAt_g*w4~AwEXTAY0r-HZ?=zz3AxsC)>r>f{P9Olo`8yRZdyLG z4>d6`1?D+8gp3_Ibr{KSEZI0a;HsjTUNh$Ydg;QjVYNlQ3Eq2@MGdSB*4eY>{D>zc z2{-W`>nVux6byG3_>KVxLZjK@-SmcRod6x73aTTc?#bX2V%d!KjnQ%HZ=N@ftl_b| zxx?GG1>?g~c6I0KV+u?>>Zwrz_<%Ous^vWPj!QA-;HYVvDF2pe_EgY`?@PQzsDNsI zgZu+m+-hTn86NQKitvqID`XDvK6SeK>50l;+oI5^sm`j-PD+N1=K-AoQuc_BjtF-4 zEqfm^b!UBOpi5|u#fv8K=NK;J^nm<{Sba&(=wtB>>GxcR&1%imLS&5f3=NOw{9&yl zl-`swCoHGIhNT*4?_JTab;L4dnbmZdkAAQRE+&>n6vy?c6I8#E0g)+Y_e1Z~iQjfR zI@9)^&#qNf@!*NSx@$&xU*Us`kSw`AZ;2zzK&Cl)dF@Sg77AaxmRsq6C%>p50+`O!oOzj5I!_EHWuSqK`C@!BblhW2O}VQ>xsb{amhgPCJXBPcyrzZVH&|5S4zV?; zKM&}2kym{JMD7R(g>_W%ANd$4QJ-|W||JHlzkxBXbeS1tXz#(C}eVZ@DQ`SijcX_gIV^^7(P z&hKLO|G+FBIlkkZgB6ORjZX|8xIf<9m^i_g|Eag}m$#_5#?zgG?jt+ZX}6;PTp9!8 zJex>)$Uy}K_T+GL^=zex$heIXG!Po(gNVer0q1DW4%;`pgK&IP*ts2tUTB`a7dLs> z)~XQU&U-laHDwo1bfdrztmhdtpsd)K%2owj0?bTbOo#<`YOp4)fK%;HF>1XUfl z{jPUiGKphLq2Wv}4(Yr#eyk8^JkOFH{_4d5t!qrpv`}`xAvC^r69Tupx^y;^iodld z6wk@B33=>zJZ=tAW(e(%;E;u`G}NYWbdlpzpE$;K;W0f}lLCxerir2p_YE?{u>dqX z$&p6wO}D&Xp0%z{Kai5&hOZfN-C#fSFtv#Qiv=qSnRUfpz^lqnlSEcFa6!oE$t108 z@;x!8G+m3ojT%K{dbU6?yK&+y9=MbQ$z5+vjG^edLR!krU&!O6X)V<23wD_c+rK?G z+F-b@GR!eDoE5fz`yWtf!|r6-c*ZIC^1&cMu#e)`!2l)OKG;hMvw7IJy!@U~70Cg)xNJAj7g zP=Wrsa0YRRsv*aq>05@|2JZ@Jd2|yjkzI7GpI3wg#IGCYCBrBLSBcNzlK0#iuZYM8 z(bwnJ1}|*c%d|bDcU-CutxpqI5O7^e_xAFjBVJ0XfhsI)TnTN=;gpXB`hKM-0qoBs za7+Kl;Iu2+YHv7OIyh3x7>^KO=gKL0OV~_)vfUv`quv{+)m(b+ls z80}{E01|w@(5Xzyw46CxhQU!;Cz*~H&^3U4d3Erht4{92?imOo{G*Hr6>7zFPUBoS zo?u2&tWXTtH!z?J>H{@m!$pMZWfa3g@uQ15Kj1@zkf;CeE*HaqP&g8xC?OCnk&B5z z(6=6aX%t1#tTTY43kB?deGo^&*M{kGwAv0wDpwSL9Bh0sZe3yHwY@p@#kt}=oo;)_ zI5AcBaihp<6a;~hth)AOHDj^#N1qy(&>;!eR~62!4?PpQc6vVf9iSi>oy7StyQHuK z!8cZI_80L{NPaSGgf%5ke*f7cjq_D=6b!}eA|}fo`dV9;@U=-*9U$J^S+92eP_8vQ zCsn8v3=(JaFEW}ZZe3?PJKnppa_0k88P0>c(7~)jbukHO{g(9rj$s<;!?ND=1=G~O zf*>bsQ{5VWAoF$Y4vw!9(L^oDc#-n>w6~n9^cLtN zj0dbaiLhqQJkP32#XQ5%<1poyS`(Ovva-=8`@+m9lZ^|8j*I!?VTLy5=y~UOd55|a ze6OGtOM`N8)_T^Z-(UJ0IXnJnqyswq+V00W;ta^)?|Uhi5x!y{T3eOn!Dot3U4a3W zg1rd+Klg0Guq?1FY+sgC+dV!^JrSC<`ug4x)MWFJf8Mh-N;$Sg2JKtYgqqjTuNoCv z(wBVcVK4gA`iDq}lauYGv^Ao14^eijo_{T%mC|p>}+Qsr$_ow+z+0vDg#pB`+7MPSj?;w((1UF zufg_P|LIv6@hNN&jXS=GBgzp(IaK-n*Id{@C@FW1p0^nqz<8*GB^_yVzU#p4_C3x-9>L$<%dB;`qQCgPtw2weDFkB&S!iG8N4 z@x+c4$Aud3hIUIese7uXmab&CBSNoS@UI;arNuw9ZrLk_(A}qF$^hh0?2kO_1r*hpwHRAZ~4ihd0yZFdw5iDq;)3;*{{v*nF zk(CFLojX1RO>Nbw+wRvOQQ{ z`R{HQBnKj&eO9sl8*%`NU?lqL5HYF@1e@6j?4nd<1_6vPj}dCV|9~05lQ4+!26BUY z*Nj8ABV}pKY0ZC_y@shx@mKFmgbDKbI6nq3nz^=ZcxGwT#ZOMKV+Qkd@&}cc?z72}}BTWszK6!HD>hkzs zYG;RrC^+inQu-#L9ay745K3$x8L#;yFc*kXy4=K^VN*aEY4>~yka?8Y4_(N**@h=Y zsS}sJQNI=(x#s zfmjt6?|u9kg-A;WX>R6MuZ+R9t;6=ZPRx||uQPF>8d6l}Q}HOL;3e@_VY6G{Kz*0h zfCw_mEG?5wUC^vJBom5BEb%tOJz@+tpwgbk`1q}cw)h~@yl1GFwkqTl^W!5;g2urP zZ_*RbacQV1t_TXehnZ;ePkHfBheG2=M&^VHiL4`g75ymrCv3gOU<)*D>(q_Nc}$zp zu_Ppr)5i$U?uCcn9Q$}f*YSRpuWYKEjM}ItrCqYeJjesZg%zRZ7B3C4Np9vNC{Jv$$bDnZ`l{jowde zZgy|qyeY1g7RAgG*YUs7$W{%0J=H;#q8c9P@kY9u!&aV%2kvZ)!ljA{ZYL`*K(?=;&@FJ0uBs*A6#M=U40Wl%qR=8I%+Evm>FQ(*@FHP zL+ES`n`eWElm@oqfu#Yrp1yy7XXjgXHmh~>zr0b8@h0fPJ%Ds5tcyxV6!HQd5_Gtp z|Cdh|C2_Srg{}%I(s%p!7Ie;t@nxcA7zzq4*R@yn$K6pA@+h0whVJe6y3kBxV+)B_ zcLO#A&%{jCZzPgF<(HCf6oE7LZZg9 zZu0}o_~fZTY1XQzfa>an#K1n?e~)9x4oVY5@^!+twFK0JZ(v^JOOy&_pjnhLm4O-z ze|jx;YAZWfgi+D_#*f0f=dE^yWwVW~C*LOpa+{0*Z1A)Wuik(5?CnZx>(5;8bF@y5 zfiY{BjZT<>Y?MiTU}EPHxxao4<|l++hhZaF`nT4uMJyggD`#K*NJ%3Y`|fc(bbAES zo&SpTUxG=POdi6@9x;InAOEb+vYzxs@dWa?G-`V4>L-iIEwayEmXfOzl2>vqj66=l zoD+UyizTRNnm~k!Xa=vWZi2v8x?0jZv8>4*a}E4l+lp=bin3RFG_fuZSxD4s6KI65 z!E=-_H-%pW%fFbb>osFn`jX4%Gs2J46pkg9?N*7SpzWvG?q?AdH$fLOfcR#2ejCn7 z)EodDP&e!aK3Oi>&K%@}Uo{3{hp&wI*ZDr=XQyq#t3j*TJ2=0Ia_Bo@L3TlnK1=TP z1fAE4-^R?jC}MT=kJ9(5oBxV$HRa!X^@GC{PTyyD2!AgSh&PT&U` zSEb%Q+ms7>q-@U?VJ-f-7l*@_!;*6_BUx+ESD7?-bJG0R&{aGtp|{ZEyn3d^XgfP6 z!Sfr%wTu^bsYMx2I>**Ej5Cu7rI?Cx^hZAwRw*OJ9*MA7uCFu znGgy7CW>bS=sPM)qRf-vm-bXpD#ag744S$BNG@M}sgb#@7e)GZsNdzoP=knw)5uuq zW4TB=R>oXuh(S0W9{F&SL$#M7RGM}9K8XNO{I_{|JuaJ*4?x)MZo!EHV+42>p_%$t zSLREx-Hhm}@pn&`$bcE2kmub2gI#f>>+(o>GJBdI{vtZW+Es-3qfc_DV{4c5HiL&W zs5_xDikGD61UF$l1%N%(_@PBm5N46$JBEAt(fYUzDrz7K+aJtH^2*8zsL%Ek1K>7IO~nK~4?GicLgcYA zjnnv94$jW?Q#Odf7-l1$=-NnB|cV;(Zy!I^idkHxwXMrxJ6MOk+WN z^A-`-c6h3}01g67>y))~cBSatg+Uei2dCRHhR|TJ?@UeGumGo%(U|J~d|xn|^Er=k z6bu}}2you8_P^v5+coIP=jl-xAtE>|3t9qKhN3QHX9&4tme*v)Kuxuhg12)CRT$k~ z;W;|EuX^`&(RWs2o*!@AnIL4tI7Bw}gGSbCxRpwp*|BX8hf}-nJ6sR7!V-vYq>Hz2 zkl|hd5xRTl9nS%o5XxClD~!x4pP1~fzq{yg)DS5U3$xx>dvP*r#HxBfI**Q#>YFm# z;d5$8nN0KKk6;|KJ=vkDUvi=0+%GBQB5VRWLP<#>V3$_uIe0fza*adPE8FtdQ4X^O z#|^3r!Z83P(695Z@yf;`+l9lo=iw@}l4=Fg(xi_5j{beNS^AnW<4XplFWxpT)ym{$ z@}KrTRFSAfM162I;dYyN>@`?y8i>9s)XscGT;JAcPq$oIiuX#SFrVqNj=TK53n)`L@j}$U&^))BUQ`!3JKs&pe=59$wyJ(< z^6^=%^c^BkwVq4usxYXZTbb$kq_n!=va8&v4JpEc$Gxv9Z)8L+r}Fgj+S)K?>fa9{ zh`|x8M^>i3m1}pVcIzn9zgim6qsca{xb~S8l3aIpH=R(| zk^>GW6{2J`_As#cI*C!%+w8OE>ZH^KL%vw6!JD$b?1Yc+mNHMvg@1asQD5hkPAEa>QiZ1_k%ry{tJG;$9oy~00yd51+N2TW5Gv;fQUde}5ERS>l#C{=pAYk9I zXfF796WzfwuZTE9W|nHD+nOBP=8>S|dfoYdc>&%xU!7(A^jAva6BsL+TKokqIx3_PU744A0j*X3NTwP^`naD;-evH^y5iSo)+C<_8 zW~KM4fvOo=98oHbUDT;5DQ0C^11k?$q^fMD(Ba;;xmyPZe6Ky4qN1YSK=#1sC>6bQ zT{De$U{ur%jY_xc&z?P2cZ>P@wQhH10Jg8Ds^UIq)t4fDhKc@0kNQ5d@Xzm?rObrg zcbos~FR75}YXa+_`uXANklwF{-&A5nJ&1(FmD8&~&a9qBtk6;!UaQuq%uYPc zE5)@{TYXP+yPVOAh%zl}&-x`f#6DdFI6ORN1#^1Fqjqi@IC==$DkehGXW68M-9 z@1{YX!c@?!_S04C5ZN`-ZM&(;6Zr1}$7{5)U?Mep9L-p*SyV(4e9dDUgL*>yrDo64 zdfno&x7G55bAI2)Py6Ro+9!WE0;z-pPqu5LTm~2>Ol!ea1uvjXXwf7 zXVT5t<4Xb5QWN55#wJq(pY9n%{t=dxO)Wo2FYpebj#x=#vzDZb-gMYCFKV;nT-{Tm z54G*6dTB-$B}0)nio0;gQ?WJgoO3j3t{We(!kk!^-8cNUww4!xDBWR+VXgE}Ijy+A zeBD(+qLQ`knA%XW+=W`L_E}uS?=M5*YzN4ani^AU-Zam1!`Z?fOmQJH6+v~8WdLV6E_x431X5RF}y5LPA2km^#a0ugB zJPV8D=6+2)yI<{T?{d)QpTf{`Uph=g;twYq+ciL>H#J;&s%zq>x`S)k-}1LHZAzPN zw*?*UABA`zDsXTHtYUUV{TAC*#jA#Pznd%=ncUZta@&HviU0;=po)vQqm_&P z^%Ap1b!H;NEQfoh>$Jb*%$UgBNnw*^)1DH6zXWcs%4JAK`8DT}f@$+~mG|ShfyHV# zO-;LQ)||t~+9j&=u9_!Z%zOF$XVrqViJ_AiY~PA|mKG4}S}Psu+mm`w!rykxu>Uc(A!s86Iz=Ry3Jet!S7w7U>hJJl3K`Lj{z zv8kP1UWwn2kYw~XqU=dg?1F+wfEmRFRp!hRkHgdxjc`A$%UW#6G!!WG;jHLoprBzA zBR>-Rf5eLa8$YnQetlfpH22r0%hB&1ch&stw4wJ!2_izRxi_OUc-|Qtd|LOa6jDlC zT0K9kK36Fj)BDuDwA5oEm)z@Wwz!P>)j35NN8}NMV@Nuj%ZGuaFRB+_ecy?kK1_Jk zQDi6UOx9WKn9e~F(q)>oabCJvnHA>4tCX9!QyQh%WGh9{^*5H(BNc=26Pi{IOG;fC z`3gWK>Q+Lc*}&?2VD~ip_*0iN@vnWApJ|WdZ{(^-^!0S>eVVe<^yx7AFgE2gGL|Nw zmAx?wNLRcOy6r*vS=u(c#(?(9!eP<$KwOsBnDFCdg)~iO)~@;`hoqjK4{IGC7E3&? zEsT`;R?@EAz7hO2%km+Pd3D4ebNc$=5Elxj`H{HswkPy@by^B{@cQT$xzshNG%szQ zZEi+Pn45iOpqCys4_toyf*_3k0C8Yfnlg0ijVU1^(W~Q79vhEfMdzA0da+>nJ&PRA3OOd|6 zb9X^92*U%=q`qGG^1JibYiruK!hW9Bu;}F$Bo=Z{^saT&7mb z0%XHw+#^NB@#IGc(HiA8>C~2!lfo`3DbkbAU!udlC!KG82vj6-*+ziV(StZ_`E7=@FLGe?^-|uC2|L9grcG?*_m_~_Ev)SG-E6v7 zm+(pmzKzT$5}bFp`3(M)fA!@@{C0Ph;504#YCOewa9VwuG$b&>_8JGFbrAo_zrn6? zI6SJ6Kbcq%ZE_}9q-kfTz(!ZL)ZZT~FgRErP=VKaoS9{v-z+pV6p)~4c$gw3HI?w{ zPvt3O(^vx!oKVIk%)_n^`+W3PIh**h&Gj$ z_KkfqGNDTs6lWLK$qH%gj!sSKqM!p<&e85lb9f_+!fb9e)64)=l-SN(X=-j}=j5cT zI6vN~)*f(IXU=q)3#LlVaFx9g!_FqRtN9Zn>`LOQ98 z*wHRX3+e#{v4MyfcVZy&-2~V6lr&s-zpfwe-@JM0F;_;Ca@vvwecoLUpNGiLEqp}&kvZ9+aKagxXu4FZFr#0f zgwe5BquwXI>?F+l&lYb|q&?GQu6PkYtj3(!L1L--?w28_ALa(_^@;vf8gh?IXOi*b zcZ@%sThGdDA5T{VZGRJa;{?aH6t!0abcPSAs&LkaNPc{w5x0Y~dcM4&Bdc1?@Clyai;i;dUe&4%}Gu+)2RTHw7BCZ~9CekJYyy$V&)ed>7GJ6rJGG;$I%sb%{csv?Uatu)TCqN3u#YJL}DmTVpgPH-2tmQ-{4-NGHws>>*`#{L zcn>?~eGAK*^>c0B_6#EFuSg`|Q$70L{7AyFo|$2|nVF%1*@zm&H2P@Z@HNK$@4tKj z2F-vUO>9X2J$57(J2I*nRg-w5fZ+e=j#r*PN}Y;qq}5+kufIMqVdhv>;+mn*Gh||* zSaO=_Jl^+kVZZu_cg%BcqZs40&L*0|T}Rnc_Z4l&Y}-E^OPU^AZPo9fCf&9iBQHC8 z)VJRttffj&725xLS#vFzaKiM3U{z0I)qyNdBIgH3_HN<+MjsV2&R|FO{>EjvrTsbd z=PcXq^w+@L`%fERX zJTw+-cAwG~h6`u*UfGq=5h_ z$rZ}#AaUDE)cbaOm-exRfk7>+bg8PeSchB%Uh{Q6D&@(olbpDEy0Ga>G0wKO4r|{Z zi%VPs=%shyh<^oGaaJ=~o_poT_el9R z-^aOXJ)5s85Y`)G-(ZA@iHi3>7MYl!p+5WT{`~nLA9~%t-09RX} zq(tfc`1>7Fi^I2%oF(qQ%7_-qXx%BrB8^-#G5R@emhZS(|u$*A0mbJm0fE zCk0-TLOTD&zEmSJDvG_(hM(YSq*kORL68(Gj^#TVw7+GH{u^w4URn1bHDGGnfa}oI>^Ptn=p8THF5ioIRep@JOJMe zwJoX_=d>?wrjvGw?{klEL~-Q};ZkR@(t*GiOMzjN#PZIi7Ot_8M`!NU>>PQ&Cwjj` z%ah<>xv7J1&<);Cmr<)JkgK1j$RHPD1}Eur9>jDhmaTQGRjX%-RBq< zbj$JBS8Du_X~FYOh50S~)A9SLw(_ewins^XViuZxw%x7QW45Sjv0#aQlRiU~sE&^u z0git_=2?iFmJ%u(`rl`8C%VG!4NQj^4}{TBNVuPDl-O+rXS+IE>13z-^PzCHzt5g? zDC4eHpEcs6>ioG-HWr(sV$eYkdCBiUV{vn1#p%jbQ}>yXW0--r^(Xc+sFrVQF@Mf5 zlion_r0LmSI1YFxqCQD)VB<_BN@KSybcezCeHzpNC^pJ|LC`8pH?460|WI+^qCPNwtOll_?H zePxGze+DMEmqoe~> zl|`fEHRz@FNVlKt<(sakN3Qe~ra_6V+w)ruANu>*adA($EqK;W-jKy6-nu6p8BXs) zMk*C7JWAAUt4rEb%WNb=X9(wIyRK$N6)1WF`H_tdY{(n+%t|*=1;AiU~kv!V@Jsy zP@Hr}Iig+v`W`C37rUN6Sj|W;y?$x&%vt;YVeQSssqEXf;e}|RBrGD7MCN2j#s-AU zQ)WWQSmv3MaT!8nR)|c=92qh!V=`qd^E}UU_>NQ8bwA(sJGpD|P zo1*eyu*$2VJNSJTor<}Tpl+8}$f;vyGoGQc>*dUM109)@^9J>wIn-#5GYB4FCA*ra zEl$!C5C z@P$#VTPNQ6Xw-Qxxq^P9n;}LwbvNnN%rTkoGikrpp6;j5s&o(-1o)mZE{q1s7=+H`%3> z+>J?IKMj0|f`Xm?U6U=`+T)OlZo+@2uk0$Z${c2BR#MNZ)1w)GxA$3104n!K|@77_BjNt*40Gg7+ zWC8O4S3z({CPx8z0kyH_PL^(pTcg<5hLaQ=Jh(=Gw4J?zkx~2;*vXT1J>2^F^9`A! zTld9GdKm2H^zRQ-@u{Sk<;T}w(6j&Aadyxh=!a-)j-zT`l*5Uo6Jb(Ma8RS|)hV0f z`{sUB5eM;E>QyWF z+1xp;uCaH?GVv}##;>$e%7Alf%^QZtJX1tkfGR&-ihxuVePo^M5VjB?fefZV`_EnX_ z^GcTN3Z#cw0g2E<;y3;wzZjyiJP7?DhJcU-hR+;8Qpf_a>J3Rm<`qIoFd*5*IYJ-Z zg>Vm~2rdykjbxIc|GXDDfgCQ9HEx|Y<~j=~g^L7%DiOz=$NzXb)GN{R1HZo753}mc ziMJY*S`cLH6fYhA({>zEyy__-!7!juO*+s3f)_1h7T|Mn{f7fxXrIj7ngu6FsyN$|9h7LTQ z6II+#0nT#^kDq*gXBR;xW2q|%Xfcxk26c)qgwfz4L1Yub(*Vahn2QUKvPN*dR>Sqi z{2U^nD4GI`ve9Q($}yKn8f;OsxWwkM2*tGla!IC$Bx=OL5#5FnCcH}NrjTbH(Kx=3 zIjQ%Gg-%QNp)1kdwHRC+*`xh*0%z+ciWWZb4i*3B@$5}B! zeY!XJ#_iJX)B?u@rp08+M2ctcr`-||GJQlj=7D{v_Mr}M{goFh<*!FBL7pitAr|=q zPZR{Q!;En%3f)Lp1@0|F?m{cG1*Xx?506HU`>ZhO#j&_wRb7HVU4v=`6!$MK5_nPX zV;4`0SKsh@E+wEt$|aXL_K2*BSQ1A(%ngG{v1Jmbr%x7$CbP7#UhZ*Q@lfyo$&u)% z_Uy1T&c4DbM`@LP&|ORG?&y}WIaB4I+!FgX%q!a2C3EX#-}Ed|(NR0j)2P^NKD$lt zu~Y@_o~1wNn2o#aowG|UTK%K3q zqDQU%j$7Yg=7AO5$fp(y4@EC`KM8LE)fA%KCxW%5RGVWEpR0(9lJeW{c!3{A1zaFZ znKJs|eha3)HRp1K`}KhQi}twWhnF=zcU`9W6AVqQkItWKh`f5SS4x@e1gh!l=Nk?O zsSWqU9+)W=h9Q6eWX||8e1>sWa~8le)yRi2GG@}cs%Xg6nUQny>uPD$Zq7d-B@__! zL}9SdCF-5B)i15Vefn3jH!7{PC6&Vyzf1Nlo8ht9jN;TW@V+zA*mDS7O2cH#mF&yKJkW@c9^cp;ypY7i4}B1Ckkm|huIk2N zXRWj^-CeWrj_&k)V+6W#Th+?y?n*W7OX4V>Y5e8k-ikEPExzB%l;L}d(Ax4iEtYS@&d!s4QXN8Bg2n=^rNNU~+xyEyZK;lk z#1*@k@K(2rr;@kNX^V_kcv_G>1b6u9dn^dB@Rd3wkQBnIud{$cFbWM*57vJMztG$5 zsOBDVt;d8bpX}Ic*-pAooItzGC3%C!3bev!54B3!p9ME#g3R}nqLOSU-KY)PYSeWT zMeAlZBYUgFLO!2-fz@A@$)GC=Z`-pYife5|D{gp=>y$Sf;S6hBQWD zV<%Iudwoon^nfM5FNnJ@9(FqDUoXJ$Nl;ol!osuYZ0Mt26Pp(BkJcFS#W8zGT2H)B zy8tyAzR)o!q41;-J{6g@p-)aE@{PQj7n~i7i-Vbr`ICm6mW=a4!vx@4fOlH87;|I& z$|a3RI~p02JJK@^&91rlUm!2yo*hha8_BG9RJtW1y)QfCNi@<>TdU{MW>9Tc5jcBd zg1V~)6krX$57&~p4NlMDKG{8K@aTPliom(&)t0FA1@B3hQ$9VTHjXu;3i8qg{R?HV z5kafIIqSz}Lk`FEslN95*f~mJt6p&n-yYRp%}fzwHj6+pW~gj7oiNtOVb9#Zc7aRQ zN(LBc=mfls%daJ)(&k0JQGD}I-1#3-9K)*E5_jFn2~q#I42ZJyFOFl9xX_`|MSN#R zXvxO0XH%kS1t#+d-c95;ra^)&J{8*XguCyo=*#i3J37mH9B~8U92MzbMYq`4etT5r zXl=)@_8w2o`0VdUMbC*RO|Wj6S+I6w*mg=Xj>$cg1FIrse%d zqW|DveOQ4`<@pMh^y#k=`$u)vHVdI0fz059x}+|Od-F>tm?gmMo|cxGyB#2rLP?E_AuDeN2$upNe4KKmcF{m^E$#6AHWtJCY=bNO&J|PP9Fq*ylNW z|5vTlRVw$uzJkwbo*!BUnHQ8}j@8Q=o$#mP!t5>kN`ZYXF044aWlwH83-MyEP6*H9 z#FOs}bG$gSSqlWcLDfz1rn1=B*tt$TWkm+Prnep8dFLVc6Rz*3o>Zv5;B^<}NvMB; zfL2oOYfWvy&>jYiy(j0U@wd8gn@ zLX0_@*AA4qM2zxsXDO<8?Yw?^;c}0QpOk9dfsw(#WGn_FtoCO!{FfHx( zm*nfU;SA(~eSg81=g86{GAyT5xaeE+wE`zOv9l7}-jXE&QtxM{6$i0A0O;}_=v__V z-|2{bh+*=X%D=dfy&E>@`bm(P=WXldujbhVDoK>6qpRk^-SHitTeGMKeKUg5&b z>Z4nr%~*S>k2pWDAqncCOn+8F{hoY z%hYwiqfrlvE3bdif!?j>?dciq5l=6DJ7IToZf?%9{IH(xUQ`_B7X<3cGk1;dl8^e_ zg`b)WlZP-JjcI9|Pf9!Y$(_pffRYruN#YG&4NzDBU>jI-W@Hp4DB-9qMTpxo&am69 zixJ#|2E$HfB7)WnN0i{kS^Z2St@q3pc1KAkL)=v!FvJASqbpcX6VQzWzMIX0Q-Pym z6iV?H{I4 zzfsR{$QdOUy4V%oQhwu_s)L56y`D-)=OA#_ZMQYk@Oqp3>4bnBpXcOnKueOUt(sA$`TBOC+f7fR&~amAwAMA#vfqLLenefO z4{O3)R$+wK!D;VXTb|_LV$;SSF*9pEdp(c`HK84@^4)g4L7W*3X z6Np%~GY^0_2--%7Z%9kv6%L~A0LjxPT$0pdblWcLJ$MUE(Ed+ZV_IxddXszf~=31fZBMboK3P^V`W z{@@5D($O|;>ha7qy)(>SC*egS{saUuxTId3pqQf^vk8XXJd)-(oMPhQYQfkE&yHTA zk56eda3QqI@8<{0uQ(fDsL@*DN_1`6vr%Ed4iUauuTuOlsR2~LQKF9f0jP=RKq26T z(nv-1pBIhuY7NoKVBRz{J$6b!k5LGnLg?Sb@E-Kh8yLV1T?S}DNE*CI?@*6OD1bU- zFd7Rh|D=`w@q}f|4|yXRZj#4-0|5~%gv0Htz%kV&u@P>6NO};~cjj^&a>GoVEbwJp z`P5;*vnB&`@d)vrR`+kCYwC=avdY0>?R!;3NUd$}CT>3(aBR0Is#4Hk1FXQ$R@rqAv0a#{ zLjw5B;ox-)6#l&^{(-_VQ?Hk+#z|@3KpQ-|m!C$b==y+|@BV!3xMAKYwZq!bhwhI+ z4divdM%eI^zUb{Mwp$drv$J!4=~;9jvGGUA@Ok$YJd+jXo3B2usv8dSbmI#C@V}2Z z7jvx=vuRL~EcyrSe2z2{mDNw2#ee(EwHoO0gEbLC!_LlBRAF(pBIw(k<*4&ytC7wp zOspZ;j7GqM*l1&m<$A*x!VbZRCB6xALdT3UYPUZB!RmSAyhdoju({h?;hBtI?i{vd zt_U|koC&{{?RNL#^g^`S^S2`0b2FH45$S6y-e8kz=vCM?y2O)-KhiQ8`$s=QlRkMo z-`kC(EZl7Wg?Etp4sVb*+x0|yN6G3DJn(U3terw_Y?KF0PCBpN4qXQC8AU-9B7jWM;O4C@yEsZ<8-hC(^yy_B9FgJy}KK_EtRk0bn=h)oGb5Q~&OT|30`#TH^+4 zByBd11f`EO?MHO>MexAd)DrHa@K zs2hI7(n)h<-PUE!@_8eFDl(Q0yZCkVfut|p>0CpJS))!Bx36P){W6+g2K#$dSIZl= zDP)70Dc#=f!RDj)o1TOPTE54s?&^L3GeoV&51)y3?|@I>%>?TA*H0(Z<%^HxgW9#? zm79m=>c7n|>w^#iKI0XzN`yQ!EgHL>*GS-Tl;tS~3^$^N$d#-vZ}TX;Va#QiWDKSq z?pkM7%D7xy;+f(49jpp30WQD}$MUmIE-qzbhan-MsCQPR_ZPPwwGSO$(f;(Dqq#r* z`YBZS+ladX{}q`!1%WR=GF;5cYtARlEnnM)84FH(3K>pz_Q%jYfc?Ur=3}BMPav?C zg9jfBKQ+93iupj!(d)EIL5`l%k3wSqKT(MY9)>zH7!U|?5d#Lo4*;>aejM!nr@kB9 zJ7yQ^Kr4lw!T_w?V6FnLKp#zNh~|c5fYAu@|Ax3Kkhl-h_zt;%-S~e#8Trr)PP66@ z51O9jQT%$@+W&rlmT(9=Bq!m@oBw&xP0a9P>WvI zx1x=qlX}ddKDX3Voj=AxJ31x8XHMwg$T#wZUw=mcHB!1k^_NH+^6&YmnNRtw-D@ky z@x`}WdPtXG)EPO<`!#>#Hkka8Mi1yp@c641JzZq3any{ibJR3l1%C3xv2Oy}g=lbQ zPUUf=VF3h$wO{hmK#?XVfL1zULTP0WEvqSI#@)U4P71iC>NgNX|_lBq~Ib{ z!5WY7NFd)w9W<;YK>z421}CEtJ-D3SrBx{jZ*G)p|1klf7kr$#y^5$O2j~DK4a~{H z*vQYOfx}!STa-xFvmf}Tgv%VLi2YwD=Xi<@*Pppxu{%d>S6qux(KPw8Ft)( zU;Q_DnN{kBG_{;l-Cl%MbpQ4w1dEmnXQ)a7ndZvQA^p91M0_-5>OxM>}Zs3KF zUW`Y&dxhr)Gj(+*fD-_aPAn*a+Hs4@^zxE(V2o%;GcD+6(!OOLyaUfibfV zY~0|+9JQfoZ3upG2L*yD{0Rz18hWt_uI|kr1<5e_0+pz5yRP?I`eKs0MM)KIx-Aii zA2p+2Z2I0OUECG#>@y;}+*iXcA#4(Xf+pVYDH39gACf9Ye_Wu&ejqG)6b7<0J;m7oHB z1h5br0wA^=3!k$9D3UMOHyNNlQw(~w_ACAoK$l}G5?(K@e(1NnRrX>h;z{?Ru^(YT zIu1jzoN;N%jBp01Zm~HI-F&6}xF)}DqwdfT8O_nUXt2E3mxQiQ8$lnz;ybLy#5XkUh9ZlcT!6WsUX!z-sdf*NfPxoL?0CQLY?g;v9kZsGN z!7%0TpBYPV<9!MDXBTR|xQaeZ2lxmoDzv&9@-71x1~z9RqDq|fuAJLe+=b^#z7~vm ziMfXbg-;qo5q!*9lvTQ|<+<_z>k<6{kpom`-jflDv~Sp%fh3^Iy0hc)LH9wIalJeu zD5wwuGw|%C!(}T1t&jB;Onr~cD9LI4w*sh|Xk)-I0A-%Y{h|9q4J+Sc z-Tfq8dl?v|7<0f_bR6{hMa3U0d-RbdcKK*~lF@74XYuM)!UGfm*|m8yGczgz6uA6w?jRswii)|n*5m!H z*GDEzZ(An+gc}9m`k$d1xj>>g9?iO65uT+WKR`)v@##{tuO`NNB&JkpJL7 zLL_pBAwK|u`W1Y6uzhBP^bdI;Y;esz`xk@n58vI291y1`QJ&jWTJ~yXyj%^XSezr7r^!M1?Ci?nRIXQ;vT3Qq8Tm$y7#!zH`p}@c@v-e)Yoy#Z~ zO@%FhN=xTH==}wdD%_hSpC$WgLf}9mGL2{0zcjuZV-E-3{+_E^zLd;VLY$8|4Jdzw9yZewNOg#*Mx)NYfirX9Uiv;s0d6GvWX(n< zVK3$E0j3W~VYc~>KM_}3w&h88eP7iPkhaC?*a8Qaz4K>suChiuDVR=aIz6*3C_D6?a46!ngU)7F^-Mq-@kswo_C31dlc4nr7rybOLGuoc!Q*?G2Wl(f^QRe%4 z=rh@w()*2#_e7-+&q;>g)D3l=wz*x!pb?ljuCd=7O={k^s*MpO{yT!=&x z8Z(Z6&W}`Bm=hGycdilOe3<-NG6Gg=gD~EH_MM%|x!B29KAR?^20yr)7ngqi7DZz& zZ?S22F_42}8B0vCC5|H#TgeZC#YL5tw%-*A=P%LV0SL>KoBF;`&nkDSbpb06fpaZ% zdALDq`7mthkWc>Yv;9Q<@TW>Q!rt*byp~At>@eJ8NlAy5w%dZxIy*VXyuE!FYun6d z+uS-3K8YmTM%$Cj2kd#CrIq4i;#pLRSR31#IC&Un!}Wh2`K#Mxwx8H8bFZiPG z7c^FLiT);3FaWY6_EZcIM-q&n){CV zK%Y^P#MH1c*0UL}K(!<1!tgRc0lf*N`|-)5u`C8?b4ery!IMZ?5M2%B6H-IZYarhm z->@u;^+xucS(wh7I~s0Vz=p{#(;piBol~kvP>?m`m#*I5W?izLzhJ_J>U+4D{3l(@ znU=NH02KX<`hrPkV9U>F^V((Zl?zO8DXtH6!0aN(9EkJ$Db+;f$76$F4L{g>{K4WR z0}{MwhARkYb3_SHN1iX zE_O@-jsJ{hu8tMw93$)Qs<@kAZvw!dRh*N{3D1L*5!-g5%xs;zJL92TFggs4<)Gn#hbU~)p4{dq=l;1lC2w3L_;B~%E?Z*0b|fR7G*DJ6At+qt;4$NTWG3TA*d0~^TE zb1<}HXkc*9vBU0)_wIqm30#~mjLjLgC^ZPGu0TS&Mt<=Zk3eC7Fic;o(xVrsK;&qY zG1pa)sf7`T2UH*~49<50i5r+OT8Ih(BE-GorSbigF;{0T%nSQfLyaT=w_P=xgbM`3 z%#D9f5sj53hR~uR_~(0`D4?8u3>dOj@)T7vRbC0{OM}liy;gSPKaIIiWwI@_x!La= zO&d2hm0s2tsAZL9nC~7Su7me_N7L3B;Aeq)->?B&GnsI`D;8pGHt;d8Snts5?sRjw zbZ7FdX#9DI5SCF8k3Om)b(G*Uhw+JdgH*89(7-NJc$vhpI;isVJn>-8P~RmM)%6@FRwd?2 zNE8|Lg{^f6U?HCm7Quo~9|RdgS1lcXxepGoqE&eF*i9&eR$$gRE$&BP;E|v6jrqUS z(N({bD4Do29QZumOqvNM);W(;H0l+>7K~?MJjmd&+q0FkFh1Dp*45qpYsWk5s9?zh zS~rG>)v?|tqf0O~-*Bz^-f>Q(WL0&Uk5Hmp6CB#! zz3oOB+V^sLYhu-RQx!sY%~O>Jd?dGeyaj$;LC?lZBMM1M%6eCLs!ZH%`KSa+${q9H zU$@`FR1bM*1&ond{pKIorA9ww)peO=nwi;|kzDS&{CB*Vf7aJONFUApLL<9OqQwBL zUk)&q#|RUJ+^$ytsXHx!4e&_K(Fl2wYG7!T=5L%W{mYw@_F3#Dc`MrozVu>vOt33d zY}+}0C0QB#;wPXnqGCr%1+EBEE9zlx1Q~BH{`8+`1VA?hzE6`_#2ab^x-U4pzyu1` zQirr%aBuzlmj9i@;%{Jpc93LFd$y*}8M# zqYplpRH$t3ZJJVQC1NM0qGG8AqNejY*&G_D3ewLFKfOB%HG=*osHCJY*B)ZeWeCz~ zmmAo%{68kvhb;@=R-Aoj!Ka+D>aL0`K&`ujL~L`sF_LwGygVsDzo(%of<=onaSdT8s#8jR}mbYSXtegwVsE=w*R*|sEihlUI>h;J0ETnnBTUg8d-$5|w&N9Rh z*E(|8e4)7b<>y~oy!%MX7t)K0a|SsWyl6h}FvTKnoaz$3?|I-D*|LN(>lD$@A{>8eNZT4cT&7eANyW zgS(pdLVw-f-p#1xp&IxyeM26}vHFVQWZw#BaV~&@d)A{vqQf9uf_|@^4n_Z7p|w}r zeWfTVxaX7HQz8-&G zTFm#DXP<<{QULp8q+jo}W1l`pB$ER3^Y*l1w_&9NCc?J2%aE9Jl*G>>0v81M>Orr#KJE+*yV*)W`h0Ap(gl@l}6`$u>8ytB*ZJY2ayO z(K=_-Y7pIsYJkzV=bOJg+1!#AFuu!$@7xh&-~IAHyzz;-s8sme! z1v7evuKQA0LhCspCvvJETN}DP!oALwXPb=5ckFrg$c{H&&|XcPgjoSdU8mu<>LCywW+LBrb)EF9&BzeOCi#*X2GOqVRpeVcYSA#C2#`f6m74GG9LSltF!usVh^zf4mIY|6i~D1;I1z|Mh87|A6ds|0jpJ2r9WY8D6TNz3LLm zf?{iJeV@MlWN>}YSGRVrnP#*SSQapVBg68rjg9IQ%XMqrw26GDtr>Ie89IqBl3S+i zZH5mbu^yazWX9URSQ(|~%#%_@05*==4n{p9A;6W+wZNn(pFb5qbKEubfLHHUT04UXiN z?eugAp4a`uj^4g1)%m91_DO#LNG2nofeuwviQRNwzV54D*YwUWLhlV;68OiVTjogE zaPpt=X<$o3oYvp7Ezn(P%;9i`^raA1N~%5P;$n{%MMWt`Uy8w4g~R~j?yTz7NV)DW zeZj3idu$Wto}H0GPXQz?OrIEYajR39Ujj_4m~iZ(fW+#pk^LOp+y8f7Q2lN&*;-5$ z0In6QVRhn>tfQ@ExQiEDRdZ=zlY(-gBu{zs{;!LMT$YT@OTrI?oG7L_D>7VLQyL8) zgkkeDbc9?tc=KJ`Fu!1MvS3FXBDalBkX?SavbY)lOJ9LAB_J|otOLwRC_ z%j@Z-yHzRo)Cgg9LAvRuuQe-}cGUz?k@hXVu`6|x&2cBzds?JYZ&LtrCuDli7Z^yn z9-o!J9O&kG9clNH4X?qB=S;i9YtQHvobzgFB_&B@bXMS6;J+jXe<{SQ_h8if%i0|8 zs7T3IQZyzAAjNO=fI9aeY>NeRQdzORxVvM2Kp(NM5To}sH6jHO6tL&0AAxE#2PG0C zkui8Tg4`7UsON+J(qSZk5l73Jo&_ulE-pqUSo5geWT)LN82^|i$@-2PE!0d6hO7#d z18OI%?K}(8a)O;)G=&=WykXY95iVIbXX9Rh&z$TM6W%h`pOX9hy(gv3L-THP!Cz%E zp-j6%nf+UAf9f{s+Sg8J9*Md-lK$>-o_0OlzNC;UNr-0d2p4x`XqMBe%oD7^Xh(jU z%hTPU4X=?0NZ7!A^xni;+ zLg=c>xp&Dn3)HxK1h@mlCSr$+P&3R%d1o38jPhKrMJ#)u&*&uCUE($j+BWIw4hlI8 z_Vpc7VcAq{p_tp)PU>ii@JsQQnXQ8n2!4-;WK0H)s&uiF=J@xr_cecV-6D0oyyd!#C9>vYPpUVApX^kaE>uwt?wqt#z< z%ZOd#L4(6qP-iOGJN|mpB zo7a-h__!r_2GSG=TqZq>Lfz?grJu!;#qaDAp-=g=k#BHtQNC|UXs3-QpS;^A zJd~H!jjOi=-}LpVclDN7&(vtW70^?pprrM{t~&`FNbdeI#x~_gqBm7sEwva6GB-El z3AWhO^RO=y*%&rEXP4(^Rt_UXLN^|1FDP}GTfeg3uRqeVVHlsW z5l;ELsm7j~s_Y%zpOGr&gpjAtS9@jIV?`X;GWBm{j*hlaQI)l?@cTs;NncFK!X|Ua zNs2}PCVHo1EQV&ikG_iGeOamA77$QL>9rO2@A*&VBQLQLygT@>qu6?E4d^jArd1ci zu+6WrjRwJ&F`MzxjRvRzYYC&gn?_vu>Q@^Lgqaxg|9?(3A@a7+qIS)7yRx%g;q%gT z(RScym~vvAD?2CW+=9mPG~Pl%SOqSQW0sFu+ebZJ-HksnxuP0M&uwL^MO`1r=^t5A zQ?(inyC?MRR;p^i{syY04a0N0oxO>388C*OBU6Sp3XL8AnWBsQ?k z?G!1TJ*W1NueN7^YHtv2n#nNj;j_5@Xb~Pmy+|esVLbY_s9El-01M=?u22 zqenO`VByxrWS z=~!7|l}@LNtca2m?VOp3p0=+Z@mEt@a;@YOvXO>dki*95BFEAP+RK52pq&$kLi|&m!HYpzfZx#vyq1T zBBzP5+Vpot{BPOi#eyhBVhQ8WB|2DCHq zV=5`#^JveLLP6p8cQEk{Ev{skbuabIEooiSo{pq3SIv;`efLxOL}E25 z&$|*|$>!Ghq_-{#)y_c}?oqmVO^QM_wxhnJve5pIbo!a~rl8cM9i0;>l#cP;rK&Jx zT}~10vaA<}DFO#`rE)z#$$cNlIeUDr$}d-ct~9gKm=Q=y!!1uYztB%eMMI-}oFIJy zrjoYfkgRJ8%aIEg%I{N^&_NgBjNK~MGdWl~Z+yPDS&UgCG6+{FKuYI8F8JUqWj zN|b2W-%?B^juw0d>F$r%zXxb6e7l0dSt0$WmMa>;8`ucG$^TQ!CBm@hF6I9ZCn&tU zeR~zI82XI!;Gwe8@X`9~>4JXO{&oe0gM$Yxd>@DV)NR+XElkayE>cqd92w!7v}qG+ z(AI04MJ^w;tIq7kRd$bU`~IEqHvj^9OY{~J&_p30tByXttX%F!?Ro82oX z+k=~p)PzGtwac_tsdAgnTk>7o_J&O6C0Cj^y>ISX8QRqP+lbv2A*~ zhDK_1GaLPMKY4$wlA1J!!Kl91W${Y0!qh=ZR!Oi z5py+ql2Y`!hWqto#@9&KzS6$&mx^UaCupE0@n&$5>;rkFU zw~;&o)$#8EjRu1lNIfmDu|mh|ksjUv*^1*nl6jyQW7v8sV2%Cv6A*@{l~guQ*tBi< z#Z`6BcA2oAJ5Lm1`t170%F3&j%e;jFH63V?uL(^5^s^?r81vw=w zOc^e7GF+Fl#8t^Z6XFu%ek~Oz)Jk)=R?XDSu2Tv1#CncxPvw1|^FCv;w7e6*?NV-+ zKGC=Axg96rE1mUc_shvMZG|&tT&psKs6p?_=#zT}8`xNJy=+%Vzh3tzBXaai<|K{luXCJ6igh_UejO4|lXHR%veKPz=b7kx; zTq*(QwV>%&^^ud}!4+G+)AqHsxhnA|V&Ecm!kjSt6@ikOGFCiXb$F*S#X zy1VIB9UUEV;y?H?BYC8FmX^9B;8ELKy(0@%?}pz;G{v5SZBr6*p>)49zC2?BSRzlC zHn)FYB`S*NS7!B}4TCVb=Mq*uzMK}Fn%L~K-x)8E?B%1%&K?&eGN?%bVn$b}65>Ah z$Wa@9+Rf^VLf(!xA$) zu7FC%HMR^NT8KwikqQ_|j}*ZkC^)Dxs{eeTQJ&RZ=sLQOE8vIYQff~K>+sWd*l$lJ z#&TUYvNfbk%w2X(BG;7iJn9IS)!IKvKu#3mWHm9D-bKy_&o-xnJGJpW0al*f^3bEi z@x|5xclQT&fOcYSKD}*t=$QIpZCp?H$kT3bftc))vudfy(~7Nw&mkLck1Xa}4dv;E zd&f^Yz8T)|=$TJ()hjk4{mssuL)9n`{fFQRtTdgFxj7MrGKnO3oJ5uZ*aVI2snjNb?z4GrA*gct$xq=4M*DXy_7}%Ut%mCei@RwBhofYBX>~ zQc#YVUbgKF28aLMe_lY(L)r4e3uG%ki6k*;qr4wb=l(Yi$Q(5ZDz4qCFZ@+CMd&=4 ze^IKl33AW|9eY*US?b=QKV!o}+#P*=^W?V@k*jhL)LlA%q`Bq}7i)C%(Hl8Yvt3`~ z>aa(Vu2E_pwmB1D9?=Ru-@_Ug!P4RUnikw?vweLg!(?M!1`{$4fd3rTo`LHz-iN1_ z3Lw?{-Ah3Fp}gB-NOH;OGI?k-3_bJU*KO4%X8`p)JY+xX>j&hl7GD?suHX@!{dpFk zxR+TFWUYDaH~XXa2TAW1GjU{R|F(8kWWNx>lR+D&4y((h=Xq(VMScg)-hLc;h+_J=|ES9PZI z?S)2VW1}Z3su^=szYlzaB{MsFwWKl+R;Zc1-OAAJNuypqJ zki(CG#jT|9CmQC01%UDZShG~@eKx3^zsn^hy7krHVJrr{_zn1pjT6T=d>#902J_xy z1B*fx2{1j?ToSp31@hcC^B^0V|$4mpqTUz8aOx9 zi>`W?AGYz~%X%V;YZbkz0W8K02dRmKaF(*V$s9eVYdWh1uc=Zedv*ebeNd=p-)P?c zYKh(`4GFnO>md$J8kD$A{Jq~;!51P@onvFS05!FI>bHLJW6V*{{P`+%o2#=d;~+fT zrn4_Ai#W2yn1`QC#bxvT&6sYyQd5&>E71&*oAc101v^!=n-??s$t~^O(}6N$(xXXg zc=wzaEz;r_k!vjY{F5}U$x?L*5{?U0YkpwBX4@NIN{@~QOkB4di+U%H5MRagm{Lf$ z7$5`^#s9wfyExh$4Hc!09vG>CK(;BUDF})&34{D$DUP-c10(?D1RAQp?+2ibpdM(- z^3}D%u-Zm>#?XOn6mCyi)$uM_Urgv2_Ef3WqJ9NGp6t}dqJ{L=%DglLm-MO*IPoP7 z{{-Mc-PUSWVbk+Zw07t9_S#D4im1F>_CKRV-RUw}=RGpf#Jz9%$w9o6Q&2s`8oK^* zr!;&oS_!?NN_DLc3fm3}b2JpoJ6#?eB}aYX9+I9%iV31e#XYxrc-lSfhHck<%5D0C zZpNrWmZxg6laf*nx8hM_ha1=~QV;x8w@B2!aT-UuTv9h=scW+97JMmMp7E@4WY6a| zG!lee-;b$70fKWtWq`9f48?apmA1GCOTeX8yforky4$DPhtf+YXL)LHP^JkOmV}Rd zR~&1GKBvCc+!)=xtM>H8k3AQ;s-r<`q1@9a_Q*p1e3|G=u&%tWm3`CW&=NQV)tu3# zK`oarb|oR12dfp!6&bLqA#etO#iFx1Ebh#Bbj`iJy0h#a|0U6Beyo%^c{tDG@1yFM z9tp-3_Ap$FFt~8t>;5Y?HGGY12cx_LOU|CW9^asjS4Q_ddVk7ht2R?!%i(P@$crWd zxPk3Jox{mjCpXF)2*YkY(94FDiaK}gzg|IS`LYp=D9~e6@1nD4G%P%g^2`8T{4X6c z?94Is@4f*4-!r!FmFgOOTFuGb=*ji-Xg%S?BKQHNfdB8m!poE>mAjBMr06k4gzz!}N)>4lH(PQS8FKD<>JX~J@jqqkI##6^;VT$5NZOh`%tx8YDt5?%Ad!EgQ+6p?GyZ%|s zrZ~019HBATB=NP){Db~8qv>r3#%WvFYTnQD!;2SppVT>w1t~)~P z1&`Yw9lodzmwM;QF09@Ty_zUfQp{Eu_aUNkIb%8}X8 zP`;Y2IsoxpBxNX*uWlC(x`xCiD-KGQ9ut7HvD!QWj^zrUNkhgteut&vl|N%DE;?@_ zi0LrI_u9Jp_n1pa&WvaT1}qFq^#F~B;t5~_P7UNeAj$sM{-N;OlTbrtn*vzKYel() z6v<~Q-I5n}azuYDTI`hd4h5T3thGQ{-aAZsbQHEQSZ6P|?WCdC_S8_AX%;*6d4B#j z`5EUY1u@~WPfwljQGMw=B=ct@@e%u1s>$u!;_@t?mf9aHH7JzGm+Q9(Wi#Dx zv$H={v$`7J~+3Vg778%A_cLIwY7hvhR*Q`xBq~+?=pBWc(FF z(=zs_7U6s4rDfS{bvDM})2Y`!AmRM~u=W;URjpgw@WMclR1gpZ1ZgBCq{NLN($dl? zN=tXR6;x8`5D*Ea8>AHkq@^1~q+7cGF&FN0&VEn)`@G+~E-x=wF`3VJ#<<5l?lIP! zI>^?7dhi?}yr+@a&cF8rLerZB=^=eF#Di>%(nK0i$eSQ4A7a44f!be&fc^6aO5YzO zs0wBe#y=43c8rA10NupvFLPYJH00zn|D}8aAY=yr%P|@;-Z)) z#6MqUl~e9yJv-hx5@M9NB0i9i(UAvuH3yxR%^`a}W@hcJR)n^pvTj0-2C9h(>H+G_ zJ29k=+lK*@H8EMtTHyWT%@2_K8H{B?@4A+DjTKGD;zB z{Px$njorS#r(4wh(v_(bDnd^(hC(6cb{^EdTX}G>X*g%HsCkM_N}7(gPm_xs_3a}P zL*E`F`vRghyb(%ul;Bg?i6>_e+yDPPIrFnOhlr)sz|u|LBPCFGYslGge}4!R)S;b2 z1Q;V!%?57vvaacTAXHtMBr1yFkkZuERhesR^)Sy=1(g+H2n){P!hH0zp=H*-F-TQ? z^BGbiVGA_p6o~i`JYav=&hF(%gyxc>`4-tE_$2Gpm+RD%n;I*C4+)lzv zP&Rw&`a3zAKm0i}DiuGpsr9A{d?YE!h}>-vPiiuhJ7th$<|^D~6uKMC7fW6>zJ{(v zXKhM3eS>D@%?H$>AvZGiZbNzghQ?p@CV&fy@+Kmv0{0g5zN&_y0T64CLQASB)C?;B z-e~|G)K?6&s0x4mBwES^cs`>t80HwOek0?By48U7goYG3aB8ER%0!?65s{?fWp)J% zuQmDNE(2Rjqpm#3t!PcuVVyhYCBrYd%s9_+e;q4I@8cW0YV{@HBlgCQa zN{@xj$-0@5jT}@<)QS(Vg7q*v+c74&Mvp7K>;+(vy3euPXoGm`Ix40RiQfvzRugmq zebVEoU1mC}ms`LVQaWHn5I5-Fqm?;Lx;e!+A2@6zR#kZ<{pcqcJ$wa3U~jY}!sho+ z=YSU|=}cIZueFkDYLx0Vrxk=87AMBSndu^73svb6I^Ci^ilXx@YJ~uuU{U)B#s3#C zx7&nUOS|<<^yBB?+V3eyrE~>vRwBhVvQhNk6Eg08iL6j-t}o!P-sXp@#<6Ov$)~7a zD2VQtGdTnoRmFE95}>960Su^bT!j)Q3hg>Tlv)AcCkDN&oBDfm`ZTqXqUT$=H&@4MWMKTGyDjgEBqp5{l+$&wKh`K*_qQK|(V(ZCUwrSUE0l2D zQ@WBt>+_$Us5Is!Nj|e*=+E6ceE}E0DmevwZVRMzWzOsQ%gNo+K&3WjI!b!vWttD7 zJI&z_yCL8RnDQ4b`iH>_vOBL9U)~y6R}N=)h7$^+rXFe34_W`Y8tS?}Gn5}tgmjN( zO;kB5?X^pX3qtxpG!hgLOa=Y%LXMtR^W4rFqtKYOmDNm3^xEFhtZ=`fqC!G;*rg%h z^q@nH7(s_m5u$fcvv@GA%Qj&a;4K#h34n^DP(2HaBW!odXqK3j?^;WxCGpz|(48u(sJLfqu~5X{JqC5q zZ_qA>a8*ovxpnCpj11J7@9l!NyaIw)C2#i}T-oh4z_<7R1fD zvi6Q7j^hNkv+qmCy#4cqUmr*m9&XDDpfRLL23K{hO)Cg9eps?m?aY~DAp|&eM9crM zc$)v!55M)%`OsBPZW!LEPGnSw;B{V4iIe5yAyxq|gAoT`s}Fg3sfUk$gH$J?Cu*Cl zM?jS<9VAfS0Rm>((!_NPsBWQ8#42#O-sq?6GTHv)dU#2|J=fefKHZVKOXWk5=}axz zv=$vrrH*th;NFTTGfBOclL#)NA0a9`UE1iMycwR>uG-~PZg!>Rj;)`=Kc(~TSyuuK1UAG)q zooJApFH?ZcZa*zJU~#)4ICx3cHarMtV|hpIWG zYdd(*_UU_ahMA3Rq^AqM0f30MHgm5UGv~t94`qXtt1O>PoPz#$VR6KW05WO=;-N_U zSUZd^SWIY``wtFl_kn%mjG*M88g@Ez-&!8)Xlgo$!!t8q*Q4`LQ?~(&p^J=PK6p2~ zO2HS2RxmGIK9Pe$IpAWFl$5nV&`$7!wtb7amgoc@dAMyAmGJgEEzdrzZy(EPn3zQRy{0^}L@e|SC<&bBAr0^qu&CF+d08WJ z-Rq94`FsW~SfKwN>(G}X-CmNS;!SNv`Kq~{GMh_TH*{G9rmoA^1)8y@6|P#aZ^`b6 z>9!|`D1x{8_;5g!b^@%?o$O_z2dM;cHu75t8AR-|9`NY8=TcFhrywuiW`UQm$L>4x zh453ThbkT;caS%ryvYLs4=kF<4)#VG0y=WJ&i=CALQ{W#yC)BPDk-OGH=&b&YJcv9 zUeSr`U#+Bevy!o;YU4hPCrOU6KycT)%Fk1nv;5$vFZDOO#Q4U3x1+7Jm&Cz-1!0Tx zWs=~LPBd+6oz>)PE>2<(843m$43mqe&7aPJYlUBG zUyhM2+j0&ix{(nbUVeRADtrx0Wd^-;N^~9|N2DhN{>{+35}6_1^bk~EU1d>=vqnq<*!1CWuJK+_3^RMu_=hrvG|(zcI{9@rmD13 z=Dos##vkPgJL;5xF`o!uw0Kwqq?(D0X{H2ptncrqC=A{s@g8-QU;6Qt*{gX*)3g*P zDvIzdb+ zwLjQUVTC(%Ib-3E=tV~7=e@}J-6qQH^g51N?$ zv%+CK7q3}6u<4tv4pLT9WQ+wKGn%iy3^&w2Oz&MQ*^-F?En14A`2_0HO(;R&)!T?m zPY@dwy*AJ43@IfKmJ~I!(}2&Nk*2dfAgzyL4b-iUD+tI_pPuFrF}-hz!jJP0@r9OO zHmSd(FFo(RQx68$m03nlQZOMt+kXdlf1qKI%-KZ&zP$OZP^z4*kiucnWxRxWIEiPl z2s9@{eeHSMQQEG$TlyPXP?eL3xnE6(@}|334FLB>OM=#pnj$Gpvwh67mRHnkHk2;{ z=*S~|$fnIf$^pDWZE9_0ET+EoeBOL63QM0G$62Pskq!n>MraCX>8ijq?fPT%xW&Q~ z#ElT-hJXd2hVuZ}hSdRx|I-TspsmUA*{(K*K7e+bQsPT%Q$@CrkiF@$abzn{;lC)- zHp}_aLmZ=)@Y^{hYNn0ay!E=s01%rJd0oc(0)mo z_xiX8hk1B$FE;)8S3YV1XHah1VZ_QOiEcGO%dOwsn(5E|e62#HodrOP?&p(}pRL-i zTE5eWNOy;i)=D6&WV|b6mP+W}X@E7YoJ8;gVd!wOPyxaJQ1Ae3K>71eFKpxu?<++f z9wwm+e_ULa*w*(i$HM5)gISZFjirxoCR90X{?6BHcYgvG|8x)O4C_JF@|U(Pm~}&X z*c)LHVSB?C@g5-Rl~Eo$sJAtUHuoEt>tiS%nCmrVgqZY4o=4#`LU$P|)r>nob~ysL z)X6JHHB;#AddS?u`GG2Z%k_g1H}+Yx4EXXTvw2*aIIV4#s?mv$>3$&>6YrHbtmV1OIw zdhcKD_CLEp^=KrI^0EXB2iCV&XFY!W2~Ak64s5coO5%ZZKD4|)Sv3LOt=?T|gEGLC zb?;O3s38HffiS*r*N)vAH3mJ#1nC%yx_iAWmRUp~aNuN-5uhGDB0F|)pFbQq2t8;T zVlst?AechlLwE3V z83<>(V7>(=fg^P09Wvz$LQ?5g4~c+Ai~l7jIQEV{H`}%TM@c7P_~R_5B=9)!eikL28pCTq7dvN=l*+nGul#g zwEUXF?5H<5$Ji4KBb%a;LgzB*q0^)J02D@T^PVU;-4S-k_4cm~^K~Xj{pFwg0`!zK zIdx8kwL3UVHO75t8Uw4mQAhaTe~7t1oi#|{ai&reRchZC(~}AI*#W`d$U(~hj(`%R zJO?hWM(ZbGRI4d z#sPRzn?x1 zhtGuEm&1}ZN?ih`Sx!LpkI2LDD3rQ>soKKQpx@^8OD?|TEUFJhXD@c$6LmMwd6S$B zE<{K4;!a=HJ3z1->anBNni+*fZQ@|+j-XWx)ZuXulnf1i;2+3d^_O7$91D!nRT3Ht z+MUV9Id>R-IEjpOE{yJ$CJ(uh#)h?g-ruKZ$T&FzL)WBpvgsZ;4xP57KU$u@cmros z{@?hQR(m*%2QIp28!L6HmQu8_7p~rbW1PW0-k67vvkpje(&Z?|)CmiE8T=*c0d zGIg9@h-V+wklCf^Oe}K?0im%LdPEI7@fRNMe>0wGfbT)}JHLN0pBw+}B)j4Rr#z`f z*<5OR)H(?gR^ChJ1KTJgd6)-SL$G&rf{_gKhogSs6`kup_OwxZ4Ai5S$BYWLX55aM z?LKfulPrf+q8DGpSR3%4O^{N)i?W!E3cqKbQ$Mlnc{e3uc4tS%Yv_gRUpRAk%R?W; zU825+amD;BkEkDju8qdk!2#s^7=sRxzqr64?;(4^!n0GTN@SJ<^+pKMOzMf>!R$qn zLG^r^VXtOrVejW(qZi3U{DHTpE%ufTLqnoxx)Y%L!ISy~PeV^5Bh2_g7M`{oI@ex1 zA6;$~P_MQ}IEig-X&D$BOV%)tn^jv3FJ$|b z2EvWh46`c9gRA#`3)f5?;KxSc`}$FgW1#S#{ij9aTdfN$i15m2TWkSd8^iFwCzO`L1{ezx8kKop9ufT#jHtLKw8l1fl z*MQVM4TSq*5_9#uX%P0sq_mqKTW-_ZWgt}um`FQg+0arywZ}+}^WqEbqdHGU_>}*U zbrs~<`sucTlSax zioJir`&X6&4ErTw5;Oq>ElG+M0KeDj&lomBi zf%6TdX`)cAvoL;*x;ZUD+vjB?6QI7e;dPxQ{Evsf^UJ-675AR+b2VpPbUZRPh$(dQgYPZYAOvGL1$ zXm3?~&pw;s{44Vw_B+t#dfPEC)%a9U@eOH%P3&xaf1w_-;%?9p66{`oPfmUz_Nk2y zzDqadBnQu*!FGY_@{Pa`X28Iym+#=Im|O9XTOZ>8#}`nQbi`$cx|j8{@6^3e3yN(W z?fm-HM-6}AHiL11SV-!nckdtC%Of+h*L0darG_$jxr{7^(uZs9a#+oAXd3O)F;O>h zR!aC#mwt&P(ef7hV;(Rn70Pov&#*%ZRzwjPaQ;P$*F*Tmpp8vDj6nQQo$fs&!ED}Y zFHCjto~Q^aHZn;45X(kcE%Nj8{$*ZAeej*a={Te1inTFbPR`zRt?eclt-5BE6%9lT zC%kQ5C6$FF?nR~CCQ>X(h4!*s2-XuETOx<0lNa?g$MR0qJzKLHMavGdR8YY6Q~yU( z{9EIJjmYEN#x!+C;;duC!9w4^=WP6FY1h1F9uT)= z?}6Z!%Io2D!{V+j$i45MaXA_;8=vL3Hf15?RDShE8-$%7@+{9?CJ|w)HbD3^MAN08 z#1Ij7UzEYhtuzWiKzW}1#}~YHL6U`>9w0@|&o-F<$iqW%Yxzi%mG!8?F0=Yb)*N%I zFL{EP5qLzHu}LQHwY^Dq^EeG7i}z1977=MBoW}xg<+Gilx2p&pZOj_Q5A@Wz%BvwNbl039TOZ60%Q`9mEbSPTQk<351Ie?%DX(At>vsB+ zWv|a5^9&8lE#yh7ut52S^~p%DobYh3Q31!f?lJggO{QweN*otCf4#hrJl6$K(k_9O zUE&^OMK9W0hLkf#3~$kfWO4vxkfYVOuT-$zues{(v5vXJMW*Hs5A-4{c3h|9jz+Ip zSAjameXTbp8Y-^4vvB_xw6<41593ZRAk$cG0XqGU5W6l5X>uaOgkG-Dti@h1RmDux zr=}pk@5E!HU8kd^>J8b5^!ip!$Krb`SEJpx3Kq4yriSp_+x1*&r4VDDz$kfa^(!gH zE<>vQT6o8J$;gODb$$n}qk-z=(OI7l=EcYTZ+-6AmMHvm1o~~xs?!sh)j99D-%jf; zj2A9d+Z=>TBT9eLFT7APD-Bh5fT7RtaZ*6PEVj&%G-ftVrK-ERbgOhaUdW9F167uQ zCQH3IXqv-m4rGDXM3Ay8Qtz-*P3_PH9ddoj6usn0Hbx7D6T}ca=$!Yu&!xAFqQOxU z>VnKTIom8`KfY$5Ef<(35!kahwb7?{^x(qTcHwpbhq+}p78%tE6E-_~Le2s>2Bmqp z)$~DTPs`G62SDfwXEx5RHe_0$P`dJFw~ z5ht;b%p!HC<+M|%nd3m!WJSx~HL@9_?vuw+79ZP(PoPlvokXXROzxtxED+O#CD#Ia zWVVB!u1-)Vbb|O@iI;UibhbMKz!KCyTXyE*W~!b|Cf2hVIfwjNnfrEicJMvMhZYMD zvObJFHV&wVLN9hXBxIO?iT2fe^;b0_t^CF;VSu%-8<|Coa}UCY;;#day!x{LO!gAw zf@c^0O)fYJtrU80IbXI`cO(+|Q}s?L38jGa`#edDgLvFiQnEkGbZ+l+n2?t5a+r+c z4!*-Md96xV{UVaN=CaP<3(R=A;S;J_A9d}$6|ZJZvAHfzUX$vGe)ITgM;JM)QnKGh zxKt>O+~^t!v1#L5x{xiUQ zD)LR7n9t!bv|Ag^p1y?7uhR3NfrnBC%NZj;okT0~>y!4AkI#q>xR#~haG>rI7r6fR z(0r5=b%&X;grfEAuAjZ({JSYZX4gwn@5x??4$!w*C6`W-Z8d_67D#v<c%KpSD0WY?OrpveV*$v9UNKC-rAj4c=6goYq&8rhD>f`}t%Ia#f-r ztSM&XS{UY0?~q?J4dRjC@_k+W;I}X2f8j;Jvto%eIT*5MF>)v;Qo6X{be?Hj8H`N` zQ?&-o&Y&g_-$tD`bR&?SSmM?i$rf=K{%vQVN=IF?QaGh zEc?ifwx`P~eM$fdE0Q|$MQQ2R+TJ!f*lA!rGdVuF(+3szWQ|;QFqP5<%G$?oZzf{l z<8>!;&D^1(m0607~M082bR z#B;&0xXMtJzL628j7&neLuNYu5HH)}Z&(*2&Z{?@znD(8mo3f!2Q`bozD-C=JE!8v zQPnw1MnWnoo)$K+_2JVer*B)53o#L9FO|ffz6?dB<}UvJGR&5n>Zs$$O3MJYR_9|I zuIkm))r~$usdfT|LBbzzZE}3ctQ|0!gIj`+;D|+nh}vP_~MEMzFCX3(1+FpE(gWiYB0{oS1zJJ8J^ zaQR`2!$hn`aH)3u(Zu>Jfz6!Cw7Z_$z~KAM5>qPz8d5>)e#IQrk%>lXrx$JMtThSnL9>v?(P zC5}oxd9wU*qGKT{KIV;Shp2@IIcCe;gjm0jf{QRV4ISz-oSoRsGwB{7{jq^?D-OP+ zC zEQW-VQ!d4IRSWClsLRv!zFh%Edb1m&uG|<{C%tJ>?kr@>%xES2eDLrLHs-|ig}UL5 z>7D=!N2>XGC-SDds5j|1Dt4v`^Ug@fv(?xzqCs7ix?+@5mv<8(9`(3DliUJ(<5gyeATFQCkS!Y8w5`kbCr-hDNM znAdJQo%Nw|XMg&^tj{@^YUJbYZk%u1Y%*0?xUTfgQc{()ur$y3W;PW!jz!QCj$NU< zE}~~3F!?Elz9!a8YTC>~-fi(h(GCQr-g6--NKC&bD9^8sr|NLm(BYF(@UOs(iYKR| z4-vaux^aK|pxkpO@Ul_bI!41ijU7Ew{TrbdAit;NC=F{!aMYJ%B}!1rh64!6r$pJ)eVK_ zsoDFJcvf7@PhbCN#|HO{`~A~)R2Y5ETc*c9W8S*2`GsL&bqohy)!Jjj4%-qwZ)cb2 z=Gbe&2-z5eZICGBylenDB zGjqn!i*-q#tBtj8>sPF)`neNsc9d){SUk}u%V6T-uDbDQ9?<9_4O{)wvfp^itD6jIo?u;`G)(U{e0ZRK9#ohoq#l{U1h zIou!hsk4(&E^gjF==(;WwH6!3$F)HF+OHWG-}ek#;lWr3k#@FSM17j^-4d;#K`iP5 zVH5t4^HR*=Hlu~NAcI@Yn>>{&oVh(9GNaV=)KrYL=G9DC0M%IuFSb(*n!Ja-tz8(p zDgfGZ>@CXeTnKklycYE?-U!*Uwj$}e^TvTPhveZ9%r=x&&T&Gal1resToeO~KcpE_$ z5w+vK?M|nkJR$Aqn>HN~uFM=xP?9}M!?S!^aXXs?R&*AsAR8xkhkH9VXVizuHkxHI-3{W*Cik9e}8Ry&Y8xrznz#Zj1?b*D)cmzk__4Yj4mNoy`Gr^wAB{zjKV{Gw^9 zsgZxf0dpy z)uM(jC#!&&g~xpQ`SU?}yxsNTN99Fkx969si+R-f2g5-j%A3+Qd5CGy6)<_1^sqO@#LE;`=1%BXi{$2;fBrO;E4-nk9K z_;iRx$iZ`U!m1SLo$K*;N#{fFTsrBR3Va>{R)u3KZSZ*KbpJTuMi5}0Zc~V!Vwg7} zH|mZTGo&_a$ZZOST&e;NH5d9vm?%__8c<9M#XP^;=!d% zQL2yNBKYoTe%)>=;hSw-0Z&_!B!6y|=NYS#;+_WEmY-20cckf3RO$zsBc8vPg=l-5 zbhGR2$<(w{#C5oLm@B;3aWF)^AH~WD@hBNeW6{YfOL^mD-s)ra&*|vkxXSP8p?IVE zcNH@dpm(;VJ`sEc4%dfQcCz&!tIOB-4$cnG4MiXBRv239*ku zOEIn*E+;RQnKqd|yEU_4suc_T8^vkraEbNeS*Gci{G(B(*Pr}YW97u9OzXZ1M^Bx$ zuK)V={`I(|>ke~LZb{|+IJ<{}9r#e7AKgAR6Z#ncW1NNiWcqRw3k z+^8=MqoqmtdZAACk{VTC;d_gNs}-hEaN)rBhVg=A=$%=7<}#;`-j71+skA5PZSC-k zdWV0!nR^ER?Hd)hn71}+KZMnAJQc8#^b$>fiS}P?8sko$@MN?LV|4KliCsUxV5C8P z?8G#j1`byBCQ)YB2si{ z<2A(XP?oA2{l*r7R!m0h9cJ1EDJk(&&!HmemIAwDp{fA`?o<=5oWv?Adf%3Mk~5k3 zMb>FmTcms$k#LCp$?&*)vHwzT{8gCOfzv)SYb397NqY0AGY@S3%=}uv;GrT7eQL5w>eQ6j)}Rg!RKVzDNjUYC zlApRTST<}+YSNx|HHkxuR|cuoXg>F-1y;A(Uv(Tm5`F3d@%RO^MS0^mTs5QK%^d@6 z5vM{=Fgje#4C2$NkHfV_SXJ~mTzy>9J&(f`XHDhcI9y4l(sqyIpY4wW3ho}e`t{2P zsCpmok`dkwZsu2~-o&Q9UfMXkv)55La|Xqb6=alhM0eNf(NR6cHN368#%XnZGC`#@ z4H=Kv7%m?Bi}KS<@^NMTE2TU8XW{AOuDn!NCMchDt;wi@F-x@O2X07R&=O&0?B{s# z+%@{46NdOAF_!T5i?>V|G{&fp&gJv7Bucc*r$Us@>R_2hrG}tTG{*O^qIu-#Kc#-# zfYa~}iz=Kje9=?a2Z06KYtS`4y~c`cZS7Y@rc6E&`6M)Go(PsK;E~UZy3NA-WOB0I zQDpkjhjB;qo;o!sX;VteUWC!o0&AH%+tHykn#(SSGStS}9?~JupeIriWzPS88&@SeVg!XNHLacM+bqzq z?XJ!#>^}K%qPN$|$YFy-Iwc@whh_A})F&;EhH-Tj)W?w;BjKwidCW59K@R1-+XvK1 z)n3kHT>f?T8(UXm<0RQjyj9E`8@Q@PS4C~oj_#vAR@M-?tGfHSwRe6vT99fj%_1Ws ztIf!%!U0!x7*4t=EsOm)V`O&=5WY#zs<} zJMBOREPAMytHJ<2@E$MfUCi+=qt?PMp#9<$r-H_@8t}h;%AP0pnNrCsZ05vRhIR4p zl6uAEF|~&3%gKgZfpvA}5#)pABjjyydvBL^aBnq0tv$5MXvzQf{XK3R-UQ$&NSTnB z*nDPFVQ{HVH~Na7-#JOqB~h6n)lGJ*65sK0R*?Y?Y^E()zXpzdkMjA;w1Tp3R_lb6 z4wK*fY?yuYuy~Y_I_Ip6MfyLxW3_HL3#B4<#}Z# z7GoCK`l{=BluYl^V@$?}iG4FGITT@_byd_W$GMz8 z)O&mK`ejDcIYO}$gp2I{_;e@4E~8Ly_ZxTD6_hMCjw-00 zkd*(2pOfeh1^!RW|M?gvck$=W1v1|t;FqPtCvFp8NHn4v_KGOZurTK4f`6G-8|#Zb zm_=gxVpw*d?8w(mkRDczY!Gggff|*{WOC}}ht`z4Za$Rw=Xwj7a*Ij>uf&%&k=}2~ zP-|#3na->79I_RWpPq>ypo@)b`2L-j_-qDVpupuz&U^jX0hX33!D)Z&bWg$=fMNdi5{UG&~ zf=FEq6q(7ntppKfYkSi8Zy8FPAGypLjSWFz&RN3Sv7$M(FBVmnD#2)&hf{6pBmy~X z4;y0V^Ejb8#x;v+X!r^P?mOZSi1mnk#g^d83$JzPQlUixZ6k;_Ab-Rzg{tJ0x)8+1Zn@@jq!32EJUK;LF(=L_N=_xT8OV&&u z9yUSL9m?F|?WSq<+z-yJKfh;;)_oitw9L#N9kes(dS6mPKDc|~0_su83K@Za5vkw? zpKBIR(dj1AP}|beP*Mv8l`c`Gu~#i!fPMeoWqWJzfr1%dyXEba-xfc9B-8cS7>U<> zgfS_h&P41(_`x-dLY9b96_jdmtZTGSq1@IC^0V07sn-$IvGUes%DkMwVJ)b}w+Wbg z{Zf34k;Re5vaN`yysAfB_j~sSO#Y^5R+})sFQ8(Io~wDCFW3g?8WC|LFOha(C+4Aj z&~)r)#*El*x6;@nob3A%xyB@p!rAFJaPf5NzkQQf-w2;?GMRoQ-AWs))9)1O>PAVr zr&r(4)gFX5Z{iYuLwnAvR4~GT#0D0;g`@BYut8_6_BZZmvZ|dao$Z5j&Xoqu8=np&0pM`eVq&k(>&P{%B5)|5><*1MSg*glpYZXp%N_vqgCi zEpfd)$@Sm9aRv(q`Uif7w^2`rw9gi)_m2}A$oZf6Xg@i@w55Y+qCT8Cnv{$H4!gUS z%^SeA+&1gMMtL8c@qB8`ZW-ZYof*C1c*01_gQ20Dh&Om|am%Z|s70xDH27~=AsyVP z#2i>uB=p7DP^isi)%?xy{Lc{A^VS)R_zTmgQ2ziGcb7u#!K$_iO$fV5A7Na(99|W+ zvDvjiBKDEvX_~pFJuON3N~~kwE%9z?4y24* ztIQ~6Nte70TIT!WSo5(5Y26k@1CoDWr`o4?v$I) zp4!=$-l$}a^*B6yDIdu{ch)D|cWh|WZ7iz@<3k+Oxm_Bbq8Sy`DxMC4k{PXo1d3#n zEk1Xd%urDzCjy;9 zJU*bHSh20VIF{Ypk)lf%+%{C3rkg#&Sv+>oz*4kFVYwVQ{Rgmg-FKfq8AH;8Asd?- za$Wjh@o(rNpX3p^SntPaRCil;nah@Dj3eUx@IId{)j<1omS4 zi73N;PETch#5!^bKMbZ-wn7^d4d<=jP6RZGqdwAkO96PGK8KmIbnRItI{^Xk)Wup$ z@3A@7po_JGy9COnzYC)Ce35VL6@p)p+aTcc`8^^}Fj zM%^KepL26pbUFCaHgF8)Vo2hi*Rk)X0zGlK_Ny^^M<%c%IHt+%mLO$@m2h8yVjn(q zw{~?^cN{i+O74L$KGE?ez4j4kYR)_#w5K(7V+mJIMD_2!x3E=k7;LwqX-Uh{WOG@c zx!tUL1q2~z+~k(IW@Jxz4SJoWrWD1iPVyR?2uTqJwC7ZIu9&a^jqq4M2$sBcEZxn| zm&_khjoE%!$siKVWMwU?@!y%ZI^@`1pDl5i%x+3821yvc&1sb(vxp`3asJVBQ#pU# zz&htO{B!4u)X_zC3iHkFMe;6Ad%Dn9lo}>bv8ykpU}1<}z9RPJ4ij-)h|-Jh!R0U| zSsa=x&vf*lAU@f$n#Gbz;N}TJw=OvFCA0&l>&Khnqn%n69Q_&E(OIAtJMQj7K(rnQ z#M!B|DYQ>3o?cV2I~HPocS#pO`@YJjUx$0!_D|4Kw57+lR}rZssI#P@!j#D~Ou-qc z)xTD%d9YWENWp^5A}@uhEE{sJJ{w>a_2mYv22lc(6B{9wSy;5w$+^ zORq%SbO-A)*2f=kh%ASOU7ZA?O@z1(f-)k!dMYgUfpcV$x+%%ud9ix)+b3}}$QoGv0UO;I8run@>qBQZ^%dy?LZ@66uEbSdcPcPUkmp35_j zJ`kkLT1-HJGovJ!3IeG8oZ-C0F{8_^*fz5_D5M5CrPNOEUc8aG;%Zl*fRdbr*Wbc1G26Ed3Q_+94x>ALsFgboCfvxjXGtBVN4J$%feRrK(~RjPz2bLeLF7S2%Lt-?;Z4<%!Jt516MDo4w#<(4LL6fG`=0klKE=l?(c$?l=% z`bp+ z1p#EB+OkT#l=8zGids6esl-5yJZ|_>1^dEo zfh6DCXWe(O^^NTrPPO1_ZP09jJy_FycU{X}wW-&k;<%TD0Ea*8{B?DsJe;H9C0ZCD zLQewBL2LAgo}R(yrAQGfBPE~dWK*jZj*lv8GBrL$2{Wa0ZF*jnDO0V%MNtILeq`xq zYDF{e*=M!N2db(bmJjopp~SrW)a3#SXgVIWXYRXNu@~BZsq3ac&i@)C`d@&zSGd<^ z=bH^8ojj!j4{@*A9U9NgPS!J2PB|;5s=u&L92Tr+PeUy&L{4sP(E`mP`H`Hpl1uE` zPQm)JB8pBUtt%`Z+XFH=D%E3ur#4F@R7T1X_?MDYnvek>;5ME|4I*91YFM(z;riL1 zwEFpbn@RsQlT&O}kA~%8XQE|sL9mF`d3b%#-d~AXxz!Aw$;c>yHv9XzM-FS9vzH|F z5*jv3OKh8oFB2u+wa~(L&yNeu<~5}lsIG#;rCaY&|2PdM8gpNBa-bA~x+rDZ zLMM6>KRDs;i+=A;1u8Ulac{Iz6HF;cR%n2v_Qj+{ zc@r(6&Vf$;fBBPHHNc|+v4rf2m7xyh)X>Q_)-RJJFI(9!#|8C_T$y5GCRT%*X34n) zP-qsW{8pR`DLpW?m~by&IxE5G^HH@hQN7b2nI%J2_t-$)35->P<6*3}6&2Lpy?x6c zIoD(6pO79D9ueOV^d$F`JgRB{j7u=7uB-l0b=-a#JL1yL{y7g?<^RMP!E7(36ur)o zeZ7^TWqu?JFR#M(H8&^FgvZnk6!f{JGSYiD-esB!Y$)2Lh(CYM;RAbcK{sA8@9nLU z@`&09`G%LRZAo|UN${0>iy54T!lS&|%pN+=7(`PsrC?%B+-FY z@}u^n{ja@sk;e)i@pqhC+bv@SOCIiHNwmAl-z3#~& zgvxcj8>8xfQ(OaHfp^eee;+$cOKgzuaMTO-6$DqU0}%; zIan?WhGCSp*E@tDDLF_u1iiSoP-8u)a|*^zs(-fDD3x4^#h9#wTRKpbTTS)1O_$r= zT=N6*Pm>e`=P3PIp{ZmoM9U0%-JXi)}j z1zNf9_c#?O*%7|-cBxj_;RBj}lo9;bZ#1j?rBZ1vdyTvYsu}v?6Q{j#0S>tDppH_* zT~%rohYy2pU(vYm&gYuio)QCwEVZL`6Pn#B!x&_S5q;<@4?Fh^(9b+)1^l@-K0j_4 zWflG;no61n<-N$eW9c?sFaUIzFD9ff8$ZvbCwA@1Q~fYlWj-8l^y=w}?1cRVClGZ# z<;HMMvG2O8&cXW!2g33(4RczZ!#7!Qh;&0NBqmXt^fLlU7`!Dvs` zjbtmQQjDx-UO!N%XO^k0Z0Kn(KgC5oe=3&uJj~Dxz`6Uo)E0m~0ctxdsLRjfOX;xi zF*ko~Fym0k{wKx?HK;kP|wZ**t3&gJECY1K>7o$ntO?iLwM*UqjOsD^Gi>YIH;L1Z(prbl(rEthK= zx1YZJS~$Z4gDNT+d?h8eVUvCC^yY=N&)xn87pFMxBDFyuJ&Wq=SH9uQV-xNro4^3Do$Goem*FJg`7bW(Qpm51#JPT%1 zcT65J-#^t8n?hG`8oHvb(7Z;sF%_MldF_to$0I&2b1Ue+mIKs=wdg)aHo*OQpmGP-`zYf;+@=2f;tz71UT5!4Q=o%;p+d7^}Q(Pxc z8m;VIfw)*{G@D!DvXV)Iwc-lvCo6a}a~clzqj6|YKS$H@oN!9K+}t$9UJ$eP z>#J7w?vd986slEQvJAc(8$wWnJrZpHG|9qI{JO0pf>(r8>^91U7uIu@2Je?@$QEru z@JWBaBFqE?7o!xVYrSV&euE(4AKTZ_X$bmrgbox4WTfvtf@U9(Gb)j?j;~{{fOqWA zeI_8Vcr#>$q-pT%)!c33qm>`kW_&+KvhxWyTx)xRtr(vMJk;cAlps~~DE=9WkLBgY znkRYOorNyh7{#ef@{1QAk1b1HCiL!`m$(iy?Ar&P+Xsgcty-^S8Q`CjyA>Jc`4^{f zYd_XL%PK#Fc{zR4St8Wr)+hw{Rli>VZl# zg>!Eb_j>!!N$oeS)dFYVYLi4woDGZJ?op zh`*^<7v0>!LW6^gB-+EXSH(W!M7eU35va`)lMF!DI)1G$!{N#m`xx9X$)Wu_I`7)(mz@FGst45!ITC6PkyZ ziA<#}p$9vF*D z*p2LM@T0(Ny(Fm@jryGN`t5YIf^(b8+;{B10Im6?cFo?p+&oV!FUr?o21H0s+)6gQ z+rhs>gn)C)GN|c1gw`(16y)&ZmT27q4qCj!;?D+SrFPuJuAHXmv5gY5PepNW!%|TO zI~(z>Z7@Jpl=yba{l_lr{{Hr?M=)0lt>@N30`#2fmVZ+42E#pbo{Uka@l|jTtIfxF z-Mo&3YQ?hq;z!J~xF7$EXm!Z{SvS>~RpK8YN-@kV$+b4z`9xvpEA7w{%p*+7XX@XmoLk#KRJjO1sA37c?bfC;guXU7@ zaU&G-P5InIYF82#)acj){hMyfe|EvQ|2ICp5d(yS_Gy~at!275!`9s4G013UXFS7| zD_3~kn0toWzoZ*;zcA)5ov^Fre0hgXpA3`ghJ{YflD1W1jGk)Gvtw)+a;3Mtc!ram zo;LBWy{0rhH+snX5qf;-Ibkm{-r=xyDSt>}gU)kuXZ*1T_40-Ig@OK2n9GE+1V)Gq zEEoAmNOO94o%lBu$f1>U6z^V;?J0G$lw%S)EY8A%G^+hnS|XwA`kYkpu{cFbXK>Cb z`fIp1Gv)`UN*v)$<_@XCFaflG4eYvtsNMw%c^wK@=r(&O0=VTB8V{A#o>$#4fH5>E zdVLa=8DLf@g;?2<{X=mVGJSK^I{QJvnx&RI!ka`n{nk7hwnW-E{kJJ5D4={@a?SoZ zJ&R7;65Ko3kj+NcoSIKqRG&6uo0OP`P;-W{QE4B4_O~APw|octnXEPY_SU>OhWJx! z$5(<{XRTBQR^;i*e1H&%9+D0)K_o*)D4?WoPZRou;~HlEGGQ{y*B@1RTo${TCmlD9ReLC$eUV zC=4wqib+UzvXy<`x0F4UB|9M|TZpmmYZS8Y6xqqXZ|5F9pYQMU{hr@B*Z*AS{I6@S znxwewO^XMtkV#KUjHt_!Ym94=Rujrfk&-8weQG1m~agDxm=~Z(tq%%SU*5BvnLA*40ladkqL3Fpi zDDCFM@>>8cF6Jm_&e#4wefCN1#b5p($fD_x^o|sS#XiBwsw%{Zmxw(#cMQ5ieh&R{ z&S|~3dCE`XL`+OfK^u4vpsfT~5qnCaNAzwg$e zw%gy*8h4EVf4!J%$r~-b%B=0!)02Tf(%wrVi<9;o+Rcp zPN3|CkAE)^YokJ7-T4Uo!qW4lkl?F$ZA{EmTc?}{jO8cSok;NW-RRU_2=0zeh1YkN zJ7>YQV~^b#_}M~3%>=jwSBp5HLNS7GyvkTV7Tg`#l@(8Wlj_YVyF<6ar+h$B*rhMj z(slN!4Fnq{I5TTu(R1;*Kj|GBE9yzqNs=8gA!-0pvVMAhdjYcJ zTIInUc8TzA_HGiYJZ5ru-oWmHkoD+7l=P^B?rB%octN;0B-xRyREiI_ih=nGm7@0j ztp9S+=VQ=OLp#@8zFO13gacUNlB}~~wFX_AOdF}kT4nW!{@*?uZvK2_dI77=DjM}z z9Y()<_s&SX$>N6kLRwcAsh+#oWGPE$?Vl2xY&t=jh-JEGWDh=twb&y%WTk9RExi|BrRfaNJ}1FlEigR;*HK;qh(Kx%5L#o`F^fo}0IwYN_;%(0lHe|{)Kg-A^~aw8yLCB+&0 zU@(JEH4m_>Nf4AN`^C8>ksV{Pgk!m3YH}UQFTkQV;CHe$)znf%jRB>{GmB=hg>+{r zbVy~t8l1}>@RW+MN0eKodAu?BFxjAjnr^>lqu17F+*^=@jt%Au@U-<$HvepK8D=MU zS}GM9`VA z6`o`tAXx2^`>wEn?MlRf1@Qmm?O12ZiKn}ja$qy)Iaqx#d;g#N{)1}Qj6~Z#i#KAx zV%aYNN1o{ZKf=+N0y`SWm{=QhtN2l^)1Cip3`F;1QTnMQ=?#<7TLNLqYgiT7M>K5s9EJm zC}_M`9mPAbx12t$a7tgOG)ki$3>x4-J95f9j0au>x7WZU6}22gQW84pq~TMK%tdAc zcs`U}ij`?$1W+i@`d|4x(G*KSj3-JSP8roR8H*fOWH2@l(%+9!u`o649fQfD>Rv6a zFTxM+j#w303?r?y$@+cj(b(>jvtTwIKOdd%sy4pn4) zd;_fNioKO@sg0Jx_rP&m%(8eJZ0<5FD`WL;BE9DqzRF)XS@ROQH5$bYN7x`HdT|#z zEYJ{xDb<%Tz0mq7434XUW=T=k;g>9oeKcsqqppWjbTJ3!468p69kfPQW3eA+c|6-5 zSurYm4@9z^U7swNq>@#hijBKyx#tby9Xxi(!<-~VV|}g<^U%UBD}+x za!a`r&0V8^w`H`Fz*roofAL&f#>HcCQlKn5{hxDMX@As|%+7w^Giq!hhEwgO@y1%T z&#BP|V=wLg0-?|{KL`?|TKqLx{!6cG5r>zQ?_r08W-YKok6%5_z9|eP%s%|C@LhpU z4m%I2QY9+s^Ad)I(rah1#v+19^fWIo3h2=d?EIu2&MGJCDW=MRIA!C)HMo z){Az-ZJSUe?@oPJu%W^l<%DCgLzG`2e1nz5lwo2mrEh~FCPwp;L}05z2SJxp8RnzJ zV|?as3Cej27Y-|5x7Ph*FGC6c+$)JZ8H|S}421f{D08KPTj+g+`3J>j0hfcXU-6mV z-N&>s(`9yWzA!R6yZL80PvHGvmX5<#bNs%3G*nYWCuWDm)KK|Q8u3)EG!VGKJXN|G z{Fd&U73V9HD<@YWgZEy0;Jgt}OY4FM(4*H38RBK71*wGO#}6<{DZ;zAI1K{_gUC24bCCL?~kL5};N6i6@;gwUA*U zx8mcTfFw)Bz))CRlibKl$V_^M${Xh>h`D$Q5Zc<>glIX9eAn^vkyE{PFgOWen>R5g zQO=#tx||J46aD5)=LDVXQ>@;K9eCj-+^?F%T<8rxygp*TO`VPz#L6KCe?+*VyfoUt zV^y}?KnQagrk^se7ELn^kit}@I=&@l*tY9345eM$mabh?J9+XXoKm)1et-@YFJUsL zP%D`qE+l_mBr-51rD3r)O(0d=b~Y)?7CSkmp0)R#=*UuaWr128KA_GoWU04tGiYJY z4!==}99evg&9s%jgx3C&0xS&~%(c-4y6BbSd}p&edYd~$YBZx(FZXKwnrcKXI{*1g z)ujtwD11j3py2_*2F8(So+ADk02qha!;-}E`$sbk?h{hlV03?bV7E7(X7>&|Kr7v; z7y@&g4tIb4>d2o)FxrY}TK{EpPP10C#1TH4y@SRjJBfJ-TU7+5 zfCQViBhdqaj?MJn6+m~8lyJrdl@Ul1&b%lP9mq)*ys$9@dc-{Rr$KR$$fv|c&HsKU zX#yXWu%WVKW_*jr%=(3o_o3DuXJ{b4a!d!U!uL7PP{P=OB4`_bzvBCeWa7=qsR>m?Tah+%Y)jmDJXj>3c$0Ukt&ydu`x$Gx6V2a=U(R(U7$14pcuzc`(+w!ueq z5WKmLY;%0-;?E#{;M6<5o7D@uUxQ&4o}${w)Ul~`da&X`U;D#|zTxGyT0JUZ0QPi! zF4jB=?guxa(4BZ0U;JJ->hl}`llxeK*2K-dQ0bgeA-GbG_34}yL<`D?k_5MX0b$vwYp(-Snd*R;REaeknU-EX(y6PtbTY;cc?|Y zA(iWy4)4>|BFN-$wnQe)9iOLEEfX_qWfiIKkgZ?CPFvplX)t(1(j zc2M^%4^>JgS66xPHoj*J2BuDenJ-<72xwBJ_~X^Sr}HN~R!-4Y9_j)FpynyF=2IrI z{qV1OvRgbOa&7DAd3G`?e|DCsKBwtT^%>i|T)so)3tX*8V0G zs!j#3SU;BJJ{w0;AM^dUjJMY`Z@s=hmO=B}MZA(DTsEnF-#@9&y>hsU z;8itFayw35arOYUr8e{!tf`0XoU#zZCRwe47$ zG!^ym3LzmOvs<`7n?JFne2?(G@GHO_#+R$+)}OhkZ_nIM>`5uJZ~d*R)~3HW@_-`n z3WcKaVd7f`UERj60S!4WYP$0RCX!m^B+j$Z3ZKQ(dIxiK8z1~II){H6rLQqJ4&^#uZJDiZylHd2D(Xi@;107%59c23?C<{Qwk01d zplflhnrNEZTy*}@^@@=xTYDLsL#YiQ~n^m+4EZa=)!NROBK{*6!CT6ezoy&W~I99S=^=3G@p5o$yU_B zIB&LvRM<&nb4O zt89m!*fe80kMBwTre5H-wCZ(Z0qWgyN~2Q_n(V=~e0m|wglA90ZvWv-i1EVtP`-b0 zzHj+)Yg@2{*%dR=)-DyJ&Y2QzOi5?!=+_H@-n>ZHOZsg_nA22*=i%VI)O1QW8NxWF zNryZc&wX+9O(%0sxA@c2gv%nmbjFjp;aM~Sf$!Pno}GQdMc!L4!PitTU%yvAg>veR7ax2>_BaoP@yyS@pM?6=odRl7L-bFr{ru zp-eMGuGfoBMDwxh)r;^2MR4DgyGeVu^0oi!mhxxXnz6A+)lyD;$YdGo%w|Ilr&d?p zGC#MXhc`UT2sFFwlTf{n>qy>9!TP1V)4N~1Dz%&`@iibU^vd<$(`9NpAQ!@I30bH4Gd;w;}svh!N?>vODnS{{pY zbFVsQUU$xLeRTj?(M61*Op}LOv+U_x-7vDyrq>4tZhZ?Ib?(+tTjz04P|?!XZLc;@ z7Uip+EGY>}N*;eZrc0qJKwUHO4ey%V*@$RO^V(S>wz<)S&K9kz09g%5YNeS4%IuGE zWtx}KDLu|F+-Sws%fh#cN_TBK>LV2?$6;6BC*5pp>9YK3ESb;5KZw{sD$iOHcl(z+ z^Q_~03Lx%3L7epTsL{fp^O?`wM!-D!3j8j?LS(6v7KC(oypfA;E9ELrGp_&4ZRBQ) zZw!zyyF>088Sj=oEyNGM#L4mzZ^#+`2{e8~b!%(R_+ERF37ed56>`1dMUH*i7N5ip zRbIfZr8{o;_&8@Aeti3>ITzg=zA$q4? zRdsBS78f3br(G%ClZ*@Suq#C_TUNjlh?QeCFbt0~BL83KV83-W{;UL>qQrBfFGjeH zt9Ol-R2@ipe8d|w^P^XmYtNZFl&7fmR7fQeIJiu%c(*N#?B{)iYxb`F+F2)~5sNT# zO_8x(bP5b#Ju9Jj=JjJD4sn<# zK|4^B>26x#Lc(J-{kiP$b9MXYy3++z!;|FrczVDhz*KKpChxe2!E?3);pm61kcsqd zb?>B0H_2GT_vu5!@X62a1cHyE-f!D-kJ*ZKu0SE{eB^c8FPr;jzqu=}Z%U7ifBu{- zJ%t-pVF(eF`NSUc&?qm%_v~w)qVyYL(jg~28T(kI&(=L#>fQ;ggSbEQ*2UxPri5XI zwWTTXSuE`i{E!z`S<Em71HsBxRT`! zam*QK4j~9Sz@LQAf_gwCE;@Kwb7qWUh;7gyLzVUG@(u*R{+hThKr+zMpBJ_Wi z^)#HVTK-DX-$te$td4K}8q2C{OluuB8xi$sYO;j$BUE-fy>o=|yTaI5Cs@N}>Uy!{*20^OMt$dpzSAz^6 zmy}hvT018R)v&X(qb(StQ#h!DQH4J*@Z67)0b#Lorta%k-=wJv&u~!Eo^1G!+$JL% zy1LXNBOR2ohSOU0X78#E;z%T4dMFqF&EbUI|6yDQJW8X;RC2P+iXGnF)z6wBC{!G5 zwqz2at?FfbL#Ws538L;y_{LEOE%$Sa+R@ zv)2>9ho1B7p7m~@{;KnFmf-X-HlKIZe#Mr|;K1SOPE42+o8;w&q&}XYvE*)x9@Fsr zE~mCOjYbrcJ)+J$sUI^p@7;L!l6XTykp7Sl;ECbV(e&vUv!g^$NJzBFA>zlBl)v$( zyz4T4hTI6V`qeR>@BZ~a32-a8#JxFURfP!dC0|mnbYse<(N@@xZM6}VU(A(sV79n5XKruOyRSNe;eUzvCuGcp48%v8rH} zrb$^OO7Wmip<6P9822X`wz?SWYbGGWsh!h>A^&5s*?@%`N5Xy%`U`+M23YF=`_j)j z|Nr_D!6?s5B!>Qfc@Dn5Jz?V|(jH})&>q^qQk${d=d6U^>rTbqq#pm3*OrCD#S(~s z?4k<6Gz|62E~hl&EL^XQ_~pD{J-1ZJ^6 zv%>zSgF$AZZr+PgcQQ*=??9Fv-F{5u>B~lz*md&5!0*2y=6%T-+=BXNFTYKAcFrie zlBgl@PrvdD%~4hPUXYzlw7=YkuPw~Tv64hR9eyziE#Bt9G| zbJ@Oio7?7-WOkvB?e*6{DBcXlnH`+aG@0e-_#|Uq>A*5~Dt=J_>ANUs9#P&FG1<6W zTd(F9Tw01^jguHIb37j!Iwj~LmvOzyKU6Fv%=aLn`S3DUMc`N?M+-u8;C8qal#MIY zsC0tXw1=|gUXabwTi}jq=5_HU22Za;Q=#-5Kb4=if}sCVy}f3Jj05f(n*{X4KW1UHzmN-4`d*pGw6IX(3l zirG692^C70Uu%r_*F^!VA(!9QL3N*QMX}e$%QVDuFhD6Hmq$*xSwYI`SPMb`$t??PIygH`>)0Zv$Yvj8Dv-ziLN~S zs>|(0H|7d_Xa<&?9u$u0ii+FQiTe%V5Q_^99Ob=<%$SdzwmO@C3OSrwn1Mxy2%J>s z_w#LzI;tpEH@rvierU~Fnm`%j1<2BaYp12fFk~jQv%9Or;L|qs3KnSZT#MtSL8E86 zPf1y^LbrcB4dH3%wR^lH(MP8C4r*iKhjO+I)BKW%psKR1^R8I^gST?$xWHZwzT zku?V-#UQA@N*VE*2=tmSjocU?Wny6pF6znm1~V(2^M2MQrgaYsC`Gkk$L z4dg@eUSp!DR8(n#I z?))h^ia>A~GE@OeMAI1p9flZNs$QX$O43oG+@Ij3qU|eKc-}ws`Z3og_p}JGpNRx@ z(s#2EEplfOo_HSUXwACn_-Cl@vk+*G+Nf^PR+N4fyZ~J2uNO8HPtUV&C;}fL3CG(| zY|;I{-5_gxmqoAU-;VK*gOZS}Z=831B6pPm*xdAV;u~XDI#CB=`d~bRJQd71WO`r$ z;C5fXVyz8PXCn+4=$DPKK9Ut^`iu>SYF;{KogIGimc9loh~vGsqSq9Zz#00XK43?# z?9*aq+IlE(7QhwFnj$m*kvQ8zO$zd8THoC{#ub03O@B@PGjC7iM)uqk9m+6iS7AzG zB9TEN(q$*|wHKnF3%mvl1eoAk(eS&=_kP-y0yI-Xx-k-0{rt%YoEug1<%Yu&Bg7u| zOcU_4U0usHc?=9Eh6xmAC5?ps_wc8=LUv;r z=S-)&1Sf6xwx5!ZChSrjR=BW^+tEc!?df;gDFqexn_sqHG7l*H5_E}yBH)x+q1r}W zLF4$##_@N^TvOf~Ad-%v%Mz2`e%3^K1JRNXj>?8Y8o6xn&d3I`zE%RA(ps##no z1NShdV{fFOrZzq_N%@4uO+27fpp&-@&ag`%FhLh?K~OK1r&E@Ik4u+ z?EuzUwI9mZA~l(B{luJmp9G+Yf~GpkHctw4jIlAQC(3stqn*^AxQjt8>x3k5r#GZX zTICERG(1l0q9W27yl>Wyqqj_WZ$JX%nvrE=8PhvSg2ief^;$#p0WZpGYs)V# zy9ueH3DT@9RSAQ5r%1v zxg+76J~>4<-fvifSe(#?m(iU*YY7o>8V}Er^nLQ>dqGu4_@~B1&~R9jT(W4`EcT|g z)CS)%vW|X=n@^t9PAnxA&(*(dtxuZoAV2CyxgK}j_Jkm*MwOeT;zm<%n_7i0nxz zvPs?r?-PeZrI?b}LX@6c-5pt;bhQBICamDmG|L5v3f<|~uj07bfE5gZTT1S3Td&XZ zsR)^bh5iLPdDeOTjrKo&Q7LnybA0WSppdAh9(3Hm0D|lW%$L=-$~qR8=shn@s$`8a^&W2 zV1Pc{4K(_Z)YRR<85@lWC*5Qs49WH&4y6k|9(|?lpm54pJ zw#!}^hwe2fADB6lk;a_oHaCX05YRRVS#KD!zie;$%uTc%&lrFV_Jj5Gob(Gi=ac=+ zX$SebR@ZNF!eso$kDLpx>kVbpSLonF0aV=51|XREon@c?H?&qj5#fyiB%*aQlo<~D zS*GGw!l%c8*A$Y`)YK&(I_pcNGp?K5Fuyu+J!kDBEH74R)odv;0>$Raw)wOh*g)&j zy_9Y@&pvTOynZ_k)HT3*psGnKio$Ds3iJQ@((jEhIs3!t5ra8rBiFm86&uP@F50NH zYgdjiAqaiG{yxYQT8Jjl-LNq6@0Vit;+=?vH4K|wGZ)jmy>|z@yQ822bNybjo;c|& z6V8|WZ-@T9p?J6Ud{=KF8g3yPKY$a*U7?{dOfkJqL}|5EyaFh-IkHco83d8WcqVLX z&B{2y;lwRwEB@S~X;rnX&kYQeuTKjIiNCjEm>cD}o!nofVZ9php?&)7w%S)5ER_p) zqXh_C_t)F4rqI+h40kj%W)pbkj-R`_x|Hth2nqgmj^-lgOKL z_}IdAx{YS9K73dfZ5dNhA-3gGQ5HM_Qr5DA#lhZo*{0--3KsKns_lzZHYmZi9_U08s05TT4AsIV`66ev__md*7vNeZ7gPc_fvq{ zX=W?;)S#^#MCn0D02QI1;NxQh8B~#HH6v&YBaTya{f%rJOqjX9_?f@kkPGb()9Sef zA06(c6L5{3;jbE^3_Ij`9qIE^67*Z0vB8CI@6+GGdY zlOK$l+Mc7P5?*^Q(3{-;@osV&eV_r|B$|Rm!yg9$fAfiBUZ?bjhwVlNOIliOTmu-3 zxaE^da`RVhw@iPZcOx(HPV0NzV`{DcH?#P% zk;CQ>Y~n34P2+olcV}{wQW#UYt}PRm{plRU6r!^d0RI1lYfP z03|lFCv;-xw6>MQ{(-BzJaj<9X?%3QGD~}As88n0nC=s#bqo{7zNnBj1gG~IrJIiv80*TmN4PS7tKSY%6e8p-SJ`T8@L4t) zKdDk!3X5XVi**SaGBdf5?f`sFd-H*wWj9vu)j!`Z_$$BKQ%oaZ-ZJA-5p^|`TWnTX zcP; zWvX}v+1*86c~I!~a`3VCfBtV>d`K{Mb48$*5Ujpu1CSVb{k5*kKa679e=ITDl(Z%V z>Vqf={}0p>*eMeS*G89A_z#7amf$}{gn<8ZX$hPAW>q4 z=Dt_Y#Ms_HPJt;MdA{+-E@J1wP4EA>D>Vl1Z0=Lg*XsaLd?J(xRa`o&qV)+HqBg|Z0eh@lgVJX?# z6w#!2hnFhs!eSKetLi$Y0;}=(Fa@WYf2AQumEGQ%5^Ogfip45z+BMPTbVACAsipOP zdC9h$LqEKG)k>_zCjSL6v&EOsq7De8%n$PBT`yRZOx^)y!xIrPT8SFbdY*Jvc{aYp zZh_@{Yij&c!KjCz4#UNO37wpri1BgB7X}yXbS*3%S@OG<=aRYW_7&?eImv3gI&E62 z`oqAu`ef;Etq(-Qs&#cfoki>KBG>v{xcnE}TnS&Lp2x;>v##Bre$Q5<0hP$QzZ=h7 zu)84_uB8jk7z4#)Gk%7Eu@)~zx7-`=I{AJ-?oa_jV^&BrKHfi7?QctV0{TL()^>!H z?+wYtc}Cx>@&m2`DTj<GD^eFDSHfg?_6>p^HK^3P*y4>$?t<-hbr*=w9T@lNubodG;Yxy zghTVf9;VQKn*X-P_0fGjVdby&J2c+VT{0VWqX7X-54j25_KMCjx+kW08y2925*x{Y znk9kUo>$Bum3$H&;6?z^$7ir`G-Q8MJGkIXcA@AS(27(BDF;g5l{z^7vUbU*evffY z5t5}>cRQ@$Poc+^zYf~}JrvGzLd)Ff&jD?Vu%9KKK zrw7HuS~tLwQI2_bCTM>9BU7$1^eKFSzIT0mNFY-3C5Un~c$r;ADh`wES-|9$=WwAq=o)YRc0bM_;1X~VqKo9~~o{de0;PKw{w z9j^rt^W5x!jEWGMLgi01&)yFP7;wup#4|ls$=V<%c0b&(a3BPh5ADdO8t0lcKjhI~ zBs@<=sO8Bx{i93oF4Xi#TBEAJy@*(0+p~?q42?g3e#qQ+D%UJh{~UYe^Wno@??VH*ivHwwMWVUh zf%fh^mIZ6C;ov(C)0ggZa#jt|B5th^;j}-079(kSkwI&V7NS{D)Lx9j>ry>#^fp0@ z!|$qBKVoeC-FarX{J%wR4GUZmi?Eo`?&Dm4F=##~vOJuM zx9l?A`H?0-P|ZD5;gr?;!4?yVdV@lDheydIr@M>%z6?n+3FQ{uz}`ppl|@R+-QO}9 z*KcJ9C!C}SJZ~~+m;b!+JvJ{=j!_an*tx^yqdR>A;rJ{5_GikM{Oy3w`&-90778!< zi>U~8el3@O`bKiuYRh`hf^SHh(T?EwIf#F&`uKFWW8lw00~mG!STGHt_ttuO>J^%S!36e!Hi8Xo z$G%1zr4PUwYfl6H7rVdtzxH?aN0oLT0phul6D}Q{`?YdsW9b1Ht$hq&myac#y|STTx>6Zs7ak zpypL-nygP5#*(hCoCRk4r@v2DB+w-_SSOZqdH5fIakE9jmL@eR;B;9WwD}sRS4egSN zM&p6XVUTwb9(j3rUsO539ynq3YplMDY`k9pPE}=2S-Wp-F>T#=q3^(fbCw1ZWv^|5 zGdtdPK~?Q#(D_@VxHF-A`0ML$&17*BZz8G!M~AC1TCAfFb4FVC)l6SdOq==tF#>qsCqCR*s`AsK!s;*z6=q z4+fk!gQs5I2D`x5*)fb{FG2Og3fqkQDaPxsms59SwTo{XpDJ!5<}kGiLP z35<-Z!)LGI9;H=uLypz6_UR>EU7;PDt15-%fcn9P#RvUTr-$gdJ7B(>wi(1~+;EKf z;$q~$m9mi)i~bR|vi|!vIBjjN9LAatjv8vHy>ybl`+uKEbJ1V5Ej}bB5`aHJR<^)X z(;Cp52QM3b2o;EK^=_6TQ1R>In|+azVV5@)O(8#k8)rTZ?w!rl3>~C`Tr8)4hElo& za5)GxZdq*B8})(=@kR;{^dD!LD_G&+EW|nh>vYp2j^C%C^!E-sjbx$xC#B82b4Fq! zkSt_yJS8tkA2&fEFDNOw`rO2Y3cz{IbDIyv#XkSsAl)ne#2A5v_Z>IiF-f>8aX5z9 zFbet3_X9`*OOq+vpdHK;?Aw$Qy;!#*m&TClGhr&*nLGXiq^IMO>q2SefACoBYt8qNV*_LjN9^CDbGk zs|^hK6FA6q6K#s;Qs0NFs`#u-c%5jX@Q(84%n<%YB#cE|{#Ryzqr?_%OQ+8lu za7WIiaOO6aZ3B3{_NNzgg5J-0>2Gpz9W-xC=-2Qu}*2Tir zZ5Md@h2m1rk@HeVKv3Fhe7= zy}eRqI}%t57%aMtBtg(0DR;&}gfOQJ!}WjRRDeD_)EwV&FPN`wb-FvI3qJt8ZI9~_J-O9#G z;v`mm_(CXr(%_OS1@0fYlK}xV^lIc0BzrBULp%2$I>m>a*>Ir~ccV2c6fx#69sVPs zYuGXDTEZyAu(iLdIBIw)3ioP5!GMmO<#LKD)++1gCH{NQ1v(!Kg6jwBLcxX$&V1dH zZ(FiA)EXC^Nl{W9@=g8;!&-X{9trSV8%} zFA%$7SlHABsxMsFoey#d7Z0jgxZ+>U>?eA)?56yH=0xnu6gh>?ua1emJ2B5La}QF4 zcG0N9xpRYO?YN{vPV4e*<*QaJzoFCxDhyZ~D0h+#29*n3*9VvLg&N(h`kiR?8J)(dhMY8yd^^3FO z6TkL$Mt0*Rx4&$VGOiA)-+b^DEFREregnzmtfDi@(v8C&D7HZrlQ?a%t;Z8}*x$y7KD5t-5+F6<0bi;ai71_vPz%Il}%fR8gU#RD{p8wGl9~ zrLtLEFzs|naiByRu>^$3pF8nUA@; z-a_FIR&8Tpfk20Xet+|6kv#L*>Pm0crO7)vnR4F#6Th26Aw8;4rmZ`OLYTq`S6fNj z#)cty>hraAqK(?ytyrg+WUo6o>YNxQVC6Y+)hAjjnP+q#33A%WBKNWD|DO^ZpHI4K zt}_SqxnC<2C!cD>p`5-0V4GTHxgyX@;UsSL8()+j)x7U`q@;XrofHyUS#OZryZi03 zU+_7)z?{SNyPwRvCNWwj!)IHR56~Y`jc)7aw*>s#3CNBlhOLUjj&r((-jqT!i^zha zqF+y+zj!&>F5Yy5`Gpxp$Jcweo}1N9QP%5YGsMmI1L)T+C2t#_G8Y5ieQ@KemoHzw z8FUn-7u_7PR@pSnjg?#)4ZHnlV!nJis4_K zG#e?Ly6+d<8$CPQtqXoy^FBeP#-^wr$2Lhd3?HQ*Q5AwUFOA~Z`JCz0U1a$s77S*f z_X$e0D}O2W0^X;z0p7KhKld=x>w?%`0n}p1!53zEHR}$cT{b(agC!px)h?S@(=sR= zVN(QN27oTCL(d^?qek$4hFl{S$RD=! zw-;bT@fT!-hWHRr_`w)y1cAH_oIxQA*$sFV0EqKhkS@r9%Z$OxkfJU+%beZ_bLvw_ zgIomi$4RXK%urWz}F8VCm$$6GXn|EFZ^%9aA_%7wuF&pFv-z1*p z3}*2~E{dmFJ!P8;LC_r3|0V=#0e}tcmPhGtI~{`twqU@%L(r&voio5fFVpMwD4zNsXY(kR>;TvT{1}$5UK#3vwwBK`FY4YU*~Q% zP*fldT6ZvQU(nU}-{}han>#qJxCzBsxh5HNu7X2jx?Nv0f{&s1$>efC{h2*MD|BX0 zg{a%!jUhApp6l$rJ)O;|rMm*)3=fyG*GkEX(Id^L8Z`2OA)DDm^6$rf_q(laLT6Nm z%oG;eY*!t6Dkv4QbV?kDnQt0jiF){Nb?etb;uWS4=_9BCo!NowVABHw{9~~Kw_gLG zaFngKid>}3Dz8M50MnRiqqGa0F-SZQ8lN8|52eAWV+|Au|~`st6bIeCs>E> zt(CKDr-+XXIa~|pu2k+#@CfZaydKjM85dViV_t@X?u^PW|2Fa1bY)<0L%cS}ENPL` z-T2i=rh@)x4P_-haEp&^jZ#uMR<5*#V$s!gi>bK+r6CUA_q+_|k$aEK8V3(;fv2bx z254*_dT8^`ta3icz~5Wr|Bkw9y0sTWaJ#JdZJFyO+9O8=>-a}IMq;ohx%b4l(mT&< z2nd)cn3}x2uyikh!b5i&Vs2lO0hkxSy9c$rl3^a1b)=Ux6&&a0Brp7>Rq($s~~ zJau4edI%G3jEvc(e9#Z())IRZ(j)v~(6cv?$gq4XVMYo<0THvn1t~`7xVyzM*Vk>6 zyyOHzQZI%1FARA5xSKzE^7L@l#CZDwY?w&xLY_j1CGgA~_By3U^7I*j%4J|JPI&rW z;^%uX9MJL;ta6eVyRTS7nrU4;3<^kw(Sh?gwH=lpaBpbz+nx$2K)kk=IcOR?2e4kW1!QT z^siJ_={cQ{O5Wk|F+im>#y@8GpSBs^sjSx9;UM&;@7`>SmkCCuh#jS$r1|tLG~7jX zMb~NP1SI4i3D#hW=8b6q&m@hoQC8O3EcFo{op0~6SwC-f_ZCu&5xZ2rhRidodwlAj z2b`dhQlF4uWK47G!MB8@;%z=S1TdF>ZNrqVS+D7HO+h3}%bm2S@`rQkbv9`1$I2Pr zo+3#wEg0)JnDcH^sq6{ziGPk7>FYbu)r+%p1z&cj4xLh5ymk0cmPM?PjeC5YAmQ#_ z?VU^BaorG$qf&okDuiqzB;uZx=Aqgl;o1v{E& z>XzSC%SOdV;k96P>q#kk)f6m}d`}hW6dKp|*WZPGj$t-z`PkEghEXjg8tZpk2ttdi zGE5xTkKCsDfB8z-Ciy__hQ^VR?|KJ(pg!H4lM?P`3%eouW zW4-4}<_LN5qga39XzNWJIMqRJex6p)cHK8|hmwaLq%t`Z$hEqop<|db+&*I%b6wIl7o<)Op#AS?S z>SKl{&q2}Nf$MDMH919ZnAkH|DKFw_45Z2a38J2Y*v2b{J;02d%a%ucW|>m*K}f!i z8hAu(gqK@I7C%6Th(7Kja^1kjh-N(S-LI(z5HrDfx3&2-PQuUynj_eD$FrEYU6I`J z<$_rE1nJpXM$t9mAMH4a^0d&uZOFq1#c*fFnK zYU$@we;SYT!G*~=Ft&iBu0HxsK)t}e(a0J~QI0m~5*gz*;?nBxTc_}kZ4658lTi;- z&+&X7aIv;vdFreK4ywT=rmQ>PXR^w-pTTt5DHU2=jtb&$zo>RtJigmAeYIGfyovSJ z+Y9;sS)CHXX+>wHE;VHGkgY5Y< zCYU9rz`Ah#*~*P(*%4s1da&+g7S(B|m@fVu4A2+vWo{-VH@) zZH53I>BvYuI{Et8g!F9l+V@v?Z;Jop)JT-jTib{(wfQTrjvaR|ro?)C64Z77#fMJH zq4{4pM||_*H#}SVu|HvEU}^MwFpHR=jlkGDH2v#bg@m%)?z4%>WKUI!E6=~vB+}Up zs=LxL#Km06@KpVwi`iNYu9<7tPVk3z#bBw<{p(j--cM%gYDQ}`>~)b&qThcpE1eu@ z7KJw6OUO~$xBZ*lG!u`jDV~A#&P3Vo%qUz$Fmi(%#y!#m3vPYTdLk4N@NjNLQ5bwM zZkFT>S>CGyZ2&1U+}t|d4B0H{-+e2Qw(5B}P_e(*-fnrn{5GW*`O=D{5$35m1# zDfEbLZXezI%@yHJkLw$w*I89S&%|;e82a+8)^1)n`4RyMx7w_uZ@!Y6p;~AyPC7xz zMxbT~V<(!Ep+A1o)|Qxd7g0{%aqn`~a4Ev0>D@*3-Sywzr;Kp4AysWoi8a8Rc=2tg ze+VWi41Stj)Pa{lsr@WD#rK74Y&3$uQ6o1_)R7dVhjBqGREeruf@gQMqn6C}{_It9 zEkf)Fqw#8T3cXadZ!VjO{mF|w@AdvI6T6Rx#XB_JoZ+b3v?GBW43b4x<=Kadr$KPp z#950S4>u$Y!FnNyJWn!@O z(dZ{7d)fvHe55nNmF)G76T(Bl@+9apCXw2B9*3Jg$^fd8o^N8oYetG1){l|;Y=yP6 zv#Ccpi7lzJQe0PI&PD^8Bc3AfSB zc?=);Xb`SyYV{H^zP5{tI%a?Fm_Wg#WBS5s#h#{b_n^p{H)B=QA{!GJ_FcATT}F= z>wV~{9WkBs zp}>p=du)z>47U9uxF<6JBK92gA1oRQ10h#@Ly;5!(b@U5-981Q&8}C|vrh5Q^xaUj zgp>iU4Df9X11Ks4)0o|dyj6EYR2q2s|2~=YL^SrRaosh2h|>D%{OdzSMTNw@EUixk z)E9R4NpTZ#)C&Jh?XrCO_xIco50AOihPo~&_BtrY@TT}bj^~^H$b9j~8%D;>Q@(m7 z|I%jMmR>PHPk}`YhG_drg(@<=nN4BPfm{;$n^^AQMKg~SH{F+cM)wr}gVxUb70j%F z`$0m87^~|w3N7?>JcOjn-pKxS?Jjlx7X~gk0PkPksCa98?jsPYE%c8@z(V^cHo=Gs z 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 z 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

=vmNGRM4D3me%6L!|WDyUi<)K@TJmkuRu^ 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�?AYH-%XbvbP( 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%0ArxWSbgzFIu#VL9WE46t|)>ayOY zVuLfRWRV`IS)PaXe+0?%EvP874K|Z1@sC=^>hVY?sqCWSx zw&*rpGHY_OCrK!Iz;=k+lFDUFb>WiqlUUfduSv-N;|1`pQ%~VwKi7I@a`Gq2JW#cn zHmf%{b$P~u^I(ZF<=KkEJLIle4kD}=Ng9W+r^}pV0Rr1v1^Z>lQ`#t_>vrqwy8>Bb zM9IyYBhKF*4jE|rYrQ>-cP#JDak&N5+KatY{rBCf87+A?hqdqQ^|=Klwo`@>!+BoB zCMP|r*+4L4_TzEFWPbkhctr1Ey54o3G0cS4*NKdIbwrLl#!Nr{u8jZ>U|q)p`(kKr zILt=LvI{OQ{|saYaH*`tGio*B&IA zE*rWrNOFQFMq?N4<=FPV}nb{;qd;Ho8v2?Y9^!4QF6lnLr zrhZT2wJg4S)YQt#&kbbV0HqKxMB5MZ_cVap3wOX~1g?n&Sm-#xDl5`O;N`c+=Yy*@ za0-e(|MV{uy51g$Q8tSnDGwkJ8G|lfICoyP+*3JZ;!$E*~Ur+!;1P-S@cwfo+FA$1<0j&LE%uM301;F;H z46n0F0%@T!OrRmW0^tBaBEN3|TxUlFOp@ilUmQDt$*dRPew|?^pYjW!y3T6-FRgfj zcJiRoNZ_;GkfLa02=O( zOH@K#Y|mZj9$O|~8P*l?c1^br_bk>SGCfYpVL7a}h!6)uSurnP6}1VLh7IBW}7qBbBe+Bb1Gm4a6h;&)Cmv+rlG!h)EHY zB!v=>xGk4E1obb6HXNMjVq2>%^{T;)q^l`mDb=lB7JL>mPVi|yhrm@@PS@ma^faaXJk`_}5!#aJhst$|S7`4c;`2Wx0|z+<22f--i6bvcsu_FIOH0KexA zyO{l%8vFqTb!ZBluju~4rM^mwOL$;Ww6kq3D#$v6bX~bbrdVUyhrrD?zJRDl(sMZt z-ykV+dk~*q`K{cqu7cb`y65HWz($-J!=3ssxvU1Whp{r8o0Rv~ijf3&IMXI)+1+%v znt11g%d*j0LzmVGZohZjTSG*2k42XeRUD4E+9!U+dU|bpQ7IAadJ#hs?hh$_9JWm7 z>BnnS5H6wo30|sd2QOc|VU}knLUvw9f%trx^qZ|jh3M@~zMoDTlvv&5KE9ZAHnlO$ zi>w)}2f(JM82r%qaZ=@0(2e*$cUJ(;@f>&(x8Qz!tHt`*>m?)BRiGQbI=%*9#{u<* zngyA_vT-6gH$Th!Au7i1A9k}U>v*0VI~bv=Nf970;C z!Hqpk%41h-Q$-=nnW1nVvuFk616I~Y5C;~*{6z4*SrXNb$=w5RWejMIk-di2Esx*( zU0c`6Sq8ORWS@;0j9Is-(0Oc3%x4QuuGiBEsl`&Zn%QG&F29Ia+5SJezB(+b{`+<) zX^=)h5fG3DkuF7A8l=0WyGtabMCnGl8M-^A1?g_2yX$_&_xs-a{oUu@KYV;RGmM^@ zGwZCq_S$PpC6A(o7ILE7&<8UFZx2uuc9AjWuhbD4#`Funakm~{O~mT$p{2RcSZ1-0 z15qAiJobC8K%A1G0!!EWM0x1K?IU0JNe+Ip$DQtzdYY!mBHzI5()jh8dAS-RH~9Du zfIe6#1pZ(EoiM8o=y!vD$Nw8_K3c+Kz#E8T`U`Ik zfXF4H7Tf%C{TJ9s0kBEu`4k+<{{zzB?1{t0Dyyq06Qm7{MVqT<9A9b2&un6-R^u#> zp7#t6!fl_{&u<7m#b=rxO=_-7_WC$FsmtQyNdzffrP#8_asZtVgO9?u^(TH#yJ%mK zqhO7a8;py}5F1jd$s9@l$oMO>{KKI;Z`LL+U+SBL(vucTy!qEL63g9C6Wfar((fO( z_^{#u&~(c`7G&bZK~UW(z9}>W_R|BS?e3K{#A4}x|{^QCGEOL z!Q08uQmb}%c2mqjGLQH+D)ABm9lZch;!dyO2XIkj%@BJON91WSSSMUyv)1^b_{@TJuH& zW|Zq4gFY*2&q3XO5fIGv&?utRQi=++M0;sEe<5PfOh7X@=0XSF9^`{CPd0rB2o-TW z=EJB|IWnlQq(rJpw{06Z7Z7C*sV#*JHKF)d>|xYWHVy^%ia?YsQsnKKwd-HpT&jOA z&VtV&L~42WfV|8@uf@=wVYUxnKzddy5)@5E(6jF9L|BRlNfKUhiDJ6tQ?$W|A}Meo zMad8B>N@eekxDqt(Cw!=IXNkxRe$0Auv0uf+I}OrqJ4uAAp(gYy&h7jJct=a0%iRN z4;1!?Uh>P@#|iJE`w0Wic-w0|ro%sY;9SuFg)iVH7TY21nB8zve+%wx!Emp1svI2| znUK;}`@&$Q*bO)^8*9Eg48c#F4_pu?d9uwb`+c5Nm>H((5h54Uqe$Y*Bn$oSue$L> z{h;yW>zX0pXVhLBp)$9ZC#{Yn!;1wvul5RD@LW^Pn5>^WWy*eR(2I>1IgzTYecM?q zkuHxh0YkBP(>ZP36CqIzf|uV!&Zxh{$} zM*lGI9!8ctMx!4H+`^`i;d-sW@$g8hid z?HhOqFcJXujX*#rn+<~zqa&5Mk(we&uFTEc?B%?+$NpU1fY%NlM>g|4WfsXX%QoO5 zLa+(wbzpHp(PiXh@nFlDwhWxN-VDdtAbLiD2zi8zY_~N^&40BPg;e9zFl_j7E4(~n zdg0zDx+y}6*P@ie>DkR&S1iF2-n)LGP!*w2%sj_Px4h9I63g-)^T5!#?3eiY_plz7 z*jt`p5HJLM==Px30h?niq<8kTwq+GKV{!4c24XK(P-fon8)5q8)2-jENrR0ypv&P6 zOgi10_8_Ndx(`TuCZM5F2Ak}T0UIKx`+zI*Bh3}k1XyB!2KLDuD}yi%BZj{y_P6=* z-$yV3u5rT>nfk!uFH2)k*|MhtWe=Fx|NfePbdWKEv4C!&4AkanxYQ&oobPzFWBO&H zf%@}QtI%qun;K4>zLNBz@Cb@^+aJbuj|46>_4j|Le_JxZuOOH75ggQJkT)##b^X%P z?J+C+d96CosyG4qZvW-Jj$MbtEH-CqHGmKac^m>bZILViie;s)amk9L?nBd_Wu4)74<{&Ukf|gcPRj*v?0#T{JP3 z-L(L9?wF!x%;?VijgY8f%Oe_*Le6r+>Bhbtx!99<_DPHlW^nMA&aI2Tm31cXQC!wQ z1xL2Qd}6iC)F;~sJ%&bw4ueM#WObbK2P%&#gN*Ao>C4g-X_`(?Paz=aY{g!2Z1On* zyG1mxQl!s)@)e$PMcdaDly2mRxGDs1XYGI?d3P*Z;^B(0(btRQLq!Z=T48k_32um+ zPnhjYI;p)XR3AyY3qek06T;Q^rs-peO@dyi@fCSoBGBg}B402ie7bWb3mZXkv_^=Q z`opI=;xISPWNQ z^)zPQDP~lmB^rmU`PyQ`dihIbV)so+5MDmMBM@M7 zynk}@J8guCiD~Nl#YMJ53(kc0*6^88Sb%9`Io{cEFhLBL44Sl$keWWF)QCf%~rz6l*#I#D&X zy(7YUVR(EeTj)}8Cw`4}?^d6$iacCP&gLV0-`e)Pv=UKl9KI{H$ro%{N1)M})t(IK zGEgR=#=<-czW0F%gj09x%w#0n9qG`E5NkuFt)o)jSs}3OERg)+vS<1{N&0ewtEJcD z>lor1kl{Q9ml1Ca1V#-yFHXHkz3)|66N_vY9Z*vvYC+2v-A0WjRG4~t@xxZ{WY0Ja z|ENK<=iHv4?#Su~WOn5PkU)yvwUK{@ROV2uJ2$?#s2iSxLrMRT0TAE}G(}-?!*s$E zgG2WyjHJ1UU$U1^4Q z4s{-8)&R0w)$XW?&;OJM=R)}%nx z8jmE}dRC4w&qwrC?tSjK>OQ-<*m{#6Q%5|Y_psU%(Xlf)WT!qX2D-N9T?S<+gb3M3 zb=Sb~O_GL}0T!unz&M*f;A~)K1{R-;Kb;6eH_k3XHJ}xG!C)E|7_ABNfJQArsR_Cm z(YgKr5{rR@@gpbLmAeWm)c^b@3@P8;DTM=;w@ya^E3U^@G7eq%g(7-CTFFdCI5fXSb@p<3&>}vWRI%O3z-#NuTRY(n zLiqDj=f-CK^R`6F?&Bp&Sc)-!3DQ!&8iK}SXn`JAXi%%j`U%^fo zr8{NGGyW#Pykk1Uke8vQg7cZQ3$BAw6bL2$M)LIS#T(Lk*yH-xY)*gWx&7^roGa&W`AIcM!X(W@bi2!V~J| z+#RO5SbhWabA@FMJ5ZI`s?q5*R_TDkEM3>&O-@2W!p1(vDtC3ug4J^otd5rfAKr24 zndM!w4FPL+Wo2dS=E)J^^FFRrX`*}?YHol2Q3UwGb|LcaPR)};U|E#1ZS2vqM2s`o zYD<{yg#e4o7yDbX7%5v6mabPdBDIal)Y$+SicP%Xw5xO)5qPMceKxppe);GTT*VWs zJ9o#YvCpy?YFjA%`4s>*tTbT(@l2wzw#M-#exzqnGWRe%G|6dyLXqq}RCND(4H)< z$w1spveCx&TAS$hWUD#zjB}&@Zi8QIvdPxFTY{W)^gD?)^RXAN_Tk>vzg}ejNI!~VdDm{wYS-Q zCe*Q*A+=WR4>Jhq@N{L-~yF_!@%A+N!$OpGAw zXRMNCs)lLJEW0ir8K@pHzUb_VN^q>}jETCLTL8aXJZQc~5~66uH08PK>AjI(g8R8q zq}YwwJ8?YcFs!fl!&X29(7ugL-IqIRUS5lS8uQu{g7o@tK0L6M+K;XHWk6kRKHLdk zh->&0DXUzsoIBBSsPJd+MS6PbgJ^u`rz7Mp!fyaK!(PwYcn7w$f^cAy4!h(htpQaw zOb})}vKr%S!uL*{AJvT&umXVdDKI)ae+U&><;}{bS#D`hEBJyTPePw z8yb4y?1UCm!Aw5qvQPalSVn+78!)5{HIi^nLcEK~W*yOi7|i9rf=lUly20B-L#+7yuZ@RAFJoB60DdhsVCX z&?8kgzsj&(NO(-Mr~yg(9eikF1UF>F-Ec6@-OV!8=G7l$)OcwSTc!sOU@YD>bTMJ} zLa$-X0rU!hzrkZ;4YXQ&+W*j7-q!6CStcX@0bY7EmhD0{7m2b#&hA%tR%H-z)u4rruu zfNvX5L0!M0oUm^M9T_j|yzE(ioW`iI)kZ8%kHyEJ^E}?D$z&m@XUxip?;fGY6Qy>a%JAFQlRjO!5*eTLJyb6O2=L0T5^e@iqRP_E{<$moJ)^Y(PD} z<-`}2Ugr9iX+us=e+)fb;rfK@i6Prv2|8$AN_w96X-_R)=v~)@9uA8y)jjp?9#cHr zRAX^ZVm_2z^bgdBE>f6bsl{s>z3@>jca`2)!MbP`2yxk=TS zG_{s+>vv&q^;S7v67a|xX6`c9db9^EZU;?JS#CN%uh3pZxNT+xH`YRz-+1EuH3$;j zA%9rj=LnG!e};qT%^NStl&d!ZqEpcPuH!~mNsTePEZJaN>V)s~A{kc0=T(N0Pmdsq_($zleag|Ia}HbyT3y2`qQ(0M@d2 zV9f0cXmnzLF%nppbP&eK#6Y8y7&b-%bK4;YDySFdv};Z} zYqCO?S`md=1$r)Be3`62SO2GT1(QV)^}c@d#1hd)oCpq5gX`V+R9nP<6)Kb}mG#(O zoV`XQk2j63Nxays>JYl6vV%Sr6x{WrbovLkJ4R_`TYbN8>Pmj$f$4oVP{l z1+NGX!$g0!UpKZ zk~{+}h0T5SYhm@)^73*Bkznfz!>-RONu0n!4O z29Ek5;WsCm4p;W=_V?)xD4UMlJ?|vBh19#xPOv~xmR1+8?YJ`2?;>Ku<--vgF!JGT z&wKCL6DvNWz&-ut-f-Zo+M+Ec=r_D}fhWOKHm5!poWV2>JuO44%ETXvh-=$${HYb; zVaKDQLvbcWRE#uA8>EVR+!bDv0Td(a{z97) zo&>{4G>6a;w@dD$N&VN$T|$VoM-gowwLi1l z;$U0b+l335k3;bO($MVnwBP;?o@S*6)BfqKLbNx}O3~1IH{W-wF@~w=rABnY=RmQO=drB8?8!e4k6Jy5)@yiB1XfnVL!_H{ z7lxmpvP$=#E@%H7@O&6Q<2o}#Z?>+3R%n4O z(p$5sb^Y~9X;(8sv?&LXY~C$to7IksL(Nd9%!5ykE$yJS8CcoW*t5B@VG9$jE*7tb zTz)7Tvn$>IQ#v;HNA@82HaFY&83*81rj9xiVE52@wwY(9cip{BUhL3)~QWR*xu1BRv#Ae(Lq# zI;uU`9V|NvHz1Bqff|&#O%MN|P4mPBZsGN3ftLD&p#hV_FM5_;tM$^2d3fi&^Ty{% zy}j!es>wuJ6q_STzYCD-nU1fFZ)uSTet9F-}uyimqM|)^CHo08y0pJsoOOKZVtO{ z7d&X7X<6iqn&##-ir`=&m(uQVimooyp+(Z!!`hnpgd=m(I5qQI-g3=%clI5?_Swmq z^{;D~UmR~EHIZwsG<~(-*z6L@EKq2Oz&}rP)73T~Eb_?e`m$<%b>Wu%bKS+J;Fd%! z38zD^78Fsy!?s;)Pf&_F{i9Gd;tC+xS?FRYNcH?R5i6*0=$b{u*^v5^bC8RQQGUj< zoq-J|S{;27mw(B^|D@+%F927v)Jj?hJH$6ene2fqwe1xH<0z?Cn2B}FE@H3obh`NF z+xuYUbUbfne0Y$6&^2PHckLn!rX&tBM?*=>F_?^N*a@ZefF6Ena&-{?UX-vnTr4v( zB4yOsD$mS{LI`D$V8IOi8ivMwlxWB*>ct@wg3KT;tT2Ev32#yt$Q_iMz_IIMOSU^c z$oS9LC7Sj}LNjDAn)P#K<2w z(c(eSjJb9bMGA-_&k)q#V0X4ax{y>)#aP;an!qL-%AxrJPug3G)<+DkJXdmYBPuP6 zl)PWlrCjL-GbxCB;4q>Qcz*VXz&_|(=o1ped644>lMHLLjAh%OFQ0|T{Tg7w zI=(#_Mz2;+o5~nBPw&_Kwph=gT`Ks*u#A;n$Sn(yu@vM^p$FazQb1}Oc2D41ft_rs z_A(1)*!5!+Lfw&FYtnBMDA8PQnja~-xVbs*&n>(yUdvw3J&C|W16vY9RH1I%c0=cV zu9ftMGSy>K0y8V5O!K#|@ZbI1`kXJ$5MN2zb6(1d4xL*kG6vP5pON&vXJW-{8;_~m z#YgGsX1W&XX3ZwjH7{}v+}^PQNAgIiOc5|c$adu1n zE6-KZ#h?7$3J4&g_Z~na<#j(*a%dubE5T--klR^w@qPqJ zJ4?s@uaxf*ojdwcE*MrxRSLIcUWq;hE?JODv6L%x_fcV%H^m3J;cg)CYenU0;B%Jo zKHzO5mfza3-<7(0TU+hW1!fGJSDtosO-U_>b1h|wx!O%Je4w{X5=m(fWNpy$5;ONYT`2p*Z| zM(?g~ZjJ!mGHK2QfCVVmYan`wt~z9W1kF_NO8M6ygiFj#3W!ysueVcj0b=FX%-I?D zDOHKP(T5*LzXX-y-{*qFgKHrE|NC56r3nk1Vd+x>8!1Hq5t9Lu*Yq|(tLB$-*$Sz+ zpe}u^oI4?17TLREZi_fSS~Ve6ro-CQc5F*Wy zw`FjRP@02b6=S8<%A|{FDPwI_RnO!@j7RE>yt`H7+2rYjXs+I#BP3q-(UGiU*`GTk z`1Wh=H}&Td9Of4|ZvWow&6lr{#!XD3ISS`hB{(L{&7A+e)q?`^Oxd%FN|-a@%&*G+ zDT;&TSx8}^suYVaLl>+L)T;lb)=JQJYNJi;V~7PNcg5R{D1GCEUEG8YHc`n_&lcMw z5TfFxzoh*kEFb8$rQ6<^CsN0GrW+=y(;Ru>OnK*1Hy^(QN}*$ z)|;PItmPp`p$>julVFWVN&QVf;t26ukwMtZ>g)%Vn=CEUj#@I7VzWh+BN!<2Vo$)7 zUAwdH5Q4aEa6ua^C{L-8{R7Hbj|1s^9Fa(ciPbpUnT15rE^x*jGj@ zcWFoQDhT*_JLPX5vgfVExf#ilU$OTU5cv80^%ZetRy;~tqa2Po&#;TLY|iHpFR}S;1>+z0J z)y|G(cI~qe?Hhi%!n4(m8{#Z`gSr`_lMuFc1}{tdc+iA2hGtgON@>fkr5;lVOLj?P z!CyqXfuuU<{jG-$t1tQ^+Y4G7gx(kDUd5z0Ej0JMn>!w@XkJ0AN?&B?QCSEsXUW6; z0A7hwz0oCy{IJSR&vP!CTic(3O|BjkM`#Cg{5*GxN{M=jqn0|vYh{OeE zkxvOG7S=?bu|GD_6ZeK~nUwfSV^Ju7mzQ6CaAIf1vMG*XDXbSB}j zXutsd%-tvUGi(HPV5?mdm$K7t?oB39N6b5(;4$3wtZv{3^MnM9f+c`MH%af8}@kQ)F*e9jd@0+>fsXX+PG&s8%XWV+YC6|KLpIYb_Y3l7smy zLV;Z*esJ2U6jZ~6>-k_UZe-vN;G5g9vXBtCNPt5YY*>-(fKfhJ+wwIYaEf{V#jAf` z2XrSZe%$|yb^m#1fH~(5>nlUcLRh@Vex3Mn*~Ekjr1kc;agEa@l0u~Rbn);9AAMa) zv@2^cXi6UGIftKs=3;_VGhX@&PlxtIDpI=(p*dTx{jPza_pr&TGOlE`#6v1-#bKKE zGFJ}%(7#Z(wzF5Hsh8Vx;0On4CQXGjzD+ezr06R-e z%s8a+SJtiKeH`*#nozZsaVZ3UAx{F(m9Q4JppmrMcX2XVOLbjBZnE9#Kw!6B zjbo3$9fbF+Xpiy(fFy(^y>hh_Z8UP7Z}fN=IoB5O%oa4hBNHPE2M;z^Wbk;%!qBDl ziuwanjQrg%+vEmqUy?1u+7W8Nyq5DU>W6Z9ixS4Yo?%n zPczwr=lbzvJ+NFC*BL*li33n-S~9k2~i5DEa7 zb%eH$Q(%oQcgmYrs32tlju5?w4>KVMJJ0_h37Fj54&*jd!8W~R5H^v}GqE^qaA5IV z;L3He*~d?%0b6!+@#q;lyVNu#b{3CkhfnTCPvcPFvJAnboGuz@L*AqssUHa*b+=(o zHX!+rNwK-nPyYJ#*!R>lad@)>1m?37x#1{c?;J?_9^KaxG*A{$+ep z7lab@i32jrL z!Mt1=@gRLR~$0#+C z0bv6VdyZw=mZW9g6aJK-xGw1b8fG_g8fSa`^azG$R(^7LAmt9_O5wc`J>&MRRm}2lf`IXZjF`rL(}5vQD^wXehk)1wmRb=B!4#84imR z$zOZ_p}8v|3*y1^K7t1y9wDI!v)A;sivur7a~|KSI8W$(mQh%_vHq;{dfz-Rk^QUk z*~CX!Jt^UUC)edawvcVUTiMW{dCV40;}yAa^pmKe`I#Kc6tNb5>MlWKSOxHXp+Jog zu6BFggK7c;qK8MvDEGlczXC{I1Ky4P(-Cnn_W{hB?_C~ND`MK7okt45i#3LE-^iO9 zn7HDRZN#(_W&v}{iF`XUD<#|0-@}7sLB(L#={HUn-ye+6G~~56NvDa=>P(=D$kmA3 zQ5AQv1T-}x-QUKXfxyD{#kPy6BZ@xO6INWbJBS|8F6zg4rf;-h4K58MxY&Zja+J)s zto%U_+oTduGl>p{^a##_zkvZ$S=ojczs|{WLPh1n_zt^p4ofNWG0D1r#Y^Y zFtO!Wei78MJh1Z4pnEc;AQzWRICX{n!)zN?rE@~4jTs!EYa7s#FM=BeRHd}<{APp7 zjBnq&KJr;5?*M?NCLNQC%An6i5Wq#NE9!*`gZnzUI3y??(D^r9-ha8~{8kq&W$Ti| zz8DzmFLWSwUZ~9QYXT~MQ09EQ;4}Lb@VhOm{^cXr7ZqbJXI{p8nqMOf3+rDVn~Xun zmZ*PQHv&<6k3}bKetYNwroMjVmtI~S7VbE7$m5fK(*n>Pwe_Y<)drn` z^z26I3=NMa4b616syCCVsl;~RAJSehReAon6_$juD0F|hngFHxjtXd$p1OY8`t_P& zRXs8uo==;{z`#r3B74q=c6CAb(Gw_Bsn{%Ix3y3ahKCCz2uK)+PJW3WI;grHAJc*H zjK|*U$Dy;orK~-=7F2il40Ia_=3>8T{5d!nW(<*W3z1JXe*t*P37D5p#MFD#KOHnC z+O-2D_7~(JC92l*>XonK2(oZUmCoFRWi0uu@$_>VntS-=!@Z1iKA{Krm7^K&5^|ki`Z`yE`|h@0;O{gZfBZc} z-}@@)Ufv2BH6555t;k3obA3tsfpGmr`4d)*6Ksg==DZd3oziy6ulU)erRT80wy8a5 z4cqTy^MFcjSOA+Wn4_04^R#9MevKUoDAF%%Uq4?IP-rFq5UT?%NZdZ9Bv6~S!)zEd zbq64}6*MZTfIXv{^M5|e$l^b~**9Pz6YM?tIUxpPb=ztGzK*}L@bl-l((J?-NNGgD zB1Ysknm4n!>f!y?al@NMo|r{3d~c^7I>P-$WCVG*@C5mZ;#-G>v5ImEl!WB^Zpx?^ zE>dT`OOK*=9qh@uE`ld9a61BoTQ!)7$_(?)=*?zBSawUSlvaQB3R*r0BhNS=FUo0% z1*Zj&)snCnc%AeA{{1`SB2Bp_rjbR_jW7TWZ%^EImRGGx!y9y4CZ#=&L<(JHAfUkX z|0b6CvJsV{s&%S={@p7&{(P`Qp?jgpL$qeG+KLo($=1=UHwnvGL_wiBs5|u6&FW*w ztR%7krsb_v|A_GFx>5%Q;2hzp49Am$&IUhYteyRBqR;27V-GB{?U>ZMurdS#6LeDG2BB0RPW96y8 zCaxikR8tpuNHiCSA}}%&95K7!1#%0@9VWnpqNhO1_is!(Fl|gB~%) zUl+f|t0!PGoRP3xu-A2d)~1DNiY7*C6Fqa}rAL^-_19XxqbCe;KFk?ZZ92i?@+h;Mok%AdqL%4H@9~vFI?LABV z0TfAeuicQ8MW=!gZ6n=x;opTmPG0qv@0N9@em=WrwW;5b-TY)(GM$buJH+F%ueGs5 zo9YUWCd!$H1g{DbzWkPW?(R%~{N4+i^-5Kh?*szEgkIr|sRKK233Ia0j{a-)t6sYR z*E;wXKI6v>&hQZHi>rdC6^g`xPfK79=4ykJXyUYCWZxEIHj1;z8^J984}2hR7${$` zZy{!fZO8gP74CNyVqW0ihpIN3*jSHf)|;h9n}e~%IA(2nwK-1Qgx1bZ-RBATI*jq} z>6JeG2Jdg970=kIsMV*__#9}+)ep6=%4A@emSBEUGTb(-BvBm&@<`demrb_j#u>(Zb3kWX^90kY&RZ(k)o=1ZuFslw|W>cfUX56*a-*BZ~x;EI;brL0e1sh80cPF zA^~(V0ZH}$=V|_LJlj5_{o3ggs;RW#5Xl(Hv%HH)3U-Wr59>>cg$kCOT~xoFHKa?= zJ_bAtm??0*EK|evc%R_UEkw8-+W-7|aAUn>N`Xu`wKA(KiEbIKip;hh{_wCn@8PJl znZk8_P;Jy3Yoyuy2@{c2;(0LM?6*%tk{Y(7qC>BVgkL@7PPuSeEvjVSd(9X>{#xC% zDFLq{(rLkYC0UYYl5?Qolk;_R(+m81lE`Qb`B54QL{gFxPKl)kOLdozHXkk0gpA(D zR@GEG%}3te6lDigRk1`E8+x7bN2HS9A17JVo*x+vIP^KZ)e;bdOG{2~u6;h!BF@=XJ zU43Bq{zG;La<^uwD5)kkg=ztD%%AgBZ_~ais?et$hz-$TdxHPtjI7fFX52{etdJoR zj9_$s$)*GZ-$WktNVlTn(9d<Ya8 zp;pFs4MfbYuZY5b%Yd%U)UDOf|;>_niqM)3YV%F$EVC{XZ!&tv*5*-~QraOz* zvUFqi@LEh(9p@BXVHVppsBF@(-NVv^Xml{vy9LuL*;T==B`64NRy2(azY~U!}Z;-_Xh#-oK7prm$&c( zVhN);6RV={@R-L-L?gU;G(-cM@oS9O;sf?_k=19Z+$ zwupn*imsEWqU7hJ7{zW@hpRN4h7Izn9K3DD%zqRyo}LY~IFLgbf>S)V9Cj59wmRQ8LRAqN0KfXlQHloyJ-ejLs{f=+?J9$6p-#Kv3>5P1Ub_ zxMEsa|H#AQq?6|O3FKbg;6^ezgg$_BE;{!ZAV~QyuroNs4Ks1rx@Hw@c;GR|Q8$~J zojro>)t-yk)CSp|Z2N*rN!Ks z(eb7>4S3594L^#GRo@A|7lTsdd@z7}^p!MV(D`-YF53@Ke5~sJe4DdrPE4{W+c?lHU3t(5y$&x-PgFIf zc{0Jktaao1%H&3`H2|*&iG`14m9~U|t>)c=Lh=dU65cCKaaIDK!|)!8aNHW7eIDm?ki_-6`H+qs962Nz+06@ z&N1O0)<25i`gkn-C35tAo4*lC2g*^QMs}MXtAt?Ac;G^jB!MBaFZ=z^&5hm3wU)Bt z`us-(g+%=eLO2uaJ?kBrOLt`{a7z54{obYndw9-hLJmnIRuAwG+l^l;yw?R0xF2S8 zZ#Q_EpFV3Fd$UXFp6T_wG&ycj9WQ5+>N2h(-Jk*jPsTE%zEsus=S_T1tyTmn=UDpQ zK@xy3;}wLJ(%C&d^`n5()Dad0$Zoz?0B04}qO(q04cTW&U2v_rTO}J4x$+-8=@!&A zLAxPHG>IYfpjTZk4vBdpU{fd+gdJ9+7g|k|xhW$?K&7L1T)P;2@5|RyOoxGiw+lOW zqa<0{=2n~c??czvWMpI@kcw%ti@9pOKWAKji1gTLuUrB*DYUpFA|sy@`ka}(7AU2; zo-;WL>#jo}zU?3`LMZ!;CO(aNdQ(C8wqm2E8HemVygho!ri$rjK-!72s}&i|(0fzy zn85E&&pw4$e#*~-yiWh>8WASka^%WiCUinC7J$q#UW(42>ZschxK-gg#FTQ>&d{3HvM^&f?{^$t z6{%A36u1XCwxq{v)-ZPz`^@^E4SNxAJuF_No2(AzS$-7xFpHU|Rq)PGljGFsm?lV# zS;U*Ak{~@8g!K`c`nbuQZe|qAXKt17-j1&_DEOQ-dZz_GV%=6mffHInyTdA#^|@T; z4Mt^vHXch|?v#|298QvPkyO|it_t}YiyNSQbu{0xojd4cNS!j2(BHw%;_PKebxjzi zIegNxP&CB-L~-{*poMiW_<};jEn!Fre7Fj3QUf_MNf5|~4<8a5UsKRoSX*N~=qRRA zLe}$d!MHXfqmoifRMp~0ra0dI@5#84FXDvXN=ld;PlotVE3U`JZu^)P{`CSJu=3Dp zH%_eL=-$2s0olKI#wM0^Px~{vfACg0O{r<%G!GIsd$nv6HtIT|1H@ca+|#%X^;RG8 z`ooacU9bxu;bFD;%6;gHJh>d*bE0KafPjIzCo-Fmfx>?c;Nc5$dD%Yf=%`l_V7Q>~ z=jo-Erlw~5QC*#=`NuZVNNlrayabTXaf}4$V>`&)c-*J-0(2QX!Fk|60=S2=PKOJS ztr;L28rbg!qmjTBa*PDFT>_^Ej_?lYxBvb*QsY5cDfkf!NunO(cb%w2d@w(81<+A_ z%C8Mqse0%s)O)e$%^UZ-6Nmes8Z#xRy6sMb9hScz2L>tRJL_#V7254QoIptKhY9og zq%xgX=Z-AAFw)9bu4$uCh6-md-VZz7b~+&iHD29cFs7&tQ(#V4AvNBX+v1q*eL1+7Iuggbdoe8h%jYp zl^Y1bBh!(_iDZ8s|bi!l~d`s&FU)T%(An}8In6%;Iz5b9r$L(@*iY=`d^{* z4>^64IeO6hZbP--QFA$$#F6!w(EdZ`~p z1+Vv;twXUti+3+o^i=Qox)AqFwR>6J_*WP}d;E1SK6nnuw&B}~&of^>{o|DMYqKUG z;>cr-An#&^J6VX^pFzBvx&j|^Isb|ldCF?!f@7=cD|{;mN%?a=RPMf;ulB^dm=l=? zhR-m>PVq7PXx#1vsEX?Xd)THxNA0Bdv%+GpDNDW}=q$@J!SGAVw{F8+!5E{SdW{5@ zcX2Ol_#DHLIO=-I)@;8K4BsVmpXA@kQ2UFZ_|dO>(S8=YZN4xX zNU_bBpqUgXnJAF2Q$`*?Mf8sl3Ot-PeSCfW94w@lOzE+2gPVBLi$2aEoG{}_$(gAF z{j~~6pn=sU+Ux2M?}}3C%5vKPMGWq&>-l7A%#<|_{;!2&-sU|gA(%YM~r zw%eNh{sAR5;&yGuG)yI98?~k!uc_az4^Bry~X5Ubd`k=(ZjH$ z#Is(<)Wn9Vs_3s@u^=Pl85ANP6rNTzrMjh3&z<0&l)qCpQ&ch7@TrM#Kd9)eosp98~cRW|xl;*5v6n*6gVr8+cn zVjIjw6ZA#vQDuXuobo>*(?h)7JbJ?`K}|~fSoTwKZC9pJp7O(L8L^G~V`CJhMVH*p z_h^bvbme-$rhDaYA6fpA));yHg>dxuts@>DBs0^Vw`+_;5)#b6JZU4*!HzZ(Ake|6 z8wL2^TmSRFS406y-2eC)hG%XeYme6R#{jAO`*e!RX1HFU&*cN14h;_ApW<#>hC$^E z$>>}~Fc$XhbfCmTP}jnuaE84D((ePnZx*Nsz|(_1QK(x$tLMuZHs-Ci3tk$ZY4Lb07$NS}&GdR41VI+r}{8 zwJAXT-)tBk!!8O@c5}>SAc+uThx2RLV|&eu9tOt&a9-( zhLXdZ(;KV9K_fy?70yNq2Q?bQ!}r7Mut-T|F7|PY@!M*8#@Fw5jvL~!KCOBFhsZ$I zu9Yv$+sBTv(`rM&HR5T9P6XZdc}vrzKGChhO*g|KUtCXnMv>HKYL~I44dl3tbsL*6 z_4B7(;bvwWekVT%EVYc@h@l`tpaYCgVQZa4YCws_8k={d(nYV#_I<88Ev3_BmS@WE zcqX~eB1?P84zLgkYZCCi)UT?-PO{o0^z_#FbB&NNxTe@i=uGRs_O%D^#>aNGJ6z!+ zC@6?JLRIpVC=wn@Uv6I1%Jr~~^qD!T0clg_1}RfRf{Y`QjpY|H1I zl_oAv@6w}`4yCgNKO#XMqd+L5-bJ#_kZ+L|=qkZgah`fS*2}!PRGF_JwrH+KjCsF$ z`ZjOew;!on9&Q7AkCs;$I-Ol2a(nUd{vc<}-}Un{7D#o32P|xXQ@~Q zQlxh9$OZ zzZ4y)K0Y32CEjoS^GD9$*{o6-Za3~0_9)|PX9^*9MH-=BFV0Vfx{!0K%{qG`-4+7! z^B0Zpt`oYzJrQ2mKENKgmn%9d`W+9Q$4goqMYYcEO%o!e=yyZF-LZxiKD_=cd{`8$ z%LTSHsxHvJqywQC_8{v6ah(p>$|TBQsXy`m;|%_v&*B#iL0!+E%j73`>m~&p9*VHm zs6nJ<>Wl(&(-6b=pnqQxMN-bqt?tixbv0+NVP9V#q!YS`3<33EP)oIz^qx&TEASNk zQe}I|Zoaa=LvpdavW#gO%7;biVm;_6TqC zxvbrHr-Ai}(-T<-?wcKpT1QuaT3J4_oDSqZ|KOYiJv@OOrGRhCo-@FOHb~@gEg;CN((iOh`Uc(j|BQy>aBa zZKuf^`KXA?^;-++Tlc zl2r-kete1k2WFq9sVoN4_K}vBRZ{NX{{yw}PECuV>BZ{bQ4ygF;0l)me^6YpgUxKU zjAMf=ky{GMlPAF*U(xS>T1<`^t4i%X4lF@PoN9~T@k#aDszow1wLFyWZk~XD1HGZY zzN?Nd(fq=ENtIIhwgr-k-aXBib)JJ(G*yW*KIlF&kTp`M;Gu*>GTTYC8?Mg^fgr{P z*k0kbo}glV88&*=W*srO>QFI8BSU?zTomSh3#!#FrQAcN9=&!+OwHGT8g_=V^@EBR z;OUXe*ZwJSXd!xR0?~tJ<*#Dxo4V7NLKLDasUG{1H)LP+Ssq1%Ew82iL^jHS=ESCD z4DYlpeJ?xoipfDNY^g@PRBoy_}6)Yj~%J93%WmBcBi5*H)6@99^EQ`FL+#E%B0K$3*k zEZDL(D)an>u|d=0w6M9>?2tWBkC-g$)C%5(Vck!H;RTNVGf*1#-tI#|dC1T58U zx3?*_qH_xOsoKWqus3@vFvsjrKl?Ne6zThZ{8k! zYKCETtwd&ZH@9JWCvE@dAOR^+udklihBcXIyS7(-SDX^!GVU!*K}w3du=sN_#EM>$ zv97;N`zSY6^Pk!Ra<&mtqVMzmz9pzoZ*VHvzN|?0Qw2BHo0bBPDFViDnPLNbY`jF%i(zABoM&)smvd8XCqhC@lcB+Sz_FM4QQ*)5oO)f+T?b!Kw9| zMr~zQ#>A#O!lSN~($`6q*8%|B`-_C1EFM3EoL$cIiR1ONhkr(MX+m*|964}W12G0! zQ9~5rGg&2VI2#xocLyf)wq*}OmtB3_-OqWze1F1hPZK&Tn>t7w&FJdGr4a=$(L?)r z?W_=>)jMAo-^mU;G)N;w`}c~Qg+#rzB}cN+eUf7}a3c#xh#*-vR_^f`j;<@{cX87h zF`491h}9!h=Vs77wQ^eg>u!wM2dp3yjj)53HNJHx-8QdXA)tZkmJ2V}#7?#-{M-Sa zWI%I!p`%jNb}*Na?dXmJI+x7JZUy92??<`s&4u%O_jR)PCtIol8{#N%Mmd#d}YX_{it4rXPJk?kmNfUy|@CwU5;=4KF}h9h}6R7W)YRic)*LF^01#XE{|=5*}qpA zU-T(=5a|-Y{7|c!xhN^TFRbu>trIC`O6MRq!b6&$@d^|W0%!q|sb90#KkGyJ5USdy z4jPeU;H@qI`4Inh5dh~Hf_>CboYNHvyw&>D2}g{IF>;_>5chxVlEMy<_oLLrgI^)b zor`6I_8tG*?|}9+{|hn-1v>zg(JTB zDb$LMEvndEgoESR6{*hkiwgx70;x&b#MkU8FfjuDKSdREk2^TRJ*)!V+v)9Sjt!tK z$ONNS4fc>{v;U*+AGZso-6`eO?lRsV#<{N@N}MBJN8Iv!Q+1PxXp~k~{`W3i5o*o5 zy5#|UZ6b3uodFajt^GNAA&Fv~{;3|t^~=HR$lQN;wfOx{AE{|vkt!TlK|hk~*vQkn zf=<9_YEJgm6DKLU2Lp5=esdUAboI5#=7UIENd(pAR+<7rerQO+D`}Bhz5mRsuQcC1 z&bsyzuOF9MqnFhp>RZA2Zf_;pBQ2NHd2y{(1))y!RDa3_7@@UZMn!r-y=5%mXG5$< z_ONs*^YjGUclU=|$FYO6u*u=S#p7>9tT64a1$&Gvs?$1(7R!InCH6A&*CO^|J^0S! z_FcNMZLA9fu;BVp8d{1WLJnJ=yv7c4b5BF#ZZ|RLG?WC4Mo}^9VAI0eHqmJ-w zsYrD65`i1m4KL4=+OV14w@|yS78ty`v?jBkvmE958+63C@F}?Jsfnm$F6BpAnCC+J zyOJS=#Hx$87T)RA;@Xk&czeeN+v~UrM=hakSUnsLoUy{-$K=Q3<}@twUuJX&WF%+s zo|}kCiE8>Mm1Zq=eJPg!mn-}ZIwv=7GRyqJ0@>NC5y7^zn61*DQCzMY7cZ({Yr(P~ zqRRrX=G*WKHm1-(8abM~nIxZ{K!i?Op_P@+)-3yCBb{=Q@UES3|D zPYDXWHboR3br-M+p;+h)1T@k!`+8Izcpe$L}LeE+q zGPH>}s(5SE`m*MpURv6V`d08!($#+(X``?Gmjppd*yWaPIpd4$SPu)Um`(8?N*r3y z=EVXeFrNbROzg|}xN#`=#RUZ&LET$m_HnIw3gWJCxd0(G4HY4YxiYzeo`3@g8$!YO zCKfF|FBZr#xA$T5dk27j@Bj9y(0?BTc&$yrL+8*^dj(|hI6M$N+LsP+N3mudr?I=M zD?fVB==W)bJg!6j=A_D?dV^`W;cxl}7*R-{2G+}JMB3d?V$YtJviuSW|F9VROr#>{ zVOmWiwW(4v7ZJj){&HEi>@a9*4=l4F02)=5hA8aZeG_^vb%S2=yw74(dW3pKHehDIc|4teb$1lLk*D6@mB{)XvAiVP<3%`)Xtbr8WZ~s` zFdk4Jez(Pu(Yj^;I53CQ9(v6~dXa4h0g%+vThGJCXHxZ&08W9_h#mqFX`uL+Xdg#p z%z=lO$yWSv#WFHx5Kl6LmWL9@I=0QW1;=}iFtq>NENy8O&~qBCdyQ!yJKYL66j ze6p8lduu|6p7y)jLlK}0-M=bbcX`I%yoa(xWmJf8zbw?Y%~cFze{G1LAB}I#|6XT= zvhL^@7;VOtE3LlMH8}QY92P7k*asbEpSv!dt*X%|7K%hnGvfyh#F7vNMKk z3?+Mr=z{py3cK_?<2z*wUIe-y`d(TDf%-5sjc_!O+ArL|H906<`2;hT)1`}S&k zoq-DBASwI=!07z0l2xoBB))yp<#aUgxF`59r&8hu@Nf&Z7IGGlb%fb=!x9t*##3#v zaU%qXuz#~mGrGtR{WxFUI*L^AW(<0E$u@H4K`JLdqb!j5P`$VC7`EUw*&Pqa2?S@j z6r5o*=otoybcSu<+}Z{Hd!@pPo%Qtj0R_%F>OZ$Q6H^1k0kW-BO+*CV$>IWzIhc_^ zhqOu%a04TNdi38f3l#z;x68S4d7VN#S#`dWr2n=7XvvhwYDHjf5G8a9Chs#B<2WZn zMJpVaiMXd}mc+}h`ENJA4GV3PwG9jp5N>$(=@cP*ER$e)AAEnm%)cyQUW8_G>nQ`A zF1|i4o>@O*r$v~>PhWde+FyLrK8Xym;v+olo#p|OKku zeKZD_ryK>z9^6y&-cJu4a}nL6ueN)8-?W>b-((}{DfKHu?$djhhY63Q%I?grFG00h zH0WuiCfq_#&Ysx$<@Mm^apb<#fyUP8<9TgSP2UYUxS@?5ep5@1|X2Z^vjn% zm%GSv{O}WPNb58aNhx^>WMpHr&Nq|#-1-4HR5D&FQMy!X?d--UAx{*KufCRdoHvNN zOPgl*#2={(hF-zbTNtFq<3x-8*8GT-PF}GZDcm7kw`Yf$0e3k?S$>Fy$g)#A6MMG^ zFhAu|nbZ6zkQzI#UzoSKw!m#YVBRbC@RJ^622+@%J-(8m$N#wBT+E^@r2SHuQIU|) z=U;}wCwVZhghgs2_B8(iaIsxmdfa{-%B{y!eOttnF^gA8;k$T7+^iV7QD+1zkG@Ng8#v<%Q)`mb9q|gv7XC27Je)F zuM@6sWA>ga$(_Xzry3n?Hp^$%Z}$oG?EnS22_!rk6n4 z(0k(;L2G6aL+GFWT_ApK5}P`T5;-Lx`pawV9OeiDkeHZ*4LDSce%Tptzedl4bTx5P z4+TbU5rPP?B8CwNL69?ra&h}VjsXHesrDZh;Vt7opqm;Eri0x$NH3BD{l$Y!4Ft>- z0#4(V7!;+zS$?wupgiDLbKj?j0)cOIJ2005)}|Vb zM;)(ZS+)_&jk(f+@&XNHTQ-wA%4fqyg8k~t$;szHb%MQIp%VTHm!du$%#nT1ONT00 zT(s{=n~*L_L#_CtX_TKeS$Z6x%N z`701C+-Rv2Gtuo`(X&q9atI>KrM@QG`bwZpLa>EwOPecqy@&XTzuSdkun`GdwD>b@ zR!j5q;de(Z6b;Tt-OZkN$LAA@YljU-z*WkuB%lKjcD3bP5IDtaAdrT~>1Z(myjavA zE(y~`W;vy=GF=w`=Nb;9@R2Md8`8%Q&u(WqpDpfRNg}Rzh~J79DOi$)(~c*51&4Qq zAHYTd^oVjb5b&^1(|p9awXRNc2Pl183O=OD`zLfUDL|o%bNXIgTMhqL3!ulz1*29P z8~c67W*stS4TzT>!w ztctl#Z-?hy47Sg2-+Kqod$B`o!aEg?lbd%FJU!;^v1BqDj03eDM9)yrh98^=p&VuL z3)^NX2{_$wFA;~T)i`D~6OfJ8`5<<|r$X1v3IR*%kXcRsj2Q3Bopy$UyGWLLPEq~=(^t&aqc;>6>os;EWYDX14tY7B5?LOVm(c{EW^oWCYX}D* zGk%a})X0z#C!^CB@pf>+iO_hg!SL;$9vX8~kP^|GfYHwaUm9_tY-`{?4WZtAuc#Pi3|m*){Wzv z{8U%}4JWwt_vQSP8^KfGXQl&EYy7-JeC(XO1lr4GaZq zAIHYW{h-nuus#=jpV|zfgo6?i5{k9<%6rHq6cw?wy&oK*jY58zqUWfd(6&U`9Q=}8 z_4&*LJ6VR$-0FaGoIwF~oMOP(sNb#-K{(UC`GA=1`ODee+9>OBWpJ_Id)gg*IwF+w z2nu_JBlYH`y08izopzU?3=C#3=({1}r@o(y0@X{T*$D%tNWA^pUA;|V2hKk^87=ijY31gFb97vh2Na#8gGxHuYUNX{U)WJ(t1x340vO5F zdd{78PFb0Psp2R`=8^qx(NofTf0#y5diNe2Yr9D>9K1I6Lt!s5Yudh)DE>xAMSm>m zDzTb|OG&?l``u$#N1lA5+38@*@@J0=1N2^ z-gH(;$V{{8DVN8R(eN8Vv>99P%dq;*xQN_xiXU!W%w>w)Wcmn>Caz716X!bBEV-48P91}U^`(A>}JQ`f)BK@G-js@{J*tV6fjAPVd0qd|4BaFcy8XEjU zW`u4B76F$!Y5&JMD9yhr4wAc?|F?I5)*A#A_Gb!x69f$aBP;kF|Hlhb9KdZ}SJvj_ z+hd=;@_X(xVDL6DLER6{cx&`^W^!sO@wj$)SYi8O%oEP6iWm&5X$}d%{jHn!(V$ag zKZFUHO-1&Lq30QGp1inyFBMpeZRjA!PWie;2X9v$u^=<1->2*UI2?> zPm(Mv$xvAa+7BXi-W=cz6FYjZrV5APOWTz8ro2~V_o>lTIX)U5xOUz$a+qsr1%R7< zu!rq2K^9c?E|8mhvRhQPs_1=-qwRjcGgBk_u%ozraPZIn`BvtEfGAh6zdT$BgSH61NaU?qQem84B`)|c)dPCS z-O;TZPY~1Hb{UIxT10Zs!jU{(CV0MXR}=M~ z#DoM`$i0{M`~#hT-42p012)8?`B=+S%g~N`FTC+5il-+sre=__3j~n=*gCkRUU+SMea>016O=qj?j4NGd9*{LBFxbFYu}%Av7Ws0nH-p7#OXC zlC+jaU*^r_bR5^_eX08F3#$tAw^YVQu>*X4kF_Rb67n^#>b!}`iEwnC073>E6vuiB z3Gp7KYPeVUb5Qw{{7IW4X^*oqQA(K7#)rP1{`g5eB=riWE|hUUMANU8j~R>|IA1OZ z@o3}^8FJ<>5sHtCxxQ5cYb#el@G9sVUhU zo644(k8f>ECfD4wP#KY%&$+{JH-QE7Hrz^Wu-YIM4jj5S1X11Pra11)#VaAaG8wCsGbS9 z_WObmr{UDNH*cIhO0%=!e9lv~fexU1D;}iI)Jd$_OCt7vDWC@XaY>;AInWLQQ%yfv|HuD%SeV>;f!dk< z-=am1B)en&QgLZlCTA$dxW{LEyo-+n{y(7TkN2403D3Cm5XTN~jQP$Dq>w=Qowa+? z_o0QZ-fD8QqDz)6BNSvicx(wSwL!by%@pg^hNTDA+1ZLS-XA3;7)uX_&L`l#`b*88 zF4rr;#Zl*TRtDa`hR%4S!DP;7LMtY#mcYd=H`GN%lX=8 z;Pj_Cm-do$iBWpJCr7Te2@3PbUlbf_b9#A$aH9OZ*IQUCM8Mb~ zYQdSp>$-zt6{zSt%*&dB00uEwsCQ&cv%c8wjS(0s5t9nKS-Y3A)} zEfEI6X7U}T3i=EL%Y1ZOjGL^5hfq!*_|Q8v-K0rr6G{D9-T5=wrb^wi=B~I=*hm-+ zRZ^d!GcTaW{shjI`JN&EYjlYa?E(Yzd!swC0|-uSQE>K%osd@k-7Y}A2aI@fCUr|A zE71F8WWciEK*aqy3{0p4M|)h@20>CvWO#U|#hfaWma20p5V8yQlNjnSgB$oIDbmbN zry#8WQsN^&GF394$YWTNrF8a(%ah$?{Szzady&Zc*!xuY{1lZRi^BX|eSbD!gMvUa z5!_vUjYAL1f;E7E1S$n_)x*mv%6WUl?3V;-ubg#}6VM`aX1571b-@T8QIs@lcJX|} zt{NZ6V2K6rHVG3reKk&OS9dIs_x8@q@R0?s~Hr0}1WjL#IL0YWw-$ z-lJGBG(brvx&c|w2_6FrS`N zz|J2H47xYyD=R6DmpYIj_x%R9uEo+HU`5%%d?7gwmL;;>5CXy+j1c}6(!{a`>D|KY zgY``>k;T8o9wc{FjF&w-I9P4DJUBS`&?NXEjk1!vQ}>|2sn5y z1jl-SK|(i z*{Wy&PJReM0gYO#oSm~=-r~fIC?UVe$w~gL(Bd9p4vv`PYkMywARFqq@_(c(eYAxY zB8XoIs*_rW`60JzZ6p9%G{#3qeU7}Y8m3#k zMbkYm)#hEd(iqcB;;&YWwrD}$1IgU-1VBhrIDOupjo>4ZdIzN`Z*a{_un_X?iz$I` zk{B3y6O8qqz@yQH|2&o?IUnyVXCU=o@%DOCY-a;@thbptMZjC5H#^g5g3fP6Hcx0+ z#cr#e3DfxzdQ0!8T*kY$2^NTjKVMZeG33 zpA5$+1pg8jhzF@YA;_>3iD7%&7j8lqe?G3jp6BM~0*{HBcHWB1Xs~t-N;M_HBK|pA z?c)}srZ6v+dbrna1rAh@ogChXcn443WQDWuCz@uBv^Q1ObJct$+<4MW;<6e-|4XkU z==X4xxDTGY5XpATA&9rQd36kZ@Yt5{myHeV)ZzChOGH3p zzjF=m=S9^xgd6SsGIEWbpP#7G)8NZ}d%gVw@F!>+=GR5qCo|u^JN0j~K?2|Wud_}J zaB!SXz61-UW86PIt;F9TkD##`tqPrlat`KA?ZH62S{g~$(g(}3z@AozDbA75r;_JD zJOISj?K=;2KvF`^!@n-P#GqgkH@(*U+%epsGYs&3wss?w!(@c0OHlqVN~eXzP4H?? z4=@ORj?yh`pUl@3H`OlwB69zhR;1giqYP3|&&4{uX(fzktuXRYkLb@8D6TiLo!_G| z3)X~52)@bQmQ4ZE)LLxpj8SS8Kp#h*4xVd>Y!MB+afFCZ0!v^By71JF8Pk}d=Xe~D zuJTqXoR`bV8B+x?NQ4MgIqrQ1iJ3|1 zOr9~p@hK)KHzG7<6Q`K9MjTB$*rR=p{A$H6?YU=hNy*E57#9xE)_=GH{KL1lglE(x zp!Wbnk=Q6jd9qlKeWC@+);(Y*}*-j%y^DgxNsXs~mgDi^^LNQs7Jb)Iggu-=@f zIT*Fn^@G}j`V8=dAY^YnJ2f6p@R_>HCWBp^lmNDRZ#jVvM(d}5)3|erIoRy=>vHtj& z)HMPCA1E7Ac3)4GgFxE@HI~e0LaT7-|2(W%`Bb?`oucvpsMP!|Qmftp$s<2>gt`fY zM`=W@zM7gv4Gkm!xxhnM)PFNH3S&pB{pJgra3RZc6R1FY`W4WL@)R&F!;OSupSM3e_hrh z_5+PCmWV$JzY*Y|_Nt?X!GB#={$^`2jqD9hGU{7D=4AlyfgAWwArkb1 z#HBv`*+q>{ER)?KE>bD$2G<>Va~TM#R0<5WR4WM)Y%h6@d34*IRh_J;x?J9$5v|*R z|Il5T+9y|Db~9P36$Wb9DqqVD1{92FH8|;k_D8KQAwDz|)ncic%>C+63N%1qve_Ij zz}*NN1?(o*h6cjrRNhr8$s07JHLeeFr0&poN_9h5Y%!P%8K!_9tdTlw)^yr+fJ25J7@_?vM+?9#E|D$U$DgZcMsJg_N zSPK*gqr&!cful(4T~-<53wDPq4agCe0vvG4y*&4flFA>}~i6;Kj2G3sE7Xb8{&n130lj zCpka?xEWyaJpt@#5YSnJW% zJ)l6%*_Bf0wz1mJdr;6xiEv&@TLaBx7k~_klDh*g2;`zp82SPXO$yauC5$V5y2q*P z{!$Bt=ye;G&6JjNu4A)>MwJ zM2!h*icz~t^C{ka)YFOR@uK_DO4XEh$K}D?*mM#Fl_w}`E}O|FznqV>g+LOKsj2Ck zU6-=fHOnKLKlVpyn>IJcrtMoIj66I(+EL3HB7Qa};x3gplIJ8h*~RyKm!Hk|{X%wF zCZ~X>T(PS^K58U>Yd-mIf%ayHGUf59#Ghz8fHI($9(iy~IZEDWbpQ}Szd#|%?<(KG z?1wqvthQZLgE&R;41oaSfWbBSJj9$@lLIj;4!JzcXm1%R!d72NEi_Q8tciCvvxNAKjwt&&;@!Fez2mS2mm8DYiSu z3@)sfcMpIrZfRg`DoaU zRQ^KwJ%O0<7C#ECJ>|!(-R8P2|_!i~=%LBkm6AFaBedX_Mlg!uv%fCQ-0WYonB++XaZI=}Upc$ug+^0HXxU82y9##vR z|F`DBZM|K)=vsr>EY`51IMoFo$Ag#EtcLAA@DAuzvEF#q`h)I|p4Y&kZxH zS_{7`OQBht{ZpT084>Y>U3oxB(t;=naXfQi5V~|o2ZEIZr{F* zWnTSWXp-)Vn8>En4Px%0-Ic4W5P9u_m70|9(_hzTOXFp&^7f&%QJ0DaX00LJmuAW@ zr(TzY;G)<^y6TDO!E8l(;aqdo5Sct&{%%eL{1ysy1jTDL|Fyfj`}goSw1|iZ7f|@h z0aUzyylUxz4jb-N%UTU;)<~_`O4@5MfT^ufR9Ta^^`ur$;yZ#?l{zIhWPeN)XCefp zw);hzump^v@|Kj4uNVYV#saCWd;DDBtcY;qDIjA-czUanrpkq;PY1DsY}AYd%pV$# zt0gpV!#rncAInU+Z=S9~qs1L=&+84G=TDN0J$b%M+svC@KU#a=&Bd42>35+51gqZ> zgmLU5bnLQ@=aj)iex5mHDW2F&WE9S{@<>tn5!l<_?Gi(g;ezv01O^E&jiYAfmoH!1 zKnXk9$;(&;f!~ZQ`0v^cfR_Az)RugSqu8%p5)OiVix8ex-e&BSJ*XObt5Nu4Y+!&K zAj6^k?oL-h01h`#I2OZ16dq}q8x~jvdZ%*6`$c**q0tINUPP0scS-^x6PUIW>?bVW zKi+$Nt@!>){db|ms}7mRLwN;qKZP1Zr@QjwYQUhUuO#N4+gGEF!-YV9jv3-&3AS8a zJ<%hdu`wlfVGUr@-r6}m7QZe%bX+q+d{P4 z`t>I|dLcS&AKes0gW@1|6Q#Ol1+<>8e8yMG>1UE7J3w`V)OafTs;go(&d(iPo;{)W z$UQc0D4&9{{GT+5&#M~4%tSkJveE!gYTy;wxydu$dE)Pnei(jM33#&;P?GT&A?pC!{-AVt$S71Ur4Z8a8zjrX$xY&}}Tpbd!|YUJWLU zE|)VV<jMsQ*=fKatv^yy5Le!i?g(w|)7e)dnbuEW#rYb#>lBrg#9 z%%c9+4cLcpj#Lf5E6?Vi)Pp}GH@`k3JMmM=VY}ENV=ihment)OMNP3ei{OHNV7R=0*g_Te4t#;}u?gt>Jy9ZtJ zzu)Bld<-@P@G)pVx|)4%bj;3h#?n(X@@mxHV($M4?8E;U5Wi8f%Mj63cL$Ryl{uai zt5=}{NtnxejEv2}EDyv7EGUYleP>8^gyRR$rNHCZFVqd{D&u(^k(g|skyp%sy$x=pUXJn<5GXsSBEStmjViEMvLJ*w8K~IFh$4Ma9I#Bpt}pe$O#;PF)dJwLIv+ zm*;WXCLaB%plJ{rEvdfsKwhVr_v0_?>ra1w=DTqr&3pmjAvq2ap3Sm-J-^jmz0J>1 zIvD2ipgVjRLOxqkqsdu?H!C7fYSgRR(L)C?56d6NtY7z@TO z#UKjlr(O%WR_}H366;<3RGAI|7`1G!A0+u?IiG!r~rDPX2+_ zZ0_~scRQr^*ON>)svsC7$3cM>1=f)=dR0l|j#662J2u9?>i2Kmu24JxIoOoGi*b>k zugDCeP3M%z1UtoSi-`F4=q(Z6KAaBg=;%a&3aSef2o^2X0W}oz|yQA zsoMhGFKmi8Yp*b!8pwE4Fz~|=$fJ;)8e9%%Rlncrj%B_oQ+(?(Zq!{?^qGD!CT9pA zeVLLk!hfIpyRv#?k}j14f3<0mZ8wf1J2L$eS;d@k1i09+D3wo^OuaBf z;-`OsoN#b&($iRTy9=UsPZ4rsQ_Y^o7U3(%NkzQb3ZXzI-D^@E?=zIOK znNoi&Tv(d6x+1LLha_Q^5dI=|X&dGP;jQJ^)7_gtFkbRk$pzv=7ISTP=Y`YRrD9K4LcfwOYj>b^K92!Smh}W_RTs> zOS&hJ9mkwA5jL`pooa-bqJf@TkW~l&yk@ADigSbd9i|`ucQxSTb=& z%FxH>A@Jby+W|p35YQcyfX&<>i6#dWcVL?CRRVLxJLvKusaVkRejmNJtxyK#9mq2P zoALkgA~1t|2mF!y0EwUC$_jv09>BW9@~N-?V`Y02=H;BRO{}nHDN1+TsH@CT zXN3a6{Jq^pom)*u#5;YQV29jMgX*th=z`19tDx0wbemIxg zdrgGsh_BLo&Hu7_4119kv9CTbrS$}Q&7t2~a+&rM{K)>1y1N+@@Q0IMwP*dNWQ2o@ z3z_@~aofS(eE59M_}5ewbt!tmSwQLER^u(>gAYKyWmu3U=t)zwzELM5L~cqHK27io z-LX=L)K|>sKiuOh`%QER*guh-Lvt%WWvxc{E4A+eFEe8#s~kz#Wd2Jx)dWKRLfchv zC1`#vW-1WOCt1>AGynemJKf;SM(%a3*Lb^IB$5r>6;>Me+UH+r{_i>u{iL{z280pK^P6rL`mSfi`^evZuXi zbo-+jR~YHV28hkU?-ItxdF2$E(G$%Nm%;}1T3I`JeV((PC4Q^wS`Za~W218BWl3#W ztI5iq{8*M*Qc?otZ~Vx0l$GKA+aNW9HqSdexU5J}*IYzNELU6-h3_v2lrs3lFRDaL z1=o6BC^o**Q(40@rZrxz<-;!vW92d{ZN}o&DVMmYBH!SX&Y*Y6<-iX};>$E#xk~IC z?g-U*mu*#O%8w=Iq&=Du*LTo4r6An=%ltS-xVo>g1eOu;V_GA1EpHJW6XQa)oUzP3IZ;N&pB4>n@_pG^oZPTSW z#ctMrq({Om?w%~s=~_^gm&YI`Ce9M^($$54#_6@r6tXN{%p3TaH@Hq7zx+Sqm$UCg zzc?15UG`KpPOL<|K-=tQaUw(5m^P?S+OdK+H6X}4U%4`N`p_z&{P6jcH0s>c|5?g@pP=KxWOi1wf_50+yHvM0>IDfLvP=pg#MbN6^i zBlUJx+XBkFyzwyJqoU~;;#&&;Tcl#(;DC!LaqW)SCRbm)J(<>tg~~Lh{+{TZFsvu= z^#E<^*NRCsBO_W~%h>>s5_EiXpL7>L0IFd4?X6qm`S`n6PW!5zYbE4-m?^l^-5McA za)=Sa7;;utoo@c+7J^ zhKYoZ2nXJ{i7~*g_3-ZH3rqaTlxH0JMO?4e*>!vMTFJAYgS%^+fkAPn^3L#Nwx6*( z-}Ufn(JBKzj_8`tWb|h@tG303@oy`W-n(DodiDyFM=wBRVFG8NpIk+M2+q=&<^1&x zau%WPnoS|cQ&X}+p1(3vpepH!vM5;R3T`R=azeX0QeF)UKE9Xa1enAldIV1b#kx|g zls6F_J`z9Ces#WgIKSO1>j5J2(LaCSeZ{apKH14SI`TkS8q2xr%$gbk;D&fMQtqNT zohKSd7FhHvQkbtbPoO0DFpFsZIWLpdbMg0G7!#qQ2U0lQq7ASOjK3h?XAU~ORr9i} z20*yO2I{@q6wS&|^E}b5u}nRqW_59cukD|o-5*jAWe$k9Hy_+Jde$>Tv;sCgV7{M* zQHEywtm=OlSchlXef8gKfpe)ETppM8pF1zOFjYpAh9VDw;HhZv)1UdoTn5T`pT=b@ zulL14d;k|i0zTvS47eOM2L2>=G8S<*E<)s>K-z4jIcH^MQE!^F8iVSn+TipOs^5E) zJN~uD+e~H6JQ!xlC^0Kk&4=8$!dk?WLuP zZ_)+uUbpbNlkguP><@y!tj?fX_$%#;=&fyEsZ;+laGtMP+)D*I(kzLc7wQYM|Pc zr-IlWaN_?#$FlC-4K&2h>`ITTcn+nM8R&BnH)#50ZL?Bwg{c~6sD4^>^s|W_$fx}B zxNx(%>AH3~Mp$Z|vD_^{d#|YTb$W6-fBvf6%?)*H{e{VJJb#iptQ9CQTArwQPC1C(6`VB8L> zAASc4A|H4u4anEW1QpT_P|E)nM!*H>0i7Izgs?f58Fb`EtM)*WQ&A9^ZIC zi3#X?fqrF4&rRUI{y2`6*$rb!mn#pw1mW8@tvRk@z@c?v&#-My|nE3#_X-| zR)abQdFko#iYjqHuX1MDL7+`v>S?57)pkX#gJ?dMtrM=%ycO+aQ{Jp8yoP10Np}70 z28748gHra(cxaqyzt(t&xDmkLYXD^f78e)uhi{s0s3E#!8tZe$eEfQR{F!%?=vEvg zpo+nN()@MfD@qYIi&;5~xFE%)iRs+>sD>1=#lBJjzp&*XpvRf4%bSupv7=i#qsxoL zW?FNMC@$on7wY?S?uUGYR^vXy=Hu@#q~LC%Y7xz5<&u7B+^Cxj3*p{C`}IvLmFGdR zrX*EAeE3edYL33m5D}jze9NTRQBZ<)nE{vAze5dQ!vuxu!C;MxHc?!Bnj+4sAykKO&9_L1E=fk>481*7?g7v zA?+>OWzV_zqqAF&XI6$Nl>GxTcyT0~gZ!v@HOt3eCBmGWiJ%*(p&FPa0&K~bT+OR| z>NPmvvyZ`&;|d(WznYTtOL0ni9YB;8C|D(6=!@<2V@o!=85jD z>5V|foODWI5CSX=dQj_?OyyNZsscSwPlbm1EwNpM(zf|#+M>F`|_^HlpjYapPE4AJA@57I&gD}k1Az9w(Hj%O2( zPWjrI%1HJ-B22$E%jsRZfF*1AgCp@K^9qF=YG{|=R#BNp#x6bV(TlDL*02uAn+Pd} zmU85xr)tz}Z>8?3mLhNyrz)8AK5#aWU$AHo#wlOom$tqLI^#&oKC5M4XaDhG?V-8E z;Pm~-s-E=MG>VF5a<;Ly^cZ3zc)M6PY&Myg;KySxzcV>G`u z8)w*Pqk4*ffS3v)ync%@-drV=5J|t`;b8}7UzQIssO6x;AqVi#1FWblL|oJ_Up3_E zeTnNkz!vl)2ld8+m2TJ*ChQBV*PuuM7R2p>Ce_JY8EZ}FAe&H(uMums1;;Xj5Ityc z?c@#2S7GuI33S94F~LVj*lStv(rY2`tXqmK_!11b;&~IaCGz6!J3Bil4K1LL{FG3D zVn6tL;7@ES7LB3d((h%^`o`-R5R@@3Q#~phQ;+!}k=m2_uk678Vw-qSrB0Ak=;sD0 ztcf2K-jemp+B48gMcFAS>uX!s-t1neHoL*SE&O~_EuVS^i#Rktuh8W7JfrD}DHYRv zkgT4YH;CZsehFqSjG6g^l3L*2F3IR)i+AJ|=2e>+XQ27pfV%xj1WFRP*Rwrakn7VA zz_0>1F3vH83V1LqJp`+KIVnIC85ndLg97;u1RKr+?ad%qg2@!0#~B8SCoLe>4*!k3 z#sjwJWMDyL0ahhD5bVuKu~Co@DkhNo81{jpD+rp-8(?hu@6)7fg{o?7r20#X&T35; zP6)wAID>wa6cc#eoTkM=MXytw@W@D52)WBL%>9-36W?$~)WcEv-?eU(2D+d2sAy=m zJ!H88Zks^?4F3hh2x&O* zR;7-SJw|x5j*VX$LfLPSNf(8YEBNR*1=Wf?(`(a5v%EAuBl@KZ z8=p|Ua=IaUTa7i#!?DF{nN*Lic{pD9?ky;uEQm8Tet1+w#-KQHCR5^~8i-uI3&vF3 zZti?}BVL@OLg+Ye9`>3)sXMw!)yN?ga$ zyO|A-dG_9rnE|J2p-e!W2BmR@WzK3B^G{6!hDy4RCF7xtD5o-ROGaPy3#UTI6~>Jh z#uaKV%|_uuynSn*lIBa!F*4ai`noMp|M{lnq@zaYq~^a4fkH??2?`54{^A0;LFIO1 zJbLwRSe>yqkqgG0!AOu@UVc5`q}Om8IYzSolss08O~%xe4rwoHm85tX`xA=4(|U2u z{Fr5Cs66qXt$j(Ca1xi!$+QnWpHOdb?FLcX9@KJg9x6FiPHd9hyoo2OEkq3vqIMuj z^y_^_VY6}nK_PtN;(j+ll9;w9#D}S0&e2!i>|XVfE)!w*9$4ke`uGuVVc~MVM*J0u zRNY`m%eCM^v1vT4gScyiKM;Y3>U_Qf;zwDfoMjif{{9lRdJgR-8-}C&$JCt-+n0+4 zKTEazgqHA#3u@1G3I-^%o2;76SG8;Vb`%W&>xIwfHlI0-XLm{`V+C*-Mi))FQIth5 zTyMNwFJ6mAdC!aPbcN07$_WB77>&o#AX;MU)t|2Wtx;md`5ieWcJJ*^4CPuzlfJxJ z!>zo$Xnm=Dt@HE(#tf6~DgSUU*LYG!JBnM?xD_7ymt~2~@(Vpdo>lr5hBUD^inHZ- zw*4K~wZ*8a`;CBUU-9wH+I|x~(~A~ZyfGhWLRT3(&c}x$jERnxj;OZ$cfpglw`Ye7 zMw{531$#iftt;B`aB)K>;ieUZ+Y2(L`Tp>KBFKuG7p}{5A=cVJy^*9YrLw_pB6>OJ z6FwC*FdZ?#t1BGLDl)1%JaK5`Pmuu*9yPcvw!loShTs!^*b(IUlX1} zpgJO?OELBu9fybQ6qLd)bj`WwOA9tXfL7dPHqDt@K`dA0IgO<+RUe}t4dAt4ys#U` zFHUi_TFPRCvySa!k{XpuG&2!gSZnf3oL7GMZ}P2hUzw%8eU-=)1ago2%S6?1mmgG6 z2fLqMTQZ3vW?fg&t?A}$Q!o^}8f<}0wA{EY>Txk2)t&P?Bh2C{g=y}tmhxuEk?qEn zYkS?yuMT&F5s;qL3eyW*TwM3A+RBYXKl~fwj8NgfF9Gn8K&XKkR4d3oLk5$`|7U#z zOAqwJkHG;1a~NF-prIWBNeJ&G6PzReE^j^ns$oCM|NO3yUNw<8qI>dYhc)fB%t4HhXI2X+-c`M5&bmszc+6#Y`vofvGQ!JMYdH*Gx+W1l(0% zP?Imw*4Bs|Vrt^ZX?Ts?aouU8C5b{RQUf5oxLL!@&j+St4vEre}x$4dszL7}OU^PRYW z=z#N)fUC3YOuG8|F@Tf=OR5{)R<_?tkq!zYE8Ht~-7;gT?NEW__x!d$XFEs@+cPir z89`u{5xYnmd~S(n`K^nirQVlTes`2f(aHFeBNh7DwD0xgO$)FtLy!p!IfP)7ji|gh z$rG{4XdnC)5fXWVKh964Zd;b98@imUN5!jugM;#rEUCcQMRi*6zc+pk53JkH#A+w` zu?`Zi5mE=wJ$~S-SC$%zhK6Qk_1uvyKPLzEXeQt;K9vw6Nj~(;7nz}v5v0WsRGBs? zYRG~o$&&PizvUe)VnB|e!5^wTetcb%2CK|wm<2hPF(7ejH%XNKZtCarPGsH847d=c z!k5(>!L%f;VOh1e82`?uqbH(i4L$2eh3uL4yOb&GvoEuAv&4#tS{NA(zw{)N^PbSIkYF!4c8O5{6ilFoB$;_IU}DcakgGHPe=St2JP~s(S)i^ z_HZ^4qw>4#A^D^gYwMBFvqVFCbVfULOV!flk9Apf*L+P9yuXCCR$v~5rztgCUCH$z zCaWr%{cbZ$PA(@uBdM68)46CowDfuTEl2}1V$Xm@#V6LMJP?2OIh1w#`JAunpTfOb zr|{o=64!oym(t%RS@y~>e7=0bF9g@pcs+V+nYdW<%E)|6&_)WPF^T9YDi1Ba;9DML zX{n;OHI(#zlH%Wh&;Q%2Exkc`ILm&GlIV#)3Pr#%SEPLF%&FTbJK4oHK_kZRy3pGn z9KCNXdVla`a2WfD!sbDTXf_#|O*?Di+CNO4;}}HT!_K0dzKYhWgfQVEbBXKZMa^ni z*g2yMZh0t$@#SMt{Pu>-}s28%J!8WzWkS*N8Lj&zHHE&ah?B)0}At_eri1CD>J1Y85rcK z1_QOu%S0dp^N3ngoo{m-GBTC4vZn?_=Oow&ZICc2`2|IkbIu#6zeqBiO?IX7cqC6^ zrDr676Y)Yiio@cmZ*06<&Q9GVWU_^XzdoX)%i?YcX4c0ar+e0ghn+IEKjs3x}q24>rR_D#$cC9=JSHrn>77 zD=b_Ikjx&^;)Bda?{Y6T9UdQ#grMDQP&j-g?lRkRTm=^avi}8kf?Hht=7Bfk21Qzm zCc)b`+6WH1V~Qh^IGjWdM{$bqwr9MS{YEY>Jms;R-(GTJ)_-P*Lu-y7vRxJ90GZ+& z&?Jh~l=f+aVp=LBYIp(_`$FmH0Mv|q&kWD1J1Y!AC#_qJo{K#A7eoLV9v{xBvP@9Q(oRJJXfy=N91E`(ieaAg3=&npV5p%vNd~YFb!>j zT7Du5rh)pQ!IX9yyFQJ(u8ZY13fKP@=7`9NbV0(ei?1sx1elUe&#LXGKM7~s-i47F zVBoxfahr7#x|Q6ERLai=@17GOXJyTOI*jTmlm0Ut@hGysS_Zne3211*1&8@L%I|&?wR{1=)Rh4S3p6ixz?D)`V4|BxmZ~r~7Z<`7XG`C*} zHTGLzSicj!_mHJrtL0K++GE0A$ZOl^n;)>Qpmd`Lqbx0DGhTfUeJigp^u2)VWZnIo z_iwt2%$=OMa)CPc;gcub72*@2gZaz8D!(s*!vVU)PHz;qnqObmUfD}(Mp>$1UpVf{ z@FBt=c-_B{188rLTLkA{yQY9osi< zAfB-9C$l*p*uENE#T{iZ<8uDANFruW(doYz;&@un8!huy6Y+`26sXqLX~FBEDYc2u zMcwkhw=lPX?E7RXUSYhW2+n5yMWsZ~+ZBU14ynhUwc1v2bYhWbpZ;*vFz+}QmVEeU z_~*|rzDkhHV8%lZB;C`ePZMUCC4*F0&~SLvGJ4qIK9^&m4dl>c*P~&Dq6yjoL7E5a zkQylhv9^lSc#iCH4~qzb*u1=^O@5dhx6K6i9!)b|f2mHJ`St2Q@{q2LH#qz;F zT)wjR>l`zPXVV+<+(if9%;}XZO5A(sLcNs71`E^8M0?~4Wre$=TnOb*X+P~X-&XQ9 zUm`V<>P7oj#OSPap{aLq=%!AZlBxTPvrJ31ie*;oVCbsvVM|ftz#|sT?457|w3J>2 zcmq_F^|yP~oUhU1km~n^j0q3$yvD^2yYVw=^`!mobgS6bB;{Bev2{YIO z?=Xd9KFb^%1SRgz@9dXe-s>_7)7RBotu_t!@2d$r*m$}=wl9*2gVa}EQJ}ZwKL1r~ zRP`1e9euvUN7cX}w&}E?scmoIZrtnF&umr>EXs3`B~XHXSvut{T&*&aa5^4!n!K zEhZ*{0^tM&`I?)YTJN@l%(3~s?LIooBbl__rwsH*AUj4UvC>Fcuj<#jEDbnUWxI#_ zXI|Ub^2E>X@I-dR+GDQy5%Kh70GPm$v9-0G93hE#Amp-$*`FaEH9c)WCG2vAB?%k8CTbkRC9|86 zrnp>ym&C-x&W4PdR#iH%!5qG#qoeOJL^({kW~-2S7%8xkq|)^ixw z$pK$@)A^>Ou>j*TzecvoYO$*`!zTkRs>TJ1gh9$Wa?^WM)WY)^hS<~ud)q4P{(NUAd5y?b}% zaKfR1eO}n1M$~Qs?Ul1wt05jDgMiNgmt9hI6o&6cV^AK{& z3sXW4AEPD%?$|jxpEZX2dE*$>%)UmctubsU0%cLoc!QT!eH+g6pg21$zg%!A@kGs2 z+flS4Ts)s*w(>^|jv6)p+r^T5Vy&+E=EAnZ%G@{_s zJA9xN-*YC1@CIbJKcsl$*u3O8TMjbN(f0#!x zxA85JhJNVg?rnO$c_jpwVNF{Mlbnrj8Kfsf{bpPpM8!b3)NveJwhp;2t-`CnLFW*k42ip3GSY8{jOW4R!~$l2C*A9 z8^`x9(N5@oe#-x|ST`JGY!J0W{=Bk>P1IS#PiIP>KgcONFi$9kp(6}@s^&+WpF>PL zWAA)E2gBSPsHRv|+^OCc>jUr%qeT?8I$3bFJuT*3cM9{|CU&6qLJ7WQ##NrAA6=X_ z|M3%b;)ZJ5;uX78eH!DA$j+=``8k)b#p^Wo4ik>l1oi3Ni&FH2og-r#x4ybzAbWR( zY*8^v z9+zJJDNUL9wReIn%)q=#*o~Ia{+8fy2edUHwuk%F$7cr_h&CKHZXYhvn&Ss(cey`3 zxOWNLM^EgBM!O$(qNrl6rl-K$D9(N*9eMXTt>TFY+Hh)FdkPS5&#*gDo0S}hGv?Wq z*Rv)T7kjnpcDY}^nhs^vyr9yg)bU&i5N)~eUykqM702u*q$c=?i+=k_7%4WWL0^gA zCdTw ztALo`>t)aJFI8A}*=1G{e`M;JZ3Fe-lj_zQ9u3xVb0Z6@{>eV3>7PrBB|7ht= zX*!5L(GK(3e}b^SE3^!QTBP;mK2pUo&>-9Pt6sgSV#w8M;UqI6S2TQ--MNa0{=$VJ zD_i^oV@e{xrFY{z-iW{*r5O+|z*!W;%`_gj8!vM+I@&(hSE3vVBoxjF1Q!duxl*a# zmHzAF*#~wK76HkJ6?r0{O|$MtwGQa`F1BTlH_nf?4)X)?%O8olIz_wnwqrp{>pOtZFk^QC~1b?~{I}$bqO2mVzl!ZxeJ#_MC^ z&$}lIx_4{v@GN2jNd5nRz})UjrnpeeD@D$w{v4zS6Bb!R<4$>2is}PH_DeTRzm-H3 zDvQMR*1S5%(htu6N>pIEQ^txmknv&z{alwEE#e~YO$ z6|2(=X>&k=Ja1a4@h!=Z&tm*r4&enVuZ+X2{oh%dCuRjn5cto*OY&2w(r)RG7$#iX-dK zghP7wL3MrDUA0_<^`miYqnU{ee7w1n-MFZJ(EfxB2lR5V-tU4CPg0)x~)YboHox#`Kk%Es0XRO&5~sGV`! z(z)ZE1@4+`D6)KfSHjz_@1~5kL>5!M2}x!CN7ee~sBwo~8BZA3YB=M|iyVID-g@k0 zJf!A-st>sM`rMlj6bRS4PiQQ+UyN>jUWX5F+mj^6oHI%IdHEV~Fy05yT?vXQT;-y@ zf@n4}x-#AUP3|bl@C^0t>DT~jb)}YTja7^c9gyx_0*y{q+v2fDTb+vqB+|X!v~hSH zuD_{NRIZhsZ}=o$A2<&<$ltEwJr3M4*$>qZZm45LAi$2Rl#0WK&$}T!e9%!)!iis( zsrHh_BOtIS(NXLPj+mj}RiX6nnUo<0rQuW5$0BrQTxbTV)ND-Q&s*9*|8Z=s78d0; zznMt7%g^@OgRFmnEHP1|^pu|eC5P_2hWMnPrI$JW@Zl31JikT%QvFw~7TK@(O(EJK4)a3Lq&P`tOn;0(F^Mch?1u4_Aj1oyLpH$oRR%wFnR-xz|fC{xDBg zSo2Z@tgt)y^!}RISu4$K9ku#q_yXOlGfEWY3RSZamm9dvaRP@HcEs9^xc-=|eM6-b z#8%P&`eo5W!F(-a`1-joTkgce&Ph7~RhAH+&Hcw`8or9@w)bwBe*2 zs>Fs~g{ZpB@jX0-XIK1#<&H{X=V9+KG;Y|*?1ipni%M!;8~t;OYhsTD+4~d3U}r`#9C-ak(gsiIodlk8aQyY&ex>Tz%!hT;BAHSe#Ak88Zo zwCr%g+4j#*DP9a%pp0G_)17H)esoD?ON57bim+2Ipp%P_*b#1SIF44zZv*mECzF}( z5dpF+!_0Wg_v18zCFX#?8~`6EM@aY3ER*tyO2%$Y-X4-FSOt=H5xCZt#~HiXVoPzm zLmE)R-vfZH1ILlm%Y0vWc&?Z`F`RuiNV^e?CQ&Uh1F>+yq^u9=Yqg%JqO$kAtp6?}Qf+(2b;|y9Y&yES@q3ou*C9UYimKt?G^M?INkh0Ed34 z#YaJKShwVduJCIK{yX@GzWd*0u?!pFv6B>$HTeQYqBIigN1^%Y(5Wc73$`fcma za}_guv0!Q;a*+MaXWUg14z~EmKrxJz#df!WAO{m6!58>%TcL?VnNf>c!nLb@H0$*0 zS?_1sS#-&~&<6x?HVM-Im$NB?S_;LBX9|l3&K-EQkjsPgnF+bAT;tHM4}ttascaSG z;d%S9+j<_$4Q${bm~LPL9|26n6{)N?S?eXJhh8MfZwN7)W$e2?g{KeK>?_Qp{3Q@(zpH7T+cuCbV{BFDxC0L_iR!>Pz zTe{Y{=3?B$5a^}qw!x0OStF}a2cC>ZNrvy~Anwis{s9ln&O&~FKF%DTo%xoH z*+F<{R_NIBX=@2Mo~D~<-rz8d?&CW}&Zo?p@a2F}6Cm&7nIN z(P}5&3N(nxBGIVIx9fv0;t9g%)#Ox8BlPUct783m9}}%{!}4!xt2~H`w^P;Cje@SQ zYsm%P>ThWJ^ybijfbAv-Ngq~R|648Yu)W7v2N4Ubj{tI4vrYv+iUlUT*SOC44y5?~ z9Z$c^QqZ^Tu1}7+B3ax)QX_5~F25ZM-u|uE$x?Sp zKPh%7XrkUzXp%ogk?ge6vkS%d;pXWm6-oSa()XPj+8WE`JIJhIuVr7BP)l zvEq@`J7A>A&7wN}>blSZWW)Ir;tUqO7a!NHrm{PASy}wwd|b~X%_VC7t#EX^^RW_k zVqygfSV1?z3JU9opjPKXttMzSOHb(0Fe=A6bHT4s30Yrjid!17$9&p*CZ}BFE^L~JUSQt$uBO}8U_LqE^ zgA5~rg|0ZjML?;&x(0g{0WQA<(pC?mmVgU@`5;txlZan`WwTH?IKlZ22j>#}tqS8` zs(~5G@FHwF`lp5y7ZCle_b)+Sa{(LuKlL7a2WaZ4-^_wp(bU!xP0|F)X;J} za&|o4RxWB+3#50MCiY{U%<`x0PRK48`39Cq*3*0bt60yY&wh6T(6I>|s2}_u^#PNkpnC3(cJe8KQ{x**(EOYhS@IC1j@&>Km8kE}HFz zQ7YK7>=<&djGO-^1GwcM_ADWN10mOZuQptLaQpK19*?$*1B1Gz=7MI^A7Th|4Tsn~ zkfT0HlfV?!P2?bK)1To|Ns`_kcb#Gq7>d0X)d7bIY)C*RQQiWN%iwB`gDgX0=vgVa z;~_XBOp8sa;2!(zxi$E>P{^q-5zs;fp_b+(F3u2Q*730Sa;5E&0=Mol=tIZZjT$Mdwrr_YCm)RT#VNJ_ehV(&?R;pn?5 z7!y8OV>g!TywBwWKIn%7H=jr*1h#B5@l1sqJ-B@xNl*Afg61{sP(&aQ$Tvtyb1N%( zS8U7GS)?He0>)GTQXx$S$ebqVCZu3FY1b!Y4D~Js0j5^otj80@s+gYC+@;a#GkTmqDsI9#PG8~ z_EzP(sfaQhOQ1m{rwhGTe(b$;g_=8!KxF#~plcAJoZjW3C=-`-_2Bj|P0yZs&E4uL z=%w2A8FJLPI@NEXnfu`byZ6mL%rN>v@mutSps^?P9MU{p$T=9;%)&8p4AW7 zY;X{;n~tea2i%iQak>JRWOt8O4ftmEwA%M#1GXhHe%I0jc>S(9e%vW_yqXb!?OuR6 zjgcEPvw~8O^oAm-k0J=W z9u=n4@U8JI7@Uvg)udv9%~z{aVPKL2aePmU^r+3d8{{$K_@*QdU7eDz%Z^v#Jf#-V zDz62jdH(HEq zj!AUQmPoVS{dW9zwjfSRs(S^ov|868WwS2OF(n+u{a*IlnL@OF*i-p%J}-;WD`x(Iikkc}F~29SqBHY4;u z$F72RiO;4n=;vo4?ApW?_~jwTrf?SppX~1K(Y|=dB_R=ujI2g*adSTdxP!Fs=-BU% z>13!cZU!PB+)_Cuwz4h*Nvy$*ao(T!{ZH}V1Y5ErjAv+o;7s!B*yq z*2!$q7+Kt9Br`3AFV!Uwiu-QMa}}w*n1^KuC1G(S*K9%i?Rd@NTM3q^vHZG+ zROhlIE|dQwOu52>-62U(TDzw(mDos3jf|R0F&zvIX`U48TrJm%2H^U<0~|WIu*510 zD!fab*spcKPRR5)xH!zc_V69{!#t9k*cpWY-*yvc)yC<_$jE|NwL-}z0caMT0HGvZ z9j}yA#I9_HscNWU%G#$mNWccq{mCXX$ngX|8;?^d;8SKbV zN6+!Y={7EaL@oHm-drkT8mLHfk*4w`&Je3^V9{gVZ=L?4=9jCl5svutG!`IqUZ9(x93AhzvJQ2tGsfY3j>`4}Z8jM#UrVNT_%$kiS?vd@B-S^L<0D zQ0}SdE!8Ni=ppMG&G6MGi3<)~imlT*palv(GylPm!^Re_t#W6NWQ_uc0Q2SThDw6- z%3U1P{&aSyqKu3$YwpIGNy)dm+V%lLqHi6&XI;Y|;1#y+oXtA&ue;aWdVVA;_#_cm z-7F+erxs&voG``bV-nFB?VksLBSy1n;F7J<_n5vduHAf*v;Mu0L;l3Q_4-md>aKT_ zJ;RC#_73&|KSc~+Z4(f2{*9xhFzsCuG|%F6vUB;hg6w?R1ylaLB$co%Z*k|2DWmZ>ujTb5^^)C* zCIjDqdlopkjN@o(w1c2it=5So=mJPIV+D{1wGCEp!1!Z4E|9DhFd2RiiS?w7<^H;= zc#!b$3E;)YFl9~*TS-F9z+07247d`&pf?MUu$bLQ%YZJxIVgL(>Nk+2ElTz-a;(40 zHH->-&4S@-MJ(HPlK!?@mG;A5P%`1i*vxUmWMKsP3LWsOE8l4U z3r4W|k|_TcOs;6INk$t79+VDKG^U?z4{9Fi`J{9 z?uLPP1thk6K&Qg3-&3K+u=2MF!YQ73y;>4~W7cJPEtlg%o!}Y|IDIk1OYc6gzbnu{ zVQy~Uy>2AKMgRIY3UZy7ocgmDW_SKt8kfQAeFg{?!{>0L1&C7T*=7_lej-DN%*>E{ z!&=A9Djjy<5M^XOxf2Alk7`0Y1%Y2sB%WJD`MynoLOq>HY`36EcM3&iDxqCpDk)Tuaby*78+WGtr`t`z4DW zJYU7A;V{CGG;yA9_jIEa^rzktVo2ONs)J_)gaQS{?UF|sT;*E0P~zZdflRGqbUq6V zjf6s22n#+`7_O5$9|xZFJM4J)c$gp!#}RZf@Hfl@i42L%W??sYQiK@Z_pXh6>iC`I zO$hUU(Rw~G$qIB(Y>>+kM^|)sF$>HOO08CR4q3nmL->`EU+r5r5}CJ8_2_NBfV9>) za9aF6P{FJ8w_R5sD`AA%j{!Fmu9S~FH?{Y{Tk>ssn%X4*Y^|^z=;;O^5o`cPSIcur$f<(ho=%xy_kCb5u$o9orxSpasECJ0ByTZ& zNv2b6^0TFEyK8lKJ?*R%1RHdO6OMGP`JOnp+sGsF;&6*`QEvb0V(mK`MJk@_=>-i3 zN=S-yc`@KXeD?18`Gv%d8zeII(KiCg0)1N!9T2KYAz~2q^wD zh>eSH(6VS|cQi;OP0*95j(KoPU#$^QrGO7Q12luN)>JFpxjc()9NkE%BC(2TsWiWk zp~rMi<$Kj=_T9M0$-=9fIOGbT<{R0fUX4sF1kdoSv0L3BjJ454VK3!<%frk_B;-ci zI;519lM#-{LtV=2gUk)#hzI*kh=-D!9|}(?71Aif28|CU{PoX|=mb6pokwgfjMppr zpYE^8X+={sNmI3Hr)chuO&0X0#`PY>xsl|Oq)vFu!@DEIcxjtA*s;x_@Y;_kGWXin z@#Kc98|dP2jIS-PVakz!Q1u!Ve|mgmsSJhsWk&I@_nr#bK4V9~=#T=?9X!u=Z$zLW z+izMxaIZnRGDBTrCIq|)7Z2(u51_?v0Ez$ci*yRaU=?Tm#0|6+XfC7<|z5upV zhouqIIXM8pgw#KZyd9xkMaolz;kB)*^*ubFg)0D>sS6cpfSk$#R!6RPci1vaK|Dn?9J|OgNEimf|bfve9 zlxX1|SWG$`J$!eHOhPhKJ=E-@dz5s0@Fu1?=t0M01O8!9%>dwZneiao-+vl+Xlf5d z4gNycdn`#Zep2_L9zdl4GZctovf$j3$ElI0CxoU@+do7H24wDgY>uOD=hp}29@cyLH&;W7)pMfw00=Rg zg^xf`3zy*aXWjcG37!p8*Go^IxntK<_CD@kL?HM`qmjdkq2_5?^#lx}1RM=VPx(Jc z>bbo(R$8DBtFIS9n(V5oh-;=ibXzy4z;o)q>HB9jAJPiQK!4{=lkgLnJ4BjAvF_i* z-qZSKSTQ@)EcE2kUZZd3C}sP^=y~L4nz*=Afr)+BF;?=s$R1q%^(M4DGU@N~lyl@l ze%Ocq+|28H-6kSrzEblwWU|yPzp;7gcDHuOVxHHYI#=a_l}I|rod0z~2oj@D1dzv9 zaQ~&W{n!TThflxIZ;)z&{uGl5Tj`I={H(3{N4=w;lcqI#^=#1|9CQ3z3tU>7Z35Wk`iR}zk`o% zXwR)BV>{c(UZ;JmA;9m4MIgASC^&HvIx&8yFa0~oV;F-xnOaVyfrbD}48(LG4>fW% zIKU9>kIjxlBL*UsMbBSGdqyqa=-E$XJ z3mBWE?vaa95^rUz)+(>ySTTv})hxwGHl(Va3yor4<4;rxIAdUwvA-t~(YbLu;=|cL z<4~%hIrBCz)r+ymYC2g?X4vOlg%1kxPdWHQn z!41MS66E+KWK94o?y7^y{viXhra|#*4+INnVHtG7$hGc&FBKUwl!zFHjuPbl^+4|9 z%dv*b*>}H14Uf0zx)bi`R@j-^nPNo6OVVP2=>&0`{7 z1aHvKLXv`;mbY81+d$1_Q0a}sQvC09OCL^Fg@yrvRrE1s!G=e6Y%d%hS|PeyM$t_l zy}F}ak+*k7t6TkH=7+F|?BOzh8?K1R-A1yq>5Gd$$Y+)W&+Ill*9Q;b+2JEgwmeu1 zuB*Nib5|b=+-n)S>hx@-@du+Hot_|jA@4IR^{-vqI_8faXUHA{w{k5Zs--1-^6B}# zFMF?+`SJ&`Qon{(SAR6O5dyUv_&XSj{00sqV4_f-|CH;lRx+#x$FdQ?iz*%A^U8>- zUwx9rg$BHUI%ZPiV(n|{29fBH7kL*6JDx*96hS%yBb zoqe0$(axp%Pxz-sA|`}?CXiFuc*@}X{KcW~tXcxtQ;Utn_wsZ`Rzrh0aE0JAl467v zEP#@cD)z8Vxp5nMnvnDDQl+c;gAwqGvccdiple_l8{KEY8%xz~UFvLb0GX-zgU-9l z8b!ke9~7u?^&Fl)6D#kw5f6?}WE3zq0r!Tf(a%1DAD-CWKjJ3C&7pd(T>=M)Om2CWkJ)(H`X1~Lz!!t@5u~^TJ&N<$ zu`}c-B_>;LLYh)%91U_jmP4;Luq~V*w~+br?t;^3c(SIf~D9Cdc;T zQlIw6RPGhVTa+QNIYX~oP}#h7B!z;u5JqeOk|dD^f5T&<)j+UyfKlkeGmySdX{Lz?sTu~GiDHT21gGi-^ACb8WbOK|c>*Ll#S)a#DIRl$}zf;}!c zLltxGKUKf6Y`$12l+nA6C3j~ktueO;9nsvfE0RW_G`Be>O1`xm84~%%^sv7DGlGru zl$gI(XD}@PC0>C^p7%^XTsq4&ALlBMhJwiPcL@$`9Gb~exTWS!KstN!Q90swR}>q<}VAnl$N|u@R@8n!BA{mdQMZlzNj7Rn-Qc%N~h` zzKfX{)Xzb4s{JOg7gM?;oE&v%bE^Xk_YWRI-ZApMz6R|yBz1t29tmLZI^j~`C$bQS zKm@WV^esMc1^C;qo6|P?#;powG1Zz|K}?H z$8Tm=%UFxIEmQ74H<%0cn!1ZFTf6;PHewroSH~^bS$qA-uRnfORi}ip#ICXR!!}4N zUMXFqkDS3Q9fIr1vgJ?9Hu0hUY=E&dOPo#>6jCH zDK`*5gLxmVbA&;$R$Oo-|ELBDdxim2wwDzsof?YehNML__p%%qQQbwM*s*4mS}D~D zGzDS~8+y&|%#~wQwlygbqy}nIt4TQ=@-ZWpU;F!8*A*MT>k-p+_>8mPQ7hAD zD(1Oh+(|o3`q`eg@ScH+tu&Y;3gt$5g8Z;^Y1KG>bZjHJkDtY%k|g8A$fTwk$^Nhn z-lvb1DP%J8H!<@TAKWGke?Zvnm7!Wk&dVDtZS~l#%_R5xbJ#(UBgUBoUer-Lffcv< zv{L@muR%3;NkI#;vbF6MrJI5En$|PQNpGvWS$3aJ+YGU&WhX6^j#Tn0?GJbhea^pz z&+>EDOS*E!bvS!hL~OM#V@Is`XJCV8z)hdc=qt|Sf|0>X?#{uykGhv)J}J7eF}yPW zAPE~m*@P>^%j2J^!qb4why4T#yno6r?rup1x_m9G)tp-VOZ=Gtsnk^gi6@x{BNDpN0`(5GyJIw_ zo$nmHuH$o9oXueHke+D4?#Ils)JNa3iXVj4@Ew_yuFLmG1e%C$(zNXnf0Yyr-YyUn z3YA)NzdE%*rs#h=FNJC>qidStLe(WV!p>3lE65(J# z`g$dsExHkE{N7^P_wTp*Gc%hT{cOvu6A6=&RQvkOE;hO>H&}^_hOvWNn#az&)?PV$ zpKKNS*19~Ln6bV>ptQjL^-JDz!)@9Pcl~F)go~fj3v0)?HfTAQO`l4BmpAh&uDDvN zQJuvp6f-@0qaTA|&|k4eP6GhMx7!*noaI(jz#2kCVsWN z!%Dc6hw7T3!o+yJJSUBw<7FbYl(4llH?88db{FbVl|-0JC}BYDaq6g#3xogk?*1Z^ zOo@JwrAzc49`PQxus>Sjf}qnT z=Djqdn(lylt6hmR)=qiR#aF3Fe==^+PQbMy0++TIvMrf40AYf%0^w~)YY;aaN^fD7 z2xX~|tVgX7xws3~20ko=*7^VWAh^6808wAU>IzscYy!E)P(W`;(R!~9_mJ!>D@HL$ zp)|)9#yM5JE6)2_^5P8sjgWTJdX$vGblSv1+N3A9srvl~usKq`T0pL)PGT-^mY#lL*Pv3sAQ1BjFv%-%( zEJ9O0S%O>ZQ3(=(YcxC7m#}x^> zj^8CY4KN`%Q8gHuJPU56WENZhrqZClA_Jx$TFIOY;oCZFz2jtI+ic;bKP2+r(BevD`f)4yY-lUHDJ$3>MT`$s(NI5A0twJ6m_zi0!?w2%f zhjJQOSuri0dj6igFO=pxYv%3jnlO1kBVgMz1WkzOVIz4~%EyO`LRtplxjkVCr=Ds_ z(l2C_Yu8P##t;PwTiF#M#4FkaB6T+CbU$%w;Z5`MF+`=J}%ZkWgtU5 zB`%Ilf!dsfb&J8B3*CSIL_ECa=v}(d@gC!E_1gJ<7dLn5d;LelQ#~$`n_9^@9}Xlp zw3x1iEgX58l%~^iN?@7Kc$AK$I@xKy7Fn*Y>S2M8C0?gRTFy$PbEWbA)%@?YBbZY+ zS`(-5%@M`>NWZ+q(q4^xo&QRw9>s&Z6T5pY!A=3ZkIYx$zR0M5A^lhvfhBG4CqeL~ zGkl>R3*FM$XRKVZJ#s1*jc$ZwIb>+a@!sH<%>wJ^Bn>xdF39{HeFX{%l?@P{h3`(s zvrDYoWiS5(B#``6YzeXAo^3Smv}5aiLl)NUo%AEsF&0)}@~ae?gQv_QP3V3UtK4dj zhyN6uJ3?(JY5Or*9Yqi8<5x$cc{izu8$XGQJ{w`tlrf%o3zyZciyv8`Vx18EPPcyh z6+h5PxawC#X5AWwtrUwrVSs<oNWWqr2OgfLmqWv*n>} zFC+SwCbLj6`6ZCMf+4zb|KI@X(;Ob?!K#4YieRN6%;o$5k}ncSK4!2uJ`wLx+kqaPW|UE%Z?X&o5ZD?ZS^^(*i zK|#tdQH|F>JsG?0riMB2cSJJs0X=>MeZr2|TNhpn3-qXOIaZ$~kYGZ>xF#M}o`!t2 z2v*APJ<+KgWAi$7MeY);uCD%MO9J2D`2~1*2(0edqn5m_3IF8f94*Z4ulirp*UK+ce`lP^>EiMzzhgj=il z3Dl_j{?`IvdCja#9X5-YEzfJG`F5<|6dgo06L?Ud;211^k~$*Zxc`=Oj^<*HMzxU! z^GX7>1nfi$T+Y4}~?%6`ndE`dq zt)k&SwfG@}7v-auL_SOhO&!p~-I#tjryU+Pz9}gf6t9PeS9MfXLm)(kUawbDIcDcg z9I4#-w`kI(O;@S_8Uue(KeHtq3PS1g;PUIR;%l|2TuLfJnj`;uz|%#$MWY`n7AYhR zTN;*AX$UwyZBnOXPL9+!w>guqj5tbTepzMPgp%*Nv&=0>sU%A7zd7!BBUk&AiFPd+ zx<&TH{fE_BugbY`drz;J#mEE;PJ5vtr|&x#o`LE^Px!2J;l959uLzGeV;X})y_UhG zR29Ld>j6S!EyDrSp%&?ccoQG7I#y&i)oM@X=v!Ml~x+c zE=1vM3=emoPLGt#B{=Fo8xjlJ4BI?5ygYhT$2KmAGWvNt$e4_=w_<9q)0LWu z@+MxZjeCpHHxsvyWsQ`QA+Kx}LP;XT=Ct@sV`lRluW$%Z)gY#bv9bd=PW`z#KL4g^ z%iiU`BQDECl&;<)H>b%B2V-Y1Y9n+fY0Q5HZEcU7FT`%c&Saq;xsZ72mx=OdAWkqb z7L#e*`{iv=RTWcEQgF|V12M2~wo$92A5&Neicunpm)O|Rqn}Wl72Co>W-J%vw*|3Y zn{_S(U>QlE#Y{EtFIr8?MD~XMve@ZvzS~h#XpAQ5YJ7Ishk>;`GxCQl>_b52nnya* zZdg>H(}F7wD4r08ushBa9uGYt@rFR~gzsAC20Qemh7w3^t^ zYWf1M`oI4W-g8FSp{fo)@$aAhfc)wI`aq7|Awc3nygrOeZUX2gLhb409+{-(|mJFlc~6F<7&9_fJU2x9H}OGC!m_JlH~w}sl1}%eHqVT z2^XYv5Hrdf3qPa#?eZ}4$sJhyqB~+cUXGcVnE3jQbc4OcEdnVIFD*=~N24stSsUg| zA>O+d)9JUf=j*WZD3}kr^I_)onU*hKP(?SCQD}rGEobP)JeqH6>@E4zC-$G~@XSo( z$%B%*DWBD%J1ZgcTa$4OQJVm(QS+!}M0-F{QF-!W+dtUO@-0a)0IU}Q z3e0#NY<2?gt}W%|qYAB)REe6G2ClV(;M5X!zihdf)gABQ6?)mLz z5xh5SMEb(BYHF?**X?3K29Y1l<&BA^; zT2`q%pT{s+F$Z@pB#M1d`>3wcSm`5lCahppQm4YwDztvz2+EF4l(rbxYmb311kf6` z{l zL@s+gxSg5Irr`YT-Y8>n$MGzQ?qSS(5&kH$T$Gz87J!{@uc91RnK8oPd99CB6Bo`L zVyua@gBVglK1=+p-d>rd?0`)<@fZgp{yr!+ywJThz;NsOYsBi0cNr6QBEtn?y)UqX zmuC+-d+n<|T}fQGmWO?Jazf>o$2<7bI*)w&>{IUZS-s5WM-0Y)pr~=dtO_k|+G4k| z^~b5nCHCWIl-mO}RtI0(hk%M8OX$to!olEN)zz^g3z3H)=9U2cM>>F#5*QtVWqAiV zw$cn=jv*EXd}9bxDc6LYd8Brv0#YK7wM4uChECv!1_+dp15Jv=5ikfZ0T)d^OAD6- zYT>66@+GUgltq+n+ZHxismfncCbu>O2%G(#SJ@;Y6S@KB|8u)$@E+Ffh5N87lkm;E z!>N!&2}?{}nnTEY*tT59 zq}ym6SIzE#0b{uo3G~VtiQi_!gY3pdLI8kW(M&Z@ue+fseL!!}xKWc<+PEpJkD|)M z4c*FU`hqv+<#5qCT550mjSL&UNFM*N@|9$Pq~HjHxUG6|C@}>LMDHmdN#%lGADW%k zT;-e~8!W`4PC^w)#Bdr+t}|R3FHY7U=*1T-Xj!?~YcuiDgm#T=dt5pNqKb|(sLoaA zVZzL;4eqAqiG@W`EESq!EohOPCr|9GI^H-8Dnj=Yl(Z9LFxq0ONvOOxj7Ssv!F?M zA?=G$gUIn5EDPm-nkl>ebV(=)K5NeN@ro`Hxh->Cf@y7zT6DVs!k#*@lNTG?g`7;& zXVOX&l?A@mrltf~?E)&Q&TTiha2GEx*EYs}#_K^Hbf0<7gd;}$D(r~#p#r=5+Z-tG z(}%Z>A0&4tmMb6!w5Sjw1s*dsQYDfKRTkD~g@qBM71t0obyPH$D~+x83nFDK7OaU~ z8EVgsroMQVtTpS5?i}f5E;N-L4T>?|W@U|eco@sr5Go?%#JyI0Gv<=MlCmM}RFg&w z+A>8o<3<9L#c=|Ti-VQdRImWU#p{TpBXnzizV;H+*}3=pC_9UjBE+8d#Q7fmgZp># z?+K_Bj^vlTP+rcg3)Xy_3)W(HUuq2@NRk=ka7m=!((-D^WIj0UHlXQ6&$0XdknN~L z*vxbb+>v(iRx>^7_xt*I288amwyr52gkoyyAi5JK!+WZ`d-i%<~ z+7QheAMY47jX=yEE>&Xw-aUIInI^?W{^x7Gni@mjqqlFLSh*kd_3tDaxh;lmy??QA zP=0v+{X!Txfpj}xL<#Oq<$jb^DOVJlpd0C0ni<0uJ++uYbP&TzYYNlwTIB4<-2zMn zV=xUrf~_Pkum3Fzny@k%>H;lZ@SJbo<5U>#cEWl$YK?>t6KBZ+U8l%URpUy&=VyG4hGg z^a#yEm&n=yv3hd%4;-h4=C-6 zr>rQwuLl#0TtozrCiwnI`ES#73+H8cM4#>(VDTRcLpOy+e=dg|R z^xmATsY|PYb>X0o6D^Fk@u0z4;(IAfbueerN9tBa<#oC7n`wGiH#DZl=P^Xmcy4!4 z+9Hj)TsNZ3ZESjTqp}Pko#C%J0NG5*$;rLpeDr7iazq)mx{U5LD3Fl<(itWBl7_M9 zyqf}L&{3o6HVKB&PvPMAJa~~h^53li!!+WX>OHzcfdevoIx1TYgLBGr$MTGPlC_Um zR`DH|R(J2(Q?m>$R~wn3z#;IOGgbDr)xPjfC1}CDy-VU(9rg*tvRkJFrK!-CPrT#r zd-YEl2{K|pSa;)hEiH|nwTIfR5ARnm_*~+&%>D5uv~a%1XFL4Cy7tP%gsagWIZex# z?5IylxfzAE=v`eFvI^0(yjAKHt{XyH8M)Huw)xoxsJ}*R+r0~8=9(oN1EPzmTGOco z!X(pPoEy&jPOA~gBt zI-0(*#zC;Qt;>EMO<>@_HD)xi0|~Fap|P>+r{1M~BBHyHkgi`f;rJ!nc`VbU#BQZO zM9?SFNsD7ZG~kWvjGY$wBOUc= z4kl@}8AUctQcMY`kPr;jqPzCYFJp@_~5?QRAxT5%Lp?YMxia9 z)6?psiF6|m?qlsHUICu;7WVfYE6_aj|M-F8hc!%O12Y;z9_V#mK(7NsWC#zy&;xjK z7v?lSG6XB2+xZSUg*j~C|B=B0Hvogc8j$ONO~?V8d`GHGpnQN4is!%U3hlqYSaq*5 z+zjUj-v*g<1U#TgCE94%qC-CUl@}LIe2M_MdV%R3xoG3 z+1dNu64IE|g3XzcNn0y~ee}C=4O`x5aO$?;W<#9AyAxsedqu1Y)vq?s76xoR)2fXLOu~pU z&?o(Z3mW^E6a{ryp2iYk;_4A9T@-`wJ`B0&JN@YyU57dnS2AV=s`Jdrf&pXhc59|L zJ;zxENM=6;SJQfv@~tmY5&!|MrlzKD=5M&liLPtXIq=_k{5VaoUCQwn|F^Hl`nz(* zVRj_pzwa9q6nfL<>`8p*=0AFMBz%>-e;qv!L2-rRmB){eL=%mPtf%-Q$^|Z@GQ~8X z3^lT0R*Oo0Xr#f9=qNdJqa!N08~O9vBHtB>NVxjnd7S%^4)|hgys%{T;`Sf1Al-lT zT?wM@rlzj1ge}#Lm8#cF*{HK6RZGj)eERgMY38hF23T>Vk1Bu2(2({x?RMrRuAhC>0w<%<&UCZ+eJ~s~P#_mrn3cLt@`PE0_9>=Ly$w>1o6YLWW+5;ZQUL|oN z$N+lfiw6on4)gK^)MREzZ_`J03xZ_Lu(8hth2wU2jW!2RknjQ1IdHfpoFmCHb!hgf zUR>)>{2k>vY#TDO;{P@N;xtK33msv{u3@fMYkKqN+qMRMKB6a0LTDy(JT|^Q^qci3 zo|TK^E{K8PT>u5VQ&l(9$7VwJx*D^Dd>zivPI?wl7CnWwbc1 zn7!l$hb>oDcPCSusduxy6tcz>MueoLGg8}(tDq6UwxOqd+EmmRB*6bErxpK$+TKH%Rb{t+B}KdhX+Ci5v~9V%=u z%hw{(j_!l#5762G&pd7yyBO86BE_5udaA$9Om{##)kww)=@|NJsoWLa`-({pwMYqi zBRUXy0{ag|i~|lv7R2#M2O#xUb?})sa*9I;Dy#o~A;khgXJM{4hZSD@d<$)tMVZc8 z?aKdA>SMu~ubXehe3S-t@pcW&k=4TJXup;9m^uQZbvLC)V<@F_IaR42T+y&j zpw8k*=w$VSxwUmWEVIO_ox&@=zpuM`?wA%ZoRKp~nHrv7^SoVZfJGT(PIfPVXZ&KE zerUD&5lc{ya4Ka6$eVIs8~~e5?+iIzi>Ooz=IHJiuY-VTB~Y1v`DO=SE)14O^wTp# zk{fe|I0z`@JhTgkKa_Gi*1s7aXUtGrKQ`BVR>G!@6Zn(zBa;2f$8b$V!<@U)DrNoX z1n(;FP_}(le@mHNZM#N(zfBcP4#E2*eMlCyV8`D-s2t~M+JWTvot>Ml_*T3Mfz5$@ zqv&K^4@}>)1sa~T8Ik+%B(WnDzO__HCgRpjUzT$o;1RM^_pja?S`Yg=-ovB zE}GjWVn6jwef%+9EDT*A*{_JqM{mSGH)_nhak@0rFC)`fOFQWIR3Iv9MngK@K&h97 zKImhT%?~jKvP+EVcQ?g6HSP_wUAMb5wz)wZi(sJbjA-VpfRQm3za27=rKk2LtN)V^ z&B%eVkmtc{R>8aU(HJG~oesM(QZ>bx z6}42+HA3||I=>h#*5}%r*$NOPchbRIy4*^@2i)X_O^KWhe``UBv2$Z^DX{Gg{P4{h z#o^*sLm`+^r8i=*?RE*cu{lP&vR37v@; z*UZXEnJa2 zL&339ZDcp|W&gAhSGeuTy?y#vE!z6W&xnGyI(G$IyKtdM@uGGk@tR&pWWmnA2+`H3y zg|luU{c-(f1m+40tFl?9l^erX{+gW9(i`0F?&FTaC$nsbHf~786_^T%2uY~GtpM%JbLKVSdpC&48m zJN!N4Nh_&Uh61dESL8Ek4bjkv`mK&DG(i38T-`@iMMS<_4pa#iDF9BJL&xLjjbTN; zBKE!$MaVrndy%AIRDG)M7)e?}%2p{IgyOFX6C_C3yXS~AraL%1thVh~sKy#i^+0Lc zJN)*`#Aw&!AE8golEr z!piAyO>DMIWVZvxo5vF!h<%JXo`kQc%DHcp^n>O`f;N;V!sE)CHr^?8(UC^e z2B5FA`{adtz-*DBrIg~gEmk;eRv`J`P-0?sR&1Va9=S4uL}Tsw&pWK+FljEU_ik$D z>L)!N1FQw{y*5?VjvxLK<p`d(9rLEI1 zvf_V-ir^go15k2yQ?J95&hgsAXL&K41S@E zc{Pq4S22J8Q^EI1e?{o^0r}9#v9cg%Rf-m>jqEjeYFs$wh)5jbyOqF$Av(TuSyjCj zP^h$R{D~zVbi&1hK(s~uO$$qE3lAbc9N{TeI?-%%A z?S+fO*efa&w)<}wh||U;?zA##1gldvkqAGfmqbPownva(K_C}<*!t{IYS%c>ubdu@ za{17tep|ayp&5mWjt4W&%$k}9D`rK;{|mDD-scK=>KN}zz*ZVRb6-4i;+W1ZrEe%jOaF{hC3gG$Nw7VCt&c1W zDxl5ow8hL67wW~Foa`$yCD?yWPGd|?W~^&eG3M}lGl3@?%}G{SsMkmzv&?vdCVERj z1F6E9DZ3WUO4G!X$p4&<_kKj*?=2$_2NHZ?4}{5XyUVE=(FzAro5Mw(+P={@crf8~ z1y=5KhOeTbF+aaIW`&;~5iP-S@@H^0^_BBF$?EDSQ9Zq#j=Aa^3bb@@vWy;gzo7p? zTS*7=^Lg4ci$r>k4A&>SG|F=K(hEzK(z&)Wk+XIpX=4+)$XT?dkMm0(Bjc9nZi9N= zD>GI62-f9#=F>4|eHVPHYPmkU=We%fLNj~VM<=w>Y<+p}MK5Oc*DDA|BAe5p$%UA^=DNE-})CnuSwG&R~Uath*AVO0I& z!%j`2f5!@vo6itb#Q=mw{Fi&zypF7H2|174^9Xo-Q;i{!6Q06~`j?*v3nM9DtWJn4 zf~TmVL1BYTPsKDAfLU>ncLa2PA?T3)=Zkg@XbSt((BA%omII?%%=?tlL(6md!Vs2J znyM?J*j_42-d(D*=WP7rE*FlGxh)MB%ID7oA3e=K>6DZ9?w|N?p{|-zB$at`;~?m! z6h$II}%3rFcp>~N)5gYT>gR00==hpdfDjGP{7X8V60EWBCGz}u;w~?C zyLJ9Y9aI_eJKwc>YHlOP;NOX@OMk4R{;_mlt90tmhP zQ}_2qTy}SBh2&|zY;d=M-m`Rfm9eIE{FNdpDW_{zrz?W?fg1JA%v8_s6?aLCT2u%d zp^F(UxQ73{;d2*9X4z2%`d1YFCuGFBKMW{V5yNezs}{C2zfCDBwQ%%M!|1HgDBh=( z;0$(fnYVgXrqER1Mg9D8&azU4|NGl4rEI1V1%a}FJm%B*jN{bjF_ z2VpGv!NMks@&}2`re=pt^owc&oM;B2BBiXf-#>orw#eLwY?euBd!&Y+l&DS-!hZ65 z26k<>`&=RyFW1-CbEWhg!FCgzn9y|0B$$xFt>+(_ZpWLG6dPm+&vo6e!Q+rU<;Qb^P{;TSjDKW(~sHrVFuR<8@g|Fa8(^y0$@##iJ{ z`y&z*kKU_SM z`sax-DDNwsB&^9JeGUvJ*G0+NIVp~R6M<^m{_CctH_qR#bR-&7>_^`(d|Cp$5TG6+ z)jr$k+nN2K=bz1R;`>dcjDN-J#VNJdAA~UfrO4c2c53`|SX)aa0|GC}L=LCbSSVw7 zWF=(iS3q+{J19B(N4{<;8iRtts+WX(K{{xWXLy_?|51c^?-~j{$37ZEiQcn2PCQ6* z$@Bp4WLeOz?EQCg#3)0)pFHhXjv9uX;OQ*$lmZmh$b_pv}j zc^Sk!_P9&BZt-K>qX%JjQ4U1DkR>GffSEj>meHC1p}N+@%Uaikl}7KA&PSqXnk+iV z>PeXJZO_WkVWE`%`CUa+Ug`P$CZ2mqcAI7ghd@d6EmvA2r30c-ee6^E z16F*=KeL5{^mv7zYnpo%aq$XQ{X%khs<2a%4%VP$!HzS7f9fYx${;X1sxT=e0{#nz zy!ij$Gog2d|N7#+peo2Yku|kT`5JV;N`%U34icjL8wzJ4?7Wivigr)vcE~P@6i&Yy zT5bVpK0RnN=iGA}s&7!Rfw~w6`S+0n9&XvT(P`mX1Vx$pukUQ54d+U%1cbj@rx6I8 zRtm%;+OS8(G)byDwwNl{h<=9FSF$?$-gk3115AT2yLijI%hr zGVnH-BNr?LO@}C^UvB|bEfn@`I*cL-eEY~) z!^S$z@(OL4=C(HX0*x}xm30ft^x60KTA+~qX%zqyIJbgRn0he{|Mya^EB$w0Sk^tk zE`nd+6ZC~G2E$fmLf>_^Sid5{Rx=kNwqJ|yyheb*=*RqO`nYdrTk0vgBD01XpiYAB z(J)?$mR|Wgzm|i$QNicTDVxyNxtElmJA=f? zPt7mrkMM;-?_F#7~!0#g$+`&}^5oM;1b!-tW_d8yyMQCo6((lit@R zKC+Zckpd_BIbW9QCa?BuNH{$m@95Yn_;@9?{N3n$i{_P(GEAa@$2b0~6q5P)h17~r z#^CHV_D>7zn`(qV@kNg8^mYwZdV7L&x6%NW;!OzdLGdS~42p1e>E)mDN!c zjz|j*1Sbm}o$dAQ03T{(XGZ{JF&Ojx$E-TW%FO0=?09bZ0&R@cOg(hn40=+=?UTeF zl9TRp18Lt!F209|Gh^?mtw7=ziehk$+=P>%-<6e>wL3U$0P*$P z!P7$1A}I`LEb!xhrbb;@`Kuu%6t}KEc_z%?X5E zTtki$J!gvq24Se^Zo+`MI2f}akfXr2Tc68r;*pXPNEbj^!@o82L9qR1m+~1*gdF<) zk9P`}l-Sdr=f?Ts;{-3y7d^|*=MkQ~=lpQfSx#&&*!t#k;g_C;1^pf2KRE=ABwO_i z!Ld{1b(9hmyqA`H7g-8RmgYDmu;)0K{c6j-O&sVew=TAj(|1O;Z|OPL`orn5*RO}z zm$F$tDSvGzFJY_ax#38GqX{3pd=9k_njIjyq@=Ic3oDMOGy%@dcEir~agY>lSFDLR zOw!tniU~i)o?y`8Pb(bF)|pyCVq`CcCS zDtJVLwyNYhqX~XAV3F20V-F)vskWPXLhJ!ff;AE;4$re{5|)sAw%a39QkV7}C6UEh zE;T8MTuo_1_+{3?4XA s06tm1h(i;eg`5bc-hB$E}HRqw5zSMNPbK2fD-G56lx z9gtui1%qKU*$;NUY+OHo1O2Q0?6Kkn20ET&3~XIzH4&>gTLU0Z7Vo2|bOtM4KpQ#xTK9aDC8VsK>FhdLe1 zR7ane9|I8GxhMd~q;BEjh2-b>hLqHqc#__Q>$1m4tAJ;rijAoE`Tb)XrP#alu~`_> zAqMJ_d@JDd!Th?*{sV!4ROzE%&l|B2uTxXo#PEfJ;EX=obZu-MR1m?<9|~Vd^TdPQ zb)D-MNQ4LKETriW3HbhML_c)a*5?mF%>NGT|6M#kgb9EFjWDKr+{KMFJpx|X`3Po$ zn9x&93K*QG&Nx<-gw~C&pHS?(qVK>(KL62{Zo!a4-~LB8FjjnWEe zXjKZv{h0(sxSP|A^3lAQUO+*C;AVaQBpY&e#-Vd$at2<%TdeV-Iyc{$W#+yJva#Gf z?R(1SW{LuAC|}Oq{(lTR2m}Srnf&9yHK)4i^a2hT;MlnC?nkm;C%dxo{HK0;-RCWA zueJ0Pvc(!G^_(8IhJzn*!9{${mSi^aD$-yoe;UWht(glq+D@+@-1YvQ30s94WyP_3A7AL? zhKmuz>Xjg^h+mAJQ{G4?zJDWqfjp`&t0GQ>fJp(w?C=iTh3+Omn(jRLQf|50E;@u( zD5jwxiBr5KW_!5PaCRxb_?rk6`d7(i3_xxkY&LqJhzIF~I}6@Yt{Za0T0%}6h-Ml= z6%V%QT@|Xo3bEKMkbq_1mw4|QS3mlttyT=iJ~w-hZ#+OJwcNHDBCE@p(k!2^hS$>U zbho%ZjDEh1iBtUgD#fHz7xMGLO;Z>!d9sL_FESNUp#Se|Gmm_2|FYY)$8?<20Bvz}b7 z0-{qk{~leBdQXpt`m%^Ti`+fxV5jzom-G<2+PsVMRso|}P6EG6qqE)wv z>wRXqTAS1(&DcpQM%K|eVCotgvGaY^QA4aGt-a#-yNRg=!$$UOd-Ln#I!{>t*M%Dv z=C)Kz_!BZhcGmSS1rAP-f5WmgYd{j+%3{CZ|u)56bLaUWlqwx zsng%Uo{=#_-rP^>Ni%)aqDLfQQdVQB$yNl;BSkvbgia+zP6!)dL4_D?n9J1oh6{50 z5M;hbz%T{*RFQdkt5kcz zNP-qJ1F*jw$}Bk47`k^^R1|%ZYwa=RLB0{>Kh327;tnQ-FhA8*w3kw(KiH1qy1VWB zPI@$E*a#x^%!|}=IG;QK;Ad0Pke$698~{{oj3+xQtK^{f#Gvkni4zQ$v#Q3RQqh#{ z>5abPw)&zMqkc*3>!0l>gi4IqwJzx1b8QlZEP;U$RA*aUD?4KO_f9klNA`H4V`WQD zwZC=6TTE+$1nPnY^G zz7MqY(87kN$IAc-qQulCJ^4Ph4K{%1D~VnPsj!GS?~hmGk|%3cZR$>5Hl;s$ugFkG z&Nd$svCzGXf%s&(I}vGpyd3rGSNrM5ai_c3U+Qis`-yg}fH&`PAKx3rqA`WyOs++hw#Fs&MSvv^KVETu|&h9c-3q=Sg|Fq*Hd6R#Cy^Fn{GMcS=Oye`R{^N^Y$Djo?K&NM0UHPAQL@@IRv&YWJ^MZ7SgsEjgDkJlB^zot)3<@HH& zRqYB~tzw(UeAi3sI}A$}>(r;0912I}uY#M&iI^XHNU#iL3^CZSy)6XEC*qNW#5Kr` z<>KQ@`cnshRR0E80Pb#??Z|;B;JIqbXZN_7=E@IUXJ{FYOW`lgnm#E$WjtUz_bxXt zL_-E_#Ij^OZ-5?SR^G{R2P%k=LgSLm-^LI&Idf||T{lRaIvpIa< zCeSC_!M|nYjJZteP6)Z+6$PbJj}5K6_HiEYKCgI%;{L?3f+&P zS%`E%a@by_drP13Qy8p~&BPw*{E6=rd1{CBOiz$-(TBViY?(&rJ542P7ntUI&?VFaanU&9-#CcQT*3Ml+7AD1pG`U-m#N}A=X+1V_!9FL3 z@eVQ=Af*TF5%7Ub4AFI)y9U|-Qr->~izLoT2Z6Fv`@)KfdrKqIIfL!HD(@q{ayDxj8Q zo1qkG%ZC!%wHOw0nLPNDcRtp8rnP?XZ)5EiQ=5 z7&FNgrt3jCr1ejakl*wiSZ7sEYnABGI2rQ+MP$I1q*|5A-f-#7(+6vE4NdCi+L5=H zp*jd_`T zcZf0}p2$8m-VGK`g2{@`2Ks5(CxMbdD$RH8r^Wj08~I5R84k{`-g@SNG8LouKdH1I z5{I<3PeihgF@%jRrYxQDC}Tdzd12&vwthN3clc%d&H1^ujn1Ds4# zThJE4!l_onk|wZtZMZBzB7=YTQkRGBiOj9#V|g!FSH1&Vf0+Q24r5WLe?a!vuoKcA z-fI__Gor&n@-F2T$Q6=sw=hAbQ}#j!09xUHJ0^cuQLZT>odhfo6LP`>A&+v2*#N8s ze_`o6S@%4MwL;z!qL`CzK!pb7UOOy258q9IwZaleNSlbauh9PCBKNmq8d0>+VlXRF z$I>hEoO2_MLT0al`vH)p&@a6>Ng;_~6q zQ3?>UQhIuC&pzhmd_U4T8G@c@}LGWyF}*v(#ZwS3>oy zU8*EsHZYpIBBMr5HfgzhX>s?+=x}n+s^qOIFI)HPU>j6q3(gS0ID0G~#L=+Hsq(cM zrQRna++?7GtKG|@8RsS0{s!7>n+9p)lO?fAPqDup7B^`N9y-qJjDNJOgFL@4&uexq40eW_$)770D3~IY9>9I zJ-@N4hl<{1chMEUFJEBz5n@{y@_LzL%(#|3Eh?y?cnKW*>s~_kK|`W#QQPkQYve?< zi;J-AmGx^Ht5s8t*W(i+yk!L{yum(VxA8%{H@Ab+vQqnY$1As-2&uxIVNFcor+j5h zVXl$17T_1i4GIm0#B4m3?uTf~-V6*z6`Fh2WQ6L%zOLjP+D(w5jDe`Wyg1!yrMckR zJO_vDXp?Ln>;}79V)P3iP#@7$(9ku&d!wq^U_Qe#`ys0btin8v|@)R9mdm| zCNL)@;m@;B-$4~X8Vl5Z-R0qV31-jRPLBNKVMy%|1~W-_OFP#$ex8cFJXD**`H$*F zr31(*OZxe5Gq;V35oF~(+nBjv7d~0N1CdK8zK5>9p~&LvyF>1KC0C`ZbFU2)-%Y@( zGw7|r6_oR?pl&;D%nFS4Eav``pfoh7&@_Nzb@FGeZVMIR{|Eu=sx{te!F(5dWgxXG zIO^-Ms_0Uwn>vNM3w_tSs?*vry8`~OSJ%g=cQe6$G(D>#il+O`((4alWtWP5A9kpj z-Qi|2ELC+SI=S3<|J^%uEquB_>+oI64OXs_KlKE0xbOE8)bhc77SL%N?!El*ojmf# zhpPDvmxfwlM6&u-PTN66`IwbP42@EnjJSIq?1X8Hfr2WQcb{+a z6k%M-eKnvA@aroh1FaY{md$&_T^AbNJ=e}Lv8PQ;mXLa2jhPR!MQtBW(^~$qtLG+m zc3(l1O}81owA_-`7*)g0xb|qW@nML82gr3w*iKPexgJE(Xclt7e3DAoi+^oJkeqUa zq_jHi)soWwfXSZwRgy-(0*Wy)U5M9U?kbzKq5$Ej5yWN)MIhCPv#4E^MQ7%}$^1Q|6w zutog;%tes{1s1KJA`<7yZ=j|ou@besxKw9DU25qG+4d=*~af{PEJD>cxx7Zw8yD0%KDc-==I+{%{aEmeu3(CHaT6V?V~z z4-B;KEM=#ADlj7wY1IiyadEu^58~2CBF(msk4Hy^i}&2q`c|5EzD*U>*yUb4L@!_O zn!Xd_CBv`!TNy$Hms+S1HrH*ezk1mUFt#=YAE){JERQ0uoG@K?WIjGkkTPx{_YkB8 zE!N|eFH@TVCxZlCw};5H6~WAYaRrDagdePvqk>7>HLk5Co2rzmk?&b;Y%a389j75` zyWFwWpLeC}gdHir-f<-~Bra`-zxXLr+QvrdxGop`-&J_LR&gGMVU@IMD4yI0tDVlr zUvk(@hVsa{1Uyihytahvr`0yM>4Hr(+W)-2gAs5GBP%0rZ+T;bd_tXU$)d;-eYR5b z)Mnhu8{N86SnPq#TiHA|Q6f^AAOn44is4+P&IxS_gt{923mmwXd0#5}Ukz-|>=SbN zJ=)SZF)^{TVe3l?SwWEAp1P76KK=C|tQ&)2L1N~)1>WlLLLVK|CoV1vFRMw-q&6`w z=9ycfC4yPY9AwuWDdlpo+j~O%~bCsIs~bx zsVCWY-$W(n(@OU@h@;Np@2KP9nqpDq)~`5tXJy+sdiy!sjvIx)AMx{|-z`y;p?CQX zsIzlU_k4mxg(IWWnpRgaL4D&&abvuP#?tq{v;Z;h-=9~zSc^P)B0qa^UWO5RN*F^v zjqoB=Qz!KoKRTaKC}YF&aD!u3_ccM&IG-f1#7+{+X1Xpc{cMpDfp{k$Dsnz3BH``r zqSOv(W~u8k@37B>$*<4b#hbG&}}J>p}Y3)_tFA zhiYR4I_Ii5g%)4CS=F9W=OhGoE5%-%pM3jFIxwWyuD&;TG+K?j#cPw7XFT=$_r2+J zO>5S-DXxjkZ+DwYF+L4NKHucW5WOlWiWlcGaMIE7gr5oz2R5R?*wmw*8bY~RVtoGG z5j+?*3P`I-6wlLNtQgT{{c==I0J~Mvybm;Bbx>URS4v9CofY4U6@J%Es)pkpTQcV; zbKY{&{~<&1?DltZjrbbG?9KB98!>C5e*vGG zKJnzAg?n#FxmJG>;?9tJML8AWUkF&n)w@sdd>S&xZW!LOz9iG+t1z?1SD0>JQt*l0 zOBFo4>uBYQuq$QLQnVRbf9E?aGv?*8Mj?HR;MH&4wp|mmjor6x%51sWl}l*}`%31Y z3J&AnW{KF|=JQt;6fRHLb5u?}Egv7wT%aYvbyvdcT9pnD77SxTUzBdSr9gzf`_V)} zekJ$W$n11IXK59uh7}>A9Dj;Qq8uTK;`e4vIw<7)rO0cJ)w&X`u?V`NvDfudnFKBI zAFiiYSy_ZuzGq%3QSdph{gkWo?5B6vOWIw>Cm-(K5i$E`;iC8HfvSm5k<$7*$mev- zdVE|npK(U@{?@mgN5b@^i^@Mlg;j-K0jxeI`PYN=-MK!gUg2JO>fZo4dxa|!EGpkh zk0aV;Ub~f^NBut@jB`roej|$@6M}>FO@L9)%G?`uH`nlXIt$(|v*_bj3jSU)GUi?~ z0_I-fObPnj(a*C(2L$H6!f7L3vwU2`m4>Yw%-JC%QmBFwwkkRqYS!>=7dKueFeXZC z$Kw1>_!^;@aK)K9T;$nMhloQB^wEF;zgjSiZCg>L$J=>bK>#lO<_z*GoBA-zk%N`< zYM*n`$jH>DZ{IK{YY%w{J-UrsxFA~aj%DK;WA3$;iN^96mD}}4iw7u~ZsEs`r>h@g zwo_)#&=A`{l@;bz2R>Xsg$%hmT}~XdO|taXP6{Z+&zy?i$Se$bnLmVUZvMI1yj-lf>V1)oSkYh^Q`MovY_k^+;WG@hKs$c% z+SCH6F}f_x*N|T@bFndlf>0~gje_)%%!agyP$d!MwY^Zk3FnBu@lXB?El$k>rPxj1 zn>Uu&Ds{p*N?qG6UJp4tggzq^y-kC>SM*_5e7R!k7=!an8h3qdYo=F6NRogQl^CI3 z6R7^EPz^A0>ypD9=fylHa@pVH7iVl(_9uFaz;AGkgqIBMdrYW%y)O7^z*Tc}K34G% zpcJsy0HtVs=_jFC?dFqDW)a`~^($avgX2UXMsOEn+UL~T3)0<@(RLT-GnYEsH4v>W z#{Fh-vhnF)P&(x&Y0;Vo#P66UjEhJ_q9@y9?zkH0|8#3CQ6)LVq06L@7q|DZ!3x~b zz+ud+PI$c}w8C70_ayO#=ktONxFaM}iM@}ENpJ6nDn=ljz6?hm?k$wLJ}?p>PFbv5 z&Qs-lNofpR$koMY|65pM8p4TPs9@azltJ~-1?Rour(a%O3p)uWv?EGN@r$4ifb$tl z%wtA&{8V-EHQ#a;{oxXqk$$CM(lqAOkozKP@qYTdo`SvH{1jW9hmKnU7S2yT{cQPK zpTqFvuGhW@cjeH}BEJ{wBjMqNY9HFWDq`k(qx=iJbFGoZN8|4HD`hTDoM~{f-ev2tucKYBIXD0}xDie>Q^ zdO~)4yKxy7_^E3mplD_aB&-?eI=CF%C?8i7rxoKTe%F@2AA=!~4l8V$`~BbE@b2{% zmk>*9dt4(Z-T8`?yEj9T8$!o%9;97&BfHth8V9u(CNt^O-ngeV=TL zdh22qm$R#@?~32VhOYW-4Xl`GZEaOePS5}2k)xDxmdgG9jB05mK|FC~<#!EVoIf}9=ithorexvbpV(#yNSqgT`Lb=m=oP1{rb@5xUYD12V&~7$$*Fdp>dYz4HBB!aJHcT~`NQNBs^R2GaHJ2s z9k)$1OGe;|AnW)w>_%S~GP)>jz5JOi@`PK=m0^OnMTGU{8cUH&J(yu71aLQ^sKEE_mo`7`5XTUcFjv`4MHbqM;Kgl^ny25>9> zVKRbg-KkK$Z22@(K|=uanE}irwL%2)o9e+1OZODAu=!mUyJ-vI(({39ybc z)b3|g?9;p-v}W$Ee;Qi*@=0-(fm3J9(<0FXCx{O)VXh=i0f$dQp;XNejWSbQ!24Hf zr=m|z&QMqJLd6t+Yy!I5?g_SkR2!XE+l@f|5EA>W`)0@|oDMU$!>@)P9;8>L+;3!7 zl`73NPNsb+s!zdp%N3^vl%+=iIL+$LcDunLAkIY60wOHC-=lYt=Bza*)0(J}^e;brY`&xGKU3Fr#|1+biY)q)dNmD%)Po>_HK`@dROM%O?$%SG5(IxwNgw8|rc$f>tz2t0 zDxCaeLa)>0o7Qm+M~Y0ra`AWpFW9g|y?=PPa@z{`DoW-|pgQ%o+#iK|H=MRY{~BBC2K9N7I3ER{{I&p1N=xqQdGJQ@`Zvlov65ee;&0r#h)}`nBs^M^ev5Fk7|yfqT46Z(kM}R_0mi(M#1W6{duA zWrl?G4`->npT^Iqj!C}dbYcEeW!L^zW&B-c_~zeo+-|3PU<}1P#Xcs9#XBZBPT0Mb zK0lrm;1y23n;ZH{LHa*_ffq{c+~MiK*jQL|^W!5gVPvnhy1ELe;=87p5Cu*P;EwhE zmi7HzJ_)%Mh*krt2S5dcamE#uywN<>F}G5ByiQ5*AAXo9_?}S;svMr{Z|UnVYVjM| z@VjT#R#sZf-)%3PcMJ!3nQ{pS0wUm9p58G~dSUmd7O(b~S__*#bq>`lg{4djZ!9)! z^42CcSE?F)3VsTPwa;TGb+5PXDp#Tp*L#YzLfxPvn#9wjO>+pA!H|eW@IJG&dMe`BiTfDlARTD zpO^RhbN}w|@B6*~x*rdZhu-g8m#*t|y^iN`9>;N>=iT4lufF?sl_MX7(eMb+K(0s7bOVCeDG<$~0b=3ba?2X$I{TbjgJ!zQ1n?)?j0Zih) zsPs$Nir20Q2kh)rhIQcTCvf?`HgR+FqgT$IL}ZkZQT2QOaMOSNvElNGc73ZmHL2dBe<~=Muhw^%$leHZ9XzmqO z8FEPs;)gPwT2D017nYSYb(umf1IM@KjI86a0@XM&%~Uv&nI<>fJw<8ZD8^J>+t`o+ zm=zHb8Je8LiSD|THK;S}i-nEt44b*2^Bf>WzB4;P9hnZ(Kz(6h<+i6Ni+^LZD5KrX z4cOnc>7!8G4%c4m@RXGL64T$qRqXjevWH8%P&5TbX7R8*4nV&zz-#l%u>2!ulmf0~ zfvw?D%@^ygKl>7GKYoM<+gq8%KQd1VkR}bUOZauOPR@fI z-m>IAmOo-)KSKw>%Rf=Zfe%(_n7`G=K%Ur&hTN|(=onz+THTN7Dgxw6^5G1~LEX+B0nx3++ zB9(n=u%_ncK-)X`(62|sdds0_EPH)KG zAPpQ`ZLb^@$Ah)D5HTzr$15H0tAA`RE|pEBk|o~wT|=EueDCB8F!ge9!k3fKF~PS= z7c84Gt4Iyrg`R?1VBA-zvf>D+vWk?Hh)d%CLX95iGaV)wru_YQNbA@8QFAMMCdc!v zJ6~|FN6&N|*Oh%=-+Dg^AgkSRt`w_ksZlI$S-JmI^4_IGYc~uikcpyP4$Ho->6Jh3 zKa|Tz;POr*OEq`Q*E4n#Ayve$Ugp7qx~ z_?Koi`P~6Il_g4sJs4OPxH)|^vN9-06@`(=p0KC*%g|8Fp=W428Vm*=HzpiJqRknk zc+ZAQ>nn@7+otvYw8-BDxe>}o&jRQ8nQYPy6J&^oKc_(2o>#rs-YfNB=9@jt4K7{x zP~wAvwALoI_;qO_iFFcs;xKuV;)0~*Y6~(cg{OWa2wACfB8ZZ)=`VC@|-v_ zikol0(f4GFm+u1|$f~mb=U-7`>E^eSN3(ARgk$RakPqeQ#EUG6BqOBKY?e^zs&Dms zJ<2d35QcWS(5^cPL9yL)I-cGL=T!drfP#GJo2#H_wl!)AG|U~5UH?*LfxKSqPfB;K z8pYpHa_H&IkisQ~C%?#?V?QY{!<$D%(^IEf?9lQ?`9a_Hhr%Xe>Z}9`lKBd?*Fw&{ zL~pyGo11TuxqVw(^TQ`>4!No0zW8TfN9cS|5kkWjlyCI&6|mlqHN~T3l}{fJKDY;JA)`_H1#{s*g0B(W#FHAsH4t zbckLhQYmNZ=_%xB8mWuwef{Pz)8IvdO-O4nvAK7Q+H&~Nw;1Zl$CZzMmnuK$=wb(X z7MMlfLV&BQYnW`V@ZmK|elj{dX}d0{fm&%7du?5Nn@vUyv~*n1zO85k4} zos5%qE5An?pSF=F#+spJDSZEiZA{KLX#hMgcs_DxwRIO&!yf&*(L_PjmUiO%_GDLL z2l?aY>GR_2%Jy?lkOm`fs@X$G_RPz|rA_Ci1s^-C&dd&(ynEeKf69x0s!*I5hXb#8 zH?P7cj*&r?F(N=z{(5(OcYLpMqEB3~ZK!M|y6w1lT9p`;Pt4wt8%VO>mvkiqAWv$B zMDq0o;hHYYDxX$w=^XWkN(5|CJa9gaH#V^eY#wvvCU0%zflfptje2xj+HV{`j1)q4 zT~j%0P7Q?DGj2$*5hP^Yyxu#gMXQyb#gxUE)q9kVEaFAU0-pkrMNZuX9E7`tGTjB_ zTlp5<1%R({psG64|L0oST-`0~@L|8UTL_>B2&{0uy8t&7Sp?)&?>W+D$4KD~F_L36 zPn_uT_obeAAfI@*eofa9LbqSeXdxjX;bI4cG3ke~$EedBKAO*^dO6DT_OGCRD|{k~ zMBz6xWa%{|#}#5^&$s>WfBk(io>$t2(~NwQZO~mQw_5_j$hV4T~{`!tDs(7q%-sWn6-zZLa6^9FWKli zJF&|DdB^;}h`Zsw(EzyS<`N_)6@fSM#_@U2{ckwSHSpr=4{gbaC*xqC=ReP-eExfL z{pU}P`^>#>va``1MALR;o%Upzd}W2zEGjeE9kJIo!L0p(P7G+1crXt}L%d zYF(V~)evCGa(Pf;NJu zE-vMLakx@AyyN(_7znV+nV16XeI-htq#6Y+BObpTYXa*foSvd~IU{2l%m}BroiBB^D zHe34nVSXF06R*;+Y1IKHB^Ebg(~P1!{ZRI=g_6EL^>u;=oeOJSGm7DQ!rXBRqSw&v0S%|Pe>^29zCLRGW{vCF2W{H_U(hj z-0i&Kos%=@mrtM5$o+B|4s{R}pnjUQ1rZ9QcF;)hjEeoG1Fi8^J(suj=1Hx0IA7~VQIr4gZVl?{c%+~4{a_RDVA@Vv== zT1n0&YBw-oVoh`xlY*;oJ~>^192rBwEM0^pjHs;j-sf2T>m>BT;`U+f>bsBR9pZOA zo}`iT&&z*yt^)~-?zsfThPQ&5qv0K}GT9w=lVW7~MZS?+^Q~Wv>{oq(Q;w7Fz0E@K zW995r$qgN9;q+C-Sk*W*Z($Y=qTNEbq*toJQVgh@4&c3FlCHrW=L4CXO_F1RV4 zNx`aO>GYOH6~bkC2T#`irjLw1$<`jHkL^xB6%-Z@dGm%pCH?w+3xO9-p2U@v3xcNj zs^#uqexnIzjx(gCg9i#E`~=@2J&@%ED{%=n%6EA{M2+$!olWt)5Wt@vrt^=)Ax zCIX~faCk5Sk z`<&J3N{@Kv2kg480TQR{?yDSwek-Krr$U*K_0BWlju1UJN~~GZkdZ>^rU^nZsFI>+ z0i_XKh_wsgoY5?4oW`hXu`X$l5gw1+zaX99<)JLH1%P0{>LSnX0@{C{0d5(nmS(Lg zQu0o_mR&6SA8?X3&k@#tGfJwB3>Xvq{@))0Lap1-5$P?;tk(Hdo+W}yP&u?XD3jn9 zQKd&K&nwx*RrZL{fjqFIlDoaqx%?cdz^k>Y!J*Z5g|~s{2NM$;)R0D!6r&<&rx+bRHt6Vg$WV+CMyjPLMlnqLOeNLx6Q9HgfSs(F~SA1Yld1sT3PC}o{j|HP<2JONYQ)i#<&hH86_6Eyl&eGf^;)?=gJ=mGcG%Ws6B##VK~{IViSUiL($2QNvHFaIGF?epIakvnh} zSp8h4I`~f(z&w5;|4G{yERxUY6egT(0n(bW&g`i=>-tLs*_`R&90f-TXr5<(H-@b? z@bW-k05>cH+4X7Bbf(r>_k&N!1(d$m+eaTOJ&*l?LxnJ*OhK#FC0BV>T#7Qx0&fyB z#xkflo_-G^6v~P>=pcqr7JRjuIAyo`7ERF4Rq}xqw=wOgEfr+NgE$$E;^&7uN1r^- zl^sNX=!_kcDeB07&fQ{IEY7lmz63q0CkOq9`SS`c*P=RuF-P}~MGy_3y;$YMgVnAz z*7gdn2Hk_r6^WScz6+s(o;mpG;i03>%6t648&sWOLU*Q7iH-aWsi44tS$g0dwe~Z9 zVkE_#pR~&AfFZ#O98%TO8)Wl3;#q_Qp_d$L>VMcGSMScXq9VPnn^~`3_0@gL8@}<8 zXla?OKO%L=QvHc^7DkPE2w6Zg2H_SZ#i#0 z9`HpuRWincx5dIyd~`w^c-gDzCN%r|Bq61b1sfZIzy5e7?KLKZ=Bb->;9ZdA0Q_@k}DH1G5*JQVk#jB*EG>l$}Ld)oF z@V$l^$$rUW#@iS*lI}7~*>uO}1&hjybjK%g9T-qoO=0oz7fXs}8g_wf%t#gWx`f;H zp;TiN`{JH7<4bti_liqe&rX=aq;dPs-;VMR<#R2(wY3Xr@?t`m*qD);*OcHkY4=9| zR$ecAdQwvkH9y{XovS(hqVC?9)pNr=2Zy%uo#=^f6vna32$lJ&C9>JR!D-P^SI9G%PKV`KX6f* z&^Hf1z5Nu7R3HL~)VB2}Y}svkKQLefB4~KrW;_s2UN@7)PMy4;cNR@j^4e`S@ObeJ z5Hn|IsuWcMzM{096BC1;(N8W+h;Gku)hJgOVHP}lJ6mn1Z;|bymW=+NxzJ;;DQG&f zYEIRZ$W#b@$J47GD49xHj~W;RUpc?ifJ6LBX~=oI6SYWq(totlCiJX#dmvfoJr?iQ zlf>J9`O{zY(gZTUi1ydTIqOykvAk+Q>ACbW2qlpwL=+hanmroB;cW=I3^ja6sPRqf zGI4V1j*V&m(04lLm$Q5iLLu3-m!*k;e<@TU@i)Z0R_&^rxXVkZ2@Y2cEXvYRh4abb zAg(Zp^Ektqh7 z%3irV{5+_^LjQZ6!n-&Kn-C>eHgtR|{Pejeo(<+c>>3?HZekF#w2flX-$=fv5IYj@ zpjmHDeW?uebfZ`W^8qVCbdY_*+>xF5$OP3^(S-esay41_BHZ^kB zdl&)JAqR;HC;99+i$I7Vy(EROX4>#7)b-vzKJzZizFdnIFomk&WN~MvX*=Ol)OCf9 z77M|O7`$?tb{(nmQsPNS#hpYMKU6B$;8yRDKIWy`xRyo8W-cUtH^St0=KRJQ@XvDh z4Z0+%oL^;}U}Rzi-oV;rcSwpyu}xTEsE|~-^hZ2S6$kVxySCMYD&qyfk9uvNa{foK#+PY5{jMOE(`si&&Q>byRiQ($AzCxc&kxU= z#OQJ-Ip1dHt0k$3mL~P+Njv{TgUu0_6HqbrJTT-@1GpTv}cgu@YAVTY%5rTJ1 z3VA$pQQ?<-d7o?%c!z;tNq$nZf{iT5$T9x+pCx%|5wM=1!q@AL4|7w;qZu0+k;;7( zTO}bRoK#i(=8Zs~xvZ>sSF!&6Kyv*NYi*PEkgjse$SbOj{sbFiR^`iwnMQE9w!Wx( zCurh2El3nC)-B?{Jk@0~^@rbjz3wTGs24?+-){|r#_eVVB3a^Crt@!-@&=wm`vVJa z;`yF>uV}^lNtkbLNObkP^bRKK!Q4amMzFkkbP*unAlqg4gM=0EL7LVr~mc2sj@gE_{8&(Q#Njp?)0(rrd)m3^6miMaS-ReWIsu` zOKQ|zu&ZG&J_^o8kf|=)+%3pn2|8RS-^k34DZTFd_%p(QGxA>f*(s2n0i$3#*X-t=Aqal;@#@;ztP7Y9-j(@ZbTqh)Bgr87Ip> zbclS`QC;{>M$&~wccjL}e9R9B zs#Oh=8m$!RuR`bsvoW4M1kkjzKv}gdZ@8N#f?la;`O8+Rx9K;4_t2%6s3ISQq}K&g z>7-3Ol_h8inTVW{+_J#k1oLHQ(#k)~skS-KcE{u*Da#6G4Jv&0d9FMz6r|pU6F@5h zTG24q)d4PK!~U2)>V-i6CO9V;{QaN1wzqB7{RX9jOo_fvjSs~%n&fsZ&NqyGf6eK2 z^C9X?>4$z*0`HekvF`2;=)SO-_l>zvk5;qwA$>2_JQFFb@JaC;<^ z7{S%~s29R3;mEoLitkwi1*8P?Dp1I#7D??l#nY?`|72V}%wh>pL;hfrC^xH00j*oDM>XkPpW+ z?#dhf9#(=%8E>mBvQD!04-OD;oxZYFujdiySbJbl#gT{$Omj(IctGnJ8(D;2aq=nc zl01f&x)*~g2i=l#3eiHNeo}6LrOb7H^O#` za|x7lR<(6l?T@El<4;X9C-%b1=tu*^hX=~`2WGJdUPzB^mu}Ja>?XL?%$pZdTy2Ab z8=0WKrOBC)MFQC8a{sul!?g$vgaTYoVScD)sfOST$YFi4^UXoQc zy`A1js+x4THS`DTe|iiUMub#ZdU^N1hJn)ydC!)Xu)7rHanuWMfXVBpWLatJsD6F4 zTlf>Kh^34ezr{||Pi6~;cWyk$N)27VTWeq4L}*tnKCkTL3Hyg-8mC|NKSp_juw59Y z$iUY{EFjSGQ5k37q%Bs;77J0d>*0YJrS{AUtxSwkQM$p&i_Tx#5(bNsNafj^|5`+N zBGohIGRsmw#(940frap?$@j$5kax6e3-sMUZ!06X5$nEdflr;&p?71=b=A1ok^P53 zcH@)0Pwz|GCDsI6Q4pwL1Zq|fjnqT%j=ZAheZ(~{aYoX&^QzP>qOkBXOK#jBtbfw> zUa!`$&{e)*T?Ir3J+rII_JqaOW{{WnHvZRQb(Txo>%lbZR%Fu8 z#`A>rrB5!!hQo74c#B1MwVyO9T%iRE2Iu1}#6rt_7b<@7%#X(K#sH0@Y{G9aWnkFZQ*6?6Ocj||cwQ36%7gt}pO99XF z=H^@=MuP?V&5*E4fkupu4z3xi`7jVZ2sZ`dMXLM9KSw%(!;K0EqoncFAJXBmxT~i# zX1A?{uC=G8l*#O9$lPybB!9}Ca7oXS?Y0t!@+j$59!p;Fn?GvP(taK&CTTrBmf@&Kv9__jnSI1e_a3&O$;P-OBdKDjobPI!EsItU$s&9lE<_4ROX{!$a6Nt2Z! zMT+K+h3mcVAMMVGljFxeo~Tu>UZGd70Mqi0I3Wm^5wjFXB+Kr$*esXFb&QAjplERl zX6+s$M~HZ??6NOQiFf!TS=4(_$Nd)za6kbU=@6IU!W$~xna1Z>Z{dj-vsN@1la}!4XN>*55m)%{CRI z=$(gg_D9|SWp-umx0?j$G*=Pdg&r6hdcX8!rxt8tba1-8yPffk%au|_GV{YPQTc~4 zY+R1r@w@jkH7S?md-LMNy( z2}V0b!y-$KyL0nsk`#%E-oc&98A$7o+|^=&3=?-k)}llcap4lkl@QpyFRlghF^UL6 zn8^hwAp9Kz%09w`kS82$Km|dU>;)2dex&dm5R!vpNh26SXc9{rser2#yX=1#Z(c>A ztpT8|N^d~|v`1u^t(@qXwd*|_6V%21@6QW*)5mrx3m$pmk@B$AOz2Pi$=#+CyQ2@#W12$x=VX?+}85b2L58 zgKLEUcjKLh^mt%(ns;6MjT8t0;Io-~MdM*L4r4R% z(6StCUUW>cWCJ2{_KECqy%hq}IXmVk`104UXJ8>mqnZxvKk4D(x4TW-QDDJafV+;% z{Y=V;Km%sB1KvSY3chHgt+HEr`YKRuHmk?w6F0UF!!1pd>P;)wVG9)fe&zJ901a)&JY%3P40)Pfwj@M}ZtOS#_8?Z+ za>GT|9u)M6t>JXr$@*+<@`|67o<~YE9_pSZaS4bvo(bFijliVV69~U%hV?afoL7vz zWxv&URZKwq5RvS^r)VI0C~=D-a!KrO4TWED_veM@i)mA26FYO~LaXImuZoApC}wnY zx9uK>m>OOB{+I6Dyy|}Uj(C=1HkLv}gK7zKYVB)*j0eAz7o4^Y2UJ$6Mv?&irpa$` zAh@l?Z#vcT*3{(FiQa5V9oJMK@%bqQJfHxp61r0EW8BK4BqVht3hHr?)JjZ5Yn#5yx!%L-OKD~7=adgJk6mo^@m6}dLuu5{{>rWQE=TbCl z+(|i>@%*dhRa9Jh0{UNezUiQf=-Ks>$y)xc#(?7v^5lwewIVWFnHMBj>0 zsbs-4da;1(w-*L;UH9nKcFb9!0~52fe%VcAPoSuj`P1gNWE9o3=EHTL9GPQgn41P{ zJmozVhE^pfR*{Ehd2PZHH4}H8P>e+Pz{iXmN`FM}v z&hW5-GvpQ9Ygj85>XxzeoDU%ad9T=^dxCZJ@F5QA)Q4)Sc&3buoRaAX5D1amt=OP< zG=ximsSMj$@6kU))v7_*V9KIew5Hj(7r$X2leDVus$0uB#n1eo)v1EluQ5KYr*W(q z|2Y8q#)lek)eMNcARkr6nU3uGJYck_)QLhYTKuOMx{3@LpIrLuHO;~}zYx<5BsRa` zRvYx?SlDlEY>?f}#IMaPE~h-7Q%+R4D&BGY`rR(pC;}1Rqxpea_&Na$6MZoA%t9(c zmX{qWyDy`on4#?qLS9x7W^}K2-djRDFzWHh&`|Ga)w>Z`_ zD1LDKW_A9c5YkJrsN5(Ux&O|%WA6NH?tUpnQl2Ug?n92dwjErjT%_>|Og1~^Gv*#r zUSM842q`{-&eSXcu>e#bsO$Zks3wNTPcvrb!(}L@|&HfvRZF4WF2?i^f~C0WT|Ew)j_@xE z>*bW8gT2(@>% z738|_-+h&O*Pnhumbqa3nu#jPq5})DugA6J1?XAra4z63dfxT6u-{0O7{Tqot7yc7 z{_NiXmia5_ZiP2xM_BFIVGi;AV`0A}eZP_f?*deu)9;4FgX21+nqLWEVDG<33D*k( zMbIFIN+|$RqJ%}r6)8Ld?kRQA%797-0hqe{3%P+v4w7AVFm{LuE+7{rP_{k%2x4@0 z;23}DQb-lMwQmpvnf`yz`Cv_4W>I4}+ahb~-Rr8V4u>Ldr2B`Qm7P>gDo6)@pXH#Q zeKI30UWEbW$WB>wM#feOq;F#6lvZcPLAdfTWPt6*s4$xWH$aTKlO6G4DjK4uf9y~a zq^@ctc8T$MZu+z#_u3yK>L}TPTXD#<)c?v_*7<+zSHBok%@WUeszgt8??&ERa%D^n z>n(AUzlSotS?^q!o;IffZ<(d_TZ8E}{{wC5o3dgJ9tzo#6ku>>?)VDi@@~{CC;NO% z|2G#L#s?q#1JDtWQ@=4F*^*aua>ma$QPh}~>;a*f8y+YV93$IJQ{8CBW@F2gG6g8v zHR0B}!DW|L=pX>&1-_se8nAqE2Z-+XmHt;kUc1boIi}R02_jIba%*de62s|e&?&!{ zveChyEkyF@6q_gC{Q}$mI>R5YeQ$yMFc6Y<+{DBAs@n*s;?%Rwos&ihYyw>0Tbj3n z2^gV${6p0;&DWwEdAbb^umld=3$WxaV^vZ}8%Drl0qDp1E%*bh5(#|&mt#9<>EXL< z&pVjK9)U&W%>A(@p_+;YVM)j=*MXK%8-A08$?aa@8(Ce~HickIErsi*PbJ*&RBGdH zVFgL5#ai%EN<(uX0gZ^J%hh`vlCJAxufn?8Sq$G%=6sn6<}M7OP=_V8H;*TOK7O=> z99q`zZlJosU%0U2i6Qvbcpwj1rRE4T{~;d*3QOQiI+e~98rwEP zT)L#4HRB8z3Se4laH#FQmV(ldgi4{SN+GuB`9R+ zuX6nqU(NyDD5GjO>ROms_Ae#PiQ3c|N-Y~VYbsFD-xr1OD$aY4kFVQ9pX~BX@&M}0 zAfwS{B%GVODN!iNX$vBI82XWLeaDWOpBd zg()L6gNlAMmu(#VGW+YnD;_y?`+cegNS34P@`yl0uLyNIw9#YkGSA1bIYajS#*2F; zQI(1_xpiKb_|kp_<92QO#(I>?phg+@uZi{dQ{NVkmVV<(o6Lx^dz5n@p{=x%vX-11 zf9~IwSheN5NtD%RRCX1y;7Yi?)_g`9`((3OxLxO*Y4H>oIj{ZM6!O>C^h1JeES6gd zS$%^peS?W0VqS(n6E3fUrGve^$`Jwoh$W3WP#*Dtg-VH6T|Q0_MV)?H3;_nzJr|fs z3Dr3SG@$|q%mjBw3LVuligJ6vNKe2y9$|#?9%Zs?1!K6_GhYC+sb+*~hPba@j4=eV zA{=$`K)Qs!p&szrk2T4NyQ^X^q|e}o>=&2{-DtPpt(&Mnf#eX%z0`9)d3!zcSZZWl zK3G1#73{^epUYC1c=|5JQ6y7nVQiEeQsIHGvlM9EJwajb+*Eak^Sq+ z`>8k>>0z=DaK$AEGf<)!@B8?z*U(U@TlF*e{RU)8&AQ?P+UL9L#K`;3PEw@u)gLim zE>IKlS1qbzlfsSf`E-1qObDM8NV|to$0z|F{ZkXdvJQZr)zA!Tuj&I=$UQNr^@9YNPF0hYQ2jtEn{pxxqTMypfcNHh} zLc7cl3eQ%vHqBmlgO-#If_Lvx&5YJd8#o!kU#y=`Z;+3?Z6c1TSSx{%i}XZ9qA^dP z%Ltms;BEeKG;e{=qkKkCIyl3<-Xe*MDuQow4S>fHzud$QjjYKXukSHH*HDq~v$4Cp zCR!sw^V#>^R_;2u3wXFfk0DOwx!R8V25bS3NksNrq`|;zIM>r)0;#!5MN%t8UUjB`{fVLoX zvPwyhMncmqv}M9T0$8jrxhevRV`SrfJ9Jc}76yJq+!&GfD4a)M6eeqoR@_O=**pQ? z;a9OO_fLcJTf8>c?THRDjS8UwDLw1ef*7l>d zu`U;6dZivu1B=J|V3W%IYwySY(!$@SQ_=xxlz&&%Y_%5J;bN)^NBql!gUI2=mgMjN zv~^yDBg3jLXa4wiSUVDNLmX@6o809@an@u=G~xVBbNw=_AYL=2 zJUTha;iusBJx=K3j}L2B4v1;HvJzfC5#Iew*!nj%<5{FkjzfF ze|@7|c-#J3`=@IhvzQN=dsXR)TC(ql z?$RD6=!N>cvx9CD5)cOz^~}xHtu-|78Eh3M$b{^Ink1xmegovb`=PQk!6}~@eFNT_ z3`JJio;%I&X?!^WL(g%{?`LbW@Zh-hn2!0T>Yq^o+~=Z&yd0zP&t{$~n#Jtqf03c(L{y*|cOAF-$ftEEaEd#40lR%OQo zz;SzTzj#=;TEP{CgBUCEB}K%fM>78IpntPv^x$?EV~lJ0Wgx$Jvqy`rgiescUzwpu z&HMyniOr-1`T(+uPUR5ae(8FC`jR@U!1&tL1hKs{C5eO}4 zrTH*P272?CG>{jfD&QO&Ej&EDa`EaMYHztAj24De-2#Gw>+O z^*iw@d?IPCKByrznJ_jd?j)-Ak-(vWE@(Apkv6#_voC3*9}LfWj7k-CDP=c4hS_YZ zde`eHRXVp(mPN*PJH_JG2?P0mn3Pk0F-05U8;9>c*)w7td2MftTG76Fqox;0tkHE1 zOtp=dvxg{L%UxtLmUvKHT~*|BSpL6B6!2SVme+B=+KQOB^i?2DRjlv0GGlc+6+`ga zzIP*J6g+o2DDY_IQZhHYhKBqM>Z^?dS&LuDz-R#>vSZoSi ziV!+@^BpZs@bQ*O*OFz!$#+GJ_{ng?LLrv#e$dlnWxmUqW^M9Gk&3MSYQ|~Lo&0il z`%$j$6v>MNrCoi*rZaXc1$2&BxdW4o9t&c=BY<)uT%10`{F%>-JKtyOT)nX6Ny49? zMo+;N;l1r5wTp2@#|$@x&XW);xVUu<8WkmKzjKg&cU25AwLB~gbrMOGtqic$kukrW zDt)topDGHIq+QY}Ees=}p`pPf`vE5v47Vot9o%y@wM*Sze0nwV>A;}nIZfZH zX7Vtut*XoxMLH*yN++&}c!md+;Cxs~{*S$m1uetKx0sR&OQ^;mGm`WZYAQQO&T4gr z_2RX+Jd)|)#ml4m2$?U00Yb!!pym$#S4asf>lOR5fkw~qQLp{+`rXU)-MsHfo*BL% z3<-ef$LetONNozl$+!h-8n?m89@n~}Y?oZ|;cfoNf@bqv^ngkeotWh{G*edm6tC?P8ofV4S29@*Y5vo?q>5wF4wRd;A ze1pK)i5^5tan!4KGxHTnH}rWuDscIwtBVWgD*u?>3@(J8ZdVr@98xwlt*d4`_8K6V z8|yYkKHU&MtI1-#U3rxI5Hh7>R_AhRqORrG$AsS9uyyboVg~U!#l!r|kd1z}_MktV z2CXR{m11UCS1=r^kdA@Xe=xARvx&kO>1^sR0(bX?bxGo0FSd><{FYs`Mj7uVDm97z zoc;J1RYr2ZM^@M!XZ>c)Q!p=(i_*tlyhFCAhO+$T%@?(=53&28{}}G9Mxfe^@up{e zo#+rwA-N7Jxs%V*(sq^XZZa9wT|#un4?p70#JG1GP3|zy4Kh(?;Qiz8<|%c@b5NDe zppi;t9}5S~H#>hEJ7dA46A*Olu8T2?h@#g2;^0eeJDzId_v^6oAUZmlQItQny!hfQ zyY0`DG%J{qKai_EZldM7aulp8^mF~Y${j{EO{%8b<6v##d4En`a`L0R5 z`19te^`sppZ!@Ji^5xe6(sTNP)0y4A!EmiD3=k)DQ8I5!Hsb*Z2ybW zD4_ub$7B~=nEfI^Knn6bkZ36si3VpA!2I6DSg?P<9NPJhHE(fxWTDerZ=Be;aOlmM zKrQ`tYAc>_0ZdQMMdUB7qU~w!hbzt z_-%`7Jm~ruTX@eUd>pB#$GqnJ{iAOvzG05&s$iO|pc#&38-GNjZWcH1fE7ubWH-?q zp5opSWg#bHZj1iQ;qk|w$VNGO+UT(?wMbA#RMzF-UNfB>x^|8IsiMKm`bvJoC*>q>lgI||Q zzbL6;s(#=ZS`@D87#<1EakzrFZ>gE&qPHy3cN)4ax?*<;ZL`X#YnYNo571hE|9<#o z1Cj(gRJ769^JNV>rC+Q+K?M!9gsUI+hWlNimn2-e>8iKu!ctRnj}{_VK_bSEIO9k> zKK>ea(l%fAzIsWB00vug_MzgfafBhJ-`(r+A~>cu+`qUlIzLe^TsbSo2xy6akaw`m zW-+F4>q*ui+ugccUEQQnw*~q9Zls4!E_ZYB1Wu4Ji5xn@iApw=y3}nBy=;~+Y=qRfvJC{1tgXmG4X^mc2I|q2#~Mr&oJaRQHJIqm$pkO5(5c8i|iLt&IN$ zdLt&vvNfJclp3)cq~wp+%$H}toPa;oS3Lg={?!|qaX>bUe$)^QleZdH zZ}z|1{(3;G9J&6s^}TK9;r^>c!uPzYKlJ!~xCX|ocLK~j^SwyKO+9o@_saEd@4465 zdGY&5h|(A%l3y@z#$Mv1v?E(L&X>!lD$*8v?nb8I<|5NpF(!?y=C$X8K!aV9nyvAMcE%F6y9L93%Ps#($xsCr;nCKslWu~w092s(Q zeqQ-NUFS-ThgTWa~whITCO6FHNNm&(ig;b-sd` zew(E-=Sh(y&7F-$E(gb}&BvGya}DXPpEIqRGS1F7sOwI&ThQJHOOq|Hl6p?;y6O#h zqU74(D${*>}AA{y5CKYnF|YNCqRdf|QhH${dgCx7}qv+M4E6^P`o zDCSq`qS$Wi-ul8%*P>A)(M6bCVoA3pW5r9=9Pc|47+yvtr#f1k$#Jj1JYAtnni1{c zmUw(mUa$4EO;u5of0`02h}JNkCSBMSi#7gqYf>RAb!{zIjv3dM)4J!^uTVKw3YkMo zo12BLTZf9`d9V#7XPPPY*^)3mQ&^U!7xQ?V0RL0PjUrpff#wis;Pq8N>q5j_sNNf5 zzdPFR$Sz&Fw0%6n)95aeQM3@Pp592&S~4wp>a?cUV;@$PIv8GGWASv=>gIv~o0+T3 z$?S9Wot&3E*h!t*_(1iw~bd{z)XxZjr{nEQao*#2tA`y>%1UIndDF48I za@S_SwU||V1Rc^V4mCcb8z2qgU%67;bl)~bDF&wK%DY;zgYGN)Aaaj{5Kmr|qUo8{ zaj6aCQS)&3hlx*p;S&Zbh#cLC5ZMN!{G5bQr8KQe+}AYtm^ObIOuwnZzqI^WCip7G zau2twYe9MK4Zmi1-zqkI8jY@tdaAiJ_gJ*ew}-YmUxzsW@Oz+Mm%OSEQx!~j!(d1C zjWjvt_{duKjRz^|$YM?rCJj4HTy`#ylAtFK))QRS>M4wkjkSAd2_3MRt1SDZgOSE0 za@14oM(%+-_M}?u|yS2#*lIaC@_f{<`617s zG>9C+`W@vas)O~Or#pmY_S1x#RbB^1%HS0 zKz(4cC33%`B$eHvY3y3mTx)c)qui#WZDoMvM&i0!uxU!swXCEouk1ftS4L$>PZ?BM zKoBqF>P#S_BvE|-fsUM5GRDz#%SPI*5@HZ<3oxRNo5XL6zZK9lhW-49gSL-wmNx_>u(t} z-p0u&xmA!+?wYkE`li4?%hiv$;#pnYlTT)S!qclOZ}7-R*4?5eb|%JSb<-bM{PD=~ zH6G9F0-%cOe7f#h&BL=JH`8aoWvluZQ$%1Z#*@sYj>5QeUvaVMWn*-fY05+TSIGys zfv?|=c6Oaa7DbQ{gu=-8O5s_T_*4yZzLmf1*=m=8bfWrDymypg!Wx_f&_gKm7Yj9A z0;aH2hV+O-&Hu~&E=aBoMq6oVkx2oILOtnqh1rEgUUb!gn9oPr1gysk!lgAUt2z4N ztl*tA?NFWeX%XP#$Wprmw{H8$P=YUQlnOazutei_-O};5Z>0*G?=(&q7tge=amK26 z4-K@xkB<-*x?e6*I2@z0t5fX19O$O*9HXLeU*w6h8h?f+Xa36S)RbM^Nn8)c%5DU= zig7cu*Xil0(!kC)eIFCvC35SiuB{c)#~8yM*Y>Ku=0}n|GW-7>gWxvgY&d(6 zdsXSL1OC@>9tM|H0pf5U;gcrTt^8JIdgnlNkIT(&HXtKOg56rsdCTD- z9Zm}FAwgrGU7n%Yo!5iM9h5rXlcyfaL*JV>6dG6lQH2)N{J7zdMc8ZX!x}CznR;S* z1$ppk5zQ<3#2}U!@>_GCUQEVYfnZqUUFh!wzC7sN_?;k>S1=6lPn%aDr`jXwZL=Sf z83#YQ14js)9aO^_qd~t(*Vu*SREuecHQ+}%;M+n>rUD!~-Z7bsVl3Eeg`@Yq71F%N zH0BJ?FN=TM-jA?;i<}*uco3}E>BJ~d@Z{C#Ql$mymUO8Vog=qltLr@8WEa3L-`pQZ z(LVp+<~rBHCGY)Z_`SYs?Cf^cw{q!k*h2SYZq9V#>Ema=&ourQW$yuwh5xn>--w1) z*`rAI-djjySN7g}uk00(nao0nY}p~35Ry$+_R1!Ezt>&A=l?$c_xZo?alFUjn|zD7 z@6Y`?uj@R|>%2Pk+rZ-w3s2$Bobh;2J84%HIM0uTi%aw=yq7Lfr}f8=XWlz)yFi(s zwfV+>KRdJR^fA&CV4D4Zl$vFCg_xrMP=~i?)ng9VHO5okbpI1F)DTJ5n7Au^xmBd@ z{U9y#@l%EpW~S5Qd{xeA-SRP=QtSNTb>Bw)%A#P!5sZ4hlZMI|w~P_>MXryJN^8os ze7UrYtSk~H({`9m$VeTFjB)iWr!w;=ql{L4ysRSQA4DSSOxvvnv6;@f8?#6iwN*kf za0#0?6Gp0t@j^ounl!upzpc0snig#wp3d&LI~@Npg@|nWyP~3(93ZlzJG>_=eYa!)Od0qAzqkjLfHi+Sgv9W1j(*XH#RO=yRV1e#Ha6?-txt#8_r{_+lqj4i*;I?ndQ^DZ_jf`0U{NMmlfc*)5YvYHLGe zXX_1e3vlt#r9?!xthgW>1sa9*Ye5f38~qyBtyAP#6NcDWR@Q_>4ay_${N56EJ8C#i zhTmVu#%3r=zqe>k+}zF1E|=0c@Y~zSh>DIuxl^ox5cVi&sFszfz_k+4Y|w380B8a^ zj#f!=j9`&Y_4&k%k?OIxzu!q4E+nKM(EKKKVPtrp)6)|tJ}D4Z*rcOF&qd)*SPZyQZz9QY1!3GZ|nri$Jg!J9JLg_@_^gr`YFG!k^86h*g%|$ z2U^2(OYs3uXtq;?l!52`hO)Ouo^KGv_=ItIrr4F@^W$wa2a93S7XLz)d97?(Bf%S^ zj?;COjehGI`qLhZVtPT>Fwz87*9EfV757iiiAhKpPU<{AXmG`PirEd6kT#sGGU+t> z-a+*J`V|42@Z|1#QSrWNtiE6GpRQKIU1^lx5>};EnV{fSH&Ayytt85NYEvu8`)q!Z z>~|9GjOGPX9Z^bW|2u2+go^OjS1WB#o0G!KucNl&3G-mC(8!BqN5bm{GPX%;+ZYs{=*|MC(^R znr_<(p~??_)B2ryZq`pIenk06JQv+1T48EJxrTyhVSl_SYK{`uR>6aR18GCB;g#zl z7>tRiw)OS3slWtcid_#bhq9%ER)}?mWlBg6mxCi(yW<}I4MP_f{QLLs!?_X#!}`?( zQ%GooezY7HGUTeVtDMG9-+T*i8bOtkBEwUE5T7fAZEE7;USMkdv+w7pSp7cL@ONr^ z0$f$bi$-pF)hbShU4q$+igTH<(sYJFiuv5}8gYt(p)Lb0SS!>6GS(sazhMlWMRa7; z!oQzBMXJWrlvBHPdnxj!`$d9{*RMr3=P=fT_0M9(z2`PRx)qEK4GGnYn!&G7@t*Z->HbEIYTt6fGFE7AgWBY;$qS;ZD){ieZC}_;4u`TS;rthksp>FJ5 zM9Co3PgR6HIrY9f!gkYNA^=l*#-^%$++IAW@%dPZ$*SaQxBsc_?3dNDP$6^}tLcyw zj0~jI`G*>S1W42XFd2f&o&P1GRT1P_02mosy(dD0yTSmV zq7)1;0z)XCVSk}VEh=IBquPfP3}o*C^$fJLe<4Ul0wCzAw`?k)2^8J`itL0iUFE_Z zD~{a4w+%n};T4EiDuAqIm$WY<8?od@h>K~Utsn}Z{1RVxy0oMycQVXSNO$O2&+oqd zVZk@H^Cc`*1h|040xrXsEwiXk#Qs;6+GJGPp~nRXQeiFnbz#A}tid(wc2t+OP~J}6 z^wz6MyY}e&k4;2aIbn15hvH&LM_n)=RukKg;pGsC@ zdNK?=WVaD5Awe>(B0uz_$CutJOpu-Zg9R-q7KY<$oKu~jfdM61NjE+ZFL+W;&yoHd zdD_JQ>)l<7`EWM9rs0Aus%U!dzMlcdu;5s$YJ#OYYS{xWX}GH4ZZw3uI3o(1j2B!! zgw!JIuC*4mJ4c^?yHef}`@JTlzu&)fOoq)FSZ zT|dKgi`8amZg80WUiHj-D3T`}fMA8*YN>2mZLM0Ir;|AE%F6-!H}8vJss%Z$ejNky z43pwCA%oYycNwjBm)~{$-KU>5(2RU>-@#Vci`SXE4>R=^uRDW=t%gnhNbr+Gh}Y9B zCMI#XYGb>3c}<||FCF{#GB`Mn!vB>aG10)1y=1h#OM{YJQuk7gj2N_948DAyf!Un> zk;uh!JPzfEIbP+kY)8cF*Jc!LWsdWFr9P)*0uvfPUyFDtwwREr6_)l)h0m-6v2C|x zS?3quk+tNyMH3fRFyOlN>34FHwR0!&gRn`p;a6Klepk}$Mg!rx{yNl`xk_Gvyt4WD z#MDUPF0#-^&wQ;VIu@ZSZgQ6m(Rd|1YziQiEKd@OY3SYve z6s7_iYmeK1WRdORWDU0R9kp&cn#SQW0#Vzo{?7`OK7RV)$ObxDPJMgt>+;d;01vo!0Z{Yda=5i0p!2Ibt`bU4C?olywnWeW zn1kf4o_>9JXa(pM$)c?n|BE7OT5_Ss7I_Vxosq~ZVmR!ts&t0KIF&qY({2^J$oVO1 z;IHiL{omv7laph)sy0UJ(6qfy9v$)&X-5@{>=Wgm(p2{8y*L|QNqiZvd-G)(bu6bq zzif9rY`FzLmT97w%h{2mM&Zx*!uHhw4v^0%nfNET#Spow6<}ek9lVzzu$kfonBD#k z#=&_7jzV?!b$+N$e+E&K5aYmN1L9ugzZnLGm<_l%UopD6WLeU705|w zb8u?ObW;`BPE0)&&c@kMI|;~)Rcj~xDMRov4)tM{7~q2v4P}ao_8UblXZM0h6rNAK zqIBw`42kkHtMM|B9;8#B#A*broMA7XAJ*<`QG5|PXJG_4Z&6E8u}Gq_i{rr(fldwo zi?L+&o1wXE!RZNr4{uo&Dfu_sKe^mh?EN0ctPxx;zUvzA!9@4dGwz5^;Of+5qCUR0etE=?O# zSa>%Dd26Er?-cQ`SJ)8qv|5*erKH&Vm z&rSSMRPl*)&44y1p8_CeUPaKzY$^A*Yj_*gT6>!#`N7sSTlMtcdh;u!82OlMB((MQ z-GmI3X42>D_K)5I?7tbzr?|Zlq?MD zy?G<3#P8B~Y((pacIg0c6BH$5-*EO0(}dpde5l@%XyM_`Jj1&Gg#^PaZ&#f(<%zuf z!moCwjnhgkSdIIBUyI=?kWWypLxF2r8%&7Yd;lE!kb3@Y7(iSPG<+BESYMw4$nk|^ zD4R^T%yo6yKISYxefEH>H;4@?vw{p`iFA|k-5}Eq^at{W_ZU|0IUnd1<)~%fq4`44 zKCETaJ}??qzm_SY(z>cqH&uq-$h{dH-7k|$L>MFB=O)sWbNi?#g`x9YY90agtZK>Q zc)ED2ZS`8*zwDGfx5e1IVNbi8H7{axqH1P`p#Z~M$HFlijCMyJ z3gM2YGHBCAvmSR{Yjt@;N=&;7M$4DEp)!4u&#R7sGxV-4ESh9=b-!NV1rOqgzUYCB z&w-xhh(0zOx7$p-ne7d6M#tRlE0yV`R3rHWQuA)xQ0&H>PK?{+hw=Vo!U{~1pZe|M zz;uU8^s@A~>&Je2Awd?EQHpy6&!;z{5T*D2X<1Y;^Vw} z%)zst6tnb{nq1ACdUM|sCG+`A>q}SPwpoWSnVGK>@GLf;bO;Rgy_tK%Drhy5F}bw# zOU%ueW8R6D|1%ss_R}f#8!+(;ClQ34vCjMPUrjg(>TnVr#j-FhFaw@$6W_h7CTu_d z&Hk&6tK8=F=M|6jF=tXTK40bM`ct8L?fStvDm21sv`T*(iIk)*tF|OrJN07!cHM7% z>@00m>wZFy2JOb>$9#Q+!B3tXIt}~vmK?H%*IR3RK#F9ZoOvG$gL3ahFtN zKV@4*{HraEh{#q(b+xwBr50tpRc`kS&CpRBV+kxYbDE-f4#Rp;O{3h~Bl7y{CF-kM zTF!o`q3So^kskfxm~yJzbl^9czwyXc$?Dh6c!jk9>BjzuemhLW1NBEhcTe>B>26Z; zmwOl!eIZXqC*2z?TknX5ppl@F19=YrbPj0HH$lZf zGMmU4JqTC9dG&FwTCPIclCv;;KkloTvX{c%{Xn3tR?QlRzjpj)?^E%TYH2gFayR(i zwd;#m3EH$GLMtM;f-(h6K^Sg^3|)Mb=TDi%5AOu17yVsgxHDrv2f8S2hzVNSK4Sq! zN^4WwF4xCE}4n&+O86^)V!0YMN)l$A)r+R)Sl5Kye&|k zF$3-A{j!joR*9hm9fFcX`|D)TT8Pf+ZO_*Jq0f4iEG@y^Na2TcEoo0+!d|bM(z8x) zI(&bvDp~wkAR`#M18&Hmy90R8C@lXE3kFaJl=rW%Fjzt{jswpC(SR~8C6ahTb`7g| zf7v4>8Vs{#=G+zYWW-)!@PLo#{?SxI@HFcGQ!${|_=5xl=_k+*@y0GL+{<@ODzqHWj&@Y_VH6xZ5FHnV@tMH$ zGt7$^|KlS>5x6bvtZ_5qu~0n@6nEJ0j=X#uM#{LNz6`OtOFt5mylsPDy(+&et~8~z zXa-;Ols*9%DNTnhBTb=$bph;HOO5@cgYrWvch6Z&P%DyFtzRjPx2itO`@)FZ?54J- z&|Oh&f<@70SDbI(<^UJo{f~H)bgF!YAM);`mDHMA>%1?TnJ&?yy)B1CftTnz{2vuZ zf;T3n#f*(TTzn&EC@8i@dYU4UQ}uUmlYX|5|0~h__(2~3i_Tmtd5n$d<>9e61gAs) zJZ1~>?Z=NF(Sx%<*8}72)}gVtH@Sp_L|Nd9yEjI9-!=Z8LYZv@!l={|gzc~gy=(hO zPYn$=C{F_j71O6bP6smAY+z7+C!33LD0w(RCW4qc_WqOVRa@9mnKXwgh~^xsf&JZm(G*?c1=V6x;NyV6YV!rnyO8ylmcs z*}r*U{bq>zE9{D&^@OzxCoW=V?dfg#1KtkQ~w2Sa3_3*MA%qd9bQZGbh6YM_|i z6*u^0%|K#YkxKUHL{H0d9Z`3FZv57^vJ{PXLSq(}Ci>M({{9F<;*UFWL?0#V^onhC zUgYZjneVYWe&u&`^%2!d?+=)y+Hr$Tw1|OHL714zPvi7Xh?rXm>J5L5r;1jYe(Ta| zU2;8I^egga@Hsc@?7YLo!NYC1C5YBgJRPA=>Sk(i*GoDtQre9gf^94D&Iw5j=04LkUq>cbdK&xp(a=M-cCsERm(%ChI6|mGl!i_f)pwHxWhF|h^;$4)+G|&X|h|grNs_Y8M3Fh%j(-q- z0(wO;gcq!o?FUgudqzb{ef)HJwRbn>P#XsOUe8l2G#9EdLGZ`Sj=M@^IG1%p)Eyz( zmBHIMQASp)JdZxchHZ4-!YN=9eY0cd%uk-Q8UkU!Pjio=QWLbg&B(~g#=iA%b7%7B z?xjAHaCR*$SWz%C0+pB&kY^QB?!IG?!lYg5vZ}^cG^)c>rcW8XsG>^43xORUfqV z>zG3Id;nF>m?>NEQ~sRq@v;vn-EN(H(>?`Mr$!EVKwu=nTJk;l3}ZE zoTsoi40J%L$8A>+fv~zyni4Q39Faf>>yk*__3A{AkGvaf{M+DO?TEf#P-7Q-etJ04 zN_k7#&o@SQQSYpP>C7A9^t>&*j6zzP{u?jHotp3<0R4-4$Gp-M@qr2n-GS6 z3s%vQ>u(Tt~A2mqzNerwsrSW^gyo$BhrcZmXF?%qV)U2m9C76Iv-kYFJp&c*t(j<;znEa9(Ijj?bbj^Q7cL|K=zcGu zkdimd4f8k7TDOTCYNf(h^G&HrU-A)2#1!ZJ7gB#r|0+^If1$-)SPyw^gs;hNP1iqOSr4t)tnerUjw-OgTU?t-@ivlf?#9)K@3Avckl|Lb_k0K?#OspoD@e5ZKl>$4EkQeg}kI zm5@+_ktVNDcCHH*B=jPKTbo{>p-;qzr7+PLwOUw?p_h+E0zcAp=B;H;6B{1W{z}R5 zeMtB0BO9D8X5E%2SRw+R%dL~zn&pQM?)cCh7p#JR1h$x2m!}u3(dg9dnKeJ)`1i+Qr%eM)qG*`kND{^ZFX_ ze1L*2$WUp@3Wy%q+j;BCm($Z;4|H*LF1*Owq1OnB&_W)ehDhb$M~$qEmz9?NxCCOW z`x_w^n%YfbB81~J9TcTJm8UteI7&P`i?qh!p)?jEq4BxoS#@rWM{R7|1^VYV5Zil$ zPv+AuR??gfpsR$3NwXebwhf6($v>`)xJ}5<#FV}dWn&xi$sNSS2qRd^^@kudsE3c8)TnHqcm6uW#A_CcH79UaJ(X!R+o{ zk=!cXR`~VqLWI?areQ`Tt>Y{9uWFIN1Dq9flC;YuqIdP4_so+GTg*OL56mBQcPZs~ zwDEFcaWP&C*uC)0p}Ype=8s}+!K^|eRl;GCN}eAF$gQ|$KOQ~QT*8STAS%qwL6<``5mp-% zsB!QtSXKV0SK0I(ANp+C&Ei{3l^Lt@rv!{$^s00y@ri-*f_W~|bOg97ndAOQ!l`>}3w<^w)*wfi^@BB0y>Cn|dMgp3`YCH*50zt z9dwgPT4$PYzK|oLYbuNSkd?*0WyWsfuQ(EtDg8_;){|}fo(#}N}mqWC&$hYnwNAJ`D&(tS`BmVVFR3iHh;MoJZ%nInT3TTPI z#sS(%0Ptl0zyJR}HfS?{fo$S0B?makfNZz$(_)r_mT=Z}M_xzGVe&g3CVWcI#m^3= ztsAb1w0c?4+VR`K(&j~8I!SSrjhbnRb}t+rBH}Uh4Pb&YePLHz*_00ywSU|O=65<$ zG2!+6cd7Ardr+*+>VLEf%Ot$bLAqC6w=O^5Q;&?%t%O8tGe_!Vgk*y+M@|?lspZgHr<0 zS_ubNRs11&A1?QN-RTWia}l=1Gv+SIZ?7QxB5>K`UH6hr8fOI;|Ledp8&)rUc;9cq zJbD)kgTUuS*v@;7t0J+JcSZ4+LX^BTgc1Y_u9GHXtM2sqy8S(wwaawO{G^R3oX^j-Cq! zSQL_^H)TGTpK`f`OFiSkJ68ww{243lg_ z=k~XGBfuqJFysxSsv*0FFr5^d$O9Fi_nH&OXbuyEsb;3c? z)K66qYe3-Mj3T1FCA$cTKo0y1))D2*uw5Y@+bJqS#dTB8&(DDP<}W8L2GW$)v$OVh zX`(FFo_dS`P|NjI6B`+wl~ztOO(<=YemvkUgtswjg{50q80xxvLa~p2Q0unFF#jWV zW<;3zNMaM?r;C5QG_P)~efKDWI5H9gxTc7N1YM*LtF8s50DdFVHRk!aFpnLw6= z{dF>&7=hTHK5PkZvm(jVX&qf^Dg!t^s+3{SGwX>&hs?oCwR2uHjK$Xh3i$0;`${kwV1@L$G784fAf(DSYMva<%uRD9($&pR@Dz-RTje0r-` zKtc6Je1zdJm%h(F!NtYaUniq!Bb9JOT;elu17n6u)S+$*LX>TWv`RK70%+nY=7^zrkLBI@$Ye)uZz=uFOHADk{dl9!Liv` zX<3G4X#qYXY$=bu+AnY0UhYnxp^mUcF56h^RNeJTJ?8aw+Z0`>S&AQTX8++Rep3T+ z7h(6w=+;|eAV^I0sGLS?crhtVB4HK{t=$@e|Z6jpDWSOyPXBO#PGgRRQd;i1LGN_f-)?N-+OJRFVJ+p zY^%pWu5&GzEp7|lJ@xE4cro13hrrmw$(M2Kaj!r$*=^4_n8Ti>dm zG%)iY3Jh|ZVAvj;lHu-^*bdxybZFh~gMk`ox$h+wx6bY;L7B3%T~zYP!$ zD8Gbu&IwvP;0(ds9OwC0E|k>UXB$!xM#XMI*i$b~>?uI?F?9%F2wvo8sPADq?mqZeY@vmq3ceK5}{now# zF4l9tU~pfaANhY)Z)<8ofa3J*E)O)~Yy04R3OngWT4G&R6ofC1uI5ktVCQmH*)PSz z!wY-h1%d-astve-DE^;f{50?ysxj+g-DlocSEU7rgQE%XqoonTTaUQ~X;xHKm>;CE z6^wv468=RirDRyKJ{++u|E-r3xdUStSTU%x**2Jg#oZ3uGtB|#i8JEB)1gW{=4mw=%)k0AM=>P;VnH?@KcJ1x z`_OTxcQ*_r#K^+JfE*!Pr0CullB0Zc#^_y~X174;DEHhB$s?-jVogpGac(V(hD3R( z80*NZ_MC~|9}u$=fUCrSU8ABk5*!9Cvxs&_5V%yYe>Op7VD1W-=LeS^=w<7N zDf3^#_U=2UoE-)%dyLJ{y}|K5JZLD+H~2KRE@i$fhg8p?k7c^+C)nVhL-e41>iNd# z#1N|%y+hWq4Yy$E=BB!81q;tME|P9L4mNqn6c@25OcBY1o4eZ^{S^p`JRGJe?S>ao zMwmy;40k%-v~>Ii%Y<58*+q01ZK+kzVFuUOhfreB6$wn6^rEhz&ff*DcQZTp7P1l( zlU3`J_VJ4cBO5i^ppw+Ak_qZ|Vx}a=ApU? z@CMHcza6y@#^9Ql^Now*zh-Gn{idns!RrgelqotWh!jP=i9&g$5CV||*$#Q?1cw8? zS^nT$?5Xgc4y(Rb;*U`tvfp&iclA9|52b8sVP{vbr7&X0dXE+BG;U+;i})+L)Nk_H z`+j)$gEjbvy{#`6=;jh&>1Vcn)ocK~N>%=WRja}1)uudEW8vPBAm3*arAa4-3y=+d zG|_mjjcEE=sJ+wwm?FJiSI{-)*d{meazQe-mKj*S;l?7!%%O%W z6554p9MVq~VKRf6zrv2)*g{C?^hIWm1~ANj{;2S(e+KIb5)VB~_2jx(HI20gH!m?k z?GJdaa6&NQ8CD||?6q^{AyIZ|kxW$4V~WQkAEVF+4J6cs1Z!@8@tMbvdUAm}_?ES^ zGFF}zX}b8iz?&vAeMDHfxqcO))5xu7@LtGk5!F>x)xw6!)arCE?VM*^sB%WnTQgry z98o4<8Ep9aTEGmd0pXQd;uiKld<9gq{6#jjd0?J;{FKlk*pmvMe+O(Kqf{PG)Wvjd8SWYj624_uT)Bm`x=r0McN zKij{T^4T>vLs3bx`j0aUOD$4XE(>y6S~mY+t@G+J#UwgHL*pH~+p!#V>}o^#B;>&z zza$W1Azb%Zijs_~E-#_35osJXA{7D8yIA|uoza?d+(w~83iK0`iq?5I4uQnvk859? zO2xQLy)w5X-3|-TCm5jZgVjx5Fd!Nteq5~sZ6I)zg)jG1qM_aad^-S;YW)vLffJhs z4B9XE;;ujy1k*nEF#c9Ss?a4e0VGoYkAnbaY_01nc~s!ILs?G1$yfB?{X7UcNK5eAapOdd0a_ z&`A9_$<75dK?*p?qI){F+pIkEauQCOt8TuQ-PD=bPqrv;OQS^>}6i$o6~ zkTkalcp%0Kc4(B3F|XV=t(t(g<;GNtQ_HTfzs`BVH)k_Y#*4l?XP5T-7ZttjA1K3w z*Dj^@E{y~|LGQ^A;Nh^*6gG&vcl|hsZOZg`#EO>F6i3ubvh}`C;3DACjNbL8y48l+ zeJ7^f58vx4ZuWrID_e_JxP$p`C3o3j(irET0(sO1BG9Z?^t5?ZJzl-uV9iE%+Z!95 z!klH@VV=}Ag5VcS;6>YfP6Wm~aTQF3468%z$qlD=`6m?df-nG^Y0kBN1^HXCcKIAU^FNze)V^?d^A>Yt|`y; znv09363T0e!7nsf-`xyXFa{9!QnIX%LeuH!9Lop1dCBies*iN#pG0$H+5T^o+@C;9 zr{-W6ZMiWN;T)sw9$xM_kZwWeCj+C~H?J-}d)?L{SIfYt(%b7aEWnvU zWpKlL_5WEJgb$zs*EkmcI#jAH&`-AW9Z=g(=~YT5O*r#de|9;NL(QdV)DEGT1bdZQ zh5X(}?2tc3U*qS<@qv+ni_eWT{f%qroAmVbm~cXvB!C9E^5sipM|A}};|!fRw6||L zyw_GO(PVnBXnt_l0{UeaL7G_Kcq4f9Kxm;)(U&uc;jx0TTmI*(_@C6QpC$F%@ESWf zl;l48lmJx6yO92s@e=UGk| zb?GK3WY;}HBB)E|@1i8dD2}tRnq^YpcB(CGgMlSzXq*xo}uO zTAh#s@x28l`RF1T z8l!F5riT(tDVl$7)b{oFS7&TA1W4|5$q8?^y>$eA90Q*wcQh1j9$F7*^RBN@djQ?} zP%zIMK60}ikg0y7m~Wn+9gE*DC~D3=>J+8`>{ggGHKh=r6Zi$W`3heZIo<){lkvbq zLY)ZaQhQ66$$AaedQ!sL>E?n?%zX-uwz|G{yX*`swxORb?OjUEP3g8BREXt|W`HP> znkqrCA^~%$ide832G+yeI{v?VIpnhkO`H+DqsYt&@%~q@2>$EbN`asZ+*3IQu6jY@ zzgjjGR)DhInZYMQUxCAP4-Do1IUWD)k6J$*{rzeoh9)isB)S!~=?w5` zdCx_%klq4XN*ZfkB=3uKc;)gdzSVlnYKqSaF8OcZ3WPfnwuU}itArh_iYbCL)qejk zH80VIdBV;bF-d>VsZIHE_P#VY-T*{n-0`+$(Pi-998Bjm75kZcgJzitaZ+d9u#eLqz~_*=#Oj zd6@>M3twb#mEs=pHDOgD(X+qaz*iO-4g=pZ2kbUOA6ddDwDvpfkpFO8)5ei`cZ=H}mWNotYiD2(zHMo-A;e@*33JPd{jzuV}Rr z;T!F1a$iKf4rRUjRMglQuH;qLf<<@@3B1U$!g-Vh4hC>;7g!iR!X?u6!A=aEX=GZ&YgL_TiNxb%(6k1J< zo)pxMuqf&&l@xCV(&4iPOGY7RLKNhT)*-Gd#DKIl2{_@>& zyF%8)?-vkN32*5n4;g5TGY`5*{A>R@hoPKFU6%CQeN8TaS}?4ovMn@Nq+%q+z<>v6 zaKrK~0*G75wXfd7cX449&Bmb`AAHf;{+VwLi8~+N={;?B+|0mCEGB$C&(6(#;{CM`!LzfoVMMM)yik1oYj)$$S;L`ZGKu}T2z&s8uR3RNP~zz`s$0!qcZD{s z|2IB-gQ`AL;D)rYlp!lyUMoHG_i%Q0Yd&X7+4HHI(IUCucGhVMVx^PIWBUCM^v=r4 zZU^?UYp0Kl7z&z!iu#b3M;0EA;!VqSJy7nO(;iWp?2yiFzsVBt=1<4VQUpT1xIz2r7o7+g_CnHm&|`tE5f39!!C4mux6rn)q5c8~ zOkKc--H50|Ye8ckkchci82CCDs9-ou*;Z>}#BGZ6!4#VaJsVdWX&AkNSdaYYT(_ZC zYa|_F_3#Ogg}r@yuiwRPM(?g?{n%)c4)Z23|2gxRU^zs?sYvAJ8SlHnN>b42JB+DC zmTLk8e?bwA`nMa`j{=)>7)2eFp=L(H(!V*$@8BSy0t4BrV5>ET+Js2m`jd~Uivd6t z=+qv3JjJMD>*}!&lWLpa1~{5_zqst=@a^t99}Ud7)fFE8#djsc#&56CcC^NsE`ex^ zYOnTdwfLHL@?dr))9=wb65tXW`=<;ge}A>d#4>ODz3GbuQ>6$5GDYBSqQpc(vEf>e zug?1;o`knfG%^bZ*vK(axR>9H?(U)vj>l(LB5u}fYv;-BBD}-yTxnwe!61I~y)@bE zIJ!7Ld=yRa%Kce}Oi}OhptrArS-(PsfYZV?a-8=36QwT9x_`zj@E;%tv@5y`ym90!2E52BXEjn%uOw_~6($xo*|xQqK%``_+!=$KnILVRr*8;HSwh)0 z8cu5YVLQ}3+&s3OiH$XcM5cw`gni;iD{LZM2F8bF7`I`%79}(GJKA5|VvrEbYk-z4 zCQIkI8aQg$^z32t>qvo{&kcOgH{mId)wOrp&);i^KO19`AU^t8m2PjX{9G78Jy&h5 znm|O<_oYbY;5{TQd^Bn!%<4!xWyDxqw!#Bo0&?*d3BBlH-_wn=_edClStX#EVTzRz ztcW34U`K>pg6LF67;6HXNZy}^o?#t86Q;jF&Md_M_JIHJ|L|ACJ57|{$8NX?G8y?- z5kkjh0(@kj7>qcnbb^AWPyaww56H@6WLfn5{38zlQm&;)RsxJ-=&ro8P|?9j$A!h&L;mf5 z%ViAPhAW7SOFT+$S5lnnD9>>Bu-=t4qn+t#pfKYzX znu{Q0pckAp>FG5+(ux@R@2GwC0y1?>Zl5A2{Qr?w@4v>_+O8mS z6zQgm@!af9!w*8w?c~tWK|`S-pc@L1CF1+^7?>-QKyo7}cR$mHvoBFyK?88)9JGZr z9+Zx-q{T&sPOnTQc2}3r>`#H1Gzs4?LvEau?A7hOI6rMJvw4;TId9TQQEaRj)Pec^ zzo}Vu86QY9A%i}9t4@*zfS9(bU~Eup8|Z_3d4;YbHsepJ2D89nDL6aEydX#SW&3<5 zZA#`|7+5Q(w|ZrM#wEiZ03fJ`wF0E)9r$NJ-$)SalCKeTS_oNpw8YzYgJd#;fBos0 zjF%JmKTEz4BYIE!2c7Ac`AqFLKW8K^WGnOrnruuYM(QB0B4c%?YS{r-R4TsYJ3Nr+B6Z7V7_OrEX6b$@GPl!NgO6a3FmuDpI z#vIgn&cpI?I+)i`-Gie?822AZNDN@Im!VpDo>=rBj{UI5ML=0K+HfA}L_AW4m3g=ogH6=M;)LFnnrbYJd3boX}N}jP)+uKFUxZ@prvrf$?%X~4lWFO@Tewk0^HPKO7VI;=E;bKzyrW4HS*v!a+6 zuK`y2B~OB}lS`Kq?adWz?Weymn-{I2d=P{Ua7dXe0CJ6g1yH(^1YbuJ166X=j4W29 z5e`36%{)|GliW)5vfv@IC~Sp++^xg6F0Ad2Wter=V5^R3Xm|hvFrTQT>R^}>5?L}% zPU;uQcwz%dA(um&MSDka&r`Da6gcee=d9>rZHs<5;f07eZAB5@FPQ4Wtg{vN)^qG$cjXdpOzR!<; z)#wrr+J6m-R+1L4F5GV=-i*)U1<_uO%k%qqp&%fQNZI8M_CM#{4zu6AwW!0XKiGABb?Ih% z$I0OX`zix^GOxIIl0P|~K@J(u%H(4t8tu2{4{O16C|*nE52yA=ALl|7;3@>+V(cI* zLUWijYgZT-qHLntV_9UET?EUe;;f)gfsN!oK0XMY*9x0Z?baqFTEJQUNhN_1d6W4MX!P?!97;QVCxgDKB%L%LDZOTlteu9z* zXNTYSj32m@X0J_9EcZRjUz~#b2RSNyC=mOh>o+M)%b^kpIXQq6gVy6uG@NO=&}4t+ zHPR#meSxjv$Vih8rSsfQ8u=(^`-HTcJIsF7PlrNM<0lSfp*=EC1M=d)I3TH=%#!>D z*t)W$Po@2DxEi`ftZi*^xm6pMH1pmLDZc5DuLO@FWCG3bySeJqlQ8k8%6$WWVTL!{ z@xFD;whlBQG3IzZLM_HBo&VLlKel(!=?gu;y7>q=PyeB%L|~OiCk-| zPVn&t1VGhqqfc3lg+Ux%e0o(|Y@$4;CtJXXINlq%*`RFf;mwD`@6s-b&B|-XC+UU0 zUiMB+v{gE0AE)|-ahi5!XqK4>DJ__deealeAy-P^qA8+qik`Q_JPRT>^XO2BaicWpB{S&(u);G*`8-eD!9f28H*r=H;PB>fv$DO`gOL?}-agq@OTIczy?p z5J?DWfpyi21uocty|||vhH)uYYk7MC$tE&A&zF0$%7zB1Z_9xX=dGwWtyGy2pg1a` zWcl$c1Y)|l&|oKO#9`|v`KAxwtN2$z`pIf{r3ktWi!T~5BZZQ7B3eR4Pdld#MwFiz z?tH8N$j3 z|MNcmxjxKGfwczvV*O`cTF){gZLwj0_rpAuu*aSp83+Rn>q~i3Qo+7a_YxC~4%tT^ zpKS~4b0J$eER03#nrD05wD~m9$Wn$;T@j~0MdisE%o}B&9T-0kAY6gq;=-Kp|aR{Mwv?4`SRH^ zbStl1lq@MzT1g%xxWou%#>U-CQ4y4;8^#zOkU7qk@_lXk_$E#isa1`I=-yic+;ci^ z-l`9!nj$!-3ev6Wjh7+~)r>|LC;I{Ir~4GFixjbwI0>fZMd3<%tmHTaKg-A#m%5!T ztX7Lwv>rlu^~2-p0r7psN61W66)$4boN-v=@;4A7?mrr)3kY9-U@AEGfc-n9(!rG1 z4Tv*b0%%-8@`I3fhybdPI2;eVtgU&SoNfI3Zgz4ig^g@3#j2L04IGKp^6U&{U zY5%_eoQePbNo_f@SKD%~iHyoGPJg~TN==6AQhO~_Ue`I7L~+~NGhaxy9wH@Q1|)!O1pu%XIG zERlq+?f}|5mHnegvgML5N9nV>5I+BDZEj}fL$+T!eHctnZ66P$_5wYl6k+N>{z{Az zk-E&ZG(Q4?hs7hOk4}5=17M12Vxvf-7*nQwd6z;qIXA6kd>nOi>YRAzC@#I)kXBAk zSwk!7AvdX*`pDR)={O-b)@G}X;dRwtKV7k~S_~a`BwFW{rK#sMG!ui`Vt$&CiI_al zs!baf67O_o)5nd~7d}%v$Q!HL;$B)Fbl#A5!rl_8i5#ig>JeBve_T~wXZvuiOLav* zdTf4X^`s@>Thq|+{Qib**<(HC_$Il2>vxljpK20>>hU{woZ{G%llv!q(wXavtwSle zN0zvy{~9+)KU$b7tH1r>_3U+fe2{sAlw$xTy&^t{3958@zKs-Mb(t#S7QhL5IOCz` z{HOX>&S2>7a<6$}yLs7{BNUi=OSj6smspW7@a5;$A<=M&q9?ZO9kHW(B@5^?oQZLV zFb~S{-k%8_^24BpEW6Iy!VcTC06PdU@0$FfCLIMj6%rX**7jEwpUMDs3~w0-+>(5z zZq#l^5#4P%GBS^R7=<4MEiP(KejD!Yu7?hUtjzvQWQ_mV-r{#h;@M=i^L0M^)GiNZ zhMR^J2S$doJLhC{-O&riftulqr6ff^MHc6ffCzREG%n*ZJf z)!)LYel>QZ@OvW7{zHG4?KK;PWbycrrlFx{`W08x#hX!HKP;k%xmR}!q_?g`rE?bG zGH*(9Y`Fs$(ev|Gn*rh=}@$d^UCQ=k5^S82QDaJy$bSQ*g>M zcYPl*jcUKIZ~s_I%7yF)1oXXZF$~GL7Hrt$sMDFGBPa7Hb(yc;E==kpoI$64!Z)eb z(w!o&=l@uF2OIW{jHs8qcB|HL;3o(84fezR{N}d%3$Z4Lds+<3GGx`h=U6qhY)w`h z=q(P&8x;;#+xPFxa3=Y!^?95-BSYtYEM1hUptAisy}e7swX-myK~4cw@*xQDrwOlkexG%~H<8T=hO}&MQq@9q;Di<)dalZ(*LZ$6 zk&UPR?YrDV^N8wW7Job=6I1!S6p_$_1HKZstpbGq;^MD&7Uz{48fWu7ziJ$@!}*Hh zpUWc_f(}NCgSV%r4`-_{_tg2%)Gxhyd?%PA-M{TLesH`RSbVXqPtg1Pa1(WWT+m=L z5w_Q8ITM}Rb5|5jSKfJi;uoy@WTUs{|03)?z`5+-|6w~BQG^hZJ+k+TkS!~l?7hhz zDTI(&cJ?NFlY}IRvRAS~lD+w#m;3&Hf5-D2zvuZM-N&svw2H(`C8}sjHg>f zXp6)T)CXUe2h6z-)r%5P-lZ$#wSXq7u))5_U7eSF*uTG&S9E}MM|7BkV1(Pu%#4hJ zq7zUgs6+Z0`fDv4rGDBxqiXr(RGHjif7N&N#`_&I1q9}%(+w^BUzB~`USi<%ute$* zS$tzYelQOyfdH@jJIl3uY$Q{0xYg=KO%W+?6|Nl%AaCz`JlaZ;(uKr-Y}F^? zrv`E65J1X9o0jt$!&GQ$4{fzoZ{+?6z=5EMlu3I3%2>a%TNL&1K*Q_mnjJ#&6t))o znwI<6`fR)L-p{GM?r)@$^YL%qxrU8Vyeg2>6?@w_`ktf&YK$1(?$MUqnbeRnEg|+h z7{kHHY%!j;Kee$BhvFxH48(5sxS4O(3f8h@EQ72Uu$(ROHquY=zeek?u2ipWdbuB? z%5&nOSByr&Pwop4SiHODc`s^wJf8k0QkBXLk8doi_ zmdhhl$y+thE~gyFNr^<<%f%{}X``8`9=Ld)qw?i+`h}lKJ;i40TT-?MM-sf2nEQb- z3;>|U^yHA;l>?R7{vZ0raWjUY4~+?u&o(zV<$ePL&YGB!umSw!EYDr3Fm@NS!)XZ_QXW= z6B9wUI|0wV{BYo%g=6Ba&JfXfl;o3`kv~?-u8DY-iE#zVCqL)vU4K9z)3?`|?bs;K z=|=y~rx#yEO>|7XDhty1u2uBR_Ad(<-iQ4DP-7TefIO%NV~v* zthPzGLQz$i60va`_A)SY4pgy0zeQ)r>Eynf#8Rm6wTc%B~ zei&~Bnt~GN=N7sbHTgAD1Oz%V%EuNVE@rJrPsMOp;5M-QbaMR;;$Y6f#z2FAs+P*N z9H#^sjraBRjk~9tsagLpUdKgSS$IBtbie=xfcTuWi}#Q+G~|9$6J>HljQcXN@B?4_6xh9g zMXNO#+-Yoh%&PWD>Q<743)ptS0|^<8T4Hyu-#R`Gzz%+?ZD*{^HlO#4FU_G&oBb?K zS7~c6x&Z$sg>t!etyj~-gQ&9RiF-_}K0Bo&yC$qJqs@|^*~Z+%AJXVXXpWVl9;i)a z8E8W?pCMgan@#!^oL1(*aO`}yH1Y7DLfV_=%zjIBP_TmPtD|6aO=}oi;osRwM_>P4 zn}5OJ_k?3H-Se~9Vi$Y*gCm0W`wJ5ulsc<%KDWzLVWTl2 zwfH)ViQ{og<7FsCpIjYL-X_7J`xc4ad>p|k&+FOesd#gY2&T)4!#c)6H*V; zjo>tb$KIXe-J}vIw2JzvAK!eb@@eVvH+cn&yTbBUhvbp)J^ZM0zrB{jIDqUdLio}8g0R*#d$Hyu5uxzX9e&FJP0zmj&%{HD24>) zF}K3S13^55?Ln=157JM(iwjCCmIo^Lu6qd8R12dpOvDKQ`9;O1thti6YT>Rry#b-% z|NHa1WD%-rehR>ODLm~r?@oX%GyffkQFz*cb-FE9}jleeUDbzD`DuO10~(A zg3h{nS5B`l?dI43JCu$PU*oy;o2v5#_{~*& z@qU)2BSu>1ZO*1zdvozikCOue6#{~+l4#)&t!iHh-a$0O#b{C_FUGj zr=^bHcnD+UaC^DLL8nB)Y2($?y9y5`sjlD_Tc#?&+3|6sh?gso!3WSq;QOE4rCB4h zX@-`QjRcahLGC}|*H0GuWO6-}DFPmA3m#4n=Qr}p5)D=*XFitn4F)U zjBJFG3pkxs<(eUnJLDkV(;n6J&VD8LVRLs>LdMKYASI<~aB7P667J_EOQ8o3{!`Ln z4z3EuhGJh#uixDQn!f= zCTw%nu?y5a%2~Cezn9+jP#s7Vr_o(E`4wuR3u8<4ylZe7Jns=50PDeGyoI&me#?@} z@qgv$)VChFSLS*oxSFjxduj4Ka;P2$z8c>SFVuwaN*MGo3(u0xu`@ZCUxtsY{d(MN zk-oTp>{g?{q?4vn@F(}#HFe2&_j1?wE@?mgEI>xc6}!0W<8gfodIO>4ypV4z0HE_H8WwZU(7IVtOb3?k0dZ#Z*M{<-O+WZjec3He$!tW+T>COW4>Y8_I?KyzZP(bbdwmWe@2eqd5X34wf#i8xQ`P+*idgh122y_)5b=etc zHD-|^8BV6AXrPT+aWBrugyjWrxEaD+rD>>|XgcSfC3LHZ>v_$`Pjcdp0CT`4NMV3UpaSsbbpZDlk?U|Po+`ati#uIHam;{+&dN$ZdF zCS4jfhSPdbf_!KD=Vr=;y3D=_J<}G0Hj>?Ix3<@OD^Hyn73GyeUbiyCw+Ad1IIoqM zRn{85eEAkptJ5_y4ChvLe%&?ME%QO^?=Lsq%C1Fraf*t*fakhmRR4jB7A`x_yk`>W zr((tz>MCxNr1iR+sp-=ehP(@fPQ^lOu-stV%IuZhRfq@OODz;?zv^ zp|#4~lu#Ib1q_+BZtl;uA5ErNMxy*(-*x)Sv2jk|w|jgZexHCkX`!+>e1}{?Sfgyk zl$ZQ#@k;KA0siL2R8+*tBw5T3i2@1R1VKCR6Q2 zE^INOoa&AL28C-P8Gvg@#;fM7ml@puV0jP|TQmWFtdX3G3NRJ}tPLZj1*O_z))^MG zC>8+Q0j`G#+mT4XGJxnnH-TMSSb*}*lH1Dr+jrUxJp#=xwz?^h$rtI0X`x(iHKN$P z8vBS03veWr0-j|7UXn;8_!k6qR1|Ou?D}k zT_FKEpD$a-w>miSKp*{2E+Ept{0A*YPDue4y8L~NF1NFpSoYFB?l>Sk#ONA(k8?HXwn2+s)&Ag?T*xZ#3IRvDbu^rW^6Y*7Qc~ z0=ZFyQ738h6>WFQ!G$Kv0epa@rl(0WFa~b4_alKPHzb1n zVT0j3JuX|)UzWEQ?Wu3x99DXv2vGDmokmn`EoNyMI~lq0Ei$fOY?q3N#}KTP0^I~4 zmkD)dFQxn`vystx>@ZAk*PIX#2LNtKgB=mC3pU3~1W5VcZV|P)E^}2(OblhHSF#oV zL|P5_8c7;Ll)ft0ziq_$+pbBImEV@EC^Y!o2 z8a{!*R*Gf}_2cJ0$^wUKQFq#CMW&?ZJ|+xHkI1e-<+=uCA26x@%XF}wbF6;DJ$hwO zwsTzir;A3L4$BkLKmH;0o}y8i{N@5qiD;J|+QAMC@id)8A|CZO*_E4bTH4JYr1mD~ zVbk{3mOhfBYdl29u9fC(jMg??mHiYIHO)7f&`|Tb1=Q2F%eZBC+ZaC7V)s=6+=#GM z&C|M)kBfBqQ83U@VFSmZz%bBxki+w&5o=V)UK)x-&oi;n0i z;Kj`b(>Dy@_>2?TgG?s@?I%Ww`UQgNU#i5ryUoM;E&Eb%3tJ)Chmkdzi9RdWED`!& zUHOD4h?fP~bzg7gU7Db*Tc`e?^ZaX<#D}(-YuXrHg_gHb(kQ7pW zelU~YcXbb!2C&mv=Rvxvm{U^9Z2=qcFIKY>C@)o1?Aada7@QCSCYMvRLL)4qdixsJ zNQ*sfa7pbn4fR|n*9UzMq}A9VtsgWg-B z7(4P2Ddsy`@~f+HrYs?az0WA041RYfgo~xy>zk*Oq4}XLITpwI1r4^8pRu+0?C9tS24&s>@D)I42XrlX$zC(9$6VQJ>u%bq zP8F*29j%y@XC>`jUkq1diuc=6JIg4}Lw#qNDZZe+n{LK^q__8G#vn$&{_MGz!MNPk zIQ2Q^>RSC=#}qNSr-!LN(NhPJq0yHcqYs_eBhT}_44{eI`{REd<>2=Hw&zBTTftk! zzWxoU2dICGG;vy6wcj6JVe0XmoZqyMkXZnQ@|?5ItBeQw1`WE&X=xDO336uoes7ov zhC`JAjk!87x^Xwt!m5|5LWj<6(ipH( z0SgRrT5KO3S#sM`>vM2&RGMKC7hK8Z-g@?nuJfe|ZMrm)fhz>Qtl`3974_V)lPTB( zf+6`}isVYzq9tWE6G=@#zRRWCYgfXNlAZc>!+9gA>8ubV@#6sV@KE>sghv_#65_*r zwW}ig=ET6|zw0oH-oqdaa})4NP^@6wak)VHko6S^X9SVuu*?F&qprg21+@yk3@KUv z*KhK9akW#Arj-P-eJqHXmt5Wz_zK_m^CI#P*|ni1_|H@pilBVl?=8P-IPr^z1nQje zpGRxGH?k@kJJy2AmseyVX7MZ|gVq0T)kNo4{JttenX8mNi@)M}d*u;eiEjcntp(G3 zY;WXGEn_Hmh?SFeX&KI~-|v$|NgG1UxZxk-Rx9~a@dMgt-_ATDll_wicNLt!zs1Zx zw9Bq}xHnJ3DMcuww#TMM5xF3r!zi0A%}XA_6tUI#>2i-tLE(f5OhM$X)M?ql;nim|-cSwYnb=`hP z7e|TVZLhiE7d!!g_Y$vhpm2)#UaNe)_Y6#JCXnZO1?LyD=C8H2rvO0#5JiLiYh?xX zrOK6~(*Q#vZ)PT#HWqWAz-O2uU~}JHV`JkPH+vXn;Wi)y4&u3NPSv3u`&DcVm;?Rd z(YS1(o&wN?Fj33fw;=oI!kmq49e}qSGf*PxC!7J{(mytdNn;X?(331GA!ry*c#;IR zI|6_eb{_dq;^W`6cJSBrXxCwTUeSKWoSz>JamREpRV>jtyn1EjibnNs|B!S1$9?3q ztgHtG#nP>M)ht7I;y5)i}W_m^J?a+Q6;hX{dx0eoqgCb(-T z`p+L+RVl&_C+<9c$sq;`U#lxtj0dpk7{Z*b2cQuBXi zOdB$`>lI}5WOz#sXNJr^zU`E}$?qIn0{z9Jq3DP?`uLCs(~t#JbYO4B4@Pa* zyRz<4zp36Xqio%VnP%gUXwd9L)8<~ZO8;cR=jww5Z)C9PW~{sCH8YjqQNA`h@CZOM z2Zx@jKj$AFGcE7w-J^i?7vIA5%qzVTyV373vwJ$=5z!{@;cpxzRLUbl^7Sm9>aPNLx@q zg&6?W`>a>DQS|^h&bvS8ix2&KFwG-J$1e~17287a^lIwr=6~UG*vwp!I3E@CdaK>$ z;ZBLt`8#yHw4FvG;9SJ-Z1()>?6ZKd9}<~e%b6#)X-ChlZyryCCXKdVHnFtC8T{oy zckNUAp$GD7kKbo!Z77 z4LDDNGGzJ{o@YZ6b3YO7$gyaBN+tWtFJV*?0WG;gPSNv7rsDAW;TF?yP*F)wqh+(H z<5z6{_!|;VJ}F8L0zV3!CS3FD6rg8bn6<%$fO-K7E8-#fqp?-tq6EMfL*3)Vk)dq@ zdnLC_rVL`Lw%s6Zj)(tC6&ujMVD@B+Xz)Aa1|jyGOF3KK8g;v|eh0`cto+V;B}l&8 z5866N+S!Q+3txGYGk-Vf&V<)weFa5X*}Ap8rt!S`AJK>jyXGqHNC2LH@&|$R5N#27 zt|Brfi2~~XPIQnAM)_~O)8vAth2TH+4!L-+KoBk-@KmroFyNw<`Dc>{%cTo}1;CRa zQQi6P6bMtE5EQ#^$9hup=gT0EI6iXXFKm~b```Xv1bHkbvsF`V9X}wpXK?GH8eo!` z9n@XFrFk8M7?XZ3~DzEGEXF*Ty-rZc< zKfZ;H1~Z3b3`Yd5VD!DfKnWiopLd*iAc};5rQ&)zlyQCaCV3-2y;Cfh3WFs*IJyQ0 z)pVWYjtTJbR|4+9sqO76E?1$J6~F@Vm>dvj*Ug# z3p=}vKtljI|N7;Heu=>7UB^?>zrU-g-vH;pmh^ad9$`*j=V8Kaq_@5Ilb_XS%2I15 zTo<}=7z_(5>a(l2Yu@KrR|CkD^&rrQS~>i4WAyMu>h8%*eAGHoM2|UD>dGxr1K%Le zheQ5)beYLZmKIJa{V%?6m{zVcwT*c+WVhZ3wj=mEzQ5{bpITP&W?;bbcA|oJenHH4 zBOc-lz;faHb)QFoGS+G0q<&)NCB%LNOG1{<XPxz>s`lp=;3Qcf-xitqJ#LkbCysvcHgVi+tMA@yhZ* zW)JYl(EJiR!EOaIYU-Y;DM|>vr~J-&EOJ~s|t zh!iw}0KwpOz9}fU1PMjhArS-q^>uA8pzt@9i|y_{{5^flqVo{6MY@M)CE*q=#I2!U zkM2#!^nD-B8K@!xqNOTA4oG?6O?#gARL7@5wG{~CuJ%$%^EqX`p6_P(I-z*w z&G)lwY)ZO%DevLPhg_MfFt_)zIG+55omkhJLygNs9fM~Fv+PNjH@|EJm$t(5Aau35 zB`w3wzoxjX58ENT*8_fheo+pnfu4khM&m>m3)96Hv45LB4;xE-Q#-J=g@=rgQ~Us} zi?ku$C3j(b`XBV4>dc^d5?T%bTm0&#c^1jNkE3_n%FD}1FkY;B zT11k5M3q}}7UQC!_sYVRd?Z|A1jfq*PSX_@xG0zA#UU z$QdzGDkc0*0?pvF5y$J}ZnPzP9p+Mlr2O%{3+O+vg4$0fr`yt@9d7@B{W4pu%q$>X!pm&(>QUXqF>d&KRDS>N8r}iyiNWr*gSt9RA3(_RS(dd z>5V2c&ONTsAPU{SP1CHCBQg?6Xm~hP|%9dw(+r<|fy^HAPqJ)aBIH-u!(= zJ&zEJIUFs|o(B359}|d%MHe)G-E`N!sD{T0H<3T0me_ygyyyIAAB3!Kk2}L48eqgj z7nrGXj_*TdFe8d5WGdd;TV<;04@e) z3pp{{+dyP5Ni5S~P@dhw^&OsZ%rblekcw}5f4hf}M+`(`QTr7YJy(H1>QPozy+?@A zxlv1l4Fwm%9ASCvH{UNXrR?nNm>=eRFy&HGQ85J?GoYN}_%>)NQpXhqdLt{^+l@zX zDF%sHVFrLr7%-IY98!{#59QfKtQ-Q8Wl}xv+Rcb4R)c^@QB=f*NY5*o16E#V41-V& z;fN`wdVF_+VEtv+e`VS zZiejvSS2Of)^;LE9_ zlQYb^#1QZCMO|Q?Rp3GoVdmo_%!new&(Dy$3~PaeUJ`~&LohKHH@CWTY%qWmId7I? zjViQX@7w|c8I9C7ca(LJkehw1}BnnA_ zW+gqnz$3;Gsh?6=0Uu0{@FIDhqCB*78rk;U7<53n%bWZ_lwo^J34Is=1Gk^{mJtg+ zuq{_0RzZfMWAXB)Y0EX%U)$B=|H6PFGWe`Ym3l1K!XJ5gk+HM0g9udHHH-2xHfWLB zXE{h?;EaS>E_%M|8m3PqVHAxGc9I3|kfwNMg{|@nU+6<>>+DvTnx~Ck@+Z!`YHSn| z`e76av$pP}ya1oS$qo-ft!6A+uxEwAFexOIz2gM~)$5FmZXi|N>X_-da`#n_kR{}B z-@{oeRD#{Nv0q{vu(JES%d`nsojaB{F88pzyBh*h@N9DZz=VgHbbSk}Vtx~0_8UCb z&>M9*JDt7$G{!ut&Rcds^p7$Xw`$J5ekFU|2!wv&lJW_Q2e3{ zHTC^kyC=Ft+Ba)yGa7XPbUUrV#_1NOHcs7j$pk_t@z&aggIl1kNIQ1mPc64ADqW#l=5g~YkY zq_fyQPthSKj}&ez>Wyes9pC(%DY*GN<{Yi8EO8k9q21%s*%mjBwi9Y`Kcb`bRW5iC ztepaHFQ54d-4%PSl+T4?Qc_D5{BCL5*dZ%S4I*Pk&I12#B0x!1N2{Pw03|$+9tejcD?g-;67n6MwD5)s!qkqp7-T(Bj}K z=n0dTHKj4J4wn`n(58Ggv9P?U&(ZVpNRbsf2RX(YPu;J@UWP&N9{xx=X&R7swG%$3 z8&B?{z(`?lU;0+y7_4KEmX8CW!vB;o820{I`^%DB z;0_^TH2*Dnv{2~~lJEciEg9Bgix9`eUy3=j#_`GIkG9SKR5%1e#aUrahl~9DqQn(* zKkzHw@>%WAf7~+i_2J+7q^JJ^#kK@FrBF|8fYxJZd!5s2#DR=qSZYI7d3&T+F;KsK z`&M7PfXASg_o1D9rf^44K2v6PUgGtM*ZCO063OUsz|S;Rb66Xy0c zh-Kcg!CpHxxVbRUo}}!i4MqZNm-f9*7M^iL)(VHEMcK=Nrv!4oT_C-(SSJPj8s6&h zjfgH&7(M>K`e|=U5+Yd0i3PP2P%yw6_gsIktaQLWLHQ$jp!qJkX}oW1Yh`22`&w^H zA)cyw>l84$&{j*jz}KqD_jFIM{qgV$SWf@#pt@dpm-Mp65c2wR=C2o6A(> zS-X>;Lgn&%Swvhu-!1fc!1%-NnpM@(w@iQP9)z1O!HXIljGeTjj|alp*=AilXh&3G zYhB+62x|~9FW)4}QUNaORrV;anAJa>^pwuKhqsfJ9L|Eo5uf#UCXW!R*9!EXQp>Qa zK64-nJZT!jcOO1TkC@3>)*=%JqcVu>0hkV^Nyz*7ZqfC+`-~3TL-#lBnmaoNm8nXf zB%cAur@W9Z5l96qi8GW|WrUX?&EtolBM)OSN-nxCNHCSYKkc9aY7l`qWi*z7zB)TY zqT&zv`T0YUnGeKoCS)LbBg) z-2pY66A%f(j-#FZeKUA)egsJY(*bqO{6>`{z{UTYNk8!eqaxH<2wMcXYs<3waj7fit6FxF zNSgrTyp4U?^g?M^hY65W-y#|avFzyBLHFbCk=`}aTEXI&nc4n4IXV7yif{x>yoi1s z^uUNM0QMtU!7hYw5Um1Y4S>hJGyE5M*FuSSQ2rk6O$%CjPrVc;!KJ0jl(Mta)3`qI zA{n5xwMozU`Z~ucxL6fsmt1#JuX6V@3y_nw?Ek7uV*+={qU<3>Jo=z{_K%*xIPZBhT3QE9x{Rhlr6GEA70PkDRa>AL8HCzmi?lGr?f$EV@xK z)1mdWN$n@Fq;{riqXVfKp*aEfYs1tYgTC2sul4cVF>oO)yeXgJ6>iycXT1%Qg$cs~ z??SN&0NpiCyr-Ze0a+O7Ze+Igf!qCyBl!~?)Q@*GSu9u@qFJai)%!1_cCml?_+ftY z2cifkEnV$09XHxRJ5)+ZDIE*^A@qAvyU_k!XSHGa)h!MEP4vc@)~<#|*sppgCj73; zYTOt~>7~=$*o19nI79MzPuz#hpah1wUjtrcLP1lX(E<2A17qXN@{^~)w`^>TwyG4q zHjp+m4+`!>w%;W{b#cUBkt-`VHswIU`@Z$2ukX|0d%Y(}oh!l6+>kyL`UmKQ zTwp{J2~Z_WZS>$FLp}nu39-PMCKu==RKUcG&6EF#PmqN$U_b-yKPXXPjT!P0m|P@z z7?ES1iuU^8Fe%UCM$fzNPWZ)va^-*d3Q+SWKK-dNJg9*jRE=!W_C5RUMn$uYUlWG-y1Pwu8=SbNs zq>tE^_fR3!T$n)?XIMe81IKNsKUOV-^y0FyF6;_N_7o7tsLp{{X`vDSKV9%HD$|r* zXi>?);3YsW-|G3ARMw!&Rh*ByWr+8w?C3uJX;6JL(&4^EOtKP3Y80Yy4+)9X(N)V( zwSuj{WKmeIb?y7VzRYiOQm(F*=@_Q>0EZa(clblq+-R8BXO5)yL^1z_x8p}J(X8M^ z7ux>KJ_v5JoJF)Pl4SYiU(x$5iHtv^M`mM#PCy8C##%>hHK?XToc!7EYuEIyl^oF-^bXK~Zk^iM;eslCp7I+Nv*1f_Ur#GiOMTzBO~(T+CAHd)Uk~=9 zR4vjqqCkr{1)cx)HmS?$QF19m)4yFqm6E!M@XS}yS&=?m*L!zCECe!66e`AJ3B7&? z61iWDDF!{@^h=R^2Ahi)USl}P#Pw?0Gzn`5AxyQ;zJskW(~35$~xP=_)x^A^%l;~S>X)@X%{n<^G2s_j%OJ9MMT*jdgmWsMm`jP5 zp8}VOZT+Oj3O$&3j|GOoOag|Sjr}!l0(rWmw{M-1k`x(9U7S(?Q}1*)0Z|R`5=~J$vXzIj2zWm7xHR~7F&hKXGk86V$+<{~tQmCmWJ4Mx(FvO(YDLMT(2%cr9dIiV;iYSbu< zw)VyFxkN))N!B^3+vxDN=3U|a^6LV3x)%hA;(LiP2vLHF828>Z>b8!U&6^%bebs1} z{(dKqf5SqT1o6*KpMlk*2h>QfcDVXvEX9T&^4hR7f{GF-r3B2{sUNGWQX%)%<&|do zi<9LTnYVM-=x&431QLKDYRXxT(ShDpk@0$bCi+$d7upbCF@WJsJ-p)LSJa4+TX5J} znuC>9(c0RY*DviVVymmPA86tr!%M2=H&70f%~@T$0+GIAu$>HlSmcJtGK^jYR~DD4 zVBkU|lA!Ou0gUIrm?8BZy;!Zqzc}J1s45M>UIvPxN;gNy_!Wi(DzF3~f)wZiLZR?L z>hF%E&uW;zysCpPf*b?+2Kx~Bsewb`NWMx5>E#U8shF!ykAA07{MYAE49m@Mz%Ff) zAt)xZS!B;7ZULVLeaY^hFLzE_R`hQSj`E9)9eU?PE2 z5jh{P*DGeQXlUH$;`1P`u4V*<=QTtSI9h&+2M_Dj7*&XQMZbB|>0|qoO3n9gW2j$7 zp913YF|fx}63%#Q2W4X(T*Gq?@6QMX3Bv1x+T9=%C{NtJ)U&O=%yyG-i}kg+!cUx- z{ALtL(YlZ=?~#7Da2uRfx<(NcHuk^2Y>7?0hh6745Gt*ZZ#6=&u8_eGW)~=%W9@+w z0N7n`0HZU#)BA2tJP`U#y>$V#2&j4>yWTEaulSu0LvlYOE>~%kG_A#rS5%;Bvv2c9 zMB|RE=2P%>c%4X(2k$JOgC8q48aOPRY_V#ynaEj6kzgvpD{x|XKCp9jRllOgBsTNo z2hGyb5+@f|)@zg~X;+FyZ&9kl>b|N{(frTd1)v||69l4U@jbN|>a!@&+k?17+jfxM<~%Z_FQXb9834%|r|jdyk*& z+nSF5{TJW*BuP$hUnl;1(z6LpAM$?zu3uf|3NEsHflJA5u)u_GhYZvmTq~4#SbcE` zgS0$BMlAeTwcGSeFd1kWciPfheAh9KDIw1tozPJX?^_%yi-K1Otkbdgsy5tOvCYS7&j9yLCsg^7oFwP$tJ z@8P{Y#A|PjF_8FZb#-%MZ+dGM3e%PjBRvmz8y`xZ%=|H>0P;Y3=TH=Q^IYWF?ij24H!GAX{t`4C(1?I(#JsB-IPZT}kIYCdD9umk*NcA?DVG|5js1lV#y{Ie zSj+{n|BNTYj*#5a#&4BPGOMefs_m~Nw&6q%BcE`7okLEtT;8r{BixRd*RhH^IF)pl za292c{yePuDqoS0i-DHX)dSB9TnLZ!HH0@)91P?!I4F4~=c+s`Ed?@njsd~%&fhoQ zHH$Pmm(r>3Xo1m8TYS?YdrzVjKuyVM^;1w$>D$0}E>y)i} zTnedbp}fyqJizUf()xSTi`T6bWTi36W{!$v zJ(k>HH_AKrui)>fz2p_R8~u~N%zMYO2Yldlf183q76Ln3xFEH+eZUgtAvIelOYFAt zjMq~$t0&jJM|I?*#I}G{0mcFTy-@3Tp{cPO=`OBpYBD__%VAn6_uCzzphyP@q$_o2 zibu`2Okl**5<)jtA!MFcb3>CH>Jr}KaurDWk+}#m$6zih_5#-#Seij_4?x|J1`@>U zqX3~9-2aYE-yg#2ofU`@{>SR90NmISQod|U5bL0(_&*kA79ZP3kKR0*7v+O2mhzd5 zTI^i`CWux9O(j$}WIxNr&)cS3WsXqI%R11sDfAHA1+`V_pEEZAw=ndtAEmXAd<_*y zonSp{fL+m=4xpJ{0dv`_zzSaQKv)oz_({`Vh2}UXFAr06fOR!YePExyrrbB=bck<^m@;UTzcLdo|J^qTnFin5e7nGm+ToIBxe*O~2>c}_M~A3360Oj3 zf=s%wJ3HYgGfV;vf#>4gJv}D%R=#Z^QnvstR9;8PUFHPBz{>j;BhUp0WH0FZc#8+@Z zkbrWOmS!86B6iqd|hT@+BI$!;#Ho_wU03ti?$X=pl)VfE$4!OWy5PN6`Z&bHN{UH{LV(Lk$NA z3jkB#wY({Oui)V^F=#`=m^_&cCSk7IFTUE{=-$0c!oo8z1J6y1Fu>=)WAA$Y51^EG z64e#_yrDw`wJb zk`@iMUuv$SqoWjq8gfc7(8xe;NBJ}bcD+k#X)h|Gtg^q4%>eIhV*DLQPlLJUyGP4a zIM;#a0p0=~oE$%#4bJ97=pRAT148!)GoGNUJUom%SS>MoE-kAi(dVP9)4*g$9S)c; zh4=utJDEwM$CMUX6D<1i4@^f*5EmoR7hYvq_#BR`qHo(lEC%|lrj=5j;;uRk(uYP0lGSR)YR^2Ld*wT+OV=)Y3>ws*V>GVqxLoTvl0|*18PKK&v0{jcs-L)_Rxka?rU1K1! zeT)e>&^(Y=u!m!)YJ4Z5bB@Vc(lQTtOCFW+sVUq7p1VGuAjS{E>ygvHx20Nux|^Kf{_V7#m>&1U!_&oNC0|OWt%3AJ(|t7z!qa@qP4A zA*9zF$EdyS8cL8^&xG^O4^+eci6oS3MZKsy%lWof#c((3f|J+;Y#UucYox0vyHpo4 zUsz#)o+UL_oU(cof4zo_vDHH^Tn}H1pC>o|yZ1HsAp(q@-#|v)gqSCYe1foeSh*!X zTmaacxC3#NEc8Zv+iGAAg<}t7%y5$m9SRloPVMaQ0-5bfo>}NJAH!qe)HL?>>ua}6 zJ#>;H?-w(&jL?S}5il5v43m$Pfym0k!^nkVak&_Mae3%LYrG3M%3hQe$0mR#e|>2g z05y1nPGHhu2U#fmb_=TZMU_E7I;c29@ZS&!#R9vV;jO%2s*qa4g8#pK`Sy;%(59&p`4Ou6#}Zy!r+e-`2upwNG{v3*EfE6+*xdGi^wz@m$g(7*%VHBd!^y`@YnGkp|3F9@hl#`3KQ)9Aq1 zp?w=fS|<)sqGk&JbeKL@f9)=zzZ_=#V9q@UoCy$9tc|nr@G}G;>;QbF`Ur>beDIeZ zT4G_v*;z;>%Kmuk+KnzmGn{EhZ(2zMynJc-mmDPU>kQf~H~;2qN`_)alWqEEzBV=r zREkBu#6V-VjDL^jczm<_^PK`mRYXqyPlLG-UUku6irS@4i=zRWg7S{(V1;n?*$DMd zkcMjw+^BB60cX$yV`Cu)efkXSS@DZm2NPzUq;JhR=6h)|kc0tGGqQG^vWJ<0hP(fp zV)#gIA!U9oEPU!~NwgRb4*nf0mrHVuOi0avZ<{!^KZ!_mTmk5J<<4PP6$PgNtj-W_ z{Ij;!3FZ$lM-ej~pb(>9hjCwu1zD#ct@4+KB=X7fVM_;RFQs_Czl~h>6O;%aeJgwh0H%#P>`78@&Y8QV1>6u zcdPwb;FoD!`;!PF$l|RIza$GKMO|i8BL-6u=;WbCLCLK(D&kXjbK`&(1-02917^6Z zXyq74Us0IyBl=wL48pq6opI%3&;q~YVAxZ{_QlWSre0YqVId)}kJ89YZaZgND z1SEFS8?*-quX%33yylFGXXjX`_Y~4%HoAco@B$DL^gD@sqX2&E3afI!Iz1$}3<-vT z5(5v49KXoszV9^I*m2;`^D5CuD7^rjncT?eANkRGzy7Lxd68rN=8G)I-eh!G_X#H}40l{y zz}}$t3pMgCw}4b5%F5~m1f^Yf2j~PC2996k#24bp+(SL5H2sH9k>(MR8bFG16}DAW@{(^q97qwIa=yTkgFtXeN>4BFIO%EAkf@$^Zwk2XWiXn@G?_y=d4d z4^DU;H)xrRyg5q{X$=_m#{muB0u|~L+Zahmy_1Ek2qgSNQ(e`@|57n*sRI{c;l%MW zSmMRHIA3JvtLq0{&XtH~OLdfn$^~?Z0*Jx&Mm3HG^>Vk*tM|n_lqtu~HnfvozGc(p z=Eo8t3>O>?$fZeAi);1{Nsy_Ec&hGUgqtueiID$&9kn=Nl4ut7jwQL`_Z2 z^ATqYf%um{TNhLh+$)`pUViM#=h5^fH5Y2gYn*6)BQ!O^67bS_v%A}|rk=X|FO?Qn z#;Dd_gaiI9)oWp*Ha9ayWfDs7XGjy{daHZTs1}PZ$k$439tzz(6Q-sybfQ@nvl_^d zVI%3YhkSB{rDf<-K)VNi<2=PzoSd9Asi{92jt@4&&Z8QIHf5ht45p^M?Xr(=2_Kvo zVfHzfg)fH40{a{TX2306evffMa|9eiZ;B&*ZS~@_Ew?pDt|Bk?%s!!9T&{Tvg8z)n z+nLvBGFkAqiab6R482s1gL5 z{qqg6s$zEHAngF5+o#p5fIO`Zmq30M)~eH8@!DkME0JG5BYwbl*)WOk{ys|3aQbwh z$#wc|*tu!N+izw{Yh<|)^J9VSbOFnK)dBA@`@CI6Lc(qKGQ!lDtX(!dz?+1Z?-gf0 z>tE_n^p-P;M#d!HOES%LP0|;d+r}JyK z?@AEUp)Ym^NAx@)P6)Sr8pKz@V7$Cu{g5o`rjR7&D^|3E_$R$J8P@5k6f$f}GNR%y zeD~Xu>={@goTqDHVGTrqy@$WMM<4!O8R9738=iUeZm?7;IwYj>bDOo;hmj(IIdr#6 zZL@XM_4SQ^tBl6?h{9p8<9L1+^(=lWvCL2|&z0!@m7WI-gBBcaTb9*ajYrr{&h>Op zvEiCcPcN5@7}N(JWOmWKkG^>yU^OOqmsnLu6t70fLWs(9G2cDN$ps7aZE%R=kwxCR z{(59$+Mb^R7N-2-F8G#AilLepCzKiTMa6}K-72maB_gvXDNa`JeN}0p06hMX>;eCP z@C1IZq@+YV{Sk&2(%pcQpOGANujE@vLzY=Xe~${q$_1GqduRUPSWJ-pUZxz(FS-#Y ze~4kTxU}cKcf<531lvjy?tU!U23PHQD>Yuo9`e*E{e?$pb3?XlO3{=a0Y zgLc;MFD+d;DLAE{npt|Ura@sZET&!*((>VpZ?Da8``E#+j)<)fBH-2Dlo z4&*Nh>rQv(eNM0*3tQiC7#NLvD%t}=hKK3?q^2Dhi=5+U+KWU8jOY!Dd)_>cd;Pv3 zvbs1jgrC(|ye;Pc(DfEjS><0FD5!w6A|)Xq2uO-_3!;G1C0zn@oYbzTI|d(Lm~{nXx%5|w7NwiXR9E%j=fPeM&y@Drfa zzHtMi-M(H`Qv1sW{*uF+(@UvIa%|RyX`4Uia@oa;K6hh{0YjQHkzfYxfpmj$J4CK3 zWL?!-9?Kqk_@TE`mi6;zYlHpuX#V|?HQm)o(Zm~ROpPTB($#xY=w}CuUuG5}3YeHF z*s4>A+6?C{MB0Ay()V;_#ci!^TZisVkAEJ$pPEO+lX5FfL$7v!bnnB^&&&}g^Mtm6 z#|PsQOEaW36G{W=ibS+Z`D~9wKHj=GJsWes$rrMOrPFNH|22ymr+cp{!VQno7E{UP zTLINioIZtvZu?MWo+j;*f}hC8zAZ`53RYHWy?5$Z;GW*7-ii1_B5T=bW~o^HrJ@UU zbf<=&*FNd8RwvIQncWInc=P9|(VJvs;w;3<9zxgIeAT1%%q&(PsSmxZKA1_!^Nuq% zR;%S;L8&$4p8ET8p5(Jt^&7cxU}H+_S{}|bHWffQfj8=T-xaVm{A8CGJ`(ggSMXe4 z*T@>uXFCp9Z?fy}N6(&6SsVXJXk|&1O*|7^@Hv=mvU9z02Uj&sS1whBbUU+MBK7a8 zSgMNm8wOS4?abfr`%jWpqRD*}80p+~B2;c6ks9qin2t#Fco9GIUbpvjw>(c*u8Gc&EfeIPml{9I; zBQ`YmW^eDb$7O~Cfw|3RFrp5Q@%bM%ZOxc34ic8H+CX@ zUTn1lntWIdO~9s8>3@Skj!@VHU8=_`ot zff2slJ6$HbO!M$GZBdn4L6MJ5_-J3bbl53GS(2%Q;FP}Pyc6ghoX>P*4ZCLQshqCZ zn6{kPo^yToXQ!IXKIG)|I6V0NJnag#FiEe~zM54~9!ig&j+S{&CngIb-vGupP)1nM zWWg5pB&OdPz3asInV^yE=mi7Dw_4-k5cKQ*sO#kS$OMs!kSzCz>l#I53-@G;(p$14 zrd`27LD0^EXJL1?Q7)Mm{c^G#gLwLz=bI=}7$!V;X|O`LsKG42GK^>z&i=MnkJEcn zf9c0cv8|AJ(>NLt?S{eK`!qiZ|PJ{E-M3HMjWUyp30|*v;0AW>jctz zEiF;_!<+Jj(~Q)2M9s_hlhP*XGo!gsrW`mqlHBRytqEwsO%@|UpD%Zh^wZ+1Py|SV zk$whgYknW8NsorN%z`bu4sL+2COx;HQbA-u)EF}bp7~kLEie*Iy^=CiB^f@9wnXa;xl=gPqKH9?xWtnukr#}kO zkVnPUUcJsxHG9IpC#h;v*1jwUqY3F645u^Yc{Z%ZQ@`U!PI*xNSAv|0;TZ{gL{uss0Z?W=k-5^()WStLw%aH>l)hJ6iVZvc550 z%_I5l;X$=Q?;WLWRam|gTFgT()PvE|qDM(V?*2mgmdal@j)1|0v>&u?KOj{_u&g_9 zmapyLiM2Jv|HMA+hg1sydawA^CD#=wLAeK`gJz3Z$*vf_Z2{2y-go{7$ z=~;+otyeogX(A$q!XI`6b;}YLep0~0^{Eg=oH1kg8BR14Zv;umLp!gyyPSFSc$5Mv zahI6+{SArA?tUXJxxBE%Ozv1X}KU{s-ZS_U-b--pxPg zvT8qnCf4RnohK(3B~g+hnyijbj`Nh`DG3kjuun*f)uwjb+VVVEpY~?{&8|PL>}~0Y z+-xoydLF&^B24R?g*5oW+7A=f*j;4I&*Z#WUiWV1f%i>=4 zk7#F6_OlfCrC%R2cG&Cm6?$z8Kg{y!x-I2rgzbe<+Oa(5N~~QpJvy$)ZVAU19g8iC z7#T}(o_yp@@L|xbyI(2f&cj_XCU1=CdLFUgg*OA4-Wk=D3#sonSTZN@7W0zYe0xOs z=R?-X#yhu#-_b$*sa0>An@=`=%8Gy1z9OGWciC0xkVf9Elt%s+`gSJQoODvC<`x~w z$N7a<^@ju%LQNyZCiL+Ty4!TfPs2+yw~#qz=;cLRcHZO2!p=U=YCc><6!^KFocLy` zrvAtwtpy&5ru&(-h4X5U*5e%P$cMCvywZ@WwI;qRr?NqZhLkvUED$M z7=_FI3aMXM+f3WJO2}9h0`-jqeus&vHM=!i#^;|`D4#X*BKm&nNi#vh+Hj(nrqXWjF zs(uKG zpQPZLQ&mmQ{)aIf(F&2urak6XuN2sO2uX!NtbyoUPmc<|l;pW?lOdPW`;uK&s01{X zRXq)B-y>2}cZO?@>3;t{Ql&KEW25DF=S=#L#p5wlgpW*U&Sh3XEyFmGg*R&g?|A61 z*Lwfft6#HZqu?&7%j&xwtJ#`#`9N36lM201_sT7!;^noNP&lKZABS2N;BHwEGbg>X zqt3y9DByLv%M6FT?c`kJ`R_yPgXg1))rEthdlf4O@r{HcI>}9Q%O5yTcy=GBC){6K z3+f#lWUuhJ4`wcfY`^@tqdQ13Yb+L%pii@CiMYMEE}~~QrEh0P;J&x&15!llYho#bp?`7!jArO8bD_4G6UqU;q~!bb$2)CBEFh%= z9JJfsoPQBriZ}6wFP8iM8UGCxs3v$-uT7^szkJ?zKmZ4K+9hfp5t5PdT>6%bN53vVZj?ScSq|OJ=bvbHU3}%*01-U zKT{#sdO_&qcQhRvThBD0O^b)Dfp9Ci_*I2OW7~REog`(5XSii5&^{_Ct6gHzZd9Gz zyq6-^qT6SkkfOtUri#-7V=x%Q_4UOZ z4uNRS%9?1|-VUF!G``Qvo98kPxH{M@K(k7sT~<~`0;1K0JKQd1S7gYD`-XVe`D~_+ zi!t!Dy-@-rTf)N1>TIufc51g)6teh@mQD6l(MMNol)!X1n`jq6Spovfpge(Le*;ng zqTntpS@ca-`Z{6(WOI8XNJ}~nvab#0si1Op6lK^pfj?wZ@T0<(Esq?7Uyb|ur}AsA z4)dtG?why0&TYtGJY}!MD=Q5RlaFU*n*dVQKyp-Wb4G*!axb!<{E!l1`)+U$97Q_T z+``xd7(L)ByIWk{IQT6YYdtC$EU*l)-ejY)2?^=a6xH zYukQK8RamBpfwvy0#HWPt4N76{0}*#P0NGpxbjB+vxJE1`G1(>TX|Kyi@|#kN}V@S z>X09)^l3#f6uIr@WoT~OiJjsOLXCq@9T1&U{^v(e6ga2>i41@mhlS#H(Mjs(mEa?V z&18_oroUh9XKqB|?@ieq(di*I-m|_l0(h0=hC~g#q4*-I!Z_&6FdiZJor81QBaN7fsvfNWr8N7n)3B_r~MFmYta+M=%DGcswZZoXUZPug^~C;9$zojApo zL{Cd`Y)5PgW-)u?a>Dz91r%3P|LSyjouu2EC?3Nah%}qoN8a7Z2_$+#mydU-4B)Yo z1B5`=-R5%Ev3C>sSXX#_5&eOVu#)MY@TQq&fXtc8AIAnQ98Mh^l^U1&vx;#k!_HyF`ECk8dEm~S5mijCDEeZA7qK01m&3;v-uGOTk#Y-F!#2||MLs#$r3@a3}oGVopvkmhJ% zHcl`AXx??j-+w4zmJdV|aQhSP3IP@cPAJZ4rbidkE)nijD}80C<#PEJH*w$|fOxV& zBUo1-pcPkOsO6J`GEb5>akf18Ijz7&hoC>fMD}ozn+riDhx<82TpdUzzX*vLHY^aK zOgxb@$}5o{IHMe|q#R0}yAvzi+>Za*aas1Dwpv8Y$!_=hcMqYU-ucPr(HMqczN$+q;GUI$$s@( zgr`}Ah72O3b_w5htAXQ|zvVk9;Kh}UXHUhIvWCUnFz2MBblJUxz?NSmQlX)+El523 zNRxI!38bEO8qjN)Y0yAR0m_F4Gacs-nsvSUom&_s!{j&z&pUQikkHW@)ME7(BIhG5Ss&^vJ0WGoE)gGfw&jQ_4w zE$agaM(7aHjE&vjy*;q%wi(gEj@AJ21jALODc6+ZcP$m;LzY63)L;MfEjbh!COnPs znWcTEovcL2t^i(;ZkLF@rN-J?v0mE@J5CM`g;+!Sd+=3h-(EE=Bn9dPpo2RBckN*6 zy@b>7yjytHNf3S)`lu!yA>uHaTagPySDS#1d6)JoamEN0?mQ@RI#qHoCx8x_WZSTJ zq!Gdw;m{_DU)XH>P<7DxJN8CF<-vj19o-nIhfqAOOCH~=NOYnMYkEy7hzC1ARVFy^ z@es2;A>u5sUbznK0xHUIzg@3{V6xi{_?X~fB47Obi9p9SSd{IIr9%4ysuH)XKwAA! zGs&l`$Z;q`ou>4N^)P1K3S2D-&orSkI-cyDwxK4(n)fJeKnNw1=KQh(?v#+ykt07zsnQ(>9Tv$fMOW3#Fe!#Hx*gbh0T>Tn~rJPQ0n;Ix|4M9 zUh^J~7AqRYG;!EPH{06bhy@T30K?(SJ4<$)_iXilLBk#pKo}ULkt{lin?LXh#<i;NmY>rPF8Pza5@Mp-&V)JeE-{orx{q%d-og({5wo^vnYJF( z0P-LyR`!_D8;m@n@hSM%1P3#f^2>MnaQ~j@71ZhvUqbn5&9o|S$EB(H)w1Q*$=*sz zr)S8+41G(qHzLOV;_2113@x^B%fj85$i)OD(lz(v3B`b*V$F^D1s;5u0#8pUkTwMB zW6VE1+(*1^rWgNJLI5pe-2N$lJox{WIe@w}Z)6ZnqwnS*Z(?H~-sw z>l~q_S@7|+S40rv)iBL!W0a}67I__D4^}r9g*DIA@6045H zft|obwWii~q?hV9g2S2!hk5Vx+mlQQ$gzj_!u(9 zj{q7usle_XWV*FZtTO0Z+KFpHz_*N(9m_dr9i~k= zjJ=3Qt++{1;c(9R5_o6eD$cV2nPcGf5Kn<|F?~hJvp1^Lcli*vkIIa zifc-Y!TN>eh3@-p|5iLck+bEg;bG<^Lz^|EvoJTuWkb2nTDIcANhCikD<}5{#~||2 zhZi^7zkIt{Htd$4U-4STdG*>kIbvAEvu4MD&v0#f94%d4XvH6;T_VMVTiQe*6nlrF zTX_ygX@QiYrA@>NjtX)F5gl+OJKpmQ1B`SFf#r=_-ad^g{Y4i&gK6*>Gk{_Qc(?-z zBdeX`u*eOPnwt20uAg2|;qRzZ5os3;{q#q!0efl91t8w{orH>a?E=Jwz7d%)yo|y! zy^#?(rREh}AA~@5sv;2B-T%ezYyMSg<~T_(u*facHpr1 zYl>mSf?Z29z{YJG`b>aJnh1OBl#k zhiT{v$Y+we)V53A-Q7V$1WJWhg3jyIkm`AQ28(-?300*1UCj1O^0k{n>xzmRX;c**X$E4^%jEbje}q22*eW7l30M#i|iuv&8^#wxa?; zbgXjkU6(Ki*~cK(yscC*YK6^=jnxec*6#cf!E;p`$`2*DxNeRls6rYV1l}UJc4A;+v_jMO3WhL~9iCe-AqxC617M<}ac4 zqNscTHA?qlLvbEvv zGKad=#(k=xsfp6^dC1%9UVN(hNU6R2gs0uD#Vr@)VnL7GtDOPu`Ou0aBO$PkA5O-U z&3f;faU*%jfKiGaRvZO@h9nI%B!DnpIgH^%Y7n568AAV4nP5!~Xi6}lQDFa{(xfVc z{NfT!#|R|+Z*B6Ehb?;#Y2PM}@`7~a6!%JN_VNX^iIgYS9E^WT)4yK;`i|K4#zr5; zo*mcwk7Pb(F9^Zu{mZQw<&}$21jzM4qAX1m34|03tqgcL zO+qhMH~VF1rAzRSr2`=l9RgHvJX4eQpS(~M*NwhZqw5j)yO`7Z(R#83HP|m_6`fXD zG3-wD=8cKlx*AxV)b7A$c*?IMLc=915-{GfJB z@vnj_z&*&>pl9K3zy1S|=U<<0^u*1W5UKfETT~Qd>kTGty*=aydX2I8l%?n;z<5l2Q6P~QHXy@F z7_gSv)9U45CJhqG9E7d)fX+U>=G4act1AF4Fvbyq@E~~?VgzGDSshqv7siZuoXr!H zb6+$j8oLSI8fknFy&a5OJqygkDh{_{1cQ}ydADv8v%myW)L<2Q(}NFkm z@8!W?2ylJ#Ol?B8EMCp}XqXF@s{$ci@Z%UCD$jBGyOgipSSKc%> z&GVxyHHX%q-`C~gsw-{^_0viW!`tiUl<~bPXEJ}|AT}U!$w46Nw|hFbe3I1nRJOpW z%bEv7D8T7qv`BJMimO>-QR)?Af(-xGt?mkI=-CCGDB4ae%G}e3w6>G6q!=z|hMHV? z7AFZhMtD)IIEv-j@DI42jmL`>^u>mS18D0Hm;Nw!L(!7bYSXekHBly#?J+w`q z4OFQ^Z{R5U{uNo*3i?VAHmCJu=ha3Vkd7F}CnR7mF7X$bYT4U=Kx87JX;s%?o{wc! zxhBE4ZskyF_Y*M3-lf5M0ZR5m4EZ~d$02(6P^32$9&*?@cOgl7&fc2K1-CJ*C}I;* zW<DrmK;aV$2Y&tW?+HE@7Y)Q5vSUhll75WdgzM*w9?rFCtNY zX)=yHD*2LT>&ahQi)s%XSihJ8182ctH_16Vau&`Z)0OaH4475Hf4-VOr3eNOMT@W( z8jZ8IfWh-b`>Fe01PZ9K3$Q!b3cZSAi|7H7!cX9M-Vb`_5r#L*wIxG7xthbh>m5Z! zUuL&l?7klt8<1w1W`h{;-JvU4N{^%T7b7eCyovRmz8e|)=J$rxOn=*f{IAV%ef*dV zbVe+P73~kW5>Xny>XR}=P;Jx>=}mU9m;=(_BD7x;L$1rr`?pkA!A?ZcoaDFp>qPrJ zap=9F-!`zb%BqIB;9Om|S+MbzrTbe*O)3AKI+VXeS zk?SOnWdjwN^UNf(kb?8=Y}N=_SD!OzW=yu*5gs1vPwh%FAdF(ztUT>w;SI^N``6Q~rJN8uUXIO9>G)q>!~e5c!y_xyM9( znu-_Hz^z9vcZ!?y!v`cJCAk0dCz_2QJ858h+FSYSP4KDxmGUo}kapJ7b2dFNumqO= zsEs-b++5sMQ{A~N^8&8(f(fhf*Wh%Az~JHPgn@zQ-P~W{h#^jS4PKdK=MxrQ=xgiX zQifn2cEqC59x6yv+@Fxyl)8=UMbb}KV zY7;!AwduSct#PwDy$0^e{Mma+Wc1ngM1EoHIug5~NFT}xLz_B*)&4F@&+VLnH<~EO zQ1YShc0pY#F&zOWr0Z$?ooj)uC`%5s#9^pXX|8pBxEo+@Q0Vr`Qo@Ek zRqaX~ zR@&b@`8X6JP2u2-#l%CjFqX>L-*vpGlPpkv1)x%pv|YhN)EQ&i0@thWxg<_0C+I(L zviUPbZ0@%CNiNc_`A;5x8Y|kz2mYE@8)KtOxNE!(XI?o3mUP4UiNC-5I>@0C?hVJj z@32(t)7Q}&BH8vBa_-CHO;~*VY@w8b5p!ch1CHp*${P!x$s=2!x813hVYC1X)e9+s zCEr#v7PFE{11_iFJ7br9P{3X?Q{QKp{Gh(qPxY@6vha9ARt82c4o zCd=wFI;<2!m0HTTIX}xE&USw1@C1;$nJohw?JICt`M33lj91A+stK!&HX&3c`eT9i zEeW&hQZ)IC4C6UtS$!Xd^aDTCscg~7(F9%k)uasfV@D;`K;Xi4GAd{Fg~noEF0N0m z*q@8b86hvf(I@i)4{U`NxG)Xk-Sjzv6&PdqA93J(Fl7vR)iGZW>^;at87n;u3~<`! zp4AyOjg94G6_!E0QcaD+ZQ#(?D7BC*x7v3k@7W2LE4x$Sm!A*untl&6gwP}nK|mAk zK5S9i`6^iaOhFDT#4yuqoE9bLI2r+P0eu#Pi|1BegS&YK^bvV%LO%&0o06CcmcC}7 zZ-8PXj#Z8$K>(43!k3pDvvPGsZ<`}kQ!`FG6O6WPd)-tE!;sjK_Tx`{a@19|e6j89 zjKs_jQD3oB^|V=q<=lb?*=D(Sl0Kdn_UV3@bpcF5b1{bMARkm`hcR$GwdXpg6^*Vz zyh5nmh}e<%7l2kE3wz*)J*fN>^%8HJregoNQC=ApZST7RI(BIR`P|9IC zRZ#*TQZKks?FW54JhyEEeB2F|?4VBV`J@A~Sng5vk5}b(;U*hda9);8z-}mF&tt!m zq}gna?{x)bjM?xjD@t-9pZ?I&eZN=CT|nz>t`DxMx~|)Cf^aySxbepVYX9(lb?K%M zU#fMmio0k#uB#H;ob>h^h7gI=ObUeV>bl~pv<54~5xPrpvy#5hxCHJX+u3WZ+xB1> z0?{VOzi#NHJ{4&_@qVJb6wkn8t?V=&*=5XJnP3f#FhsA6mgvW%Da+L$3#4CC<~c`A z5Gz6e2!q1tAwM$J+=DSyLgXV3^79Nnxah6fjkl0urHTW^M?$0o?=a?XY49@08^uKE z_xRv-2ru^QAIWKEnWPH-g*v3L1ySx3Nw6Npz}~|n$K#JMKiL8GH8V<^2Xzm~wc%N$ zB?(O@_5|{){rv$9U5Y@fT`E~q*4%cuwy}bN7mkbSA(pS<1;7Z<6TKSryP++!iXJ#O zl9qTxMHBB^H(TwC7nB8et6ekhYTY%2EMS;*qbu$MwUuGDzt4Y)4@SU1z$nw# zNOs(02XY)aL0sz8*QOa=zlKh-_|qyf0Mw)VLFC?OBcMYkn95}*h_(hC#Y?ajNt zAA^KLFQ3xPd?lz(zX>qI&paA$T!d2laulo%OqdvjnQ*}3EKAFat_g&e(M6T|(91{~ znCoy&sBuTX=(5zK4+oeqrQ~MJ4TPZ0XS=DG8LSIbas5p|U z%xA7JCJ^FN^F5S%6;=o3oJ)+b92kOLRR8#V2RlKyyHT)GwfD&qH-X)Q3n=d`hwpj{ zoX!8O=8`uakNEiQ?cM%|Zt{X7s2S!xzggO%%Vq__(qAy>e^ucm$wijEW+kE$(ZUMw z{a0ykK678i_(c8&Nm61+$YooUjdJZts$VOP?Rgr{ziN)>`C62OH%u!GyivD6IjOHF z1^p=hgBPI40Q@sbcOC>jb`@Y0QK8p`vz#D=p*~t#O>lrb^stm1m}MbGCIdKux1&B|iUjn=Vvy>%zETztmeZohJ2wW&P;%h~ z3JOxymh7+}b9CNzsqELA>g%61)A%F$yn`0eZc|PF_$g)il&3-(SArSrQDS0#0-E>I z(i2;bLAif#1vAz9s;WEHUH?yvpdTvy=Ah-Ek#3aRZ&xw=1O`bu0w72+T5K~4v!EM? zG@RVKMb}E19W4?QDj-&CCn^#qA}&g`6&t=#HW6Zw5JM-BNHV#%`+EOU?i)D<;Z1l; z^)(*tjTKQq<%3f;8T*a@x%!8zuBN6rQ&WGs0|PY6fvYm2Yen>iZs zJmKfXBMK>CH9529ax(Vft?*3K_VfqjRMhh+28=Q+EaB5Z*|seA5Kgr#w9nQ&pPTY_ zp2-|~@Zv5pu-a_TP)ad_!(Z1Zt)OwvDO0Dl2SOX(lP8ahhexc+x4v_T=mk?LqhaGU z6kXq~>cPP>P7(*?@EgDa4Z(6lcIcyWePygb13G&uu_Hmb)niKtR@-v5hRb<@V*!>^ zTVcOID2#`ql&gAjv@*GMvUA999&MRDv&Q(K12q+=K}vTOyzW|?hT}5zJGcfZ5j|T) z%<6xpowRIDTrj?9Cty&Y>E69_rpTV-D%vkDtXA>!w}ht%6^OHDw)i3_1<_%rVZwbi zfia%%rM|p3$~H+xC-QL0&`{)NGWIO4>`QOvhn5`!$rnY^nLiEQA$W+tFH=0v^?2@O zrHogC_G*$oi%yR`sq4etNgeM+UwQL4%eS`a=HD>1Nu<)@x<=WxMz==uV9!Z&&r3@# zEMQSKWRgwa!?}HU`s~X|@=v*T#P^Ac`Z@M2m@lzOBa*S{htE@r|%1IA1`RquQ0G7|3>&n(pNJKRt2x893CT z|EI5bLGvt*^<|*$$JEJ{-9I(NhC6{gR_?d$?lWk_fkZyKTF-^@BKPJI^)<%Dyrybz zsB1eX;^u%9Z~%YReQf2#zQFf(djc%OFG`N1*7oBq$D#yY#B43c(}}PBkc8|`kGh$@ zdc5jXU|QVxkXEsjrX(pqydZ@XAdX`6aEg`?bc!Ot%fQ*d&kIij`LnOjeqD~M`bV0H z5M%!spnm*$E#?jKNuUU8J3G-}27u`Ujj9;P2yASljE-+YFGY=P-%pm`dUH_fKV3X; z@fQx_U|^yih0uTZWVE z>n*K05Dg6CM?jQ!7-donq)NGHo!z>%ugOo}C6Nb=j9mu&>$~TNJo(fc9#|Jt{7jDv z`{4})laDyOSA8@Z3G-jVq2~u?{CiB%@AC)&M1)4cEGxmPV#<|r=M$YNGzL6n$48ho zy4h#?)b++@^|_^tVs{k_zj4Jn>p>ZkE~tdfO|ZU96|HC24Li9z-FIaPX4b)13*;vw zqN8h&k2QmO@Q~IA+H}y$6mc7tj;^8Ah+#JhX)Kwu#eEBT^ubj+0U)q~A!aR>jJ_p1 zE65sAWn#Pjp|CL9m|z09&wBu0Q1i6L!`WRG& z<0)VbVh(BZBUoFl5&D#jY|!_W!`7DQnJs!>U$zQE25<8!s7Pves^=_Wmozv=6L#g3 z`A{#wMLTqBBx8j3ZS`6_Oe=msZM72j-8clL9ZY!$k{4m#13yYXYPq@c>5@?8!$K`G;8$n3H=c$hDfHv|9==-|$u?rXI zWftbdh4M`q;$KVdBoU=zVBm&YcVHg&3tXt?hyp$G_`usDl-fRU>1tsgER6FdX~Ayz zjLZXOnA^EWn@rTjX_AVJljN@-y|8~^C}9oT0A{qqepWvR4KfTm@Byf->fdLm>vc8N z#}2q|7A59_!)hHyUqBEd+@h!5*~6@cU06+v@{pE7Kv34Es*hXK*j`?D9fU6=)$ek3 z75m)D9a5dnFRU7u0a_?JqbuLK}cByH~@!T>>rSA+t_{KE2Wz!PJ!FYIRZZy=ro zA+XXxk+IDLrZeQfxhB_1jg_D-@ zr5XK>$lpMzMGESr3+y=08u69cDuB`^Q~|7No(C%Y2_OTbB6pupQ3)NIvsPGtFdf@C zZ8LWuM$_nq3jLLVBlrG&EvrW>Obl-XB#6HF(+95jso_E+DLR7C(gJjFMfM-dumaEVwTLsx8L3~;cq4~U5^vTne;i7)A{qhB?Q`52X)zqPdhnI2C^XGm}!{zFoOBswYzxE}rhm}~2vHz)(#VBa8xB2-a zZs5uUk5fTv0h9saAlRZqOZNKD*c<`1n84J)h->v~T^;DETgI!r>sMDVDiw05lyC8z z?UhAC#p=Rt#B8P4pWrDmt&F7N6^=hV2dAqlLn2SggW^+t<&NMlLXBYX<*T^X0xHg@ zHV;TE@8THLfaZ=$sY3eQ!EY=Pjgy<>Kbkh#LzqBT?c080z}mUFhTkdN!oJ~a)Dzgx(N@8e|Yn~78R)sgPG{D!@NQ7k8HA- zE7$*RMploNWdChOFg}reEU>QLul3pJ5y5RXCpJh+A|EhQR{f~p6G^Hx!3}mFUR!~L zsPB)jz-NP6LLH6#&E?wPni9`vJrT44#V+qnayQM0XV{|;!^I}}u-SSPg`en|v}kZuH+qWRc-p-A%cMubTT z{Cwmuj!Td916@gnl1#A~L;Bt24Y_EpB;&0uvQ?X#D#FM=l5HiqcJUi+Z+{n4>3wz~l_$Z<}G@MAwtbe3A zCndV+ITn7VfHWNzKjV_ATAvj?l+939EgjjJKV7#G7+-P}gwr68sD-qN+8rSfHM*p> zfWo79bTkaPgZCi@vYQW57p{Us%|Bngpq;oMQJkN8K`lnSe!XWz4IuabM?CPh2&X0o z!++oE9-17a`ON0dQy_LP82%q(`(+~Nva(I}HH}U1F5b#=6zeWy= z7dJb*UehK}NN^?ya*XPKg`I|cZf@PP@Vp{+i|&v^EtZvg^{)edj7ZkW7=;X_3Uyix zS?wFXcu^yzNh%eE3t(UqZK(cLN9e#$j(@R7bvUmHR_V1nlPS4u@t~C?#kyptu(u5yHy$E0^H@ikxYoBTz(6_C)YpeeuA0^<|MF z?HSGaqq!65)l1G5yBcv_ZRyBXpaol~Ye0TON+7~h)OlWh6&u^~OuO@S7mro`sX+)p zW_Ag`!<5^fO09OAa`}vwk=PzNkW^NYqXv8L#|sXr<5J)S-A!ZbA5Pb`<)e6Et5lco zv#a^AV*jm8phte;}AC+s}jss6kTXt$m_lclbqzfp-^e3rvroDav{BKAsXmJc|gFDrsG# z_~xXSK|&&*X9C)h?&o)L>u-^pFWN!b9h*_ivHCS{|{gBIn5(nm*W04aoO_o(5- zq(uj9+pBD362d6?5z-_p+k4*1$6_MatPAUcc?(uTJcE!oLJ)*p@lzHUFz}Rn6gmM1!t#Q@f0qehubeeC~}*uEA5ma z00j1Z{32xQC850C-q@JzYU263xh*L3{_tAz~kp8(10i6e;e_*-HF<*5|5y_h&|}>p9REb zkn1J_hWj=9p+X}smOhCGxb>aXRpStJcn)h}c4l@Y4hfNp$6KDHFFE!Ukz__}l&!TO zNe@L6ER_+%pKeCy-eCXkf{yoidV_=YdeSLF=lOl;vZ0_RCS1<>t7dAI)-)5?*QWA^ z(;TY`b^!cU-NS_?Zx60Hh8ss`rlHFR9v?MJ2#jk!&6beH z@W{Q<<0ffo3ug^g*i5;UoPN{uW&gf5r2X%00pla|!(j12R6~|BG~E75p@0rtl zP-tcU3F7fpmyDJ{)mmBroN40Z%Ha0p;{lA^re9~!!Kk|TiV4h>2w3yV1YpiANJ zAn?F~iH@Uk8ztMp4eFoDdDn$GJ71Bdc zo%8uU6nFjk?OOeN4KcUi)eg7&tGI5!cHy8Tc(37tY&0>{Z31c{JLy9h;8zl^(r$W4 zK(vyA95N`TF5FD9Vntcx8sA$sBPcE&z>PDLER@WG;OrjnKMMuHUQWPpf~RqI@Uu7T za>cKn1)sh)MuG2}LgjFgmHHM>h49rjU&1X=<&^SJh;0J}*_C?prfVfT;TaYAv=mC&}Yl|RC!hvl1seuMD{MEP09YnWfJmriEpQ&ODE<02&Mg!UE z?oi47W4H)tZ2b`fN$(GUQ$aP8CfRkXNjT`)+`JIKYXOy)W$J(|XGoW3B)rs71Y}}@ zxIJvWxSPcg&@lZ9jHr_v1;-h%e-E6i_wR90uSEle1&S&-FZ8Q>t;!l^w{q@Qw?oPf zTz6h&(=SBOP{T|GW{W+0w!pZ{xxAdho>-7$V^ES6=Dsm;dIPRA1RKSYFcg8jtVYnA zqw$gY(~pBGbamOA%hsYZz`{Z^qSft&@PfaCK6=Eoq&-FZZgos2pK`bdD8 zAb2MBkg}if@LIt1pxRcI|KEK}BcuJSyL7RSNTT@93+P+3i;$Uv!07%V;hXRJFkwCq zEkuhaIJ1(ONP>1LIyzcXCx*UyV%nxWC#*gbg6O7gNYfQ^Oox~;=9C}adn1q8|61O_ zV+=eGdi&xt8K(Ro$V~2uMx0B4NoOon8%{Rak$i=yH8>>?CpzIgMdk*;;@|@yYq+G) zNN3!N>lz!wN%i(RJ#K$K%2efb&vZ=zRwWjF$x2@MEwi{nzA=9oQ=Fb&*R=CWt|jct z{@JlIpZ9n2g&ybG)BWr>Pxm^$#}~alJ~gK-A^D5xryg4!zk*4>`?9H?0|$X+^=pXV zzR(yM)?y^|1?8WRT*RdCi8UhAYaY~b@RX$~I(=>w!D2oB3HxKFSzKe9gbproSt*vg zpTo!(jH3BLl8Q$hq%4`-GQux!fBxJqoSRA` zF9Ucj{zXxplP1bqJW0OR6EDHSn^8KQK6uDqSYD%>b~a{x&)ivOBw}HI=3M*S`(eDQ zU<;tJjuu&n4*&^10TTc>!W;4;ydhlhH}WBnXM%l^ZxRfQAXHTt8ZRb#+-)Y?|9%3- zam1(r)pqc|vWxuW-xu=)$)hekD5-ZZoB*mY7D_H7`URbce2$qtVg#^DKR_Z>F1|z# zdD<@sf7;SbVVhrYJ$RBb5)bcJju+3O$bVV@wWPeephVu?om6TmJ3LhEbtMOv3rL@z zh&%$e52A=2CY-BCLCW&>^}g&=ieSKc8d|rVvhA;ySy8?nD+AgP!kS>0G>X>`QTybf zOAvXQ)`Jmf(Ej^erLzLibr2!f4W-WV^^SABi4JCC@Mfxr(7t7suC zt{^84)9UqjZLz`F2!j*gilEeQGU-AQE2zVH>~|d=jbzQ>{6uH<&Q)SiXHIgFcu~%n zcLZn0*{-!oAl%~w=18%}MRwC3%m3=55g60+SH9gD&BGugBhyCtc1C~$+k32!epFM5 zdGgTF!OR(qb$gs9|LQ;SO6D}ImoQ-!D{+{ELSZVjCu%lTqS-V|$&BXZNR zn&a$hOBff42ZDR1NtNu1;?$Sk_tDhuY(fCGrL`z6zsJE?g?+*$w2}}(`m4A+9Xgpa z`^WdC>3yJ^2kFD2qca}`KV|@6j8b$_#gh~*$l6hK0$uM@$6Z0a2Xld4YEejYUUSR< z)gUy8E8Y)a#H^6i#5q7y!y`L;(uefbc0C~WuF^YLtiq0#V?jyCo=bFAxx* zSl3q`u`mO@AtF-jRF}(}>-7bU_bq@V8i9`9>wJ@;*Z8er-Q|B97$`GnLC?(*{E#|! z9AyWh7%c>9@`gSse62II4a4J@4BzySsag)nM%p`}p8L>m)$RxwdyMI9p@{2EmP=$m zLHmVCn)2tz?KgNQmM7tZx8a5?TKsU0E&hq>10Mi*gN&{^Z=@;`z54cS40K0dwx6{G zWyS&P6a^>D{<4Glz3K0eeg%{6SC$W^lLR4G*z~@KgNnlldO%3K1-UGk@N5+WUnywU zao~v4w2hygkGTIB=2>T%+|iFhVV~~4ZOW5B?LJKDy9Ub&q|2?! zs@ip;+vt4j-Wx_)&=K^iTytgD2RG3;MrPl=PoKMJQzBlTr7qYpKhvxXK0CALb6T|< z*tT%0SUy_XIea5Uw|wWv+|G*2=9Du>5(d{=M@Mjv$2F0i2ij|n`fU4zR3^8ky2H5C z)UAyicX`m!n;~v~PQ6+T93>D;Tzml*;n{ z8YOjUIeK*%$Is8QM^^-Sc-1hkkH2o7$eX&6P8n%3VZbr>0mZ36B3D3AKv43@uOb2@ zBjR=anv*&`L8cND&`EiZzz_QH(p#x3P?laqyC*^pNlD2|UvxrIXTS7oN^U|)I)j9! zP8Z=ciBXE6%mp?TEPMgjBrx7ydGMyi`uou`bC;2Buc?Y0UmO%5yCOu6oAPGau42w{ z-PnFwQ%ZV>0JI*kpKw<&Yfvh?|M>Ca$6D*3Wgzh#mbBj{#o;+Q!}3K*U8vg;0sx}L z<45el*>OJUt?z1OBT9FtL5y@+Sr4SD)US5>^7_b_~{Gc)G5*nhB{1!VWvfq_?oDxGAJt>62vr!p=Z7ag44We}r-}*T$C1 z=3LtiSK4bmI{+$h>)bv4%W!!9XF`Ou>)8BE`1MaIgE&oxUk}%2NG*IWPmxI4;3(^( zqKmBsmaeS0YFC&0n-2xruKnidPKz|iHM|u(ClmYaww^hI>2q-^g}<=1H$s82UvVG3 z>u31mfe+iqu!#QJ|3le-$5Z|P|Ks>kG76QItW-7`*)x| z-tUS*DdP+)sKpazq@gP^z3}AK)dkO;5vU3<*7%=y` z3+OilXiY-Q=ODIowa?g9N%67@I%F*P*&&7uP5J|k@vlIT9wuC0c0@VLv<7Gd)m=j2 zD}XJ7(+?1XL~o<4ldGQ$A;s>;Bu|;3{_W7o`)}BwUj~ux3L6i4DbftG zl@5zf>dH7hs{VjG-O*-^9^;1C`r=N|w(h~Ur~m1ZCm(SrP%o@L&-xuLi!uj$nc=Q> z6ULED${*QiwxbRFbv#noAcXE1razSrlas}c1ZPi(EVGSRfrh(Pz>@i(`2Q@mFTMoLhL13uIa0#RVWtiZUZmK1`X_LfkE@!oY?RTJwt(>=pKXObCz?Khl;Y?OF5Z(}5}vnBV+ z%5({cBDKVx&UK)x1&sBW!)?@B&3M`2_`WB&W5q#gdg~z9sX( zIO6gnPpfqU&L2_Q5IQ`2`%DOxoC%CdV5~Yzde1|sGn2+%iee}M{ZUh+ zj6<7l5dP_6(_iHMl4$9>$kz00sxjXzW7y{qnRZTakVqI!=@MKvYCb-E1lN+MVb+#_ z>Ioro#IU_4;gQ=0ry8~B!P@j{Wl6>-Nh1W`%k%WA$SXm)Bn4Z}i|$yVvV81fy8G>LtHV0J1XYJ5{tmE5+n zQczwHzyt~tk(7RygH2udt>oyX_^7~sUuUcf`&li^sx|OU3`iql^m=u41k08@0@ej6 zuM1rYH5USW@sgtAH9i6VL^;Mdm(L$a6T2A>6E%|z{#Lw!xDwb(8cZyNEy;{Z0ZJod z@harJp?muKN#UHYpowb7jN!iz~-@AfP0E^x$Yot!TA-f)+`YJo)4`7H=+p;5B%!aPv;*4>nB+RpL5;gp(I zv{Em=-<9W(!Yi!$W#Q^?UcJrab$2+p0^%ND9wsWZmd7sE!O=Q4xZ-7YSFvO9SBF_b zboZT&uHuKGKZo__BVLFT1WREX3v&ehoK4=xdN~0;WC&%e+6q$83FtZRvpg1h*00e|rVa16cEzM~OG^ZUo=p_;}Hnm%M18Pf$-B>EPSf z($+?-tz9@fT-+__vvU{wS&_(}l6u?O4*(qMB{I#4njP|edS!|x5O~)i}nurUCzR6%;Y7VBE&uiej9jH$984Q8}wP` zdcLDYYl5^t9UrY3tI!Cd+_T+Gb{u|heLIAA@(Oc@RPz!6Ls8M9 z^VSTp!-Vj&RDs^F%j}+pVy4$7BuaY>;57u(I=nrPR5vMUXzcabAG@H`v!3IYL2?>Q z!*FK6j16rE%-Dsc{%L5ehN*+A$Q@xl%8h(G?Zci0o&k$8_n)<(&MSe8i87s;ts1iMl;;!ey1JVjXc|Zh1`0Lb&n}_X)yS@WFpa zWhHWp=V*SpfM8FcMKp@r+V+lpCpo=+vfglFq!pE;&f+~Kd?BoNJ>r0RUSuG6#&urJ zuaM{MfkBKzC}6^1rNBfm?t``q|()`IeIVKc{Yrb{M1OV8dH3@BQTer zUm^0YKA?1XeGl?F6o)tqbPB+epag+-`PF~5cK3WhH2wi4$|BRB&|;FKLE9_Z&UFF( z&Kpj*Bqe@&;+x8c2@2U;ML~pZ$FASb-zb2LV82+uqAF*0oz=L5XM7D) zoIIopzi1wqm-+G+=qEc`=GCY~mG;l&{NZ3sL;GfQ7Z_VF-}-yl`x|a8t?tqhbNaaX zGF9Mcp%0$mF7SIwbD8#t$O0Ak!QcBj%U+VutNc2mZ}S;5v)|5-d&j^DZ2zfnvaPX^ zLM5&8Wmy?#akWqWitmZ@0xmsjFHuI>p2K#Nc_@AU8ul9j z$=}3a7VF%r)+);0Oxre|cxFq5h)FTfoGjeD3t zWq5daN~}ipg)%JGWf_$#UZ0BEHKRZabM5?jQ$d%x+7YI?E1-w+1l3h!etHMZR_rabOM-!M)WRj$-y{7xyNs`0S#EN#|m|$P_!=Q@L*>yJ&f;Jc>nXGpDHmd zvB$%Pxd_I^KfTk5GPa6)`py#{&VS~S$!Zae^|qJJ6nS}hui;{1XP8k=LNxo_T;uCb zv$%VyUA^-bd)$+~b)%n$q@@4ovDU z&NY}L75m&aH*i+4)+_B>{@w|!`G#+S_Uyc#J;d6C@>4cSOG|qIQNu7G!mh4fRCTO# z*5Y6_GWsM#hH4moD2Q2rG`}Q95cCE^Bi6hQ08(zw(7#bt%WSIDB@F&;i{8hx~F@HgyFT(P6MX(b_r@JnI z364oh%859Mwr3pz?z;~jNFF`9`5 zY9P&jYap(%Z20G$(bXa z^D5NLe`9G%P+QK9GqkH$rRV5O|u4hpoO|qJz;bhAtOVMn=p?-g4pjo z?w>H_N>*YWd;>Y}(3euTgK8Ua6ZDk&xn~I2o@W~w`Vp=&0}ad%56St9-e8MWc3sN( z@BxZS?K-rpu=aXj)sgepkS94}^I(e|ekOr|R1DzMx2&UeFGgVl2n3hjWI6ihPJ#xW zwS_+?6MNKFY-3Sw!T?nrd~=*ZEk-$+i-o>PO7un3hhttR0 zb&&{iKMP-)0My)67qzx((e-e1wX%%_x=l>0-kTHC$$m3Ye=^?mJu#f&&CNrG&;R1B zHyblQKzyhZKmlWlUEI#S?B6tKEG0pD6?PUn z0x*4Y%vNnSWJlWwg_!7uc)saI%fZ*Lxq6VyDQHUa%7P{YMK=Uwf5I>6oz!=mSL|?|f+X(&aDx_h0i6H23r(``8i1 z!^_rDmg3*JE@V8RyCEwZnI;QUE8e*%00N#jR%Ac(xSPzb7!6Xv?>?#DHyB2@MhXl3 zS#U{7LbqFDU@4SzLwxKzC=a^tJjHZ^ibp22TCKlKKStdg|0dqnvlz9hiW^yOufN`C zE*yA|RyeeQtiDwMt(5#rF#RUpIiq>)8y_}iqe4`k^DWhnp!flP8T_6>%;6WQZs>@!=owC@ulL)IYb+kf7#ga zE?%Hh!J?Nasvc^1jav-!=XE7FYfBT5B>{QJnJQ6QS;@@wSYcKQn8UO1I&d0&$+EuB z05l<>kDewd*g5Kz;rLNkA%DwfBl6q;p(($>FKB4;iu84KteA5JNH5-`=6K2npX9sk zTmw|7mT63`=0zSJo}}dDnD#*+GLxA!RS@UP)15)qiSe=-sD!U3s&vIp+KL%eI!S8u zdGL@_!)yYvTCiGSWQqbN=Li{i=+6{Gx8@$lXve=Xc<_xK7V&h&iafRcGE*8<)NC%C z>75F2Wq9g!16|bwhRw-_fD3S=zyh+7670Ft_NVV`XfUTYpb`1R$z`!Ug>Q}muA`4U z)K}r{nC8;il$${y&&l-o5sp>kGVfD?6MQDcDgqRD5sz6fm`-1g7)wE04equ=p=t2YrZ*QTCf zk@Krx`tkaK!!0yLha4WD0}gKJ)jJYz)a_>!E-DV0fW;HeDYDa#?&)#gT_dJF0>p@; zP8GPfx?!N_R=WAF0$ogAf8;{A_iX@2vXoMb}@#2xiw4nB=UI<;wAt)oI*iJ>jk!ExT6W2Y6bEgRsft?JdS-ph+srxWTmnelM^#mBGS(Kj-`7lYvuO3_xltWg2-vo9hBqYkovj>aBq8&oVK z)?Qy_;f^vB*FU{L(}H_w^s?KmwMauzj@-rN#=YDjg2250_Ujh`YSkFCAY}Bjq53+N zU4O^d&(u`DEDE{cUYce?b1pYT$@(8!bR%_c7fN*PdkmB1?lJp@e96Uw2AK{VNN=dm3s zAP~B1!+qWtmJ|S(H{f)hEMpOil!SX`tMW)AdHP+;%nWRs0e=7A3<1e{38dSrI6l60 zpLK9zRN6N;e;0g6Q76ToM z%k-ZX-MxKZlJo!WC8j8^C}AM3rHy+bxR(oAiD;);HbPuIOET{gCZPT6Y02wVL%gTH~YQVe5%=fY;mnT&-Kheo((7$e(Oi z(oIMd*%`F*ywS6zDtyTg`)lF$Zt&Ii3mHc8(|ZG zMStVtC=B%_T)M3%{ZQlxW2+_BKT{0`3wbdAJ{pWu_9a8q)@{%Q-pHdh(my1&K+(Zj znKBtntHelU$6u5t*v||A0p3^Y{4~Dr|J4Ejcs;RS>w7gAYZag|Xc3p|ud^{GklxzO zu;e10AzU|5G(Oi;D@+^;dt4!cp!MC6LR6XXPhQx|wXq*GD+oki?f#@Mj0UjD5Yg_u zU5Oi*phS=hg7?7L%HTMz+c9!Eyp4FwVwKfC`U4TL1|{nd1?w$f+5nUoz6i8A8-M3! zy+jQ?$LZr0p4ix2)X>m?G_=@pi7G=Ar@P4*If-BMiC<^%w*(plaEEP^kS>_3-ax)6e&##Qe&PRFTv|4P}nh z@XDP-955oArY=s+7>$sm#6<%r4_D9;oA0^id#&?X6VS*23#0wGD4tkG;YJ*B3f6S^ zILWx*iJV~$h_AeE@3+{Au@0lajPMYAIoZSpfs9X)+y>swsIS%%o?7To=Y) zXvBqx^sZ~9CMQeYiczymX)9reJi^#cGu>bJ>o6JdLas6yYlC_62E_lFAo}?+)zVJ6 z8voo6KG>@uMwBq0H?y7%?-MW=+22s0I~sHBG}10UI+5aEEqO$#4W$?#IPCi7S# z`ZG3LoT))|IW)&zmQQgGvNGFer@d(b9nFsG9hDSG(Ldki{1y5>09@$*)Pxz$V?uS74If$PWEICok>sD=te264%ec26oyg+iklu0O(O?oJ2;yO-G#Y zNL)&IF9V<*x2`^(1mGuS#Ei^m#uaP~G6|!ldMq6B`-`-ht<7sj1D-bwV>@@Ceq$4Y}jyic3OP zU6i?4JHdd!S<^-Ie|;UVxb&=s0tVKFT}U4e{SQtp@7*U6Xo2nxrY z0SpH6QDY*0gwC)3!07OBI7v%j15-BX7=FV$T21BS@? z=zvely1i)NhDAE%w)<7Gd<~t>SI&inaV4(nP zadUAoUZzESWG(jv(raUJ=UU3A7ko*Zx%MAfJH8YTa6J;{r_>YZer8^k*Pbo;tk2a} znC3oEL)~<`EdLPS6k$(KftMf7Ux!OW5mC9YFFnM6ifEkbu)Xk1ma+5&;KZGwdkUM` z#AWnY1ue5%k=GlqN#mhVIla84kS<-%(F^0Qcn-R!%85UD*nFW*g0L7ZYpLAUwlu6=rr-gM zb(K1C^v~h^O7XX9BE?y{1|QB7l0E&yOW!autRuzfdRcqb8PMJFy>o#?*;e_3EyXVOtKrT z#Kd(Zt8xl*@^69v0mV|qePxiD zkX~fLL5)QK?EX>fqrWRp1ZZr+x?z#^eN#_x8&J2ek4}9eWBFb2MJOEd5=4V{Xn#SW zgU!Yc75b=yk%NQEH8zE@8t2*IT06g5(cn*WH1SB}*n05TdfOu-e};f4L`P5Cn>K7n z4dO7U1ikLSj~5)kqejTgH(1)(C=9KZIqfVt&b^q?lN(xBTA+opKaRItP*L9qP`@#+X_N4FP0*Y+$(k70G0XH=@^*jK( z{t7lP7?trfY@>%EULx!RWYD?jkMpNuP-k_djvfg{Hx^}O@T-G#@W%%VTo{gKks8m|_Hw%@}AM)W%m$(bs zPj9FyGY-r=$|6wq7hKq2B1zTrJim#Uom!!K9}cKcxZ%cQCc5qHGJa^P0T{f5fRyO_ zaP&Z@D0St4X4PHFP2hRs?es{k-QAd#Io77LMLn=9#K!+k`ois1TR5lrY$@FC0;N@C zBoz9)>;iqo-^Dt##nz!^YMfx+b2r-g|+Qw(haYF=eIwY@sXt4gph-l?3--WY= z9L%g03Kvyy=OlOlX%YzlMUSnpf%c5s%ixgi=+CPJ%iCDS? z>&11P@9D$IFf`&`ep*42Y9q4Fnw8kYVe6C8&t9^f^ONz_JG{4QT$Q^7X?NJu^w?=d zOp=p|*+T@TYF~mb2lN3rH4{TW#0TIweB$6h)|-H${a-830h}*kyJ%h! zWZ;lJuN)%4pD>5j4ui3Ikc!QDFE}%QT9FDkj0a9Q4AtHlG`8~z7yuB&Yse1|;ewGO1m4KkRn+9^J&G$g#U78(FRSc zdAbBgMc-avQtx8(*RSUuJOm~zp5*NtVq4$>Z346Ve*TLo2P{G>u9PJ7g-wZeK!c0R zHvu%kf{Q9y;?*(en&#)yv$MlH%>H08KSdrM_G*cpcKM*NxH0OkgyyjB!68!@b;OoS z$-Eq8TCn^VUn9L|3APZi&ig%0=sZM&!fqYOE7NYmknq=)0RY}d+wE{|*onSjsTe22 z02Ft3J2}h%BVuj^nSOUD<>%}#5ZuPeIt{;-S0Xz!Xra|k59j~=9wX4pz&~V}ZnV!j zJ5h%$FE5vD6)rDZL-1(Bl#xflBSpKSm;E1gE(6T^oQ|1x3izvx*Y2}z5!I{eBHBWc zZ2F80*Ya=rHZ?w%Ns5HXQJkn&KfU>zc3P7 z`1LVb*@L~YhW0w&Yk)Tx7n72(XSrs+c~M)5RvJ2ienBg3g0lHspr#GcvKxWFe``yK zNo>edogjSR0?AHW#b1Z`8~WM!KBl#_!L~NI$o%wF5q*TdEhIE(wbt4w!M&ArSGPz@ zS=x{vgHD`U->=)!RPE(T`~Ktm`j0ZOfa6h*yB2K? zMnp?Zl-Sy5Qx&@-WRu?ChN>0aLS1V(xPYno$;pGgV`pGm?gXS?TBxEmonwibwHChh z10nscXd}J4mo44QU|GMXr8CP`k_BECmKvOk&(%=Ed%v0+j7=YVzq4k$4!b46Bnpc! z27J}RK~>Ztp0|))S7(@{w97PZ)ASD$B?`2)5L{i68H1CZWGpbQY9UQ9Y~Dlv^8hYfMEC#sPf64w!2s&h|1F7t+!CVSe9PDaY2=?9 znWc-bU(juuFLEr`mVxwcb+xzz3HJdgJLhlYUK=vZ{IYldHZ=R?2A-6Xq&GoO(@VN) z&MU+2Axsv2+!faw{`BDsldVh8?nlzpypChC1c)#IBWL;hcXGKSgS{-ePz(kP45syj z|MHrZDiRugVD6{$i|W6|F{#ppnT+%{9CbH*+#A)`Pi^h$+RbYp_>--W$QHq!M`OG0 zfs?q55HIntxWOO>WAZt*H6+t+O7Tc7M$NtJUzzOxx>x^4(GPR={Z5BJe7ASUSqs{? zN}9QD4Rx%7^egF!nyUmbfYu9?vS+9$2~IXH=D>!J)ehIzIfDYlg}csopF{gt?!sOc z@^GJ1ptLIT-AH4&UQDNl0Ew0qY0MSr^A(`N-TxTO>qQs#N|VD>mnbO6)N3{(-)psi z6VruP@3o~4d;bU9^ZWG3iRTKQ=7lKFxTsG>zvIr|Ygb2FR(NLLgmcBH0hpek>r_;V za7Hn6Qc+gx@o~km&*}AjB3HW%{zZQ<^{+H#dzjuGF)sCX2I&$Mw$8Dyzrpculu>+_6=1K|Q zqY-j3BpL>73%95rAyGRvm#d;IyXC6&zI~HAoXE7pK;8?`tl;v|SXty3 z76vmdK3vHkRSMNz&VCiI?Kymh@yfTuYeFEq=I>x;xPsTOETx_Djo~5s_*1+Adx7lw z$xT?AML__Jaf0%6A5V<(WeXGnBOq%D)i>5Hv>TaiFU6P@!2N#<+6`0x$70?l{$jyU z$qrCRPS9<$D;_C<=1I5=8#IHqQ{ts{L?Whd0um_~zg%Rwj$VDFGBe5M;O8>ESREHb z5*nR0t>axp7a==x{dRD0f4hF{%k-`Kx)zXkrp)@wm~uk%QAc2E@Hp8|Nqhi;z5is`3#g$4~E31Y57tbKuuZU=lG0wBQ7D%T^t@Z{v{9 zKOz(HUY2tx!ZIQ%s++s4D@hXa6MIpFhc8op$qh+F&eGvY^$a&7uboZ>mp_hzlVH5k z`Mhd|s3gcvpusuSen`5N*l?7+U`7@yK?eqoF^?$DVzT=Ss|@vzVtY95U-81AutycA z9`$y&ki7W1DPNex7?m{>wzp4a1CFM;(h3H*eh@lTq)KB!Rv2i9n8Psj$!WHY5VPwz ztf7n;oNLIUw>$V+HfTp+z_=*hgyVt^&~~qK(vTCbZj2ljs){DlPYlxKShxGqufZB- zun2voOG17i{A>>hn+=e^^MvCOO^BwC(u_)LiJ3I@=Z1h9W(fsNq}PYJpsD`k15Um! z<BVHd) z_8H?k6Xre%Tx?w|AGw54yS(#b3hQ;hMv9DE?mD1`(FikLp8>}h%~Ah%Da_QQ1?~tC zoJ^d#8!(QCveL7v6o1yQXnOv~BoU*!&VFWYV2D;_0p%tLgKvTmA`gPBnUmW;e|9lqskSY+Z>W+Ih zt^LnW^ebLG`vTaF=69dgAtW9>>9q5>J{1r^wj~&HxL?#S=DF^!_xr~BX0OZ>iq9CZ zszB$F=t+Ju8vQE-f&Jhre%YdYPf_~!E0aF9f0Pk3XmSck&QV} zpLiWm!uy@K(2?46ereTL)>)S+y1U>@oov?sYP(_42B6zv`*LM%ORO}FU>sgVJ@N6O zgiQfkd;koWRajUnKU1&ow6qyyr3=G=m3#H?&cE49Db|Yu;fKKhO8;kb6rgeS^Pgu* zc6W6YX%d#i%iCgk1qtJ<_Uq5)HNz%NbmL&pyAuDQn{idRl1Z2$6UuQlq0s({L~~2a zgI_OqJb0`$LYXO#E?vq==~7QZ-t&jX?J^Ys`jxt=S-ANX5M{K-++LiYc@6r=BS(Rs zQvpOHYj@RiLB~fn0c|oDr9FrrMf%i+=3Ri!X;ZICk%V+10R@BPIy~|Lqz(8PXy=-#-a0K7)&jE`S2v&G+S&z-yl`$9y1;?C zaW!W88d*rx1Pvb~NQ=bCD-dJi{=k8M2uXTld;HlO{T&^01Ew%%ZFx~^XmsTi=(V$U zmjIu)eW=EUr7Pu<`QX+~ftKXt19-LuNf74g00SvejBei$c-nH0MljF&@qaYDr(d>i2W}T1YahP&Wz{4*h~;NS zBXJ9fp}&ESgKwc}qp~Y5xm`Vea&r!~Tw)F_2GqUViTYUjv1ZEsmd>c_C)x+vWu2E8 zZg`4=_znV?_lMcUTT9qssvLKyn3>Yp(78hs0u3>6P<(MqitTUckzq3L^WvEGUxKwL zBV$&dgYT2zi6W+ALBrkYR-kHqlUyWS*qxOerzLuD2$bO%15U+MM$z@6DyQF&eC{>i z?eF5E&arowoBQqI=;NZB4rdL7R}bs~UajzI-o+NH3vsirp@jo^fvqYyCI<3)l8_ZQI!?=a*G?QJL9j+4OVZ-}}{xDO{t$ zXEIGQW^txpWm`gLIAY!zb%v>7yFiY;`L87pqoDkQSrm~+x}6(qKBr+1xu>AkgfatO zlxoZty|oc;sZe3 znN<(wto+`cq`C7wXlT;S;*1{{!<=gMG^!KaFE#ip%K?O`!%Tko%M|m(XK9%KvHsAaI{P zYKUc`8PjX;LU{mi3RiNv`|mgTaqqVVMw!2oyTznSqFcufiORney`}`<*6Aom5RN(! zlD2Ga@`0+psU&U9m>AS8y~uku)l;ucaZfnjkz6_dV+8g3$?$ zKs>}_j|LFujgDeuqn?l7?|IPieYYboc=kNK(U|!KqIPJ_r<}6iM>NBGYEW1xdr_A? z2&@94fir=U%f`<}2`3#)`7bxZwQFol0N7ukiBsnGhfb?C$VPQ;d`ohg0LJC@^Hg97 zhYI~m0>ex{xFzVi@Ooyu%bx~t5U_87)b-uZk2ALY&))(D(%Lu&_FtQ4QYKX3DVvA; zh}YcL&f$ae=}G*Du&bUT9yO0SeDw9MB$|&TFl>D!vnbc;5AP_y!M(IQNm#+k{Ju^5 zcb`z^(gC`*<2nJ3fSU1j9O}mY^-q??1YIh>@IhUqWPuMII#f;_!#{;|AKbpJvRJI6 z&|nMDOXwiO!?q!(zl;;)LdO`dz``h+e?igLCm2)p5t>DHjvK26iNqIE4{q&agC950 z>}Jm2S`p4Z^V4&U@s2$Qc#KU}?#Y@{PNFgZeWX8}-G%zTp1_;DE+v)gdF zrR((JZF$wM>}#vC17I4~gYPGfoZ;(s*#8|NP|i1-Z71mU)a zwkE0qB%u%71bWq|g4olqTp(q#+7c}qUXn6#bNjM}veYF9?j8m!JD0bE2f8-TKYfXU zy`45U6v4%ql2RZK#=P#a5DQ{R9HVO)Q%FVv{o6ide2N!nXcOW*U z_d*M?%@7A47x_Tr@sV|;|9g_A;ZISO_ZKkpIZT=_K+Ms2SBC!5$X%vi%|JY3L?keg zvUdYmOAvAy+4{TL@`+B=>=F-c$BD1)=_|2sP}cG~+Y!@l!K5Us`xHlp%HrBVXY_tu zyCI4tw;0*?;?#%mQa1LK&lJ`21}NdM+nw$07jPspDjAgL)N8&+W6W3sBM{^4CGQvZ zq=k#_Z&`~KJ&*vw!QxF7Qz!mCi@C~^@k#&nM?9>v&;;dZ_tP6RG#7wR^Rq#>L$kj0{9GTsU#6gS^qCU;p9rU#?Lj#K zK8^wI8U>fC_`J?sKz<;mps|EnCqaYy2G1FLSX{oxpfiXIxIDOlF!FKeAxV$_bd@&D zz<=PJon80GB}@ID2Nv1Yd-BgfHK|pUAFYwD7T;kxzxuSGt>%S?jq>Xolz+`a_AM4! zND1CfOonJnWPCxLNgw-ZJL3956A81^F4Q1GRo3kIEuk_Knu5%`;!O6c`0syWC)hiP z%Zv3n`@K=nB4f2Owh|M;O50?J&z+_@|9g|`Mg%yr8h2)nwDoogoYP=xev(!y3C zbrcKikVI%wFrt3|Qv!VF{kL1W_FyRo1twG=kU^3LimidctyU2u;r@A&5^~w`iTS+G zkN}q>A1v$0^PcEaF!#p|oir?3;mb~k^^gzEp8pu}tD@CEJ|b5f!brd<7&nTB^xG^@ zd3!i9KF53t1-71SV2`>}r8;8&->w+}GUete!UXeGVPwAmP}l>Dc+WFe@&KE8a(4u{ zUvnr3c2@U9o8DTmwg4bHRn}^UdfABr1QX2eVsOpAGa6Sh_cmq-FmMLIaol+ni78&k)c8(8Y&pJ?b1~VUqv;eB;vtCq? zxzMLi2AqdaKeW`^+>{j)^qAhbC5*+5NDmq&(0KL5{1NG<*8+`1Q_*}C=={dPNAPG^AX3`NtxvjGiUPe5AzedDqk!xTqc~Q!lM*)bnp(>t~Q4GOf8jkzxFi2#fNk z2vRDMYZq}Um=|<|nx=6cFf})_ggM>Jyz?4f@t0N#Q3Z@WE3WwgYihD0;{SCZO|xXhnM7DdMd&0zyAuSyS}^ruCrPCTO;*wkDA-7FI03gh6ia$VVn;WMJqnC`{wEnIkR4u-2@zvojA> z=JwQq!GY;P_8v#=x0f@1l2ZX|T5k z?VOt{^M3!bx|B1Rla>0^L{2~rc^|*yEHdwjpPzwqdRb&ypZ`M}L=Q?7T96|{(CI1n z2=1sU@zW+SIa}8;+Mjh0WUU)X#0|W9TQR$Qf&{JH#Dm5y>EjxHF}}B$mKRW~z(%@^ z=uDo`eSh0((_}6gFxobEHuP*ZojmGpivcf)Md`gK&OAXNF|c85VvXr7GPPe<#ALzL z*LwmeVxHtPanNokVA#XBc_ZU!>R38NVbkFR&yy>ZBm6dpqf$_^RV!9t7|fT6)TeuBrDwfBs~}{lxB|InrNl`1W=Ivp>?7?+46N(}G~f zJ_0x%LNKI2HDl&N>`|jy+*#0i_Z1-6qJCbNs>Tx`55ck4nM}fYJEQ-gybm4wk{Wu! z?uPx{It@=GrM;a#rP1p0bs2G_4ESoX5eTjnQ;;fMHF1fM!#)$Sdu2WF%OiI%prRdgTH35FO>q zaH{6Q3NZx${lz!mf&Ijq6|%d8D;S+dnf^Zl49sn8*q>a%`o&+q(DfawwH^!F zXtKjDQk`HdTrT(26S!4r2Hs1aMLd88=SdlD`}X$k#3aLGx%OJxiXF5coLPBgw!7f7 zwHd63GYk$eP%7kVDiq^{j#4}Z4j1}=tiYAZ;ju&E3Qr^mdLaPi;9w*uWyrR3RpDRP zk|@I_J{&-CLs#GRDMp$1-$uIbif%%FUOY-!JgBwDQdwvi!aSzAl2TWy?z`c>!&6qC z!pILFl9m}pqxFt$F>}&$=5|fHKM7HY(Ucmj)*0i_2Orma25Sfty9Z*a7|YH*M|jvb zI@o3|E3pk#G1zM`TR(>yUPBOk4!7}gpoVY3fRBL#yJ6>ogPC#coB46nGryuDNz?T|McnJ2XX^iN5x-Phdsf7q zxn7vR76c2Y%KL2dF;8%@^zR9aD+NGO6isLgJ&4p3#y{~Vv#XB(#gy<%yw(4A3D?v3 zwWE<^LPBs`xJ>jBX|f#8Vfo7s_SwI#c-%`)?-Y5_V#O!HD)RC#EY)+#H_)NCa( z7|+cAiXV^QHsi$$_oaNsjhQR4G#_X3B>TeA8MbgpSTg~+8+zJi$+MLySkW*v+CPH> z0%LN{Goy^0)r@ll>G}&}u3@+L&3a&4$a}$WEJAVK4wpx9!xkd%082EPN$oeQqZJVO z!sQB0&mrrf`(mrc<4!&phmGzXdmfqg+8!{i_U46YtS8Wja{70}n2 zPet_I8iu&0uiqVFI>+yW&JtAUphBRc+P5)$bVKxj26)t_#zr043(20Bg0b|O=Oz%O z=b15L)_1SCnz>X8R!OBzzev|q%>GB03jqRDAfZ%_aPH~p!Kig+XFyG6{q1|*fV5tRn>)|3eHa#AXNPaPwd%ssHDG(<|PdX6- z=XqtUI10R<@Or4-y4zjiP7)Sh3Ccwq7rBDDW0|PzzFr~FN`l=jM((2uAn&E#u*A5+ z?i_42I#<-GF;zj`CObGpO2PvZ+0o=#4k+Qi>p zmN#)AgNuy)rUgu(psAoJ9YMM=rO1VLU`R&L9&dHbw7efWd34mY!rW#QIZOBGS1Z7%{!iX-Jp5-z4^OTq*4}WmoTt7N`XFSG{tS?jCEh<+sjjxAG0$n z(OR~o0a0b>RzU_H=grpDEO~>7$?iB+YZ%=;!4>T72QHZXP?L;1Drr|QARZ#H#8w6W znQs&3?g9-0IcV_6^U*d>EBLbYf%hip`ELV`R9C-4ZS~FCMmgBAMH)~C5W$QUK2fl; zHvS|)J9sgxSFKZEz`&;h+z;wK)YaOta`ba;1-sD(TrqO6n6QiFYPK&0gTmApV6rut z>Ldm^zjPP;AyxqrNnEyYt?lxYMcENrFX=&YVWOcgc?FOGOtb~WxlquaOcj^&gECRS z@3l~TN?hvr-kwiWi8#1~<2R5P!4!17AU=lNASi7x&b|bb6il=+&`i1S?rD#I6gG-B z7s6x&MBQ;n5V)^QPHAhWUzH9*GPp|N8c*%Lp{2Y~9mf{6?4NWJ$=D$93XVvCfHe&) zc=rIHu?yL^%DFm=3HbV?GDnD!xbHUzyX)k3~aO75#)6zbj&fNjk zC1BCy*RJI!JoFC&rQ;V!4XgQIU+sq(+bH3?^ue;GryV(a^{QmPuB0|on+`wM47?J% zv%TsacaMvD7j1ne`P6FpJ~`v-x$A8PRiHUF02qBuJJ zmy2lEi^)aQ<+aw9(j}s)(GBG^qhBIo;jU_2Ggh*AmJ#xd#+iEwck$NM^WVyhgt_Xr zer2BjwItd$!Q0n(D}!CBeHgo@RN_}apnqjj)f*$6VIA^$k>SSb*|FAg6NVDfYs$%Y ztxra9s}jZR49m;D0i$WKWXNyB$@UB7QogX85h`z5gPA9sP^nmoMBKfJ8q0N&7 zkY8^S3>p{Eu(GrN$`@kw}-%;d$7TI8ak{#79xaCsm*K<2!itZeM8% znPB*%<4S(lc{XfO{>mwgQ1j>WF+H4U!2A5!d$>x99`{x%1;R8?bnSA6MpJ5H2W+sz z441uJ{rx-n=i#BIN|j`1mkJl+Nqv}XGyEGxW8YWA>ePwhN816L{D^?V(G1mc0=cX@ zTkgk&*5OB`Z&k0qP`YMZ>7F6B`|}24D;%Vj_>9en*Q|u^lat>?bSv`5zqaargIQ=w zl|SJ?SoqpSED!Bp3DtgKMc4lza&55p>ZokMds-_cie#Vt$JM4F_Z~G4H49x@pIr7S zf8-gE+x$qo@op?B%(nvmmiU#a*WcQ+yo2*%M^Qhx%V_2L%UdJ_XnLiJ`@HVMdbyY% zDQ|i`abDTI?dpP&po)^ui3mAPWb1VC(`=9#U7`+y9WrH){+8=OOmG5@eG%;k6fa5n z)79-CBO}9kk8Er%@kE4i`lq<t;|tt=9Rd!?LLt zA)%kH+v3aI0kD{J&LX~bpL#7hIXUa$qIh@zUK>}<&iX`y3Q05{;)24>z<{VTL>PWM zDL-`{vl~*v=nfg%!UTk}#Zy^&m0zZVq&na$3%UoB7alt@VL zdCG3GU!l!FKc^qYN$dzZL$H7f_x4>@=-mr>qEj`vEnG6lnXg-M*=O8Myq-GC&(Cdm z<#q6PVV+-LQn)QG!>%V%r7I_zEZ1BV-#+u{60uI(;bGs`zCPR9qVn5|^nO*9#Y0}p zu2qkcuTT)OCM#nt2Qc~BO0l@;X#rCIs5X;lYev@SdrQ8t38?<>Qvz&FUzr`&VteTX zXXMTJZca$p`4JgZ=o45QHQ<;tH9YnrH!j^gTjx>yQdfggu@w20CTJ#h>K4oL7<-s} z1zqm^+%{F6EjhR7&V)v5F82P>_1V6=c0gYQw+bkQaNC0?w^Eu01{_|8Gqu7iIr1%~ z;9#P6-#BvFvB8|KLG3`FaTHxuVi@DDBc-KdKxnX&v)pXkmN^6kc99h|q%VDyJHYTg^1Y!I z4uaFfh3gT5#GfAFZ#d+|6vsh`T1ny*9^ob?CWe+BKwZvWtCCp>{_x5U2emZ}Xdo^Z zK0wuj47tRA93~<@Hf|TCbZu?Ox**=S8nf_sa_l8>bf^8is?LXH$9N@0t&NrqNvwV~ zrTc-InOUhxmMwq0CW#bvfgBiD|L#LvjY2+8V#ob1DZgXMT)`sWJaHGUn5dea#~)(S#6?^n&u8sE&iuy^GJlv9OpS7P&&JmD>R4vz6OO=K+f z3gV5A--4L3)HZupvr%$XIF%muPGr-F&&@ z#qtANY5QPx?mpHp9>q@S`G%b|gx%%7v9B^k&-DunVp*<>i;fkH`Fd5s*8TbSD!9P> zXZ>}+j_p=naM;1l2`(Gk$DXd&Xc1BxRGhGqj4-(6mhB5Z9FA;vbg9)uQ+@Bsmfx$$ z3tV>^=8)+J**`!?dT*$)D6B5X6e6p^3J&hKThgYm7qYf0(q#Mp z{gOEkOl=Hu>*o|Q#6ocBEzK)PyNhL1V0319bsM?x7?$bAyiv)9aj?t(_)b$A`&}O) zbTfwTTjmd_!^YmB0vjK+%sLTUP8x#rc&!dF4I=4GmdHHN>)Mc1&%V%^G=I26-5*5G z7Qp&v*{i^dnN}_LQZS9v);{c<9u~9de5-c%`|saOEQn5{Y)3SGBgQ_@A^dpY<`zyj z^>afjZ?x59^DtMe6~aG_=vL}8@*UV5Q!}fd6xmZ=D#J*&*z)q`yRFg!^Vjde*~v+* zv1=;Is1?45^Icn`h82Lkr=@YEuEVw|sIio;1zHH^&{tXimHE($F^^n@^V@dGji*g3 zbXV564$i%vo}?t*ynu1ZJ@Z4?&5Pa(?wFXsg|)Rm9OYY*kp$%2cURVqk5(Sku+Z<6 zoX?MAF8dpBl%`r9a?6l1y@!8&Pt3+bLe%r3c~wp6 zf{749)K8U2L&k1G{FOf%%}`AI!ZiGSz;4Bi2lKr1kY;LVFWv3z%|i2s+|9BdXlVfx zCZHZh^=7KT3~1BD-xflYNpfC37vXEj-q!nwS$%8T7_1;-6^=*ne6bnj;3~y&)q7~t zF5SOGwrA~PkV(%`{CYgYbY}> zE)lW*SGy3TFt}v&EDV=`|1$g*Q#|<5xl|-$u4mAKjl4tAW%OADFD2#_WVNG>)=~{G zXY5HlzD;o!eD96Vjl$33KCdN{USU_9%fY$tuZZ&prRj#y&?w_M^HOl!_vBc+_tk?a zGZmWXbK#(@g0?7S&L#0P1FWzDgBpZnnKinumD^?%(Rs7gD18-7o0SiLnA5!Tkh7fZ zEUtR$&K(w?Pwx3z{AS*Vpr5E+TBzM2{$BKKn|2D>hV!UgZ(?ZNkeem|5b9LH#1O)LeCsa6!NSPLi7| zQdsI*!rs>7$)}c;i?<_xUzE1`XwC{lm54%p7v9y->F=d}faZXxKs0@{*?Z*U(yPMt z1pY=271k*EJe*R-)_Ze2v8Ip0ZYy}I{je6)#aipm3A0F7zhJvl8{;eeY~l(vjmnLb z;hZ{G0K1VHM%mrnL^d{@InusWsk1VQeshp1Ct zj{h>spKV}CzRW#DMdPrwp}W49VlWXndVt&xd*j1HZ9p~=7S6J!JxMU=<9SB(%c}OB zE9~Nx55)RDq6(=QxJ7;5GCcg;QFcKhSMygSF#uED% z5TAPIwcJP%l?jU_$mD0@i(wNA1w#w(0}1zH_+sbr|YFh3=e3y)Ji%fO#jjNr+dvKL(-9CjC=Zf!xnM$polg{n7WU^K_@G z`uj0q$6koB)zHkWrEnP!@z>Q}rQn1($ZKM6!`35qcu7%|Q4y4ptnPN~nEz-22>Hoj z`ZVF8zn^HzPY3QP0u8uEZWRZD(bTHlu zM;jXoC113wI;8J(>}X`m%<^|E^GUgoxaV2nL}J&f$NN5C7Ty-W>+mdApHDrMeuorD z%^B&0D_y$4HCAQB(z`eXqpLZ$#@K74TpWJaoPXuZSh_7St4a>o1n7R>1AK}(#iw5` zsnCOeE+cVIESB_vP}0tF@&eM=&d^Y9R$$6Qn1awBmLK^cfy3`W2c+=r(Gv|Xj|mR9 z$sDUWB=*v2`kQ_Mh zukXMB1S~5`9UFO)j@$+nrGO0}Fl&rc)_N&d^X zQ|}y*uMUMzI5UP&)9W+sQY!>FeFbp|mWRIgGJ8Qc>JJy{&3AA2t^d@-fp5*|rf&v1 zwr1S>@9M%Bk7j%M)*(@?Z)uKLTzdR}1At|V@g~^r(8CYnlDivb)nn1$%tQ{5Bc3S) z1~&pqBED>i_lFJD_5b;ETW9z${@x+uxgf9W?_$-ibCxoBQTSj0F`OY#cJ<&1A(bt z8FEp#hviP(9A4&?M`U5@&yaNS3Z){^Cc^dwh1A5+CbZx3kN>T`J$QiwZ&a@^M{?jd z3igJjzL)jMvgM?fzj7JX3ep!L25)6>C{u^s2wriGK5bW135!AIGw;%DqGK!z?JeAj z9iQH}I*qKN3#7eXkSEg9k>L*BSL=SN_WRccI~Sg`Bl?{0#&6WxaQEZY>}gEI`711u zwE;R^8{nu4h-n(HJMjTD%wcWfvA7o zHWPK%zt^JgHP_l-op(k?ecpmqsN;7SUk?1uKt{9{8)8ge_j{@TqDB4=`&w*>Yw~8# zxl7Kwa*nmucbo7rN{Zh(58yRt4Dl|(c6jON0u-HR==7U)}m_fd!8es z>%FC=1;1o=i1K#y^kqzkG{gGYFWQ#$wQp4%`98P=u_*=*rH4Df2bo6W6M5 zPvP|cxdWMDaI^j$>1GUhRuPb+@U23Z4Ae3#Yhul}3G=3F_atld_%j}T!*-PPTYdd_>zPNS!7*YtktsfeC zIOArJhrN`r4Xcc;4fl}fO=>m)Ek^W8(0FO)LEUd^!;D>bqp5aVmew4tyl(j2Z8eA< zKq4^~LxhtQtKhUKr)z2c*zmriaI)3Bniy7&KQjXPoA3ZI%H?$O9%%BqAF$xO$kWQO zKd3LB%qJV^Wf-G! zVcyicIyvYbq*ud23vA-dvT|mxx|CAM9bs-(D(hW%4#A)0g9c3yfz1eK75`_Q1z~tJ zTux#2axBUyRhRekp0-ZaD@QT%h_J><(SSe#nJ6w@+~36C@7!VMg%{u0xYfnjYtV`a zb#-Gc0Q65#_E$OZ2h4JsQIif-&VAb{Bk)x5B^gCB9*|g(XXZw^GhNm6f^|u0JzJ z#&XOk$+D7j{?%_sG2JTHhb|A5oqUxg$8&@za1d2KB8rNN=_tCeM_Ufb>%YynkS1#q zs=||K|$)*b@`NmZb!6M8Xgf);J(TymPSh zZeQVPN*JtpIR9HC5A;*8W*I*HEi?EcRsnkLpRa+W&tD)T#nQk+pHIsq%r9T)*Psbo z9iX?-o1Y%%P8PkmCBloHdunFBQNdio!qpg%+)M^d!4t3j*At*e3!mgv5?3rb9Y}ZU z5wEybVN?0SnoXR{n_R}N8avQ`TB_p>uhNGvY)iw^$!M+-2E8=I>qJ2tr;H3cgW&Jg z83#LErIJo*9?bVQs_8yRI|Z9+!!T8xt%WmHl@PdaAlfJhv+N#7+9h^7@}NBcEJoeE zZWq=%-Ln(6TU*4*v6T({8-Svm635S4nSzh=qt@2W=WLh-Q~s~!pRyS9c5)-1`tfu2 z`nk^SQA))B=>MhJqf8qi#^g$3$7XX&WX=)8>nGP`n!|gHF$d6;8aOla z;OQU*V+5Pt`1Tu0Aoorxkm#n_xy)iH@*=7a$|OEwjIvAp)b3$HqXdP#0B79B6J5!4 zv6m%Lpg0w3II|#Uf-p_fj~_p5?y2)dw`B>x zvSIXhTANZpY(2$F;jcxjF}ZRWxzc{=e%9}67~@QpV>;q_eAYll2UGpiZdQds=JI2% z>D-zSiJ>y!L-7$%ym|_eAI6f3iW+|B&3UZ8yDYkRSEsV%BEjVLk`{`7`q_JX1DEyC;^q5M zzmz%Cd*@5SYw+Y$rScj4SmY=^*^1QOfoBkC%XQJU#9J$fW3~^=_yOc#2)WxzBi#L; z-z$Vyy~Fk8@{aU-I&Q(iH(e(7$*=$XIV?zilGjkQA7i+D|M<4L}Y#bEEodc}Obi2al+K($cLN>7{oXXI@}+ zQ{TKq*7=7W*}Q`gWKyCyJ31#c?Tl}5fkB1j$5fuT{?W)EYXR3DrEj$~bxb}AT33eK zR$rIxYpPbM`kq4s9DwW9<+vl{;Iu+ zfPlLj^bL+pwd*5|-@lhpy!c`#7yl%N1d+AEKl1wG%Ai3&m$>>#7ysp@{trf_yY2)R z>Tb`?WeydrGN_)OOrhT2NdhM{kQG9d4lfM_U{LzkwcrbduPXJkD3y4iJ|RKzEiDoY z`%dWeoYP(D7$owq53I!42#0}NI!VG!*|jE5ON1)2^&zPQdTA*9sLs8_`e5KLyx~6z z=wS;Dke4JO!=Zs(RSzqY2)a-rHN2M4kizz)exgLDM^K8i?wsix7bqgT0ja-MkZUgj znkL{lfAc`o3Zk`NL|eEu)fHG#Eue94b5~btxHO}vnS|`)<~%gcL@1cB*5h`&%#4btbx4A4F0@c4Slaf^fj6AJzrdtPBzT{nj= zn9mdsZoq+bHZoIsq*T2P z^YAP^wu4_b_X8Ij7}&OSFXun7pV4I`JS)DOKKT7_gdEIv7W3UiB#dps2vwBF)>b|k z--fV-5wYNGg+zNAbC>LY`)em1XfH3@^)arT3%b>laN;Z;?l$gIHsj-3H3~dEzx|x3 zGWwTVQpKSAU;2)uc_AwS$bCiq-JvwLg=_Oyw0y2ii0Hv5I%qf+wkBavk-ChtI-e4_ zi*2xv{!->kdzpwvuUa`=B%Zl7Tw;d65<36()(Mm5B^48EeO@y!M|>u|@-Azl&1VLd zbfyo0LjRmM+VuUqNQPJImoQ9@G_fTCRne22sHdw{N_qIPhP3&~;eA$j$0{~lR~Y`B zTJVIw{yaxRqe3TqI|&vUNHRaxC4^Pwn8{frSm8P*)?8cv;M#g09z7@YKlAczV41O# zlY|Zg^9~CjE-+n;i{-vfzfYIy>Mck>2|BGOv3TvpOiXOjD3!|kh-RalGie2SRT&8; z>I~(?&apqN@X+|Ny}i9X2kf=x5D2x;1S(6|?~RR)ak>*ZS3Xq=m0Ty`>GDw}O1y-YsRo+H)WW@db8{=!=e0EoZ@;x+x?hfGP;5b(Z zyq0Lh7xyH7N`!f3v4(sw^0MM5Rn?uW+n2l5(^T7aZXf#AaYpqFT#%#=dp<21Bmq2= zf}>_vAT>2LkVvpX#||fceC09MZE6F7=(f8jk2x%;qi-sXvs=CTs7QXXOh!s7&pn@B zf92lj^!I78U^F_hc-T&=E3n`~gG;u1#`vzS*J?#?rp`;8K8D9-I(>~uo3|S8?ze-m z??wB?7p+c=aICuuRzEG>ye*JzQs#BlZxIhz0C(vz%p|emn>)7l`WM8iC4_|B$g-Mg z@%6H~*F05jQS|8SYcC0b9&w|(_w`Wy5HQsPfPd%BV@VsWTym~ye(b*9Gyi3I?=7h0 zjf(O~=8{pU1XBFEc0^)70dto_^B!RqdD*}Xg>Or5@24ZVSyj^2^{RX)J;t7?#Uqut zqTBwE?E=+m=qBEXD8AEbV0=TKjC{p}2?Z3NEcci@~_e0GX!%8Bu#IIWyO*W1mVCM)3e*@wZ zR0fL>^<~f&5w*0y0_dshaT`2#A}lIDFgJ@QIWOC5Gd<?8&%%;i(llzIfdF)$dV_O2J+j-D_$OoJ1&j9qa2?HG~v0RZy|(j}(E? zxDtJ@jQ|F+{P84UX}uivbMrO`5FuC&K47Sl5ORLQ9BbLF&0>IV@f-dE0N)NtRC%3| z(sk(5eL(=u$gN-f5{@xvajv5X&n3h{8oB#1Wa#E z-ki{Q>*wC>{Gj;J{>5LfNgmPFgRkU00c+vm3ZOV8A|OkG>s857y4$q)-Q{A;KJI3a zBThvRe{3928~(QhxkD*W4}I+J3~i@w{s%K(ZV3KoBx6X) z?U{FeKpKMnaH#7x@AfZk8L{qk6tM2(5-cWT9<0CD=XYTLad&rG1lmzp5J*WDQl%c( z%XRwxy3nj=cVev*SjZj-$js}svJJt`9~b;nn)5P>9y3@3p%rD=hYN(|x6FOKJxzde|9L>_uBN%_DLab2q=rW`k(YoU z=FZeR9y)W=w_Cvb1pp|}~ds4dk4a|ED2xk?AG}`VYyn$W! zj}>>#cIvthp2P}`dVwPWGhMm1LwQzi$aUH)MmbZ+S_~b*!40 zuWY|SdN&TdL*y>=NqueiFGiWVj!Q>X(tg||i5+;kn89DQA{*L<_co-fYRdd_9mOI6 zEN+`R}|}~N2qDI!0)Fg zB%EN>BzzMXctRTpN-r3qSI`ys>Q0 zNgaK)3cAY$-{B?wY&t_WII1x(8nAVpj1^0mNsl^F7|3|N0LsDgn#OHFqeZIRUzj8j z{^YJJ*kRPocP?0t2!2J^$Igob-Cmcn^BP_ zTf>A~Jd%{NkylrOAsh3i+G%bn#V_0PVlG4vEnbsy$Hx89=qR@!M%S_pFTJ}zFMa_5 z<9OAhT9F48Ng=GCifW|^NGdG9$!M{)79d~2d4ApMBeaDIFR$kWNpP^}VzkY9xA9z6=X;bDv$?>Tv zdN7z8C`X8C>gHNi=LjYXx>daMXfvk;*Cx;8HRyYGcZo)idT#Dk?*FBPS4(xLqOmEY zYA4i?f`-o)xu-anSf| zJy3NH&i(o$Tr$mrnSM(>`c!6y@9D=^d@N==lPC6oJ-rv4eeGwEA*|!gH4nVCufP!` zVm0?b?)^K`&v*-@)6fsyU{35XOHW0IznrUr1j;~sWhGo$^+V{gfgjBA^Z?eGmEupf zjEKZ{E#vJiOoAnPTEmk#`*weKrQV?gT$>kV7@AXu_6`Nf2LD`y)(j58w?50Uaf@Wl z#fI}TLYqd!Al~Z39347$<*MVX1K#G0K_zfIFPZTP8r-<7b7RVG@5Zhbkz2cp0mQ>34k?Y5w_x9g?7Y77E@j?*fDQDT( z2%i1<$qpq}j>1eLlyWrhg8w=Ck#zz@;_`IK>w0saHI(UD-^7ng<;mJVF0e#KDAVe* zkVtHas;gE}IWx#fo09DH!5NiElAy9C2`f_bweNDi?J(0}CbKAG8F*X0)ff_|InDg> z<9YZd&rKV1g5t0zADn${ya#<@3fH=QSMIRsM2T$gdH0Bcz|-QFUY6l7ngOcYqdNt4 z?b4xfJ9WV*zx}X%1U9Ht_v&kH7hNsdTcuNCS8+&x~-TgMJS6>#q znvxQCQFL8EG$LPI2y3pKLP6#hu$96;sk3;l^c+$;tBkArT2W&d z&$;#<|Ka_qbP8xV*b+x2^91LZgRJO?XK0PKyJZ$Ycve#vO$nSwAVL*-T4!< zk_$xT|MgR+b+lZw3@5-cfBpP8>qmQp=byX@|q2k(VRCUT$ zgi`aP6?{yBUROcM*SYf`vlqz7;^ECh2SY;~;1pm^EyeU@TftsgX_|x{y$gYc@|@HH zhtg^rT`e90Q`?!DnHRerfl@EqOV>lP^@4!Hzx}+>4;4DI!&0f;k$C~hlkvO@0DL}{ zn$Z+fGyKb2-cL6LZNOJJh^ECNV05zMSM4 z9UsJF$9IHjZWfA}-)E|qc^g1=sd+Qq!!YLVm5GhL3p8Aw7FQ2+Qr|T&1p4bo1%6AF zN7;0by-%mcdsZ~=)y+ejk)TD z&?pF)_f5-Uc@$h0P@9#^rX{eDEkTr z`x5K*d8F(XFMIyneFiOjxfjd7&BAZ1iyf_Fc^6ipaX374ps3SEa@sA7>GDIjfI(j? z^pv+=+8#U3`+lm;$raD4q$wXw&Bu!_Bmb{H!IGFw=Ki&4nBymm8+sOUhN)f`R3)DB zlDihocN>qb@IP7rZx#TGOdfpz6T#NWn=GksfRayr*5&-O%gQtjv6-t$G&ru!fs+=? zY5A!_He=BG_Bf>)$Je$QN9dCI-N?`4hW?JwRz^vO%d-04y^Cc2NWhUaOOCZ~SdfAz5FFJqTSmwq5obZ3TFX?Tf~14s#>)t!8s}%UiBd&U>(tZ@8=EY4{jF8)zyFb9pjRGUxU*+VmIU(GQP`q1I`9_vI9Z-c zKx8Lk`^9rJ)hPFXtw*oLV7_hBBw#m9#XK$j~sOv+Y0 zRdQP31~JDjKO;Q*MmbZ*vCp;hDvY%a;u9*F%xRxZ*@lq$q#;?8+h;)a2Zl8-YL(wG z?Xl>#?wb-&jJN`p?2C9;kn((xWGhH7q-%54=!@tg^r4k!9#p=8&*T7a1uT+YDpKPiPlmW2ZCMDW8$Y*yB(s4?o?tc0hw4N3TcOa~X zC_REiquhPtoA0bF6Rn81;UeU+%@td5o%wzdgrZQjpA1~(_O-h0t%9yz8mVv!73YmL zg@$((w4yizjOX$~22+ct=4#e#Qa!oi)X zUMYfx$D!qFhja!uhZaMqgbnR9cAR>Lg9pV4*XwupIUaMg`!WONU6V?ZdNFR~6(NS- zmn&<|*h`O1_&P7i$GV$nax7)(a%TP0!*9{Q->}mGvV+W(`lp`i5`SY3M+OFd<%JA9 zdE7F=5J?K6!=6SOQ?G80lU1+aKe z+>pXMbV?&p_4LP}TE7AN6B7RlqWEuF7p{R{U|H@X^To@enmWm|sfJH<}4KcjB5SbhJO!TwIVeX#Q^p9JJ z9`D?i+6ttP4dCjQR+T@?ad6g6vLdkj9U!3(%T6J$uoD-McsiSxAz&seGX>n{P{QO~ zNyOa~ZfX{6WixYXm=?>IVEaW_Gw4%ONeyHTSj0c<4_e^;zgv8vBoTRMmf-BQqcH-k zmylLi&{oxcU><9zz44Tc z#5gUe-w+ooRN;B+DG>@F;Zkt6qt(vEa|?l-#zjvaG!)I^hjs`O5H^`;Pj^}2iFVN9 z?ZQm`Ni2rzC#c908X+m^HD}g`Uw`|STpzr;o97>_wefwn{s-E+f5Nru;&VK-kDGX4 zrTjxEG@)TlAOx7;PEPAzOrzT^9Ila~Lvny$;rZM&(~@7VbCm;kx1N>IwLF@qTJk(EIS2##e*d~Y zkQ;>L^^h=ZNriW1;%BM~a%>wa9TW`Bha~SIKVewwZ9$Z;1m+*UySb{O14)Y8$lB}7 zK+Y@K*mo9Th@P9-Xj!Syf~6(W``9@xwA*MtH{nE#?cXHjOw)Vn=*x_V9_yE@lJ=F8 z&H^+%`ZkLm$gHb*u#xlOu`s)F)2+gmMUk4+0L3<1MB$)rPO}BfpUNKH!biX%v70>o z$XjbyZpQ%_0${<_`oltoCM%U2-n2S>w(kEB4ih)6?z6gKWuGHFzc%Zul+%j2e{{1d zdbeD9K1-7V&R7ddtT6Q@?p+gcc?~{P9X%#F>4e z0n=;c*|;X?aW5Dd1+ae0zXz-v95KtX48ev| zaAa4qwB_}?rAWae$!@;{0(aU=n(gm*#R7HnYUG&6?$lVkFl~g=@f_qcLW7-c881-pk(_yv04V)b`m{D+TO?Pf_MM6i7eSjugOrlNMjoGYWD~SiaM|dG&~WR#`svjpjzLEl5A!wn51{3%5?s zydWTu`QS5YGA-COM?`ICq|1^SYn-}bGLjSP)(oM4*Ln1?C; z@bYgyF^|?(Ui9_GzFp8CmJ>yXI_`lH_)PB~(QgM)*m^cNB>|328Ocz9jLoCG6r17>f+ zF{qD+x@?UJC~Lr8%Yd$6*cJ$uJE$49*h)hGUzH0+XN;$X#uBRr0g0uiIaUzj0@2A6 z;D86f#DJ}Eico#98(?!ZO222qJB9^3F0Vb!gugl@Eg(u}Q)1TKb@ z`o?9UQi75aR7$5jCsszH>TUJx!|s3o5QCPWkye~bGU10k>0EhRc6hO-AoMQXs-}Co zp_>~5cX=L&EkSYZY|blOQY#&DYcgft+7A?oxE6WZf5<+qt$d#O08{*(jh`bbA1h=6 zL>uqkw)HjOj*|z?WJjV}Sa19c@O4lVQNw>X-=N#N<5~xt z6A(?9QONfSuhmzvk+F)esBqgKGJlSRUcrZc)SG08X4zO#RTmHJT)v2)ebGz*1Ug zXMcKGaH&CqQyM!{>X;3H!p=ugeo>l(({ijo7oiF-5y-SKU5Xqp+fqJOEu67kiAB-l zQ@mVmt9P6YdN4x-b*VjnFoNByMOP@4Wgk>e0d_P??(O?H+_X`%1;M#RL`9j4Nz7pliKl^^Z zYiD`1AhUZ@yIki6jL6PjI?&e`rlrP`wy29S3d|ke+s;HF6)D5>GO1=kx=W6#v|I=y ze?)vjFIL$e6nV#>0Vv1e_0I7nSajd~sN*2Hv*G&0IJXJ^3W=^<16XKefM!S2r}1CR$dRDp4weGIVztwqUOS4A{g9fbc$edu8w*SgLBS? z*Ife7hAd^W+zDcmcZ7Cqq5KroY}11hf+Ae8q1dMXTyQh)Yj6qlUN%90y;wqA2~{_o zQsJYTB}yP(sXZ`+fV9Z{QKX~TN!ri*`mz(JGpdBpWUZU~4zY?bUXi2d@zLp<@YNMv9Is11e>R^rHL6z6T(UCJ!oyA znH`*KhB?N}xdg`)$HBurD`R8IalaEcADscPVv+2{fEZ3Mbx!(GE+1cTwu>LXMaYG7 zJNq@nIpzAEcy;^zC$-kYC4*?1;Y{`H2>jHAnIPzmzSQUm!E=u`l)_TCrPR`na5r$h z0=b_ir^0g@m7zI#&&;txwnqQY$4Kd0;>lWiy1#c08j3&v;Lwi6=)UYbl(_Rz4ZGR> zGUebj#&Olt!$T<3t!lI~>>IsWE{?U`=f3J^O2DN?KxyRK{66Cdp=M2}lSA`tvz#K| z+~MOv(c4;CTADOAVNjevMTQp<7HHbIy4QIrQ7RI~XeEo<-ss1JCi0Q{x7KivA#4=t zk`cgLlajefGi3XXJzGG)6##^#fm5EsQj@-=H;=ft8mjlj^33QN;$bS+mYYxG7u+SD z_QXQ)`a`PVAP}=!`~Cv;_?h0O+>lS*&wR$ns2>PjvNLvESN8Pv&6&Q@59!QuDW9Nt ziT}Qb{qF^&wSayEY05q`*RpeRYs=M|oSs{HPrHU%cc~oG0ygqtf86`dN2huVKuU531HXr=SY}(RbQY5C#tb zT!y&_voKhBgJq>p^&wEUun&M~S|#ijXE}vX_sJl=So~RuyfxO7p`KU9N?1(4Xc)B5 z@a_NlEv7VD0B1p757<%`po9fI-^fC}ZqaG6ki9{EIn{ zM(yWFXRm89NIyInOnJ$GU21SzAf5y;7@!-@(O4L{)!q5ANl`SY3r*+E*>*i1=`pR1 z0|YDdI^$yc0F<1-{tToDX;XFlVtQ-B4jlR>N6eK$u^~BYu^2TdPhiELrZ=O_X+YZS zJ~dHt8&k^MXd)DQcW&xG@JbPxk^`PZ=fE@b&h#+SIoXXo8TdseBoZ?mK^TDLy%=uO zG9}l8eAl*4Q5w6Gl>0sP*nLwbc!di6P7baaJb#5N+Pi$bbO9PYPF5@h8N>swH(tss zWC?gN56Kf5>=y7Ss9wGJTM7k`MVW$JdiSSO%vT-qn3M=Yc(Z`M((BS2oc|KxAh$*%! z{=`tw{V%W9JDwfB%jsHeIvn_un)wkqPpW1x=a0mrhe%Q zrN9T~_oHNl0Z&Drjm}B*_w2}4wU!MOK3QUXa+52O`Hg<=CHxOnQ63x4eTQF$Et373 zjc*mSxeHh|^MPVOycGNE5B|Jw=m>4CVA3)>6lL_J2go+JvSv+`*yg%WkUIv%azY)d z-+I|wGgl7!)OMn*D-%$2FPZrD_PGYXntkCv%=ERTC5@BvOg2`H);qfl11}i$gjs7dSl~~pR!k-I2WUjInG=>rgFyOm^cHffpZNLoR7R+zwGb@D z(?H_9vdF{N=Tu~&6Y~c#ww!RT!LSREP`VY4GtIT-Fey*Rp+z>{`~gLaPfYAp-Qf%m zlkJ^Ih`p~HA72m1H{pK;=9qVhU-W1aLq({`ErG$%U1Am zA-#~WFm+M6`#JrUHZGo9W`LCo0U>c5`s?NuUo9A17W0Er4j};!(?RXnQ&hk9#r><~ z5fTK5oMvDs@ajC)y8v=xN{Iupd^^GR!ymCJ6D42YUgo|^ed%O9PQ+x~07fupaV??y z=AkB<1t5gJXh44jfFtO-+ka+AYepjA)Cv~9lj1-8`9E-p9Pvd=B}bx)G*}1&qAy(oNHn_lNvmX*-|*X^*?Yg zQs!c^%e5GrrZ(2(?I-LHPn`No%ZiR^Imo{((!xZ`#6>Xg?fvW!(LAlpc}A2rvvl9i zr0WK(SU~2Giu>#f!uGb|hd!0B)VRy&x|tHYzY~X^vF_-*;c)642f^Co%7+~tn+vQM zX=Bd{_msJdG9n^Z|1_Cv$11>vfGbo{Ga|-Cw2%p{V$B^nZ1DADNo&?=@B8d6$5gE- z-7{IJ>6LLA;xdUB;2naPQd|axuyUksvsZH*QlIxY<>>06<@6oE!A4M+U8`t(6VsQ* z+w6zWfD0cG7Qo+Kqv<=kJkr0I2CQFTDm{EpI->pXRSOuX^vlzR^|~Gx*;owg^6b1F z>^a|2*9s?!gkcs}&Z7r5zP{fNX{^s2;L%WR{@|3Jl;UmEr2}!__TOoIYQ%8SOxM{;0!hA-l%K= z6a!8V1d5kvqy9E9>KHP!o%AnbVAV5Z#;e@w zQWSg5!F&8O+Job07HD6r`Lwas2iruK@-k#RhISeR9+8;`B?qC+A(j2)h-c1m#8{iv z$ExiB^cUZb<0>fv(+%GQ2k|mLmY}>V(H`apx`^|jtZ$<3DW3Tw0~XP|E@e;1a{(P5G%BoHo#rf7*d`{lS%?Z=h;uJo>jFQ*{8> zHLR>jaue{yVdq+oAp&dAEM*0I)p!{8 zWhsgHBb|aCxNs&gk*;aBsZl9Cz+I$FL`Fu4fy6fshc>9`Ww>@CWnxFpD4Fb*G;S~% z#_F;nXQ`l*Hzaz4mNOdxi&Vl!-g2mLJ zMQZ_ti36PU9l^_HZ~2UhQdmC?s#|Ki$U`U%K?_IaD*(xuw8K(RN;e!Gn46Z3a>>}< zxHMz^>{S$H!GbZ;gQqLs+RwMyY-sdaoW@D0lYkZ$H-NUWa$Vd=-bsj_xDq6RI{Fjn z4%L&l14jQymZ)+u6sEKp!wxuzEzvgDXAbB^ixTV>hm8zsIK2T>7J@iL?QB*EOz)qc zVb`&_W$?gi6y{^DcF@+oH_TDTz|<70yIJ)f>8qV_6uWWk0NfuacAnoGs+Ob) zj8*;0&SHz(5TpWRmqTdDb#Jl6j>|CrZMg@8mh}FgkNL}8AB@VpOxJMvBCNjn=SHbp z(uIX(Vtq*1p;v-&+8+LyO!_hKN+5E|Vj8x-zu zu~HCPfw(g`tUN(mdyhKcO$&gr+!Ph?$bXwcPkogY@MzoGsz?<@ZNr-821o%GDDBAv zlDUN!9l><(@H4E?D6L^Fa%gZ(eP%yFEmRAZ>{Eo5JABAOe1ci!GfI9aVKF0DsW)J7 zeWdru4wTcjnEqxXKI{bJ)IR3;)N0A7=)D=Y2*dz+7L5gbHUr8}Jh|loPg|m(g%35o z(^D%DF#f64XAiW63HrmCqh`EUX0S^M4m?<$M{Upl-M}>v@VHt{a!G_g3=}E~KspLA zr=`D3E8WS5`>|UKmR5;Dp?p&8Jqm4&JO5^)YM+n#B5an_66>NE!9SGgMRq!@s-x}m zs@Z)q%YlUVz`v0XCl?b0bm)bhut4AE9p3L69nOO5y3(u@^IdOGs+6HDMMkX#8o@HQ z;33?*^MXcv3VFe2dq9rNIO+hH;qI^dGT@w!K?x9JBuHgqPz)qcpXfAK z1Zg3%62h5J`wy#K;P^;R`8z9KFpRzMJ_p$ *ohJv}@SM2LM)0b7B)T2|VW8XR6A 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

d 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%0D5ah;VZl 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�s=$LeTr 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

ENFoDpr&gQ`Px~! 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 L*&6r9!PEZ_Nb%8A literal 0 HcmV?d00001 diff --git a/assets/images/characters/bf-holding-gf-dead.xml b/assets/images/characters/bf-holding-gf-dead.xml new file mode 100644 index 00000000..f2c7bf51 --- /dev/null +++ b/assets/images/characters/bf-holding-gf-dead.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/characters/gf-car/Animation.json b/assets/images/characters/gf-car/Animation.json index e18bc154..354531dd 100644 --- a/assets/images/characters/gf-car/Animation.json +++ b/assets/images/characters/gf-car/Animation.json @@ -1,3012 +1,6 @@ { "AN": { "N": "GF_ass_sets", -"SN": "exportcar", -"TL": { -"L": [ -{ -"LN": "Layer_1", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.200000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 4, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 7, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 14, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 15, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 16, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 17, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 18, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 19, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 20, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 21, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 22, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 23, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 23, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 24, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 24, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 25, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 26, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 26, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 27, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 27, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 28, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 29, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 29, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 30, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 31, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 32, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 33, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 34, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 4, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 35, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 36, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 37, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 7, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 38, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 39, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 40, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 41, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 42, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 43, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "GF Dancing Beat Hair blowing CAR", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "LP", -"TRP": { -"x": 245.3, -"y": 14.2 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --76.25, -29.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "GF Duck Hair Blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 214.65, -"y": 52.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -266.95, --130.55, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -"SD": { -"S": [ -{ "SN": "GF Dancing Beat Hair blowing CAR", "TL": { "L": [ @@ -7902,6 +4896,8 @@ ] } }, +"SD": { +"S": [ { "SN": "gf top leg", "TL": { @@ -7917,12 +4913,12 @@ "ASI": { "N": "0000", "M3D": [ -0.9546661376953125, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9546661376953125, +1.0, 0.0, 0.0, 0.0, @@ -7958,12 +4954,12 @@ "ASI": { "N": "0001", "M3D": [ -0.8858642578125, +0.9511260986328125, 0.0, 0.0, 0.0, 0.0, -0.8858642578125, +0.9511260986328125, 0.0, 0.0, 0.0, @@ -7999,12 +4995,12 @@ "ASI": { "N": "0002", "M3D": [ -0.9813385009765625, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9813385009765625, +1.0, 0.0, 0.0, 0.0, @@ -8040,12 +5036,12 @@ "ASI": { "N": "0003", "M3D": [ -0.9813385009765625, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9813385009765625, +1.0, 0.0, 0.0, 0.0, @@ -12637,12 +9633,12 @@ "ASI": { "N": "0010", "M3D": [ -0.942535400390625, +0.9628753662109375, 0.0, 0.0, 0.0, 0.0, -0.942535400390625, +0.9628753662109375, 0.0, 0.0, 0.0, @@ -12678,19 +9674,19 @@ "ASI": { "N": "0008", "M3D": [ -0.9788665771484375, -0.0, -0.0, -0.0, -0.0, -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, --6.85, +0.0, +0.0, +0.0, +1.0, +0.0, +-7.0, 0.0, 0.0, 1.0 @@ -12719,12 +9715,12 @@ "ASI": { "N": "0009", "M3D": [ -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, @@ -13096,12 +10092,12 @@ "ASI": { "N": "0012", "M3D": [ -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, @@ -13137,12 +10133,12 @@ "ASI": { "N": "0013", "M3D": [ -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, 0.0, -0.9788665771484375, +1.0, 0.0, 0.0, 0.0, @@ -13261,954 +10257,6 @@ } ] } -}, -{ -"SN": "GF Duck Hair Blowing", -"TL": { -"L": [ -{ -"LN": "Layer_6", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf arm covering", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 78.60000000000001, -"y": 109.4 -}, -"M3D": [ -1.01849365234375, --0.063720703125, -0.0, -0.0, -0.0615234375, -0.983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -180.1, --143.5, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf arm covering", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 76.2, -"y": 114.25 -}, -"M3D": [ --0.878753662109375, -0.10552978515625, -0.0, -0.0, -0.1305389404296875, -0.976104736328125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -139.2, --149.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf arm covering", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 48.15, -"y": 57.6 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -187.2, --156.35, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf arm covering", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 48.1, -"y": 57.65 -}, -"M3D": [ --0.8517913818359375, -0.169189453125, -0.0, -0.0, -0.1944580078125, -0.9789886474609375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -132.45, --160.75, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_2", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.65, -"y": 60.400000000000009 -}, -"M3D": [ -1.00726318359375, --0.154205322265625, -0.0, -0.0, -0.1597137451171875, -0.9725189208984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -57.9, --114.7, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf face", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 59.75, -"y": 32.75 -}, -"M3D": [ -1.00726318359375, --0.154205322265625, -0.0, -0.0, -0.1597137451171875, -0.9725189208984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -98.8, --76.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.65, -"y": 60.45 -}, -"M3D": [ -0.98681640625, --0.1564788818359375, -0.0, -0.0, -0.1564788818359375, -0.98681640625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -61.1, --122.6, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf face", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 59.800000000000007, -"y": 32.800000000000007 -}, -"M3D": [ -0.98681640625, --0.1564788818359375, -0.0, -0.0, -0.1564788818359375, -0.98681640625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -101.15, --84.15, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_1", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf top leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 164.9, -"y": 47.050000000000007 -}, -"M3D": [ -1.03533935546875, --0.158935546875, -0.0, -0.0, -0.1541748046875, -0.953155517578125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -56.05, --27.8, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf bottom leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 33.65, -"y": 38.0 -}, -"M3D": [ -1.12322998046875, -0.11212158203125, -0.0, -0.0, --0.096527099609375, -0.929351806640625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -155.0, --21.15, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "gf top leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 164.9, -"y": 47.1 -}, -"M3D": [ -1.0200347900390626, --0.11798095703125, -0.0, -0.0, -0.112548828125, -0.972900390625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -60.15, --39.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf bottom leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 33.5, -"y": 37.95 -}, -"M3D": [ -1.10443115234375, -0.0628204345703125, -0.0, -0.0, --0.0538330078125, -0.94659423828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -154.65, --24.55, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_3", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "GF body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 50.300000000000007, -"y": 72.55 -}, -"M3D": [ --0.045196533203125, --0.99786376953125, -0.0, -0.0, -1.0059051513671876, --0.0962677001953125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -140.25, -31.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "GF body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 50.35, -"y": 72.5 -}, -"M3D": [ --0.044281005859375, --1.0125579833984376, -0.0, -0.0, -0.985504150390625, --0.097686767578125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -140.35, -27.55, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_5", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0007", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "speakers", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "LP", -"TRP": { -"x": 345.6, -"y": 347.70000000000007 -}, -"M3D": [ -1.021575927734375, -0.0, -0.0, -0.0, -0.0, -0.94989013671875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --141.4, -4.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0007", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "speakers", -"IN": "", -"ST": "G", -"FF": 7, -"LP": "LP", -"TRP": { -"x": 345.6, -"y": 347.7 -}, -"M3D": [ -1.021575927734375, -0.0, -0.0, -0.0, -0.0, -0.94989013671875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --141.4, -4.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0007", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "speakers", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "LP", -"TRP": { -"x": 345.6, -"y": 347.75 -}, -"M3D": [ -1.012939453125, -0.0, -0.0, -0.0, -0.0, -0.9626312255859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --138.4, -0.15, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0007", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "speakers", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "LP", -"TRP": { -"x": 345.6, -"y": 347.75 -}, -"M3D": [ -1.012939453125, -0.0, -0.0, -0.0, -0.0, -0.9626312255859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --138.4, -0.15, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_4", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "gf hair blowing", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 40.300000000000007, -"y": 128.05 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, --0.13336181640625, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -368.95, --218.45, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "gf hair blowing", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 40.3, -"y": 128.05 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, --0.13336181640625, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -368.95, --218.45, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "gf hair blowing", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "LP", -"TRP": { -"x": 40.300000000000007, -"y": 128.05 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, --0.13336181640625, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -368.95, --234.45, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "gf hair blowing", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 40.3, -"y": 128.05 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, --0.13336181640625, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -368.95, --234.45, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "gf arm covering", -"TL": { -"L": [ -{ -"LN": "Layer_2", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0017", -"M3D": [ -0.97991943359375, -0.0, -0.0, -0.0, -0.0, -0.97991943359375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -} -] -} -] -} } ] }, diff --git a/assets/images/characters/gf-car/spritemap1.json b/assets/images/characters/gf-car/spritemap1.json index 2b429378..cfdf2a83 100644 --- a/assets/images/characters/gf-car/spritemap1.json +++ b/assets/images/characters/gf-car/spritemap1.json @@ -1,29 +1,28 @@ {"ATLAS": {"SPRITES":[ -{"SPRITE" : {"name": "0000","x":0,"y":359,"w":191,"h":120,"rotated": false}}, -{"SPRITE" : {"name": "0001","x":191,"y":359,"w":90,"h":151,"rotated": false}}, -{"SPRITE" : {"name": "0002","x":420,"y":358,"w":256,"h":123,"rotated": false}}, -{"SPRITE" : {"name": "0003","x":1394,"y":432,"w":122,"h":67,"rotated": false}}, -{"SPRITE" : {"name": "0004","x":676,"y":358,"w":108,"h":126,"rotated": false}}, -{"SPRITE" : {"name": "0005","x":1640,"y":267,"w":102,"h":147,"rotated": false}}, -{"SPRITE" : {"name": "0006","x":281,"y":359,"w":95,"h":130,"rotated": false}}, -{"SPRITE" : {"name": "0007","x":2035,"y":0,"w":1,"h":4,"rotated": false}}, -{"SPRITE" : {"name": "0008","x":0,"y":0,"w":420,"h":359,"rotated": false}}, -{"SPRITE" : {"name": "0009","x":420,"y":0,"w":406,"h":358,"rotated": false}}, -{"SPRITE" : {"name": "0010","x":1304,"y":267,"w":336,"h":165,"rotated": false}}, -{"SPRITE" : {"name": "0011","x":1304,"y":432,"w":90,"h":103,"rotated": false}}, -{"SPRITE" : {"name": "0012","x":1820,"y":0,"w":215,"h":242,"rotated": false}}, -{"SPRITE" : {"name": "0013","x":1820,"y":242,"w":213,"h":240,"rotated": false}}, -{"SPRITE" : {"name": "0014","x":826,"y":250,"w":478,"h":262,"rotated": false}}, -{"SPRITE" : {"name": "0015","x":826,"y":0,"w":521,"h":250,"rotated": false}}, -{"SPRITE" : {"name": "0016","x":1347,"y":0,"w":473,"h":267,"rotated": false}}, -{"SPRITE" : {"name": "0017","x":1640,"y":414,"w":98,"h":118,"rotated": false}} +{"SPRITE" : {"name": "0000","x":1636,"y":275,"w":183,"h":115,"rotated": false}}, +{"SPRITE" : {"name": "0001","x":215,"y":360,"w":84,"h":140,"rotated": false}}, +{"SPRITE" : {"name": "0002","x":419,"y":358,"w":251,"h":121,"rotated": false}}, +{"SPRITE" : {"name": "0003","x":1636,"y":394,"w":120,"h":65,"rotated": false}}, +{"SPRITE" : {"name": "0004","x":4,"y":360,"w":108,"h":126,"rotated": false}}, +{"SPRITE" : {"name": "0005","x":674,"y":358,"w":102,"h":147,"rotated": false}}, +{"SPRITE" : {"name": "0006","x":116,"y":360,"w":95,"h":130,"rotated": false}}, +{"SPRITE" : {"name": "0007","x":2038,"y":4,"w":1,"h":4,"rotated": false}}, +{"SPRITE" : {"name": "0008","x":4,"y":4,"w":411,"h":352,"rotated": false}}, +{"SPRITE" : {"name": "0009","x":419,"y":4,"w":398,"h":350,"rotated": false}}, +{"SPRITE" : {"name": "0010","x":1303,"y":275,"w":329,"h":162,"rotated": false}}, +{"SPRITE" : {"name": "0011","x":303,"y":360,"w":90,"h":103,"rotated": false}}, +{"SPRITE" : {"name": "0012","x":1823,"y":4,"w":211,"h":236,"rotated": false}}, +{"SPRITE" : {"name": "0013","x":1823,"y":244,"w":208,"h":235,"rotated": false}}, +{"SPRITE" : {"name": "0014","x":821,"y":258,"w":478,"h":262,"rotated": false}}, +{"SPRITE" : {"name": "0015","x":821,"y":4,"w":521,"h":250,"rotated": false}}, +{"SPRITE" : {"name": "0016","x":1346,"y":4,"w":473,"h":267,"rotated": false}} ]}, "meta": { "app": "Adobe Animate", -"version": "21.0.1.37179", +"version": "22.0.5.191", "image": "spritemap1.png", "format": "RGBA8888", -"size": {"w":2036,"h":535}, +"size": {"w":2043,"h":524}, "resolution": "1" } } diff --git a/assets/images/characters/gf-car/spritemap1.png b/assets/images/characters/gf-car/spritemap1.png index 435a42405901c7bfbe80088b17dfce8b8cc4dbe9..63afb09707aa445ce1db0df70e5d87befbce6acb 100644 GIT binary patch literal 121069 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 literal 125661 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%0A1}Jq_OS+?a+|LH0c_ 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 DalfFS literal 304502 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Νnxw2?L5o@mShrYKLi7wZ|LQTe1E5O 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

JIM_jiao-KxN@el)_%T_bg;NZRKv^7 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 diff --git a/assets/images/characters/gf-tankmen/Animation.json b/assets/images/characters/gf-tankmen/Animation.json index d073b03c..e64e1565 100644 --- a/assets/images/characters/gf-tankmen/Animation.json +++ b/assets/images/characters/gf-tankmen/Animation.json @@ -1,11 +1,42 @@ { "AN": { -"N": "GF_ass_sets", -"SN": "gf tankmen export", +"N": "gfTankmen", +"STI": { +"SI": { +"SN": "gfTankmen", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 635.8, +"y": 363.05 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-12.4, +-12.1, +0.0, +1.0 +] +} +}, +"SN": "gfTankmen", "TL": { "L": [ { -"LN": "Layer_1", +"LN": "gf_held_at_gunpoint", "FR": [ { "I": 0, @@ -19,8 +50,8 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 196.05, -"y": 2.45 +"x": 460.90000000000006, +"y": 324.15000000000006 }, "M3D": [ 1.0, @@ -35,14 +66,1093 @@ 0.0, 1.0, 0.0, --57.05, -187.25, +175.45, +50.9, 0.0, 1.0 ] } +} +] }, { +"I": 1, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 3, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 5, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 7, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 8, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 9, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 9, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 10, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 10, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 11, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 11, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 12, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 12, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 13, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 13, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 14, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 14, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 15, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 16, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 16, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 17, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 18, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 18, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 19, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 20, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 20, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 21, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 22, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 22, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 23, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 23, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 24, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 24, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 25, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 25, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 26, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 26, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 27, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 27, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 28, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 28, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 29, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Dancing at Gunpoint", +"IN": "", +"ST": "G", +"FF": 29, +"LP": "LP", +"TRP": { +"x": 460.9, +"y": 324.15 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +175.45, +50.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 30, +"DU": 1, +"E": [ +{ "SI": { "SN": "GF Crying at Gunpoint", "IN": "", @@ -50,8 +1160,8 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 195.45000000000003, -"y": 13.450000000000001 +"x": 138.4, +"y": 325.1 }, "M3D": [ 1.0, @@ -66,8 +1176,2931 @@ 0.0, 1.0, 0.0, --57.05, -187.25, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 31, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 32, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 33, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 34, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 35, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 36, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 37, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 38, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 8, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 39, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 9, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 40, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 10, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 41, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 11, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 42, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 12, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 43, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 13, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 44, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 14, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 45, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 15, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 46, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 16, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 47, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 17, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 48, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 18, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 49, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 19, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 50, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 20, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 51, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 21, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 52, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 22, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 53, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 23, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 54, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 24, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 55, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 25, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 56, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 26, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 57, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 27, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 58, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 28, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 59, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 29, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 60, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 30, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 61, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 31, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 62, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 32, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 63, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 33, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 64, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 34, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 65, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 35, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 66, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 36, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 67, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 37, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 68, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 38, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 69, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 39, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 70, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 40, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 71, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 41, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 72, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 42, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 73, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 43, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 74, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 44, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 75, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 45, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 76, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 46, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 77, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 47, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 78, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 48, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 79, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 49, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 80, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 50, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 81, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 51, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 82, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 52, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 83, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 53, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 84, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 54, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 85, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 55, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 86, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 56, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 87, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 57, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 88, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 58, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 89, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 59, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 90, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 60, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 91, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 61, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 92, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 62, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 93, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 63, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 94, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 64, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 95, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 65, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 96, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 66, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 97, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 67, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 98, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 68, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 99, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 69, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 100, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 70, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 101, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 71, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 102, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 72, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 103, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 73, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 104, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 74, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 105, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 75, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 106, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 76, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 107, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 77, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 108, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 78, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 109, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "GF Crying at Gunpoint", +"IN": "", +"ST": "G", +"FF": 79, +"LP": "LP", +"TRP": { +"x": 138.4, +"y": 325.1 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +490.75, +45.5, 0.0, 1.0 ] @@ -87,137 +4120,38 @@ "TL": { "L": [ { -"LN": "tankman_top_Layer", +"LN": "Layer_8", "FR": [ { "I": 0, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", +"SN": "arm gun", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 469.65000000000006, -"y": -68.25 +"x": 316.85, +"y": 88.85000000000001 }, "M3D": [ --1.0, +0.99658203125, +-0.0824127197265625, +0.0, +0.0, +0.0824127197265625, +0.99658203125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +544.35, +184.0, 0.0, 1.0 ] @@ -227,133 +4161,34 @@ }, { "I": 2, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 2, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 2, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.90000000000006, +"y": 88.95 }, "M3D": [ --1.0, +0.9981689453125, +-0.06036376953125, +0.0, +0.0, +0.06036376953125, +0.9981689453125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +545.8, +176.85, 0.0, 1.0 ] @@ -363,133 +4198,34 @@ }, { "I": 4, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 4, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 4, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.95, +"y": 88.95 }, "M3D": [ --1.0, +0.99981689453125, +-0.0172576904296875, +0.0, +0.0, +0.0172576904296875, +0.99981689453125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +549.1, +163.05, 0.0, 1.0 ] @@ -503,61 +4239,30 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 6, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 317.0, +"y": 89.0 }, "M3D": [ --1.0, +0.999908447265625, +-0.0117340087890625, +0.0, +0.0, +0.0117340087890625, +0.999908447265625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +549.6, +161.25, 0.0, 1.0 ] @@ -567,541 +4272,34 @@ }, { "I": 7, -"DU": 1, +"DU": 8, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 7, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 7, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.85, +"y": 88.9 }, "M3D": [ --1.0, +0.999969482421875, +0.0077972412109375, +0.0, +0.0, +-0.0077972412109375, +0.999969482421875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 14, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 14, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +551.3, +155.1, 0.0, 1.0 ] @@ -1111,133 +4309,34 @@ }, { "I": 15, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 15, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 15, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.85, +"y": 88.85000000000001 }, "M3D": [ --1.0, +0.9965667724609375, +-0.0824127197265625, +0.0, +0.0, +0.0824127197265625, +0.9965667724609375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 16, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 16, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +544.35, +184.0, 0.0, 1.0 ] @@ -1247,133 +4346,34 @@ }, { "I": 17, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 17, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 17, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.90000000000006, +"y": 88.95 }, "M3D": [ --1.0, +0.9981689453125, +-0.06036376953125, +0.0, +0.0, +0.06036376953125, +0.9981689453125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 18, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 18, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +545.8, +176.85, 0.0, 1.0 ] @@ -1383,133 +4383,34 @@ }, { "I": 19, -"DU": 1, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 19, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 19, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 316.95, +"y": 88.95 }, "M3D": [ --1.0, +0.99981689453125, +-0.0172576904296875, +0.0, +0.0, +0.0172576904296875, +0.99981689453125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman top", -"IN": "", -"ST": "G", -"FF": 20, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 20, -"LP": "LP", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +549.1, +163.05, 0.0, 1.0 ] @@ -1523,61 +4424,30 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 21, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 21, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 317.0, +"y": 89.0 }, "M3D": [ --1.0, +0.999908447265625, +-0.0117340087890625, +0.0, +0.0, +0.0117340087890625, +0.999908447265625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +549.6, +161.25, 0.0, 1.0 ] @@ -1587,65 +4457,372 @@ }, { "I": 22, -"DU": 1, +"DU": 8, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 22, -"LP": "PO", +"FF": 0, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 316.85, +"y": 88.9 }, "M3D": [ -1.0, +0.999969482421875, +0.0077972412109375, +0.0, +0.0, +-0.0077972412109375, +0.999969482421875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, +551.3, +155.1, 0.0, 1.0 ] } +} +] +} +] }, { +"LN": "Layer_12", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ "SI": { -"SN": "tankman top 2", +"SN": "tankman head", "IN": "", "ST": "G", -"FF": 22, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 104.45, +"y": 166.0 }, "M3D": [ --1.0, +1.00958251953125, +-0.0784759521484375, +0.0, +0.0, +0.075653076171875, +0.9732513427734375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, +702.15, +110.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.55, +"y": 85.9 +}, +"M3D": [ +0.996978759765625, +-0.0774993896484375, +0.0, +0.0, +0.0774993896484375, +0.996978759765625, +0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -392.1, +703.15, +104.75, 0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.3 +}, +"M3D": [ +0.99920654296875, +-0.0388946533203125, +0.0, +0.0, +0.0388946533203125, +0.99920654296875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +708.9, +95.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.4 +}, +"M3D": [ +0.999969482421875, +0.003875732421875, +0.0, +0.0, +-0.003875732421875, +0.999969482421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +714.75, +86.6, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 7, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.4 +}, +"M3D": [ +0.99981689453125, +0.0171661376953125, +0.0, +0.0, +-0.0171661376953125, +0.99981689453125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +716.05, +84.0, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 104.45, +"y": 166.0 +}, +"M3D": [ +1.00958251953125, +-0.0784759521484375, +0.0, +0.0, +0.075653076171875, +0.9732513427734375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +702.15, +110.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.55, +"y": 85.9 +}, +"M3D": [ +0.996978759765625, +-0.0774993896484375, +0.0, +0.0, +0.0774993896484375, +0.996978759765625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +703.15, +104.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.3 +}, +"M3D": [ +0.99920654296875, +-0.0388946533203125, +0.0, +0.0, +0.0388946533203125, +0.99920654296875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +708.9, +95.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.4 +}, +"M3D": [ +0.999969482421875, +0.003875732421875, +0.0, +0.0, +-0.003875732421875, +0.999969482421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +714.75, +86.6, 0.0, 1.0 ] @@ -1655,65 +4832,187 @@ }, { "I": 23, +"DU": 7, +"E": [ +{ +"SI": { +"SN": "tankman head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.4 +}, +"M3D": [ +0.99981689453125, +0.0171661376953125, +0.0, +0.0, +-0.0171661376953125, +0.99981689453125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +716.05, +84.0, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_14", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 316.85, +"y": 88.85000000000001 +}, +"M3D": [ +-0.9965667724609375, +-0.0824127197265625, +0.0, +0.0, +-0.0824127197265625, +0.9965667724609375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +375.0, +186.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 319.0, +"y": 83.25 +}, +"M3D": [ +-0.9990234375, +-0.042999267578125, +0.0, +0.0, +-0.042999267578125, +0.9990234375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +373.75, +174.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 318.90000000000006, +"y": 83.25 +}, +"M3D": [ +-0.9998016357421875, +-0.0169219970703125, +0.0, +0.0, +-0.0169219970703125, +0.9998016357421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +370.6, +162.45, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, "DU": 1, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 23, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 23, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 336.65000000000006, +"y": 90.35000000000001 }, "M3D": [ --1.0, +-0.99993896484375, +-0.0020294189453125, +0.0, +0.0, +-0.0020294189453125, +0.99993896484375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +369.55, +159.25, 0.0, 1.0 ] @@ -1722,66 +5021,183 @@ ] }, { -"I": 24, +"I": 7, +"DU": 8, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 336.6, +"y": 90.35000000000001 +}, +"M3D": [ +-0.99981689453125, +0.0145263671875, +0.0, +0.0, +0.0145263671875, +0.99981689453125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +368.0, +153.7, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 316.85, +"y": 88.85000000000001 +}, +"M3D": [ +-0.9965667724609375, +-0.0824127197265625, +0.0, +0.0, +-0.0824127197265625, +0.9965667724609375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +375.0, +186.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 319.0, +"y": 83.25 +}, +"M3D": [ +-0.9990234375, +-0.042999267578125, +0.0, +0.0, +-0.042999267578125, +0.9990234375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +373.75, +174.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 318.90000000000006, +"y": 83.25 +}, +"M3D": [ +-0.9998016357421875, +-0.0169219970703125, +0.0, +0.0, +-0.0169219970703125, +0.9998016357421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +370.6, +162.45, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, "DU": 1, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 24, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 24, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 336.65000000000006, +"y": 90.35000000000001 }, "M3D": [ --1.0, +-0.99993896484375, +-0.0020294189453125, +0.0, +0.0, +-0.0020294189453125, +0.99993896484375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +369.55, +159.25, 0.0, 1.0 ] @@ -1790,134 +5206,77 @@ ] }, { -"I": 25, -"DU": 1, +"I": 22, +"DU": 8, "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm gun", "IN": "", "ST": "G", -"FF": 25, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 25, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 336.6, +"y": 90.35000000000001 }, "M3D": [ --1.0, +-0.99981689453125, +0.0145263671875, +0.0, +0.0, +0.0145263671875, +0.99981689453125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +368.0, +153.7, 0.0, 1.0 ] } } ] +} +] }, { -"I": 26, -"DU": 1, +"LN": "MergedLayer_1", +"FR": [ +{ +"I": 0, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 26, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 26, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 121.45, +"y": 263.45 }, "M3D": [ --1.0, +0.919830322265625, +0.0316162109375, +0.0, +0.0, +-0.002960205078125, +0.836883544921875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +668.95, +218.75, 0.0, 1.0 ] @@ -1926,66 +5285,35 @@ ] }, { -"I": 27, -"DU": 1, +"I": 2, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 27, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 27, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 125.85000000000001, +"y": 255.60000000000003 }, "M3D": [ --1.0, +0.9119720458984375, +0.031341552734375, +0.0, +0.0, +0.0001983642578125, +0.860107421875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +669.55, +212.75, 0.0, 1.0 ] @@ -1994,66 +5322,35 @@ ] }, { -"I": 28, -"DU": 1, +"I": 4, +"DU": 2, "E": [ { "SI": { -"SN": "tankman top", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 28, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 28, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 125.85000000000001, +"y": 255.65 }, "M3D": [ --1.0, +0.89178466796875, +0.0306396484375, +0.0, +0.0, +0.0001983642578125, +0.860107421875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +672.1, +212.8, 0.0, 1.0 ] @@ -2062,66 +5359,859 @@ ] }, { -"I": 29, -"DU": 1, +"I": 6, +"DU": 9, "E": [ { "SI": { -"SN": "tankman top", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 29, -"LP": "PO", +"FF": 0, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 126.10000000000001, +"y": 255.70000000000003 }, "M3D": [ -1.0, +0.89178466796875, +0.0306396484375, +0.0, +0.0, +0.0098114013671875, +0.863800048828125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, +669.55, +211.85, 0.0, 1.0 ] } +} +] }, { +"I": 15, +"DU": 2, +"E": [ +{ "SI": { -"SN": "tankman top 2", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 29, +"FF": 0, "LP": "LP", "TRP": { -"x": 469.65, -"y": -68.25 +"x": 121.45, +"y": 263.45 }, "M3D": [ --1.0, +0.919830322265625, +0.0316162109375, +0.0, +0.0, +-0.002960205078125, +0.836883544921875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, +668.95, +218.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 125.85000000000001, +"y": 255.60000000000003 +}, +"M3D": [ +0.9119720458984375, +0.031341552734375, +0.0, +0.0, +0.0001983642578125, +0.860107421875, +0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -392.1, +669.55, +212.75, 0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 125.85000000000001, +"y": 255.65 +}, +"M3D": [ +0.89178466796875, +0.0306396484375, +0.0, +0.0, +0.0001983642578125, +0.860107421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +672.1, +212.8, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 126.10000000000001, +"y": 255.70000000000003 +}, +"M3D": [ +0.89178466796875, +0.0306396484375, +0.0, +0.0, +0.0098114013671875, +0.863800048828125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +669.55, +211.85, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_9", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.45, +"y": 85.75 +}, +"M3D": [ +-0.9969940185546875, +-0.0774688720703125, +0.0, +0.0, +-0.0774688720703125, +0.9969940185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +218.5, +106.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.45, +"y": 85.85000000000001 +}, +"M3D": [ +-0.9951019287109375, +-0.0987701416015625, +0.0, +0.0, +-0.0987701416015625, +0.9951019287109375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +219.55, +106.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.35, +"y": 160.95000000000003 +}, +"M3D": [ +-0.9986572265625, +-0.051055908203125, +0.0, +0.0, +-0.051055908203125, +0.9986572265625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +212.6, +95.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.3, +"y": 161.0 +}, +"M3D": [ +-0.99993896484375, +0.0000457763671875, +0.0, +0.0, +0.0000457763671875, +0.99993896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +207.6, +85.45, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 7, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.05 +}, +"M3D": [ +-0.99993896484375, +0.005584716796875, +0.0, +0.0, +0.005584716796875, +0.99993896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +206.7, +83.7, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.45, +"y": 85.75 +}, +"M3D": [ +-0.9969940185546875, +-0.0774688720703125, +0.0, +0.0, +-0.0774688720703125, +0.9969940185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +218.5, +106.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 103.45, +"y": 85.85000000000001 +}, +"M3D": [ +-0.9951019287109375, +-0.0987701416015625, +0.0, +0.0, +-0.0987701416015625, +0.9951019287109375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +219.55, +106.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.35, +"y": 160.95000000000003 +}, +"M3D": [ +-0.9986572265625, +-0.051055908203125, +0.0, +0.0, +-0.051055908203125, +0.9986572265625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +212.6, +95.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.3, +"y": 161.0 +}, +"M3D": [ +-0.99993896484375, +0.0000457763671875, +0.0, +0.0, +0.0000457763671875, +0.99993896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +207.6, +85.45, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 23, +"DU": 7, +"E": [ +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.05 +}, +"M3D": [ +-0.99993896484375, +0.005584716796875, +0.0, +0.0, +0.005584716796875, +0.99993896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +206.7, +83.7, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_13", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 126.05, +"y": 0.25 +}, +"M3D": [ +-0.920989990234375, +0.0316314697265625, +0.0, +0.0, +-0.009552001953125, +0.84307861328125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +253.85, +221.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 126.4, +"y": -1.6500000000000002 +}, +"M3D": [ +-0.9144744873046875, +0.0313873291015625, +0.0, +0.0, +-0.014129638671875, +0.869720458984375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +253.35, +212.65, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 3.6, +"y": 265.6 +}, +"M3D": [ +-0.8946990966796875, +0.03070068359375, +0.0, +0.0, +-0.0042877197265625, +0.87774658203125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +250.05, +209.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 1.95, +"y": 269.85 +}, +"M3D": [ +-0.888671875, +0.0305023193359375, +0.0, +0.0, +-0.0042877197265625, +0.87774658203125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +250.1, +209.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 126.05, +"y": 0.25 +}, +"M3D": [ +-0.920989990234375, +0.0316314697265625, +0.0, +0.0, +-0.009552001953125, +0.84307861328125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +253.85, +221.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 126.4, +"y": -1.6500000000000002 +}, +"M3D": [ +-0.9144744873046875, +0.0313873291015625, +0.0, +0.0, +-0.014129638671875, +0.869720458984375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +253.35, +212.65, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 3.6, +"y": 265.6 +}, +"M3D": [ +-0.8946990966796875, +0.03070068359375, +0.0, +0.0, +-0.0042877197265625, +0.87774658203125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +250.05, +209.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 1.95, +"y": 269.85 +}, +"M3D": [ +-0.888671875, +0.0305023193359375, +0.0, +0.0, +-0.0042877197265625, +0.87774658203125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +250.1, +209.1, 0.0, 1.0 ] @@ -2162,8 +6252,8 @@ 0.0, 1.0, 0.0, -66.95, --51.9, +331.0, +257.8, 0.0, 1.0 ] @@ -2193,8 +6283,8 @@ 0.0, 1.0, 0.0, -156.55, --20.9, +420.6, +288.8, 0.0, 1.0 ] @@ -2230,8 +6320,8 @@ 0.0, 1.0, 0.0, -67.45, --54.1, +331.5, +255.6, 0.0, 1.0 ] @@ -2261,8 +6351,8 @@ 0.0, 1.0, 0.0, -155.7, --20.9, +419.75, +288.8, 0.0, 1.0 ] @@ -2298,8 +6388,8 @@ 0.0, 1.0, 0.0, -70.4, --59.2, +334.45, +250.5, 0.0, 1.0 ] @@ -2329,8 +6419,8 @@ 0.0, 1.0, 0.0, -157.7, --23.15, +421.75, +286.55, 0.0, 1.0 ] @@ -2366,8 +6456,8 @@ 0.0, 1.0, 0.0, -68.55, --51.9, +332.6, +257.8, 0.0, 1.0 ] @@ -2397,8 +6487,8 @@ 0.0, 1.0, 0.0, -158.15, --20.9, +422.2, +288.8, 0.0, 1.0 ] @@ -2434,8 +6524,8 @@ 0.0, 1.0, 0.0, -69.05, --54.1, +333.1, +255.6, 0.0, 1.0 ] @@ -2465,8 +6555,8 @@ 0.0, 1.0, 0.0, -157.3, --20.9, +421.35, +288.8, 0.0, 1.0 ] @@ -2502,8 +6592,8 @@ 0.0, 1.0, 0.0, -70.4, --59.2, +334.45, +250.5, 0.0, 1.0 ] @@ -2533,8 +6623,8 @@ 0.0, 1.0, 0.0, -157.7, --23.15, +421.75, +286.55, 0.0, 1.0 ] @@ -2545,7 +6635,7 @@ ] }, { -"LN": "Layer_12", +"LN": "arm_swing_2", "FR": [ { "I": 0, @@ -2553,30 +6643,30 @@ "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 11.700000000000001, -"y": 140.6 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9700927734375, --0.23358154296875, -0.0, -0.0, -0.23358154296875, -0.9700927734375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -190.1, --216.1, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2586,34 +6676,71 @@ }, { "I": 1, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 11.700000000000001, -"y": 140.55 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.95025634765625, --0.305206298828125, -0.0, -0.0, -0.305206298828125, -0.95025634765625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -180.3, --212.45, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2623,34 +6750,71 @@ }, { "I": 3, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 3, "LP": "LP", "TRP": { -"x": 11.65, -"y": 140.5 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.910980224609375, --0.406890869140625, -0.0, -0.0, -0.406890869140625, -0.910980224609375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -166.5, --205.7, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2660,34 +6824,71 @@ }, { "I": 5, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 5, "LP": "LP", "TRP": { -"x": 11.75, -"y": 140.5 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.89208984375, --0.446441650390625, -0.0, -0.0, -0.446441650390625, -0.89208984375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -163.1, --204.55, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2697,34 +6898,108 @@ }, { "I": 7, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 7, "LP": "LP", "TRP": { -"x": 11.8, -"y": 140.5 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.88775634765625, --0.454315185546875, -0.0, -0.0, -0.454315185546875, -0.88775634765625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -166.0, --205.8, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 8, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 9, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 9, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2734,34 +7009,108 @@ }, { "I": 10, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 10, "LP": "LP", "TRP": { -"x": 11.75, -"y": 140.45000000000003 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9838714599609375, --0.1564178466796875, -0.0, -0.0, -0.1564178466796875, -0.9838714599609375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -205.7, --222.8, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 11, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 11, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 12, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 12, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2771,34 +7120,71 @@ }, { "I": 13, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 13, "LP": "LP", "TRP": { -"x": 16.8, -"y": 128.4 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9989013671875, -0.0044708251953125, -0.0, -0.0, --0.0044708251953125, -0.9989013671875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -227.15, --222.85, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 14, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 14, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2812,30 +7198,30 @@ "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 15, "LP": "LP", "TRP": { -"x": 11.65, -"y": 140.55 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.998626708984375, -0.026153564453125, -0.0, -0.0, --0.026153564453125, -0.998626708984375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -233.3, --219.1, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2845,34 +7231,71 @@ }, { "I": 16, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 16, "LP": "LP", "TRP": { -"x": 11.65, -"y": 140.5 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9467620849609375, -0.318115234375, -0.0, -0.0, --0.318115234375, -0.9467620849609375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -274.9, --215.2, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 17, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2882,34 +7305,71 @@ }, { "I": 18, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 18, "LP": "LP", "TRP": { -"x": 16.75, -"y": 130.3 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.920013427734375, -0.3881683349609375, -0.0, -0.0, --0.3881683349609375, -0.920013427734375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -284.45, --212.9, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 19, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2919,34 +7379,71 @@ }, { "I": 20, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 20, "LP": "LP", "TRP": { -"x": 16.75, -"y": 130.35 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.8980712890625, -0.43609619140625, -0.0, -0.0, --0.43609619140625, -0.8980712890625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -289.1, --212.85, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 21, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2956,34 +7453,71 @@ }, { "I": 22, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 22, "LP": "LP", "TRP": { -"x": 16.8, -"y": 130.3 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9443359375, -0.32269287109375, -0.0, -0.0, --0.32269287109375, -0.9443359375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -272.5, --225.95, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 23, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 23, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -2993,34 +7527,108 @@ }, { "I": 24, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 24, "LP": "LP", "TRP": { -"x": 16.8, -"y": 130.3 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.980560302734375, -0.183013916015625, -0.0, -0.0, --0.183013916015625, -0.980560302734375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -253.65, --228.35, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 25, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 25, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 26, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 26, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -3030,34 +7638,108 @@ }, { "I": 27, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 27, "LP": "LP", "TRP": { -"x": 16.85, -"y": 130.3 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.990753173828125, -0.1136932373046875, -0.0, -0.0, --0.1136932373046875, -0.990753173828125, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -244.4, --228.5, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 28, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 28, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 29, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 29, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +447.75, +68.55, 0.0, 1.0 ] @@ -3086,20 +7768,20 @@ "y": 60.45 }, "M3D": [ -0.98681640625, +0.9868011474609375, -0.1564788818359375, 0.0, 0.0, 0.1564788818359375, -0.98681640625, +0.9868011474609375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -76.6, --193.35, +340.65, +116.35, 0.0, 1.0 ] @@ -3117,20 +7799,20 @@ "y": 32.800000000000007 }, "M3D": [ -0.98681640625, +0.9868011474609375, -0.1564788818359375, 0.0, 0.0, 0.1564788818359375, -0.98681640625, +0.9868011474609375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -116.65, --154.9, +380.7, +154.8, 0.0, 1.0 ] @@ -3166,8 +7848,8 @@ 0.0, 1.0, 0.0, -76.6, --190.3, +340.65, +119.4, 0.0, 1.0 ] @@ -3197,8 +7879,8 @@ 0.0, 1.0, 0.0, -117.45, --152.7, +381.5, +157.0, 0.0, 1.0 ] @@ -3219,7 +7901,7 @@ "LP": "LP", "TRP": { "x": 125.65, -"y": 60.45 +"y": 60.400000000000009 }, "M3D": [ 0.984893798828125, @@ -3234,8 +7916,8 @@ 0.0, 1.0, 0.0, -77.9, --193.7, +341.95, +116.0, 0.0, 1.0 ] @@ -3250,7 +7932,7 @@ "LP": "LP", "TRP": { "x": 59.95, -"y": 32.75 +"y": 32.7 }, "M3D": [ 0.984893798828125, @@ -3265,8 +7947,8 @@ 0.0, 1.0, 0.0, -118.25, --155.6, +382.3, +154.1, 0.0, 1.0 ] @@ -3302,8 +7984,8 @@ 0.0, 1.0, 0.0, -84.25, --203.25, +348.3, +106.45, 0.0, 1.0 ] @@ -3333,8 +8015,8 @@ 0.0, 1.0, 0.0, -122.55, --163.0, +386.6, +146.7, 0.0, 1.0 ] @@ -3370,8 +8052,8 @@ 0.0, 1.0, 0.0, -105.4, --220.2, +369.45, +89.5, 0.0, 1.0 ] @@ -3401,8 +8083,8 @@ 0.0, 1.0, 0.0, -140.1, --176.7, +404.15, +133.0, 0.0, 1.0 ] @@ -3438,8 +8120,8 @@ 0.0, 1.0, 0.0, -108.55, --224.35, +372.6, +85.35, 0.0, 1.0 ] @@ -3469,8 +8151,8 @@ 0.0, 1.0, 0.0, -142.1, --179.95, +406.15, +129.75, 0.0, 1.0 ] @@ -3506,8 +8188,8 @@ 0.0, 1.0, 0.0, -110.7, --226.3, +374.75, +83.4, 0.0, 1.0 ] @@ -3537,8 +8219,8 @@ 0.0, 1.0, 0.0, -143.3, --181.15, +407.35, +128.55, 0.0, 1.0 ] @@ -3574,8 +8256,8 @@ 0.0, 1.0, 0.0, -133.55, --237.55, +397.6, +72.15, 0.0, 1.0 ] @@ -3605,8 +8287,8 @@ 0.0, 1.0, 0.0, -154.45, --186.05, +418.5, +123.65, 0.0, 1.0 ] @@ -3626,7 +8308,7 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 125.60000000000001, +"x": 125.55, "y": 60.6 }, "M3D": [ @@ -3642,8 +8324,8 @@ 0.0, 1.0, 0.0, -134.0, --238.35, +398.05, +71.35, 0.0, 1.0 ] @@ -3673,8 +8355,8 @@ 0.0, 1.0, 0.0, -153.7, --186.35, +417.75, +123.35, 0.0, 1.0 ] @@ -3710,8 +8392,8 @@ 0.0, 1.0, 0.0, -129.65, --238.35, +393.7, +71.35, 0.0, 1.0 ] @@ -3741,8 +8423,8 @@ 0.0, 1.0, 0.0, -151.0, --187.0, +415.05, +122.7, 0.0, 1.0 ] @@ -3778,8 +8460,8 @@ 0.0, 1.0, 0.0, -124.3, --233.8, +388.35, +75.9, 0.0, 1.0 ] @@ -3809,8 +8491,8 @@ 0.0, 1.0, 0.0, -149.7, --184.55, +413.75, +125.15, 0.0, 1.0 ] @@ -3846,8 +8528,8 @@ 0.0, 1.0, 0.0, -110.5, --225.8, +374.55, +83.9, 0.0, 1.0 ] @@ -3877,8 +8559,8 @@ 0.0, 1.0, 0.0, -143.25, --180.85, +407.3, +128.85, 0.0, 1.0 ] @@ -3914,8 +8596,8 @@ 0.0, 1.0, 0.0, -108.55, --224.35, +372.6, +85.35, 0.0, 1.0 ] @@ -3945,8 +8627,8 @@ 0.0, 1.0, 0.0, -142.1, --179.95, +406.15, +129.75, 0.0, 1.0 ] @@ -3982,8 +8664,8 @@ 0.0, 1.0, 0.0, -106.65, --222.0, +370.7, +87.7, 0.0, 1.0 ] @@ -4013,8 +8695,8 @@ 0.0, 1.0, 0.0, -141.0, --178.25, +405.05, +131.45, 0.0, 1.0 ] @@ -4033,6 +8715,37 @@ "E": [ { "SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 53.15, +"y": 62.1 +}, +"M3D": [ +1.013671875, +0.0, +0.0, +0.0, +0.0545501708984375, +0.98895263671875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +340.95, +191.05, +0.0, +1.0 +] +} +}, +{ +"SI": { "SN": "GF body", "IN": "", "ST": "G", @@ -4055,8 +8768,39 @@ 0.0, 1.0, 0.0, -141.6, --131.7, +405.65, +178.0, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.65, +"y": 63.85 +}, +"M3D": [ +1.013671875, +0.0, +0.0, +0.0, +0.0545501708984375, +0.98895263671875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +480.35, +187.45, 0.0, 1.0 ] @@ -4070,6 +8814,37 @@ "E": [ { "SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 53.1, +"y": 62.1 +}, +"M3D": [ +1.013671875, +0.0, +0.0, +0.0, +0.04351806640625, +0.98895263671875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +342.4, +191.05, +0.0, +1.0 +] +} +}, +{ +"SI": { "SN": "GF body", "IN": "", "ST": "G", @@ -4092,8 +8867,39 @@ 0.0, 1.0, 0.0, -143.2, --131.7, +407.25, +178.0, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.65, +"y": 63.85 +}, +"M3D": [ +1.013671875, +0.0, +0.0, +0.0, +0.04351806640625, +0.98895263671875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +481.85, +187.45, 0.0, 1.0 ] @@ -4107,6 +8913,37 @@ "E": [ { "SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 53.1, +"y": 62.050000000000007 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +350.5, +189.6, +0.0, +1.0 +] +} +}, +{ +"SI": { "SN": "GF body", "IN": "", "ST": "G", @@ -4129,8 +8966,39 @@ 0.0, 1.0, 0.0, -150.95, --133.3, +415.0, +176.4, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.6, +"y": 63.85 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +488.2, +185.95, 0.0, 1.0 ] @@ -4144,17 +9012,17 @@ "E": [ { "SI": { -"SN": "GF body", +"SN": "gf bg arm", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 50.25, -"y": 72.5 +"x": 53.1, +"y": 62.0 }, "M3D": [ -1.0142974853515626, +1.0142822265625, 0.0, 0.0, 0.0, @@ -4166,8 +9034,70 @@ 0.0, 1.0, 0.0, -157.25, --130.1, +355.25, +192.5, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "GF body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 50.25, +"y": 72.5 +}, +"M3D": [ +1.0142822265625, +0.0, +0.0, +0.0, +-0.043182373046875, +0.977935791015625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +421.3, +179.6, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.65, +"y": 63.85 +}, +"M3D": [ +1.0142822265625, +0.0, +0.0, +0.0, +-0.043182373046875, +0.977935791015625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +495.1, +188.9, 0.0, 1.0 ] @@ -4181,17 +9111,17 @@ "E": [ { "SI": { -"SN": "GF body", +"SN": "gf bg arm", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 50.25, -"y": 72.5 +"x": 53.15, +"y": 62.0 }, "M3D": [ -1.0142974853515626, +1.0142822265625, 0.0, 0.0, 0.0, @@ -4203,8 +9133,70 @@ 0.0, 1.0, 0.0, -154.85, --130.1, +353.1, +192.5, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "GF body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 50.25, +"y": 72.5 +}, +"M3D": [ +1.0142822265625, +0.0, +0.0, +0.0, +-0.0266265869140625, +0.977935791015625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +418.9, +179.6, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.65, +"y": 63.85 +}, +"M3D": [ +1.0142822265625, +0.0, +0.0, +0.0, +-0.0266265869140625, +0.977935791015625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +492.9, +188.9, 0.0, 1.0 ] @@ -4218,6 +9210,37 @@ "E": [ { "SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 53.1, +"y": 62.050000000000007 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +350.5, +189.6, +0.0, +1.0 +] +} +}, +{ +"SI": { "SN": "GF body", "IN": "", "ST": "G", @@ -4240,32 +9263,24 @@ 0.0, 1.0, 0.0, -150.95, --133.3, +415.0, +176.4, 0.0, 1.0 ] } -} -] -} -] }, { -"LN": "Layer_14", -"FR": [ -{ -"I": 0, -"DU": 17, -"E": [] +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.6, +"y": 63.85 }, -{ -"I": 17, -"DU": 2, -"E": [ -{ -"ASI": { -"N": "0006", "M3D": [ 1.0, 0.0, @@ -4279,153 +9294,8 @@ 0.0, 1.0, 0.0, -134.0, --242.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 2, -"E": [ -{ -"ASI": { -"N": "0007", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -129.0, --243.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0008", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -129.0, --233.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 3, -"E": [ -{ -"ASI": { -"N": "0009", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -116.0, --240.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 3, -"E": [ -{ -"ASI": { -"N": "0010", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -117.0, --233.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 2, -"E": [ -{ -"ASI": { -"N": "0011", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -114.0, --249.0, +488.2, +185.95, 0.0, 1.0 ] @@ -4436,7 +9306,7 @@ ] }, { -"LN": "Layer_13", +"LN": "arm_swing_1", "FR": [ { "I": 0, @@ -4444,30 +9314,30 @@ "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 72.0, -"y": 144.20000000000003 +"x": 81.35000000000001, +"y": 89.35000000000001 }, "M3D": [ -0.66558837890625, --0.739959716796875, -0.0, -0.0, -0.739959716796875, -0.66558837890625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -2.15, --126.4, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4477,34 +9347,71 @@ }, { "I": 1, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 72.05, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.556304931640625, --0.825836181640625, -0.0, -0.0, -0.825836181640625, -0.556304931640625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, --2.35, --104.4, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4514,34 +9421,71 @@ }, { "I": 3, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 3, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.15 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.435394287109375, --0.8950042724609375, -0.0, -0.0, -0.8950042724609375, -0.435394287109375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, --3.6, --81.95, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4551,34 +9495,71 @@ }, { "I": 5, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 5, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.15 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.4395751953125, --0.89251708984375, -0.0, -0.0, -0.89251708984375, -0.4395751953125, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, --2.55, --85.7, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4588,34 +9569,108 @@ }, { "I": 7, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 7, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.1 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.5743865966796875, --0.81170654296875, -0.0, -0.0, -0.81170654296875, -0.5743865966796875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -9.4, --119.95, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 8, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 9, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 9, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4625,34 +9680,108 @@ }, { "I": 10, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 10, "LP": "LP", "TRP": { -"x": 72.2, -"y": 144.0 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.7266845703125, --0.67730712890625, -0.0, -0.0, -0.67730712890625, -0.7266845703125, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -18.8, --155.45, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 11, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 11, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 12, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 12, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4662,34 +9791,71 @@ }, { "I": 13, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 13, "LP": "LP", "TRP": { -"x": 72.15, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.75640869140625, --0.649322509765625, -0.0, -0.0, -0.649322509765625, -0.75640869140625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -24.6, --163.95, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 14, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 14, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4703,30 +9869,30 @@ "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 15, "LP": "LP", "TRP": { -"x": 72.15, -"y": 144.25 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.766845703125, --0.63629150390625, -0.0, -0.0, -0.63629150390625, -0.766845703125, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -31.75, --170.4, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4736,34 +9902,71 @@ }, { "I": 16, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 16, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.15 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.843902587890625, --0.53033447265625, -0.0, -0.0, -0.53033447265625, -0.843902587890625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -42.5, --184.1, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 17, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4773,34 +9976,71 @@ }, { "I": 18, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 18, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.15 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.8622894287109375, --0.499664306640625, -0.0, -0.0, -0.499664306640625, -0.8622894287109375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -45.6, --190.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 19, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4810,34 +10050,71 @@ }, { "I": 20, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 20, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.88323974609375, --0.4612884521484375, -0.0, -0.0, -0.4612884521484375, -0.88323974609375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -50.6, --197.8, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 21, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4847,34 +10124,71 @@ }, { "I": 22, -"DU": 2, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 22, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.89691162109375, --0.433837890625, -0.0, -0.0, -0.433837890625, -0.89691162109375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -47.55, --205.75, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 23, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 23, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4884,34 +10198,108 @@ }, { "I": 24, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 24, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.8358154296875, --0.54150390625, -0.0, -0.0, -0.54150390625, -0.8358154296875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -36.45, --189.2, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 25, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 25, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 26, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 26, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4921,34 +10309,108 @@ }, { "I": 27, -"DU": 3, +"DU": 1, "E": [ { "SI": { -"SN": "right arm up", +"SN": "arm swing 1", "IN": "", "ST": "G", -"FF": 0, +"FF": 27, "LP": "LP", "TRP": { -"x": 72.10000000000001, -"y": 144.20000000000003 +"x": 81.35, +"y": 89.35 }, "M3D": [ -0.8061370849609375, --0.58447265625, -0.0, -0.0, -0.58447265625, -0.8061370849609375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -32.4, --181.8, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 28, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 28, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 29, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 29, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +298.8, +73.3, 0.0, 1.0 ] @@ -4967,7 +10429,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -4981,8 +10443,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5012,8 +10474,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5027,7 +10489,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5041,8 +10503,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5072,8 +10534,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5087,7 +10549,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5101,8 +10563,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5132,8 +10594,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5147,7 +10609,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5161,8 +10623,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5192,8 +10654,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5207,7 +10669,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5221,8 +10683,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5252,8 +10714,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5267,7 +10729,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5281,8 +10743,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5312,8 +10774,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5327,7 +10789,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5341,8 +10803,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5372,8 +10834,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5387,7 +10849,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5401,8 +10863,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5432,8 +10894,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5447,7 +10909,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5461,8 +10923,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5492,8 +10954,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5507,7 +10969,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5521,8 +10983,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5552,8 +11014,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5567,7 +11029,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5581,8 +11043,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5612,8 +11074,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5627,7 +11089,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5641,8 +11103,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5672,8 +11134,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5687,7 +11149,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5701,8 +11163,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5732,8 +11194,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5747,7 +11209,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5761,8 +11223,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5792,8 +11254,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5807,7 +11269,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5821,8 +11283,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5852,8 +11314,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5867,7 +11329,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5881,8 +11343,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5912,8 +11374,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5927,7 +11389,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -5941,8 +11403,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -5972,8 +11434,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -5987,7 +11449,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6001,8 +11463,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6032,8 +11494,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6047,7 +11509,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6061,8 +11523,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6092,8 +11554,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6107,7 +11569,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6121,8 +11583,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6152,8 +11614,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6167,7 +11629,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6181,8 +11643,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6212,8 +11674,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6227,7 +11689,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6241,8 +11703,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6272,8 +11734,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6287,7 +11749,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6301,8 +11763,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6332,8 +11794,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6347,7 +11809,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6361,8 +11823,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6392,8 +11854,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6407,7 +11869,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6421,8 +11883,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6452,8 +11914,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6467,7 +11929,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6481,8 +11943,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6512,8 +11974,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6527,7 +11989,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6541,8 +12003,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6572,8 +12034,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6587,7 +12049,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6601,8 +12063,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6632,8 +12094,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6647,7 +12109,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6661,8 +12123,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6692,8 +12154,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, 0.0, 1.0 ] @@ -6707,7 +12169,7 @@ "E": [ { "ASI": { -"N": "0013", +"N": "0011", "M3D": [ 1.0, 0.0, @@ -6721,8 +12183,8 @@ 0.0, 1.0, 0.0, --19.0, --6.0, +245.0, +304.0, 0.0, 1.0 ] @@ -6752,8 +12214,610 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +130.1, +296.85, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_15", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.30000000000001, +"y": 142.95000000000003 +}, +"M3D": [ +1.04803466796875, +0.0, +0.0, +0.0, +0.0, +0.9936981201171875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +646.55, +297.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 81.75, +"y": 74.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +650.5, +296.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.30000000000001, +"y": 145.75 +}, +"M3D": [ +0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.05487060546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +652.4, +288.15, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.35000000000001, +"y": 145.75 +}, +"M3D": [ +0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.07440185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +652.4, +285.35, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.30000000000001, +"y": 142.95000000000003 +}, +"M3D": [ +1.04803466796875, +0.0, +0.0, +0.0, +0.0, +0.9936981201171875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +646.55, +297.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 81.75, +"y": 74.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +650.5, +296.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.30000000000001, +"y": 145.75 +}, +"M3D": [ +0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.05487060546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +652.4, +288.15, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.07440185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +652.4, +285.35, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_26", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +-0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.07440185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +284.0, +303.6, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +-0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.099090576171875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +284.0, +300.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.35000000000001, +"y": 145.8 +}, +"M3D": [ +-0.9700927734375, +0.0, +0.0, +0.0, +0.0, +1.1220703125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +283.4, +296.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.25, +"y": 145.85 +}, +"M3D": [ +-0.9624481201171875, +0.0, +0.0, +0.0, +0.0, +1.17132568359375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +282.75, +289.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +-0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.07440185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +284.0, +303.6, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +-0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.099090576171875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +284.0, +300.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.35000000000001, +"y": 145.8 +}, +"M3D": [ +-0.9700927734375, +0.0, +0.0, +0.0, +0.0, +1.1220703125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +283.4, +296.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 9, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.25, +"y": 145.85 +}, +"M3D": [ +-0.9624481201171875, +0.0, +0.0, +0.0, +0.0, +1.17132568359375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +282.75, +289.55, 0.0, 1.0 ] @@ -6794,8 +12858,8 @@ 0.0, 1.0, 0.0, -8.2, --253.65, +272.25, +56.05, 0.0, 1.0 ] @@ -6816,7 +12880,7 @@ "LP": "LP", "TRP": { "x": 171.5, -"y": 67.2 +"y": 67.15 }, "M3D": [ 0.968902587890625, @@ -6831,8 +12895,8 @@ 0.0, 1.0, 0.0, -7.6, --253.8, +271.65, +55.9, 0.0, 1.0 ] @@ -6852,7 +12916,7 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 171.45000000000003, +"x": 171.5, "y": 67.15 }, "M3D": [ @@ -6868,8 +12932,8 @@ 0.0, 1.0, 0.0, -10.6, --261.75, +274.65, +47.95, 0.0, 1.0 ] @@ -6905,8 +12969,8 @@ 0.0, 1.0, 0.0, -15.75, --268.9, +279.8, +40.8, 0.0, 1.0 ] @@ -6942,8 +13006,8 @@ 0.0, 1.0, 0.0, -59.85, --316.2, +323.9, +-6.5, 0.0, 1.0 ] @@ -6979,8 +13043,8 @@ 0.0, 1.0, 0.0, -66.75, --326.65, +330.8, +-16.95, 0.0, 1.0 ] @@ -7016,8 +13080,8 @@ 0.0, 1.0, 0.0, -68.85, --328.1, +332.9, +-18.4, 0.0, 1.0 ] @@ -7053,8 +13117,8 @@ 0.0, 1.0, 0.0, -99.0, --333.65, +363.05, +-23.95, 0.0, 1.0 ] @@ -7090,8 +13154,8 @@ 0.0, 1.0, 0.0, -97.55, --331.55, +361.6, +-21.85, 0.0, 1.0 ] @@ -7127,8 +13191,8 @@ 0.0, 1.0, 0.0, -92.0, --327.5, +356.05, +-17.8, 0.0, 1.0 ] @@ -7164,8 +13228,8 @@ 0.0, 1.0, 0.0, -83.7, --322.0, +347.75, +-12.3, 0.0, 1.0 ] @@ -7201,8 +13265,8 @@ 0.0, 1.0, 0.0, -44.25, --285.0, +308.3, +24.7, 0.0, 1.0 ] @@ -7238,8 +13302,8 @@ 0.0, 1.0, 0.0, -41.0, --281.85, +305.05, +27.85, 0.0, 1.0 ] @@ -7275,2053 +13339,8 @@ 0.0, 1.0, 0.0, -38.85, --279.45, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "tankman_bottom_Layer", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 2, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 3, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 4, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 4, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 5, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 7, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 7, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 8, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 9, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 10, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 11, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 12, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 14, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 14, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 15, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 15, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 16, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 16, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 17, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 17, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 18, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 18, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 19, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 19, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 20, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 20, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 21, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 21, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 22, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 22, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 23, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 23, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 23, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 24, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 24, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 24, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 25, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 25, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 26, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 26, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 26, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 27, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 27, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 27, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 28, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 28, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 29, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 29, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 29, -"LP": "PO", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, +302.9, +30.25, 0.0, 1.0 ] @@ -9335,4284 +13354,11 @@ } }, { -"SN": "tankman top", +"SN": "arm gun", "TL": { "L": [ { -"LN": "tankman", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45000000000003 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 108.80000000000001, -"y": 148.35 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 108.8, -"y": 148.3 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.80000000000001, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.8, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -0.999755859375, --0.01416015625, -0.0, -0.0, -0.01416015625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -451.1, --219.1, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 319.45, -"y": 86.10000000000001 -}, -"M3D": [ -0.999908447265625, --0.010040283203125, -0.0, -0.0, -0.010040283203125, -0.999908447265625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -285.35, --148.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45000000000003 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 108.80000000000001, -"y": 148.35 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 108.8, -"y": 148.3 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.80000000000001, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.8, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -0.999755859375, --0.01416015625, -0.0, -0.0, -0.01416015625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -451.1, --219.1, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 319.45, -"y": 86.10000000000001 -}, -"M3D": [ -0.999908447265625, --0.010040283203125, -0.0, -0.0, -0.010040283203125, -0.999908447265625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -285.35, --148.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 23, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 24, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 26, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 27, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 29, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "stick up head 1", -"TL": { -"L": [ -{ -"LN": "Layer_1", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0016", -"M3D": [ -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0017", -"M3D": [ -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0018", -"M3D": [ -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, --5.8, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0019", -"M3D": [ -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -0.9703369140625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -3.85, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "stick up arm", -"TL": { -"L": [ -{ -"LN": "Layer_2", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0015", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "tankman top 2", -"TL": { -"L": [ -{ -"LN": "tankman", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45000000000003 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 108.80000000000001, -"y": 148.35 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 108.8, -"y": 148.3 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.80000000000001, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.8, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -0.999755859375, --0.01416015625, -0.0, -0.0, -0.01416015625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -451.1, --219.1, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 319.45, -"y": 86.10000000000001 -}, -"M3D": [ -0.999908447265625, --0.010040283203125, -0.0, -0.0, -0.010040283203125, -0.999908447265625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -285.35, --148.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45000000000003 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 109.0, -"y": 148.45 -}, -"M3D": [ -1.0271148681640626, --0.084075927734375, -0.0, -0.0, -0.0804595947265625, -0.982940673828125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.3, --198.95, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 89.2 -}, -"M3D": [ -0.9977874755859375, --0.0633392333984375, -0.0, -0.0, -0.0633392333984375, -0.9977874755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.35, --126.4, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 108.80000000000001, -"y": 148.35 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 108.8, -"y": 148.3 -}, -"M3D": [ -1.014251708984375, --0.09698486328125, -0.0, -0.0, -0.09515380859375, -0.9951171875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -439.55, --202.3, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.45, -"y": 89.2 -}, -"M3D": [ -0.9983367919921875, --0.054290771484375, -0.0, -0.0, -0.054290771484375, -0.9983367919921875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -281.95, --132.35, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.80000000000001, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.40000000000006, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.8, -"y": 83.4 -}, -"M3D": [ -0.999755859375, --0.0183258056640625, -0.0, -0.0, -0.0183258056640625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -450.8, --215.75, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 320.4, -"y": 87.15 -}, -"M3D": [ -0.999755859375, --0.0178680419921875, -0.0, -0.0, -0.0178680419921875, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -284.75, --146.1, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -0.999755859375, --0.01416015625, -0.0, -0.0, -0.01416015625, -0.999755859375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -451.1, --219.1, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 319.45, -"y": 86.10000000000001 -}, -"M3D": [ -0.999908447265625, --0.010040283203125, -0.0, -0.0, -0.010040283203125, -0.999908447265625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -285.35, --148.6, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85000000000001, -"y": 83.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 23, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 24, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 26, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 27, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 29, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up head 1", -"IN": "", -"ST": "G", -"FF": 1, -"LP": "SF", -"TRP": { -"x": 99.85, -"y": 83.35 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -452.25, --221.55, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up arm", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 177.4, -"y": 106.15 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -286.25, --151.85, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "gf top leg", -"TL": { -"L": [ -{ -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13622,12 +13368,12 @@ "ASI": { "N": "0000", "M3D": [ -1.0, +0.9999847412109375, 0.0, 0.0, 0.0, 0.0, -1.0, +0.9999847412109375, 0.0, 0.0, 0.0, @@ -13649,11 +13395,11 @@ } }, { -"SN": "gf bottom leg", +"SN": "tankman head", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13663,19 +13409,19 @@ "ASI": { "N": "0001", "M3D": [ -0.9511260986328125, +0.9875335693359375, 0.0, 0.0, 0.0, 0.0, -0.9511260986328125, +0.9875335693359375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, +-0.95, 0.0, 0.0, 1.0 @@ -13690,11 +13436,11 @@ } }, { -"SN": "left arm up", +"SN": "tankmen body", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13716,7 +13462,7 @@ 0.0, 1.0, 0.0, --2.0, +0.0, 0.0, 0.0, 1.0 @@ -13731,11 +13477,11 @@ } }, { -"SN": "gf head", +"SN": "steve head", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13772,11 +13518,11 @@ } }, { -"SN": "gf face", +"SN": "gf top leg", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13813,11 +13559,11 @@ } }, { -"SN": "GF body", +"SN": "gf bottom leg", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -13827,12 +13573,12 @@ "ASI": { "N": "0005", "M3D": [ -0.98590087890625, +0.9511260986328125, 0.0, 0.0, 0.0, 0.0, -0.98590087890625, +0.9511260986328125, 0.0, 0.0, 0.0, @@ -13854,19 +13600,27 @@ } }, { -"SN": "right arm up", +"SN": "arm swing 2", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Layer_8", "FR": [ { "I": 0, "DU": 1, "E": [ { -"ASI": { -"N": "0012", +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 52.15, +"y": 80.45 +}, "M3D": [ 1.0, 0.0, @@ -13880,8 +13634,1306 @@ 0.0, 1.0, 0.0, -21.0, -17.0, +22.1, +6.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 1, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 41.15, +"y": 155.45000000000003 +}, +"M3D": [ +0.996978759765625, +-0.077667236328125, +0.0, +0.0, +0.077667236328125, +0.996978759765625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +10.15, +9.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 3, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 41.2, +"y": 155.5 +}, +"M3D": [ +0.9857177734375, +-0.168212890625, +0.0, +0.0, +0.168212890625, +0.9857177734375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-3.5, +15.4, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 5, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 12.75, +"y": 14.9 +}, +"M3D": [ +0.9764404296875, +-0.2156219482421875, +0.0, +0.0, +0.2156219482421875, +0.9764404296875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-8.75, +15.75, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 7, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 12.75, +"y": 14.9 +}, +"M3D": [ +0.9764404296875, +-0.2156219482421875, +0.0, +0.0, +0.2156219482421875, +0.9764404296875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-6.65, +13.35, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 10, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 30.05, +"y": 149.05 +}, +"M3D": [ +0.994873046875, +0.1004638671875, +0.0, +0.0, +-0.1004638671875, +0.994873046875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +39.9, +1.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 13, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": -2.7, +"y": 163.25 +}, +"M3D": [ +0.97027587890625, +0.2417449951171875, +0.0, +0.0, +-0.2417449951171875, +0.97027587890625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +62.9, +5.5, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": -2.7, +"y": 163.3 +}, +"M3D": [ +0.95758056640625, +0.287841796875, +0.0, +0.0, +-0.287841796875, +0.95758056640625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +70.4, +7.7, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 16, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.1, +"y": 150.85 +}, +"M3D": [ +0.83441162109375, +0.5509490966796875, +0.0, +0.0, +-0.5509490966796875, +0.83441162109375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +114.05, +17.85, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 18, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.300000000000007, +"y": 150.85 +}, +"M3D": [ +0.803375244140625, +0.59521484375, +0.0, +0.0, +-0.59521484375, +0.803375244140625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +124.15, +21.55, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 20, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.25, +"y": 150.9 +}, +"M3D": [ +0.77099609375, +0.6366424560546875, +0.0, +0.0, +-0.6366424560546875, +0.77099609375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +129.7, +23.7, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 22, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.300000000000007, +"y": 150.9 +}, +"M3D": [ +0.8430023193359375, +0.537628173828125, +0.0, +0.0, +-0.537628173828125, +0.8430023193359375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +112.45, +7.95, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 24, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.35, +"y": 150.9 +}, +"M3D": [ +0.903900146484375, +0.4273681640625, +0.0, +0.0, +-0.4273681640625, +0.903900146484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +93.8, +2.3, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 27, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 32.4, +"y": 150.95000000000003 +}, +"M3D": [ +0.932830810546875, +0.35980224609375, +0.0, +0.0, +-0.35980224609375, +0.932830810546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +82.65, +0.1, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf arm 1", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0014", +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf head", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0006", +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +-1.0, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf face", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0007", +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf bg arm", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0008", +"M3D": [ +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-105861939.2, +-105861939.2, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "GF body", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0009", +"M3D": [ +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf fg arm", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0010", +"M3D": [ +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +0.9859161376953125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-105861939.2, +-105861939.2, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "arm swing 1", +"TL": { +"L": [ +{ +"LN": "Layer_6", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 116.60000000000001, +"y": 114.65 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +11.0, +42.6, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 1, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 116.55, +"y": 114.7 +}, +"M3D": [ +0.9915618896484375, +-0.1296234130859375, +0.0, +0.0, +0.1296234130859375, +0.9915618896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-2.85, +58.7, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 3, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 116.7, +"y": 114.80000000000001 +}, +"M3D": [ +0.96124267578125, +-0.2755126953125, +0.0, +0.0, +0.2755126953125, +0.96124267578125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-14.3, +78.65, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 5, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 116.65, +"y": 114.75 +}, +"M3D": [ +0.96807861328125, +-0.25054931640625, +0.0, +0.0, +0.25054931640625, +0.96807861328125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-13.15, +74.65, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 7, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 47.7, +"y": 117.25 +}, +"M3D": [ +0.994537353515625, +-0.10394287109375, +0.0, +0.0, +0.10394287109375, +0.994537353515625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +12.95, +42.9, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 10, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 118.05, +"y": 125.35000000000001 +}, +"M3D": [ +0.997833251953125, +0.06500244140625, +0.0, +0.0, +-0.06500244140625, +0.997833251953125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +33.45, +19.85, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 13, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 118.10000000000001, +"y": 125.4 +}, +"M3D": [ +0.99310302734375, +0.1165771484375, +0.0, +0.0, +-0.1165771484375, +0.99310302734375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +40.45, +14.35, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 2.15, +"y": 6.75 +}, +"M3D": [ +0.990234375, +0.13873291015625, +0.0, +0.0, +-0.13873291015625, +0.990234375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +50.6, +5.4, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 16, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 8.700000000000001, +"y": 8.950000000000001 +}, +"M3D": [ +0.9703369140625, +0.2413177490234375, +0.0, +0.0, +-0.2413177490234375, +0.9703369140625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +67.1, +1.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 18, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 112.4, +"y": 126.4 +}, +"M3D": [ +0.95928955078125, +0.2819061279296875, +0.0, +0.0, +-0.2819061279296875, +0.95928955078125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +71.75, +-1.1, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 20, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 112.45, +"y": 126.4 +}, +"M3D": [ +0.9420013427734375, +0.335205078125, +0.0, +0.0, +-0.335205078125, +0.9420013427734375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +80.45, +-7.6, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 22, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 112.45, +"y": 126.4 +}, +"M3D": [ +0.9373779296875, +0.347900390625, +0.0, +0.0, +-0.347900390625, +0.9373779296875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +77.45, +-13.0, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 24, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 112.5, +"y": 126.45 +}, +"M3D": [ +0.97259521484375, +0.23187255859375, +0.0, +0.0, +-0.23187255859375, +0.97259521484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +58.85, +-4.4, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 27, +"DU": 3, +"E": [ +{ +"SI": { +"SN": "gf arm 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 112.60000000000001, +"y": 126.5 +}, +"M3D": [ +0.97906494140625, +0.2026824951171875, +0.0, +0.0, +-0.2026824951171875, +0.97906494140625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +54.45, +-1.95, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ +"SN": "gf arm 2", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0015", +"M3D": [ +0.9999847412109375, +0.0, +0.0, +0.0, +0.0, +0.9999847412109375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-5.95, +4.95, 0.0, 1.0 ] @@ -15021,12 +16073,12 @@ "y": 124.85000000000001 }, "M3D": [ -1.0085601806640626, +1.008544921875, 0.0, 0.0, 0.0, 0.0, -1.0085601806640626, +1.008544921875, 0.0, 0.0, 0.0, @@ -18340,7 +19392,7 @@ "E": [ { "ASI": { -"N": "0022", +"N": "0018", "M3D": [ 0.9628753662109375, 0.0, @@ -18373,7 +19425,7 @@ "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18381,7 +19433,7 @@ "E": [ { "ASI": { -"N": "0020", +"N": "0016", "M3D": [ 1.0, 0.0, @@ -18414,7 +19466,7 @@ "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18422,7 +19474,7 @@ "E": [ { "ASI": { -"N": "0021", +"N": "0017", "M3D": [ 1.0, 0.0, @@ -18750,7 +19802,7 @@ "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18758,7 +19810,7 @@ "E": [ { "ASI": { -"N": "0023", +"N": "0019", "M3D": [ 1.0, 0.0, @@ -18791,7 +19843,7 @@ "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18799,7 +19851,7 @@ "E": [ { "ASI": { -"N": "0024", +"N": "0020", "M3D": [ 1.0, 0.0, @@ -18832,7 +19884,7 @@ "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18840,7 +19892,7 @@ "E": [ { "ASI": { -"N": "0025", +"N": "0021", "M3D": [ 1.0, 0.0, @@ -18869,11 +19921,52 @@ } }, { +"SN": "tank foot", +"TL": { +"L": [ +{ +"LN": "Livello_2", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"ASI": { +"N": "0012", +"M3D": [ +0.853729248046875, +0.0, +0.0, +0.0, +0.0, +0.853729248046875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0 +] +} +} +] +} +] +} +] +} +}, +{ "SN": "gf hair", "TL": { "L": [ { -"LN": "Layer_2", +"LN": "Livello_2", "FR": [ { "I": 0, @@ -18881,7 +19974,7 @@ "E": [ { "ASI": { -"N": "0014", +"N": "0013", "M3D": [ 1.0, 0.0, @@ -18910,816 +20003,42 @@ } }, { -"SN": "tankman bottom", -"TL": { -"L": [ -{ -"LN": "tm_back_foot", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 64.9, -"y": 134.05 -}, -"M3D": [ -1.0316009521484376, -0.0, -0.0, -0.0, -0.0, -0.938079833984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -359.35, -16.7, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 84.05, -"y": 215.45000000000003 -}, -"M3D": [ -1.0364227294921876, -0.01385498046875, -0.0, -0.0, --0.012908935546875, -0.9643402099609375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.6, --91.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 64.9, -"y": 134.05 -}, -"M3D": [ -1.0316009521484376, -0.0, -0.0, -0.0, -0.0, -0.938079833984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -359.35, -14.7, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 84.0, -"y": 215.5 -}, -"M3D": [ -1.0216522216796876, -0.004730224609375, -0.0, -0.0, --0.0045318603515625, -0.978485107421875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.05, --94.2, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -5.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 92.2, -"y": 224.45000000000003 -}, -"M3D": [ -0.9999237060546875, -0.0093994140625, -0.0, -0.0, --0.0093994140625, -0.9999237060546875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -409.95, --99.2, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -3.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 110.2, -"y": 118.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.85, --98.3, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 8, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -3.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 110.2, -"y": 118.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.85, --98.3, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 64.9, -"y": 134.05 -}, -"M3D": [ -1.0316009521484376, -0.0, -0.0, -0.0, -0.0, -0.938079833984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -359.35, -16.7, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 84.05, -"y": 215.45000000000003 -}, -"M3D": [ -1.0364227294921876, -0.01385498046875, -0.0, -0.0, --0.012908935546875, -0.9643402099609375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.6, --91.85, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 64.9, -"y": 134.05 -}, -"M3D": [ -1.0316009521484376, -0.0, -0.0, -0.0, -0.0, -0.938079833984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -359.35, -14.7, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 84.0, -"y": 215.5 -}, -"M3D": [ -1.0216522216796876, -0.004730224609375, -0.0, -0.0, --0.0045318603515625, -0.978485107421875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.05, --94.2, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -5.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 92.2, -"y": 224.45000000000003 -}, -"M3D": [ -0.9999237060546875, -0.0093994140625, -0.0, -0.0, --0.0093994140625, -0.9999237060546875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -409.95, --99.2, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -3.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 110.2, -"y": 118.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.85, --98.3, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 8, -"E": [ -{ -"SI": { -"SN": "stick up back foot", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 79.9, -"y": 72.05 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -364.4, -3.4, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "stick up body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 110.2, -"y": 118.35000000000001 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -407.85, --98.3, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "stick up back foot", -"TL": { -"L": [ -{ -"LN": "Layer_2", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0026", -"M3D": [ -0.9693603515625, -0.0, -0.0, -0.0, -0.0, -0.9693603515625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ -"SN": "stick up body", -"TL": { -"L": [ -{ -"LN": "Layer_2", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"ASI": { -"N": "0027", -"M3D": [ -0.9647674560546875, -0.0, -0.0, -0.0, -0.0, -0.9647674560546875, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -} -] -} -] -} -] -} -}, -{ "SN": "GF Crying at Gunpoint", "TL": { "L": [ { -"LN": "tankman_top_Layer", +"LN": "Layer_7", "FR": [ { "I": 0, -"DU": 1, +"DU": 80, "E": [ { "SI": { -"SN": "tankman top", +"SN": "tankmen body", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 0, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 126.10000000000001, +"y": 255.70000000000003 }, "M3D": [ -1.0, +0.89178466796875, +0.0306396484375, +0.0, +0.0, +0.0098114013671875, +0.863800048828125, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, +354.15, +217.55, 0.0, 1.0 ] @@ -19727,17 +20046,82 @@ }, { "SI": { -"SN": "tankman top 2", +"SN": "tankman head", "IN": "", "ST": "G", -"FF": 6, -"LP": "SF", +"FF": 0, +"LP": "LP", "TRP": { -"x": 469.65000000000006, -"y": -68.25 +"x": 200.25, +"y": 161.4 }, "M3D": [ --1.0, +0.999969482421875, +0.003875732421875, +0.0, +0.0, +-0.003875732421875, +0.999969482421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +399.35, +92.3, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 316.85, +"y": 88.9 +}, +"M3D": [ +0.999969482421875, +0.0077972412109375, +0.0, +0.0, +-0.0077972412109375, +0.999969482421875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +235.9, +160.8, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_5", +"FR": [ +{ +"I": 0, +"DU": 80, +"E": [ +{ +"ASI": { +"N": "0011", +"M3D": [ +1.0, 0.0, 0.0, 0.0, @@ -19749,8 +20133,174 @@ 0.0, 1.0, 0.0, -392.1, +-70.3, +309.45, 0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 53.1, +"y": 62.050000000000007 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +35.2, +195.05, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "tankmen body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 1.95, +"y": 269.85 +}, +"M3D": [ +-0.888671875, +0.0305023193359375, +0.0, +0.0, +-0.0042877197265625, +0.87774658203125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-65.2, +214.55, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "steve head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 200.25, +"y": 161.05 +}, +"M3D": [ +-0.99993896484375, +0.005584716796875, +0.0, +0.0, +0.005584716796875, +0.99993896484375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-108.6, +89.15, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "arm gun", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 336.6, +"y": 90.35000000000001 +}, +"M3D": [ +-0.99981689453125, +0.0145263671875, +0.0, +0.0, +0.0145263671875, +0.99981689453125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +52.7, +159.15, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_8", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -19764,14 +20314,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -19786,39 +20336,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -19832,14 +20351,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -19854,39 +20373,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -19900,14 +20388,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -19922,39 +20410,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -19968,14 +20425,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -19990,39 +20447,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20036,14 +20462,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20058,39 +20484,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20104,14 +20499,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20126,39 +20521,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20172,14 +20536,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20194,39 +20558,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20240,14 +20573,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20262,39 +20595,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20308,14 +20610,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20330,39 +20632,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20376,14 +20647,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20398,39 +20669,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20444,14 +20684,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20466,39 +20706,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20512,14 +20721,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20534,39 +20743,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20580,14 +20758,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20602,39 +20780,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20648,14 +20795,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20670,39 +20817,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20716,14 +20832,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20738,39 +20854,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20784,14 +20869,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20806,39 +20891,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20852,14 +20906,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20874,39 +20928,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20920,14 +20943,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -20942,39 +20965,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -20988,14 +20980,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21010,39 +21002,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21056,14 +21017,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21078,39 +21039,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21124,14 +21054,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21146,39 +21076,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21192,14 +21091,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21214,39 +21113,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21260,14 +21128,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21282,39 +21150,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21328,14 +21165,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21350,39 +21187,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21396,14 +21202,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21418,39 +21224,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21464,14 +21239,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21486,39 +21261,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21532,14 +21276,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21554,39 +21298,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21600,14 +21313,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21622,39 +21335,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21668,14 +21350,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21690,39 +21372,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21736,14 +21387,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21758,39 +21409,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21804,14 +21424,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21826,39 +21446,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21872,14 +21461,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21894,39 +21483,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -21940,14 +21498,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -21962,39 +21520,8 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -22008,14 +21535,14 @@ "E": [ { "SI": { -"SN": "tankman top", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 13, -"LP": "SF", +"FF": 1, +"LP": "LP", "TRP": { -"x": 0.0, -"y": 0.0 +"x": 97.0, +"y": 86.9 }, "M3D": [ 1.0, @@ -22030,112 +21557,45 @@ 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman top 2", -"IN": "", -"ST": "G", -"FF": 6, -"LP": "SF", -"TRP": { -"x": 469.65, -"y": -68.25 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.1, -0.0, +140.55, +86.05, 0.0, 1.0 ] } } ] -} -] }, { -"LN": "Layer_1", -"FR": [ -{ -"I": 0, -"DU": 2, +"I": 35, +"DU": 1, "E": [ { "SI": { -"SN": "gf top leg", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 156.55, -"y": 38.65 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9948577880859375, --0.0978851318359375, -0.0, -0.0, -0.0978851318359375, -0.9948577880859375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -67.4, --43.65, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf bottom leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 23.700000000000004, -"y": 24.25 -}, -"M3D": [ -0.989654541015625, -0.1400146484375, -0.0, -0.0, --0.1400146484375, -0.989654541015625, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -164.05, --25.05, +140.55, +86.05, 0.0, 1.0 ] @@ -22144,108 +21604,72 @@ ] }, { -"I": 2, -"DU": 33, +"I": 36, +"DU": 1, "E": [ { "SI": { -"SN": "gf top leg", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 156.55, -"y": 38.7 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9983978271484375, --0.053253173828125, -0.0, -0.0, -0.053253173828125, -0.9983978271484375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -68.6, --50.8, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "gf bottom leg", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 23.700000000000004, -"y": 24.150000000000003 -}, -"M3D": [ -0.9969482421875, -0.0745697021484375, -0.0, -0.0, --0.0745697021484375, -0.9969482421875, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -159.55, --24.9, +140.55, +86.05, 0.0, 1.0 ] } } ] -} -] }, { -"LN": "Layer_12", -"FR": [ -{ -"I": 0, -"DU": 2, +"I": 37, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 16.8, -"y": 128.55 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9738006591796875, -0.21807861328125, -0.0, -0.0, --0.21807861328125, -0.9738006591796875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -269.55, --213.85, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -22254,35 +21678,1552 @@ ] }, { -"I": 2, -"DU": 33, +"I": 38, +"DU": 1, "E": [ { "SI": { -"SN": "left arm up", +"SN": "arm swing 2", "IN": "", "ST": "G", -"FF": 0, +"FF": 1, "LP": "LP", "TRP": { -"x": 16.75, -"y": 128.35 +"x": 97.0, +"y": 86.9 }, "M3D": [ -0.9859619140625, -0.1572113037109375, -0.0, -0.0, --0.1572113037109375, -0.9859619140625, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -259.15, --215.6, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 39, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 40, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 41, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 42, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 43, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 44, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 45, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 46, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 47, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 48, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 49, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 50, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 51, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 52, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 53, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 54, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 55, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 56, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 57, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 58, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 59, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 60, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 61, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 62, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 63, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 64, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 65, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 66, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 67, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 68, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 69, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 70, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 71, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 72, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 73, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 74, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 75, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 76, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 77, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 78, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 79, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 2", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 97.0, +"y": 86.9 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +140.55, +86.05, 0.0, 1.0 ] @@ -22301,61 +23242,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.400000000000009 -}, -"M3D": [ -0.9837493896484375, --0.1702880859375, -0.0, -0.0, -0.1702880859375, -0.9837493896484375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -100.6, --186.0, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 58.550000000000007, -"y": 41.65 +"x": 58.5, +"y": 41.550000000000007 }, "M3D": [ -0.99798583984375, --0.0214080810546875, +0.9998626708984375, +-0.0134429931640625, 0.0, 0.0, -0.0214080810546875, -0.99798583984375, +0.0134429931640625, +0.9998626708984375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -134.45, --161.85, +70.25, +148.15, 0.0, 1.0 ] @@ -22369,61 +23279,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.4 -}, -"M3D": [ -0.9837493896484375, --0.1702880859375, -0.0, -0.0, -0.1702880859375, -0.9837493896484375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -100.6, --186.0, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 1, "LP": "LP", "TRP": { -"x": 58.55, -"y": 41.65 +"x": 58.5, +"y": 41.55 }, "M3D": [ -0.99798583984375, --0.0214080810546875, +0.9998626708984375, +-0.0134429931640625, 0.0, 0.0, -0.0214080810546875, -0.99798583984375, +0.0134429931640625, +0.9998626708984375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -134.45, --161.85, +70.25, +148.15, 0.0, 1.0 ] @@ -22437,61 +23316,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.65, -"y": 60.550000000000007 -}, -"M3D": [ -0.98663330078125, --0.155853271484375, -0.0, -0.0, -0.155853271484375, -0.98663330078125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -102.55, --191.15, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 2, "LP": "LP", "TRP": { -"x": 58.6, +"x": 58.5, "y": 41.6 }, "M3D": [ -0.9987030029296875, --0.0066986083984375, -0.0, -0.0, -0.0066986083984375, -0.9987030029296875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -135.95, --166.4, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22505,61 +23353,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.65, -"y": 60.55 -}, -"M3D": [ -0.98663330078125, --0.155853271484375, -0.0, -0.0, -0.155853271484375, -0.98663330078125, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -102.55, --191.15, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 3, "LP": "LP", "TRP": { -"x": 58.6, +"x": 58.5, "y": 41.6 }, "M3D": [ -0.9987030029296875, --0.0066986083984375, -0.0, -0.0, -0.0066986083984375, -0.9987030029296875, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -135.95, --166.4, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22573,61 +23390,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.550000000000007 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 4, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.550000000000007 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22641,61 +23427,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 5, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22709,61 +23464,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 6, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22777,61 +23501,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 7, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22845,61 +23538,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22913,61 +23575,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 1, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -22981,61 +23612,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 2, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23049,61 +23649,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 3, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23117,61 +23686,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 4, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23185,61 +23723,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 5, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23253,61 +23760,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 6, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23321,61 +23797,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 7, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23389,61 +23834,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23457,61 +23871,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 1, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23525,61 +23908,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 2, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23593,61 +23945,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 3, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23661,61 +23982,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 4, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23729,61 +24019,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 5, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23797,61 +24056,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 6, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23865,61 +24093,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 7, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -23933,61 +24130,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24001,61 +24167,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 1, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24069,61 +24204,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 2, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24137,61 +24241,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 3, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24205,61 +24278,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 4, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24273,61 +24315,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 5, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24341,61 +24352,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 6, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24409,61 +24389,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 7, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24477,61 +24426,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 0, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24545,61 +24463,30 @@ "E": [ { "SI": { -"SN": "gf head", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 125.7, -"y": 60.55 -}, -"M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -103.25, --192.6, -0.0, -1.0 -] -} -}, -{ -"SI": { "SN": "crying face", "IN": "", "ST": "G", "FF": 1, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] @@ -24613,36 +24500,301 @@ "E": [ { "SI": { -"SN": "gf head", +"SN": "crying face", "IN": "", "ST": "G", -"FF": 0, +"FF": 2, "LP": "LP", "TRP": { -"x": 125.7, -"y": 60.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.9876708984375, --0.15179443359375, -0.0, -0.0, -0.15179443359375, -0.9876708984375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -103.25, --192.6, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, 0.0, 1.0 ] } +} +] }, { +"I": 35, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 36, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 37, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 38, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 39, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 40, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 41, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 42, +"DU": 1, +"E": [ +{ "SI": { "SN": "crying face", "IN": "", @@ -24650,24 +24802,4747 @@ "FF": 2, "LP": "LP", "TRP": { -"x": 58.65, -"y": 41.55 +"x": 58.5, +"y": 41.6 }, "M3D": [ -0.999114990234375, --0.0025482177734375, -0.0, -0.0, -0.0025482177734375, -0.999114990234375, +1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -136.6, --167.65, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 43, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 44, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 45, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 46, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 47, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 48, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 49, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 50, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 51, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 52, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 53, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 54, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 55, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 56, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 57, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 58, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 59, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 60, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 61, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 62, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 63, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 64, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 65, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 66, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 67, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 68, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 69, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 70, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 71, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 72, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 73, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 74, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 75, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 3, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 76, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 4, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 77, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 5, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 78, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 79, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "crying face", +"IN": "", +"ST": "G", +"FF": 7, +"LP": "LP", +"TRP": { +"x": 58.5, +"y": 41.6 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +68.0, +144.05, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_1", +"FR": [ +{ +"I": 0, +"DU": 2, +"E": [ +{ +"SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 34.1, +"y": 115.05 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +-0.152252197265625, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +50.25, +189.3, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "GF body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.300000000000007, +"y": 106.5 +}, +"M3D": [ +0.96759033203125, +0.221710205078125, +0.0, +0.0, +-0.251495361328125, +0.974365234375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +126.2, +168.55, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 66.60000000000001, +"y": 115.85000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0816497802734375, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +176.95, +189.3, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf top leg", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 164.3, +"y": 52.400000000000009 +}, +"M3D": [ +0.996429443359375, +-0.08099365234375, +0.0, +0.0, +0.08099365234375, +0.996429443359375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +8.15, +263.65, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf bottom leg", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 24.55, +"y": 24.05 +}, +"M3D": [ +0.98907470703125, +-0.14404296875, +0.0, +0.0, +0.14404296875, +0.98907470703125, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +95.1, +297.8, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 125.65, +"y": 60.45 +}, +"M3D": [ +0.98883056640625, +-0.14556884765625, +0.0, +0.0, +0.14556884765625, +0.98883056640625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +38.95, +120.4, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 78, +"E": [ +{ +"SI": { +"SN": "gf bg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 34.1, +"y": 115.05 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +-0.1216888427734375, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +45.9, +189.3, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "GF body", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 46.300000000000007, +"y": 106.5 +}, +"M3D": [ +0.974365234375, +0.221710205078125, +0.0, +0.0, +-0.221710205078125, +0.974365234375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +121.2, +168.55, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf fg arm", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 66.60000000000001, +"y": 115.85000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.112213134765625, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +172.6, +189.3, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf top leg", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 164.3, +"y": 52.300000000000007 +}, +"M3D": [ +0.998138427734375, +-0.057647705078125, +0.0, +0.0, +0.057647705078125, +0.998138427734375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +9.1, +259.8, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf bottom leg", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 55.7, +"y": 100.7 +}, +"M3D": [ +0.994140625, +-0.1047210693359375, +0.0, +0.0, +0.1047210693359375, +0.994140625, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +95.95, +295.7, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "gf head", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 125.60000000000001, +"y": 60.45 +}, +"M3D": [ +0.9907684326171875, +-0.13226318359375, +0.0, +0.0, +0.13226318359375, +0.9907684326171875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +37.1, +115.9, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "Layer_9", +"FR": [ +{ +"I": 0, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 1, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 1, +"LP": "LP", +"TRP": { +"x": 81.35, +"y": 89.35 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 2, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 3, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 4, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 5, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 6, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 7, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 8, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 9, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 10, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 11, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 12, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 13, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 14, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 15, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 16, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 17, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 18, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 19, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 20, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 21, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 22, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 23, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 24, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 25, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 26, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 27, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 28, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 29, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 30, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 31, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 32, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 33, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 34, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 35, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 36, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 37, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 38, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 39, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 40, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 41, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 42, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 43, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 44, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 45, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 46, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 47, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 48, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 49, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 50, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 51, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 52, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 53, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 54, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 55, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 56, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 57, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 58, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 59, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 60, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 61, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 62, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 63, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 64, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 65, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 66, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 67, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 68, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 69, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 70, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 71, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 72, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 73, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 74, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 75, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 76, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 77, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 78, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 79, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "arm swing 1", +"IN": "", +"ST": "G", +"FF": 2, +"LP": "LP", +"TRP": { +"x": 81.35000000000001, +"y": 89.35000000000001 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +3.3, +89.2, 0.0, 1.0 ] @@ -24682,195 +29557,14 @@ "FR": [ { "I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "GF body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 50.25, -"y": 121.80000000000001 -}, -"M3D": [ -0.979888916015625, -0.196044921875, -0.0, -0.0, --0.196044921875, -0.979888916015625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -185.45, --139.65, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 33, -"E": [ -{ -"SI": { -"SN": "GF body", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 50.25, -"y": 121.80000000000001 -}, -"M3D": [ -0.9840087890625, -0.17462158203125, -0.0, -0.0, --0.17462158203125, -0.9840087890625, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -182.55, --140.15, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_13", -"FR": [ -{ -"I": 0, -"DU": 2, -"E": [ -{ -"SI": { -"SN": "right arm up", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 72.10000000000001, -"y": 144.3 -}, -"M3D": [ -0.630615234375, --0.7711181640625, -0.0, -0.0, -0.7711181640625, -0.630615234375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -25.95, --124.5, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 33, -"E": [ -{ -"SI": { -"SN": "right arm up", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 72.10000000000001, -"y": 144.25 -}, -"M3D": [ -0.6572113037109375, --0.7489471435546875, -0.0, -0.0, -0.7489471435546875, -0.6572113037109375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -25.5, --129.0, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "Layer_5", -"FR": [ -{ -"I": 0, "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -24889,8 +29583,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -24903,34 +29597,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -24949,8 +29620,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -24963,34 +29634,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25009,8 +29657,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25023,34 +29671,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25069,8 +29694,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25083,34 +29708,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25129,8 +29731,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25143,34 +29745,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25189,8 +29768,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25203,34 +29782,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25249,8 +29805,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25263,34 +29819,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25309,8 +29842,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25323,34 +29856,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25369,8 +29879,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25383,34 +29893,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25429,8 +29916,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25443,34 +29930,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25489,8 +29953,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25503,34 +29967,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25549,8 +29990,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25563,34 +30004,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25609,8 +30027,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25623,34 +30041,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25669,8 +30064,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25683,34 +30078,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25729,8 +30101,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25743,34 +30115,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25789,8 +30138,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25803,34 +30152,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25849,8 +30175,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25863,34 +30189,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25909,8 +30212,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25923,34 +30226,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -25969,8 +30249,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -25983,34 +30263,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26029,8 +30286,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26043,34 +30300,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26089,8 +30323,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26103,34 +30337,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26149,8 +30360,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26163,34 +30374,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26209,8 +30397,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26223,34 +30411,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26269,8 +30434,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26283,34 +30448,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26329,8 +30471,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26343,34 +30485,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26389,8 +30508,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26403,34 +30522,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26449,8 +30545,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26463,34 +30559,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26509,8 +30582,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26523,34 +30596,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26569,8 +30619,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26583,34 +30633,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26629,8 +30656,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26643,34 +30670,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26689,8 +30693,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26703,34 +30707,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26749,8 +30730,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26763,34 +30744,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26809,8 +30767,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26823,34 +30781,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26869,8 +30804,8 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, 0.0, 1.0 ] @@ -26883,34 +30818,11 @@ "DU": 1, "E": [ { -"ASI": { -"N": "0013", -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, --19.0, --6.0, -0.0, -1.0 -] -} -}, -{ "SI": { "SN": "speakers", "IN": "", "ST": "G", -"FF": 13, +"FF": 6, "LP": "SF", "TRP": { "x": 323.35, @@ -26929,8 +30841,1746 @@ 0.0, 1.0, 0.0, --133.95, --12.85, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 35, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 36, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 37, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 38, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 39, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 40, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 41, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 42, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 43, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 44, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 45, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 46, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 47, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 48, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 49, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 50, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 51, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 52, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 53, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 54, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 55, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 56, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 57, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 58, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 59, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 60, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 61, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 62, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 63, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 64, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 65, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 66, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 67, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 68, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 69, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 70, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 71, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 72, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 73, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 74, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 75, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 76, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 77, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 78, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +}, +{ +"I": 79, +"DU": 1, +"E": [ +{ +"SI": { +"SN": "speakers", +"IN": "", +"ST": "G", +"FF": 6, +"LP": "SF", +"TRP": { +"x": 323.35, +"y": 174.4 +}, +"M3D": [ +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-184.95, +302.25, +0.0, +1.0 +] +} +} +] +} +] +}, +{ +"LN": "tank_foot", +"FR": [ +{ +"I": 0, +"DU": 80, +"E": [ +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.25, +"y": 145.85 +}, +"M3D": [ +-0.9624481201171875, +0.0, +0.0, +0.0, +0.0, +1.17132568359375, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +-32.55, +295.0, +0.0, +1.0 +] +} +}, +{ +"SI": { +"SN": "tank foot", +"IN": "", +"ST": "G", +"FF": 0, +"LP": "LP", +"TRP": { +"x": 82.4, +"y": 145.75 +}, +"M3D": [ +0.97723388671875, +0.0, +0.0, +0.0, +0.0, +1.07440185546875, +0.0, +0.0, +0.0, +0.0, +1.0, +0.0, +337.0, +291.05, 0.0, 1.0 ] @@ -26955,24 +32605,24 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 170.70000000000003, -"y": 71.9 +"x": 150.0, +"y": 182.3 }, "M3D": [ -0.9886322021484375, --0.139373779296875, +0.98883056640625, +-0.14556884765625, 0.0, 0.0, -0.139373779296875, -0.9886322021484375, +0.14556884765625, +0.98883056640625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -33.45, --265.25, +-26.9, +44.15, 0.0, 1.0 ] @@ -26982,7 +32632,7 @@ }, { "I": 2, -"DU": 2, +"DU": 78, "E": [ { "SI": { @@ -26992,2446 +32642,24 @@ "FF": 0, "LP": "LP", "TRP": { -"x": 170.70000000000003, -"y": 71.9 +"x": 149.9, +"y": 182.3 }, "M3D": [ -0.9886322021484375, --0.139373779296875, +0.9907684326171875, +-0.13226318359375, 0.0, 0.0, -0.139373779296875, -0.9886322021484375, +0.13226318359375, +0.9907684326171875, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -34.1, --268.55, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 31, -"E": [ -{ -"SI": { -"SN": "gf hair", -"IN": "", -"ST": "G", -"FF": 0, -"LP": "LP", -"TRP": { -"x": 170.70000000000003, -"y": 71.9 -}, -"M3D": [ -0.9886322021484375, --0.139373779296875, -0.0, -0.0, -0.139373779296875, -0.9886322021484375, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -35.4, --269.85, -0.0, -1.0 -] -} -} -] -} -] -}, -{ -"LN": "tankman_bottom_Layer", -"FR": [ -{ -"I": 0, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 1, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 2, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 3, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 4, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 5, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 6, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 7, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 8, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 9, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 10, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 11, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 12, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 13, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 14, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 15, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 16, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 17, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 18, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 19, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 20, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 21, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 22, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 23, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 24, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 25, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 26, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 27, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 28, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 29, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 30, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 31, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 32, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 33, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, -0.0, -1.0 -] -} -} -] -}, -{ -"I": 34, -"DU": 1, -"E": [ -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0 -] -} -}, -{ -"SI": { -"SN": "tankman bottom", -"IN": "", -"ST": "G", -"FF": 13, -"LP": "SF", -"TRP": { -"x": 0.0, -"y": 0.0 -}, -"M3D": [ --1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -392.25, -0.0, +-27.7, +38.8, 0.0, 1.0 ] @@ -29457,7 +32685,7 @@ "E": [ { "ASI": { -"N": "0028", +"N": "0022", "M3D": [ 1.0, 0.0, @@ -29486,7 +32714,7 @@ "E": [ { "ASI": { -"N": "0029", +"N": "0023", "M3D": [ 1.0, 0.0, @@ -29515,7 +32743,7 @@ "E": [ { "ASI": { -"N": "0030", +"N": "0024", "M3D": [ 1.0, 0.0, @@ -29544,7 +32772,7 @@ "E": [ { "ASI": { -"N": "0031", +"N": "0025", "M3D": [ 1.0, 0.0, diff --git a/assets/images/characters/gf-tankmen/spritemap1.json b/assets/images/characters/gf-tankmen/spritemap1.json index 27c23bbb..4780c316 100644 --- a/assets/images/characters/gf-tankmen/spritemap1.json +++ b/assets/images/characters/gf-tankmen/spritemap1.json @@ -1,43 +1,37 @@ {"ATLAS": {"SPRITES":[ -{"SPRITE" : {"name": "0000","x":205,"y":352,"w":183,"h":115,"rotated": false}}, -{"SPRITE" : {"name": "0001","x":1608,"y":394,"w":84,"h":140,"rotated": false}}, -{"SPRITE" : {"name": "0002","x":1903,"y":162,"w":111,"h":149,"rotated": false}}, -{"SPRITE" : {"name": "0003","x":824,"y":365,"w":251,"h":121,"rotated": false}}, -{"SPRITE" : {"name": "0004","x":1899,"y":458,"w":120,"h":65,"rotated": false}}, -{"SPRITE" : {"name": "0005","x":1903,"y":311,"w":102,"h":147,"rotated": false}}, -{"SPRITE" : {"name": "0006","x":1434,"y":417,"w":76,"h":117,"rotated": false}}, -{"SPRITE" : {"name": "0007","x":2005,"y":311,"w":35,"h":53,"rotated": false}}, -{"SPRITE" : {"name": "0008","x":2005,"y":364,"w":36,"h":46,"rotated": false}}, -{"SPRITE" : {"name": "0009","x":254,"y":467,"w":47,"h":51,"rotated": false}}, -{"SPRITE" : {"name": "0010","x":2014,"y":162,"w":33,"h":47,"rotated": false}}, -{"SPRITE" : {"name": "0011","x":205,"y":467,"w":49,"h":88,"rotated": false}}, -{"SPRITE" : {"name": "0012","x":1523,"y":394,"w":85,"h":143,"rotated": false}}, -{"SPRITE" : {"name": "0013","x":2021,"y":0,"w":1,"h":4,"rotated": false}}, -{"SPRITE" : {"name": "0014","x":809,"y":0,"w":300,"h":365,"rotated": false}}, -{"SPRITE" : {"name": "0015","x":1109,"y":0,"w":355,"h":212,"rotated": false}}, -{"SPRITE" : {"name": "0016","x":1317,"y":245,"w":206,"h":172,"rotated": false}}, -{"SPRITE" : {"name": "0017","x":411,"y":350,"w":206,"h":172,"rotated": false}}, -{"SPRITE" : {"name": "0018","x":0,"y":352,"w":205,"h":167,"rotated": false}}, -{"SPRITE" : {"name": "0019","x":617,"y":365,"w":207,"h":164,"rotated": false}}, -{"SPRITE" : {"name": "0020","x":0,"y":0,"w":411,"h":352,"rotated": false}}, -{"SPRITE" : {"name": "0021","x":411,"y":0,"w":398,"h":350,"rotated": false}}, -{"SPRITE" : {"name": "0022","x":1692,"y":0,"w":329,"h":162,"rotated": false}}, -{"SPRITE" : {"name": "0023","x":1809,"y":398,"w":90,"h":103,"rotated": false}}, -{"SPRITE" : {"name": "0024","x":1692,"y":162,"w":211,"h":236,"rotated": false}}, -{"SPRITE" : {"name": "0025","x":1109,"y":212,"w":208,"h":235,"rotated": false}}, -{"SPRITE" : {"name": "0026","x":1523,"y":245,"w":165,"h":149,"rotated": false}}, -{"SPRITE" : {"name": "0027","x":1464,"y":0,"w":228,"h":245,"rotated": false}}, -{"SPRITE" : {"name": "0028","x":1692,"y":398,"w":117,"h":83,"rotated": false}}, -{"SPRITE" : {"name": "0029","x":1317,"y":417,"w":117,"h":83,"rotated": false}}, -{"SPRITE" : {"name": "0030","x":1192,"y":447,"w":103,"h":83,"rotated": false}}, -{"SPRITE" : {"name": "0031","x":1075,"y":447,"w":117,"h":83,"rotated": false}} +{"SPRITE" : {"name": "0000","x":1125,"y":4,"w":354,"h":213,"rotated": false}}, +{"SPRITE" : {"name": "0001","x":1458,"y":275,"w":210,"h":174,"rotated": false}}, +{"SPRITE" : {"name": "0002","x":1483,"y":4,"w":248,"h":267,"rotated": false}}, +{"SPRITE" : {"name": "0003","x":419,"y":358,"w":207,"h":172,"rotated": false}}, +{"SPRITE" : {"name": "0004","x":200,"y":360,"w":183,"h":115,"rotated": false}}, +{"SPRITE" : {"name": "0005","x":1950,"y":4,"w":84,"h":140,"rotated": false}}, +{"SPRITE" : {"name": "0006","x":630,"y":373,"w":251,"h":122,"rotated": false}}, +{"SPRITE" : {"name": "0007","x":200,"y":479,"w":120,"h":65,"rotated": false}}, +{"SPRITE" : {"name": "0008","x":2043,"y":4,"w":1,"h":1,"rotated": false}}, +{"SPRITE" : {"name": "0009","x":1127,"y":387,"w":102,"h":147,"rotated": false}}, +{"SPRITE" : {"name": "0010","x":2043,"y":9,"w":1,"h":1,"rotated": false}}, +{"SPRITE" : {"name": "0011","x":2038,"y":4,"w":1,"h":4,"rotated": false}}, +{"SPRITE" : {"name": "0012","x":4,"y":360,"w":192,"h":174,"rotated": false}}, +{"SPRITE" : {"name": "0013","x":821,"y":4,"w":300,"h":365,"rotated": false}}, +{"SPRITE" : {"name": "0014","x":885,"y":373,"w":104,"h":161,"rotated": false}}, +{"SPRITE" : {"name": "0015","x":993,"y":387,"w":130,"h":128,"rotated": false}}, +{"SPRITE" : {"name": "0016","x":4,"y":4,"w":411,"h":352,"rotated": false}}, +{"SPRITE" : {"name": "0017","x":419,"y":4,"w":398,"h":350,"rotated": false}}, +{"SPRITE" : {"name": "0018","x":1125,"y":221,"w":329,"h":162,"rotated": false}}, +{"SPRITE" : {"name": "0019","x":1950,"y":148,"w":90,"h":103,"rotated": false}}, +{"SPRITE" : {"name": "0020","x":1735,"y":4,"w":211,"h":236,"rotated": false}}, +{"SPRITE" : {"name": "0021","x":1735,"y":244,"w":208,"h":235,"rotated": false}}, +{"SPRITE" : {"name": "0022","x":1233,"y":387,"w":117,"h":83,"rotated": false}}, +{"SPRITE" : {"name": "0023","x":1354,"y":453,"w":117,"h":83,"rotated": false}}, +{"SPRITE" : {"name": "0024","x":1596,"y":453,"w":103,"h":83,"rotated": false}}, +{"SPRITE" : {"name": "0025","x":1475,"y":453,"w":117,"h":83,"rotated": false}} ]}, "meta": { "app": "Adobe Animate", -"version": "21.0.1.37179", +"version": "22.0.5.191", "image": "spritemap1.png", "format": "RGBA8888", -"size": {"w":2047,"h":555}, +"size": {"w":2048,"h":548}, "resolution": "1" } } diff --git a/assets/images/characters/gf-tankmen/spritemap1.png b/assets/images/characters/gf-tankmen/spritemap1.png index 27fedd5b24d37f95b2b83457c0de36bbae44fccc..f458aa93d45df198a1fc0db6c7613a19ddabcf5d 100644 GIT binary patch literal 163546 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�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 W{J&%PrJZouCsIlML8+p7;Qs)3FE8%^ literal 184781 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�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]mN6v2^Y&Qp*74)^ zE4=(!T;y!0h<>htKAp5Zfgal(4r%K^uQkH(xT9B~_a|BpY#(GCeCbUC{mb0d+YhX% z`E$GYMe^Dw?r-|f_+x*@k+&Q|s`-vU-}HejrBrK~vP()Wum0NZ5%7>xiafdyHd0rd zcl4gp9u5N8JW*PWAJBF18uHJiUdP$~J{J4n_za5cZQm*PtlX3*w!7}s-~2NkXnsyb z=kP=LIfKk){?`z$b4J^I#$e;@qbQHG6rh3Dr-tV`z~fx}ptBTyO07Rrbe-js0R87| z93^KeCs-C2sMx&#-v8+z6zG+=8DUC|2$V7m@ob`Ggu z6$l8x!?R81j=Yj*efBC6x-T^Ir+N5?68V6t9A>X$nmfhMchp|A{q%=F`cT^bq?=hF zqAZTIF;9JG9tkqJa0^A=8e|^901JA7qAEF4FV2iE{k(kntm5jg`l9_4pa8D(T3l(2uH5OPXL(C)cECZP zV9QiF5bB3O*kBJDApQQj1kXD7Txd|od-VJ6CVRpcdwz6}?&#?qJ+fS6eEIrWX?#>$ zyS^ziRzAc_pzmMpl+V=s;K!baPiFI^Z$6CICkz=|D0Q}jJD8cn%0U1t$Tz*$=bTWP zb)>xI8n|$(&@o++cHSAZ8+}$Vbw!&;&#tRp&X3pj55O<4f@V+c+c@p-xC{G2{wz|z zZM07=>f634fgV3asQS---r^}YErGmg-@{Q}33C3dSkbjX|IUj#U$5ZaKk3fbzn4L- z`a2%i0)ZYLeo7tb-RCE-d5B)_K|XR*W{*+UShGLEroZ=p|EK?}AKhas?{o0YcDNHF zBsqODj5Q!Ms^FXV z9wzI6|Bm^UYUbnFBj&7tJ&)(O3d?m-jQ&%u`5ow=8KH6bsm2wIugC^_bpQ`)&*Eth zDyTEre5sceNpfO-qX3j8)$1?h&SsAJ3kTNbr*jIdCTBeb(L#`TyO*G+!sGez5bLk zwg&l(GqyO$+b9xvp@rsebb{m!qtq$%gj2(I--@90n6_xxLRnRezJ23gLatUtioSuNH$ zGj2;t{&nvK)kRuzS(Np@(Yn`g`V$QbeNM~2r|3I*Ck>OAAzo|G)COarJ^sf2qrN`xL2-@;p68OaAoe}bTNg7R zz07UwwV-84K|i^FKd3BYXzXqK1k~`i=$1I_Xa4dN{vDeq8HP9AowCmBH*ek4o~9f9 z(x(&K{%igYsxtJOjfWlezae%!TyRiC|Gl4^#tW9amHF@!m+#W5J{u67VuR%TUH;;I zE6{Vj6|=Jzs_!@1*R>FyYsr=u>b6{)N&VHdBwea`VrJGIs%hUJ?SZno_pOXlY|#|Qs!=Vdw^{A z6os+@qy%FYWqr~7ahm?A4 zRp&W;n0UxCq8Oj?QI4Gf2byI(4h=--C!R0#<8 zt_ADT?~B%Iu!WYb?!W^hv-oFv=YgGJ;%NyDDLupbg3@dXV;}u1zMJu zvcu<4jUOo!6#HNI$VWHz4VaP_54Lr&;p_{>O`lNYJ0N$Vddn)v^VW@|Q)m4Nj(kX$ zPul4^bkN!MK*Z01o-+`X#Z@*2c=p*=!5u9@F5jl^| z>?VWJHJ~nb0_wW|l#bpg7@Y&(iA_HI$aa0i%xljlvVUFyA7tgvyXK;(Sbh*_f0nO# zwVXg-ob^{c=d+I9f^Yg}E{exK=)VNEJsrPW)M+k-`aLk6n|pfN_skD`Sp6;RIe!Mt zy}CyPxjR`x{WO2CBWYea_}d`79&C(#~t{#8XJ$&Z?W$%jC29D6=-M?St6S_Cfp1p+ue< z{~Od1Uv>?{0bleQ?vL&tpb5R+(Fe;WPk5-jZEy0g@r&p0(NCKvreDWHpue_1>&dyV z-JR>#_fa@*Xn*OjZUCf}Wwfs?Cx17;eV_I`O$kH4N1)dXv$fSXgcWKxHssL8r#fH6 z_Jy9>VQ0?<0z85KMR!}i&{kc^duPb+jVs;jq-VpvFzFMI2KNSg^3bzD@6<%Qj`>(i zm$Y=pm3Qvz*o#YQL;8r1uKMO=8i-HZT|I#&V|<1Nx~KT6`E#J3dAtGJXurlST=O-3 z_kY%Z5BwQ}H-Nso&c{CJzXY~D9e-Nr)m8C7Y0mHd;ZcQa079eGYyc^a}2oEPz!)&bQ9GXePhb%emtVj9sI2SV!DKD8wSYHFZ%VZ$&$4rnsI_`@(ROj@X{27F(D;UE_5agruq-nUY4=CdsCmQB6- zbbxpj^4w9)h)+%R1E9~Ay`SVm0=)l3QYq^s!BBjWgZl)_?mN$gd}bZ+)(1(Y+ku{b z@-z>-{P*q5aXZ&k_GkpTad?({~?d{rBMcpC4}2{=43mGxn1}Q>_`F|G{>J z+Rhw=g7$S!!D~L?n`4V-V?T8~Le|gzNA4Nbe)3IAwA=fNy6&s?+4iw3D(FkE|L{Nk zmvRA<%QDnKx~{;HQYwBriL$;&t&BUe0IWb$zhWDbi-bPL&;KnK=^#L+f&RRsPrEFv zI?Y>D`3CzwN`yRs8K~PJ@01_(yz`*}8tD5Nf2{UbNHP}MVnS_MA6^(F2y^fzPXki^ z`x?dlUi8>P=Y_J=u(n7gX|_wA2y*<4ZpxEpBI#q=khUMuxsdNb3O|w7o~vzd2l|41 z=4>Cjz~XlQRUV`$fw7fx^(Jqwe3lP;7Up{s2E7xjjr-0l^UnLjWA@0U(3D^W5)7`8 z^t+eO+ke?8fkvFy7uRWB< zU$^*1n?TPu+d0s)uav5eud8jKxBU3Ma}!zqlSM2f(5LggP6+h2k4MDJatg}Ex5$1{ zU?)!61X;Ja)K` z@ovUfgx9m;M3zriz0%PK1AXBQOT21LKdGReCFww4f!_@l0AJz!ct^j+IQ}cHdDa2t zs{vc)I}CIC@5k9cuovxP`f7i>-}8Lj(}NC?og96gyL(!^=7R+Kt1PI@+5aQh6Ot3r zU#V^G`KCM1>$W9;iOe}}c*xOD%J2X5Z~hCqmETxa`Q|gyIFfLAHGFME2Szrh>a7@! zDo>!7#ri!1{cL2u5JG7OP_yeOdMD4J;_u4VM#y(&%fYiLmMn5ph6Vll=@-`p>O(xe zrldS~5SBG34)6c9u8kQD_HlavfBK`aI8!h^optDjsw>N4@)lFQ*T*%` zho829d9Hn2lr+F>9&+-D@(y&uITilU^@&tveUGMrD>E00AD^t53>z+Ypjwk}r}gn=r0A&YRh?=p1g>_AUlthJ0u+g?p6 z>sNvNlj@__uNX>&O8EHKPrv$*;s~I7+tTlIx6O=rCV@J=aQO3+H0>&jW-$X5nx(HZ ze-HHNw+zaJ2AGb|os0sNR@yb@q!ojyT4{VDA%02Kp$|XP)D3LU*x<2iY$q@BsG!^) zA{(F!-?Yunvm9V~jU12eE#_?6f_(>{z?0x3;_tJWw=9Eckuh`}&8PGXy`#srtled! z*E#9n7-zMgLO{D20P80cl%um1IA7;T-7r!OBga>>KKn!kE8<7j+$+ zcl296cYU^9zj@DIr$alKyL5c$eeU(bzJQHT=U)u@(vSG{!-pNYc<%f1q~3co&icw@ z5;XeC;()zkSMAet<8K znf%dTbnPR==fw*BcN zsb2rx|M0I?poenhoy|$g&r{f8=_oEpd;Xb?JJ$gGxE>8N81Po0&rk9g{21uFxwGI1 z@bLXrn{ElD6Wd#~!ej|jpFZb8fDJ>11GxhIi|#P6iGzp5NZ_T;|0kSrVXr_LKI7>a z*xX(S`pt;wD>|Adhkw4P9~DsGy!g*` z!euc{{^V5_@vMjT5cwebce~_0_jVoSGtldGjU{a%`f*^_ye1%h&>HC7r|Ps%++M%i zE)lIU@J+ne`oq4CleL(&DN9vPI`H~W$?JKLvAv!aXSsQ-BTOYHzFz^kkzow#o6@u4 zoPqv6UP|U2eN&F_m~)A4K{;)k4DB!Gf>(OP-)LHM6%h<>KOC72C z^aG7w3I}EVp8qBkSk7&uCrdtg5dO7Xk+TjSIgL0=^A((9c|i^rY?SG0;bcr^}tUoEAHEVw~NcHaNfDhI)?sy0}8^`J9AA zkb8^3L)l%U1DnJn8z$9Gy?&>dRO^ZO^zZ)rf2C$wUh7}*c`$PbB0I0B?-dcE?nIec znqqwM7hOQT)vr&Kfjs&^n)EQ3cfF&6X^f)%U|4@z>a(ZJHB8{U*CQ9KjVr0YYYd{x6C{qm0pz3deNeLsxn zHY1-s_M`V_?%v_Xb|`j5modKS-F$rc?%l7y@E&~n&zi1}@w+YrwElUY-T`0v`Ubck z{;EQ--L^UFq2w?{D*IdK{;an;w3$0ThDSn>qvdlQL#*(c4j5-Ghy-_ zTV7dn@V4x3KWjq8IbK&Azp9?{SP<90g4+Ka=qsT&>4|g9;F9MO%YptXQ(Sq^jm$Ce z`T$rH#k~)g<==48F?!^XYP|kaAW5vQ)JmP7I@kP+4CSso4}!o~Ef!bJncd{@efdKT#3k5bx2GvY?C(+HnD zNM#-7Drd}*^VK^+o zLi8&aB1(JEv#_{}=fCRtB1E#hkMBSC@kNR3oN<7cPaICMGl$zwkx74%RZHhm7tn_# zhUY-vl!~$UIW#L;2pY+hpFr)`n4hHi6RF+)wCy#VGS#(tETqw>6kl*xcD=L7lM^od zK4?y8P@h53i4yF~yk}lD_sa7nE?Jin$z&`$z?r8VIBjm8w#+wh-%d~2HDil3lF0{= z-Tk#~Q^s}2){hNoO+U4p_2^Vd?MGtOukpoSC(f~hJgI`;J#nswckh1si4S9LK6LIA z^oQ@F0k8ALUL3B=tY`kRh6A=^&y%p(^S-0scK`D0uTFCju=z~^xy--pYKonr4<9~` zed6&md5!MKgJS?USeNRzuZ6LZbHh+`mKw4yI@KZl8x_|+l?_ zPS!^ox7f(~6>J%}Kloq#?%MA~?BCRJ-Ekdn(v|PifG2yfxcKx2o~Y)VCu9G!xi9W@ zP5q%#A?4l9Wy~3yb~`7loQtGKyT1?gaXk<2*y}H7zX3P8N#SoBo7ef|8=?CclJfb4 z^F!c3oR#zI$hHsI$SBbNrz)bH0VvS(Pal-}b{_$nAS@{k%6>By%^l>C)#P2SEaq`t z&M&&jrsvBnbOKms0z%|D=*Tfg^y5dgS}+aR4cZ+1{6B9tJPr+S6ALf$v`w(+LN%%U ziO&$kk3Nj}roI*EH6DWd%LISYes~DGeAvwwc9c90_*1SAnortt#tklf*^`40AIKMD z--$>I>R%(7!Xs$k^vqAjK3Te+pmx0m{3=B$2upkx9~X1=$wmS_!T$quEq~T$#WL{{ z=#&5WkqbUH5XVf?;$e(8T*f0CScd>U2QSO^lwqy%T9TzlS+7pc@t2?UI_}`q@4sqM zvFE|v{yh%O^JLGlCA;i1 zulEY@?|;+!UxA*kER=%azvFlNV%HJiKdT~ve)Egnrnu_HV?X?;dAR*Q{}ZRL!DamN zOYg{EL&yIt@AiCR-+Hb(?&YVD2y>o27Myc`qP(3tS!?ga**;GkgS!sEtp82;oF2`_A06lk`tZ&RfwT*+ z!2;eQl|OTFqCT*+hZI4c5Ah}N^B?v?ws~ylf`G@q(xQf$7}}R8muFwlhy4(rH0^tk z7rs@dEJK~#)=EA5y8?aF=Fv@l>3V|N1y;KQKl5*H4+UFZvhoXlLja!@h`bi)q4YDU z>fZ|VANpnOypDaRo#+MUIGShu)-Lz0c1%a>oqDl{@~4?y*OlRQ_jm87{XfUocONyL z>Uw5>5mtS(5kFkppU9do%^orjS&c{gl`Q2=)peh@bB$}?DCHpPdC+>=kWyy9w2j~X z5)T6DW5aa^i*ju>P5$KdLemE-IrDd(x+sm}@HUnnbRP4l&X=8lTyH=uCi3T7zI;@g z{$l@B4!m5%+nSELOQ0`yJ=pEQRkv2RY|{L^5$N9p_Rm|Nuc7{F{*pROCeXV){DLy` z{wgG%smUno?=wZmWge70%j#e;73i^H2l?v-u*K(~ zYFp9}rEPzG;(cJ^0xs*DfY*BD>r=ft-vD1eXn#+kIWM}0Ycqy*41h5uP;L7Q^Akyi zu2?#SGtl!|J69^&fnE}<3*XVt<7)xg<8-{F(L%m_ct5=R#6dspgIy2OuDI%C#lHVR z^Uy>1JF$Eu-+b$izWxEUYg?zZfAV3zrC+H3oe^X+v^c{8g31q^~o~W zI*xkz|1CVzb-_0Ry$5-uSAEwz`qMrW^_-ha$8Jvw7tgaQPyUIsd};f4|F3_g5}T9& zmB;N_-l}vm-6~I-Pd%ownIca{g(&-d2HLg$2=vJIAeg!?D2Nt-wZqeeZgMDro;&&- z=o`>aIld;9M|@|X_X5@-$sK+FM5uOgxBfDB@T9hlV074?K(G2=`KtnkkOQvc>IV*? zj=2ZjNzBxJ@w#qo!q)nryaiR{EtS_n`+M4a^@=gc6PdB8yi*2z zvhm9v9|1x>;vxmVn&O{g)O*Zt1$r$Sr?m&1`4e{=Sma) z!KwdVhmL-;*4?j7xws9oFN);H4%xNpW|6c^{|)p|0%PZrJ!L7&woTILJjaDD=CK#R z%&o_#-`0~ZQagV>_Mmt4dyRb$mXBrsvp~PCC=0obz=8eoef$|5l(s_wQ4DGth(jAnCUA8t8#- zEvd{6QS$e;qmBKo+LQl1c?J6aOeJmF<125yOeJK+q$BS-J0grIIw%eFo5S4l;`P8F z81`iCAyITetvlPdUa1Ux9^HTX%dZ|HypAhh^P9j%f1u;Lr0XYu-?R&p_N#u<0ulNf(WhXX z1-fca^`7ZTm1+8nR5SV`ciIonTxHKdAKHOlFDl1(Z4azoz)NohdU2hC*c3ERzbDQ< z*yJtSF12AfUSxh}pa*B3aow@&`^}Tv-fOB5z&Z`fxQ>w_%syTGq*uA}dMtMScx#TD ztBtAKV*uF9SlA2R8+^V-ycg2(S?3T!2W!~;;T6=C?q$ep>WN=U!$`t-yjg~S0rQfy z8)~%&ZZ>_A>W8$pb}R;b$s=oy?BkJrzAt6(v7mh%y3(2R0eW=MtL;}VNQS$yWgqJb zX&}(QB~kl@%h(OZ{(S!w+1~;6m2oPEy!GfFob4YVaXtq{^9J|R_jka%@U?$=5(8Z4 zTu{00zw~j{P0EgV3(xlNhV;z&@EY2e2YX2cRdEDX1X2OGgtP_iah%I zcK-d}{Wt%)G_W~kfv#4(993DxjEmG|Qy1D+w#yaP0Wb!!u4vnUhz#YE&IJ`mOOH4H zwGQ@Ax>M({hsUBi3Es~?|LovUDxaXw9lh`7r5kHO?3(xBCr{AsA?H-H^P<+byZ&yxW9>bTr?E&#~8KW0xh&_8@&`5B_yC%e)D5&9g_r(nDVx}fIK#~mJN z>+aO{XZfrTlGc7e)?B6d2|GP55m%`V^k40#9U!U$)#&Gn|Mv#^ZCCsQsu!$2lr-(=+dCZI-j!ZA1Bz zpAFTv3o2SCKS~?uJ#NeYJhIaj$E7?`?gyY0z~E znp$QWI!?apzC2|l#TxIV^{La);T|FhEAkahnDj_`tqBCGY?kV zzx!|g3$>)v8Gr(L71=!X=u|B871%PjkqO94PJADXQcj9|coXQ4e`o=nlhnoZqJWBw z&-39IIZ->sCo1e=-KS8yHlTn zoD?5hjne2(0JJLxlGQ80{CfgDerY{@Fj~@Y1^VAU6X^Dsisos9&f?791HDI}#c=Ze z_YCyt=%e}C>s0-uy!AXA8}Nrxdk6efVhwdZ>p)7w8}V z_{Ri?pZfQ<30^<{q&xkeKD_(Hg$$ck{61ptK?Zn4PhSoENgJ4S@xmC^MSzI1(wE`U z7ww_8*@2!58G2FQDg#OEyi)A)K*#pePkK>B{7_i_Na>Tj53=!1L2JK{IT|W=UJ#XE z3ZMK`5gS6_C81r_W_c24mM^@O#bbIi1zUxc(jX|zaCWQ zoPsrP+ste$3v1Z1153 z8IbW)7Zy0>_$0rvcIuW z=-_3VR+L|ve!I72bP1_LzE)Wm8r5Ssf0Tt@aDZG8PGRAJVV&Pc(_jIA zOgccW*jef;vt^&-+R5o_Ry;b9kTvv**xq6s`J>8DGkyt^$*0FfLzx8_eFf`vX9|&(&eIVpApo{Li5Z? zwLyCrU2`G&Y98H^@rU7pjHnuwZ)So1gjLb`J39UyaQE`{_qNVlY;g8k$Flfs+}i{D zjTA*k`WhZ=pnNu&y!|+`t*+k-viJUamX*$P<4*8>{k3{1c0X-<>ezWniguawlxMB& z{$XUTW>3O<=6TBwp7*PEy`z_Ui4n+fnzK$#?vqYLzT=tA2G$)3G8oC<&(lh>RO#g$ znE&55yeZot$&yA#)AVuHp^q=@;kaN@?*zCz;Ew+O_?HjqefU{-gC8W<14i<(&Amv+ zaYz56fT5s4;CRtpVCDF(cE;F8_Py&tu2-Y9Ut^ngq->SnUO2#FYvhK+BDE1h$5Xx! z3G3u9BT@${S0D?oV?XPe!EE&KDtF$|LuVc7NsQNa3buPlEuz(CX1p0QKE@9s9jbkF z56<@Go&Pi|7jyT=^sH;*2ppna{>#LwoTJ9DU+Bk%dsIGN}2 zhd{^a^?soGe(MvNW8PX9yH475k0~$Ys)v0khVSA4jz1ba>G{Ihh+DfJy`%UkX> z-0O8J=ylf9;Cu3gwTb;y4)Z48_0y{Id(MEne#%|{;H*zxcgA+#wcQ3!Z1)q1$MzV= z#Zver?s+nPguvk34n$o7?JU;}+5AKR0cK4ll5-vq0ZZwez#D-b(=aw29qUJmYPs?s##tNrZ9|4YNg$bwzZeoor@rEAg^0PH69=@NWiRgQy1bLXovX>Gf%zMday z7qwdVDBco#ec9{p-hVg)Jvi%~Bpo==4zy6Gc(vIg@`g)yg@pw{x3vE-h ztkY0F>l&51nU80<*HL!wVz=g$A#Wld*6?0?_U zzV=UxdtZg9PdwZ>^-#e-b#nIPzk*Z7f!-Z@r6$mON>sE{ARfr|NqM=8qxJ@l?cN_rHqgU0_Sd=;F6`$+#kui`wbsc!r!$WLT(B)V9 zYTt5EQ*j&6^dlr;I|hS=-ub&M_1su%12x#p^r?H%Ea!usdhZu{Zi{xFmK9u{tdMDQOc(yrN7utUyPH+Eh&*ZW#@&h-|LR9w{yrx$~Dk< zz;i3_=);HdC_t;j-m!GMfSPGYaL_CKlRR-nmTjIfc9|O4l*yhLyeLD-535pDo%!fo z-#Sv7kPUx8Pxj;=$h>tpxP`MYkshHdz(-Hu7tyf9Rb z)1z+qshdB`anQ5=k{XSm9VG+UTVr>w+C-N*^&k0{|Ms`~9=#8G_SqDTDtV@qk3mNv z{~oV8qdO23a4wB-h^{+3Hvl>)I?C^7n{GSsX{hZ0@=U}9DGmz{c5jr+*6RnC6Cd>Y z@_&d6fw-gh1py%U=9AwS4l)OH^lTnZ^F6(aDR}cBo9$ZPMaSyAKQ<^mC)>az5b64eL%DF+bS&TC7eX1tBM6Kj?uU z-P5<+A7wiNU4PKZ6+WkbUTN3sgMP=1U0V5PUJI`ddR;uz1|`{Yy25R_NATZu(A(FB zBq_d$YdlK~t$mbq(65-TG>;A2$((r?wm9e)^Q}TD=PKo*dmM9~r60{c({bMC`{J`O zN~r1LjCv09`vUKdhW6UqwM-M#*QN|I)r~<8Jkw_==8J} z`v^HySms(zd!*`;FlzYd`HV&H8K;k0v8)?=u3I-Ick{i-r$U&a>bXKVoA{GN6zN zCK{eI#;_d;jqh=>NZ#BhBo}tZg`n0d=r-m?kE~?G#XqrxeyXd!AN2V=Y_p5P^^Tqj z9wz2NKj+{?I?YmAjbd7=egdhP;o0xUKzs6+@uH1=TwHcCdR;j|RenI%H7>Nae}T&w zjXs?iB=V@(qN+L_x}HZA^tlN7L4Weq=ifCZEbB)1pqh}ZBJ47@@%^px;z4%;uMT=Y zx(A(SEb^_K2R%orkW*WEWbV*$wHjqU%Z7|MW@MEF$wg9}Sw}WE{-A%4lR7n$9w|F5 zcu@v#9Q2_G4@@5NEVP(>IoVctKJn*etqXjR<%DCg^0T^eXV2H1e5f19{e?e+sR)y{ zd%|?yoyLGHG15L##Y!2z^OTMB_A7s{pJLHkIW;3E){HluH(Mzm{ho`3HqYq%UY_-{ z&GC=ibVkNMfoUJ^pMKDvko53NTS*{oR>CF|5nJaw`k=)o&7Y}dqckt|X=Aq;d5cJAP4C zaKP)A@peu+LqMpa`e;S2(<+}ZBRV7ZiAe7E+$XB+B)OTp9JO#j+4U*6W2X;$b=LI0 z>*X>2P2GH!;z=)dq|7_aBR7|_K0`6l?Ezm1bowlZZhen_QyZA`H?zdhk4Et}aP~rw zp!WpWD>Fan(6XLU;g=T^+#_6WApgxvmj9&6>`7DL2BC_bO0Z;neWlE$%xM4 z@r38Yd_bR7;GdB3q}?9-8Yf|SpaJdR0OL>JrVNuT-+I7^?bO7`))%6P-|Q1)ix;(@ z!cw-g52&J4QajegD?ce(hi2qKKP_@nhx|`C-d)bf_NTv@)F&ZNJ^G^0t6?8@WXRe! zdAC8H8&!1l&HR8zcp|3Ia{IpR3*Y&CCmDhby&OQz~ zbb11eSunFa(9FHn6R}f#{QJvSe()tpfhvSZc*vs0D(Z(g5!Bjq3W&K*_mqT;cp$TMM!ehS-a zW}64&0jA zm`pdQkM_da`FPLupHbm{GNC~7D+ zY=``7&EGq8|Cbo!-`{-UiBt( zrF3VKY(`fdNc|PM%-wiw2YplEW%I#J*aXHC^>SL2|g094tnHSeDKT% zIpHE_nx)AFk^%f?y=^;n@8&O$F_2x-R6&{sJm-nOr2 z`0sQ3p#NSUCW04?lAG-`EJI(8%`b>=Jo;>dIR}oI;qEFJJOGZ!Y{KGpc%bvbUQ{r=t1Yra^%t3otNM+%tv?E zgC0=s2Q66RnrlN)-rZosI_eeLZTaAD7a)e?VE*kfxgMo<(1YeDNb*;dVPg6Q`Q&}* zM?GUhS#f&~PEd9X<$->5n}$mY(AW8wHcJRz&V^xr`XOFPAuXTiCcS(x@4oV_fpP(V zKj@u%;iKyQ_If7jeQuEw@G5Rrns;~0^KDHJAgkw+S z!m9{^-qWOo-4MCso&4^Yb7$piWO$;d{x94? z!vEAWzsngXJH8R5YJHc*2!3>ct46o=8MK3bHI!Y^Nij*7Cv20mD+$2542$x$3?iqK zLNPzH7&(E@4V+X17y}ix=#cdTZ#mH-XPR~YD}1=r*W$9QWXPN+acul?nD@gTJ$Smy z*MaH7o>plhMT`|!wu6XiL)7^&peGwNAM_bR9Q5DXd-Pb0Lj13G#(#9hOQDo;-_UPi zDg6NZ0a}2H4f^SzmtAbl1wp>b*}AaT>6a&93msDL|7?FC|E9_d^w?}iHeVm~owm1) zvi@kyY(MB_UC2aTyG>&7V*zkS-^7#G_1#X;V-c7^>i>zgyzAhx>C6UhYh)oy85Q~!7PhT`_!K4 z1LU5Pw1}s885ViI1}B8_!@QAWEA5dN-*?-YwS(T!LCUAgXW)CM8MOXu48YStKjXjN(I>BD z@ANyavab*NzJ5UGUeRv*z8~}`j6vna`gtWt z#;5LM;EOH?N?IPLI*2@Exs%U#{CW_%c#f?mSCqq3 z6(!>*CH9l=(HF*8DY%gouMT?ybFwLW!1|z$ z!@2cjBkblv6}rC5ownN|*FM$edF94_&@cR$_`0K)kKG2j+YfpyLe!TJqZyWq`LR6_ zc!kx@?Eh12{QG73qbx$SN`+|OIOwy^ivfiX<6&P6H?KD{-#S|CQ+A!P4E?C?eWP_1 z$!no-8sm;!G2>8{ue6l1l)Yb66m)N$AkfDheYi!I@AW6GLhc?p=;=q~J9=F1?_;b% z(g*R%cp}OvDw_1o@3bt1Y|YPx;WN{WZtATtoxCT}!hSTK>WQ}>^uYXt?}`qf=lG*M z{h&YgQ<_-E&bV7&Cwr9FdZbjJcJFdptimD^PhR#r&~@{shO=;Xb*8zuu_W*OZ7&_Q@-9 zyZt#&qMYADopJRtaNRa8d3MQJ2B;jVcKXg^0zMt|V2=k(8g2Jn+~rh%^MzuVTwGJB zm`-pE-Txk6%!)kdFRlTLD;PTH?Wzk>=Ac(@*q!`(&P~1yxgPx&?YGr2R{2VuyFKN` zsXr%TuSjLhch9Wcd4?W04)zoD-?*ufT~Z$E$(9@+7NqJZd9^Kk(9M@${Q3lwdVY|%fYow@3I%kN7w1H##KM!8#+_ZDT&FX1JsY!bFcQ# zfbBqb8H5xyoik&M#eI?Fz zC)UkDhkL)HH}FZlOeWaeFq;=Kk$jlt?^>rn#Y7yo)ou1@@VR&Phyfe*^^UX`anesJ zcPoXYNzULs`fh)g$(5k>WYhRqe_8E{zEHp(SHE}w)4#yi8^NyUy4&A@g~6}fcBzxp zhta=rM`;G2qo=CLgO9E%m|f6<3q`=F#y4`(l|5PMnDx}Fl(w4_KX&iD9p*XDzZ%DzC&P7%t%%Xf znJdOB8bQ*}H&2H9YxLWW>_?4>`b{2szo6whdABm;>h{j-mzp2hdt)3$@{CDkkanZa zAH{OKBpvi+8=0_~dlEWD8}jk*m%ps@-@3+AUG^NS(+c%fqq{)~ujw_0AfyWRcmMnR zpw{O_Po`zgE!{@X{iR|vy(4K42YvM7Pkg&_Kj?wWp_3Y z!MV(Q`P@MdQr3AClxLxG$q^s_K++rbC&ur^mw)`v|5JKpd>AKnWM6Enqn*y+O@y7w zb5+$ySq7^-lBecIx*@rs$~c>yAHS!J$jR0~n&Nz7+Li7+BxW*t*|vIn^z>lj>g|d? z5m)<)9~xaFUM0K9DldX%y!j*NzXh-^K*~y+%gKWtS^sm^9}2$k@_e zkUGVS_T@!<)+WRitZ&+4FNh1 zj-KAy=&%fkRavD;A9?Wl9sLOzdx~rPOf&jH*Xg|sTu*z0_k7TUownwYa_lF~sn?BO z2Fb57YY{9mQOtVgDwF8H+&Us>|BvE=-v4(v9Q5kQ3L{@-X6Fi-1`Uz8AZ3veEfq zkR9-hG1!f^@}N)JrGE>vYh=6oMJEq- zbc0NOchI};3l8c-CgSJ^z3CmqF>P#lXny9P2aa#Qqcy#^7j*jMh0U1WuAX%F@>*x@ zYX9oIUCubs*tbBkuIyx($DWOi-jB53^%G7$!NWmsg*~56RAM-$ai)iyd6?#KLFFe1 zlN&M)DoRnV4j=`c4q;PW0*~Uulc7Ke1V0C)?DqqUMLnM!$Zjj943+H2x@xcN-N*}> zu+zhoU11$0wfjys?L-=zZwT@}VHUT+*20XDD0Osgi>x2??w{=A>K{))$8VZ#0DSsF z%k<6%U8mi!A8RT8)Zh9auQWagm9vID7@9homW zyj0cXZUxycvvSw6?20CF)1nly=TGPcppo{2J{q9-T6sd_W_#eSY%Kgx)-U7rInv^9 zeLLa0^Q#X7&iIT$^UIjL_n@~Q(|gV+?059$55xxDX!1$0CP|{pd7+!O=N(rbPoyZvV$J+&r?&^RV#1$_-}RjD7aCyNi?MGXrt{o0 zmw0s0s|+k7P}BRg#0mEN6p>r~ zsK<-LSiMo36x#v4Z0t0ywSWK0*Hc-8=5;5I)p>_#8p^9L0M(x{$a>_Ay%Ps~ypDt3 zbVKrU{&YS${c?JA4=m?B4qWok?C;T^Knxl_`P*^YUv})gnMeA;gI+hES|iY%?y&RN zQ-x?-usVOV7J7);cJIfjFPLZSeB&Jl{S3sg>FFYZ8Dc7kCwj!<(sxf1O31RB{ z59R>kn|ANvL*56Pec(AGazFvv2`@?AY&-0quwMw|M68%QFJmD7Xv8E_n*9Tax7XD# zicx4r3*wM~xnGF2=kPhmrL!LNfY{A9UX{s5Ia1CqcT8mP6uIiB zgFasJLPb*A$jnRGn(Tej?+d_SAKO`7wjcDn4eD>-=AWrF|Ktmrlk4c|GZN@;aYvt! zXL}2)F3|Yg`JZwtCOz)fOM7`q zfwdnJRXx+ApR*FLivyLVQ{~#Q)&OD||erPZ1-Z(~MhfUDS6SAoZp@~uD zkVj+L3xcv%L&9c9qm-XIa<*GwAdtde=VeU6zy@UMvb!4aqeXl2L9gtH*Z&UyqX0v#e;5Vz72T_5GmlGOphx^nB2(Zhuj)JAAd%^qCv;Lg8MiMozlOrb~{4hnmL+uSf@2qN=-S3#~7VtOP zkE!Ozej6p~Ir9cmzI3qD4|?G7NjoK{G9~pdFi*g-XnD}4{Ce1%M%_HqNbY~<(2QQz zK_Qyy&e>FX^c|e62P2Z&X^ijLmwxJ&oQv3Tdf zv@YlNL-R&DlMZTf!#u~tECr&?d;+=ac-+eiqQ@bf(@8PfC-D3q>%jFXf{{GvS>gNG zI%iy@+Z89YiBI$~6rw*uXws#y`w@Z{)zGM#>ec}l^R*Y)&b(+uwR|-*Qym^Pr+6(J zz~vLo;DG-geNVpgWdGW3LAka;zggx{^l=Xh(I~IiZZ1XMC zWx-xw5i#UEZ|4Px{!N>~t{a@*kG=gL!TTTGM+3d+9ax8W5?F^Qs5GW@xvI?rHvnCY za$Sw$*MHbh`<)wfY)ZC_CDuA})*;cJQAZAb$wEtHuvH$Hku8S9Gu zmyJAWjEpj3aR04*e;7ozomA(=6T#XQyGr@`>#u*!+y^DO6L@>O{`J3(X<0ECE}wG7 zQP71%mWnppIp3#;I({NSU+%oAFTds=f z$|g)n6NRpuFmurFeTgT&;`=ngMP{Y?}K2~RsKEyOl_yF`($ss zX$wq>_IAFt6u)$x+os#LTkSr3{2gEZ=|BG`%w@M~lPN|d9WpkHjPveFjZ7Zo(8*7C z26A2Wog$Ebj~5GD2RVNn$S|vBR-HWTD^6iQNXWCC3$^OW*`YQ_PZF*FT4x5Y6#$k% zX}?!65vtEhY>8ti3Z0h-_B<31{IKAD%Ua}4Md1GoujrYVNFI>!@7o&}Qs47nr_c6- z-Q|Vmi=e7^9n19h@J;V+(nO5KpOw`f=)WB3jX3MsfS}bxUVNk-wR#-X4SgZ(@P_A2 z&-N+r3HXlQ@}_4Tk@#BxE(7?}e&`Wi%vsY6>)757+p|tpR|GNn$Ff3=OetI)FrwQ*li2a(`@vaQvwO1(~e{f?5h$ev$4za}VGJrra3 zhDrM(w_DrJyqgJRFSMUPHgbM%``pqF`-wyL`*+sIG(6?hcHhx;%qkY>-^tJU692nK zFZ1_1a_&{0ALcCgsT;A(IY$gtv`|7acvfE2p(o^r{Tj{XnS1)k!jvsOt&0FMK}s>p z2zevAk``FMmwVm6!vT^Wv6v6KJadV?(Fxyw`3rwk$gtkj_xUq1dC@yD9)~|lR5`fL z-xc06cepRTe}Uev7Y99pPS8}ILoFSEeCk9bSq?*8PVn8jYVOn?Q12+yCqHB}KI)a0 zf#QnKS6sYC1W^z_6hnE+f>y4{C%)30h{4XX<(pndi0FyP&BW$}3m>a08Tw zTqZs0p`RC?b({xw9=ZRFFUb>`+!MsPWt@trL$&J2?lSWrnshkg)Bn}fngn#ab)k3v z?u#r}r|}-E=bU+ISEOakz*C(vNgLq2yD|Ng2$;{k`Fq6y(?^Vf52_& zv=hX)%s!vB*{Z7~*ZEP?&pKCMN-$EYOgUYcNtdEc=<8uXJV%kJ{s;Q?K5@H@J&YW~ zweC!Hyr!<}a!i}T^dm%EDX`K;okQ(Ahe=iKtL5}B`QpYPmaokDnt%C z<(S`G>8*#k%8Id(7a8Mg_+tD#PliOhlQ)ndG1s^NPMw^d*01?XzhoVV?sx?88FA%B z9Xi6W5CZ1)oF7d3g|GLHF&88gDaihb@(EitR^1(3hy(ABS&rOgpD$U*W!p;t`%lK& z>fR%}9l_;J+cA03d+{&E0mnD+{&#}H9+yU`gdexf!vrsDMp z?7Czpja0nM(L-Y-oERX^>$s$zrxf}zU$3B6#ldiShxOVJ^E0> ztG@0|W!Hx$q)hPBWV37k92QxXj(@6mNHRWI3A;%UBp=DVsCRw`ob|0Ql!k{u_^6mC znoI=nwSGsy{g(c!Z0!CApZGKn{sj7JV;pqq#Dr|SKA$LEVyY@1 zz6zdGp2L8p_j`RbrI%v;N~u~3RCG_Tn#N8WAaMPcO7qLlP+ zZ~D|bbn&WO-AvgyEr$MRA3h5c+Smw#=G1BApda++by#kP<-X;6d^5)Ppts5PI}Nz5 z{&Y-hY}BNWkP~no{a@wm(^ba(5WvH)z zF!VCTjZ@k8e6s(29-^1DNaUWYzx-vL{}`CME;~&?XQcZPmmyL$UP(bo+k>P-e(Mi#kK zibuX51bfaMF>R!dubxZ;l=qZAqXE0`o{XKQToV;AN1%DGWI1xjL88qgzUs>!fBer2 z4|415us=gzPt$mk=r0cX@o017^_0BG5c9=>WsPp5!?EROIHJ*~Siv3L*vvNhV)O}S zT7jC{fsEy5&Y^)l%{A7F`dB_{?X&<)2l*NX7^~2KZ1KdxF zZNim>7$_r2KgeL@+uQ@xK2@?Dc^|hPi~PqN{fZoVG4HzRl%4XF(`LztAC3TanL))?yb+eVHbCi^?CX?fAbfcifrnbI8?WF16ZL?2aQXNwdp$8sKj5G@Eo<2+Af{I4JHAy%yTizxK%eMc#!yGPP9D1BpkD_%^I$dgr7U!U zZ3%PCqJ5VEG(x}0U1Od!@O04gx|Dl8bCm&gr|gk3oQt~nz&Xfrbcpplfyp~91aOChwJNX{H%0A?8V@QkBXLySKF-;qv4|yN- zwn0CVe4vj77@HJRq4V~+VcUjdBS9W*sbqBjJCdG$vAgQQP(A!cc4q@9F7qSLFsX~? z3rc0OYjX@!#+W)GljFwr1>`$_oGEL86f|EbQ!U2GLty%y>rV*(&49Ja!v^`2P?Z~q zTJJHoPS+sxso`GQA^ckqHx9NgSBrw|pN{_WxGU7*N`~xcvs`r!AHetw zUcqvvpHjb2+7o#DE&BJsbL!(Agh5wz#sc=kp1dF0Z?(YKRQ(v=vXqn85+HuXKmy9= zSSm&*AM!r5u>+kl$#fF*@EYa$B*1jTW%87-wqQ5oFItZoSP$NgNelh@!JJ)A^{^3r zBg~jUx8XY~fwGh0KsF!K2Z`x6b%R!M4oua^gV$vHpVXz4qS#J~$_i5y>OOFjc5*fN zJ1pGu-9W??8?Be9Z8;9*n@&TFSh7b8tdl5Pq@=lSejxk9$#O1d*6bBRXVU0X<@vhD z8dctt2k2N2IVHVEZklq*j|=djqk4x{U&O=f=6lqwpUFOo7be-iH2R%Xq48jQ$OH zpXs3f;e(!;mP1Vu%3?HZ@&U=2MrtIt$fOu3eSx<5BlzBulE>ZH~r z>nEb$*X$47QN*L2k4~Dz5~1Lq-U1K zvu~pfV2L$~Ifr6=u;Y}hnp=o7zG*1w+DrSPZkwMy=)J$BKjIzsLNALk=j))4RRm#y zKQ#}0V0T>m=#1X}UXFtDz@#fi*E9A?@DPz4g{Sptlwdyz<|3(aUaF8$JRq zE7yVM!*hS!MvU)J#L6tUzTyoc2~N`m!E$7m9ICdMl5SwGe06aDL2CAV)~0b zROdl|wv`8Es^GiNrK;znU!}RxR-M=2YYt-{f6PDiHBvTd8k^c}n?k|1CR#n$wkX(` zwH4EZV+Z?KL_Orbzs>bBZBCqGO-d+{GtY`La{A;(>wq;TAfGDBzG$~Alm>=7gWIp{sN7=eDEkGCGo-|WA&PtET@ z7QWll`y%Z`+U*G=;>s0oB0JV}Y}5n~bX!@bT}cz&HioURql3Pxh22iCUl69u-SwQi z{q~!*&m8pLAX26c5jJ>hT>B^UWXTyZEX}^*#DRnEYSu<24CdbI~JF7Rgv*DO(fe-?4dbkr@@!#a!b+CT)yd<)x3p z8UMb&#l>R$BM#dHdwl^utC;I2?M~_IK~HU?ph7>j{R_jhKNKr-c|~tS{HN)(rME4L zw!&O|g8Aq>b=u;uU|%`@#E>elgtt2A zy(W#+k3>GHM#NNRuTM92=|jAUYD>*sVE;Xih^$Hz-PUgR>PNQjbSUF*Z~O9LJaQ$O zlYvPSqTCuYdMJSWbUO1%ld9{McLIH)cR51?k;bEjk$1?ujAB4%|6 z+~gfAEj(69*f$|ynx`0H^fm$NP`6!9FN`1khPJm@>9 z56TwblypfsHgiiU%%Ky%`>>p%FwY7zo^}3+Kg>j)+RbVA515N5*aUyj26(=DzV-4Q zv|^bDQEqJm)Vp@9h$>AGYks|sf2B{}ZDl#+`aZhyc~SWU_5qsF+h-p{lzfS<$c_|e zoj-CRO@Mu9 zzG9CE(%(4D@s$TXvhqt3pR!`+GX&&&N}G{$A>y(Z1e;?&tbyr0Cn}Z2?>zBk_X(B* zuVgQX#^*sfW=n_c=BI*_J^g^u2i30M$olCGMuglV&%BbRs{avb!o8|k;odh6mIGTRJXvbBB3F_&BJXlBlAaT%Z{!JUK z=UGNMODnCA#k)xoz!ov8ZAA>&Y=5FzjtWr@yU&Nb`)kGnI*t86h<<1RxZG(*Z{Hmx z!;Qq0UHe64a(p>q+igSyRWfGVhPCoB>Px&OyTs8EjK;LQDb%|?08fus zp_5O&9er}RFP&JR{9pu!?l|O2)`%rGV$lY_`Wj_&ijkX!-t9pj{mdfe>wWY&zLgkr zjXU`7|NXybK4K1@%Ot-?X|OPzya;>V6H)d2lwKkI--w~_cHAK!-3L}*F7sR3>p`$1 z?WZ{XF?~fX|4lUeIp1PlL>42kZPd({c#Wh!w)uE1ewwu`ycB>W|4FMnZOQ;I8|e3x zk~td+C>8*1((_;}#0dTLE#ISG^{h$Auf|Yp&jaazRZkXapZQSm>why|;QBWHCDPj# zGc|n8Hrc+h$8Swpm#vJTiFKW)_M^%EYnz7S8}>JW-dB`iONVhJ%{J#jR$~lo8%UPI zO7DP<53T3cPxvUE*4mjTi+-`rloH@U^VmBNPUS!c{Z+;gKR7q>cloQ#Jm@>`RK|{N zLHqH8o_wR3Zp?b*(cyDbm?^ni`I<9;x+4op(3l`W4};?CV3?={RI7oq2GX4=+anJ< z9-xV}>`l%HN|gl1E2!KjvhM&cc3OR3yenWzVCYl^)f>ecM<6E%SM#m)yG#STOA0za zp&Q$m{L~?8d-NR#G4-V1n;$ZYtK`XD$4AiigZ{U_u0P?62_@CJ5ScvUR8n0R36u?D z?gzaWBJe^1o)^;fJQ3Z=^(XwC;~)Ap4_?W4;CY`npwH=iEs@^N3&!BgHZAimDx#Yh z^(gW+;FK=ja52UaYS5!D&9am1CeNC!B7Bui35+$}LA}rK8Sq-4^cc}9Q6?^4E2e-w zFsA`eq@H1ouoq*uepRuf+LZlOGLaFF`vr_PR_Cw#*N(W5`=VdgGy0hAQ^}Dzr`^hT zSOObYu4#-Yb8SisZi6-Ny2P=r7m9P7M_;6Y13i!j-K-`$pEB`!JsT+#Dd|O1#F4~G z=tdG0?*N-6$A|s&GDbVyz<-Z-N0&Xp2R+!^?R<@+Xn*uU->*nTnR4laLvL&f8cZkC z?sEq4a|gZctOq?1-FDPLrWvY-m;BdZyF+HwjTsvg9s6Bkm-mKq58~_bmkq0J_PYK2 zJJ8W*tM&@Z_k5(NbC41vHg_F{VUQjO=1q{ITyp(eikbI>?$JC6TZ*SrH6NoZ7b#Dzvx2u zlf`DgL-w?`dK&tX_qP@mG0sepyvx@*CKMOs?qi4*tT*+AeSP<~fmiE)?Tc%f+%XwR z`^UfipQ4#jNI3~xWOg?6X%yk%Br@dmNUb*5ED4g+#LU-_g=T%1d;K<#NUx9XL6q}K ze?91>tJb*8LNjebK4{lEE=5nMtkzAs;}dPRqa))?yTKcehJ;-{H-#Ybmlgo~}PDJZ;AAAsx?|)PN76*Aw z;%cVGlY$6ubw{7`Fmsh%&rkg}KFPo?^c`J>zy4=&{!kV9Z-1JiwtxMd${G2NdAMl5*$}`K2bI#H3uN4!Gqt`B* z|0d|aZ{K44lRDeua`#CLvws9G^7BH!Hul{n7AAMi7e*%~p4HFbKM zHUAu6Yfk_w-)b4y+Sf77PyO`2?SFF*74|*@owgp-RWO3^>Yz&fQnYV!(}sS`$0;`* zjrHEp`Sc(0_B8GMwEUUbp;q%1$iLg$`yy<`YwmB=ALPi(50n`PupH<*Pq^zpw*h@h zz0I>B*Y*Qs5IDG+$LOoz2OQg#3{kg}DD4R$|>yQ~83 z^}YP{i?7JL&zh{u_0GLTXT?4rEYP(P#gVGn2%=hDo93h_@eG)K*#m|Pvl(z3j8V@)W2w=LV5C6$dCU*!BJE((a0n0T`-Ko>I9C%xymAa?@L zGLA^6KN@2>&|`c;mz!mB{LlxJt_#4D8U5{ih2D}6v$6;Ej6T9~|9j$J5o zqsxGAci*}RxAeW|zqPDiyRH)%30Y%xn8|HqeqY>0j2;h3s9E*jo4{dQ7tA zGXAB{`$ja<^*u=+ocX6Dn>($yPUv|h7Z;dtVSE73y8EQK0)C{J*u7n^>VqDjAMxX4 zT7uagU6gk?$FYgtQm<3)=>6#hOz!zl?&P}OCYba+F=u8PjgNa-=N1}jbD;;f|KPagm6g~U5OBCRFe)uWlPbfuF%jo^)s+~mtKR7lz+oN zv9P(0SYD-%V2!VOFw%}D6Z2f_pgcOSGM7=KABzrXh5L2wTN0apYEIqK-{+cB=b;IB z4Yeq+(Vo+~POj-2-`e5VE|>Hz6TA@0jmm=RU~S6gOs_M{7Weo^!QI^+&J?^>5(Bi)6}Zqa&{ zee$`Z%T7CyXJ1i&zpX2NL^nc+UhfA4*z12L?Efwquj=4b-%~#{?|8Gm@_S;@ae?5! zpY7D`lYF@US;>Ao_WAZIaaDav<~_;pypJK`&gs9#e}|9Tzv9k@BOuQ+XG7O}ies0H z9(w#Ihv)RvEx8Y!0{xTVId++Aybx>F&Y&NbesQ}GT6NZpw&QO1nFm_4c`9c;QqEB> zPWko=d7HDE!|U&BxJ*KyNB3`Wpq~=Fu6s(|-YIn%m%Bdc3A;?!>vY3(`!VQKjfrrl zYvdTL!;%>GDM{rrFVKmVWpujolPUei{ybAoN&#T4{K)s;?^44vEI4*w(Z8GH0!*Sm{rmoaiQ zOJ|WG#bqTlu3me-r1DQny^+U3p8DjIzanU{AzyTPB0z2(=3FJ0og?F9jQJB_!FFDU zZCd`RZd%8C0Q)%4Z_|I^FD*C ztuyU}T`KFX4NH3hd!4wm4=U}*JGCEZ+ZD|g{^I}I2IBC=Z;=|1&5%m#5_490ar!w# z-3Fz#Ygd}`ppAOnVQ0DKZ>1vZE*vp(=rQN=?mWs|2hmsh;&<$JdrtB6 z^}vpl=YQ$#fE*)HH33;DnOA(|SfCo7QA+5rUiE=@!Xf7TqF=7iH--8rfI z@37n}*iJ8>Qpd`RHP-HwI{%NvYR_#xxBU*-INbz)%*w>xPM3GutMn1PlJE23Zf^Wp z(7eC*>Bt}3KKAu%LR>1dd`xw=lQcKEGv}^Z^R%bDEB~fD_fa>WrvPDOCfmJ_f2VcX zQyRWrq%OOcyRBX)?J-z}Zw2L#dR2YUTixZ9-4gsuf?lcHPJ1!>$qQQN5AM&H{&}_yV{PF!M=PvEz~~(AGM!j-E=$=cI-0BBjur-)ui_X@<5M&)US8+ zK~FthUs`9c8_U=h{9(s^++EL$hAaugceT6QqTJI7CwbfKaNY7d-|$7v6WkwREoHmT zy=w87*6+}UZdpSy*SfAT0_4+gM(MzHn^#Eh31>aQyfwdo@uFA%=lY|V zBo)Y0oIEcIv`(CS2$7>Kda54Lb@%$K#KlKsne1!Ypntv=Uv$uA1O%$Mf&S%RN7}A` zaCUnf$mZ*>a4LbBbD*n_bTb`g>XjrTy7g1Hl}YRs5-!_CZ;$TvdbzW&qTa)r8%2`K zkfq7f_=3<;mbv-+-TYPW40m#uALU@RdAb4CHcFc&fcU@2(Qhh5y0!4H z0wTzq3EMi$^-cqqdOjxaNywUQ@Glk=2YvEP=Kzc5%cf|1?u*AcFI0A7CrR;u^s-P{ z`N^8#@}!ka>U2r_k{$9%!#6eQtooBiZvD<9M|!4s$&Aw0PqVH*JYSGe zclsonP1`3|yQ+N)f>?6!V%v``TBS>PU?(nB+Qu4OW$0fh*>?@Dn;!)o^hLuS>lLw) z2mLMylr5(V00pU-=2HT4rEcR@>QGf{a%}p zMmZG9I^3Dp-b)&a~&cXmqvu z`ZS)FyG!WYrK!KiwWc0dPng(c_PS*|@1Abk6FpXV6jfd2Y;V$)_x4&>Y1(z(F=?y4 z9Z*mDFELao+$Y@tT+2#<_dHcQAY*R2dmCQ0Nn`cLAZ^8e&Re{u=PKU;p7o4N8!As3 zrvpxHx!O|Q^qH&7(Db)$pOW-c)*;U0e0`r@G}SrO`J-Eu$v=~H@u1ZG_VPFYGnQGl zTu2VtNfY+E(d9|IU6)BbYR|{*L31A5QO=%={H5%tc()}G1JK2V z?MV(=evh6t>A0e^E-_{``YLrNPhZ{Yl&I8L8@83?&?jSa64*`f=lL)(^eTR1kB#>; z-wXFy2X8B7+=YuwG!R-(#Gp8kUG+bTY)z=oR$)v1v;&%&FMrzOX#Z8(l&|?a3pe0)^l85pTLq9b zW7I;OGM|S6rkB~%9erUmrt>KGB&4mXQg&VC@-(p5e;mEjUgMRlqFxh-=@EWLtLdLR z(E+4~#(y|?f}bGXY+o*bQLc$u(A}%1+SC&)+vQI%-(yX_E|yE@Kf?OEofDq;cf8%M z>#IBq-n>=EWs)vTRQ~J#_%+gBfBNfRBmXP;nz-oTFkh1{M94iyM}J4XkHJjdu=-f7 zn^-^OQ>tPIs;eE8ZRK>NA!E4BPCG5@pG-4~e_JS)J+>7)&22wnaQ5bv@ybT}2$%~K zF)w1@(>(B~D)q7Q;eSavkLQK^Nv88p=_J?nJO5NBb#(gV?;Ux?lwHy7=uTaI?nErU zqaP^_df$8)zN;q`tmMC_vxf7RLMx5(_xe-bVZ%PUuehWCPjN9(2Us3nO4CU=&&vV@ z@p}z?UWIUV_Pf3=!PQTbr<=VNJZlDnMO#x1iHM& zPvh^zghXVtZO}Bar%cFy=ZZJ#lq&@%bC8Er6wTZ3=xP7yj-EQ{?QlmA-L#Ib=Q#Vu zc#>Z?PQ@D>RRU&bJGO+}^2=xk(6-Rd^3)S(`_J`T=@+z#<)Wk}ow4VaxzadA@@1( zM}fd>9fZ|hZ@HT7{W8*aM?XqsV%$;IJ_*W16m&<=8gzd;FGmB>^2`~t{EL#o_aCgv zawX=z_wc@#o9|>=tQJaxw&RX&>|?gqyS{nOIpu!-`7c4x9sGVbFS)W;^PoddxPspL zRtTT9XsqKX6wl;qE1CTdqBrJioe$mjuo)SLd4`C|qzYLM8b1nlp$BSKP<7g2+T_g; zH-v~njuZ{aRCKA|YW^YUop+Br8Pi|b80^^}w_s$D&x!F4`F{nxr;kpP47g10q`L0d zMcWt7D!-?}=U=b4vU1sd!mGAD>3hDug5~zK^Rxlp*E`*J?6a(k2U1?Gx1{&n&ObN; zuj^XBm&4`af8e(1j75zv+eKHAu`IKX)m}Dc`mmoDAMe8+SFiJ$V;Hf#N^I&*u1BHL z=g{N&5j9@8gP$tEyFx-TeSA&fVTE&r{kPZ0+KC1UwKUch`Ri8!m;h$mpPsH7! z2>o@Mhw_#8I$iZNO`YGN>%YQSRF!@N-NtD{>2>qZ$$UM@@FATGITow(-^L=orr%0m z{(62Y_Y}Ps4LSGSF6%U;Bi=y^Q~Ct9`U9HL%Xiqv@FQb-!kz9;|4~2xx}YDOULcy} zgC~(=d`OM1b#|`1pZ31$hrRMW=@9R<^E`aUE`PG|D)qIn^PG&mu5Q1|8OtHxl97E^ zPvz27CHJZ2(I1cYEA@E$MZ=;~`-U$7oVK0QgSQUiM}Wik!h`=&oP2!5?+WWZ>BGC@ z_rAL8zt8vQAB}y1z6V{$6VkM`PJTY*jh)u(J((w)k?L-8f7G_89XpL_^7*+U-8~s6 z-oBYo@2T^|UuF7YvnxJ!6-|zm{ z+{w0fUnjp^h6MbzDr4t^yYegSt^z1-*ODRu1i6L!5tr`-A=CiT1XV=8^yC7IXD zPWeGTQq{X&%2)oCuhQrHH$)Zxag!hQr|dV~9C5>-FyqFo>!~4)s(6wly$3Jl(#J{a zqn_>%lQY{AFC&Q~BvZwO(dj*wJ^lGOdF?5G&F(FRPIzr`~wJ-=$v zL=u91o36j6*b^gp)_ZRXBfQ=t1>+^`2WcH*z z$@@}JhP}1S+#=SbRNl*(hl?fhSTCbIK$*3`g-0qRDpMY|d_hcIJs(zBb2o|gnBx>W zG9i7Jq307cr%ofMp2C#?=E(m3Z~x~oji3Uwup1^?H7FAQ5+&!2Df!V$eBdJGQV0H& zOIzPczhHh?$$SJ`SnDwnHvJXwB4uA)AGu-m0Hg?`sE-Z`%J0}*o=Zk46QFEY!Pd(rHK<8T?M$Dsm81(~bnO7x8nS%)Z zx45g7Z}C|K$XJJx?5yvDcOM?4EN^+rGD@Yh>l>82-YAm@kbKC`obSO}eosuXU)a!w zyb!DbZL$;l=I1}^K|TMxZ`>vOFZcP$$Q>ezxEpyJ-p5*M-vsFWK;Od|b=pB8i0OYz zFtwRSahgonMk;TZytTXoj{7J5HMmaurwKOZDyH9vvkuHV=#$wiW=t_}Vi4yI)Q-?i z{qTF!rf$vy!^!`_Hi^`1>4|?dY`73VD4`{V6`$ zZkSGNlzab@_XKdq6kGPWmh(e7Aa#1UMc)xUpZS-+``iD8ZjB~@3MP5bqEHT~&wK`! z4n2TjWIgD~Q!4BD;GpmErT&%=gy2#S!s~;6=BqALI=U)1*mYLGJMoLwCfu3>%1i>v zGl)x!^xNG=5ab+_PhxnznH1pEe$#Sdec_;xr70VEmKo<&zt>Ye>g1i?%iMKR&lHQE zh3^C`oBX(o9kNa#mm5-)<0W(JvH;&=e&*e2**qQe8DI2~<4jwnpZ21i);V4%1YF)} z(Yh?JfF`;(mR+9&=j&npbma4m+U&7qd*qB?=2ho__90J#=7ateB^}G=J>UbrYy-!W zQ`m7wxyRXK>WP-opTQX$)D!l$gQp7>(0k8u7_%O+r0L45oT)W`M@mHBd--~^HnNZ6 zN|%4TZvY>EJ;t?-p&7=zZu)Ca8Z`FAjb7yAVBl3UN_UVB`g;ma@bpv&^f|8tojDTa z_{Sq^=u?hd=R-$CUAasnYuL82w!O7O6K>GXc^%YcZXERahq##k_j703abM3kdwj;; zh8@s)GA(lgjQ03~!F0e|bNHW>vwe{I3iX`_J@phwM&&(7@))6z`N%<^`c*zP3c)VJ zgt$NGJN;k_ENwXBqO$cV((pHpxh$cN?x#W|!!#-Y;ZyVIjV~+jGC(}&}o5wry z%5#&nEGb!Gr`pRWmN3z%%P%@<{VY(2Yr`=cYn~wE9O(~lxG(0biTHsrhLkG z7IIUTxgPU(*wR5yns@Y@-Q5rKwDk8FK`(=o44~c<82uF;q4V>q@6RdlYT60Rwa)+W zK~KBqA+Dry(1Le=(8~xLt2e6DuiVJ8g2{%jz(Ex+NJ}bhdgVox7ua=I+}SBwHtb2p zJ*@_we2FG{ES1a$f~+C_JgRF4p4+=ZkyZThKgTjT*io$A9=yHIqF#J%{^5~w^N2$> z^V&$54=g;(#LJKkX6nDiL2JL6`W=5T`d3uY^Cm?;+cNo42>(@X`qm}+E}n${uHW-a z?LeenrOJWIL%yX1cl0VH27Q1Y)~@GG&Iv^xryA%&_aX0mw>S{`zx;)RzEC#FQzyz9 zPyB}*mFzppj?=&F=a@*U>!42?NtuxD)a%&W&o6^Lf%fk!F)gTYS0s=1=pf-v#G_`hh}LvM^;s?`O)gDSGgacl1EC5-;9*nC<;H=W6g`>{PD# z7afr!9l2?JZp%^7D2EFlT)_O#9rRlBz+*N0WP;||Pu5Fj=JSr;@IkM{`|nq~26hyN zWcFCW6Ag5})2K(D{rPav%eU6sqzTmB*07SfQ3rjgrn3-EnaDE>ht>%Kc4iPW&vNkY zKa5v-zQ;4`Kur{eT)wVyIM9b-b`0q$pK*5G#(TiC47?M+Xzx1c_l2f@GG_eBRiE~L zPl|stoddL;gXl1KfO)KbcFi-!9`rz4Q7(-(|bZpw}HM*^mL^y)jyu67NDC*ImNVf0nu+MYFEl4;Qqcju>k^JLET z31l2Mb8YH`#yIGcCI=G5To4hqLNH{f0!zAsiah?!gWf#pj(j`lGcSiwOgDxczT+h) zY?4+vq5QQNcbsVN2R7G%6v}3HqSFp&^l06=0Jpo@T;rSl2oV1>4tfJ$cN2U<{JWUb zM#am9utE!q!Q6EWtWzhkXmTT|oXO3CG(TP>7Z(GR!CO5#?-v3?KH$H8W}fBD2d?+W z`lh*T`u^yi_F1;`G6gN)qd#;p^5Ey6)xMx)Zo43J+FCGuAgUsHjGA5mYLCweT8<0p z3Bmqa@8zqGj`A%MMS%V2U&@LBf4-xZ&zW>5%M*juR@knM8F>6V_WCU<)*XsRHe^ci zxh(&VxgDfI-mPKF@g%Rwu!r$OChQaP3466L>}Q`SQBKlw&=-$9Z8*iN>3e>;$*96Y z6OmkVFUqw>!aJ4BsZSZrQI9PaqL#SzrRNh%mc)mHe1-# z4+nh>D6}MnVH*m9+nvTTm>v|HnFg}cl*^vo^5crB4JwB1$^orm}WWif$6DR{)eC9o3{0L-((5 zzl}v`dmXwXb!;p2ksKRV+&F%3k&YO}NT2FFXW%aBuy+>x+p zCc-|k%CEVMtNLGdyunU;{F&7$9f;0K8-?7IBkwfe`tW~1O2lE=F?^TT{4iV=vtcT? z`sE;y+AY$0$%N%12>9+BGQgi>%KoYLBrS?DYH33<)px1Wf<8&Ox6sxTLj%Tq0nq zUpT6NeAp}PkPX4_kpsuo^PL9vvg`DZ>zRU=cb5ni!CBHrlY|;E3w+B7T2Oruf zr3^g>)f+-8Ps4qHp_B91%RKwdw+>>Gol!W@k>{&m8sb@w|LrZRK$i{#uZ>A!*eLW5 zn{>F|2lWaMz~?n+O(pxZKC^G!hQ=j^}Le+OT`fn=GU!_YA~LCoDkuK%_M zh_%=IMmY4^yjAbkq^Uz8ERYzYoWmgB7{D3d9 z|L|(0{-`U*Mo*qU`f6-AYdj_RYIoKtD69muDuq9lrv2oC6t?1WaT?f7F#!A1{1IXc;SRLO9 z+xRW^K_2w{-{`LI6JSBGPTvC^^%|fnA3!7WpS=ejcCY{dZ`MgfK~(>(82vi?YezO%3&?v7^vz_@N+H{-V#@7ykY?EN+sp)Z$q6`oDtec2 z8`CCnIEW7dtsgz;eWPHwUrx))ybef1CvqRkV&H$XA1f~N;OE+nYK&&qO;;{Cjh}4F z{ygl{+L!gu6kFdk`JeN+&mSN3NSdbPd06ro3Zb)byDv~B$qsrWo0_#N1qlw^LWX>a~$br9$R+qm9k$4y`~cZ z<`um{kk4geM>*dk5fN1+f=(gebpa+ZJ z0QKucYRK4r{GeAPLD~FIJ>^$^Ap7({FYJ?S$7xf3FR=VoGo@_TB*J3+htGuW&>RpG zNj4z+@A1v3i(d1NvJ=P&j4ji1JSRWPp0iQTc#4ON4|%85E57IdK#+-R*bcnar|P@D z`R;qu;O__hZ?QgX&3bBlYePWgGc5{h{0)Az2))ObDR{rrzBIAwfllj(d`DMvvCk>{ zLVfJ9i?3du@VuZ8yRDA28T>u8CGJh9BRN0oK)gbF?!TD=?V#Vy_w|N}{g?3;eqbKD z;`K82HNP9J{87$3`SD0|*DaY0kUp9Ry_0mb|ERuU47%)G)A#7U&<%-B2j1&>YbGfn zRG}{z`$51lq{SeSALDundz$fl1k-1I{q6yNkKE|~?tJ&P%J`BanR%rI-H<$J>d%Fb zKpph=>r=96KkcX<2mSw@Uq#lPax{1z^l2^(t1Lu$9A+}Aq`@QCKue|vJ9RQk_^QJV zG*Y_iy&e~Uaz9|sHZ z=e(tec2u8!i8j-x_R55wkW7}`hS=!r|J?onbXbvFhCE5-DCy8Ryj+enJ~hA5t&=t) zXP)Qcs|9FS$8g&$gC6C+cuDSe%UK5bx41a)LErD_Et{YpTfN(vhmC+>lb;K@d=QqC5fU7l}=!72)l&Uv6%;@s+ag)0cqXQ zpY%kN$&7xcM)RF>M_+TJ%{S-=z3eqz`ab;#;!PPnvXAl1oOOtd;@RyepNGBcIXp37 zUB1Ki=v(^2eN0Yt`Sr-60m->e9(9U{QERfmX9XB>r7%w$t}*TU_pscv{BCdUht~&v zzmPWea<@sHlHZU%;W$ zL3EHwUAG87eW5?APj@~!zklEBJqO?TdRdKswk3FQDJLyr0$K{9Ww{Ec53_2_G*hxo zN$rq74g_Rvug7JK@jrkA@<$JPeSJ~5^%e3v=PWCl4_Cm2K%)9Y#X5Ye|8&p?4?kts zx#QdE%9$Hs%j-8_zM=6G&E4yMW`q!5H71{cxDd!%2$An&&2i-kM3lSys%!bx z-U`jfCmGw^+wK18V{yh@U*HsPw+)Sy>$P&EOt((vq4sppXSUtZ@9h|}nWpY14*IC) zN|O;K4Ia4<`pH+oqYkrTa}XoXSD|0^bSSo!CY)#i?+SQk6MTz$6W#4UBI5p|4|;Hp z;l@t&^&R$s2fcsupuLK`3-sUD<)E(^Tm15+u?GF=3u^kK9ww+KZpQ$6XN54;Bn1z> z)FqF3YO@LR>#*-WDCfef)G^{I9n09p>BDfO)Q!G>s}BQOhV=x^2Ynu-#qY>^IM4M{ z^=@A&?6J`o&-{+8RtKBs94ZGr(^U4Z$#)71t?D3LMkVHP)Y-B!M=sR5yp}>MSHXKl zhvuwScD5<0K(PoM28GL>G%*g!1Bj9NxBC}NQ!GnLR;LN4wPxCAbKokc{&Ts*cl@5s z%fS<*Z{L3lUU2Pa%TK=}F#Yp=@wj8n`LXI5`8yPeDKo}2{hE4$`0lRO1r1OqhxVnt zh>3jmOD}hiXRF3(esy&Fd)w95EA0ySQ|1(Jw+oGw>$S>AnNCW%iuriZ7cWVNNB4U> zh7apS{m(h*LD-wYDhJt+iVI!C!DZQb@w=S3RZlyex5GT;KIr=*1grfAWSf5Up!bJi zt}?`-K@+d{o1w8e*?$eR@_w-T|D!k`^wpYWtegUE{%|Lv3yq>x=5S8q&_hjb^v{rs z+=rcG7^b6~a^%}#Pi{Ta0DVt=w5Rx84*QgI;chm(et>1}4*Cx3gSY(Uu&LkkTwnZ) zdiPE8V(*XEp)Uwtem%4G$0b#VpLn82AJw$vHwmD#rlTaH5kAV)=rawDlVPdi;7irO zurOX}x5xOSpl!L??Xf0AQ#0|@Qm1h+RbT7%j2@%qfgVrSd+}w#eG4S3RZc#9MNZFr z|DDfx%<;a<&*0HCA2!p)19#Con5zPIR$CcCjCpbnejvejcaitD0sS(fX=+~{@j<#; zM868jmH%g?R}~Mq_H_sKQxp^X#Xz@5`P467uNw1;(B;VUU*@LIcABS3j6iNLk(Zmh z@%A~Jb|ZcHyZ=`l^g%$LNvMrV&M=WeK zb^uM&L9cqot763&(Pi#LHs=q1^NwEC1=v~JI?*RHHqtt>kvPONFI{rm>OAu~2wiu= zzI|AZm`6F1%V8jG?uRYF1~dSTavtzb@M5u*rGa5P@Y~z3nOomJGLL^jNjrYag84|U z_`QDBmatN}?9nDZOAFU_A$%^Ye~d z@wusv9q2+W(C*}YS09l_g`O7h+kI1}f9??nef@Ic>5vDC#di0WLQ!c-{b7%ZWB7mYbBVeZhEGY zoAPRd+iG4cvZ%m_`7>QCz<0N4-7o+6xBqLDnA&!vffP-`9sSXwa>=vQGq2!)WSj~^ zZ_>QD)wn8?nvBbP`_v>;)yNJuMk6<$+uy2|-mc#vFZcY6rs-cNQSfrM-P?F@AAm{x zZo_Q%#O`yg$8mEzN$xQEKC-+Ytr(%plwJ{&YzYMB;*t#GF}YW`&+f*7ClZGJciGF= z`yzLl{OwoG-+rJ#cb_bqfn{p*MdaIWzg0^ny8pLvMBhcrK?F zw!#6q=`Qo{*YCg5Jjt;kByZ{_nU}1Kk6hLx%gI;p!~S6^kdBbrWBglx6yW4O35gUU=@-jUXAIvMt9j>=8BFQKMS=*Cge*ZawmY^& z>J%-@7m0xS=ZJ73p8Sq}8gNaCGGpA%i8?}OJp(cXk3ztNa~z%g||VK#s}pTE>+7*6`Y_V3US`ctgFQ0Zx` znc(MBu*h8}$6V%t(Y|U2FfRr3Cz!8(FSKowkAwdI8Jawf!GHpD+4YXSqjN#V1k}QG z-a*Jk3zhsZ5XIIw@+=ii)D#~wi7LAZQ_hs@#LrsUWwGZ$;H%~ZMav!G2Cz2!9Sr>L ze?{=V_=(90)^~e$(2tR_A)>6Zl=u3~=~?~Y2FOLP<`FRSZx4 zyJ3%!xbqMycl~{NWGP?fCu800=%DuuFBwvk!A{o2P(6JGA-`S|noZt-Hrp>5o^U}^ zBKGJbxFt)X{GP;jYyZkYpW`32oX65nkCFE|m}?QAwI(5d`F(yy#CBcY^BH&fC|i`3 zWOMKnVSCwRh-Z{iPQ5>UogrVwkd6M#DU_WEJ*kA2eVd;ZWV4O^n7)YrDU=aKoc3+> z8dCbL{T{#USPs6h+VN*mPHnQr;(O^MKs_WD^`JF5irf+39rUwoovE7${x3iOGN{k} zFT6))$LRn((N3`3F7LXYSe-$nF>6LIcN>(ceT{>9wLC#vU$ytuAHF#q^dkk|-@0Ke zO$R+se&u#W-Sb{8*@3|-CV!O~2R%|u#55>ZmE^?80IIH>fNIrI@_Y0HK_4eW6mzqP z)Eba^rdCEKYf}al%5K8o=c}p8yWOt9_lWP$8pU=i0J&{G`(y<6+cD*6)7?S8#(xGI zYS-Uosqc2C4Bj~;y7yDO9i7j-$W$cpdJG)&r-c|Y3^-YOfA+b3L@~%i}%Plvl2L zm6wIB`6#AfzXtPZ9G3BqzlUyL%K=)nxAv)h(jpW6_7*3t4|)=Z7Y90i2rX&WuY;I~ zP1oT#W$tp4<8}=68^4D|ampx9HoD95cV8)298*9xCuV)-i%jT#`|W>38^Q);O{nP4 zO3?xNVb3_Mvoq46^fJK6A!!YRwFcI|o(Df(V{;cRUUTj`T|r;LljbH9@#;PD4YVV{ z*eIXqX4*Dm~mX_4vWEef$IrRWbRi zOgrd3LFXj3!;WiEp_dzv^xtzw57_n$Y-NpDT@JWI0CeJV4$PfWaLg6p4U1&45FAd& z-ku{MS3ALJux;mVB18}6>lIBt*$4fMYrjzFa+F<zAL){OZ?rb&YwuOtinA=*>QfHl&Wg zc!16~@c+xte{%|L!20Z8-os`N-|c&iyFKs;U1!&)-hYDj1lm2CSNbFV;Jmt{e;qUY z**80&cY8}Y(*Dbsj@MD|@|l+m9)IAV*N5?92%{F$J{?H|(e4;5fs`y;mvmV8>qN*! z?FAQEx@TjkIBd_BMmgxJO&L^}h;G8*SB}K^gle<9D4;(T5|#yuH%nPx04Z11ffv{Z z+31rZ`)5|~Oa&0?f*^!18%>ufoxwIwxkd^bSEr-Dw)mGis*&vzZQfNpgE9XWzPTg4 z!>Ruacz78yWQTaoPx&aCw&(_uUghi;ayF8Z$uO&Iy?udqdr{N;+`1wULwrT@pUDNL zxeWXsB=xSB^+IHT7pmp9Xhp%WqfqbnPxcFfDF}Jv*|BYA~0B+yVp#4FU(D(cu zgcV_@N(qMyG3+R_4z~3~Wk-3-w}v*04RJ?bKS3)vpU9@>=6L0${r1+K`lb4zTvDF> zwfbS*a?tnnJ7opN+Sunh)!ZLHfZfI`Tz#(fen-E@4xphkI87hw>7eg8+3eUK-S0@> zH#VTM{(S>$IdX>lq?f!ZgCBTwzaI3Ivzy|-Mb80fz!e6Qi#m&58`T7cNUsZGm5)XgvK6EWl4XdTP2W$|8i@|?#; zGwxjg^sXP}+$1`>OpH(3xJO^;!2NHWCYk!y^ef+BgVYb^+()qc+mZc?yC!!mS5Dou z)NAeYg6ln!kM5&NE7040?U=kZ?{ff|JS^kiTOH)Uy50UbR1b*{fT zMtiWCDf*muKzV#01CXxsX#;x_I&nzs_d|0x5ke~d0hE=En+IkJ7uxObeN4#G-M+#+ z!r0gR!7P>6T$mTlD_tNq`h5DB{T1@jv8(^p1}*>k(PI80dk)G|RIXLMjJ(r)J~J!RQE5 zlY!0V;yBD%CH5!-UEy0_+R|L&2>ZgMNr8H#-$j45KYd__YCPq$|h=FI2p)bmw7#Zc}(cO0rj37Po@a!`}emI^Pb{mw3|(B(2JHq zhBE&;-DS}Ix!h@QzlQ%R$Nw!?S^ehrH(#Xa7uAI1jrm|3Q=*r7+W7YCe~%?l6EKGo z`xH6kqZ%7|9`wGWC-zJ}>=|3fc11|4&}2N8+5cboWx90%6gTthz94&QV)T6eVvl7a zFS;??yW0T~zZ$Jt$tuUzNoPVMzrIJ``xorMrjcVqtUo&kc_kJ4noO&n!WjFzUmHF}y{vLfE zAV~HUui+q7A`FAYT4W&}{%=Lk9*q!t11%Vblu#bEV zg{;Sa9{E*E;54YtrglZ}QUx1xp&5NJDckq^fbP^k>CQ)o^i@p6aYqq)HAAM}YHzL6 z&mkAp?&q!yF7c$l-M)b2MLr>!{P|ISfioqqK=-UKV1@DN-n+c+hSum7J{O`aWYa=0 zeX5pttM|y$M%c40Z`AptH;acr&F`?5KS8?soIJ`t=uJ=mt?ao(xgW4ukAM0>l2ylL z!1^08N9sI^+|iL+Z%^X~TLPlhHwGe>TpKa}@S$~5oR>IH2GD`fJisJrkc72)*#fMZ|9$==}O%9Q4_qh@FF;bN}Z!q`t>N@jVWE+615e z)|$nv#_tY!q56djt?*XkL=Y~8m9$~Za>W}G{p*bxKUz~|(Z3?v(;nRmYNu^=$X4-_ zKp))S(chuRq?@{X%zioJ1^bA_X1c!`85d{=n1j}PpGe%Hua6V<`LpyLDcqZ4p7Wgh z6<+7{vj2MM70qz+SD7#W@LxFSbD2bSPXZ2daug{Yw}m?8S?szZa&X9ba-d@OJ$SG* zQrXCXVh9li-MU2|@>#G4q1#QtyrW-b#85us4)n5QBDI75G^smn)dyGkNmJf+R{NBR zkAuiE(7Fuzyf#{02qdED-nwh&9`kb>T-NLXOMeff5p4tk)2;sF(p=1TPJ_e*p0-_N-m@AM@xf^%wa^@Ep@U zuKOc)o^5rVtA5mH*DrCoG=JydjNRr(+xAM{-=jYPs;2JbBirTs1xx2S*VCv|8-q4f zuQGAa|389_gpww$lh6ZM3?zL`vD_DV9rCI}&(EC3BK2H{mWhgK%9aiR_UzpJDHl`N z@23?lUqd15{C{K7+d@al*G0(=*`t4Edrr7c&W^e0R=ED83(&RyspGZ^(3_pMsQ|{u z=z6P-b6u1@M$H(|`J3BB@_)w8YP)0iyF&+zU|C#cnJRHM8>_wG)rF{$DlHz{!Dcog z1?JJN(yXod9-qrIru+;*mf%nNDc=+GoP$0O%qTmyELRLF3;3a~JYtEv$vo)eV1(}E zn0pzxPSPDP$LOyShYou9yz4yeI2N}MtYzAe5f1W<7fk=QCBA$`|NW|i9#(F8k;CEo zf~N)gv79KxI>eKo;P51o_vd}k>k+MjfCKQMN4p)p9{mvQ535xNGe%2xjlTcU@85ol zdOp5~XS%T0Pss2*{vfltujtYGv}HOu``%ml*J1Gqq+0pC!SntXF}!eX{oRi0Tqx0> zS0ipOzk_g#RJ+D+-9G|*+}$>%JgY*4vU!V4l#^F+USx9WUE4p5Cg5`xPPsbhJsFt{ zmL6J(8O-j4Nf-L#N;4xF@I*%+&3@4LMr5f>rzO)G?3ujt`$12#U68gcNp`%WH$pPv z?fNT%UhUZj)OZ?bK`~w-TFS@&qx~d#tmfig5%u8`-pW_|<`^w~wZ(dgJz^4NvpMpL zX~+qq9CL&Z9eX@3_5&wchxuKOvLniaB3LIm$-s<0$Z{ZvbN)y^<$^@cw4V0kb-ayY zOkHq!q7{6%7hA+f@67lz8}+U~WmKld8DV?S6rbm;9!W1K8{qdi3BP<<@92GCOTR8e z7{8*CpdrTr|I<&u1+5+Qd}af==yuW4Od)$v#ei6|4h3CvKv0wqLzc;698`5jA2c8M z*ojZXCxhP_|cRqde-BYwS)jpddNj?5;9j z{_*er*Wj@^U`U(L6Utu$gh=l^==tkexj7M6YebeRwzOnggF`1bf0bh)ZT>TrL}Wa5 zdv(yCpjc_c^al2Ur!Ltu#JcleXfmt)U_|H57|m-k%Oa-S>r6C{HL(r?C-8zrOROL%n$UZ(`Rc&uL9P?Ql>&?R3&7 zH@g2k4O?!1E-UZlDVKSqUwJg24Uum0U~Kbtna8Ei9pz8I>#rwTcTf94&t~LD-I_Z* zx>tQ7HsIvj4^VHgHg!QZ6qh3!$)H#nhdwGtZHt#-n zyyBnxO@Nc@BnLyX&~_cy7rCN+`aOCMdQIGz_#E_`(;Zhfgh*OVl>`N+L>bqw4*F3J zI5*I@9RPokkHUV?yR#BeoFB$J!5!-S3LR(ncs&uSaKhl(#%?PF+WUh-$lU7fx$pR9 z5N_w*-n;s~M_5Xu5~;mMmb|D=OVO_x|7yGAuHOx2X@acD?(N7ZqIjh%2g6ptrMx2p zb!BH&M1B}-eRSWG z^abiVz?Jm2hjQv2eve-BKhn)%;<$I<3$9}}M4!3h3)>;afmLLE;y&oV5p#NxJ>u~} zpWnEMa{n-%@92{s>1Y3SI$qLtYe&r8@A*fC)JMn@uXDhMEr&+vD{hSsuV46k@Xcmu zR!PWMl5P6R*Q4td@*$hFS9R0LGt2&BoZfTLpAm+#Gd~M-pY@*(dfJ%xq}A3PZZ9}{ ziShn<>UR0};?@4XV~;7u8e6)e%zU6^?ZO>2J4zGTHUTAfDB1HJJubYEnvG_!Yn}$Z)4HB< zq75X=`Vr;DJ_3;%IqhwFYYtqFo~R2U$FaxrRL@D*{F|d3Vl2eYOZf@uLg~~MyZ;@j z-D9e9xm{r1kV$2aZ<~Ypy4i}N@+i0*n0KwtS7^+{>xb5e8Cuby?J+(9iMOWfoW#Y0 z>&g$lX+?eN+j=A)+LZ4OdL4{hqy)VVdidU0I6R@bE;ye+Ctg)Kz;R1%=7|_Uf7npl z741;9AN2evN&YZV#4@fs*%uAk=meU29L4X(>S1zs%UJcv2}y2Ysrx>?0m1f3XBplz%E6V^DReC(KsRbCiv3jIDW zPnfc6S%}#4gBa0&FPdF?)Fo6NHZwaYEjY#2aniS+D2)LizuL-QehbWY z-j~5rkB-m7u?D~#JW|j1?F#MK;4_C9vFvj% zKa7Q)s;BL$ljaknRnKt$_YKWH=pham$4gB4kK8h2{MIta`R;PJ5y`!u_5-2`mX(Me z{aKIXLl2w|dT3pSi$&LoksKB@#ca=O{2(8xKOue0{s6;oq;KDKkmeLja`}&(x4*H@ zA^#S!fS+SMW{kwkK_7QS^U=NHPn13A*z_K=Ac*;a#IUb6JB3c=^IH$yK$P?Um!IBp z{;d6i4PzhkRBX7L-$1dfbkVA=4KoVYaY?M^nv_diMCp>M<7{nGTQpn#1nKww$n_ob zm%N`3SaTcud;Ce+g7esY7JXfx(4Rh zW*uH^bhQie>Obr08S;g%HU(A-GY-$SJ0JT(SrPuzRQWF*%`0Ab50Z^Y8#R1;ri?^v z@pD}?RFibj2XY;h{Y2KQ+_1N!!@Mq&hoQ^R-Ir0Ol!sDM8d{raA64YM38Ks4m3gfX z`&bdw{33h!z+WZnP<9TjC(D}ee5bwDd(@{0Xko_e&JI{F5d)L_&F07>z42TBW3!ER zj3+E#a&JP`lvSU$M-G3XSMGAjWI1vtfqsiD;uOs}G`w@rb0MO`Fyk!QXj$rNMqc~o z9`>!$w=hC(zvNC>HQjT=7eY~A4Z(I1Ou1$WncrP1G#+hy2rHx zJ`ydw3Fb!?jgy#x?;UCXL8wX6m zQIY6%Lf@-G;K~vSfItX>P<9S=uh>ltln=ledC8B{(A?VI_s&d z$5yjNDpINeiu%+LWTWDaW=cCS4NP3F=&AtlpLS;4J6s~!QD4n>s$(5|-7?>2UO z-t@uF(-_kM>Z|0YPtTfIM0xPv2`e}9_LWV1E|9|GlvGw!ck zs6=__6gb$Sc_UcHh`fr9@7gzO-7wv8t$FwebMxSW64-+axW^Tz1bQqUH*%=ZE@p6c zIOuyyu`2tJcLM&c{$18}%bgHX;W}ScFP(v?>yN(7b}f1Q`}McKY7Z)i=a#N5P9FbD z9B%&|g>K(v=FCo?b!_k+yFTMUEwf~^fq#z+oxcV(E{yy>KHX8Wq`af|di@|$E!G#- zvmSOc^_U;}A6Um=t_zN-@^Chztaj4A_F+VTjNb|%pLf&|CrZJZ-lF<=As+}~#kVO2 z%1gd>Y+@5v6LCQt7oxWcq4Kc*&{;pX_xL;11u`5xyoBlb8oe0fqj>?wm{ksPKWjIO zJs!r2CsKW61~P!)rz(iC%@0=R!<7+(;I0G5^H+;~e4tZGw_EEO)4|`c4!|Pqd!w@-KhuztP>6Q>P_8+H6@Q?hbnA z{tOGqdL`9E{~J~`N2zCbr0Xc;V{PUaPhHe!86Wd7O?*8*x_>XyL>x5qL)I%cAM{xD zTQ4)_;;A~eih&?ZQq8NS&)`ae57Ooz^@+Aw%WFmDDGSm(S@Nh-JK00BPwYe&OWlPVn2RQb+XVP9FtfF1%_VZ83$wq#soZH`ty7K^ouCpE zD%wXXE*FC2!Zi*(T3XS4j7eSjg7B*^P)&L1hHM_{k=s^eSb*=GGw#ak3r}`+9RoQntU_K2C(C!&rgZPex{>i=%J9`>(l`j`n%>Af#d2cRV z-}Ih?jI_x(_4*xx8v*6(SuSY4qwhAI^N+vhjU~Zy2l<*0ogc5!7QOY+<(KlSgPuv0 z--E|yl8a9teT(>+U&QD>tNu>2+~wk(^cgURw|FbXOVavSk>}Xf_*4J-%X|+Tq-Z2X z6syyJFF$B9(_)RbeT#egT!+OYPl;w@_|IzH*%!Vse!clRAqRXw*`{oD8TI`uOphHA zH=oA7;l2j?$}eb7GUL)XURN1vNMtHjA17n~3`^e!d1&to;R{|L^#3JhN*E7c4n&yF zWp>s>p-KTq9hg@!jlYzU!G|z?b!g&Fv#Sit2=q?s9o5UA%L(?rg8sCGd|d5h7gj#e z6k8F@P^=Mz>TA`y^g9sZmqBh9Ewa}6n=BqPsM%+;UxZ%Yc|a2{^dpm{D2y@__0*~v z$9~Z7K0LAe1UGWNj6c&WKKj~hf*a-B*kG4k(*b+*TL{lC6P=tocF>nS*)}iB@&D`3 zzZAv%6{dCGQud)6CZ;UwMrF5q+y4g88GV%hM9X$pd4O{KUrYtfG5An$0=<4o2&C`X zr{=lrI8ML<`;Vjr>w;`csP{4JIVBEi_lyKvgo;~3t8F1X#vdG?1RoUIv}BOdX3ET=vmK59^pP~(*wRV?j%?eVOjzve{hG40rCu8$w& zAQbXQeqWxJ>5l%+f1t&F^4r_L_eFY%%|?&kic)1HDf5FW)?z`3ubjxf#SIG~C}J@6 z8Fu8zWkd4|S=;#%cbvU_qEEQq>95Ok-jDv}Wx5&23z6uT?3)lm1l^uG(nOIcr+(y? z?T0-$l}8Gi?)cQ7PL>6JbbJC9_#U$)r%s2zCqBn+%JGVQErXSp7<22O>pUOb&%<)h zpAY&t1oM0F9Q62-AN42gjxC-KtL047X0Jmxih0O?jsB+WI6n#uU1M{6&JzbZYhQ;D z*kV}vE?!e*mC+Agsa*iBAJ==!95DphQqYR}({K4<#fH$IURHlV_H7qiR~caY&j_g( zcl0CvBYywsmwan6+EWc?9S)7r=4x-r*e3f{zO(C#{lM<;bkKub^O5i0qn|R7*I3MC zgzojA-%&INd%Pl#$aAs4cmr-yOoe=Q=sPQGM`?Cop#j~Eoy)Td7W=A6Js z>H5x0WnQDb)*kjJ_VK;M*xl#*TXyWV-^ z`iw$W2hV))G`~Y~*+06Tfxb6)1Q**;hM)7z^r&3zOxh5OLQrL&NTNPvDyMI--{`Ac zB>tZK^5~wNHiz6#Z_z)Lxa&m^y5zDLb0^cjCO!fg3Y#;w8K2q*(u2r@pKFh#T0_jG zBzk{xd@WA;IabiuzXXl-Gfc7)gBEq9$7cjGNvK2<|KnGlcpOlD!e1CP9Cjl4?(^43 zF_~W8f zcm0=o4-db+KUEh-Oi38d6Z*Y$;pBTv>Oe08`h9%4q;wY>83c97m`BdkiK$+?{!+md1gN#ePn6ED&3UhpL&^%dcH>=MXYt(nMXhJ zHAN$RR#H7)zQi4U%roCvdcEfzJx`msV`Pry9lmW)3i-G|_?nOY*ZK2aF#q3v@rVR)Ogb!M4(Of zYs@J*=#poXifwA#(XToTw=4z^RP@-)<-#JHzr^rOf6pI4_Y;x)NBPkHsUHz>Q2UO){3bUiP0X-*k6u)CBSSXxui;adV3K6|v3vtGoM z47=>fd|M-ZaDZ$`*R`%4$ByJ;Yuh^vYu)L;7f)*oFS^fZbFhiy*>8=EwO6may-C-7 z&!0%XkMSvf^nc+envWv*YpDko^%n4#=TjC zv)VYtbdK{&KDy7x^-=R&ayj#OSr7UufP8;U8`W;#_2+}0#geZgw8?ypckOE=^TT-I zUk80dh*1|Uc%etx`bp2?m;9~y-BU-Of7YM5eV8^anJ${=edr|FnJ9>TB2ibGc_of_WqUhZ-3q_AG~ z1IAp5u(du_N8UR0cNQJrW-7JvLQU&~W}{ouLhavHh0h{EW?`DuJ}L z1Qz}KbkMueQzZiBj;Ly2-kpi621M$HZef`zi+=jUgeW5bq~>ppPxMaPJ8R+*$RI6rObZBoI>Xt^Z#PkD7v~oah0U4JQ-+02b|XD z1k6W)TkzOkkM8APEf%sIW@&4-9ZJ-pdkm8L+gr|njy`6~Pxv;vF@8e+0=KKu(g`uP z`5wJyutds8pCC!kI?U*33k@&;&^kTJ7rCHbf?w+%#O%*3O+K;bAFV0Q3ElpwqqrhH zL$dvQw4mEypz=NXiw|tduC}o=&_@0#{u3NSYDIYN))8AWa%wH{f*iL#4u@5+>wpst zjK_eH%M`tWcbOh{`$J!C7Fg^&+H_s$zFytY<3ux6dQ-FFYLMMYN17|{jB^bkr9{){ zs8zBtWn&}6N?RK{o({^nDK=Vy^5k6+F_h1*KmUbVmUmfXULN#yM{oZmq;a(c}8-wW(8C*OE$Ch{Iz@}g>*;qmYI%0W`(VS|v1 z_}j1a&pO5cQKbDne)uT^F$_pP=**AimxG?i_IcPxSxaEIj(x?FyeLYdzXE*crM9X8 z^iC$HM2Ceo;RmdJ=&{B6>cKHM9-on84N{KRyi8nG6K;RsKThCRCN|dv{It~82=zMX zs~XJyevXl}jFcB2^t(6J*Q>3dRf7%Ju3msAQAi;;24A2i>#O#hBrC4;sMpsc&i;cl z4tnW!8^o1|{L)5bc$LMxqrNe2OZVPa?D3}-uIs=U2*$9z#g-GTjR8jhue7?D*gZQ`G5!j!&<52{=%&boRUFPj=&c9QN7uYHzX*y-zw)#r{bFraylUoZq0pe1MEW1ufjGR#g^5C z-i8cIk;z_*CzAhqB2>+19rCgsIrFai1oVSG%eG(848@M*6IC?Nxfon9RKFHde44cS z5$o#v7&J5*WBC|?CaBR4#Zx)O8dLg+596H<`uF192mK-!J@^lQ|93e@>1Xo&pwEG$ zkV?@_^V2@Qm8)%o`RD$I&H-e8=9#7r`6%bpDpJIdYcTqkerG>K zDGvCrxj*VK@-mfO=JnV5qd(Ue--R5z!}!&lqJFwj>(GUC^j{vh=ww#5)UP>fqAE+% z9uoOc15k>r6G+mdkVHz^C(ze}K3NkI6-Igb)C}(M(*ptfR&#&fW6Hi4<7@zobG`MI zmXallBL?CLI{Za9z~{U8+jI9j+!@$Zfe_-w&KBTnOG7St@gM#!4*DqMKn0^u6bG8G zsT4AG&>M4;0?;RKl$-p15KeD`8YLMv75-a>xtY_cDUD8eCzz-?2w8JpXueXa*-kob ztp#GN{@1(N9mz`n@5d#E2w@)d6(bX{C~18*A|Wm*CK;cak4~)hW9hms`#sW*F86dt56aWP<-)4s8I{1&hCZhon4;OPkoD$eh!%Me^&WpQ4nWra z_B=s3{@a9jlfSgD$+0epO52R6ys}1nIM_>C(#3=3lJ;cwwH|Dy-X=6f(@!$*FYkT!^J9(m5;Hhw4k^2^^0S(}v&=~2uQ z?Xy6Enh$#WrMj%0qy|zQnm%#QI^}KGyWjd>C}V*s-=+Kf1Ju%25FtSSY3w6ttev7-Lr@BV(0VjxZj zJ)lHYP3q0iq!T)C&jWPS*0AY8mq?Q2dXCTiKu z*PvW3NxLsC;5OY`DNSqrsQMvb7hAcH3R4bcnCT zd~H9Q9nqobZG4RLX3zFlKeL}-O>|_HCZroNW(R2usuF4XN@@+fUJJn}$&s@b3~0j! zeK`jpVICNAFY?XAMC)H-&3H@9V}AT#RF5<6^8kjP_jK>afjd5KM z(`pAYS51M~7}In6BZfQ04NrZ@?v{UscnP-pCSRqWL8gsCO`A~u68)1unzLc_@quTg zSxv129P^%o@coZ}{|}=NGA|G|bCxwlV4 ze~*s#RjJ2oZ;>D-GVTM(sXY3{15|EL-wKePdi2#D;S-4EYuH!Z<=2kO<{U5QfPM!t z;JnA^F-&3)CSpu|XnT;V>rO>6K(RkQEUo?x8{|nXORi)b`j<8LUFIs^FEZJZoMb1g z)89G~ZMTQ7r0gaN(^BBzhR4r7=-2pHKszN48uA_$bwdZ`X3tgpvtd>hOgkza`>#*9 z^rdu~hni3Fz>H0ia+q;5|B8@(eXs$ty;b&@u+{lO*=-(euX#M*I=f>UMfn#^)4Z?wvDBiR<(33J0t^r8{4vf^XjAe0b^O3({88Q$AXhk7eS?GkL^tOA-myn~uIsZek#Za( zB{fiS$-d^8`r4WSsvH!hlvyzE)+$(d_~SDsWpVb4+JwKywnxf2rfMN<#XOeHt(=%; zY3f3?+sJ;fc)+|)1B9mOGa2fqK;`)s3-%yYTZlRHsOzuqoq>Fxuhw_okv!`uzR!Pyg_bqpn~-C&0Om7f!g-|DXV4s4(NEvT<|NG|N<$`7g1 zvwr4TWD48LA9>JsnBceq*T5^BXul`pGV&^0J?p(3$p<|QGJh}xpLw{Gwu2snshtGt zLq6ppi|_*?ig=aIM0&`Q=7fzfUsr=!+tnK!&#Gm(4_iM6df9;H@DAuwM-H1)v$}?6(p-VV*l0NjK82)>^_VW3lCs*0cuWZ$i^yOzh z2hxFaq_xiY>vghk3qW;7j~`q)tv@e?ywFlH^X?xr+|fg^bxdWs@+ICV_d_1!FT_Q@ z%NZVj(>f2>Z|9%NckqMxJLp2QDoqx<*@NjrhrE+x?qlC`m$CPj7YJ2dpz+f$^U0R{ zPuui$`b$dKU0%!RcF=2Fi2=KR%t2qx{RD0f`XaqDn{zEcj9rAnsD^>j4_Ti0^3VVH zPoCrHNF5R)hdUnz=<^3Xpu_L4X!qcbSZ2vA&&gz5>p4~Ppm&Q8IM2dD@FIRMbszGc ze9NTH3|`j6=U+_3A35mr(P`vMd$T#JPkQ4gsK+GDuLt$^Q+8c#ae3^13B~P$p82ug z(IcLB_LP%4t*go2_{3fMD?nL`Xwok5{2WMy%qP`e-7%uuXMGo_vpt#Uv1HtRa{&9oM$=4Mzr0w z+Z-2a?>gwqE_txkzh$o<^ieEo=*jNl_QP=h%g8=fuMrU+e%UXrDBMTT{`@^A7C|BV z00fB=Atj|miu==-fBC0>9%|(JRCIJ^Nn8iS(gyr46J;wW*7CTJxI+$m|T*nnKgbQ z#>J+#^gaG@n6>o_ET=rY=N-4;Hmx#~FHByRSU*WIN;>0;vUAfDDx;@g_S|d&RLQFU zcDfMpS0$yQOum#`|I;V-<~HWqsB-#m3FtE#t4znVF6{hQc$808wt~V%mN`M2c>4`r zf4W4wNzkpgm-B$4PCg)=;j=CT1#Hgs%X}PjG!WKPO&ax@Ov;`2M~f0jyr_NPpzjzHCSN;fq^S(T zSzmHr;y~ij+$tSii$Bx<_fOO)mr5wNRX!ytlDo0FmHJdvk|dWx?)S^s%o0Txmp*dI zZAu|zQ(zTxq>F$Q{2nGvHQmyvmOEs3Kp3;?{o9pE_ z{pPv-(m-}R(yF`u(XED3`WlVPx9e_Lqozo}%Bx<-vcv90+wt2S%RW1-F3sSotNF5d z%5B*GAh5~H_uu2!MRwXXXAKD_i=_;u<-!V?->QOeaQ5c$@pDqDD)%>075CP^p+ugO z{l}(N538TpGLg6w?APrZz& zM>$cM^Xrn}Xw1G7cOAm(zo+D`)LT-ZqJQ|`6KOh&+JDT)8$Y(YOTb<};$59IuZ8;C zL#cDPGVq|UlyvWgj8Q}FoJ!%vtP<1)Dc&S*8T-*|8L&}t#Hz+luj1on$u76$k^#}j zUFKW&(2TaUG2r~};}$&5rC)mPuP2hy;ivGj^)%CGX)c$ubjM_3nNd2lx$p1V=q^OY0NuU%p-aqzmncvA)X2i zzdd{FzA~P2v+Xk0?Hbu#>=SS|yO4I-9vkuL)pw^y9Vdj+f2HYj3KIe#q}$mHd!12t z;U5=1?A(wcB`jb}K8mEO0;X=DA`Qt0;$jx`A7ib8-t;39H+N~{CSjQ7!!FY@v0cdW zU5T+RbeHHayz1wL;0K8}leex(s4k~1n+8}~Oxq_1nK`GK{;;-!Uj{qUhE!d(q)Gzc zZi{z5hSUWErqPjtcbT7KxUF4FKEdnnPZ%jue>^(cH*6eo>#CSjU>WM32L}QZt(NH_0w&)&Az9j z4}3Me39+~o%$&Wca`SFwOhL0dE_ddDWd#)ei9`FDNYv4d$}m{K>C#sHhfIY1oI1xd z9;vXyFPo3lc`l?NdqGTb?2Gqs9<65C#VOL&H?cZcOP}QWtb0U*y{|1YW`4YiYZ*>R zEUxg8xHq^@z^ocY!D5bLTae+D@>{@vCU(zSVJui4NQ& z7A^fk)y#EI_Awls>ixSF#xXtA;wC*!wT)fg<*UbzS*4xTjER|^nWQfsmL_#(y z?%4i}(pJLI@h|%vIZVvf8A;M!`s4ijPP;PFcXM88M@D;q?8dsr*VB1>>O5^X(!HH1 z3oBw>Ot$wKbm9U)+5ln_flkjpPCXJX>M@xs`Ndjd&pL@dHSsz#LK5#{ZziG$Fp7{H zF3Sh?3>%1s`vo1Rr0#-0Jgzyl>{R90a_;hF$z|~sbdaYuNELSVTJEa`GGE&A*I(zo zad0h6|8}ZX=Z1*c<4nW1vj!P)O~ElI@WCw#(PyByo$($EdPTZlPVahe`~u<*t(#yh zyoHPgEL&!d6VfnPFyi0eH2n+H7N3;9r(PThmhB%$YxP-N7&D)rP3PF^^?uN+)FEi> zH5fk~IVS9!^uXC~Pvd$*!_O6giIcYe!rq)?fajI#Uyt!{K;h`N!EckLaqL{{8$uIS&qlr%wfHr9_GRX$%)^F8#7mI+Ys9ei?lW-6SBdrefj6oZ z_8v;{ylBnkY1kK;+j;}r27<(0Q{rjeYxOVNOt%NhTtOI7ViLxH#?{n)q(-z0hRKo1Z8%eL+6@@h>ckI;@(jmsy zZpm?`6_dgbCxc5f&3e-6*1q7yVN6?t=wkr`fsJI#R+e}AYMuPSIDMv2lqs~0q|1lc zyHoF`o$r{NLR}~lT*~0{;t8a0-mWG`>(c> z%24-7;Zf9YpX^33*vA}0$K z?hSOL9QE~h*U$dEYw;{R1PFGCy5(io>zM57zm!#A^C~-CqpQG5+WY=c%!Per_0za0 z3-ufScs`x!yv-OL>{|a67{uA6d~~lb=DwRROb+w04PzQYBN`srzs^u4Yo0R#8*{2& zh<@9x-Sl@2qVPRyStk8ThR4RsKDv2)aWSa({Yzi0q{_lseBN}k^I$o$6n?YY`UMoV z^#Zk)*rIhp#o_%pI&@6b7@|n+eP>xanv0?2;SI$)6*$Ws=3-wiSh?>fQ}3go(bRRnSP&EZ z2AJ^Xk@=BoD@cQSL8t|rKlb z*JSUk#=!{QJvFE0-NTg6NQ4NZd0D8Y1hKO|7e6(t!0CgFeZ%iR z71t)X(rFg-RIcwmnVHXzT<;uTSy%w)&ZLy-dff)zD>K*~2sb1NB$Bh)G!wj`!`4!s z#D?Ic$zuJz%-@`*FeP`FXs#Mn&||&$+DBD$x#bPXCvrNP%DITZhYFYzjoQ2;?+lxs z`E3XO92z%Vjc6t2!;_wEjgSgh@yQ7tr*=^hA(V1?3Ig=Vpob1nAGOMY4k^Ex?E9GU z-iPRTYzc(+|EK#qg@4uSmvy>4!B#F5sl{$M1VSaep(*_IxKvuA?{x7&lIdU96XV%< zUD?^dIZnr$$03a`fT`6cw(zG;lt;Fw^$=^1RB4gPHReGL`4fAdh`W&Rjqk z>)9FN9v6_)1vKrKb16m9(x5;p2DHd89Q(BZgs`h)#;#Y6%d54cITa9jYOKchhB#{3 z^MfkN&(f!G1y9bEd=E%qXj{&+qCm5UKTqW&i%}9V?mda;xJE*r>xVCOoUzeRK1`l` z=xMxOyW41LP#GE*d-)zJX9?j^6Fl>Bv%ZRICaqc!Y1D!JBms-mR*itpQn)@f{rl(i zuZ*#Wf=)L2FI75H*8M9mV8f78GC|D*E7Y{&8qPFLzMPZfGg9YZlWPLromnEm3Upm|I{G!)MANPg(;T3mO z$IhhA#6_Q9SO)?Pi@Ubh0&73Y%`YnlfD9*y!nk(Z$G0X6E$C=|`7eBU&=y&vi(7lv z6CBy+rgis{k<rqfRu%YuC$J0a@jczEr|Llzp-xX-VZf>R0WPRI#Ca@CE1; zE&9pHi1(kF9%imX0K~(kJhRSY*}(|gk=*4wYjd22Yt zvhu!POaJdgytYWqJ28Hiw|O1R+PCP=DmJ#`5aMpb9CD8dtv-{N$?haY*rQrfDS=iY zuuk?)Ef=LO`?qjL_WX&XDnF{!|I^hGoc{gM(ukgOs_V3bZv>32=K1GdE=}5mKHeQX*s@~cf@eI@q6pflMb&n* zrD=+V+&~8Tr?_nK9*XhlP@#1Apb;cgkdEk?bE@)o(fTW8@9zj19c4xucZleqmKRQfwItdS% z$I3$0ZH07=KA%^29(9%*dZ#IVa64N6 zN36}SaNSMB%LLG-#Pf_Rp_BBC3l|Xk3$o4Y*OCm}lC;*(27Jw@OQWCqxN)A_(;}+{ zE}8k&dWC?RBM<640yz*?PYJE%dUQy`_Z(7zg|_md=yQ<=r+?L6?uS>XzpM;mKfynnUia|T)J~qCs8aIG8vqPV*9WiU^{I}&z6le) z#>(_{-gE08XfzL>Z@e0rG7~;sTiv!hTDwIHKda1|6kbS*%vuqU+Bq)!zp@|%J)rxJ zlMB0kLva&GkXTmc8Ujt%aKrIlU3UeshMt64!MD}(z%B}ev!l6ds}ot|j(Jq(pL6ez z+mc!tr)YKiOG@>rbafv8I89HlcWN`-K(CcL8T=6Ql+$9YbD`|w{IF!M!GDci{!TQH z{nJw!DZk8CC}K^rH)}buK2BRsz1hPyzvN#X{kgP;vLe+r)=kZt&7brRxtrxwdMLp_ zE$XPiI*Pg0T%|O!n&Knu3bNihsO8`AORFlqmvO|s}=vA(bkZ<6;?);yJnZkepur53lRsj z+lkjyiOypvheJPv25Um*CTsx+N{Zy>21W+GAqNezfay3=xf58CxnZzF@!U@%0*x8f z4WC7}`z#Y%vtPh)H?V)QU)&#zX~}+?ReV&%;v@R(!=+m1!OMVVV_GQ;I*bW&b#>wX zjd46GAm5I*YpQ)c4CY3 zfRXj>E;S!)^H_)ZEJBDJ+z_<4Z!)Q$R=KU_L<4d86Ln6Q7bbeFyL(u@s!a#O*AJ5dIYb*|Z!*Oqql z7gG5?qLP+3@2m6wi|$CXY4G^#M!40Dp~QfRl!-D&`XpuNxPQJnSv1^Q$T|@yii;D7 zUY+>OQ6ZPsGyokg{?=>VcOr39uE~Jpgg`{p((gBo;0bsf2CSc) zkUk&Tta*icCMjDU+4>rMXY+Hjd`H%#gLIv!vp-qVx%QMX2qver2@h<|%z7356nw+HmVH@t{ zFeI9-F6VzOY9r5SmrwA-6M0%(PU1qZ?}jhU1T(`|YRtR*0jb;re7&f9-2Ut&s%_kG zEq8ZGC*<7B*V3(wD+HUzv%~$i*;LRYd!%75o4^WJN=vYPx>=~?+-yKoD z@)2*TSgo+D@D(2Pu%;1S@k!zBy_t92ougE*pwt2E|fv})+AM%I=*Z$~WU?DuMh>tzM`g)msv%3oWZ#g6gZ=Asb*3CB(EkZW;F8qYb`#7|`L2&YpJS8COqTFu#o3Sp z52!;#PTUKz17Yz>yJs5ld<@jbPeB*Ja5T5My+tBwEf4a?XcwJ%g25M{kbt?&gcORD zsPj&DLQbsuYQm?zUP&yUg5{OC>kIW_52|(n4M;IvCP*2<@P>2PAn^S!O^nll;C-uw zM&07ImxqMHfJRHidW{PHGGepw)-C)9ux6!ET@F0AqjKJ#`+MuUc~MQIY$#!YH&yO8 zgPnw`&|?Q1Uc5cYm>*(vgiE$zE$<$*ukz1(-j#uV)z3+6=^$_s??<;X$YfH>>t?RN z;y+~M#0}Dkp_1!6;+M(q>K20c|M6&F;pxb_mI!Zc<$saXnGaV;pKOI%qKlF8d^9W! zcXcgxYi_b>TvA;Zcdg^uMK8sc_`HRvwf!xVA#j9tibm5>bXi=kILzP)fYbZNgJn9q z?aH%Ac1$mSA+NT4z&66db|6SNv-?}N=2@T?6j}G;DTh zEy_o*XY%IPpV8F92>5;z2}@4;6@G04yKl?#Fv`?$Gm+=2Wi~G2eZHi>vHMa!zje z&7o80&)HjFn-BnE@{@8mTlNxRL$SzrG)5vg@vZ2y-Dz2>+0oUPNq1sDJda2J)S|2= zYyY|fs=N^HOLeMQn?nC*)zeGMk$`7MLs(#eg;g8^>w?4;;HCKVzr!!c9F~RDdBlr)sy?G=kH#&y z1n}+pBEFh#-X+WXsF(+*u!rfJJZsROCQ4GneDoBN4Gg|vcdj4MU=nGhwG>kNy{47S zcsN$HxvHeMicu!tr6jN`w~n(;6B6noys(%nb0|1W0z6AB$=wt!+T8o9oS=Wv$=6cLCsS5ILsj%CWOp$| z-+=vchoI-MDFRxM>;~i3a=>fA`h2VFA9TVn2Y=Q{wmi}J-B{_<1Pd7&VlQw!L^HOt z-Nx<@k$exrIj3=Ex=Z1M17_og9M1PwX?wS4oa8eHD6kN#CCwxBbL}dv2fR2qqq_AH z7YM+!St<1QXAwl4Vzj)^A+?r>Hj9bPRvQ*azMtOb2gaIsRITqOQ6~4~v6mt{=2=#u zo5H!gN1Ygp-(h7?YWEM|<|e5+`e(+v?*dLP9Z|##{rp0~9wUf1yLJsvF!d?x@|=rG z+->=j52e0u4p@2&78~=I~VRAUfl@YlB1J)r>t3v4wu^+S{96anj2 zNi3YYaB^Hhsqnp7jY z^pBFaq(kC8KUQ*VD+)H85__9{pUysoc(i4R3>~(oXo>S4WmK56?ZUtnlN51gWC-%* z3XPV>yIK=P3EX}Q2U63+OB#}96L~xns|Gq=zws0Qi>6qVcW^wk0o`3iNZsH&AGmNY z-p-i#sC({E^5QiY2;D9N8+wA&~o>)|20(#y&%wtjXuocX~u-_g;Y|YVqN0+BM`{RdamY$TR9#Pw~ zpm%p|dYZTv&iRJ)@B#rGPxs_XJRzpG=_tNhrNT1iS-he<$UqIbd4j95K^?8p*wdYhC2@Y9`TxFBKx2k zB0L@5g~0Ea9yw+<;b#&H|MWm?&Ap?RBB;pXBz5kYU1(Hp*fH0XpLNKMe{Ov%l9>ni zL^=Z)d8*)frf}6VQhDTWkOj~qMf9o6v?DTM{svkdk4{*sR!JEF2)9Ouc}2qtBg5>MYuLCX3?Rs6n>ODz;O!Y~WD zM!HP--XOM>y02OS#5$|IdbaG7N$`(nK1EU+6Csm7TGoi5p>B!>UxsKy*5{wb*S69_ zQ{=ib3%ceT@8DMtia|+S=Zrb^)X-FOMH>)#&BJ(4QApOqqV{O%=lZAWS94D7!w9e+ zTOUFR9pT@-l9}Vz3S$Bsrsgwo*mon~Fu^ZPv6546h%YW1HFSywp4sr43T@`AfiX+q zbyTM#KN}QE*u4@mN1%1Js#AMwgwx*a^+{D*V{3Lx&Xk*$fw#oZ)(tbdJkhUk3WFnL zL#ZXa4~?D78-}4u>Z#U^lDdDTp88zm$>+j05nHH7d@+b}+JHFk+Mkjab9R3K3As;@ zvzXVT!0QIjoGiLkSx}f@#IVyJZk?~LdYe0|BFPA#M%iWeBRNFm=}%AxGQRX{V^=lw zx9I9SIY~kN-u$zZW-tdGXYfQ{YAd@l_g~L zzu%2ZH`$WIuTGngS5K>SIorh8icRMF96}_ud6MS8oeh>~pBXSXoyhBWi}duk8?k+Y zN{2i;>Y{sVcH3c1afsK_En8;~ur6ppBa>lE&C1{XzCi%!4MnD=&6DO-$s|C3s;$v} zSxC;yJ_>Ij%J94~9(?{;&GG+w3Ph|QC4;~J0G$X?e`VDgYzkJY2G^5ItpANvdn10C zMt#N(7v>c_-m8-Mrz6;X2y_f@eRD;X(O~gRX~m>6eYt?WjN$Yn6W$wt7C@H?f2aNX z;_GZ>W`}k|wFc0?+_1svrIa1)+0yY&I37?jV1z#gVHR+l7`Y*zq4t_Pmo$xc6QjDn z{3pFW^TQIUO5K2Tt?4Yio*8^d`bN$zCixZoejL`Vg;7oM}ry1tkHReXUTy*90Sa z$F2$Q9NULC>EW7$bA-*NbboEC68wUkjZqv@#7a6c@akh~WVJc%kG^54Y+*jj8PS$A z^9xv|&SJ$(k;!tc7V27RQ!NXXf-KgHiq7P18dDMFa~o?&lz(8;BmjdVGNof^?VVSA zXsenRc7CSnmRTK<4`i8OIy1ecPx?w|^-do-^7gW}q_b_Xf(F}nDFW+n$m=%SR+J8? z4K*qHgG?{4j`RI-Hg-WdJO+s41TJzsdGLb+n*>7W_%0Y#lm*!7wOr>73Ksv%YbWFt zIs^JUjn3@@JyuVIOHCe=fAY6&N^rw?Ga|80ash}>Z06inAfj{?$Vsg2VW=eYKQj4W zFF)BvO|=vIZOJUlaP25gZ5rfAx5N-ChqO5MI=x25V16GLVH?}({RO~|-%Jvupyqjd z%|pAz=!$IO&jq)O^=^3dJOB8a<9JG>)=WUHrSy+MxOgho?C_s14jq7s}CrF88L$_&}IEzcG$ zkDq>4fA=rWk7ePdcOt2t|JFCv>J=+9zFM=lQtnS*2u1%v#sis)Q|dpht=LIjyT!foL>|(V}5^}3hTm!il3?$OX`ik@>ebsqR6CcgbU5%+-cREB@E;Q*+E{kon ztunxX#FUF>bZPgX9Z2(MmWIBGNt9msEglO$F)=7%K)V+8N89Mj-=wBID)@+g1B|B| ziW(6god6A-pX>a@!pp(lGxg?i5;?m9O&DI#v-vVH(iY>}dR@0-l_T$t!L$uisbbb> z8b7?!_6FtDfGm^&JxPVorE1x7siaRSMZBkNc8j@+a>G zuZ60OxIRmbfWF(KS#6<4By;PR>{s@#iZ(2B^Unv&mO)z^^be0gGA!#7Kd-0cy0C_L zMZn)*cGie;sPgq3Wid%x#%h4>rc%5o3buX1^ofwOm!3H5cy@lOp25;byJx%PZ^Od|_{PIJ{HvA6MiXC!skS*$S zgJ)C~n1tznup{5pkx#yfUrLLVYwJ6zU9Vf5EYK-md@90b8uU@T|C{goPJ?skCPgu( z)%rTt*{V_ul*>dvG5kH%?pHGTxIYICERERNJ_7m5a@nej)Om$FI%_>Z1fyDcoVfFF zv`giY*UQ#)m;V+Pr7*MgSQE@!yuD1*&BAxupCmihn(bXp+Ru}7GjpCf&j^7@bPAll z#{JPZn7>~Y-*3-=2#dQ6km9z`&|&;Qbj|{+Fv|#c-C!1>yL1L7%sU@OVZj0rg>vYL zVNFwt6^L{wVaV>VB1Dg{6Web<%FRR5=R3A@HjMxO2j$O6h`5ZRsrFutK2hU_W>odc zw0&z;bJFX7Hk$<%2e|b;H|7RYh}+g|1;;{VzDUu+hYv^FGR_wx4 z?*f7mfHUs+TOUYOEFv8Au4)w7=@6Dd)%pzdICb(-eu)JX!|RXio%UV!D~4z>QMk)N zlQTp&9?U#0bZqiI$T!||;~OU`lEr0U+%0c1rdCawhmxRHi^nP-=^`9PrP;2)*qQVW zcrx(wsNZNAfvLa|aagGzGToE_k%lrh&(~r{As^1?GWyVaja&+?KiK+3E%M#awWbyW z5}yhW*xS9Y3c%)rS0(qlO8O!Z*7Z2TpS(hqM*4jTTr(tW+LK(_x&(v{3!+EoR}$jb zbkC={uaP$UL7Vvjn7w-X+@$-Q0(EraE}G}hBl9?LZoIkZiT3`^Na4SJU+11_QEyP1 z2~c3l2A8|_V|dun0CtFZrN(ez;<5fBCX(b6U-o+#2 z<0khf4M>#kRU-oa{6xf`yGuSSqi~8LTzzk^>4^;bFKXiH&A8Si1uBEYvHa&LWpgsT zw5a)<)CudAHKcaYdMWV~C0Wrdw7PET2PYsZNn~pTu2&Bt&6~_8^*1r!wrM2h;kb&t zmNXa=U%l(h5FF+PPFfA^N?hfYZ8gBwkOFPCV8ty9^+k!Ld;sS=M1ngq-<*Z?VR zR|SFOZ$)fC(tZu$3#}AlM&V=gH&7I)H^Fnj5S=~@4;;of$AR;bvhmNmb(U8$<9k zi5lNL@Av%$-}}Sa=j`h`*Dhu773001~5*zYW2LTu~& zxOE2m!U-_ZQUlaYu>8b!@ZDerFaV(O4e6}|0k#kH)3y!(04VzYeQ*YSKRN>dOk6q| zFtZT5!$M%exXbdOFWI9!;#!SriuQFYRDGa;LIGp8Rik%^fCRoQz6CGRrr1VwGw zViQB89@(Uc9HaT1^|Ev&LnNgp&u@zEhsO$Tx(lRsy2q~~REqXb?aj&_{P}#e{};0u zh)D#g5pyE`tHvZtcl)hCYrU0iqgUh7_Gx!N392pOj;~FpM*B4g49MMW5K1Z(35v5a zon=a7728JnG=?|wI-a6jb1k8=YQ#FE@yI~>Fw2AB#trEucE`)(Rj!~^22K>W&~rp= zImX0RHZRse2BZ4tfoFa`IU!W|6k55UQJ1QZIA&96s^L4 z5sQ|GU~&YXb)e{yIN{y)HRV<^5EGmsDs{86o3)shw~lg1hqd&vC@_BGR(PXP{|k1X zoC5_2@!fkzcsVQAUZvxg$?v3n;OCv_hmMR?!&=sT@|p+T{l$;UHRh|#&HLiW=c%+< zO7`X|%P8b`Ia-gqZmRAsmW>XZCzbamRqoBgE)E_M5D@Gw+DDqJ+}}1YH8{lBw0gch zDZq_&6i0G)4(jWaQt}XMnBKc65)4W<@}umis~eU)Xjm-*8)1&Y3G+Rq?anSPm76IF zhK0{Z1grcv2dW;GX;$gJ71}Q1BPv*g6OhgYe~+lh60@yJOoFU`c71C_-#D4f4}Qo2 zJEQOD2_d0mc#PK%dT9>*s_aRzFVbk)&%|sb_TU6XZ9bYMYToQRZZ@7LGv5Alv;F%k z)9>M@$s^+9Xk3zV@1v*`+aIF%_`Hstiegm22)s-7_qSAyvu<&t%y)Zf@5TxRzkR7 z*m>R~<{dD67mf!DdDrLr)nc|^7#xDpFvR(GzHb$yRO+(l=o`mz)GNq4W0iy@sn&;7tPK8-W`@~jibz8<0N?i~qzZV55Fy#I< zX76i?Zo3a=uCn5tXIBCn)+45qil?uaJ_l4>X^!SQ$|W{l&a(@^G@|C(L^^TKg9L2a z@b!9L-Cb9fy-{8Yr#9GIsIAVE_Hf*#%%K&9J|vsnavPvN0c(SXK->wg^04wPg+e^>usM&-C+i z7bjYidOM|7zjd_^NSwIYv&MGR6r122;;REIpRDZxU{eS0xz$nk{VVR1I4 zS}F%T$SMLgwWy_cx;>sO(ODX>m8QjndrPTu`?O03(EL3Ja=@1UTOFuow9AX+U|l$I zB!;yPWqziYj&YBklS>{fxWfBk8K=2}qS?Ip_cJT)x zPR!z%WISmuj=y)4r2m#AK)%nJ$L4^5GGYt7w(``u-B0I+A|?1#{y;8)_}IkYg9-OE z98<>F(p*Bxa_n0C&d(R^^L@ck9kOYhP=v0&9SXxH-x$5om7@&xM-L z`&HGy26M+-7ww)|W-n-xl|uX}2d?xQmo=s`NPs1;7H}Qau76~&jXa#*-o9A&m79?j z>0w7_4H3XVR14Y=L;>){;gSsLy5|SeGEH(Pez##Ti$v`YRS3;4I2b!UvgS6O!=mm< zWgG>o=L@SGS?|1)*O_?YQafpfDMO83<4!cZ#NDh59**vrMXHBOt?dbYzr7OGFO!tj zh}e+Fp_kE{?_{23nXi&9nRbd_G@oc35GUg|zC3l6aUM!F!KhE?PzEhnyZ_@dUT53! zn#~F{hS7wB7TCiMATklxFJxRsXq;~Q9yrGE8_w}yr=ruCv}jzOc@m5Xw3Zxw*`#r| zS6%Wbh9QKnfb8S3Hi2pJ+qs5c&2`C`EKRlf!&;lx-x`Og z8P5&WKQ_Vz#IDlyFlNTHZZ#aCo=LQ+vt4ia@}F&DuDWd7dvj_oZd3)H$ynE zhRwmn3$?TLH7hL&ar%I%<2!6xkp!#OM#;t{m=Kk=G(DZ4?urOI)zNeRt$6#w3fg`6 z3mX!7GSAxjs;$Mu#p}(Ot!oyE$Qahl`t5x94Dy^;4+*3gT1ea1MiCPLx?+-SqUI$$ zpxOY@VV-}(SscrV6oL#n)~O$&0Te!GyVHBv zbS3#t58l1m;LtaB+`TXNXR6$6u%F)EOGHlelNs4(>*&pjzAs~)d{cF{3X`EDdx&R< zVc%|Y>ptegBnZr01G(ho{?DL#wZx$wPf%kwU=tgtxXEhQy0IMUktL>39~KKzMjO1?w2Us9f%% z>dCA_Nxl=VwY7Ek%g<6sVm%_3Zx@F{$$Bal&CIIWlqa*ILzGR^!s+)5E)-c{e69pK zQJWm2Bf*Xgq&uOWROU(N?eEb@(fiG(SCsLt1TRK9j=qeZYl5!(vk9hG116Q++?_WE zlBH~ht#G36X7s2;ekQ>2*R%V2Cq0-tM3cig7qeGdwfU{!-$d`cf;2~BGq_t4yI!mX z$2gUW^t3fA(5jp^WO9I9-gCisIw6M@=4=1lmgBPwpqkM#E8(^F{&e08H@9U>m&#e1@0v&=mMqrgHgBop8PY70An4scBk*$VCw}u! z8DF_TZGgC=Uw>4}HQyV{PHT zMjbe_)wLY3tgAK6QeL21Ftfi@SnYG;PdVpQF9gBYc~_9NAtB@Ia{TBYfiHQ9wc>?+LyA%10v2%4i}Z3s)=||nfm7WJN5;Sp9j>4& zJ!Fno)&ZfP-&ER+In#C~Bc+Lw1o!_95cL>){^EJtM*mtO?L@A45q?n#)SOlmhOOx# z9lyV5cIYD<^a>opKVe1vh9_LUwJaFDNqvTVBFdjoD&mmEar@lLW|D)wsp3wiz*VW< z4~)rRRqf#;WkmmVAS`{$(a>6SL?LIls*>7HLQ4% zs;pU-rR|S9by)(rXr~uTxlj+`f6mge^i`&41xN5}l^B&)$U1;r!FV(AM+tMU z5bW|tLyP^#-d;7MY)NR+I7I~|)LbH@rl;-NqoO21^*MT;pQL23gB7=hLYVf@m}rmi zu(Uw9zSAV|=gdP)`04mIvr>K6byXWCi8hH&bjG!1(@L`7EMQc${bLHNLZ0vW+8R(! zudhKD^y+~~b<6iH^<|yVC(jeEXz(H_w@}6JglWC5 zBagl9bvE1w1LaxhSYBg%*wb}31&O?uS|HC`4^&N+X(T#e?XNYYy26e=52E#>WD`TR zpkf{56=uHyeQ}mj;cRk0Na_*+8=&T1T z_XN=L?N4K0@`g=g1fw-?z-q{5a$9RWK(ytsN3zbj7t(}*q|~07 zwBWKUhBQo@@KJbz9+_;#{l}6u1luyvw89o4uNJ6u$)}8%^Kj~XMwoi>vtoED#ROu0 z9LvUFwfZ3+cVQ z`5H&b?n5Kj;eh4b7VGZC*rk2#Z1=@{G0%4C&_0NCYX7@wi6Ce-U6zTw`u$@#*kn{< zN@WF?m^|y9NX&^oJjxDn4TE+$r99vh9K@-ZZTGczQs=8vfX!-ftH?e4=9gZ1AW_ka zJ;ZDF7I5GGi+-Bs!wuI{D7Kbqn|e z{%h6&=aAkD%et*W+&Uf$HP%kSBqWO8expUFivz9Dg75Ji$V;y}I~A)nZKCx+uM}z) zv1>5>ps#b|K!X<2tfsFShG_f4De44#d(zg2ykU|K#>syRF3(Iy&80);JHbks941dE z3LZR8N=&Rt6vNBrfV(rqPR}R?Jf8Avx&#rDK9#bV(cv5DE`*wDWr{(Y8vUBn4D}6umCCJ z>8&I&1c4DRvz1H5V4XKd9cbHDE*fkRKt=cIk=K)hHfeGuX#qBAcVpg)SNjZpyVk5O z#$t~yUMq@-$CELdbUOBvR8JDR6$K|@!1Ts&KYrN3(QE~!PoTku8aE98N5ijt^*0pW z{#X$Yh+WLVGu$i_xO~K;3R*!%`)&osxLA=jL=VlZ5v* z{e0Ryswd5LAN;Uz?$$N)HTNP0Za6m@zn{YY*#Nly$MenPTjPkywXZSF1wu2Uc%@CB zoMJN6Z>ZeKLgMf=+*ucS{bDboRFdL%{h|PqP!{TYeZ>``Ph9D00&LxbQ7|0uzPNIu z(%#9#<@RHXs~fBHKusdt0z&G7iexdY6B?x_oq?sn$E%~xw@yUHS|53k#jJD-{X?(k zLjP=!=O3q~DhcP}&VJ;QTEWfzX(+=Ucx#~leJURc1NN%HL+Iy%si-njrgT6s z1rfiu=x)dMgcn%hsaQRpg7zvWSEUFmye#fa6y8vtS`!(Lx7-A5{L6%P_txXt+Z2+- zqZ2t`HP+4B714M^r4`BZ9wH?f9KCA|J$jC|PVEUTzTdlw19m28r#-ycl*2EFu1j;G}Z+<_*?mDx@Tc}LuOJlGMW!R z3q3#)eBx{l|uT2T?wq&wS(9m-VLjRzJQtvLtNGrXiU*0cn$pcMf6xB%{udmjh zoxd<}39|{Ui)+6|9e15|MFLZc=9}G&EcyB36X0<8Emp?*G5S71XNp4OJR9ZHXMkq4 zVBxugmA45!o;GRsvE9`Euu%J$`GKHaOhF#@Y$&5tF#H00_ge3-V4NRjIp8LNHn9I! z`Fv0y0Gb3E&W19Biln%%CB$iWCX4R-kyPA!dI*=FNP`Wq29ItRRxSILDJ>{i7Xq7))f!G(bleUkKI%tF`S|*nOTTO!C1L0oKrl&Bemv zq~@lcDhQ~HpTwimeVGh<2?xxA8x63cxxCB2cJ&Vmy0HIn<2K@9b>YCGDU~MDrvY7F57`88v;*QO;0Dzj3w!$(K~S@4EFV`^KUJYGrwNyY3cdD!JxrqYaJs>S02s6D zLLN;kYn?l+yE0Y8aJQFQs1LsXyQn%v%IPhtOI&*b=T kuTK6ycP}Tb<$v*jTW1lmBr`PFDipvF2`My6rN60%E{@G=+-*=1)WOO~OOvebv{ zOZFu@Z;6mC;+1deJLmi7JLfy+-sj$Pp8NYfzvnK0+&D8616CkEkdBUy^@br5Lq~T` zhBnV+W}x99=8+9;0C*eP_|eg^wg2wty1dHo($QUQexm6p2|^AXSfbCKZc}He}64GXo`EXOYAsCgmGZjrw{~Y05-p z6(W&%;C`U39WPk;dU5&1ofW_ErJqnTpzsmBBY}^l4~y-jwKhfWOa<=DIx0DuOTtZE zS32K+6s2jr+C6m(i*4cz#uCP;01j)cg;J*+ zMCLj7fh*F_w~5!fFvk)aSv?|&X%k0YBMc7$ffE$Uv(+CSh?d^C%ek}Q3VX1~F|}JU zCemUf2j81PFp1KTjchK(!v@8XV}ukJ!2Lk8*UDF3vwJC*i#jw7ts>hz5J&-Tp{inx z<@z`o$L#EXXS&EV;5MvR9GOn=IiFE!rhCg5%FlW%S>vM*>lR1)6MT3wdN<;5YtELS z(pFzAjAqb+pg;`e3YT-&mlX+2=W2CwLm_CH!QAJ&t;?Wq47IEhzqg2rauUEI@zgcF z*5=N?MGkSSZHE>xnwcYlxqZ7%!+HZwM&D90)EY(KmIsOtM?966N!ppy$Cn#e3Cqxj2<>b#eMLx@{QyvpIJs|Rp6V6}b`u(G;`2emCHiPe>@D_4I> z`j<+ZbtuGRNV*I#45M|QaF3vTxgN+S0xEEek0{RpEdq-x^Qtg&c$3XEW=`vwoE4ne z$s+jdOpJjh1L$7zB{!Rr_I8k5XJ55OWzC*u)vKUR7@)W+d%;y`mx#8|R2 zw7@=)3P=gXhJ$R}z0YAu6#Vsy8(Pp;=CL4Fl+MvTf*l_xqJxr)oLEdta_}HX*D$bQ z5-9v;H!&upJNt4UU8<`bywt=rKv2&Tt-pz&I@hf3+dhLF3vR@z81$m&vFQ2~vCmyH zeunG#WZXU#hLj$LRK8!bO(^f#<8LS;M@vc|XKy~V^Z$ByPeAq+TMV>gmErJ-HN_-j z?xLTLC458Fl49}n2}sBYc`0_gc<^7e&I>H6M2omoYy#86(8p#X1Zh>N{f$N!f zB60Wu-39;e;AJVC8XGmT)T8@EKKRluxohb}jB73RLrS=VRy=R!@939z?n0)~fkosE zAJkNoh?{qiRy?HuajwUh8K)**jBXuNey}Jqae3%{bKylVWPZ-Qu3?ictIwr*Adw3# zu(uXrBY#P^!69|*Jf9w{_7s*0T}0W`mUtfl%+a=0L$A3)HE%h5Do1i;c>HUrFMk1c z`weSQ%y5n`q9Y{8ge2=|7uXR<0z!5SeR#}=xN&&(O?5~#B5_BDeNdmnx}L2|_JYW= z@(i>F$)}g%a#_<6hCFWP7p>=Rwwh&C51LqVIFa0~daU*yRUVoufn<7-;v!|u)tvWp zOZvOhWOW^<$SGk?vR?IUlw)C~+mC(Fx&z(7`DJHB#a$B^RS0U>PX}$zMgm=nzBdr$ zd)@E%6Ai<$>?HDDb(zr4ef0NV; zPXH;us0DG(1tq-fqC=cGkG^CVjv9eP_y+H9fj*x)8C1|%XYkFdfTgA@VePUv!?8ng zvX9P|;hp-a?C$2XZQu3w9U&LyvcHKB@Jl6^v47$WP5Ob~=KYT$%xe)w1EvLrJJETc;1|B3=_6e+U>uxudG8#TyRNE~KEP3-CPMW> zu_tb5{!ayXZoZ+WTS-T+E)NaBgeOuLW4Lsn;vJz4tua7s+{OgZ;=O&r&18_Is@1r# z(1(ZoLC=;QavxvYh-!j#nv%qEkAEmI2RVP_2?`@8_*kz8d!mkN5_jH~YE`+QvRcCf zASPsog^<*;GvAv6B@_|f5)Z=ySIy?DuPdqaeSe8NrzkDsy*xSChH{a!ER#tot59Em> zGpt|@geXY?jhuYs`T`W;;|o-%l*|$D=ge!{&gM-@JhQ5KE)wk;E01g=cC_{HUipHe|;950RH#Lfu(Q4ZgjbzRmy{HuC&&i0UsE$};Ff$<|Jv$!>4PXlqEmorTO$ zeK%G$|J-0{v`v4B|Kje|?f^z%cCG$k+;C?Y<}DGVu!b5g{j6kweO6rcfx zqO1}H-2qeBc#@aAGE||QzvA8{Ha5TVW0lIb^(nB`JLUGLNueshh>oXHEeoSV-a5Ks zQWaWr;YwQ`l}iOOP-ZbGKVCWjL7LhZO;K5HD-PAMvURwU!c;qX2gFeg2hlc$FQ2B- z++I2MJlgB$W@&cr8_o1Kh$}=v^%56;%+k- z>a38j&(GTja{K61Vehm``Shikt5F{T6@ym>_t7WHrhKgV{8d{)ee zGqP8nl#le1U#0xTGmZ)TS{q}h9KWOdvD^Ri3!%x1L}?QeiQOWKJ|h>Dt_i)+lAQ~J zUVM(9pZC(9{0lud^)C8Y;63dm7;8(@Kv}0~L7wm}!|`da1{PB$U~VBOBV7)9>Eyc0 z$PH$5<%YQO?NasXm9#L~YuoEUh=vYyUGf$puOe7N4T|8mN=%9`&z2DS+PG)k=4Ul( zcH|4Dr1-*+rz!iK2v|{Zuqo0wtVzh)_pk)#-dgpJDOgh0DJ?wB89_oSn{=TpP6h6} z2$sHN;K1JzGbIHz?&rO0xiUut0qz-XHCeq=6V_RWCtBs0)wIJIdcYL*2AfBLE;9fq z=O{=BT(A--G!^b2ed2na{!G_kD>RD z8I^|5G@e1>f<0gdk^7ApjiC10z7$Ya_+Bk))w=6ZV_$t1BfN0IoeqfJCGz%|;Nk=y zHvRAp;-mz6p5=pnvM$BGT#ldU49+P>{`_`}3usDP)*bv~^aQZ8SSU3wZH*w|iwMX0 zYbGj6Qy@RQ(6tY~{1y5?^M_mDI9mOw^Ts3>lgHYaLE_p#7xy-4%Th7Nrs^)()c0e^ z4qJWNz(0%Iw|<$Q5yrnzBCN+FB0&!k{STXF0mDtgWs_@-q_X%KG-T4|KI3-dw@t72#7`p7IUK(+Q$e>A=ND$YjTb8j&>lW;O z!Km2%h#ZSVdKbWO)V>#+$>?DNLZHFsliYNXEN8l64q=93*qN)rH{=>#N{fA}k38odtgTQb#^5D*U7H-|+v{&whW(1L&tucB4qJ(mp?QH&7J0P5uB}KkfPZ6H{=Rg63 z<%Pd}tBXZ^H-i4phj)9=os3DRQ1svi0m+0Z^}lJi5kt#olv zvT-{KwZ9=jO%{K5wU2dxmkTe(Yy=L6+q-U<_oQ)0dM1l~J9X@|Q z*=my2|1+)Q|95+r)C7Jk&eo>v#;f}PF%x!aK;jYEnCPkM{XpGBbkc*Aqz+{l7o=7h z8Zuye607o<3=IuP2VvW!F4dThLR=;gb8PXV(Mf9zo+hk_FcF=SLT&8J`m=|wa#z_( zri>bxm2|88J|7`0d@x8vLj}xA5CQYjn?+*MvSxn?t?=@$aY{=`mB%FnwyUeF_Z1j? zS5^V1J$`omAU7*XdQj$+)}j(W`hpM#HYTuYkEzpW0Be`qw+}j#UX$eQxl;KD#dm37N?=dYKjlw4=w!XNp9kJFYQSTDVwV(F ziKKbt7wfVq64m^JhYCy-K38JLoVeStBxhxMwZ|YvCFN3fp8EyQ`@GB@UmC(&o$~E4 zt>d?XN}R-7&AZl@+GF=qDqu}gu@6|^(X}Zkv4QCPyfQu`Bcj7S@drkBaB%Q`qvC$L z2ThOkiv$9LV0NH97LDj!1fRhOo&Ht~wb~kyxNK|x_BQg??Z)CH3QA0KEmoV1GGv$Y>BgbTYH9+425;sj4G9=&j~1sLiMl zQ#&Ygv0*rTSlCEOsf#>Bz^K~c$>DcloUz5dsiSI{Cfwo~rZAoXljrbHDHx>hX0)1v z4(mw%G#2nH?(BpePr7{(prcx!6P~(3^rn^uKu8i!QI^uQ3o&Qqga)vaF2sm|XZP$Z z3fuPk%=N!ri>cJDz@HC><#*XJ3@)H>@-xEuS`(9?G{OI|r zr95TF*dOGMjFb!z!cLV+fKA&xg&&_zTd3X7OTpDY9@!hJEBWTelY=_`sm zMJW#BC~H#fHwGJ}C0QPyKDgZ}C0Dg+Lk3od`#-KrY3Vagvz8A2Fw0ijR?Re)3AI1b zgfSA0_YFs~cw-j*TAa2tcI^=x3opEnX&%#VkQ7_6mBRu)T(oqcxiJpw$9KchR=@cx z^RD)}{f<0Ee4rxInS^qxg}t(>Q|MiD>tW|14+V>pDq}vK8g6m& zRtitNAgI^n}fZN7Ww$KuR+0+)cL_P00;00uX&Wg{)9X z$WW#@Jucfaa9?fIRI4;a^z*lW3U2=P=MDt&i0jS;TQBFcd0cHyYIX&KwX{U;x-v0g zT29~HT@v~o0_cOhWmDV+!qJ31K0~w}8o>xv9(dPO;bI5Vz79h9HnT?um7x(!Y5dMi zTb|aC)uEvBr-mImnyhorU-^J5r2qxj(C@X2Iz@WJtZA%3fl#DU=-hrgGF291Maw{O z;uHtG7=oIODtPLHvmn8)adHqR7QwP(!3>!$U`c#TkS5AI~qUrf()&2Pn&$TY~(Ro%-d9p}H$$OpmlbS9<n{!C^h6jLN%N1%MSMQ(f zQ3EC;>+dnli~K3yKx~PW&+@$2?&rraN{h8PSy>D*c@UieK-i8xiEc8%J>FS<(AvHd zq_};hc4gKlLZc`<>Pn~}ocB{l^Pb*mDGGUsY+BF&dA_)%rCg(-apR$5teCd7Tqa1Q zX4Us!scth=&Z#Q?x|?qQ0dsYIEgS>GYlB+_fcI%^Sy{pgmF?~vQKtA$ot)#zdqL5! za$dS)fe!Hdu6R44Q6y&-ZU6i;r zo~9(Q0g)$mP1Z?lXk8kf#tTj^VPyV*hT)pQ1X%*bJ=hVhFwx&aP3wMJb6pGkwpc@|*o{E|qns%g>8YXKjr`J|L zp!G7|>YP%BT||tMWAXVbGb|j@rB$bXBmqoXv zmg}tQB)W~|Yg2p+vd$ZmiQlHysOQG#yy@$IDREe?pF>FLhhCW2Q_u6{t`e}u<$h^@ zoXHY|qyyIot@rf}=}$aZsF9-LBR~@!B5j)J;*e+5Y)1@~VYE1Yc+uNQ4wCcGKsPrp zU0>Hr-k@L7_IKB|VCYuiK};u*C7@9ulY`FjsqLz7yOZI-eB>ItXVY%Lu0(hR2Ib!R zEaL?hV|)8~3JMNa{e%$lL1Y3PP!^BgpT_XiktFN|>rymYRK7(?Tzw!|v_axeQiNo$mk~Cw;WAo+|%mo|T5$4qOxulh3*hBi3v*%B|)+6?Jnr_M$qfYP1 z1XD%>8O)Vhj>I@jVx+q%_aWHzT--dX{ga!-;t|~Weuc(xeg)L{&^VI7dcWK1R)GH=OS_+cNS}W>4rn2=4+zaHq_Q8Ca%mB6pK6@L2wJ!`(bLvT5aom z(oZ<#?)o|dl9}R>IsZV5)SgrlmH02!i46>${Dk7)aUJ{dJLtX=REHBu8rzF~_k-DR zs*Q)DOw#U`jeteU3C>J4=Y$`!ZTV`MbH`gH{23f@aT*t5^~Q6R;_`mB2l0v2Rb|fZ zgUSkuUnVCpO$Zvxmy zz2WGyxhIN}UJwYS+i$8=75GCY#UZFf0D3~A8;=};ObhCleX3la6UMAevb|!C7pBSZ zrAC*bpQBry_&oNfhnoe5%W3aHoSP-GLfE zh0$d7QeZo*T&f#EvwopEEP9aay;{I=LGSkGyB}c}Y@y)hzwq$428!Qz>YpB0T`(3) z!TIXabA8*%4Raf4s<9|eK%viO_?oU>n{n*?+$1(sXs5&4pVagccx*Uc#TI*v0^h|w zaIdRq=rT@F$TXMjwv;0yN)&lR=S%F#)xG+nTH99(UGUspPO-zWCn0BwNHrc-!o>?g zG)L@3rqC+i^u!wbt96GFr)&Cp5HIaTLQ1@ohDTz9l&X}a(W-FK-hR32!%%p#@xmaV z$q$U0XcdPY4G#AF7cEH4%&hZ+@+ZGhZ8p{rDHfQSwSNT;P;g~+V8%RcuSR*^DS+)5 zm7!RM)y7jGaIbZ-8olcSy%^L#57>1VPM46;l;V%)-5uSCl)LK^Ackd`pp6zV$tHDD2d!%sg*()dgupYb>WqSC<41gqWSVE3xe`xy zU%TeqVFfAq*X`poHE~EEgoI)=Tk`#`bG^vsTxEjWNfkINk@hz+?^wol_QGZ5uMg&s>GgvE2{UK&2M* z08RPE<|x5m&K6p2Kk45&wK?AihGQKXfJh_DX|feciN@3hvxwc|`vk$sKjPP9c zL*TVV%`9#=#Euq&fie{|DY;r3B()kfDF5k`U<5NCvFd`w=(+tdcxQ6rZDKRN}cl$kV95fzZpwJm$4d?&DI)D$VQfUrSZWdYw;koQ1oU5+H{TlTatt! zG}8jgt+0{-&Wg-lY(l6n13$JT%4Y9L;s(QL79h7GCRWHY*jR9jOnbI~Y$AIbACuml zkQ*c7%7No}mSQ&l6@u2pd^pVM#F?cDK#FryXLKS~IXv$RxYT+jO8XYabLPsfEu&Q? zz;4V`U*}<_(P*QqbZK9NE=F7Nus)rqHt!$jp`jwi*{pudSIWxkP8(L{1(H)BiNIqDavC&WU zq-^!Ry2TZ&q&(%g4$6ew{66uVKM7$a9~S$Pd9OgRqhP}yliMEh!lqzy8JNgzBD_VX zdea}#w28K(BBiCh#-r4&=eR$CwNS|pokIBws(KEPXY!ZKMAkRXq5OsEzX0O>v21q| zQV)s<*A%A(kOH{<@OrSAP}yiJGF%b%3KesHCk|2U9LTss6J1rR>MMV@3m^5pzD8#8 zj@`ZTS4abHU(;Pi!6&Ze+eXTesVfzbMTv?{LCs0JvAm>dSA3!(~t zeX8x44vQr<`jkFK{j=i6$`dEOW->U~`<2z@fq{sVqpU?Rr88o3zveCc{296Aq!3lJ zg#Sa7oKUP4201rO+MiIVMl0ZKfVks4;Uyr3pt@%wiPQyr%XqxfotkXjpYB~31>2NE?WL?76f1L zZ*P5!%678SLwi!Us1g|zQ?ZPM$p8+V?O_*^OHw#n%puUexAweI#1lGs#LN?%Ck8Ui~czZr4#TB9`0z$`MRxHb?7 zQS)fjOS;2PGn5n&*igZMEzP9ar7PW5$G&NHTi37Bb^-)&Tc=z7)Y{jY9NYH<3N zb$-H^ho>N#6;J05>`w$U3aFkW2p%u6{K#%k0yUknaHp6Ds{95_3x+BmWTUAr8t8+$ z*kvRCdS#&!^4gST=yL)UAPwlX)`+Sy)dI7T!;*E8#tW4jOLe&i02TTjK6L0U1qI;! zehuoM>esgp!a-gXvyxL^)%T5f*-!lXb*wR^28E4Tih-~47Ux zt-cp`Miv4 zLY$(w~IJL;eu{7{m)X4oI86-7w>WjZKe_8UbGhD-9Ifus#yYsn={qZNdp_{dIw77 zsx{cVaYQcVthlisa|`Kjpnd&+trmqU52->KU=V-+h{#4%AiG2&9#(u9xq1fkW;{6r z*fBpNJ1TjBgoBQppKlCuBNB-9FU}r}Fgse9VWQxH-U`W@sWoCj^6REO)j<41Hsq(Y zz(y&z{x=^|Jq?**f$VyN}zV>5HnLkUXdnNo)OtYz!`L#XEqF(pZJt3M(E-*9 z#r`v;AD;Dms!3GqyaCf(e=`vb@l`dGmvf(2AoiTlWb?e70U{N@k3M((ipQ>EnLFva zGR1{?(vBy-Vn4`jo=Z-ua{W8V|&o5PD04+2%2coYwzRbcRrvzF&TSFYsAyhLiy6wxTxY6C!_Jx3ohq6_=*+&YxUxk2 zOIVpzyuRn%T)y+hIGpvLC%NZcwpcAnR%d`?&!2qjsN6O5YLx1+TV^%&(5)Chc$D0! z?eN|{HVp@|^Y&Av%>$BT*+xw}j`Eb=IkinC*5A&~%tMFiQ<17nCa5Hpn|>(kEorFG zLa(g2e?g7;fl6Al&b`tK*7x|Wa3q~gJmahQ2}wy2v)h-#v4Gb4&~0NI&0jerx+DT` zmh-zXOOZS84bN#l{a80;@Z62LZ?1>cZ(-*Q$|1w^>z&?->mtzmCvQ__G4EKVHIwyo$2or)=CIE;w!kaCWYM;7 z8?1ARvfn0)XQ$^62SZQA&L=y__$SSm!w*7Rt$$hD!ke^aET@uola~Aat5Q+9jRw3T z?Tk@Q6SFxj?#-)1@J7gh9#V&h%eLdjER;*K?j_jqqsAgyvgRA_1txR6e{ANYhsE(W%;c@PuvhXx z+OAE5?EP&t`o~BqxB}wFiBROZ>Q$x{7!Hk?ip`%1|ChtQn8Vx zbCn`LSqBtSZG+Uw0NiawVaqAAEYpC|0yqPYX2w%!Hps?!mhB5kQ{$pWs7c(#OL>GC z!cmnHi-5YsO332BYfJ~QG+!quN2tb9BaBDLG)P8yZVDylf6#0+2lU#riu!q~m+q;2 zMZ!dCz)fFOlJ#j9n3ZK;jelcPGgWIHH3uUKrcV+yRYhTHdP_)bRbpIGh7%H$f8eAR z^&_N=)n3ii5ggAk{FqXonu8S2Pf}FEq_vC&-8F$VS3)d`c!!J!*2ZsFxY?c$yV{s{yJKCJjfu4 zXk&^S2B2m%(?;wCyj zYlw6=Y_6XwF-}CKhAcDGk5)***eTJU*RD?*X$!sZHszHf_(Zl_z z7D>g>0X=+cL+P5vOa-ANy6zV@M9!L?BEjM3q$60a1VMUjL8IT98G>l|F;sy72NrpH;yqM?ow!->n$&hp-=x4)9%FWbe~ z68*N@c|S+nbj>4lzU7G=6s8f{g$!FYx)Yk2NJY$v_@l|aR=5P^uM=>z)L@*%RvWs& zs0*F?RS=iI6rFbQR>H;weJYoYGhDZ~J?{X7%MJ7HknHz24SEd1&F}mCenQ--$ZLgb2id6I_Jzq@a4jr1%!mKd4!I zl+3TzNoKH}J@?0QM#hr7)I7S!K^rgGxNc-x+f-72JPOx)ii`PFjIyw{0?eh_bAPxR z?vg(R<(DVaJSA~R72-^*Uw{=~anGQ0U5Wt{!EqTT8dfp{?H$TRxfH>S{+?D6lNK%m zUy4{8g1*IiKD)%n4DM!oa!^={fL-u*vNf}x5G=P%z72~%f&K3kMB}>we_(BEPAD6K z3t3tSV_HA;byr6}i}xcuR*&)uNUJO`c)`QxdCJ_(ERLxgQ5aN@Nk55`uf>fLF4G$M zXnVMGf3raoEsIlF_qBs{f2jsfLxzQ9xO2X}Vt`5=Nl%VN>$TVQ6qIb39ubrnJ~Ju{ z_PA=A^xTx;Cqnr1Ql0}>j{bA=54~>XhNE)Q6|s^jOe@1@?U$N(IaULd!$Eq!11+CE zGHSWTz2x-PUypKcJS=`|Gh1N6dBa^vdhhEIvCsLRRvm{F>i~pr13+dM^5wp$jngh& zHB>0IM~z9}k4NX{2gw-S0NO=_z42+0h0O^AWbM!%GxAgN(i~Lt$b!83F}T#oCQB_f ztIb<;w2fNRw@Xh_ zHNm&-enu$;`M$*pmUQ!GhF;r`bd-N-!%iEJPwQbItfCE8%NR_?t#NclGk7?Mu;^$k znbg~W#KLS<=W^BNAf)a7I{zBZHu31~PGHZ5y1W(|rz+!~&qq@ecP*8@$<^XGqw)QU z-mNV_>3bdZ$zCLv&<>Q8Ij!m~`mAFLIe=Zz#=-Clc`)t(mfE03>*s3Ar_eBKg`X+3$*3Ombd}Ud3(&vFd6R%smVZ)>k^EJSt zpG$cf0h`cjrhNBDT!R{R9X3xnHPM874}0HpS=IF-Dk<)rr1L^0m@Yd0KhT9wj#6b! zP)%k(T(thpT2omheS2bZ3G&KMPL!PO^V5aF+{BcDuRr z-`oZd)uJQEb`6?5)@ng|BZ-OvVOPkVhTS;PY-rXy<2p8Ao`(gP?7=)0cN5*MUv07e z>&LeLx;CbPfzA3NL7~5WLqG(!tDoNuNL#bH zo8Xb;BKClw9lWiUt+cW!ZHGKOQD&t+5rZr-PqqIirR0#H)MiD> z-C-djhCb-UR~4Eyv@FMxg>^*`63vsnqFE00n!i0SoW@#5^q6}b1|7+l{}doYt@~>| z{pVx&#MR`4@)8>NN(6(Vq29PeNy}X$;*e)lg3zyKpb;>p#aVl z<=L1O$nl^?;Vlz-KRpZ_ldR<{#R>5zk~#{UT0GuHY+M@M(CK3e_{ z5S$Xh$#+z|e|?{StsE~Zsv(i{|c82JyUa+ zC`im!@y%n_jW;Y1C+zI)1s8xO7%pUSXf!+{KUha_7??tzue%q@|6m%#T9H36f6Mh- zm0I&kspr*?ILP5b-9QZit(3ngx8^aC&kDSy#BSDip$>g4sSoXU)|EMxwIo&lHwspZ z=&PTz(~n5s(`j&GpEWl6CVJdN_slSf6K~L5%+N7=D6Kqua`IcVP9Rt{Bfh>YJZHU2c|1-tV#MqPor)y~B3j)-2JyfA+ zc$DLZ`)K^osAv{Q;6GFIz?@IdkkBuOY3_h_w@!X$w03V5CqH~}J78bSH$M&UwA6*>8lHhXW^$<;o#BPyg6-(PmJ0^HyM_e|r> zp{;9%F(n_$wA6{6`7y4i^4eDI#HqEY4we$tYW?FWp}Sm}G>!+$Ol`Huf7~ow-$l zkRWfWp4FA&vL*zcfuG!bAftkhSg89uVdd0J#!fhv%{O{7wR|hD^&+xjWu!^DLNgzMJJgI1uXcu$I1e>KSe4r8-uN!FBj7kIb$^P$!5~jJ79}!^Bl;$w22BIg!YmMx zY_;0TajevDQ$x{c05uoFqw51PQP`(C_O|Rg);x!>+S*B28jHUZ=R^>>XA@^LnxPJo zcvk*rm-1`E&_TtU0 z!r`H$xG<>YZp72)dI&pGz5DMi7H-f1{q~4O-3?#!txy#$m8S;gAM8TdA*&BTJ0X}S z{lBr>n-QeGDdeOyYHKEspH)${Dn)f@bW7?N5oXtiVc1mlt!ukE`=|Pt*zTmG+!$%M zH>rJPDwHlw&hBotkqL=MwZ95YR5B>4#fM}lY6e~xac)*&*J~Xfq%Hjx{vKkP>Kk#k zI&r`lS-tz(YXWbxp4U5}`RxetlQ_A0L>0w%tjMbHQ0C>-f;fC+&FssMumNV}d;_n8 zJUcDOQd`BK9K4x#BEoZSldavv|4wVGVnv)zeHpRL^ft7~jdzY5Lr zT`ikSl{Yu~3$|~~eUeU#*hIwppyv&uHd54b%3UP7yPyk)s}c>2xZ@zk8iN`$O;`MT z;Fr1p-*T%&vPMfoxOr|?RAp$=cs5&=O+MC`v$~u_FD)t4N3b%C&?8Bw)g{6G>F@TK zONVO%@9_p9i`odw80iVGX9kluvmFdJZS(f0ud@55v52u%%}PloC!l?YP-A^toBd z$3PA>8>-fPJ;BUhaNsAWbwzv&zm!|2V*cx`toBT^o7=rC(ZJVEVCjOJ0$_%FJX2pE zx;IV-z8+FSL&>RFoPOhhg zsTB2bw@)Oe$=-UKr*jth9PN2UNwh3Ey;}H{R~lNe4!J$Q5fDufh&R-1j#5BPQSX`% znn@7m)#CceM(JwkG&TOmx=!$BBU38^01cO!SWz`z$;^IfF47kFZ`QY}d9 zr7(4{>{|MD*4L=G0m;c}!7c3v*wMx#4JS*9c{UBj2Xh*^pv7c&VvK)sm`597c5^0Y z>G3N*GUuXOuJ;*_5SGYK9u0iya1)FGiB422v~W#^8xtglCNb&z@^NsgT3bz15Dy76 z`H#No+Vant%%P(zJMoNLN1tg#gXys7aQf@+j!ah?(e1lB(e6@+l~#q3#VTy@L#L7k ze6|E(f32F^nMV#wb%i+U`hT5U6y<&N z(|*(XIRqillCpn$m^{&$UkHkmhO}$iYsH^Bg(#ZB;3sV&G~z_W5Avr@_7r5W!)fym z1)}0__I45uru+y8F8Mrv_$lyQ-K1(J_PoAnh&>UG|12R@OzF)Dg1zbgdABeF9QVl6 zpDZ9#f5D-r4NxtM9-5RX{k?_cAd_m1N`eVF_epzf^7=4sJ_mHjwtSQYu*(j?#1srN z+|?-NJO|fhXCXGF)iOfTP@h{j#<*R!1_taBJ2=e6sB{KfXXL6BYD&{m>%3rB z5%O`%twVHjBQE=y561G`4H1hdU*|elu}Jdvo7{T77I;*eK4XsZkE_!ZaW4@OMqx?9 z^zsE^d<|AXS$a+g$N<_jr7-4M=ZmvnyOCHyk05xU8v~$Xvslgu8=ioUs!iwR3XVfr zsi8S`!DLN^e8KpTuKw<~J{I=Ha!FIzf5TOVXy}%Tu}$plwGUY}9mn*3T@gAiVwLf4 zNWuCEIoEp(<*d8=E<}}js^r~N=Qcl_I7Kk0z3^SMMf7;eRIpFOM}?Q_N{qSF3_IkK zN~pQrXPdgN9936TT!Pu6iyD>smVRj?N_>~`-Z_rXJf5?(qdcM`Km;H)WDt!p=t`o4?j(%~zW;uRj_3(ZxaFZOW?x;`8qQlnCA-npp9P;v?w0I*J6wMbOn z46HQtaqqMC_I=dD;dNHEL6x}Ofv;z+G%4oOccXge%x*RVQA)R3xlbb#K3q%%Dswl` z%|O3O(+opSm^8#m6XEUzAIluRtZ|rSBoOTx11@Ch202WWM;Eh@EEkR&2n8Lm9xvJ5 zg?{*Bsf*Hd4sWGJEH7)(_sezb6aPje9EbH()4acBQ=rOrBa$UAHKsW^nsin*3wtaR zTR`Q^n1{*nw2nwEFulBf&y{J*04#v=IrWxbe#boa3&+p0Azw9+@~g;;TAH%4}&ahCUX+a^TS z?+Z!Mb-d;gh^XOOI^;!&0T&)Dn zcE#vMzp4Lg7$*bDYO*VJnRgj%RZ8Zm$gagcPM%*Qv!At+G^AAa3f^*R7Q}+ev62}q zz8W+y$wB1_uU#}Pu3geZnf<|Lw8D{uTc7iK4t7FB>TGVkR`&><-3&;u??kl%y~HHM z-AK8gk#Wl2{L0p!F`Pmd{dOnJ{y5-FQi;uy4yFOGV=v8~4#>xCq5!pEI94VVKlc`X zT_dvPtie^vWxICsMN9@LQ8t=O=xWAm2j@T8b}$|dciDV&H3*S`Ah>;(HMhKhln&gZ z#b7y+#f%U&mlhg8jJV+jPRF0_TJvcq)|UcmxQcx1o#zLHy82x-%}TM;8uIEzUk_V*)h)oU8-YP{~FNg5yc&3*K$ zW;~C%MmM4_dmXQRn7wsMi7($H#MLv4zoz4+Y~^YJlbghbE-vV=)brO;7fm(892Lns47_YJ8c6b~8ZsXSC4l6_Mi z_|ylRd2>QFWJAVr_PpDX?*#8yCzaleheFndXO*Mgnu*3UA#`*?%B=WTHe%iZ}2d6!RcGfTt7Ra`FJc5^5`o--0oouOFH%mYGz3 zy2NmgU-|6+6teOnIbfW?>}wzD$QsHVpv@P7uR?2h-2z8>4vnQ84eXN-uy1Bq=ft}` zK=^0$Pz@Jf5@xK1j|HD3#6%?1oW7Lg=R@_&1Mvs@k5OmSZRvYmzna`MMZZtnCNQ#q! z1B;DPAVj)hy)-y+OATS5t`(7A?9<@Bd4Tst^&f;Wga8lr6w?@UTnVW`svnwAW^1@6 zz@Opht^I%(M; zS#~o)oXVzm-L$zw(@_IcLsTR&G)^(im4cQ=u;O0!MW3>Nd>qld;-Jm2wNy0=yETQY zH7(t*Y)C%3ek__1Sp>&2f!~HS%+zK_Ilh^$rmy_PRP&?rJ6lPkSSnW=EA`X+FD&9- z;?bEoU_xS%Qx6APWk0LUv#BmDlAkC6LR`q48@BU^x!3SBf%4G5pR;qj(}#m_XwB(( zp%0=3MMuRuW)Lk~0BqUnzvNk@3xu6dl$tK;Y)jz{&AQ>XerdL1Dt@>M9hcIM zzi2A(1=2A0aD75|uZCBH<|`PgP{Twj*O9iY{IMffgb{%cQ&LqjnjA@pN)pA1)GoP6 zH*}FL68J&1u~J?BwCaDdz|Nge2noV3`^6*ftE-GSCO(Z>A{sPU_M;}vne_i@8~T@p zLh_1wlyFbX9o!B32Rb+1Rid_C`XVTf9C`21Ihz~lTe7C$_3iYT8z@>SBUg#;{u35l zXHznm2A4I7u8iAvF_Ss-?j#q`$0%#nvI2+ex*4{8%`i3yrh7Z7d~V{AP`hZQxl94G z@2b~73}pCl$C?ej+HZ%b$e1PNp{%dJ%ER$aLQ@T@tq<4nC)}C2D{opv3$(;90du#2Yy?Q=s-g`gF%b5D!0yb;T|DlKc#Ssf2uWfF=Cq&ioS4X2Y0uhK)1c(sJn^xjGlJj#e4h8Bu&dN(!bY#aiC*)B~SeZI$_2#L;!j`AXIh4Wk)P z>X1Z+UM&3K?rg$R5WpS)r;GP4!v-+FB(z0FAcpYYmo z|M#v?bbq!9EK56$QYsYPIa9-xL+w9UQ(R&QWAVq+z?hJ(?T)3c7aA4gc{zK@8ksWo{@uST<;($SQ%w(o_evv&(rLG@w9m^0ZTN!DG zljsh>4h(Fl-Vjr&!}-|1<2au2(N|v&`=Alen1bxH@uw+XX!A{ltm}L+Z_sq8z`ffO zRAs~oprGp*7&i^|Y}rsp8BOBH8%*PhK!~~p8PCx9E4O6* z_VCmsYD-V@usYJjyt(e(2+0P6ZB^^LZwdDFY~ohxpsMLDVll$r_HIGK;oU5{Yioak z4e+BXZu#H)4aIWtBGSkQ99*sK-yc1FlWrS_PYSuzW-Qf_yt{eb&X2=*IdK0H$6J~p zO@edW(|0qZ#xPszyxsR@8m;(YOB6MuoDmaQwY<}WZp&+@q@-KwFE{=v>NNKzVR}k7 zOeQRRI>LNryW?w+4czRNRzF{>DahcT&>{PBg@s}w1v%UxSS&>vE7wTVkUHt>nX*dp zW_}Br$Xp8Y5mL@^|Ix>5V_f8Ntc)+}wTP((Jct1xIThR|PCwLyEpM@y9?FA)JIanp zx7GZ@*u|6dk*-5=BOKI!Jy691UkggR8-xid9;<*3$o9&P6Eg47*3!D4bmmA!F&p8l*0RCi(>+={%EM#5YA7DphPprcQO(iM?$P=f1T;@G0$ zd4v3NF|1(o_Xx&{hf);P;CCt`qQiBgqswj5MzK9mknRu54c+Qus_^fkYE&7HPU`Gg zN<`n01^=~ztNA8i>M|!BXNcF77JZ_C6JwY6XJn!z#|u@^mj>2k2GkDdNMp}UTi@f7 z7&LN&$)N_leAruWO&gj!L5Y zY6!7eRRh=Cd%k@6CUR!bn^D%v<~q-4QkH(lH!#b5Gnn$g>MRUhMi$qPjPt@}*ha=~ z`;XLhZ#|*4pp>MBW=SkzCe9rkk$7jQ@S?bF{nxUDDr_1p+LM)p<@xgPQ%U_`A1RHBO}cE3A-ZrVC+G z=rm8qGPlX8a!nmJEk`AqQr?s{Dg&QVb{d;Z;9aPNxc7ZiT-o0h$heKOif|;r+O+?& ztjfHf#3+Lmg;Q7z^w~huk5XT*jc&bkFA~-`foj^nGI0Dh zk>Fw`URu;T#H=wkwy)dt16MwxNhvxx;+{*MEKmH-IdtaMz5yi-B|}Ri{qXAf7b1&5HP1QvW?fVn$Ep-u-lM6yxKD-m zWXv1XKZ$5QaT;LWcaU6A3q|)|F@gCpE%XJYUU?aFDm?V9*HbI{$_c_-9*+9GJy&82Zf$gqq)5wI{mLq9vR#3W+{0QBj(Jbe z2oYbB1!Etd_&m&_*lbO+*JT-x5_Ag7rM!z>Bv^9E-$gU%_^B%>WEw|fs5Faa%B(cF ze`|MP(>89@KK3tVh&c8}qnv_bnMrD}j~0JwjGL1fGxW4Cr>>U8vtw)^qBnSA=WVKC z9HVU*wL_Rr^dz!e6Iv~$ce}a_%N^oSDQ-O2xLQ@IPJsQ7>RP8&ZA&7=aM_6w{|N zB7u$_GsX3kpq-=jLlM}?#X&}9a?le82J-W6(cmqw3U%E$$t)j0iX0=AEGTW(w$50M z3u;kXhnd!4=+ZTw;D4GqtA;4JE{vi`58aLQ(A}ZHP(u#g-HLRFbi=EJbc1wAgLDru zbdID$cc*;(jPG2Y>vQq!eb%!cs92(NX@N=IL3kiWQuh__{jRIast(|cQ~+mvqRPda0kk{;#k^;BQ%F0P zAbEkL9h|!8R=AoUnws$B)fxH8eUpK&*FQX89)DaDmip$l&0Q8 ziF-V27KMj=) z3!W1JwrKe@;{_DL(@si=#XlJmA0Hkcg7QRQ%-$4g=46mPZ<|u_$JCF$RX%oywC*Fq zFbO6SZ;R7?12azdSMwIe=GzpxVN3#POmWv+bjmVgw6@_1O)$D5<7fVy6I4!xu2R$E73EfQ~TV+OJIn6+Q&!Sr@$=9 zmh4{5sfhu*-{@#2jmV(TLlpN(qLh50<}_wU)v3%zAu_$Q5QOMzbA_mA-2!Zv1JC#p zY58}CE8Z7HT-Zn=0#$F&PaATwsZ-~hI}7Y*ZEivL-BR1x)wN@>HaYHG#RRJYFX?Q)xkK_>t~;A2X25<+AICd-ET2(nr2?Hn$rnsa z70VAFg}1BmDbF`aD^mb2_LfQx^)%_YvB@l@Qx%TWWp4ul1jph;m%M2^IPyxqs3c4N zqlvPqNo@8B(zkkQxB}`UruZ7kN2*fsqbxJ8kJw&Xd&82IHr@YSYB(-wmb0@DFf(sn zA&k-+{vxdf?0#u<6o2y?wk-aw|HOw~8EtsOVObhoMv2ZOo)9Yly&rIE3kdz;?QT(Ty2c@IqCN)b3NCw3r=?Iti zW_R2pwSDwo6nW$HvAZea5|4K+H!ox%OeYSKmM2x5lWKRQT%lZlnkM9ulOa6b%!tLM zN{IQXa#$i!T=X)XbYKfc=mEvVUDXDJ)7JSh@ii6gWV*M;VOdf zkxeTzT_(Z?o7>~Kpp78C)UG$1|Dd6?59U95uebv9th_HsgC8E{Kfdn>IHc;UHul3= z^~&z)BK+ZU2N$H0@+U@9H|uRiCav=u1CE=y;cYV?_lPqr7Oa0Q@hMzWnJed`{v*!O z=WTWhfu^Pz%FASu4Buf?&zZ*8O0A>QOwwmvB<<(;FzL;Bsj$E!VlwtcV=Z(O8TYS# za0xMoGR6}Yu}#T~0r->Om%-Q7yNu&bOh`7>Ci}aki+Lz}7a{ST`@tU;Oyo|?-{#vu z_&y)p-aKBPB@(H#s3WR`;PF-Y5X#L1O?`^>zfEfS>YMd*Ot1s2I=Z$nZH4h(vC zjeti)6KBAKc$hS9?^N&noXHkWeEfK+L~Att<6Y(a-Cs$ofaS)vQBn6qwhwp9)E(a*|B1fU@RLpod;KT-Z+1VA zer>h=aLWHu3$>s7ilIeTQ8*z@0Vn6+a=S^$ROwwv$YkFfUe6tfeu)@iP;2!uhn*9a zX~mo{CCEfjyPnN`*yj)gse=PwzG3-nCwS^Nz*+qbKJ2po!N48AEmvjwOPh%a&uEDt z;@7epD+TL!9dRh9xyc|t(Bg9{;71ZU)MW^l&;@XUoP(AN*YvyZ-%jQwXd8J(32;YV zycsM$f1!0w?yzj}Ff}H67krE;KsZua*=;*N=}JqvA;EXSdw|aN^5Ma#C*7 z=)Q77d`D_(tSEcR1>=FpCJQ#3%NtI;x?uHIij#|mC!FpqLT!%i;igoY2BO~**>c*J zphki@(M#xZYx<1$jkH4DmzFf{r}9ag>2{E(Z_YiNiR)3H%_{}6bLH-x_8!qb#ebB!~Xc!7Rr4kd<%v& zi!knVHuY~3>eYYxHXXW0pQdvS4PrGMA%Da*>py2`890blI5wx%2I{F4LnUU>j}34* z8BT{RC&wQf_+l*3sb*Y(StWDBX=mJsShjhr?Ui{lCS>@C<$j;thFK^f`ceFH$n2#P z!|oXCN0N!0i^DJe+5_UL%!?XnSL})4mRg3ZInJlEKU_@>?IAyli>Tl~6Gw_|UH^&N za6eob##=?jOL1Y<{dr+VFagEy`oicNc1CEmVadh%aMt<>t&;Oe|LdvZH`{NI|9bJK z{z62;-mE;OMol$ccOQsSF9*Z+3W?GzI{c8S?AD`WK-WE^t!%_&7W4HD$eW0sCc>i- zOP9MjY%1{}Ezw%sG@R#`8nv`w|HbvLxZJ3G`EQ6GR|5_C zW8awrSQ7Y%A$~E~Hm$%S(0og*{r_foc)CBPnX?c_IhmZ^s7E&>N6#e)RDvG;qq+`irJA?qrH zuhI9V(E8WEKAq*!WwojR=5}|5Ww+dll*+vr)Om2sr*(PIOAMQ7g;mS1yUW@IMzBT+#vPwa| zGH!NJfGyNfZRlH=@GFe~JMSvf9a7Jfz7(aH9`_cOn71i)o4FJwsXYw!QrG9?y>rNSZp=WzW#s1 zIHnqXl>ju_$Zt}O&pkSVXNAg$!NI}Y0#*2Qu|T!Iy)^0q86ljM+~sPPy9H9{6$2p3 zCl2C|-yx_}-`yV@6aVa3PD>;fpJLk%KZC`Jx4KTE!OGg#qs!Ln>S*)lqASbMbF+k_ zi7JQVO9Ezo&+Avuc#?AEZLw}(6*c$jk>C`dl+ZZ3n8*^nC=;lvQXlcCO>b9|H*UYS zLc9L*z!>y+j`Z(tzBQAPQe=5SAy$aP2ffUx8|EUu$z5#Srb;AB;CEXc|Fa`i)*P6~ zNFF%8GZ8aSr1_DCOga!P@_IgUh`ZAiOFDQ__H`pVOH^vl>lgvnGv@W0@sf~^zJ&i+&JEXg%HyOQ4ulqMUnVP&{ z>0U!QErU|Dtxw+X9^wHlqop+JmWaQ^!iT<}7)>V5N-9zvk+?R9oDR77h;FHMQfQB% zN96g_#yQ%+jlf_j#Q9hd{9`Tghp&1z)v?Rf)Wj95uPq%0$L{Mip-DphNWL*TgSW}tf=k>y@QB^n9dB6r zd6WWb4RsfCoq%4ZOPr&tg_|lYU!0t=kLyHGMY!wom@=6dwF_uR>hX%W3cPJ8bhfyu zl5KTS9a^vy5cOZ`9ZlPIrhKRC+W)sZv5XQHIG^jwtYMPA?}i>0tpRkDbSO;eP<~&% zN|c$4dl17ssL5Sc^;FYbfSO7#>=^w6c5#VuKpVym`P-35_PFRgFH4^9vckvxgDO60 zHtuR~p)l|+U2`N}O6cxqSxTvwbKst)qvpd{m z!38M5K%QrTPwFkM&1QzK?#UijlLIYqWU_tlIr!aEe5xRWWaeYTN+ZkJSzQ!*@k&ic zfX$cjJa^0}8=t`psT*4+2}zKENC~I1OgW8d)ji@O18{dX0XsauVK+v7`}^5KGX9~l zI$)7(%<^mAB8LDMBtO+QDJX2$d_`{Ce1f8v-6r6D9z3;*qh8MwR__*TU83gyK@PyYj3KxD5ZTiQKXaOG7KQ5fXH8&BQ9J!?w~Sg=O30;00jj;AlubhghC zcjUN%5OQtB2{i`i+2?adQF7V82@-d(|H&_*90z=;;d;(g}1*e<};hq(?74K*PQRGX< zjn0Cx7Kx^%P8kQ&k=T(1bUJQWlNQZtqaK>r^G|#B)1~go*mSOk#_y@?9FCcYn|r#A z`>bM`R{irG0uK}(e0|mp0FlBk4lsTD>F4KD{Hvql>Q3s1Zb!10RsM^;=CTes&#>0) zkCX(Efh|{lDI7bswKRf|BAtYioB; zm)PmNh*r#!5oF_$(XX8W4sFBlPVjmY^fS1#g!6g>NETzTeVX}#9?DUMUVJ}%o<?R4(C*spt1iMnZ(sID{|Qf#R}JlC-RN@S0O!r6r!ns2co>EV~c^!0(; z#Gh6?FbeGGQxF~(;Uh%S^gNz-F%4n$>XSd+e@3(h&a%?Z?zG6}O$zp~a(I&~^S%Gx za!V#y`E;UiU2i_Q|J2I9M79UvDP;!INhn6xe3fMAz}>FcX9De}3$bNB`1I7%!Cb zG~KXGA8rz_1{R-{VMAc{oepfu=rbl#cSUrr)>^HF63)mv>Q1g%P zh&>r*vxam;6K`&7#HlIYWV*U4MYkt^W!Edj_j^cu;JVeM6fQt96yoG8EWudJDHh2V z^P`MPT0{rMN7&tbv7P4DL=j*1l!=TJjR#qsFhun-*JlL{pqrk~5~{B~N$U4o)M zX5jt?j-lTBVrm-e+d$qEaLTi8xawuIu>&OW`ouSx+m>KrRJ(PyNx96WQfpeogL6b1 zK1=FcuEKmtnmsi6S#PS?7o*DPIbOgrmtVZML%;Qc@wKcSlD;(Xq#p^e|BH#viT4ZX zf`>>~zLoXN8~A6g0l-sInFT;=`Sd&fS4i%XzYh|enl-r!Fi~dv`}QVGL7Tqe5p=x* z(kT0{2;!3cO+53mU4rP`bLgMe^XBdjhft&DeI2bQsm@^YKndI*$FzT-8z<&0r|;Xgo8BjO7L zTvw{Xbn4EY`{X0PCf+nhC#lOoAZ&(B>=DFZznFpHu?*1|!-T<#rrqgg0|$p5F7!?> z@;KWl%NzLiQW^v4kcagL6R9D%5(iex2Um%~t8xo)Co zq;bfUUC&!`2*O`BQ9`pSypp2S&rigBHWKVe9|H9pUXwZ~oymZnsjX-oH8E^CTkZ4V zR{&YGKUBXjH>TN0!T(Xs6JnX0jsF5GaQ{aNJf3Udc;%GjeNH_o9(fCY?EyAw)BsuM zJ$CC=gCi|1Ww81G#JtY&Qf*6Ab9r*vbSl1EyaT9jTE|u=5dVhf6t8IU`me-LS^X1v zuT?FN|8D*U6ow}~SFJ^~*{Q@fSJv?9b8iAr75L-YLz>%8?u+OIj1f^9uh zvMMt6l=yhyZKrIu>QW(tU|IZ3-?5_XeE0ZsZLN||TUcWEk^Qnm7`CIYxqQIA-znb^ z#Tmnv^B|-?Kn=aqk6LF;MVBjl-l(Ik>r0qdJ#@3kccimTJSRG9jV?ZzBRyX|Za#xd`lVNWlqnh_DgV`;d z(h_5Bps*WeKE1^ceaTSpvCKBH{3)!bTw`gCNr0kif$tbn4{1#qAgG!?l=RmF94>dd zS^t={!Bo=IH3?U!VZxsD9es zQt>acJQkmEme#1Dvvtnno1c~rn)We^92;AYCD=J(&XI;4w?IAnadTFg{~k9l*$y9^G02c!QoLLX-=N)6VD z9BKp*$~co`E3rB)uD6;3<&|yUhg6+0>{wpE-~6bY7L7H!mL&Q-g#c1kYy4cZe7SoJ z@*lPJQAI8XKL~nR8Mrp8A+OibNV1tat#^GIgd&jRs#oi~eHu`MD_eieJGGDfs7{dv zc2I1|{M~oI%|D$5>s*~4AOJR77Ryc-Sx;FUmZgK^_FB_K0_w&IU0;6%1-}(c_d0YAw~qB0zXIy{ExK z#3=P{U^eAT$0PNh?-1wUmyFF# zhbX_^K@ivEn3aFk>KdUSRI|q3!HLhBT!Bh57)M80mEf?WUVq(qST)X!Qi?BJl!G3V zbW(ovs9anmXp0%=q$A|mh_5?t%nF93XQj7ma7F|oi`!w6zTcmj_i-L@){ldHXr zjlcitvC#SMcU5IST)p-j8xwM}k3@QpF)=*QH)c0oRZcHu#!&2lF`o4YcY0J958s#c zTML29vu)Li+ar8m+_B_wG#S5@h$QDTW)_t>0L4AuWl&s8O&aI$nFiEKk@rhbLvoDC zndZjvn_Kz!6IQc%BOBI|(^(h{1Qd9XXshUznn&H#thb-_!9m5YjBNf4HDCW%=~xi7 z)MjtoPLyzV_Nv7puxc*Y4-5~B}}+A-;yuBj>4 zQBe=lwM^@Ftj4%J-!Fb_nk%qS(rbtnDhZBtJ^_eC$1gbDqYVnv4NDxv` zc#n4`rQ2$^!ZdPQ$3s8&L5xbl5l-BmH1sCLJSMTO@w#UCGk+$DQNcuVZRwg9>3q1vtAGedI5DXrn0vb&lgIauz0 z+`T3s&r*9b>pNsX719*fUg2BGU6o%Yr@W3PKfm^>B18`Rbr7#;=SLzx#f-!BO|on; z;jylY%aJ~!4dmiFt8r!E6KRC3B&w%dWD!D$+zZ$;xj^2=5VaY3 zJ|e3c#`&TA4I0arx;o{V8^_!IO%#AL!5grxx#g;*k4hHTBVnvlJY@j;ZES2lA=7K+ z##k!RM6?b1xXI?ob+LU!9f%6h+@+8TGoO~*RWZxe`*9#4AX2R-*DB@H~5GGdT(XX z`Yr+-=P-p?B#9jx+b?nR)eq^X+Q&#G1iO|)UfSn@L(Ta<}hYv zwV0S#64y@o=Luftsj{M?A}yp1%+KHg$*VzI<@oZ~i_5xA`E-vp$`s<92a^&BFa1oW z+39KD#*N$u3y4U}kijRe16#$g#Q*yBGRDB;UhzRM7x!qZOdisPVu=6L51U7+{+jg*%;WK+V6$SG(6vT98!7hFr&b@m4fg&;q4*aoUyRhtG+z^w?W5s;cn|DPxN2biDOp( zk!N)OA;!GXxsY}VW6swDvfCrX3ZnzahGP^h&U49s%8?T|>l63ZT=>g4RDs=}Jc){s zcFDtV1mj|>N6}1?MyTOFXFAQfb#2fe zptB|F6?@5sPL|9|HHR*Pj{f<~;bS|a`vc=R%Lkt$Sk0q+ETlkH4iYZt_WAIldj(by9`@!aIeDO;U z0+jV zOmoJ6{w|1K=5nEQ3g}OD1;TEv48ajJr$8pA%VBnkNvl5Ce%v}({V^z)2C+`ZoV`Y! zq8)$0tQ?Ze$7m(AK1lBmVb8EXLMKm)yX!B~K#c2_-0R2JI8v867lVUC@Aex6vQD}T zF`Nw~->p2v>msWMjwt3c#MLYK*PNuT`_vB#=5jBRDPuPyAR%Ik-e)NB+RqI~V{d5B1Qa2}F?!I7=* z`Q7!u8Hz%}$Ao~g_Ln&q%YR{&BrICD14Vi}`3*Q!X!0={|OESa4? znMjOXdC&NN^?bhG__glm^Pl9BHB-Y&#L-G<)^>o;7_8tb6~1VBtDyeDJnRoDmWd!4 z3Qu>S$08C&4Ds=1vLL8a&_RKg8=*6IhWzlFh?}17frxu^gn>p%3|D}$D2X}9WkM)o zK~SjcTX(@MAY7fmSlSA%B8e_jv8(pP>t#mFbXzPL`87LTbA#EfSD@zyCmtVrku!VPDgM%zR9~U_wUW3nG z#~(G9qGHI<<#1Y1?5A3vA^7Dasq9_AsTYP^5PdJY7-D94eKKy^Wrm_rXKOdpfh9lU zJA9CV%@Q^|YB#!=ihglQx=|GpvsINwPlm6J;2?dB<<4OV_#yd_HT7XVc>M3CP4MjD zsXuJ@C975Fvt73x; zHyOOxTz~)P97)qQjnz^=m0}o!A#S{O%e@N3FYwj4BnF7#CQw86_NSB-e}sgmt(~=Z zD~5&^w)P-y8tNf?7}Hsb{ryuE1Q)9!F5X9De0qCC0WEp$M7UCPI{`BeR~tx?1J+ur zjkvWkV|h=(8D$TLJ!pENiJRyUPHK7>|K>YPk0o_nPDyEk8E4|ajZv%H8dwxXD_~LT z3oEKO)>emd|L9;I*ES(LGS#WbxRk5f(E`*Yem&c;;_=g9rcOb{)hNpWF$&-Zt8+lm znh7FX&*V%`3T&y6-WE78jSh8%m~-lE;Revx6OTwwu%?3jB>(`NBR6r| zT!3-kLN8!{>Y#3^!;y8034x+2ay=dVMd*6?h3xos4Bc4(F_db*n!&7uQDf<QLg^N=~khV$kFdl?^&`o&}iu^P34qX;PwQL)qcW zcc%E}MDcqyLImv>imnUj=zNgL0^O_6lmxk;

U!*C_T~OIck8~< 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 diff --git a/assets/images/icons/pico.png b/assets/images/icons/pico.png index 59c6eb51c8ecc1ccd5c3a94618a7518b5afa7737..fe3490999298bccef7cfda62d7e86436ae7ad4fd 100644 GIT binary patch literal 20019 zcmV*2KzF~1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DO~^?^K~#8N?VSgF z)b;ttzZWt{2mulZVTQdog1ErFSFwt-j;cke{nuHmZS7ENYo%(fwN_iV*3mkubyRU7 z0#%M&v`0Pet-YAhdE3 z3yZp-wMZ9{Hr4;G6e+Hjy&?xhEFwTlAuNdLOp)tECWt^@k-{yqTLjX2S7e^ZauJly z!XgwPCXC}mk-j21BB>&H_IT`&6oL_4FS1DFE0Jv?=$u6hMK_T@iJ%xLLNrn&@|nn8 zB7~EKmKGMiz!;t;@}@|h2s(pt3#Lzq<85sbSs?Pb$gv_;w^|^&iu_HaOeC1H)K~a@ zUx?f((nG|;0(21hmBY8%l`^l+N0O})hp~yIqO(LWvT73SrIp?sB7agX>AhC(Wi7X z=U+L%bjwXQ35hQGk1jE9!cg-6Dj}@x`6XuV=iAJTcQ%>ztM*m@WJo}5%3Ge^6EFHiyJ09u(o<5rDArA0p3)tP&{|X_08I zghe&x7b3TcI9{Z?OV4!I)wc{2!s>2XiHB7iDn*%AFDW!{zp&QK|8l!2E-J50!M2M0 zK;#pV7OPY(5T}UzTLiuHB2|oIzo8vW?*Z*hXYt_MXQr5h1eZBfR%!O^I%onw@ge zOle8EDcpH5m|~H~=q&Z=wr(mm2TE#0ewbBW|0oe& zFHM2Aqq%v3drYp>+uD-dHMRKs?+r-lmP?_q?!X&Ezc7pxhf>p$%!bwbf_d}&ZIb=2k}qAvJ4H5&IK)Lxf&LXNj~CyU za4@C1N)rp9Snab~n}H)TO`k#SRjKwB!l5+)OOjKAKh)2SrgPakV%SBKK6p6dfYel#@cu}~-14SS%lI@ROLd5G%4Ih`?YQjm~>J$#vhK@OD=BN|9nzrqeHAF1hcgVPF z@)m!PXNOe8I*|gAW>-awC&Gf1P7G!n+4VAetI?Tb!c`5}N$8S^|M(IZ=dG0@#U4p(3qqlKJlUxsMGClyvZ@ zEYqb&8_jDK?L8Ejkmq%G7Qt#Wyd&e0R7_U$eogF zC10x5oTS7A*C_F@qOC@UgVPGpTRg3G%y4f`0p$vmZXQgCzYMrokV{!R`(hA@AfCqysPtGBO zF94eME^gqE&=<@pl6UAeAj1^zFV{|Hy5<9rErJ(_LNzNZ80WzIpi>+p8O&4HToEbj zAomQQZ@5t0I}9V_rG!Om!tn78OIQw)lUsROY{qvos}>b%Qa%8@H*&k@iqH#4GXAhf zJP;N)|BoWL++O7N&oHu79;p7qI?&A7YSY^NX8#^P3xmb< zk`-{f-DZk-Sh3D4gad!8L&w%;;K)q1fa_KSEe?{?VwDJqc-(i3h6Tov94SqgUhiD* zRj1bGf@=nvpFVt)x#Fgw<~vvQH-koGnSFc8%-+H>Q&H~c1fxi>5?d7@K#D;6)ghxh zs$p#mI68LhY2D3=g}Y5*!GU1Oc$@&L?2s1yfQPj=9}k3ucSRqGmrWQJz5nl%Oz(m1 zLy`>1?H+wIOiF5^&ifrK4V?;-o9Lc=^*~oFD>soq-S_k)Gv?UN+GM(Fv6HLy1JzEd zhciT4MDt%0f<8W$IO2II&^40TKfGtGIq}?FEzkgx+}-=MHOHRXT^l+#uP;(>IRJ!* z9jR)6~cuFuCp)gtFeDmfRJ?D#4cLhS+itMu+DfqLb~E-itOSG7BL5@ z0!C=4CVTb1_ki}=@{x+T< z$@m~uYTkc;5w@FhX2D@eT1`z@R97Ar!Btn#EI0LMqfN)o7=_wFzNr7u4oX;9mrywQ zJH6C>Zb}fwmWn61Y2E%%AqL?Etr>PjP3%EC3G<~CJQNtPGcM|5CY{wo3p3$BzKGn` z(r*gF4kz~;(!q>6s&lQsuOZMnEz$HD)J{D;bnIYF(jxsr?vD9GyseNHK3>t(ghk?# zJ{T_`pR+IRr+rP40+%>Ge1M>h8M#T<0Z@%%(fIn*V8j!b2s>eo!KJs&y+&CoUHii&mGmVbyu4!iS zH3K9>%%Ok~sP(vjJXAjv@ot*1h#FM!n7Q*>EOJ+U#T$aOA_YeD6!Fx_7li`e*P*f+ zIiyBKyACPZcX;A?xms-x08C1|!_y+(k)p!|O-)!mt3P^?C81y_(y0xT&gfw#of&+^ z`nE9PVq=5-NSBCZA2c${MYCb`mmTl~QG~csKeLDhAb&zZuVQI#YD8v4iyVD{!6Cnj zw-pR!2P#Z??Th#t929$|-Zjb`b#hR0bx4c$j>z20I6+ermbY5tfGv&R)(h(feirWq zLI}j}o$<5Xh3X+aTGM_p+T?Uk5B6^9BjYdw!WfI_L9W!#n;^%O(?c87>x{vpv&=*> zjwz`%!@knu3Ug3MD;_|x=Z*)D)E-9hD1*hYjI=!@(zLmfI-scutHwo4kcXN7)fYW_ zXPEP@=&vrn58QZe@dQXKw|_fx&*R6K^bD7Niw-gr$c;L;)I0#~Yf*bWBJ0IhV1dG5(O-FT>n9eFD8c!4e-lXfKI`PMTOm0`$CwJ5=A)10W22fpUSxMk6HAzwuzbO;vWoJm!15>xMbemVc)I|wexRIB zc?#~sJqYd4eHrfGWqf&p*7U1o|du-v$2zpJp| zAYOs5Ylt^bg?fny?GAB^rY0-~fayN=g7q0A#%D)m{Q#{F-Fme(J^Ezm+*Le7&qx%D zeXz75am~^_Wp20MKrWh(GSMc#RK#v~s5|I!gRr=c3Xa@j=XzFl{Zj?x!TJpDV7m5b zquuc2wNAgVwZG*IqadS`dFF@5G+SQarnUI^+lAKd@lgmVb&}&3r3f6ba8Xb0||Gw)Oz!Q$;k=k zsFS*B2YWOipM{YnvCSMI9$UPTl>-h_>Df1f(H+`6|LhR)x@58vmKz_yT0*H+f!J;dbvSXqg8YL0Uih%~%~3 z69hhN=oT9-8fSrA9nsW;g(CTp*52J^i6uqN<`};^-*iZetpO*T)01p)paq1qelEi9 zZi~plp$z*x|MZ|jy!h?m55#TOprzx+pN~%H)Fmz03FQ%^f+qFGE=wihd0}gM! z^2fv4B&W0rc5({G?_VQQzh<=tLOf))Sq17nQXXUo`yY7%Gny?IBy;->?T|S0qbenFLuqljd)4AXym?yo~4TWx79uwo~rbz<`TFSiG_Ishs<^F%nv z!lHH%-e4G=?Ru`(sjbYAF&(v^s-+@1B>~b(T)A-f&ON&h`c4Dz@ZrUinwTr%7g9GB z;vpoYRPX1KZrxClSNpt&DAgQzJKo__r|qsIc~YY zDd;tzotg53L0ytk5;$1H7Z^$U*Vu>~56(?oya+DJ2_oJuWOfa)2#wuBEgcNlw$DsS zTJY7*;sYfWzM&z;hEsw#a%whTum}s1%NzseJ@c}%yvp4*x2=nXdyTyzG~Ph}V`0I; z%C*b(kYe!l=E-4U9PzT6e1&&B5Ec&}i~KmK(hE9~#j~jXtZ~3Xz5Mk>X3mVQX3l5Z z&C+jn>DQ>JutUBnfCc1$g!1yL-zXJYAJlTLQW17VTuBUYxz$onv| zaF5NS4ZUiXS+I?3_L(=ITVwwGtNG@ie_dhZrkO>vcdC5+)<*Ni`UKc`R?@or#J;qq20KvoV1oac(nv#@0%ARSj-nwer^@O`0=}7sA3*I9-I~H0XR&&A&>BoUnISSt|(*tH0s}4D(;20vm^W@XglXONa)+pY8$jo?WlX>=!OU=A5cj#$0 zfYr?8&Bjg2F~^7cU5M>K^6e65rW&ip~!Ua)mF>FjS0Lus#*E#idt=2x1Sg6 z>v}TWi|aK@q-C~mM+O@F7`8_z)k`fuRO#;CJHzGN=Z3YOj(< zLwSFpz;)=*F~xj6W2>v|V5M(Z$iFcL^kp#|Z4n$0J%;lb5l5+9t&&`3#JFtj|BE$f zOkE(}(<8r_XJ&o8#q8W#>UZi6MwyV5vkXc_H}~!?(=c)Q{N1KoukesPKY2oldGJtNul zmXIN>O_Ewbh;GB`ebuDZM!%=Akl88KlDD zVi3;}!9cQ|ffc|bLtFOdUdEnOBreOO4y6g4p z7(do{PrZATx$$SC&Dodq)m1kfMaO#O^(*&LvC~s;x(aEbXN{dV?U)StBD_!a^Ay6S-A{>I=j~GQf{`Y5}1QzHg16;RIWbsXyX4xGs8ZSi8^s z{lO*biaQu~L`USMD zZ3sLplWRvaDT)-=OW2|SI)WEJN(9oO4{dt&$M1?@C^`C{#gH7bK!P1(dYK3(5pl2w zD`p@#Z&{FhX3u^ZY8<0k9O(--j*z38e&<|ssQM&kQV!?}N8$hIS7SAA=4%|8Zs0T} z4v<(UWJSJf!AC8xl$KEU*Z3;a58Y&tc?6kb)rnu$3<~ChALAcvXaW zOm(9m5Khd?dGuouQ?q9%T6g_GNri-gE0t^j25aoGIp*HK9jDtNBe7tdu+nd62erhU zfw*UvC-*?(9r=dFvVtf%JL^f*27vpC*ZPb|bMvxD7eG?Ci(nvG=?g(en&{!?U|9$W zYxFQwR=9N>j0JbG02Ssx|9ZYR4}>wq@Lqez2s8fpt|5sL9pY@xjP@y7z23C0NLy{% zcWkYBt;PbcBfVX+*&~J-@^n%(0nS&_U91$RP%t12b6 zRe5S!Qbl@tQdL?;k}5=U>sBrr^&ljl3lS7pKfIs5gQKhBtY5X)JpJHe_1ZvhA(@-+ zA6KsxxmZT5&&q|n^*~heS|}469UF_Z_n2r`gWHHhb2&$ ziFr1fHk#2#caD0YAJ{5k6qV-+I<X47}=AB{qAa1eb)6$T8?G}qofQY+Ar z>IOTjy7o-h-YAMZ^xx5j(s=iwfA`Fb`lvG07g$Za9P$(Sc||N9 z)V2p)c@nA(J?g>lPZuu_cipLW`heJBlL)<8hby>%RGIG8$xS!IMW=?1 z>!kgAc;x6BdLs{-`{02Jx4SCz?*MQKL-)}jUp%6>Usx*!%rhQKKi`c%AESq&)YXvj zOm%~t!PNtVfU>o!5ot#_iAEYR$pZ}>nWd-ZaJC@Tw@GLA)TRC$CJ~L-^2u8p z%~${PlxXqh&bY9T87_()EvYch!Rv-tsi+ie6NOr~S05m(X_N_Easy%SPfF`VwR+1$ znF5YS#}k3!KNg9fBd_ZQ3Oc_KA;DhbM&Vr^d3;wrlKsc`9-+F&soxkQazz+JPCdrh zo%g-|uCp%g>l!&BTfOUoZKah5N-JvIoH1e?qa6pM72xAHH+qdD%NQriYpbvRqDvC3 zXs;mmdH*g^E&};44bPh9--x_-|Zc<#!pC#svRv4OXe1cLX~M* zI#H}6Rz3>SLN&tPABq5k%xoN>cgF|(QF09A7szKFZh&kr7onHWFAI*rnJ9+rw%?66 zoHfa{*IbL}NI1cOl7isaHzAM&iYF9eIH{SuDx`oON8@#~BmR@OH<}d-J*fvgq@O%A zK}j+gs3aC_E!EyEd5Jnd%WDk;U!$6RptRC#64D^wws!d*(>5bnQxlL{LxX2~&Zpb- zn)!ei3&X!J(kQd6bs;RQ_Mb)knpGf{i>@CObrsJSJmk2dQFy)o=*w;)a!TA(!b8X;3Qvm{NRA-n9MGXdm1fcG0`tXx^Zmw(szJ=)Ect7a zCch{^ev|_@d{<1n)7vGx&bh3gxn%0#sCtw5IYO$VPU>n#iB~o8^d8zUjB$(xw9CBz zYMxF-09q7yy`g}P(4+O*lPk3v*sFg#A%>Ko?+eF(sy1FV)kD1bm5U2i$9ne3P#tVY zu$yh$rV@S40U)`&O9Vah_rDqdb$OS5y(S>#QRi={`=27Q&L>-%CDXh5DfdolY8c&CFa39W^2EW=r}Jf@CDN1 zKU4vnE`&ur zwZ`|i5wapQiC5rmJ3NC@=G3v9nIZsH8oZeKU+!R?Z1sN$j?*RFy!w{mS~28%|1o`u z`S&xcb$&5cpv3(ABg=F)jmj45Z*u##!zCvc@g*&iqU_8%oPcM^)C0|lUf`u3eM&c- zI*3PTc(?t4xBQO>Pna1FzK#?+`sIh4&GU~g3pT^&1>x_cvwNB;*A3EfG740$2+_Ut z`0{8BV_0DHUllL#KQFDT{z?r%R!q1wIO;-JBuQ$xe1*FX>O&o`fG8Z#h-G-09V55S z{2ckAC+=G)p3EHc``c%mcVAf-Sl;ym`2-TJm)dgp>TQFL*szI{rK*b9!|a&)Hd+pI36N{AbQV{6CR@h`cHC zkjO%j!woeopgJR=FL{%Ll!31o4Ph~j5Dq*$7*SoLB*qP(D^#`dnE0KcfF2WaPQ7cC zMh=98>~5pqFjl0+`+4t`JpH{+vi-7YL(GrwI|3aKWK{3Uo`ytS2#Y7J###w_kQUD= z2>SpxC7jhUfW&28l9Q0#=MoA+R^-2EG9`CJ$Nb#S!*7el3Q}gj=C%>qH^bm7ME7^G zo`jh70j(4Nd3l`>XPLeh`q}6MldymtJZ!yS`22N|pNjlQYASCn+(Fo1b(JPSL;0?34 zD0~JtK7lEx5z&um372O5Z%czGm+K224&N|N!=^9})`xGbS6!mVkX>A7U)I;0I=PoO z+`=&a>zUQM{kFE0%TXtFGe4a^LA`mm7+1o|zdy8C*CEvxL;`qucvie7DwH4nYlC_J zwe{wYcYkBDy9h&iHe^uEWkbf3A`On9!Dtw8O7jmy{OZ5O`wr>D7|Uh;xWk;DLt^>u z=hx_s+qtb&`(z*jJd8-n+7J#aW$1nyYRersENG9FsR- zK9N44aD&fW4@&TK{m=bun_eq&7c6k2=`^czTCLX%YsZ#Kyem~8(Uo8Rm6=_){zyVW(iaQA-l@+S&kUqVTLaNX*+J4QE|Eh1ixSZxTpMtM|NN^3N)Q?1s-JXzFEeUFXHmpXy2_RkHo1ar`Nisa zF-;#%p%~er(|VIwJvL18v;3ZJqG;J&+l0Jkgxc#??9;?O$_QCsd&fxKEP%HKkq3ax zG(s0LEe)((`MwC74(Myb<-|=P(Gjo7M_wN@GI)z#J)@hyOh}8Kw`dwX1HnVcEGXkA zoH~wSM5o9TMLKI*F0YL?1wuW*{2)^w!3YZj`ibadwivQYZy4h3VZ@Wc+d?-W96$)R zyWoKSKIZyDf!9mwf&E#$exd-L8-5Shid<(T?}cme*7Ix4ThFak(xlOP@>Ts+SDhjO z-R|P)x+Daq`N3Z)P^-n3)Q;=cu~0P z9fXv)`9qKBR6UAQss{+5RLo1VD=Qp%qL_ULchI#oSW-&T3uo<6@?{h$STidPp>O2{a3`LVtNmUS5C|)sbvXgR+6BH4db;Rs`i=-2H*qr=tKbQ16zf{`uFH=CgP6%{O0cSI=Vc>;ly@?oEfRlv?$8TKG-2DFF(FQw=ggra@-l+{d9%|IujD~);W9Ic8HGQH8FA&ZjCeg!C@Ng_S&_> zqhkmpilO7{wKXx*h)fO)L+#|(293;858t;(thBhC7mY!|dErEDgwZ{YQls$~qr=6B zX$)VVI}U@Q;; zCfBXpt79-cZsY=jDKH+`J1?x$@5fugVzB4YfFRzK4&l(Y| z4zBXH&Bdm3cf6(0BR?o6q}FRdd-W736Bq3(*J=^lDtd~NvzyBoUw^Vyy(_#6JPWEc z42eU;48k%l5dcW&5fL)fycq70@6*Ob!q~9jj%Hxi&@{?eMIFKWUeJdE$W`nQ$(^&kCatVwTM(^I7JxU1+h_ZM#qqDI%~>w~ny8AXVd*<1`W=@3Yd z=Z4?K^T^~ys8Jra@c!lA1sc}!`i>W!Kks|}^_qYF-_2^6eZY(07jbXs6~eI4kA)YH zp&_q@cMmu$IVP!y`Vbb3L3MzKfh4c*6Xp`H$1RLr(Xn%CD|VjOm9%hUUlnVoxf&rG zh~n~_hMF<_(tS95zdgCDFSgZ?-fW~{1FHN@_Iug z-f~+QM&cs8LBEU7^}?H>9Uz+Hxmelq;-8m$jbk7nG%A01{G=7wNJ>637`U&HoHJyP zH&1>l(1=1DpS`=u+;abT_1uGj-<6f!TB~tOBow32fT2cLFyM6OhXX&4H-FTLUCo9y z`}LV(W^#FTkx0GM08fqIPrnr@2BHyC6*u2EPG18Aj)z4mBLeVXL12vRum+uV)tuq* zKar@9yRQ#n0bF)E7fFf^7V&-h6ZY>tv_KXIo6kKy9KITbzr8*50ybxfnA&po#0VQSny3W3&pAK0AUfaumS)qg(fF&Xv62McKC&DV*|A>%u$NKp`;oLX8tOrEm zvCK0Y1;^ z!Mvo=Ror+vfFcn3fl;jOJ>yB?<>{Vy@&34Gc=Nnp-h=bnxE6~f45n9**Tj3f^?~u; zqt7_zj+1`SZ!bKfV0h=h6XCotJz3D`D%Z9(^+s$nQi7@&^nMbJKDAFT8G$*A+*RXb)hw5Nnh1tjK8qZUUr1 zZi~TILPQ58MIH+Q_<0iV{O(X7%zO8hJpG+R#$@RLYoI~_6o#!2%%b7#aARpMC6vSx zLtNp2^&K#rBl+8FkpZP7tRUyW!$Mw#hXuu954i6sJqu>-(C+ylpjQr$$pIG#C1KUf zUqr~#^XAb;E-c^6!4>i5VL71j6;dTM^mB{ZX^%&Mr_1#Y73u^7*P7fF4=NaSbhi2a z9V5+%@tyQ|w;|%am5Wgzgd=3k)T?M7vmd};vsYI$*n>}thWjD0P$FOtrSph zyKIJfibM{IB{;9#dZ-YP_&udg%*v6i<|BWz$+bt#UQq5EENb z2tUb9ktba;r$8&0jQyM@-XTQB_r3r6dd;=^t}seUNhp`=@mu*P>4zC27)dTBZv>Bl zH}2dJULWgRy3-AJ2U&8JpSk#ZS#5yI+{BW~dF0_k_!&157?8D}U zGe*NgwLnGWCUMi*Uqp!*g5moC&7NF%{uVh7ewO@~Q}qCl9n0N90m8s-hfps5!C>|5 z!U1I)ab&hCAIVX2A?ud!QLn7Fu$cG4Nj-#;By10e6(qDk@p-7IRB;Wkln$`|_x@;> zcWx~JSh06K|EvLifZavUiu^$Y>-efjypk25k~vp|)yUps;2dy`@EY(IFjA4|7~tW< zVr&sStBUQjdPA-yVfZRjw>7HGlrIL^agn>8Aea8!O?k`?1WZ;ajV5mdQ6Y{q; z%#z=Yj*@cS8_^OLAnOam5*iXB2L4W$C{(39gb7$e@-ui!p}_v?gW8kPe{~At_4tzc)P>o$nzRL8UO1OU=@Ml!-W=J=~Ez1iUYr>-f97 zc9e>h^&~nWORA<}t2^>K*q8|kYw}l!hzAkiU0r+o2(SCj*JGVLuc)!?liN8waa-Xf1Fmai>o1t)8y0PCyoY2DLM}@~}fx zc)ySqLSB(RJeT|r4@rMc{?7tOr+1Hp`f;ZRUkLc(W6L#_KqNt~5(7#aA(+R6Zc*fc znDO2SQ)yk`Z&FcA2~!Mkfd2ImZ;fYx^)!$c#L9KcTje1y`n718;kA(3V8A|9v#x~D z`{jBw{u(BJWL%!aK1z`d1&}SmJee}-+`nL(f))lb2Jiso( zs8C07)3i2IE)v!Xg`uKH{wfscWT)&3scvE;%1XG2uE62X}mF3r;xY=0%NEna; zVIB7X1Bn;ybe`ksKu&nYq$$`{MFn%oT+i$&J%Hc2GWfPpa$V>o@XX@6%n;F?z$&o= zh=z5^PBcqS*EpX;sq`T~Oq`H)lM zUgF_UK!8kw5gZBcCx5%hZ?i0an}dBxjRY2&LIGXM>7K5Jm?(m4#@{C;!8{{hd;Za- zYP204)9t+S2_CE$39fBbm2NyNzfp@2;5UWV*g7DVgax>oC=_pkE^8W|e6K#;u?g#z z@2SjNu`dCO7P#e+(1+$d@=_J$ZY4GPpu%}407WA~N!|cg8wCPbBAPrI%h|MMzgj+$ zsN*Mf3E6(oI!y>ryt4Z2UP9R*tzHsd;N=ls@)5Ti0)w=$mZ5+`VbS{yA_y(b+ZH5PX4$(o60i8$O8^@aFk@c=1%CsS;vnATXzA$(a=l1bR&3km% z!xcXoriQ@xv~(dWJga|;gvw0>XZ|P=Yr+D!H8lC%QXwsf25+7`Dt`m71&;|pN)ylcwqW9m4xL)7H|7ul zsesO+=Oo|(?FeiIp_!9@DhI3;YTF@M^%$}t=SfZrPpdY=?h6d(iRbjxzsGf;r;lp^ zcrNkoufKDYdaD>q#|fwgxvSSioGE@T9H9_NI}FKa5sV3;ypL-Z9U6kL051^J^-mH0 z2J=RI^i?VsF71L@JKaJouD%imVRd*=$uYh2;yRBai9+CpQ*A+60>StE>7IGIJ%LaX zt4cnBu!@_EYYT8^efvn-W+dsXSEN>{J|LVNF+N+vQoJh&7|Y9C7S$QT-C&~|fxyaA zf`9+DJb4&A3DB#qy2{L)NnXd{l;pZIX4R%`vi8k6 zAwGJ>1HWwkZuQ8}GeSa)T_ivk`-m5Ptc30SF1&bhLc8U6VVuZoL7I@x>EG=mL{jrU zqkAb5QIJo9@Bk;%;Q5f#{PaKhT43QlIDo89JTF&^1d!t1YMq8G)5Wt77uE)Xw8aeh z8!tSzOuaWJ1cb;=`A#q0oXfKa0e||=ra;0X?LdnH-2pt`G>2Xz!l~Rp7P(a9coB*~ zG208&a8IiT+=Wj>{wso~MQbndkoStp!|2Lewb#99_D)x-5EdaKxh2n$S$p)R<1S+b zf`w9Sba?O8JXJcBggh05Ko1m_fut%HFc5@kG-EdO%3UljRT*BB1M*t5Za^z|eYGtW z#7p3;yNzo+9ofBl^)gppd8K*tO;QMcAh}7)LQ5bl2W$|bs~;nYb@$7i@(@x4p-Y^+ z5_v5`c1Q+NV0fMX2DmSfK`_G@3WSMFLEuT#mIConWZ@x4cbP~aUm7ezKsT7AppC`Z z(7?~5uWT><_cLp}Q38PA=n4GpH3PkE5UZG!fE?xT;Gv=OkW6i0CmZW)-g1q7~_+|Rb_N@R#TDJjX^efQmF$BrH5v(Jc%{6PN|*V*%fEe9|T1)tR- z+)!dLKP$lXBs8atPc@HxCv&De>}+Y^BM&6`COqG|0D_~!yLmk)fEVe#g{%~EOY!XJ z(+dXl0U|;_XgUUrd9lXGHzL5OUG?MP=4>G>QXhCxv_bG};@u zupy)LHCB{+`o;3s73ruB&5Bs;#o~RjVPeVb0+ZD_RS&V?d%#gg9c89Xn`Yj6>n*c% zX^mpwQzA9C!nP2gU#!>oR0IQwwfD0|=!12^j_aVn;%OWuF|nj0YSu1KOB`1$g1aH8hsdD}<1D;e-^Yl;RT0!m64|xp@g{ zt>i{f1J!2)+pj`N%2%AP*DtH8)_L^rza9QvIeBBKf zUWn*S)feyQ7mIG>B_t%|i|3Ut!4dmz*U!VG63=5nI#E{a0Y;H3joA{*F!Eg z7>FA1v=|d|yetP0>J2{|tyR2W33c+m4AOt_IzE7>wPW9&LmHvr**QSRp8EYF9XW%z z9PmBY-Z4VAmQtO6?vbVDiTf9d&Ti5sSPBAMFCVgs1Qgv^?nkH|GqM7WO;`?i6Sxdm zL-e2x!o=M>1gIGT^@r<6{PG&mES=bMmoqO)NLRu3{r%s(r zadEL(xNxCdWKaH!P+-4U2rLLALJ$|BBC9h9KN}jXFu{t0jvYJdYd!holg0A3G7ADOAeN6W_>#QIYy`FL35hUlaZ1jd-@j(0UjEOeijD+^104d2XuwL zv4`*e#(eYT4*h$8*9A!q8{1LSDla^`O!L1a^6~I^M$o?y;J=`hdL8*fHTXJ;{+I}3 zJKwT)jL=ksIJ>c5fTdGYBvTJ&n@sCpwPB$TMg?54jiZi zJLj9P%%+W=!E7yuZz@*ua^U1b($mw;wbx#2#*ZIwzWVAb^RIs~uj~gxZTe!GdrL!I zK_1|9k+($fJ{=aKf&+P>XAD>4j_~h<(&F+%8SPVA4G1&76%Hi5SxGedn9f>M!HXfC z;p_1L4_WOq&k0!&)&&v-eTYOAG)@O=vi1eZc3Od)T41>;iNk97Gt)^XuC#r1UzP;(&x3Af_aiiI~b*qva7K1goC6rXdZd^VN+7_Z9`rtP#HY??6Xa3YN~nh#TU(zC2W!L0&ROv zge<&YX4Jw9LPe^mJW!-0ATJ&;;v*~<@tV3Z6%}q*MMafs*w{`{dElfX@N$?j4J0c- zy8>+sc;F6M;YoGulB&sWzD5Cw_1hGj!sXQnMaiQr5+hDHN*KrQpYhH{zkHYjZ&9Ec zv`bJpfTURkPDo5)f<7|xYd(a=GfK!uxW{}ahLYBW|A=5P(ZdE?2pMmL6$po=*`=e& zdAtymi1IXjS9G-x9F}9IO#Z$;%nq`%v(<|sxt*WCNiR4GfCoczlhw)`LK#hiXr!RG z#_6cW1H?-jGGvH(=bd-V2OoSO4@jl<2T}TFkee_z5d8=A5hBhs_uhN2hLPmxd;rNm zArf@ojD;V#aO`q}-0{3fNnjvxO&BTDkWsw(DtUliB(EC+jMT8{bk1knyyQV85Mw;) zte%?BLf1(LpyRoHGs0FcF}}0|?GS>)C<8*nP$1FHIL@#mI+~+S>Z*$}RV4hJct#I% zgpe$YE-U0U(1PPbSP=YOB7}W-t<0`+Eg>(6tU)|02k}l=TqPbxjxHZ6q9$hh<`TEW z?Ji<&as?BQpI}Zt;VdB^e`^S7jTkY)?A=#j)=79+S?M7Hnm6%y=u)P$nT3E2>1|;p z=_Cf^twxU?Z3Yh>Y@T@H3A1X|YV`m~$X@=#A!1$AbUP{*61SZ`9*~%Nz${&|)U02h zZ%RvQbhlH9!Me5NgnNC!!^JhjUFBgrPec<Gxm zl(*@>AxF@zgWRkJATCIiGu;5yK}ggI?RcH!4Cqk4Y}!yWcx0wwFq{)rSO78WiJD+_LWpYcM6uwDJfO$CTGSP=17195?Ex26XjaD%8pQ&5Ot1WPg{~r| z$s-quYe-c}rPQ&jAZm+uJ$lKyP4rMsRjA)FJyxDn@KGNU+X zbe8HFGrSl`LRJb`7)IY7KnIM2ahR)b^Qr)kid0RLpmCBo(SwKaJ`s-1oaZ|m3>U^p zR6^~U+7TL+P@`&ZN{ZS=&3LFiDwM|_iCJ5X)~r1mskRTTO)9i@iVoDOQEgJOil_DF zegBI0d_LFtcCIt7-+i}+t?9&hebwm3cT=Lt^=5*$R#w&Q54$6&*Uyfrf(WO(nVFf_ zVw2lAL_7dX=O~b!*@s%gjEUhG{RjlN{?sKiLEqtE)On=+u6E$YtlX3srd z%=n9#k@vnRiNJ*YS1Ox_jkhnj)|uMM9zV3IT5i4uO_klln}(6^Q4^W810MLcqxHm7 zc0xgw6YKp>)w)2_MctpswD<2h!kK$>8VJM;O8?2KdB0>{A}&{?QfSVt^>i&1iX8X{ zHGk4^n|K`2ZENeCm1Jr)^)}ywXeYc)@%|^PK%s^K@VBCt^MZ~6VfYFQg;p*1zJ=bRdCPT&aX*O!w4bL$Afr%nT`H*5w zhnjCa@~{+8B39!9BGUyRBQXsHw#UGcyz)7FNk!pT8GLDmrrU{q3>!#p_hXX1wRH`9 zDHlJ~L2962hLE6GG>O{C5bCWO!Nm#>*9lSHv4vuwGx=xj~$E0L$C-F2T?;!Xm$%#D5NlI~SU#On62zO6qyFYsC-j zdJ8j>R|Y?&qQ&AYxoldAw@($-rLBYc>fKBHmNcweA2?pkS&=V%yf-K;JkF6pc2eYN zGY|x~ARJw3fc)gi!yVlU=V64W`lpmBaq%!!2es)p=PRO^7vFY(i)zePh9&7p|6!T@ zM&s=Q2hrE7TmNOI3FZqxHlgKqj1eU0BD_lFQyqLdX?@Jz(`c`b`;Ucxa)e$irB24w zRn5JXvkA#_l<(O1w!FBqsV)tD0o!3GwYR3ezEX$5z$&ZWgg*cKc)e5A|JHa&Qk751 znT2G2+j`C=4%Hz5)7RrHmn%G7nRXxb3^WDju0Pt@mP13`ZlrmMVnPeD`|#J`wd35J znQsEjspQDytz>UB5Uc!lJ(0sp2-x`B;80!iXLtPH!{*P!-ID(3JP^U_BD4&C{Km7h zk-~0X^@1=oTzKMU@;O=mRax!tvB&pn#;OXhBr5mCn6ndm{C?q*uv{bs$2W9g;;Sc63}ccq>crC4)l9;ovG?g_BH7i>Q&Z0K6=W@{vNpoYq$_w$b3!Kqbx2B42T~ z{*)z?!wJI`^zYTlSIa8>a}tJ`Y5d(AH{W4v|LV-}jd-*K*EymqQw;Ye zXN0xN)8fy&a$M#>b;=S-Y18Einr;x{!>X$G{l>?tA@dEscTrHHY0?6&agMGZ|F4=5 z85e1KNB_JKtXU&y zGGu!*b=?26LWZZT)592!IjIvdizmF6SuH##dDqvPxr5(>iWaNN`s|ht6BX`114Aup zoqF%GRr(6dF3CS3PxEdg41r+)yFW9Vp&c#rW_dtOF5D2-*vpduIlwwJG>Jz7!U6&sm6d1VjMEULD zU`hBjTPZLDr{HrJfoF`VdG{Z=XKq!(%4;(9Lj>Lw9RDfXT5?vozi7Ju^MGVNRap~L zZ!idj!N1@lUj{75A2!XmIo0xe_sDMk1?})nj65&tv}BJFdI)qA#A^Mfgp4m*b~ex8 znce2vjnvHNQn3+C_r%~9fyQP{5 zGz?}HCwQX{w$VQ7{Nr=yl-aG;+fS7cx7)13)&e3fOpqTW%xsZNdKBS-QX*2h#*Jrw zf=BoWWHz(i5ux|&t;Qh%(1JVov=TR8Iuv4hjZ(PqbLBUen44T!3wX?D9DL8+d>H|S zvczd*YNo?)IFgLCYXBf0o0qErGHFK3vRVMwK=nVBsL#a&@$xxg-w$1Bbve)9QW;n~x}_JkjY zqazmIJn?5^;3Wxed45L4dwH?}evky%v5*3i9W%pX@sMCm8uX-bk*;j>tKaf^0{#rY zLM6!LIXyegU0DD+qS^3`poY_|$WPA>v^&PXks1nV^Z~qNr9F@q+b4R+X@sCH#?uc-Rog~YJ9&-cp99XOju%$P<3_0HQ_2a0= zf!Zs%@~(?%{nlQa0YMRoIZM!?q}~~6^0%a71INCV977KdbWM1yS3FxuRYMaV&qV&{ zTK{k~3OI%cv%mIT|8|?{pj?QZna?WdsINzIh%fc>QdKMswKO`zmAE3&t&Z8;whr0f znmV2w*Fc>~GzC_CdMmda|0I}?KL{Pe0{7Ve8!M*66p=A%B55&Oy2!(VfQ;(Q+Tqrq zT>R2O>Dl-1o3bmx>WDCyKI7nC+~Q8^!K8#tM|)f0U3S*)#~)%Y_|3e8#F^9>BSUk* zTli-A#pvCqcfY-F{>E<%98ziA2|uBI-7K`!nIRX9Ce6*J;M_FUwtc#`me9y8pJ{}P zu8t%ZtwOT0Le+xF%yD(_um-RLCT@aXv6-?brx1PRr3N{h_f*yxO{bwc@u`Q>GQj?l z+(`)ud+j#C;ndjdDRqDdRM*%?Mj-oqghY7cKO?0Ff^5~?45AOFV7HhbD&&`l`|@FW zR#?of=Q42EM5VTKZ*!ud2|)jGQmx5`;>lgD5P@gb`dheZv(0za|FU^ub!wc=O{zo2 zZ97`htKhgH^vl?%W7)OR$ctGY7=ZVm(M@C^GMLXnojWY3{6qoJkXD$rNVQTV#brVl z*DPWnW|!KT8QOLUYd}_TQ#((ME#H7lsap?Lf6HY^$=I3{_mEBg!nnG3*oFIF&7_Gg z&Wupj4g?%d>e(9+{uYD-U|&S-c}^HlJXW>bx6X3_+uf5Y!=`)9LZxkhV9=<6%Y;}l z0g3bk%`yvSYDql#L0NE5=&gJ&%4T=q7JuTc959az5~>%4a=lRT^6{a{%E&~8P?vj^ zznXoog^$Br^;n^J?I(`IJjFQUK>aK>?RzB|Qmfv*w6}-`dQ^2n$cDpdUx*lpI}*d7niytk72DjqR(aNpJvU@ zxU-`dq8|<(&=U)j<9p!7+ZFrLtt~}GMJKd9q5P=w1_FWLTjOD~2INj_+jfe&f&Kky zzO{ouNJl6LU>=PExKA77Wo`PU{|FSX${~dq!w1Re$^DVihf6K!|HrTfLH5tZ28UF< UYj~&WMsEx#<6A~}1CQkY0M7U#<^TWy literal 13896 zcmbt*RZty1(C+~b?(XjH?rz215AN;`2X}XOcPZ|!1&X`V;#Rcf`+qO@zTTPpkYqEP zY<4rhoosfJ7*%CiWCQ{P004k2FDIoA06;MPM`yyp{8w8TbS(eZz`MxlxdQ+wqyJkV zCY`G-008cHc`0#CpRKD6b~!8%9?Ze{6ADX32}-##gA*J@Y%&o75)%SBfw}=g=~`zo zwLS#_c&)U8d5b`~EHW1C7M)48y-mPCv5Zsqh`EC$jVk@)BQh%Z^?Op*%h#)Pc)I!) zoEsc{1yg;x`pk#|y`^af0+y;2Y~qnn;{gMUDd0m@2Hg=qJ-xMg4O^l55K`uj7v=gdehEVkj8;HNZ~DU9eHFv}I~8o#hTK%PG_ z&nG+!Zxps~l2B;Ud}o4RQ*G+4!^O0O@Z}D%MM1+Sj*u^XJOf7p9tv+5_ZxHDH18d( z340>!#jHaI$h0IjDqE($#5Vp=z{@gOU22GDXM~rFt?bS5A1Tc}Le(Ro*}(ij>i+PF z*|4oWtCY8+{S(PH`d@3W$rQ}hjeU)nYopWdUhK$AUSo5pu1udUMb3@C z;>*l1%sI&ABob(-In_M!=n(8<+j*cP(AyPLO&PVhW>v%7s85iVGPMP; zXw7-66l4O%MbwAUqJl`+)Ry9>C2hmi+0c7iv+oj^x-3v|5KSGn-!T#*PJiW3J*}vqsw|~uWq<(JdSlq=BMTQr=a!k69dKwQ>g3dcJ)Y8U`^#X#7d+909KJz}x|N zJF>*JrZb50#J;}T+Xozydn~$N*KzGP8}Eq4YWR0+kc5{U~Q1Dk9CFhiZu%8xy=$vE8^u^*)dKNkN6^Oj*gL zZFryfpE`w9veZ$-BF%&j&}HI%r`9X!8c7ZT<_rl#rrEZJek#nIu|mktFwZ=6T)`J= zj6&07xL9C{AFxk=Uu4>k?wbdQWB_rZ-y2Y@-&}r9I0c$psr%VU_0|rEM{iXuo4-n(uKGtSe-CO5bg%z zKZgD)!C^yH2#oY1VkXW}$YfW}k7y-l6~x)$u7g|!lK2+aEr)0FyRHBeSDEG!li6iB z5hwo$HedAgFrmBVRPvwr;Nx{ElTQj}jmr`L3cMs}co{asBu{OyK?NW8clDt+nl2

GD3kZh5nl@IteN2+N}@X{fRC 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 diff --git a/assets/images/icons/tankman.png b/assets/images/icons/tankman.png index 92b37798babecd4ccdfdf8691e148724ed60098a..873e5270c7d9587fed27da1c044ef98d897e87ab 100644 GIT binary patch literal 5814 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 literal 3300 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 - - - - - - `Any` is a type that is compatible with any other in both ways. - - This means that a value of any type can be assigned to `Any`, and - vice-versa, a value of `Any` type can be assigned to any other type. - - It's a more type-safe alternative to `Dynamic`, because it doesn't - support field access or operators and it's bound to monomorphs. So, - to work with the actual value, it needs to be explicitly promoted - to another type. - - - - - - <__registerLimeModule set="method"> - - - - - - show - - - - <__unregisterLimeModule set="method"> - - - - - - show - - - - - - - - - - - - ()]]> - Exit events are dispatched when the application is exiting - - <__registerLimeModule set="method" line="27"> - - - - - - - <__unregisterLimeModule set="method" line="29"> - - - - - - - - - Creates a new `Module` instance - - `Module` instances can be added to a running `Application`, - simplifying support for adding new components, such as a renderer, - input handler or higher-level framework. - - "tags=\"haxe,release\"" - - - - - <_loadPrime public="1" set="method" line="34" static="1"> - - - - - - - - - - { quietFail : false } - - - - - - - - - - - - - - - (cpp.Prime._loadPrime("lime", "lime_application_create", "o", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_application_event_manager_register", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_application_exec", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_application_init", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_application_quit", "oi", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_application_set_frame_rate", "odv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_application_update", "ob", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_audio_load", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_audio_load_bytes", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_audio_load_file", "ooo", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_bytes_from_data_pointer", "dioo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_bytes_get_data_pointer", "od", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_bytes_get_data_pointer_offset", "oid", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_bytes_read_file", "soo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cffi_get_native_pointer", "od", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_clipboard_event_manager_register", "oov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_clipboard_get_text", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_clipboard_set_text", "sv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_data_pointer_offset", "did", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_deflate_compress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_deflate_decompress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_drop_event_manager_register", "oov", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_file_dialog_open_directory", "ssso", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_file_dialog_open_file", "ssso", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_file_dialog_open_files", "ssso", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_file_dialog_save_file", "ssso", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_file_watcher_create", "oo", false))]]> - - - - - - - - - cpp.Object -> Bool>(cpp.Prime._loadPrime("lime", "lime_file_watcher_add_directory", "oobo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_file_watcher_remove_directory", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_file_watcher_update", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_ascender", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_descender", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_family_name", "oo", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_font_get_glyph_index", "osi", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_font_get_glyph_indices", "oso", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_font_get_glyph_metrics", "oio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_height", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_num_glyphs", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_underline_position", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_underline_thickness", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_get_units_per_em", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_load", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_load_bytes", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_font_load_file", "oo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_font_outline_decompose", "oio", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_font_render_glyph", "oioo", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_font_render_glyphs", "oooo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_font_set_size", "oiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gamepad_add_mappings", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gamepad_get_device_guid", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gamepad_get_device_name", "io", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gamepad_event_manager_register", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gzip_compress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gzip_decompress", "ooo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_haptic_vibrate", "iiv", false))]]> - - - - - - - - - - Int -> Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_encode", "oiioo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_load", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_load_bytes", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_load_file", "ooo", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_data_util_color_transform", "ooov", false))]]> - - - - - - - - - - - - cpp.Object -> cpp.Object -> cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_copy_channel", "ooooiiv", false))]]> - - - - - - - - - - - - - cpp.Object -> cpp.Object -> cpp.Object -> cpp.Object -> cpp.Object -> Bool>(cpp.Prime._loadPrime("lime", "lime_image_data_util_copy_pixels", "oooooobv", false))]]> - - - - - - - - - - cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_fill_rect", "ooiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_flood_fill", "oiiiiv", false))]]> - - - - - - - - - - cpp.Object -> Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_image_data_util_get_pixels", "ooiov", false))]]> - - - - - - - - - - - - - - cpp.Object -> cpp.Object -> cpp.Object -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_merge", "ooooiiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_image_data_util_multiply_alpha", "ov", false))]]> - - - - - - - - - - cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_resize", "ooiiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_set_format", "oiv", false))]]> - - - - - - - - - - - - cpp.Object -> cpp.Object -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_image_data_util_set_pixels", "oooiiiv", false))]]> - - - - - - - - - - - - - - - - - - cpp.Object -> cpp.Object -> cpp.Object -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Bool>(cpp.Prime._loadPrime("lime", "lime_image_data_util_threshold", "ooooiiiiiiibi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_image_data_util_unmultiply_alpha", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_device_guid", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_device_name", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_num_axes", "ii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_num_buttons", "ii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_num_hats", "ii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_joystick_get_num_trackballs", "ii", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_joystick_event_manager_register", "oov", false))]]> - - - - - - - - - Bool -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_jpeg_decode_bytes", "oboo", false))]]> - - - - - - - - - Bool -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_jpeg_decode_file", "sboo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_key_code_from_scan_code", "ff", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_key_code_to_scan_code", "ff", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_key_event_manager_register", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_lzma_compress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_lzma_decompress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_mouse_event_manager_register", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_neko_execute", "sv", false))]]> - - - - - - - - - Bool -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_png_decode_bytes", "oboo", false))]]> - - - - - - - - - Bool -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_png_decode_file", "sboo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_render_event_manager_register", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_sensor_event_manager_register", "oov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_allow_screen_timeout", "b", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_system_set_allow_screen_timeout", "bb", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_device_model", "o", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_device_vendor", "o", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_system_get_directory", "isso", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_display", "io", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_ios_tablet", "b", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_num_displays", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_platform_label", "o", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_platform_name", "o", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_platform_version", "o", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_system_get_timer", "d", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_system_open_file", "sv", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_system_open_url", "ssv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_text_event_manager_register", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_touch_event_manager_register", "oov", false))]]> - - - - - - - - - String -> String>(cpp.Prime._loadPrime("lime", "lime_window_alert", "ossv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_close", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_context_flip", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_context_lock", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_context_make_current", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_context_unlock", "ov", false))]]> - - - - - - - - - - - Int -> Int -> Int -> String>(cpp.Prime._loadPrime("lime", "lime_window_create", "oiiiso", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_focus", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_context", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_context_type", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_display", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_display_mode", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_height", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_id", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_mouse_lock", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_scale", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_text_input_enabled", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_width", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_x", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_window_get_y", "oi", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_window_move", "oiiv", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_read_pixels", "oooo", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_window_resize", "oiiv", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_borderless", "obb", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_window_set_cursor", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_set_display_mode", "ooo", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_fullscreen", "obb", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_set_icon", "oov", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_maximized", "obb", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_minimized", "obb", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_mouse_lock", "obv", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_resizable", "obb", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_text_input_enabled", "obv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_set_text_input_rect", "oov", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_window_set_title", "oso", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_window_warp_mouse", "oiiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_event_manager_register", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_zlib_compress", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_zlib_decompress", "ooo", false))]]> - - - - - - - - - - - Int -> cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_buffer_data", "oioiiv", false))]]> - - - - - - - - - - - Int -> cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_buffer3f", "oifffv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_buffer3i", "oiiiiv", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_bufferf", "oifv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_bufferfv", "oiov", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_bufferi", "oiiv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_bufferiv", "oiov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_cleanup", "v", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_delete_buffer", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_delete_buffers", "iov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_delete_source", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_delete_sources", "iov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_disable", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_distance_model", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_doppler_factor", "fv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_doppler_velocity", "fv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_enable", "iv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_source", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_sources", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_boolean", "ib", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_booleanv", "iio", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_buffer", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_buffers", "io", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_buffer3f", "oio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_buffer3i", "oio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_bufferf", "oif", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_get_bufferfv", "oiio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_bufferi", "oii", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_get_bufferiv", "oiio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_double", "id", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_doublev", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_enum_value", "si", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_error", "i", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_float", "if", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_floatv", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_integer", "ii", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_integerv", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_listener3f", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_listener3i", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_listenerf", "if", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_listenerfv", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_listeneri", "ii", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_listeneriv", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_proc_address", "sd", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_source3f", "oio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_source3i", "oio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_sourcef", "oif", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_get_sourcefv", "oiio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_sourcei", "oio", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_get_sourceiv", "oiio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_get_string", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_buffer", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_enabled", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_extension_present", "sb", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_source", "ob", false))]]> - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_listener3f", "ifffv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_listener3i", "iiiiv", false))]]> - - - - - - - - cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_listenerf", "ifv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_listenerfv", "iov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_listeneri", "iiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_listeneriv", "iov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_source_pause", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_source_pausev", "iov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_source_play", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_source_playv", "iov", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_source_queue_buffers", "oiov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_source_rewind", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_source_rewindv", "iov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_source_stop", "ov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_source_stopv", "iov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_source_unqueue_buffers", "oio", false))]]> - - - - - - - - - - - Int -> cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_source3f", "oifffv", false))]]> - - - - - - - - - - - Int -> cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_source3i", "oioiiv", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_sourcef", "oifv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_sourcefv", "oiov", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_sourcei", "oiov", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_sourceiv", "oiov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_speed_of_sound", "fv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_close_device", "ob", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_alc_create_context", "ooo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_destroy_context", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_get_contexts_device", "oo", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_alc_get_current_context", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_get_error", "oi", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_alc_get_integerv", "oiio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_alc_get_string", "oio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_make_context_current", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_open_device", "so", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_pause_device", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_process_context", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_resume_device", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_alc_suspend_context", "ov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_filter", "o", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_filteri", "oiov", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_filterf", "oifv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_remove_direct_filter", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_filter", "ob", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_get_filteri", "oii", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_effect", "o", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_effectf", "oifv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_effectfv", "oiov", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_al_effecti", "oiiv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_effectiv", "oiov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_effect", "ob", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_al_gen_aux", "o", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_al_auxf", "oifv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_auxfv", "oiov", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_auxi", "oiov", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_al_auxiv", "oiov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_al_is_aux", "ob", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_al_remove_send", "oiv", false))]]> - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_arc", "odddddv", false))]]> - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_arc_negative", "odddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_clip", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_clip_preserve", "ov", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_clip_extents", "oddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_close_path", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_copy_page", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_create", "oo", false))]]> - - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_curve_to", "oddddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_fill", "ov", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_fill_extents", "oddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_fill_preserve", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_antialias", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_current_point", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_dash", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_dash_count", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_fill_rule", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_font_face", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_font_options", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_group_target", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_line_cap", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_line_join", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_line_width", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_matrix", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_miter_limit", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_operator", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_source", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_target", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_get_tolerance", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_has_current_point", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_identity_matrix", "ov", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_in_clip", "oddb", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_in_fill", "oddb", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_in_stroke", "oddb", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_line_to", "oddv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_mask", "oov", false))]]> - - - - - - - - - - cpp.Object -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_mask_surface", "ooddv", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_move_to", "oddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_new_path", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_paint", "ov", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_paint_with_alpha", "odv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pop_group", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pop_group_to_source", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_push_group", "ov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_push_group_with_content", "oiv", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_rectangle", "oddddv", false))]]> - - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_rel_curve_to", "oddddddv", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_rel_line_to", "oddv", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_rel_move_to", "oddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_reset_clip", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_restore", "ov", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_rotate", "odv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_save", "ov", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_scale", "oddv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_set_antialias", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_set_dash", "oov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_set_fill_rule", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_set_font_face", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_set_font_options", "oov", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_font_size", "odv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_set_line_cap", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_set_line_join", "oiv", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_line_width", "odv", false))]]> - - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_matrix", "oddddddv", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_miter_limit", "odv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_set_operator", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_set_source", "oov", false))]]> - - - - - - - - - - Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_source_rgb", "odddv", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_source_rgba", "oddddv", false))]]> - - - - - - - - - - cpp.Object -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_source_surface", "ooddv", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_cairo_set_tolerance", "odv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_show_glyphs", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_show_page", "ov", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_cairo_show_text", "osv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_status", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_stroke", "ov", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_stroke_extents", "oddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_stroke_preserve", "ov", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_cairo_text_path", "osv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_transform", "oov", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_translate", "oddv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_version", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_version_string", "s", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_face_status", "oi", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_options_create", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_options_get_antialias", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_options_get_hint_metrics", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_options_get_hint_style", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_font_options_get_subpixel_order", "oi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_font_options_set_antialias", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_font_options_set_hint_metrics", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_font_options_set_hint_style", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_font_options_set_subpixel_order", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_ft_font_face_create", "oio", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_create", "iiio", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_create_for_data", "diiiio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_get_data", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_get_format", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_get_height", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_get_stride", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_image_surface_get_width", "oi", false))]]> - - - - - - - - - - - Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_add_color_stop_rgb", "oddddv", false))]]> - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_add_color_stop_rgba", "odddddv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pattern_create_for_surface", "oo", false))]]> - - - - - - - - - - Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_create_linear", "ddddo", false))]]> - - - - - - - - - - - - Float -> Float -> Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_create_radial", "ddddddo", false))]]> - - - - - - - - - Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_create_rgb", "dddo", false))]]> - - - - - - - - - - Float -> Float -> Float>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_create_rgba", "ddddo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pattern_get_color_stop_count", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pattern_get_extend", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pattern_get_filter", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_pattern_get_matrix", "oo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_set_extend", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_set_filter", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_cairo_pattern_set_matrix", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_cairo_surface_flush", "ov", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_curl_getdate", "sdd", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_curl_global_cleanup", "v", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_global_init", "ii", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_curl_version", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_version_info", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_cleanup", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_duphandle", "oo", false))]]> - - - - - - - - - String -> Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_escape", "osio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_flush", "ov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_getinfo", "oio", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_init", "o", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_pause", "oii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_perform", "oi", false))]]> - - - - - - - - - - cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_recv", "ooiii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_reset", "ov", false))]]> - - - - - - - - - - cpp.Object -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_send", "ooiii", false))]]> - - - - - - - - - - Int -> cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_curl_easy_setopt", "oiooi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_easy_strerror", "io", false))]]> - - - - - - - - - - String -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_curl_easy_unescape", "osiio", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_curl_multi_init", "o", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_curl_multi_add_handle", "oooi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_multi_get_running_handles", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_multi_info_read", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_curl_multi_perform", "oi", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_curl_multi_remove_handle", "ooi", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_curl_multi_setopt", "oioi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_curl_multi_wait", "oii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_active_texture", "iv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_attach_shader", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_begin_query", "iiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_begin_transform_feedback", "iv", false))]]> - - - - - - - - - Int -> String>(cpp.Prime._loadPrime("lime", "lime_gl_bind_attrib_location", "iisv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_buffer", "iiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_buffer_base", "iiiv", false))]]> - - - - - - - - - - - Int -> Int -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_buffer_range", "iiidiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_framebuffer", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_renderbuffer", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_sampler", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_texture", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_bind_transform_feedback", "iiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_bind_vertex_array", "iv", false))]]> - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_blend_color", "ffffv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_blend_equation", "iv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_blend_equation_separate", "iiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_blend_func", "iiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_blend_func_separate", "iiiiv", false))]]> - - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_blit_framebuffer", "iiiiiiiiiiv", false))]]> - - - - - - - - - - Int -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_buffer_data", "iidiv", false))]]> - - - - - - - - - - Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_buffer_sub_data", "iiidv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_check_framebuffer_status", "ii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_clear", "iv", false))]]> - - - - - - - - - - Int -> cpp.Float32 -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_clear_bufferfi", "iifiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_clear_bufferfv", "iidv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_clear_bufferiv", "iidv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_clear_bufferuiv", "iidv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_client_wait_sync", "oiiii", false))]]> - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_clear_color", "ffffv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_clear_depthf", "fv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_clear_stencil", "iv", false))]]> - - - - - - - - - - Bool -> Bool -> Bool>(cpp.Prime._loadPrime("lime", "lime_gl_color_mask", "bbbbv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_compile_shader", "iv", false))]]> - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_compressed_tex_image_2d", "iiiiiiidv", false))]]> - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_compressed_tex_image_3d", "iiiiiiiidv", false))]]> - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_compressed_tex_sub_image_2d", "iiiiiiiidv", false))]]> - - - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_compressed_tex_sub_image_3d", "iiiiiiiiiidv", false))]]> - - - - - - - - - - - Int -> lime.utils.DataPointer -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_copy_buffer_sub_data", "iiddiv", false))]]> - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_copy_tex_image_2d", "iiiiiiiiv", false))]]> - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_copy_tex_sub_image_2d", "iiiiiiiiv", false))]]> - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_copy_tex_sub_image_3d", "iiiiiiiiiv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_buffer", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_framebuffer", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_program", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_query", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_renderbuffer", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_sampler", "i", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_shader", "ii", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_texture", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_transform_feedback", "i", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_create_vertex_array", "i", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_cull_face", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_buffer", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_framebuffer", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_program", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_query", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_renderbuffer", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_sampler", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_shader", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_sync", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_texture", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_transform_feedback", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_delete_vertex_array", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_depth_func", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_depth_mask", "bv", false))]]> - - - - - - - - cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_depth_rangef", "ffv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_detach_shader", "iiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_disable", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_disable_vertex_attrib_array", "iv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_draw_arrays", "iiiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_draw_arrays_instanced", "iiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_draw_buffers", "ov", false))]]> - - - - - - - - - - Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_draw_elements", "iiidv", false))]]> - - - - - - - - - - - Int -> Int -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_draw_elements_instanced", "iiidiv", false))]]> - - - - - - - - - - - - Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_draw_range_elements", "iiiiidv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_enable", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_enable_vertex_attrib_array", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_end_query", "iv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_end_transform_feedback", "v", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_fence_sync", "iio", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_finish", "v", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_flush", "v", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_framebuffer_renderbuffer", "iiiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_framebuffer_texture2D", "iiiiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_framebuffer_texture_layer", "iiiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_front_face", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_generate_mipmap", "iv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_attrib", "iio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_uniform", "iio", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_uniform_blocki", "iiii", false))]]> - - - - - - - - - - Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_uniform_blockiv", "iiidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_uniform_block_name", "iio", false))]]> - - - - - - - - - - cpp.Object -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_active_uniformsiv", "ioidv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_attached_shaders", "io", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_gl_get_attrib_location", "isi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_boolean", "ib", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_booleanv", "idv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_buffer_parameteri", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_buffer_parameteri64v", "iidv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_buffer_parameteriv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_buffer_pointerv", "iid", false))]]> - - - - - - - - - - lime.utils.DataPointer -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_buffer_sub_data", "ididv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_context_attributes", "o", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_error", "i", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_extension", "so", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_float", "if", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_floatv", "idv", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_gl_get_frag_data_location", "isi", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_framebuffer_attachment_parameteri", "iiii", false))]]> - - - - - - - - - - Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_framebuffer_attachment_parameteriv", "iiidv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_integer", "ii", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_integer64v", "idv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_integer64i_v", "iidv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_integerv", "idv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_integeri_v", "iidv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_internalformativ", "iiiidv", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gl_get_program_binary", "iiov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_program_info_log", "io", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_programi", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_programiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_queryi", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_queryiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_query_objectui", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_query_objectuiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_renderbuffer_parameteri", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_renderbuffer_parameteriv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_sampler_parameterf", "iif", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_sampler_parameterfv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_sampler_parameteri", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_sampler_parameteriv", "iidv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_shader_info_log", "io", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_shaderi", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_shaderiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_shader_precision_format", "iio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_shader_source", "io", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_get_string", "io", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_stringi", "iio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_sync_parameteri", "oii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_sync_parameteriv", "oidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_tex_parameterf", "iif", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_tex_parameterfv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_tex_parameteri", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_tex_parameteriv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_transform_feedback_varying", "iio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformf", "iif", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformfv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformi", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformui", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniformuiv", "iidv", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniform_block_index", "isi", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_gl_get_uniform_location", "isi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribf", "iif", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribfv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribi", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribii", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribiiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribiui", "iii", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attribiuiv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_get_vertex_attrib_pointerv", "iid", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_hint", "iiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gl_invalidate_framebuffer", "iov", false))]]> - - - - - - - - - - - - cpp.Object -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_invalidate_sub_framebuffer", "ioiiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_buffer", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_enabled", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_framebuffer", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_program", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_query", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_renderbuffer", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_sampler", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_shader", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_sync", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_texture", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_transform_feedback", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_is_vertex_array", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_line_width", "fv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_link_program", "iv", false))]]> - - - - - - - - - - lime.utils.DataPointer -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_map_buffer_range", "idiid", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_object_deregister", "ov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_object_from_id", "iio", false))]]> - - - - - - - - - Int -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_gl_object_register", "iioo", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_pause_transform_feedback", "v", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_pixel_storei", "iiv", false))]]> - - - - - - - - cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_polygon_offset", "ffv", false))]]> - - - - - - - - - - Int -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_program_binary", "iidiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_program_parameteri", "iiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_read_buffer", "iv", false))]]> - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_read_pixels", "iiiiiidv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_release_shader_compiler", "v", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_renderbuffer_storage", "iiiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_renderbuffer_storage_multisample", "iiiiiv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_gl_resume_transform_feedback", "v", false))]]> - - - - - - - - Bool>(cpp.Prime._loadPrime("lime", "lime_gl_sample_coverage", "fbv", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_sampler_parameterf", "iifv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_sampler_parameteri", "iiiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_scissor", "iiiiv", false))]]> - - - - - - - - - - Int -> lime.utils.DataPointer -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_shader_binary", "oidiv", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_gl_shader_source", "isv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_stencil_func", "iiiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_stencil_func_separate", "iiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_stencil_mask", "iv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_stencil_mask_separate", "iiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_stencil_op", "iiiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_stencil_op_separate", "iiiiv", false))]]> - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_tex_image_2d", "iiiiiiiidv", false))]]> - - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_tex_image_3d", "iiiiiiiiidv", false))]]> - - - - - - - - - Int -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_tex_parameterf", "iifv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_tex_parameteri", "iiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_tex_storage_2d", "iiiiiv", false))]]> - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_tex_storage_3d", "iiiiiiv", false))]]> - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_tex_sub_image_2d", "iiiiiiiidv", false))]]> - - - - - - - - - - - - - - - - - Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_tex_sub_image_3d", "iiiiiiiiiidv", false))]]> - - - - - - - - - cpp.Object -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_transform_feedback_varyings", "ioiv", false))]]> - - - - - - - - cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1f", "ifv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1fv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1i", "iiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1iv", "iidv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1ui", "iiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform1uiv", "iidv", false))]]> - - - - - - - - - cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2f", "iffv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2fv", "iidv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2i", "iiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2iv", "iidv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2ui", "iiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform2uiv", "iidv", false))]]> - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3f", "ifffv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3fv", "iidv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3i", "iiiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3iv", "iidv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3ui", "iiiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform3uiv", "iidv", false))]]> - - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4f", "iffffv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4fv", "iidv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4i", "iiiiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4iv", "iidv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4ui", "iiiiiv", false))]]> - - - - - - - - - Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform4uiv", "iidv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_block_binding", "iiiv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix2fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix2x3fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix2x4fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix3fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix3x2fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix3x4fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix4fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix4x2fv", "iibdv", false))]]> - - - - - - - - - - Int -> Bool -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_uniform_matrix4x3fv", "iibdv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_unmap_buffer", "ib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_use_program", "iv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_gl_validate_program", "iv", false))]]> - - - - - - - - cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib1f", "ifv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib1fv", "idv", false))]]> - - - - - - - - - cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib2f", "iffv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib2fv", "idv", false))]]> - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib3f", "ifffv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib3fv", "idv", false))]]> - - - - - - - - - - - cpp.Float32 -> cpp.Float32 -> cpp.Float32 -> cpp.Float32>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib4f", "iffffv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib4fv", "idv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attribi4i", "iiiiiv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attribi4iv", "idv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attribi4ui", "iiiiiv", false))]]> - - - - - - - - lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attribi4uiv", "idv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib_divisor", "iiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib_ipointer", "iiiidv", false))]]> - - - - - - - - - - - - Int -> Int -> Bool -> Int -> lime.utils.DataPointer>(cpp.Prime._loadPrime("lime", "lime_gl_vertex_attrib_pointer", "iiibidv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_viewport", "iiiiv", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_gl_wait_sync", "oiiiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_blob_create", "diio", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_blob_create_sub_blob", "oiio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_get_data", "od", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_get_data_writable", "od", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_get_empty", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_get_length", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_is_immutable", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_blob_make_immutable", "ov", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_add", "oiiv", false))]]> - - - - - - - - - - - lime.utils.DataPointer -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_add_codepoints", "odiiiv", false))]]> - - - - - - - - - - String -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_add_utf8", "osiiv", false))]]> - - - - - - - - - - - lime.utils.DataPointer -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_add_utf16", "odiiiv", false))]]> - - - - - - - - - - - lime.utils.DataPointer -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_add_utf32", "odiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_allocation_successful", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_clear_contents", "ov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_create", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_cluster_level", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_content_type", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_direction", "oi", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_empty", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_flags", "oi", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_glyph_infos", "ooo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_glyph_positions", "ooo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_language", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_length", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_replacement_codepoint", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_script", "oi", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_get_segment_properties", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_guess_segment_properties", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_normalize_glyphs", "ov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_preallocate", "oib", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_reset", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_reverse", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_reverse_clusters", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_serialize_format_from_string", "si", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_serialize_format_to_string", "io", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_buffer_serialize_list_formats", "o", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_cluster_level", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_content_type", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_direction", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_flags", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_language", "oov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_length", "oib", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_replacement_codepoint", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_script", "oiv", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_buffer_set_segment_properties", "oov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_face_create", "oio", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_get_empty", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_get_glyph_count", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_get_index", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_get_upem", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_is_immutable", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_make_immutable", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_face_reference_blob", "oo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_face_reference_table", "oio", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_face_set_glyph_count", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_face_set_index", "oiv", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_face_set_upem", "oiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_feature_from_string", "so", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_feature_to_string", "oo", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_add_glyph_origin_for_direction", "oiiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_create", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_create_sub_font", "oo", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_get_empty", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_get_face", "oo", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_get_glyph_advance_for_direction", "oiio", false))]]> - - - - - - - - - - Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_get_glyph_kerning_for_direction", "oiiio", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_get_glyph_origin_for_direction", "oiio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_get_parent", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_get_ppem", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_get_scale", "oo", false))]]> - - - - - - - - String>(cpp.Prime._loadPrime("lime", "lime_hb_font_glyph_from_string", "osi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_glyph_to_string", "oio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_is_immutable", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_font_make_immutable", "ov", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_set_ppem", "oiiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_set_scale", "oiiv", false))]]> - - - - - - - - - - - Int -> Int -> Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_font_subtract_glyph_origin_for_direction", "oiiiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_ft_font_create", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_ft_font_create_referenced", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_ft_font_get_load_flags", "oi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_ft_font_set_load_flags", "oiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_language_from_string", "so", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_language_get_default", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_language_to_string", "oo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_segment_properties_equal", "oob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_segment_properties_hash", "oi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_set_add", "oiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_set_add_range", "oiiv", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_allocation_successful", "ob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_clear", "ov", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_create", "o", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_set_del", "oiv", false))]]> - - - - - - - - - Int -> Int>(cpp.Prime._loadPrime("lime", "lime_hb_set_del_range", "oiiv", false))]]> - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_get_empty", "o", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_get_max", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_get_min", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_get_population", "oi", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_hb_set_has", "oib", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_intersect", "oov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_invert", "ov", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_is_empty", "ob", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_is_equal", "oob", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_next", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_hb_set_next_range", "oo", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_set", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_subtract", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_symmetric_difference", "oov", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_set_union", "oov", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_hb_shape", "ooov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_bitrate", "oii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_bitrate_instant", "oi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_clear", "ov", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_comment", "oio", false))]]> - - - - - - - - cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_crosslap", "ooo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_from_bytes", "oo", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_from_file", "so", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_info", "oio", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_seek", "oooi", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_seek_lap", "oooi", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_seek_page", "oooi", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_seek_page_lap", "oooi", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_raw_seek", "oooi", false))]]> - - - - - - - - - cpp.Object -> cpp.Object>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_raw_seek_lap", "oooi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_tell", "oo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_pcm_total", "oio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_raw_tell", "oo", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_raw_total", "oio", false))]]> - - - - - - - - - - - - - cpp.Object -> Int -> Int -> Bool -> Int -> Bool>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_read", "ooiibibo", false))]]> - - - - - - - - - cpp.Object -> Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_read_float", "ooio", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_seekable", "ob", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_serial_number", "oii", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_streams", "oi", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_seek", "odi", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_seek_lap", "odi", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_seek_page", "odi", false))]]> - - - - - - - - Float>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_seek_page_lap", "odi", false))]]> - - - - - - - (cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_tell", "od", false))]]> - - - - - - - - Int>(cpp.Prime._loadPrime("lime", "lime_vorbis_file_time_total", "oid", false))]]> - - - - "tags=\"haxe,release\"" - - - - - - - new ApplicationEventInfo(UPDATE) - - - - new ClipboardEventInfo() - - - - - - - ()]]> - - - - new DropEventInfo() - - - - new GamepadEventInfo() - - - - new JoystickEventInfo() - - - - new KeyEventInfo() - - - - new MouseEventInfo() - - - - new RenderEventInfo(RENDER) - - - - new SensorEventInfo() - - - - new TextEventInfo() - - - - new TouchEventInfo() - - - - ()]]> - - - - new WindowEventInfo() - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - haxe.Timer - lime._internal.backend.native.NativeCFFI - lime._internal.backend.native.NativeOpenGLRenderContext - lime._internal.backend.native.NativeWindow - lime.app.Application - lime.graphics.opengl.GL - lime.graphics.OpenGLRenderContext - lime.graphics.Renderer - lime.system.Clipboard - lime.system.Sensor - lime.ui.Gamepad - lime.ui.Joystick - lime.ui.Window - - - - - - - The current Application instance that is executing - - - - - - - Meta-data values for the application, such as a version or a package name - - - - A list of currently attached Module instances - - - - - - - ()]]> - Update events are dispatched each frame (usually just before rendering) - - - - - - - ()]]> - Dispatched when a new window has been created by this application - - - - The Preloader for the current Application - - - - The Window associated with this Application, or the first Window - if there are multiple Windows active - - - - A list of active Window instances associated with this Application - - <__backend> - - - - <__preloader> - - - - <__window> - - - - <__windowByID> - - - - - - - <__windows> - - - - - - - - - Adds a new module to the Application - @param module A module to add - - - - - - - Creates a new Window and adds it to the Application - @param attributes A set of parameters to initialize the window - - - - Execute the Application. On native platforms, this method - blocks until the application is finished running. On other - platforms, it will return immediately - @return An exit code, 0 if there was no error - - - - - - - - - Called when a gamepad axis move event is fired - @param gamepad The current gamepad - @param axis The axis that was moved - @param value The axis value (between 0 and 1) - - - - - - - - Called when a gamepad button down event is fired - @param gamepad The current gamepad - @param button The button that was pressed - - - - - - - - Called when a gamepad button up event is fired - @param gamepad The current gamepad - @param button The button that was released - - - - - - - Called when a gamepad is connected - @param gamepad The gamepad that was connected - - - - - - - Called when a gamepad is disconnected - @param gamepad The gamepad that was disconnected - - - - - - - - - Called when a joystick axis move event is fired - @param joystick The current joystick - @param axis The axis that was moved - @param value The axis value (between 0 and 1) - - - - - - - - Called when a joystick button down event is fired - @param joystick The current joystick - @param button The button that was pressed - - - - - - - - Called when a joystick button up event is fired - @param joystick The current joystick - @param button The button that was released - - - - - - - Called when a joystick is connected - @param joystick The joystick that was connected - - - - - - - Called when a joystick is disconnected - @param joystick The joystick that was disconnected - - - - - - - - - Called when a joystick hat move event is fired - @param joystick The current joystick - @param hat The hat that was moved - @param position The current hat position - - - - - - - - - - Called when a joystick axis move event is fired - @param joystick The current joystick - @param trackball The trackball that was moved - @param x The x movement of the trackball (between 0 and 1) - @param y The y movement of the trackball (between 0 and 1) - - - - - - - - Called when a key down event is fired on the primary window - @param keyCode The code of the key that was pressed - @param modifier The modifier of the key that was pressed - - - - - - - - Called when a key up event is fired on the primary window - @param keyCode The code of the key that was released - @param modifier The modifier of the key that was released - - - - - - - Called when the module is exiting - - - - - - - - - Called when a mouse down event is fired on the primary window - @param x The current x coordinate of the mouse - @param y The current y coordinate of the mouse - @param button The ID of the mouse button that was pressed - - - - - - - - Called when a mouse move event is fired on the primary window - @param x The current x coordinate of the mouse - @param y The current y coordinate of the mouse - - - - - - - - Called when a mouse move relative event is fired on the primary window - @param x The x movement of the mouse - @param y The y movement of the mouse - - - - - - - - - Called when a mouse up event is fired on the primary window - @param x The current x coordinate of the mouse - @param y The current y coordinate of the mouse - @param button The ID of the button that was released - - - - - - - - - Called when a mouse wheel event is fired on the primary window - @param deltaX The amount of horizontal scrolling (if applicable) - @param deltaY The amount of vertical scrolling (if applicable) - @param deltaMode The units of measurement used - - - - Called when a preload complete event is fired - - - - - - - - Called when a preload progress event is fired - @param loaded The number of items that are loaded - @param total The total number of items will be loaded - - - - Called when a render context is lost on the primary window - - - - - - - Called when a render context is restored on the primary window - @param context The render context relevant to the event - - - - - - - - - Called when a text edit event is fired on the primary window - @param text The current replacement text - @param start The starting index for the edit - @param length The length of the edit - - - - - - - Called when a text input event is fired on the primary window - @param text The current input text - - - - - - - Called when a touch cancel event is fired - @param touch The current touch object - - - - - - - Called when a touch end event is fired - @param touch The current touch object - - - - - - - Called when a touch move event is fired - @param touch The current touch object - - - - - - - Called when a touch start event is fired - @param touch The current touch object - - - - Called when a window activate event is fired on the primary window - - - - Called when a window close event is fired on the primary window - - - - Called when the primary window is created - - - - Called when a window deactivate event is fired on the primary window - - - - - - - Called when a window drop file event is fired on the primary window - - - - Called when a window enter event is fired on the primary window - - - - Called when a window expose event is fired on the primary window - - - - Called when a window focus in event is fired on the primary window - - - - Called when a window focus out event is fired on the primary window - - - - Called when the primary window enters fullscreen - - - - Called when a window leave event is fired on the primary window - - - - - - - - Called when a window move event is fired on the primary window - @param x The x position of the window in desktop coordinates - @param y The y position of the window in desktop coordinates - - - - Called when the primary window is minimized - - - - - - - - Called when a window resize event is fired on the primary window - @param width The width of the window - @param height The height of the window - - - - Called when the primary window is restored from being minimized or fullscreen - - - - - - - Removes a module from the Application - @param module A module to remove - - - - - - - Called when a render event is fired on the primary window - @param context The render context ready to be rendered - - - - - - - Called when an update event is fired on the primary window - @param deltaTime The amount of time in milliseconds that has elapsed since the last update - - <__addWindow set="method" line="461"> - - - - - - - <__createWindow set="method" line="507"> - - - - - - - <__registerLimeModule set="method" line="514" override="1"> - - - - - - - <__removeWindow set="method" line="540"> - - - - - - - <__onGamepadConnect set="method" line="562"> - - - - - - - <__onJoystickConnect set="method" line="572"> - - - - - - - <__onModuleExit set="method" line="584"> - - - - - - - <__onWindowClose set="method" line="589"> - - - - - - - <__unregisterLimeModule set="method" line="599" override="1"> - - - - - - - - - - - - - - - - - - - - - Creates a new Application instance - - The Application class forms the foundation for most Lime projects. - It is common to extend this class in a main class. It is then possible - to override "on" functions in the class in order to handle standard events - that are relevant. - - - lime.ui.Window - "tags=\"haxe,release\"" - - - - -

- - -
- - - - - - - - - - lime.app.Application - lime.system.System - openfl.display.Stage - openfl.events.UncaughtErrorEvents - hide - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - Registers an event listener object with an EventDispatcher object so that the - listener receives notification of an event. You can register event listeners on all - nodes in the display list for a specific type of event, phase, and priority. - - After you successfully register an event listener, you cannot change its priority - through additional calls to `addEventListener()`. To change a listener's priority, - you must first call `removeEventListener()`. Then you can register the listener - again with the new priority level. - - After the listener is registered, subsequent calls to `addEventListener()` with a - different value for either `type` or `useCapture` result in the creation of a - separate listener registration. For example, if you first register a listener with - `useCapture` set to true, it listens only during the capture phase. If you call - `addEventListener()` again using the same listener object, but with `useCapture` - set to `false`, you have two separate listeners: one that listens during the - capture phase, and another that listens during the target and bubbling phases. - - You cannot register an event listener for only the target phase or the bubbling - phase. Those phases are coupled during registration because bubbling applies only - to the ancestors of the target node. - - When you no longer need an event listener, remove it by calling - `EventDispatcher.removeEventListener()`; otherwise, memory problems might result. - Objects with registered event listeners are not automatically removed from memory - because the garbage collector does not remove objects that still have references. - - Copying an EventDispatcher instance does not copy the event listeners attached to - it. (If your newly created node needs an event listener, you must attach the - listener after creating the node.) However, if you move an EventDispatcher - instance, the event listeners attached to it move along with it. - - If the event listener is being registered on a node while an event is also being - processed on this node, the event listener is not triggered during the current - phase but may be triggered during a later phase in the event flow, such as the - bubbling phase. - - If an event listener is removed from a node while an event is being processed on - the node, it is still triggered by the current actions. After it is removed, the - event listener is never invoked again (unless it is registered again for future - processing). - - @param type The type of event. - @param listener The listener function that processes the event. This function - must accept an event object as its only parameter and must return nothing, as - this example shows: - ```haxe - function(evt:Event):Void - ``` - The function can have any name. - @param useCapture Determines whether the listener works in the capture phase or - the target and bubbling phases. If `useCapture` is set to `true`, the listener - processes the event only during the capture phase and not in the target or - bubbling phase. If `useCapture` is `false`, the listener processes the event only - during the target or bubbling phase. To listen for the event in all three phases, - call `addEventListener()` twice, once with `useCapture` set to `true`, then again - with `useCapture` set to `false`. - @param priority The priority level of the event listener. Priorities are - designated by a 32-bit integer. The higher the number, the higher the priority. - All listeners with priority `n` are processed before listeners of priority `n-1`. - If two or more listeners share the same priority, they are processed in the order - in which they were added. The default priority is 0. - @param useWeakReference Determines whether the reference to the listener is - strong or weak. A strong reference (the default) prevents your listener from being - garbage-collected. A weak reference does not. - Class-level member functions are not subject to garbage collection, so you can set - `useWeakReference` to `true` for class-level member functions without subjecting - them to garbage collection. If you set `useWeakReference` to `true` for a listener - that is a nested inner function, the function will be garbage-collected and no - longer be persistent. If you create references to the inner function (save it in - another variable) then it is not garbage-collected and stays persistent. - - - - - - - Dispatches an event into the event flow. The event target is the EventDispatcher - object upon which `dispatchEvent()` is called. - - @param event The event object dispatched into the event flow. - @returns A value of true unless `preventDefault()` is called on the event, in - which case it returns `false`. - - - - - - - Checks whether the EventDispatcher object has any listeners registered for a - specific type of event. This allows you to determine where an EventDispatcher - object has altered handling of an event type in the event flow hierarchy. To - determine whether a specific event type will actually trigger an event listener, - use `IEventDispatcher.willTrigger()`. - - The difference between `hasEventListener()` and `willTrigger()` is that - `hasEventListener()` examines only the object to which it belongs, whereas - `willTrigger()` examines the entire event flow for the event specified by the `type` - parameter. - - @param type The type of event. - @returns A value of `true` if a listener of the specified type is registered; - `false` otherwise. - - - - - - - - - - - - { useCapture : false } - Removes a listener from the EventDispatcher object. If there is no matching - listener registered with the EventDispatcher object, a call to this method has no - effect. - - @param type The type of event. - @param listener The listener object to remove. - @param useCapture Specifies whether the listener was registered for the capture - phase or the target and bubbling phases. If the listener was registered for both - the capture phase and the target and bubbling phases, two calls to - `removeEventListener()` are required to remove both: one call with `useCapture` set - to `true`, and another call with `useCapture` set to `false`. - - - - - - - Checks whether an event listener is registered with this EventDispatcher object or - any of its ancestors for the specified event type. This method returns `true` if an - event listener is triggered during any phase of the event flow when an event of - the specified type is dispatched to this EventDispatcher object or any of its - descendants. - - The difference between `hasEventListener()` and `willTrigger()` is that - `hasEventListener()` examines only the object to which it belongs, whereas - `willTrigger()` examines the entire event flow for the event specified by the - `type` parameter. - - @param type The type of event. - @returns A value of `true` if a listener of the specified type will be - triggered; `false` otherwise. - - The IEventDispatcher interface defines methods for adding or removing event listeners, - checks whether specific types of event listeners are registered, and dispatches events. - - Event targets are an important part of the Flash� Player and Adobe AIR event model. The - event target serves as the focal point for how events flow through the display list - hierarchy. When an event such as a mouse click or a keypress occurs, an event object is - dispatched into the event flow from the root of the display list. The event object - makes a round-trip journey to the event target, which is conceptually divided into - three phases: the capture phase includes the journey from the root to the last node - before the event target's node; the target phase includes only the event target node; - and the bubbling phase includes any subsequent nodes encountered on the return trip to - the root of the display list. - - In general, the easiest way for a user-defined class to gain event dispatching - capabilities is to extend EventDispatcher. If this is impossible (that is, if the class - is already extending another class), you can instead implement the IEventDispatcher - interface, create an EventDispatcher member, and write simple hooks to route calls - into the aggregated EventDispatcher. - - - - <__eventMap> - - - - - - - <__iterators> - - - - - - - <__targetDispatcher> - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - Registers an event listener object with an EventDispatcher object so that - the listener receives notification of an event. You can register event - listeners on all nodes in the display list for a specific type of event, - phase, and priority. - - After you successfully register an event listener, you cannot change - its priority through additional calls to `addEventListener()`. - To change a listener's priority, you must first call - `removeListener()`. Then you can register the listener again - with the new priority level. - - Keep in mind that after the listener is registered, subsequent calls to - `addEventListener()` with a different `type` or - `useCapture` value result in the creation of a separate - listener registration. For example, if you first register a listener with - `useCapture` set to `true`, it listens only during - the capture phase. If you call `addEventListener()` again using - the same listener object, but with `useCapture` set to - `false`, you have two separate listeners: one that listens - during the capture phase and another that listens during the target and - bubbling phases. - - You cannot register an event listener for only the target phase or the - bubbling phase. Those phases are coupled during registration because - bubbling applies only to the ancestors of the target node. - - If you no longer need an event listener, remove it by calling - `removeEventListener()`, or memory problems could result. Event - listeners are not automatically removed from memory because the garbage - collector does not remove the listener as long as the dispatching object - exists(unless the `useWeakReference` parameter is set to - `true`). - - Copying an EventDispatcher instance does not copy the event listeners - attached to it.(If your newly created node needs an event listener, you - must attach the listener after creating the node.) However, if you move an - EventDispatcher instance, the event listeners attached to it move along - with it. - - If the event listener is being registered on a node while an event is - being processed on this node, the event listener is not triggered during - the current phase but can be triggered during a later phase in the event - flow, such as the bubbling phase. - - If an event listener is removed from a node while an event is being - processed on the node, it is still triggered by the current actions. After - it is removed, the event listener is never invoked again(unless - registered again for future processing). - - @param type The type of event. - @param useCapture Determines whether the listener works in the - capture phase or the target and bubbling phases. - If `useCapture` is set to - `true`, the listener processes the - event only during the capture phase and not in the - target or bubbling phase. If - `useCapture` is `false`, the - listener processes the event only during the - target or bubbling phase. To listen for the event - in all three phases, call - `addEventListener` twice, once with - `useCapture` set to `true`, - then again with `useCapture` set to - `false`. - @param priority The priority level of the event listener. The - priority is designated by a signed 32-bit integer. - The higher the number, the higher the priority. - All listeners with priority _n_ are processed - before listeners of priority _n_-1. If two or - more listeners share the same priority, they are - processed in the order in which they were added. - The default priority is 0. - @param useWeakReference Determines whether the reference to the listener - is strong or weak. A strong reference(the - default) prevents your listener from being - garbage-collected. A weak reference does not. - - Class-level member functions are not subject to - garbage collection, so you can set - `useWeakReference` to `true` - for class-level member functions without - subjecting them to garbage collection. If you set - `useWeakReference` to `true` - for a listener that is a nested inner function, - the function will be garbage-collected and no - longer persistent. If you create references to the - inner function(save it in another variable) then - it is not garbage-collected and stays - persistent. - @throws ArgumentError The `listener` specified is not a - function. - - - - - - - Dispatches an event into the event flow. The event target is the - EventDispatcher object upon which the `dispatchEvent()` method - is called. - - @param event The Event object that is dispatched into the event flow. If - the event is being redispatched, a clone of the event is - created automatically. After an event is dispatched, its - `target` property cannot be changed, so you must - create a new copy of the event for redispatching to work. - @return A value of `true` if the event was successfully - dispatched. A value of `false` indicates failure or - that `preventDefault()` was called on the event. - @throws Error The event dispatch recursion limit has been reached. - - - - - - - Checks whether the EventDispatcher object has any listeners registered for - a specific type of event. This allows you to determine where an - EventDispatcher object has altered handling of an event type in the event - flow hierarchy. To determine whether a specific event type actually - triggers an event listener, use `willTrigger()`. - - The difference between `hasEventListener()` and - `willTrigger()` is that `hasEventListener()` - examines only the object to which it belongs, whereas - `willTrigger()` examines the entire event flow for the event - specified by the `type` parameter. - - When `hasEventListener()` is called from a LoaderInfo - object, only the listeners that the caller can access are considered. - - @param type The type of event. - @return A value of `true` if a listener of the specified type - is registered; `false` otherwise. - - - - - - - - - - - - { useCapture : false } - Removes a listener from the EventDispatcher object. If there is no - matching listener registered with the EventDispatcher object, a call to - this method has no effect. - - @param type The type of event. - @param useCapture Specifies whether the listener was registered for the - capture phase or the target and bubbling phases. If the - listener was registered for both the capture phase and - the target and bubbling phases, two calls to - `removeEventListener()` are required to - remove both, one call with `useCapture()` set - to `true`, and another call with - `useCapture()` set to `false`. - - - - - - - - Checks whether an event listener is registered with this EventDispatcher - object or any of its ancestors for the specified event type. This method - returns `true` if an event listener is triggered during any - phase of the event flow when an event of the specified type is dispatched - to this EventDispatcher object or any of its descendants. - - The difference between the `hasEventListener()` and the - `willTrigger()` methods is that `hasEventListener()` - examines only the object to which it belongs, whereas the - `willTrigger()` method examines the entire event flow for the - event specified by the `type` parameter. - - When `willTrigger()` is called from a LoaderInfo object, - only the listeners that the caller can access are considered. - - @param type The type of event. - @return A value of `true` if a listener of the specified type - will be triggered; `false` otherwise. - - <__dispatchEvent set="method" line="360"> - - - - - - - <__removeAllListeners set="method" line="426"> - - - - <__addListenerByPriority set="method" line="432"> - - - - - - - - - - - - - { target : null } - Aggregates an instance of the EventDispatcher class. - - The EventDispatcher class is generally used as a base class, which - means that most developers do not need to use this constructor function. - However, advanced developers who are implementing the IEventDispatcher - interface need to use this constructor. If you are unable to extend the - EventDispatcher class and must instead implement the IEventDispatcher - interface, use this constructor to aggregate an instance of the - EventDispatcher class. - - @param target The target object for events dispatched to the - EventDispatcher object. This parameter is used when the - EventDispatcher instance is aggregated by a class that - implements IEventDispatcher; it is necessary so that the - containing object can be the target for events. Do not use - this parameter in simple cases in which a class extends - EventDispatcher. - - ® Player and - Adobe® AIR® event model. The event target serves as - the focal point for how events flow through the display list hierarchy. - When an event such as a mouse click or a keypress occurs, Flash Player or - the AIR application dispatches an event object into the event flow from the - root of the display list. The event object then makes its way through the - display list until it reaches the event target, at which point it begins - its return trip through the display list. This round-trip journey to the - event target is conceptually divided into three phases: the capture phase - comprises the journey from the root to the last node before the event - target's node, the target phase comprises only the event target node, and - the bubbling phase comprises any subsequent nodes encountered on the return - trip to the root of the display list. - - In general, the easiest way for a user-defined class to gain event - dispatching capabilities is to extend EventDispatcher. If this is - impossible(that is, if the class is already extending another class), you - can instead implement the IEventDispatcher interface, create an - EventDispatcher member, and write simple hooks to route calls into the - aggregated EventDispatcher. - - @event activate [broadcast event] Dispatched when the Flash Player or AIR - application gains operating system focus and becomes - active. This event is a broadcast event, which means that - it is dispatched by all EventDispatcher objects with a - listener registered for this event. For more information - about broadcast events, see the DisplayObject class. - @event deactivate [broadcast event] Dispatched when the Flash Player or AIR - application operating loses system focus and is becoming - inactive. This event is a broadcast event, which means - that it is dispatched by all EventDispatcher objects with - a listener registered for this event. For more - information about broadcast events, see the DisplayObject - class.]]> - - - "tags=\"haxe,release\"" - - openfl.events.Event - - - - <__blendMode> - - - - <__drawableType> - - - - <__isMask> - - - - <__renderable> - - - - <__renderTransform> - - - - <__transform> - - - - <__worldAlpha> - - - - <__worldColorTransform> - - - - <__worldTransform> - - - - <__getBounds set="method"> - - - - - - - - <__update set="method"> - - - - - - - - <__updateTransforms set="method"> - - - - - - { overrideTransform : null } - - - - <__mask> - - - - <__scrollRect> - - - - - - - - - - - - - - - - Maps `key` to `value`. - - If `key` already has a mapping, the previous value disappears. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - - Returns the current mapping of `key`. - - If no such mapping exists, `null` is returned. - - Note that a check like `map.get(key) == null` can hold for two reasons: - - 1. the map has no mapping for `key` - 2. the map has a mapping with a value of `null` - - If it is important to distinguish these cases, `exists()` should be - used. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - Returns true if `key` has a mapping, false otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - Removes the mapping of `key` and returns true if such a mapping existed, - false otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - Returns an Iterator over the keys of `this` Map. - - The order of keys is undefined. - - - - - - - - - - Returns an Iterator over the values of `this` Map. - - The order of values is undefined. - - - - - - - - - - - - - Returns an Iterator over the keys and values of `this` Map. - - The order of values is undefined. - - - - - - - - - - - - - Returns a shallow copy of `this` map. - - The order of values is undefined. - - - - - - - - - - Returns a String representation of `this` Map. - - The exact representation depends on the platform and key-type. - - - - - - - - - - Removes all keys from `this` Map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Indicates whether the `length` property of the Vector can be changed. If the - value is `true`, the `length` property can't be changed. This means the - following operations are not allowed when `fixed` is `true`: - - * setting the `length` property directly - * assigning a value to index position length - * calling a method that changes the `length` property, including: - * `pop()` - * `push()` - * `shift()` - * `unshift()` - * `splice()` (if the `splice()` call changes the length of the Vector). - - - - The range of valid indices available in the Vector. A Vector instance has index - positions up to but not including the length value. - - Every Vector element always has a value that is either an instance of the base - type or `null`. When the `length` property is set to a value that's larger than - its previous value, additional elements are created and populated with the - default value appropriate to the base type (`null` for reference types). - - When the `length` property is set to a value that's smaller than its previous - value, all the elements at index positions greater than or equal to the new - length value are removed from the Vector. - - - - - - - - { vec : null } - Concatenates the Vectors specified in the parameters list with the elements in - this Vector and creates a new Vector. The Vectors in the parameters list must - have the same base type, or subtype, as this Vector. If you do not pass any - parameters, the returned Vector is a duplicate (shallow clone) of the original - Vector. - - @param vec A Vector of the base type, or subtype, of this Vector. - @return A Vector with the same base type as this Vector that contains the - elements from this Vector followed by elements from the Vector in the - parameter list. - @throws TypeError If any argument is not a Vector of the base type, or cannot - be converted to a Vector of the base type. - - - - - - - Creates a new shallow clone of the current Vector object - @return A new Vector object - - - - - - - - - ):Bool { - // your code here - } - ``` - The callback function should return a Boolean value. - - @param thisObject The object that the identifer this in the callback function - refers to when the function is called. ***Ignored on targets other than neko and - js. - @return A Boolean value of true if the specified function returns true when called - on all items in the Vector; otherwise, false.]]> - - - - - - - - - - - Executes a test function on each item in the Vector and returns a new Vector - containing all items that return true for the specified function. If an item - returns false, it is not included in the result Vector. The base type of the return - Vector matches the base type of the Vector on which the method is called. - @param callback The function to run on each item in the Vector. - - - - - - - - - - hide - - - Array access - - - - - - - - - { fromIndex : 0 } - Searches for an item in the Vector and returns the index position of the item. - The item is compared to the Vector elements using strict equality (`===`). - @param searchElement The item to find in the Vector. - @param fromIndex The location in the Vector from which to start searching for - the item. If this parameter is negative, it is treated as `length + fromIndex`, - meaning the search starts -fromIndex items from the end and searches from that - position forward to the end of the Vector. - @return A zero-based index position of the item in the Vector. If the - `searchElement` argument is not found, the return value is -1. - - - - - - - - - Insert a single element into the Vector. This method modifies the Vector without - making a copy. - - @param index An integer that specifies the position in the Vector where the - element is to be inserted. You can use a negative integer to specify a position - relative to the end of the Vector (for example, -1 for the last element of the - Vector). - @param element The value to insert - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - - hide - - Iterator - - - - - - - - { sep : "," } - Converts the elements in the Vector to strings, inserts the specified separator - between the elements, concatenates them, and returns the resulting string. A - nested Vector is always separated by a comma (`,`), not by the separator passed - to the `join()` method. - - @param sep A character or string that separates Vector elements in the returned - string. If you omit this parameter, a comma is used as the default separator. - @return A string consisting of the elements of the Vector converted to strings - and separated by the specified string. - - - - - - - - - { fromIndex : null } - Searches for an item in the Vector, working backward from the specified index - position, and returns the index position of the matching item. The item is - compared to the Vector elements using strict equality (`===`). - - @param searchElement The item to find in the Vector. - @param fromIndex The location in the Vector from which to start searching for - the item. The default is the maximum allowable index value, meaning that the - search starts at the last item in the Vector. - - If this parameter is negative, it is treated as `length + fromIndex`, meaning the - search starts -fromIndex items from the end and searches from that position - backward to index 0. - @return A zero-based index position of the item in the Vector. If the - `searchElement` argument is not found, the return value is -1. - - - - - - - Removes the last element from the Vector and returns that element. The `length` - property of the Vector is decreased by one when this function is called. - @return The value of the last element in the specified Vector. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - Adds one or more elements to the end of the Vector and returns the new length of - the Vector. - - Because this function can accept multiple arguments, the data type of the - arguments is not checked at compile time even in strict mode. However, if an - argument is passed that is not an instance of the base type, an exception - occurs at run time. - - @param value A value to append to the Vector. - @return The length of the Vector after the new elements are added. - @throws TypeError If any argument is not an instance of the base type T of - the Vector. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - Remove a single element from the Vector. This method modifies the Vector without - making a copy. - - @param index An integer that specifies the index of the element in the Vector - that is to be deleted. You can use a negative integer to specify a position - relative to the end of the Vector (for example, -1 for the last element of the - Vector). - @return The element that was removed from the original Vector. - @throws RangeError If the index argument specifies an index to be deleted that's - outside the Vector's bounds. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - Reverses the order of the elements in the Vector. This method alters the Vector - on which it is called. - - @return The Vector with the elements in reverse order. - - - - - - - - - - - hide - - - Array access - - - - - - - Removes the first element from the Vector and returns that element. The - remaining Vector elements are moved from their original position, i, to i - 1. - - @return The first element in the Vector. - @throws RangeError If `fixed` is `true`. - - - - - - - - - { endIndex : null, startIndex : 0 } - Returns a new Vector that consists of a range of elements from the original - Vector, without modifying the original Vector. The returned Vector includes the - `startIndex` element and all elements up to, but not including, the - `endIndex` element. - - If you don't pass any parameters, the new Vector is a duplicate (shallow clone) of - the original Vector. If you pass a value of 0 for both parameters, a new, empty - Vector is created of the same type as the original Vector. - - @param startIndex A number specifying the index of the starting point for the - slice. If startIndex is a negative number, the starting point begins at the end - of the Vector, where -1 is the last element. - @param endIndex A number specifying the index of the ending point for the - slice. If you omit this parameter, the slice includes all elements from the - starting point to the end of the Vector. If endIndex is a negative number, the - ending point is specified from the end of the Vector, where -1 is the last element. - @return A Vector that consists of a range of elements from the original Vector. - - - - - - - - - ):Bool - ``` - - The callback function should return a Boolean value. - @param thisObject The object that the identifer this in the callback function refers - to when the function is called. ***Ignored on targets other than neko and js. - @return A Boolean value of true if any items in the Vector return true for the specified - function; otherwise, false.]]> - - - - - - - - - - - - Sorts the elements in the Vector object, and also returns a sorted Vector object. - This method sorts according to the parameter sortBehavior, which is either a - function that compares two values, or a set of sorting options. - - The method takes one parameter. The parameter is one of the following: - - * a function that takes two arguments of the base type (T) of the Vector and - returns a Number: - - ```as3 - function compare(x:T, y:T):Number {} - ``` - - The logic of the function is that, given two elements `x` and `y`, the function - returns one of the following three values: - - * a negative number, if `x` should appear before `y` in the sorted sequence - * 0, if `x` equals `y` - * a positive number, if `x` should appear after `y` in the sorted sequence - - * a number which is a bitwise OR of the following values: - * 1 or `Array.CASEINSENSITIVE` - * 2 or `Array.DESCENDING` - * 4 or `Array.UNIQUESORT` - * 8 or `Array.RETURNINDEXEDARRAY` - * 16 or `Array.NUMERIC` - - If the value is 0, the sort works in the following way: - - * Sorting is case-sensitive (Z precedes a). - * Sorting is ascending (a precedes b). - * The array is modified to reflect the sort order; multiple elements that - have identical sort fields are placed consecutively in the sorted array in - no particular order. - * All elements, regardless of data type, are sorted as if they were strings, - so 100 precedes 99, because "1" is a lower string value than "9". - - @param sortBehavior A Function or a Number value that determines the - behavior of the sort. A Function parameter specifies a comparison method. A - Number value specifies the sorting options. - @return A Vector object, with elements in the new order. - - - - - - - - - - Adds elements to and removes elements from the Vector. This method modifies the - Vector without making a copy. - - **Note:** To override this method in a subclass of Vector, use ...args for the - parameters, as this example shows: - - ```as3 - public override function splice(...args) { - // your statements here - } - ``` - - @param startIndex:int — An integer that specifies the index of the element in the Vector where the insertion or deletion begins. You can use a negative integer to specify a position relative to the end of the Vector (for example, -1 for the last element of the Vector). - @param deleteCount:uint (default = 4294967295) — An integer that specifies the number of elements to be deleted. This number includes the element specified in the startIndex parameter. If the value is 0, no elements are deleted. - @param ... items — An optional list of one or more comma-separated values to insert into the Vector at the position specified in the startIndex parameter. - @return a Vector containing the elements that were removed from the original Vector. - @throws RangeError If the startIndex and deleteCount arguments specify an index to be deleted that's outside the Vector's bounds. - @throws RangeError If this method is called while fixed is true and the splice() operation changes the length of the Vector. - - - - - - - Returns a string that represents the elements in the Vector. Every element in the - Vector, starting with index 0 and ending with the highest index, is converted to - a concatenated string and separated by commas. To specify a custom separator, - use the `Vector.join()` method. - - @return A string of Vector elements. - - - - - - - - Adds one or more elements to the beginning of the Vector and returns the new - length of the Vector. The other elements in the Vector are moved from their - original position, i, to i + the number of new elements. - - Because this function can accept multiple arguments, the data type of the - arguments is not checked at compile time even in strict mode. However, if an - argument is passed that is not an instance of the base type, an exception occurs - at run time. - - @param value An instance of the base type of the Vector to be inserted at the - beginning of the Vector. - @return An integer representing the new length of the Vector. - @throws TypeError If any argument is not an instance of the base type T of the - Vector. - @throws RangeError If this method is called while fixed is true. - - - - - - - Attempts to cast a Vector to another Vector object of a similar type - @param vec A Vector object to cast - @return The casted Vector object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__inactiveObject0> - - - - <__inactiveObject1> - - - - <__inactiveObjectList> - - - - <__pool> - - - - - - - <__size> - - - - - - - - - - - - - - - - - - - - - - - <__addInactive get="inline" set="null" line="151"> - - - - - - - <__getInactive get="inline" set="null" line="173"> - - - - <__removeInactive set="method" line="212"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { size : null, clean : null, create : null } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "haxe.ds.ObjectMap.*" - - - - - - - - - See `Map.set` - - - - - - - - See `Map.get` - - - - - - - - See `Map.exists` - - - - - - - - See `Map.remove` - - - - - See `Map.keys` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - See `Map.iterator` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - - - - See `Map.keyValueIterator` - - - - - - - See `Map.copy` - - - - - See `Map.toString` - - - - - See `Map.clear` - - - - Creates a new ObjectMap. - - ObjectMap allows mapping of object keys to arbitrary values. - - On static targets, the keys are considered to be strong references. Refer - to `haxe.ds.WeakMap` for a weak reference version. - - See `Map` for documentation details. - - @see https://haxe.org/manual/std-Map.html - - - \r\n inline void set(Dynamic key, const ::cpp::Struct &value) {__object_hash_set(HX_MAP_THIS,key,value); }\r\n template\r\n inline void set(Dynamic key, const ::cpp::Function &value) {__object_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }\r\n template\r\n inline void set(Dynamic key, const ::cpp::Pointer &value) {__object_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }\r\n\r\n inline bool get_bool(Dynamic key) { return __object_hash_get_bool(h,key); }\r\n inline int get_int(Dynamic key) { return __object_hash_get_int(h,key); }\r\n inline Float get_float(Dynamic key) { return __object_hash_get_float(h,key); }\r\n inline String get_string(Dynamic key) { return __object_hash_get_string(h,key); }\r\n\r\n"]]> - - - - - - - - - The length of `this` List. - - - - - - - Adds element `item` at the end of `this` List. - - `this.length` increases by 1. - - - - - - - Adds element `item` at the beginning of `this` List. - - `this.length` increases by 1. - - - - Returns the first element of `this` List, or null if no elements exist. - - This function does not modify `this` List. - - - - Returns the last element of `this` List, or null if no elements exist. - - This function does not modify `this` List. - - - - Returns the first element of `this` List, or null if no elements exist. - - The element is removed from `this` List. - - - - Tells if `this` List is empty. - - - - Empties `this` List. - - This function does not traverse the elements, but simply sets the - internal references to null and `this.length` to 0. - - - - - - - Removes the first occurrence of `v` in `this` List. - - If `v` is found by checking standard equality, it is removed from `this` - List and the function returns true. - - Otherwise, false is returned. - - - - Returns an iterator on the elements of the list. - - - - - Returns an iterator of the List indices and values. - - - - Returns a string representation of `this` List. - - The result is enclosed in { } with the individual elements being - separated by a comma. - - - - - - - Returns a string representation of `this` List, with `sep` separating - each element. - - - - - - - - - - Returns a list filtered with `f`. The returned list will contain all - elements for which `f(x) == true`. - - - - - - - - - - Returns a new list where all elements have been converted by the - function `f`. - - - - Creates a new empty list. - - A linked-list of elements. The list is composed of element container objects - that are chained together. It is optimized so that adding or removing an - element does not imply copying the whole list content every time. - - @see https://haxe.org/manual/std-List.html - - - - - - <__broadcastEvents expr="new Map()" line="184" static="1"> - - - - - - new Map() - - - - <__initStage static="1"> - - - - <__instanceCount expr="0" line="186" static="1"> - - - 0 - - - - <__supportDOM get="inline" set="null" expr="false" line="189" static="1"> - - - false - - - - <__tempStack expr="new ObjectPool<Vector<DisplayObject>>(function() return new Vector<DisplayObject>(), function(stack) stack.length = 0)" line="191" static="1"> - - - >(function() return new Vector(), function(stack) stack.length = 0)]]> - - - - <__calculateAbsoluteTransform get="inline" set="null" line="1359" static="1"> - - - - - - - - - - - - Indicates the alpha transparency value of the object specified. Valid - values are 0 (fully transparent) to 1 (fully opaque). The default value is 1. - Display objects with `alpha` set to 0 _are_ active, even though they are invisible. - - - - For example, if a constituent color (such as red) of one pixel in the display object and the corresponding color of the pixel in the background both have the value 0x88, the multiplied result is 0x4840. Dividing by 0xFF yields a value of 0x48 for that constituent color, which is a darker shade than the color of the display object or the color of the background. | - | `BlendMode.SCREEN` | ![blend mode SCREEN](/images/blendMode-4.jpg) | Multiplies the complement (inverse) of the display object color by the complement of the background color, resulting in a bleaching effect. This setting is commonly used for highlights or to remove black areas of the display object. | - | `BlendMode.LIGHTEN` | ![blend mode LIGHTEN](/images/blendMode-5.jpg) | Selects the lighter of the constituent colors of the display object and the color of the background (the colors with the larger values). This setting is commonly used for superimposing type.
For example, if the display object has a pixel with an RGB value of 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the resulting RGB value for the displayed pixel is 0xFFF833 (because 0xFF > 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). Not supported under GPU rendering. | - | `BlendMode.DARKEN` | ![blend mode DARKEN](/images/blendMode-6.jpg) | Selects the darker of the constituent colors of the display object and the colors of the background (the colors with the smaller values). This setting is commonly used for superimposing type.
For example, if the display object has a pixel with an RGB value of 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the resulting RGB value for the displayed pixel is 0xDDCC00 (because 0xFF > 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). Not supported under GPU rendering. | - | `BlendMode.DIFFERENCE` | ![blend mode DIFFERENCE](/images/blendMode-7.jpg) | Compares the constituent colors of the display object with the colors of its background, and subtracts the darker of the values of the two constituent colors from the lighter value. This setting is commonly used for more vibrant colors.
For example, if the display object has a pixel with an RGB value of 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the resulting RGB value for the displayed pixel is 0x222C33 (because 0xFF - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33). | - | `BlendMode.ADD` | ![blend mode ADD](/images/blendMode-8.jpg) | Adds the values of the constituent colors of the display object to the colors of its background, applying a ceiling of 0xFF. This setting is commonly used for animating a lightening dissolve between two objects.
For example, if the display object has a pixel with an RGB value of 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the resulting RGB value for the displayed pixel is 0xFFC833 (because 0xAA + 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33). | - | `BlendMode.SUBTRACT` | ![blend mode SUBTRACT](/images/blendMode-9.jpg) | Subtracts the values of the constituent colors in the display object from the values of the background color, applying a floor of 0. This setting is commonly used for animating a darkening dissolve between two objects.
For example, if the display object has a pixel with an RGB value of 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the resulting RGB value for the displayed pixel is 0x338400 (because 0xDD - 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00). | - | `BlendMode.INVERT` | ![blend mode INVERT](/images/blendMode-10.jpg) | Inverts the background. | - | `BlendMode.ALPHA` | ![blend mode ALPHA](/images/blendMode-11.jpg) | Applies the alpha value of each pixel of the display object to the background. This requires the `blendMode` setting of the parent display object to be set to `BlendMode.LAYER`. For example, in the illustration, the parent display object, which is a white background, has `blendMode = BlendMode.LAYER`. Not supported under GPU rendering. | - | `BlendMode.ERASE` | ![blend mode ERASE](/images/blendMode-12.jpg) | Erases the background based on the alpha value of the display object. This requires the `blendMode` of the parent display object to be set to `BlendMode.LAYER`. For example, in the illustration, the parent display object, which is a white background, has `blendMode = BlendMode.LAYER`. Not supported under GPU rendering. | - | `BlendMode.OVERLAY` | ![blend mode OVERLAY](/images/blendMode-13.jpg) | Adjusts the color of each pixel based on the darkness of the background. If the background is lighter than 50% gray, the display object and background colors are screened, which results in a lighter color. If the background is darker than 50% gray, the colors are multiplied, which results in a darker color. This setting is commonly used for shading effects. Not supported under GPU rendering. | - | `BlendMode.HARDLIGHT` | ![blend mode HARDLIGHT](/images/blendMode-14.jpg) | Adjusts the color of each pixel based on the darkness of the display object. If the display object is lighter than 50% gray, the display object and background colors are screened, which results in a lighter color. If the display object is darker than 50% gray, the colors are multiplied, which results in a darker color. This setting is commonly used for shading effects. Not supported under GPU rendering. | - | `BlendMode.SHADER` | N/A | Adjusts the color using a custom shader routine. The shader that is used is specified as the Shader instance assigned to the blendShader property. Setting the blendShader property of a display object to a Shader instance automatically sets the display object's `blendMode` property to `BlendMode.SHADER`. If the `blendMode` property is set to `BlendMode.SHADER` without first setting the `blendShader` property, the `blendMode` property is set to `BlendMode.NORMAL`. Not supported under GPU rendering. |]]>
-
- - - All vector data for a display object that has a cached bitmap is drawn - to the bitmap instead of the main display. If - `cacheAsBitmapMatrix` is null or unsupported, the bitmap is - then copied to the main display as unstretched, unrotated pixels snapped - to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent - object. If the bounds of the bitmap change, the bitmap is recreated - instead of being stretched. - - If `cacheAsBitmapMatrix` is non-null and supported, the - object is drawn to the off-screen bitmap using that matrix and the - stretched and/or rotated results of that rendering are used to draw the - object to the main display. - - No internal bitmap is created unless the `cacheAsBitmap` - property is set to `true`. - - After you set the `cacheAsBitmap` property to - `true`, the rendering does not change, however the display - object performs pixel snapping automatically. The animation speed can be - significantly faster depending on the complexity of the vector content. - - The `cacheAsBitmap` property is automatically set to - `true` whenever you apply a filter to a display object(when - its `filter` array is not empty), and if a display object has a - filter applied to it, `cacheAsBitmap` is reported as - `true` for that display object, even if you set the property to - `false`. If you clear all filters for a display object, the - `cacheAsBitmap` setting changes to what it was last set to. - - A display object does not use a bitmap even if the - `cacheAsBitmap` property is set to `true` and - instead renders from vector data in the following cases: - - * The bitmap is too large. In AIR 1.5 and Flash Player 10, the maximum - size for a bitmap image is 8,191 pixels in width or height, and the total - number of pixels cannot exceed 16,777,215 pixels.(So, if a bitmap image - is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 - and earlier, the limitation is is 2880 pixels in height and 2,880 pixels - in width. - * The bitmap fails to allocate(out of memory error). - - The `cacheAsBitmap` property is best used with movie clips - that have mostly static content and that do not scale and rotate - frequently. With such movie clips, `cacheAsBitmap` can lead to - performance increases when the movie clip is translated(when its _x_ - and _y_ position is changed). - - - - If non-null, this Matrix object defines how a display object is rendered when `cacheAsBitmap` is set to - `true`. The application uses this matrix as a transformation matrix that is applied when rendering the - bitmap version of the display object. - - _AIR profile support:_ This feature is supported on mobile devices, but it is not supported on desktop - operating systems. It also has limited support on AIR for TV devices. Specifically, on AIR for TV devices, - supported transformations include scaling and translation, but not rotation and skewing. See AIR Profile - Support for more information regarding API support across multiple profiles. - - With `cacheAsBitmapMatrix` set, the application retains a cached bitmap image across various 2D - transformations, including translation, rotation, and scaling. If the application uses hardware acceleration, - the object will be stored in video memory as a texture. This allows the GPU to apply the supported - transformations to the object. The GPU can perform these transformations faster than the CPU. - - To use the hardware acceleration, set Rendering to GPU in the General tab of the iPhone Settings dialog box - in Flash Professional CS5. Or set the `renderMode` property to gpu in the application descriptor file. Note - that AIR for TV devices automatically use hardware acceleration if it is available. - - For example, the following code sends an untransformed bitmap representation of the display object to the GPU: - - ```haxe - var matrix:Matrix = new Matrix(); // creates an identity matrix - mySprite.cacheAsBitmapMatrix = matrix; - mySprite.cacheAsBitmap = true; - ``` - - Usually, the identity matrix (`new Matrix()`) suffices. However, you can use another matrix, such as a - scaled-down matrix, to upload a different bitmap to the GPU. For example, the following example applies a - `cacheAsBitmapMatrix` matrix that is scaled by 0.5 on the x and y axes. The bitmap object that the GPU uses - is smaller, however the GPU adjusts its size to match the `transform.matrix` property of the display object: - - ```haxe - var matrix:Matrix = new Matrix(); // creates an identity matrix - matrix.scale(0.5, 0.5); // scales the matrix - mySprite.cacheAsBitmapMatrix = matrix; - mySprite.cacheAsBitmap = true; - ``` - - Generally, you should choose to use a matrix that transforms the display object to the size that it will - appear in the application. For example, if your application displays the bitmap version of the sprite scaled - down by a half, use a matrix that scales down by a half. If you application will display the sprite larger - than its current dimensions, use a matrix that scales up by that factor. - - **Note:** The `cacheAsBitmapMatrix` property is suitable for 2D transformations. If you need to apply - transformations in 3D, you may do so by setting a 3D property of the object and manipulating its - `transform.matrix3D` property. If the application is packaged using GPU mode, this allows the 3D transforms - to be applied to the object by the GPU. The `cacheAsBitmapMatrix` is ignored for 3D objects. - - - - instance as a shader - input, and the `width` and - `height` properties aren't specified for - the ShaderInput object, or the specified values - don't match the amount of data in the input data. - See the `ShaderInput.input` property for - more information.]]> - - - - - Indicates the height of the display object, in pixels. The height is - calculated based on the bounds of the content of the display object. When - you set the `height` property, the `scaleY` property - is adjusted accordingly, as shown in the following code: - - Except for TextField and Video objects, a display object with no - content(such as an empty sprite) has a height of 0, even if you try to - set `height` to a different value. - - - - Returns a LoaderInfo object containing information about loading the file - to which this display object belongs. The `loaderInfo` property - is defined only for the root display object of a SWF file or for a loaded - Bitmap(not for a Bitmap that is drawn with ActionScript). To find the - `loaderInfo` object associated with the SWF file that contains - a display object named `myDisplayObject`, use - `myDisplayObject.root.loaderInfo`. - - A large SWF file can monitor its download by calling - `this.root.loaderInfo.addEventListener(Event.COMPLETE, - func)`. - - - - The calling display object is masked by the specified `mask` - object. To ensure that masking works when the Stage is scaled, the - `mask` display object must be in an active part of the display - list. The `mask` object itself is not drawn. Set - `mask` to `null` to remove the mask. - - To be able to scale a mask object, it must be on the display list. To - be able to drag a mask Sprite object(by calling its - `startDrag()` method), it must be on the display list. To call - the `startDrag()` method for a mask sprite based on a - `mouseDown` event being dispatched by the sprite, set the - sprite's `buttonMode` property to `true`. - - When display objects are cached by setting the - `cacheAsBitmap` property to `true` an the - `cacheAsBitmapMatrix` property to a Matrix object, both the - mask and the display object being masked must be part of the same cached - bitmap. Thus, if the display object is cached, then the mask must be a - child of the display object. If an ancestor of the display object on the - display list is cached, then the mask must be a child of that ancestor or - one of its descendents. If more than one ancestor of the masked object is - cached, then the mask must be a descendent of the cached container closest - to the masked object in the display list. - - **Note:** A single `mask` object cannot be used to mask - more than one calling display object. When the `mask` is - assigned to a second display object, it is removed as the mask of the - first object, and that object's `mask` property becomes - `null`. - - - - Indicates the x coordinate of the mouse or user input device position, in - pixels. - - **Note**: For a DisplayObject that has been rotated, the returned x - coordinate will reflect the non-rotated object. - - - - Indicates the y coordinate of the mouse or user input device position, in - pixels. - - **Note**: For a DisplayObject that has been rotated, the returned y - coordinate will reflect the non-rotated object. - - - - Indicates the instance name of the DisplayObject. The object can be - identified in the child list of its parent display object container by - calling the `getChildByName()` method of the display object - container. - - @throws IllegalOperationError If you are attempting to set this property - on an object that was placed on the timeline - in the Flash authoring tool. - - - - Specifies whether the display object is opaque with a certain background - color. A transparent bitmap contains alpha channel data and is drawn - transparently. An opaque bitmap has no alpha channel(and renders faster - than a transparent bitmap). If the bitmap is opaque, you specify its own - background color to use. - - If set to a number value, the surface is opaque(not transparent) with - the RGB background color that the number specifies. If set to - `null`(the default value), the display object has a - transparent background. - - The `opaqueBackground` property is intended mainly for use - with the `cacheAsBitmap` property, for rendering optimization. - For display objects in which the `cacheAsBitmap` property is - set to true, setting `opaqueBackground` can improve rendering - performance. - - The opaque background region is _not_ matched when calling the - `hitTestPoint()` method with the `shapeFlag` - parameter set to `true`. - - The opaque background region does not respond to mouse events. - - - - Indicates the DisplayObjectContainer object that contains this display - object. Use the `parent` property to specify a relative path to - display objects that are above the current display object in the display - list hierarchy. - - You can use `parent` to move up multiple levels in the - display list as in the following: - - ```haxe - this.parent.parent.alpha = 20; - ``` - - @throws SecurityError The parent display object belongs to a security - sandbox to which you do not have access. You can - avoid this situation by having the parent movie call - the `Security.allowDomain()` method. - - - - For a display object in a loaded SWF file, the `root` property - is the top-most display object in the portion of the display list's tree - structure represented by that SWF file. For a Bitmap object representing a - loaded image file, the `root` property is the Bitmap object - itself. For the instance of the main class of the first SWF file loaded, - the `root` property is the display object itself. The - `root` property of the Stage object is the Stage object itself. - The `root` property is set to `null` for any display - object that has not been added to the display list, unless it has been - added to a display object container that is off the display list but that - is a child of the top-most display object in a loaded SWF file. - - For example, if you create a new Sprite object by calling the - `Sprite()` constructor method, its `root` property - is `null` until you add it to the display list(or to a display - object container that is off the display list but that is a child of the - top-most display object in a SWF file). - - For a loaded SWF file, even though the Loader object used to load the - file may not be on the display list, the top-most display object in the - SWF file has its `root` property set to itself. The Loader - object does not have its `root` property set until it is added - as a child of a display object for which the `root` property is - set. - - - - - Indicates the rotation of the DisplayObject instance, in degrees, from its - original orientation. Values from 0 to 180 represent clockwise rotation; - values from 0 to -180 represent counterclockwise rotation. Values outside - this range are added to or subtracted from 360 to obtain a value within - the range. For example, the statement `my_video.rotation = 450` - is the same as ` my_video.rotation = 90`. - - - - The display object. | ![display object scale 9 region](/images/scale9Grid-b.jpg)
The red rectangle shows the scale9Grid. | - - When the display object is scaled or stretched, the objects within the rectangle scale normally, but the - objects outside of the rectangle scale according to the `scale9Grid` rules: - - | | | - | --- | --- | - | Scaled to 75%: | ![display object at 75%](/images/scale9Grid-c.jpg) | - | Scaled to 50%: | ![display object at 50%](/images/scale9Grid-d.jpg) | - | Scaled to 25%: | ![display object at 25%](/images/scale9Grid-e.jpg) | - | Stretched horizontally 150%: | ![display stretched 150%](/images/scale9Grid-f.jpg) | - - A common use for setting `scale9Grid` is to set up a display - object to be used as a component, in which edge regions retain the same - width when the component is scaled. - - @throws ArgumentError If you pass an invalid argument to the method.]]>
-
- - - - Indicates the horizontal scale (percentage) of the object as applied from - the registration point. The default registration point is (0,0). 1.0 - equals 100% scale. - - Scaling the local coordinate system changes the `x` and - `y` property values, which are defined in whole pixels. - - - - - Indicates the vertical scale (percentage) of an object as applied from the - registration point of the object. The default registration point is (0,0). - 1.0 is 100% scale. - - Scaling the local coordinate system changes the `x` and - `y` property values, which are defined in whole pixels. - - - - The scroll rectangle bounds of the display object. The display object is - cropped to the size defined by the rectangle, and it scrolls within the - rectangle when you change the `x` and `y` properties - of the `scrollRect` object. - - The properties of the `scrollRect` Rectangle object use the - display object's coordinate space and are scaled just like the overall - display object. The corner bounds of the cropped window on the scrolling - display object are the origin of the display object(0,0) and the point - defined by the width and height of the rectangle. They are not centered - around the origin, but use the origin to define the upper-left corner of - the area. A scrolled display object always scrolls in whole pixel - increments. - - You can scroll an object left and right by setting the `x` - property of the `scrollRect` Rectangle object. You can scroll - an object up and down by setting the `y` property of the - `scrollRect` Rectangle object. If the display object is rotated - 90� and you scroll it left and right, the display object actually scrolls - up and down. - - - - - **BETA** - - Applies a custom Shader object to use when rendering this display object (or its children) when using - hardware rendering. This occurs as a single-pass render on this object only, if visible. In order to - apply a post-process effect to multiple display objects at once, enable `cacheAsBitmap` or use the - `filters` property with a ShaderFilter - - - - The Stage of the display object. A Flash runtime application has only one - Stage object. For example, you can create and load multiple display - objects into the display list, and the `stage` property of each - display object refers to the same Stage object(even if the display object - belongs to a loaded SWF file). - - If a display object is not added to the display list, its - `stage` property is set to `null`. - - - - - An object with properties pertaining to a display object's matrix, color - transform, and pixel bounds. The specific properties - matrix, - colorTransform, and three read-only properties - (`concatenatedMatrix`, `concatenatedColorTransform`, - and `pixelBounds`) - are described in the entry for the - Transform class. - - Each of the transform object's properties is itself an object. This - concept is important because the only way to set new values for the matrix - or colorTransform objects is to create a new object and copy that object - into the transform.matrix or transform.colorTransform property. - - For example, to increase the `tx` value of a display - object's matrix, you must make a copy of the entire matrix object, then - copy the new object into the matrix property of the transform object: - ` var myMatrix:Matrix = - myDisplayObject.transform.matrix; myMatrix.tx += 10; - myDisplayObject.transform.matrix = myMatrix; ` - - You cannot directly set the `tx` property. The following - code has no effect on `myDisplayObject`: - ` myDisplayObject.transform.matrix.tx += - 10; ` - - You can also copy an entire transform object and assign it to another - display object's transform property. For example, the following code - copies the entire transform object from `myOldDisplayObj` to - `myNewDisplayObj`: - `myNewDisplayObj.transform = myOldDisplayObj.transform;` - - The resulting display object, `myNewDisplayObj`, now has the - same values for its matrix, color transform, and pixel bounds as the old - display object, `myOldDisplayObj`. - - Note that AIR for TV devices use hardware acceleration, if it is - available, for color transforms. - - - - Whether or not the display object is visible. Display objects that are not - visible are disabled. For example, if `visible=false` for an - InteractiveObject instance, it cannot be clicked. - - - - - Indicates the width of the display object, in pixels. The width is - calculated based on the bounds of the content of the display object. When - you set the `width` property, the `scaleX` property - is adjusted accordingly, as shown in the following code: - - Except for TextField and Video objects, a display object with no - content(such as an empty sprite) has a width of 0, even if you try to set - `width` to a different value. - - - - - Indicates the _x_ coordinate of the DisplayObject instance relative - to the local coordinates of the parent DisplayObjectContainer. If the - object is inside a DisplayObjectContainer that has transformations, it is - in the local coordinate system of the enclosing DisplayObjectContainer. - Thus, for a DisplayObjectContainer rotated 90� counterclockwise, the - DisplayObjectContainer's children inherit a coordinate system that is - rotated 90� counterclockwise. The object's coordinates refer to the - registration point position. - - - - - Indicates the _y_ coordinate of the DisplayObject instance relative - to the local coordinates of the parent DisplayObjectContainer. If the - object is inside a DisplayObjectContainer that has transformations, it is - in the local coordinate system of the enclosing DisplayObjectContainer. - Thus, for a DisplayObjectContainer rotated 90� counterclockwise, the - DisplayObjectContainer's children inherit a coordinate system that is - rotated 90� counterclockwise. The object's coordinates refer to the - registration point position. - - <__alpha> - - - - <__blendMode> - - - - <__cacheAsBitmap> - - - - <__cacheAsBitmapMatrix> - - - - <__cacheBitmap> - - - - <__cacheBitmapBackground> - - - - <__cacheBitmapColorTransform> - - - - <__cacheBitmapData> - - - - <__cacheBitmapData2> - - - - <__cacheBitmapData3> - - - - <__cacheBitmapMatrix> - - - - <__cacheBitmapRenderer> - - - - <__cairo> - - - "checkstyle:Dynamic" - - - - <__children> - - - - <__customRenderClear> - - - - <__customRenderEvent> - - - - <__drawableType> - - - - <__filters> - - - - <__graphics> - - - - <__interactive> - - - - <__isCacheBitmapRender> - - - - <__isMask> - - - - <__loaderInfo> - - - - <__mask> - - - - <__maskTarget> - - - - <__name> - - - - <__objectTransform> - - - - <__renderable> - - - - <__renderDirty> - - - - <__renderParent> - - - - <__renderTransform> - - - - <__renderTransformCache> - - - - <__renderTransformChanged> - - - - <__rotation> - - - - <__rotationCosine> - - - - <__rotationSine> - - - - <__scale9Grid> - - - - <__scaleX> - - - - <__scaleY> - - - - <__scrollRect> - - - - <__shader> - - - - <__tempPoint> - - - - <__transform> - - - - <__transformDirty> - - - - <__visible> - - - - <__worldAlpha> - - - - <__worldAlphaChanged> - - - - <__worldBlendMode> - - - - <__worldClip> - - - - <__worldClipChanged> - - - - <__worldColorTransform> - - - - <__worldShader> - - - - <__worldScale9Grid> - - - - <__worldTransform> - - - - <__worldVisible> - - - - <__worldVisibleChanged> - - - - <__worldTransformInvalid> - - - - <__worldZ> - - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - "checkstyle:Dynamic" - - - - - - - - - - - - Returns a rectangle that defines the area of the display object relative - to the coordinate system of the `targetCoordinateSpace` object. - Consider the following code, which shows how the rectangle returned can - vary depending on the `targetCoordinateSpace` parameter that - you pass to the method: - - **Note:** Use the `localToGlobal()` and - `globalToLocal()` methods to convert the display object's local - coordinates to display coordinates, or display coordinates to local - coordinates, respectively. - - The `getBounds()` method is similar to the - `getRect()` method; however, the Rectangle returned by the - `getBounds()` method includes any strokes on shapes, whereas - the Rectangle returned by the `getRect()` method does not. For - an example, see the description of the `getRect()` method. - - @param targetCoordinateSpace The display object that defines the - coordinate system to use. - @return The rectangle that defines the area of the display object relative - to the `targetCoordinateSpace` object's coordinate - system. - - - - - - - Returns a rectangle that defines the boundary of the display object, based - on the coordinate system defined by the `targetCoordinateSpace` - parameter, excluding any strokes on shapes. The values that the - `getRect()` method returns are the same or smaller than those - returned by the `getBounds()` method. - - **Note:** Use `localToGlobal()` and - `globalToLocal()` methods to convert the display object's local - coordinates to Stage coordinates, or Stage coordinates to local - coordinates, respectively. - - @param targetCoordinateSpace The display object that defines the - coordinate system to use. - @return The rectangle that defines the area of the display object relative - to the `targetCoordinateSpace` object's coordinate - system. - - - - - - - Converts the `point` object from the Stage(global) coordinates - to the display object's(local) coordinates. - - To use this method, first create an instance of the Point class. The - _x_ and _y_ values that you assign represent global coordinates - because they relate to the origin(0,0) of the main display area. Then - pass the Point instance as the parameter to the - `globalToLocal()` method. The method returns a new Point object - with _x_ and _y_ values that relate to the origin of the display - object instead of the origin of the Stage. - - @param point An object created with the Point class. The Point object - specifies the _x_ and _y_ coordinates as - properties. - @return A Point object with coordinates relative to the display object. - - - - - - - Evaluates the bounding box of the display object to see if it overlaps or - intersects with the bounding box of the `obj` display object. - - @param obj The display object to test against. - @return `true` if the bounding boxes of the display objects - intersect; `false` if not. - - - - - - - - - { shapeFlag : false } - Evaluates the display object to see if it overlaps or intersects with the - point specified by the `x` and `y` parameters. The - `x` and `y` parameters specify a point in the - coordinate space of the Stage, not the display object container that - contains the display object(unless that display object container is the - Stage). - - @param x The _x_ coordinate to test against this object. - @param y The _y_ coordinate to test against this object. - @param shapeFlag Whether to check against the actual pixels of the object - (`true`) or the bounding box - (`false`). - @return `true` if the display object overlaps or intersects - with the specified point; `false` otherwise. - - - - Calling the `invalidate()` method signals to have the current object - redrawn the next time the object is eligible to be rendered. - - - - - - - Converts the `point` object from the display object's(local) - coordinates to the Stage(global) coordinates. - - This method allows you to convert any given _x_ and _y_ - coordinates from values that are relative to the origin(0,0) of a - specific display object(local coordinates) to values that are relative to - the origin of the Stage(global coordinates). - - To use this method, first create an instance of the Point class. The - _x_ and _y_ values that you assign represent local coordinates - because they relate to the origin of the display object. - - You then pass the Point instance that you created as the parameter to - the `localToGlobal()` method. The method returns a new Point - object with _x_ and _y_ values that relate to the origin of the - Stage instead of the origin of the display object. - - @param point The name or identifier of a point created with the Point - class, specifying the _x_ and _y_ coordinates as - properties. - @return A Point object with coordinates relative to the Stage. - - - - - - - - - - - - - { useCapture : false } - "checkstyle:Dynamic" - - - <__cleanup set="method" line="1369"> - - - - <__dispatch set="method" line="1396"> - - - - - - - <__dispatchChildren set="method" line="1412"> - - - - - - - <__dispatchEvent set="method" line="1415" override="1"> - - - - - - - <__dispatchWithCapture set="method" line="1440"> - - - - - - - <__enterFrame set="method" line="1481"> - - - - - - - <__getBounds set="method" line="1484"> - - - - - - - - <__getCursor set="method" line="1492"> - - - - <__getFilterBounds set="method" line="1497"> - - - - - - - - <__getInteractive set="method" line="1523"> - - - - - - - <__getLocalBounds set="method" line="1528"> - - - - - - - <__getRenderBounds set="method" line="1543"> - - - - - - - - <__getRenderTransform set="method" line="1561"> - - - - <__getWorldTransform set="method" line="1567"> - - - - <__globalToLocal set="method" line="1602"> - - - - - - - - <__hitTest set="method" line="1619"> - - - - - - - - - - - - <__hitTestMask set="method" line="1640"> - - - - - - - - <__readGraphicsData set="method" line="1653"> - - - - - - - - <__setParentRenderDirty set="method" line="1661"> - - - - <__setRenderDirty get="inline" set="null" line="1671"> - - - - <__setStageReference set="method" line="1680"> - - - - - - - <__setTransformDirty set="method" line="1685"> - - - - <__setWorldTransformInvalid set="method" line="1696"> - - - - <__stopAllMovieClips set="method" line="1700"> - - - - <__update set="method" line="1703"> - - - - - - - - <__updateTransforms set="method" line="1828"> - - - - - - { overrideTransform : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The DisplayObject class is the base class for all objects that can be - placed on the display list. The display list manages all objects displayed - in openfl. Use the DisplayObjectContainer class to arrange the - display objects in the display list. DisplayObjectContainer objects can - have child display objects, while other display objects, such as Shape and - TextField objects, are "leaf" nodes that have only parents and siblings, no - children. - - The DisplayObject class supports basic functionality like the _x_ - and _y_ position of an object, as well as more advanced properties of - the object such as its transformation matrix. - - DisplayObject is an abstract base class; therefore, you cannot call - DisplayObject directly. Invoking `new DisplayObject()` throws an - `ArgumentError` exception. - - All display objects inherit from the DisplayObject class. - - The DisplayObject class itself does not include any APIs for rendering - content onscreen. For that reason, if you want create a custom subclass of - the DisplayObject class, you will want to extend one of its subclasses that - do have APIs for rendering content onscreen, such as the Shape, Sprite, - Bitmap, SimpleButton, TextField, or MovieClip class. - - The DisplayObject class contains several broadcast events. Normally, the - target of any particular event is a specific DisplayObject instance. For - example, the target of an `added` event is the specific - DisplayObject instance that was added to the display list. Having a single - target restricts the placement of event listeners to that target and in - some cases the target's ancestors on the display list. With broadcast - events, however, the target is not a specific DisplayObject instance, but - rather all DisplayObject instances, including those that are not on the - display list. This means that you can add a listener to any DisplayObject - instance to listen for broadcast events. In addition to the broadcast - events listed in the DisplayObject class's Events table, the DisplayObject - class also inherits two broadcast events from the EventDispatcher class: - `activate` and `deactivate`. - - Some properties previously used in the ActionScript 1.0 and 2.0 - MovieClip, TextField, and Button classes(such as `_alpha`, - `_height`, `_name`, `_width`, - `_x`, `_y`, and others) have equivalents in the - ActionScript 3.0 DisplayObject class that are renamed so that they no - longer begin with the underscore(_) character. - - For more information, see the "Display Programming" chapter of the - _ActionScript 3.0 Developer's Guide_. - - @event added Dispatched when a display object is added to the - display list. The following methods trigger this - event: - `DisplayObjectContainer.addChild()`, - `DisplayObjectContainer.addChildAt()`. - @event addedToStage Dispatched when a display object is added to the on - stage display list, either directly or through the - addition of a sub tree in which the display object - is contained. The following methods trigger this - event: - `DisplayObjectContainer.addChild()`, - `DisplayObjectContainer.addChildAt()`. - @event enterFrame [broadcast event] Dispatched when the playhead is - entering a new frame. If the playhead is not - moving, or if there is only one frame, this event - is dispatched continuously in conjunction with the - frame rate. This event is a broadcast event, which - means that it is dispatched by all display objects - with a listener registered for this event. - @event exitFrame [broadcast event] Dispatched when the playhead is - exiting the current frame. All frame scripts have - been run. If the playhead is not moving, or if - there is only one frame, this event is dispatched - continuously in conjunction with the frame rate. - This event is a broadcast event, which means that - it is dispatched by all display objects with a - listener registered for this event. - @event frameConstructed [broadcast event] Dispatched after the constructors - of frame display objects have run but before frame - scripts have run. If the playhead is not moving, or - if there is only one frame, this event is - dispatched continuously in conjunction with the - frame rate. This event is a broadcast event, which - means that it is dispatched by all display objects - with a listener registered for this event. - @event removed Dispatched when a display object is about to be - removed from the display list. Two methods of the - DisplayObjectContainer class generate this event: - `removeChild()` and - `removeChildAt()`. - - The following methods of a - DisplayObjectContainer object also generate this - event if an object must be removed to make room for - the new object: `addChild()`, - `addChildAt()`, and - `setChildIndex()`. - @event removedFromStage Dispatched when a display object is about to be - removed from the display list, either directly or - through the removal of a sub tree in which the - display object is contained. Two methods of the - DisplayObjectContainer class generate this event: - `removeChild()` and - `removeChildAt()`. - - The following methods of a - DisplayObjectContainer object also generate this - event if an object must be removed to make room for - the new object: `addChild()`, - `addChildAt()`, and - `setChildIndex()`. - @event render [broadcast event] Dispatched when the display list - is about to be updated and rendered. This event - provides the last opportunity for objects listening - for this event to make changes before the display - list is rendered. You must call the - `invalidate()` method of the Stage - object each time you want a `render` - event to be dispatched. `Render` events - are dispatched to an object only if there is mutual - trust between it and the object that called - `Stage.invalidate()`. This event is a - broadcast event, which means that it is dispatched - by all display objects with a listener registered - for this event. - - **Note: **This event is not dispatched if the - display is not rendering. This is the case when the - content is either minimized or obscured. - - - "tags=\"haxe,release\"" - - lime.graphics.Image - lime.graphics.ImageBuffer - openfl.display3D._internal.Context3DState - openfl.display._internal.Context3DGraphics - openfl.events.Event - openfl.display3D.Context3D - openfl.display.Bitmap - openfl.display.BitmapData - openfl.display.DisplayObjectContainer - openfl.display.Graphics - openfl.display.Shader - openfl.display.Stage - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - openfl.geom.Transform - -
- - - - - Specifies whether the object receives `doubleClick` events. The - default value is `false`, which means that by default an - InteractiveObject instance does not receive `doubleClick` - events. If the `doubleClickEnabled` property is set to - `true`, the instance receives `doubleClick` events - within its bounds. The `mouseEnabled` property of the - InteractiveObject instance must also be set to `true` for the - object to receive `doubleClick` events. - - No event is dispatched by setting this property. You must use the - `addEventListener()` method to add an event listener for the - `doubleClick` event. - - - - Specifies whether this object displays a focus rectangle. It can take - one of three values: `true`, `false`, or `null`. Values of `true` and - `false` work as expected, specifying whether or not the focus - rectangle appears. A value of `null` indicates that this object obeys - the `stageFocusRect` property of the Stage. - - - - Specifies whether this object receives mouse, or other user input, - messages. The default value is `true`, which means that by - default any InteractiveObject instance that is on the display list - receives mouse events or other user input events. If - `mouseEnabled` is set to `false`, the instance does - not receive any mouse events(or other user input events like keyboard - events). Any children of this instance on the display list are not - affected. To change the `mouseEnabled` behavior for all - children of an object on the display list, use - `openfl.display.DisplayObjectContainer.mouseChildren`. - - No event is dispatched by setting this property. You must use the - `addEventListener()` method to create interactive - functionality. - - - - Specifies whether a virtual keyboard(an on-screen, software keyboard) - should display when this InteractiveObject instance receives focus. - - By default, the value is `false` and focusing an - InteractiveObject instance does not raise a soft keyboard. If the - `needsSoftKeyboard` property is set to `true`, the - runtime raises a soft keyboard when the InteractiveObject instance is - ready to accept user input. An InteractiveObject instance is ready to - accept user input after a programmatic call to set the Stage - `focus` property or a user interaction, such as a "tap." If the - client system has a hardware keyboard available or does not support - virtual keyboards, then the soft keyboard is not raised. - - The InteractiveObject instance dispatches - `softKeyboardActivating`, `softKeyboardActivate`, - and `softKeyboardDeactivate` events when the soft keyboard - raises and lowers. - - **Note:** This property is not supported in AIR applications on - iOS. - - - - Defines the area that should remain on-screen when a soft keyboard is - displayed. - If the `needsSoftKeyboard` property of this InteractiveObject is - `true`, then the runtime adjusts the display as needed to keep the - object in view while the user types. Ordinarily, the runtime uses the - object bounds obtained from the `DisplayObject.getBounds()` method. - You can specify a different area using this - `softKeyboardInputAreaOfInterest` property. - - Specify the `softKeyboardInputAreaOfInterest` in stage coordinates. - - **Note:** On Android, the `softKeyboardInputAreaOfInterest` is not - respected in landscape orientations. - - - - Specifies whether this object is in the tab order. If this object is - in the tab order, the value is `true`; otherwise, the value is - `false`. By default, the value is `false`, except for the following: - * For a SimpleButton object, the value is `true`. - * For a TextField object with `type = "input"`, the value is `true`. - * For a Sprite object or MovieClip object with `buttonMode = true`, - the value is `true`. - - - - Specifies the tab ordering of objects in a SWF file. The `tabIndex` - property is -1 by default, meaning no tab index is set for the object. - - If any currently displayed object in the SWF file contains a - `tabIndex` property, automatic tab ordering is disabled, and the tab - ordering is calculated from the `tabIndex` properties of objects in - the SWF file. The custom tab ordering includes only objects that have - `tabIndex` properties. - - The `tabIndex` property can be a non-negative integer. The objects are - ordered according to their `tabIndex` properties, in ascending order. - An object with a `tabIndex` value of 1 precedes an object with a - `tabIndex` value of 2. Do not use the same `tabIndex` value for - multiple objects. - - The custom tab ordering that the `tabIndex` property defines is - _flat_. This means that no attention is paid to the hierarchical - relationships of objects in the SWF file. All objects in the SWF file - with `tabIndex` properties are placed in the tab order, and the tab - order is determined by the order of the `tabIndex` values. - - **Note:** To set the tab order for TLFTextField instances, cast the - display object child of the TLFTextField as an InteractiveObject, then - set the `tabIndex` property. For example: - - ```haxe - cast(tlfInstance.getChildAt(1), InteractiveObject).tabIndex = 3; - ``` - - To reverse the tab order from the default setting for three instances of - a TLFTextField object (`tlfInstance1`, `tlfInstance2` and - `tlfInstance3`), use: - - ```haxe - cast(tlfInstance1.getChildAt(1), InteractiveObject).tabIndex = 3; - cast(tlfInstance2.getChildAt(1), InteractiveObject).tabIndex = 2; - cast(tlfInstance3.getChildAt(1), InteractiveObject).tabIndex = 1; - ``` - - <__tabEnabled> - - - - <__tabIndex> - - - - - - Raises a virtual keyboard. - - Calling this method focuses the InteractiveObject instance and raises - the soft keyboard, if necessary. The `needsSoftKeyboard` must - also be `true`. A keyboard is not raised if a hardware keyboard - is available, or if the client system does not support virtual - keyboards. - - **Note:** This method is not supported in AIR applications on - iOS. - - @return A value of `true` means that the soft keyboard request - was granted; `false` means that the soft keyboard was - not raised. - - <__allowMouseFocus set="method" line="1257"> - - - - <__getInteractive set="method" line="1262" override="1"> - - - - - - - <__hitTest set="method" line="1278" override="1"> - - - - - - - - - - - - <__tabTest set="method" line="1284"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Calling the `new InteractiveObject()` constructor throws an - `ArgumentError` exception. You can, however, call constructors - for the following subclasses of InteractiveObject: - - * `new SimpleButton()` - * `new TextField()` - * `new Loader()` - * `new Sprite()` - * `new MovieClip()` - - The InteractiveObject class is the abstract base class for all display - objects with which the user can interact, using the mouse, keyboard, or - other user input device. - - You cannot instantiate the InteractiveObject class directly. A call to - the `new InteractiveObject()` constructor throws an - `ArgumentError` exception. - - The InteractiveObject class itself does not include any APIs for - rendering content onscreen. To create a custom subclass of the - InteractiveObject class, extend one of the subclasses that do have APIs for - rendering content onscreen, such as the Sprite, SimpleButton, TextField, or - MovieClip classes. - - @event clear Dispatched when the user selects 'Clear'(or - 'Delete') from the text context menu. This - event is dispatched to the object that - currently has focus. If the object that - currently has focus is a TextField, the - default behavior of this event is to cause - any currently selected text in the text field - to be deleted. - @event click Dispatched when a user presses and releases - the main button of the user's pointing device - over the same InteractiveObject. For a click - event to occur, it must always follow this - series of events in the order of occurrence: - mouseDown event, then mouseUp. The target - object must be identical for both of these - events; otherwise the `click` - event does not occur. Any number of other - mouse events can occur at any time between - the `mouseDown` or - `mouseUp` events; the - `click` event still occurs. - @event contextMenu Dispatched when a user gesture triggers the - context menu associated with this interactive - object in an AIR application. - @event copy Dispatched when the user activates the - platform-specific accelerator key combination - for a copy operation or selects 'Copy' from - the text context menu. This event is - dispatched to the object that currently has - focus. If the object that currently has focus - is a TextField, the default behavior of this - event is to cause any currently selected text - in the text field to be copied to the - clipboard. - @event cut Dispatched when the user activates the - platform-specific accelerator key combination - for a cut operation or selects 'Cut' from the - text context menu. This event is dispatched - to the object that currently has focus. If - the object that currently has focus is a - TextField, the default behavior of this event - is to cause any currently selected text in - the text field to be cut to the clipboard. - @event doubleClick Dispatched when a user presses and releases - the main button of a pointing device twice in - rapid succession over the same - InteractiveObject when that object's - `doubleClickEnabled` flag is set - to `true`. For a - `doubleClick` event to occur, it - must immediately follow the following series - of events: `mouseDown`, - `mouseUp`, `click`, - `mouseDown`, `mouseUp`. - All of these events must share the same - target as the `doubleClick` event. - The second click, represented by the second - `mouseDown` and - `mouseUp` events, must occur - within a specific period of time after the - `click` event. The allowable - length of this period varies by operating - system and can often be configured by the - user. If the target is a selectable text - field, the word under the pointer is selected - as the default behavior. If the target - InteractiveObject does not have its - `doubleClickEnabled` flag set to - `true` it receives two - `click` events. - - The `doubleClickEnabled` - property defaults to `false`. - - The double-click text selection behavior - of a TextField object is not related to the - `doubleClick` event. Use - `TextField.doubleClickEnabled` to - control TextField selections. - @event focusIn Dispatched _after_ a display object - gains focus. This situation happens when a - user highlights the object with a pointing - device or keyboard navigation. The recipient - of such focus is called the target object of - this event, while the corresponding - InteractiveObject instance that lost focus - because of this change is called the related - object. A reference to the related object is - stored in the receiving object's - `relatedObject` property. The - `shiftKey` property is not used. - This event follows the dispatch of the - previous object's `focusOut` - event. - @event focusOut Dispatched _after_ a display object - loses focus. This happens when a user - highlights a different object with a pointing - device or keyboard navigation. The object - that loses focus is called the target object - of this event, while the corresponding - InteractiveObject instance that receives - focus is called the related object. A - reference to the related object is stored in - the target object's - `relatedObject` property. The - `shiftKey` property is not used. - This event precedes the dispatch of the - `focusIn` event by the related - object. - @event gesturePan Dispatched when the user moves a point of - contact over the InteractiveObject instance - on a touch-enabled device(such as moving a - finger from left to right over a display - object on a mobile phone or tablet with a - touch screen). Some devices might also - interpret this contact as a - `mouseOver` event and as a - `touchOver` event. - - Specifically, if a user moves a finger - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `mouseOver` event or a - `touchOver` event or a - `gesturePan` event, or all if the - current environment supports it. Choose how - you want to handle the user interaction. Use - the openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `gesturePan` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event gesturePressAndTap Dispatched when the user creates a point of - contact with an InteractiveObject instance, - then taps on a touch-enabled device(such as - placing several fingers over a display object - to open a menu and then taps one finger to - select a menu item on a mobile phone or - tablet with a touch screen). Some devices - might also interpret this contact as a - combination of several mouse events, as well. - - Specifically, if a user moves a finger - over an InteractiveObject, and then provides - a secondary tap, the InteractiveObject - instance can dispatch a - `mouseOver` event and a - `click` event(among others) as - well as the `gesturePressAndTap` - event, or all if the current environment - supports it. Choose how you want to handle - the user interaction. Use the - openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `gesturePressAndTap` event, you - can design your event handler to respond to - the specific needs of a touch-enabled - environment and provide users with a richer - touch-enabled experience. You can also handle - both events, separately, to provide a - different response for a touch event than a - mouse event. - - When handling the properties of the event - object, note that the `localX` and - `localY` properties are set to the - primary point of contact(the "push"). The - `offsetX` and `offsetY` - properties are the distance to the secondary - point of contact(the "tap"). - @event gestureRotate Dispatched when the user performs a rotation - gesture at a point of contact with an - InteractiveObject instance(such as touching - two fingers and rotating them over a display - object on a mobile phone or tablet with a - touch screen). Two-finger rotation is a - common rotation gesture, but each device and - operating system can have its own - requirements to indicate rotation. Some - devices might also interpret this contact as - a combination of several mouse events, as - well. - - Specifically, if a user moves a finger - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `mouseOver` event and a - `click` event(among others), in - addition to the `gestureRotate` - event, or all if the current environment - supports it. Choose how you want to handle - the user interaction. Use the - openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `gestureRotate` event, you can - design your event handler to respond to the - specific needs of a touch-enabled environment - and provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - When handling the properties of the event - object, note that the `localX` and - `localY` properties are set to the - primary point of contact. The - `offsetX` and `offsetY` - properties are the distance to the point of - contact where the rotation gesture is - complete. - - **Note:** See the Multitouch class for - environment compatibility information. - @event gestureSwipe Dispatched when the user performs a swipe - gesture at a point of contact with an - InteractiveObject instance(such as touching - three fingers to a screen and then moving - them in parallel over a display object on a - mobile phone or tablet with a touch screen). - Moving several fingers in parallel is a - common swipe gesture, but each device and - operating system can have its own - requirements for a swipe. Some devices might - also interpret this contact as a combination - of several mouse events, as well. - - Specifically, if a user moves a finger - over an InteractiveObject, and then moves the - fingers together, the InteractiveObject - instance can dispatch a `rollOver` - event and a `rollOut` event(among - others), in addition to the - `gestureSwipe` event, or all if - the current environment supports it. Choose - how you want to handle the user interaction. - If you choose to handle the - `rollOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `gestureSwipe` event, you can - design your event handler to respond to the - specific needs of a touch-enabled environment - and provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - When handling the properties of the event - object, note that the `localX` and - `localY` properties are set to the - primary point of contact. The - `offsetX` and `offsetY` - properties are the distance to the point of - contact where the swipe gesture is - complete. - - **Note:** While some devices using the - Mac OS operating system can interpret a - four-finger swipe, this API only supports a - three-finger swipe. - @event gestureTwoFingerTap Dispatched when the user presses two points - of contact over the same InteractiveObject - instance on a touch-enabled device(such as - presses and releases two fingers over a - display object on a mobile phone or tablet - with a touch screen). Some devices might also - interpret this contact as a - `doubleClick` event. - - Specifically, if a user taps two fingers - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `doubleClick` event or a - `gestureTwoFingerTap` event, or - both if the current environment supports it. - Choose how you want to handle the user - interaction. Use the openfl.ui.Multitouch - class to manage touch event handling(enable - touch gesture event handling, simple touch - point event handling, or disable touch events - so only mouse events are dispatched). If you - choose to handle the `doubleClick` - event, then the same event handler will run - on a touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `gestureTwoFingerTap` event, you - can design your event handler to respond to - the specific needs of a touch-enabled - environment and provide users with a richer - touch-enabled experience. You can also handle - both events, separately, to provide a - different response for a touch event than a - mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event gestureZoom Dispatched when the user performs a zoom - gesture at a point of contact with an - InteractiveObject instance(such as touching - two fingers to a screen and then quickly - spreading the fingers apart over a display - object on a mobile phone or tablet with a - touch screen). Moving fingers apart is a - common zoom gesture, but each device and - operating system can have its own - requirements to indicate zoom. Some devices - might also interpret this contact as a - combination of several mouse events, as well. - - Specifically, if a user moves a finger - over an InteractiveObject, and then moves the - fingers apart, the InteractiveObject instance - can dispatch a `mouseOver` event - and a `click` event(among - others), in addition to the - `gestureZoom` event, or all if the - current environment supports it. Choose how - you want to handle the user interaction. Use - the openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `gestureZoom` event, you can - design your event handler to respond to the - specific needs of a touch-enabled environment - and provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - When handling the properties of the event - object, note that the `localX` and - `localY` properties are set to the - primary point of contact. The - `offsetX` and `offsetY` - properties are the distance to the point of - contact where the zoom gesture is - complete. - - **Note:** See the Multitouch class for - environment compatibility information. - @event imeStartComposition This event is dispatched to any client app - that supports inline input with an IME - @event keyDown Dispatched when the user presses a key. - Mappings between keys and specific characters - vary by device and operating system. This - event type is generated after such a mapping - occurs but before the processing of an input - method editor(IME). IMEs are used to enter - characters, such as Chinese ideographs, that - the standard QWERTY keyboard is ill-equipped - to produce. This event occurs before the - `keyUp` event. - - In AIR, canceling this event prevents the - character from being entered into a text - field. - @event keyFocusChange Dispatched when the user attempts to change - focus by using keyboard navigation. The - default behavior of this event is to change - the focus and dispatch the corresponding - `focusIn` and - `focusOut` events. - - This event is dispatched to the object - that currently has focus. The related object - for this event is the InteractiveObject - instance that receives focus if you do not - prevent the default behavior. You can prevent - the change in focus by calling the - `preventDefault()` method in an - event listener that is properly registered - with the target object. Focus changes and - `focusIn` and - `focusOut` events are dispatched - by default. - @event keyUp Dispatched when the user releases a key. - Mappings between keys and specific characters - vary by device and operating system. This - event type is generated after such a mapping - occurs but before the processing of an input - method editor(IME). IMEs are used to enter - characters, such as Chinese ideographs, that - the standard QWERTY keyboard is ill-equipped - to produce. This event occurs after a - `keyDown` event and has the - following characteristics: - @event middleClick Dispatched when a user presses and releases - the middle button of the user's pointing - device over the same InteractiveObject. For a - `middleClick` event to occur, it - must always follow this series of events in - the order of occurrence: - `middleMouseDown` event, then - `middleMouseUp`. The target object - must be identical for both of these events; - otherwise the `middleClick` event - does not occur. Any number of other mouse - events can occur at any time between the - `middleMouseDown` or - `middleMouseUp` events; the - `middleClick` event still occurs. - @event middleMouseDown Dispatched when a user presses the middle - pointing device button over an - InteractiveObject instance. - @event middleMouseUp Dispatched when a user releases the pointing - device button over an InteractiveObject - instance. - @event mouseDown Dispatched when a user presses the pointing - device button over an InteractiveObject - instance. If the target is a SimpleButton - instance, the SimpleButton instance displays - the `downState` display object as - the default behavior. If the target is a - selectable text field, the text field begins - selection as the default behavior. - @event mouseFocusChange Dispatched when the user attempts to change - focus by using a pointer device. The default - behavior of this event is to change the focus - and dispatch the corresponding - `focusIn` and - `focusOut` events. - - This event is dispatched to the object - that currently has focus. The related object - for this event is the InteractiveObject - instance that receives focus if you do not - prevent the default behavior. You can prevent - the change in focus by calling - `preventDefault()` in an event - listener that is properly registered with the - target object. The `shiftKey` - property is not used. Focus changes and - `focusIn` and - `focusOut` events are dispatched - by default. - @event mouseMove Dispatched when a user moves the pointing - device while it is over an InteractiveObject. - If the target is a text field that the user - is selecting, the selection is updated as the - default behavior. - @event mouseOut Dispatched when the user moves a pointing - device away from an InteractiveObject - instance. The event target is the object - previously under the pointing device. The - `relatedObject` is the object the - pointing device has moved to. If the target - is a SimpleButton instance, the button - displays the `upState` display - object as the default behavior. - - The `mouseOut` event is - dispatched each time the mouse leaves the - area of any child object of the display - object container, even if the mouse remains - over another child object of the display - object container. This is different behavior - than the purpose of the `rollOut` - event, which is to simplify the coding of - rollover behaviors for display object - containers with children. When the mouse - leaves the area of a display object or the - area of any of its children to go to an - object that is not one of its children, the - display object dispatches the - `rollOut` event.The - `rollOut` events are dispatched - consecutively up the parent chain of the - object, starting with the object and ending - with the highest parent that is neither the - root nor an ancestor of the - `relatedObject`. - @event mouseOver Dispatched when the user moves a pointing - device over an InteractiveObject instance. - The `relatedObject` is the object - that was previously under the pointing - device. If the target is a SimpleButton - instance, the object displays the - `overState` or - `upState` display object, - depending on whether the mouse button is - down, as the default behavior. - - The `mouseOver` event is - dispatched each time the mouse enters the - area of any child object of the display - object container, even if the mouse was - already over another child object of the - display object container. This is different - behavior than the purpose of the - `rollOver` event, which is to - simplify the coding of rollout behaviors for - display object containers with children. When - the mouse enters the area of a display object - or the area of any of its children from an - object that is not one of its children, the - display object dispatches the - `rollOver` event. The - `rollOver` events are dispatched - consecutively down the parent chain of the - object, starting with the highest parent that - is neither the root nor an ancestor of the - `relatedObject` and ending with - the object. - @event mouseUp Dispatched when a user releases the pointing - device button over an InteractiveObject - instance. If the target is a SimpleButton - instance, the object displays the - `upState` display object. If the - target is a selectable text field, the text - field ends selection as the default behavior. - @event mouseWheel Dispatched when a mouse wheel is spun over an - InteractiveObject instance. If the target is - a text field, the text scrolls as the default - behavior. Only available on Microsoft Windows - operating systems. - @event nativeDragComplete Dispatched by the drag initiator - InteractiveObject when the user releases the - drag gesture. - - The event's dropAction property indicates - the action set by the drag target object; a - value of "none" - (`DragActions.NONE`) indicates - that the drop was canceled or was not - accepted. - - The `nativeDragComplete` event - handler is a convenient place to update the - state of the initiating display object, for - example, by removing an item from a list(on - a drag action of "move"), or by changing the - visual properties. - @event nativeDragDrop Dispatched by the target InteractiveObject - when a dragged object is dropped on it and - the drop has been accepted with a call to - DragManager.acceptDragDrop(). - - Access the dropped data using the event - object `clipboard` property. - - The handler for this event should set the - `DragManager.dropAction` property - to provide feedback to the initiator object - about which drag action was taken. If no - value is set, the DragManager will select a - default value from the list of allowed - actions. - @event nativeDragEnter Dispatched by an InteractiveObject when a - drag gesture enters its boundary. - - Handle either the - `nativeDragEnter` or - `nativeDragOver` events to allow - the display object to become the drop - target. - - To determine whether the dispatching - display object can accept the drop, check the - suitability of the data in - `clipboard` property of the event - object, and the allowed drag actions in the - `allowedActions` property. - @event nativeDragExit Dispatched by an InteractiveObject when a - drag gesture leaves its boundary. - @event nativeDragOver Dispatched by an InteractiveObject - continually while a drag gesture remains - within its boundary. - - `nativeDragOver` events are - dispatched whenever the mouse is moved. On - Windows and Mac, they are also dispatched on - a short timer interval even when the mouse - has not moved. - - Handle either the - `nativeDragOver` or - `nativeDragEnter` events to allow - the display object to become the drop - target. - - To determine whether the dispatching - display object can accept the drop, check the - suitability of the data in - `clipboard` property of the event - object, and the allowed drag actions in the - `allowedActions` property. - @event nativeDragStart Dispatched at the beginning of a drag - operation by the InteractiveObject that is - specified as the drag initiator in the - DragManager.doDrag() call. - @event nativeDragUpdate Dispatched during a drag operation by the - InteractiveObject that is specified as the - drag initiator in the DragManager.doDrag() - call. - - `nativeDragUpdate` events are - not dispatched on Linux. - @event paste Dispatched when the user activates the - platform-specific accelerator key combination - for a paste operation or selects 'Paste' from - the text context menu. This event is - dispatched to the object that currently has - focus. If the object that currently has focus - is a TextField, the default behavior of this - event is to cause the contents of the - clipboard to be pasted into the text field at - the current insertion point replacing any - currently selected text in the text field. - @event rightClick Dispatched when a user presses and releases - the right button of the user's pointing - device over the same InteractiveObject. For a - `rightClick` event to occur, it - must always follow this series of events in - the order of occurrence: - `rightMouseDown` event, then - `rightMouseUp`. The target object - must be identical for both of these events; - otherwise the `rightClick` event - does not occur. Any number of other mouse - events can occur at any time between the - `rightMouseDown` or - `rightMouseUp` events; the - `rightClick` event still occurs. - @event rightMouseDown Dispatched when a user presses the pointing - device button over an InteractiveObject - instance. - @event rightMouseUp Dispatched when a user releases the pointing - device button over an InteractiveObject - instance. - @event rollOut Dispatched when the user moves a pointing - device away from an InteractiveObject - instance. The event target is the object - previously under the pointing device or a - parent of that object. The - `relatedObject` is the object that - the pointing device has moved to. The - `rollOut` events are dispatched - consecutively up the parent chain of the - object, starting with the object and ending - with the highest parent that is neither the - root nor an ancestor of the - `relatedObject`. - - The purpose of the `rollOut` - event is to simplify the coding of rollover - behaviors for display object containers with - children. When the mouse leaves the area of a - display object or the area of any of its - children to go to an object that is not one - of its children, the display object - dispatches the `rollOut` event. - This is different behavior than that of the - `mouseOut` event, which is - dispatched each time the mouse leaves the - area of any child object of the display - object container, even if the mouse remains - over another child object of the display - object container. - @event rollOver Dispatched when the user moves a pointing - device over an InteractiveObject instance. - The event target is the object under the - pointing device or a parent of that object. - The `relatedObject` is the object - that was previously under the pointing - device. The `rollOver` events are - dispatched consecutively down the parent - chain of the object, starting with the - highest parent that is neither the root nor - an ancestor of the `relatedObject` - and ending with the object. - - The purpose of the `rollOver` - event is to simplify the coding of rollout - behaviors for display object containers with - children. When the mouse enters the area of a - display object or the area of any of its - children from an object that is not one of - its children, the display object dispatches - the `rollOver` event. This is - different behavior than that of the - `mouseOver` event, which is - dispatched each time the mouse enters the - area of any child object of the display - object container, even if the mouse was - already over another child object of the - display object container. - @event selectAll Dispatched when the user activates the - platform-specific accelerator key combination - for a select all operation or selects 'Select - All' from the text context menu. This event - is dispatched to the object that currently - has focus. If the object that currently has - focus is a TextField, the default behavior of - this event is to cause all the contents of - the text field to be selected. - @event softKeyboardActivate Dispatched immediately after the soft - keyboard is raised. - @event softKeyboardActivating Dispatched immediately before the soft - keyboard is raised. - @event softKeyboardDeactivate Dispatched immediately after the soft - keyboard is lowered. - @event tabChildrenChange Dispatched when the value of the object's - `tabChildren` flag changes. - @event tabEnabledChange Dispatched when the object's - `tabEnabled` flag changes. - @event tabIndexChange Dispatched when the value of the object's - `tabIndex` property changes. - @event textInput Dispatched when a user enters one or more - characters of text. Various text input - methods can generate this event, including - standard keyboards, input method editors - (IMEs), voice or speech recognition systems, - and even the act of pasting plain text with - no formatting or style information. - @event touchBegin Dispatched when the user first contacts a - touch-enabled device(such as touches a - finger to a mobile phone or tablet with a - touch screen). Some devices might also - interpret this contact as a - `mouseDown` event. - - Specifically, if a user touches a finger - to a touch screen, the InteractiveObject - instance can dispatch a - `mouseDown` event or a - `touchBegin` event, or both if the - current environment supports it. Choose how - you want to handle the user interaction. Use - the openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseDown` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `touchBegin` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchEnd Dispatched when the user removes contact with - a touch-enabled device(such as lifts a - finger off a mobile phone or tablet with a - touch screen). Some devices might also - interpret this contact as a - `mouseUp` event. - - Specifically, if a user lifts a finger - from a touch screen, the InteractiveObject - instance can dispatch a `mouseUp` - event or a `touchEnd` event, or - both if the current environment supports it. - Choose how you want to handle the user - interaction. Use the openfl.ui.Multitouch - class to manage touch event handling(enable - touch gesture event handling, simple touch - point event handling, or disable touch events - so only mouse events are dispatched). If you - choose to handle the `mouseUp` - event, then the same event handler will run - on a touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `touchEnd` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchMove Dispatched when the user moves the point of - contact with a touch-enabled device(such as - drags a finger across a mobile phone or - tablet with a touch screen). Some devices - might also interpret this contact as a - `mouseMove` event. - - Specifically, if a user moves a finger - across a touch screen, the InteractiveObject - instance can dispatch a - `mouseMove` event or a - `touchMove` event, or both if the - current environment supports it. Choose how - you want to handle the user interaction. Use - the openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseMove` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `touchMove` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchOut Dispatched when the user moves the point of - contact away from InteractiveObject instance - on a touch-enabled device(such as drags a - finger from one display object to another on - a mobile phone or tablet with a touch - screen). Some devices might also interpret - this contact as a `mouseOut` - event. - - Specifically, if a user moves a finger - across a touch screen, the InteractiveObject - instance can dispatch a `mouseOut` - event or a `touchOut` event, or - both if the current environment supports it. - Choose how you want to handle the user - interaction. Use the openfl.ui.Multitouch - class to manage touch event handling(enable - touch gesture event handling, simple touch - point event handling, or disable touch events - so only mouse events are dispatched). If you - choose to handle the `mouseOut` - event, then the same event handler will run - on a touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `touchOut` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchOver Dispatched when the user moves the point of - contact over an InteractiveObject instance on - a touch-enabled device(such as drags a - finger from a point outside a display object - to a point over a display object on a mobile - phone or tablet with a touch screen). Some - devices might also interpret this contact as - a `mouseOver` event. - - Specifically, if a user moves a finger - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `mouseOver` event or a - `touchOver` event, or both if the - current environment supports it. Choose how - you want to handle the user interaction. Use - the openfl.ui.Multitouch class to manage touch - event handling(enable touch gesture event - handling, simple touch point event handling, - or disable touch events so only mouse events - are dispatched). If you choose to handle the - `mouseOver` event, then the same - event handler will run on a touch-enabled - device and a mouse enabled device. However, - if you choose to handle the - `touchOver` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchRollOut Dispatched when the user moves the point of - contact away from an InteractiveObject - instance on a touch-enabled device(such as - drags a finger from over a display object to - a point outside the display object on a - mobile phone or tablet with a touch screen). - Some devices might also interpret this - contact as a `rollOut` event. - - Specifically, if a user moves a finger - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `rollOut` event or a - `touchRollOut` event, or both if - the current environment supports it. Choose - how you want to handle the user interaction. - Use the openfl.ui.Multitouch class to manage - touch event handling(enable touch gesture - event handling, simple touch point event - handling, or disable touch events so only - mouse events are dispatched). If you choose - to handle the `rollOut` event, - then the same event handler will run on a - touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `touchRollOut` event, you can - design your event handler to respond to the - specific needs of a touch-enabled environment - and provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchRollOver Dispatched when the user moves the point of - contact over an InteractiveObject instance on - a touch-enabled device(such as drags a - finger from a point outside a display object - to a point over a display object on a mobile - phone or tablet with a touch screen). Some - devices might also interpret this contact as - a `rollOver` event. - - Specifically, if a user moves a finger - over an InteractiveObject, the - InteractiveObject instance can dispatch a - `rollOver` event or a - `touchRollOver` event, or both if - the current environment supports it. Choose - how you want to handle the user interaction. - Use the openfl.ui.Multitouch class to manage - touch event handling(enable touch gesture - event handling, simple touch point event - handling, or disable touch events so only - mouse events are dispatched). If you choose - to handle the `rollOver` event, - then the same event handler will run on a - touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `touchRollOver` event, you can - design your event handler to respond to the - specific needs of a touch-enabled environment - and provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - @event touchTap Dispatched when the user lifts the point of - contact over the same InteractiveObject - instance on which the contact was initiated - on a touch-enabled device(such as presses - and releases a finger from a single point - over a display object on a mobile phone or - tablet with a touch screen). Some devices - might also interpret this contact as a - `click` event. - - Specifically, if a user taps a finger over - an InteractiveObject, the InteractiveObject - instance can dispatch a `click` - event or a `touchTap` event, or - both if the current environment supports it. - Choose how you want to handle the user - interaction. Use the openfl.ui.Multitouch - class to manage touch event handling(enable - touch gesture event handling, simple touch - point event handling, or disable touch events - so only mouse events are dispatched). If you - choose to handle the `click` - event, then the same event handler will run - on a touch-enabled device and a mouse enabled - device. However, if you choose to handle the - `touchTap` event, you can design - your event handler to respond to the specific - needs of a touch-enabled environment and - provide users with a richer touch-enabled - experience. You can also handle both events, - separately, to provide a different response - for a touch event than a mouse event. - - **Note:** See the Multitouch class for - environment compatibility information. - - - "tags=\"haxe,release\"" - - - - - - - - Determines whether or not the children of the object are mouse, or user - input device, enabled. If an object is enabled, a user can interact with - it by using a mouse or user input device. The default is - `true`. - - This property is useful when you create a button with an instance of - the Sprite class(instead of using the SimpleButton class). When you use a - Sprite instance to create a button, you can choose to decorate the button - by using the `addChild()` method to add additional Sprite - instances. This process can cause unexpected behavior with mouse events - because the Sprite instances you add as children can become the target - object of a mouse event when you expect the parent instance to be the - target object. To ensure that the parent instance serves as the target - objects for mouse events, you can set the `mouseChildren` - property of the parent instance to `false`. - - No event is dispatched by setting this property. You must use the - `addEventListener()` method to create interactive - functionality. - - - - Returns the number of children of this object. - - - - Determines whether the children of the object are tab enabled. Enables or - disables tabbing for the children of the object. The default is - `true`. - - **Note:** Do not use the `tabChildren` property with - Flex. Instead, use the - `mx.core.UIComponent.hasFocusableChildren` property. - - @throws IllegalOperationError Calling this property of the Stage object - throws an exception. The Stage object does - not implement this property. - - <__removedChildren> - - - - <__tabChildren> - - - - - - - - - Adds a child DisplayObject instance to this DisplayObjectContainer - instance. The child is added to the front(top) of all other children in - this DisplayObjectContainer instance.(To add a child to a specific index - position, use the `addChildAt()` method.) - - If you add a child object that already has a different display object - container as a parent, the object is removed from the child list of the - other display object container. - - **Note:** The command `stage.addChild()` can cause - problems with a published SWF file, including security problems and - conflicts with other loaded SWF files. There is only one Stage within a - Flash runtime instance, no matter how many SWF files you load into the - runtime. So, generally, objects should not be added to the Stage, - directly, at all. The only object the Stage should contain is the root - object. Create a DisplayObjectContainer to contain all of the items on the - display list. Then, if necessary, add that DisplayObjectContainer instance - to the Stage. - - @param child The DisplayObject instance to add as a child of this - DisplayObjectContainer instance. - @return The DisplayObject instance that you pass in the `child` - parameter. - @throws ArgumentError Throws if the child is the same as the parent. Also - throws if the caller is a child(or grandchild etc.) - of the child being added. - @event added Dispatched when a display object is added to the display - list. - - - - - - - - Adds a child DisplayObject instance to this DisplayObjectContainer - instance. The child is added at the index position specified. An index of - 0 represents the back(bottom) of the display list for this - DisplayObjectContainer object. - - For example, the following example shows three display objects, labeled - a, b, and c, at index positions 0, 2, and 1, respectively: - - ![b over c over a](/images/DisplayObjectContainer_layers.jpg) - - If you add a child object that already has a different display object - container as a parent, the object is removed from the child list of the - other display object container. - - @param child The DisplayObject instance to add as a child of this - DisplayObjectContainer instance. - @param index The index position to which the child is added. If you - specify a currently occupied index position, the child object - that exists at that position and all higher positions are - moved up one position in the child list. - @return The DisplayObject instance that you pass in the `child` - parameter. - @throws ArgumentError Throws if the child is the same as the parent. Also - throws if the caller is a child(or grandchild etc.) - of the child being added. - @throws RangeError Throws if the index position does not exist in the - child list. - @event added Dispatched when a display object is added to the display - list. - - - - - - - Indicates whether the security restrictions would cause any display - objects to be omitted from the list returned by calling the - `DisplayObjectContainer.getObjectsUnderPoint()` method with the - specified `point` point. By default, content from one domain - cannot access objects from another domain unless they are permitted to do - so with a call to the `Security.allowDomain()` method. For more - information, related to security, see the Flash Player Developer Center - Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - The `point` parameter is in the coordinate space of the - Stage, which may differ from the coordinate space of the display object - container(unless the display object container is the Stage). You can use - the `globalToLocal()` and the `localToGlobal()` - methods to convert points between these coordinate spaces. - - @param point The point under which to look. - @return `true` if the point contains child display objects with - security restrictions. - - - - - - - Determines whether the specified display object is a child of the - DisplayObjectContainer instance or the instance itself. The search - includes the entire display list including this DisplayObjectContainer - instance. Grandchildren, great-grandchildren, and so on each return - `true`. - - @param child The child object to test. - @return `true` if the `child` object is a child of - the DisplayObjectContainer or the container itself; otherwise - `false`. - - - - - - - Returns the child display object instance that exists at the specified - index. - - @param index The index position of the child object. - @return The child display object at the specified index position. - @throws RangeError Throws if the index does not exist in the child - list. - @throws SecurityError This child display object belongs to a sandbox to - which you do not have access. You can avoid this - situation by having the child movie call - `Security.allowDomain()`. - - - - - - - Returns the child display object that exists with the specified name. If - more that one child display object has the specified name, the method - returns the first object in the child list. - - The `getChildAt()` method is faster than the - `getChildByName()` method. The `getChildAt()` method - accesses a child from a cached array, whereas the - `getChildByName()` method has to traverse a linked list to - access a child. - - @param name The name of the child to return. - @return The child display object with the specified name. - @throws SecurityError This child display object belongs to a sandbox to - which you do not have access. You can avoid this - situation by having the child movie call the - `Security.allowDomain()` method. - - - - - - - Returns the index position of a `child` DisplayObject instance. - - @param child The DisplayObject instance to identify. - @return The index position of the child display object to identify. - @throws ArgumentError Throws if the child parameter is not a child of this - object. - - - - - - - Returns an array of objects that lie under the specified point and are - children(or grandchildren, and so on) of this DisplayObjectContainer - instance. Any child objects that are inaccessible for security reasons are - omitted from the returned array. To determine whether this security - restriction affects the returned array, call the - `areInaccessibleObjectsUnderPoint()` method. - - The `point` parameter is in the coordinate space of the - Stage, which may differ from the coordinate space of the display object - container(unless the display object container is the Stage). You can use - the `globalToLocal()` and the `localToGlobal()` - methods to convert points between these coordinate spaces. - - @param point The point under which to look. - @return An array of objects that lie under the specified point and are - children(or grandchildren, and so on) of this - DisplayObjectContainer instance. - - - - - - - Removes the specified `child` DisplayObject instance from the - child list of the DisplayObjectContainer instance. The `parent` - property of the removed child is set to `null` , and the object - is garbage collected if no other references to the child exist. The index - positions of any display objects above the child in the - DisplayObjectContainer are decreased by 1. - - The garbage collector reallocates unused memory space. When a variable - or object is no longer actively referenced or stored somewhere, the - garbage collector sweeps through and wipes out the memory space it used to - occupy if no other references to it exist. - - @param child The DisplayObject instance to remove. - @return The DisplayObject instance that you pass in the `child` - parameter. - @throws ArgumentError Throws if the child parameter is not a child of this - object. - - - - - - - Removes a child DisplayObject from the specified `index` - position in the child list of the DisplayObjectContainer. The - `parent` property of the removed child is set to - `null`, and the object is garbage collected if no other - references to the child exist. The index positions of any display objects - above the child in the DisplayObjectContainer are decreased by 1. - - The garbage collector reallocates unused memory space. When a variable - or object is no longer actively referenced or stored somewhere, the - garbage collector sweeps through and wipes out the memory space it used to - occupy if no other references to it exist. - - @param index The child index of the DisplayObject to remove. - @return The DisplayObject instance that was removed. - @throws RangeError Throws if the index does not exist in the child - list. - @throws SecurityError This child display object belongs to a sandbox to - which the calling object does not have access. You - can avoid this situation by having the child movie - call the `Security.allowDomain()` method. - - - - - - - - { endIndex : 0x7FFFFFFF, beginIndex : 0 } - Removes all `child` DisplayObject instances from the child list of the DisplayObjectContainer - instance. The `parent` property of the removed children is set to `null`, and the objects are - garbage collected if no other references to the children exist. - - The garbage collector reallocates unused memory space. When a variable or object is no - longer actively referenced or stored somewhere, the garbage collector sweeps through and - wipes out the memory space it used to occupy if no other references to it exist. - @param beginIndex The beginning position. A value smaller than 0 throws a `RangeError`. - @param endIndex The ending position. A value smaller than 0 throws a `RangeError`. - - - - - - - - - - - - - - - Changes the position of an existing child in the display object container. - This affects the layering of child objects. For example, the following - example shows three display objects, labeled a, b, and c, at index - positions 0, 1, and 2, respectively: - - ![c over b over a](/images/DisplayObjectContainerSetChildIndex1.jpg) - - When you use the `setChildIndex()` method and specify an - index position that is already occupied, the only positions that change - are those in between the display object's former and new position. All - others will stay the same. If a child is moved to an index LOWER than its - current index, all children in between will INCREASE by 1 for their index - reference. If a child is moved to an index HIGHER than its current index, - all children in between will DECREASE by 1 for their index reference. For - example, if the display object container in the previous example is named - `container`, you can swap the position of the display objects - labeled a and b by calling the following code: - - ```haxe - container.setChildIndex(container.getChildAt(1), 0); - ``` - - This code results in the following arrangement of objects: - - ![c over a over b](/images/DisplayObjectContainerSetChildIndex2.jpg) - - @param child The child DisplayObject instance for which you want to change - the index number. - @param index The resulting index number for the `child` display - object. - @throws ArgumentError Throws if the child parameter is not a child of this - object. - @throws RangeError Throws if the index does not exist in the child - list. - - - - Recursively stops the timeline execution of all MovieClips rooted at this object. - - Child display objects belonging to a sandbox to which the excuting code does not - have access are ignored. - - **Note:** Streaming media playback controlled via a NetStream object will not be - stopped. - - - - - - - - Swaps the z-order (front-to-back order) of the two specified child - objects. All other child objects in the display object container remain in - the same index positions. - - @param child1 The first child object. - @param child2 The second child object. - @throws ArgumentError Throws if either child parameter is not a child of - this object. - - - - - - - - Swaps the z-order (front-to-back order) of the child objects at the two - specified index positions in the child list. All other child objects in - the display object container remain in the same index positions. - - @param index1 The index position of the first child object. - @param index2 The index position of the second child object. - @throws RangeError If either index does not exist in the child list. - - <__cleanup set="method" line="663" override="1"> - - - - <__cleanupRemovedChildren get="inline" set="null" line="675"> - - - - <__dispatchChildren set="method" line="688" override="1"> - - - - - - - <__enterFrame set="method" line="706" override="1"> - - - - - - - <__getBounds set="method" line="714" override="1"> - - - - - - - - <__getFilterBounds set="method" line="734" override="1"> - - - - - - - - <__getRenderBounds set="method" line="760" override="1"> - - - - - - - - <__hitTest set="method" line="789" override="1"> - - - - - - - - - - - - <__hitTestMask set="method" line="878" override="1"> - - - - - - - - <__readGraphicsData set="method" line="893" override="1"> - - - - - - - - <__setStageReference set="method" line="906" override="1"> - - - - - - - <__setWorldTransformInvalid set="method" line="919" override="1"> - - - - <__stopAllMovieClips set="method" line="935" override="1"> - - - - <__tabTest set="method" line="943" override="1"> - - - - - - - <__update set="method" line="964" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - Calling the `new DisplayObjectContainer()` constructor throws - an `ArgumentError` exception. You _can_, however, call - constructors for the following subclasses of DisplayObjectContainer: - - * `new Loader()` - * `new Sprite()` - * `new MovieClip()` - - The DisplayObjectContainer class is the base class for all objects that can - serve as display object containers on the display list. The display list - manages all objects displayed in the Flash runtimes. Use the - DisplayObjectContainer class to arrange the display objects in the display - list. Each DisplayObjectContainer object has its own child list for - organizing the z-order of the objects. The z-order is the front-to-back - order that determines which object is drawn in front, which is behind, and - so on. - - DisplayObject is an abstract base class; therefore, you cannot call - DisplayObject directly. Invoking `new DisplayObject()` throws an - `ArgumentError` exception. - The DisplayObjectContainer class is an abstract base class for all objects - that can contain child objects. It cannot be instantiated directly; calling - the `new DisplayObjectContainer()` constructor throws an - `ArgumentError` exception. - - For more information, see the "Display Programming" chapter of the - _ActionScript 3.0 Developer's Guide_. - - - "tags=\"haxe,release\"" - - openfl.events.Event - openfl.display.Graphics - openfl.errors.Error - openfl.geom.Point - openfl.geom.Matrix - openfl.geom.Rectangle - - - - - <__constructor static="1"> - - - - - - - - - - - - Creates a new Sprite based upon the first frame of a Timeline instance. - - @param timeline A Timeline object - @return A new Sprite - - - - Specifies the button mode of this sprite. If `true`, this - sprite behaves as a button, which means that it triggers the display of - the hand cursor when the pointer passes over the sprite and can receive a - `click` event if the enter or space keys are pressed when the - sprite has focus. You can suppress the display of the hand cursor by - setting the `useHandCursor` property to `false`, in - which case the pointer is displayed. - - Although it is better to use the SimpleButton class to create buttons, - you can use the `buttonMode` property to give a sprite some - button-like functionality. To include a sprite in the tab order, set the - `tabEnabled` property(inherited from the InteractiveObject - class and `false` by default) to `true`. - Additionally, consider whether you want the children of your sprite to be - user input enabled. Most buttons do not enable user input interactivity - for their child objects because it confuses the event flow. To disable - user input interactivity for all child objects, you must set the - `mouseChildren` property(inherited from the - DisplayObjectContainer class) to `false`. - - If you use the `buttonMode` property with the MovieClip - class(which is a subclass of the Sprite class), your button might have - some added functionality. If you include frames labeled _up, _over, and - _down, Flash Player provides automatic state changes(functionality - similar to that provided in previous versions of ActionScript for movie - clips used as buttons). These automatic state changes are not available - for sprites, which have no timeline, and thus no frames to label. - - - - Specifies the display object over which the sprite is being dragged, - or on which the sprite was dropped. - - - - Specifies the Graphics object that belongs to this sprite where vector - drawing commands can occur. - - - - Designates another sprite to serve as the hit area for a sprite. If - the `hitArea` property does not exist or the value is `null` or - `undefined`, the sprite itself is used as the hit area. The value of - the `hitArea` property can be a reference to a Sprite object. - You can change the `hitArea` property at any time; the modified sprite - immediately uses the new hit area behavior. The sprite designated as - the hit area does not need to be visible; its graphical shape, - although not visible, is still detected as the hit area. - - **Note:** You must set to `false` the `mouseEnabled` property of the - sprite designated as the hit area. Otherwise, your sprite button might - not work because the sprite designated as the hit area receives the - user input events instead of your sprite button. - - - - control, set the `useHandCursor` and - `buttonMode` properties to `true`, and the - `mouseChildren` property to `false`.]]> - - <__buttonMode> - - - - <__pendingBindClassName> - - - - <__pendingBindLibrary> - - - - - - - - - - { bounds : null, lockCenter : false } - Lets the user drag the specified sprite. The sprite remains draggable - until explicitly stopped through a call to the - `Sprite.stopDrag()` method, or until another sprite is made - draggable. Only one sprite is draggable at a time. - - Three-dimensional display objects follow the pointer and - `Sprite.startDrag()` moves the object within the - three-dimensional plane defined by the display object. Or, if the display - object is a two-dimensional object and the child of a three-dimensional - object, the two-dimensional object moves within the three dimensional - plane defined by the three-dimensional parent object. - - @param lockCenter Specifies whether the draggable sprite is locked to the - center of the pointer position(`true`), or - locked to the point where the user first clicked the - sprite(`false`). - @param bounds Value relative to the coordinates of the Sprite's parent - that specify a constraint rectangle for the Sprite. - - - - Ends the `startDrag()` method. A sprite that was made draggable - with the `startDrag()` method remains draggable until a - `stopDrag()` method is added, or until another sprite becomes - draggable. Only one sprite is draggable at a time. - - <__bind set="method" line="273"> - - - - - - - - <__getCursor set="method" line="286" override="1"> - - - - <__hitTest set="method" line="292" override="1"> - - - - - - - - - - - - <__hitTestHitArea set="method" line="331"> - - - - - - - - - - - - <__hitTestMask set="method" line="353" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new Sprite instance. After you create the Sprite instance, call - the `DisplayObjectContainer.addChild()` or - `DisplayObjectContainer.addChildAt()` method to add the Sprite - to a parent DisplayObjectContainer. - - The Sprite class is a basic display list building block: a display list - node that can display graphics and can also contain children. - - A Sprite object is similar to a movie clip, but does not have a - timeline. Sprite is an appropriate base class for objects that do not - require timelines. For example, Sprite would be a logical base class for - user interface(UI) components that typically do not use the timeline. - - The Sprite class is new in ActionScript 3.0. It provides an alternative - to the functionality of the MovieClip class, which retains all the - functionality of previous ActionScript releases to provide backward - compatibility. - - - "tags=\"haxe,release\"" - - openfl.display.Graphics - openfl.display.Stage - openfl.geom.Matrix - openfl.geom.Point - openfl.utils._internal.AssetsMacro.initBinding() - - - - - - - - - - - - null - - - - - - - false - - - - - - - - - - - - [] - - - -
- - -
- - - - false - - hide - - - - - - 0 - - - - - - - "../../../../" - - - - - - - false - - - - <__threadCycle expr="0" line="127" static="1"> - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1280 - - - - - - - 720 - - - - - - - -1 - - - - - - - 120 - - - - - - - true - - - - - - - false - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - -
- - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - DocumentClass.build() - - hide - - - - - - The length of `this` Array. - - - - - - - Returns a new Array by appending the elements of `a` to the elements of - `this` Array. - - This operation does not modify `this` Array. - - If `a` is the empty Array `[]`, a copy of `this` Array is returned. - - The length of the returned Array is equal to the sum of `this.length` - and `a.length`. - - If `a` is `null`, the result is unspecified. - - - - - - - Returns a string representation of `this` Array, with `sep` separating - each element. - - The result of this operation is equal to `Std.string(this[0]) + sep + - Std.string(this[1]) + sep + ... + sep + Std.string(this[this.length-1])` - - If `this` is the empty Array `[]`, the result is the empty String `""`. - If `this` has exactly one element, the result is equal to a call to - `Std.string(this[0])`. - - If `sep` is null, the result is unspecified. - - - - Removes the last element of `this` Array and returns it. - - This operation modifies `this` Array in place. - - If `this` has at least one element, `this.length` will decrease by 1. - - If `this` is the empty Array `[]`, null is returned and the length - remains 0. - - - - - - - Adds the element `x` at the end of `this` Array and returns the new - length of `this` Array. - - This operation modifies `this` Array in place. - - `this.length` increases by 1. - - - - - - - - Removes the first element of `this` Array and returns it. - - This operation modifies `this` Array in place. - - If `this` has at least one element, `this`.length and the index of each - remaining element is decreased by 1. - - If `this` is the empty Array `[]`, `null` is returned and the length - remains 0. - - - - - - - - Creates a shallow copy of the range of `this` Array, starting at and - including `pos`, up to but not including `end`. - - This operation does not modify `this` Array. - - The elements are not copied and retain their identity. - - If `end` is omitted or exceeds `this.length`, it defaults to the end of - `this` Array. - - If `pos` or `end` are negative, their offsets are calculated from the - end of `this` Array by `this.length + pos` and `this.length + end` - respectively. If this yields a negative value, 0 is used instead. - - If `pos` exceeds `this.length` or if `end` is less than or equals - `pos`, the result is `[]`. - - - - - - - - - - - y and a - negative Int if x < y. - - This operation modifies `this` Array in place. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. For a stable Array sorting - algorithm, `haxe.ds.ArraySort.sort()` can be used instead. - - If `f` is null, the result is unspecified.]]> - - - - - - - - - - - - Returns a string representation of `this` Array. - - The result will include the individual elements' String representations - separated by comma. The enclosing [ ] may be missing on some platforms, - use `Std.string()` to get a String representation that is consistent - across platforms. - - - - - - - Adds the element `x` at the start of `this` Array. - - This operation modifies `this` Array in place. - - `this.length` and the index of each Array element increases by 1. - - - - - - - - Inserts the element `x` at the position `pos`. - - This operation modifies `this` Array in place. - - The offset is calculated like so: - - - If `pos` exceeds `this.length`, the offset is `this.length`. - - If `pos` is negative, the offset is calculated from the end of `this` - Array, i.e. `this.length + pos`. If this yields a negative value, the - offset is 0. - - Otherwise, the offset is `pos`. - - If the resulting offset does not exceed `this.length`, all elements from - and including that offset to the end of `this` Array are moved one index - ahead. - - - - - - - Removes the first occurrence of `x` in `this` Array. - - This operation modifies `this` Array in place. - - If `x` is found by checking standard equality, it is removed from `this` - Array and all following elements are reindexed accordingly. The function - then returns true. - - If `x` is not found, `this` Array is not changed and the function - returns false. - - - - - - - Returns whether `this` Array contains `x`. - - If `x` is found by checking standard equality, the function returns `true`, otherwise - the function returns `false`. - - - - - - - - Returns position of the first occurrence of `x` in `this` Array, searching front to back. - - If `x` is found by checking standard equality, the function returns its index. - - If `x` is not found, the function returns -1. - - If `fromIndex` is specified, it will be used as the starting index to search from, - otherwise search starts with zero index. If it is negative, it will be taken as the - offset from the end of `this` Array to compute the starting index. If given or computed - starting index is less than 0, the whole array will be searched, if it is greater than - or equal to the length of `this` Array, the function returns -1. - - - - - - - - Returns position of the last occurrence of `x` in `this` Array, searching back to front. - - If `x` is found by checking standard equality, the function returns its index. - - If `x` is not found, the function returns -1. - - If `fromIndex` is specified, it will be used as the starting index to search from, - otherwise search starts with the last element index. If it is negative, it will be - taken as the offset from the end of `this` Array to compute the starting index. If - given or computed starting index is greater than or equal to the length of `this` Array, - the whole array will be searched, if it is less than 0, the function returns -1. - - - - Returns a shallow copy of `this` Array. - - The elements are not copied and retain their identity, so - `a[i] == a.copy()[i]` is true for any valid `i`. However, - `a == a.copy()` is always false. - - - - - Returns an iterator of the Array values. - - - - - Returns an iterator of the Array indices and values. - - - - - - - - - - - Creates a new Array by applying function `f` to all elements of `this`. - - The order of elements is preserved. - - If `f` is null, the result is unspecified. - - - - - - - - - - - Returns an Array containing those elements of `this` for which `f` - returned true. - - The individual elements are not duplicated and retain their identity. - - If `f` is null, the result is unspecified. - - - - - - - Set the length of the Array. - - If `len` is shorter than the array's current size, the last - `length - len` elements will be removed. If `len` is longer, the Array - will be extended, with new elements set to a target-specific default - value: - - - always null on dynamic targets - - 0, 0.0 or false for Int, Float and Bool respectively on static targets - - null for other types on static targets - - - - Creates a new Array. - - - - - - An abstract type that represents a Class. - - See `Type` for the Haxe Reflection API. - - @see https://haxe.org/manual/types-class-instance.html - - - - - - - - - - - Returns a Date representing the current local time. - - - - - - - - - - - Creates a Date from the timestamp (in milliseconds) `t`. - - - - - - - Creates a Date from the formatted string `s`. The following formats are - accepted by the function: - - - `"YYYY-MM-DD hh:mm:ss"` - - `"YYYY-MM-DD"` - - `"hh:mm:ss"` - - The first two formats expressed a date in local time. The third is a time - relative to the UTC epoch. - - - - - Returns the timestamp (in milliseconds) of `this` date. - On cpp and neko, this function only has a second resolution, so the - result will always be a multiple of `1000.0`, e.g. `1454698271000.0`. - To obtain the current timestamp with better precision on cpp and neko, - see the `Sys.time` API. - - For measuring time differences with millisecond accuracy on - all platforms, see `haxe.Timer.stamp`. - - - - - Returns the hours of `this` Date (0-23 range) in the local timezone. - - - - - Returns the minutes of `this` Date (0-59 range) in the local timezone. - - - - - Returns the seconds of `this` Date (0-59 range) in the local timezone. - - - - - Returns the full year of `this` Date (4 digits) in the local timezone. - - - - - Returns the month of `this` Date (0-11 range) in the local timezone. - Note that the month number is zero-based. - - - - - Returns the day of `this` Date (1-31 range) in the local timezone. - - - - - Returns the day of the week of `this` Date (0-6 range, where `0` is Sunday) - in the local timezone. - - - - - Returns the hours of `this` Date (0-23 range) in UTC. - - - - - Returns the minutes of `this` Date (0-59 range) in UTC. - - - - - Returns the seconds of `this` Date (0-59 range) in UTC. - - - - - Returns the full year of `this` Date (4 digits) in UTC. - - - - - Returns the month of `this` Date (0-11 range) in UTC. - Note that the month number is zero-based. - - - - - Returns the day of `this` Date (1-31 range) in UTC. - - - - - Returns the day of the week of `this` Date (0-6 range, where `0` is Sunday) - in UTC. - - - - - Returns the time zone difference of `this` Date in the current locale - to UTC, in minutes. - - Assuming the function is executed on a machine in a UTC+2 timezone, - `Date.now().getTimezoneOffset()` will return `-120`. - - - - - Returns a string representation of `this` Date in the local timezone - using the standard format `YYYY-MM-DD HH:MM:SS`. See `DateTools.format` for - other formatting rules. - - - - - - - - - - - - - Creates a new date object from the given arguments. - - The behaviour of a Date instance is only consistent across platforms if - the the arguments describe a valid date. - - - month: 0 to 11 (note that this is zero-based) - - day: 1 to 31 - - hour: 0 to 23 - - min: 0 to 59 - - sec: 0 to 59 - - The Date class provides a basic structure for date and time related - information. Date instances can be created by - - - `new Date()` for a specific date, - - `Date.now()` to obtain information about the current time, - - `Date.fromTime()` with a given timestamp or - - `Date.fromString()` by parsing from a String. - - There are some extra functions available in the `DateTools` class. - - In the context of Haxe dates, a timestamp is defined as the number of - milliseconds elapsed since 1st January 1970 UTC. - - ## Supported range - - Due to platform limitations, only dates in the range 1970 through 2038 are - supported consistently. Some targets may support dates outside this range, - depending on the OS at runtime. The `Date.fromTime` method will not work with - timestamps outside the range on any target. - - - - - - - - - - - - Escape the string `s` for use as a part of regular expression. - - If `s` is null, the result is unspecified. - - - - ~/[\[\]{}()*+?.\\\^$|]/ - - - - - - - - - - Tells if `this` regular expression matches String `s`. - - This method modifies the internal state. - - If `s` is `null`, the result is unspecified. - - - - - - - Returns the matched sub-group `n` of `this` EReg. - - This method should only be called after `this.match` or - `this.matchSub`, and then operates on the String of that operation. - - The index `n` corresponds to the n-th set of parentheses in the pattern - of `this` EReg. If no such sub-group exists, the result is unspecified. - - If `n` equals 0, the whole matched substring is returned. - - - - Returns the part to the left of the last matched substring. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, only the - substring to the left of the leftmost match is returned. - - The result does not include the matched part. - - - - Returns the part to the right of the last matched substring. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, only the - substring to the right of the leftmost match is returned. - - The result does not include the matched part. - - -
- - - - Returns the position and length of the last matched substring, within - the String which was last used as argument to `this.match` or - `this.matchSub`. - - If the most recent call to `this.match` or `this.matchSub` did not - match anything, the result is unspecified. - - If the global g modifier was in place for the matching, the position and - length of the leftmost substring is returned. - - - - - - - - - { len : -1 } - Tells if `this` regular expression matches a substring of String `s`. - - This function expects `pos` and `len` to describe a valid substring of - `s`, or else the result is unspecified. To get more robust behavior, - `this.match(s.substr(pos,len))` can be used instead. - - This method modifies the internal state. - - If `s` is null, the result is unspecified. - - - - - - - Splits String `s` at all substrings `this` EReg matches. - - If a match is found at the start of `s`, the result contains a leading - empty String "" entry. - - If a match is found at the end of `s`, the result contains a trailing - empty String "" entry. - - If two matching substrings appear next to each other, the result - contains the empty String `""` between them. - - By default, this method splits `s` into two parts at the first matched - substring. If the global g modifier is in place, `s` is split at each - matched substring. - - If `s` is null, the result is unspecified. - - - - - - - - Replaces the first substring of `s` which `this` EReg matches with `by`. - - If `this` EReg does not match any substring, the result is `s`. - - By default, this method replaces only the first matched substring. If - the global g modifier is in place, all matched substrings are replaced. - - If `by` contains `$1` to `$9`, the digit corresponds to number of a - matched sub-group and its value is used instead. If no such sub-group - exists, the replacement is unspecified. The string `$$` becomes `$`. - - If `s` or `by` are null, the result is unspecified. - - - - - - - - - - - Calls the function `f` for the substring of `s` which `this` EReg matches - and replaces that substring with the result of `f` call. - - The `f` function takes `this` EReg object as its first argument and should - return a replacement string for the substring matched. - - If `this` EReg does not match any substring, the result is `s`. - - By default, this method replaces only the first matched substring. If - the global g modifier is in place, all matched substrings are replaced. - - If `s` or `f` are null, the result is unspecified. - - - - - - - - - Creates a new regular expression with pattern `r` and modifiers `opt`. - - This is equivalent to the shorthand syntax `~/r/opt` - - If `r` or `opt` are null, the result is unspecified. - - ]]> - - - "]]> - - - - - - An abstract type that represents an Enum type. - - The corresponding enum instance type is `EnumValue`. - - See `Type` for the Haxe Reflection API. - - @see https://haxe.org/manual/types-enum-instance.html - - - - - - - - - An abstract type that represents any enum value. - See `Type` for the Haxe Reflection API. - - @see https://haxe.org/manual/types-enum-instance.html - - - - - - - - Matches enum instance `e` against pattern `pattern`, returning `true` if - matching succeeded and `false` otherwise. - - Example usage: - - ```haxe - if (e.match(pattern)) { - // codeIfTrue - } else { - // codeIfFalse - } - ``` - - This is equivalent to the following code: - - ```haxe - switch (e) { - case pattern: - // codeIfTrue - case _: - // codeIfFalse - } - ``` - - This method is implemented in the compiler. This definition exists only - for documentation. - - - - - - - - - Matches enum instance `e` against pattern `pattern`, returning `true` if - matching succeeded and `false` otherwise. - - Example usage: - - ```haxe - if (e.match(pattern)) { - // codeIfTrue - } else { - // codeIfFalse - } - ``` - - This is equivalent to the following code: - - ```haxe - switch (e) { - case pattern: - // codeIfTrue - case _: - // codeIfFalse - } - ``` - - This method is implemented in the compiler. This definition exists only - for documentation. - - - - - - - - - - - - - - Returns true if the iterator has other items, false otherwise. - - - - - Moves to the next item of the iterator. - - If this is called while hasNext() is false, the result is unspecified. - - - - - - - - - - - IntIterator is used for implementing interval iterations. - - It is usually not used explicitly, but through its special syntax: - `min...max` - - While it is possible to assign an instance of IntIterator to a variable or - field, it is worth noting that IntIterator does not reset after being used - in a for-loop. Subsequent uses of the same instance will then have no - effect. - - @see https://haxe.org/manual/lf-iterators.html - - - - - - - - - - - - Creates an Array from Iterable `it`. - - If `it` is an Array, this function returns a copy of it. - - - - - - - Creates a List form Iterable `it`. - - If `it` is a List, this function returns a copy of it. - - - - - - - - - - - Creates a new Array by applying function `f` to all elements of `it`. - The order of elements is preserved. - If `f` is null, the result is unspecified. - - - - - - - - - - - - Similar to map, but also passes the index of each element to `f`. - The order of elements is preserved. - If `f` is null, the result is unspecified. - - - - - - - Concatenate a list of iterables. - The order of elements is preserved. - - - - - - - - - - - A composition of map and flatten. - The order of elements is preserved. - If `f` is null, the result is unspecified. - - - - - - - - Tells if `it` contains `elt`. - - This function returns true as soon as an element is found which is equal - to `elt` according to the `==` operator. - - If no such element is found, the result is false. - - - - - - - - - - - Tells if `it` contains an element for which `f` is true. - - This function returns true as soon as an element is found for which a - call to `f` returns true. - - If no such element is found, the result is false. - - If `f` is null, the result is unspecified. - - - - - - - - - - - Tells if `f` is true for all elements of `it`. - - This function returns false as soon as an element is found for which a - call to `f` returns false. - - If no such element is found, the result is true. - - In particular, this function always returns true if `it` is empty. - - If `f` is null, the result is unspecified. - - - - - - - - - - - Calls `f` on all elements of `it`, in order. - - If `f` is null, the result is unspecified. - - - - - - - - - - - Returns a Array containing those elements of `it` for which `f` returned - true. - If `it` is empty, the result is the empty Array even if `f` is null. - Otherwise if `f` is null, the result is unspecified. - - - - - - - - - - - - - Functional fold on Iterable `it`, using function `f` with start argument - `first`. - - If `it` has no elements, the result is `first`. - - Otherwise the first element of `it` is passed to `f` alongside `first`. - The result of that call is then passed to `f` with the next element of - `it`, and so on until `it` has no more elements. - - If `it` or `f` are null, the result is unspecified. - - - - - - - - - - - - - - Similar to fold, but also passes the index of each element to `f`. - - If `it` or `f` are null, the result is unspecified. - - - - - - - - - - - Returns the number of elements in `it` for which `pred` is true, or the - total number of elements in `it` if `pred` is null. - - This function traverses all elements. - - - - - - - Tells if Iterable `it` does not contain any element. - - - - - - - - Returns the index of the first element `v` within Iterable `it`. - - This function uses operator `==` to check for equality. - - If `v` does not exist in `it`, the result is -1. - - - - - - - - - - - Returns the first element of `it` for which `f` is true. - - This function returns as soon as an element is found for which a call to - `f` returns true. - - If no such element is found, the result is null. - - If `f` is null, the result is unspecified. - - - - - - - - - - - Returns the index of the first element of `it` for which `f` is true. - - This function returns as soon as an element is found for which a call to - `f` returns true. - - If no such element is found, the result is -1. - - If `f` is null, the result is unspecified. - - - - - - - - Returns a new Array containing all elements of Iterable `a` followed by - all elements of Iterable `b`. - - If `a` or `b` are null, the result is unspecified. - - The `Lambda` class is a collection of methods to support functional - programming. It is ideally used with `using Lambda` and then acts as an - extension to Iterable types. - - On static platforms, working with the Iterable structure might be slower - than performing the operations directly on known types, such as Array and - List. - - If the first argument to any of the methods is null, the result is - unspecified. - - @see https://haxe.org/manual/std-Lambda.html - - - - - - - - - - - - - - - lime.utils.Assets - - hide - - - - - - - - - - Converts a Base64-encoded `String` into an `Image`, or returns `null` if this is not possible - @param base64 A Base64-encoded `String` - @param type A mime-type to describe the image data (such as "image/png") - @return A new `Image`, or `null` if conversion was not possible - - - - - - - Creates a new `Image` from a Flash `BitmapData` instance - @param bitmapData A source `bitmapData` to use - @return A new `Image` instance - - - - - - - Converts a `Bytes` object to an `Image` instance - - Some platforms (such as Flash and HTML5) cannot convert `Bytes` to an - `Image` synchronously, and may not work properly. - - `Image.loadFromBytes` works asynchronously, and should work - consistently on all platforms. - @param bytes A `Bytes` holding encoded image data - @return A new `Image` instance - - - - - - - Converts an `js.html.CanvasElement` instance to an `Image` - @param canvas A `CanvasElement` - @return A new `Image` instance - - - - - - - Loads an `Image` from a path synchronously. - - Some platforms, such as Flash and HTML5, cannot load - images synchronously. - - `Image.loadFromFile` works asynchronously, and should - behave consistently on all platforms. - @param path The source file path or URL of an encoded image file - @return A new `Image` instance - - - - - - - Converts a `js.html.Image` instance to an `Image` - @param image An `ImageElement` instance - @return A new `Image` instance - - - - - - - - Creates a new `Image` instance from a Base64-encoded `String`, asynchronously - @param base64 A Base64-encoded string representing encoded image data - @param type The mime type of the encoded data (such as "image/png") - @return A `Future` to return a new `Image` instance - - - - - - - Creates a new `Image` instance from image-encoded `Bytes`, loaded asynchronously - @param bytes A `Bytes` instance - @return A `Future` to return a new `Image` instance - - - - - - - Creates a new `Image` instance from a file path or URL, loaded asynchronously - @param path A file path or URL containing an encoded image - @return A `Future` to return a new `Image` instance - - <__isGIF set="method" line="1711" static="1"> - - - - <__isJPG set="method" line="1719" static="1"> - - - - <__isPNG set="method" line="1729" static="1"> - - - - <__isWebP set="method" line="1737" static="1"> - - - - - - The `ImageBuffer` store that backs the `Image` - - - - Retrieves `UInt8Array` data from the `ImageBuffer`. If the `ImageBuffer` - is not in a data format, it will be converted. - - - - Whether the `Image` is dirty. This is set to `true` when pixel operations - have been performed on the underlying `buffer`, and can be set to `false` - again by your own renderer. - - - - Get or set the `PixelFormat` for the underlying `ImageBuffer`. This can be - used to convert the `ImageBuffer` to a new format. - - - - The logical height of the `Image`. This can be smaller than the `height` - of the underlying `buffer`. - - - - The offset X position of the `Image`, from the source `buffer`, - when the `Image` is smaller than the full size of the source `buffer` - - - - The offset Y position of the `Image`, from the source `buffer`, - when the `Image` is smaller than the full size of the source `buffer` - - - - Get or set whether the `ImageBuffer` dimensions are both a power-of-two - (such as 2, 4, 8, 16, so on). Setting this value may resize the underlying - `buffer` - - - - Get or set whether this `Image` has premultiplied alpha. Setting this value - may multiply or unmultiply data if the underlying `ImageBuffer` uses a - different format. - - - - The offset, width and height of this image as a `Rectangle` - - - - A higher-level representation of the source `ImageBuffer`. This might be an - HTML5 Image, CanvasElement or a Flash BitmapData instance. - - - - Get or set whether the underlying `ImageBuffer` is transparent. - - - - The current `ImageType`, representing what is being used to store the `Image`'s graphics - - - - The `version` of the `Image` increases each time it is modified, helpful to determining - whether a cache is out-of-date. - - - - The logical width of the `Image`. This can be smaller than the `width` - of the underlying `buffer`. - - - - A convenience property, unused internally, which may be helpful for different renderer - implementations - - - - A convenience property, unused internally, which may be helpful for different renderer - implementations - - - - Creates a duplicate copy of this `Image` and `ImageBuffer` - @return A new `Image` instance - - - - - - - - Applies a color transform to the underlying `ImageBuffer` data - @param rect The target rectangle to transform - @param colorMatrix A `ColorMatrix` for color offset and/or multiplication - - - - - - - - - - - Copy a color channel from one `Image` to another. This can also be within the same `Image` instance. - @param sourceImage The `Image` to copy from - @param sourceRect The source rectangle to copy from in the `sourceImage` - @param destPoint The destination point to apply the channel in the current `Image` - @param sourceChannel The source color channel to copy the data from - @param destChannel The destination color channel to apply the data into - - - - - - - - - - - - { mergeAlpha : false, alphaPoint : null, alphaImage : null } - Copies pixels from one `Image` to another. The source `Image` can also be this `Image` - @param sourceImage The source `Image` to copy from - @param sourceRect The source rectangle to use when copying - @param destPoint The destination point to use when copying - @param alphaImage (Optional) A different `Image` to use as the alpha channel while copying - @param alphaPoint (Optional) A point in the alpha image to use when copying - @param mergeAlpha (Optional) Whether to blend the source and destination alpha (`true`), or to replace the destination alpha (`false`) - - - - - - - - { quality : 90, format : null } - Encodes this `Image` into an image file format, such as PNG or JPEG. - @param format (Optional) An `ImageFileFormat` to encode into (default is `PNG`) - @param quality (Optional) A quality value to use when encoding as JPEG (from 0 to 100) - @return `Bytes` for the encoded `Image`, or `null` if encoding was not successful - - - - - - - - - { format : null } - Fill a rectangle in the `Image` with a solid color - @param rect A destination rectangle in this `Image` to fill - @param color The color to use when filling this `Image` - @param format (Optional) The `PixelFormat` that `color` is encoded in (default is `RGBA`) - - - - - - - - - - { format : null } - Applies a flood fill to this `Image`, starting with the point specified. - - A flood fill behaves similarly to the "paint can" tool in many image editors, - the fill will apply the chosen color to neighboring pixels of the same color. - @param x The target x coordinate within the `Image` to use with the fill - @param y The target y coordinate within the `Image` to use with the fill - @param color The color to use when performing the fill - @param format (Optional) The `PixelFormat` that `color` is encoded in (default is `RGBA`) - - - - - - - - - - { format : null, findColor : true } - Finds a region in the `Image` that includes pixels all of a certain color (when `findColor` is `true`) or - excludes a certain color (`findColor` is `false`) - @param mask A hexadecimal mask to use when comparing colors. You can use this to compare all of a color, or only certain color channels - @param color The color value to use in comparisons - @param findColor (Optional) Whether to find a region that does match the color (`true`) or excludes it (`false`) - @param format (Optional) The `PixelFormat` that the `color` and `mask` are encoded in (default is `RGBA`) - @return The matching bounds `Rectangle`, or `null` if no matching region is found - - - - - - - - - { format : null } - Gets a 24-bit pixel from the `Image` (red, green and blue, but no alpha) - @param x The `x` location to fetch - @param y The `y` location to fetch - @param format (Optional) The `PixelFormat` to encode the return value in (default is `RGBA`) - @return The specified pixel, or `0` if it is out-of-bounds - - - - - - - - - { format : null } - Gets a 32-bit pixel from the `Image`, including alpha - @param x The `x` location to fetch - @param y The `y` location to fetch - @param format (Optional) The `PixelFormat` to encode the return value in (default is `RGBA`) - @return The specified pixel, or `0` if it is out-of-bounds - - - - - - - - { format : null } - Gets a region of pixels from the `Image`, as `Bytes` - @param rect The source `Rectangle` to read from - @param format (Optional) The `PixelFormat` to use when writing to the `Bytes` object (default is `RGBA`) - @return A `Bytes` object representing the region, or `null` if it is not possible to read - - - - - - - - - - - - - Blits a second `Image` onto this one, using optional color multipliers - @param sourceImage An `Image` instance to copy from - @param sourceRect The source rectangle to use when copying - @param destPoint The destination point in this `Image` to copy into - @param redMultiplier A red multiplier to use when blitting - @param greenMultiplier A green multiplier to use when blitting - @param blueMultiplier A blue multiplier to use when blitting - @param alphaMultiplier An alpha multiplier to use when blitting - - - - - - - - Resizes the current `Image`, reallocating the `ImageBuffer` to a new size. - The resize algorithm for most platforms is bilinear. - @param newWidth A new width for the `Image` - @param newHeight A new height for the `Image` - - - - - - - - Scrolls the content of this `Image`. - - Pixels on the edges of the scroll will remain repeated, while others - within the scroll area will be shifted - - @param x The amount of horizontal scroll to apply - @param y The amount of vertical scroll to apply - - - - - - - - - - { format : null } - Sets a pixel in the current `Image` in 24-bit color format (red, green, blue, no alpha) - @param x The x coordinate of the pixel - @param y The y coordinate of the pixel - @param color The color to use - @param format (Optional) The `PixelFormat` that `color` is encoded in (default is `RGBA`) - - - - - - - - - - { format : null } - Sets a pixel in the current `Image` in 32-bit color format (includes alpha) - @param x The x coordinate of the pixel - @param y The y coordinate of the pixel - @param color The color to use - @param format (Optional) The `PixelFormat` that `color` is encoded in (default is `RGBA`) - - - - - - - - - - { endian : null, format : null } - Sets a region of pixels at once using a `BytePointer` - @param rect The region of pixels in this `Image` to replace with the incoming bytes - @param bytePointer A `BytePointer` object referencing the `Bytes` and position to read from - @param format (Optional) The `PixelFormat` that the pixels are encoded in (default is `RGBA`) - @param endian (Optional) The endianness of the incoming bytes (default is the system endianness) - - - - - - - - - - - - - - - { format : null, copySource : false, mask : 0xFFFFFFFF, color : 0x00000000 } - ", ">=", "==", "!=" - @param threshold The value that each pixel is tested against to see if it meets or exceeds the threshhold. - @param color The color value that a pixel is set to if the threshold test succeeds. The default value is 0x00000000. - @param mask The mask to use to isolate a color component. - @param copySource If the value is `true`, pixel values from the source image are copied to the destination when the threshold test fails. If the value is `false`, the source image is not copied when the threshold test fails. - @return The number of pixels that were changed.]]> - - <__clipRect set="method" line="1402"> - - - - - - - <__fromBase64 set="method" line="1439"> - - - - - - - - - - - { onload : null } - - - - <__fromBytes set="method" line="1474"> - - - - - - - - - - { onload : null } - - - - <__fromFile set="method" line="1531"> - - - - - - - - - - - { onerror : null, onload : null } - - - - <__fromImageBuffer set="method" line="1693"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { type : null, color : null, height : -1, width : -1, offsetY : 0, offsetX : 0, buffer : null } - Creates a new `Image` instance. - - If `buffer` is null, but `width` and `height` are set, a new `ImageBuffer` is allocated matching the `color` requested. - @param buffer (Optional) The `ImageBuffer` this `Image` represents - @param offsetX (Optional) A logical offset value within the `ImageBuffer` dimensions - @param offsetY (Optional) A logical offset value within the `ImageBuffer` dimensions - @param width (Optional) A logical width value within the `ImageBuffer` dimensions - @param height (Optional) A logical height value within the `ImageBuffer` dimensions - @param color (Optional) A fill color to use if the `buffer` property is `null` - @param type (Optional) An `ImageType` to use for this `Image` - - `Image` is a convenience class for working with bitmap images in Lime. - - Although `ImageBuffer` holds the actual bitmap data, `Image` includes convenience methods for - loading from files, loading from bytes, and performing many pixel operations over an - `ImageBuffer` instance. - - - "tags=\"haxe,release\"" - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.backend.native.NativeCFFI - lime._internal.graphics.ImageCanvasUtil - lime._internal.graphics.ImageDataUtil - lime.app.Application - lime.math.ColorMatrix - lime.math.Rectangle - lime.math.Vector2 - - - - - - - "__ASSET__:image___ASSET__flxanimate_images_pivot_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flxanimate/git/assets/images/pivot.png" - - - - - - - - - - - - - - - - Returns bytes representation of the given String, using specific encoding (UTF-8 by default) - - - - - - - - - - - Convert hexadecimal string to Bytes. - Support only straight hex string ( Example: "0FDA14058916052309" ) - - - - - - - - - Read the most efficiently possible the n-th byte of the data. - Behavior when reading outside of the available data is unspecified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns the IEEE double precision value at given position (in low endian encoding). - Result is unspecified if reading outside of the bounds - - - - - - - - Returns the IEEE single precision value at given position (in low endian encoding). - Result is unspecified if reading outside of the bounds - - - - - - - - - Store the IEEE double precision value at given position in low endian encoding. - Result is unspecified if writing outside of the bounds. - - - - - - - - - Store the IEEE single precision value at given position in low endian encoding. - Result is unspecified if writing outside of the bounds. - - - - - - - Returns the 16 bit unsigned integer at given position (in low endian encoding). - - - - - - - - Store the 16 bit unsigned integer at given position (in low endian encoding). - - - - - - - Returns the 32 bit integer at given position (in low endian encoding). - - - - - - - Returns the 64 bit integer at given position (in low endian encoding). - - - - - - - - Store the 32 bit integer at given position (in low endian encoding). - - - - - - - - Store the 64 bit integer at given position (in low endian encoding). - - - - - - - - - - - - - - - - - - "readString is deprecated, use getString instead" - - - - - - Returns string representation of the bytes as UTF8 - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - "tags=\"haxe,release\"" - - - - - - - - "__ASSET__:file___ASSET__flixel_sounds_beep_ogg" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/sounds/beep.ogg" - - - - - - - - "__ASSET__:file___ASSET__flixel_sounds_flixel_ogg" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/sounds/flixel.ogg" - - - - - - - - "__ASSET__:file___ASSET__flixel_sounds_type_ogg" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/sounds/type.ogg" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__fontID> - - - - <__fontPath> - - - - <__fontPathWithoutDirectory> - - - - <__init> - - - - - - - - - - - - - - |:;_-+=?,. " }]]> - - - - - - - - - - - - - - - - - - - <__copyFrom set="method" line="418"> - - - - - - - <__fromBytes set="method" line="443"> - - - - - - - <__fromFile set="method" line="456"> - - - - - - - <__initializeSource set="method" line="469"> - - - - <__loadFromName set="method" line="496"> - - - - - - - <__setSize set="method" line="591"> - - - - - - - - - - - - { name : null } - - - - "tags=\"haxe,release\"" - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.backend.native.NativeCFFI - lime.text.Glyph - - - - - - - "LIME_font___ASSET__flixel_fonts_nokiafc22_ttf" - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/fonts/nokiafc22.ttf" - - - - - - - - "LIME_font___ASSET__flixel_fonts_monsterrat_ttf" - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/fonts/monsterrat.ttf" - - - - - - - - "__ASSET__:image___ASSET__flixel_images_ui_button_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/images/ui/button.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_images_logo_default_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets/images/logo/default.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_box_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/box.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_arrow_down_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_arrow_down.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_arrow_left_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_arrow_left.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_arrow_right_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_arrow_right.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_arrow_up_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_arrow_up.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_thin_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_thin.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_button_toggle_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/button_toggle.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_check_box_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/check_box.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_check_mark_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/check_mark.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_chrome_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/chrome.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_chrome_flat_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/chrome_flat.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_chrome_inset_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/chrome_inset.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_chrome_light_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/chrome_light.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_dropdown_mark_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/dropdown_mark.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_finger_big_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/finger_big.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_finger_small_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/finger_small.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_hilight_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/hilight.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_invis_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/invis.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_minus_mark_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/minus_mark.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_plus_mark_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/plus_mark.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_radio_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/radio.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_radio_dot_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/radio_dot.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_swatch_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/swatch.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_tab_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/tab.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_tab_back_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/tab_back.png" - - - - - - - - "__ASSET__:image___ASSET__flixel_flixel_ui_img_tooltip_arrow_png" - - - - - - - - - - - - - lime._internal.macros.AssetsMacro.embedImage() - lime._internal.macros.AssetsMacro.embedImage() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/images/tooltip_arrow.png" - - - - - - - - "__ASSET__:file___ASSET__flixel_flixel_ui_xml_defaults_xml" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/xml/defaults.xml" - - - - - - - - "__ASSET__:file___ASSET__flixel_flixel_ui_xml_default_loading_screen_xml" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/xml/default_loading_screen.xml" - - - - - - - - "__ASSET__:file___ASSET__flixel_flixel_ui_xml_default_popup_xml" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "E:/Dev/FNF/YoshmanEngine/.haxelib/flixel-yc29/git/assets-ui/xml/default_popup.xml" - - - - - - - - "__ASSET__:file___ASSET__manifest_assets_json" - - - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - - "export/release/windows/obj/tmp/manifest/assets.json" - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - - - - - - <__fontByName expr="new Map()" line="42" static="1"> - - - - - - new Map() - - - - <__registeredFonts expr="new Array()" line="43" static="1"> - - - new Array() - - - - - - - - - { enumerateDeviceFonts : false } - Specifies whether to provide a list of the currently available embedded - fonts. - - @param enumerateDeviceFonts Indicates whether you want to limit the list - to only the currently available embedded - fonts. If this is set to `true` - then a list of all fonts, both device fonts - and embedded fonts, is returned. If this is - set to `false` then only a list of - embedded fonts is returned. - @return A list of available fonts as an array of Font objects. - - - - - - - Creates a new Font from bytes (a haxe.io.Bytes or openfl.utils.ByteArray) - synchronously. This means that the Font will be returned immediately (if - supported). - - @param bytes A haxe.io.Bytes or openfl.utils.ByteArray instance - @returns A new Font if successful, or `null` if unsuccessful - - - - - - - Creates a new Font from a file path synchronously. This means that the - Font will be returned immediately (if supported). - - @param path A local file path containing a font - @returns A new Font if successful, or `null` if unsuccessful - - - - - - - Creates a new Font from haxe.io.Bytes or openfl.utils.ByteArray data - asynchronously. The font decoding will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param bytes A haxe.io.Bytes or openfl.utils.ByteArray instance - @returns A Future Font - - - - - - - Creates a new Font from a file path or web address asynchronously. The file - load and font decoding will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A local file path or web address containing a font - @returns A Future Font - - - - - - - Creates a new Font from a font name asynchronously. This feature should work - for embedded CSS fonts on the HTML5 target, but is not implemented for - registered OS fonts on native targets currently. The file - load and font decoding will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A font name - @returns A Future Font - - - - - - - Registers a font in the global font list. - - - - The name of an embedded font. - - - - The style of the font. This value can be any of the values defined in the - FontStyle class. - - - - The type of the font. This value can be any of the constants defined in - the FontType class. - - <__initialized> - - - - <__fromLimeFont set="method" line="273"> - - - - - - - <__initialize set="method" line="279"> - - - - - - - - - - - - - - - - - - - - { name : null } - - The Font class is used to manage embedded fonts in SWF files. Embedded - fonts are represented as a subclass of the Font class. The Font class is - currently useful only to find out information about embedded fonts; you - cannot alter a font by using this class. You cannot use the Font class to - load external fonts, or to create an instance of a Font object by itself. - Use the Font class as an abstract base class. - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - "tags=\"haxe,release\"" - - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "__ASSET__OPENFL__assets_fonts_pixel_otf" - - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "__ASSET__OPENFL__assets_fonts_vcr_ttf" - - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "__ASSET__OPENFL__flixel_fonts_nokiafc22_ttf" - - - - - - - - - lime._internal.macros.AssetsMacro.embedFont() - lime._internal.macros.AssetsMacro.embedFont() - - "__ASSET__OPENFL__flixel_fonts_monsterrat_ttf" - - - - - - - - - - - - - - hide - - - - -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - Parse the given [lines] of markdown to a series of AST nodes. - - - - - - - this is a
markdown`.]]> - - - Maintains the context needed to parse a markdown document. - - - - - - <c path="String"/> - - - - - - - - - - - - - - - - Represents the ratio of the circumference of a circle to its diameter, - specified by the constant, π. `PI` is approximately `3.141592653589793`. - - - - A special `Float` constant which denotes negative infinity. - - For example, this is the result of `-1.0 / 0.0`. - - Operations with `NEGATIVE_INFINITY` as an operand may result in - `NEGATIVE_INFINITY`, `POSITIVE_INFINITY` or `NaN`. - - If this constant is converted to an `Int`, e.g. through `Std.int()`, the - result is unspecified. - - - - A special `Float` constant which denotes positive infinity. - - For example, this is the result of `1.0 / 0.0`. - - Operations with `POSITIVE_INFINITY` as an operand may result in - `NEGATIVE_INFINITY`, `POSITIVE_INFINITY` or `NaN`. - - If this constant is converted to an `Int`, e.g. through `Std.int()`, the - result is unspecified. - - - - A special `Float` constant which denotes an invalid number. - - `NaN` stands for "Not a Number". It occurs when a mathematically incorrect - operation is executed, such as taking the square root of a negative - number: `Math.sqrt(-1)`. - - All further operations with `NaN` as an operand will result in `NaN`. - - If this constant is converted to an `Int`, e.g. through `Std.int()`, the - result is unspecified. - - In order to test if a value is `NaN`, you should use `Math.isNaN()` function. - - - - - - - Returns the absolute value of `v`. - - - If `v` is positive or `0`, the result is unchanged. Otherwise the result is `-v`. - - If `v` is `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - If `v` is `NaN`, the result is `NaN`. - - - - - - - - Returns the smaller of values `a` and `b`. - - - If `a` or `b` are `NaN`, the result is `NaN`. - - If `a` or `b` are `NEGATIVE_INFINITY`, the result is `NEGATIVE_INFINITY`. - - If `a` and `b` are `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - - - - - - - Returns the greater of values `a` and `b`. - - - If `a` or `b` are `NaN`, the result is `NaN`. - - If `a` or `b` are `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - If `a` and `b` are `NEGATIVE_INFINITY`, the result is `NEGATIVE_INFINITY`. - - - - - - - Returns the trigonometric sine of the specified angle `v`, in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - Returns the trigonometric cosine of the specified angle `v`, in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - Returns the trigonometric tangent of the specified angle `v`, in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - Returns the trigonometric arc of the specified angle `v`, in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - Returns the trigonometric arc cosine of the specified angle `v`, - in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - Returns the trigonometric arc tangent of the specified angle `v`, - in radians. - - If `v` is `NaN` or infinite, the result is `NaN`. - - - - - - - - Returns the trigonometric arc tangent whose tangent is the quotient of - two specified numbers, in radians. - - If parameter `x` or `y` is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, - the result is `NaN`. - - - - - - - Returns Euler's number, raised to the power of `v`. - - `exp(1.0)` is approximately `2.718281828459`. - - - If `v` is `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - If `v` is `NEGATIVE_INFINITY`, the result is `0.0`. - - If `v` is `NaN`, the result is `NaN`. - - - - - - - Returns the natural logarithm of `v`. - - This is the mathematical inverse operation of exp, - i.e. `log(exp(v)) == v` always holds. - - - If `v` is negative (including `NEGATIVE_INFINITY`) or `NaN`, the result is `NaN`. - - If `v` is `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - If `v` is `0.0`, the result is `NEGATIVE_INFINITY`. - - - - - - - - Returns a specified base `v` raised to the specified power `exp`. - - - - - - - Returns the square root of `v`. - - - If `v` is negative (including `NEGATIVE_INFINITY`) or `NaN`, the result is `NaN`. - - If `v` is `POSITIVE_INFINITY`, the result is `POSITIVE_INFINITY`. - - If `v` is `0.0`, the result is `0.0`. - - - - - - - Rounds `v` to the nearest integer value. - - Ties are rounded up, so that `0.5` becomes `1` and `-0.5` becomes `0`. - - If `v` is outside of the signed `Int32` range, or is `NaN`, `NEGATIVE_INFINITY` - or `POSITIVE_INFINITY`, the result is unspecified. - - - - - - - Returns the largest integer value that is not greater than `v`. - - If `v` is outside of the signed `Int32` range, or is `NaN`, `NEGATIVE_INFINITY` - or `POSITIVE_INFINITY`, the result is unspecified. - - - - - - - Returns the smallest integer value that is not less than `v`. - - If `v` is outside of the signed `Int32` range, or is `NaN`, `NEGATIVE_INFINITY` - or `POSITIVE_INFINITY`, the result is unspecified. - - - - Returns a pseudo-random number which is greater than or equal to `0.0`, - and less than `1.0`. - - - - - - - Returns the largest integer value that is not greater than `v`, as a `Float`. - - If `v` is is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, - the result is unspecified. - - - - - - - Returns the smallest integer value that is not less than `v`, as a `Float`. - - If `v` is is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, - the result is unspecified. - - - - - - - Rounds `v` to the nearest integer value, as a Float. - - Ties are rounded up, so that `0.5` becomes `1` and `-0.5` becomes `0`. - - If `v` is is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, - the result is unspecified. - - - - - - - Tells if `f` is a finite number. - - If `f` is `POSITIVE_INFINITY`, `NEGATIVE_INFINITY` or `NaN`, the result - is `false`, otherwise the result is `true`. - - - - - - - Tells if `f` is not a valid number. - - If `f` is `NaN`, the result is `true`, otherwise the result is `false`. - In particular, both `POSITIVE_INFINITY` and `NEGATIVE_INFINITY` are - not considered `NaN`. - - This class defines mathematical functions and constants. - - @see https://haxe.org/manual/std-math.html - - - "hxMath.h" - - - - - - - - - - - Tells if structure `o` has a field named `field`. - - This is only guaranteed to work for anonymous structures. Refer to - `Type.getInstanceFields` for a function supporting class instances. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - - Returns the value of the field named `field` on object `o`. - - If `o` is not an object or has no field named `field`, the result is - null. - - If the field is defined as a property, its accessors are ignored. Refer - to `Reflect.getProperty` for a function supporting property accessors. - - If `field` is null, the result is unspecified. - - - - - - - - - - Sets the field named `field` of object `o` to value `value`. - - If `o` has no field named `field`, this function is only guaranteed to - work for anonymous structures. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - - Returns the value of the field named `field` on object `o`, taking - property getter functions into account. - - If the field is not a property, this function behaves like - `Reflect.field`, but might be slower. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - - - Sets the field named `field` of object `o` to value `value`, taking - property setter functions into account. - - If the field is not a property, this function behaves like - `Reflect.setField`, but might be slower. - - If `field` is null, the result is unspecified. - - - - - - - - - - Call a method `func` with the given arguments `args`. - - The object `o` is ignored in most cases. It serves as the `this`-context in the following - situations: - - * (neko) Allows switching the context to `o` in all cases. - * (macro) Same as neko for Haxe 3. No context switching in Haxe 4. - * (js, lua) Require the `o` argument if `func` does not, but should have a context. - This can occur by accessing a function field natively, e.g. through `Reflect.field` - or by using `(object : Dynamic).field`. However, if `func` has a context, `o` is - ignored like on other targets. - - - - - - - - Returns the fields of structure `o`. - - This method is only guaranteed to work on anonymous structures. Refer to - `Type.getInstanceFields` for a function supporting class instances. - - If `o` is null, the result is unspecified. - - - - - - - - Returns true if `f` is a function, false otherwise. - - If `f` is null, the result is false. - - - - - - - - Compares `a` and `b`. - - If `a` is less than `b`, the result is negative. If `b` is less than - `a`, the result is positive. If `a` and `b` are equal, the result is 0. - - This function is only defined if `a` and `b` are of the same type. - - If that type is a function, the result is unspecified and - `Reflect.compareMethods` should be used instead. - - For all other types, the result is 0 if `a` and `b` are equal. If they - are not equal, the result depends on the type and is negative if: - - - Numeric types: a is less than b - - String: a is lexicographically less than b - - Other: unspecified - - If `a` and `b` are null, the result is 0. If only one of them is null, - the result is unspecified. - - - - - - - - - Compares the functions `f1` and `f2`. - - If `f1` or `f2` are null, the result is false. - If `f1` or `f2` are not functions, the result is unspecified. - - Otherwise the result is true if `f1` and the `f2` are physically equal, - false otherwise. - - If `f1` or `f2` are member method closures, the result is true if they - are closures of the same method on the same object value, false otherwise. - - - - - - - - ` - - `Enum` - - Otherwise, including if `v` is null, the result is false.]]> - - - - - - - - Tells if `v` is an enum value. - - The result is true if `v` is of type EnumValue, i.e. an enum - constructor. - - Otherwise, including if `v` is null, the result is false. - - - - - - - - - Removes the field named `field` from structure `o`. - - This method is only guaranteed to work on anonymous structures. - - If `o` or `field` are null, the result is unspecified. - - - - - - - - Copies the fields of structure `o`. - - This is only guaranteed to work on anonymous structures. - - If `o` is null, the result is `null`. - - - - - - - - - - - Transform a function taking an array of arguments into a function that can - be called with any number of arguments. - - - - - - - - - The Reflect API is a way to manipulate values dynamically through an - abstract interface in an untyped manner. Use with care. - - @see https://haxe.org/manual/std-reflection.html - - - - ignore - - - - - - - - - - - DEPRECATED. Use `Std.isOfType(v, t)` instead. - - Tells if a value `v` is of the type `t`. Returns `false` if `v` or `t` are null. - - If `t` is a class or interface with `@:generic` meta, the result is `false`. - - - - - - - - - Tells if a value `v` is of the type `t`. Returns `false` if `v` or `t` are null. - - If `t` is a class or interface with `@:generic` meta, the result is `false`. - - - - - - - - - Checks if object `value` is an instance of class or interface `c`. - - Compiles only if the type specified by `c` can be assigned to the type - of `value`. - - This method checks if a downcast is possible. That is, if the runtime - type of `value` is assignable to the type specified by `c`, `value` is - returned. Otherwise null is returned. - - This method is not guaranteed to work with core types such as `String`, - `Array` and `Date`. - - If `value` is null, the result is null. If `c` is null, the result is - unspecified. - - - - - - - - - "Std.instance() is deprecated. Use Std.downcast() instead." - - - - - - - - - - - - - Converts any value to a String. - - If `s` is of `String`, `Int`, `Float` or `Bool`, its value is returned. - - If `s` is an instance of a class and that class or one of its parent classes has - a `toString` method, that method is called. If no such method is present, the result - is unspecified. - - If `s` is an enum constructor without argument, the constructor's name is returned. If - arguments exists, the constructor's name followed by the String representations of - the arguments is returned. - - If `s` is a structure, the field names along with their values are returned. The field order - and the operator separating field names and values are unspecified. - - If s is null, "null" is returned. - - - - - - - - - - - Converts a `Float` to an `Int`, rounded towards 0. - - If `x` is outside of the signed Int32 range, or is `NaN`, `NEGATIVE_INFINITY` or `POSITIVE_INFINITY`, the result is unspecified. - - - - - - - - - - - Converts a `String` to an `Int`. - - Leading whitespaces are ignored. - - If `x` starts with 0x or 0X, hexadecimal notation is recognized where the following digits may - contain 0-9 and A-F. - - Otherwise `x` is read as decimal number with 0-9 being allowed characters. `x` may also start with - a - to denote a negative value. - - In decimal mode, parsing continues until an invalid character is detected, in which case the - result up to that point is returned. For hexadecimal notation, the effect of invalid characters - is unspecified. - - Leading 0s that are not part of the 0x/0X hexadecimal notation are ignored, which means octal - notation is not supported. - - If `x` is null, the result is unspecified. - If `x` cannot be parsed as integer, the result is `null`. - - - - - - - - - - - Converts a `String` to a `Float`. - - The parsing rules for `parseInt` apply here as well, with the exception of invalid input - resulting in a `NaN` value instead of null. - - Additionally, decimal notation may contain a single `.` to denote the start of the fractions. - - - - - - - - - - - - - The Std class provides standard methods for manipulating basic types. - - - funkin.macros.StdDeprecationsRemover.build() - - - - - - - The standard `Void` type. Only `null` values can be of the type `Void`. - - @see https://haxe.org/manual/types-void.html - - - - - ` can be used instead. - - `Std.int` converts a `Float` to an `Int`, rounded towards 0. - `Std.parseFloat` converts a `String` to a `Float`. - - @see https://haxe.org/manual/types-basic-types.html - @see https://haxe.org/manual/types-nullability.html]]> - - - - - - - - - - - ` can be used instead. - - `Std.int` converts a `Float` to an `Int`, rounded towards 0. - `Std.parseInt` converts a `String` to an `Int`. - - @see https://haxe.org/manual/types-basic-types.html - @see https://haxe.org/manual/std-math-integer-math.html - @see https://haxe.org/manual/types-nullability.html]]> - - - - - - - - - - - - Single-precision IEEE 32bit float (4-byte). - - - - - - - - - - - ` is a wrapper that can be used to make the basic types `Int`, - `Float` and `Bool` nullable on static targets. - - If null safety is enabled, only types wrapped in `Null` are nullable. - - Otherwise, it has no effect on non-basic-types, but it can be useful as a way to document - that `null` is an acceptable value for a method argument, return value or variable. - - @see https://haxe.org/manual/types-nullability.html]]> - - - - - - - - ` can be used instead. - - @see https://haxe.org/manual/types-bool.html - @see https://haxe.org/manual/types-nullability.html]]> - - - - - - - - - - `Dynamic` is a special type which is compatible with all other types. - - Use of `Dynamic` should be minimized as it prevents several compiler - checks and optimizations. See `Any` type for a safer alternative for - representing values of any type. - - @see https://haxe.org/manual/types-dynamic.html - - - - - - - - - - - Returns the current item of the `Iterator` and advances to the next one. - - This method is not required to check `hasNext()` first. A call to this - method while `hasNext()` is `false` yields unspecified behavior. - - On the other hand, iterators should not require a call to `hasNext()` - before the first call to `next()` if an element is available. - - - - Returns `false` if the iteration is complete, `true` otherwise. - - Usually iteration is considered to be complete if all elements of the - underlying data structure were handled through calls to `next()`. However, - in custom iterators any logic may be used to determine the completion - state. - - - An `Iterator` is a structure that permits iteration over elements of type `T`. - - Any class with matching `hasNext()` and `next()` fields is considered an `Iterator` - and can then be used e.g. in `for`-loops. This makes it easy to implement - custom iterators. - - @see https://haxe.org/manual/lf-iterators.html - - - - An `Iterable` is a data structure which has an `iterator()` method. - See `Lambda` for generic functions on iterable structures. - - @see https://haxe.org/manual/lf-iterators.html - - - - - - - A `KeyValueIterator` is an `Iterator` that has a key and a value. - - - - - - - A `KeyValueIterable` is a data structure which has a `keyValueIterator()` - method to iterate over key-value-pairs. - - `ArrayAccess` is used to indicate a class that can be accessed using brackets. - The type parameter represents the type of the elements stored. - - This interface should be used for externs only. Haxe does not support custom - array access on classes. However, array access can be implemented for - abstract types. - - @see https://haxe.org/manual/types-abstract-array-access.html - - - - - - - Returns the String corresponding to the character code `code`. - - If `code` is negative or has another invalid value, the result is - unspecified. - - - - The number of characters in `this` String. - - - - Returns a String where all characters of `this` String are upper case. - - - - Returns a String where all characters of `this` String are lower case. - - - - - - - Returns the character at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, the empty String `""` - is returned. - - - - - - - Returns the character code at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, `null` is returned. - - To obtain the character code of a single character, `"x".code` can be - used instead to inline the character code at compile time. Note that - this only works on String literals of length 1. - - - - - - - - Returns the position of the leftmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String starting from `startIndex`. - - If `startIndex` exceeds `this.length`, -1 is returned. - - If `startIndex` is negative, the result is unspecifed. - - Otherwise the search is performed within `this` String. In either case, - the returned position is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - Returns the position of the rightmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String from 0 to `startIndex + str.length`. Otherwise the search - is performed within `this` String. In either case, the returned position - is relative to the beginning of `this` String. - - If `startIndex` is negative, the result is unspecifed. - - If `str` cannot be found, -1 is returned. - - - - - - - Splits `this` String at each occurrence of `delimiter`. - - If `this` String is the empty String `""`, the result is not consistent - across targets and may either be `[]` (on Js, Cpp) or `[""]`. - - If `delimiter` is the empty String `""`, `this` String is split into an - Array of `this.length` elements, where the elements correspond to the - characters of `this` String. - - If `delimiter` is not found within `this` String, the result is an Array - with one element, which equals `this` String. - - If `delimiter` is null, the result is unspecified. - - Otherwise, `this` String is split into parts at each occurrence of - `delimiter`. If `this` String starts (or ends) with `delimiter`, the - result `Array` contains a leading (or trailing) empty String `""` element. - Two subsequent delimiters also result in an empty String `""` element. - - - - - - - - Returns `len` characters of `this` String, starting at position `pos`. - - If `len` is omitted, all characters from position `pos` to the end of - `this` String are included. - - If `pos` is negative, its value is calculated from the end of `this` - String by `this.length + pos`. If this yields a negative value, 0 is - used instead. - - If the calculated position + `len` exceeds `this.length`, the characters - from that position to the end of `this` String are returned. - - If `len` is negative, the result is unspecified. - - - - - - - - Returns the part of `this` String from `startIndex` to but not including `endIndex`. - - If `startIndex` or `endIndex` are negative, 0 is used instead. - - If `startIndex` exceeds `endIndex`, they are swapped. - - If the (possibly swapped) `endIndex` is omitted or exceeds - `this.length`, `this.length` is used instead. - - If the (possibly swapped) `startIndex` exceeds `this.length`, the empty - String `""` is returned. - - - - Returns the String itself. - - - - - - - Creates a copy from a given String. - - The basic String class. - - A Haxe String is immutable, it is not possible to modify individual - characters. No method of this class changes the state of `this` String. - - Strings can be constructed using the String literal syntax `"string value"`. - - String can be concatenated by using the `+` operator. If an operand is not a - String, it is passed through `Std.string()` first. - - @see https://haxe.org/manual/std-String.html - - - - - - - The length of `this` StringBuf in characters. - - - - - - - - - - - Appends the representation of `x` to `this` StringBuf. - - The exact representation of `x` may vary per platform. To get more - consistent behavior, this function should be called with - Std.string(x). - - If `x` is null, the String "null" is appended. - - - - - - - - - Appends a substring of `s` to `this` StringBuf. - - This function expects `pos` and `len` to describe a valid substring of - `s`, or else the result is unspecified. To get more robust behavior, - `this.add(s.substr(pos,len))` can be used instead. - - If `s` or `pos` are null, the result is unspecified. - - If `len` is omitted or null, the substring ranges from `pos` to the end - of `s`. - - - - - - - Appends the character identified by `c` to `this` StringBuf. - - If `c` is negative or has another invalid value, the result is - unspecified. - - - - Returns the content of `this` StringBuf as String. - - The buffer is not emptied by this operation. - - - - Creates a new StringBuf instance. - - This may involve initialization of the internal buffer. - - A String buffer is an efficient way to build a big string by appending small - elements together. - - Unlike String, an instance of StringBuf is not immutable in the sense that - it can be passed as argument to functions which modify it by appending more - values. - - - - - - - - - ".code, "&".code, "|".code, "\n".code, "\r".code, ",".code, ";".code]]]> - Character codes of the characters that will be escaped by `quoteWinArg(_, true)`. - - - - - - - Returns a String that can be used as a single command line argument - on Unix. - The input will be quoted, or escaped if necessary. - - - - - - - - Returns a String that can be used as a single command line argument - on Windows. - The input will be quoted, or escaped if necessary, such that the output - will be parsed as a single argument using the rule specified in - http://msdn.microsoft.com/en-us/library/ms880421 - - Examples: - ```haxe - quoteWinArg("abc") == "abc"; - quoteWinArg("ab c") == '"ab c"'; - ``` - - - - - - - - - - - Encode an URL by using the standard format. - - - - - - - - Decode an URL using the standard format. - - - - - - - - ` becomes `>`; - - If `quotes` is true, the following characters are also replaced: - - - `"` becomes `"`; - - `'` becomes `'`;]]> - - - - - - - ` - - `"` becomes `"` - - `'` becomes `'`]]> - - - - - - - - Returns `true` if `s` contains `value` and `false` otherwise. - - When `value` is `null`, the result is unspecified. - - - - - - - - Tells if the string `s` starts with the string `start`. - - If `start` is `null`, the result is unspecified. - - If `start` is the empty String `""`, the result is true. - - - - - - - - Tells if the string `s` ends with the string `end`. - - If `end` is `null`, the result is unspecified. - - If `end` is the empty String `""`, the result is true. - - - - - - - - Tells if the character in the string `s` at position `pos` is a space. - - A character is considered to be a space character if its character code - is 9,10,11,12,13 or 32. - - If `s` is the empty String `""`, or if pos is not a valid position within - `s`, the result is false. - - - - - - - Removes leading space characters of `s`. - - This function internally calls `isSpace()` to decide which characters to - remove. - - If `s` is the empty String `""` or consists only of space characters, the - result is the empty String `""`. - - - - - - - Removes trailing space characters of `s`. - - This function internally calls `isSpace()` to decide which characters to - remove. - - If `s` is the empty String `""` or consists only of space characters, the - result is the empty String `""`. - - - - - - - Removes leading and trailing space characters of `s`. - - This is a convenience function for `ltrim(rtrim(s))`. - - - - - - - - - Concatenates `c` to `s` until `s.length` is at least `l`. - - If `c` is the empty String `""` or if `l` does not exceed `s.length`, - `s` is returned unchanged. - - If `c.length` is 1, the resulting String length is exactly `l`. - - Otherwise the length may exceed `l`. - - If `c` is null, the result is unspecified. - - - - - - - - - Appends `c` to `s` until `s.length` is at least `l`. - - If `c` is the empty String `""` or if `l` does not exceed `s.length`, - `s` is returned unchanged. - - If `c.length` is 1, the resulting String length is exactly `l`. - - Otherwise the length may exceed `l`. - - If `c` is null, the result is unspecified. - - - - - - - - - Replace all occurrences of the String `sub` in the String `s` by the - String `by`. - - If `sub` is the empty String `""`, `by` is inserted after each character - of `s` except the last one. If `by` is also the empty String `""`, `s` - remains unchanged. - - If `sub` or `by` are null, the result is unspecified. - - - - - - - - Encodes `n` into a hexadecimal representation. - - If `digits` is specified, the resulting String is padded with "0" until - its `length` equals `digits`. - - - - - - - - - Returns the character code at position `index` of String `s`, or an - end-of-file indicator at if `position` equals `s.length`. - - This method is faster than `String.charCodeAt()` on some platforms, but - the result is unspecified if `index` is negative or greater than - `s.length`. - - End of file status can be checked by calling `StringTools.isEof()` with - the returned value as argument. - - This operation is not guaranteed to work if `s` contains the `\0` - character. - - - - - - - - - Returns the character code at position `index` of String `s`, or an - end-of-file indicator at if `position` equals `s.length`. - - This method is faster than `String.charCodeAt()` on some platforms, but - the result is unspecified if `index` is negative or greater than - `s.length`. - - This operation is not guaranteed to work if `s` contains the `\0` - character. - - - - - - - Returns an iterator of the char codes. - - Note that char codes may differ across platforms because of different - internal encoding of strings in different runtimes. - For the consistent cross-platform UTF8 char codes see `haxe.iterators.StringIteratorUnicode`. - - - - - - - Returns an iterator of the char indexes and codes. - - Note that char codes may differ across platforms because of different - internal encoding of strings in different of runtimes. - For the consistent cross-platform UTF8 char codes see `haxe.iterators.StringKeyValueIteratorUnicode`. - - - - - - - - Tells if `c` represents the end-of-file (EOF) character. - - - - - - - - - "StringTools.quoteUnixArg() is deprecated. Use haxe.SysTools.quoteUnixArg() instead." - - Returns a String that can be used as a single command line argument - on Unix. - The input will be quoted, or escaped if necessary. - - - - - cast haxe.SysTools.winMetaCharacters - - "StringTools.winMetaCharacters is deprecated. Use haxe.SysTools.winMetaCharacters instead." - - Character codes of the characters that will be escaped by `quoteWinArg(_, true)`. - - - - - - - - - - "StringTools.quoteWinArg() is deprecated. Use haxe.SysTools.quoteWinArg() instead." - - Returns a String that can be used as a single command line argument - on Windows. - The input will be quoted, or escaped if necessary, such that the output - will be parsed as a single argument using the rule specified in - http://msdn.microsoft.com/en-us/library/ms880421 - - Examples: - ```haxe - quoteWinArg("abc") == "abc"; - quoteWinArg("ab c") == '"ab c"'; - ``` - - - - 65536 - - - - - - - This class provides advanced methods on Strings. It is ideally used with - `using StringTools` and then acts as an [extension](https://haxe.org/manual/lf-static-extension.html) - to the `String` class. - - If the first argument to any of the methods is null, the result is - unspecified. - - - - - - - - - - Prints any value to the standard output. - - - - - - - - Prints any value to the standard output, followed by a newline. - On Windows, this function outputs a CRLF newline. - LF newlines are printed on all other platforms. - - - - sys.io.FileInput - Returns the standard input of the process, from which user input can be read. - Usually it will block until the user sends a full input line. - See `getChar` for an alternative. - - - - sys.io.FileOutput - Returns the standard output of the process, to which program output can be written. - - - - sys.io.FileOutput - Returns the standard error of the process, to which program errors can be written. - - - - - - - Reads a single input character from the standard input and returns it. - Setting `echo` to `true` will also display the character on the output. - - - - - Returns all the arguments that were passed in the command line. - This does not include the interpreter or the name of the program file. - - (java)(eval) On Windows, non-ASCII Unicode arguments will not work correctly. - - (cs) Non-ASCII Unicode arguments will not work correctly. - - - - - - - Returns the value of the given environment variable, or `null` if it - doesn't exist. - - - - - - - - Sets the value of the given environment variable. - - (java) This functionality is not available on Java; calling this function will throw. - - - - - - - Suspends execution for the given length of time (in seconds). - - - - - - - Changes the current time locale, which will affect `DateTools.format` date formating. - Returns `true` if the locale was successfully changed. - - - - Gets the current working directory (usually the one in which the program was started). - - - - - - - Changes the current working directory. - - (java) This functionality is not available on Java; calling this function will throw. - - - - Returns the type of the current system. Possible values are: - - `"Windows"` - - `"Linux"` - - `"BSD"` - - `"Mac"` - - - - - - - - Runs the given command. The command output will be printed to the same output as the current process. - The current process will block until the command terminates. - The return value is the exit code of the command (usually `0` indicates no error). - - Command arguments can be passed in two ways: - - 1. Using `args` to pass command arguments. Each argument will be automatically quoted and shell meta-characters will be escaped if needed. - `cmd` should be an executable name that can be located in the `PATH` environment variable, or a full path to an executable. - - 2. When `args` is not given or is `null`, command arguments can be appended to `cmd`. No automatic quoting/escaping will be performed. `cmd` should be formatted exactly as it would be when typed at the command line. - It can run executables, as well as shell commands that are not executables (e.g. on Windows: `dir`, `cd`, `echo` etc). - - Use the `sys.io.Process` API for more complex tasks, such as background processes, or providing input to the command. - - - - - - - - Exits the current process with the given exit code. - - (macro)(eval) Being invoked in a macro or eval context (e.g. with `-x` or `--run`) immediately terminates - the compilation process, which also prevents the execution of any `--next` sections of compilation arguments. - - - - - Gives the most precise timestamp value available (in seconds), - but only accounts for the actual time spent running on the CPU for the current thread/process. - - - - "Use programPath instead" - Returns the path to the current executable that we are running. - - - - Returns the absolute path to the current program file that we are running. - Concretely, for an executable binary, it returns the path to the binary. - For a script (e.g. a PHP file), it returns the path to the script. - - - - - - - Returns all environment variables. - - This class provides access to various base functions of system platforms. - Look in the `sys` package for more system APIs. - - - - - - - - - - - - - - - - - - - - - - - - - Returns the class of `o`, if `o` is a class instance. - - If `o` is null or of a different type, null is returned. - - In general, type parameter information cannot be obtained at runtime. - - - - - - - - `. - - If `o` is null, null is returned. - - In general, type parameter information cannot be obtained at runtime.]]> - - - - - - - - Returns the super-class of class `c`. - - If `c` has no super class, null is returned. - - If `c` is null, the result is unspecified. - - In general, type parameter information cannot be obtained at runtime. - - - - - - - - Returns the name of class `c`, including its path. - - If `c` is inside a package, the package structure is returned dot- - separated, with another dot separating the class name: - `pack1.pack2.(...).packN.ClassName` - If `c` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `c` has no package, the class name is returned. - - If `c` is null, the result is unspecified. - - The class name does not include any type parameters. - - - - - - - - Returns the name of enum `e`, including its path. - - If `e` is inside a package, the package structure is returned dot- - separated, with another dot separating the enum name: - `pack1.pack2.(...).packN.EnumName` - If `e` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `e` has no package, the enum name is returned. - - If `e` is null, the result is unspecified. - - The enum name does not include any type parameters. - - - - - - - - Resolves a class by name. - - If `name` is the path of an existing class, that class is returned. - - Otherwise null is returned. - - If `name` is null or the path to a different type, the result is - unspecified. - - The class name must not include any type parameters. - - - - - - - - Resolves an enum by name. - - If `name` is the path of an existing enum, that enum is returned. - - Otherwise null is returned. - - If `name` is null the result is unspecified. - - If `name` is the path to a different type, null is returned. - - The enum name must not include any type parameters. - - - - - - - - - Creates an instance of class `cl`, using `args` as arguments to the - class constructor. - - This function guarantees that the class constructor is called. - - Default values of constructors arguments are not guaranteed to be - taken into account. - - If `cl` or `args` are null, or if the number of elements in `args` does - not match the expected number of constructor arguments, or if any - argument has an invalid type, or if `cl` has no own constructor, the - result is unspecified. - - In particular, default values of constructor arguments are not - guaranteed to be taken into account. - - - - - - - - Creates an instance of class `cl`. - - This function guarantees that the class constructor is not called. - - If `cl` is null, the result is unspecified. - - - - - - - - - - Creates an instance of enum `e` by calling its constructor `constr` with - arguments `params`. - - If `e` or `constr` is null, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - - Creates an instance of enum `e` by calling its constructor number - `index` with arguments `params`. - - The constructor indices are preserved from Haxe syntax, so the first - declared is index 0, the next index 1 etc. - - If `e` or `constr` is null, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - Returns a list of the instance fields of class `c`, including - inherited fields. - - This only includes fields which are known at compile-time. In - particular, using `getInstanceFields(getClass(obj))` will not include - any fields which were added to `obj` at runtime. - - The order of the fields in the returned Array is unspecified. - - If `c` is null, the result is unspecified. - - - - - - - - Returns a list of static fields of class `c`. - - This does not include static fields of parent classes. - - The order of the fields in the returned Array is unspecified. - - If `c` is null, the result is unspecified. - - - - - - - - Returns a list of the names of all constructors of enum `e`. - - The order of the constructor names in the returned Array is preserved - from the original syntax. - - If `e` is null, the result is unspecified. - - - - - - - - Returns the runtime type of value `v`. - - The result corresponds to the type `v` has at runtime, which may vary - per platform. Assumptions regarding this should be minimized to avoid - surprises. - - - - - - - - Recursively compares two enum instances `a` and `b` by value. - - Unlike `a == b`, this function performs a deep equality check on the - arguments of the constructors, if exists. - - If `a` or `b` are null, the result is unspecified. - - - - - - - Returns the constructor name of enum instance `e`. - - The result String does not contain any constructor arguments. - - If `e` is null, the result is unspecified. - - - - - - - Returns a list of the constructor arguments of enum instance `e`. - - If `e` has no arguments, the result is []. - - Otherwise the result are the values that were used as arguments to `e`, - in the order of their declaration. - - If `e` is null, the result is unspecified. - - - - - - - Returns the index of enum instance `e`. - - This corresponds to the original syntactic position of `e`. The index of - the first declared constructor is 0, the next one is 1 etc. - - If `e` is null, the result is unspecified. - - - - - - - - Returns a list of all constructors of enum `e` that require no - arguments. - - This may return the empty Array `[]` if all constructors of `e` require - arguments. - - Otherwise an instance of `e` constructed through each of its non- - argument constructors is returned, in the order of the constructor - declaration. - - If `e` is null, the result is unspecified. - - The Haxe Reflection API allows retrieval of type information at runtime. - - This class complements the more lightweight Reflect class, with a focus on - class and enum instances. - - @see https://haxe.org/manual/types.html - @see https://haxe.org/manual/std-reflection.html - - - - - - - - - - - - - The unsigned `Int` type is only defined for Flash and C#. - Simulate it for other platforms. - - @see https://haxe.org/manual/types-basic-types.html - - - - - - - - - A + B - -
- - - - - - A / B -
- - - - - - - A * B - - - - - - - - A - B - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A | B - - - - - - - - A ^ B - - - - - - - - - - - - - - - - > B]]> - - - - - - - - >> B]]> - - - - - - - - A % B - - - - - - - - - - A + B - - - - - - - - - - - A * B - - - - - - - - - A / B - - - - - - - - A / B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - B]]> - - - - - - - - - - A == B - - - - - - - - - - - A != B - - - - - - - - - - - A == B - - - - - - - - - - - A != B - - - - - - - - - = B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A % B - - - - - - - - A % B - - - - - - - ~A - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - - - - - - - - - - -
-
- - - - - - - - A + B - -
- - - - - - A / B -
- - - - - - - A * B - - - - - - - - A - B - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A | B - - - - - - - - A ^ B - - - - - - - - - - - - - - - - > B]]> - - - - - - - - >> B]]> - - - - - - - - A % B - - - - - - - - - - A + B - - - - - - - - - - - A * B - - - - - - - - - A / B - - - - - - - - A / B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - B]]> - - - - - - - - - - A == B - - - - - - - - - - - A != B - - - - - - - - - - - A == B - - - - - - - - - - - A != B - - - - - - - - - = B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A % B - - - - - - - - A % B - - - - - - - ~A - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - - - - - - - - - - -
- - - - - This abstract provides consistent cross-target unicode support. - - @see https://haxe.org/manual/std-UnicodeString.html - - - StringTools - - - - - - - - - Tells if `b` is a correctly encoded UTF8 byte sequence. - - <_new public="1" get="inline" set="null" line="114" static="1"> - - - - - - Creates an instance of UnicodeString. - - - - - - - Returns an iterator of the unicode code points. - - - - - - - Returns an iterator of the code point indices and unicode code points. - - - - The number of characters in `this` String. - - - - - - - - Returns the character at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, the empty String `""` - is returned. - - - - - - - - Returns the character code at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, `null` is returned. - - - - - - - - - Returns the position of the leftmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String starting from `startIndex` (if `startIndex` is posivite - or 0) or `max(this.length + startIndex, 0)` (if `startIndex` is negative). - - If `startIndex` exceeds `this.length`, -1 is returned. - - Otherwise the search is performed within `this` String. In either case, - the returned position is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - - Returns the position of the rightmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String from 0 to `startIndex + str.length`. Otherwise the search - is performed within `this` String. In either case, the returned position - is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - - Returns `len` characters of `this` String, starting at position `pos`. - - If `len` is omitted, all characters from position `pos` to the end of - `this` String are included. - - If `pos` is negative, its value is calculated from the end of `this` - String by `this.length + pos`. If this yields a negative value, 0 is - used instead. - - If the calculated position + `len` exceeds `this.length`, the characters - from that position to the end of `this` String are returned. - - If `len` is negative, the result is unspecified. - - - - - - - - - Returns the part of `this` String from `startIndex` to but not including `endIndex`. - - If `startIndex` or `endIndex` are negative, 0 is used instead. - - If `startIndex` exceeds `endIndex`, they are swapped. - - If the (possibly swapped) `endIndex` is omitted or exceeds - `this.length`, `this.length` is used instead. - - If the (possibly swapped) `startIndex` exceeds `this.length`, the empty - String `""` is returned. - - - - - - - - StringTools - - - - - - - - - - - Tells if `b` is a correctly encoded UTF8 byte sequence. - - <_new public="1" get="inline" set="null" line="114" static="1"> - - - - - - Creates an instance of UnicodeString. - - - - - - - Returns an iterator of the unicode code points. - - - - - - - Returns an iterator of the code point indices and unicode code points. - - - - The number of characters in `this` String. - - - - - - - - Returns the character at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, the empty String `""` - is returned. - - - - - - - - Returns the character code at position `index` of `this` String. - - If `index` is negative or exceeds `this.length`, `null` is returned. - - - - - - - - - Returns the position of the leftmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String starting from `startIndex` (if `startIndex` is posivite - or 0) or `max(this.length + startIndex, 0)` (if `startIndex` is negative). - - If `startIndex` exceeds `this.length`, -1 is returned. - - Otherwise the search is performed within `this` String. In either case, - the returned position is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - - Returns the position of the rightmost occurrence of `str` within `this` - String. - - If `startIndex` is given, the search is performed within the substring - of `this` String from 0 to `startIndex + str.length`. Otherwise the search - is performed within `this` String. In either case, the returned position - is relative to the beginning of `this` String. - - If `str` cannot be found, -1 is returned. - - - - - - - - - Returns `len` characters of `this` String, starting at position `pos`. - - If `len` is omitted, all characters from position `pos` to the end of - `this` String are included. - - If `pos` is negative, its value is calculated from the end of `this` - String by `this.length + pos`. If this yields a negative value, 0 is - used instead. - - If the calculated position + `len` exceeds `this.length`, the characters - from that position to the end of `this` String are returned. - - If `len` is negative, the result is unspecified. - - - - - - - - - Returns the part of `this` String from `startIndex` to but not including `endIndex`. - - If `startIndex` or `endIndex` are negative, 0 is used instead. - - If `startIndex` exceeds `endIndex`, they are swapped. - - If the (possibly swapped) `endIndex` is omitted or exceeds - `this.length`, `this.length` is used instead. - - If the (possibly swapped) `startIndex` exceeds `this.length`, the empty - String `""` is returned. - - - - - - - - StringTools - - - - - Xml node types. - - @see https://haxe.org/manual/std-Xml.html - - - - - - cast 0 - - - - Represents an XML element type. - - - - - cast 1 - - - - Represents XML parsed character data type. - - - - - cast 2 - - - - Represents XML character data type. - - - - - cast 3 - - - - Represents an XML comment type. - - - - - cast 4 - - - - Represents an XML doctype element type. - - - - - cast 5 - - - - Represents an XML processing instruction type. - - - - - cast 6 - - - - Represents an XML document type. - - - - - - - - - - - - - - - - cast 0 - - - - Represents an XML element type. - - - - - cast 1 - - - - Represents XML parsed character data type. - - - - - cast 2 - - - - Represents XML character data type. - - - - - cast 3 - - - - Represents an XML comment type. - - - - - cast 4 - - - - Represents an XML doctype element type. - - - - - cast 5 - - - - Represents an XML processing instruction type. - - - - - cast 6 - - - - Represents an XML document type. - - - - - - - - - - - - - - XmlType.Element - XML element type. - - - - XmlType.PCData - XML parsed character data type. - - - - XmlType.CData - XML character data type. - - - - XmlType.Comment - XML comment type. - - - - XmlType.DocType - XML doctype element type. - - - - XmlType.ProcessingInstruction - XML processing instruction type. - - - - XmlType.Document - XML document type. - - - - - - - Parses the String into an Xml document. - - - - - - - Creates a node of the given type. - - - - - - - Creates a node of the given type. - - - - - - - Creates a node of the given type. - - - - - - - Creates a node of the given type. - - - - - - - Creates a node of the given type. - - - - - - - Creates a node of the given type. - - - - Creates a node of the given type. - - - - Returns the type of the Xml Node. This should be used before - accessing other functions since some might raise an exception - if the node type is not correct. - - - - - Returns the node name of an Element. - - - - - Returns the node value. Only works if the Xml node is not an Element or a Document. - - - - Returns the parent object in the Xml hierarchy. - The parent can be `null`, an Element or a Document. - - - - - - - - - - - - - - - - - - - - - - Get the given attribute of an Element node. Returns `null` if not found. - Attributes are case-sensitive. - - - - - - - - Set the given attribute value for an Element node. - Attributes are case-sensitive. - - - - - - - Removes an attribute for an Element node. - Attributes are case-sensitive. - - - - - - - Tells if the Element node has a given attribute. - Attributes are case-sensitive. - - - - Returns an `Iterator` on all the attribute names. - - - - Returns an iterator of all child nodes. - Only works if the current node is an Element or a Document. - - - - Returns an iterator of all child nodes which are Elements. - Only works if the current node is an Element or a Document. - - - - - - - Returns an iterator of all child nodes which are Elements with the given nodeName. - Only works if the current node is an Element or a Document. - - - - Returns the first child node. - - - - Returns the first child node which is an Element. - - - - - - - Adds a child node to the Document or Element. - A child node can only be inside one given parent node, which is indicated by the `parent` property. - If the child is already inside this Document or Element, it will be moved to the last position among the Document or Element's children. - If the child node was previously inside a different node, it will be moved to this Document or Element. - - - - - - - Removes a child from the Document or Element. - Returns true if the child was successfuly removed. - - - - - - - - Inserts a child at the given position among the other childs. - A child node can only be inside one given parent node, which is indicated by the [parent] property. - If the child is already inside this Document or Element, it will be moved to the new position among the Document or Element's children. - If the child node was previously inside a different node, it will be moved to this Document or Element. - - - - Returns a String representation of the Xml node. - - - - - - - Cross-platform Xml API. - - @see https://haxe.org/manual/std-Xml.html - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Array with all frames of this collection. - - - - * Number of frames in this collection. - - - - - - - * Hash of frames for this frame collection. - * Used only in `FlxAtlasFrames` and `FlxBitmapFont` (not implemented yet), - * but you can try to use it for other types of collections - * (give names to your frames). - - - - * Graphic object this frames belongs to. - - - - * Type of this frame collection. - * Used for faster type detection (less casting). - - - - * How much space was trimmed around the original frames. - * Use `addBorder()` to add borders. - - - - - - - * Finds a frame in `framesHash` by its name. - * - * @param name The name of the frame to find. - * @return Frame with specified name (if there is one). - - - - - - - * Finds frame in frames array by its index. - * - * @param index Index of the frame in the frames array. - * @return Frame with specified index in this frames collection (if there is one). - - - - - - - * Finds frame index by its name. - * - * @param name Name of the frame. - * @return Index of the frame with specified name. - - - - - - - * Finds the index of the specified frame in the frames array. - * - * @param frame Frame to find. - * @return Index of the specified frame. - - - - - - - - * Adds empty frame into this frame collection. - * An empty frame is doing almost nothing for all the time. - * - * @param size Dimensions of the frame to add. - * @return Newly added empty frame. - - - - - - - * Adds new regular (not rotated) `FlxFrame` to this frame collection. - * - * @param region Region of image which new frame will display. - * @return Newly created `FlxFrame` object for specified region of image. - - - - - - - - - - - - - { flipY : false, flipX : false, angle : 0 } - * Adds new frame to this frame collection. - * This method runs additional check, and can add rotated frames (from texture atlases). - * - * @param frame Region of image. - * @param sourceSize Original size of packed image - * (if image had been cropped, then original size will be bigger than frame size). - * @param offset How frame region is located on original frame image - * (offset from top left corner of original image). - * @param name Name for this frame (name of packed image file). - * @param angle Rotation of packed image (can be `0`, `90` or `-90`). - * @param flipX If packed image should be horizontally flipped. - * @param flipY If packed image should be vertically flipped. - * @return Newly created and added frame object. - - - - - - - - * Checks if frame's area fits into atlas image, and trims if it's out of atlas image bounds. - * - * @param frame Frame area to check. - * @param name Optional frame name for debugging info. - * @return Checked and trimmed frame rectangle. - - - - - - - * Helper method for a adding frame to the collection. - * - * @param frameObj Frame to add. - * @return Added frame. - - - - - - - * Generates new frames collection from this collection but trims frames by specified borders. - * - * @param border How much space trim around the frames. - * @return Generated frames collection. - - - - - - - - - - * Base class for all frame collections. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - { _excludeArray : null } - * Creates Frames from TextureAtlas(very early and broken ok) Originally made for FNF HD by Smokey and Rozebud - * - * @param key The file path. - * @param _excludeArray Use this to only create selected animations. Keep null to create all of them. - * - - - - - - - - - - - - - - - - - - - - - - - - - - - "loop" - - - - "playonce" - - - - "singleframe" - - - - - - - - - - - - - - - "loop" - - - - "playonce" - - - - "singleframe" - - - - - - - - - - - - - - - - - - - "graphic" - - - - "movieclip" - - - - - - - - - - - - - - - - "graphic" - - - - "movieclip" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * All data needed for the json importer + some extra for after parsing. - * Stolen mostly from https://github.com/TomByrne/Starling-Extension-Adobe-Animate-Hx/blob/master/hx/src/starling/extensions/animate/AnimationAtlasData.hx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "___atlas_sprite___" - - - - { m00 : 1, m01 : 0, m02 : 0, m03 : 0, m10 : 0, m11 : 1, m12 : 0, m13 : 0, m20 : 0, m21 : 0, m22 : 1, m23 : 0, m30 : 0, m31 : 0, m32 : 0, m33 : 1 } - - - <_atlas> - - - - <_symbolData> - - - - <_symbolPool> - - - - <_defaultSymbolName> - <_texture> - - - - - - - - - - { symbol : null } - - - - - - - { prefix : "" } - - - - - - - - - - - - - - - - animateatlas - AtlasFrameMaker - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Performance will be REALLY BAD. - * Consider using TileAnimationLibrary whenever possible. - - - - - - - - - - - - - - - <_framerate expr="null"> - - null - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - animateatlas.displayobject.SpriteSymbol - - - - <__identity expr="new Matrix3()" line="56" static="1"> - - new Matrix3() - - - - The matrix a component, used in scaling and skewing (default is 1) - - - - The matrix b component, used in rotation and skewing (default is 0) - - - - The matrix c component, used in rotation and skewing (default is 0) - - - - The matrix d component, used in scaling and skewing (default is 1) - - - - The matrix tx component, used in translation (default is 0) - - - - The matrix ty component, used in translation (default is 0) - - - - Creates a duplicate of the current `Matrix3` - @return A duplicate `Matrix3` instance - - - - - - - Concatenates the values of a second matrix to the current - `Matrix3`, combining the effects of both. This is the same - as matrix multiplication. The second matrix is not modified. - @param m A second `Matrix3` to concatenate to the current instance - - - - - - - - Copies the `x` and `y` components from a `Vector4` instance - to the `a`/`c`, `b`/`d` or the `tx`/`ty` column of the current - matrix - @param column The column to copy into (0, 1 or 2) - @param vector4 The `Vector4` instance to copy from - - - - - - - - Copies a column of the current matrix into a `Vector4` - instance. The `w` value will not be modified. - @param column The column to copy from (0, 1 or 2) - @param vector4 The `Vector4` instance to copy to - - - - - - - Copies the values of another `Matrix3` and - applies it to the current instance - @param sourceMatrix3 The `Matrix3` to copy from - - - - - - - - Copies the values of a `Vector4` instance into a row - of the current matrix - @param row The row to copy into (0 or 1) - @param vector4 The `Vector4` instance to copy from - - - - - - - - Copies a row of the current matrix into a `Vector4` - instance. The `w` value will not be modified. - @param row The row to copy into (0, 1 or 2) - @param vector4 The `Vector4` instance to copy from - - - - - - - - - - - { ty : 0, tx : 0, rotation : 0 } - Applies a two-dimensional transformation to the current matrix. - - This is the same as calling `identity()`, `rotate()`, `scale()` - then `translate()` with these values. - @param scaleX An x scale transformation value - @param scaleY A y scale transformation value - @param rotation (Optional) A rotation value (default is 0) - @param tx (Optional) A translate x value (default is 0) - @param ty (Optional) A translate y value (default is 0) - - - - - - - - - - - { ty : 0, tx : 0, rotation : 0 } - Creates a matrix to use for a linear gradient fill - @param width The width of the gradient fill - @param height The height of the gradient fill - @param rotation (Optional) A rotation for the gradient fill (default is 0) - @param tx (Optional) An x offset for the gradient fill (default is 0) - @param ty (Optional) A y offset for the gradient fill (default is 0) - @return A new `Matrix` instance - - - - - - - Check if two matrices have the same values - @return Whether both matrices are equal - - - - - - - - { result : null } - Transforms a `Vector2` instance by the current matrix, - without considering the `tx` and `ty` values of the matrix - @param result (Optional) An existing `Vector2` instance to fill with the result - @return A new `Vector2` instance representing the transformed values - - - - Resets the matrix to default identity values - - - - Inverts the values of the current matrix - @return The current matrix instance - - - - - - - Applies rotation to the current matrix - @param theta A rotation value in degrees - - - - - - - - Scales the current matrix - @param sx The x scale to apply - @param sy The y scale to apply - - - - - - - - - { scale : 1 } - - - - - - - - - - - - - - Sets the values of the current matrix - @param a The new matrix a value - @param b The new matrix b value - @param c The new matrix c value - @param d The new matrix d value - @param tx The new matrix tx value - @param ty The new matrix ty value - - - - - - - - { roundPixels : false } - hide - - - - - - hide - - - - - - - - { result : null } - Transforms a `Rectangle` instance by the current matrix - and returns `Rectangle` with the bounds of the transformed - rectangle. - @param transform A `Matrix3` instance to transform by - @param result (Optional) A `Rectangle` instance to use for the result - @return A `Rectangle` represented the transformed bounds - - - - - - - - { result : null } - Transforms a `Vector2` instance by the current matrix - @param result (Optional) An existing `Vector2` instance to fill with the result - @return A new `Vector2` instance representing the transformed values - - - - - - - - Adjusts the `tx` and `ty` of the current matrix - @param dx The x amount to translate - @param dy The y amount to translate - - - - - - - - - - - - { ty : 0, tx : 0, d : 1, c : 0, b : 0, a : 1 } - Creates a new `Matrix` instance - @param a (Optional) An initial a component value (default is 1) - @param b (Optional) An initial b component value (default is 0) - @param c (Optional) An initial c component value (default is 0) - @param d (Optional) An initial d component value (default is 1) - @param tx (Optional) An initial tx component value (default is 0) - @param ty (Optional) An initial ty component value (default is 0) - - `Matrix3` is a 3x3 transformation matrix particularly useful for - two-dimensional transformation. It can be used for rotation, scale - and skewing of a two-dimensional object. - - Although a 3x3 matrix is represented, configurable values can be - considered as a 3x2 matrix: - - ``` - [ a, c, tx ] - [ c, d, ty ] - [ 0, 0, 1 ] - ``` - - - "tags=\"haxe,release\"" - - - - - <__identity expr="new Matrix()" line="76" static="1"> - - - new Matrix() - - - - <__pool expr="new ObjectPool<Matrix>(function() return new Matrix(), function(m) m.identity())" line="77" static="1"> - - - (function() return new Matrix(), function(m) m.identity())]]> - - - - <__matrix3 expr="new Matrix3()" line="79" static="1"> - - - new Matrix3() - - - - - - The value that affects the positioning of pixels along the _x_ axis - when scaling or rotating an image. - - - - The value that affects the positioning of pixels along the _y_ axis - when rotating or skewing an image. - - - - The value that affects the positioning of pixels along the _x_ axis - when rotating or skewing an image. - - - - The value that affects the positioning of pixels along the _y_ axis - when scaling or rotating an image. - - - - The distance by which to translate each point along the _x_ axis. - - - - The distance by which to translate each point along the _y_ axis. - - <__array> - - - - - - Returns a new Matrix object that is a clone of this matrix, with an exact - copy of the contained object. - - @return A Matrix object. - - - - - - - Concatenates a matrix with the current matrix, effectively combining the - geometric effects of the two. In mathematical terms, concatenating two - matrixes is the same as combining them using matrix multiplication. - - For example, if matrix `m1` scales an object by a factor of - four, and matrix `m2` rotates an object by 1.5707963267949 - radians(`Math.PI/2`), then `m1.concat(m2)` - transforms `m1` into a matrix that scales an object by a factor - of four and rotates the object by `Math.PI/2` radians. - - This method replaces the source matrix with the concatenated matrix. If - you want to concatenate two matrixes without altering either of the two - source matrixes, first copy the source matrix by using the - `clone()` method, as shown in the Class Examples section. - - @param m The matrix to be concatenated to the source matrix. - - - - - - - - Copies a Vector3D object into specific column of the calling Matrix3D object. - - @param column The column from which to copy the data from. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - - Copies specific column of the calling Matrix object into the Vector3D object. The - `w` element of the Vector3D object will not be changed. - - @param column The column from which to copy the data from. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - Copies all of the matrix data from the source Point object into the calling Matrix - object. - - @param sourceMatrix The Matrix object from which to copy the data. - - - - - - - - Copies a Vector3D object into specific row of the calling Matrix object. - - @param row The row from which to copy the data from. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - - Copies specific row of the calling Matrix object into the Vector3D object. The `w` - element of the Vector3D object will not be changed. - - @param row The row from which to copy the data from. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - - - - - { ty : 0, tx : 0, rotation : 0 } - Includes parameters for scaling, rotation, and translation. When - applied to a matrix it sets the matrix's values based on those - parameters. - Using the `createBox()` method lets you obtain the same matrix as you - would if you applied the `identity()`, `rotate()`, `scale()`, and - `translate()` methods in succession. For example, - `mat1.createBox(2,2,Math.PI/4, 100, 100)` has the same effect as the - following: - - ```haxe - import openfl.geom.Matrix; - - var mat1 = new Matrix(); - mat1.identity(); - mat1.rotate(Math.PI/4); - mat1.scale(2,2); - mat1.translate(10,20); - ``` - - @param scaleX The factor by which to scale horizontally. - @param scaleY The factor by which scale vertically. - @param rotation The amount to rotate, in radians. - @param tx The number of pixels to translate (move) to the right - along the _x_ axis. - @param ty The number of pixels to translate (move) down along - the _y_ axis. - - - - - - - - - - - { ty : 0, tx : 0, rotation : 0 } - Creates the specific style of matrix expected by the - `beginGradientFill()` and `lineGradientStyle()` methods of the - Graphics class. Width and height are scaled to a `scaleX`/`scaleY` - pair and the `tx`/`ty` values are offset by half the width and height. - - For example, consider a gradient with the following characteristics: - - * `GradientType.LINEAR` - * Two colors, green and blue, with the ratios array set to `[0, 255]` - * `SpreadMethod.PAD` - * `InterpolationMethod.LINEAR_RGB` - - The following illustrations show gradients in which the matrix was - defined using the `createGradientBox()` method with different - parameter settings: - - | `createGradientBox()` settings | Resulting gradient | - | --- | --- | - | `width = 25; height = 25; rotation = 0; tx = 0; ty = 0;` | ![resulting linear gradient](/images/createGradientBox-1.jpg) | - | `width = 25; height = 25; rotation = 0; tx = 25; ty = 0;` | ![resulting linear gradient](/images/createGradientBox-2.jpg) | - | `width = 50; height = 50; rotation = 0; tx = 0; ty = 0;` | ![resulting linear gradient](/images/createGradientBox-3.jpg) | - | `width = 50; height = 50; rotation = Math.PI / 4; // 45 degrees tx = 0; ty = 0;` | ![resulting linear gradient](/images/createGradientBox-4.jpg) | - - @param width The width of the gradient box. - @param height The height of the gradient box. - @param rotation The amount to rotate, in radians. - @param tx The distance, in pixels, to translate to the right - along the _x_ axis. This value is offset by half of - the `width` parameter. - @param ty The distance, in pixels, to translate down along the - _y_ axis. This value is offset by half of the `height` - parameter. - - - - - - - Given a point in the pretransform coordinate space, returns the - coordinates of that point after the transformation occurs. Unlike the - standard transformation applied using the `transformPoint()` - method, the `deltaTransformPoint()` method's transformation - does not consider the translation parameters `tx` and - `ty`. - - @param point The point for which you want to get the result of the matrix - transformation. - @return The point resulting from applying the matrix transformation. - - - - - - - - hide - - "checkstyle:FieldDocComment" - - - - - Sets each matrix property to a value that causes a null - transformation. An object transformed by applying an identity matrix - will be identical to the original. - After calling the `identity()` method, the resulting matrix has the - following properties: `a`=1, `b`=0, `c`=0, `d`=1, `tx`=0, `ty`=0. - - In matrix notation, the identity matrix looks like this: - - ![Matrix class properties in matrix notation](/images/matrix_identity.jpg) - - - - Performs the opposite transformation of the original matrix. You can apply - an inverted matrix to an object to undo the transformation performed when - applying the original matrix. - - - - - - - Applies a rotation transformation to the Matrix object. - The `rotate()` method alters the `a`, `b`, `c`, and `d` properties of - the Matrix object. In matrix notation, this is the same as - concatenating the current matrix with the following: - - ![Matrix notation of scale method parameters](/images/matrix_rotate.jpg) - - @param angle The rotation angle in radians. - - - - - - - - Applies a scaling transformation to the matrix. The _x_ axis is - multiplied by `sx`, and the _y_ axis it is multiplied by `sy`. - The `scale()` method alters the `a` and `d` properties of the Matrix - object. In matrix notation, this is the same as concatenating the - current matrix with the following matrix: - - ![Matrix notation of scale method parameters](/images/matrix_scale.jpg) - - @param sx A multiplier used to scale the object along the _x_ axis. - @param sy A multiplier used to scale the object along the _y_ axis. - - - - - - - - - { scale : 1 } - - - - - - - - - - - - - - Sets the members of Matrix to the specified values - - @param aa the values to set the matrix to. - @param ba - @param ca - @param da - @param txa - @param tya - - - - - - - - { roundPixels : false } - "checkstyle:FieldDocComment" - hide - - - - - - - "checkstyle:FieldDocComment" - hide - - - - - - Returns a text value listing the properties of the Matrix object. - - @return A string containing the values of the properties of the Matrix - object: `a`, `b`, `c`, - `d`, `tx`, and `ty`. - - - - - - - Returns the result of applying the geometric transformation represented by - the Matrix object to the specified point. - - @param point The point for which you want to get the result of the Matrix - transformation. - @return The point resulting from applying the Matrix transformation. - - - - - - - - Translates the matrix along the _x_ and _y_ axes, as specified - by the `dx` and `dy` parameters. - - @param dx The amount of movement along the _x_ axis to the right, in - pixels. - @param dy The amount of movement down along the _y_ axis, in pixels. - - - - - - - - { transpose : false } - - - - <__cleanValues get="inline" set="null" line="740"> - - - - <__toMatrix3 set="method" line="751"> - - - - <__transformInversePoint get="inline" set="null" line="758"> - - - - - - - <__transformInverseX get="inline" set="null" line="775"> - - - - - - - - <__transformInverseY get="inline" set="null" line="789"> - - - - - - - - <__transformPoint get="inline" set="null" line="803"> - - - - - - - <__transformX get="inline" set="null" line="812"> - - - - - - - - <__transformY get="inline" set="null" line="817"> - - - - - - - - <__translateTransformed get="inline" set="null" line="822"> - - - - - - - - - - - - - - - - - - { ty : 0, tx : 0, d : 1, c : 0, b : 0, a : 1 } - Creates a new Matrix object with the specified parameters. In matrix - notation, the properties are organized like this: - - ![Matrix class properties in matrix notation showing assumed values for u, v, and w](/images/matrix_props2.jpg) - - If you do not provide any parameters to the `new Matrix()` - constructor, it creates an _identity matrix_ with the following - values: - - | `a = 1` | `b = 0` | - | `c = 0` | `d = 1` | - | `tx = 0` | `ty = 0` | - - In matrix notation, the identity matrix looks like this: - - ![Matrix class properties in matrix notation](/images/matrix_identity.jpg) - - @param a The value that affects the positioning of pixels along the - _x_ axis when scaling or rotating an image. - @param b The value that affects the positioning of pixels along the - _y_ axis when rotating or skewing an image. - @param c The value that affects the positioning of pixels along the - _x_ axis when rotating or skewing an image. - @param d The value that affects the positioning of pixels along the - _y_ axis when scaling or rotating an image.. - @param tx The distance by which to translate each point along the _x_ - axis. - @param ty The distance by which to translate each point along the _y_ - axis. - - The Matrix class represents a transformation matrix that determines how to - map points from one coordinate space to another. You can perform various - graphical transformations on a display object by setting the properties of - a Matrix object, applying that Matrix object to the `matrix` property of a - Transform object, and then applying that Transform object as the - `transform` property of the display object. These transformation functions - include translation (_x_ and _y_ repositioning), rotation, scaling, and - skewing. - Together these types of transformations are known as _affine - transformations_. Affine transformations preserve the straightness of - lines while transforming, so that parallel lines stay parallel. - - To apply a transformation matrix to a display object, you create a - Transform object, set its `matrix` property to the transformation matrix, - and then set the `transform` property of the display object to the - Transform object. Matrix objects are also used as parameters of some - methods, such as the following: - - * The `draw()` method of a BitmapData object - * The `beginBitmapFill()` method, `beginGradientFill()` method, or - `lineGradientStyle()` method of a Graphics object - - A transformation matrix object is a 3 x 3 matrix with the following - contents: - - ![Matrix class properties in matrix notation](/images/matrix_props1.jpg) - - In traditional transformation matrixes, the `u`, `v`, and `w` properties - provide extra capabilities. The Matrix class can only operate in - two-dimensional space, so it always assumes that the property values `u` - and `v` are 0.0, and that the property value `w` is 1.0. The effective - values of the matrix are as follows: - - ![Matrix class properties in matrix notation showing assumed values for u, v, and w](/images/matrix_props2.jpg) - - You can get and set the values of all six of the other properties in a - Matrix object: `a`, `b`, `c`, `d`, `tx`, and `ty`. - - The Matrix class supports the four major types of transformations: - translation, scaling, rotation, and skewing. You can set three of these - transformations by using specialized methods, as described in the - following table: - - | Transformation | Method | Matrix values | Display result | Description | - | --- | --- | --- | --- | --- | - | Translation (displacement) | `translate(tx, ty)` | ![Matrix notation of translate method parameters](/images/matrix_translate.jpg) | ![Illustration of translate method effects](/images/matrix_translate_image.jpg) | Moves the image `tx` pixels to the right and `ty` pixels down. | - | Scaling | `scale(sx, sy)` | ![Matrix notation of scale method parameters](/images/matrix_scale.jpg) | ![Illustration of scale method effects](/images/matrix_scale_image.jpg) | Resizes the image, multiplying the location of each pixel by `sx` on the _x_ axis and `sy` on the _y_ axis. | - | Rotation | `rotate(q)` | ![Matrix notation of rotate method properties](/images/matrix_rotate.jpg) | ![Illustration of rotate method effects](/images/matrix_rotate_image.jpg) | Rotates the image by an angle `q`, which is measured in radians. | - | Skewing or shearing | None; must set the properties `b` and `c` | ![Matrix notation of skew function properties](/images/matrix_skew.jpg) | ![Illustration of skew function effects](/images/matrix_skew_image.jpg) | Progressively slides the image in a direction parallel to the _x_ or _y_ axis. The `b` property of the Matrix object represents the tangent of the skew angle along the _y_ axis; the `c` property of the Matrix object represents the tangent of the skew angle along the _x_ axis. | - - Each transformation function alters the current matrix properties so that - you can effectively combine multiple transformations. To do this, you call - more than one transformation function before applying the matrix to its - display object target (by using the `transform` property of that display - object). - - Use the `new Matrix()` constructor to create a Matrix object before you - can call the methods of the Matrix object. - - - "tags=\"haxe,release\"" - - - - - - - - new Matrix() - - - - - - - - - <_data> - <_library> - <_symbolName> - <_type> - <_loopMode> - <_currentFrame> - <_composedFrame> - <_bitmap> - <_numFrames> - <_numLayers> - <_frameLabels> - <_colorTransform> - <_layers> - <_texture> - <_tempRect expr="new Rectangle()"> - - new Rectangle() - - <_zeroPoint expr="new Point(0, 0)"> - - new Point(0, 0) - - - - - true - - - - - - - - - - { direction : 1 } - Moves all movie clips n frames, recursively. - - - - - - - - animateatlas - - - - - - - - animateatlas - - - - - - - animateatlas - - - - - - - - - - - - - - - - - - - <_getFrameLabels set="method" line="379"> - - - - - - - - - - - - - - - - - { afterLabel : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - - - - - - "http://www.away3d.com" - - - - 4 - - - - 1 - - - - 6 - - * Helper class to track a few important library constants. - - - - - - "default" - - - - - - - <_originalName> - <_namespace> - <_name> - <_id> - <_full_path> - - - name, which may - * have changed due to of a name conflict.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - { overrideOriginal : true, ns : null } - - - - - - - - { name : null } - - - - - - - - - - - - * The name of the asset. - - - - - - - - * The id of the asset. - - - - - - - - * The namespace of the asset. This allows several assets with the same name to coexist in different contexts. - - - - * The type of the asset. - - - - * The full path of the asset. - - - - - - - - - - - - - - { overrideOriginal : true, ns : null } - - - - * Cleans up resources used by this asset. - - - - - - - - - - - <_usesCPU> - <_animations expr="new Vector<AnimationNodeBase>()"> - - ()]]> - - <_animationNames expr="new Vector<String>()"> - - ()]]> - - <_animationDictionary expr="new Map<String,AnimationNodeBase>()"> - - - - - ()]]> - - - - - - - - { excludeAnother : null } - * Retrieves a temporary GPU register that's still free. - * - * @param exclude An array of non-free temporary registers. - * @param excludeAnother An additional register that's not free. - * @return A temporary register that can be used. - - - - * Indicates whether the properties of the animation data contained within the set combined with - * the vertex registers aslready in use on shading materials allows the animation data to utilise - * GPU calls. - - - - away3d - * Called by the material to reset the GPU indicator before testing whether register space in the shader - * is available for running GPU-based animation code. - * - * @private - - - - - * @inheritDoc - - - - * Returns a vector of animation state objects that make up the contents of the animation data set. - - - - * Returns a vector of animation state objects that make up the contents of the animation data set. - - - - - - - * Check to determine whether a state is registered in the animation set under the given name. - * - * @param stateName The name of the animation state object to be checked. - - - - - - - * Retrieves the animation state object registered in the animation data set under the given name. - * - * @param stateName The name of the animation state object to be retrieved. - - - - - - - * Adds an animation state object to the aniamtion data set under the given name. - * - * @param stateName The name under which the animation state object will be stored. - * @param animationState The animation state object to be staored in the set. - - - - * Cleans up any resources used by the current object. - - - * Provides an abstract base class for data set classes that hold animation data for use in animator classes. - * - * @see away3d.animators.AnimatorBase - - - - - - - - - - - - - - - <_broadcaster expr="new Sprite()"> - - new Sprite() - - <_isPlaying> - <_autoUpdate expr="true"> - - true - - <_startEvent> - <_stopEvent> - <_cycleEvent> - <_time expr="0"> - - 0 - - <_playbackSpeed expr="1"> - - 1 - - <_animationSet> - <_owners expr="new Vector<Mesh>()"> - - ()]]> - - <_activeNode> - <_activeState> - <_activeAnimationName> - <_absoluteTime expr="0"> - - 0 - - <_animationStates expr="new Map()"> - - - - - new Map() - - - - true - * Enables translation of the animated mesh from data returned per frame via the positionDelta property of the active animation node. Defaults to true. - * - * @see away3d.animators.states.IAnimationState#positionDelta - - - - - - - - - - - - * Returns the internal absolute time of the animator, calculated by the current time and the playback speed. - * - * @see #time - * @see #playbackSpeed - - - - * Returns the animation data set in use by the animator. - - - - * Returns the current active animation state. - - - - * Returns the current active animation node. - - - - * Returns the current active animation node. - - - - time property or update() method. - * Defaults to true. - * - * @see #time - * @see #update()]]> - - - - - - - - * Gets and sets the internal time clock of the animator. - - - - - - - - - - - * Sets the animation phase of the current active state's animation clip(s). - * - * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end. - - - - * The amount by which passed time should be scaled. Used to slow down or speed up animations. Defaults to 1. - - - - - - - - * Resumes the automatic playback clock controling the active state of the animator. - - - - time property or update() method. - * - * @see #time - * @see #update()]]> - - - - - - - * Provides a way to manually update the active state of the animator when automatic - * updates are disabled. - * - * @see #stop() - * @see #autoUpdate - - - - - - - - { offset : 0 } - - - - - - - away3d - * Used by the mesh object to which the animator is applied, registers the owner for internal use. - * - * @private - - - - - - - away3d - * Used by the mesh object from which the animator is removed, unregisters the owner for internal use. - * - * @private - - - - - - - away3d - * Internal abstract method called when the time delta property of the animator's contents requires updating. - * - * @private - - - - - - - { event : null } - * Enter frame event handler for automatically updating the active state of the animator. - - - - - away3d - * for internal use. - * - * @private - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - AnimatorBase object. - * - * @param animationSet The animation data set to be used by the animator object.]]> - - - - - - - - - - - - - - - - * Check to determine whether a state is registered in the animation set under the given name. - * - * @param stateName The name of the animation state object to be checked. - - - - - - - * Retrieves the animation state object registered in the animation data set under the given name. - * - * @param stateName The name of the animation state object to be retrieved. - - - - * Indicates whether the properties of the animation data contained within the set combined with - * the vertex registers aslready in use on shading materials allows the animation data to utilise - * GPU calls. - - - - away3d - * Called by the material to reset the GPU indicator before testing whether register space in the shader - * is available for running GPU-based animation code. - * - * @private - - - - away3d - * Called by the animator to void the GPU indicator when register space in the shader - * is no longer available for running GPU-based animation code. - * - * @private - - - - - - - - - - away3d - * Generates the AGAL Vertex code for the animation, tailored to the material pass's requirements. - * - * @param pass The MaterialPassBase object to whose vertex code the animation's code will be prepended. - * @sourceRegisters The animatable attribute registers of the material pass. - * @targetRegisters The animatable target registers of the material pass. - * @return The AGAL Vertex code that animates the vertex data. - * - * @private - - - - - - - - - away3d - * Generates the AGAL Fragment code for the animation, tailored to the material pass's requirements. - * - * @param pass The MaterialPassBase object to whose vertex code the animation's code will be prepended. - * @return The AGAL Vertex code that animates the vertex data. - * - * @private - - - - - - - - - away3d - * Generates the extra AGAL Fragment code for the animation when UVs are required, tailored to the material pass's requirements. - * - * @param pass The MaterialPassBase object to whose vertex code the animation's code will be prepended. - * @param UVSource String representing the UV source register. - * @param UVTarget String representing the UV target register. - * @return The AGAL UV code that animates the UV data. - * - * @private - - - - - - - away3d - * Resets any constants used in the creation of AGAL for the vertex and fragment shaders. - * - * @param pass The material pass currently being used to render the geometry. - * - * @private - - - - - - - - away3d - * Sets the GPU render state required by the animation that is independent of the rendered mesh. - * - * @param stage3DProxy The proxy currently performing the rendering. - * @param pass The material pass currently being used to render the geometry. - * - * @private - - - - - - - - away3d - * Clears the GPU render state that has been set by the current animation. - * - * @param stage3DProxy The proxy currently performing the rendering. - * @param pass The material pass currently being used to render the geometry. - * - * @private - - * Provides an interface for data set classes that hold animation data for use in animator classes. - * - * @see away3d.animators.IAnimator - - - - - - - - - - - - * Returns the animation data set in use by the animator. - - - - - - - - - - - * Sets the GPU render state required by the animation that is dependent of the rendered object. - * - * @param stage3DProxy The Stage3DProxy object which is currently being used for rendering. - * @param renderable The object currently being rendered. - * @param vertexConstantOffset The first available vertex register to write data to if running on the gpu. - * @param vertexStreamOffset The first available vertex stream to write vertex data to if running on the gpu. - - - - - - - * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu. - * Needs to be called if gpu code is potentially required. - - - - - - - away3d - * Used by the mesh object to which the animator is applied, registers the owner for internal use. - * - * @private - - - - - - - away3d - * Used by the mesh object from which the animator is removed, unregisters the owner for internal use. - * - * @private - - - - - - - - - - - - * Returns a shallow clone (re-using the same IAnimationSet) of this IAnimator. - - - AnimationSetBase. - * - * @see away3d.animators.IAnimationSet]]> - - - - - - - - 9 - * Property used by particle nodes that require compilation at the end of the shader - - - - 18 - * Property used by particle nodes that require color compilation - - - <_animationRegisterCache> - - away3d - @private - - <_timeNode> - <_animationSubGeometries expr="new Map()"> - - - - - new Map() - - <_particleNodes expr="new Vector<ParticleNodeBase>()"> - - ()]]> - - <_localDynamicNodes expr="new Vector<ParticleNodeBase>()"> - - ()]]> - - <_localStaticNodes expr="new Vector<ParticleNodeBase>()"> - - ()]]> - - <_totalLenOfOneVertex expr="0"> - - 0 - - - - - - - - - - - - - * function initParticleFunc(prop:ParticleProperties):void - * { - * //code for settings local properties - * } - * - * - * Aside from setting any properties required in particle animation nodes using local static properties, the initParticleFunc function - * is required to time node requirements as they may be needed. These properties on the ParticleProperties object can include - * startTime, duration and delay. The use of these properties is determined by the setting - * arguments passed in the constructor of the particle animation set. By default, only the startTime property is required.]]> - - - - * Returns a vector of the particle animation nodes contained within the set. - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - away3d - @private - - - - - - - - - { usesDelay : false, usesLooping : false, usesDuration : false } - ParticleAnimationSet - * - * @param [optional] usesDuration Defines whether the animation set uses the duration data in its static properties function to determine how long a particle is visible for. Defaults to false. - * @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime, duration and delay data in its static properties function. Defaults to false. Requires usesDuration to be true. - * @param [optional] usesDelay Defines whether the animation set uses the delay data in its static properties function to determine how long a particle is hidden for. Defaults to false. Requires usesLooping to be true.]]> - - * The animation data set used by particle-based animators, containing particle animation data. - * - * @see away3d.animators.ParticleAnimator - - - - - - <_particleAnimationSet public="1"> - <_animationParticleStates expr="new Vector<ParticleStateBase>()"> - - ()]]> - - <_animatorParticleStates expr="new Vector<ParticleStateBase>()"> - - ()]]> - - <_timeParticleStates expr="new Vector<ParticleStateBase>()"> - - ()]]> - - <_totalLenOfOneVertex expr="0"> - - 0 - - <_animatorSubGeometries expr="new Map()"> - - - - - new Map() - - - - * @inheritDoc - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - { offset : 0 } - * @inheritDoc - - - - - - - - - - - - ParticleAnimator object. - * - * @param particleAnimationSet The animation data set containing the particle animations used by the animator.]]> - - * Provides an interface for assigning paricle-based animation data sets to mesh-based entity objects - * and controlling the various available states of animation through an interative playhead that can be - * automatically updated or manually triggered. - * - * Requires that the containing geometry of the parent mesh is particle geometry - * - * @see away3d.core.base.ParticleGeometry - - - - - - - - - - - - - - <_path> - <_time> - <_index expr="0"> - - 0 - - <_rotations> - <_alignToPath> - <_target> - <_lookAtTarget> - <_offset> - <_tmpOffset> - <_position expr="new Vector3D()"> - - new Vector3D() - - <_lastTime> - <_from> - <_to> - <_bRange> - <_bSegment> - <_bCycle> - <_lastSegment expr="0"> - - 0 - - <_rot> - <_upAxis expr="new Vector3D(0, 1, 0)"> - - new Vector3D(0, 1, 0) - - <_basePosition expr="new Vector3D(0, 0, 0)"> - - new Vector3D(0, 0, 0) - - - - - - - - - - - - - - { z : 0, y : 0, x : 0 } - Path object for parallel animations]]> - - - - - - - * Calculates the new position and set the object on the path accordingly - * - * @param t A Number from 0 to 1 (less than one to allow alignToPath) - - - - - - - - * Updates a position Vector3D on the path at a given time. Do not use this handler to animate, it's in there to add dummy's or place camera before or after - * the animated object. Use the update() or the automatic tweened animateOnPath() handlers instead. - * - * @param t Number. A Number from 0 to 1 - * @param out Vector3D. The Vector3D to update according to the "t" time parameter. - - - - - - - - - * Returns a position on the path according to duration/elapsed time. Duration variable must be set. - * - * @param ms Number. A number representing milliseconds. - * @param duration Number. The total duration in milliseconds. - * @param out [optional] Vector3D. A Vector3D that will be used to return the position. If none provided, method returns a new Vector3D with this data. - * - * An example of use of this handler would be cases where a given "lap" must be done in a given amount of time and you would want to retrieve the "ideal" time - * based on elapsed time since start of the race. By comparing actual progress to ideal time, you could extract their classement, calculate distance/time between competitors, - * abort the race if goal is impossible to be reached in time etc... - * - *@ returns Vector3D The position at a given elapsed time, compared to total duration. - - - - - - - * defines if the object animated along the path must be aligned to the path. - - - - - * returns the current interpolated position on the path with no optional offset applied - - - - - - - * defines the path to follow - * @see Path - - - - - * Represents the progress of the animation playhead from the start (0) to the end (1) of the animation. - - - - - - - - - - - { t : null } - * returns the segment index that is used at a given time; - * @param t [Number]. A Number between 0 and 1. If no params, actual pathanimator time segment index is returned. - - - - * returns the actual interpolated rotation along the path. - - - - - - - * sets the object to be animated along the path. - - - - - - - - * sets the object that the animated object will be looking at along the path - - - - - - - - - - - - - - - * Set the pointer to a given segment along the path - - - - - - - - - - - * Default method for adding a cycle event listener. Event fired when the time reaches 1. - * - * @param listener The listener function - - - - - - - - - - * Default method for removing a cycle event listener - * - * @param listener The listener function - - - - - - - - - - - - { to : 0, from : 0 } - - - - - - - - - - - * Default method for removing a range event listener - * - * @param listener The listener function - - - - - - - - - - * Default method for adding a segmentchange event listener. Event fired when the time pointer enters another PathSegment. - * - * @param listener The listener function - - - - - - - - - - * Default method for removing a range event listener - * - * @param listener The listener function - - - - - - - - - - - - { rotate : false } - - - - - - - - - - - - { rotations : null, lookAtTarget : null, alignToPath : true, offset : null, target : null, path : null } - PathAnimator - * - * @param [optional] path The QuadraticPath to animate onto. - * @param [optional] target An Object3D, the object to animate along the path. It can be Mesh, Camera, ObjectContainer3D... - * @param [optional] offset A Vector3D to define the target offset to its location on the path. - * @param [optional] alignToPath Defines if the object animated along the path is orientated to the path. Default is true. - * @param [optional] lookAtTarget An Object3D that the target will constantly look at during animation. - * @param [optional] rotations A Vector.<Vector3D> to define rotations per pathsegments. If PathExtrude is used to simulate the "road", use the very same rotations vector.]]> - - - - - - - <_jointsPerVertex> - - - * Returns the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the - * maximum allowed value is 4. - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - { jointsPerVertex : 4 } - SkeletonAnimationSet object. - * - * @param jointsPerVertex Sets the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the maximum allowed value is 4. Defaults to 4.]]> - - * The animation data set used by skeleton-based animators, containing skeleton animation data. - * - * @see away3d.animators.SkeletonAnimator - - - - - - - - - - - <_globalMatrices> - <_globalPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_globalPropertiesDirty> - <_numJoints> - <_skeletonAnimationStates expr="new Map()"> - - - - - new Map() - - <_condensedMatrices> - <_skeleton> - <_forceCPU> - <_useCondensedIndices> - <_jointsPerVertex> - <_activeSkeletonState> - - - * returns the calculated global matrices of the current skeleton pose. - * - * @see #globalPose - - - - * returns the current skeleton pose output from the animator. - * - * @see away3d.animators.data.SkeletonPose - - - - * Returns the skeleton object in use by the animator - this defines the number and heirarchy of joints used by the - * skinned geoemtry to which skeleon animator is applied. - - - - * Indicates whether the skeleton animator is disabled by default for GPU rendering, something that allows the animator to perform calculation on the GPU. - * Defaults to false. - - - - * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints - * by condensing the number of joint index values required per mesh. Only applicable to - * skeleton animations that utilise more than one mesh object. Defaults to false. - - - - - - - - * @inheritDoc - - - - - - - - - { offset : null, transition : null } - * Plays an animation state registered with the given name in the animation data set. - * - * @param name The data set name of the animation state to be played. - * @param transition An optional transition object that determines how the animator will transition from the currently active animation state. - * @param offset An option offset time (in milliseconds) that resets the state's internal clock to the absolute time of the animator plus the offset value. Required for non-looping animation states. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Applies the calculated time delta to the active animation state node or state transition object. - - - - - - - - - - - - - - * If the animation can't be performed on GPU, transform vertices manually - * @param subGeom The subgeometry containing the weights and joint index data per vertex. - * @param pass The material pass for which we need to transform the vertices - - - - - - - - - * Converts a local hierarchical skeleton pose to a global pose - * @param targetPose The SkeletonPose object that will contain the global pose. - * @param skeleton The skeleton containing the joints, and as such, the hierarchical data to transform to global poses. - - - - - - - - - - - - - { forceCPU : false } - SkeletonAnimator object. - * - * @param skeletonAnimationSet The animation data set containing the skeleton animations used by the animator. - * @param skeleton The skeleton object used for calculating the resulting global matrices for transforming skinned mesh data. - * @param forceCPU Optional value that only allows the animator to perform calculation on the CPU. Defaults to false.]]> - - * Provides an interface for assigning skeleton-based animation data sets to mesh-based entity objects - * and controlling the various available states of animation through an interative playhead that can be - * automatically updated or manually triggered. - - - - - - - true - - - - - - - - - - - <_agalCode> - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - * The animation data set containing the Spritesheet animation state data. - * - * @see away3d.animators.SpriteSheetAnimator - * @see away3d.animators.SpriteSheetAnimationState - - - - - - - - - - <_activeSpriteSheetState> - <_spriteSheetAnimationSet> - <_frame expr="new SpriteSheetAnimationFrame()"> - - new SpriteSheetAnimationFrame() - - <_vectorFrame> - <_fps expr="10"> - - 10 - - <_ms expr="100"> - - 100 - - <_lastTime expr="0"> - - 0 - - <_reverse> - <_backAndForth> - <_specsDirty> - <_mapDirty> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - { offset : null, transition : null } - * @inheritDoc - - - - - - - * Applies the calculated time delta to the active animation state node. - - - - - - - - - - - - - - - - - SpriteSheetAnimator object. - * @param spriteSheetAnimationSet The animation data set containing the sprite sheet animation states used by the animator.]]> - - * Provides an interface for assigning uv-based sprite sheet animation data sets to mesh-based entity objects - * and controlling the various available states of animation through an interative playhead that can be - * automatically updated or manually triggered. - - - - - - <_agalCode> - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - * The animation data set used by uv-based animators, containing uv animation state data. - * - * @see away3d.animators.UVAnimator - * @see away3d.animators.UVAnimationState - - - - - - - - - <_uvAnimationSet> - <_deltaFrame expr="new UVAnimationFrame()"> - - new UVAnimationFrame() - - <_activeUVState> - <_uvTransform> - <_matrix2d> - <_translate> - <_autoRotation> - <_rotationIncrease expr="1"> - - 1 - - <_autoTranslate> - <_translateIncrease> - - - - - - * Defines if a rotation is performed automatically each update. The rotationIncrease value is added each iteration. - - - - - - - - * if autoRotation = true, the rotation is increased by the rotationIncrease value. Default is 1; - - - - - - - - * Defines if the animation is translated automatically each update. Ideal to scroll maps. Use setTranslateIncrease to define the offsets. - - - - - - - - - * if autoTranslate = true, animation is translated automatically each update with the u and v values. - * Note if value are integers, no visible update will be performed. Values are expected to be in 0-1 range. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - { offset : null, transition : null } - * @inheritDoc - - - - - - - * Applies the calculated time delta to the active animation state node. - - - - - - - * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu. - * Needs to be called if gpu code is potentially required. - - - - * @inheritDoc - - - - - - - UVAnimator object. - * - * @param uvAnimationSet The animation data set containing the uv animations used by the animator.]]> - - * Provides an interface for assigning uv-based animation data sets to mesh-based entity objects - * and controlling the various available states of animation through an interative playhead that can be - * automatically updated or manually triggered. - - - - - - - - <_numPoses> - <_blendMode> - <_streamIndices expr="new Map()"> - - - - - new Map() - - <_useNormals expr="new Map()"> - - - - - new Map() - - <_useTangents expr="new Map()"> - - - - - new Map() - - <_uploadNormals> - <_uploadTangents> - - - * Returns the number of poses made available at once to the GPU animation code. - - - - * Returns the active blend mode of the vertex animator object. - - - - * Returns whether or not normal data is used in last set GPU pass of the vertex shader. - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - * Generates the vertex AGAL code for absolute blending. - - - - - - - - - * Generates the vertex AGAL code for additive blending. - - - - - - - - { blendMode : "absolute", numPoses : 2 } - VertexAnimationSet object. - * - * @param numPoses The number of poses made available at once to the GPU animation code. - * @param blendMode Optional value for setting the animation mode of the vertex animator object. - * - * @see away3d.animators.data.VertexAnimationMode]]> - - * The animation data set used by vertex-based animators, containing vertex animation state data. - * - * @see away3d.animators.VertexAnimator - - - - - - <_vertexAnimationSet> - <_poses expr="new Vector<Geometry>()"> - - ()]]> - - <_weights expr="Vector.ofArray([1, 0, 0, 0.0])"> - - Vector.ofArray([1, 0, 0, 0.0]) - - <_numPoses> - <_blendMode> - <_activeVertexState> - - - * @inheritDoc - - - - - - - - - { offset : null, transition : null } - * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame. - * @param sequenceName The name of the clip to be played. - - - - - - - * @inheritDoc - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu. - * Needs to be called if gpu code is potentially required. - - - - - - - VertexAnimator object. - * - * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.]]> - - * Provides an interface for assigning vertex-based animation data sets to mesh-based entity objects - * and controlling the various available states of animation through an interative playhead that can be - * automatically updated or manually triggered. - - - - - - - - - - - - - - <_fragmentTempCache> - <_vertexTempCache> - <_varyingCache> - <_fragmentConstantsCache> - <_vertexConstantsCache> - <_textureCache> - <_vertexAttributesCache> - <_vertexConstantOffset> - <_vertexAttributesOffset> - <_varyingsOffset> - <_fragmentConstantOffset> - <_fragmentOutputRegister> - <_vertexOutputRegister> - <_numUsedVertexConstants> - <_numUsedFragmentConstants> - <_numUsedStreams> - <_numUsedTextures> - <_numUsedVaryings> - <_profile> - - - * Resets all registers. - - - - * Disposes all resources used. - - - - - - - - * Marks a fragment temporary register as used, so it cannot be retrieved. The register won't be able to be used until removeUsage - * has been called usageCount times again. - * @param register The register to mark as used. - * @param usageCount The amount of usages to add. - - - - - - - * Removes a usage from a fragment temporary register. When usages reach 0, the register is freed again. - * @param register The register for which to remove a usage. - - - - - - - - * Marks a vertex temporary register as used, so it cannot be retrieved. The register won't be able to be used - * until removeUsage has been called usageCount times again. - * @param register The register to mark as used. - * @param usageCount The amount of usages to add. - - - - - - - * Removes a usage from a vertex temporary register. When usages reach 0, the register is freed again. - * @param register The register for which to remove a usage. - - - - * Retrieve an entire fragment temporary register that's still available. The register won't be able to be used until removeUsage - * has been called usageCount times again. - - - - * Retrieve a single component from a fragment temporary register that's still available. - - - - * Retrieve an available varying register - - - - * Retrieve an available fragment constant register - - - - * Retrieve an available vertex constant register - - - - * Retrieve an entire vertex temporary register that's still available. - - - - * Retrieve a single component from a vertex temporary register that's still available. - - - - * Retrieve an available vertex attribute register - - - - * Retrieve an available texture register - - - - * Indicates the start index from which to retrieve vertex constants. - - - - - - - - * Indicates the start index from which to retrieve vertex attributes. - - - - - - - - * Indicates the start index from which to retrieve varying registers. - - - - - - - - * Indicates the start index from which to retrieve fragment constants. - - - - - - - - * The fragment output register. - - - - * The amount of used vertex constant registers. - - - - * The amount of used fragment constant registers. - - - - * The amount of used vertex streams. - - - - * The amount of used texture slots. - - - - * The amount of used varying registers. - - - - - - - * Create a new ShaderRegisterCache object. - * - * @param profile The compatibility profile used by the renderer. - - * ShaderRegister Cache provides the usage management system for all registers during shading compilation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new Map() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - ()]]> - - <_numVertexConstant> - <_numFragmentConstant> - - - - - - - - - - - - - { w : 0, z : 0, y : 0, x : 0 } - - - - - - - - - - - - - - - - - - - - - { w : 0, z : 0, y : 0, x : 0 } - - - - - - * ... - - - - - - - <_vertexData> - <_vertexBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_bufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_bufferDirty expr="new Vector<Bool>(8)"> - - (8)]]> - - <_numVertices> - <_totalLenOfOneVertex> - - - 0 - - - - Math.NEGATIVE_INFINITY - - - - ()]]> - - - - - - - - - - - - - - - - - - - - * ... - - - - - - <_color> - <_life> - - - - - - - - - - - - * The name of the joint to which the pose is associated - - - - new Quaternion() - * The rotation of the pose stored as a quaternion - - - - new Vector3D() - * The translation of the pose - - - - - - - { target : null } - * Converts the transformation to a Matrix3D representation. - * - * @param target An optional target matrix to store the transformation. If not provided, it will create a new instance. - * @return The transformation matrix of the pose. - - - - - - - * Copies the transformation data from a source pose object into the existing pose object. - * - * @param pose The source pose to copy from. - - - * Contains transformation data for a skeleton joint, used for skeleton animation. - * - * @see away3d.animation.data.Skeleton - * @see away3d.animation.data.SkeletonJoint - * - * todo: support (uniform) scale - - - - - - - - - - - - - - - - - - - * ... - - - - - - * The index of the current particle being set. - - - - * The total number of particles being processed by the particle animation set. - - - - * The start time of the particle. - - - - useDuration are enabled in the constructor. - * - * @see away3d.animators.ParticleAnimationSet]]> - - - - useLooping and useDelay are enabled in the constructor. - * - * @see away3d.animators.ParticleAnimationSet]]> - - - - - - - new Map() - - - * Dynamic class for holding the local properties of a particle, used for processing the static properties - * of particles in the particle animation set before beginning upload to the GPU. - - - - - - 0 - * Mode that defines the particle node as acting on global properties (ie. the properties set in the node constructor or the corresponding animation state). - - - - 1 - * Mode that defines the particle node as acting on local static properties (ie. the properties of particles set in the initialising function on the animation set). - - - - 2 - * Mode that defines the particle node as acting on local dynamic properties (ie. the properties of the particles set in the corresponding animation state). - - * Options for setting the properties mode of a particle animation node. - - - - - - - - - * A flat list of joint objects that comprise the skeleton. Every joint except for the root has a parentIndex - * property that is an index into this list. - * A child joint should always have a higher index than its parent. - - - - * The total number of joints in the skeleton. - - - - - - - * Returns the joint object in the skeleton with the given name, otherwise returns a null object. - * - * @param jointName The name of the joint object to be found. - * @return The joint object with the given name. - * - * @see #joints - - - - - - - * Returns the joint index, given the joint name. -1 is returned if the joint name is not found. - * - * @param jointName The name of the joint object to be found. - * @return The index of the joint object in the joints vector. - * - * @see #joints - - - - * @inheritDoc - - - - * @inheritDoc - - - - Skeleton object]]> - - * A Skeleton object is a hierarchical grouping of joint objects that can be used for skeletal animation. - * - * @see away3d.animators.data.SkeletonJoint - - - - - - -1 - * The index of the parent joint in the skeleton's joints vector. - * - * @see away3d.animators.data.Skeleton#joints - - - - * The name of the joint - - - - * The inverse bind pose matrix, as raw data, used to transform vertices to bind joint space in preparation for transformation using the joint matrix. - - - - SkeletonJoint object]]> - - * A value obect representing a single joint in a skeleton object. - * - * @see away3d.animators.data.Skeleton - - - - - - - - - - * A flat list of pose objects that comprise the skeleton pose. The pose indices correspond to the target skeleton's joint indices. - * - * @see away3d.animators.data.Skeleton#joints - - - - * The total number of joint poses in the skeleton pose. - - - - * @inheritDoc - - - - - - - * Returns the joint pose object with the given joint name, otherwise returns a null object. - * - * @param jointName The name of the joint object whose pose is to be found. - * @return The pose object with the given joint name. - - - - - - - * Returns the pose index, given the joint name. -1 is returned if the joint name is not found in the pose. - * - * @param The name of the joint object whose pose is to be found. - * @return The index of the pose object in the jointPoses vector. - * - * @see #jointPoses - - - - SkeletonPose object, with a dulpicate of its component joint poses. - * - * @return SkeletonPose]]> - - - - * @inheritDoc - - - - SkeletonPose object.]]> - - jointPoses vector object corresponds to a skeleton's joints vector object, however, there is no - * reference to a skeleton's instance, since several skeletons can be influenced by the same pose (eg: animation - * clips are added to any animator with a valid skeleton) - * - * @see away3d.animators.data.Skeleton - * @see away3d.animators.data.JointPose]]> - - - - - - * The u-component offset of the spritesheet frame. - - - - * The v-component offset of the spritesheet frame. - - - - * The u-component scale of the spritesheet frame. - - - - * The v-component scale of the spritesheet frame. - - - - * The mapID, zero based, if the animation is spreaded over more bitmapData's - - - - - - - - - - - { mapID : 0, scaleV : 1, scaleU : 1, offsetV : 0, offsetU : 0 } - SpriteSheetAnimationFrame object. - * - * @param offsetU The u-component offset of the spritesheet frame. - * @param offsetV The v-component offset of the spritesheet frame. - * @param scaleU The u-component scale of the spritesheet frame. - * @param scaleV The v-component scale of the spritesheet frame. - * @param mapID The v-component scale of the spritesheet frame.]]> - - SpriteSheetClipNode object. - * - * @see away3d.animators.nodes.SpriteSheetClipNode]]> - - - - - - * The u-component offset of the UV animation frame. - - - - * The v-component offset of the UV animation frame. - - - - * The u-component scale of the UV animation frame. - - - - * The v-component scale of the UV animation frame. - - - - * The rotation value (in degrees) of the UV animation frame. - - - - - - - - - - - { rotation : 0, scaleV : 1, scaleU : 1, offsetV : 0, offsetU : 0 } - UVAnimationFrame object. - * - * @param offsetU The u-component offset of the UV animation frame. - * @param offsetV The v-component offset of the UV animation frame. - * @param scaleU The u-component scale of the UV animation frame. - * @param scaleV The v-component scale of the UV animation frame. - * @param rotation The rotation value (in degrees) of the UV animation frame.]]> - - UVClipNode object. - * - * @see away3d.animators.nodes.UVClipNode]]> - - - - - - "additive" - * Animation mode that adds all outputs from active vertex animation state to form the current vertex animation pose. - - - - "absolute" - * Animation mode that picks the output from a single vertex animation state to form the current vertex animation pose. - - * Options for setting the animation mode of a vertex animator object. - * - * @see away3d.animators.VertexAnimator - - - - - - - - - - - - <_stateConstructor> - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - AnimationNodeBase object.]]> - - * Provides an abstract base class for nodes in an animation blend tree. - - - - - - - - - - <_looping expr="true"> - - true - - <_totalDuration expr="0"> - - 0 - - <_lastFrame> - <_stitchDirty expr="true"> - - true - - <_stitchFinalFrame expr="false"> - - false - - <_numFrames expr="0"> - - 0 - - <_durations expr="new Vector<UInt>()"> - - ()]]> - - <_totalDelta expr="new Vector3D()"> - - new Vector3D() - - - - true - - - - * Determines whether the contents of the animation node have looping characteristics enabled. - - - - - - - - * Defines if looping content blends the final frame of animation data with the first (true) or works on the - * assumption that both first and last frames are identical (false). Defaults to false. - - - - - - - - - - - * Returns a vector of time values representing the duration (in milliseconds) of each animation frame in the clip. - - - - * Updates the node's final frame stitch state. - * - * @see #stitchFinalFrame - - - - AnimationClipNodeBase object.]]> - - * Provides an abstract base class for nodes with time-based animation data in an animation blend tree. - - - - - - - - - - - - - - - - - - - * Returns the current SpriteSheetAnimationFrame of animation in the clip based on the internal playhead position. - - - - * Returns the current frame number. - - * Provides an interface for animation node classes that hold animation data for use in the SpriteSheetAnimator class. - * - * @see away3d.animators.SpriteSheetAnimator - - - - - - "Global" - - - - "LocalStatic" - - - - "LocalDynamic" - - - - [GLOBAL, LOCAL_STATIC, LOCAL_DYNAMIC] - - - - - - - - * - * @param particleNodeClass - class of ParticleNodeBase child e.g ParticleBillboardNode, ParticleFollowNode... - * @param particleNodeMode - mode of particle node ParticlePropertiesMode.GLOBAL, ParticlePropertiesMode.LOCAL_DYNAMIC or ParticlePropertiesMode.LOCAL_STATIC - * @return particle node name - - - - - - - - - - <_mode> - <_priority> - <_dataLength expr="3"> - - 3 - - <_oneData> - - - away3d - - - - * Returns the property mode of the particle animation node. Typically set in the node constructor - * - * @see away3d.animators.data.ParticlePropertiesMode - - - - * Returns the priority of the particle animation node, used to order the agal generated in a particle animation set. Set automatically on instantiation. - * - * @see away3d.animators.ParticleAnimationSet - * @see #getAGALVertexCode - - - - LOCAL_STATIC mode. Used to generate the local static data of the particle animation set. - * - * @see away3d.animators.ParticleAnimationSet - * @see #getAGALVertexCode]]> - - - - * Returns the generated data vector of the node after one particle pass during the generation of all local static data of the particle animation set. - * - * @see away3d.animators.ParticleAnimationSet - * @see #generatePropertyOfOneParticle - - - - - - - - * Returns the AGAL code of the particle animation node for use in the vertex shader. - - - - - - - - * Returns the AGAL code of the particle animation node for use in the fragment shader. - - - - - - - - * Returns the AGAL code of the particle animation node for use in the fragment shader when UV coordinates are required. - - - - - - - away3d - * Called internally by the particle animation set when assigning the set of static properties originally defined by the initParticleFunc of the set. - * - * @see away3d.animators.ParticleAnimationSet#initParticleFunc - - - - - - - away3d - * Called internally by the particle animation set when determining the requirements of the particle animation node AGAL. - - - - - - - - - - { priority : 1 } - ParticleNodeBase object. - * - * @param name Defines the generic name of the particle animation node. - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param dataLength Defines the length of the data used by the node when in LOCAL_STATIC mode. - * @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.]]> - - * Provides an abstract base class for particle animation nodes. - - - - - - - - 0 - away3d - - @private - - - - "AccelerationVector3D" - Vector3D object representing the direction of acceleration on the particle.]]> - - <_acceleration> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { acceleration : null } - ParticleAccelerationNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.]]> - - * A particle animation node used to apply a constant acceleration vector to the motion of a particle. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - "BezierControlVector3D" - Vector3D object representing the control point position (0, 1, 2) of the curve.]]> - - - - "BezierEndVector3D" - Vector3D object representing the end point position (0, 1, 2) of the curve.]]> - - <_controlPoint> - - away3d - @private - - <_endPoint> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - { endPoint : null, controlPoint : null } - ParticleBezierCurveNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] controlPoint Defines the default control point of the node, used when in global mode. - * @param [optional] endPoint Defines the default end point of the node, used when in global mode.]]> - - * A particle animation node used to control the position of a particle over time along a bezier curve. - - - - - - - 0 - away3d - - @private - - <_billboardAxis> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - { billboardAxis : null } - ParticleBillboardNode]]> - - * A particle animation node that controls the rotation of a particle to always face the camera. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - - 2 - away3d - - @private - - - - - 3 - away3d - - @private - - - - - 4 - away3d - - @private - - - - "ColorStartColorTransform" - ColorTransform object representing the start color transform applied to the particle.]]> - - - - "ColorEndColorTransform" - ColorTransform object representing the end color transform applied to the particle.]]> - - <_usesMultiplier> - - away3d - @private - - <_usesOffset> - - away3d - @private - - <_usesCycle> - - away3d - @private - - <_usesPhase> - - away3d - @private - - <_startColor> - - away3d - @private - - <_endColor> - - away3d - @private - - <_cycleDuration> - - away3d - @private - - <_cyclePhase> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - { cyclePhase : 0, cycleDuration : 1, endColor : null, startColor : null, usesPhase : false, usesCycle : false, usesOffset : true, usesMultiplier : true } - ParticleColorNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] usesMultiplier Defines whether the node uses multiplier data in the shader for its color transformations. Defaults to true. - * @param [optional] usesOffset Defines whether the node uses offset data in the shader for its color transformations. Defaults to true. - * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of the animation independent of particle duration. Defaults to false. - * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false. - * @param [optional] startColor Defines the default start color transform of the node, when in global mode. - * @param [optional] endColor Defines the default end color transform of the node, when in global mode. - * @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - * @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.]]> - - * A particle animation node used to control the color variation of a particle over time. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - <_usesPosition> - - away3d - @private - - <_usesRotation> - - away3d - @private - - <_smooth> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - { smooth : false, usesRotation : true, usesPosition : true } - ParticleFollowNode - * - * @param [optional] usesPosition Defines wehether the individual particle reacts to the position of the target. - * @param [optional] usesRotation Defines wehether the individual particle reacts to the rotation of the target. - * @param [optional] smooth Defines wehether the state calculate the interpolated value.]]> - - * A particle animation node used to create a follow behaviour on a particle system. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - "ColorInitialColorTransform" - ColorTransform object representing the color transform applied to the particle.]]> - - <_usesMultiplier> - - away3d - @private - - <_usesOffset> - - away3d - @private - - <_initialColor> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - { initialColor : null, usesOffset : false, usesMultiplier : true } - - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - "OrbitVector3D" - Vector3D object representing the radius (x), cycle speed (y) and cycle phase (z) of the motion on the particle.]]> - - <_usesEulers> - - away3d - @private - - <_usesCycle> - - away3d - @private - - <_usesPhase> - - away3d - @private - - <_radius> - - away3d - @private - - <_cycleDuration> - - away3d - @private - - <_cyclePhase> - - away3d - @private - - <_eulers> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - - - { eulers : null, cyclePhase : 0, cycleDuration : 1, radius : 100, usesPhase : false, usesCycle : false, usesEulers : true } - ParticleOrbitNode object. - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] usesEulers Defines whether the node uses the eulers property in the shader to calculate a rotation on the orbit. Defaults to true. - * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of the orbit independent of particle duration. Defaults to false. - * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false. - * @param [optional] radius Defines the radius of the orbit when in global mode. Defaults to 100. - * @param [optional] cycleDuration Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - * @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0. - * @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.]]> - - * A particle animation node used to control the position of a particle over time around a circular orbit. - - - - - - - 0 - away3d - - @private - - - - "OscillatorVector3D" - Vector3D object representing the axis (x,y,z) and cycle speed (w) of the motion on the particle.]]> - - <_oscillator> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { oscillator : null } - ParticleOscillatorNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.]]> - - * A particle animation node used to control the position of a particle over time using simple harmonic motion. - - - - - - - 0 - away3d - - @private - - - - "PositionVector3D" - Vector3D object representing position of the particle.]]> - - <_position> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { position : null } - ParticlePositionNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.]]> - - * A particle animation node used to set the starting position of a particle. - - - - - - - 0 - away3d - - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - ParticleBillboardNode]]> - - * A particle animation node used to control the rotation of a particle to match its heading vector. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - "RotateToPositionVector3D" - Vector3D object representing the position that the particle must face.]]> - - <_position> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { position : null } - ParticleRotateToPositionNode]]> - - * A particle animation node used to control the rotation of a particle to face to a position - - - - - - - 0 - away3d - - @private - - - - "RotationalVelocityVector3D" - Vector3D object representing the rotational velocity around an axis of the particle.]]> - - <_rotationalVelocity> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { rotationalVelocity : null } - ParticleRotationalVelocityNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.]]> - - * A particle animation node used to set the starting rotational velocity of a particle. - - - - - - - 0 - away3d - - @private - - - - "ScaleVector3D" - Vector3D representing the min scale (x), max scale(y), optional cycle speed (z) and phase offset (w) applied to the particle.]]> - - <_usesCycle> - - away3d - @private - - <_usesPhase> - - away3d - @private - - <_minScale> - - away3d - @private - - <_maxScale> - - away3d - @private - - <_cycleDuration> - - away3d - @private - - <_cyclePhase> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - - { cyclePhase : 0, cycleDuration : 1, maxScale : 1, minScale : 1 } - ParticleScaleNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] usesCycle Defines whether the node uses the cycleDuration property in the shader to calculate the period of animation independent of particle duration. Defaults to false. - * @param [optional] usesPhase Defines whether the node uses the cyclePhase property in the shader to calculate a starting offset to the animation cycle. Defaults to false. - * @param [optional] minScale Defines the default min scale transform of the node, when in global mode. Defaults to 1. - * @param [optional] maxScale Defines the default max color transform of the node, when in global mode. Defaults to 1. - * @param [optional] cycleDuration Defines the default duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - * @param [optional] cyclePhase Defines the default phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.]]> - - * A particle animation node used to control the scale variation of a particle over time. - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - - 2 - away3d - - @private - - <_usesMultiplier> - - away3d - @private - - <_usesOffset> - - away3d - @private - - <_startColor> - - away3d - @private - - <_endColor> - - away3d - @private - - <_numSegmentPoint> - - away3d - @private - - <_segmentPoints> - - away3d - @private - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - 0 - away3d - - @private - - <_startScale> - - away3d - @private - - <_endScale> - - away3d - @private - - <_numSegmentPoint> - - away3d - @private - - <_segmentScales> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - - - - . the x,y,z present the scaleX,scaleY,scaleX, and w present the life]]> - - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - - - "UVVector3D" - Vector3D representing the cycleDuration (x), optional phaseTime (y).]]> - - - - - <_usesCycle> - - away3d - @private - - <_usesPhase> - - away3d - @private - - <_totalFrames> - - away3d - @private - - <_numColumns> - - away3d - @private - - <_numRows> - - away3d - @private - - <_cycleDuration> - - away3d - @private - - <_cyclePhase> - - away3d - @private - - - - * Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. Read only. - - - - * Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. Read only. - - - - * Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. Read only. - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - - - { totalFrames : -1, cyclePhase : 0, cycleDuration : 1, numRows : 1, numColumns : 1 } - ParticleSpriteSheetNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] numColumns Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. - * @param [optional] numRows Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. - * @param [optional] cycleDuration Defines the default cycle duration in seconds, when in global mode. Defaults to 1. - * @param [optional] cyclePhase Defines the default cycle phase, when in global mode. Defaults to 0. - * @param [optional] totalFrames Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. - * @param [optional] looping Defines whether the spritesheet animation is set to loop indefinitely. Defaults to true.]]> - - repeat property on the material has to be set to true.]]> - - - - - - - 0 - away3d - - @private - - - - - 1 - away3d - - @private - - <_usesDuration> - - away3d - @private - - <_usesDelay> - - away3d - @private - - <_usesLooping> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - { usesDelay : false, usesLooping : false, usesDuration : false } - ParticleTimeNode - * - * @param [optional] usesDuration Defines whether the node uses the duration data in the static properties function to determine how long a particle is visible for. Defaults to false. - * @param [optional] usesDelay Defines whether the node uses the delay data in the static properties function to determine how long a particle is hidden for. Defaults to false. Requires usesDuration to be true. - * @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime, duration and delay data in the static properties function. Defaults to false. Requires usesLooping to be true.]]> - - * A particle animation node used as the base node for timekeeping inside a particle. Automatically added to a particle animation set on instatiation. - - - - - - - - 0 - away3d - - @private - - - - 1 - * Used to set the time node into global property mode. - - - - "x" - * - - - - "y" - * - - - - - <_uvData> - - away3d - @private - - <_cycle> - <_scale> - <_axis> - - - * - - - - - - - - * - - - - - - - - * - - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - { axis : "x", scale : 1, cycle : 1 } - ParticleTimeNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] cycle Defines whether the time track is in loop mode. Defaults to false. - * @param [optional] scale Defines whether the time track is in loop mode. Defaults to false. - * @param [optional] axis Defines whether the time track is in loop mode. Defaults to false.]]> - - * A particle animation node used to control the UV offset and scale of a particle over time. - - - - - - - 0 - away3d - - @private - - - - "VelocityVector3D" - Vector3D object representing the direction of movement on the particle.]]> - - <_velocity> - - away3d - @private - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { velocity : null } - ParticleVelocityNode - * - * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node. - * @param [optional] velocity Defines the default velocity vector of the node, used when in global mode.]]> - - * A particle animation node used to set the starting velocity of a particle. - - - - - - * Defines input node A to use for the blended output. - - - - * Defines input node B to use for the blended output. - - - - - - - * @inheritDoc - - - - SkeletonBinaryLERPNode object.]]> - - * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose. - - - - - <_frames expr="new Vector<SkeletonPose>()"> - - ()]]> - - - - false - * Determines whether to use SLERP equations (true) or LERP equations (false) in the calculation - * of the output skeleton pose. Defaults to false. - - - - * Returns a vector of skeleton poses representing the pose of each animation frame in the clip. - - - - - - - - * Adds a skeleton pose frame to the internal timeline of the animation node. - * - * @param skeletonPose The skeleton pose object to add to the timeline of the node. - * @param duration The specified duration of the frame in milliseconds. - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - SkeletonClipNode object.]]> - - * A skeleton animation node containing time-based animation data as individual skeleton poses. - - - - - - - * Defines a base input node to use for the blended output. - - - - * Defines a difference input node to use for the blended output. - - - - - - - * @inheritDoc - - - - SkeletonAdditiveNode object.]]> - - * A skeleton animation node that uses a difference input pose with a base input pose to blend a linearly interpolated output of a skeleton pose. - - - - - - * Defines the forward configured input node to use for the blended output. - - - - * Defines the backwards configured input node to use for the blended output. - - - - * Defines the left configured input node to use for the blended output. - - - - * Defines the right configured input node to use for the blended output. - - - - - - - * @inheritDoc - - - * A skeleton animation node that uses four directional input poses with an input direction to blend a linearly interpolated output of a skeleton pose. - - - - - <_inputs public="1" expr="new Vector<AnimationNodeBase>()"> - - ()]]> - - <_numInputs> - - - - - - - * Returns an integer representing the input index of the given skeleton animation node. - * - * @param input The skeleton animation node for with the input index is requested. - - - - - - - * Returns the skeleton animation node object that resides at the given input index. - * - * @param index The input index for which the skeleton animation node is requested. - - - - - - - * Adds a new skeleton animation node input to the animation node. - - - - - - - * @inheritDoc - - - - SkeletonNaryLERPNode object.]]> - - * A skeleton animation node that uses an n-dimensional array of animation node inputs to blend a lineraly interpolated output of a skeleton pose. - - - - - <_frames expr="new Vector<SpriteSheetAnimationFrame>()"> - - ()]]> - - - - * Returns a vector of SpriteSheetAnimationFrame representing the uv values of each animation frame in the clip. - - - - - - - - * Adds a SpriteSheetAnimationFrame object to the internal timeline of the animation node. - * - * @param spriteSheetAnimationFrame The frame object to add to the timeline of the node. - * @param duration The specified duration of the frame in milliseconds. - - - - SpriteSheetClipNode object.]]> - - * A SpriteSheetClipNode containing time-based animation data as individual sprite sheet animation frames. - - - - - - <_frames expr="new Vector<UVAnimationFrame>()"> - - ()]]> - - - - * Returns a vector of UV frames representing the uv values of each animation frame in the clip. - - - - - - - - * Adds a UV frame object to the internal timeline of the animation node. - * - * @param uvFrame The uv frame object to add to the timeline of the node. - * @param duration The specified duration of the frame in milliseconds. - - - - * @inheritDoc - - - - UVClipNode object.]]> - - * A uv animation node containing time-based animation data as individual uv animation frames. - - - - - - <_frames expr="new Vector<Geometry>()"> - - ()]]> - - <_translations expr="new Vector<Vector3D>()"> - - ()]]> - - - - * Returns a vector of geometry frames representing the vertex values of each animation frame in the clip. - - - - - - - - - { translation : null } - * Adds a geometry object to the internal timeline of the animation node. - * - * @param geometry The geometry object to add to the timeline of the node. - * @param duration The specified duration of the frame in milliseconds. - * @param translation The absolute translation of the frame, used in root delta calculations for mesh movement. - - - - * @inheritDoc - - - - VertexClipNode object.]]> - - * A vertex animation node containing time-based animation data as individual geometry obejcts. - - - - - - - - - - - - - - - - - - - - - - - - - * Sets the animation phase of the node. - * - * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end. - - - - - - <_animationNode> - <_rootDelta expr="new Vector3D()"> - - new Vector3D() - - <_positionDeltaDirty expr="true"> - - true - - <_time expr="0"> - - 0 - - <_startTime expr="0"> - - 0 - - <_animator> - - - * Returns a 3d vector representing the translation delta of the animating entity for the current timestep of animation - - - - - - - * Resets the start time of the node to a new value. - * - * @param startTime The absolute start time (in milliseconds) of the node's starting time. - - - - - - - * Updates the configuration of the node to its current state. - * - * @param time The absolute time (in milliseconds) of the animator's play head position. - * - * @see away3d.animators.AnimatorBase#update() - - - - - - - * Sets the animation phase of the node. - * - * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end. - - - - - - - * Updates the node's internal playhead position. - * - * @param time The local time (in milliseconds) of the node's playhead position. - - - - * Updates the node's root delta position - - - - - - - - - - - - - <_animationClipNode> - <_animationStatePlaybackComplete> - <_blendWeight expr="0"> - - 0 - - <_currentFrame> - <_nextFrame> - <_oldFrame> - <_timeDir> - <_framesDirty expr="true"> - - true - - - - * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position - * between the current frame (0) and next frame (1) of the animation. - * - * @see #currentFrame - * @see #nextFrame - - - - * Returns the current frame of animation in the clip based on the internal playhead position. - - - - * Returns the next frame of animation in the clip based on the internal playhead position. - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * Updates the nodes internal playhead to determine the current and next animation frame, and the blendWeight between the two. - * - * @see #currentFrame - * @see #nextFrame - * @see #blendWeight - - - - - - - - * - - - - - - - - - * Returns the output skeleton pose of the animation node. - - - - - - - - - - - - - - - - - - - - - - * Returns the current SpriteSheetAnimationFrame of animation in the clip based on the internal playhead position. - - - - * Returns the current frame number. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Returns the current UV frame of animation in the clip based on the internal playhead position. - - - - * Returns the next UV frame of animation in the clip based on the internal playhead position. - - - - * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position - * between the current uv frame (0) and next uv frame (1) of the animation. - - * Provides an interface for animation node classes that hold animation data for use in the UV animator class. - * - * @see away3d.animators.UVAnimator - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Returns the current geometry frame of animation in the clip based on the internal playhead position. - - - - * Returns the current geometry frame of animation in the clip based on the internal playhead position. - - - - * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position - * between the current geometry frame (0) and next geometry frame (1) of the animation. - - * Provides an interface for animation node classes that hold animation data for use in the Vertex animator class. - * - * @see away3d.animators.VertexAnimator - - - - - - <_particleNode> - <_dynamicProperties expr="new Vector<Vector3D>()"> - - ()]]> - - <_dynamicPropertiesDirty expr="new Map()"> - - - - - new Map() - - <_needUpdateTime> - - - - - - - - - - - - - - - - - - - - - { needUpdateTime : false } - - * ... - - - - - - <_particleAccelerationNode> - <_acceleration> - <_halfAcceleration> - - - * Defines the acceleration vector of the state, used when in global mode. - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * ... - - - - - - - <_particleBezierCurveNode> - <_controlPoint> - <_endPoint> - - - * Defines the default control point of the node, used when in global mode. - - - - - - - - * Defines the default end point of the node, used when in global mode. - - - - - - - - - - - - - - - - - - - * ... - - - - - - <_matrix expr="new Matrix3D()"> - - new Matrix3D() - - <_billboardAxis> - - - - - - - - - - - * Defines the billboard axis. - - - - - - - - - - - - * - - * ... - - - - - - - - - <_particleColorNode> - <_usesMultiplier> - <_usesOffset> - <_usesCycle> - <_usesPhase> - <_startColor> - <_endColor> - <_cycleDuration> - <_cyclePhase> - <_cycleData> - <_startMultiplierData> - <_deltaMultiplierData> - <_startOffsetData> - <_deltaOffsetData> - - - * Defines the start color transform of the state, when in global mode. - - - - - - - - * Defines the end color transform of the state, when in global mode. - - - - - - - - * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - - - - - - - - * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0. - - - - - - - - - - - - - - - - - - - - * ... - * @author ... - - - - - - - <_particleFollowNode> - <_followTarget> - <_targetPos expr="new Vector3D()"> - - new Vector3D() - - <_targetEuler expr="new Vector3D()"> - - new Vector3D() - - <_prePos> - <_preEuler> - <_smooth> - - - new Vector3D() - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - - * ... - - - - - - <_particleInitialColorNode> - <_usesMultiplier> - <_usesOffset> - <_initialColor> - <_multiplierData> - <_offsetData> - - - * Defines the initial color transform of the state, when in global mode. - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - <_particleOrbitNode> - <_usesEulers> - <_usesCycle> - <_usesPhase> - <_radius> - <_cycleDuration> - <_cyclePhase> - <_eulers> - <_orbitData> - <_eulersMatrix> - - - * Defines the radius of the orbit when in global mode. Defaults to 100. - - - - - - - - * Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - - - - - - - - * Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0. - - - - - - - - * Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode. - - - - - - - - - - - - - - - - - - - - * ... - - - - - - <_particleOscillatorNode> - <_oscillator> - <_oscillatorData> - - - * Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the state, used when in global mode. - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * ... - - - - - - <_particlePositionNode> - <_position> - - - * Defines the position of the particle when in global mode. Defaults to 0,0,0. - - - - - - - - * - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - * ... - * @author ... - - - - - <_matrix expr="new Matrix3D()"> - - new Matrix3D() - - - - - - - - - - - - - - - * ... - - - - - - <_particleRotateToPositionNode> - <_position> - <_matrix expr="new Matrix3D()"> - - new Matrix3D() - - <_offset> - - - * Defines the position of the point the particle will rotate to face when in global mode. Defaults to 0,0,0. - - - - - - - - - - - - - - - - - - - * ... - - - - - - <_particleRotationalVelocityNode> - <_rotationalVelocityData> - <_rotationalVelocity> - - - * Defines the default rotationalVelocity of the state, used when in global mode. - - - - - - - - * - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * ... - - - - - - - - - <_particleScaleNode> - <_usesCycle> - <_usesPhase> - <_minScale> - <_maxScale> - <_cycleDuration> - <_cyclePhase> - <_scaleData> - - - * Defines the end scale of the state, when in global mode. Defaults to 1. - - - - - - - - * Defines the end scale of the state, when in global mode. Defaults to 1. - - - - - - - - * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1. - - - - - - - - * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0. - - - - - - - - - - - - - - - - - - - - * ... - - - - - - - - - - - <_usesMultiplier> - <_usesOffset> - <_startColor> - <_endColor> - <_segmentPoints> - <_numSegmentPoint> - <_timeLifeData> - <_multiplierData> - <_offsetData> - - - * Defines the start color transform of the state, when in global mode. - - - - - - - - * Defines the end color transform of the state, when in global mode. - - - - - - - - * Defines the number of segments. - - - - * Defines the key points of color - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_startScale> - <_endScale> - <_segmentPoints> - <_numSegmentPoint> - <_scaleData> - - - * Defines the start scale of the state, when in global mode. - - - - - - - - * Defines the end scale of the state, when in global mode. - - - - - - - - * Defines the number of segments. - - - - * Defines the key points of Scale - - - - - - - - - - - - - - - - - - - - - - - - - - <_particleSpriteSheetNode> - <_usesCycle> - <_usesPhase> - <_totalFrames> - <_numColumns> - <_numRows> - <_cycleDuration> - <_cyclePhase> - <_spriteSheetData> - - - * Defines the cycle phase, when in global mode. Defaults to zero. - - - - - - - - * Defines the cycle duration in seconds, when in global mode. Defaults to 1. - - - - - - - - - - - - - - - - - - - - * ... - - - - - <_particleTimeNode> - - - - - - - - - - - - - - * ... - - - - - <_particleUVNode> - - - - - - - - - - - - - - * ... - - - - - - <_particleVelocityNode> - <_velocity> - - - * Defines the default velocity vector of the state, used when in global mode. - - - - - - - - * - - - - - - - - - - - - - - - - - - - * ... - - - - - - - <_blendWeight expr="0"> - - 0 - - <_skeletonAnimationNode> - <_skeletonPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_skeletonPoseDirty expr="true"> - - true - - <_inputA> - <_inputB> - - - * Defines a fractional value between 0 and 1 representing the blending ratio between inputA (0) and inputB (1), - * used to produce the skeleton pose output. - * - * @see inputA - * @see inputB - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Returns the current skeleton pose of the animation in the clip based on the internal playhead position. - - - - * @inheritDoc - - - - - - - * Updates the output skeleton pose of the node based on the blendWeight value between input nodes. - * - * @param skeleton The skeleton used by the animator requesting the ouput pose. - - - - - - - * - - - - - - - - <_rootPos expr="new Vector3D()"> - - new Vector3D() - - <_frames> - <_skeletonClipNode> - <_skeletonPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_skeletonPoseDirty expr="true"> - - true - - <_currentPose> - <_nextPose> - - - * Returns the current skeleton pose frame of animation in the clip based on the internal playhead position. - - - - * Returns the next skeleton pose frame of animation in the clip based on the internal playhead position. - - - - - - - * Returns the current skeleton pose of the animation in the clip based on the internal playhead position. - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * Updates the output skeleton pose of the node based on the internal playhead position. - * - * @param skeleton The skeleton used by the animator requesting the ouput pose. - - - - * @inheritDoc - - - - - - - * - - - - - - - * The x value of the quaternion. - - - - * The y value of the quaternion. - - - - * The z value of the quaternion. - - - - * The w value of the quaternion. - - - - * Returns the magnitude of the quaternion object. - - - - - - - - * Fills the quaternion object with the result from a multiplication of two quaternion objects. - * - * @param qa The first quaternion in the multiplication. - * @param qb The second quaternion in the multiplication. - - - - - - - - { target : null } - - - - - - - - * Fills the quaternion object with values representing the given rotation around a vector. - * - * @param axis The axis around which to rotate - * @param angle The angle in radians of the rotation. - - - - - - - - - * Spherically interpolates between two quaternions, providing an interpolation between rotations with constant angle change rate. - * @param qa The first quaternion to interpolate. - * @param qb The second quaternion to interpolate. - * @param t The interpolation weight, a value between 0 and 1. - - - - - - - - - * Linearly interpolates between two quaternions. - * @param qa The first quaternion to interpolate. - * @param qb The second quaternion to interpolate. - * @param t The interpolation weight, a value between 0 and 1. - - - - - - - - - * Fills the quaternion object with values representing the given euler rotation. - * - * @param ax The angle in radians of the rotation around the ax axis. - * @param ay The angle in radians of the rotation around the ay axis. - * @param az The angle in radians of the rotation around the az axis. - - - - - - - { target : null } - * Fills a target Vector3D object with the Euler angles that form the rotation represented by this quaternion. - * @param target An optional Vector3D object to contain the Euler angles. If not provided, a new object is created. - * @return The Vector3D containing the Euler angles. - - - - - - - { val : 1 } - * Normalises the quaternion object. - - - - * Used to trace the values of a quaternion. - * - * @return A string representation of the quaternion object. - - - - - - - { target : null } - * Converts the quaternion to a Matrix3D object representing an equivalent rotation. - * @param target An optional Matrix3D container to store the transformation in. If not provided, a new object is created. - * @return A Matrix3D object representing an equivalent rotation. - - - - - - - * Extracts a quaternion rotation matrix out of a given Matrix3D object. - * @param matrix The Matrix3D out of which the rotation will be extracted. - - - - - - - - { exclude4thRow : false } - - - - - * Clones the quaternion. - * @return An exact duplicate of the current Quaternion. - - - - - - - - { target : null } - * Rotates a point. - * @param vector The Vector3D object to be rotated. - * @param target An optional Vector3D object that will contain the rotated coordinates. If not provided, a new object will be created. - * @return A Vector3D object containing the rotated point. - - - - - - - * Copies the data from a quaternion into this instance. - * @param q The quaternion to copy from. - - - - - - - - - - { w : 1, z : 0, y : 0, x : 0 } - * Creates a new Quaternion object. - * @param x The x value of the quaternion. - * @param y The y value of the quaternion. - * @param z The z value of the quaternion. - * @param w The w value of the quaternion. - - * A Quaternion object which can be used to represent rotations. - - - - - - <_tempQuat expr="new Quaternion()" line="19" static="1"> - - new Quaternion() - - - <_blendWeight expr="0"> - - 0 - - <_skeletonAnimationNode> - <_skeletonPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_skeletonPoseDirty expr="true"> - - true - - <_baseInput> - <_differenceInput> - - - * Defines a fractional value between 0 and 1 representing the blending ratio between the base input (0) and difference input (1), - * used to produce the skeleton pose output. - * - * @see #baseInput - * @see #differenceInput - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Returns the current skeleton pose of the animation in the clip based on the internal playhead position. - - - - * @inheritDoc - - - - - - - * Updates the output skeleton pose of the node based on the blendWeight value between base input and difference input nodes. - * - * @param skeleton The skeleton used by the animator requesting the ouput pose. - - - - - - - * - - - - - - - <_skeletonAnimationNode> - <_skeletonPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_skeletonPoseDirty expr="true"> - - true - - <_inputA> - <_inputB> - <_blendWeight expr="0"> - - 0 - - <_direction expr="0"> - - 0 - - <_blendDirty expr="true"> - - true - - <_forward> - <_backward> - <_left> - <_right> - - - - - - * Defines the direction in degrees of the aniamtion between the forwards (0), right(90) backwards (180) and left(270) input nodes, - * used to produce the skeleton pose output. - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Returns the current skeleton pose of the animation in the clip based on the internal playhead position. - - - - * @inheritDoc - - - - - - - * Updates the output skeleton pose of the node based on the direction value between forward, backwards, left and right input nodes. - * - * @param skeleton The skeleton used by the animator requesting the ouput pose. - - - - away3d - * Updates the blend value for the animation output based on the direction value between forward, backwards, left and right input nodes. - * - * @private - - - - - - - * - - - - - - <_skeletonAnimationNode> - <_skeletonPose expr="new SkeletonPose()"> - - new SkeletonPose() - - <_skeletonPoseDirty expr="true"> - - true - - <_blendWeights expr="new Vector<Float>()"> - - ()]]> - - <_inputs expr="new Vector<ISkeletonAnimationState>()"> - - ()]]> - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Returns the current skeleton pose of the animation in the clip based on the internal playhead position. - - - - - - - * Returns the blend weight of the skeleton aniamtion node that resides at the given input index. - * - * @param index The input index for which the skeleton animation node blend weight is requested. - - - - - - - - * Sets the blend weight of the skeleton aniamtion node that resides at the given input index. - * - * @param index The input index on which the skeleton animation node blend weight is to be set. - * @param blendWeight The blend weight value to use for the given skeleton animation node index. - - - - * @inheritDoc - - - - - - - * Updates the output skeleton pose of the node based on the blend weight values given to the input nodes. - * - * @param skeleton The skeleton used by the animator requesting the ouput pose. - - - - - - - * - - - - - - - - - - - <_frames> - <_clipNode> - <_currentFrameID expr="0"> - - 0 - - <_reverse> - <_back> - <_backAndForth> - <_forcedFrame> - - - - - - - - - - - * @inheritDoc - - - - * returns current frame index of the animation. - * The index is zero based and counts from first frame of the defined animation. - - - - - - - - away3d - * returns the total frames for the current animation. - - - - * @inheritDoc - - - - - - - - - - - - - - <_frames> - <_uvClipNode> - <_currentUVFrame> - <_nextUVFrame> - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - <_frames> - <_vertexClipNode> - <_currentGeometry> - <_nextGeometry> - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * - - - - - - - - - - - - - - 0.5 - - - - - - - - - - - - - - - - - - - - CrossfadeTransitionNode object.]]> - - * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose. - - - - - <_crossfadeAnimationNode> - <_animationStateTransitionComplete> - - - - - - * @inheritDoc - - - - - - - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_controller> - - away3d - @private - - <_smallestNumber expr="0.0000000000000000000001"> - - 0.0000000000000000000001 - - <_transformDirty expr="true"> - - true - - <_positionDirty> - <_rotationDirty> - <_scaleDirty> - <_positionChanged> - <_rotationChanged> - <_scaleChanged> - <_rotationX expr="0"> - - 0 - - <_rotationY expr="0"> - - 0 - - <_rotationZ expr="0"> - - 0 - - <_eulers expr="new Vector3D()"> - - new Vector3D() - - <_flipY expr="new Matrix3D()"> - - new Matrix3D() - - <_listenToPositionChanged> - <_listenToRotationChanged> - <_listenToScaleChanged> - <_zOffset expr="0"> - - 0 - - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { useCapture : false } - - - - - - <_transform expr="new Matrix3D()"> - - new Matrix3D() - - <_scaleX expr="1"> - - 1 - - <_scaleY expr="1"> - - 1 - - <_scaleZ expr="1"> - - 1 - - <_x expr="0"> - - 0 - - <_y expr="0"> - - 0 - - <_z expr="0"> - - 0 - - <_pivotPoint expr="new Vector3D()"> - - new Vector3D() - - <_pivotZero expr="true"> - - true - - <_pos expr="new Vector3D()"> - - new Vector3D() - - <_rot expr="new Vector3D()"> - - new Vector3D() - - <_sca expr="new Vector3D()"> - - new Vector3D() - - <_transformComponents> - - - * An object that can contain any extra data. - - - - ObjectContainer3D.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - * Defines the scale of the 3d object along the x-axis, relative to local coordinates. - - - - - - - - * Defines the scale of the 3d object along the y-axis, relative to local coordinates. - - - - - - - - * Defines the scale of the 3d object along the z-axis, relative to local coordinates. - - - - - - - - Vector3D object containing euler angles for rotation around x, y and z axis.]]> - - - - - - - - ObjectContainer3D.]]> - - - - - - - - * Defines the local point around which the object rotates. - - - - - - - - ObjectContainer3D.]]> - - - - - - - - - - - { v : null } - ObjectContainer3D. - * @param v the destination Vector3D - * @return]]> - - - - * - - - - * - - - - * - - - - * - - - - * - - - - * - - - - - - - * Appends a uniform scale to the current transformation. - * @param value The amount by which to scale. - - - - - - - * Moves the 3d object forwards along it's local z axis - * - * @param distance The length of the movement - - - - - - - * Moves the 3d object backwards along it's local z axis - * - * @param distance The length of the movement - - - - - - - * Moves the 3d object backwards along it's local x axis - * - * @param distance The length of the movement - - - - - - - * Moves the 3d object forwards along it's local x axis - * - * @param distance The length of the movement - - - - - - - * Moves the 3d object forwards along it's local y axis - * - * @param distance The length of the movement - - - - - - - * Moves the 3d object backwards along it's local y axis - * - * @param distance The length of the movement - - - - - - - - - * Moves the 3d object directly to a point in space - * - * @param dx The amount of movement along the local x axis. - * @param dy The amount of movement along the local y axis. - * @param dz The amount of movement along the local z axis. - - - - - - - - - * Moves the local point around which the object rotates. - * - * @param dx The amount of movement along the local x axis. - * @param dy The amount of movement along the local y axis. - * @param dz The amount of movement along the local z axis. - - - - - - - - * Moves the 3d object along a vector by a defined length - * - * @param axis The vector defining the axis of movement - * @param distance The length of the movement - - - - - - - - * Moves the 3d object along a vector by a defined length - * - * @param axis The vector defining the axis of movement - * @param distance The length of the movement - - - - - - - * Rotates the 3d object around it's local x-axis - * - * @param angle The amount of rotation in degrees - - - - - - - * Rotates the 3d object around it's local y-axis - * - * @param angle The amount of rotation in degrees - - - - - - - * Rotates the 3d object around it's local z-axis - * - * @param angle The amount of rotation in degrees - - - - - - - - - - * Rotates the 3d object directly to a euler angle - * - * @param ax The angle in degrees of the rotation around the x axis. - * @param ay The angle in degrees of the rotation around the y axis. - * @param az The angle in degrees of the rotation around the z axis. - - - - - - - - * Rotates the 3d object around an axis by a defined angle - * - * @param axis The vector defining the axis of rotation - * @param angle The amount of rotation in degrees - - - - - - - - { upAxis : null } - ObjectContainer3D. - * - * @param target The vector defining the point to be looked at - * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred]]> - - - - * Cleans up any resources used by the current object. - - - - * @inheritDoc - - - - away3d - * Invalidates the transformation matrix, causing it to be updated upon the next request - - - - - - - - - - * Creates an Object3D object. - -
- * - * Standard Transform: - *
    - *
  • The standard order for transformation is [parent transform] * (Translate+Pivot) * (Rotate) * (-Pivot) * (Scale) * [child transform]
  • - *
  • This is the order of matrix multiplications, left-to-right.
  • - *
  • The order of transformation is right-to-left, however! - * (Scale) happens before (-Pivot) happens before (Rotate) happens before (Translate+Pivot) - * with no pivot, the above transform works out to [parent transform] * Translate * Rotate * Scale * [child transform] - * (Scale) happens before (Rotate) happens before (Translate)
  • - *
  • This is based on code in updateTransform and ObjectContainer3D.updateSceneTransform().
  • - *
  • Matrix3D prepend = operator on rhs - e.g. transform' = transform * rhs;
  • - *
  • Matrix3D append = operator on lhr - e.g. transform' = lhs * transform;
  • - *
- * - * To affect Scale: - *
    - *
  • set scaleX/Y/Z directly, or call scale(delta)
  • - *
- * - * To affect Pivot: - *
    - *
  • set pivotPoint directly, or call movePivot()
  • - *
- * - * To affect Rotate: - *
    - *
  • set rotationX/Y/Z individually (using degrees), set eulers [all 3 angles] (using radians), or call rotateTo()
  • - *
  • call pitch()/yaw()/roll()/rotate() to add an additional rotation *before* the current transform. - * rotationX/Y/Z will be reset based on these operations.
  • - *
- * - * To affect Translate (post-rotate translate): - * - *
    - *
  • set x/y/z/position or call moveTo().
  • - *
  • call translate(), which modifies x/y/z based on a delta vector.
  • - *
  • call moveForward()/moveBackward()/moveLeft()/moveRight()/moveUp()/moveDown()/translateLocal() to add an - * additional translate *before* the current transform. x/y/z will be reset based on these operations.
  • - *
]]>
-
- - - - - - - away3d - - - - away3d - - - - - - - - - - - - - - - - - - - <_ancestorsAllowMouseEnabled> - - away3d - @private - - <_isRoot> - - away3d - - <_scene> - <_parent> - <_sceneTransform expr="new Matrix3D()"> - - new Matrix3D() - - <_sceneTransformDirty expr="true"> - - true - - <_explicitPartition> - <_implicitPartition> - <_mouseEnabled> - <_sceneTransformChanged> - <_scenechanged> - <_children expr="new Vector<ObjectContainer3D>()"> - - ()]]> - - <_mouseChildren expr="true"> - - true - - <_oldScene> - <_inverseSceneTransform expr="new Matrix3D()"> - - new Matrix3D() - - <_inverseSceneTransformDirty expr="true"> - - true - - <_scenePosition expr="new Vector3D()"> - - new Vector3D() - - <_scenePositionDirty expr="true"> - - true - - <_explicitVisibility expr="true"> - - true - - <_implicitVisibility expr="true"> - - true - - <_listenToSceneTransformChanged> - <_listenToSceneChanged> - <_ignoreTransform expr="false"> - - false - - - - * Does not apply any transformations to this object. Allows static objects to be described in world coordinates without any matrix calculations. - - - - - - - - * @private - * The space partition used for this object, possibly inherited from its parent. - - - - - - - - away3d - @private - - - - - - - away3d - @private - - - - - - - * Indicates whether the IRenderable should trigger mouse events, and hence should be rendered for hit testing. - - - - - - - - * @inheritDoc - - - - * Invalidates the scene transformation matrix, causing it to be updated the next time it's requested. - - - - * Updates the scene transformation matrix. - - - - * - - - - - - - - * - - - - - - - - - * The global position of the ObjectContainer3D in the scene. The value of the return object should not be changed. - - - - * The minimum extremum of the object along the X-axis. - - - - * The minimum extremum of the object along the Y-axis. - - - - * The minimum extremum of the object along the Z-axis. - - - - * The maximum extremum of the object along the X-axis. - - - - * The maximum extremum of the object along the Y-axis. - - - - * The maximum extremum of the object along the Z-axis. - - - - * The space partition to be used by the object container and all its recursive children, unless it has its own - * space partition assigned. - - - - - - - - * The transformation matrix that transforms from model to world space. - - - - * A reference to the Scene3D object to which this object belongs. - - - - - - - - * The inverse scene transform object that transforms from world to model space. - - - - * The parent ObjectContainer3D to which this object's transformation is relative. - - - - - - - - - - - * Adds a child ObjectContainer3D to the current object. The child's transformation will become relative to the - * current object's transformation. - * @param child The object to be added as a child. - * @return A reference to the added child object. - - - - - - - * Adds an array of 3d objects to the scene as children of the container - * - * @param ...childarray An array of 3d objects to be added - - - - - - - * Removes a 3d object from the child array of the container - * - * @param child The 3d object to be removed - * @throws Error ObjectContainer3D.removeChild(null) - - - - - - - * Removes a 3d object from the child array of the container - * - * @param index Index of 3d object to be removed - - - - - - - - - - - - * Retrieves the child object at the given index. - * @param index The index of the object to be retrieved. - * @return The child object at the given index. - - - - * The amount of child objects of the ObjectContainer3D. - - - - - - - - { upAxis : null } - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - * Disposes the current ObjectContainer3D including all of its children. This is a merely a convenience method. - - - - * Clones this ObjectContainer3D instance along with all it's children, and - * returns the result (which will be a copy of this container, containing copies - * of all it's children.) - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { useCapture : false } - - - - * Creates a new ObjectContainer3D object. - - * ObjectContainer3D is the most basic scene graph node. It can contain other ObjectContainer3Ds. - * - * ObjectContainer3D can have its own scene partition assigned. However, when assigned to a different scene, - * it will loose any partition information, since partitions are tied to a scene. - - - - - - - - - <_refv> - <_driver> - <_reference> - <_sound> - <_paused> - <_playing> - - - * Defines the overall (master) volume of the 3D sound, after any - * positional adjustments to volume have been applied. This value can - * equally well be cotrolled by modifying the volume property on the - * driver used by this Sound3D instance. - * - * @see ISound3DDriver.volume - - - - - - - - * Defines a scale value used by the driver when adjusting sound - * intensity to simulate distance. The default number of 1000 means - * that sound volume will near the hearing threshold as the distance - * between listener and sound source approaches 1000 Away3D units. - * - * @see ISound3DDriver.scale - - - - - - - - * Returns a boolean indicating whether or not the sound is currently - * playing. - - - - * Returns a boolean indicating whether or not playback is currently - * paused. - - - - * Start (or resume, if paused) playback. - - - - * Pause playback. Resume using play(). - - - - * Stop and rewind sound file. Replay (from the beginning) using play(). - * To temporarily pause playback, allowing you to resume from the same point, - * use pause() instead. - * - * @see pause() - - - - * Alternate between pausing and resuming playback of this sound. If called - * while sound is paused (or stopped), this will resume playback. When - * called during playback, it will pause it. - - - - - - - * @internal - * When scene changes, mute if object was removed from scene. - - - - * @internal - * When scene transform changes, calculate the relative vector between the listener/reference object - * and the position of this sound source, and update the driver to use - * this as the reference vector. - - - - - - - - - - - - - - - - - - - { scale : 1000, volume : 1, driver : null } - mono
(single-channel, non-stereo) sound stream. - * @param reference The reference, or "listener" object, typically a camera. - * @param driver Sound3D driver to use when applying simulation effects. Defaults to SimplePanVolumeDriver. - * @param init [optional] An initialisation object for specifying default instance properties.]]> - - A sound source/emitter object that can be positioned in 3D space, and from which all audio - * playback will be transformed to simulate orientation.

- * - *

The Sound3D object works much in the same fashion as primitives, lights and cameras, in that - * it can be added to a scene and positioned therein. It is the main object, in the 3D sound API, - * which the programmer will interact with.

- * - *

Actual sound transformation is performed by a driver object, which is defined at the time of - * creation by the driver ini variable, the default being a simple pan/volume driver.

- * - * @see SimplePanVolumeDriver]]>
- - - - - - - - <_scale> - <_volume> - <_soundTransform> - <_emitter> - <_listener> - <_refv> - <_inv_ref_mtx> - <_r> - <_r2> - <_azimuth> - - - * updates the SoundTransform based on the emitter and listener. - - - - - - - * udpates the SoundTransform based on the vector representing the distance and - * angle between the emitter and listener. - * - * @param v Vector3D - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { scale : 1000, volume : 1, listener : null, emitter : null } - * Creates a new SoundTransform3D. - * @param emitter the ObjectContainer3D from which the sound originates. - * @param listener the ObjectContainer3D considered to be to position of the listener (usually, the camera) - * @param volume the maximum volume used. - * @param scale the distance that the sound covers. - * - - * SoundTransform3D is a convenience class that helps adjust a Soundtransform's volume and pan according - * position and distance of a listener and emitter object. See SimplePanVolumeDriver for the limitations - * of this method. - - - - - - - - - <_ref_v> - <_src> - <_volume> - <_scale> - <_mute> - <_paused> - <_playing> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The sound object (flash.media.Sound) to play at the point of the sound - * source. The output of this sound is modified by the driver before actual - * sound output. - - - - * Arbitrary value by which all distances are divided. The default value of - * 1000 is usually suitable for scenes with a scale that roughly matches the - * standard Away3D scale, i.e. that look good from the default camera position. - - - - * Master volume/gain after 3D modifications to pan/volume have been applied. - * Modify this to raise or lower the overall volume regardless of where the - * sound source is located. - - - - * Mutes/unmutes the driver completely, which is typically only done (internally - * by Sound3D) whenever the sound source is removed from the scene. When true, - * any values set to the volume property will be ignored. - - - - * Start playing (or resume if paused) the audio. This is NOT The same thing - * as invoking play() on the flash.media.Sound object used as the source sound - * for the driver. - - - - * Temporarily pause playback. Resume using play(). - - - - * Stop playback and reset playhead. Subsequent play() calls will restart the - * playback from the beginning of the sound file. - - - - - - - * Change the position of the sound source relative to the listener, known as - * the reference vector. This is invoked by the Sound3D object when it's position - * changes, and should typically not be called by any other code. - * - * @param v Sound source position vector relative to the listener. - - - - - - <_sound_chan> - <_pause_position> - <_st3D> - - - - - - - - - - - - - - - - <_updateSoundTransform set="method" line="88"> - - - - - - * The Simple pan/volume Sound3D driver will alter the pan and volume properties on the - * sound transform object of a regular openfl.media.Sound3D representation of the sound. This - * is very efficient, but has the drawback that it can only reflect azimuth and distance, - * and will disregard elevation. You'll be able to hear whether a - - - - - - - - <_min> - <_max> - <_aabbPoints expr="new Vector<Float>()"> - - ()]]> - - <_aabbPointsDirty expr="true"> - - true - - <_boundingRenderable> - - - * The maximum extreme of the bounds - - - - * The minimum extreme of the bounds - - - - * Returns a vector of values representing the concatenated cartesian triplet of the 8 axial extremities of the bounding volume. - - - - * Returns the bounding renderable object for the bounding volume, in cases where the showBounds - * property of the entity is set to true. - * - * @see away3d.entities.Entity#showBounds - - - - * Sets the bounds to zero size. - - - - * Disposes of the bounds renderable object. Used to clear memory after a bounds rendeable is no longer required. - - - - - - - - - - - - - - * Updates the bounds to fit a Geometry object. - * - * @param geometry The Geometry object to be bounded. - - - - - - - - * Sets the bound to fit a given sphere. - * - * @param center The center of the sphere to be bounded - * @param radius The radius of the sphere to be bounded - - - - - - - - - - - - * Sets the bounds to the given extrema. - * - * @param minX The minimum x value of the bounds - * @param minY The minimum y value of the bounds - * @param minZ The minimum z value of the bounds - * @param maxX The maximum x value of the bounds - * @param maxY The maximum y value of the bounds - * @param maxZ The maximum z value of the bounds - - - - - - - - * Tests if the bounds are in the camera frustum. - * - * @param mvpMatrix The model view projection matrix for the object to which this bounding box belongs. - * @return True if the bounding box is at least partially inside the frustum - - - - - - - * Tests if the bounds overlap other bounds, treating both bounds as AABBs. - - - - * Clones the current BoundingVolume object - * @return An exact duplicate of this object - - - - - - - - - * Method for calculating whether an intersection of the given ray occurs with the bounding volume. - * - * @param position The starting position of the casting ray in local coordinates. - * @param direction A unit vector representing the direction of the casting ray in local coordinates. - * @param targetNormal The vector to store the bounds' normal at the point of collision - * @return A Boolean value representing the detection of an intersection. - - - - - - - * Method for calculating whether the given position is contained within the bounding volume. - * - * @param position The position in local coordinates to be checked. - * @return A Boolean value representing the detection of a contained position. - - - - - - - - - - - - - - - - BoundingVolumeBase object]]> - - * An abstract base class for all bounding volume classes. It should not be instantiated directly. - - - - - - - <_centerX expr="0"> - - 0 - - <_centerY expr="0"> - - 0 - - <_centerZ expr="0"> - - 0 - - <_halfExtentsX expr="0"> - - 0 - - <_halfExtentsY expr="0"> - - 0 - - <_halfExtentsZ expr="0"> - - 0 - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - { target : null } - * Finds the closest point on the bounding volume to another given point. This can be used for maximum error calculations for content within a given bound. - * @param point The point for which to find the closest point on the bounding volume - * @param target An optional Vector3D to store the result to prevent creating a new object. - * @return - - - - - - - - - - - - - - - AxisAlignedBoundingBox object.]]> - - * AxisAlignedBoundingBox represents a bounding box volume that has its planes aligned to the local coordinate axes of the bounded object. - * This is useful for most meshes. - - - - - - <_radius expr="0"> - - 0 - - <_centerX expr="0"> - - 0 - - <_centerY expr="0"> - - 0 - - <_centerZ expr="0"> - - 0 - - - - * The radius of the bounding sphere, calculated from the contents of the entity. - - - - * @inheritDoc - - - - - - - - * todo: pass planes? - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - BoundingSphere object]]> - - * BoundingSphere represents a spherical bounding volume defined by a center point and a radius. - * This bounding volume is useful for point lights. - - - - - <_alwaysIn> - <_renderable> - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - { renderable : null, alwaysIn : true } - - * NullBounds represents a debug bounding "volume" that is either considered always in, or always out of the frustum. - * NullBounds is useful for entities that are always considered in the frustum, such as directional lights or skyboxes. - - - - - - - - - - - - <_showBounds> - <_partitionNode> - <_boundsIsShown expr="false"> - - false - - <_shaderPickingDetails> - <_pickingCollisionVO> - - away3d - - <_pickingCollider> - - away3d - - <_staticNode> - - away3d - - <_bounds> - <_boundsInvalid expr="true"> - - true - - <_worldBounds> - <_worldBoundsInvalid expr="true"> - - true - - - - - - - - * Used by the shader-based picking system to determine whether a separate render pass is made in order - * to offer more details for the picking collision object, including local position, normal vector and uv value. - * Defaults to false. - * - * @see away3d.core.pick.ShaderPicker - - - - - - - - * Defines whether or not the object will be moved or animated at runtime. This property is used by some partitioning systems to improve performance. - * Warning: if set to true, they may not be processed by certain partition systems using static visibility lists, unless they're specifically assigned to the visibility list. - - - - - - - - * Returns a unique picking collision value object for the entity. - - - - - - - - away3d - * Tests if a collision occurs before shortestCollisionDistance, using the data stored in PickingCollisionVO. - * @param shortestCollisionDistance - * @return - - - - * - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * The bounding volume approximating the volume occupied by the Entity. - - - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - * Used by the raycast-based picking system to determine how the geometric contents of an entity are processed - * in order to offer more details for the picking collision object, including local position, normal vector and uv value. - * Defaults to null. - * - * @see away3d.core.pick.RaycastPicker - - - - - - - - * Gets a concrete EntityPartition3DNode subclass that is associated with this Entity instance - - - - - - - - - * Factory method that returns the current partition node. Needs to be overridden by concrete subclasses - * such as Mesh to return the correct concrete subtype of EntityPartition3DNode (for Mesh = MeshPartition3DNode, - * most IRenderables (particles fe) would return RenderablePartition3DNode, I suppose) - - - - * Creates the default bounding box to be used by this type of Entity. - * @return - - - - * Updates the bounding volume for the object. Overriding methods need to set invalid flag to false! - - - - * @inheritDoc - - - - * Invalidates the bounding volume, causing to be updated when requested. - - - - - * Notify the scene that the global scene bounds have changed, so it can be repartitioned. - - - - * Notify the scene that a new partition was assigned. - - - - * Notify the scene that a partition was unassigned. - - - - - - - * Creates a new Entity object. - - * The Entity class provides an abstract base class for all scene graph objects that are considered having a - * "presence" in the scene, in the sense that it can be considered an actual object with a position and a size (even - * if infinite or idealised), rather than a grouping. - * Entities can be partitioned in a space partitioning system and in turn collected by an EntityCollector. - * - * @see away3d.partition.Partition3D - * @see away3d.core.traverse.EntityCollector - - - - - - - - <_viewProjection expr="new Matrix3D()"> - - new Matrix3D() - - <_viewProjectionDirty expr="true"> - - true - - <_lens> - <_frustumPlanes> - <_frustumPlanesDirty expr="true"> - - true - - - - - - - - - - * - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * The lens used by the camera to perform the projection; - - - - - - - - * The view projection matrix of the camera. - - - - - - - - - - { v : null } - * Calculates the scene position of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position of the given screen coordinates. - - - - - - - - - - { v : null } - * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The ray from the camera to the scene space position of the given screen coordinates. - - - - - - - - { v : null } - * Calculates the normalised position in screen space of the given scene position. - * - * @param point3d the position vector of the scene coordinates to be projected. - * @param v The destination Vector3D object - * @return The normalised screen position of the given scene coordinates. - - - - - - - { lens : null } - * Creates a new Camera3D object - * @param lens An optional lens object that will perform the projection. Defaults to PerspectiveLens. - * - * @see away3d.cameras.lenses.PerspectiveLens - - * A Camera3D object represents a virtual camera through which we view the scene. - - - - - - 0 - * Default option, projects to a left-handed coordinate system - - - - 1 - * Projects to a right-handed coordinate system - - coordinateSystem property - * - * @see away3d.cameras.lenses.PerspectiveLens#coordinateSystem]]> - - - - - - - - - - - away3d - - <_matrix> - <_scissorRect expr="new Rectangle()"> - - new Rectangle() - - <_viewPort expr="new Rectangle()"> - - new Rectangle() - - <_near expr="20"> - - 20 - - <_far expr="3000"> - - 3000 - - <_aspectRatio expr="1"> - - 1 - - <_matrixInvalid expr="true"> - - true - - <_frustumCorners expr="new Vector<Float>(8 * 3, true)"> - - (8 * 3, true)]]> - - <_unprojection> - <_unprojectionInvalid expr="true"> - - true - - - - * Retrieves the corner points of the lens frustum. - - - - - - - - * The projection matrix that transforms 3D geometry to normalized homogeneous coordinates. - - - - - - - - * The distance to the near plane of the frustum. Anything behind near plane will not be rendered. - - - - - - - - * The distance to the far plane of the frustum. Anything beyond the far plane will not be rendered. - - - - - - - - - - - - { v : null } - * Calculates the normalised position in screen space of the given scene position relative to the camera. - * - * @param point3d the position vector of the scene coordinates to be projected. - * @param v The destination Vector3D object - * @return The normalised screen position of the given scene coordinates relative to the camera. - - - - - - - - - - - { v : null } - * Calculates the scene position relative to the camera of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position relative to the camera of the given screen coordinates. - - - - * Creates an exact duplicate of the lens - - - - * The aspect ratio (width/height) of the view. Set by the renderer. - * @private - - - - - - - - * Invalidates the projection matrix, which will cause it to be updated on the next request. - - - - * Updates the matrix - - - - - - - - - - away3d - - - - - - - - - - away3d - - - - * Creates a new LensBase object. - - * An abstract base class for all lens classes. Lens objects provides a projection matrix that transforms 3D geometry to normalized homogeneous coordinates. - - - - - - - - - - - - - - - - - - - - * Creates a new FreeMatrixLens object. - - * FreeMatrixLens provides a projection lens that exposes a full projection matrix, rather than provide one through - * more user-friendly settings. Whenever the matrix is updated, it needs to be reset in order to trigger an update. - - - - - - The x axis defined as a Vector3D object with coordinates (1,0,0). - - - - The y axis defined as a Vector3D object with coordinates (0,1,0). - - - - The z axis defined as a Vector3D object with coordinates (0,0,1). - - - - - - - - Returns the angle in radians between two vectors. The returned angle is the - smallest radian the first Vector3D object rotates until it aligns with the - second Vector3D object. - - The `angleBetween()` method is a static method. You can use it directly as a method - of the Vector3D class. - - To convert a degree to a radian, you can use the following formula: - - ```haxe - radian = Math.PI/180 * degree - ``` - - @param a The first Vector3D object. - @param b The second Vector3D object. - @returns The angle between two Vector3D objects. - - - - - - - - Returns the distance between two Vector3D objects. The `distance()` method is a - static method. You can use it directly as a method of the Vector3D class to get - the Euclidean distance between two three-dimensional points. - - @param pt1 A Vector3D object as the first three-dimensional point. - @param pt2 A Vector3D object as the second three-dimensional point. - @returns The distance between two Vector3D objects. - - - - - - - The length, magnitude, of the current Vector3D object from the origin (0,0,0) to - the object's x, y, and z coordinates. The `w` property is ignored. A unit vector has - a length or magnitude of one. - - - - The square of the length of the current Vector3D object, calculated using the `x`, - `y`, and `z` properties. The `w` property is ignored. Use the `lengthSquared()` - method whenever possible instead of the slower `Math.sqrt()` method call of the - `Vector3D.length()` method. - - - - The fourth element of a Vector3D object (in addition to the `x`, `y`, and `z` - properties) can hold data such as the angle of rotation. The default value is 0. - - Quaternion notation employs an angle as the fourth element in its calculation of - three-dimensional rotation. The w property can be used to define the angle of - rotation about the Vector3D object. The combination of the rotation angle and the - coordinates (x,y,z) determines the display object's orientation. - - In addition, the w property can be used as a perspective warp factor for a - projected three-dimensional position or as a projection transform value in - representing a three-dimensional coordinate projected into the two-dimensional - space. For example, you can create a projection matrix using the `Matrix3D.rawData` - property, that, when applied to a Vector3D object, produces a transform value in - the Vector3D object's fourth element (the `w` property). Dividing the Vector3D - object's other elements by the transform value then produces a projected Vector3D - object. You can use the `Vector3D.project()` method to divide the first three - elements of a Vector3D object by its fourth element. - - - - The first element of a Vector3D object, such as the x coordinate of a point in - the three-dimensional space. The default value is 0. - - - - The second element of a Vector3D object, such as the y coordinate of a point in - the three-dimensional space. The default value is 0. - - - - The third element of a Vector3D object, such as the z coordinate of a point in - three-dimensional space. The default value is 0. - - - - - - - Adds the value of the x, y, and z elements of the current Vector3D object to the - values of the x, y, and z elements of another Vector3D object. The `add()` method - does not change the current Vector3D object. Instead, it returns a new Vector3D - object with the new values. - - The result of adding two vectors together is a resultant vector. One way to - visualize the result is by drawing a vector from the origin or tail of the first - vector to the end or head of the second vector. The resultant vector is the - distance between the origin point of the first vector and the end point of the - second vector. - - ![Resultant Vector3D](/images/resultantVector3D.jpg) - - @param a A Vector3D object to be added to the current Vector3D object. - @returns A Vector3D object that is the result of adding the current Vector3D - object to another Vector3D object. - - - - Returns a new Vector3D object that is an exact copy of the current Vector3D object. - - @returns A new Vector3D object that is a copy of the current Vector3D object. - - - - - - - Copies all of vector data from the source Vector3D object into the calling Vector3D - object. - - @param sourceVector3D The Vector3D object from which to copy the data. - - - - - - - Returns a new Vector3D object that is perpendicular (at a right angle) to the - current Vector3D and another Vector3D object. If the returned Vector3D object's - coordinates are (0,0,0), then the two Vector3D objects are parallel to each other. - - ![Cross Product](/images/crossproduct.jpg) - - You can use the normalized cross product of two vertices of a polygon surface with - the normalized vector of the camera or eye viewpoint to get a dot product. The - value of the dot product can identify whether a surface of a three-dimensional - object is hidden from the viewpoint. - - @param a A second Vector3D object. - @returns A new Vector3D object that is perpendicular to the current Vector3D - object and the Vector3D object specified as the parameter. - - - - - - - Decrements the value of the x, y, and z elements of the current Vector3D object by - the values of the x, y, and z elements of specified Vector3D object. Unlike the - `Vector3D.subtract()` method, the `decrementBy()` method changes the current - Vector3D object and does not return a new Vector3D object. - - @param a The Vector3D object containing the values to subtract from the current - Vector3D object. - - - - - - - If the current Vector3D object and the one specified as the parameter are unit - vertices, this method returns the cosine of the angle between the two vertices. - Unit vertices are vertices that point to the same direction but their length is - one. They remove the length of the vector as a factor in the result. You can use - the `normalize()` method to convert a vector to a unit vector. - - The `dotProduct()` method finds the angle between two vertices. It is also used in - backface culling or lighting calculations. Backface culling is a procedure for - determining which surfaces are hidden from the viewpoint. You can use the - normalized vertices from the camera, or eye, viewpoint and the cross product of - the vertices of a polygon surface to get the dot product. If the dot product is less - than zero, then the surface is facing the camera or the viewer. If the two unit - vertices are perpendicular to each other, they are orthogonal and the dot product - is zero. If the two vertices are parallel to each other, the dot product is one. - - @param a The second Vector3D object. - @returns A scalar which is the dot product of the current Vector3D object and - the specified Vector3D object. - - - - - - - - { allFour : false } - Determines whether two Vector3D objects are equal by comparing the x, y, and z - elements of the current Vector3D object with a specified Vector3D object. If the - values of these elements are the same, the two Vector3D objects are equal. If the - second optional parameter is set to `true`, all four elements of the Vector3D - objects, including the `w` property, are compared. - - @param toCompare The Vector3D object to be compared with the current Vector3D - object. - @param allFour An optional parameter that specifies whether the `w` property of - the Vector3D objects is used in the comparison. - @returns A value of `true` if the specified Vector3D object is equal to the current Vector3D object; `false` if it is not equal. - - - - - - - Increments the value of the x, y, and z elements of the current Vector3D object by - the values of the x, y, and z elements of a specified Vector3D object. Unlike the - `Vector3D.add()` method, the `incrementBy()` method changes the current Vector3D - object and does not return a new Vector3D object. - - @param a The Vector3D object to be added to the current Vector3D object. - - - - - - - - - { allFour : false } - Compares the elements of the current Vector3D object with the elements of a - specified Vector3D object to determine whether they are nearly equal. The two - Vector3D objects are nearly equal if the value of all the elements of the two - vertices are equal, or the result of the comparison is within the tolerance range. - The difference between two elements must be less than the number specified as the - tolerance parameter. If the third optional parameter is set to true, all four - elements of the Vector3D objects, including the w property, are compared. - Otherwise, only the x, y, and z elements are included in the comparison. - - @param toCompare The Vector3D object to be compared with the current Vector3D - object. - @param tolerance A number determining the tolerance factor. If the difference - between the values of the Vector3D element specified in the toCompare parameter - and the current Vector3D element is less than the tolerance number, the two values - are considered nearly equal. - @param allFour An optional parameter that specifies whether the `w` property of - the Vector3D objects is used in the comparison. - @returns A value of `true` if the specified Vector3D object is nearly equal to the current Vector3D object; `false` if it is not equal. - - - - Sets the current Vector3D object to its inverse. The inverse object is also - considered the opposite of the original object. The value of the `x`, `y`, and `z` - properties of the current Vector3D object is changed to -x, -y, and -z. - - - - Converts a Vector3D object to a unit vector by dividing the first three elements - (x, y, z) by the length of the vector. Unit vertices are vertices that have a - direction but their `length` is one. They simplify vector calculations by removing `length` as a factor. - - @returns The length of the current Vector3D object. - - - - Divides the value of the `x`, `y`, and `z` properties of the current Vector3D - object by the value of its `w` property. - - If the current Vector3D object is the result of multiplying a Vector3D object by a - projection Matrix3D object, the `w` property can hold the transform value. The - `project()` method then can complete the projection by dividing the elements by the - `w` property. Use the Matrix3D.rawData property to create a projection Matrix3D - object. - - - - - - - Scales the current Vector3D object by a scalar, a magnitude. The Vector3D object's - x, y, and z elements are multiplied by the scalar number specified in the - parameter. For example, if the vector is scaled by ten, the result is a vector - that is ten times longer. The scalar can also change the direction of the vector. - Multiplying the vector by a negative number reverses its direction. - - @param s A multiplier (scalar) used to scale a Vector3D object. - - - - - - - - - Sets the members of Vector3D to the specified values - - @param xa the values to set the vector to. - @param ya - @param za - - - - - - - Subtracts the value of the x, y, and z elements of the current Vector3D object - from the values of the x, y, and z elements of another Vector3D object. The - `subtract()` method does not change the current Vector3D object. Instead, this - method returns a new Vector3D object with the new values. - - @param a The Vector3D object to be subtracted from the current Vector3D object. - @returns A new Vector3D object that is the difference between the current - Vector3D and the specified Vector3D object. - - - - Returns a string representation of the current Vector3D object. The string contains - the values of the x, y, and z properties. - - @returns A string containing the values of the x, y, and z properties. - - - - - - - - - - - - - - - - - - { w : 0, z : 0, y : 0, x : 0 } - Creates an instance of a Vector3D object. If you do not specify a parameter for - the constructor, a Vector3D object is created with the elements (0,0,0,0). - - @param x The first element, such as the x coordinate. - @param y The second element, such as the y coordinate. - @param z The third element, such as the z coordinate. - @param w An optional element for additional data such as the angle of rotation. - - The Vector3D class represents a point or a location in the three-dimensional space using - the Cartesian coordinates x, y, and z. As in a two-dimensional space, the `x` property - represents the horizontal axis and the `y` property represents the vertical axis. In - three-dimensional space, the `z` property represents depth. The value of the `x` property increases as the object moves to the right. The value of the `y` property - increases as the object moves down. The `z` property increases as the object moves - farther from the point of view. Using perspective projection and scaling, the object is - seen to be bigger when near and smaller when farther away from the screen. As in a - right-handed three-dimensional coordinate system, the positive z-axis points away from - the viewer and the value of the `z` property increases as the object moves away from the - viewer's eye. The origin point (0,0,0) of the global space is the upper-left corner of - the stage. - - ![X, Y, Z Axes](/images/xyzAxes.jpg) - - The Vector3D class can also represent a direction, an arrow pointing from the origin of - the coordinates, such as (0,0,0), to an endpoint; or a floating-point component of an - RGB (Red, Green, Blue) color model. - - Quaternion notation introduces a fourth element, the `w` property, which provides - additional orientation information. For example, the `w` property can define an angle - of rotation of a Vector3D object. The combination of the angle of rotation and the - coordinates `x`, `y`, and `z` can determine the display object's orientation. Here is - a representation of Vector3D elements in matrix notation: - - ![Vector3D elements](/images/Vector3Delements.jpg) - - - "tags=\"haxe,release\"" - - - - - - - - new Vector3D() - - - - <_baseLens> - <_plane> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_projectionHeight> - <_xMax> - <_yMax> - - - * The vertical field of view of the projection. - - - - - - - - - - - - - - { v : null } - * Calculates the scene position relative to the camera of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position relative to the camera of the given screen coordinates. - - - - - * @inheritDoc - - - - - - - { projectionHeight : 500 } - * Creates a new OrthogonalLens object. - - * The PerspectiveLens object provides a projection matrix that projects 3D geometry isometrically. This entails - * there is no perspective distortion, and lines that are parallel in the scene will remain parallel on the screen. - - - - - - - - - <_minX> - <_maxX> - <_minY> - <_maxY> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { v : null } - * Calculates the scene position relative to the camera of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position relative to the camera of the given screen coordinates. - - - - - * @inheritDoc - - - - - - - - - - * Creates a new OrthogonalLens object. - * @param fieldOfView The vertical field of view of the projection. - - * The PerspectiveLens object provides a projection matrix that projects 3D geometry isometrically. This entails - * there is no perspective distortion, and lines that are parallel in the scene will remain parallel on the screen. - - - - - - - - <_fieldOfView> - <_focalLength> - <_focalLengthInv> - <_yMax> - <_xMax> - <_coordinateSystem> - - - * The vertical field of view of the projection in degrees. - - - - - - - - * The focal length of the projection in units of viewport height. - - - - - - - - - - - - - - { v : null } - * Calculates the scene position relative to the camera of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position relative to the camera of the given screen coordinates. - - - - - * The handedness of the coordinate system projection. The default is LEFT_HANDED. - - - - - - - - * @inheritDoc - - - - - - - - { coordinateSystem : 0, fieldOfView : 60 } - * Creates a new PerspectiveLens object. - * - * @param fieldOfView The vertical field of view of the projection. - - * The PerspectiveLens object provides a projection matrix that projects 3D geometry with perspective distortion. - - - - - - - - - <_minAngleX> - <_minLengthX> - <_tanMinX> - <_maxAngleX> - <_maxLengthX> - <_tanMaxX> - <_minAngleY> - <_minLengthY> - <_tanMinY> - <_maxAngleY> - <_maxLengthY> - <_tanMaxY> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { v : null } - * Calculates the scene position relative to the camera of the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @param v The destination Vector3D object - * @return The scene position relative to the camera of the given screen coordinates. - - - - - * @inheritDoc - - - - - - - - - - { maxAngleY : 40, minAngleY : -40, maxAngleX : 40, minAngleX : -40 } - * Creates a new PerspectiveLens object. - * - * @param fieldOfView The vertical field of view of the projection. - - * The PerspectiveLens object provides a projection matrix that projects 3D geometry with perspective distortion. - - - - - - <_sceneGraphRoot public="1"> - <_partitions> - - - - - - * Sends a PartitionTraverser object down the scene partitions - * @param traverser The traverser which will pass through the partitions. - * - * @see away3d.core.traverse.PartitionTraverser - * @see away3d.core.traverse.EntityCollector - - - - * The root partition to be used by the Scene3D. - - - - - - - - - - - - - - - * Adds a child to the scene's root. - * @param child The child to be added to the scene - * @return A reference to the added child. - - - - - - - * Removes a child from the scene's root. - * @param child The child to be removed from the scene. - - - - - - - * Removes a child from the scene's root. - * @param index Index of child to be removed from the scene. - - - - - - - * Retrieves the child with the given index - * @param index The index for the child to be retrieved. - * @return The child with the given index - - - - * The amount of children directly contained by the scene. - - - - - - - away3d - * When an entity is added to the scene, or to one of its children, add it to the partition tree. - * @private - - - - - - - away3d - * When an entity is removed from the scene, or from one of its children, remove it from its former partition tree. - * @private - - - - - - - * When an entity has moved or changed size, update its position in its partition tree. - - - - - - - * When a partition is assigned to an object somewhere in the scene graph, add the partition to the list if it isn't in there yet - - - - - - - * When a partition is removed from an object somewhere in the scene graph, remove the partition from the list - - - - - - - * Add a partition if it's not in the list - - - - * Creates a new Scene3D object. - - * The Scene3D class represents an independent 3D scene in which 3D objects can be created and manipulated. - * Multiple Scene3D instances can be created in the same SWF file. - * - * Scene management happens through the scene graph, which is exposed using addChild and removeChild methods. - * Internally, the Scene3D object also manages any space partition objects that have been assigned to objects in - * the scene graph, of which there is at least 1. - - - - - <_width expr="0"> - - 0 - - <_height expr="0"> - - 0 - - <_localTLPos expr="new Point()"> - - new Point() - - <_localBRPos expr="new Point()"> - - new Point() - - <_globalPos expr="new Point()"> - - new Point() - - <_globalWidth expr="0"> - - 0 - - <_globalHeight expr="0"> - - 0 - - <_globalPosDirty> - <_scene> - <_camera> - <_entityCollector> - <_aspectRatio> - <_time expr="0"> - - 0 - - <_deltaTime> - <_backgroundColor expr="0x000000"> - - 0x000000 - - <_backgroundAlpha expr="1"> - - 1 - - <_mouse3DManager> - <_touch3DManager> - <_renderer> - <_depthRenderer> - <_addedToStage> - <_forceSoftware> - <_filter3DRenderer> - <_requireDepthRender> - <_depthRender> - <_depthTextureInvalid expr="true"> - - true - - <_hitField> - <_parentIsStage> - <_background> - <_stage3DProxy> - <_backBufferInvalid expr="true"> - - true - - <_antiAlias> - <_rttBufferManager> - <_rightClickMenuEnabled expr="true"> - - true - - <_sourceURL> - <_shareContext expr="false"> - - false - - <_scissorRect> - <_scissorRectDirty expr="true"> - - true - - <_viewportDirty expr="true"> - - true - - <_depthPrepass> - <_profile> - <_layeredView expr="false"> - - false - - <_contextIndex expr="-1"> - - -1 - - - - - - - - - - - - - - - - - - - - - - - - * Forces mouse-move related events even when the mouse hasn't moved. This allows mouseOver and mouseOut events - * etc to be triggered due to changes in the scene graph. Defaults to false. - - - - - - - - - - - - - - - * Used in a sharedContext. When true, clears the depth buffer prior to rendering this particular - * view to avoid depth sorting with lower layers. When false, the depth buffer is not cleared - * from the previous (lower) view's render so objects in this view may be occluded by the lower - * layer. Defaults to false. - - - - - - - - - - - - - - - - * The renderer used to draw the scene. - - - - - - - - - * The background color of the screen. This value is only used when clearAll is set to true. - - - - - - - - - - - - - - - * The camera that's used to render the scene for this viewport - - - - - - - - * Set camera that's used to render the scene for this viewport - - - - * The scene that's used to render for this viewport - - - - - - - - * Set the scene that's used to render for this viewport - - - - * The amount of milliseconds the last render call took - - - - - filters - * Not supported. Use filters3d instead. - - - - - - - filters - * Not supported. Use filters3d instead. - - - - width - * The width of the viewport. When software rendering is used, this is limited by the - * platform to 2048 pixels. - - - - - - - width - - - - height - * The height of the viewport. When software rendering is used, this is limited by the - * platform to 2048 pixels. - - - - - - - height - - - - - - - x - - - - - - - y - - - - - - - visible - - - - * The amount of anti-aliasing to be used. - - - - - - - - - * The amount of faces that were pushed through the render pipeline on the last frame render. - - - - - * Defers control of Context3D clear() and present() calls to Stage3DProxy, enabling multiple Stage3D frameworks - * to share the same Context3D object. - - - - - - - - - * Updates the backbuffer dimensions. - - - - * Defines a source url string that can be accessed though a View Source option in the right-click menu. - * - * Requires the stats panel to be enabled. - * - * @param url The url to the source files. - - - - - - - - - - - - - - - - - - - * Disposes all memory occupied by the view. This will also dispose the renderer. - - - - - - - * Calculates the projected position in screen space of the given scene position. - * - * @param point3d the position vector of the point to be projected. - * @return The absolute screen position of the given scene coordinates. - - - - - - - - - - { v : null } - * Calculates the scene position of the given screen coordinates. - * - * eg. unproject(view.mouseX, view.mouseY, 500) returns the scene position of the mouse 500 units into the screen. - * - * @param sX The absolute x coordinate in 2D relative to View3D, representing the screenX coordinate. - * @param sY The absolute y coordinate in 2D relative to View3D, representing the screenY coordinate. - * @param sZ The distance into the screen, representing the screenZ coordinate. - * @param v the destination Vector3D object - * @return The scene position of the given screen coordinates. - - - - - - - - - * Calculates the ray in scene space from the camera to the given screen coordinates. - * - * eg. getRay(view.mouseX, view.mouseY, 500) returns the ray from the camera to a position under the mouse, 500 units into the screen. - * - * @param sX The absolute x coordinate in 2D relative to View3D, representing the screenX coordinate. - * @param sY The absolute y coordinate in 2D relative to View3D, representing the screenY coordinate. - * @param sZ The distance into the screen, representing the screenZ coordinate. - * @return The ray from the camera to the scene space position of the given screen coordinates. - - - - - - - - - - - - - - - - away3d - * The EntityCollector object that will collect all potentially visible entities in the partition tree. - * - * @see away3d.core.traverse.EntityCollector - * @private - - - - - - - - - - - - * When added to the stage, retrieve a Stage3D instance - - - - - - - - - - - - - - - - - - - - { contextIndex : -1, profile : "baseline", forceSoftware : false, renderer : null, camera : null, scene : null } - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - - - - - - <_autoUpdate> - <_targetObject> - - - - * Target object on which the controller acts. Defaults to null. - - - - - - - - * Determines whether the controller applies updates automatically. Defaults to true - - - - - - - - - - - { interpolate : true } - * Manually applies updates to the target 3D object. - - - - - - - { targetObject : null } - * Base controller class for dynamically adjusting the propeties of a 3D object. - * - * @param targetObject The 3D object on which to act. - - - - - - - - - - - <_currentPanAngle expr="0"> - - 0 - - <_currentTiltAngle expr="90"> - - 90 - - <_panAngle expr="0"> - - 0 - - <_tiltAngle expr="90"> - - 90 - - <_minTiltAngle expr="-90"> - - -90 - - <_maxTiltAngle expr="90"> - - 90 - - <_steps expr="0"> - - 0 - - <_walkIncrement expr="0"> - - 0 - - <_strafeIncrement expr="0"> - - 0 - - <_wrapPanAngle expr="false"> - - false - - - - - hover() method is called. Defaults to 8. - * - * Affects the speed at which the tiltAngle and panAngle resolve to their targets. - * - * @see #tiltAngle - * @see #panAngle]]> - - - - - - - - * Rotation of the camera in degrees around the y axis. Defaults to 0. - - - - - - - - * Elevation angle of the camera in degrees. Defaults to 90. - - - - - - - - tiltAngle. Defaults to -90. - * - * @see #tiltAngle]]> - - - - - - - - tiltAngle. Defaults to 90. - * - * @see #tiltAngle]]> - - - - - - - - * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false. - - - - - - - - - - - { interpolate : true } - tiltAngle, panAngle and steps variables. - * - * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true. - * - * @see #tiltAngle - * @see #panAngle - * @see #steps]]> - - - - - - - - - - - - - - - - - - - - - { wrapPanAngle : false, steps : 8, maxTiltAngle : 90, minTiltAngle : -90, tiltAngle : 90, panAngle : 0, targetObject : null } - HoverController object.]]> - - * Extended camera used to hover round a specified target object. - * - * @see away3d.containers.View3D - - - - - - * The vector representing the up direction of the target object. - - - - * The Vector3D object that the target looks at. - - - <_lookAtPosition> - <_lookAtObject> - <_origin expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_upAxis expr="Vector3D.Y_AXIS"> - - Vector3D.Y_AXIS - - <_pos expr="new Vector3D()"> - - new Vector3D() - - - - - - - - - - - - - - * The 3d object that the target looks at. - - - - - - - - - - - { interpolate : true } - * @inheritDoc - - - - - - - - - - - - { lookAtObject : null, targetObject : null } - LookAtController object.]]> - - * Extended camera used to automatically look at a specified target object. - * - * @see away3d.containers.View3D - - - - - - - - - - - - - - <_currentPanAngle expr="0"> - - - 0 - away3d - - - <_currentTiltAngle expr="90"> - - - 90 - away3d - - - <_panAngle expr="0"> - - 0 - - <_tiltAngle expr="90"> - - 90 - - <_distance expr="1000"> - - 1000 - - <_minPanAngle expr="Math.NEGATIVE_INFINITY"> - - Math.NEGATIVE_INFINITY - - <_maxPanAngle expr="Math.POSITIVE_INFINITY"> - - Math.POSITIVE_INFINITY - - <_minTiltAngle expr="-90"> - - -90 - - <_maxTiltAngle expr="90"> - - 90 - - <_steps expr="8"> - - 8 - - <_yFactor expr="2"> - - 2 - - <_wrapPanAngle expr="false"> - - false - - - - hover() method is called. Defaults to 8. - * - * Affects the speed at which the tiltAngle and panAngle resolve to their targets. - * - * @see #tiltAngle - * @see #panAngle]]> - - - - - - - - * Rotation of the camera in degrees around the y axis. Defaults to 0. - - - - - - - - * Elevation angle of the camera in degrees. Defaults to 90. - - - - - - - - * Distance between the camera and the specified target. Defaults to 1000. - - - - - - - - panAngle. Defaults to -Infinity. - * - * @see #panAngle]]> - - - - - - - - panAngle. Defaults to Infinity. - * - * @see #panAngle]]> - - - - - - - - tiltAngle. Defaults to -90. - * - * @see #tiltAngle]]> - - - - - - - - tiltAngle. Defaults to 90. - * - * @see #tiltAngle]]> - - - - - - - - * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2. - * - * @see #distance - - - - - - - - * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false. - - - - - - - - - - - { interpolate : true } - tiltAngle, panAngle and steps variables. - * - * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true. - * - * @see #tiltAngle - * @see #panAngle - * @see #steps]]> - - - - - - - - - - - - - - - - - - { wrapPanAngle : false, yFactor : 2, steps : 8, maxPanAngle : null, minPanAngle : null, maxTiltAngle : 90, minTiltAngle : -90, distance : 1000, tiltAngle : 90, panAngle : 0, lookAtObject : null, targetObject : null } - HoverController object.]]> - - * Extended camera used to hover round a specified target object. - * - * @see away3d.containers.View3D - - - - - - - - - { interpolate : true } - - - - - - - - - - { distance : 700, tiltAngle : 45, lookAtObject : null, targetObject : null } - - * Controller used to follow behind an object on the XZ plane, with an optional - * elevation (tiltAngle). - * - * @see away3d.containers.View3D - - - - <_velocity> - <_dv> - <_stretch> - <_force> - <_acceleration> - <_desiredPosition> - - - * Stiffness of the spring, how hard is it to extend. The higher it is, the more "fixed" the cam will be. - * A number between 1 and 20 is recommended. - - - - * Damping is the spring internal friction, or how much it resists the "boinggggg" effect. Too high and you'll lose it! - * A number between 1 and 20 is recommended. - - - - * Mass of the camera, if over 120 and it'll be very heavy to move. - - - - new Vector3D(0, 500, -1000) - * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space. - - - - - - - { interpolate : true } - - - - - - - - - - - { damping : 4, mass : 40, stiffness : 1, lookAtObject : null, targetObject : null } - - * Uses spring physics to animate the target object towards a position that is - * defined as the lookAtTarget object's position plus the vector defined by the - * positionOffset property. - - - - - - - - - away3d - - - - - away3d - - - - - - - - - - - - - - - - - away3d - - - - <_parentGeometry> - <_vertexData> - <_faceNormalsDirty expr="true"> - - true - - <_faceTangentsDirty expr="true"> - - true - - <_faceTangents> - <_indices> - <_indexBuffer expr="new Vector<IndexBuffer3D>(8)"> - - (8)]]> - - <_numIndices> - <_indexBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_indicesInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_numTriangles> - <_autoDeriveVertexNormals expr="true"> - - true - - <_autoDeriveVertexTangents expr="true"> - - true - - <_autoGenerateUVs expr="false"> - - false - - <_useFaceWeights expr="false"> - - false - - <_vertexNormalsDirty expr="true"> - - true - - <_vertexTangentsDirty expr="true"> - - true - - <_faceNormals> - <_faceWeights> - <_scaleU expr="1"> - - 1 - - <_scaleV expr="1"> - - 1 - - <_uvsDirty expr="true"> - - true - - - - * Defines whether a UV buffer should be automatically generated to contain dummy UV coordinates. - * Set to true if a geometry lacks UV data but uses a material that requires it, or leave as false - * in cases where UV data is explicitly defined or the material does not require UV data. - - - - - - - - * True if the vertex normals should be derived from the geometry, false if the vertex normals are set - * explicitly. - - - - - - - - * Indicates whether or not to take the size of faces into account when auto-deriving vertex normals and tangents. - - - - - - - - * The total amount of triangles in the SubGeometry. - - - - - - - * Retrieves the VertexBuffer3D object that contains triangle indices. - * @param context The Context3D for which we request the buffer - * @return The VertexBuffer3D object that contains triangle indices. - - - - * Updates the tangents for each face. - - - - * Updates the normals for each face. - - - - - - - * Updates the vertex normals based on the geometry. - - - - - - - * Updates the vertex tangents based on the geometry. - - - - - * The raw index data that define the faces. - * - * @private - - - - - - - * Updates the face indices of the SubGeometry. - * @param indices The face indices to upload. - - - - - - - * Disposes all buffers in a given vector. - * @param buffers The vector of buffers to dispose. - - - - - - - * Disposes all buffers in a given vector. - * @param buffers The vector of buffers to dispose. - - - - * True if the vertex tangents should be derived from the geometry, false if the vertex normals are set - * explicitly. - - - - - - - - * The raw data of the face normals, in the same order as the faces are listed in the index list. - * - * @private - - - - - - - * Invalidates all buffers in a vector, causing them the update when they are first requested. - * @param buffers The vector of buffers to invalidate. - - - - - - - - - - - - - - - - - - * The Geometry object that 'owns' this SubGeometry object. - * - * @private - - - - - - - - * Scales the uv coordinates - * @param scaleU The amount by which to scale on the u axis. Default is 1; - * @param scaleV The amount by which to scale on the v axis. Default is 1; - - - - - - - - - { scaleV : 1, scaleU : 1 } - - - - - - - * Scales the geometry. - * @param scale The amount by which to scale. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The total amount of vertices in the SubGeometry. - - - - * The amount of triangles that comprise the IRenderable geometry. - - - - * The distance between two consecutive vertex, normal or tangent elements - * This always applies to vertices, normals and tangents. - - - - * The distance between two consecutive normal elements - * This always applies to vertices, normals and tangents. - - - - * The distance between two consecutive tangent elements - * This always applies to vertices, normals and tangents. - - - - * The distance between two consecutive UV elements - - - - * The distance between two secondary UV elements - - - - - - - - * Assigns the attribute stream for vertex positions. - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for UV coordinates - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for a secondary set of UV coordinates - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for vertex normals - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for vertex tangents - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - * Retrieves the IndexBuffer3D object that contains triangle indices. - * @param context The Context3D for which we request the buffer - * @return The VertexBuffer3D object that contains triangle indices. - - - - * Retrieves the object's vertices as a Number array. - - - - * Retrieves the object's normals as a Number array. - - - - * Retrieves the object's tangents as a Number array. - - - - * The offset into vertexData where the vertices are placed - - - - * The offset into vertexNormalData where the normals are placed - - - - * The offset into vertexTangentData where the tangents are placed - - - - * The offset into UVData vector where the UVs are placed - - - - * The offset into SecondaryUVData vector where the UVs are placed - - - - away3d - * Retrieves the object's indices as a uint array. - - - - * Retrieves the object's uvs as a Number array. - - - - - - - - - - - - - - - - - - - - { scaleV : 1, scaleU : 1 } - - - - away3d - - - - away3d - - - - - - - - - - - - - - - - - - - - - <_vertexDataInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_vertexBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_bufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_numVertices> - <_contextIndex> - <_activeBuffer> - <_activeContext> - <_activeDataInvalid> - <_isolatedVertexPositionData> - <_isolatedVertexPositionDataDirty> - - - - - - - * Updates the vertex data. All vertex properties are contained in a single Vector, and the order is as follows: - * 0 - 2: vertex position X, Y, Z - * 3 - 5: normal X, Y, Z - * 6 - 8: tangent X, Y, Z - * 9 - 10: U V - * 11 - 12: Secondary U V - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { scaleV : 1, scaleU : 1 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Isolate and returns a Vector.Number of a specific buffer type - * - * - stripBuffer(0, 3), return only the vertices - * - stripBuffer(3, 3): return only the normals - * - stripBuffer(6, 3): return only the tangents - * - stripBuffer(9, 2): return only the uv's - * - stripBuffer(11, 2): return only the secondary uv's - - - - - - - - - - - - - - - - - <_subGeometries> - - - - * A collection of SubGeometry objects, each of which contain geometrical data such as vertices, normals, etc. - - - - - - - - - - - * Adds a new SubGeometry object to the list. - * @param subGeometry The SubGeometry object to be added. - - - - - - - * Removes a new SubGeometry object from the list. - * @param subGeometry The SubGeometry object to be removed. - - - - * Clones the geometry. - * @return An exact duplicate of the current Geometry object. - - - - - - - * Scales the geometry. - * @param scale The amount by which to scale. - - - - * Clears all resources used by the Geometry object, including SubGeometries. - - - - - - - - { scaleV : 1, scaleU : 1 } - * Scales the uv coordinates (tiling) - * @param scaleU The amount by which to scale on the u axis. Default is 1; - * @param scaleV The amount by which to scale on the v axis. Default is 1; - - - - * Updates the SubGeometries so all vertex data is represented in different buffers. - * Use this for compatibility with Pixel Bender and PBPickingCollider - - - - away3d - - - - - - - away3d - - - - * Creates a new Geometry object. - - * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices, - * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves. - * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns - * the SubGeometries to its respective SubMesh objects. - * - * - * - * @see away3d.core.base.SubGeometry - * @see away3d.scenegraph.Mesh - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The material with which to render the object. - - - - * The animation used by the material to assemble the vertex code. - - * IMaterialOwner provides an interface for objects that can use materials. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The transformation matrix that transforms from model to world space. - - - - - - - * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render. - * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would - * return the scene transform. - - - - * The inverse scene transform object that transforms from world to model space. - - - - * Indicates whether the IRenderable should trigger mouse events, and hence should be rendered for hit testing. - - - - * The entity that that initially provided the IRenderable to the render pipeline. - - - - * Indicates whether the renderable can cast shadows - - - - * Provides a Matrix object to transform the uv coordinates, if the material supports it. - * For TextureMaterial and TextureMultiPassMaterial, the animateUVs property should be set to true. - - - - - - * The total amount of vertices in the SubGeometry. - - - - * The amount of triangles that comprise the IRenderable geometry. - - - - * The number of data elements in the buffers per vertex. - * This always applies to vertices, normals and tangents. - - - - - - - - * Assigns the attribute stream for vertex positions. - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for UV coordinates - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for a secondary set of UV coordinates - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for vertex normals - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for vertex tangents - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - * Retrieves the IndexBuffer3D object that contains triangle indices. - * @param context The Context3D for which we request the buffer - * @return The VertexBuffer3D object that contains triangle indices. - - - - * Retrieves the object's vertices as a Number array. - - - - * Retrieves the object's normals as a Number array. - - - - * Retrieves the object's tangents as a Number array. - - - - * Retrieves the object's indices as a UInt array. - - - - * Retrieves the object's uvs as a Number array. - - * IRenderable provides an interface for objects that can be rendered in the rendering pipeline. - - - - - - - * ... - - - - - - - - - - away3d - - - - away3d - - <_bufferFormat> - <_jointWeightsData> - <_jointIndexData> - <_animatedData> - <_jointWeightsBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_jointIndexBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_jointWeightsInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_jointIndicesInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_jointWeightContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_jointIndexContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_jointsPerVertex> - <_condensedJointIndexData> - <_condensedIndexLookUp> - <_numCondensedJoints> - - - - - - - * If indices have been condensed, this will contain the original index for each condensed index. - - - - * The amount of joints used when joint indices have been condensed. - - - - * The animated vertex positions when set explicitly if the skinning transformations couldn't be performed on GPU. - - - - - - - - - - - - * Assigns the attribute stream for joint weights - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Assigns the attribute stream for joint indices - * @param index The attribute stream index for the vertex shader - * @param stage3DProxy The Stage3DProxy to assign the stream to - - - - - - - - * Clones the current object. - * @return An exact duplicate of the current object. - - - - * Cleans up any resources used by this object. - - - - away3d - - - - - * The raw joint weights data. - - - - - - - away3d - - - - * The raw joint index data. - - - - - - - away3d - - - - - - - * Creates a new SkinnedSubGeometry object. - * @param jointsPerVertex The amount of joints that can be assigned per vertex. - - * SkinnedSubGeometry provides a SubGeometry extension that contains data needed to skin vertices. In particular, - * it provides joint indices and weights. - * Important! Joint indices need to be pre-multiplied by 3, since they index the matrix array (and each matrix has 3 float4 elements) - - - - - - - - - - <_uvs> - <_secondaryUvs> - <_vertexNormals> - <_vertexTangents> - <_verticesInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_uvsInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_secondaryUvsInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_normalsInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_tangentsInvalid expr="new Vector<Bool>(8, true)"> - - (8, true)]]> - - <_vertexBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_uvBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_secondaryUvBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_vertexNormalBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_vertexTangentBuffer expr="new Vector<VertexBuffer3D>(8)"> - - (8)]]> - - <_vertexBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_uvBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_secondaryUvBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_vertexNormalBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_vertexTangentBufferContext expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_numVertices> - - - * The total amount of vertices in the SubGeometry. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * Retrieves the VertexBuffer3D object that contains vertex normals. - * @param context The Context3D for which we request the buffer - * @return The VertexBuffer3D object that contains vertex normals. - - - - - - - - * Retrieves the VertexBuffer3D object that contains vertex tangents. - * @param context The Context3D for which we request the buffer - * @return The VertexBuffer3D object that contains vertex tangents. - - - - - - - - * Clones the current object - * @return An exact duplicate of the current object. - - - - - - - * @inheritDoc - - - - - - - - { scaleV : 1, scaleU : 1 } - * @inheritDoc - - - - * Clears all resources used by the SubGeometry object. - - - - - * The raw vertex position data. - - - - - - - - * Updates the vertex data of the SubGeometry. - * @param vertices The new vertex data to upload. - - - - * The raw texture coordinate data. - - - - - - - - * Updates the uv coordinates of the SubGeometry. - * @param uvs The uv coordinates to upload. - - - - - - - - * The raw vertex normal data. - - - - - - - * Updates the vertex normals of the SubGeometry. When updating the vertex normals like this, - * autoDeriveVertexNormals will be set to false and vertex normals will no longer be calculated automatically. - * @param vertexNormals The vertex normals to upload. - - - - * The raw vertex tangent data. - * - * @private - - - - - - - * Updates the vertex tangents of the SubGeometry. When updating the vertex tangents like this, - * autoDeriveVertexTangents will be set to false and vertex tangents will no longer be calculated automatically. - * @param vertexTangents The vertex tangents to upload. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Creates a new SubGeometry object. - - * The SubGeometry class is a collections of geometric data that describes a triangle mesh. It is owned by a - * Geometry instance, and wrapped by a SubMesh in the scene graph. - * Several SubGeometries are grouped so they can be rendered with different materials, but still represent a single - * object. - * - * @see away3d.core.base.Geometry - * @see away3d.core.base.SubMesh - - - - - - - - - - - - - - - - - - - - - - - - - - - away3d - - - - - - - - - - - - - - - - - - <_material> - - away3d - - <_parentMesh> - <_subGeometry> - <_index> - - away3d - - <_uvTransform> - <_uvTransformDirty> - <_uvRotation expr="0"> - - 0 - - <_scaleU expr="1"> - - 1 - - <_scaleV expr="1"> - - 1 - - <_offsetU expr="0"> - - 0 - - <_offsetV expr="0"> - - 0 - - <_uvTransform2> - <_uvTransformDirty2> - <_uvRotation2 expr="0"> - - 0 - - <_scaleU2 expr="1"> - - 1 - - <_scaleV2 expr="1"> - - 1 - - <_offsetU2 expr="0"> - - 0 - - <_offsetV2 expr="0"> - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object). - - - - * The SubGeometry object which provides the geometry data for this SubMesh. - - - - - - - - * The material used to render the current SubMesh. If set to null, its parent Mesh's material will be used instead. - - - - - - - - * The scene transform object that transforms from model to world space. - - - - * The inverse scene transform object that transforms from world to model space. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The amount of triangles that make up this SubMesh. - - - - * The animator object that provides the state for the SubMesh's animation. - - - - * Indicates whether the SubMesh should trigger mouse events, and hence should be rendered for hit testing. - - - - - * A reference to the owning Mesh object - * - * @private - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { material : null } - * Creates a new SubMesh object - * @param subGeometry The SubGeometry object which provides the geometry data for this SubMesh. - * @param parentMesh The Mesh object to which this SubMesh belongs. - * @param material An optional material used to render this SubMesh. - - * SubMesh wraps a SubGeometry as a scene graph instantiation. A SubMesh is owned by a Mesh object. - * - * @see away3d.core.base.SubGeometry - * @see away3d.scenegraph.Mesh - - - - <_calcPoint static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - <_vertices> - <_uvs> - <_faceIndex> - <_v0Index> - <_v1Index> - <_v2Index> - <_uv0Index> - <_uv1Index> - <_uv2Index> - - - - - - - - * To set uv values for either uv0, uv1 or uv2. - * @param index The id of the uv (0, 1 or 2) - * @param u The horizontal coordinate of the texture value. - * @param v The vertical coordinate of the texture value. - - - - - - - * To store a temp index of a face during a loop - * @param ind The index - - - - * @return Returns the tmp index set for this Face object - - - - - - - * the index set for uv0 in this Face value object - * @param ind The index - - - - * @return return the index set for uv0 in this Face value object - - - - - - - - * uv0 u and v values - * @param u The u value - * @param v The v value - - - - * @return return the u value of the uv0 of this Face value object - - - - * @return return the v value of the uv0 of this Face value object - - - - - - - * the index set for uv1 in this Face value object - * @param ind The index - - - - * @return Returns the index set for uv1 in this Face value object - - - - - - - - * uv1 u and v values - * @param u The u value - * @param v The v value - - - - * @return Returns the u value of the uv1 of this Face value object - - - - * @return Returns the v value of the uv1 of this Face value object - - - - - - - * the index set for uv2 in this Face value object - * @param ind The index - - - - * @return return the index set for uv2 in this Face value object - - - - - - - - * uv2 u and v values - * @param u The u value - * @param v The v value - - - - * @return return the u value of the uv2 of this Face value object - - - - * @return return the v value of the uv2 of this Face value object - - - - - - - - - - * To set uv values for either v0, v1 or v2. - * @param index The id of the uv (0, 1 or 2) - * @param x The x value of the vertex. - * @param y The y value of the vertex. - * @param z The z value of the vertex. - - - - - - - * set the index value for v0 - * @param ind The index value to store - - - - * @return Returns the index value of the v0 stored in the Face value object - - - - representing the v0 stored in the Face value object]]> - - - - * @return Returns the x value of the v0 stored in the Face value object - - - - * @return Returns the y value of the v0 stored in the Face value object - - - - * @return Returns the z value of the v0 stored in the Face value object - - - - - - - * set the index value for v1 - * @param ind The index value to store - - - - * @return Returns the index value of the v1 stored in the Face value object - - - - representing the v1 stored in the Face value object]]> - - - - * @return Returns the x value of the v1 stored in the Face value object - - - - * @return Returns the y value of the v1 stored in the Face value object - - - - * @return Returns the z value of the v1 stored in the Face value object - - - - - - - * set the index value for v2 - * @param ind The index value to store - - - - * @return return the index value of the v2 stored in the Face value object - - - - representing the v2 stored in the Face value object]]> - - - - * @return Returns the x value of the v2 stored in the Face value object - - - - * @return Returns the y value of the v2 stored in the Face value object - - - - * @return Returns the z value of the v2 stored in the Face value object - - - - * returns a new Face value Object - - - - - - - - { target : null } - * Returns the first two barycentric coordinates for a point on (or outside) the triangle. The third coordinate is 1 - x - y - * @param point The point for which to calculate the new target - * @param target An optional Point object to store the calculation in order to prevent creation of a new object - - - - - - - - { maxDistanceToPlane : .007 } - * Tests whether a given point is inside the triangle - * @param point The point to test against - * @param maxDistanceToPlane The minimum distance to the plane for the point to be considered on the triangle. This is usually used to allow for rounding error, but can also be used to perform a volumetric test. - - - - - - - - { epsilon : .007 } - - - - - - - - { target : null } - * Returns the target coordinates for a point on a triangle - * @param v0 The triangle's first vertex - * @param v1 The triangle's second vertex - * @param v2 The triangle's third vertex - * @param uv0 The UV coord associated with the triangle's first vertex - * @param uv1 The UV coord associated with the triangle's second vertex - * @param uv2 The UV coord associated with the triangle's third vertex - * @param point The point for which to calculate the new target - * @param target An optional UV object to store the calculation in order to prevent creation of a new object - - - - - - - - { uvs : null, vertices : null } - Face value object. - * - * @param vertices [optional] 9 entries long Vector.<Number> representing the x, y and z of v0, v1, and v2 of a face - * @param uvs [optional] 6 entries long Vector.<Number> representing the u and v of uv0, uv1, and uv2 of a face]]> - - * Face value object. - - - - - - - - - - - - - <_u> - <_v> - - - * Defines the vertical coordinate of the texture value. - - - - - - - - * Defines the horizontal coordinate of the texture value. - - - - - - - - * returns a new UV value Object - - - - * returns the value object as a string for trace/debug purpose - - - - - - - - { v : 0, u : 0 } - UV object. - * - * @param u [optional] The horizontal coordinate of the texture value. Defaults to 0. - * @param v [optional] The vertical coordinate of the texture value. Defaults to 0.]]> - - * Texture coordinates value object. - - - - - - - - <_x> - <_y> - <_z> - <_index> - - - - - - * To define/store the index of value object - * @param ind The index - - - - - * To define/store the x value of the value object - * @param value The x value - - - - - - - - * To define/store the y value of the value object - * @param value The y value - - - - - - - - * To define/store the z value of the value object - * @param value The z value - - - - - - - - * returns a new Vertex value Object - - - - * returns the value object as a string for trace/debug purpose - - - - - - - - - - { index : 0, z : 0, y : 0, x : 0 } - Vertex value object. - * - * @param x [optional] The x value. Defaults to 0. - * @param y [optional] The y value. Defaults to 0. - * @param z [optional] The z value. Defaults to 0. - * @param index [optional] The index value. Defaults is NaN.]]> - - * Vertex value object. - - - - - - - - - - <_pool> - <_index> - <_poolSize> - - - - - - - - - - - - - - - - - - - - - - <_pool> - <_index> - <_poolSize> - - - - - - - - <_instances static="1"> - <_currentId expr="0" line="25" static="1"> - - 0 - - - - - - - - - - - - - - <_stage3DProxy> - <_program3Ds> - - - - <_ids> - - - - <_usages> - <_keys> - - - - - - - - - - { agalVersion : 1 } - - - - - - - - - - - - - - - - - - - - - - - - "activate" - The `ACTIVATE` constant defines the value of the `type` property of an - `activate` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - AIR for TV devices never automatically dispatch this event. You can, - however, dispatch it manually. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `activate` event. | - - - - "added" - The `Event.ADDED` constant defines the value of the `type` property of - an `added` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The DisplayObject instance being added to the display list. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "addedToStage" - The `Event.ADDED_TO_STAGE` constant defines the value of the `type` - property of an `addedToStage` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The DisplayObject instance being added to the on stage display list, either directly or through the addition of a sub tree in which the DisplayObject instance is contained. If the DisplayObject instance is being directly added, the `added` event occurs before this event. | - - - - "cancel" - The `Event.CANCEL` constant defines the value of the `type` property - of a `cancel` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | A reference to the object on which the operation is canceled. | - - - - "change" - The `Event.CHANGE` constant defines the value of the `type` property - of a `change` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object that has had its value modified. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "clear" - The `Event.CLEAR` constant defines the value of the `type` property of - a `clear` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any InteractiveObject instance with a listener registered for the `clear` event. | - - **Note:** TextField objects do _not_ dispatch `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. TextField objects always include Cut, - Copy, Paste, Clear, and Select All commands in the context menu. You - cannot remove these commands from the context menu for TextField - objects. For TextField objects, selecting these commands (or their - keyboard equivalents) does not generate `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. However, other classes that extend the - InteractiveObject class, including components built using the Flash - Text Engine (FTE), will dispatch these events in response to user - actions such as keyboard shortcuts and context menus. - - - - "close" - The `Event.CLOSE` constant defines the value of the `type` property of - a `close` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object whose connection has been closed. | - - - - "complete" - The `Event.COMPLETE` constant defines the value of the `type` property - of a `complete` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The network object that has completed loading. | - - - - "connect" - The `Event.CONNECT` constant defines the value of the `type` property - of a `connect` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Socket or XMLSocket object that has established a network connection. | - - - - "context3DCreate" - The `Event.CONTEXT3D_CREATE` constant defines the value of the type property of a - `context3Dcreate` event object. This event is raised only by Stage3D objects in - response to either a call to `Stage3D.requestContext3D` or in response to an OS - triggered reset of the Context3D bound to the Stage3D object. Inspect the - `Stage3D.context3D` property to get the newly created Context3D object. - - - - "copy" - Defines the value of the `type` property of a `copy` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any InteractiveObject instance with a listener registered for the `copy` event. | - - **Note:** TextField objects do _not_ dispatch `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. TextField objects always include Cut, - Copy, Paste, Clear, and Select All commands in the context menu. You - cannot remove these commands from the context menu for TextField - objects. For TextField objects, selecting these commands (or their - keyboard equivalents) does not generate `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. However, other classes that extend the - InteractiveObject class, including components built using the Flash - Text Engine (FTE), will dispatch these events in response to user - actions such as keyboard shortcuts and context menus. - - - - "cut" - Defines the value of the `type` property of a `cut` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any InteractiveObject instance with a listener registered for the `cut` event. | - - **Note:** TextField objects do _not_ dispatch `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. TextField objects always include Cut, - Copy, Paste, Clear, and Select All commands in the context menu. You - cannot remove these commands from the context menu for TextField - objects. For TextField objects, selecting these commands (or their - keyboard equivalents) does not generate `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. However, other classes that extend the - InteractiveObject class, including components built using the Flash - Text Engine (FTE), will dispatch these events in response to user - actions such as keyboard shortcuts and context menus. - - - - "deactivate" - The `Event.DEACTIVATE` constant defines the value of the `type` - property of a `deactivate` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - AIR for TV devices never automatically dispatch this event. You can, - however, dispatch it manually. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `deactivate` event. | - - - - "enterFrame" - The `Event.ENTER_FRAME` constant defines the value of the `type` - property of an `enterFrame` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `enterFrame` event. | - - - - "exitFrame" - The `Event.EXIT_FRAME` constant defines the value of the `type` - property of an `exitFrame` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `enterFrame` event. | - - - - "frameConstructed" - The `Event.FRAME_CONSTRUCTED` constant defines the value of the `type` - property of an `frameConstructed` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `frameConstructed` event. | - - - - "frameLabel" - The `Event.FRAME_LABEL` constant defines the value of the type property of a - `frameLabel` event object. - - **Note:** This event has neither a "capture phase" nor a "bubble phase", which - means that event listeners must be added directly to FrameLabel objects. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The FrameLabel object that is actively processing the Event object with an event listener. | - | `target` | Any FrameLabel instance with a listener registered for the frameLabel event. | - - - - "fullScreen" - The `Event.FULL_SCREEN` constant defines the value of the `type` - property of a `fullScreen` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Stage object. | - - - - "id3" - The `Event.ID3` constant defines the value of the `type` property of - an `id3` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Sound object loading the MP3 for which ID3 data is now available. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "init" - The `Event.INIT` constant defines the value of the `type` property of - an `init` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The LoaderInfo object associated with the SWF file being loaded. | - - - - "mouseLeave" - The `Event.MOUSE_LEAVE` constant defines the value of the `type` - property of a `mouseLeave` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Stage object. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "open" - The `Event.OPEN` constant defines the value of the `type` property of - an `open` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The network object that has opened a connection. | - - - - "paste" - The `Event.PASTE` constant defines the value of the `type` property of - a `paste` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any InteractiveObject instance with a listener registered for the `paste` event. | - - **Note:** TextField objects do _not_ dispatch `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. TextField objects always include Cut, - Copy, Paste, Clear, and Select All commands in the context menu. You - cannot remove these commands from the context menu for TextField - objects. For TextField objects, selecting these commands (or their - keyboard equivalents) does not generate `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. However, other classes that extend the - InteractiveObject class, including components built using the Flash - Text Engine (FTE), will dispatch these events in response to user - actions such as keyboard shortcuts and context menus. - - - - "removed" - The `Event.REMOVED` constant defines the value of the `type` property - of a `removed` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The DisplayObject instance to be removed from the display list. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "removedFromStage" - The `Event.REMOVED_FROM_STAGE` constant defines the value of the - `type` property of a `removedFromStage` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The DisplayObject instance being removed from the on stage display list, either directly or through the removal of a sub tree in which the DisplayObject instance is contained. If the DisplayObject instance is being directly removed, the `removed` event occurs before this event. | - - - - "render" - The `Event.RENDER` constant defines the value of the `type` property - of a `render` event object. - **Note:** This event has neither a "capture phase" nor a "bubble - phase", which means that event listeners must be added directly to any - potential targets, whether the target is on the display list or not. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any DisplayObject instance with a listener registered for the `render` event. | - - - - "resize" - The `Event.RESIZE` constant defines the value of the `type` property - of a `resize` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Stage object. | - - - - "scroll" - The `Event.SCROLL` constant defines the value of the `type` property - of a `scroll` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The TextField object that has been scrolled. The `target` property is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - - "selectAll" - The `Event.SELECT_ALL` constant defines the value of the `type` - property of a `selectAll` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | Any InteractiveObject instance with a listener registered for the `selectAll` event. | - - **Note:** TextField objects do _not_ dispatch `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. TextField objects always include Cut, - Copy, Paste, Clear, and Select All commands in the context menu. You - cannot remove these commands from the context menu for TextField - objects. For TextField objects, selecting these commands (or their - keyboard equivalents) does not generate `clear`, `copy`, `cut`, - `paste`, or `selectAll` events. However, other classes that extend the - InteractiveObject class, including components built using the Flash - Text Engine (FTE), will dispatch these events in response to user - actions such as keyboard shortcuts and context menus. - - - - "soundComplete" - The `Event.SOUND_COMPLETE` constant defines the value of the `type` - property of a `soundComplete` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The SoundChannel object in which a sound has finished playing. | - - - - "tabChildrenChange" - The `Event.TAB_CHILDREN_CHANGE` constant defines the value of the - `type` property of a `tabChildrenChange` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object whose tabChildren flag has changed. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "tabEnabledChange" - The `Event.TAB_ENABLED_CHANGE` constant defines the value of the - `type` property of a `tabEnabledChange` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The InteractiveObject whose tabEnabled flag has changed. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "tabIndexChange" - The `Event.TAB_INDEX_CHANGE` constant defines the value of the `type` - property of a `tabIndexChange` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object whose tabIndex has changed. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "textureReady" - The `Event.TEXTURE_READY` constant defines the value of the type property of a - `textureReady` event object. This event is dispatched by Texture and CubeTexture - objects to signal the completion of an asynchronous upload. Request an asynchronous - upload by using the `uploadCompressedTextureFromByteArray()` method on Texture or - CubeTexture. This event neither bubbles nor is cancelable. - - - - "unload" - The `Event.UNLOAD` constant defines the value of the `type` property - of an `unload` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The LoaderInfo object associated with the SWF file being unloaded or replaced. | - - - - Indicates whether an event is a bubbling event. If the event can bubble, - this value is `true`; otherwise it is `false`. - - When an event occurs, it moves through the three phases of the event - flow: the capture phase, which flows from the top of the display list - hierarchy to the node just before the target node; the target phase, which - comprises the target node; and the bubbling phase, which flows from the - node subsequent to the target node back up the display list hierarchy. - - Some events, such as the `activate` and `unload` - events, do not have a bubbling phase. The `bubbles` property - has a value of `false` for events that do not have a bubbling - phase. - - - - Indicates whether the behavior associated with the event can be prevented. - If the behavior can be canceled, this value is `true`; - otherwise it is `false`. - - - - The object that is actively processing the Event object with an event - listener. For example, if a user clicks an OK button, the current target - could be the node containing that button or one of its ancestors that has - registered an event listener for that event. - - - - The current phase in the event flow. This property can contain the - following numeric values: - - * The capture phase(`EventPhase.CAPTURING_PHASE`). - * The target phase(`EventPhase.AT_TARGET`). - * The bubbling phase(`EventPhase.BUBBLING_PHASE`). - - - - The event target. This property contains the target node. For example, if - a user clicks an OK button, the target node is the display list node - containing that button. - - - - The type of event. The type is case-sensitive. - - <__isCanceled> - - - - <__isCanceledNow> - - - - <__preventDefault> - - - - - - Duplicates an instance of an Event subclass. - - Returns a new Event object that is a copy of the original instance of - the Event object. You do not normally call `clone()`; the - EventDispatcher class calls it automatically when you redispatch an - event - that is, when you call `dispatchEvent(event)` from a - handler that is handling `event`. - - The new Event object includes all the properties of the original. - - When creating your own custom Event class, you must override the - inherited `Event.clone()` method in order for it to duplicate - the properties of your custom class. If you do not set all the properties - that you add in your event subclass, those properties will not have the - correct values when listeners handle the redispatched event. - - In this example, `PingEvent` is a subclass of - `Event` and therefore implements its own version of - `clone()`. - - @return A new Event object that is identical to the original. - - - - - - - - - - - - { p5 : null, p4 : null, p3 : null, p2 : null, p1 : null } - A utility function for implementing the `toString()` method in custom - ActionScript 3.0 Event classes. Overriding the `toString()` method is - recommended, but not required. - - ```haxe - class PingEvent extends Event { - var URL:String; - - public function new() { - super(); - } - - public override function toString():String { - return formatToString("PingEvent", "type", "bubbles", "cancelable", "eventPhase", "URL"); - } - } - ``` - - @param className The name of your custom Event class. In the previous - example, the `className` parameter is `PingEvent`. - @return The name of your custom Event class and the String value of - your `...arguments` parameter. - - - - Checks whether the `preventDefault()` method has been called on - the event. If the `preventDefault()` method has been called, - returns `true`; otherwise, returns `false`. - - @return If `preventDefault()` has been called, returns - `true`; otherwise, returns `false`. - - - - Cancels an event's default behavior if that behavior can be canceled. - Many events have associated behaviors that are carried out by default. For example, if a user types a character into a text field, the default behavior is that the character is displayed in the text field. Because the `TextEvent.TEXT_INPUT` event's default behavior can be canceled, you can use the `preventDefault()` method to prevent the character from appearing. - An example of a behavior that is not cancelable is the default behavior associated with the Event.REMOVED event, which is generated whenever Flash Player is about to remove a display object from the display list. The default behavior (removing the element) cannot be canceled, so the `preventDefault()` method has no effect on this default behavior. - You can use the `Event.cancelable` property to check whether you can prevent the default behavior associated with a particular event. If the value of `Event.cancelable` is true, then `preventDefault()` can be used to cancel the event; otherwise, `preventDefault()` has no effect. - - - - Prevents processing of any event listeners in the current node and any - subsequent nodes in the event flow. This method takes effect immediately, - and it affects event listeners in the current node. In contrast, the - `stopPropagation()` method doesn't take effect until all the - event listeners in the current node finish processing. - - **Note: ** This method does not cancel the behavior associated with - this event; see `preventDefault()` for that functionality. - - - - Prevents processing of any event listeners in nodes subsequent to the - current node in the event flow. This method does not affect any event - listeners in the current node(`currentTarget`). In contrast, - the `stopImmediatePropagation()` method prevents processing of - event listeners in both the current node and subsequent nodes. Additional - calls to this method have no effect. This method can be called in any - phase of the event flow. - - **Note: ** This method does not cancel the behavior associated with - this event; see `preventDefault()` for that functionality. - - - - Returns a string containing all the properties of the Event object. The - string is in the following format: - - `[Event type=_value_ bubbles=_value_ - cancelable=_value_]` - - @return A string containing all the properties of the Event object. - - <__formatToString set="method" line="887"> - - - - - - - - <__init set="method" line="912"> - - - - - - - - - - - { cancelable : false, bubbles : false } - Creates an Event object to pass as a parameter to event listeners. - - @param type The type of the event, accessible as - `Event.type`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. The default value is - `false`. - @param cancelable Determines whether the Event object can be canceled. The - default values is `false`. - - - - - "tags=\"haxe,release\"" - - - - - - - - "mouseOver3d" - * Defines the value of the type property of a mouseOver3d event object. - - - - "mouseOut3d" - * Defines the value of the type property of a mouseOut3d event object. - - - - "mouseUp3d" - * Defines the value of the type property of a mouseUp3d event object. - - - - "mouseDown3d" - * Defines the value of the type property of a mouseDown3d event object. - - - - "mouseMove3d" - * Defines the value of the type property of a mouseMove3d event object. - - - - "click3d" - * Defines the value of the type property of a rollOver3d event object. - - - - "doubleClick3d" - * Defines the value of the type property of a doubleClick3d event object. - - - - "mouseWheel3d" - * Defines the value of the type property of a mouseWheel3d event object. - - - - <_allowedToPropagate expr="true"> - - - true - away3d - - - <_parentEvent> - - away3d - - - - * The horizontal coordinate at which the event occurred in view coordinates. - - - - * The vertical coordinate at which the event occurred in view coordinates. - - - - * The view object inside which the event took place. - - - - * The 3d object inside which the event took place. - - - - * The renderable inside which the event took place. - - - - * The material of the 3d element inside which the event took place. - - - - * The uv coordinate inside the draw primitive where the event took place. - - - - * The index of the face where the event took place. - - - - * The index of the subGeometry where the event took place. - - - - * The position in object space where the event took place - - - - * The normal in object space where the event took place - - - - * Indicates whether the Control key is active (true) or inactive (false). - - - - * Indicates whether the Alt key is active (true) or inactive (false). - - - - * Indicates whether the Shift key is active (true) or inactive (false). - - - - * Indicates how many lines should be scrolled for each unit the user rotates the mouse wheel. - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Creates a copy of the MouseEvent3D object and sets the value of each property to match that of the original. - - - - * The position in scene space where the event took place - - - - - - - { v : null } - * The position in scene space where the event took place - * @param v destination Vector3D - * @return - - - - * The normal in scene space where the event took place - - - - - - - { v : null } - * The normal in scene space where the event took place - * @param v destination Vector3D - * @return - - - - - - - * Create a new MouseEvent3D object. - * @param type The type of the MouseEvent3D. - - * A MouseEvent3D is dispatched when a mouse event occurs over a mouseEnabled object in View3D. - * todo: we don't have screenZ data, tho this should be easy to implement - - - - <_view3Ds static="1"> - - - - <_view3DLookup static="1"> - <_viewCount expr="0" line="29" static="1"> - - 0 - - <_collidingObject static="1"> - <_previousCollidingObject static="1"> - <_collidingViewObjects static="1"> - <_queuedEvents expr="new Vector<MouseEvent3D>()" line="37" static="1"> - - ()]]> - - <_mouseUp expr="new MouseEvent3D(MouseEvent3D.MOUSE_UP)" line="41" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_UP) - - <_mouseClick expr="new MouseEvent3D(MouseEvent3D.CLICK)" line="42" static="1"> - - new MouseEvent3D(MouseEvent3D.CLICK) - - <_mouseOut expr="new MouseEvent3D(MouseEvent3D.MOUSE_OUT)" line="43" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_OUT) - - <_mouseDown expr="new MouseEvent3D(MouseEvent3D.MOUSE_DOWN)" line="44" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_DOWN) - - <_mouseMove expr="new MouseEvent3D(MouseEvent3D.MOUSE_MOVE)" line="45" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_MOVE) - - <_mouseOver expr="new MouseEvent3D(MouseEvent3D.MOUSE_OVER)" line="46" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_OVER) - - <_mouseWheel expr="new MouseEvent3D(MouseEvent3D.MOUSE_WHEEL)" line="47" static="1"> - - new MouseEvent3D(MouseEvent3D.MOUSE_WHEEL) - - <_mouseDoubleClick expr="new MouseEvent3D(MouseEvent3D.DOUBLE_CLICK)" line="48" static="1"> - - new MouseEvent3D(MouseEvent3D.DOUBLE_CLICK) - - <_previousCollidingView expr="-1" line="52" static="1"> - - -1 - - <_collidingView expr="-1" line="53" static="1"> - - -1 - - - - <_activeView> - <_updateDirty expr="true"> - - true - - <_nullVector expr="new Vector3D()"> - - new Vector3D() - - <_mouseMoveEvent expr="new MouseEvent(MouseEvent.MOUSE_MOVE)"> - - new MouseEvent(MouseEvent.MOUSE_MOVE) - - <_forceMouseMove> - <_mousePicker expr="PickingType.RAYCAST_FIRST_ENCOUNTERED"> - - PickingType.RAYCAST_FIRST_ENCOUNTERED - - <_childDepth expr="0"> - - 0 - - <_collidingDownObject> - <_collidingUpObject> - - - - - - - - - - - - - - - - - - - - - - - - - - { collider : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Mouse3DManager object.]]> - - * Mouse3DManager enforces a singleton pattern and is not intended to be instanced. - * it provides a manager class for detecting 3D mouse hits on View3D objects and sending out 3D mouse events. - - - - - <_instances static="1"> - - - - - - - - - - - - - - - - - - <_renderToTextureVertexBuffer> - <_renderToScreenVertexBuffer> - <_indexBuffer> - <_stage3DProxy> - <_viewWidth expr="-1"> - - -1 - - <_viewHeight expr="-1"> - - -1 - - <_textureWidth expr="-1"> - - -1 - - <_textureHeight expr="-1"> - - -1 - - <_renderToTextureRect> - <_buffersInvalid expr="true"> - - true - - <_textureRatioX> - <_textureRatioY> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_instances static="1"> - - - - <_stageProxies static="1"> - <_numStageProxies expr="0" line="22" static="1"> - - 0 - - - - - - - * Gets a Stage3DManager instance for the given Stage object. - * @param stage The Stage object that contains the Stage3D objects to be managed. - * @return The Stage3DManager instance for the given Stage object. - - - - - - <_stage> - - - - - - - - { profile : "baseline", forceSoftware : false } - * Requests the Stage3DProxy for the given index. - * @param index The index of the requested Stage3D. - * @param forceSoftware Whether to force software mode even if hardware acceleration is available. - * @param profile The compatibility profile, an enumeration of Context3DProfile - * @return The Stage3DProxy for the given index. - - - - - - - away3d - * Removes a Stage3DProxy from the manager. - * @param stage3DProxy - * @private - - - - - - - - { profile : "baseline", forceSoftware : false } - * Get the next available stage3DProxy. An error is thrown if there are no Stage3DProxies available - * @param forceSoftware Whether to force software mode even if hardware acceleration is available. - * @param profile The compatibility profile, an enumeration of Context3DProfile - * @return The allocated stage3DProxy - - - - * Checks if a new stage3DProxy can be created and managed by the class. - * @return true if there is one slot free for a new stage3DProxy - - - - * Returns the amount of stage3DProxy objects that can be created and managed by the class - * @return the amount of free slots - - - - * Returns the amount of Stage3DProxy objects currently managed by the class. - * @return the amount of slots used - - - - * Returns the maximum amount of Stage3DProxy objects that can be managed by the class - * @return the maximum amount of Stage3DProxy objects that can be managed by the class - - - - - - - away3d - * Creates a new Stage3DManager class. - * @param stage The Stage object that contains the Stage3D objects to be managed. - * @private - - * The Stage3DManager class provides a multiton object that handles management for Stage3D objects. Stage3D objects - * should not be requested directly, but are exposed by a Stage3DProxy. - * - * @see away3d.core.managers.Stage3DProxy - - - - - - - Specifies the Graphics object belonging to this Shape object, where vector - drawing commands can occur. - - - - - - - - Creates a new Shape object. - - This class is used to create lightweight shapes using the ActionScript - drawing application program interface(API). The Shape class includes a - `graphics` property, which lets you access methods from the - Graphics class. - - The Sprite class also includes a `graphics`property, and it - includes other features not available to the Shape class. For example, a - Sprite object is a display object container, whereas a Shape object is not - (and cannot contain child display objects). For this reason, Shape objects - consume less memory than Sprite objects that contain the same graphics. - However, a Sprite object supports user input events, while a Shape object - does not. - - - "tags=\"haxe,release\"" - - openfl.display.Graphics - - - - <__limeColorMatrix static="1"> - - - - <__pool expr="new ObjectPool<ColorTransform>(function() return new ColorTransform(), function(ct) ct.__identity())" line="59" static="1"> - - - (function() return new ColorTransform(), function(ct) ct.__identity())]]> - - - - - - A decimal value that is multiplied with the alpha transparency channel - value. - - If you set the alpha transparency value of a display object directly by - using the `alpha` property of the DisplayObject instance, it - affects the value of the `alphaMultiplier` property of that - display object's `transform.colorTransform` property. - - - - A number from -255 to 255 that is added to the alpha transparency channel - value after it has been multiplied by the `alphaMultiplier` - value. - - - - A decimal value that is multiplied with the blue channel value. - - - - A number from -255 to 255 that is added to the blue channel value after it - has been multiplied by the `blueMultiplier` value. - - - - The RGB color value for a ColorTransform object. - - When you set this property, it changes the three color offset values - (`redOffset`, `greenOffset`, and - `blueOffset`) accordingly, and it sets the three color - multiplier values(`redMultiplier`, - `greenMultiplier`, and `blueMultiplier`) to 0. The - alpha transparency multiplier and offset values do not change. - - When you pass a value for this property, use the format - 0x_RRGGBB_. _RR_, _GG_, and _BB_ each consist of two - hexadecimal digits that specify the offset of each color component. The 0x - tells the ActionScript compiler that the number is a hexadecimal - value. - - - - A decimal value that is multiplied with the green channel value. - - - - A number from -255 to 255 that is added to the green channel value after - it has been multiplied by the `greenMultiplier` value. - - - - A decimal value that is multiplied with the red channel value. - - - - A number from -255 to 255 that is added to the red channel value after it - has been multiplied by the `redMultiplier` value. - - - - - - - Concatenates the ColorTranform object specified by the `second` - parameter with the current ColorTransform object and sets the current - object as the result, which is an additive combination of the two color - transformations. When you apply the concatenated ColorTransform object, - the effect is the same as applying the `second` color - transformation after the _original_ color transformation. - - @param second The ColorTransform object to be combined with the current - ColorTransform object. - - - - Formats and returns a string that describes all of the properties of - the ColorTransform object. - - @return A string that lists all of the properties of the - ColorTransform object. - - <__clone set="method" line="213"> - - - - <__copyFrom set="method" line="218"> - - - - - - - <__combine set="method" line="231"> - - - - - - - <__identity set="method" line="244"> - - - - <__invert set="method" line="256"> - - - - <__equals set="method" line="268"> - - - - - - - - <__isDefault set="method" line="281"> - - - - - - - <__setArrays set="method" line="300"> - - - - - - - - - - - - - - - - - - - <__toLimeColorMatrix set="method" line="332"> - - - - - - - - - - - - - - - - { alphaOffset : 0, blueOffset : 0, greenOffset : 0, redOffset : 0, alphaMultiplier : 1, blueMultiplier : 1, greenMultiplier : 1, redMultiplier : 1 } - Creates a ColorTransform object for a display object with the specified - color channel values and alpha values. - - @param redMultiplier The value for the red multiplier, in the range from - 0 to 1. - @param greenMultiplier The value for the green multiplier, in the range - from 0 to 1. - @param blueMultiplier The value for the blue multiplier, in the range - from 0 to 1. - @param alphaMultiplier The value for the alpha transparency multiplier, in - the range from 0 to 1. - @param redOffset The offset value for the red color channel, in the - range from -255 to 255. - @param greenOffset The offset value for the green color channel, in - the range from -255 to 255. - @param blueOffset The offset for the blue color channel value, in the - range from -255 to 255. - @param alphaOffset The offset for alpha transparency channel value, in - the range from -255 to 255. - - The ColorTransform class lets you adjust the color values in a display - object. The color adjustment or _color transformation_ can be applied - to all four channels: red, green, blue, and alpha transparency. - - When a ColorTransform object is applied to a display object, a new value - for each color channel is calculated like this: - - - * New red value = (old red value * `redMultiplier`) + - `redOffset` - * New green value = (old green value * `greenMultiplier`) + - `greenOffset` - * New blue value = (old blue value * `blueMultiplier`) + - `blueOffset` - * New alpha value = (old alpha value * `alphaMultiplier`) + - `alphaOffset` - - - If any of the color channel values is greater than 255 after the - calculation, it is set to 255. If it is less than 0, it is set to 0. - - You can use ColorTransform objects in the following ways: - - - * In the `colorTransform` parameter of the - `colorTransform()` method of the BitmapData class - * As the `colorTransform` property of a Transform object - (which can be used as the `transform` property of a display - object) - - - You must use the `new ColorTransform()` constructor to create - a ColorTransform object before you can call the methods of the - ColorTransform object. - - Color transformations do not apply to the background color of a movie - clip(such as a loaded SWF object). They apply only to graphics and symbols - that are attached to the movie clip. - - - "tags=\"haxe,release\"" - - - - - - <_frameEventDriver expr="new Shape()" line="55" static="1"> - - new Shape() - - - - - <_vbUploadCount expr="0" line="667" static="1"> - - 0 - - <_ibUploadCount expr="0" line="668" static="1"> - - 0 - - <_bmpUploadCount expr="0" line="670" static="1"> - - 0 - - <_atfUploadCount expr="0" line="671" static="1"> - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_context3D> - - away3d - - <_stage3DIndex expr="-1"> - - - -1 - away3d - - - <_usesSoftwareRendering> - <_profile> - <_stage3D> - <_activeProgram3D> - <_stage3DManager> - <_backBufferWidth> - <_backBufferHeight> - <_antiAlias> - <_enableDepthAndStencil> - <_backBufferEnableDepthAndStencil expr="true"> - - true - - <_contextRequested> - <_renderTarget> - <_renderSurfaceSelector> - <_scissorRect> - <_color> - <_backBufferDirty> - <_viewPort> - <_enterFrame> - <_exitFrame> - <_viewportUpdated> - <_viewportDirty> - <_bufferClear> - <_mouse3DManager> - <_touch3DManager> - - - - - - - - * Disposes the Stage3DProxy object, freeing the Context3D attached to the Stage3D. - - - - - - - - - - * Configures the back buffer associated with the Stage3D object. - * @param backBufferWidth The width of the backbuffer. - * @param backBufferHeight The height of the backbuffer. - * @param antiAlias The amount of anti-aliasing to use. - * @param enableDepthAndStencil Indicates whether the back buffer contains a depth and stencil buffer. - - - - - - - - - - - - - - - - { surfaceSelector : 0, enableDepthAndStencil : false } - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event. Special case for enterframe and exitframe events - will switch Stage3DProxy into automatic render mode. - * You can register event listeners on all nodes in the display list for a specific type of event, phase, and priority. - * - * @param type The type of event. - * @param listener The listener function that processes the event. - * @param useCapture Determines whether the listener works in the capture phase or the target and bubbling phases. If useCapture is set to true, the listener processes the event only during the capture phase and not in the target or bubbling phase. If useCapture is false, the listener processes the event only during the target or bubbling phase. To listen for the event in all three phases, call addEventListener twice, once with useCapture set to true, then again with useCapture set to false. - * @param priority The priority level of the event listener. The priority is designated by a signed 32-bit integer. The higher the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. If two or more listeners share the same priority, they are processed in the order in which they were added. The default priority is 0. - * @param useWeakReference Determines whether the reference to the listener is strong or weak. A strong reference (the default) prevents your listener from being garbage-collected. A weak reference does not. - - - - - - - - - - - - { useCapture : false } - * Removes a listener from the EventDispatcher object. Special case for enterframe and exitframe events - will switch Stage3DProxy out of automatic render mode. - * If there is no matching listener registered with the EventDispatcher object, a call to this method has no effect. - * - * @param type The type of event. - * @param listener The listener object to remove. - * @param useCapture Specifies whether the listener was registered for the capture phase or the target and bubbling phases. If the listener was registered for both the capture phase and the target and bubbling phases, two calls to removeEventListener() are required to remove both, one call with useCapture() set to true, and another call with useCapture() set to false. - - - - - - - - - * The index of the Stage3D which is managed by this instance of Stage3DProxy. - - - - * The base Stage3D object associated with this proxy. - - - - * The Context3D object associated with the given Stage3D object. - - - - * The driver information as reported by the Context3D object (if any) - - - - * Indicates whether the Stage3D managed by this proxy is running in software mode. - * Remember to wait for the CONTEXT3D_CREATED event before checking this property, - * as only then will it be guaranteed to be accurate. - - - - * The x position of the Stage3D. - - - - - - - - * The y position of the Stage3D. - - - - - - - - * The width of the Stage3D. - - - - - - - - * The height of the Stage3D. - - - - - - - - * The antiAliasing of the Stage3D. - - - - - - - - * A viewPort rectangle equivalent of the Stage3D size and position. - - - - * The background color of the Stage3D. - - - - - - - - * The visibility of the Stage3D. - - - - - - - - * The freshly cleared state of the backbuffer before any rendering - - - - - - - - - - - - - - - - - - * Frees the Context3D associated with this Stage3DProxy. - - - - - - - - - - - - { profile : "baseline", forceSoftware : false } - * Requests a Context3D object to attach to the managed Stage3D. - - - - - - - * The Enter_Frame handler for processing the proxy.ENTER_FRAME and proxy.EXIT_FRAME event handlers. - * Typically the proxy.ENTER_FRAME listener would render the layers for this Stage3D instance. - - - - - - - - - - - - - - - - - - - - { numTriangles : -1, firstIndex : 0 } - - - - - - - - - - - { profile : "baseline", forceSoftware : false } - * Creates a Stage3DProxy object. This method should not be called directly. Creation of Stage3DProxy objects should - * be handled by Stage3DManager. - * @param stage3DIndex The index of the Stage3D to be proxied. - * @param stage3D The Stage3D to be proxied. - * @param stage3DManager - * @param forceSoftware Whether to force software mode even if hardware acceleration is available. - - * Stage3DProxy provides a proxy class to manage a single Stage3D instance as well as handling the creation and - * attachment of the Context3D (and in turn the back buffer) is uses. Stage3DProxy should never be created directly, - * but requested through Stage3DManager. - * - * @see away3d.core.managers.Stage3DProxy - * - * todo: consider moving all creation methods (createVertexBuffer etc) in here, so that disposal can occur here - * along with the context, instead of scattered throughout the framework - - - - <_collidingObjectFromTouchId static="1"> - - - - <_previousCollidingObjectFromTouchId static="1"> - - - - <_queuedEvents expr="new Vector<TouchEvent3D>()" line="28" static="1"> - - ()]]> - - - - - <_updateDirty expr="true"> - - true - - <_nullVector expr="new Vector3D()"> - - new Vector3D() - - <_numTouchPoints> - <_touchPoint> - <_collidingObject> - <_previousCollidingObject> - <_touchPoints> - <_touchPointFromId> - - - - <_touchMoveEvent expr="new TouchEvent(TouchEvent.TOUCH_MOVE)"> - - new TouchEvent(TouchEvent.TOUCH_MOVE) - - <_forceTouchMove> - <_touchPicker expr="PickingType.RAYCAST_FIRST_ENCOUNTERED"> - - PickingType.RAYCAST_FIRST_ENCOUNTERED - - <_view> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 180 / Math.PI - * The amount to multiply with when converting radians to degrees. - - - - Math.PI / 180 - * The amount to multiply with when converting degrees to radians. - - * MathConsts provides some commonly used mathematical constants - - - - - - - - - - - - - { rotation : 0, scale : 1 } - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - Interpolates the translation, rotation, and scale transformation of one matrix - toward those of the target matrix. - - The `interpolate()` method avoids some of the unwanted results that can occur - when using methods such as the display object's axis rotation properties. The - `interpolate()` method invalidates the cached value of the rotation property of - the display object and converts the orientation elements of the display object's - matrix to a quaternion before interpolation. This method guarantees the shortest, - most efficient path for the rotation. It also produces a smooth, gimbal-lock-free - rotation. A gimbal lock can occur when using Euler Angles, where each axis is - handled independently. During the rotation around two or more axes, the axes can - become aligned, leading to unexpected results. Quaternion rotation avoids the - gimbal lock. - - Consecutive calls to the `interpolate()` method can produce the effect of a - display object starting quickly and then slowly approaching another display - object. For example, if you set the `thisMat` parameter to the returned Matrix3D - object, the `toMat` parameter to the target display object's associated Matrix3D - object, and the `percent` parameter to 0.1, the display object moves ten percent - toward the target object. On subsequent calls or in subsequent frames, the object - moves ten percent of the remaining 90 percent, then ten percent of the remaining - distance, and continues until it reaches the target. - - @param thisMat The Matrix3D object that is to be interpolated. - @param toMat The target Matrix3D object. - @param percent A value between 0 and 1 that determines the percent the - `thisMat` Matrix3D object is interpolated toward the target Matrix3D object. - @returns A Matrix3D object with elements that place the values of the matrix - between the original matrix and the target matrix. When the returned matrix is - applied to the this display object, the object moves the specified percent closer - to the target object. - - <__getAxisRotation set="method" line="1622" static="1"> - - - - - - - - - - - - A Number that determines whether a matrix is invertible. - - A Matrix3D object must be invertible. You can use the `determinant` property to make - sure that a Matrix3D object is invertible. If determinant is zero, an inverse of - the matrix does not exist. For example, if an entire row or column of a matrix is - zero or if two rows or columns are equal, the determinant is zero. Determinant is - also used to solve a series of equations. - - Only a square matrix, like the Matrix3D class, has a determinant. - - - - A Vector3D object that holds the position, the 3D coordinate (x,y,z) of a display - object within the transformation's frame of reference. The `position` property - provides immediate access to the translation vector of the display object's - matrix without needing to decompose and recompose the matrix. - - With the `position` property, you can get and set the translation elements of the - transformation matrix. - - - - A Vector of 16 Numbers, where every four elements is a column of a 4x4 matrix. - - An exception is thrown if the `rawData` property is set to a matrix that is not - invertible. The Matrix3D object must be invertible. If a non-invertible matrix is - needed, create a subclass of the Matrix3D object. - - - - - - - A Vector of 16 Numbers, where every four elements is a column of a 4x4 matrix. - - An exception is thrown if the `rawData` property is set to a matrix that is not - invertible. The Matrix3D object must be invertible. If a non-invertible matrix is - needed, create a subclass of the Matrix3D object. - - - - - - - - - { pivotPoint : null } - Appends an incremental rotation to a Matrix3D object. When the Matrix3D object is - applied to a display object, the matrix performs the rotation after other - transformations in the Matrix3D object. - - The display object's rotation is defined by an axis, an incremental degree of - rotation around the axis, and an optional pivot point for the center of the - object's rotation. The axis can be any general direction. The common axes are the - `X_AXIS (Vector3D(1,0,0))`, `Y_AXIS (Vector3D(0,1,0))`, and - `Z_AXIS (Vector3D(0,0,1))`. In aviation terminology, the rotation about the y axis - is called yaw. The rotation about the x axis is called pitch. The rotation about - the z axis is called roll. - - The order of transformation matters. A rotation followed by a translation - transformation produces a different effect than a translation followed by a - rotation transformation. - - The rotation effect is not absolute. It is relative to the current position and - orientation. To make an absolute change to the transformation matrix, use the - `recompose()` method. The `appendRotation()` method is also different from the - axis rotation property of the display object, such as `rotationX` property. The - `rotation` property is always performed before any translation, whereas the - `appendRotation()` method is performed relative to what is already in the matrix. - To make sure that you get a similar effect as the display object's axis rotation - property, use the `prependRotation()` method, which performs the rotation before - other transformations in the matrix. - - When the `appendRotation()` method's transformation is applied to a Matrix3D object - of a display object, the cached rotation property values of the display object - are invalidated. - - One way to have a display object rotate around a specific point relative to its - location is to set the translation of the object to the specified point, rotate - the object using the `appendRotation()` method, and translate the object back to - the original position. In the following example, the myObject 3D display object - makes a y-axis rotation around the coordinate (10,10,0). - - ```haxe - myObject.z = 1; - myObject.transform.matrix3D.appendTranslation(10,10,0); - myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS); - myObject.transform.matrix3D.appendTranslation(-10,-10,0); - ``` - - @param degrees The degree of the rotation. - @param axis The axis or direction of rotation. The usual axes are the - `X_AXIS (Vector3D(1,0,0))`, `Y_AXIS (Vector3D(0,1,0))`, and - `Z_AXIS (Vector3D(0,0,1))`. This vector should have a length of one. - @param pivotPoint A point that determines the center of an object's rotation. - The default pivot point for an object is its registration point. - - - - - - - - - Appends an incremental scale change along the x, y, and z axes to a Matrix3D - object. When the Matrix3D object is applied to a display object, the matrix - performs the scale changes after other transformations in the Matrix3D object. - The default scale factor is (1.0, 1.0, 1.0). - - The scale is defined as a set of three incremental changes along the three axes - (x,y,z). You can multiply each axis with a different number. When the scale - changes are applied to a display object, the object's size increases or decreases. - For example, setting the x, y, and z axes to two doubles the size of the object, - while setting the axes to 0.5 halves the size. To make sure that the scale - transformation only affects a specific axis, set the other parameters to one. A - parameter of one means no scale change along the specific axis. - - The `appendScale()` method can be used for resizing as well as for managing - distortions, such as stretch or contract of a display object, or for zooming in - and out on a location. Scale transformations are automatically performed during a - display object's rotation and translation. - - The order of transformation matters. A resizing followed by a translation - transformation produces a different effect than a translation followed by a - resizing transformation. - - @param xScale A multiplier used to scale the object along the x axis. - @param yScale A multiplier used to scale the object along the y axis. - @param zScale A multiplier used to scale the object along the z axis. - - - - - - - - - Appends an incremental translation, a repositioning along the x, y, and z axes, - to a Matrix3D object. When the Matrix3D object is applied to a display object, - the matrix performs the translation changes after other transformations in the - Matrix3D object. - - The translation is defined as a set of three incremental changes along the - three axes (x,y,z). When the transformation is applied to a display object, the - display object moves from it current location along the x, y, and z axes as - specified by the parameters. To make sure that the translation only affects a - specific axis, set the other parameters to zero. A zero parameter means no change - along the specific axis. - - The translation changes are not absolute. They are relative to the current - position and orientation of the matrix. To make an absolute change to the - transformation matrix, use the recompose() method. The order of transformation - also matters. A translation followed by a rotation transformation produces a - different effect than a rotation followed by a translation. - - @param x An incremental translation along the x axis. - @param y An incremental translation along the y axis. - @param z An incremental translation along the z axis. - - - - Returns a new Matrix3D object that is an exact copy of the current Matrix3D object. - - @returns A new Matrix3D object that is an exact copy of the current Matrix3D - object. - - - - - - - - Copies a Vector3D object into specific column of the calling Matrix3D object. - - @param column The destination column of the copy. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - - Copies specific column of the calling Matrix3D object into the Vector3D object. - - @param column The column from which to copy the data. - @param vector3D The destination Vector3D object of the copy. - - - - - - - Copies all of the matrix data from the source Matrix3D object into the calling - Matrix3D object. - - @param sourceMatrix3D The Matrix3D object from which to copy the data. - - - - - - - - - { transpose : false, index : 0 } - Copies all of the vector data from the source vector object into the calling - Matrix3D object. The optional `index` parameter allows you to select any starting - slot in the vector. - - @param vector The vector object from which to copy the data. - @param index - @param transpose - - - - - - - - - { transpose : false, index : 0 } - Copies all of the matrix data from the calling Matrix3D object into the - provided vector. The optional index parameter allows you to select any target - starting slot in the vector. - - @param vector The vector object to which to copy the data. - @param index - @param transpose - - - - - - - - Copies a Vector3D object into specific row of the calling Matrix3D object. - - @param row The row from which to copy the data to. - @param vector3D The Vector3D object from which to copy the data. - - - - - - - - Copies specific row of the calling Matrix3D object into the Vector3D object. - - @param row The row from which to copy the data from. - @param vector3D The Vector3D object to copy the data into. - - - - - - - @param other - - - - - - - { orientationStyle : EULER_ANGLES } - Returns the transformation matrix's translation, rotation, and scale settings as - a Vector of three Vector3D objects. The first Vector3D object holds the - translation elements. The second Vector3D object holds the rotation elements. - The third Vector3D object holds the scale elements. - - Some Matrix3D methods, such as the `interpolateTo()` method, automatically - decompose and recompose the matrix to perform their transformation. - - To modify the matrix's transformation with an absolute parent frame of reference, - retrieve the settings with the `decompose()` method and make the appropriate - changes. You can then set the Matrix3D object to the modified transformation - using the `recompose()` method. - - The `decompose()` method's parameter specifies the orientation style that is - meant to be used for the transformation. The default orientation is `eulerAngles`, - which defines the orientation with three separate angles of rotation for each - axis. The rotations occur consecutively and do not change the axis of each other. - The display object's axis rotation properties perform Euler Angles orientation - style transformation. The other orientation style options are `axisAngle` and - `quaternion`. The Axis Angle orientation uses a combination of an axis and an - angle to determine the orientation. The axis around which the object is rotated - is a unit vector that represents a direction. The angle represents the magnitude - of the rotation about the vector. The direction also determines where a display - object is facing and the angle determines which way is up. The `appendRotation()` - and `prependRotation()` methods use the Axis Angle orientation. The `quaternion` - orientation uses complex numbers and the fourth element of a vector. The three - axes of rotation (x,y,z) and an angle of rotation (w) represent the orientation. - The `interpolate()` method uses quaternion. - - @param orientationStyle An optional parameter that determines the orientation - style used for the matrix transformation. The three types of orientation style - are `eulerAngles` (constant `EULER_ANGLES`), `axisAngle` (constant `AXIS_ANGLE`), - and `quaternion` (constant `QUATERNION`). For additional information on the - different orientation style, see the geom.Orientation3D class. - @returns A Vector of three Vector3D objects, each holding the translation, - rotation, and scale settings, respectively. - - - - - - - Uses the transformation matrix without its translation elements to transform a - Vector3D object from one space coordinate to another. The returned Vector3D - object holds the new coordinates after the rotation and scaling transformations - have been applied. If the `deltaTransformVector()` method applies a matrix that - only contains a translation transformation, the returned Vector3D is the same as - the original Vector3D object. - - You can use the `deltaTransformVector()` method to have a display object in one - coordinate space respond to the rotation transformation of a second display - object. The object does not copy the rotation; it only changes its position to - reflect the changes in the rotation. For example, to use the display.Graphics - API for drawing a rotating 3D display object, you must map the object's rotating - coordinates to a 2D point. First, retrieve the object's 3D coordinates after each - rotation, using the `deltaTransformVector()` method. Next, apply the display - object's `local3DToGlobal()` method to translate the 3D coordinates to 2D points. - You can then use the 2D points to draw the rotating 3D object. - - **Note:** This method automatically sets the `w` component of the passed Vector3D - to 0.0. - - @param v A Vector3D object holding the coordinates that are going to be - transformed. - @returns Vector3D A Vector3D object with the transformed coordinates. - - - - Converts the current matrix to an identity or unit matrix. An identity matrix has - a value of one for the elements on the main diagonal and a value of zero for all - other elements. The result is a matrix where the rawData value is - 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1 and the rotation setting is set to - `Vector3D(0,0,0)`, the position or translation setting is set to `Vector3D(0,0,0)`, - and the scale is set to `Vector3D(1,1,1)`. Here is a representation of an - identity matrix. - - ![Identity Matrix](/images/identityMatrix.jpg) - - An object transformed by applying an identity matrix performs no transformation. - In other words, if a matrix is multiplied by an identity matrix, the result is a - matrix that is the same as (identical to) the original matrix. - - - - - - - - Interpolates this matrix towards the translation, rotation, and scale - transformations of the target matrix. - - The `interpolateTo()` method avoids the unwanted results that can occur when - using methods such as the display object's axis rotation properties. The - `interpolateTo()` method invalidates the cached value of the rotation property of - the display object and converts the orientation elements of the display object's - matrix to a quaternion before interpolation. This method guarantees the shortest, - most efficient path for the rotation. It also produces a smooth, gimbal-lock-free - rotation. A gimbal lock can occur when using Euler Angles, where each axis is - handled independently. During the rotation around two or more axes, the axes can - become aligned, leading to unexpected results. Quaternion rotation avoids the - gimbal lock. - - **Note:** In case of interpolation, the scaling value of the matrix will reset and - the matrix will be normalized. - - Consecutive calls to the `interpolateTo()` method can produce the effect of a - display object starting quickly and then slowly approaching another display - object. For example, if the percent parameter is set to 0.1, the display object - moves ten percent toward the target object specified by the `toMat` parameter. - On subsequent calls or in subsequent frames, the object moves ten percent of the - remaining 90 percent, then ten percent of the remaining distance, and continues - until it reaches the target. - - @param toMat The target Matrix3D object. - @param percent A value between 0 and 1 that determines the location of the - display object relative to the target. The closer the value is to 1.0, the closer - the display object is to its current position. The closer the value is to 0, the - closer the display object is to the target. - - - - Inverts the current matrix. An inverted matrix is the same size as the original - but performs the opposite transformation of the original matrix. For example, if - the original matrix has an object rotate around the x axis in one direction, the - inverse of the matrix will have the object rotate around the axis in the opposite - direction. Applying an inverted matrix to an object undoes the transformation - performed by the original matrix. If a matrix is multiplied by its inverse - matrix, the result is an identity matrix. - - An inverse of a matrix can be used to divide one matrix by another. The way to - divide matrix A by matrix B is to multiply matrix A by the inverse of matrix B. - The inverse matrix can also be used with a camera space. When the camera moves in - the world space, the object in the world needs to move in the opposite direction - to transform from the world view to the camera or view space. For example, if the - camera moves closer, the objects becomes bigger. In other words, if the camera - moves down the world z axis, the object moves up world z axis. - - The `invert()` method replaces the current matrix with an inverted matrix. If you - want to invert a matrix without altering the current matrix, first copy the - current matrix by using the clone() method and then apply the `invert()` method - to the copy. - - The Matrix3D object must be invertible. - - @returns Returns `true` if the matrix was successfully inverted. - - - - - - - - - { up : null, at : null } - Rotates the display object so that it faces a specified position. This method - allows for an in-place modification to the orientation. The forward direction - vector of the display object (the at Vector3D object) points at the specified - world-relative position. The display object's up direction is specified with the - up Vector3D object. - - The `pointAt()` method invalidates the cached rotation property value of the - display object. The method decomposes the display object's matrix and modifies the - rotation elements to have the object turn to the specified position. It then - recomposes (updates) the display object's matrix, which performs the - transformation. If the object is pointing at a moving target, such as a moving - object's position, then with each subsequent call, the method has the object - rotate toward the moving target. - - **Note:** If you use the `Matrix3D.pointAt()` method without setting the - optional parameters, a target object does not face the specified world-relative - position by default. You need to set the values for at to the -y-axis (0,-1,0) - and up to the -z axis (0,0,-1). - - @param pos The world-relative position of the target object. World-relative - defines the object's transformation relative to the world space and coordinates, - where all objects are positioned. - @param at The object-relative vector that defines where the display object is - pointing. Object-relative defines the object's transformation relative to the - object space, the object's own frame of reference and coordinate system. Default - value is the +y axis (0,1,0). - @param up The object-relative vector that defines "up" for the display object. - If the object is drawn looking down from above, the +z axis is its "up" vector. - Object-relative defines the object's transformation relative to the object space, - the object's own frame of reference and coordinate system. Default value is the - +z-axis (0,0,1). - - - - - - - Prepends a matrix by multiplying the current Matrix3D object by another Matrix3D - object. The result combines both matrix transformations. - - Matrix multiplication is different from matrix addition. Matrix multiplication is - not commutative. In other words, A times B is not equal to B times A. With the - `prepend()` method, the multiplication happens from the right side, meaning the `rhs` - Matrix3D object is on the right side of the multiplication operator. - - ```haxe - thisMatrix = thisMatrix * rhs - ``` - - The modifications made by `prepend()` method are object-space-relative. In other - words, they are always relative to the object's initial frame of reference. - - The `prepend()` method replaces the current matrix with the prepended matrix. If - you want to prepend two matrixes without altering the current matrix, first copy - the current matrix by using the `clone()` method and then apply the `prepend()` - method to the copy. - - @param rhs A right-hand-side of the matrix by which the current Matrix3D is - multiplied. - - - - - - - - - { pivotPoint : null } - Prepends an incremental rotation to a Matrix3D object. When the Matrix3D object is - applied to a display object, the matrix performs the rotation before other - transformations in the Matrix3D object. - - The display object's rotation is defined by an axis, an incremental degree of - rotation around the axis, and an optional pivot point for the center of the - object's rotation. The axis can be any general direction. The common axes are the - `X_AXIS (Vector3D(1,0,0))`, `Y_AXIS (Vector3D(0,1,0))`, and - `Z_AXIS (Vector3D(0,0,1))`. In aviation terminology, the rotation about the y - axis is called yaw. The rotation about the x axis is called pitch. The rotation - about the z axis is called roll. - - The order of transformation matters. A rotation followed by a translation - transformation produces a different effect than a translation followed by a - rotation. - - The rotation effect is not absolute. The effect is object-relative, relative to - the frame of reference of the original position and orientation. To make an - absolute change to the transformation, use the `recompose()` method. - - When the `prependRotation()` method's transformation is applied to a Matrix3D - object of a display object, the cached rotation property values of the display - object are invalidated. - - One way to have a display object rotate around a specific point relative to its - location is to set the translation of the object to the specified point, rotate - the object using the `prependRotation()` method, and translate the object back to - the original position. In the following example, the `myObject` 3D display object - makes a y-axis rotation around the coordinate (10,10,0). - - ```haxe - myObject.z = 1; - myObject.transform.matrix3D.prependTranslation(10,10,0); - myObject.transform.matrix3D.prependRotation(1, Vector3D.Y_AXIS); - myObject.transform.matrix3D.prependTranslation(-10,-10,0); - ``` - - @param degrees The degree of rotation. - @param axis The axis or direction of rotation. The usual axes are the - `X_AXIS (Vector3D(1,0,0))`, `Y_AXIS (Vector3D(0,1,0))`, and - `Z_AXIS (Vector3D(0,0,1))`. This vector should have a length of one. - @param pivotPoint A point that determines the center of rotation. The default - pivot point for an object is its registration point. - - - - - - - - - Prepends an incremental scale change along the x, y, and z axes to a Matrix3D - object. When the Matrix3D object is applied to a display object, the matrix - performs the scale changes before other transformations in the Matrix3D - object. The changes are object-relative, relative to the frame of reference of - the original position and orientation. The default scale factor is (1.0, 1.0, 1.0). - - The scale is defined as a set of three incremental changes along the three - axes (x,y,z). You can multiply each axis with a different number. When the - scale changes are applied to a display object, the object's size increases or - decreases. For example, setting the x, y, and z axes to two doubles the size of - the object, while setting the axes to 0.5 halves the size. To make sure that the - scale transformation only affects a specific axis, set the other parameters to - one. A parameter of one means no scale change along the specific axis. - - The `prependScale()` method can be used for resizing as well as for managing - distortions, such as stretch or contract of a display object. It can also be used - for zooming in and out on a location. Scale transformations are automatically - performed during a display object's rotation and translation. - - The order of transformation matters. A resizing followed by a translation - transformation produces a different effect than a translation followed by a - resizing transformation. - - @param xScale A multiplier used to scale the object along the x axis. - @param yScale A multiplier used to scale the object along the y axis. - @param zScale A multiplier used to scale the object along the z axis. - - - - - - - - - Prepends an incremental translation, a repositioning along the x, y, and z axes, - to a Matrix3D object. When the Matrix3D object is applied to a display object, - the matrix performs the translation changes before other transformations in the - Matrix3D object. - - Translation specifies the distance the display object moves from its current - location along the x, y, and z axes. The `prependTranslation()` method sets the - translation as a set of three incremental changes along the three axes (x,y,z). - To have a translation change only a specific axis, set the other parameters to - zero. A zero parameter means no change along the specific axis. - - The translation changes are not absolute. The effect is object-relative, - relative to the frame of reference of the original position and orientation. - To make an absolute change to the transformation matrix, use the `recompose()` - method. The order of transformation also matters. A translation followed by a - rotation transformation produces a different effect than a rotation followed by - a translation transformation. When prependTranslation() is used, the display - object continues to move in the direction it is facing, regardless of the other - transformations. For example, if a display object was facing toward a positive x - axis, it continues to move in the direction specified by the - `prependTranslation()` method, regardless of how the object has been rotated. To - make translation changes occur after other transformations, use the - `appendTranslation()` method. - - @param x An incremental translation along the x axis. - @param y An incremental translation along the y axis. - @param z An incremental translation along the z axis. - - - - - - - - { orientationStyle : EULER_ANGLES } - Sets the transformation matrix's translation, rotation, and scale settings. Unlike - the incremental changes made by the display object's rotation properties or - Matrix3D object's rotation methods, the changes made by `recompose()` method are - absolute changes. The `recompose()` method overwrites the matrix's transformation. - - To modify the matrix's transformation with an absolute parent frame of reference, - retrieve the settings with the decompose() method and make the appropriate - changes. You can then set the Matrix3D object to the modified transformation - using the `recompose()` method. - - The `recompose()` method's parameter specifies the orientation style that was - used for the transformation. The default orientation is eulerAngles, which defines - the orientation with three separate angles of rotation for each axis. The - rotations occur consecutively and do not change the axis of each other. The - display object's axis rotation properties perform Euler Angles orientation style - transformation. The other orientation style options are axisAngle and quaternion. - The Axis Angle orientation uses the combination of an axis and an angle to - determine the orientation. The axis around which the object is rotated is a unit - vector that represents a direction. The angle represents the magnitude of the - rotation about the vector. The direction also determines where a display object - is facing and the angle determines which way is up. The `appendRotation()` and - `prependRotation()` methods use the Axis Angle orientation. The quaternion - orientation uses complex numbers and the fourth element of a vector. An - orientation is represented by the three axes of rotation (x,y,z) and an angle of - rotation (w). The interpolate() method uses quaternion. - - @param components A Vector of three Vector3D objects that replace the Matrix3D - object's translation, rotation, and scale elements. - @param orientationStyle An optional parameter that determines the orientation - style used for the matrix transformation. The three types of orientation styles - are eulerAngles (constant `EULER_ANGLES`), axisAngle (constant `AXIS_ANGLE`), and - quaternion (constant `QUATERNION`). For additional information on the different - orientation style, see the geom.Orientation3D class. - @returns Returns `false` if any of the Vector3D elements of the components - Vector do not exist or are `null`. - - - - - - - Uses the transformation matrix to transform a Vector3D object from one space - coordinate to another. The returned Vector3D object holds the new coordinates - after the transformation. All the matrix transformations including translation - are applied to the Vector3D object. - - If the result of the `transformVector()` method was applied to the position of a - display object, only the display object's position changes. The display object's - rotation and scale elements remain the same. - - **Note:** This method automatically sets the w component of the passed Vector3D - to 1.0. - - @param v A Vector3D object holding the coordinates that are going to be - transformed. - @returns A Vector3D object with the transformed coordinates. - - - - - - - - Uses the transformation matrix to transform a Vector of Numbers from one - coordinate space to another. The `tranformVectors()` method reads every three - Numbers in the `vin` Vector object as a 3D coordinate (x,y,z) and places a - transformed 3D coordinate in the `vout` Vector object. All the matrix - transformations including translation are applied to the `vin` Vector object. - You can use the `transformVectors()` method to render and transform a 3D object - as a mesh. A mesh is a collection of vertices that defines the shape of the object. - - @param vin A Vector of Floats, where every three Numbers are a 3D coordinate - (x,y,z) that is going to be transformed. - @param vout A Vector of Floats, where every three Numbers are a 3D - transformed coordinate (x,y,z). - - - - Converts the current Matrix3D object to a matrix where the rows and columns are - swapped. For example, if the current Matrix3D object's rawData contains the - following 16 numbers, `1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34`, the - `transpose()` method reads every four elements as a row and turns the rows into - columns. The result is a matrix with the rawData of: - `1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34`. - - The `transpose()` method replaces the current matrix with a transposed matrix. - If you want to transpose a matrix without altering the current matrix, first copy - the current matrix by using the `clone()` method and then apply the `transpose()` - method to the copy. - - An orthogonal matrix is a square matrix whose transpose is equal to its inverse. - - - - - - - - - - - - - { v : null } - - The Matrix3D class represents a transformation matrix that determines the position and - orientation of a three-dimensional (3D) display object. The matrix can perform - transformation functions including translation (repositioning along the x, y, and z - axes), rotation, and scaling (resizing). The Matrix3D class can also perform - perspective projection, which maps points from the 3D coordinate space to a - two-dimensional (2D) view. - - A single matrix can combine multiple transformations and apply them at once to a 3D - display object. For example, a matrix can be applied to 3D coordinates to perform a - rotation followed by a translation. - - When you explicitly set the `z` property or any of the rotation or scaling properties - of a display object, a corresponding Matrix3D object is automatically created. - - You can access a 3D display object's Matrix3D object through the `transform.matrix3d` - property. 2D objects do not have a Matrix3D object. - - The value of the `z` property of a 2D object is zero and the value of its `matrix3D` - property is `null`. - - **Note:** If the same Matrix3D object is assigned to two different display objects, a - runtime error is thrown. - - The Matrix3D class uses a 4x4 square matrix: a table of four rows and columns of - numbers that hold the data for the transformation. The first three rows of the matrix - hold data for each 3D axis (x,y,z). The translation information is in the last column. - The orientation and scaling data are in the first three columns. The scaling factors - are the diagonal numbers in the first three columns. Here is a representation of - Matrix3D elements: - - ![Matrix3D elements](/images/Matrix3Delements.jpg) - - You don't need to understand matrix mathematics to use the Matrix3D class. It offers - specific methods that simplify the task of transformation and projection, such as the - `appendTranslation()`, `appendRotation()`, or `interpolateTo()` methods. You also can - use the `decompose()` and `recompose()` methods or the `rawData` property to access - the underlying matrix elements. - - Display objects cache their axis rotation properties to have separate rotation for - each axis and to manage the different combinations of rotations. When a method of a - Matrix3D object is called to transform a display object, the rotation cache of the - object is invalidated. - - - "tags=\"haxe,release\"" - - - - - - - (16)]]> - * A reference to a Vector to be used as a temporary raw data container, to prevent object creation. - - - - new Matrix3D() - - - - new Vector3D() - - - - Vector.ofArray([new Vector3D(), new Vector3D(), new Vector3D()]) - - - - - - - - { m : null } - * Fills the 3d matrix object with values representing the transformation made by the given quaternion. - * - * @param quarternion The quarterion object to convert. - - - - - - - - { v : null } - Vector3D object representing the forward vector of the given matrix. - * @param m The Matrix3D object to use to get the forward vector - * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null. - * @return The forward vector]]> - - - - - - - - { v : null } - Vector3D object representing the up vector of the given matrix. - * @param m The Matrix3D object to use to get the up vector - * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null. - * @return The up vector]]> - - - - - - - - { v : null } - Vector3D object representing the right vector of the given matrix. - * @param m The Matrix3D object to use to get the right vector - * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null. - * @return The right vector]]> - - - - - - - - * Returns a boolean value representing whether there is any significant difference between the two given 3d matrices. - - - - - - - - - - - - - - - { target : null } - - - - - - - - { orientationStyle : EULER_ANGLES } - - - - - - - - - { result : null } - - - - - - - - - { result : null } - - - - - - - - { result : null } - - - - - - - - * Matrix3DUtils provides additional Matrix3D math functions. - - - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - * The A coefficient of this plane. (Also the x dimension of the plane normal) - - - - * The B coefficient of this plane. (Also the y dimension of the plane normal) - - - - * The C coefficient of this plane. (Also the z dimension of the plane normal) - - - - * The D coefficient of this plane. (Also the inverse dot product between normal and point) - - <_alignment> - - away3d - - - - - - - - - * Fills this Plane3D with the coefficients from 3 points in 3d space. - * @param p0 Vector3D - * @param p1 Vector3D - * @param p2 Vector3D - - - - - - - - * Fills this Plane3D with the coefficients from the plane's normal and a point in 3d space. - * @param normal Vector3D - * @param point Vector3D - - - - * Normalize this Plane3D - * @return Plane3D This Plane3D. - - - - - - - * Returns the signed distance between this Plane3D and the point p. - * @param p Vector3D - * @returns Number - - - - - - - - { epsilon : 0.01 } - * Classify a point against this Plane3D. (in front, back or intersecting) - * @param p Vector3D - * @return int Plane3.FRONT or Plane3D.BACK or Plane3D.INTERSECT - - - - - - - - - - - { d : 0, c : 0, b : 0, a : 0 } - * Create a Plane3D with ABCD coefficients - - - - - - - 0 - - - - 1 - - - - 0 - - - - 1 - - - - 2 - - - - <_distributions static="1"> - - - - - - - - - - - Math.PI - - - - - - - - Vector3D object. - * - * @param w The first 3d number object to use in the calculation. - * @param q The first 3d number object to use in the calculation. - * @return An angle in radians representing the angle between the two Vector3D objects.]]> - - - - - - - Vector3D object with the euler angles represented by the 3x3 matrix rotation of the given Matrix3D object. - * - * @param m1 The 3d matrix object to use in the calculation. - * @return A 3d vector representing the euler angles extracted from the 3d matrix.]]> - - - - - - - Vector3D object containing the euler angles represented by the given Quaternion object. - * - * @param quaternion The quaternion object to use in the calculation. - * @return A 3d vector representing the euler angles extracted from the quaternion.]]> - - - - - - - Vector3D object containing the scale values represented by the given Matrix3D object. - * - * @param m The 3d matrix object to use in the calculation. - * @return A 3d vector representing the axis scale values extracted from the 3d matrix.]]> - - - - - - - - - - - - - * Vector3DUtils provides additional Vector3D math functions. - - - - - - - <_parent> - - away3d - - <_childNodes> - <_numChildNodes> - <_debugPrimitive> - <_numEntities> - - away3d - - <_collectionMark> - - away3d - - - - - - - - - * The parent node. Null if this node is the root. - - - - - - - away3d - * Adds a node to the tree. By default, this is used for both static as dynamic nodes, but for some data - * structures such as BSP trees, it can be more efficient to only use this for dynamic nodes, and add the - * static child nodes using custom links. - * - * @param node The node to be added as a child of the current node. - - - - - - - away3d - * Removes a child node from the tree. - * @param node The child node to be removed. - - - - - - - - * Tests if the current node is at least partly inside the frustum. - * @param viewProjectionRaw The raw data of the view projection matrix - * - * @return Whether or not the node is at least partly inside the view frustum. - - - - - - - - * Tests if the current node is intersecting with a ray. - * @param rayPosition The starting position of the ray - * @param rayDirection The direction vector of the ray - * - * @return Whether or not the node is at least partly intersecting the ray. - - - - - - - * Finds the partition that contains (or should contain) the given entity. - - - - - - - * Allows the traverser to visit the current node. If the traverser's enterNode method returns true, the - * traverser will be sent down the child nodes of the tree. - * This method should be overridden if the order of traversal is important (such as for BSP trees) - or if static - * child nodes are not added using addNode, but are linked to separately. - * - * @param traverser The traverser visiting the node. - * - * @see away3d.core.traverse.PartitionTraverser - - - - - - - - - - * Creates a new NodeBase object. - - * The NodeBase class is an abstract base class for any type of space partition tree node. The concrete - * subtype will control the creation of its child nodes, which are necessarily of the same type. The exception is - * the creation of leaf entity nodes, which is handled by the Partition3D class. - * - * @see away3d.partition.EntityNode - * @see away3d.partition.Partition3D - * @see away3d.containers.Scene3D - - - - - - <_entity> - <_updateQueueNext> - - away3d - * The link to the next object in the list to be updated - * @private - - - - * The entity contained in this leaf node. - - - - - - - * @inheritDoc - - - - * Detaches the node from its parent. - - - - - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new EntityNode object. - * @param entity The Entity to be contained in this leaf node. - - * The EntityNode class provides an abstract base class for leaf nodes in a partition tree, containing - * entities to be fed to the EntityCollector traverser. - * The concrete subtype of Entity is responsible for creating a matching subtype of EntityNode. - * - * @see away3d.scenegraph.Entity - * @see away3d.core.traverse.EntityCollector - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new CameraNode object. - * @param camera The camera to be contained in the node. - - * CameraNode is a space partitioning leaf node that contains a Camera3D object. - - - - - - <_light> - - - * The light object contained in this node. - - - - - - - * @inheritDoc - - - - - - - * Creates a new LightNode object. - * @param light The light to be contained in the node. - - * LightNode is a space partitioning leaf node that contains a LightBase object. - - - - - - - - <_minX> - <_minY> - <_minZ> - <_leaves> - <_numCellsX> - <_numCellsY> - <_numCellsZ> - <_cellWidth> - <_cellHeight> - <_cellDepth> - <_showDebugBounds> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * DynamicGrid is used by certain partitioning systems that require vislists for regions of dynamic data. - - - - <_minX> - <_minY> - <_minZ> - <_maxX> - <_maxY> - <_maxZ> - <_centerX> - <_centerY> - <_centerZ> - <_halfExtentX> - <_halfExtentY> - <_halfExtentZ> - - - - - - away3d - - - - - - - - - - - - - - - - - * InvertedOctreeNode is an octree data structure not used hierarchically for culling, but for fast dynamic insertion. - * The data structure is essentially a grid, but "overarching" parent container nodes for entities striding across nodes. - * If this is visible, so is the parent. - * Traversal happens invertedly too. - - - - - - <_light> - - - * The light object contained in this node. - - - - - - - * @inheritDoc - - - - - - - * Creates a new LightNode object. - * @param light The light to be contained in the node. - - * LightNode is a space partitioning leaf node that contains a LightBase object. Used for lights that are not of default supported type. - - - - - - <_light> - - - * The light object contained in this node. - - - - - - - * @inheritDoc - - - - - - - * Creates a new LightNode object. - * @param light The light to be contained in the node. - - * LightNode is a space partitioning leaf node that contains a LightBase object. - - - - - - <_mesh> - - - * The mesh object contained in the partition node. - - - - - - - * @inheritDoc - - - - - - - * Creates a new MeshNode object. - * @param mesh The mesh to be contained in the node. - - * MeshNode is a space partitioning leaf node that contains a Mesh object. - - - - - - - * Creates a new NullNode object. - - * NullNode is a node that performs no space partitioning, but simply stores all objects in a - * list of leaf nodes. This partitioning system is most useful for simple content, or content that is always in the - * screen, such as a 3d user interface. - - - - - <_rootNode> - <_updatesMade> - <_updateQueue> - - - - - - - - - - - * Sends a traverser through the partition tree. - * @param traverser - * - * @see away3d.core.traverse.PartitionTraverser - - - - - - - away3d - * Mark a scene graph entity for updating. This will trigger a reassignment within the tree, based on the - * object's bounding box, upon the next traversal. - * @param entity The entity to be updated in the tree. - - - - - - - away3d - * Removes an entity from the partition tree. - * @param entity The entity to be removed. - - - - * Updates all entities that were marked for update. - - - - - - - * Creates a new Partition3D object. - * @param rootNode The root node of the space partition system. This will indicate which type of data structure will be used. - - * Partition3D is the core of a space partition system. The space partition system typically subdivides the 3D scene - * hierarchically into a number of non-overlapping subspaces, forming a tree data structure. This is used to more - * efficiently perform frustum culling, potential visibility determination and collision detection. - - - - - - - - - - - - - <_centerX> - <_centerY> - <_centerZ> - <_minX> - <_minY> - <_minZ> - <_maxX> - <_maxY> - <_maxZ> - <_quadSize> - <_depth> - <_leaf> - <_rightTopFar> - <_leftTopFar> - <_rightBottomFar> - <_leftBottomFar> - <_rightTopNear> - <_leftTopNear> - <_rightBottomNear> - <_leftBottomNear> - <_halfExtent> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { depth : 0, centerZ : 0, centerY : 0, centerX : 0, size : 10000, maxDepth : 5 } - - - - - - - <_light> - - - * The light object contained in this node. - - - - - - - * @inheritDoc - - - - - - - * Creates a new LightNode object. - * @param light The light to be contained in the node. - - * LightNode is a space partitioning leaf node that contains a LightBase object. - - - - - - - - - - - - { height : 1000000 } - - - - - <_centerX> - <_centerZ> - <_depth> - <_leaf> - <_height> - <_rightFar> - <_leftFar> - <_rightNear> - <_leftNear> - <_halfExtentXZ> - <_halfExtentY> - - - - - - - - - - - - - - - - - - - - - - - - - - - { depth : 0, centerZ : 0, centerX : 0, height : 1000000, size : 10000, maxDepth : 5 } - - - - - - <_renderable> - - - - - - * @inheritDoc - - - - - - - * Creates a new RenderableNode object. - * @param mesh The mesh to be contained in the node. - - * RenderableNode is a space partitioning leaf node that contains any Entity that is itself a IRenderable - * object. This excludes Mesh (since the renderable objects are its SubMesh children). - - - - - <_skyBox> - - - - - - * @inheritDoc - - - - - - - - - - - - * Creates a new SkyBoxNode object. - * @param skyBox The SkyBox to be contained in the node. - - * SkyBoxNode is a space partitioning leaf node that contains a SkyBox object. - - - - - <_entityWorldBounds static="1"> - - - - - - - - - - - - - - - <_width> - <_height> - <_depth> - <_cellSize> - <_numCellsX> - <_numCellsY> - <_numCellsZ> - <_cells> - <_minX> - <_minY> - <_minZ> - <_maxX> - <_maxY> - <_maxZ> - <_active> - - away3d - - - - - - - - - - - - - - - - { indexZ : 0, indexY : 0, indexX : 0 } - - - - - - - - - - { indexZ : 0, indexY : 0, indexX : 0 } - - - - - - - - - - { indexZ : 0, indexY : 0, indexX : 0 } - - - - - - - - - - { indexZ : 0, indexY : 0, indexX : 0 } - - - - - - - - - - * Enable the use of a cell. Do this if the camera or casting light can potentially be in this cell. - * If the ViewVolume was constructed with gridSize -1, it does not need to be called - * @param indexX The x-index of the cell - * @param indexY The y-index of the cell - * @param indexZ The z-index of the cell - - - - - - - - - * Disables the use of a cell. Do this only if the camera or casting light can never be in this cell. - * @param indexX The x-index of the cell - * @param indexY The y-index of the cell - * @param indexZ The z-index of the cell - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { indexZ : 0, indexY : 0, indexX : 0, dynamicGrid : null } - * Adds all static geometry in a scene that intersects a given region, as well as the dynamic grid if provided. - * @param minBounds The minimum bounds of the region to be considered visible - * @param maxBounds The maximum bounds of the region to be considered visible - * @param scene The Scene3D object containing the static objects to be added. - * @param dynamicGrid The DynamicGrid belonging to the partition this will be used with - * @param indexX An optional index for the cell within ViewVolume. If created with gridSize -1, this is typically avoided. - * @param indexY An optional index for the cell within ViewVolume. If created with gridSize -1, this is typically avoided. - * @param indexZ An optional index for the cell within ViewVolume. If created with gridSize -1, this is typically avoided. - - - - - - - - - { dynamicGrid : null } - * A shortcut method for addVisibleRegion, that adds static geometry in a scene that intersects a given viewvolume, as well as the dynamic grid if provided. - * @param viewVolume The viewVolume providing the region - * @param scene The Scene3D object containing the static objects to be added. - * @param dynamicGrid The DynamicGrid belonging to the partition this will be used with - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { cellSize : -1 } - * Creates a new ViewVolume with given dimensions. A ViewVolume is a region where the camera or a shadow casting light could reside in. - * - * @param minBound The minimum boundaries of the view volume (the bottom-left-near corner) - * @param maxBound The maximum boundaries of the view volume (the top-right-far corner) - * @param cellSize The size of cell subdivisions for the view volume. The default value is -1, meaning the view volume will not be subdivided. This is the value that should usually be used when setting visibility info manually. - - - - - - ()]]> - - - - ()]]> - - - - - - - - - - - - - - - - - * Adds a view volume to provide visibility info for a given region. - - - - - - - - * A dynamic grid to be able to determine visibility of dynamic objects. If none is provided, dynamic objects are only frustum-culled. - * If provided, ViewVolumes need to have visible grid cells assigned from the same DynamicGrid instance. - - - - - - - - - - - <_viewVolumes> - <_activeVolume> - <_dynamicGrid> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Sets the position and direction of a picking ray in local coordinates to the entity. - * - * @param localDirection The position vector in local coordinates - * @param localPosition The direction vector in local coordinates - - - - - - - - - SubMesh object for a collision with the picking ray. - * - * @param subMesh The SubMesh instance to be tested. - * @param pickingCollisionVO The collision object used to store the collision results - * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray.]]> - - RaycastPicker picking object. - * - * @see away3d.entities.Entity#pickingCollider - * @see away3d.core.pick.RaycastPicker]]> - - - - <_pbPickingCollider> - <_haxePickingCollider> - <_activePickingCollider> - - - 1024 - SubMesh object over which PixelBender is used.]]> - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - { findClosestCollision : false } - AutoPickingCollider object. - * - * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.]]> - - RaycastPicker picking object. - * Chooses between pure AS3 picking and PixelBender picking based on a threshold property representing - * the number of triangles encountered in a SubMesh object over which PixelBender is used. - * - * @see away3d.entities.Entity#pickingCollider - * @see away3d.core.pick.RaycastPicker]]> - - - - - - - - - - - - - - { normal : null } - - - - - - - - - - - - - - - { uv : null } - - - - - - - - - - - - - - - - * @inheritDoc - - - * An abstract base class for all picking collider classes. It should not be instantiated directly. - - - - - <_findClosestCollision> - - - - - - - - * @inheritDoc - - - - - - - { findClosestCollision : false } - HaxePickingCollider object. - * - * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.]]> - - RaycastPicker picking object. - * - * @see away3d.entities.Entity#pickingCollider - * @see away3d.core.pick.RaycastPicker]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Gets the collision object from the screen coordinates of the picking ray. - * - * @param x The x coordinate of the picking ray in screen-space. - * @param y The y coordinate of the picking ray in screen-space. - * @param view The view on which the picking object acts. - - - - - - - - - * Gets the collision object from the scene position and direction of the picking ray. - * - * @param position The position of the picking ray in scene-space. - * @param direction The direction of the picking ray in scene-space. - * @param scene The scene on which the picking object acts. - - - - * Determines whether the picker takes account of the mouseEnabled properties of entities. Defaults to true. - - - - * Disposes memory used by the IPicker object - - * Provides an interface for picking objects that can pick 3d objects from a view or scene. - - - - - <_findClosestCollision> - <_rayTriangleKernel> - <_lastSubMeshUploaded> - <_kernelOutputBuffer> - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - { findClosestCollision : false } - PBPickingCollider object. - * - * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.]]> - - RaycastPicker picking object. - * - * @see away3d.entities.Entity#pickingCollider - * @see away3d.core.pick.RaycastPicker]]> - - - - - - null - * Default null collider that forces picker to only use entity bounds for hit calculations on an Entity - - - - new HaxePickingCollider(false) - * Pure Haxe picking collider that returns the first encountered hit on an Entity. Useful for low poly meshes and applying to many mesh instances. - * - * @see away3d.core.pick.HaxePickingCollider - - - - new HaxePickingCollider(true) - * Pure Haxe picking collider that returns the best (closest) hit on an Entity. Useful for low poly meshes and applying to many mesh instances. - * - * @see away3d.core.pick.HaxePickingCollider - - - - new PBPickingCollider(false) - * PixelBender-based picking collider that returns the first encountered hit on an Entity. Useful for fast picking high poly meshes on desktop devices. - * To use this, the SubGeometry must have its vertex data in separate buffers: use Geometry::convertToSeparateBuffers() to ensure this. - * - * @see away3d.core.pick.PBPickingCollider - - - - new PBPickingCollider(true) - * PixelBender-based picking collider that returns the best (closest) hit on an Entity. Useful for fast picking high poly meshes on desktop devices. - * To use this, the SubGeometry must have its vertex data in separate buffers: use Geometry::convertToSeparateBuffers() to ensure this. - * - * @see away3d.core.pick.PBPickingCollider - - - - new AutoPickingCollider(false) - SubMesh object over which PixelBender is used. - * Useful for picking meshes with a mixture of polycounts. - * - * @see away3d.core.pick.AutoPickingCollider - * @see away3d.core.pick.AutoPickingCollider#triangleThreshold]]> - - - - new AutoPickingCollider(true) - SubMesh object over which PixelBender is used. - * Useful for picking meshes with a mixture of polycounts. - * - * @see away3d.core.pick.AutoPickingCollider - * @see away3d.core.pick.AutoPickingCollider#triangleThreshold]]> - - RaycastPicker picking object. - * - * @see away3d.entities.Entity#pickingCollider - * @see away3d.core.pick.RaycastPicker]]> - - - - - * The entity to which this collision object belongs. - - - - * The local position of the collision on the entity's surface. - - - - * The local normal vector at the position of the collision. - - - - * The uv coordinate at the position of the collision. - - - - * The index of the face where the event took pl ace. - - - - * The index of the subGeometry where the event took place. - - - - * The starting position of the colliding ray in local coordinates. - - - - * The direction of the colliding ray in local coordinates. - - - - * The starting position of the colliding ray in scene coordinates. - - - - * The direction of the colliding ray in scene coordinates. - - - - * Determines if the ray position is contained within the entity bounds. - * - * @see away3d.entities.Entity#bounds - - - - * The distance along the ray from the starting position to the calculated intersection entry point with the entity. - - - - * The IRenderable associated with a collision. - - - - - - - PickingCollisionVO object. - * - * @param entity The entity to which this collision object belongs.]]> - - * Value object for a picking collision returned by a picking collider. Created as unique objects on entities - * - * @see away3d.entities.Entity#pickingCollisionVO - * @see away3d.core.pick.IPickingCollider - - - - - - - new Vector3D() - - - - new Vector3D() - - - <_findClosestCollision> - <_raycastCollector expr="new RaycastCollector()"> - - new RaycastCollector() - - <_ignoredEntities expr="new Array<Entity>()"> - - ()]]> - - <_onlyMouseEnabled expr="true"> - - true - - <_entities> - <_numEntities> - <_hasCollisions> - - - * @inheritDoc - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RaycastPicker object. - * - * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray, - * or simply returns the first collision encountered Defaults to false.]]> - - * Picks a 3d object from a view or scene by 3D raycast calculations. - * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray, - * then triggers an optional picking collider on individual entity objects to further determine the precise values of the picking ray collision. - - - - <__limeRectangle static="1"> - - - - <__pool expr="new ObjectPool<Rectangle>(function() return new Rectangle(), function(r) r.setTo(0, 0, 0, 0))" line="62" static="1"> - - - (function() return new Rectangle(), function(r) r.setTo(0, 0, 0, 0))]]> - - - - - - The sum of the `y` and `height` properties. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The location of the Rectangle object's bottom-right corner, determined - by the values of the `right` and `bottom` properties. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The height of the rectangle, in pixels. Changing the `height` value of - a Rectangle object has no effect on the `x`, `y`, and `width` - properties. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The _x_ coordinate of the top-left corner of the rectangle. Changing - the `left` property of a Rectangle object has no effect on the `y` and - `height` properties. However it does affect the `width` property, - whereas changing the `x` value does _not_ affect the `width` property. - - The value of the `left` property is equal to the value of the `x` - property. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The sum of the `x` and `width` properties. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The size of the Rectangle object, expressed as a Point object with the - values of the `width` and `height` properties. - - - - The _y_ coordinate of the top-left corner of the rectangle. Changing - the `top` property of a Rectangle object has no effect on the `x` and - `width` properties. However it does affect the `height` property, - whereas changing the `y` value does _not_ affect the `height` - property. - The value of the `top` property is equal to the value of the `y` - property. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The location of the Rectangle object's top-left corner, determined by - the _x_ and _y_ coordinates of the point. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The width of the rectangle, in pixels. Changing the `width` value of a - Rectangle object has no effect on the `x`, `y`, and `height` - properties. - - ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) - - - - The _x_ coordinate of the top-left corner of the rectangle. Changing - the value of the `x` property of a Rectangle object has no - effect on the `y`, `width`, and `height` - properties. - - The value of the `x` property is equal to the value of the - `left` property. - - - - The _y_ coordinate of the top-left corner of the rectangle. Changing - the value of the `y` property of a Rectangle object has no - effect on the `x`, `width`, and `height` - properties. - - The value of the `y` property is equal to the value of the - `top` property. - - - - Returns a new Rectangle object with the same values for the - `x`, `y`, `width`, and - `height` properties as the original Rectangle object. - - @return A new Rectangle object with the same values for the - `x`, `y`, `width`, and - `height` properties as the original Rectangle object. - - - - - - - - Determines whether the specified point is contained within the rectangular - region defined by this Rectangle object. - - @param x The _x_ coordinate(horizontal position) of the point. - @param y The _y_ coordinate(vertical position) of the point. - @return A value of `true` if the Rectangle object contains the - specified point; otherwise `false`. - - - - - - - Determines whether the specified point is contained within the rectangular - region defined by this Rectangle object. This method is similar to the - `Rectangle.contains()` method, except that it takes a Point - object as a parameter. - - @param point The point, as represented by its _x_ and _y_ - coordinates. - @return A value of `true` if the Rectangle object contains the - specified point; otherwise `false`. - - - - - - - Determines whether the Rectangle object specified by the `rect` - parameter is contained within this Rectangle object. A Rectangle object is - said to contain another if the second Rectangle object falls entirely - within the boundaries of the first. - - @param rect The Rectangle object being checked. - @return A value of `true` if the Rectangle object that you - specify is contained by this Rectangle object; otherwise - `false`. - - - - - - - Copies all of rectangle data from the source Rectangle object into the calling - Rectangle object. - - @param sourceRect The Rectangle object from which to copy the data. - - - - - - - Determines whether the object specified in the `toCompare` - parameter is equal to this Rectangle object. This method compares the - `x`, `y`, `width`, and - `height` properties of an object against the same properties of - this Rectangle object. - - @param toCompare The rectangle to compare to this Rectangle object. - @return A value of `true` if the object has exactly the same - values for the `x`, `y`, `width`, - and `height` properties as this Rectangle object; - otherwise `false`. - - - - - - - - Increases the size of the Rectangle object by the specified amounts, - in pixels. The center point of the Rectangle object stays the same, - and its size increases to the left and right by the `dx` value, and to - the top and the bottom by the `dy` value. - - @param dx The value to be added to the left and the right of the - Rectangle object. The following equation is used to - calculate the new width and position of the rectangle: - - ```as3 - x -= dx; - width += 2 * dx; - ``` - @param dy The value to be added to the top and the bottom of the - Rectangle. The following equation is used to calculate the - new height and position of the rectangle: - - ``` - y -= dy; - height += 2 * dy; - ``` - - - - - - - Increases the size of the Rectangle object. This method is similar to - the `Rectangle.inflate()` method except it takes a Point object as a - parameter. - The following two code examples give the same result: - - ```haxe - var rect1 = new Rectangle(0,0,2,5); - rect1.inflate(2,2); - ``` - ```haxe - var rect1 = new Rectangle(0,0,2,5); - var pt1 = new Point(2,2); - rect1.inflatePoint(pt1); - ``` - - @param point The `x` property of this Point object is used to increase - the horizontal dimension of the Rectangle object. The `y` - property is used to increase the vertical dimension of - the Rectangle object. - - - - - - - If the Rectangle object specified in the `toIntersect` parameter - intersects with this Rectangle object, returns the area of - intersection as a Rectangle object. If the rectangles do not - intersect, this method returns an empty Rectangle object with its - properties set to 0. - - ![The resulting intersection rectangle.](/images/rectangle_intersect.jpg) - - @param toIntersect The Rectangle object to compare against to see if - it intersects with this Rectangle object. - @return A Rectangle object that equals the area of intersection. If - the rectangles do not intersect, this method returns an empty - Rectangle object; that is, a rectangle with its `x`, `y`, - `width`, and `height` properties set to 0. - - - - - - - Determines whether the object specified in the `toIntersect` - parameter intersects with this Rectangle object. This method checks the - `x`, `y`, `width`, and - `height` properties of the specified Rectangle object to see if - it intersects with this Rectangle object. - - @param toIntersect The Rectangle object to compare against this Rectangle - object. - @return A value of `true` if the specified object intersects - with this Rectangle object; otherwise `false`. - - - - Determines whether or not this Rectangle object is empty. - - @return A value of `true` if the Rectangle object's width or - height is less than or equal to 0; otherwise `false`. - - - - - - - - Adjusts the location of the Rectangle object, as determined by its - top-left corner, by the specified amounts. - - @param dx Moves the _x_ value of the Rectangle object by this amount. - @param dy Moves the _y_ value of the Rectangle object by this amount. - - - - - - - Adjusts the location of the Rectangle object using a Point object as a - parameter. This method is similar to the `Rectangle.offset()` - method, except that it takes a Point object as a parameter. - - @param point A Point object to use to offset this Rectangle object. - - - - Sets all of the Rectangle object's properties to 0. A Rectangle object is - empty if its width or height is less than or equal to 0. - - This method sets the values of the `x`, `y`, - `width`, and `height` properties to 0. - - - - - - - - - - Sets the members of Rectangle to the specified values - - @param xa the values to set the rectangle to. - @param ya - @param widtha - @param heighta - - - - - - - - Adds two rectangles together to create a new Rectangle object, by - filling in the horizontal and vertical space between the two - rectangles. - - ![The resulting union rectangle.](/images/rectangle_union.jpg) - - **Note:** The `union()` method ignores rectangles with `0` as the - height or width value, such as: `var rect2:Rectangle = new Rectangle(300,300,50,0);` - - @param toUnion A Rectangle object to add to this Rectangle object. - @return A new Rectangle object that is the union of the two - rectangles. - - <__contract set="method" line="554"> - - - - - - - - - - <__expand set="method" line="577"> - - - - - - - - - - <__toLimeRectangle set="method" line="606"> - - - - <__transform set="method" line="618"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { height : 0, width : 0, y : 0, x : 0 } - Creates a new Rectangle object with the top-left corner specified by the - `x` and `y` parameters and with the specified - `width` and `height` parameters. If you call this - function without parameters, a rectangle with `x`, - `y`, `width`, and `height` properties set - to 0 is created. - - @param x The _x_ coordinate of the top-left corner of the - rectangle. - @param y The _y_ coordinate of the top-left corner of the - rectangle. - @param width The width of the rectangle, in pixels. - @param height The height of the rectangle, in pixels. - - A Rectangle object is an area defined by its position, as indicated by its - top-left corner point(_x_, _y_) and by its width and its height. - - - The `x`, `y`, `width`, and - `height` properties of the Rectangle class are independent of - each other; changing the value of one property has no effect on the others. - However, the `right` and `bottom` properties are - integrally related to those four properties. For example, if you change the - value of the `right` property, the value of the - `width` property changes; if you change the `bottom` - property, the value of the `height` property changes. - - The following methods and properties use Rectangle objects: - - - * The `applyFilter()`, `colorTransform()`, - `copyChannel()`, `copyPixels()`, `draw()`, - `fillRect()`, `generateFilterRect()`, - `getColorBoundsRect()`, `getPixels()`, - `merge()`, `paletteMap()`, - `pixelDisolve()`, `setPixels()`, and - `threshold()` methods, and the `rect` property of the - BitmapData class - * The `getBounds()` and `getRect()` methods, and - the `scrollRect` and `scale9Grid` properties of the - DisplayObject class - * The `getCharBoundaries()` method of the TextField - class - * The `pixelBounds` property of the Transform class - * The `bounds` parameter for the `startDrag()` - method of the Sprite class - * The `printArea` parameter of the `addPage()` - method of the PrintJob class - - - You can use the `new Rectangle()` constructor to create a - Rectangle object. - - **Note:** The Rectangle class does not define a rectangular Shape - display object. To draw a rectangular Shape object onscreen, use the - `drawRect()` method of the Graphics class. - - - "tags=\"haxe,release\"" - - - - - - - - new Rectangle(0, 0, 1, 1) - - - <_stage3DProxy> - <_context> - <_onlyMouseEnabled expr="true"> - - true - - <_objectProgram3D> - <_triangleProgram3D> - <_bitmapData> - <_viewportData> - <_boundOffsetScale> - <_id> - <_interactives expr="new Vector<IRenderable>()"> - - ()]]> - - <_interactiveId> - <_hitColor> - <_projX> - <_projY> - <_hitRenderable> - <_hitEntity> - <_localHitPosition expr="new Vector3D()"> - - new Vector3D() - - <_hitUV expr="new Point()"> - - new Point() - - <_faceIndex> - <_subGeometryIndex> - <_localHitNormal expr="new Vector3D()"> - - new Vector3D() - - <_rayPos expr="new Vector3D()"> - - new Vector3D() - - <_rayDir expr="new Vector3D()"> - - new Vector3D() - - <_potentialFound> - - - * @inheritDoc - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * Draw a list of renderables. - * @param renderables The renderables to draw. - * @param camera The camera for which to render. - - - - - - - - * Creates the Program3D that color-codes objects. - - - - * Creates the Program3D that renders positions. - - - - - - - * Gets more detailed information about the hir position, if required. - * @param camera The camera used to view the hit object. - - - - - - - * Finds a first-guess approximate position about the hit position. - * @param camera The camera used to view the hit object. - - - - - - - * Use the approximate position info to find the face under the mouse position from which we can derive the precise - * ray-face intersection point, then use barycentric coordinates to figure out the uv coordinates, etc. - * @param camera The camera used to view the hit object. - - - - - - - - - - - - - * Finds the precise hit position by unprojecting the screen coordinate back unto the hit face's plane and - * calculating the intersection point. - * @param camera The camera used to render the object. - * @param invSceneTransform The inverse scene transformation of the hit object. - * @param nx The x-coordinate of the face's plane normal. - * @param ny The y-coordinate of the face plane normal. - * @param nz The z-coordinate of the face plane normal. - * @param px The x-coordinate of a point on the face's plane (ie a face vertex) - * @param py The y-coordinate of a point on the face's plane (ie a face vertex) - * @param pz The z-coordinate of a point on the face's plane (ie a face vertex) - - - - - ShaderPicker object.]]> - - * Picks a 3d object from a view or scene by performing a separate render pass on the scene around the area being picked using key color values, - * then reading back the color value of the pixel in the render representing the picking ray. Requires multiple passes and readbacks for retriving details - * on an entity that has its shaderPickingDetails property set to true. - * - * A read-back operation from any GPU is not a very efficient process, and the amount of processing used can vary significantly between different hardware. - * - * @see away3d.entities.Entity#shaderPickingDetails - - - - - - new ShaderPicker() - * Uses a render pass to pick objects based on a key color that is read back into the engine. - * Performance can be variable on some GPUs. - - - - new RaycastPicker(false) - * Uses AS3 and Pixel Bender to pick objects based on ray intersection. Returns the hit on the first encountered Entity. - - - - new RaycastPicker(true) - * Uses AS3 and Pixel Bender to pick objects based on ray intersection. Returns the best (closest) hit on an Entity. - - * Options for the different 3D object picking approaches available in Away3D. Can be used for automatic mouse picking on the view. - * - * @see away3d.containers.View3D#mousePicker - - - - - - <_program3d> - <_texture> - <_indexBuffer> - <_vertexBuffer> - <_stage3DProxy> - <_context> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - away3d - - - - away3d - - - - away3d - - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - - - - - away3d - - - - away3d - - <_context> - <_stage3DProxy> - <_backgroundR expr="0"> - - 0 - - <_backgroundG expr="0"> - - 0 - - <_backgroundB expr="0"> - - 0 - - <_backgroundAlpha expr="1"> - - 1 - - <_shareContext expr="false"> - - false - - <_renderTarget> - <_renderTargetSurface> - <_viewWidth> - <_viewHeight> - <_renderableSorter> - <_backgroundImageRenderer> - <_background> - <_renderToTexture> - <_antiAlias> - <_textureRatioX expr="1"> - - 1 - - <_textureRatioY expr="1"> - - 1 - - <_snapshotBitmapData> - <_snapshotRequired> - <_clearOnRender expr="true"> - - true - - <_rttViewProjectionMatrix expr="new Matrix3D()"> - - new Matrix3D() - - - - away3d - - - - - - - - - - - - - - - - - - - - - - - - - * The background color's red component, used when clearing. - * - * @private - - - - - - - - * The background color's green component, used when clearing. - * - * @private - - - - - - - - * The background color's blue component, used when clearing. - * - * @private - - - - - - - - * The Stage3DProxy that will provide the Context3D used for rendering. - * - * @private - - - - - - - - * Defers control of Context3D clear() and present() calls to Stage3DProxy, enabling multiple Stage3D frameworks - * to share the same Context3D object. - * - * @private - - - - - - - - away3d - * Disposes the resources used by the RendererBase. - * - * @private - - - - - - - - - - { surfaceSelector : 0, scissorRect : null, target : null } - * Renders the potentially visible geometry to the back buffer or texture. - * @param entityCollector The EntityCollector object containing the potentially visible geometry. - * @param target An option target texture to render to. - * @param surfaceSelector The index of a CubeTexture's face to render to. - * @param additionalClearMask Additional clear mask information, in case extra clear channels are to be omitted. - - - - - - - - - - { surfaceSelector : 0, scissorRect : null, target : null } - * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up. - * @param entityCollector The EntityCollector object containing the potentially visible geometry. - * @param target An option target texture to render to. - * @param surfaceSelector The index of a CubeTexture's face to render to. - * @param additionalClearMask Additional clear mask information, in case extra clear channels are to be omitted. - - - - - - - - - - - - - - - - * Performs the actual drawing of geometry to the target. - * @param entityCollector The EntityCollector object containing the potentially visible geometry. - - - - - - - * Assign the context once retrieved - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { renderToTexture : false } - * Creates a new RendererBase object. - - * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render geometry - * to the back buffer or a texture. - - - - - - 1 - - - - 2 - - - - 3 - - <_activeMaterial> - <_distanceRenderer> - <_depthRenderer> - <_skyboxProjection expr="new Matrix3D()"> - - new Matrix3D() - - <_tempSkyboxMatrix expr="new Matrix3D()"> - - new Matrix3D() - - <_skyboxTempVector expr="new Vector3D()"> - - new Vector3D() - - - - - - - - - - - - - - { surfaceSelector : 0, scissorRect : null, target : null } - - - - - - - - - - - - * @inheritDoc - - - - - - - * Draw the skybox if present. - * @param entityCollector The EntityCollector containing all potentially visible information. - - - - - - - - - - - - - * Draw a list of renderables. - * @param renderables The renderables to draw. - * @param entityCollector The EntityCollector containing all potentially visible information. - - - - - * Creates a new DefaultRenderer object. - * @param antiAlias The amount of anti-aliasing to use. - * @param renderMode The render mode to use. - - * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the - * materials assigned to them. - - - - - - <_activeMaterial> - <_renderBlended> - <_distanceBased> - <_disableColor> - - - - - - - - - - - - - - - - - - - - - - - - - - - away3d - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * Draw a list of renderables. - * @param renderables The renderables to draw. - * @param entityCollector The EntityCollector containing all potentially visible information. - - - - - - - - { distanceBased : false, renderBlended : false } - * Creates a new DepthRenderer object. - * @param renderBlended Indicates whether semi-transparent objects should be rendered. - * @param distanceBased Indicates whether the written depth value is distance-based or projected depth-based - - * The DepthRenderer class renders 32-bit depth information encoded as RGBA - - - - - - <_filters> - <_tasks> - <_filterTasksInvalid> - <_mainInputTexture> - <_requireDepthRender> - <_rttManager> - <_stage3DProxy> - <_filterSizesInvalid expr="true"> - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_program3D> - <_renderBlended> - - - - - - - * @inheritDoc - - - - - - - * Creates the depth rendering Program3D. - * @param context The Context3D object for which the Program3D needs to be created. - - - - - - - { renderBlended : false } - * Creates a PositionRenderer object. - * @param renderBlended Indicates whether semi-transparent objects should be rendered. - * @param antiAlias The amount of anti-aliasing to be used - * @param renderMode The render mode to be used. - - * The PositionRenderer renders normalized position coordinates. - - - - - - - - * Sort the potentially visible data in an EntityCollector for rendering. - * @param collector The EntityCollector object containing the potentially visible data. - - * EntitySorterBase provides an abstract base class to sort geometry information in an EntityCollector object for - * rendering. - - - - - - - - - * @inheritDoc - - - - - - - - - - - - * Creates a RenderableSorter objects - - * RenderableSorter sorts the potentially visible IRenderable objects collected by EntityCollector for optimal - * rendering performance. Objects are sorted first by material, then by distance to the camera. Opaque objects - * are sorted front to back, while objects that require blending are sorted back to front, to ensure correct - * blending. - - - - <_collectionMark expr="0" line="34" static="1"> - - - 0 - away3d - - * A property that can be used to avoid processing a partition more than once. - - - - away3d - - - - * The scene being traversed. - - <_entryPoint> - - away3d - - - - - - - * Called when the traversers enters a node. At minimum, it notifies the currently visited Partition3DNode whether or not further recursion is necessary. - * @param node The currently entered node. - * @return true if further recursion down children is necessary, false if not. - - - - - - - * Passes a skybox to be processed by the traverser. - - - - - - - * Passes an IRenderable object to be processed by the traverser. - - - - - - - * Passes a light to be processed by the traverser. - - - - - - - - - - - - - - - - - - - * Registers an entity for use. - - - - * The entry point for scene graph traversal, ie the point that will be used for traversing the graph - * position-dependently. For example: BSP visibility determination or collision detection. - * For the EntityCollector, this is the camera's scene position for example. - - - * IPartitionTraverser is a hierarchical visitor pattern that traverses through a Partition3D data structure. - * - * @see away3d.partition.Partition3D - - - - - - - - - - - - - - - - - <_skyBox> - <_opaqueRenderableHead> - <_blendedRenderableHead> - <_entityHead> - <_renderableListItemPool> - <_entityListItemPool> - <_lights> - <_directionalLights> - <_pointLights> - <_lightProbes> - <_numEntities> - <_numLights> - <_numTriangles> - <_numMouseEnableds> - <_camera> - <_numDirectionalLights> - <_numPointLights> - <_numLightProbes> - <_cameraForward> - <_customCullPlanes> - <_cullPlanes> - <_numCullPlanes> - - - - * The camera that provides the visible frustum. - - - - - - - - - - - - - * The amount of IRenderable objects that are mouse-enabled. - - - - * The sky box object if encountered. - - - - * The list of opaque IRenderable objects that are considered potentially visible. - * @param value - - - - - - - - * The list of IRenderable objects that require blending and are considered potentially visible. - * @param value - - - - - - - - - * The lights of which the affecting area intersects the camera's frustum. - - - - - - - * Clears all objects in the entity collector. - - - - - - - * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children. - * - * @param node The Partition3DNode object to frustum-test. - - - - - - - * Adds a skybox to the potentially visible objects. - * @param renderable The skybox to add. - - - - - - - * Adds an IRenderable object to the potentially visible objects. - * @param renderable The IRenderable object to add. - - - - - - - * @inheritDoc - - - - - - - * Adds a light to the potentially visible objects. - * @param light The light to add. - - - - - - - - - - - - - - - - * The total number of triangles collected, and which will be pushed to the render engine. - - - - * Cleans up any data at the end of a frame. - - - - * Creates a new EntityCollector object. - - * The EntityCollector class is a traverser for scene partitions that collects all scene graph entities that are - * considered potientially visible. - * - * @see away3d.partition.Partition3D - * @see away3d.partition.Entity - - - - - - - <_rayPosition expr="new Vector3D()"> - - new Vector3D() - - <_rayDirection expr="new Vector3D()"> - - new Vector3D() - - - - * Provides the starting position of the ray. - - - - - - - - * Provides the direction vector of the ray. - - - - - - - - - - - * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children. - * - * @param node The Partition3DNode object to frustum-test. - - - - - - - * @inheritDoc - - - - - - - * Adds an IRenderable object to the potentially visible objects. - * @param renderable The IRenderable object to add. - - - - - - - * @inheritDoc - - - - * Creates a new RaycastCollector object. - - * The RaycastCollector class is a traverser for scene partitions that collects all scene graph entities that are - * considered intersecting with the defined ray. - * - * @see away3d.partition.Partition3D - * @see away3d.partition.Entity - - - -
-			
-			0
-		
- - - 1 - - - - 2 - - <_childIndex> - <_scene> - <_node> - <_traverseState> - <_childIndexStack> - <_stackPos> - - - - - - - -
- - - - - - - - * Adds an IRenderable object to the potentially visible objects. - * @param renderable The IRenderable object to add. - - - - - - - - - - - - - - - - - - - - - - - - * Creates a new EntityCollector object. - - * The EntityCollector class is a traverser for scene partitions that collects all scene graph entities that are - * considered potientially visible. - * - * @see away3d.partition.Partition3D - * @see away3d.partition.Entity - - - - - <_fps> - <_ply> - <_view> - - - - - - - - - - { scale : 4, color : 0x000000, yOff : 10, xOff : 10, view : null } - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - - - - - - <_WIDTH get="inline" set="null" expr="125" line="122" static="1"> - - 125 - - <_MAX_HEIGHT get="inline" set="null" expr="85" line="123" static="1"> - - 85 - - <_MIN_HEIGHT get="inline" set="null" expr="51" line="124" static="1"> - - 51 - - <_UPPER_Y get="inline" set="null" expr="-1" line="125" static="1"> - - -1 - - <_MID_Y get="inline" set="null" expr="9" line="126" static="1"> - - 9 - - <_LOWER_Y get="inline" set="null" expr="19" line="127" static="1"> - - 19 - - <_DIAG_HEIGHT get="inline" set="null" expr="_MAX_HEIGHT - 50" line="128" static="1"> - - _MAX_HEIGHT - 50 - - <_BOTTOM_BAR_HEIGHT get="inline" set="null" expr="31" line="129" static="1"> - - 31 - - <_POLY_COL get="inline" set="null" expr="0xffcc00" line="131" static="1"> - - 0xffcc00 - - <_MEM_COL get="inline" set="null" expr="0xff00cc" line="132" static="1"> - - 0xff00cc - - <_INSTANCE static="1"> - - - * Holds a reference to the stats widget (or if several have been created - * during session, the one that was last instantiated.) Allows you to set - * properties and register views from anywhere in your code. - - - - - - - <_views> - <_timer> - <_last_frame_timestamp> - <_fps> - <_ram> - <_max_ram> - <_min_fps> - <_avg_fps> - <_max_fps> - <_tfaces> - <_rfaces> - <_num_frames> - <_fps_sum> - <_top_bar> - <_btm_bar> - <_btm_bar_hit> - <_data_format> - <_label_format> - <_fps_bar> - <_afps_bar> - <_lfps_bar> - <_hfps_bar> - <_diagram> - <_dia_bmp> - <_mem_points> - <_mem_graph> - <_updates> - <_min_max_btn> - <_fps_tf> - <_afps_tf> - <_ram_tf> - <_poly_tf> - <_swhw_tf> - <_drag_dx> - <_drag_dy> - <_dragging> - <_mean_data> - <_mean_data_length> - <_enable_reset> - <_enable_mod_fr> - <_transparent> - <_minimized> - <_showing_driv_info> - - - - - - <_init set="method" line="228"> - - - - - - * Add a view to the list of those that are taken into account when - * calculating on-screen and total poly counts. Use this method when the - * stats widget is not instantiated in the same place as where you create - * your view, or when using several views, or when views are created and - * destroyed dynamically at runtime. - - - - - - - * Remove a view from the list of those that are taken into account when - * calculating on-screen and total poly counts. If the supplied view is - * the only one known to the stats widget, calling this will leave the - * list empty, disabling poly count statistics altogether. - - <_initMisc set="method" line="281"> - <_initTopBar set="method" line="300"> - - away3d - * @private - * Draw logo and create title textfield. - - <_initBottomBar set="method" line="400"> - <_initDiagrams set="method" line="488"> - <_initInteraction set="method" line="540"> - <_redrawWindow set="method" line="557"> - <_redrawStats set="method" line="590"> - <_redrawMemGraph set="method" line="649"> - <_getRamString set="method" line="678"> - - - - - <_endDrag set="method" line="719"> - <_onAddedToStage set="method" line="742"> - - - - <_onRemovedFromStage set="method" line="748"> - - - - <_onTimer set="method" line="754"> - - - - <_onEnterFrame set="method" line="781"> - - - - <_onDiagramClick set="method" line="817"> - - - - <_onAverageFpsClick_reset set="method" line="826"> - - - - - away3d - * @private - * Reset just the average FPS counter. - - <_onCountersClick_reset set="method" line="838"> - - - - <_onMinMaxBtnClick set="method" line="843"> - - - - <_onTopBarMouseDown set="method" line="849"> - - - - <_onMouseMove set="method" line="859"> - - - - <_onMouseUpOrLeave set="method" line="866"> - - - - - - - - - - - - - - { enableModifyFrameRate : true, enableClickToReset : true, meanDataLength : 0, transparent : false, minimized : false, view3d : null } - Create an Away3D stats widget. The widget can be added to the stage - * and positioned like any other display object. Once on the stage, you - * can drag the widget to re-position it at runtime.

- * - *

If you pass a View3D instance, the widget will be able to display - * the total number of faces in your scene, and the amount of faces that - * were rendered during the last render() call. Views can also be registered - * after construction using the registerView() method. Omit the view - * constructor parameter to disable this feature altogether.

- * - * @param view A reference to your Away3D view. This is required if you - * want the stats widget to display polycounts. - * - * @param minimized Defines whether the widget should start up in minimized - * mode. By default, it is shown in full-size mode on launch. - * - * @param transparent Defines whether to omit the background plate and print - * statistics directly on top of the underlying stage. - * - * @param meanDataLength The number of frames on which to base the average - * frame rate calculation. The default value of zero indicates that all - * frames since the last reset will be used. - * - * @param enableClickToReset Enables interaction allowing you to reset all - * counters by clicking the bottom bar of the widget. When activated, you - * can also click the average frame rate trace-out to reset just that one - * value. - * - * @param enableModifyFramerate When enabled, allows you to click the upper - * and lower parts of the graph area to increase and decrease SWF frame rate - * respectively.]]>
-
- Stats monitor for Away3D or general use in any project. The widget was designed to - * display all the necessary data in ways that are easily readable, while maintaining a - * tiny size.

- * - *

The following data is displayed by the widget, either graphically, through - * text, or both.

- *
    - *
  • Current frame rate in FPS (white in graph/bar)
  • - *
  • SWF frame rate (Stage.frameRate)
  • - *
  • Average FPS (blue in graph/bar)
  • - *
  • Min/Max FPS (only on frame rate bar in minimized mode)
  • - *
  • Current RAM usage (pink in graph)
  • - *
  • Maximum RAM usage
  • - *
  • Number of polygons in scene
  • - *
  • Number of polygons last rendered (yellow in graph)
  • - *
- * - *

There are two display modes; standard and minimized, which are alternated by clicking - * the button in the upper right corner, at runtime. The widget can also be configured to - * start in minimized mode by setting the relevant constructor parameter.

- * - *

All data can be reset at any time, by clicking the lower part of the widget (where - * the RAM and POLY counters are located. The average FPS can be reset separately by - * clicking it's ²displayed value. Furthermore, the stage frame rate can be increased or - * decreased by clicking the upper and lower parts of the graph, respectively. Clicking close - * to the center will increment in small values, and further away will increase the steps. - * The graph itself is only visible in standard (as opposed to minimized) display mode.

- * - *

The average FPS is calculated using one of two methods, configurable via constructor - * parameters. By setting the meanDataLength to a non-zero value, the number of recorded - * frame rate values on which the average is based can be configured. This has a tiny - * impact on CPU usage, which is the reason why the default number is zero, denoting that - * the average is calculated from a running sum since the widget was last reset.

]]>
- - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - -
- - - - false - - - - false - - - - - - - - - - - - - - - - * Class for emmiting debuging messages, warnings and errors - - - - - - - - - - - - - <_subMeshes> - <_geometry> - <_material> - <_animator> - <_castsShadows expr="true"> - - true - - <_shareAnimationGeometry expr="true"> - - true - - - - - - - - - - true.]]> - - - - - - - - null.]]> - - - - - - - - * The geometry used by the mesh that provides it with its shape. - - - - - - - - * The material with which to render the Mesh. - - - - - - - - * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's - * material. - - - - * Indicates whether or not the mesh share the same animation geometry. - - - - - - - - * Clears the animation geometry of this mesh. It will cause animation to generate a new animation geometry. Work only when shareAnimationGeometry is false. - - - - * @inheritDoc - - - - * Disposes mesh including the animator and children. This is a merely a convenience method. - * @return - - - - - * var clone : Mesh = new Mesh(original.geometry, original.material); - * ]]> - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * Called when a SubGeometry was added to the Geometry. - - - - - - - * Called when a SubGeometry was removed from the Geometry. - - - - - - - * Adds a SubMesh wrapping a SubGeometry. - - - - - - - - - - - - - - - - - { material : null } - * Create a new Mesh object. - * - * @param geometry The geometry used by the mesh that provides it with its shape. - * @param material [optional] The material with which to render the Mesh. - - * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation - * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts - * of the geometry to be assigned different materials. - - - - - - - - - - - - - - - - { showLetters : true, length : 1000 } - - Trident object. - * - * @param length The length of the trident axes. Default is 1000. - * @param showLetters If the Trident should display the letters X, Y and Z at each axis arrows. Default is true.]]> - - - - - - - 3 * 0xFFFF - - - - - away3d - - - - away3d - - - - - - - - - - - - - - - - - - - <_activeSubSet> - <_subSets> - <_subSetCount expr="0"> - - 0 - - <_numIndices expr="0"> - - 0 - - <_material> - <_animator> - <_hasData> - <_segments> - - - - <_indexSegments expr="0"> - - 0 - - - - - - - * Adds a new segment to the SegmentSet. - * - * @param segment the segment to add - - - - - - - - { dispose : false } - * Removes a segment from the SegmentSet by its index in the set. - * - * @param index The index of the segment to remove - * @param dispose If the segment must be disposed as well. Default is false; - * - * Removing a Segment by an index when segment is unknown - * index of the segment is relative to the order it was added to the segmentSet. - * If a segment was removed from or added to the segmentSet, a segment index may have changed. - * The index of each Segment is updated when one is added or removed. - * If 2 segments are added, segment #1 has index 0, segment #2 has index 1 - * if segment #1 is removed, segment#2 will get index 0 instead of 1. - - - - - - - - { dispose : false } - * Removes a segment from the SegmentSet. - * - * @param segment The segment to remove - * @param dispose If the segment must be disposed as well. Default is false; - - - - * Empties the segmentSet from all its segments data - - - - - - - * @returns a segment object from a given index. - - - - * @returns howmany segments are in the SegmentSet - - - - - - - - away3d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Creates a new SegmentSet object. - - - - - - - - "zy" - - - - "xy" - - - - "xz" - - - - - - - - - - - - - - - - - - - - { colorXZ : 0x00FF00, colorZY : 0xFF0000, colorXY : 0x0000FF, thickness : 1, gridSize : 100, subDivision : 10 } - - WireframeAxesGrid - * @param subDivision [optional] uint . Default is 10; - * @param gridSize [optional] uint . Default is 100; - * @param thickness [optional] Number . Default is 1; - * @param colorXY [optional] uint. Default is 0x0000FF. - * @param colorZY [optional] uint. Default is 0xFF0000. - * @param colorXZ [optional] uint. Default is 0x00FF00.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_geometry static="1"> - - - - - - - - - - - - - - - - - - - - <_material> - <_spriteMatrix> - <_animator> - <_pickingSubMesh> - <_pickingTransform> - <_camera> - <_width> - <_height> - <_shadowCaster expr="false"> - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Defines the animator of the mesh. Act on the mesh's geometry. Defaults to null - - - - - - - - - - - - - - - - - - - - - - - - - away3d - - - - - - - - - - - - * Sprite3D is a 3D billboard, a renderable rectangular area that is always aligned with the projection plane. - * As a result, no perspective transformation occurs on a Sprite3D object. - * - * todo: mvp generation or vertex shader code can be optimized - - - - - - - - <_lens> - <_viewProjectionInvalid expr="true"> - - true - - <_viewProjection expr="new Matrix3D()"> - - new Matrix3D() - - <_texture> - - - * The aspect ratio of the texture or projection. By default this is the same aspect ratio of the texture (width/height) - - - - - - - - * The vertical field of view of the projection, or the angle of the cone. - - - - - - - - - * The texture to be projected on the geometry. - * IMPORTANT: Since any point that is projected out of the range of the projector's cone is clamped to the texture's edges, - * the edges should be entirely neutral. Depending on the blend mode, the neutral color is: - * White for MULTIPLY, - * Black for ADD, - * Transparent for MIX - - - - - - - - * The matrix that projects a point in scene space into the texture coordinates. - - - - * @inheritDoc - - - - - - - - - - - * Creates a new TextureProjector object. - * @param texture The texture to be projected on the geometry. Since any point that is projected out of the range - * of the projector's cone is clamped to the texture's edges, the edges should be entirely neutral. - - * TextureProjector is an object in the scene that can be used to project textures onto geometry. To do so, - * the object's material must have a ProjectiveTextureMethod method added to it with a TextureProjector object - * passed in the constructor. - * This can be used for various effects apart from acting like a normal projector, such as projecting fake shadows - * unto a surface, the impact of light coming through a stained glass window, ... - * - * @see away3d.materials.methods.ProjectiveTextureMethod - - - - - - - - - - - - - - Exception message. - - - - The call stack at the moment of the exception creation. - - - - Contains an exception, which was passed to `previous` constructor argument. - - - - Native exception, which caused this exception. - - <__exceptionMessage> - - - - <__exceptionStack> - - - - <__nativeStack> - - - - <__skipStack expr="0"> - - - 0 - - "haxe.Exception.get_stack" - - - <__nativeException> - - - - <__previousException> - - - - - - - Returns exception message. - -
- - Detailed exception description. - - Includes message, stack and the chain of previous exceptions (if set). -
- <__shiftStack get="inline" set="null" line="62"> - - - - "haxe.Exception.get_stack" - - - - - - - - - - - - - - Create a new Exception instance. - - The `previous` argument could be used for exception chaining. - - The `native` argument is for internal usage only. - There is no need to provide `native` argument manually and no need to keep it - upon extending `haxe.Exception` unless you know what you're doing. - - = null; - a.push(1); // generates target-specific null-pointer exception - } catch(e:haxe.Exception) { - throw e; // rethrows native exception instead of haxe.Exception - } - ```]]> - - - - -
- - - - - - "Error" - - - - - - Contains the reference number associated with the specific error message. For a - custom Error object, this number is the value from the id parameter supplied in the - constructor. - - - - Contains the message associated with the Error object. By default, the value of - this property is "Error". You can specify a message property when you create an - Error object by passing the error string to the Error constructor function. - - - - Returns the call stack for an error at the time of the error's construction as a - string. As shown in the following example, the first line of the return value is - the string representation of the exception object, followed by the stack trace - elements: - - ``` - TypeError: Error #1009: Cannot access a property or method of a null object reference - at com.xyz::OrderEntry/retrieveData()[/src/com/xyz/OrderEntry.as:995] - at com.xyz::OrderEntry/init()[/src/com/xyz/OrderEntry.as:200] - at com.xyz::OrderEntry()[/src/com/xyz/OrderEntry.as:148] - ``` - - The preceding listing shows the value of this method when called in a debugger - version of Flash Player or code running in the AIR Debug Launcher (ADL). When code - runs in a release version of Flash Player or AIR, the stack trace is provided - without the file path and line number information, as in the following example: - - ``` - TypeError: Error #1009: Cannot access a property or method of a null object reference - at com.xyz::OrderEntry/retrieveData() - at com.xyz::OrderEntry/init() - at com.xyz::OrderEntry() - ``` - - For Flash Player 11.4 and earlier and AIR 3.4 and earlier, stack traces are only - available when code is running in the debugger version of Flash Player or the AIR - Debug Launcher (ADL). In non-debugger versions of those runtimes, calling this - method returns `null`. - - @returns A string representation of the call stack. - - - - Returns the string "Error" by default or the value contained in the `Error.message` - property, if defined. - - @returns The error message. - - - - - - - - { id : 0, message : "" } - Creates a new Error object. If message is specified, its value is assigned to the - object's Error.message property. - - @param message A string associated with the Error object; this parameter is optional. - @param id A reference number to associate with the specific error message. - - The Error class contains information about an error that occurred in a script. In - developing ActionScript 3.0 applications, when you run your compiled code in the - debugger version of a Flash runtime, a dialog box displays exceptions of type Error, - or of a subclass, to help you troubleshoot the code. You create an Error object by - using the Error constructor function. Typically, you throw a new Error object from - within a `try` code block that is caught by a `catch` code block. - - You can also create a subclass of the Error class and throw instances of that subclass. - - - "tags=\"haxe,release\"" - - - - - - - - - - - - { id : 0, message : null } - * Create a new AbstractMethodError. - * @param message An optional message to override the default error message. - * @param id The id of the error. - - * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden - * by a concrete subclass. - - - - - - - - - - - - - - - - - - - - - - - - <_since> - <_source> - <_info> - - - - - - - - - - - - - - - - - - - { id : 0, message : null } - * Create a new TextureError. - * @param message An optional message to override the default error message. - * @param id The id of the error. - - * TextureError is thrown when an invalid texture is used regarding Stage3D limitations. - - - - - - "playbackComplete" - * Dispatched when a non-looping clip node inside an animation state reaches the end of its timeline. - - - - "transitionComplete" - - - - - <_animator> - <_animationState> - <_animationNode> - - - * The animator object that is the subject of this event. - - - - * The animation state object that is the subject of this event. - - - - * The animation node inside the animation state from which the event originated. - - - - * Clones the event. - * - * @return An exact duplicate of the current object. - - - - - - - - - - AnimatonStateEvent - * - * @param type The event type. - * @param animator The animation state object that is the subject of this event. - * @param animationNode The animation node inside the animation state from which the event originated.]]> - - * Dispatched to notify changes in an animation state's state. - - - - - - - "start" - * Defines the value of the type property of a start event object. - - - - "stop" - * Defines the value of the type property of a stop event object. - - - - "cycle_complete" - * Defines the value of the type property of a cycle complete event object. - - - <_animator> - - - - * Clones the event. - * - * @return An exact duplicate of the current event object. - - - - - - - - AnimatorEvent object. - * - * @param type The event type. - * @param animator The animator object that is the subject of this event.]]> - - * Dispatched to notify changes in an animator's state. - - - - - - - "assetComplete" - - - - "entityComplete" - - - - "skyboxComplete" - - - - "cameraComplete" - - - - "meshComplete" - - - - "geometryComplete" - - - - "skeletonComplete" - - - - "skeletonPoseComplete" - - - - "containerComplete" - - - - "textureComplete" - - - - "textureProjectorComplete" - - - - "materialComplete" - - - - "animatorComplete" - - - - "animationSetComplete" - - - - "animationStateComplete" - - - - "animationNodeComplete" - - - - "stateTransitionComplete" - - - - "segmentSetComplete" - - - - "lightComplete" - - - - "lightPickerComplete" - - - - "effectMethodComplete" - - - - "shadowMapMethodComplete" - - - - "assetRename" - - - - "assetConflictResolved" - - - - "textureSizeError" - - - - <_asset> - <_prevName> - - - - - - - - - - - { prevName : null, asset : null } - - * Dispatched whenever a ressource (asset) is parsed and created completly. - - - - - - - "lensChanged" - - - <_camera> - - - - - - - - - - - { cancelable : false, bubbles : false } - - - - - - - - "SubGeometryAdded" - * Dispatched when a SubGeometry was added from the dispatching Geometry. - - - - "SubGeometryRemoved" - * Dispatched when a SubGeometry was removed from the dispatching Geometry. - - - - "BoundsInvalid" - - - <_subGeometry> - - - * The SubGeometry object that is the subject of this event, if appropriate. - - - - * Clones the event. - * @return An exact duplicate of the current object. - - - - - - - - { subGeometry : null } - * Create a new GeometryEvent - * @param type The event type. - * @param subGeometry An optional SubGeometry object that is the subject of this event. - - * Dispatched to notify changes in a geometry object's state. - * - * @see away3d.core.base.Geometry - - - - - - - "matrixChanged" - - - <_lens> - - - - - - - - - - - { cancelable : false, bubbles : false } - - - - - - - - "castsShadowChange" - - - - - - - - - - - - - "loadError" - * Dispatched when loading of a asset failed. - * Such as wrong parser type, unsupported extensions, parsing errors, malformated or unsupported 3d file etc.. - - - - "resourceComplete" - * Dispatched when a resource and all of its dependencies is retrieved. - - - - "dependencyComplete" - * Dispatched when a resource's dependency is retrieved and resolved. - - - - - <_url> - <_message> - <_isDependency> - - - * The url of the loaded resource. - - - - * The error string on loadError. - - - - * Indicates whether the event occurred while loading a dependency, as opposed - * to the base file. Dependencies can be textures or other files that are - * referenced by the base file. - - - - * @inheritDoc - - - - - - - - - - { errmsg : null, isDependency : false, url : null } - * Create a new LoaderEvent object. - * @param type The event type. - * @param resource The loaded or parsed resource. - * @param url The url of the loaded resource. - - * LoaderEvent is an Event dispatched to notify changes in loading state. - - - - - - - "visiblityUpdated" - * Defines the value of the type property of a visiblityUpdated event object. - - - - "scenetransformChanged" - * Defines the value of the type property of a scenetransformChanged event object. - - - - "sceneChanged" - * Defines the value of the type property of a sceneChanged event object. - - - - "positionChanged" - * Defines the value of the type property of a positionChanged event object. - - - - "rotationChanged" - * Defines the value of the type property of a rotationChanged event object. - - - - "scaleChanged" - * Defines the value of the type property of a scaleChanged event object. - - - - * A reference to the 3d object that is relevant to the event. - - - - * Creates a copy of the Object3DEvent object and sets the value of each property to match that of the original. - - - - - - - - MaterialEvent object. - * - * @param type The type of the event. Possible values are: Object3DEvent.TRANSFORM_CHANGED, Object3DEvent.SCENETRANSFORM_CHANGED, Object3DEvent.SCENE_CHANGED, Object3DEvent.RADIUS_CHANGED and Object3DEvent.DIMENSIONS_CHANGED. - * @param object A reference to the 3d object that is relevant to the event.]]> - - * Passed as a parameter when a 3d object event occurs - - - - - - - "parseComplete" - * Dispatched when parsing of an asset completed. - - - - "parseError" - * Dispatched when an error occurs while parsing the data (e.g. because it's - * incorrectly formatted.) - - - - "readyForDependencies" - * Dispatched when a parser is ready to have dependencies retrieved and resolved. - * This is an internal event that should rarely (if ever) be listened for by - * external classes. - - - <_message> - - - * Additional human-readable message. Usually supplied for PARSE_ERROR events. - - - - - - - - - { message : "" } - - - - - - - - "cycle" - * Dispatched when the time pointer enter a new cycle at time 0, after last time was greater than 0.99 - - - - "range" - * Dispatched when the time pointer is included a given from/to time region on a path - - - - "change_segment" - * Dispatched when the time pointer enters a new PathSegment - - - - - - - - - - - - "addedToScene" - - - - "removedFromScene" - - - - "partitionChanged" - - - - - - - - - - - - - - - "ShaderInvalidated" - - - - - - - - - { cancelable : false, bubbles : false } - - - - - - - - "Context3DCreated" - - - - "Context3DDisposed" - - - - "Context3DRecreated" - - - - "ViewportUpdated" - - - - - - - - - { cancelable : false, bubbles : false } - - - - - - - - "touchEnd3d" - - - - "touchBegin3d" - - - - "touchMove3d" - - - - "touchOut3d" - - - - "touchOver3d" - - - - <_allowedToPropagate expr="true"> - - - true - away3d - - - <_parentEvent> - - away3d - - - - * The horizontal coordinate at which the event occurred in view coordinates. - - - - * The vertical coordinate at which the event occurred in view coordinates. - - - - * The view object inside which the event took place. - - - - * The 3d object inside which the event took place. - - - - * The renderable inside which the event took place. - - - - * The material of the 3d element inside which the event took place. - - - - * The uv coordinate inside the draw primitive where the event took place. - - - - * The index of the face where the event took place. - - - - * The index of the subGeometry where the event took place. - - - - * The position in object space where the event took place - - - - * The normal in object space where the event took place - - - - * Indicates whether the Control key is active (true) or inactive (false). - - - - * Indicates whether the Alt key is active (true) or inactive (false). - - - - * Indicates whether the Shift key is active (true) or inactive (false). - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Creates a copy of the TouchEvent3D object and sets the value of each property to match that of the original. - - - - * The position in scene space where the event took place - - - - * The normal in scene space where the event took place - - - - - - - * Create a new TouchEvent3D object. - * @param type The type of the TouchEvent3D. - - - - - - - - "xz" - - - - "xy" - - - - "zy" - - - - 196605 - - - - .0001 - - - - 1.2 - - - - - - - <_circle> - <_vectors> - <_subGeometry> - <_sortProp> - <_loopProp> - <_uvs> - <_vertices> - <_indices> - <_normals> - <_geomDirty expr="true"> - - true - - <_centerMesh> - <_plane> - <_flip> - <_smoothSurface> - <_axis0Min> - <_axis0Max> - <_axis1Min> - <_axis1Max> - <_tmpNormal> - <_normal0> - <_normal1> - <_normal2> - - - * The "cloud" of vector3d's to compose the mesh - - - - - - - - * Defines if the surface of the mesh must be smoothed or not. Default value is true. - - - - - - - - * Defines the projection plane for the class. Default is xz. - - - - - - - - * Defines if the face orientation needs to be inverted - - - - - - - - * Defines whether the mesh is recentered of not after generation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - { smoothSurface : true, flip : false, centerMesh : false, plane : PLANE_XZ } - - - - - - - - - - - - - - - - - - - - - - - - - <_segmentsW> - <_segmentsH> - <_width> - <_height> - <_depth> - <_heightMap> - <_smoothedHeightMap> - <_activeMap> - <_minElevation> - <_maxElevation> - <_geomDirty expr="true"> - - true - - <_uvDirty expr="true"> - - true - - <_subGeometry> - - - - - - * Locks elevation factor beneath this color reading level. Default is 0; - - - - - - - - * Locks elevation factor above this color reading level. Default is 255; - * Allows to build "canyon" like landscapes with no additional work on heightmap source. - - - - - * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or - * false, respectively. Defaults to 1. - - - - - - - - * The width of the terrain plane. - - - - - - - - - - - - - * The depth of the terrain plane. - - - - - - - - - - - - * Reading the terrain height from a given x z position - * for surface tracking purposes - * - * @see away3d.extrusions.Elevation.smoothHeightMap - - - - * Generates a smoother representation of the geometry using the original heightmap and subdivision settings. - * Allows smoother readings for surface tracking if original heightmap has noise, causing choppy camera movement. - * - * @see away3d.extrusions.Elevation.getHeightAt - - - - - - * @inheritDoc - - - - * Invalidates the primitive's geometry, causing it to be updated when requested. - - - - * Invalidates the primitive's uv coordinates, causing them to be updated when requested. - - - - - - - - - - - - - - - - { smoothMap : false, minElevation : 0, maxElevation : 255, segmentsH : 30, segmentsW : 30, depth : 1000, height : 100, width : 1000 } - * @param material MaterialBase. The Mesh (Elevation) material - * @param heightMap BitmapData. The heightmap to generate the mesh from - * @param width [optional] Number. The width of the mesh. Default is 1000. - * @param height [optional] Number. The height of the mesh. Default is 100. - * @param depth [optional] Number. The depth of the mesh. Default is 1000. - * @param segmentsW [optional] uint. The subdivision of the mesh along the x axis. Default is 30. - * @param segmentsH [optional] uint. The subdivision of the mesh along the y axis. Default is 30. - * @param maxElevation [optional] uint. The maximum color value to be used. Allows canyon like elevations instead of mountainious. Default is 255. - * @param minElevation [optional] uint. The minimum color value to be used. Default is 0. - * @param smoothMap [optional] Boolean. If surface tracking is used, an internal smoothed version of the map is generated, - * prevents irregular height readings if original map is blowed up or is having noise. Default is false. - - * Class Elevation generates (and becomes) a mesh from an heightmap. - - - - - - .0001 - - - - 196605 - - - - 1.2 - - - - "x" - - - - "y" - - - - "z" - - - - - - - - - - - - - - - - - - - <_profile> - <_lastProfile> - <_keepLastProfile> - <_axis> - <_revolutions> - <_subdivision> - <_offsetRadius> - <_prevOffsetRadius expr="0"> - - 0 - - <_materials> - <_coverAll> - <_flip> - <_centerMesh> - <_thickness> - <_preciseThickness> - <_ignoreSides> - <_smoothSurface> - <_tweek> - <_varr> - <_varr2> - <_uvarr> - <_startRotationOffset expr="0"> - - 0 - - <_geomDirty expr="true"> - - true - - <_subGeometry> - <_MaterialsSubGeometries expr="new Vector<SubGeometryList>()"> - - ()]]> - - <_maxIndProfile> - <_uva> - <_uvb> - <_uvc> - <_uvd> - <_va> - <_vb> - <_vc> - <_vd> - <_uvs> - <_vertices> - <_indices> - <_normals> - <_normalTmp> - <_normal0> - <_normal1> - <_normal2> - - - - - - - - - - - - - * Defines the axis used for the lathe rotation. Defaults to "y". - - - - - - - - * Defines the number of revolutions performed by the lathe extrusion. Defaults to 1. - - - - - - - - * Defines the subdivisions created in the mesh for the total number of revolutions. Defaults to 2, minimum 2. - * - * @see #revolutions - - - - - - - - * Defines an offset radius applied to the profile. Defaults to 0. - - - - - - - - * An optional object that defines left, right, front, back, top and bottom materials to be set on the resulting lathe extrusion. - - - - - - - - * Defines if the texture(s) should be stretched to cover the entire mesh or per step between segments. Defaults to true. - - - - - - - - * Defines if the generated faces should be inversed. Default false. - - - - - - - - * Defines if the surface of the mesh must be smoothed or not. - - - - - - - - * Defines if the last transformed profile values are saved or not. Useful in combo with rotations less than 1, to ease combinations with other extrusions classes such as SkinExtrude. - - - - - - - - * returns the last rotated profile values, if keepLastProfile was true - - - - * Defines if thickness is greater than 0 if the thickness is equally distributed along the volume. Default is false. - - - - - - - - * Defines whether the mesh is recentered of not after generation - - - - - - - - * Defines the thickness of the resulting lathed geometry. Defaults to 0 (single face). - - - - - - - - * Defines if the top, bottom, left, right, front or back of the the extrusion is left open. - - - - - - - - * Allows the building of shapes such as springs. Rotation must be higher than 1 to have significant effect. Properties of the objects are x,y,z,radius and rotation - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - { id : 0, render : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { lines : null, point2 : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Invalidates the geometry, causing it to be rebuilded when requested. - - - - - - - - - - - - - - - - - - - - - - { smoothSurface : true, tweek : null, ignoreSides : "", materials : null, offsetRadius : 0, preciseThickness : true, thickness : 0, flip : false, centerMesh : false, coverall : true, subdivision : 10, revolutions : 1, axis : LatheExtrude.Y_AXIS, profile : null, material : null } - - - * Class for generating meshes with axial symmetry such as donuts, pipes, vases etc. - - - - - - - "x" - - - - "y" - - - - "z" - - - - 196605 - - - - .0001 - - - - - - - - - - - <_varr> - <_varr2> - <_uvarr> - <_subdivision> - <_coverAll> - <_flip> - <_closePath> - <_axis> - <_offset> - <_materials> - <_activeMaterial> - <_centerMesh> - <_thickness> - <_thicknessSubdivision> - <_ignoreSides> - <_geomDirty expr="true"> - - true - - <_subGeometry> - <_MaterialsSubGeometries> - <_uva> - <_uvb> - <_uvc> - <_uvd> - <_maxIndProfile> - <_uvs> - <_vertices> - <_indices> - <_aVectors> - <_baseMax> - <_baseMin> - - - - * Defines the axis used for the extrusion. Defaults to "y". - - - - - - - - * An optional MultipleMaterials object that defines left, right, front, back, top and bottom materials to be set on the resulting lathe extrusion. - - - - - - - - * Defines the subdivisions created in the mesh for the total number of revolutions. Defaults to 2, minimum 2. - - - - - - - - * Defines if the texture(s) should be stretched to cover the entire mesh or per step between segments. Defaults to true. - - - - - - - - * Defines if the generated faces should be inversed. Default false. - - - - - - - - * Defines whether the mesh is recentered of not after generation - - - - - - - - * Defines the _thickness of the resulting lathed geometry. Defaults to 0 (single face). - - - - - - - - * Defines the subdivision for the top, bottom, right and left if thickness is set higher to 0. Defaults to 1. - - - - - - - - * Defines if the top, bottom, left, right, front or back of the the extrusion is left open. - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - { invertU : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { lines : null, point2 : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Invalidates the geometry, causing it to be rebuilded when requested. - - - - - - - - - - - - - - - - - - - { flip : false, ignoreSides : "", closePath : false, centerMesh : false, materials : null, thicknessSubdivision : 3, thickness : 0, coverAll : false, subdivision : 3, offset : 10, axis : LinearExtrude.Y_AXIS, vectors : null, material : null } - - - - - - - - - - - - - - <_transform> - <_upAxis expr="new Vector3D(0, 1, 0)"> - - new Vector3D(0, 1, 0) - - <_path> - <_scene> - <_meshes> - <_clones> - <_repeat> - <_alignToPath> - <_randomRotationY> - <_segmentSpread expr="false"> - - false - - <_mIndex> - <_count> - <_container> - - - * The up axis to which duplicated objects' Y axis will be oriented. - - - - - - - - - - - * If a container is provided, the meshes are addChilded to it instead of directly into the scene. The container is NOT addChilded to the scene. - - - - - - - - * Defines the resolution between each PathSegments. Default 1, is also minimum. - - - - - - - - * Defines if the profile point array should be orientated on path or not. Default true. - - - - - - - - * Defines if a clone gets a random rotationY to break visual repetitions, usefull in case of vegetation for instance. - - - - - * returns a vector with all meshes cloned since last time build method was called. Returns null if build hasn't be called yet. - * Another option to retreive the generated meshes is to pass an ObjectContainer3D to the class - - - - - - - * Sets and defines the Path object. See extrusions.utils package. Required for this class. - - - - - - - - . One or more meshes to repeat along the path. Required for this class.]]> - - - - - - - - - - - - * defines if the meshes[index] is repeated per segments or duplicated after each others. default = false. - - - - - * Triggers the generation - - - - - - - - - - - - - - - - - - - - - - - - { randomRotationY : false, container : null, segmentSpread : true, alignToPath : true, repeat : 1, scene : null, meshes : null, path : null } - PathDuplicator - * Class replicates and distribute one or more mesh(es) along a path. The offsets are defined by the position of the object. 0,0,0 would place the center of the mesh exactly on Path. - * - * @param path [optional] A Path object. The _path definition. either Cubic or Quadratic path - * @param meshes [optional] Vector.<Mesh>. One or more meshes to repeat along the path. - * @param scene [optional] Scene3D. The scene where to addchild the meshes if no ObjectContainer3D is provided. - * @param repeat [optional] uint. How many times a mesh is cloned per PathSegment. Default is 1. - * @param alignToPath [optional] Boolean. If the alignment of the clones must follow the path. Default is true. - * @param segmentSpread [optional] Boolean. If more than one Mesh is passed, it defines if the clones alternate themselves per PathSegment or each repeat. Default is false. - * @param container [optional] ObjectContainer3D. If an ObjectContainer3D is provided, the meshes are addChilded to it instead of directly into the scene. The container is NOT addChilded to the scene by default. - * @param randomRotationY [optional] Boolean. If the clones must have a random rotationY added to them. - *]]> - - - - - - - - 196605 - - - - 1.2 - - - - - - - - - - - - - - - - - - - - - - - - <_varr> - <_doubles expr="new Vector<Vertex>()"> - - ()]]> - - <_upAxis expr="new Vector3D(0, 1, 0)"> - - new Vector3D(0, 1, 0) - - <_trans expr="new Matrix3D()"> - - new Matrix3D() - - <_path> - <_profile> - <_centerMesh> - <_scales> - <_rotations> - <_materials> - <_activeMaterial> - <_subdivision> - <_coverAll> - <_coverSegment> - <_flip> - <_mapFit> - <_closePath> - <_alignToPath> - <_smoothScale> - <_smoothSurface> - <_isClosedProfile> - <_maxIndProfile> - <_matIndex expr="0"> - - 0 - - <_segv> - <_geomDirty expr="true"> - - true - - <_subGeometry> - <_MaterialsSubGeometries expr="new Vector<SubGeometryList>()"> - - ()]]> - - <_uva> - <_uvb> - <_uvc> - <_uvd> - <_uvs> - <_vertices> - <_indices> - <_normals> - <_normalTmp> - <_normal0> - <_normal1> - <_normal2> - <_keepExtremes> - <_distribute> - <_distributeU> - <_distributedU> - <_startPoints> - <_endPoints> - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Defines whether the mesh is recentered of not after generation - - - - - - - - * Defines the uv's u values are spreaded procentually over the entire surface to prevent the maps to be stretched. - - - - - - - - * Invalidates the geometry, causing it to be rebuillded when requested. - - - - Path object representing path to extrude along. Required.]]> - - - - - - - - - - - - - - - - Vector3D objects that defines a series of scales to be set on each PathSegment.]]> - - - - - - - - Vector3D objects that defines a series of rotations to be set on each PathSegment.]]> - - - - - - - - - - - - - - - - * Defines the subdivisions created in the mesh for each PathSegment. Defaults to 2, minimum 2. - - - - - - - - * Defines if the texture(s) should be stretched to cover the entire mesh or per step between segments. Defaults to true. - - - - - - - - * Defines if the mesh subdivision is spread evenly over the entire geometry. Possibly resulting in uneven subdivision per segments. - * Uv mapping is less distorted on complex shapes once applied. Depending on Path length, extra construct time might be significant. - * Defaults to false. - - - - - - - - * Defines if the surface of the mesh must be smoothed or not. - - - - - - - - - - - * Defines if the texture(s) should applied per segment. Default false. - - - - - * Defines if the texture(s) should be projected on the geometry evenly spreaded over the source bitmapdata or using distance/percent. Default is false. - * The mapping considers first and last profile points are the most distant from each other. Most left and most right on the map. - * Note that it is NOT suitable for most cases. It is helpfull for roads definition, usually seen from above with simple profile. It prevents then distorts and eases map designs. - - - - - - - - * Defines if the generated faces should be inversed. Default false. - - - - - - - - * Defines if the last PathSegment should join the first one and close the loop. Defaults to false. - - - - - - - - * Defines if the array of profile points should be orientated on path or not. Default true. Note that Path object's worldaxis property might need to be changed. default = 0,1,0. - * - * @see #profile - - - - - - - - Vector3D objects should affect the whole PathSegment evenly or be smoothly interpolated from previous PathSegment scale. Defaults to true.]]> - - - - - - - - * Defines if the first and last transformed vector3d's of the profile are kept. - * For instance to be able to pass these coordinates to DelaunayMesh class, to close the extrude, if it was a tube. - * @see getStartProfile - * @see getEndProfile - - - - - - - - * returns a vector of vector3d's representing the transformed profile coordinates at the start of the extrude shape - * null if "keepExtremes" is false or if the extrusion has not been builded yet. - - - - * returns a vector of vector3d's representing the transformed profile coordinates at the end of the extrude shape - * null if "keepExtremes" is false or if the extrusion has not been builded yet. - - - - - - - - - - - - - - { closedata : false, offsetV : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { keepExtremes : false, distributeU : true, distribute : false, smoothSurface : true, rotations : null, smoothScale : true, scales : null, materials : null, closePath : false, flip : false, mapFit : false, centerMesh : false, alignToPath : true, coverSegment : false, coverAll : true, subdivision : 2, profile : null, path : null, material : null } - PathExtrude - * - * @param material [optional] MaterialBase. The PathExtrude (Mesh) material. Optional in constructor, material must be set before PathExtrude object is rendered. Required for the class to work. - * @param path [optional] Path. Defines the Path object representing path to extrude along. Required for the class to work. - * @param profile [optional] Vector.<Vector3D>. Defines an Vector.<Vector3D> of Vector3D objects representing the profile information to be projected along the Path object. Required for the class to work. - * @param subdivision [optional] uint. Howmany steps between each PathSegment. If the path holds curves, the higher this value, the higher the curve fidelity. Default and minimum is 2; - * @param coverall [optional] Boolean. Defines the uv mapping, when true a unique material is stretched along the entire path/shape. Default is true. - * @param coverSegment [optional] Boolean. Defines the uv mapping, when true and coverall is false a unique material is stretched along one PathSegment. Default is false. - * @param alignToPath [optional] Boolean. If the profile must follow the path or keep its original orientation. - * @param centerMesh [optional] Boolean. If the geometry needs to be recentered in its own object space. If the position after generation is set to 0,0,0, the object would be centered in worldspace. Default is false. - * @param mapFit [optional] Boolean. The UV mapping is percentually spreaded over the width of the path, making texture looking nicer and edits for applications such as a race track, road, more easy. Affects the uv's u values and set distributeU to false. Default is false. - * @param flip [optional] Boolean. If the faces must be reversed depending on Vector3D's orientation. Default is false. - * @param closePath [optional] Boolean. If the last PathSegment entered must be welded back to first one. Executed in a straight manner, its recommanded to pass the first entry to the Path again, as last entry if curves are involved. - * @param materials [optional] Vector.<MaterialBase>. An optional Vector.<MaterialBase> of different materials that can be alternated along the path if coverAll is false. - * @param scales [optional] An optional Vector.<Vector3D> of Vector3D objects that defines a series of scales to be set on each PathSegment. - * @param smoothScale [optional] Boolean. Defines if the scale must be interpolated between values or keep their full aspect on each PathSegment. - * @param rotations [optional] An optional Vector.<Vector3D> of Vector3D objects that defines a series of rotations to be set on each PathSegment. - * @param smoothSurface [optional] An optional Boolean. Defines if the surface of the mesh must be smoothed or not. Default is true. - * @param distribute [optional] Boolean. If the mesh subdivision is evenly spreaded over the entire mesh. Depending on path definition, segments are possibly not having the same amount of subdivision. - * @param distributeU [optional] Boolean. If the mesh uv' u value is procentually spreaded over the entire mesh surface. Prevents the source map to be stretched. Default is true. - * @param keepExtremes [optional] Boolean. If the the first and last profile coordinates must be kept accessible, in order to feed classes such as DelaunayMesh. Default is false;]]> - - - - - - - 196605 - - - - - - - - <_tmpVectors> - <_subGeometry> - <_indice> - <_uva> - <_uvb> - <_uvc> - <_uvd> - <_va> - <_vb> - <_vc> - <_vd> - <_uvs> - <_vertices> - <_indices> - <_geomDirty expr="true"> - - true - - <_profiles> - <_subdivision> - <_centerMesh> - <_closeShape> - <_coverAll> - <_flip> - - - * Defines if the texture(s) should be stretched to cover the entire mesh or per step between segments. Defaults to false. - - - - - - - - * Defines if the texture(s) should be stretched to cover the entire mesh or per step between segments. Defaults to false. - - - - - - - - - - - - - - - - * Defines if the face orientatio needs to be inverted - - - - - - - - * Defines whether the mesh is _centerMeshed of not after generation - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Invalidates the geometry, causing it to be rebuillded when requested. - - - - - - - - - - - - - { flip : false, coverAll : false, closeShape : false, centerMesh : false, subdivision : 1 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_tasks> - <_requireDepthRender> - <_textureWidth> - <_textureHeight> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_brightPassTask> - <_vBlurTask> - <_hBlurTask> - <_compositeTask> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { quality : 3, exposure : 2, threshold : .75, blurY : 15, blurX : 15 } - - - - - - - - <_hBlurTask> - <_vBlurTask> - - - - - - - - - - - - - * The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value). - * Higher values provide better performance at the cost of reduces quality. - - - - - - - - - - - - - - - - - - { stepSize : -1, blurY : 3, blurX : 3 } - * Creates a new BlurFilter3D object - * @param blurX The amount of horizontal blur to apply - * @param blurY The amount of vertical blur to apply - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - - - - <_focusTarget> - <_hDofTask> - <_vDofTask> - - - * The amount of pixels between each sample. - - - - - - - - * An optional target ObjectContainer3D that will be used to auto-focus on. - - - - - - - - * The distance from the camera to the point that is in focus. - - - - - - - - * The distance between the focus point and the maximum amount of blur. - - - - - - - - * The maximum amount of horizontal blur. - - - - - - - - * The maximum amount of vertical blur. - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1, maxBlurY : 3, maxBlurX : 3 } - * Creates a new DepthOfFieldFilter3D object. - * @param blurX The maximum amount of horizontal blur to apply - * @param blurY The maximum amount of vertical blur to apply - * @param stepSize The distance between samples. Set to -1 to auto-detect with acceptable quality. - - - - - - - <_blurTask> - - - - - - - - * The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value). - * Higher values provide better performance at the cost of reduces quality. - - - - - - - - - - - - { stepSize : -1 } - * Creates a new HBlurFilter3D object - * @param amount The amount of blur in pixels - * @param stepSize The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value). - - - - - - - - - <_dofTask> - <_focusTarget> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1, maxBlur : 3 } - * Creates a new HDepthOfFieldFilter3D object - * @param amount The amount of blur to apply in pixels - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - - <_hslTask> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { b : 1, g : 1, r : 1, saturation : 1 } - - - - - - <_compositeTask> - <_copyTask> - - - - - - - - - - - - - - - - { strength : .65 } - - - - - - - - - - - <_blurTask> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { cy : 0.5, cx : 0.5, blurWidth : -0.3, blurStart : 1.0, glowGamma : 1.6, intensity : 8.0 } - - - - - - - <_blurTask> - - - - - - - - * The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value). - * Higher values provide better performance at the cost of reduces quality. - - - - - - - - - - - - { stepSize : -1 } - * Creates a new VBlurFilter3D object - * @param amount The amount of blur in pixels - * @param stepSize The distance between two blur samples. Set to -1 to autodetect with acceptable quality (default value). - - - - - - - - - <_dofTask> - <_focusTarget> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1, maxBlur : 3 } - * Creates a new VDepthOfFieldFilter3D object - * @param amount The amount of blur to apply in pixels - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - - <_mainInputTexture> - <_mainInputTextureContext> - <_scaledTextureWidth expr="-1"> - - -1 - - <_scaledTextureHeight expr="-1"> - - -1 - - <_textureWidth expr="-1"> - - -1 - - <_textureHeight expr="-1"> - - -1 - - <_textureDimensionsInvalid expr="true"> - - true - - <_program3DInvalid expr="true"> - - true - - <_program3D> - <_program3DContext> - <_target> - <_requireDepthRender> - <_textureScale expr="0"> - - 0 - - - - * The texture scale for the input of this texture. This will define the output of the previous entry in the chain - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { requireDepthRender : false } - - - - - - - <_data> - <_overlayTexture> - <_exposure> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_brightPassData> - <_threshold> - - - - - - - - - - - - - - - - - - { threshold : .75 } - - - - - - - - <_data> - <_overlayTexture> - <_blendMode> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { exposure : 1 } - - - - - - <_secondaryInputTexture> - - - - - - - - - - - - - - - - - - - - - 15 - - - - <_amount> - <_data> - <_stepSize expr="1"> - - 1 - - <_realStepSize> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1 } - * Creates a new Filter3DHDepthOfFFieldTask - * @param amount The maximum amount of blur to apply in pixels at the most out-of-focus areas - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - 10 - - - - - - <_maxBlur> - <_data> - <_focusDistance> - <_range expr="1000"> - - 1000 - - <_stepSize> - <_realStepSize> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1 } - * Creates a new Filter3DHDepthOfFFieldTask - * @param amount The maximum amount of blur to apply in pixels at the most out-of-focus areas - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - - - <_rgbData> - <_saturation expr="0.6"> - - 0.6 - - <_r expr="1"> - - 1 - - <_b expr="1"> - - 1 - - <_g expr="1"> - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 - - - - - - - - <_data> - <_intensity expr="1.0"> - - 1.0 - - <_glowGamma expr="1.0"> - - 1.0 - - <_blurStart expr="1.0"> - - 1.0 - - <_blurWidth expr="-0.3"> - - -0.3 - - <_cx expr="0.5"> - - 0.5 - - <_cy expr="0.5"> - - 0.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { cy : 0.5, cx : 0.5, blurWidth : -0.3, blurStart : 1.0, glowGamma : 1.0, intensity : 1.0 } - - - - - - - - 15 - - - - <_amount> - <_data> - <_stepSize expr="1"> - - 1 - - <_realStepSize> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1 } - * - * @param amount - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - 10 - - - - - - <_maxBlur> - <_data> - <_focusDistance> - <_range expr="1000"> - - 1000 - - <_stepSize> - <_realStepSize> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stepSize : -1 } - * Creates a new Filter3DHDepthOfFFieldTask - * @param amount The maximum amount of blur to apply in pixels at the most out-of-focus areas - * @param stepSize The distance between samples. Set to -1 to autodetect with acceptable quality. - - - - - - - - <_data> - <_overlayTexture> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_instances expr="new Map<String,Asset3DLibraryBundle>()" line="21" static="1"> - - - - - - ()]]> - away3d - - - - - * Short-hand for conflictStrategy property on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.conflictStrategy - - - - * Short-hand for conflictPrecedence property on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.conflictPrecedence - - - - - - - { key : "default" } - * Returns an Asset3DLibrary bundle instance. If no key is given, returns the default bundle (which is - * similar to using the Asset3DLibraryBundle as a singleton). To keep several separated library bundles, - * pass a string key to this method to define which bundle should be returned. This is - * referred to as using the Asset3DLibraryBundle as a multiton. - * - * @param key Defines which multiton instance should be returned. - * @return An instance of the asset library - - - - - - - * - - - - - - - * - - - - - - - - - - - - - - - - - - - { filterFunc : null, namespaceFilter : null, Asset3DTypeFilter : null } - * Short-hand for createIterator() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.createIterator() - - - - - - - - - - { parser : null, ns : null, context : null } - * Short-hand for load() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.load() - - - - - - - - - - { parser : null, ns : null, context : null } - * Short-hand for loadData() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.loadData() - - - - - - - - - { ns : null } - * Short-hand for getAsset() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.getAsset() - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - * Short-hand for addEventListener() method on default asset library bundle. - - - - - - - - - { useCapture : false } - * Short-hand for removeEventListener() method on default asset library bundle. - - - - - - - * Short-hand for hasEventListener() method on default asset library bundle. - - - - - - - - - - - * Short-hand for addAsset() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.addAsset() - - - - - - - - { dispose : true } - * Short-hand for removeAsset() method on default asset library bundle. - * - * @param asset The asset which should be removed from the library. - * @param dispose Defines whether the assets should also be disposed. - * - * @see away3d.library.Asset3DLibraryBundle.removeAsset() - - - - - - - - - { dispose : true, ns : null } - * Short-hand for removeAssetByName() method on default asset library bundle. - * - * @param name The name of the asset to be removed. - * @param ns The namespace to which the desired asset belongs. - * @param dispose Defines whether the assets should also be disposed. - * - * @see away3d.library.Asset3DLibraryBundle.removeAssetByName() - - - - - - - { dispose : true } - * Short-hand for removeAllAssets() method on default asset library bundle. - * - * @param dispose Defines whether the assets should also be disposed. - * - * @see away3d.library.Asset3DLibraryBundle.removeAllAssets() - - - - - - - - { dispose : true, ns : null } - * Short-hand for removeNamespaceAssets() method on default asset library bundle. - * - * @see away3d.library.Asset3DLibraryBundle.removeNamespaceAssets() - - - - Asset3DLibrary object.]]> - - getBundle() method.]]> - - - - - - - - - - { key : "default" } - * Returns an Asset3DLibraryBundle instance. If no key is given, returns the default bundle instance (which is - * similar to using the Asset3DLibraryBundle as a singleton.) To keep several separated library bundles, - * pass a string key to this method to define which bundle should be returned. This is - * referred to as using the Asset3DLibrary as a multiton. - * - * @param key Defines which multiton instance should be returned. - * @return An instance of the asset library - - - - ConflictStrategy.APPEND_NUM_SUFFIX - * is used which means that a numeric suffix is appended to one of the assets. The - * conflictPrecedence property defines which of the two conflicting assets will - * be renamed. - * - * @see a3d.library.naming.ConflictStrategy - * @see a3d.library.Asset3DLibrary.conflictPrecedence]]> - - - - ConflictPrecedence.FAVOR_NEW is used, meaning that the newly renamed - * asset will keep it's new name while the older asset gets renamed to not conflict. - * - * This property is ignored for conflict strategies that do not actually rename an - * asset automatically, such as ConflictStrategy.IGNORE and ConflictStrategy.THROW_ERROR. - * - * @see a3d.library.naming.ConflictPrecedence - * @see a3d.library.naming.ConflictStrategy]]> - - <_loadingSessions> - <_strategy> - <_strategyPreference> - <_assets> - <_assetDictionary> - - - - - - - <_assetDictDirty> - - - - - - * - - - - - - - * - - - - - - - - - - - - - - - - - - - { filterFunc : null, namespaceFilter : null, Asset3DTypeFilter : null } - * Create an Asset3DLibraryIterator instance that can be used to iterate over the assets - * in this asset library instance. The iterator can filter assets on asset type and/or - * namespace. A "null" filter value means no filter of that type is used. - * - * @param Asset3DTypeFilter Asset type to filter on (from the Asset3DType enum class.) Use - * null to not filter on asset type. - * @param namespaceFilter Namespace to filter on. Use null to not filter on namespace. - * @param filterFunc Callback function to use when deciding whether an asset should be - * included in the iteration or not. This needs to be a function that takes a single - * parameter of type IAsset and returns a Bool where true means it should be included. - * - * @see away3d.library.assets.Asset3DType - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a file and (optionally) all of its dependencies. - * - * @param req The URLRequest object containing the URL of the file to be loaded. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a resource from existing data in memory. - * - * @param data The data object containing all resource information. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - - { ns : null } - * - - - - - - - conflictStrategy and - * conflictPrecedence properties.]]> - - - - - - - - { dispose : true } - * Removes an asset from the library, and optionally disposes that asset by calling - * it's disposeAsset() method (which for most assets is implemented as a default - * version of that type's dispose() method. - * - * @param asset The asset which should be removed from this library. - * @param dispose Defines whether the assets should also be disposed. - - - - - - - - - { dispose : true, ns : null } - * Removes an asset which is specified using name and namespace. - * - * @param name The name of the asset to be removed. - * @param ns The namespace to which the desired asset belongs. - * @param dispose Defines whether the assets should also be disposed. - * - * @see away3d.library.Asset3DLibrary.removeAsset() - - - - - - - { dispose : true } - * Removes all assets from the asset library, optionally disposing them as they - * are removed. - * - * @param dispose Defines whether the assets should also be disposed. - - - - - - - - { dispose : true, ns : null } - * Removes all assets belonging to a particular namespace (null for default) - * from the asset library, and optionall disposes them by calling their - * disposeAsset() method. - * - * @param ns The namespace from which all assets should be removed. - * @param dispose Defines whether the assets should also be disposed. - * - * @see away3d.library.Asset3DLibrary.removeAsset() - - - - - - - - { autoRemoveEmptyNamespace : true } - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a yet unloaded resource file from the given url. - - - - - - - - - - - { parser : null, ns : null, context : null } - * Retrieves an unloaded resource parsed from the given data. - * @param data The data to be parsed. - * @param id The id that will be assigned to the resource. This can later also be used by the getResource method. - * @param ignoreDependencies Indicates whether or not dependencies should be ignored or loaded. - * @param parser An optional parser object that will translate the data into a usable resource. - * @return A handle to the retrieved resource. - - - - - - - - * Called when a dependency was retrieved. - - - - - - - * Called when a an error occurs during dependency retrieving. - - - - - - - * Called when a an error occurs during parsing. - - - - - - - - - - - - - - - * Called when the resource and all of its dependencies was retrieved. - - - - - - - - - - - * Called when unespected error occurs - - - - - - - - Asset3DLibraryBundle object.]]> - - getInstance() method.]]> - - - - - - "entity" - - - - "skybox" - - - - "camera" - - - - "segmentSet" - - - - "mesh" - - - - "geometry" - - - - "skeleton" - - - - "skeletonPose" - - - - "container" - - - - "texture" - - - - "textureProjector" - - - - "material" - - - - "animationSet" - - - - "animationState" - - - - "animationNode" - - - - "animator" - - - - "stateTransition" - - - - "light" - - - - "lightPicker" - - - - "shadowMapMethod" - - - - "effectsMethod" - - - - - - - - <_bitmapData> - - - * The bitmapData to be treated as a resource. - - - - - - - - - * Cleans up any resources used by the current object. - - - - - - - { bitmapData : null } - * Creates a new BitmapDataResource object. - * @param bitmapData An optional BitmapData object to use as the resource data. - - * BitmapDataResource is a wrapper for loaded BitmapData, allowing it to be used uniformly as a resource when - * loading, parsing, and listing/resolving dependencies. - - - - - - "favorOld" - * Signals that in a conflict, the previous owner of the conflicting name - * should be favored (and keep it's name) and that the newly renamed asset - * is reverted to a non-conflicting name. - - - - "favorNew" - * Signales that in a conflict, the newly renamed asset is favored (and keeps - * it's newly defined name) and that the previous owner of that name gets - * renamed to a non-conflicting name. - - * Enumaration class for precedence when resolving naming conflicts in the library. - * - * @see away3d.library.Asset3DLibrary.conflictPrecedence - * @see away3d.library.Asset3DLibrary.conflictStrategy - * @see away3d.library.naming.ConflictStrategy - - - - - - - - - - - * Resolve a naming conflict between two assets. Must be implemented by concrete strategy - * classes. - - - - * Create instance of this conflict strategy. Used internally by the Asset3DLibrary to - * make sure the same strategy instance is not used in all Asset3DLibrary instances, which - * would break any state caching that happens inside the strategy class. - - - - - - - - - - - - - - - * Provided as a convenience method for all conflict strategy classes, as a way to finalize - * the conflict resolution by applying the new names and dispatching the correct events. - - - - *
  • IgnoreConflictStrategy (ConflictStrategy.IGNORE)
  • - *
  • ErrorConflictStrategy (ConflictStrategy.THROW_ERROR)
  • - *
  • NumSuffixConflictStrategy (ConflictStrategy.APPEND_NUM_SUFFIX)
  • - * - * - * @see away3d.library.Asset3DLibrary.conflictStrategy - * @see away3d.library.naming.ConflictStrategy - * @see away3d.library.naming.IgnoreConflictStrategy - * @see away3d.library.naming.ErrorConflictStrategy - * @see away3d.library.naming.NumSuffixConflictStrategy]]>
    -
    - - - <_separator> - <_next_suffix> - - - - - - - - - - - - - - - - - { separator : "." } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new NumSuffixConflictStrategy() - * Specifies that in case of a naming conflict, one of the assets will be renamed and - * a numeric suffix appended to the base name. - - - - new IgnoreConflictStrategy() - * Specifies that naming conflicts should be ignored. This is not recommended in most - * cases, unless it can be 100% guaranteed that the application does not cause naming - * conflicts in the library (i.e. when an app-level system is in place to prevent this.) - - - - new ErrorConflictStrategy() - * Specifies that an error should be thrown if a naming conflict is discovered. Use this - * to be 100% sure that naming conflicts never occur unnoticed, and when it's undesirable - * to have the library automatically rename assets to avoid such conflicts. - - Asset3DLibrary.conflictPrecedence property defines which - * of the conflicting assets will get to keep it's name, and which is renamed (if any.) - * - * @see away3d.library.Asset3DLibrary.conflictStrategy - * @see away3d.library.naming.ConflictStrategyBase]]> - - - - - - <_assets> - <_filtered> - <_idx> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70] - away3d - - * @private - * Char codes for 0123456789ABCDEF - - - - The UID has the form - * "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" - * where X is a hexadecimal digit (0-9, A-F).

    - * - *

    This UID will not be truly globally unique; but it is the best - * we can do without player support for UID generation.

    - * - * @return The newly-generated UID. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3]]>
    -
    - - - - - - away3d - * Returns the decimal representation of a hex digit. - * @private - - -
    - - - - - - - - - - <_color expr="0xffffff"> - - 0xffffff - - <_colorR expr="1"> - - 1 - - <_colorG expr="1"> - - 1 - - <_colorB expr="1"> - - 1 - - <_ambientColor expr="0xffffff"> - - 0xffffff - - <_ambient expr="0"> - - 0 - - <_ambientR expr="0"> - - - 0 - away3d - - - <_ambientG expr="0"> - - - 0 - away3d - - - <_ambientB expr="0"> - - - 0 - away3d - - - <_specular expr="1"> - - 1 - - <_specularR expr="1"> - - - 1 - away3d - - - <_specularG expr="1"> - - - 1 - away3d - - - <_specularB expr="1"> - - - 1 - away3d - - - <_diffuse expr="1"> - - 1 - - <_diffuseR expr="1"> - - - 1 - away3d - - - <_diffuseG expr="1"> - - - 1 - away3d - - - <_diffuseB expr="1"> - - - 1 - away3d - - - <_castsShadows public="1"> - <_shadowMapper public="1"> - - - - - - - - - 1.]]> - - - - - - - - 1.]]> - - - - - - - - 0xffffff.]]> - - - - - - - - 0.]]> - - - - - - - - 0xffffff.]]> - - - - - - - - - - - - - - - { target : null } - away3d - - * Gets the optimal projection matrix to render a light-based depth map for a single object. - * - * @param renderable The IRenderable object to render to a depth map. - * @param target An optional target Matrix3D object. If not provided, an instance will be created. - * @return A Matrix3D object containing the projection transformation. - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Updates the total specular components of the light. - - - - * Updates the total diffuse components of the light. - - - - - - - - - * Create a new LightBase object. - * @param positionBased Indicates whether or not the light has a valid position, or is "infinite" such as a DirectionalLight. - - * LightBase provides an abstract base class for subtypes representing lights. - - - - - - - <_direction> - <_tmpLookAt> - <_sceneDirection> - <_projAABBPoints> - - - - * The direction of the light in scene coordinates. - - - - * The direction of the light. - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - { target : null } - * @inheritDoc - - - - - - - - - { zDir : 1, yDir : -1, xDir : 0 } - * Creates a new DirectionalLight object. - * @param xDir The x-component of the light's directional vector. - * @param yDir The y-component of the light's directional vector. - * @param zDir The z-component of the light's directional vector. - - * DirectionalLight represents an idealized light "at infinity", to be used for distant light sources such as the sun. - * In any position in the scene, the light raytracing will always be parallel. - * Although the position of the light does not impact its effect, it can be used along with lookAt to intuitively - * create day cycles by orbiting the position around a center point and using lookAt at that position. - - - - - - - <_diffuseMap> - <_specularMap> - - - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - { target : null } - * @inheritDoc - - - - - - - - { specularMap : null } - * Creates a new LightProbe object. - - - - - - - - <_radius public="1" expr="90000"> - - 90000 - - <_fallOff public="1" expr="100000"> - - 100000 - - <_fallOffFactor public="1"> - - - - - * The minimum distance of the light's reach. - - - - - - - - away3d - - - - * The maximum distance of the light's reach - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - { target : null } - * @inheritDoc - - - - * Creates a new PointLight object. - - * PointLight represents an omni-directional light. The light is emitted from a given position in the scene. - - - - - - - - <_casterCollector> - <_depthMap> - <_depthMapSize expr="2048"> - - 2048 - - <_light> - <_explicitDepthMap> - <_autoUpdateShadows expr="true"> - - true - - <_shadowsInvalid> - - away3d - - - - - - - - - - - - - - away3d - * This is used by renderers that can support depth maps to be shared across instances - * @param depthMap - - - - - - - - - - - - - - - - - - - - - - away3d - * Renders the depth map for this light. - * @param entityCollector The EntityCollector that contains the original scene data. - * @param renderer The DepthRenderer to render the depth map. - - - - - - - - - - - - - - - - - - - - away3d - - - - away3d - - <_overallDepthCamera> - <_localFrustum> - <_lightOffset expr="10000"> - - 10000 - - <_matrix> - <_overallDepthLens> - <_snap expr="64"> - - 64 - - <_cullPlanes> - <_minZ> - <_maxZ> - - - - - - - - - - - - - * Depth projection matrix that projects from scene space to depth map. - - - - * Depth projection matrix that projects from scene space to depth map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - away3d - - <_scissorRects> - <_scissorRectsInvalid expr="true"> - - true - - <_splitRatios> - <_numCascades> - <_depthCameras> - <_depthLenses> - <_texOffsetsX> - <_texOffsetsY> - <_changeDispatcher> - <_nearPlaneDistances> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { useCapture : false } - - - - - - - - - - - - - - - - - - - - { numCascades : 3 } - - - - - - <_depthCameras> - <_lenses> - <_needsRender> - - - - - - - - - - - - - - - - - - - - - - - - - <_coverageRatio> - - - * A value between 0 and 1 to indicate the ratio of the view frustum that needs to be covered by the shadow map. - - - - - - - - - - - - - - - { coverageRatio : .5 } - - - - - - - - - - - * Enables a specific parser. - * When no specific parser is set for a loading/parsing opperation, - * loader3d can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. - * - * @param parserClass The parser class to enable. - * - * @see away3d.loaders.parsers.Parsers - - - - - - - * Enables a list of parsers. - * When no specific parser is set for a loading/parsing opperation, - * AssetLoader can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. - * - * @param parserClasses A Vector of parser classes to enable. - * @see away3d.loaders.parsers.Parsers - - <_context> - <_token> - <_uri> - <_errorHandlers> - - - - <_parseErrorHandlers> - - - - <_stack> - <_baseDependency> - <_loadingDependency> - <_namespace> - - - * Returns the base dependency of the loader - - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a file and (optionally) all of its dependencies. - * - * @param req The URLRequest object containing the URL of the file to be loaded. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a resource from already loaded data. - * - * @param data The data object containing all resource information. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - { parser : null } - * Recursively retrieves the next to-be-loaded and parsed dependency on the stack, or pops the list off the - * stack when complete and continues on the top set. - * @param parser The parser that will translate the data into a usable resource. - - - - - - - - { parser : null } - * Retrieves a single dependency. - * @param parser The parser that will translate the data into a usable resource. - - - - - - - - - - - - - - - - - - - - * Called when a single dependency loading failed, and pushes further dependencies onto the stack. - * @param event - - - - - - - ParserEvent.PARSE_ERROR - * @param event]]> - - - - - - - - - - - - - - - * Called when a single dependency was parsed, and pushes further dependencies onto the stack. - * @param event - - - - - - - * Called when an image is too large or it's dimensions are not a power of 2 - * @param event - - - - - - - - - - - - - - - - - - - - away3d - * @private - * This method is used by other loader classes (e.g. Loader3D and Asset3DLibraryBundle) to - * add error event listeners to the AssetLoader instance. This system is used instead of - * the regular EventDispatcher system so that the Asset3DLibrary error handler can be sure - * that if hasEventListener() returns true, it's client code that's listening for the - * event. Secondly, functions added as error handler through this custom method are - * expected to return a boolean value indicating whether the event was handled (i.e. - * whether they in turn had any client code listening for the event.) If no handlers - * return true, the AssetLoader knows that the event wasn't handled and will throw an RTE. - - - - - - - - - - away3d - - - - * Create a new ResourceLoadSession object. - - * AssetLoader can load any file format that Away3D supports (or for which a third-party parser - * has been plugged in) and it's dependencies. Events are dispatched when assets are encountered - * and for when the resource (or it's dependencies) have been loaded. - * - * The AssetLoader will not make assets available in any other way than through the dispatched - * events. To store assets and make them available at any point from any module in an application, - * use the Asset3DLibrary to load and manage assets. - * - * @see away3d.loading.Loader3D - * @see away3d.loading.Asset3DLibrary - - - - - - - - - - * Enables a specific parser. - * When no specific parser is set for a loading/parsing opperation, - * loader3d can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. - * - * @param parserClass The parser class to enable. - * @see away3d.loaders.parsers.Parsers - - - - - - - * Enables a list of parsers. - * When no specific parser is set for a loading/parsing opperation, - * loader3d can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. - * - * @param parserClasses A Vector of parser classes to enable. - * @see away3d.loaders.parsers.Parsers - - <_loadingSessions> - <_useAssetLib> - <_assetLibId> - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a file and (optionally) all of its dependencies. - * - * @param req The URLRequest object containing the URL of the file to be loaded. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - - - - { parser : null, ns : null, context : null } - * Loads a resource from already loaded data. - * - * @param data The data object containing all resource information. - * @param context An optional context object providing additional parameters for loading - * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets - * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - * Stop the current loading/parsing process. - - - - - - - - - - - - - - - - - - - - - - - - - - - - { asset3DLibraryId : null, useAsset3DLibrary : true } - - * Loader3D can load any file format that Away3D supports (or for which a third-party parser - * has been plugged in) and be added directly to the scene. As assets are encountered - * they are added to the Loader3D container. Assets that can not be displayed in the scene - * graph (e.g. unused bitmaps/materials/skeletons etc) will be ignored. - * - * This provides a fast and easy way to load models (no need for event listeners) but is not - * very versatile since many types of assets are ignored. - * - * Loader3D by default uses the Asset3DLibrary to load all assets, which means that they also - * ends up in the library. To circumvent this, Loader3D can be configured to not use the - * Asset3DLibrary in which case it will use the AssetLoader directly. - * - * @see away3d.loaders.AssetLoader - * @see away3d.library.Asset3DLibrary - - - - - 0 - - - - 1 - - - - 2 - - <_includeDependencies> - <_dependencyBaseUrl> - <_embeddedDataByUrl> - - - - <_remappedUrls> - - - - <_materialMode> - <_overrideAbsPath> - <_overrideFullUrls> - - - * Defines whether dependencies (all files except the one at the URL given to the load() or - * parseData() operations) should be automatically loaded. Defaults to true. - - - - - - - - - * MaterialMode defines, if the Parser should create SinglePass or MultiPass Materials - * Options: - * 0 (Default / undefined) - All Parsers will create SinglePassMaterials, but the AWD2.1parser will create Materials as they are defined in the file - * 1 (Force SinglePass) - All Parsers create SinglePassMaterials - * 2 (Force MultiPass) - All Parsers will create MultiPassMaterials - * - - - - - - - - - * A base URL that will be prepended to all relative dependency URLs found in a loaded resource. - * Absolute paths will not be affected by the value of this property. - - - - - - - - - * Defines whether absolute paths (defined as paths that begin with a "/") should be overridden - * with the dependencyBaseUrl defined in this context. If this is true, and the base path is - * "base", /path/to/asset.jpg will be resolved as base/path/to/asset.jpg. - - - - - - - - - * Defines whether "full" URLs (defined as a URL that includes a scheme, e.g. http://) should be - * overridden with the dependencyBaseUrl defined in this context. If this is true, and the base - * path is "base", http://example.com/path/to/asset.jpg will be resolved as base/path/to/asset.jpg. - - - - - - - - - - - - - * Map a URL to another URL, so that files that are referred to by the original URL will instead - * be loaded from the new URL. Use this when your file structure does not match the one that is - * expected by the loaded file. - * - * @param originalUrl The original URL which is referenced in the loaded resource. - * @param newUrl The URL from which Away3D should load the resource instead. - * - * @see mapUrlToData() - - - - - - - - * Map a URL to embedded data, so that instead of trying to load a dependency from the URL at - * which it's referenced, the dependency data will be retrieved straight from the memory instead. - * - * @param originalUrl The original URL which is referenced in the loaded resource. - * @param data The embedded data. Can be ByteArray or a class which can be used to create a bytearray. - - - - - - - away3d - * @private - * Defines whether embedded data has been mapped to a particular URL. - - - - - - - away3d - * @private - * Returns embedded data for a particular URL. - - - - - - - away3d - * @private - * Defines whether a replacement URL has been mapped to a particular URL. - - - - - - - away3d - * @private - * Returns new (replacement) URL for a particular original URL. - - - - - - - - { dependencyBaseUrl : null, includeDependencies : true } - * AssetLoaderContext provides configuration for the AssetLoader load() and parse() operations. - * Use it to configure how (and if) dependencies are loaded, or to map dependency URLs to - * embedded data. - * - * @see away3d.loading.AssetLoader - - - - - - <_loader> - - away3d - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { useCapture : false } - - - - - - - - - - - - - - * Dispatched when any asset finishes parsing. Also see specific events for each - * individual asset type (meshes, materials et c.) - * - * @eventType away3d.events.Asset3DEvent - - - - <_id> - <_req> - <_assets> - <_parentParser> - <_data> - <_retrieveAsRawData> - <_suppressAsset3DEvents> - <_dependencies> - - - away3d - - - - away3d - - - - - - - - - - - - - - - - * The data containing the dependency to be parsed, if the resource was already loaded. - - - - - - - - away3d - * @private - * Method to set data after having already created the dependency object, e.g. after load. - - - - * The parser which is dependent on this ResourceDependency object. - - - - - * Resolve the dependency when it's loaded with the parent parser. For example, a dependency containing an - * ImageResource would be assigned to a Mesh instance as a BitmapMaterial, a scene graph object would be added - * to its intended parent. The dependency should be a member of the dependencies property. - - - - * Resolve a dependency failure. For example, map loading failure from a 3d file - - - - - - - * Resolve the dependencies name - - - - - - - - - - - - { suppressAsset3DEvents : false, retrieveAsRawData : false } - - * ResourceDependency represents the data required to load, parse and resolve additional files ("dependencies") - * required by a parser, used by ResourceLoadSession. - * - - - - - - - true - proceedParsing to indicate no more parsing is needed.]]> - - - - false - proceedParsing to indicate more parsing is needed, allowing asynchronous parsing.]]> - - <_fileName> - - away3d - - <_dataFormat> - <_data> - <_frameLimit> - <_lastFrameTime> - - - <_dependencies> - <_parsingPaused> - <_parsingComplete> - <_parsingFailure> - <_timer> - <_materialMode> - - - - - - * Validates a bitmapData loaded before assigning to a default BitmapMaterial - - - - - - - - - - * parsingPaused will be true, if the parser is paused - * (e.g. it is waiting for dependencys to be loadet and parsed before it will continue) - - - - - - - * MaterialMode defines, if the Parser should create SinglePass or MultiPass Materials - * Options: - * 0 (Default / undefined) - All Parsers will create SinglePassMaterials, but the AWD2.1parser will create Materials as they are defined in the file - * 1 (Force SinglePass) - All Parsers create SinglePassMaterials - * 2 (Force MultiPass) - All Parsers will create MultiPassMaterials - * - - - - - - - - - ParserDataFormat.BINARY or ParserDataFormat.PLAIN_TEXT.]]> - - - - - - - - - { frameLimit : 30 } - * Parse data (possibly containing bytearry, plain text or BitmapAsset) asynchronously, meaning that - * the parser will periodically stop parsing so that the AVM may proceed to the - * next frame. - * - * @param data The untyped data object in which the loaded data resides. - * @param frameLimit number of milliseconds of parsing allowed per frame. The - * actual time spent on a frame can exceed this number since time-checks can - * only be performed between logical sections of the parsing procedure. - - - - * A list of dependencies that need to be loaded and resolved for the object being parsed. - - - - - - - - away3d - * Resolve a dependency when it's loaded. For example, a dependency containing an ImageResource would be assigned - * to a Mesh instance as a BitmapMaterial, a scene graph object would be added to its intended parent. The - * dependency should be a member of the dependencies property. - * - * @param resourceDependency The dependency to be resolved. - - - - - - - away3d - * Resolve a dependency loading failure. Used by parser to eventually provide a default map - * - * @param resourceDependency The dependency to be resolved. - - - - - - - - away3d - * Resolve a dependency name - * - * @param resourceDependency The dependency to be resolved. - - - - away3d - * After Dependencys has been loaded and parsed, continue to parse - - - - - - - - - { name : null } - away3d - - Asset3DEvent.ASSET_COMPLETE and another Asset3DEvent, that depents on the type of asset. - * - * @param asset The asset to finalize - * @param name The name of the asset. The name will be applied to the asset]]> - - - - ParserBase.PARSING_DONE or - * ParserBase.MORE_TO_PARSE.]]> - - - - - - - { message : "Unknown parsing error" } - ParserEvent.PARSE_ERROR - * - * @param message The message to apply to the ParserEvent.PARSE_ERROR]]> - - - - - - - - - - - { suppressErrorEvents : false, data : null, retrieveAsRawData : false } - - - - ParserEvent.READY_FOR_DEPENDENCIES]]> - - - - * Tests whether or not there is still time left for parsing within the maximum allowed time frame per session. - * @return True if there is still time left, false if the maximum allotted time was exceeded and parsing should be interrupted. - - - - - - - { event : null } - * Called when the parsing pause interval has passed and parsing can proceed. - - - - - - - * Initializes the parsing of data. - * @param frameLimit The maximum duration of a parsing session. - - - - * Finish parsing the data. - - - - - - - ParserDataFormat.BINARY or ParserDataFormat.PLAIN_TEXT, and should be provided by the concrete subtype. - * - * @see away3d.loading.parsers.ParserDataFormat]]> - - ParserBase provides an abstract base class for objects that convert blocks of data to data structures - * supported by Away3D. - * - * If used by AssetLoader to automatically determine the parser type, two public static methods should - * be implemented, with the following signatures: - * - * public static function supportsType(extension : String) : Bool - * Indicates whether or not a given file extension is supported by the parser. - * - * public static function supportsData(data : *) : Bool - * Tests whether a data block can be parsed by the parser. - * - * Furthermore, for any concrete subtype, the method initHandle should be overridden to immediately - * create the object that will contain the parsed data. This allows ResourceManager to return an object - * handle regardless of whether the object was loaded or not. - * - * @see away3d.loading.parsers.AssetLoader - * @see away3d.loading.ResourceManager]]> - - - - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_byteData> - <_startedParsing> - <_doneParsing> - <_loader> - - - * @inheritDoc - - - - - - - * Called when "loading" is complete. - - - - * Creates a new ImageParser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * ImageParser provides a "parser" for natively supported image types (jpg, png). While it simply loads bytes into - * a loader object, it wraps it in a BitmapDataResource so resource management can happen consistently without - * exception cases. - - - - - <_parsers expr="Vector.ofArray(cast [ImageParser])" line="41" static="1"> - - Vector.ofArray(cast [ImageParser]) - - - - - - - - - - <_parser> - <_req> - <_fileExtension> - <_fileName> - <_loadAsRawData> - <_materialMode> - <_data> - - - - - - - - - - - - - - { loadAsRawData : false, parser : null } - * Load a resource from a file. - * - * @param urlRequest The URLRequest object containing the URL of the object to be loaded. - * @param parser An optional parser object that will translate the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - - - - - - { req : null, parser : null } - * Loads a resource from already loaded data. - * @param data The data to be parsed. Depending on the parser type, this can be a ByteArray, String or XML. - * @param uri The identifier (url or id) of the object to be loaded, mainly used for resource management. - * @param parser An optional parser object that will translate the data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type. - - - - * A reference to the parser that will translate the loaded data into a usable resource. - - - - - * A list of dependencies that need to be loaded and resolved for the loaded object. - - - - - - - - * Splits a url string into base and extension. - * @param url The url to be decomposed. - - - - * Guesses the parser to be used based on the file extension. - * @return An instance of the guessed parser. - - - - - - - * Guesses the parser to be used based on the file contents. - * @param data The data to be parsed. - * @param uri The url or id of the object to be parsed. - * @return An instance of the guessed parser. - - - - - - - * Cleanups - - - - - - - * Called when loading of a file has failed - - - - - - - * Called when loading of a file is complete - - - - - - - * Initiates parsing of the loaded data. - * @param data The data to be parsed. - - - - - - - - - - - - - - - - - - - - - - - * Called when parsing is complete. - - - - - - - { materialMode : 0 } - * Creates a new SingleFileLoader object. - - * The SingleFileLoader is used to load a single file, as part of a resource. - * - * While SingleFileLoader can be used directly, e.g. to create a third-party asset - * management system, it's recommended to use any of the classes Loader3D, AssetLoader - * and Asset3DLibrary instead in most cases. - * - * @see away3d.loading.Loader3D - * @see away3d.loading.AssetLoader - * @see away3d.loading.Asset3DLibrary - - - - - - - 65535 - - - - String.fromCharCode(10) - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_activeContainer> - <_meshList> - <_trunk> - <_containersList expr="[]"> - - [] - - <_tmpcontainerpos expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_tmpos expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_kidsCount expr="0"> - - 0 - - <_activeMesh> - <_vertices> - <_uvs> - <_parsesV> - <_isQuad> - <_quadCount> - <_lastType expr=""""> - - "" - - <_charIndex> - <_oldIndex> - <_stringLen> - <_materialList> - <_groupCount> - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - - - * Creates a new AC3DParser object. - - * AC3DParser provides a parser for the AC3D data type. - * - * unsupported tags: "numsurf","crease","texrep","refs lines of","url","data" and "numvert lines of": - - - - - - - 65535 - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_objs> - <_geos> - <_oList> - <_aC> - <_dline> - <_container> - <_meshList> - <_inited> - <_uvs> - <_charIndex> - <_oldIndex> - <_stringLength> - <_state expr=""""> - - "" - - <_buffer expr="0"> - - 0 - - <_isMesh> - <_isMaterial> - <_id> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - * Creates a new AWD1Parser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * AWD1Parser provides a parser for the AWD data type. The version 1.0 in ascii. Usually generated by Prefab3D 1.x and Away3D engine exporters. - - - - - - - "lzma" - - - - 0 - - - - 1 - - - - 2 - - - - 1 - - - - 2 - - - - 3 - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 21 - - - - 22 - - - - 23 - - - - 31 - - - - 32 - - - - 41 - - - - 42 - - - - 43 - - - - 44 - - - - 45 - - - - 46 - - - - 47 - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_debug expr="false"> - - false - - <_byteData> - <_cur_block_id> - <_blocks> - <_newBlockBytes> - <_version> - <_compression> - <_accuracyOnBlocks> - <_accuracyMatrix> - <_accuracyGeo> - <_accuracyProps> - <_matrixNrType> - <_geoNrType> - <_propsNrType> - <_streaming> - <_texture_users> - - - - <_body> - <_defaultTexture> - <_defaultCubeTexture> - <_defaultBitmapMaterial> - <_cubeTextures> - - <_depthSizeDic> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * Resolve a dependency name - * - * @param resourceDependency The dependency to be resolved. - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { poseOnly : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { extraTypeInfo : "SingleTexture" } - - - - - - - - - - - - - - - { precision : false } - - - - - * Creates a new AWDParser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * AWDParser provides a parser for the AWD data type. - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - 2 - - - - 4 - - - - 8 - - - - 16 - - - - 32 - - - - 64 - - - - 128 - - - - 256 - - - - 512 - - - - 1024 - - - - 2048 - - - - 4096 - - - - 8192 - - - - 16384 - - - - 32768 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_parser> - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @private - * Delegate to the concrete parser. - - - - - - - * @private - * Delegate to the concrete parser. - - - - - - - - * @private - * Delagate to the concrete parser. - - - - - * Find the right conrete parser (AWD1Parser or AWD2Parser) and delegate actual - * parsing to it. - - - - - - - away3d - * @private - * Just bubble events from concrete parser. - - - - - - - away3d - * @private - * Just bubble events from concrete parser. - - - - - - - away3d - * @private - * Just bubble events from concrete parser. - - - - - - - away3d - * @private - * Just bubble events from concrete parser. - - - * The AWDParser class is a wrapper for both AWD1Parser and AWD2Parser, and will - * find the right concrete parser for an AWD file. - - - - - - - 1 - - - - CONFIG_USE_GPU - - - - 1 - - - - 2 - - - - 4 - - - - 8 - - - - PARSE_GEOMETRIES | PARSE_IMAGES | PARSE_MATERIALS | PARSE_VISUAL_SCENES - - <_numInstances expr="0" line="87" static="1"> - - 0 - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_doc> - <_fastDoc> - <_parseState expr="DAEParserState.LOAD_XML"> - - DAEParserState.LOAD_XML - - <_imageList> - <_imageCount> - <_currentImage> - <_dependencyCount expr="0"> - - 0 - - <_configFlags> - <_parseFlags> - <_libImages> - - - - <_libMaterials> - - - - <_libEffects> - - - - <_libGeometries> - - - - <_libControllers> - - - - <_libAnimations> - - - - <_scene> - <_root> - <_geometries> - <_animationInfo> - <_rootNodes> - <_defaultBitmapMaterial expr="DefaultMaterialManager.getDefaultMaterial()"> - - DefaultMaterialManager.getDefaultMaterial() - - <_defaultColorMaterial expr="new ColorMaterial(0xff0000)"> - - new ColorMaterial(0xff0000) - - <_defaultColorMaterialMulti expr="new ColorMultiPassMaterial(0xff0000)"> - - new ColorMultiPassMaterial(0xff0000) - - - - - - - - { clone : false } - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - { map : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { tab : "", parent : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { tab : "", parent : -1 } - - - - - - - - - - - - - - - - - - - - - - { autoDeriveVertexTangents : true, autoDeriveVertexNormals : true, reverseTriangles : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { configFlags : 0 } - * @param configFlags Bitfield to configure the parser. - * @see DAEParser.CONFIG_USE_GPU etc. - - * DAEParser provides a parser for the DAE data type. - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - { name : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { defaultValue : 0 } - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - - - - - - - { numDecimals : 2 } - - - - - - - - - - - - - - - - - - - <_inputs> - <_p> - <_vcount> - <_texcoordSets> - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - "" - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - { element : null } - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - <_root> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { parent : null, element : null } - - - - - - - - - - - - - - - { node : null } - - - - - - - - { node : null } - - - - - - - - { parent : null } - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - <_inputs> - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - -
    - - - - - - - - - - { valid : false, dt : 0.0, time : 0.0, frame : 0 } - - -
    - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - { element : null } - - - - - - - - - - - - - - - - - - - - - 65535 - - - - 17872 - - - - String.fromCharCode(10) - - - - "3DFACE" - - - - "LINE" - - - - "VERTEX" - - - - "POLYLINE" - - <_colorTable expr="Vector.ofArray([0x000000, 0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF, 0xFF00FF, 0xFFFFFF, 0x414141, 0x808080, 0xFF0000, 0xFFAAAA, 0xBD0000, 0xBD7E7E, 0x810000, 0x815656, 0x680000, 0x684545, 0x4F0000, 0x4F3535, 0xFF3F00, 0xFFBFAA, 0xBD2E00, 0xBD8D7E, 0x811F00, 0x816056, 0x681900, 0x684E45, 0x4F1300, 0x4F3B35, 0xFF7F00, 0xFFD4AA, 0xBD5E00, 0xBD9D7E, 0x814000, 0x816B56, 0x683400, 0x685645, 0x4F2700, 0x4F4235, 0xFFBF00, 0xFFEAAA, 0xBD8D00, 0xBDAD7E, 0x816000, 0x817656, 0x684E00, 0x685F45, 0x4F3B00, 0x4F4935, 0xFFFF00, 0xFFFFAA, 0xBDBD00, 0xBDBD7E, 0x818100, 0x818156, 0x686800, 0x686845, 0x4F4F00, 0x4F4F35, 0xBFFF00, 0xEAFFAA, 0x8DBD00, 0xADBD7E, 0x608100, 0x768156, 0x4E6800, 0x5F6845, 0x3B4F00, 0x494F35, 0x7FFF00, 0xD4FFAA, 0x5EBD00, 0x9DBD7E, 0x408100, 0x6B8156, 0x346800, 0x566845, 0x274F00, 0x424F35, 0x3FFF00, 0xBFFFAA, 0x2EBD00, 0x8DBD7E, 0x1F8100, 0x608156, 0x196800, 0x4E6845, 0x134F00, 0x3B4F35, 0x00FF00, 0xAAFFAA, 0x00BD00, 0x7EBD7E, 0x008100, 0x568156, 0x006800, 0x456845, 0x004F00, 0x354F35, 0x00FF3F, 0xAAFFBF, 0x00BD2E, 0x7EBD8D, 0x00811F, 0x568160, 0x006819, 0x45684E, 0x004F13, 0x354F3B, 0x00FF7F, 0xAAFFD4, 0x00BD5E, 0x7EBD9D, 0x008140, 0x56816B, 0x006834, 0x456856, 0x004F27, 0x354F42, 0x00FFBF, 0xAAFFEA, 0x00BD8D, 0x7EBDAD, 0x008160, 0x568176, 0x00684E, 0x45685F, 0x004F3B, 0x354F49, 0x00FFFF, 0xAAFFFF, 0x00BDBD, 0x7EBDBD, 0x008181, 0x568181, 0x006868, 0x456868, 0x004F4F, 0x354F4F, 0x00BFFF, 0xAAEAFF, 0x008DBD, 0x7EADBD, 0x006081, 0x567681, 0x04E68, 0x455F68, 0x003B4F, 0x35494F, 0x007FFF, 0xAAD4FF, 0x005EBD, 0x7E9DBD, 0x004081, 0x566B81, 0x003468, 0x455668, 0x00274F, 0x35424F, 0x003FFF, 0xAABFFF, 0x002EBD, 0x7E8DBD, 0x001F81, 0x566081, 0x001968, 0x454E68, 0x00134F, 0x353B4F, 0x0000FF, 0xAAAAFF, 0x0000BD, 0x7E7EBD, 0x000081, 0x565681, 0x000068, 0x454568, 0x00004F, 0x35354F, 0x3F00FF, 0xBFAAFF, 0x2E00BD, 0x8D7EBD, 0x1F0081, 0x605681, 0x190068, 0x4E4568, 0x13004F, 0x3B354F, 0x7F00FF, 0xD4AAFF, 0x5E00BD, 0x9D7EBD, 0x400081, 0x6B5681, 0x340068, 0x564568, 0x27004F, 0x42354F, 0xBF00FF, 0xEEAAFF, 0x8D00BD, 0xAD7EBD, 0x600081, 0x765681, 0x4E0068, 0x5F4568, 0x3B004F, 0x49354F, 0xFF00FF, 0xFFAAFF, 0xBD00BD, 0xBD7EBD, 0x810081, 0x815681, 0x680068, 0x684568, 0x4F004F, 0x4F354F, 0xFF00BF, 0xFFAAEA, 0xBD008D, 0xBD7EAD, 0x810060, 0x815676, 0x68004E, 0x68455F, 0x4F003B, 0x4F3549, 0xFF007F, 0xFFAAD4, 0xBD005E, 0xBD7E9D, 0x810040, 0x81566B, 0x680034, 0x684556, 0x4F0027, 0x4F3542, 0xFF003F, 0xFFAABF, 0xBD002E, 0xBD7E8D, 0x81001F, 0x815660, 0x680019, 0x68454E, 0x4F0013, 0x4F353B, 0x333333, 0x505050, 0x696969, 0x828282, 0xBEBEBE, 0xFFFFFF])" line="65" static="1"> - - Vector.ofArray([0x000000, 0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF, 0xFF00FF, 0xFFFFFF, 0x414141, 0x808080, 0xFF0000, 0xFFAAAA, 0xBD0000, 0xBD7E7E, 0x810000, 0x815656, 0x680000, 0x684545, 0x4F0000, 0x4F3535, 0xFF3F00, 0xFFBFAA, 0xBD2E00, 0xBD8D7E, 0x811F00, 0x816056, 0x681900, 0x684E45, 0x4F1300, 0x4F3B35, 0xFF7F00, 0xFFD4AA, 0xBD5E00, 0xBD9D7E, 0x814000, 0x816B56, 0x683400, 0x685645, 0x4F2700, 0x4F4235, 0xFFBF00, 0xFFEAAA, 0xBD8D00, 0xBDAD7E, 0x816000, 0x817656, 0x684E00, 0x685F45, 0x4F3B00, 0x4F4935, 0xFFFF00, 0xFFFFAA, 0xBDBD00, 0xBDBD7E, 0x818100, 0x818156, 0x686800, 0x686845, 0x4F4F00, 0x4F4F35, 0xBFFF00, 0xEAFFAA, 0x8DBD00, 0xADBD7E, 0x608100, 0x768156, 0x4E6800, 0x5F6845, 0x3B4F00, 0x494F35, 0x7FFF00, 0xD4FFAA, 0x5EBD00, 0x9DBD7E, 0x408100, 0x6B8156, 0x346800, 0x566845, 0x274F00, 0x424F35, 0x3FFF00, 0xBFFFAA, 0x2EBD00, 0x8DBD7E, 0x1F8100, 0x608156, 0x196800, 0x4E6845, 0x134F00, 0x3B4F35, 0x00FF00, 0xAAFFAA, 0x00BD00, 0x7EBD7E, 0x008100, 0x568156, 0x006800, 0x456845, 0x004F00, 0x354F35, 0x00FF3F, 0xAAFFBF, 0x00BD2E, 0x7EBD8D, 0x00811F, 0x568160, 0x006819, 0x45684E, 0x004F13, 0x354F3B, 0x00FF7F, 0xAAFFD4, 0x00BD5E, 0x7EBD9D, 0x008140, 0x56816B, 0x006834, 0x456856, 0x004F27, 0x354F42, 0x00FFBF, 0xAAFFEA, 0x00BD8D, 0x7EBDAD, 0x008160, 0x568176, 0x00684E, 0x45685F, 0x004F3B, 0x354F49, 0x00FFFF, 0xAAFFFF, 0x00BDBD, 0x7EBDBD, 0x008181, 0x568181, 0x006868, 0x456868, 0x004F4F, 0x354F4F, 0x00BFFF, 0xAAEAFF, 0x008DBD, 0x7EADBD, 0x006081, 0x567681, 0x04E68, 0x455F68, 0x003B4F, 0x35494F, 0x007FFF, 0xAAD4FF, 0x005EBD, 0x7E9DBD, 0x004081, 0x566B81, 0x003468, 0x455668, 0x00274F, 0x35424F, 0x003FFF, 0xAABFFF, 0x002EBD, 0x7E8DBD, 0x001F81, 0x566081, 0x001968, 0x454E68, 0x00134F, 0x353B4F, 0x0000FF, 0xAAAAFF, 0x0000BD, 0x7E7EBD, 0x000081, 0x565681, 0x000068, 0x454568, 0x00004F, 0x35354F, 0x3F00FF, 0xBFAAFF, 0x2E00BD, 0x8D7EBD, 0x1F0081, 0x605681, 0x190068, 0x4E4568, 0x13004F, 0x3B354F, 0x7F00FF, 0xD4AAFF, 0x5E00BD, 0x9D7EBD, 0x400081, 0x6B5681, 0x340068, 0x564568, 0x27004F, 0x42354F, 0xBF00FF, 0xEEAAFF, 0x8D00BD, 0xAD7EBD, 0x600081, 0x765681, 0x4E0068, 0x5F4568, 0x3B004F, 0x49354F, 0xFF00FF, 0xFFAAFF, 0xBD00BD, 0xBD7EBD, 0x810081, 0x815681, 0x680068, 0x684568, 0x4F004F, 0x4F354F, 0xFF00BF, 0xFFAAEA, 0xBD008D, 0xBD7EAD, 0x810060, 0x815676, 0x68004E, 0x68455F, 0x4F003B, 0x4F3549, 0xFF007F, 0xFFAAD4, 0xBD005E, 0xBD7E9D, 0x810040, 0x81566B, 0x680034, 0x684556, 0x4F0027, 0x4F3542, 0xFF003F, 0xFFAABF, 0xBD002E, 0xBD7E8D, 0x81001F, 0x815660, 0x680019, 0x68454E, 0x4F0013, 0x4F353B, 0x333333, 0x505050, 0x696969, 0x828282, 0xBEBEBE, 0xFFFFFF]) - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_trim expr="~/^[ ]/"> - - ~/^[ ]/ - - <_v0> - <_v1> - <_v2> - <_v3> - <_meshesDic> - - - - <_vertices> - <_uvs> - <_indices> - <_subGeometry> - <_polyLines> - <_polyLinesIndices> - <_oldIndex> - <_stringLen> - <_meshName> - <_itemColor> - <_lastMeshName expr=""""> - - "" - - <_activeMesh> - <_blockType> - <_segmentSet> - <_segCount> - - - * @inheritDoc - - - - - - - - - - - - - - - - - - * Creates a new DXFParser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * DXFParser provides a parser for the dxf 3D renderable data. - * supported blocks type: FACEDATA, LINE. Color from dxf color table is set where index is encountered - * POLYLINE(64 polyface mesh) and VERTEX. - - - - - - - 6 - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_clipNodes expr="new Map<String,VertexClipNode>()"> - - - - - ()]]> - - <_byteData> - <_startedParsing> - <_parsedHeader> - <_parsedUV> - <_parsedFaces> - <_parsedFrames> - <_ident> - <_version> - <_skinWidth> - <_skinHeight> - <_numSkins> - <_numVertices> - <_numST> - <_numTris> - <_numFrames> - <_offsetSkins> - <_offsetST> - <_offsetTris> - <_offsetFrames> - <_offsetEnd> - <_uvIndices> - <_indices> - <_vertIndices> - <_indexMap expr="new Map<Int,Map<Int,Int>>()"> - - - - - - - - >()]]> - - <_animationSet expr="new VertexAnimationSet()"> - - new VertexAnimationSet() - - <_firstSubGeom> - <_uvs> - <_finalUV> - <_materialNames> - <_textureType> - <_ignoreTexturePath> - <_mesh> - <_geometry> - - - false - - - - false - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Reads in all that MD2 Header data that is declared as private variables. - * I know its a lot, and it looks ugly, but only way to do it in Flash - - - - * Parses the file names for the materials. - - - - * Parses the uv data for the mesh. - - - - * Parses unique indices for the faces. - - - - - - - - * Adds a face index to the list if it doesn't exist yet, based on vertexIndex and uvIndex, and adds the - * corresponding vertex and uv data in the correct location. - * @param vertexIndex The original index in the vertex list. - * @param uvIndex The original index in the uv list. - - - - - - - - * Finds the final index corresponding to the original MD2's vertex and uv indices. Returns -1 if it wasn't added yet. - * @param vertexIndex The original index in the vertex list. - * @param uvIndex The original index in the uv list. - * @return The index of the final mesh corresponding to the original vertex and uv index. -1 if it doesn't exist yet. - - - - * Parses all the frame geometries. - - - - - - - - - - { ignoreTexturePath : true, textureType : "jpg" } - * Creates a new MD2Parser object. - * @param textureType The extension of the texture (e.g. jpg/png/...) - * @param ignoreTexturePath If true, the path of the texture is ignored - - * MD2Parser provides a parser for the MD2 data type. - - - - - - - "MD5Version" - - - - "commandline" - - - - "numFrames" - - - - "numJoints" - - - - "frameRate" - - - - "numAnimatedComponents" - - - - "hierarchy" - - - - "bounds" - - - - "baseframe" - - - - "frame" - - - - "//" - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_parseIndex expr="0"> - - 0 - - <_reachedEOF> - <_line expr="0"> - - 0 - - <_charLineIndex expr="0"> - - 0 - - <_version expr="0"> - - 0 - - <_frameRate expr="0"> - - 0 - - <_numFrames expr="0"> - - 0 - - <_numJoints expr="0"> - - 0 - - <_numAnimatedComponents expr="0"> - - 0 - - <_hierarchy> - <_bounds> - <_frameData> - <_baseFrameData> - <_rotationQuat> - <_clip> - - - * @inheritDoc - - - - * Converts all key frame data to an SkinnedAnimationSequence. - - - - - - - * Converts a single key frame data to a SkeletonPose. - * @param frameData The actual frame data. - * @return A SkeletonPose containing the frame data's pose. - - - - * Parses the skeleton's hierarchy data. - - - - * Parses frame bounds. - - - - * Parses the base frame. - - - - * Parses a single frame. - - - - * Puts back the last read character into the data stream. - - - - * Gets the next token in the data stream. - - - - * Skips all whitespace in the data stream. - - - - * Skips to the next line. - - - - * Retrieves the next single character in the data stream. - - - - * Retrieves the next integer in the data stream. - - - - * Retrieves the next floating point number in the data stream. - - - - * Retrieves the next 3d vector in the data stream. - - - - * Retrieves the next quaternion in the data stream. - - - - * Parses the command line data. - - - - * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded - * by double quotes. - - - - * Throws an end-of-file error when a premature end of file was encountered. - - - - - - - * Throws an error when an unexpected token was encountered. - * @param expected The token type that was actually expected. - - - - * Throws an error when an unknown keyword was encountered. - - - - - - - - { additionalRotationRadians : 0, additionalRotationAxis : null } - * Creates a new MD5AnimParser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * MD5AnimParser provides a parser for the md5anim data type, providing an animation sequence for the md5 format. - * - * todo: optimize - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "MD5Version" - - - - "commandline" - - - - "numJoints" - - - - "numMeshes" - - - - "//" - - - - "joints" - - - - "mesh" - - - - "shader" - - - - "numverts" - - - - "vert" - - - - "numtris" - - - - "tri" - - - - "numweights" - - - - "weight" - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_parseIndex expr="0"> - - 0 - - <_reachedEOF> - <_line expr="0"> - - 0 - - <_charLineIndex expr="0"> - - 0 - - <_version expr="0"> - - 0 - - <_numJoints expr="0"> - - 0 - - <_numMeshes expr="0"> - - 0 - - <_mesh> - <_shaders> - <_maxJointCount expr="0"> - - 0 - - <_meshData> - <_bindPoses> - <_geometry> - <_skeleton> - <_animationSet> - <_rotationQuat> - - - * @inheritDoc - - - - - - - - - - * Parses the skeleton's joints. - - - - * Puts back the last read character into the data stream. - - - - * Parses the mesh geometry. - - - - - - - - - * Converts the mesh data to a SkinnedSub instance. - * @param vertexData The mesh's vertices. - * @param weights The joint weights per vertex. - * @param indices The indices for the faces. - * @return A SkinnedSubGeometry instance containing all geometrical data for the current mesh. - - - - - - - * Retrieve the next triplet of vertex indices that form a face. - * @param indices The index list in which to store the read data. - - - - - - - * Reads a new joint data set for a single joint. - * @param weights the target list to contain the weight data. - - - - - - - * Reads the data for a single vertex. - * @param vertexData The list to contain the vertex data. - - - - - - - * Reads the next uv coordinate. - * @param vertexData The vertexData to contain the UV coordinates. - - - - * Gets the next token in the data stream. - - - - * Skips all whitespace in the data stream. - - - - * Skips to the next line. - - - - * Retrieves the next single character in the data stream. - - - - * Retrieves the next integer in the data stream. - - - - * Retrieves the next floating point number in the data stream. - - - - * Retrieves the next 3d vector in the data stream. - - - - * Retrieves the next quaternion in the data stream. - - - - * Parses the command line data. - - - - * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded - * by double quotes. - - - - * Throws an end-of-file error when a premature end of file was encountered. - - - - - - - * Throws an error when an unexpected token was encountered. - * @param expected The token type that was actually expected. - - - - * Throws an error when an unknown keyword was encountered. - - - - - - - - { additionalRotationRadians : 0, additionalRotationAxis : null } - * Creates a new MD5MeshParser object. - - * MD5MeshParser provides a parser for the md5mesh data type, providing the geometry of the md5 format. - * - * todo: optimize - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_byteData> - <_textures> - - - - <_materials> - - - - <_unfinalized_objects> - - - - <_cur_obj_end> - <_cur_obj> - <_cur_mat_end> - <_cur_mat> - <_useSmoothingGroups> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - - { pivot : null } - - - - - - - - - - - - - - - - - - - - - - { useSmoothingGroups : false } - Max3DSParser object. - * - * @param useSmoothingGroups Determines whether the parser looks for smoothing groups in the 3ds file or assumes uniform smoothing. Defaults to true.]]> - - * Max3DSParser provides a parser for the 3ds data type. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Indicates whether or not a given file extension is supported by the parser. - * @param extension The file extension of a potential file to be parsed. - * @return Whether or not the given file type is supported. - - - - - - - * Tests whether a data block can be parsed by the parser. - * @param data The data block to potentially be parsed. - * @return Whether or not the given data is supported. - - <_textData> - <_startedParsing> - <_charIndex> - <_oldIndex> - <_stringLength> - <_currentObject> - <_currentGroup> - <_currentMaterialGroup> - <_objects> - <_materialIDs> - <_materialLoaded> - <_materialSpecularData> - <_meshes> - <_lastMtlID> - <_objectIndex> - <_realIndices> - - - - <_vertexIndex> - <_vertices> - <_vertexNormals> - <_uvs> - <_scale> - <_mtlLib> - <_mtlLibLoaded expr="true"> - - true - - <_activeMaterialID expr=""""> - - "" - - - - * Scaling factor applied directly to vertices data - * @param value The scaling factor. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * Parses a single line in the OBJ file. - - - - * Converts the parsed data into an Away3D scenegraph structure - - - - - - - - * Translates an obj's material group to a subgeometry. - * @param materialGroup The material group data to convert. - * @param geometry The Geometry to contain the converted SubGeometry. - - - - - - - - - - - - - - - - * Creates a new object group. - * @param trunk The data block containing the object tag and its parameters - - - - - - - * Creates a new group. - * @param trunk The data block containing the group tag and its parameters - - - - - - - * Creates a new material group. - * @param trunk The data block containing the material tag and its parameters - - - - - - - * Reads the next vertex coordinates. - * @param trunk The data block containing the vertex tag and its parameters - - - - - - - * Reads the next uv coordinates. - * @param trunk The data block containing the uv tag and its parameters - - - - - - - * Reads the next vertex normal coordinates. - * @param trunk The data block containing the vertex normal tag and its parameters - - - - - - - * Reads the next face's indices. - * @param trunk The data block containing the face tag and its parameters - - - - - - - - * This is a hack around negative face coords - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { scale : 1 } - * Creates a new OBJParser object. - * @param uri The url or id of the data or file to be parsed. - * @param extra The holder for extra contextual data that the parser might need. - - * OBJParser provides a parser for the OBJ data type. - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - ()]]> - - - - - - - - - - 0xFFFFFF - - - - 1 - - - - - - - - - - - - 0xFFFFFF - - - - 1 - - - - - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - - - - - "binary" - * Describes the format of a binary file. - - - - "plainText" - * Describes the format of a plain text file. - - * An enumeration providing values to describe the data format of parsed data. - - - - - [AC3DParser, AWD1Parser, AWD2Parser, AWDParser, Max3DSParser, DXFParser, MD2Parser, MD5AnimParser, MD5MeshParser, OBJParser, DAEParser, Max3DSParser] - Asset3DLibrary.enableParsers(Parsers.ALL_BUNDLED); - * - * Beware however that this requires all parser classes to be included in the - * SWF file, which will add 50-100 kb to the file. When only a limited set of - * file formats are used, SWF file size can be saved by adding the parsers - * individually using Asset3DLibrary.enableParser() - * - * A third way is to specify a parser for each loaded file, thereby bypassing - * the auto-detection mechanisms altogether, while at the same time allowing - * any properties that are unique to that parser to be set for that load. - * - * The bundled parsers are: - * - *
      - *
    • AC3D (.ac)
    • - *
    • Away Data version 1 ASCII and version 2 binary (.awd). AWD1 BSP unsupported
    • - *
    • 3DMax (.3ds)
    • - *
    • DXF (.dxf)
    • - *
    • Quake 2 MD2 models (.md2)
    • - *
    • Doom 3 MD5 animation clips (.md5anim)
    • - *
    • Doom 3 MD5 meshes (.md5mesh)
    • - *
    • Wavefront OBJ (.obj)
    • - *
    • Collada (.dae)
    • - *
    • Images (.jpg, .png)
    • - *
    - * - * @see away3d.loading.Asset3DLibrary.enableParser]]>
    -
    - - - * Short-hand function to enable all bundled parsers for auto-detection. In practice, - * this is the same as invoking enableParsers(Parsers.ALL_BUNDLED) on any of the - * loader classes SingleFileLoader, AssetLoader, Asset3DLibrary or Loader3D. - * - * See notes about file size in the documentation for the ALL_BUNDLED constant. - * - * @see away3d.loaders.parsers.Parsers.ALL_BUNDLED - -
    - - - - - - - * Returns a object as ByteArray, if possible. - * - * @param data The object to return as ByteArray - * - * @return The ByteArray or null - * - - - - - - - - { length : 0 } - * Returns a object as String, if possible. - * - * @param data The object to return as String - * @param length The length of the returned String - * - * @return The String or null - * - - - - - - - - - 0 - * A counter used to assign unique ids per material, which is used to sort per material while rendering. - * This reduces state changes. - - - - - - - - - - - - - - - - away3d - - - - away3d - - - - * An object to contain any extra data. - - <_classification> - - away3d - * A value that can be used by materials that only work with a given type of renderer. The renderer can test the - * classification to choose which render path to use. For example, a deferred material could set this value so - * that the deferred renderer knows not to take the forward rendering path. - * - * @private - - <_uniqueId> - - away3d - * An id for this material used to sort the renderables by material, which reduces render state changes across - * materials using the same Program3D. - * - * @private - - <_renderOrderId> - - away3d - * An id for this material used to sort the renderables by shader program, which reduces Program3D state changes. - * - * @private - - <_depthPassId> - - away3d - * The same as _renderOrderId, but applied to the depth shader passes. - * - * @private - - <_bothSides> - <_animationSet> - <_owners> - - * A list of material owners, renderables or custom Entities. - - <_alphaPremultiplied> - <_blendMode expr="BlendMode.NORMAL"> - - BlendMode.NORMAL - - <_numPasses expr="0"> - - 0 - - <_passes> - <_mipmap expr="true"> - - true - - <_smooth expr="true"> - - true - - <_repeat> - <_anisotropy expr="Anisotropy.ANISOTROPIC2X"> - - Anisotropy.ANISOTROPIC2X - - <_depthPass> - <_distancePass> - <_lightPicker> - <_distanceBasedDepthRender> - <_depthCompareMode expr="Context3DCompareMode.LESS_EQUAL"> - - Context3DCompareMode.LESS_EQUAL - - - - * @inheritDoc - - - - * The light picker used by the material to provide lights to the material if it supports lighting. - * - * @see away3d.materials.lightpickers.LightPickerBase - * @see away3d.materials.lightpickers.StaticLightPicker - - - - - - - - * Indicates whether or not any used textures should use mipmapping. Defaults to true. - - - - - - - - * Indicates whether or not any used textures should use smoothing. - - - - - - - - * The depth compare mode used to render the renderables using this material. - * - * @see openfl.display3D.Context3DCompareMode - - - - - - - - * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to - * the texture's borders when the uv coordinates are outside the [0, 1] interval. - - - - - - - - * Indicates the number of Anisotropic filtering samples to take for mipmapping - - - - - - - - * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they - * could be used by other materials and will not be disposed. - - - - * Defines whether or not the material should cull triangles facing away from the camera. - - - - - - - - - *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • - *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • - *
  • BlendMode.MULTIPLY
  • - *
  • BlendMode.ADD
  • - *
  • BlendMode.ALPHA
  • - * ]]>
    -
    - - - - - - - * Indicates whether visible textures (or other pixels) used by this material have - * already been premultiplied. Toggle this if you are seeing black halos around your - * blended alpha edges. - - - - - - - - * Indicates whether or not the material requires alpha blending during rendering. - - - - * An id for this material used to sort the renderables by material, which reduces render state changes across - * materials using the same Program3D. - - - - * The amount of passes used by the material. - * - * @private - - - - away3d - * Indicates that the depth pass uses transparency testing to discard pixels. - * - * @private - - - - - - - - - - { distanceBased : false } - away3d - - * Sets the render state for the depth pass that is independent of the rendered object. Used when rendering - * depth or distances (fe: shadow maps, depth pre-pass). - * - * @param stage3DProxy The Stage3DProxy used for rendering. - * @param camera The camera from which the scene is viewed. - * @param distanceBased Whether or not the depth pass or distance pass should be activated. The distance pass - * is required for shadow cube maps. - * - * @private - - - - - - - away3d - * Clears the render state for the depth pass. - * - * @param stage3DProxy The Stage3DProxy used for rendering. - * - * @private - - - - - - - - - - away3d - * Renders a renderable using the depth pass. - * - * @param renderable The IRenderable instance that needs to be rendered. - * @param stage3DProxy The Stage3DProxy used for rendering. - * @param camera The camera from which the scene is viewed. - * @param viewProjection The view-projection matrix used to project to the screen. This is not the same as - * camera.viewProjection as it includes the scaling factors when rendering to textures. - * - * @private - - - - - - - away3d - * Indicates whether or not the pass with the given index renders to texture or not. - * @param index The index of the pass. - * @return True if the pass renders to texture, false otherwise. - * - * @private - - - - - - - - - away3d - * Sets the render state for a pass that is independent of the rendered object. This needs to be called before - * calling renderPass. Before activating a pass, the previously used pass needs to be deactivated. - * @param index The index of the pass to activate. - * @param stage3DProxy The Stage3DProxy object which is currently used for rendering. - * @param camera The camera from which the scene is viewed. - * @private - - - - - - - - away3d - * Clears the render state for a pass. This needs to be called before activating another pass. - * @param index The index of the pass to deactivate. - * @param stage3DProxy The Stage3DProxy used for rendering - * - * @private - - - - - - - - - - - away3d - * Renders the current pass. Before calling renderPass, activatePass needs to be called with the same index. - * @param index The index of the pass used to render the renderable. - * @param renderable The IRenderable object to draw. - * @param stage3DProxy The Stage3DProxy object used for rendering. - * @param entityCollector The EntityCollector object that contains the visible scene data. - * @param viewProjection The view-projection matrix used to project to the screen. This is not the same as - * camera.viewProjection as it includes the scaling factors when rendering to textures. - - - - - - - away3d - * Mark an IMaterialOwner as owner of this material. - * Assures we're not using the same material across renderables with different animations, since the - * Program3Ds depend on animation. This method needs to be called when a material is assigned. - * - * @param owner The IMaterialOwner that had this material assigned - * - * @private - - - - - - - away3d - * Removes an IMaterialOwner as owner. - * @param owner - * @private - - - - away3d - * A list of the IMaterialOwners that use this material - * - * @private - - - - - - - away3d - * Performs any processing that needs to occur before any of its passes are used. - * - * @private - - - - - - - away3d - * Deactivates the last pass of the material. - * - * @private - - - - - - - away3d - * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use. - * @param triggerPass The pass triggering the invalidation, if any. This is passed to prevent invalidating the - * triggering pass, which would result in an infinite loop. - * - * @private - - - - - - - * Removes a pass from the material. - * @param pass The pass to be removed. - - - - * Removes all passes from the material - - - - - - - * Adds a pass to the material - * @param pass - - - - - - - * Listener for when a pass's shader code changes. It recalculates the render order id. - - - - - - - * Listener for when the distance pass's shader code changes. It recalculates the depth pass id. - - - - - - - * Listener for when the depth pass's shader code changes. It recalculates the depth pass id. - - - - * Creates a new MaterialBase object. - - * MaterialBase forms an abstract base class for any material. - * A material consists of several passes, each of which constitutes at least one render call. Several passes could - * be used for special effects (render lighting for many lights in several passes, render an outline in a separate - * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space - * subsurface scattering, or rendering a depth map for specialized self-shadowing). - * - * Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular - * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom - * shaders, or entire new material frameworks. - -
    - - - - - - - - - - - - - - - - - - - - - - <_screenPass> - <_alphaBlending> - - - * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and - * compatibility for constrained mode. - - - - - - - - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - { distanceBased : false } - * @inheritDoc - - - - * Define which light source types to use for specular reflections. This allows choosing between regular lights - * and/or light probes for specular reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * Define which light source types to use for diffuse reflections. This allows choosing between regular lights - * and/or light probes for diffuse reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * @inheritDoc - - - - * The ColorTransform object to transform the colour of the material with. Defaults to null. - - - - - - - - * The method that provides the ambient lighting contribution. Defaults to BasicAmbientMethod. - - - - - - - - * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. Defaults to null. - - - - - - - - * The method that provides the diffuse lighting contribution. Defaults to BasicDiffuseMethod. - - - - - - - - * The method used to generate the per-pixel normals. Defaults to BasicNormalMethod. - - - - - - - - * The method that provides the specular lighting contribution. Defaults to BasicSpecularMethod. - - - - - - - - - - - * Appends an "effect" shading method to the shader. Effect methods are those that do not influence the lighting - * but modulate the shaded colour, used for fog, outlines, etc. The method will be applied to the result of the - * methods added prior. - - - - * The number of "effect" methods added to the material. - - - - - - - * Queries whether a given effect method was added to the material. - * - * @param method The method to be queried. - * @return true if the method was added to the material, false otherwise. - - - - - - - * Returns the method added at the given index. - * @param index The index of the method to retrieve. - * @return The method at the given index. - - - - - - - - * Adds an effect method at the specified index amongst the methods already added to the material. Effect - * methods are those that do not influence the lighting but modulate the shaded colour, used for fog, outlines, - * etc. The method will be applied to the result of the methods with a lower index. - - - - - - - * Removes an effect method from the material. - * @param method The method to be removed. - - - - - - - * @inheritDoc - - - - * The normal map to modulate the direction of the surface for each texel. The default normal method expects - * tangent-space normal maps, but others could expect object-space maps. - - - - - - - - * A specular map that defines the strength of specular reflections for each texel in the red channel, - * and the gloss factor in the green channel. You can use SpecularBitmapTexture if you want to easily set - * specular and gloss maps from grayscale images, but correctly authored images are preferred. - - - - - - - - * The glossiness of the material (sharpness of the specular highlight). - - - - - - - - * The strength of the ambient reflection. - - - - - - - - * The overall strength of the specular reflection. - - - - - - - - * The colour of the ambient reflection. - - - - - - - - * The colour of the specular reflection. - - - - - - - - * Indicates whether or not the material has transparency. If binary transparency is sufficient, for - * example when using textures of foliage, consider using alphaThreshold instead. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * Creates a new SinglePassMaterialBase object. - - * SinglePassMaterialBase forms an abstract base class for the default single-pass materials provided by Away3D, - * using material methods to define their appearance. - - - - - - - <_diffuseAlpha expr="1"> - - 1 - - - - * The alpha of the surface. - - - - - - - - * The diffuse reflectivity color of the surface. - - - - - - - - * @inheritDoc - - - - - - - - { alpha : 1, color : 0xcccccc } - * Creates a new ColorMaterial object. - * @param color The material's diffuse surface color. - * @param alpha The material's surface alpha. - - * ColorMaterial is a single-pass material that uses a flat color as the surface's diffuse reflection value. - - - - - - - - - - - - - - - - - - - - - - - - <_casterLightPass> - <_nonCasterLightPasses> - <_effectsPass> - <_alphaThreshold expr="0"> - - 0 - - <_specularLightSources expr="0x01"> - - 0x01 - - <_diffuseLightSources expr="0x03"> - - 0x03 - - <_ambientMethod expr="new BasicAmbientMethod()"> - - new BasicAmbientMethod() - - <_shadowMethod> - <_diffuseMethod expr="new BasicDiffuseMethod()"> - - new BasicDiffuseMethod() - - <_normalMethod expr="new BasicNormalMethod()"> - - new BasicNormalMethod() - - <_specularMethod expr="new BasicSpecularMethod()"> - - new BasicSpecularMethod() - - <_screenPassesInvalid expr="true"> - - true - - <_enableLightFallOff expr="true"> - - true - - - - * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and - * compatibility for constrained mode. - - - - - - - - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - { distanceBased : false } - * @inheritDoc - - - - * Define which light source types to use for specular reflections. This allows choosing between regular lights - * and/or light probes for specular reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * Define which light source types to use for diffuse reflections. This allows choosing between regular lights - * and/or light probes for diffuse reflections. - * - * @see away3d.materials.LightSources - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * The method that provides the ambient lighting contribution. Defaults to BasicAmbientMethod. - - - - - - - - * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. Defaults to null. - - - - - - - - * The method that provides the diffuse lighting contribution. Defaults to BasicDiffuseMethod. - - - - - - - - * The method that provides the specular lighting contribution. Defaults to BasicSpecularMethod. - - - - - - - - * The method used to generate the per-pixel normals. Defaults to BasicNormalMethod. - - - - - - - - - - - * Appends an "effect" shading method to the shader. Effect methods are those that do not influence the lighting - * but modulate the shaded colour, used for fog, outlines, etc. The method will be applied to the result of the - * methods added prior. - - - - * The number of "effect" methods added to the material. - - - - - - - * Queries whether a given effect method was added to the material. - * - * @param method The method to be queried. - * @return true if the method was added to the material, false otherwise. - - - - - - - * Returns the method added at the given index. - * @param index The index of the method to retrieve. - * @return The method at the given index. - - - - - - - - * Adds an effect method at the specified index amongst the methods already added to the material. Effect - * methods are those that do not influence the lighting but modulate the shaded colour, used for fog, outlines, - * etc. The method will be applied to the result of the methods with a lower index. - - - - - - - * Removes an effect method from the material. - * @param method The method to be removed. - - - - - - - * @inheritDoc - - - - * The normal map to modulate the direction of the surface for each texel. The default normal method expects - * tangent-space normal maps, but others could expect object-space maps. - - - - - - - - * A specular map that defines the strength of specular reflections for each texel in the red channel, - * and the gloss factor in the green channel. You can use SpecularBitmapTexture if you want to easily set - * specular and gloss maps from grayscale images, but correctly authored images are preferred. - - - - - - - - * The glossiness of the material (sharpness of the specular highlight). - - - - - - - - * The strength of the ambient reflection. - - - - - - - - * The overall strength of the specular reflection. - - - - - - - - * The colour of the ambient reflection. - - - - - - - - * The colour of the specular reflection. - - - - - - - - - - - * @inheritDoc - - - - - - - * Adds a compiled pass that renders to the screen. - * @param pass The pass to be added. - - - - * Tests if any pass that renders to the screen is invalid. This would trigger a new setup of the multiple passes. - * @return - - - - - - - * Adds any additional passes on which the given pass is dependent. - * @param pass The pass that my need additional passes. - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * Updates screen passes when they were found to be invalid. - - - - * Initializes all the passes and their dependent passes. - - - - * Sets up the various blending modes for all screen passes, based on whether or not there are previous passes. - - - - - - - - - - * The maximum total number of lights provided by the light picker. - - - - * The amount of lights that don't cast shadows. - - - - * Flags that the screen passes have become invalid. - - - - - - - * Called when the light picker's configuration changed. - - - - * Creates a new MultiPassMaterialBase object. - - * MultiPassMaterialBase forms an abstract base class for the default multi-pass materials provided by Away3D, - * using material methods to define their appearance. - - - - - - - - * The diffuse reflectivity color of the surface. - - - - - - - - - - - { color : 0xcccccc } - * Creates a new ColorMultiPassMaterial object. - * - * @param color The material's diffuse surface color. - - * ColorMultiPassMaterial is a multi-pass material that uses a flat color as the surface's diffuse reflection value. - - - - - - 0x01 - * Defines normal lights are to be used as the source for the lighting - * component. - - - - 0x02 - * Defines that global lighting probes are to be used as the source for the - * lighting component. - - - - 0x03 - * Defines that both normal and global lighting probes are to be used as the - * source for the lighting component. This is equivalent to LIGHTS | PROBES. - - * Enumeration class for defining which lighting types affect the specific material - * lighting component (diffuse and specular). This can be useful if, for example, you - * want to use light probes for diffuse global lighting, but want specular reflections from - * traditional light sources without those affecting the diffuse light. - * - * @see away3d.materials.ColorMaterial.diffuseLightSources - * @see away3d.materials.ColorMaterial.specularLightSources - * @see away3d.materials.TextureMaterial.diffuseLightSources - * @see away3d.materials.TextureMaterial.specularLightSources - - - - - <_occlude expr="true"> - - true - - - - * Whether or not an object with this material applied hides other objects. - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - { alpha : 1, color : 0xcccccc, occlude : true } - * Creates a new OcclusionMaterial object. - * @param occlude Whether or not to occlude other objects. - * @param color The material's diffuse surface color. - * @param alpha The material's surface alpha. - - * OcclusionMaterial is a ColorMaterial for an object to prevents drawing anything that is placed behind it. - - - - <_screenPass> - - - - - - { thickness : 1.25 } - * Creates a new OrthoSegmentMaterial object. - * - * @param thickness The thickness of the wireframe lines. - - * OrthoSegmentMaterial is a material exclusively used to render wireframe objects - * - * @see away3d.entities.Lines - - - - <_screenPass> - - - - - - { thickness : 1.25 } - * Creates a new SegmentMaterial object. - * - * @param thickness The thickness of the wireframe lines. - - * SegmentMaterial is a material exclusively used to render wireframe objects - * - * @see away3d.entities.Lines - - - - - - <_cubeMap> - <_skyboxPass> - - - * The cube texture to use as the skybox. - - - - - - - - - - - * Creates a new SkyBoxMaterial object. - * @param cubeMap The CubeMap to use as the skybox. - - * SkyBoxMaterial is a material exclusively used to render skyboxes - * - * @see away3d.primitives.SkyBox - - - - - - - - - - - - * Specifies whether or not the UV coordinates should be animated using IRenderable's uvTransform matrix. - * - * @see IRenderable.uvTransform - - - - - - - - * Specifies whether or not the UV coordinates should be animated using IRenderable's uvTransform matrix. - * - * @see IRenderable.uvTransform - - - - - - - - * The alpha of the surface. - - - - - - - - * The texture object to use for the albedo colour. - - - - - - - - * The texture object to use for the ambient colour. - - - - - - - - - - - - - - - { anisotropy : ANISOTROPIC2X, mipmap : true, repeat : false, smooth : true, texture : null } - * Creates a new TextureMaterial. - * @param texture The texture used for the material's albedo color. - * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true. - * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to true. - * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to true. - * @param anisotropy Indicates the number of samples to use if Anisotropic mipmap filtering is applied - - * TextureMaterial is a single-pass material that uses a texture to define the surface's diffuse reflection colour (albedo). - - - - - <_diffuses> - <_normals> - <_speculars> - <_TBDiffuse> - <_TBNormal> - <_TBSpecular> - <_currentMapID> - - - - - - - { mapID : 0 } - - - - - - - - - - - - { mipmap : true, repeat : false, smooth : true, speculars : null, normals : null } - - - * SpriteSheetMaterial is a material required for a SpriteSheetAnimator if you have an animation spreaded over more maps - * and/or have animated normalmaps, specularmaps - - - - - - - - <_animateUVs> - - - * Specifies whether or not the UV coordinates should be animated using a transformation matrix. - - - - - - - - * The texture object to use for the albedo colour. - - - - - - - - * The texture object to use for the ambient colour. - - - - - - - - - - - - - - - - { anisotropy : ANISOTROPIC2X, mipmap : true, repeat : false, smooth : true, texture : null } - * Creates a new TextureMultiPassMaterial. - * @param texture The texture used for the material's albedo color. - * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true. - * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to true. - * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to true. - * @param anisotropy Indicates the number of samples to use if Anisotropic mipmap filtering is applied - - * TextureMultiPassMaterial is a multi-pass material that uses a texture to define the surface's diffuse reflection colour (albedo). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_sharedRegisters> - <_registerCache> - <_dependencyCounter> - <_methodSetup> - <_smooth> - <_repeat> - <_mipmap> - <_anisotropy> - <_enableLightFallOff> - <_preserveAlpha expr="true"> - - true - - <_animateUVs> - <_animateUVs2> - <_alphaPremultiplied> - <_vertexConstantData> - <_fragmentConstantData> - <_vertexCode> - <_fragmentCode> - <_fragmentLightCode> - <_fragmentPostLightCode> - <_commonsDataIndex expr="-1"> - - -1 - - <_animatableAttributes> - <_animationTargetRegisters> - <_lightProbeDiffuseIndices> - <_lightProbeSpecularIndices> - <_uvBufferIndex expr="-1"> - - -1 - - <_uvTransformIndex expr="-1"> - - -1 - - <_uvTransformIndex2 expr="-1"> - - -1 - - <_secondaryUVBufferIndex expr="-1"> - - -1 - - <_normalBufferIndex expr="-1"> - - -1 - - <_tangentBufferIndex expr="-1"> - - -1 - - <_lightFragmentConstantIndex expr="-1"> - - -1 - - <_sceneMatrixIndex expr="-1"> - - -1 - - <_sceneNormalMatrixIndex expr="-1"> - - -1 - - <_cameraPositionIndex expr="-1"> - - -1 - - <_probeWeightsIndex expr="-1"> - - -1 - - <_specularLightSources> - <_diffuseLightSources> - <_numLights> - <_numLightProbes> - <_numPointLights> - <_numDirectionalLights> - <_numProbeRegisters> - <_combinedLightSources> - <_usingSpecularMethod> - <_needUVAnimation> - <_UVTarget> - <_UVSource> - <_profile> - <_forceSeperateMVP> - - - * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and - * compatibility for constrained mode. - - - - - - - - * Indicates whether the compiled code needs UV animation. - - - - * The target register to place the animated UV coordinate. - - - - * The souce register providing the UV coordinate to animate. - - - - * Indicates whether the screen projection should be calculated by forcing a separate scene matrix and - * view-projection matrix. This is used to prevent rounding errors when using multiple passes with different - * projection code. - - - - - - - - - - - * Initialized the register cache. - * @param profile The compatibility profile of the renderer. - - - - * Indicate whether UV coordinates need to be animated using the renderable's transformUV matrix. - - - - - - - - * Indicate whether UV coordinates need to be animated using the renderable's transformUV matrix. - - - - - - - - * Indicates whether visible textures (or other pixels) used by this material have - * already been premultiplied. - - - - - - - - * Indicates whether the output alpha value should remain unchanged compared to the material's original alpha. - - - - - - - - - - - - - - * Sets the default texture sampling properties. - * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true. - * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to true. - * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to true. - - - - - - - - * Sets the constant buffers allocated by the material. This allows setting constant data during compilation. - * @param vertexConstantData The vertex constant data buffer. - * @param fragmentConstantData The fragment constant data buffer. - - - - * The shader method setup object containing the method configuration and their value objects for the material being compiled. - - - - - - - - * Compiles the code after all setup on the compiler has finished. - - - - * Creates the registers to contain the normal data. - - - - * Compile the code for the methods. - - - - * Compile the lighting code. - - - - * Calculate the view direction. - - - - * Calculate the normal. - - - - * Calculate the (possibly animated) UV coordinates. - - - - * Provide the secondary UV coordinates. - - - - * Compile the world-space position. - - - - * Get the projection coordinates. - - - - * Assign the final output colour the the output register. - - - - * Reset all the indices to "unused". - - - - * Prepares the setup for the light code. - - - - * Create the commonly shared constant register. - - - - * Figure out which named registers are required, and how often. - - - - - - - - * Counts the dependencies for a given method. - * @param method The method to count the dependencies for. - * @param methodVO The method's data for this material. - - - - - - - - * Assigns all prerequisite data for the methods, so we can calculate dependencies for them. - - - - * The index for the common data register. - - - - * Assigns the shared register data to all methods. - - - - * The amount of vertex constants used by the material. Any animation code to be added can append its vertex - * constant data after this. - - - - * The amount of fragment constants used by the material. Any animation code to be added can append its vertex - * constant data after this. - - - - * The amount of vertex attribute streams used by the material. Any animation code to be added can add its - * streams after this. Also used to automatically disable attribute slots on pass deactivation. - - - - * The amount of textures used by the material. Used to automatically disable texture slots on pass deactivation. - - - - * Number of used varyings. Any animation code to be added can add its used varyings after this. - - - - * Indicates whether lights are used for specular reflections. - - - - * Indicates whether lights are used for diffuse reflections. - - - - * Disposes all resources used by the compiler. - - - - * Clean up method's compilation data after compilation finished. - - - - * Define which light source types to use for specular reflections. This allows choosing between regular lights - * and/or light probes for specular reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * Define which light source types to use for diffuse reflections. This allows choosing between regular lights - * and/or light probes for diffuse reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * Indicates whether light probes are being used for specular reflections. - - - - * Indicates whether light probes are being used for diffuse reflections. - - - - * Indicates whether any light probes are used. - - - - * The index for the UV vertex attribute stream. - - - - * The index for the UV transformation matrix vertex constant. - - - - * The index for the UV transformation matrix vertex constant. - - - - * The index for the secondary UV vertex attribute stream. - - - - * The index for the vertex normal attribute stream. - - - - * The index for the vertex tangent attribute stream. - - - - * The first index for the fragment constants containing the light data. - - - - * The index of the vertex constant containing the camera position. - - - - * The index of the vertex constant containing the scene matrix. - - - - * The index of the vertex constant containing the uniform scene matrix (the inverse transpose). - - - - * The index of the fragment constant containing the weights for the light probes. - - - - * The generated vertex code. - - - - * The generated fragment code. - - - - * The code containing the lighting calculations. - - - - * The code containing the post-lighting calculations. - - - - * The register name containing the final shaded colour. - - - - * The amount of point lights that need to be supported. - - - - - - - - * The amount of directional lights that need to be supported. - - - - - - - - * The amount of light probes that need to be supported. - - - - - - - - * Indicates whether the specular method is used. - - - - * The attributes that need to be animated by animators. - - - - * The target registers for animated properties, written to by the animators. - - - - * Indicates whether the compiled shader uses normals. - - - - * Indicates whether the compiled shader uses lights. - - - - * Compiles the code for the methods. - - - - * Indices for the light probe diffuse textures. - - - - * Indices for the light probe specular textures. - - - - - - - * Creates a new ShaderCompiler object. - * @param profile The compatibility profile of the renderer. - - * ShaderCompiler is an abstract base class for shader compilers that use modular shader methods to assemble a - * material. Concrete subclasses are used by the default materials. - * - * @see away3d.materials.methods.ShadingMethodBase - - - - - - <_pointLightFragmentConstants public="1"> - <_pointLightVertexConstants public="1"> - <_dirLightFragmentConstants public="1"> - <_dirLightVertexConstants public="1"> - <_lightVertexConstantIndex> - <_shadowRegister> - - - * The starting index if the vertex constant to which light data needs to be uploaded. - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Indicates whether or not lighting happens in tangent space. This is only the case if no world-space - * dependencies exist. - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Generates code to retrieve the tangent space normal from the normal map - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Provides the code to provide shadow mapping. - - - - * Initializes constant registers to contain light data. - - - - * Compiles the shading code for directional lights. - - - - * Compiles the shading code for point lights. - - - - * Compiles shading code for light probes. - - - - - - - * Create a new LightingShaderCompiler object. - * @param profile The compatibility profile of the renderer. - - * LightingShaderCompiler is a ShaderCompiler that generates code for passes performing shading only (no effect passes) - - - - - - - - - - - - <_projectionDependencies> - <_normalDependencies> - <_viewDirDependencies> - <_uvDependencies> - <_secondaryUVDependencies> - <_globalPosDependencies> - <_tangentDependencies> - <_usesGlobalPosFragment expr="false"> - - false - - <_numPointLights> - <_lightSourceMask> - - - * Clears dependency counts for all registers. Called when recompiling a pass. - - - - - - - - * Sets the amount of lights that have a position associated with them. - * @param numPointLights The amount of point lights. - * @param lightSourceMask The light source types used by the material. - - - - - - - * Increases dependency counters for the named registers listed as required by the given MethodVO. - * @param methodVO the MethodVO object for which to include dependencies. - - - - * The amount of tangent vector dependencies (fragment shader). - - - - * Indicates whether there are any dependencies on the world-space position vector. - - - - * The amount of dependencies on the projected position. - - - - * The amount of dependencies on the normal vector. - - - - * The amount of dependencies on the view direction. - - - - * The amount of dependencies on the primary UV coordinates. - - - - * The amount of dependencies on the secondary UV coordinates. - - - - * The amount of dependencies on the global position. This can be 0 while hasGlobalPosDependencies is true when - * the global position is used as a temporary value (fe to calculate the view direction) - - - - - - - * Adds any external world space dependencies, used to force world space calculations. - - - - * Creates a new MethodDependencyCounter object. - - * MethodDependencyCounter keeps track of the number of dependencies for "named registers" used across methods. - * Named registers are that are not necessarily limited to a single method. They are created by the compiler and - * passed on to methods. The compiler uses the results to reserve usages through RegisterPool, which can be removed - * each time a method has been compiled into the shader. - * - * @see RegisterPool.addUsage - - - - <_regPool expr="new Map<String,Vector<ShaderRegisterElement>>()" line="16" static="1"> - - - - - >()]]> - - <_regCompsPool expr="new Map<String,Array<Dynamic>>()" line="17" static="1"> - - - - - >()]]> - - <_initPool set="method" line="158" static="1"> - - - - - <_vectorRegisters> - <_registerComponents> - <_regName> - <_usedSingleCount> - <_usedVectorCount> - <_regCount> - <_persistent> - - - * Retrieve an entire vector register that's still available. - - - - * Retrieve a single vector component that's still available. - - - - - - - - * Marks a register as used, so it cannot be retrieved. The register won't be able to be used until removeUsage - * has been called usageCount times again. - * @param register The register to mark as used. - * @param usageCount The amount of usages to add. - - - - - - - * Removes a usage from a register. When usages reach 0, the register is freed again. - * @param register The register for which to remove a usage. - - - - * Disposes any resources used by the current RegisterPool object. - - - - * Indicates whether or not any registers are in use. - - - - - - - - * Initializes all registers. - - - - - - - * Check if the temp register is either used for single or vector use - - - - - - - - - { persistent : true } - * Creates a new RegisterPool object. - * @param regName The base name of the register type ("ft" for fragment temporaries, "vc" for vertex constants, etc) - * @param regCount The amount of available registers of this type. - * @param persistent Whether or not registers, once reserved, can be freed again. For example, temporaries are not persistent, but constants are. - - * RegisterPool is used by the shader compilation process to keep track of which registers of a certain type are - * currently used and should not be allowed to be written to. Either entire registers can be requested and locked, - * or single components (x, y, z, w) of a single register. - * It is used by ShaderRegisterCache to track usages of individual register types. - * - * @see away3d.materials.compilation.ShaderRegisterCache - - - - - - - - - - - - - - - - - - - - - - - - * ShaderRegisterData contains the "named" registers, generated by the compiler and to be passed on to the methods. - - - - - - ["x", "y", "z", "w"] - - - - <_regName> - <_index> - <_toStr> - <_component> - - away3d - - - - * Converts the register or the components AGAL string representation. - - - - * The register's name. - - - - * The register's index. - - - - - - - - - { component : -1 } - * Creates a new ShaderRegisterElement object. - * @param regName The name of the register. - * @param index The index of the register. - * @param component The register's component, if not the entire register is represented. - - * A single register element (an entire register or a single register's component) used by the RegisterPool. - - - - - <_pointLightRegisters public="1"> - <_dirLightRegisters public="1"> - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * Compiles the vertex shader code for tangent-space normal maps. - * @param matrix The register containing the scene transformation matrix for normals. - - - - * Compiles the fragment shader code for tangent-space normal maps. - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Initializes the registers containing the lighting data. - - - - - - - - - - * Creates a new SuperShaderCompiler object. - * @param profile The compatibility profile used by the renderer. - - * SuperShaderCompiler is a compiler that generates shaders that perform both lighting and "effects" through methods. - * This is used by the single-pass materials. - - - - - - - - - - - - - - - - - - - <_numPointLights> - <_numDirectionalLights> - <_numCastingPointLights> - <_numCastingDirectionalLights> - <_numLightProbes> - <_allPickedLights> - <_pointLights> - <_castingPointLights> - <_directionalLights> - <_castingDirectionalLights> - <_lightProbes> - <_lightProbeWeights> - - - * Disposes resources used by the light picker. - - - - * @inheritDoc - - - - * The maximum amount of directional lights that will be provided. - - - - * The maximum amount of point lights that will be provided. - - - - * The maximum amount of directional lights that cast shadows. - - - - * The amount of point lights that cast shadows. - - - - * The maximum amount of light probes that will be provided. - - - - * The collected point lights to be used for shading. - - - - * The collected directional lights to be used for shading. - - - - * The collected point lights that cast shadows to be used for shading. - - - - * The collected directional lights that cast shadows to be used for shading. - - - - * The collected light probes to be used for shading. - - - - * The weights for each light probe, defining their influence on the object. - - - - * A collection of all the collected lights. - - - - - - - - * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code. - - - - - - - * Updates the weights for the light probes, based on the renderable's position relative to them. - * @param renderable The renderble for which to calculate the light probes' influence. - - - - * Creates a new LightPickerBase object. - - * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for - * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be - * extended to provide more application-specific dynamic selection of lights. - * - * @see StaticLightPicker - - - - - - <_lights> - - - * The lights used for shading. - - - - - - - - * Remove configuration change listeners on the lights. - - - - - - - * Notifies the material of a configuration change. - - - - - - - * Called when a directional light's shadow casting configuration changes. - - - - - - - * Called when a point light's shadow casting configuration changes. - - - - - - - * Creates a new StaticLightPicker object. - * @param lights The lights to be used for shading. - - * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but - * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may - * occur. - - - - - - - <_sharedRegisters> - <_passes> - - - - - - away3d - * Initializes the properties for a MethodVO, including register and texture indices. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - - - - - - - away3d - * Initializes unchanging shader constants using the data from a MethodVO. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - - - - away3d - * The shared registers created by the compiler and possibly used by methods. - - - - - - - away3d - - - - * Any passes required that render to a texture used by this method. - - - - * Cleans up any resources used by the current object. - - - - away3d - * Creates a data container that contains material-dependent data. Provided as a factory method so a custom subtype can be overridden when needed. - - - - away3d - * Resets the compilation state of the method. - - - - away3d - * Resets the method's state for compilation. - * @private - - - - - - - - away3d - * Get the vertex shader code for this method. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - * @private - - - - - - - - away3d - * Sets the render state for this method. - * - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param stage3DProxy The Stage3DProxy object currently used for rendering. - * @private - - - - - - - - - - away3d - * Sets the render state for a single renderable. - * - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param renderable The renderable currently being rendered. - * @param stage3DProxy The Stage3DProxy object currently used for rendering. - * @param camera The camera from which the scene is currently rendered. - - - - - - - - away3d - * Clears the render state for this method. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param stage3DProxy The Stage3DProxy object currently used for rendering. - - - - - - - - - - - - { forceWrap : null, uvReg : null } - * A helper method that generates standard code for sampling from a texture using the normal uv coordinates. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param targetReg The register in which to store the sampled colour. - * @param inputReg The texture stream register. - * @param texture The texture which will be assigned to the given slot. - * @param uvReg An optional uv register if coordinates different from the primary uv coordinates are to be used. - * @param forceWrap If true, texture wrapping is enabled regardless of the material setting. - * @return The fragment code that performs the sampling. - - - - - - - - - - - * A helper method that generates standard code for sampling from a cube texture. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param targetReg The register in which to store the sampled colour. - * @param inputReg The texture stream register. - * @param texture The cube map which will be assigned to the given slot. - * @param uvReg The direction vector with which to sample the cube map. - - - - - - - * Generates a texture format string for the sample instruction. - * @param texture The texture for which to get the format string. - * @return - - - - * Marks the shader program as invalid, so it will be recompiled before the next render. - - - - - - - * Copies the state from a ShadingMethodBase object into the current object. - - - - - - - - - * Create a new ShadingMethodBase object. - * @param needsNormals Defines whether or not the method requires normals. - * @param needsView Defines whether or not the method requires the view direction. - - * ShadingMethodBase provides an abstract base method for shading methods, used by compiled passes to compile - * the final shading program. - - - - - - - - * @inheritDoc - - - - - - - - - away3d - * Get the fragment shader code that should be added after all per-light code. Usually composits everything to the target register. - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param regCache The register cache used during the compilation. - * @param targetReg The register that will be containing the method's output. - * @private - - - * EffectMethodBase forms an abstract base class for shader methods that are not dependent on light sources, - * and are in essence post-process effects on the materials. - - - - - - - <_texture> - <_useSecondaryUV> - - - - - - * @inheritDoc - - - - * Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently, for - * instance to tile the main texture and normal map while providing untiled alpha, for example to define the - * transparency over a tiled water surface. - - - - - - - - * The texture to use as the alpha mask. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - { useSecondaryUV : false } - * Creates a new AlphaMaskMethod object - * @param texture The texture to use as the alpha mask. - * @param useSecondaryUV Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently. - - * AlphaMaskMethod allows the use of an additional texture to specify the alpha value of the material. When used - * with the secondary uv set, it allows for a tiled main texture with independently varying alpha (useful for water - * etc). - - - - - <_modulateMethod> - - away3d - * A method that is exposed to wrappers in case the strength needs to be controlled - - - - - - - - away3d - * Get the fragment shader code that will be needed before any per-light code is added. - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param regCache The register cache used during the compilation. - * @private - - - - - - - - - - away3d - * Get the fragment shader code that will generate the code relevant to a single light. - * - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param lightDirReg The register containing the light direction vector. - * @param lightColReg The register containing the light colour. - * @param regCache The register cache used during the compilation. - - - - - - - - - - away3d - * Get the fragment shader code that will generate the code relevant to a single light probe object. - * - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param cubeMapReg The register containing the cube map for the current probe - * @param weightRegister A string representation of the register + component containing the current weight - * @param regCache The register cache providing any necessary registers to the shader - - - - - - - - - away3d - * Get the fragment shader code that should be added after all per-light code. Usually composits everything to the target register. - * - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param regCache The register cache used during the compilation. - * @param targetReg The register containing the final shading output. - * @private - - - - * Creates a new LightingMethodBase. - - * LightingMethodBase provides an abstract base method for shading methods that uses lights. - * Used for diffuse and specular shaders only. - - - - - - - - - - away3d - - <_useTexture> - <_totalLightColorReg> - <_specularTextureRegister> - <_specularTexData> - <_specularDataRegister> - <_texture> - <_gloss expr="50"> - - 50 - - <_specular expr="1"> - - 1 - - <_specularColor expr="0xffffff"> - - 0xffffff - - <_specularR expr="1"> - - - 1 - away3d - - - <_specularG expr="1"> - - - 1 - away3d - - - <_specularB expr="1"> - - - 1 - away3d - - - <_shadowRegister> - <_isFirstLight> - - - - - - * @inheritDoc - - - - * The sharpness of the specular highlight. - - - - - - - - * The overall strength of the specular highlights. - - - - - - - - * The colour of the specular reflection of the surface. - - - - - - - - * The bitmapData that encodes the specular highlight strength per texel in the red channel, and the sharpness - * in the green channel. You can use SpecularBitmapTexture if you want to easily set specular and gloss maps - * from grayscale images, but prepared images are preferred. - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * Updates the specular color data used by the render state. - - - - - - - * Set internally by the compiler, so the method knows the register containing the shadow calculation. - - - - * Creates a new BasicSpecularMethod object. - - * BasicSpecularMethod provides the default shading method for Blinn-Phong specular highlights (an optimized but approximated - * version of Phong specularity). - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - * Creates a new AnisotropicSpecularMethod object. - - * AnisotropicSpecularMethod provides a specular method resulting in anisotropic highlights. These are typical for - * surfaces with microfacet details such as tiny grooves. In particular, this uses the Heidrich-Seidel distrubution. - * The tangent vectors are used as the surface groove directions. - - - - - - - - <_useTexture> - <_texture> - <_ambientInputRegister> - <_ambientColor expr="0xffffff"> - - 0xffffff - - <_ambientR expr="0"> - - 0 - - <_ambientG expr="0"> - - 0 - - <_ambientB expr="0"> - - 0 - - <_ambient expr="1"> - - 1 - - <_lightAmbientR expr="0"> - - - 0 - away3d - - - <_lightAmbientG expr="0"> - - - 0 - away3d - - - <_lightAmbientB expr="0"> - - - 0 - away3d - - - - - - - - away3d - * @inheritDoc - - - - - - - away3d - * @inheritDoc - - - - * The strength of the ambient reflection of the surface. - - - - - - - - * The colour of the ambient reflection of the surface. - - - - - - - - * The bitmapData to use to define the diffuse reflection color per texel. - - - - - - - - - - - * @inheritDoc - - - - away3d - * @inheritDoc - - - - - - - - - away3d - * @inheritDoc - - - - - - - - away3d - * @inheritDoc - - - - * Updates the ambient color data used by the render state. - - - - - - - - - - away3d - * @inheritDoc - - - - * Creates a new BasicAmbientMethod object. - - * BasicAmbientMethod provides the default shading method for uniform ambient lighting. - - - - - - - away3d - - - - - - - - away3d - - <_useAmbientTexture> - <_useTexture> - <_totalLightColorReg public="1"> - <_diffuseInputRegister> - <_texture> - <_diffuseColor expr="0xffffff"> - - 0xffffff - - <_diffuseR expr="1"> - - 1 - - <_diffuseG expr="1"> - - 1 - - <_diffuseB expr="1"> - - 1 - - <_diffuseA expr="1"> - - 1 - - <_shadowRegister> - <_alphaThreshold expr="0"> - - 0 - - <_isFirstLight> - - - * Set internally if the ambient method uses a texture. - - - - - - - - - - - - - - - * Forces the creation of the texture. - * @param stage3DProxy The Stage3DProxy used by the renderer - - - - * The alpha component of the diffuse reflection. - - - - - - - - * The color of the diffuse reflection when not using a texture. - - - - - - - - * The bitmapData to use to define the diffuse reflection color per texel. - - - - - - - - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * Generate the code that applies the calculated shadow to the diffuse light - * @param vo The MethodVO object for which the compilation is currently happening. - * @param regCache The register cache the compiler is currently using for the register management. - - - - - - - - * @inheritDoc - - - - * Updates the diffuse color data used by the render state. - - - - - - - * Set internally by the compiler, so the method knows the register containing the shadow calculation. - - - - * Creates a new BasicDiffuseMethod object. - - * BasicDiffuseMethod provides the default shading method for Lambert (dot3) diffuse lighting. - - - - - - - away3d - - - - away3d - - - <_texture> - <_useTexture> - <_normalTextureRegister> - - - - - - * @inheritDoc - - - - * Indicates whether or not this method outputs normals in tangent space. Override for object-space normals. - - - - * Indicates if the normal method output is not based on a texture (if not, it will usually always return true) - * Override if subclasses are different. - - - - - - - * @inheritDoc - - - - * The texture containing the normals per pixel. - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - away3d - * @inheritDoc - - - - * Creates a new BasicNormalMethod object. - - * BasicNormalMethod is the default method for standard tangent-space normal mapping. - - - - - - - - - - <_castingLight> - <_shadowMapper> - <_epsilon expr=".02"> - - .02 - - <_alpha expr="1"> - - 1 - - - - * @inheritDoc - - - - * The "transparency" of the shadows. This allows making shadows less strong. - - - - - - - - * The light casting the shadows. - - - - * A small value to counter floating point precision errors when comparing values in the shadow map with the - * calculated depth value. Increase this if shadow banding occurs, decrease it if the shadow seems to be too detached. - - - - - - - - - - - - - away3d - * @inheritDoc - - - - - - - * Creates a new ShadowMapMethodBase object. - * @param castingLight The light used to cast shadows. - - * ShadowMapMethodBase provides an abstract base method for shadow map methods. - - - - - - <_baseMethod> - <_cascadeShadowMapper> - <_depthMapCoordVaryings> - <_cascadeProjections> - - - * The shadow map sampling method used to sample individual cascades. These are typically those used in conjunction - * with a DirectionalShadowMapper. - * - * @see HardShadowMapMethod - * @see SoftShadowMapMethod - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * Creates the registers for the cascades' projection coordinates. - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - * Called when the shadow mappers cascade configuration changes. - - - - - - - * Called when the base method's shader code is invalidated. - - - - - - - * Creates a new CascadeShadowMapMethod object. - * - * @param shadowMethodBase The shadow map sampling method used to sample individual cascades (fe: HardShadowMapMethod, SoftShadowMapMethod) - - * CascadeShadowMapMethod is a shadow map method to apply cascade shadow mapping on materials. - * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property. - * - * @see away3d.lights.shadowmaps.CascadeShadowMapper - - - - - - <_baseMethod> - - - * The base diffuse method on which this method's shading is based. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Called when the base method's shader code is invalidated. - - - - - - - - { baseDiffuseMethod : null, modulateMethod : null } - * Creates a new WrapDiffuseMethod object. - * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t : ShaderRegisterElement, regCache : ShaderRegisterCache) : String, in which t.w will contain the diffuse strength. - * @param baseDiffuseMethod The base diffuse method on which this method's shading is based. - - * CompositeDiffuseMethod provides a base class for diffuse methods that wrap a diffuse method to alter the - * calculated diffuse reflection strength. - - - - - - <_levels> - <_dataReg> - <_smoothness expr=".1"> - - .1 - - - - - - - * @inheritDoc - - - - * The amount of shadow gradations. - - - - - - - - * The smoothness of the edge between 2 shading levels. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * Snaps the diffuse shading of the wrapped method to one of the levels. - * @param vo The MethodVO used to compile the current shader. - * @param t The register containing the diffuse strength in the "w" component. - * @param regCache The register cache used for the shader compilation. - * @param sharedRegisters The shared register data for this shader. - * @return The AGAL fragment code for the method. - - - - - - - - { baseDiffuseMethod : null, levels : 3 } - * Creates a new CelDiffuseMethod object. - * @param levels The amount of shadow gradations. - * @param baseDiffuseMethod An optional diffuse method on which the cartoon shading is based. If omitted, BasicDiffuseMethod is used. - - * CelDiffuseMethod provides a shading method to add diffuse cel (cartoon) shading. - - - - - - <_baseMethod> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The base specular method on which this method's shading is based. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - * @return - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Called when the base method's shader code is invalidated. - - - - - - - - { baseSpecularMethod : null } - * Creates a new WrapSpecularMethod object. - * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature modSpecular(t : ShaderRegisterElement, regCache : ShaderRegisterCache) : String, in which t.w will contain the specular strength and t.xyz will contain the half-vector or the reflection vector. - * @param baseSpecularMethod The base specular method on which this method's shading is based. - - * CompositeSpecularMethod provides a base class for specular methods that wrap a specular method to alter the - * calculated specular reflection strength. - - - - - - <_dataReg> - <_smoothness expr=".1"> - - .1 - - <_specularCutOff expr=".1"> - - .1 - - - - * The smoothness of the highlight edge. - - - - - - - - * The threshold at which the specular highlight should be shown. - - - - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - * Snaps the specular shading strength of the wrapped method to zero or one, depending on whether or not it exceeds the specularCutOff - * @param vo The MethodVO used to compile the current shader. - * @param t The register containing the specular strength in the "w" component, and either the half-vector or the reflection vector in "xyz". - * @param regCache The register cache used for the shader compilation. - * @param sharedRegisters The shared register data for this shader. - * @return The AGAL fragment code for the method. - - - - - - - - * @inheritDoc - - - - - - - - { baseSpecularMethod : null, specularCutOff : .5 } - * Creates a new CelSpecularMethod object. - * @param specularCutOff The threshold at which the specular highlight should be shown. - * @param baseSpecularMethod An optional specular method on which the cartoon shading is based. If ommitted, BasicSpecularMethod is used. - - * CelSpecularMethod provides a shading method to add specular cel (cartoon) shading. - - - - - - <_matrix> - - - * The 4 x 5 matrix to transform the color of the material. - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * Creates a new ColorTransformMethod. - * - * @param matrix An array of 20 items for 4 x 5 color transform. - - * ColorMatrixMethod provides a shading method that changes the colour of a material analogous to a ColorMatrixFilter. - - - - - - <_colorTransform> - - - * The ColorTransform object to transform the colour of the material with. - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * Creates a new ColorTransformMethod. - - * ColorTransformMethod provides a shading method that changes the colour of a material analogous to a - * ColorTransform object. - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - * Creates a new BasicDiffuseMethod object. - - * DepthDiffuseMethod provides a debug method to visualise depth maps - - - - - - - away3d - - <_depthMapCoordReg> - <_usePoint> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * Wrappers that override the vertex shader need to set this explicitly - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * Gets the vertex code for shadow mapping with a point light. - * - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - - - - - - - - * Gets the vertex code for shadow mapping with a planar shadow map (fe: directional lights). - * - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - - - - - - - - - * @inheritDoc - - - - - - - - - * Gets the fragment code for shadow mapping with a planar shadow map. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - * @param targetReg The register to contain the shadow coverage - * @return - - - - - - - - - * Gets the fragment code for shadow mapping with a point light. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - * @param targetReg The register to contain the shadow coverage - * @return - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - away3d - * Gets the fragment code for combining this method with a cascaded shadow map method. - * @param vo The MethodVO object linking this method with the pass currently being compiled. - * @param regCache The register cache used during the compilation. - * @param decodeRegister The register containing the data to decode the shadow map depth value. - * @param depthTexture The texture containing the shadow map. - * @param depthProjection The projection of the fragment relative to the light. - * @param targetRegister The register to contain the shadow coverage - * @return - - - - - - - - * @inheritDoc - - - - - - - - away3d - * Sets the method state for cascade shadow mapping. - - - - - - - * Creates a new SimpleShadowMapMethodBase object. - * @param castingLight The light used to cast shadows. - - * SimpleShadowMapMethodBase provides an abstract method for simple (non-wrapping) shadow map methods. - - - - <_grainTexture static="1"> - <_grainUsages static="1"> - <_grainBitmapData static="1"> - - - <_depthMapSize> - <_range expr="1"> - - 1 - - <_numSamples> - - - * The amount of samples to take for dithering. Minimum 1, maximum 24. The actual maximum may depend on the - * complexity of the shader. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The range in the shadow map in which to distribute the samples. - - - - - - - - * Creates a texture containing the dithering noise texture. - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - * Get the actual shader code for shadow mapping - * @param regCache The register cache managing the registers. - * @param depthMapRegister The texture register containing the depth map. - * @param decReg The register containing the depth map decoding data. - * @param targetReg The target register to add the shadow coverage. - - - - - - - - - - - * Adds the code for another tap to the shader code. - * @param uvReg The uv register for the tap. - * @param depthMapRegister The texture register containing the depth map. - * @param decReg The register containing the depth map decoding data. - * @param targetReg The target register to add the tap comparison result. - * @param regCache The register cache managing the registers. - * @return - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - - { numSamples : 4 } - * Creates a new DitheredShadowMapMethod object. - * @param castingLight The light casting the shadows - * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 24. - - * DitheredShadowMapMethod provides a soft shadowing technique by randomly distributing sample points differently for each fragment. - - - - - - <_cubeTexture> - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * The cube environment map to use for the diffuse lighting. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new EnvMapDiffuseMethod object. - * @param envMap The cube environment map to use for the diffuse lighting. - - * EnvMapDiffuseMethod provides a diffuse shading method that uses a diffuse irradiance environment map to - * approximate global lighting rather than lights. - - - - - - - - <_cubeTexture> - <_alpha> - <_mask> - - - * An optional texture to modulate the reflectivity of the surface. - - - - - - - - - - - * @inheritDoc - - - - * The cubic environment map containing the reflected scene. - - - - - - - - * @inheritDoc - - - - * The reflectivity of the surface. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - { alpha : 1 } - * Creates an EnvMapMethod object. - * @param envMap The environment map containing the reflected scene. - * @param alpha The reflectivity of the surface. - - * EnvMapMethod provides a material method to perform reflection mapping using cube maps. - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new BasicDiffuseMethod object. - * - * @param castingLight The light casting the shadow - - * DitheredShadowMapMethod provides a softened shadowing technique by bilinearly interpolating shadow comparison - * results of neighbouring pixels. - - - - - - - - <_minDistance expr="0"> - - 0 - - <_maxDistance expr="1000"> - - 1000 - - <_fogColor> - <_fogR> - <_fogG> - <_fogB> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The distance from which the fog starts appearing. - - - - - - - - * The distance at which the fog is densest. - - - - - - - - * The colour of the fog. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - { fogColor : 0x808080 } - * Creates a new FogMethod object. - * @param minDistance The distance from which the fog starts appearing. - * @param maxDistance The distance at which the fog is densest. - * @param fogColor The colour of the fog. - - * FogMethod provides a method to add distance-based fog to a material. - - - - - - - - - - <_cubeTexture> - <_fresnelPower expr="5"> - - 5 - - <_normalReflectance expr="0"> - - 0 - - <_alpha> - <_mask> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * An optional texture to modulate the reflectivity of the surface. - - - - - - - - * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5. - - - - - - - - * The cubic environment map containing the reflected scene. - - - - - - - - * @inheritDoc - - - - * The reflectivity of the surface. - - - - - - - - * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - { alpha : 1 } - * Creates an FresnelEnvMapMethod object. - * @param envMap The environment map containing the reflected scene. - * @param alpha The reflectivity of the material. - - * FresnelEnvMapMethod provides a method to add fresnel-based reflectivity to an object using cube maps, which gets - * stronger as the viewing angle becomes more grazing. - - - - - - - - - - <_texture> - <_alpha expr="1"> - - 1 - - <_normalDisplacement expr="0"> - - 0 - - <_normalReflectance expr="0"> - - 0 - - <_fresnelPower expr="5"> - - 5 - - - - * The reflectivity of the surface. - - - - - - - - * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5. - - - - - - - - * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction. - - - - - - - - - - - * @inheritDoc - - - - * The PlanarReflectionTexture containing a render of the mirrored scene. - * - * @see away3d.textures.PlanarReflectionTexture - - - - - - - - * The amount of displacement caused by per-pixel normals. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - { alpha : 1 } - * Creates a new FresnelPlanarReflectionMethod object. - * @param texture The PlanarReflectionTexture containing a render of the mirrored scene. - * @param alpha The maximum reflectivity of the surface. - * - * @see away3d.textures.PlanarReflectionTexture - - * FresnelPlanarReflectionMethod provides a method to add fresnel-based planar reflections from a - * PlanarReflectionTexture object.to a surface, which get stronger as the viewing angle becomes more grazing. This - * method can be used for (near-)planar objects such as mirrors or water. - * - * @see away3d.textures.PlanarReflectionTexture - - - - - - - <_dataReg> - <_incidentLight> - <_fresnelPower expr="5"> - - 5 - - <_normalReflectance expr=".028"> - - .028 - - - - - - - * @inheritDoc - - - - * Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view. - - - - - - - - * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5. - - - - - - - - * @inheritDoc - - - - * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction. - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * Applies the fresnel effect to the specular strength. - * - * @param vo The MethodVO object containing the method data for the currently compiled material pass. - * @param target The register containing the specular strength in the "w" component, and the half-vector/reflection vector in "xyz". - * @param regCache The register cache used for the shader compilation. - * @param sharedRegisters The shared registers created by the compiler. - * @return The AGAL fragment code for the method. - - - - - - - - { baseSpecularMethod : null, basedOnSurface : true } - * Creates a new FresnelSpecularMethod object. - * @param basedOnSurface Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view. - * @param baseSpecularMethod The specular method to which the fresnel equation. Defaults to BasicSpecularMethod. - - * FresnelSpecularMethod provides a specular shading method that causes stronger highlights on grazing view angles. - - - - - - <_gradientTextureRegister> - <_gradient> - - - * A texture that contains the light colour based on the angle. This can be used to change the light colour - * due to subsurface scattering when the surface faces away from the light. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * Creates a new GradientDiffuseMethod object. - * @param gradient A texture that contains the light colour based on the angle. This can be used to change - * the light colour due to subsurface scattering when the surface faces away from the light. - - * GradientDiffuseMethod is an alternative to BasicDiffuseMethod in which the shading can be modulated with a gradient - * to introduce color-tinted shading as opposed to the single-channel diffuse strength. This can be used as a crude - * approximation to subsurface scattering (for instance, the mid-range shading for skin can be tinted red to similate - * scattered light within the skin attributing to the final colour) - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * Creates a new HardShadowMapMethod object. - - * HardShadowMapMethod provides the cheapest shadow map method by using a single tap without any filtering. - - - - - <_worldXYRatio> - <_worldXZRatio> - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - * Creates a new HeightMapNormalMethod method. - * @param heightMap The texture containing the height data. 0 means low, 1 means high. - * @param worldWidth The width of the 'world'. This is used to map uv coordinates' u component to scene dimensions. - * @param worldHeight The height of the 'world'. This is used to map the height map values to scene dimensions. - * @param worldDepth The depth of the 'world'. This is used to map uv coordinates' v component to scene dimensions. - - * HeightMapNormalMethod provides a normal map method that uses a height map to calculate the normals. - - - - - - BlendMode.MULTIPLY - * Indicates the light map should be multiplied with the calculated shading result. - * This can be used to add pre-calculated shadows or occlusion. - - - - BlendMode.ADD - * Indicates the light map should be added into the calculated shading result. - * This can be used to add pre-calculated lighting or global illumination. - - - - <_blendMode> - <_useSecondaryUV> - - - - - - * @inheritDoc - - - - * The blend mode with which the light map should be applied to the lighting result. - * - * @see LightMapDiffuseMethod.ADD - * @see LightMapDiffuseMethod.MULTIPLY - - - - - - - - * The texture containing the light map data. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - { baseMethod : null, useSecondaryUV : false, blendMode : BlendMode.MULTIPLY } - * Creates a new LightMapDiffuseMethod method. - * @param lightMap The texture containing the light map. - * @param blendMode The blend mode with which the light map should be applied to the lighting result. - * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map. - * @param baseMethod The diffuse method used to calculate the regular light-based lighting. - - * LightMapDiffuseMethod provides a diffuse shading method that uses a light map to modulate the calculated diffuse - * lighting. It is different from LightMapMethod in that the latter modulates the entire calculated pixel color, rather - * than only the diffuse lighting value. - - - - - - - BlendMode.MULTIPLY - * Indicates the light map should be multiplied with the calculated shading result. - - - - BlendMode.ADD - * Indicates the light map should be added into the calculated shading result. - - - - <_texture> - <_blendMode> - <_useSecondaryUV> - - - - - - * @inheritDoc - - - - * The blend mode with which the light map should be applied to the lighting result. - * - * @see LightMapMethod.ADD - * @see LightMapMethod.MULTIPLY - - - - - - - - * The texture containing the light map. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - { useSecondaryUV : false, blendMode : MULTIPLY } - * Creates a new LightMapMethod object. - * @param texture The texture containing the light map. - * @param blendMode The blend mode with which the light map should be applied to the lighting result. - * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map. - - * LightMapMethod provides a method that allows applying a light map texture to the calculated pixel colour. - * It is different from LightMapDiffuseMethod in that the latter only modulates the diffuse shading value rather - * than the whole pixel colour. - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - * Resets the values of the value object to their "unused" state. - - - - * Creates a new MethodVO object. - - * MethodVO contains data for a given method for the use within a single material. - * This allows methods to be shared across materials while their non-public state differs. - - - - - - * An instance of a concrete EffectMethodBase subclass. - - - - * The MethodVO data for the given method containing the material-specific data for a given material/method combination. - - - - - - - * Creates a new MethodVOSet object. - * @param method The method for which we need to store a MethodVO object. - - * MethodVOSet provides a EffectMethodBase and MethodVO combination to be used by a material, allowing methods - * to be shared across different materials while their internal state changes. - - - - - - - <_baseMethod> - <_fadeRatio> - <_nearShadowMapper> - - - * The base shadow map method on which this method's shading is based. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane. - - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Called when the base method's shader code is invalidated. - - - - - - - - { fadeRatio : .1 } - * Creates a new NearShadowMapMethod object. - * @param baseMethod The shadow map sampling method used to sample individual cascades (fe: HardShadowMapMethod, SoftShadowMapMethod) - * @param fadeRatio The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane. - - * NearShadowMapMethod provides a shadow map method that restricts the shadowed area near the camera to optimize - * shadow map usage. This method needs to be used in conjunction with a NearDirectionalShadowMapper. - * - * @see away3d.lights.shadowmaps.NearDirectionalShadowMapper - - - - - - - - <_outlinePass> - - - - - - * @inheritDoc - - - - * Indicates whether or not strokes should be potentially drawn over the existing model. - * Set this to true to draw outlines for geometry overlapping in the view, useful to achieve a cel-shaded drawing outline. - * Setting this to false will only cause the outline to appear around the 2D projection of the geometry. - - - - - - - - * The colour of the outline. - - - - - - - - * The size of the outline. - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - { dedicatedWaterProofMesh : false, showInnerLines : true, outlineSize : 1, outlineColor : 0x000000 } - * Creates a new OutlineMethod object. - * @param outlineColor The colour of the outline stroke - * @param outlineSize The size of the outline stroke - * @param showInnerLines Indicates whether or not strokes should be potentially drawn over the existing model. - * @param dedicatedWaterProofMesh Used to stitch holes appearing due to mismatching normals for overlapping vertices. Warning: this will create a new mesh that is incompatible with animations! - - * OutlineMethod provides a shading method to add outlines to an object. - - - - - - - - - - - - - * @inheritDoc - - - - * Creates a new PhongSpecularMethod object. - - * PhongSpecularMethod provides a specular method that provides Phong highlights. - - - - - - - - <_texture> - <_alpha expr="1"> - - 1 - - <_normalDisplacement expr="0"> - - 0 - - - - - - - * @inheritDoc - - - - * The reflectivity of the surface. - - - - - - - - * The PlanarReflectionTexture used to render the reflected view. - - - - - - - - * The amount of displacement on the surface, for use with water waves. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - { alpha : 1 } - * Creates a new PlanarReflectionMethod - * @param texture The PlanarReflectionTexture used to render the reflected view. - * @param alpha The reflectivity of the surface. - - * PlanarReflectionMethod is a material method that adds reflections from a PlanarReflectionTexture object. - * - * @see away3d.textures.PlanarReflectionTexture - - - - - - BlendMode.MULTIPLY - - - - BlendMode.ADD - - - - BlendMode.DIFFERENCE - - - - <_projector> - <_uvVarying> - <_projMatrix expr="new Matrix3D()"> - - new Matrix3D() - - <_mode> - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * The blend mode with which the texture is blended unto the object. - * ProjectiveTextureMethod.MULTIPLY can be used to project shadows. To prevent clamping, the texture's alpha should be white! - * ProjectiveTextureMethod.ADD can be used to project light, such as a slide projector or light coming through stained glass. To prevent clamping, the texture's alpha should be black! - * ProjectiveTextureMethod.MIX provides normal alpha blending. To prevent clamping, the texture's alpha should be transparent! - - - - - - - - * The TextureProjector object that defines the projection properties as well as the texture. - * - * @see away3d.entities.TextureProjector - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - { mode : MULTIPLY } - * Creates a new ProjectiveTextureMethod object. - * - * @param projector The TextureProjector object that defines the projection properties as well as the texture. - * @param mode The blend mode with which the texture is blended unto the surface. - * - * @see away3d.entities.TextureProjector - - * ProjectiveTextureMethod is a material method used to project a texture unto the surface of an object. - * This can be used for various effects apart from acting like a normal projector, such as projecting fake shadows - * unto a surface, the impact of light coming through a stained glass window, ... - - - - - - - - - - - <_envMap> - <_dispersionR expr="0"> - - 0 - - <_dispersionG expr="0"> - - 0 - - <_dispersionB expr="0"> - - 0 - - <_useDispersion> - <_refractionIndex> - <_alpha expr="1"> - - 1 - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The cube environment map to use for the refraction. - - - - - - - - * The refractive index of the material. - - - - - - - - * The amount of chromatic dispersion of the red channel. Defaults to 0 (none). - - - - - - - - * The amount of chromatic dispersion of the green channel. Defaults to 0 (none). - - - - - - - - * The amount of chromatic dispersion of the blue channel. Defaults to 0 (none). - - - - - - - - * The amount of transparency of the object. Warning: the alpha applies to the refracted color, not the actual - * material. A value of 1 will make it appear fully transparent. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - { dispersionB : 0, dispersionG : 0, dispersionR : 0, refractionIndex : .1 } - * Creates a new RefractionEnvMapMethod object. Example values for dispersion are: dispersionR: -0.03, dispersionG: -0.01, dispersionB: = .0015 - * @param envMap The environment map containing the refracted scene. - * @param refractionIndex The refractive index of the material. - * @param dispersionR The amount of chromatic dispersion of the red channel. Defaults to 0 (none). - * @param dispersionG The amount of chromatic dispersion of the green channel. Defaults to 0 (none). - * @param dispersionB The amount of chromatic dispersion of the blue channel. Defaults to 0 (none). - - * RefractionEnvMapMethod provides a method to add refracted transparency based on cube maps. - - - - - - - "add" - - - - "multiply" - - - - "mix" - - - - - - <_color> - <_blendMode> - <_colorR> - <_colorG> - <_colorB> - <_strength> - <_power> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The blend mode with which to add the light to the object. - * - * RimLightMethod.MULTIPLY multiplies the rim light with the material's colour. - * RimLightMethod.ADD adds the rim light with the material's colour. - * RimLightMethod.MIX provides normal alpha blending. - - - - - - - - * The color of the rim light. - - - - - - - - * The strength of the rim light. - - - - - - - - * The power of the rim light. Higher values will result in a higher edge fall-off. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - { blend : "mix", power : 2, strength : .4, color : 0xffffff } - * Creates a new RimLightMethod. - * @param color The colour of the rim light. - * @param strength The strength of the rim light. - * @param power The power of the rim light. Higher values will result in a higher edge fall-off. - * @param blend The blend mode with which to add the light to the object. - - * RimLightMethod provides a method to add rim lighting to a material. This adds a glow-like effect to edges of objects. - - - - - - - - away3d - - - - - away3d - - - - away3d - - - - away3d - - - - away3d - - <_colorTransformMethod> - - away3d - - <_colorTransformMethodVO> - - away3d - - <_normalMethod> - - away3d - - <_normalMethodVO> - - away3d - - <_ambientMethod> - - away3d - - <_ambientMethodVO> - - away3d - - <_shadowMethod> - - away3d - - <_shadowMethodVO> - - away3d - - <_diffuseMethod> - - away3d - - <_diffuseMethodVO> - - away3d - - <_specularMethod> - - away3d - - <_specularMethodVO> - - away3d - - <_methods> - - away3d - - - - - - - * Called when any method's code is invalidated. - - - - * Invalidates the material's shader code. - - - - * The method used to generate the per-pixel normals. - - - - - - - - * The method that provides the ambient lighting contribution. - - - - - - - - * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. - - - - - - - - * The method that provides the diffuse lighting contribution. - - - - - - - - * The method to perform specular shading. - - - - - - - - * @private - - - - - - - - * Disposes the object. - - - - - - - * Removes all listeners from a method. - - - - - - - * Adds a method to change the material after all lighting is performed. - * @param method The method to be added. - - - - - - - * Queries whether a given effect method was added to the material. - * - * @param method The method to be queried. - * @return true if the method was added to the material, false otherwise. - - - - - - - - * Inserts a method to change the material after all lighting is performed at the given index. - * @param method The method to be added. - * @param index The index of the method's occurrence - - - - - - - * Returns the method added at the given index. - * @param index The index of the method to retrieve. - * @return The method at the given index. - - - - * The number of "effect" methods added to the material. - - - - - - - * Removes a method from the pass. - * @param method The method to be removed. - - - - - - - - * Creates a new ShaderMethodSetup object. - - * ShaderMethodSetup contains the method configuration for an entire material. - - - - - - - - - - <_texture2> - <_normalTextureRegister2> - <_useSecondNormalMap> - <_water1OffsetX expr="0"> - - 0 - - <_water1OffsetY expr="0"> - - 0 - - <_water2OffsetX expr="0"> - - 0 - - <_water2OffsetY expr="0"> - - 0 - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The translation of the first wave layer along the X-axis. - - - - - - - - * The translation of the first wave layer along the Y-axis. - - - - - - - - * The translation of the second wave layer along the X-axis. - - - - - - - - * The translation of the second wave layer along the Y-axis. - - - - - - - - - - - * @inheritDoc - - - - * A second normal map that will be combined with the first to create a wave-like animation pattern. - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * Creates a new SimpleWaterNormalMethod object. - * @param waveMap1 A normal map containing one layer of a wave structure. - * @param waveMap2 A normal map containing a second layer of a wave structure. - - * SimpleWaterNormalMethod provides a basic normal map method to create water ripples by translating two wave normal maps. - - - - - - - <_range expr="1"> - - 1 - - <_numSamples> - <_offsets> - - - * The amount of samples to take for dithering. Minimum 1, maximum 32. The actual maximum may depend on the - * complexity of the shader. - - - - - - - - * The range in the shadow map in which to distribute the samples. - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - - - - * Adds the code for another tap to the shader code. - * @param uv The uv register for the tap. - * @param texture The texture register containing the depth map. - * @param decode The register containing the depth map decoding data. - * @param target The target register to add the tap comparison result. - * @param regCache The register cache managing the registers. - * @return - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - * Get the actual shader code for shadow mapping - * @param regCache The register cache managing the registers. - * @param depthTexture The texture register containing the depth map. - * @param decodeRegister The register containing the depth map decoding data. - * @param targetReg The target register to add the shadow coverage. - * @param dataReg The register containing additional data. - - - - - - - - - { range : 1, numSamples : 5 } - * Creates a new BasicDiffuseMethod object. - * - * @param castingLight The light casting the shadows - * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 32. - - * SoftShadowMapMethod provides a soft shadowing technique by randomly distributing sample points. - - - - - - - - <_depthPass> - <_lightProjVarying> - <_propReg> - <_scattering> - <_translucency expr="1"> - - 1 - - <_lightColorReg> - <_scatterColor expr="0xffffff"> - - 0xffffff - - <_colorReg> - <_decReg> - <_scatterR expr="1.0"> - - 1.0 - - <_scatterG expr="1.0"> - - 1.0 - - <_scatterB expr="1.0"> - - 1.0 - - <_targetReg> - - - - - - * @inheritDoc - - - - - * The amount by which the light scatters. It can be used to set the translucent surface's thickness. Use low - * values for skin. - - - - - - - - * The translucency of the object. - - - - - - - - * The colour of the "insides" of the object, ie: the colour the light becomes after leaving the object. - - - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - - - * Generates the code for this method - - - - - - - - { depthMapOffset : 15, depthMapSize : 512 } - * Creates a new SubsurfaceScatteringDiffuseMethod object. - * @param depthMapSize The size of the depth map used. - * @param depthMapOffset The amount by which the rendered object will be inflated, to prevent depth map rounding errors. - - * SubsurfaceScatteringDiffuseMethod provides a depth map-based diffuse shading method that mimics the scattering of - * light inside translucent surfaces. It allows light to shine through an object and to soften the diffuse shading. - * It can be used for candle wax, ice, skin, ... - - - - - <_blendingTexture> - <_splats> - <_numSplattingLayers> - <_tileData> - - - - - - * @inheritDoc - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - { uvReg : null } - * Gets the sample code for a single splat. - - - - - - - - - * Creates a new TerrainDiffuseMethod. - * @param splatTextures An array of Texture2DProxyBase containing the detailed textures to be tiled. - * @param blendingTexture The texture containing the blending data. The red, green, and blue channels contain the blending values for each of the textures in splatTextures, respectively. - * @param tileData The amount of times each splat texture needs to be tiled. The first entry in the array applies to the base texture, the others to the splats. If omitted, the default value of 50 is assumed for each. - - * TerrainDiffuseMethod provides a diffuse method that uses different tiled textures with alpha masks to create a - * large surface with high detail and less apparent tiling. - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new BasicDiffuseMethod object. - * - * @param castingLight The light casting the shadow - - "Please consider any of the superior shadow map methods: SoftShadowMapMethod or DitheredShadowMapMethod" - - - - - <_wrapDataRegister> - <_wrapFactor> - - - * @inheritDoc - - - - * A factor to indicate the amount by which the light is allowed to wrap. - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - { wrapFactor : .5 } - * Creates a new WrapDiffuseMethod object. - * @param wrapFactor A factor to indicate the amount by which the light is allowed to wrap - - * WrapDiffuseMethod is an alternative to BasicDiffuseMethod in which the light is allowed to be "wrapped around" the normally dark area, to some extent. - * It can be used as a crude approximation to Oren-Nayar or simple subsurface scattering. - - - - - <_previousUsedStreams expr="Vector.ofArray([0, 0, 0, 0, 0, 0, 0, 0])" line="89" static="1"> - - Vector.ofArray([0, 0, 0, 0, 0, 0, 0, 0]) - - <_previousUsedTexs expr="Vector.ofArray([0, 0, 0, 0, 0, 0, 0, 0])" line="90" static="1"> - - Vector.ofArray([0, 0, 0, 0, 0, 0, 0, 0]) - - - - - - - - - - - - - - - - - - - - away3d - - - <_material> - <_animationSet> - <_program3Ds expr="new Vector<Program3D>(8)"> - - - (8)]]> - away3d - - - <_program3Dids expr="Vector.ofArray([-1, -1, -1, -1, -1, -1, -1, -1])"> - - - Vector.ofArray([-1, -1, -1, -1, -1, -1, -1, -1]) - away3d - - - <_context3Ds expr="new Vector<Context3D>(8)"> - - (8)]]> - - <_numUsedStreams expr="0"> - - 0 - - <_numUsedTextures expr="0"> - - 0 - - <_numUsedVertexConstants expr="0"> - - 0 - - <_numUsedFragmentConstants expr="0"> - - 0 - - <_numUsedVaryings expr="0"> - - 0 - - <_smooth expr="true"> - - true - - <_repeat expr="false"> - - false - - <_mipmap expr="true"> - - true - - <_anisotropy expr="Anisotropy.ANISOTROPIC2X"> - - Anisotropy.ANISOTROPIC2X - - <_depthCompareMode expr="Context3DCompareMode.LESS_EQUAL"> - - Context3DCompareMode.LESS_EQUAL - - <_blendFactorSource expr="Context3DBlendFactor.ONE"> - - Context3DBlendFactor.ONE - - <_blendFactorDest expr="Context3DBlendFactor.ZERO"> - - Context3DBlendFactor.ZERO - - <_enableBlending> - <_bothSides> - <_lightPicker> - <_animatableAttributes expr="Vector.ofArray(["va0"])"> - - Vector.ofArray(["va0"]) - - <_animationTargetRegisters expr="Vector.ofArray(["vt0"])"> - - Vector.ofArray(["vt0"]) - - <_shadedTarget expr=""ft0""> - - "ft0" - - <_defaultCulling expr="Context3DTriangleFace.BACK"> - - Context3DTriangleFace.BACK - - <_renderToTexture> - <_oldTarget> - <_oldSurface> - <_oldDepthStencil> - <_oldRect> - <_alphaPremultiplied> - <_needFragmentAnimation> - <_needUVAnimation> - <_UVTarget> - <_UVSource> - <_agalVersion expr="1"> - - 1 - - <_writeDepth expr="true"> - - true - - - - - * The material to which this pass belongs. - - - - - - - - * Indicate whether this pass should write to the depth buffer or not. Ignored when blending is enabled. - - - - - - - - * Defines whether any used textures should use mipmapping. - - - - - - - - * Indicates the number of Anisotropic filtering samples to take for mipmapping - - - - - - - - * Defines whether smoothing should be applied to any used textures. - - - - - - - - * Defines whether textures should be tiled. - - - - - - - - * Defines whether or not the material should perform backface culling. - - - - - - - - * The depth compare mode used to render the renderables using this material. - * - * @see openfl.display3D.Context3DCompareMode - - - - - - - - * Returns the animation data set adding animations to the material. - - - - - - - - * Specifies whether this pass renders to texture - - - - * Cleans up any resources used by the current object. - * @param deep Indicates whether other resources should be cleaned up, that could potentially be shared across different instances. - - - - * The amount of used vertex streams in the vertex code. Used by the animation code generation to know from which index on streams are available. - - - - * The amount of used vertex constants in the vertex code. Used by the animation code generation to know from which index on registers are available. - - - - - * The amount of used fragment constants in the fragment code. Used by the animation code generation to know from which index on registers are available. - - - - - * Indicates whether the pass requires any UV animatin code. - - - - - - - - - away3d - * Sets up the animation state. This needs to be called before render() - * - * @private - - - - - - - - - - away3d - * Renders an object to the current render target. - * - * @private - - - - away3d - * Returns the vertex AGAL code for the material. - - - - - - - away3d - * Returns the fragment AGAL code for the material. - - - - - - - - *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • - *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • - *
  • BlendMode.MULTIPLY
  • - *
  • BlendMode.ADD
  • - *
  • BlendMode.ALPHA
  • - * ]]>
    -
    - - - - - - - away3d - * Sets the render state for the pass that is independent of the rendered object. This needs to be called before - * calling renderPass. Before activating a pass, the previously used pass needs to be deactivated. - * @param stage3DProxy The Stage3DProxy object which is currently used for rendering. - * @param camera The camera from which the scene is viewed. - * @private - - - - - - - away3d - * Clears the render state for the pass. This needs to be called before activating another pass. - * @param stage3DProxy The Stage3DProxy used for rendering - * - * @private - - - - - - - - { updateMaterial : true } - away3d - - * Marks the shader program as invalid, so it will be recompiled before the next render. - * - * @param updateMaterial Indicates whether the invalidation should be performed on the entire material. Should always pass "true" unless it's called from the material itself. - - - - - - - away3d - * Compiles the shader program. - * @param polyOffsetReg An optional register that contains an amount by which to inflate the model (used in single object depth map rendering). - - - - away3d - * The light picker used by the material to provide lights to the material if it supports lighting. - * - * @see away3d.materials.lightpickers.LightPickerBase - * @see away3d.materials.lightpickers.StaticLightPicker - - - - - - - away3d - - - - - - - * Called when the light picker's configuration changes. - - - - * Implemented by subclasses if the pass uses lights to update the shader. - - - - * Indicates whether visible textures (or other pixels) used by this material have - * already been premultiplied. Toggle this if you are seeing black halos around your - * blended alpha edges. - - - - - - - - - - - { renderToTexture : false } - * Creates a new MaterialPassBase object. - * - * @param renderToTexture Indicates whether this pass is a render-to-texture pass. - - * MaterialPassBase provides an abstract base class for material shader passes. A material pass constitutes at least - * a render call per required renderable. -
    - - - - - - - - - - - - - - - - - - - <_passes public="1"> - <_passesDirty public="1"> - <_specularLightSources expr="0x01"> - - 0x01 - - <_diffuseLightSources expr="0x03"> - - 0x03 - - <_vertexCode> - <_fragmentLightCode> - <_framentPostLightCode> - <_vertexConstantData expr="new Vector<Float>()"> - - ()]]> - - <_fragmentConstantData expr="new Vector<Float>()"> - - ()]]> - - <_commonsDataIndex> - <_probeWeightsIndex> - <_uvBufferIndex> - <_secondaryUVBufferIndex> - <_normalBufferIndex> - <_tangentBufferIndex> - <_sceneMatrixIndex> - <_sceneNormalMatrixIndex> - <_lightFragmentConstantIndex> - <_cameraPositionIndex> - <_uvTransformIndex> - <_uvTransformIndex2> - <_lightProbeDiffuseIndices> - <_lightProbeSpecularIndices> - <_ambientLightR> - <_ambientLightG> - <_ambientLightB> - <_compiler> - <_methodSetup> - <_usingSpecularMethod> - <_usesNormals> - <_preserveAlpha expr="true"> - - true - - <_animateUVs> - <_animateUVs2> - <_numPointLights> - <_numDirectionalLights> - <_numLightProbes> - <_enableLightFallOff expr="true"> - - true - - <_forceSeparateMVP> - - - * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and - * compatibility for constrained mode. - - - - - - - - * Indicates whether the screen projection should be calculated by forcing a separate scene matrix and - * view-projection matrix. This is used to prevent rounding errors when using multiple passes with different - * projection code. - - - - - - - - * The amount of point lights that need to be supported. - - - - * The amount of directional lights that need to be supported. - - - - * The amount of light probes that need to be supported. - - - - - - - * @inheritDoc - - - - - - - * Resets the compilation state. - * - * @param profile The compatibility profile used by the renderer. - - - - * Updates the amount of used register indices. - - - - * Initializes the unchanging constant data for this material. - - - - - - - * Initializes the compiler for this pass. - * @param profile The compatibility profile used by the renderer. - - - - - - - * Factory method to create a concrete compiler object for this pass. - * @param profile The compatibility profile used by the renderer. - - - - * Copies the shader's properties from the compiler. - - - - * Updates the indices for various registers. - - - - * Indicates whether the output alpha value should remain unchanged compared to the material's original alpha. - - - - - - - - * Indicate whether UV coordinates need to be animated using the renderable's transformUV matrix. - - - - - - - - * Indicate whether UV coordinates need to be animated using the renderable's transformUV matrix. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The normal map to modulate the direction of the surface for each texel. The default normal method expects - * tangent-space normal maps, but others could expect object-space maps. - - - - - - - - * The method used to generate the per-pixel normals. Defaults to BasicNormalMethod. - - - - - - - - * The method that provides the ambient lighting contribution. Defaults to BasicAmbientMethod. - - - - - - - - * The method used to render shadows cast on this surface, or null if no shadows are to be rendered. Defaults to null. - - - - - - - - * The method that provides the diffuse lighting contribution. Defaults to BasicDiffuseMethod. - - - - - - - - * The method that provides the specular lighting contribution. Defaults to BasicSpecularMethod. - - - - - - - - * Initializes the pass. - - - - * @inheritDoc - - - - - - - { updateMaterial : true } - * @inheritDoc - - - - * Adds any possible passes needed by the used methods. - - - - - - - * Adds internal passes to the material. - * - * @param passes The passes to add. - - - - * Initializes the default UV transformation matrix. - - - - * Initializes the default UV transformation matrix. - - - - * Initializes commonly required constant values. - - - - * Cleans up the after compiling. - - - - * Updates method constants if they have changed. - - - - * Updates constant data render state used by the lights. This method is optional for subclasses to implement. - - - - - - - * Updates constant data render state used by the light probes. This method is optional for subclasses to implement. - - - - - - - * Called when any method's shader code is invalidated. - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - * Indicates whether the shader uses any light probes. - - - - * Indicates whether the shader uses any lights. - - - - - - - * @inheritDoc - - - - * Define which light source types to use for specular reflections. This allows choosing between regular lights - * and/or light probes for specular reflections. - * - * @see away3d.materials.LightSources - - - - - - - - * Define which light source types to use for diffuse reflections. This allows choosing between regular lights - * and/or light probes for diffuse reflections. - * - * @see away3d.materials.LightSources - - - - - - - - - - - * Creates a new CompiledPass object. - * @param material The material to which this pass belongs. - - * CompiledPass forms an abstract base class for the default compiled pass materials provided by Away3D, - * using material methods to define their appearance. - - - - <_data> - <_alphaThreshold expr="0"> - - 0 - - <_alphaMask> - - - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). - - - - - - - - - * A texture providing alpha data to be able to prevent semi-transparent pixels to write to the alpha mask. - * Usually the diffuse texture when alphaThreshold is used. - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * Creates a new DepthMapPass object. - - * DepthMapPass is a pass that writes depth values to a depth map as a 32-bit value exploded over the 4 texture channels. - * This is used to render shadow maps, depth maps, etc. - - - - - - - <_fragmentData> - <_vertexData> - <_alphaThreshold> - <_alphaMask> - - - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). - - - - - - - - * A texture providing alpha data to be able to prevent semi-transparent pixels to write to the alpha mask. - * Usually the diffuse texture when alphaThreshold is used. - - - - - - - - away3d - * @inheritDoc - - - - - - - away3d - * @inheritDoc - - - - - - - - - - away3d - * @inheritDoc - - - - - - - - away3d - * @inheritDoc - - - - * Creates a new DistanceMapPass object. - - * DistanceMapPass is a pass that writes distance values to a depth map as a 32-bit value exploded over the 4 texture channels. - * This is used to render omnidirectional shadow maps. - - - - - <_includeCasters expr="true"> - - true - - <_tangentSpace> - <_lightVertexConstantIndex> - <_inverseSceneMatrix expr="new Vector<Float>()"> - - ()]]> - - <_directionalLightsOffset> - <_pointLightsOffset> - <_lightProbesOffset> - <_maxLights expr="3"> - - 3 - - - - * Indicates the offset in the light picker's directional light vector for which to start including lights. - * This needs to be set before the light picker is assigned. - - - - - - - - - * Indicates the offset in the light picker's point light vector for which to start including lights. - * This needs to be set before the light picker is assigned. - - - - - - - - - * Indicates the offset in the light picker's light probes vector for which to start including lights. - * This needs to be set before the light picker is assigned. - - - - - - - - - - - - * @inheritDoc - - - - * Indicates whether or not shadow casting lights need to be included. - - - - - - - - - * @inheritDoc - - - - - - - * Calculates the amount of directional lights this material will support. - * @param numDirectionalLights The maximum amount of directional lights to support. - * @return The amount of directional lights this material will support, bounded by the amount necessary. - - - - - - - * Calculates the amount of point lights this material will support. - * @param numDirectionalLights The maximum amount of point lights to support. - * @return The amount of point lights this material will support, bounded by the amount necessary. - - - - - - - * Calculates the amount of light probes this material will support. - * @param numDirectionalLights The maximum amount of light probes to support. - * @return The amount of light probes this material will support, bounded by the amount necessary. - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * Indicates whether any light probes are used to contribute to the specular shading. - - - - * Indicates whether any light probes are used to contribute to the diffuse shading. - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Creates a new LightingPass objects. - * - * @param material The material to which this pass belongs. - - * LightingPass is a shader pass that uses shader methods to compile a complete program. It only includes the lighting - * methods. It's used by multipass materials to accumulate lighting passes. - * - * @see away3d.materials.MultiPassMaterialBase - - - - - - - ([1, 1, 1, 1])]]> - - - - ([0, 0, 1, 1])]]> - - <_constants expr="new Vector<Float>(4, true)"> - - (4, true)]]> - - <_calcMatrix> - <_thickness> - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - * todo: keep maps in dictionary per renderable - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Creates a new OrthoSegmentPass object. - * - * @param thickness the thickness of the segments to be drawn. - - * OrthoSegmentPass is a material pass that draws wireframe segments. - - - - - - - - <_outlineColor> - <_colorData> - <_offsetData> - <_showInnerLines> - <_outlineMeshes> - - - - <_dedicatedMeshes> - - - - - - * Clears the dedicated mesh associated with a Mesh object to free up memory. - - - - - - - * Disposes a single dedicated sub-mesh. - - - - * @inheritDoc - - - - * Indicates whether or not strokes should be potentially drawn over the existing model. - * Set this to true to draw outlines for geometry overlapping in the view, useful to achieve a cel-shaded drawing outline. - * Setting this to false will only cause the outline to appear around the 2D projection of the geometry. - - - - - - - - * The colour of the outline. - - - - - - - - * The size of the outline. - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - * Creates a new mesh in which vertices with the same position are collapsed into a single vertex. This - * will prevent gaps appearing where vertex normals are different for a seemingly single vertex. - * - * @param source The ISubGeometry object for which to generate a dedicated mesh. - - - - - - - - - - - - - - - { dedicatedMeshes : false, showInnerLines : true, outlineSize : 20, outlineColor : 0x000000 } - * Creates a new OutlinePass object. - * @param outlineColor The colour of the outline stroke - * @param outlineSize The size of the outline stroke - * @param showInnerLines Indicates whether or not strokes should be potentially drawn over the existing model. - * @param dedicatedWaterProofMesh Used to stitch holes appearing due to mismatching normals for overlapping vertices. Warning: this will create a new mesh that is incompatible with animations! - - * OutlinePass is a pass that offsets a mesh and draws it in a single colour. This is a pass provided by OutlineMethod. - * - * @see away3d.materials.methods.OutlineMethod - - - - - - - Vector.ofArray([1.0, 1.0, 1.0, 1.0]) - - - - Vector.ofArray([0.0, 0.0, -1.0, 0.0]) - - <_constants expr="new Vector<Float>(4, true)"> - - (4, true)]]> - - <_calcMatrix> - <_thickness> - - - away3d - * @inheritDoc - - - - - - - away3d - * @inheritDoc - - - - - - - - - - away3d - * @inheritDoc - * todo: keep maps in dictionary per renderable - - - - - - - - away3d - * @inheritDoc - - - - - - - away3d - * @inheritDoc - - - - - - - * Creates a new SegmentPass object. - * - * @param thickness the thickness of the segments to be drawn. - - * SegmentPass is a material pass that draws wireframe segments. - - - - - <_tangentSpace> - <_lightVertexConstantIndex> - <_inverseSceneMatrix expr="new Vector<Float>()"> - - ()]]> - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Creates a new ShadowCasterPass objects. - * - * @param material The material to which this pass belongs. - - * ShadowCasterPass is a shader pass that uses shader methods to compile a complete program. It only draws the lighting - * contribution for a single shadow-casting light. - * - * @see away3d.materials.methods.ShadingMethodBase - - - - - <_textures> - - - - <_projections> - - - - <_textureSize> - <_polyOffset> - <_enc> - <_projectionTexturesInvalid expr="true"> - - true - - - - * @inheritDoc - - - - * Updates the projection textures used to contain the depth renders. - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - away3d - * Gets the depth maps rendered for this object from all lights. - * @param renderable The renderable for which to retrieve the depth maps. - * @param stage3DProxy The Stage3DProxy object currently used for rendering. - * @return A list of depth map textures for all supported lights. - - - - - - - away3d - * Retrieves the depth map projection maps for all lights. - * @param renderable The renderable for which to retrieve the projection maps. - * @return A list of projection maps for all supported lights. - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - { polyOffset : 15, textureSize : 512 } - * Creates a new SingleObjectDepthPass object. - * @param textureSize The size of the depth map texture to render to. - * @param polyOffset The amount by which the rendered object will be inflated, to prevent depth map rounding errors. - * - * todo: provide custom vertex code to assembler - - * The SingleObjectDepthPass provides a material pass that renders a single object to a depth map from the point - * of view from a light. - - - - - - <_cubeTexture> - <_vertexData> - - - * The cube texture to use as the skybox. - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * Creates a new SkyBoxPass object. - - * SkyBoxPass provides a material pass exclusively used to render sky boxes from a cube texture. - - - - - <_includeCasters expr="true"> - - true - - <_ignoreLights> - - - - - - * @inheritDoc - - - - * Indicates whether lights that cast shadows should be included in the pass. - - - - - - - - - * The ColorTransform object to transform the colour of the material with. Defaults to null. - - - - - - - - - * The ColorTransformMethod object to transform the colour of the material with. Defaults to null. - - - - - - - - - - - - * Appends an "effect" shading method to the shader. Effect methods are those that do not influence the lighting - * but modulate the shaded colour, used for fog, outlines, etc. The method will be applied to the result of the - * methods added prior. - - - - * The number of "effect" methods added to the material. - - - - - - - - * Queries whether a given effect method was added to the material. - * - * @param method The method to be queried. - * @return true if the method was added to the material, false otherwise. - - - - - - - * Returns the method added at the given index. - * @param index The index of the method to retrieve. - * @return The method at the given index. - - - - - - - - * Adds an effect method at the specified index amongst the methods already added to the material. Effect - * methods are those that do not influence the lighting but modulate the shaded colour, used for fog, outlines, - * etc. The method will be applied to the result of the methods with a lower index. - - - - - - - * Removes an effect method from the material. - * @param method The method to be removed. - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * Indicates whether any light probes are used to contribute to the specular shading. - - - - * Indicates whether any light probes are used to contribute to the diffuse shading. - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - away3d - * Indicates whether lights should be ignored in this pass. This is used when only effect methods are rendered in - * a multipass material. - - - - - - - - - - - - * Creates a new SuperShaderPass objects. - * - * @param material The material to which this material belongs. - - * SuperShaderPass is a shader pass that uses shader methods to compile a complete program. It includes all methods - * associated with a material. - * - * @see away3d.materials.methods.ShadingMethodBase - - - - <_defaultTextureBitmapData static="1"> - <_defaultMaterial static="1"> - <_defaultTexture static="1"> - - - - - - { renderable : null } - - - - - - - { renderable : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The source, url, to the video file - - - - * Indicates whether the player should loop when video finishes - - - - * Master volume/gain - - - - * Panning - - - - * Mutes/unmutes the video's audio. - - - - * Provides access to the SoundTransform of the video stream - - - - * Get/Set access to the with of the video object - - - - * Get/Set access to the height of the video object - - - - * Provides access to the Video Object - - - - * Indicates whether the video is playing - - - - * Indicates whether the video is paused - - - - - * Start playing (or resume if paused) the video. - - - - * Temporarily pause playback. Resume using play(). - - - - - - - * Seeks to a given time in the video, specified in seconds, with a precision of three decimal places (milliseconds). - - - - * Stop playback and reset playhead. - - - - * Called if the player is no longer needed - - - - <_matrix expr="new Matrix()" line="15" static="1"> - - new Matrix() - - <_rect expr="new Rectangle()" line="16" static="1"> - - new Rectangle() - - - - - - - - - - - { side : -1, alpha : false, mipmap : null } - * Uploads a BitmapData with mip maps to a target Texture object. - * @param source The source BitmapData to upload. - * @param target The target Texture to upload to. - * @param mipmap An optional mip map holder to avoids creating new instances for fe animated materials. - * @param alpha Indicate whether or not the uploaded bitmapData is transparent. - - * MipmapGenerator is a helper class that uploads BitmapData to a Texture including mipmap levels. - - - - - - - - - - <_left> - <_right> - <_bottom> - <_top> - <_front> - <_back> - - - * Defines the material applied to the left side of the cube. - - - - - - - - * Defines the material applied to the right side of the cube. - - - - - - - - * Defines the material applied to the bottom side of the cube. - - - - - - - - * Defines the material applied to the top side of the cube. - - - - - - - - * Defines the material applied to the front side of the cube. - - - - - - - - * Defines the material applied to the back side of the cube. - - - - - - - - - - - - - - - { top : null, right : null, left : null, back : null, front : null } - MultipleMaterials object. - * Class can hold up to 6 materials. Class is designed to work as typed object for materials setters in a multitude of classes such as Cube, LatheExtrude (with thickness) etc... - * - * @param front:MaterialBase [optional] The front material. - * @param back:MaterialBase [optional] The back material. - * @param left:MaterialBase [optional] The left material. - * @param right:MaterialBase [optional] The right material. - * @param top:MaterialBase [optional] The top material. - * @param down:MaterialBase [optional] The down material.]]> - - - - - - - - - - - - - - - - - <_src> - <_video> - <_ns> - <_nc> - <_nsClient> - <_soundTransform> - <_loop> - <_playing> - <_paused> - <_lastVolume> - <_container> - - - - - - - - - - - - - - - - - - { oData : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { lineThickness : 2, lineColor : 0xffffff } - * Create a wireframe map with a texture fill. - * @param mesh The Mesh object for which to create the wireframe texture. - * @param bitmapData The BitmapData to use as the fill texture. - * @param lineColor The wireframe's line colour. - * @param lineThickness The wireframe's line thickness. - - - - - - - - - - - - - { height : 512, width : 512, fillAlpha : 0, fillColor : 0, lineThickness : 2, lineColor : 0xffffff } - * Create a wireframe map with a solid colour fill. - * @param mesh The Mesh object for which to create the wireframe texture. - * @param lineColor The wireframe's line colour. - * @param lineThickness The wireframe's line thickness. - * @param fillColor The colour of the wireframe fill. - * @param fillAlpha The alpha of the wireframe fill. - * @param width The texture's width. - * @param height The texture's height. - * @return A BitmapData containing the texture underneath the wireframe. - - - - - - - - - - * Draws the actual lines. - - * WireframeMapGenerator is a utility class to generate a wireframe texture for uniquely mapped meshes. - - - - - - - - - - - - - - - - - - - CubicPathSegment instances in the path.]]> - - - - IPathSegment instances which make up this path.]]> - - - - - - - CubicPathSegment at the specified index - * @param index The index of the segment - * @return A CubicPathSegment instance]]> - - - - - - - CubicPathSegment to the end of the path - * @param segment]]> - - - - - - - - { join : false } - CubicPathSegment to be removed - * @param join Determines if the segments on either side of the removed segment should be adjusted so there is no gap.]]> - - - - * Disposes the path and all the segments - - - - - - - * Discretizes the segment into a set of sample points. - * - * @param numSegments The amount of segments to split the sampling in. The amount of points returned is numSegments + 1 - - - - - - - - { target : null } - * Gets a point on the curve - * @param t The phase for which to get the point. A number between 0 and 1. - * @param target An optional parameter to store the calculation, to avoid creating a new Vector3D object - * @return The point on the curve for the given phase - - - - - - - - <_pointsPerSegment> - <_segments> - - - - - - - - - - - - * The number of segments in the Path - - - - - - - - - - - * returns a given PathSegment from the path (PathSegment holds 3 Vector3D's) - * - * @param indice uint. the indice of a given PathSegment - * @return given PathSegment from the path - - - - - - - - - - - - { join : false } - * removes a segment in the path according to id. - * - * @param index int. The index in path of the to be removed curvesegment - * @param join Boolean. If true previous and next segments coordinates are reconnected - - - - - - - - - * Stitches two segments together based on a segment between them. This is an abstract method used by the template method removeSegment and must be overridden by concrete subclasses! - * @param start The section of which the end points must be connected with "end" - * @param middle The section that was removed and forms the position hint - * @param end The section of which the start points must be connected with "start" - - - - - - - - - { target : null } - - - - - - - - - - - - - - - - - - { data : null } - - - - - - - - - - - - - - - - - - - - - - { data : null } - pointData]]> - - CubicPathSegment which being quadratic, has one control point. - * @see away3d.animators.CubicPathAnimator - * @see away3d.paths.CubicPathSegment]]> - - - - - * Destroys the segment - - - - - - - - { target : null } - * Calculates the position of the curve on this segment. - * - * @param phase The ratio between the start and end point. - * @param target An optional target to store the calculation, to prevent creating a new Vector3D object. - * @return - - - - - - - * The first anchor point. - - - - * The first control point. - - - - * The second control point. - - - - * The last anchor point. - - - - - - - - - - { target : null } - - - - - - - - - - * - * @param start The first anchor point. - * @param control1 The first control point. - * @param control2 The second control point. - * @param end The last anchor point. - - * Defines a single segment of a cubic path - * @see away3d.paths.CubicPath - - - - - - - - * returns true if the smoothPath handler is being used. - - - - * returns true if the averagePath handler is being used. - - <_averaged> - <_smoothed> - - - - - - - - - - - - - - - - * handler will smooth the path using anchors as control vector of the PathSegments - * note that this is not dynamic, the PathSegments values are overwrited - - - - * handler will average the path using averages of the PathSegments - * note that this is not dynamic, the path values are overwrited - - - - - - - - { closed : false } - - - - - - - { data : null } - Path object. - * - * @param aVectors [optional] An array of a series of Vector3D's organized in the following fashion. [a,b,c,a,b,c etc...] a = pEnd, b=pControl (control point), c = v2]]> - - * Holds information about a single Path definition. - * DEBUG OPTION OUT AT THIS TIME OF DEV - - - - - - * Defines the first vector of the PathSegment - - - - * Defines the control vector of the PathSegment - - - - * Defines the control vector of the PathSegment - - - - - * nulls the 3 vectors - - - - - - - - { target : null } - - - - - - - - * Creates a curved line segment definition required for the Path class. - - - - - <_geomDirty expr="true"> - - true - - <_uvDirty expr="true"> - - true - - <_subGeometry> - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - { scaleV : 1, scaleU : 1 } - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - * Builds the primitive's geometry when invalid. This method should not be called directly. The calling should - * be triggered by the invalidateGeometry method (and in turn by updateGeometry). - - - - - - - * Builds the primitive's uv coordinates when invalid. This method should not be called directly. The calling - * should be triggered by the invalidateUVs method (and in turn by updateUVs). - - - - * Invalidates the primitive's geometry, causing it to be updated when requested. - - - - * Invalidates the primitive's uv coordinates, causing them to be updated when requested. - - - - * Updates the geometry when invalid. - - - - * Updates the uv coordinates when invalid. - - - - - * Creates a new PrimitiveBase object. - * @param material The material with which to render the object - - * PrimitiveBase is an abstract base class for mesh primitives, which are prebuilt simple meshes. - - - - - - - - - <_radius> - <_height> - <_segmentsW> - <_segmentsH> - <_yUp> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The radius of the capsule. - - - - - - - - * The height of the capsule. - - - - - - - - * Defines the number of horizontal segments that make up the capsule. Defaults to 16. - - - - - - - - * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven. - - - - - - - - * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false). - - - - - - - - - - - - - - - { yUp : true, segmentsH : 15, segmentsW : 16, height : 100, radius : 50 } - * Creates a new Capsule object. - * @param radius The radius of the capsule. - * @param height The height of the capsule. - * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16. - * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value. - * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false). - - * A Capsule primitive mesh. - - - - - - - - - - - - - <_topRadius> - <_bottomRadius> - <_height> - <_segmentsW> - <_segmentsH> - <_topClosed> - <_bottomClosed> - <_surfaceClosed> - <_yUp> - <_rawData> - <_rawIndices> - <_nextVertexIndex> - <_currentIndex> - <_currentTriangleIndex> - <_numVertices> - <_stride> - <_vertexOffset> - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The radius of the top end of the cylinder. - - - - - - - - * The radius of the bottom end of the cylinder. - - - - - - - - * The radius of the top end of the cylinder. - - - - - - - - * Defines the number of horizontal segments that make up the cylinder. Defaults to 16. - - - - - - - - * Defines the number of vertical segments that make up the cylinder. Defaults to 1. - - - - - - - - * Defines whether the top end of the cylinder is closed (true) or open. - - - - - - - - * Defines whether the bottom end of the cylinder is closed (true) or open. - - - - - - - - * Defines whether the cylinder poles should lay on the Y-axis (true) or on the Z-axis (false). - - - - - - - - - - - - - - - - - - - { yUp : true, surfaceClosed : true, bottomClosed : true, topClosed : true, segmentsH : 1, segmentsW : 16, height : 100, bottomRadius : 50, topRadius : 50 } - * Creates a new Cylinder object. - * @param topRadius The radius of the top end of the cylinder. - * @param bottomRadius The radius of the bottom end of the cylinder - * @param height The radius of the bottom end of the cylinder - * @param segmentsW Defines the number of horizontal segments that make up the cylinder. Defaults to 16. - * @param segmentsH Defines the number of vertical segments that make up the cylinder. Defaults to 1. - * @param topClosed Defines whether the top end of the cylinder is closed (true) or open. - * @param bottomClosed Defines whether the bottom end of the cylinder is closed (true) or open. - * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false). - - * A Cylinder primitive mesh. - - - - - - - - * The radius of the bottom end of the cone. - - - - - - - - - - - - - - - - { yUp : true, closed : true, segmentsH : 1, segmentsW : 16, height : 100, radius : 50 } - * Creates a new Cone object. - * @param radius The radius of the bottom end of the cone - * @param height The height of the cone - * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16. - * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1. - * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false). - - * A UV Cone primitive mesh. - - - - - - - - - - - - <_width> - <_height> - <_depth> - <_tile6> - <_segmentsW> - <_segmentsH> - <_segmentsD> - - - * The size of the cube along its X-axis. - - - - - - - - * The size of the cube along its Y-axis. - - - - - - - - * The size of the cube along its Z-axis. - - - - - - - - * The type of uv mapping to use. When false, the entire image is mapped on each face. - * When true, a texture will be subdivided in a 3x2 grid, each used for a single face. - * Reading the tiles from left to right, top to bottom they represent the faces of the - * cube in the following order: bottom, top, back, left, front, right. This creates - * several shared edges (between the top, front, left and right faces) which simplifies - * texture painting. - - - - - - - - * The number of segments that make up the cube along the X-axis. Defaults to 1. - - - - - - - - * The number of segments that make up the cube along the Y-axis. Defaults to 1. - - - - - - - - * The number of segments that make up the cube along the Z-axis. Defaults to 1. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - - { tile6 : true, segmentsD : 1, segmentsH : 1, segmentsW : 1, depth : 100, height : 100, width : 100 } - * Creates a new Cube object. - * @param width The size of the cube along its X-axis. - * @param height The size of the cube along its Y-axis. - * @param depth The size of the cube along its Z-axis. - * @param segmentsW The number of segments that make up the cube along the X-axis. - * @param segmentsH The number of segments that make up the cube along the Y-axis. - * @param segmentsD The number of segments that make up the cube along the Z-axis. - * @param tile6 The type of uv mapping to use. When true, a texture will be subdivided in a 2x3 grid, each used for a single face. When false, the entire image is mapped on each face. - - * A Cube primitive mesh. - - - - - - - - - - - - <_segmentsBase public="1"> - <_thickness public="1"> - <_start public="1"> - <_end public="1"> - <_startR public="1"> - <_startG public="1"> - <_startB public="1"> - <_endR public="1"> - <_endG public="1"> - <_endB public="1"> - <_index public="1" expr="-1"> - - -1 - - <_subSetIndex public="1" expr="-1"> - - -1 - - <_startColor public="1"> - <_endColor public="1"> - - - - - - - - - - - { thickness : 1, colorEnd : 0x333333, colorStart : 0x333333 } - - - - * Defines the starting vertex. - - - - - - - - * Defines the ending vertex. - - - - - - - - * Defines the ending vertex. - - - - - - - - * Defines the startColor - - - - - - - - * Defines the endColor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { thickness : 1, colorEnd : 0x333333, colorStart : 0x333333 } - - - - - - - "line" - - - - - - - - - - - { thickness : 1, color1 : 0x333333, color0 : 0x333333 } - * Create a line segment - * @param v0 Start position of the line segment - * @param v1 Ending position of the line segment - * @param color0 Starting color of the line segment - * @param color1 Ending colour of the line segment - * @param thickness Thickness of the line - - * A Line Segment primitive. - - - - - - - - - - - - - - <_controlNet> - <_uOrder> - <_vOrder> - <_numVContolPoints> - <_numUContolPoints> - <_uSegments> - <_vSegments> - <_uKnotSequence> - <_vKnotSequence> - <_mbasis expr="new Vector<Float>()"> - - ()]]> - - <_nbasis expr="new Vector<Float>()"> - - ()]]> - - <_nplusc> - <_mplusc> - <_uRange> - <_vRange> - <_autoGenKnotSeq expr="true"> - - true - - <_invert> - <_tmpPM expr="new Vector3D()"> - - new Vector3D() - - <_tmpP1 expr="new Vector3D()"> - - new Vector3D() - - <_tmpP2 expr="new Vector3D()"> - - new Vector3D() - - <_tmpN1 expr="new Vector3D()"> - - new Vector3D() - - <_tmpN2 expr="new Vector3D()"> - - new Vector3D() - - <_rebuildUVs> - - - * Defines the control point net to describe the NURBS surface - - - - - - - - * Defines the number of control points along the U splines that influence any given point on the curve - - - - - - - - * Defines the number of control points along the V splines that influence any given point on the curve - - - - - - - - * Defines the number of control points along the U splines - - - - - - - - * Defines the number of control points along the V splines - - - - - - - - * Defines the knot sequence in the U direction that determines where and how the control points - * affect the NURBS curve. - - - - - - - - * Defines the knot sequence in the V direction that determines where and how the control points - * affect the NURBS curve. - - - - - - - - * Defines the number segments (triangle pair) the final curve will be divided into in the U direction - - - - - - - - * Defines the number segments (triangle pair) the final curve will be divided into in the V direction - - - - - - - - - - - - - - { target : null } - away3d - - @private - - - - - - - - - - - - { vTol : 0.01, uTol : 0.01, scale : 1, vecOffset : 0 } - * Return a 3d point representing the surface point at the required U(0-1) and V(0-1) across the - * NURBS curved surface. - * - * @param uS U position on the surface - * @param vS V position on the surface - * @param vecOffset Offset the point on the surface by this vector - * @param scale Scale of the surface point - should match the Mesh scaling - * @param uTol U tolerance for adjacent surface sample to calculate normal - * @param vTol V tolerance for adjacent surface sample to calculate normal - * @return The offset surface point being returned - * - - - - away3d - @private - - - - - - - - away3d - @private - - - - - - - - - - away3d - @private - - - - - - - * Rebuild the mesh as there is significant change to the structural parameters - * - - - - - - - * Rebuild the UV coordinates as there is significant change to the structural parameters - * - - - - * Refresh the mesh without reconstructing all the supporting data. This should be used only - * when the control point positions change. - * - - - - - - - - - - - - - - - { vKnot : null, uKnot : null, vSegments : 10, uSegments : 10, vOrder : 4, uOrder : 4 } - * NURBS primitive generates a segmented mesh that fits the curved surface defined by the specified - * control points based on weighting, order influence and knot sequence - * - * @param cNet Array of control points (WeightedVertex array) - * @param uCtrlPnts Number of control points in the U direction - * @param vCtrlPnts Number of control points in the V direction - * @param init Init object for the mesh - * - - * A NURBS primitive geometry. - - - - - - - - - - <_segmentsW> - <_segmentsH> - <_yUp> - <_width> - <_height> - <_doubleSided> - - - * The number of segments that make up the plane along the X-axis. Defaults to 1. - - - - - - - - * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or - * false, respectively. Defaults to 1. - - - - - - - - * Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). Defaults to true. - - - - - - - - * Defines whether the plane will be visible from both sides, with correct vertex normals (as opposed to bothSides on Material). Defaults to false. - - - - - - - - * The width of the plane. - - - - - - - - * The height of the plane. - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - - - - - - - - - { doubleSided : false, yUp : true, segmentsH : 1, segmentsW : 1, height : 100, width : 100 } - * Creates a new Plane object. - * @param width The width of the plane. - * @param height The height of the plane. - * @param segmentsW The number of segments that make up the plane along the X-axis. - * @param segmentsH The number of segments that make up the plane along the Y or Z-axis. - * @param yUp Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). - * @param doubleSided Defines whether the plane will be visible from both sides, with correct vertex normals. - - * A Plane primitive mesh. - - - - - - - - - - * The radius of the regular polygon. - - - - - - - - * The number of sides of the regular polygon. - - - - - - - - * The number of subdivisions from the edge to the center of the regular polygon. - - - - - - - - - - - - - { yUp : true, sides : 16, radius : 100 } - * Creates a new RegularPolygon disc object. - * @param radius The radius of the regular polygon - * @param sides Defines the number of sides of the regular polygon. - * @param yUp Defines whether the regular polygon should lay on the Y-axis (true) or on the Z-axis (false). - - * A UV RegularPolygon primitive mesh. - - - - - - - - - - - - - - - - - - - - - - <_geometry> - <_material> - <_uvTransform expr="new Matrix()"> - - new Matrix() - - <_uvTransform2 expr="new Matrix()"> - - new Matrix() - - <_animator> - - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - - - - - * @inheritDoc - - - - * The amount of triangles that comprise the SkyBox geometry. - - - - * The entity that that initially provided the IRenderable to the render pipeline. - - - - * The material with which to render the object. - - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - - - * @inheritDoc - - - - - - - * Builds the geometry that forms the SkyBox - - - - - - - - - - - - - - - - - - - - - - - - * Create a new SkyBox object. - * @param cubeMap The CubeMap to use for the sky box's texture. - - * A SkyBox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as - * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring - * the sky box is always as large as possible without being clipped. - - - - - - - - - <_radius> - <_segmentsW> - <_segmentsH> - <_yUp> - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The radius of the sphere. - - - - - - - - * Defines the number of horizontal segments that make up the sphere. Defaults to 16. - - - - - - - - * Defines the number of vertical segments that make up the sphere. Defaults to 12. - - - - - - - - * Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false). - - - - - - - - - - - - - - { yUp : true, segmentsH : 12, segmentsW : 16, radius : 50 } - * Creates a new Sphere object. - * @param radius The radius of the sphere. - * @param segmentsW Defines the number of horizontal segments that make up the sphere. - * @param segmentsH Defines the number of vertical segments that make up the sphere. - * @param yUp Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false). - - * A UV Sphere primitive mesh. - - - - - - - - - - <_radius> - <_tubeRadius> - <_segmentsR> - <_segmentsT> - <_yUp> - <_rawVertexData> - <_rawIndices> - <_nextVertexIndex> - <_currentIndex> - <_currentTriangleIndex> - <_numVertices> - <_vertexStride> - <_vertexOffset> - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - * @inheritDoc - - - - * The radius of the torus. - - - - - - - - * The radius of the inner tube of the torus. - - - - - - - - * Defines the number of horizontal segments that make up the torus. Defaults to 16. - - - - - - - - * Defines the number of vertical segments that make up the torus. Defaults to 8. - - - - - - - - * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false). - - - - - - - - - - - - - - - { yUp : true, segmentsT : 8, segmentsR : 16, tubeRadius : 50, radius : 50 } - Torus object. - * @param radius The radius of the torus. - * @param tuebRadius The radius of the inner tube of the torus. - * @param segmentsR Defines the number of horizontal segments that make up the torus. - * @param segmentsT Defines the number of vertical segments that make up the torus. - * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).]]> - - * A UV Cylinder primitive mesh. - - - - - - - <_geomDirty expr="true"> - - true - - <_color> - <_thickness> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { thickness : 1, color : 0xffffff } - - - - - - - - <_width> - <_height> - <_depth> - - - * The size of the cube along its X-axis. - - - - - - - - * The size of the cube along its Y-axis. - - - - - - - - * The size of the cube along its Z-axis. - - - - - - - - * @inheritDoc - - - - - - - - - - - { thickness : 1, color : 0xFFFFFF, depth : 100, height : 100, width : 100 } - * Creates a new WireframeCube object. - * @param width The size of the cube along its X-axis. - * @param height The size of the cube along its Y-axis. - * @param depth The size of the cube along its Z-axis. - * @param color The colour of the wireframe lines - * @param thickness The thickness of the wireframe lines - - * A WirefameCube primitive mesh. - - - - - - - 2 * Math.PI - - - - - <_topRadius> - <_bottomRadius> - <_height> - <_segmentsW> - <_segmentsH> - - - - * Top radius of the cylinder - - - - - - - - * Bottom radius of the cylinder - - - - - - - - * The height of the cylinder - - - - - - - - - - - - - - - - - { thickness : 1, color : 0xFFFFFF, segmentsH : 1, segmentsW : 16, height : 100, bottomRadius : 50, topRadius : 50 } - * Creates a new WireframeCylinder instance - * @param topRadius Top radius of the cylinder - * @param bottomRadius Bottom radius of the cylinder - * @param height The height of the cylinder - * @param segmentsW Number of radial segments - * @param segmentsH Number of vertical segments - * @param color The color of the wireframe lines - * @param thickness The thickness of the wireframe lines - - * Generates a wireframd cylinder primitive. - - - - - - "yz" - - - - "xy" - - - - "xz" - - - - - - - <_width> - <_height> - <_segmentsW> - <_segmentsH> - <_orientation> - - - * The orientaion in which the plane lies. - - - - - - - - * The size of the cube along its X-axis. - - - - - - - - * The size of the cube along its Y-axis. - - - - - - - - * The number of segments that make up the plane along the X-axis. - - - - - - - - * The number of segments that make up the plane along the Y-axis. - - - - - - - - * @inheritDoc - - - - - - - - - - - - - { orientation : "yz", thickness : 1, color : 0xFFFFFF, segmentsH : 10, segmentsW : 10 } - * Creates a new WireframePlane object. - * @param width The size of the cube along its X-axis. - * @param height The size of the cube along its Y-axis. - * @param segmentsW The number of segments that make up the cube along the X-axis. - * @param segmentsH The number of segments that make up the cube along the Y-axis. - * @param color The colour of the wireframe lines - * @param thickness The thickness of the wireframe lines - * @param orientation The orientaion in which the plane lies. - - * A WireframePlane primitive mesh. - - - - - - "yz" - - - - "xy" - - - - "xz" - - - - - <_radius> - <_sides> - <_orientation> - - - * The orientaion in which the polygon lies. - - - - - - - - * The radius of the regular polygon. - - - - - - - - * The number of sides to the regular polygon. - - - - - - - - * @inheritDoc - - - - - - - - - - - { orientation : "yz", thickness : 1, color : 0xFFFFFF } - * Creates a new WireframeRegularPolygon object. - * @param radius The radius of the polygon. - * @param sides The number of sides on the polygon. - * @param color The colour of the wireframe lines - * @param thickness The thickness of the wireframe lines - * @param orientation The orientaion in which the plane lies. - - * A WireframeRegularPolygon primitive mesh. - - - - <_segmentsW> - <_segmentsH> - <_radius> - - - * @inheritDoc - - - - - - - - - - - { thickness : 1, color : 0xFFFFFF, segmentsH : 12, segmentsW : 16, radius : 50 } - * Creates a new WireframeSphere object. - * @param radius The radius of the sphere. - * @param segmentsW Defines the number of horizontal segments that make up the sphere. - * @param segmentsH Defines the number of vertical segments that make up the sphere. - * @param color The colour of the wireframe lines - * @param thickness The thickness of the wireframe lines - - * A WireframeSphere primitive mesh - - - - - - - "yz" - - - - "xy" - - - - "xz" - - - - - <_width> - <_height> - <_orientation> - - - * The orientation in which the plane lies - - - - - - - - * The size of the tetrahedron bottom. - - - - - - - - * The size of the tetrahedron height. - - - - - - - - * @inheritDoc - - - - - - - - - - - { orientation : "yz", thickness : 1, color : 0xffffff } - * Creates a new WireframeTetrahedron object. - * @param width The size of the tetrahedron buttom size. - * @param height The size of the tetranhedron height. - * @param color The color of the wireframe lines. - * @param thickness The thickness of the wireframe lines. - - * A WireframeTetrahedron primitive mesh - - - - - <_w> - - - - - - - - - - - - - - { w : 1, z : 0, y : 0, x : 0 } - Vertex object. - * - * @param x [optional] The local x position of the vertex. Defaults to 0. - * @param y [optional] The local y position of the vertex. Defaults to 0. - * @param z [optional] The local z position of the vertex. Defaults to 0. - * @param w [optional] The local w weight of the vertex. Defaults to 1.]]> - - * A nurbvertex that simply extends vertex with a w weight property. - * Properties x, y, z and w represent a 3d point in space with nurb weighting. - - - - - - - - <_leftCam> - <_rightCam> - <_offset> - <_focus> - <_focusPoint> - <_focusInfinity> - <_leftCamDirty expr="true"> - - true - - <_rightCamDirty expr="true"> - - true - - <_focusPointDirty expr="true"> - - true - - - - - - - - - - - - - - - - - - - - - - - - - - { lens : null } - - - - - - <_leftTexture> - <_rightTexture> - <_rttManager> - <_program3D> - <_method> - <_program3DInvalid expr="true"> - - true - - <_leftTextureInvalid expr="true"> - - true - - <_rightTextureInvalid expr="true"> - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { renderMethod : null } - - - - - - - - <_stereoCam> - <_stereoRenderer> - <_stereoEnabled> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stereoRenderMethod : null, renderer : null, camera : null, scene : null } - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - - - - <_textureSizeInvalid expr="true"> - - true - - - - - - - - - - - - - - - - <_filterData> - - - - - - - - - - - - - - <_shaderData> - - - - - - - - - - - - - - - <_sbsData> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Adds kerning information relative to a specific other character ID. - - - - - - - Retrieve kerning information relative to the given character ID. - - - - The unicode ID of the char. - - - - - The number of points to move the char in x direction on character arrangement. - - - - - The number of points to move the char in y direction on character arrangement. - - - - - The number of points the cursor has to be moved to the right for the next char. - - - - - The width of the character in points. - - - - - The height of the character in points. - - - - - - - - - - - - - - - - - - - Creates a char with a texture and its properties. - - You don't have to use this class directly in most cases. - * The TextField class contains methods that handle bitmap fonts for you.

    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

    %4mD32fPP3pS7R&@zogX&amXx1&jV%jq-CB zF0{+yZzRe`#l{}{nfZu|E2M@(O)_%i+ciLqxug6wN*%I?O(P<*Zi>X&xyp+iZhdcs znSC~4aAo58d`_wSdchA%;7t`YuGXjig&aEcMe8I;jkBV%r=+QDU^>13A z%@t_-JaY97)DvJBg)yh_hIr{BXMDjLOf|E1XAb8@R8cxw_CIW`f6!nWlsg|FKRtc| z5`m299p>Y<78P&{koaM{B!MP8j0>lyE#gVW9CPm-V_i9hh!>GCIPZ7j=yzF&>=5@4 z2*e(Uz^*rt-~fM%0l{yM{j6&!oP6qb~5E>aB~gIo3#kK94{ z+arNK70JgZmI>J8&^V87gLtAm#Em0C)i?APXfH8GC2WJ=M8;K5Q{=o`f6L|19X*P8tt^ec_0gIKD_83Y1ugPk?`6TW6>G(b4JIZQ zMsMvn4C6V>e@hY9pOW0oeHhOv{4?^po4hz1Xn915{c~+yoox$fQ|$BF+FEbD+}vE| z_aj%0Iih5wI3k{lGwTpvsF|xy_q$0#v8FzqI?1Y@IY^G8QZCzB?L4b5Z?U2AgD99i z`|KbbD*(tsZa-dht6!*CLWpN*|Nfco)ip|sJzoCzTTRJgu9BoXLXs{NL3`Lp(!ETI zzOWEbOb(=b0pLTDKY^YXViIwH734V&biv0|RV&u5-vDSi9>)iv8B+Y&3nFnQu=D_& z7<9x=?(^cKw@ke_IeDYj5bviGDuc%Z(7+uRF?CT5*cs4Tu4@Py=y#6*sro9@#+|t(^^=~+)p{jX8fyM=DD?``y z;YTjr+BAOFIptcRRX%82=U6+#n%vF>k?2$HA)p}r3INntj{wUYD#iS`(XdWLCn6}rlXHc>+4k@`I5pDpn^@rodC?<4SA_Z z++Xi?%3);0RWYTVW#&^^IQWmGkjp3nWJvWZD=W)!JW-93ZICuK+x7+wzcT{(?p4cp za@?&a9b360#8IKGsFb?;Z@#64GjGAyjO16VLRA96?5?rg=V_E~%Tugi(da$&j3q7+ z2@$QWbg15H7d0#Wq0f<|3RL2k{0C$KG`n@6;jZ4jt^3cI2>Q)p;mUwbELXu+uzT53YWn^E+~AW@cQ_;z~&& zu_v3USJRDoCY0K&q|d8HzB@BtQCRqlfUq0BR+-rsGv?)q4L z!ZzvzZIRvv4ZFMM80%Z$a>ITN*ooqa-7W}8&%wp779^1aNZBL+lz@1g9m#`yg(Wth zn-w2i=Z*@6rfYJRs#ZBO1(R!Ei^~{m{#YvbuXxcW#Rog$&{IEe>NWH!UtU@6+x>}m zd)C*UL?IyO(2#yrHj>v-Mny(Gz}%nB*5_s|(zt!($>U*DD5HzqwqmhDCVrVXv!Xz{ zMY+2W&=%f3zX1T|%*NsULJQ8vbHkw%y4BZwxyzBS;r;tH5hp(Xo9FeR=msxuOr`L1 z>1H30czY@<8!Uc$`4fLS`NJB@bUOk90%}1gG6!2)qMZY0n(iqAc>^#s>2kQRi3CPdHQ|wG;}HV@G>vq3?xagwZIu)8SYuw3 zRsTrDmU)k^4%gJ0WE{T6@$!eyvSLElUY|#{SfbS znX{0T(@E6MujL%|p@<9FSd)Y`ii#XlL8)3E83-CYBTPiA8&z{ot$CTZb6XqE1S3_5 z#my_F6}ZX#7pJn6a>`$vqG=9c=1zxL$^?3N6tx7*=M$);6R=MSl0l%d04o_{X)7qI zCeWG0(SQO&EKP-R87RC43ZNgKOrd_15`6oY1yE{x7_#~)<|lX@0LTzVm7ryK`zPuW zg^iAix`ZnKx7A*n^zOj8N@U@^X^&qyIk)l=>&937?ML4TMIa%uWD-3T`^Ce&z2vZf zNq4^8Qy-t9#&3fGIC3NrVg-^COGx;Rj~ zE>JA zIH~8k`wnLnpFkp8#YI=sHCt`Q4x_cp_Q(es!tP+sAv*0RuFKLgiZr)ec5|D(;mB{* zFkiZ5Si=Gz%SZ>^_Ao#;%yn7TDOHB#5)ECyrhJ0&+bmzxYR2Brq$Hzbw>1d^M_8KTpfu|mDoD5 zSqpvTgY)B$wAHYL?gNhJ^DZS}4!TD)Bh3le0dfuPxC462lIUy45b5ql4MQWU3B1J} zXiB9a{cB{83p6@_a2WzA#P}9v)SWV@a!wxk?Rf!WQPR10_U@Jy6qyo#I$knP zHLYo95qm>J3Gv6B4;R_Pq-uY>Ug|py7(evrFvZn?GOMbu<={*^rh02G-8%3?vFt#1 zsixX9OaGh+0~_O~llgnE{4%-b_9~5jQseqC#}#C3F@H9s7(JSj42akqzwq?LsdeXt>Hk zZs-9!Frnl2Pt7CatQ~F9J)RWUA5lLnF0OB7^=0H(0u!{}iNMHa$7j9Pm|5+Df)Jo% z0HI|`Qb(ZI&>w-_5>$Cnla7rjGN&w{cLCiCJbSBeYlx|CFD6*73@GchoX9ylw zQeGa-n}Jm*Bd_!W;B*^m*m6+`gm>5(Kvj3_Jd7PfMz9AcT3T1pL^|lUqjv3tb^<5h zxezi9%o?0cMKN{VKpGrlJ-LFsMcnV_E&2d(TWFT1&wZa*9?fql#T-09dugnzZB(Jz z`0M;-Y3W$eiZRve*SF3TV<(7$b|rbD$(X$bn2cv(V!dxRioso(R~Yg@_V-GmcG)?W zu*?vFrda<18h|}`I-%)P=mcyMZJPOQ$3kGoG{DHTBqhLq^uxwr4-LMnrCya||zkdI2kg6O}TwGo z8Dn)L1rsvM1l(c$#ZXaLm<%-p1ol0G=^Gm3tTTW6HZ&U1NIpi@#1tMOU<6;fJ1OYE6Kh@B8 zI#7cExY)embE9o{00T3`+i&3ab4UmH_s~MWj*M(o_2$nV(Etz8?xfwpv-yEkI{Z@+ z-7UUO>P%`X6~8Ih;*HH6*8vQC7~h zw{0|x-VX@H)!PRdLsF=xC%R&h#_u#LB6NQ+jYd%%ok;4s=F$-}Ys{=%%ff!m&q02^ z{s$RDrPo|_9Q(MWLh8%& zDB%3DJ#X;Y#sA(u+_Lp%HOVgn?V1_Dxm{>A7oSC)pH_HmgPt2c?O~)x^!MO~s z)W6(hFU*%*tFH9l0-6Tk{(p$r%9BYUV1d^PyZ#W}mI!*fJvOEk1rtzZpcr1JC69&%vu60XaMDLhZ^*AV~>q zeJ6|&{;w-en0g7#&d%1X9%r?LSO%ykf@GMkIM=yBq6>P?|8>%K!6$#QGA;Erws~&R z#jzy9LnHz`YcSWA`eIjC1k{Z`CW;O5R~4q-&&oGn-vRO5k26iQj_#u+q%71pZ)~ox zed6*>D@_q52|(VGHX66E#cv%{p-jrmoXK4MFg7-of)ry-S-<@O40b+h2Y&#gzY3*c)bU9z*);+Nkh&Kg2{9jjDFQTG?jq~PcZ!d-tniOLp%nc;q25x|t zfcOvf!__hj%53vZI7dbnjVx232p?a;hI6FMS-sW13_OJ~TL&wEx$K6U@rzI!g2re7 z<8K<$JuA=}@%#rW?bBaV-(9zwDSD;hTRKp;(KGwRlVPF&5cU^XZLTy;Z6~wYc#ST? z{`v(7X&TcTnOQT`K&2_uic=_q!$Vi^{PG|UFfljFOm4XD`6vp(J^!iSN~}~C(}L7~ z9}7m`>t#nm*XRdERwRxlxKY5maxV~IldBu~@=Qj)U7wWo0??xtIzN_7{q{C?>yQ!@ zmG(QgoUT}VQ#w}XVudnmXi06k-pIdq;ttflZh__cMXX_f$G`Ke56pab=*3yY7bj+D z??qx&7RdV1U$Xw6SI}_irXY4hFNGSDhJ-<32!nvA{eFE=>w=C#>epqX9e`9NXTcaX z)b2OhZGDt|TwhHV->>rXeVt*uY!-PD`nltC(Apm2TotVcJJcVZwH#_>!23OXUlOc0 zUp=<>iH{F`Sy1;po%aMw$Jw^;ThU@JWw=Rg-_n!N=XxWo&DMA;`$~HYswe(_*HBGO z>|+GhZwmUmcB@?C8l(VdKk(1)VZ2y=u|CFmR0dITc6N42(nPCf zwRDm|{YMrPkLg<9v_Fh$R3p7+4P8CJ8+AGduy;;jC}i+mX095Dnmof1q%doSp? zx+sliQF}%lQ;8K5WiYhH1zm%(-+9i1?;9pUwb9)_%GNsB^$G$rEGL-d#?%2AJPm*i z>~H;_SH(a8xpn45+&5tI!rFRRnzrW;%nZZhk`!uRU`x21ZPq3WrS}JloE~ZXmiXvL z8p37?kXMH6@ zIF~a_1WML$*t&Clqd5oEwurwLc6L?Tq<6Um#5U97NB%VND?3H0gHX5Z8KB8svMEgHUcxu)6I6u+(iCsMEtB z8-pG*EiS$5E1n|-05R?tNlG`Ayem4njykso354nfXjfNKIN8RpN zD!-5V2zqEbPb~H26_F-?(*oSM@j1w!go-~``Ls=i9rwKn2(s(iO8I)`JRvZ%`-%PO z>Y@3~dz&@HpJvQwCvySkb4UQQ0ZB6mpmx6KI=GnK6tA~bD=+ZMo|TZalvJ;P16w;- ze<90X;Ra|y2(|y&UHqquagUxSE@tWp@$WVPhLhUoh#huOP%hnl{ZP2|hZ8{+xI`bg zq{2u0&-Ymh2yKqc$`>7Wye2LVy%HqtK+?;tg`SF=OEqq}>*!@7C8W+bC%3FbmTxQt zQ%!iA5=!Kq&R9lJYZOH=o_NMXy|ty8o+;(3*IVGUA-VW?SmGK~G_SL0%u6DU^2#pC z8J|wVFt|$rDi5jjSxgjrI18-0z|hS1YMO`BGO4;hJz}$ z(v>4*g5VFobJ?3WYco1U8lO`Qwn6b;^c9eNdj_B=uvgf}XIjqF|f`d5kB7YLM;0!7tCqg9ejn5)_G zH2e6w;XIX8t@g8bND0l+UkMEi((e$xckfg5@yKi-694mVR2~FsQ)+9tJwse%B$vy^ z=Yx-+#pAmtckn^u*RM)dai;mh$vi_)y?|OpYgy|gwk@vLqISQq82BVaYHx;^Cetr=b@!H2l*uZhBgO~YIu3c02t-q#fRFdR6A#?!=q`7^XaHF-{`##I1!@+lrn-*hY85|)w8+H*Fw<;olCRtBB z&x1oqrhl~*$?_qqiG!>L0JjccZvRv01K!TA1T%Bq6Jex&3e^3~%y9Z`u8SG;*Tr8O zHEt_Gl|0J#<&9->o2|s?#oHl-H@D_3)y1Z(==Qy7KuZML6I&4>KhE{Ru!zwzV|GvJ zsPa_y6d?yetDpg0(1*8pake;__Bj$@A$vMOutv#3yf2$T#fCH4k`yHmFMDZfv7D6Z;-V!EoDxl{3*|(m%xQc(~Bhu3D)K+4; zm0u;RH1krb(@u?$Vk>R;NQ}|hts*bYp$DQ7yhS9ss8$+rAT@ELYG_l_?2}}p7eI;(9 zFEt^yKLbxQv%0Y{FpXIV2#Z;~H9S*b(WD0r<(urn`k2qtokWPKR#y0J^$XB8H7|?f z$$Qv(flLX|HU6KyK0xfLRv|C10MUCQqKDbMI1oLIYC?&F%BMqlA^4glw%7AHRsrF{ z{`HJFB*4OWrUW`c6oS$#W%WMWo{1>VA`OeRN$CDC=cJdB;e@*t^1G~BMyr(4r7uRC z{5H;^vYKqWhz|RI*k>_yfiU65RIoV#kela_II`n8IkmH=v~H&Y*#)A}>!l0G`E1#or=gv@{;6)VzuNgivM^*~Yi?a{;_KJy;xCK<=utyctGm9i6 zU_;iWBg}3R&EVQ&>^#6o2n(EPst4pX0mDMzZO2r=ReR%cC&kc?$3T@0mU+&d2&g0V zGv?+RFK!iL_nv0v781I^94*>U#t$N6Zrq9*fFu;vI|G(a^xMQE9Gc?WazH6GcaxAR z0k)Xu1p;7ez6Sk0X{dq?EoCT`k!Et+TBmG_css9N&VLow)yI!$v;NI#Oh^1{ch`Y2 zRT#QTb6)N=VrB*w@(pqEcH2?v-FG{Rz}Sg1*Ya|sfDf~`WiXC$B?%n+55xN|!&UPy zzpQDeXVz_<*Jr87&a`2$`*MAUmCj1aFcE46j?84CgeGqy1?9;~5E~_eNrrBWu~s6A z_P?&0bDbW1L0T5eu+I>Hj{!+2R(`+sK;qlUyWCMdt+xyT=8cM?B*DBNzK|(S<%QN5 zqL1zC6+Jxy^~rpn2$r&?p?4`K$H`5BSaN|O$%p(5H6u65KBL%Vvg{K%MID3-cKljG zk~lAtu|@o5-Ks$sE(nh2AtyKd@vn&%uA}?R^)Y4Mt@h=r0h}X;D zdt+f_9Y0vT6){e(ij;S`PC*?xpW{oG7N)m0dhDP8)pCllU1XFuubl5`?9%I=u_vKI zV5Wdf=WJm4q=9qL1ZVGT_+#hE0n5#K2Eh{PKCIG`KwXr%hI}o`F;Afpsbmlrn(D6Z&BiqggR}j8$=w${7%!ibRBp z3?2An&_ZClxk{o_Z=lUz;$)!SfEL?^#V8V9pzM%c3rF`KB z{wQTI(6CzCk@<@GPNTRdzQ8!4p`_Gok5#9?r(-1jzwgpQklhJJ5gp8W%Z`dr z@X5XG8ClME?J{+`9%dA?Z6!WK!p9fe4rtHUczsI@A5~EXKJJU@$6|CNqQLcZ&-mr@ z;)M=0#P>t{hI$7NWJ{O+Mb{UB*;e+^>O#I9b;DK=u}?EI11mBqY+C@r2|wW?__8?v zmRx@EnJ}rgMHG+)9Opht>mI)W%l+KkzBe@K5P|5%pl;bT#DAbw+IUun=u~akg{DA3 zu@BMvG@+EsS?Q%($6^nlE#~I#Nga5XsIF|fns&h znazH@IUui)FpX@OMWpcEbDU1zfwE1zRRNh=1W<98ox0e;uE@w1J%7<_XQ_Yk-cmkR zHk>6lWS31LQL_G~)y6Z=WFs$lDDiI0G|vobXB~)T{zmHgPmf zh3u^tP}1P^Moyp8R-iD2u684Ybf7QSNrU;rs46J04$NKuzN)U6sREcM0!YnF5PJf# z@BiD?tWQx~77lD}r}m1@rASz-P`1S{55((VA=H zyCpN7>}Dtdfsn;Rk2|oZMFgQ++!lkn7FuE}PhwF}VEX#jFuAJP+BH8ofEs227YnBm zLNfa1=zp%h^%H(em>=W~>?fAsj&%S{cl{JQ@*r@NI{@-I0?y-N@Xfm-rwu1nxj>>& z;EIc%iIOSKK97cIk36Fa^)4P`fkrST4uQraJlRR=CQ8dQ^VK3ZiUoii=xp{AeJ@T!RC4ZXmt3CJJEpZ9^r&nLJcTgH22{ z9(Q=>`kDx=D1`6@*xBkfpbT~pU2YWD9@6^RIiWZ-Rq@|77i+t%QNPD)R_8b+%x zguN!Eo5_%FvLY-qVBMYnF_D_W2Q5Ia;#1m6ZZN}11+of5eGy9H zb2+4^>%smTX#wuiHJJUg)4lge=ug^eB`hXI>5VP{T?rWS$ywktA*2EaWi;barmT#N znVV+%R3H6_7tJOP#FO*Z!Ex;_JMZ}jLUjk#`S|I~2=j^&Qt~!D={-g0wo0y@;g58w zaPn(g-@R{ua*^tuHu~dxwA;)$g=mIg?%lUAj{rj11dhQX6_hdv)l?K(;`S&OW-G(7 zH$AIGDMQrXZqnNaKGw@!=x zXgtoI!4witn9O4~JG65KMhStYFN620TD#G%2pk+3`7vj*Ov zshIuN={bKEjGgIi(wrMO^;2qqYl6N~QWnWO4K?U~Q(shqgD_XNp>_d729Q+-aCjgK z&E>C6-=^Y%5SmRb?H!f2eOoVa#ekuJUEh1&N;r+$Rnmm;*avnmQdN%re(5!pRDIc? z$>P4{%Yu#<2SVrO=BBcMu*+-n+_&a0n>ht7+Y_Hz$eFFe`Ewr-FNgdq7`oFBT37}Roh}wt94U7MEqDY?{$4uYJ^HDMd8?Jo2JtFRI zh*WKEBqE@MN&fJZ9z+wG&AF48Z8&d6&*oK`Br;M4dj-6J&Wzo|%hAx-f9s0BeZPy; zG`b(OQX9$l$2`{(abc5cn1K8F7B|w;Tyh1D5vf^#$4sPzHsM&f8Wk zubJOp);N(nV{h5qwdG?2eSqv=3MK~_(9XT2)20y*_xj%+4&p+(*7l|_B{l<$Fhm4) z@Nk>f5Dv5#BVa7-ZC=iRmF`hS(KW-3CwlFH(+;!!xBL1}-V|>+lL;J^ZqS}EO;o=1 zU@6oS1(}zO$5JI0LxC2s;fwXqhM`*$B@_Dpi@-*4Z8b;7B4fMEzcYPpqi0Qu0Y5_m zCB$bKwkZjO2@5#Ixmoe|t3HnY=WSN5l`&$cmdl9FnD%T3;l6nnbkuf)R zY918Lp&1%YG(wU*keKHJNzJ#Z-RTtzL!vB3N}8${)=ekZJ~jkQ1O@imk6Qa<@34Os zu+uK__wTv1<#!ZP#NR%y6lAw@j3m2c${jo-|8jG52NFA4*AUp!cdXcA)XE(jX>M^@ z*jY?jS)_k+0S@?rDP_M4*X0nb6wtf*_0K*Fol}bgr>Zlj@-VT)hdTj@Ihmb~`?O5o zvAHTSMM-x_7ibhLxH^1CSXMuXs?OGrh}SYZ)liSKh3bAp~1`&2#H8{qy^~ zkdaLHm32Sx$9lw)=2VbrlWUN?JOBnQ@`frLM)nLq&o{4#!+JyjRtZ#=3O6MH82E)H zPm>(j-73%4{_}nIm?w{5W<#ZHr^-jM>*1r+d?r@8%N-wE&D7LOzOAB!lJ3(%!yQr* zx!)-X&?!&e1n9Blc;q-Ffd5STQdA(pOv-WcjJGpxLKRC-NMmMN1w4}lm$*0j2qa)nhgIEvnee7^tU0}O{$AaMCnFsuMglr3hg$Xhg* z@-(1|z*0px6gy#+9F)S)0tF5Ql}BJB8jgr#FFz&!m2jT zvDd8Z%U)ylV&?-q85mpNCnFu<>goG5vV%k}GO{Zyzd~gXU<@8mHNSoIUmBn88S{3U z=c)Z}aYvaEi(yf)<6xMWV9a_zfFX+JR8>ia}BVq=)>)%5P$)i*2yC(Ww1EFgYB27 zFi27-MzED!^g$u-JGL2Gtis*?!XNL_dCy z0S2FDwQboF^(F~Xhep|y7IjlTkfJrK4s+05!VD_c(r@xPmA zlkGkZ_aGj&ByD`2#(udTP!UJCMs%vBZM6ueHb#C&VBqh9^u1{Y*@1!hcGwFCIYL7J zQkSCP8l#I|=&n13`^2_)$eWC@+QJ4k$V}fr!}|nA ziUC>KPc;ye1$!KNF}>K)Dj=K)aqM`@0h6T(a&Ls0THgaL6i6cdsqmBY#lpi)-u);N zyvEPx&@?Y_vE6m`-EgZJ8}(>t50r>0G{5k=O)w;63fmSY`Y8Tz$L?ged}{Rt?} zB+-Sd&o1t#y9{uCQ_HFc?3jbT5;DjA*R!|vU5CmFnL9wl>z>OiYh}@gZnvfEbRH8N z*p-1*w1FgT9IukQyVLDI8oT(c!mZqX(*NUv_pczAz4l4WGr9U;;!p=_>g9bpSY}f~ zVKUjUuxsmB$W^f;H=mk|`v!2y2s(68KMR~JK$-f^oVjg_rVp}Kv@cofO1?0j`eMp1 z!03B#Mwcv~{@{k*jBUZVloigTtMgL=ciEk&SNCz2Y4hBiFXt)X>1p)SXe&6dFCu1uGk=%maWX@NN0V6r(^VSxqhwuVcNLGfyv0nPB8yGe z%e-oQeBOFbfEZg#l+CG!MXn6l7vIhX9e=kv2fHX!lf^?rwAa7WTp}>Et39=&j5ZTg z%+{P{eJqgH8QMG-WO^~hf3D#gVZF>>ODHZZG?cd%<+J^RFbmHJD;rg3gCbtG|B=1p zt(>`iyB5Bl7)kAj#BnDd5&J|GAfq7L?e0e=s9ez%vLcu_U7FeYkp6DH0{YQGvnnpM ze8N3!2-9D$@phDwXi!u-&mD^^ra3#?)pJ)(k4kVP^>Tw^_9e7|<^}f(&u3mD-VgA% z8zPLBR{F^t?%N(v46)BhgYrr-+5bkg;l7JVM8^3SFQP4Hv6RrJ z_#iceC4(<0DGiwR8>Yy;xhLVu9;sU85!C@VN&L@0N_m@yOdCbJavzlO?Fo2LLgujT zz;)vz3S9e-?c9DLR>8leua9H3Wqi$o4T?wfu*^?Gp9o(rI#S8975Yk#dOJy2p$63_ z_0u@^s7kJTF4f*wXQ(h*!Z4Cmcsv`QcVubeYETppj>P5oAi|Vj zilXy6{pMutT`ynK_iBF}cMm!>6bpColzu|NnNM7qjBb0bR!Z*J14r6yvQpzW= z20Lvh$vTvgy5aDRpLSt*aKGU{tm5Z|Sm3q0H;a!(nUXPk9}|22Y_pYE`dHXfD_!n< znS%e(*L!K4%nS@ze%J}Y0=T5N!t!6fqbeR~m_EurQ$eFtd#)%)u8H&Dl4{Xs%EpnD z?sF>JRf}9*)w1hQp4;CEhn)gldp%U6nAH#{C1QB$9`*PVq@}GWT|4 zpJ(IrWUD8KQcEqg>V0 zWt&Lc&IZLfF0=tGX?ERlN<06QHEsRA_}%U_mDPu>G`0E%)q@-Y5$A z^AWG=;Z@rYe2Mbw)t<`f$Ha?jPkrj)Vl9GA>wdlXZFP9DCpT76b-+dR)+<)^6mI!Tl4XyL9zi&t-3n;`2ev;c15GlMk8_is1~SdWdnt6dANM~KBoHn$Ig(% z)_e(l>*X;qt#NS+gS4}I9P757TDXK}dF1$X=#y}m`d`oSa7-h+gbwa`Ri{{@RQ$NQ zlv{`mQ>yz>nB^Y!X`mz9X|-(!c8qO1>DnxLKkr(N?FN}Jnd`2BRCavANiKL@B+hF8 zLa4hVo8Sm*X9rnn-s%$Fo;W6!)z#Kw>%eO%y)O^wV3~_9p@*qQShp=G*)%AIPHuk` zcANFneM?Ik7qd4JGNqgJ;#MI!-VjO+5Ana_YsSXl8h#qD*cKl8{a%znVmnuO z%00y!GhWsf&Ci=nkAefrIG0JsOmaod-ys3c&#MnZq+w0w*D2gm{_Fm*M|V`cdAz3_ zELLx~nbur5Cbj-WF0R$|(-)K*MRk4pFjnHWiA8yHS9|-H3k2bLP=32BL#0>XCbB4F zpXMLO-i=tFqx;gQ@xsg6aa->K;f-{Xr+mT(5!+qkDfc~6GLMJ;^+D;euxbBb+C29zaGD7Tal%# z8a^8t{YaqnvKyy`UWRTp>DC80N^yrBwvsAoSlGiY7AY-6#`&1Obyp=v`(uTnXA9rK zmC=l(_Pqb~WH!^lZCAD>gx``nL`Ji15j18X)WNw(;ODRA<;Ye@vUgoQ>`RSga6FY( zU4!(3Hs@3IE?l^vQ`p_y-yf8GHuW@@yzU{N(<9}BYJOuf21@4#r{gsC4vc(Zf6Z*A zl8w2e?I-Q0_?9;Exh-R7osuMP^uthV2`Z5$R0`g=H6L8aF`^m`TIY|^0cqL^h a!`$NgE9}J*kR|HO0Qnfw;TRv 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

    ]]> - - - - - - -1 - fontSize property of the TextField class to - * render the bitmap font in exactly the size it was created.]]> - - - - "mini" - The font name of the embedded minimal bitmap font. Use this e.g. for debug output. - - - - 32 - - - - 9 - - - - 10 - - - - 13 - - - - >()]]> - Helper objects. - - - - - - - - - - - - - - - Disposes the texture of the bitmap font! - - - - - - - - - - - Returns a single bitmap char with a certain character ID. - - - - - - - - Adds a bitmap char with a certain character ID. - - - - - - - { result : null } - Returns a vector containing all the character IDs that are contained in this font. - - - - - - - Checks whether a provided string can be displayed with the font. - - - - - - - - - - - - - - - - - { letterSpacing : 0, kerning : true, autoScale : true, vAlign : "center", hAlign : "center", fontSize : -1 } - Draws text into a Geometry. - - - - - - - - - - - - - - - - { letterSpacing : 0, kerning : true, autoScale : true, vAlign : "center", hAlign : "center", fontSize : -1 } - Arranges the characters of a text inside a rectangle, adhering to the given settings. - * Returns a Vector of CharLocations. - - - - The name of the font as it was parsed from the font file. - - - - - The native size of the font. - - - - - The height of one line in points. - - - - - - - - - The baseline of the font. This property does not affect text rendering; - * it's just an information that may be useful for exact text placement. - - - - - - - - - An offset that moves any generated text along the x-axis (in points). - * Useful to make up for incorrect font data. @default 0. - - - - - - - - - An offset that moves any generated text along the y-axis (in points). - * Useful to make up for incorrect font data. @default 0. - - - - - - - - - The underlying texture that contains all the chars. - - - - - - - - - { fontXml : null, texture : null } - Creates a bitmap font by parsing an Xml file and uses the specified texture. - * If you don't pass any data, the "mini" font will be created. - - AngelCode Bitmap Font Generator or - * the Glyph Designer. - * This is what the file format looks like: - * - *
     
    - *  <font>
    - *	<info face="BranchingMouse" size="40" />
    - *	<common lineHeight="40" />
    - *	<pages>  <!-- currently, only one page is supported -->
    - *	  <page id="0" file="texture.png" />
    - *	</pages>
    - *	<chars>
    - *	  <char id="32" x="60" y="29" width="1" height="1" xoffset="0" yoffset="27" xadvance="8" />
    - *	  <char id="33" x="155" y="144" width="9" height="21" xoffset="0" yoffset="6" xadvance="9" />
    - *	</chars>
    - *	<kernings> <!-- Kerning is optional -->
    - *	  <kerning first="83" second="83" amount="-4"/>
    - *	</kernings>
    - *  </font>
    - *  
    - * - * Pass an instance of this class to the method registerBitmapFont of the - * TextField class. Then, set the fontName property of the text field to the - * name value of the bitmap font. This will make the text field use the bitmap - * font.]]>
    - -
    - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - * ... - * @author P.J.Shand - - - - - - - - - - here. - * - * @param str String to clean - * @return The input string, but with a master string only one character larger than it. - * @author Jackson Dunstan, JacksonDunstan.com]]> - - - - - - "left" - Left alignment. - -
    - - "center" - Centered alignement. -
    - - - "right" - Right alignment. - - - - - - - Indicates whether the given alignment string is valid. - - - - away3d - @private - - A class that provides constant values for horizontal alignment of objects. - -
    - - - - - - - - "haxe.ds.StringMap.*" - - - - - - - - - See `Map.set` - - - - - - - - See `Map.get` - - - - - - - - See `Map.exists` - - - - - - - - See `Map.remove` - - - - - See `Map.keys` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - See `Map.iterator` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - - - - See `Map.keyValueIterator` - - - - See `Map.copy` - - - - - See `Map.toString` - - - - - See `Map.clear` - - - - Creates a new StringMap. - - StringMap allows mapping of String keys to arbitrary values. - - See `Map` for documentation details. - - @see https://haxe.org/manual/std-Map.html - - - \r\n inline void set(String key, const ::cpp::Struct &value) {__string_hash_set(HX_MAP_THIS,key,value); }\r\n template\r\n inline void set(String key, const ::cpp::Function &value) {__string_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }\r\n template\r\n inline void set(String key, const ::cpp::Pointer &value) {__string_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }\r\n\r\n template\r\n inline void set(Dynamic &key, const VALUE &value) { set( (String)key, value ); }\r\n\r\n inline bool get_bool(String key) { return __string_hash_get_bool(h,key); }\r\n inline int get_int(String key) { return __string_hash_get_int(h,key); }\r\n inline Float get_float(String key) { return __string_hash_get_float(h,key); }\r\n inline String get_string(String key) { return __string_hash_get_string(h,key); }\r\n"]]> - - - - - - - "); - h.set("amp", "&"); - h.set("quot", "\""); - h.set("apos", "'"); - h; -}]]> - - - - - - - - { strict : false } - Parses the String into an XML Document. Set strict parsing to true in order to enable a strict check of XML attributes and entities. - - @throws haxe.xml.XmlParserException - - - - - - - - - - { p : 0 } - - - - - - - - - - - the XML parsing error message - - - - the line number at which the XML parsing error occurred - - - - the character position in the reported line at which the parsing error occurred - - - - the character position in the XML string at which the parsing error occurred - - - - the invalid XML string - - - - - - - - - - - - - - 128 - - - - 64 - - - - [0x78daed5d, 0xcb6edb40, 0xc0c8aa2, 0x871e8a1e, 0xfabffe34, 0xff842ffd, 0x1f0d03, 0xbee56027, 0x150a0182, 0xb04bce0c, 0xb9969290, 0x80a18492, 0x578ab924, 0x872fe7e5, 0xa5a8e83f, 0x7d3b1c0e, 0xcba3ca7f, 0xfb47eb6b, 0xd6b4bc06, 0x3ddf7b0f, 0x732dfb9e, 0xbdadd33b, 0xb7fcdd3a, 0x67c9fefe, 0x783ce6a3, 0xca5fdfcb, 0x3aa7c8b3, 0xb5c69fdb, 0xed96b55f, 0x3ee23aad, 0x6badf7b7, 0x6896d352, 0x5e0a7f0b, 0x42ffc6a2, 0xe7c9c1da, 0x93f3cf33, 0xadd788f2, 0xdf1aa4f0, 0x339f07b5, 0x650a9f79, 0x8f253bf4, 0xb991eb3d, 0x9bf4f37c, 0x3ecfaf11, 0x7cc64e58, 0xfc11cf93, 0x2167cf97, 0x32f2b79e, 0x9b951f2a, 0xff0cfd44, 0xf93dbb80, 0xf047eaad, 0x22ff0826, 0x40747ffd, 0x395a47c6, 0x2eb4d67d, 0xd6e7f799, 0xf47f94fc, 0x113ce9fd, 0x9d110c9f, 0xcddf93ff, 0xcfe46f25, 0x7f16bf79, 0xbca2a2a2, 0xfdc66f88, 0x2de8e9fa, 0x89f67d9, 0x2a261fc2, 0xaee7e52f, 0x33ee91bd, 0x1e9337f4, 0x30309b7b, 0x1cb91f99, 0xb888f191, 0xd67aadfc, 0x65f63d46, 0xad17c5bf, 0x685ec08b, 0x2394fc42, 0x514c6f2c, 0x1bc3c839, 0x12cf2ccf, 0xffbe5eaf, 0xf38bc197, 0xab654f2, 0x846cfc3a, 0xeaf9945c, 0x5a8f87e4, 0xc43cdfc6, 0xea73561e, 0xc58aad55, 0xdeb24e14, 0xe53de399, 0x23f267f4, 0x9f951b6b, 0xbf27fe8f, 0xd3e934bf, 0xb6927fcb, 0xb6a9bcbd, 0xcb5fa993, 0x295823e2, 0xff23759d, 0x2d795e4d, 0x6b6b9fa5, 0xe0ffa28a, 0xfb99b802, 0x39dfaa23, 0x2136818d, 0x7d99b818, 0xd133a606, 0xcada0134, 0xfe433f73, 0x358f82c8, 0x3b12a37b, 0x7cab86a0, 0xc6c3bdd8, 0x25c3f77a, 0xfb7579cd, 0x84157b78, 0x31c31ea3, 0x7e3e438e, 0x5139a3b9, 0xe155b3c, 0x4bfe1e76, 0x56f27196, 0x2f8fea65, 0xc40fcc78, 0x7d642ddc, 0xeb396073, 0x9f887f89, 0x60cdde9e, 0x44f6536f, 0xbde91a24, 0x8660ecff, 0x47d17f34, 0x4e55634e, 0xc51e2238, 0xa85707f7, 0xe4dfb34f, 0x7b957f14, 0x6fa8bd19, 0x688f0eea, 0x5b19fbe9, 0x6138b40e, 0x86e6cc11, 0xfb8fac97, 0xd1fb17c5, 0xd90afe2f, 0x2a2ada5f, 0xcdc8eb93, 0x52e3b1ac, 0x9c328211, 0x3d3bcaac, 0xcbd43a94, 0xda48a427, 0x2da3af62, 0xe2fdba5c, 0x2edf8fc7, 0xe3f4427d, 0x2a8319d0, 0xfe06c48f, 0xcef1756b, 0xee07dd8f, 0x564e1f8d, 0x535a6b21, 0x7218d5ab, 0x8ef86455, 0xf7bd3dc0, 0xe608d7c7, 0xbff7fb9d, 0xc90fb0fa, 0xbde6f762, 0x4e6f4d04, 0xa77af241, 0xeeedadaf, 0xf4b6aab1, 0x5f566d84, 0xd1713637, 0x3452ff23, 0xfa3c5aff, 0xd9789bcd, 0xa928fbdb, 0xc20c6cce, 0x92f5bdd9, 0xfe1fed31, 0x1fe1ff51, 0xac36a21e, 0x50f4b5b0, 0x3fbb7732, 0xe6abacbd, 0x9cb1c747, 0xcd8da03e, 0x1a5d9f8d, 0x3d143e62, 0xef51db1d, 0xc1c44c4f, 0x5a34079d, 0x918f547c, 0x73e65c5a, 0x2bd6b1f8, 0x197359ea, 0xfc5f54ff, 0x47c83f2b, 0xc68af441, 0x8ef87c18, 0xfb98153b, 0x66cc5d47, 0xe2906c3d, 0xcffaee96, 0xe83e63f5, 0xdc5ac7eb, 0xa918edff, 0xd9f59539, 0xc7a8bd60, 0xe31e569f, 0xd9dad668, 0xff5f98bf, 0x88c9ffab, 0xfacc600c, 0x264f9185, 0x93a3bd87, 0x8a3f89fa, 0x22269fc7, 0xe47a959c, 0x398395d0, 0x7c12b35f, 0xd4ef63b0, 0x7a8fd8d9, 0x744f8668, 0x7f29dbe7, 0xa5ec53f4, 0x1e91b911, 0x366f88e0, 0x64063778, 0xcfef7daf, 0xc91a6fa1, 0x98c43ad7, 0xda839ead, 0x633134da, 0x73d8dbff, 0x2cbe6567, 0x933f49f, 0x99475cea, 0x32d27b68, 0xf5692176, 0x7584fc55, 0xf928b9ec, 0x48de68b4, 0xff57f03f, 0xabb36adc, 0xa1f866a4, 0x4616ed79, 0x44fb552b, 0x1e286271, 0x9cda1f88, 0xda39e688, 0xd61691d9, 0x9c68ff65, 0x74263c7b, 0xd657994f, 0x4463bf56, 0xf4e0f47, 0x45f34b6c, 0x8cc89c5f, 0xfafcdeac, 0xb797d38c, 0xce84abba, 0xe3c9d0f3, 0x5756bc13, 0xa9f1a331, 0xbb5a6f60, 0xe21756fe, 0xc8cc504f, 0xfeca4c78, 0xcf0e45e4, 0xcfe015b4, 0x2e14ed1b, 0x607a6b94, 0x9931c6be, 0x7bb1c833, 0x67c2959e, 0x11346657, 0x6d8782d9, 0x23f98c68, 0xbdb1a8a8, 0x281ffb5b, 0xb81ab13d, 0xacad8ac4, 0xbe4bfe34, 0xabfabafa, 0x3f0419d8, 0x42a9ff79, 0xf9462f7f, 0xb965ed07, 0xc57b4abe, 0x8cb9ce8a, 0x2bd6ebcd, 0xb25fee81, 0x8cb8ea2b, 0xf99d489f, 0x10a3ff68, 0x5e8ed923, 0x45f9f267, 0xf22c4545, 0x45454545, 0x45454545, 0x45454545, 0x45454545, 0x45fba577, 0x2eecdb70] - - - - \n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t")]]> - - - - - - - The font is based on "uni05_53.ttf" from Craig Kroeger (http://www.miniml.com) and was - * converted to a Bitmap Font with "GlyphDesigner" from 71squared (http://www.71squared.com). - *

    ]]>
    - - - - hide - -
    - - - - - - - - - <_format expr="BGRA"> - - BGRA - - <_hasMipmaps expr="true"> - - true - - <_textures> - <_dirty> - <_width> - <_height> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - <_bitmapData> - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - ()]]> - - - - "" - - - - - - - - - - - - - - - 0 - - - - - - - true - - <_boundsRect expr="new Rectangle()"> - - new Rectangle() - - <_textHeight> - <_textWidth> - <_subGeometry> - - - - - - - - - - - Indicates whether the text is bold. @default false - - - - - - - - - Indicates whether the text is italicized. @default false - - - - - - - - - Indicates whether the text is underlined. @default false - - - - - - - - - Indicates whether kerning is enabled. @default true - - - - - - - - - A number representing the amount of space that is uniformly distributed between all characters. - * The value specifies the number of pixels that are added to the advance after each character. - * The default value is null, which means that 0 pixels of letter spacing is used. - * You can use decimal values such as 1.75. @default 0 - - - - - - - - - Indicates whether the font size is scaled down so that the complete text fits - * into the text field. @default false - - - - - - - - - Specifies the type of auto-sizing the TextField will do. - * Note that any auto-sizing will make auto-scaling useless. Furthermore, it has - * implications on alignment: horizontally auto-sized text will always be left-, - * vertically auto-sized text will always be top-aligned. @default "none" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { _hAlign : "left", bold : false, color : 0x0, fontSize : 12 } - - - - - - "top" - Top alignment. - -
    - - "center" - Centered alignment. -
    - - - "bottom" - Bottom alignment. - - - - - - - Indicates whether the given alignment string is valid. - - - - away3d - @private - - A class that provides constant values for vertical alignment of objects. - -
    - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - - - { mipmap : true, cacheMaterial : false } - * - * @param type - * @param cacheMaterial - When true performance will improve but text using the same font will all use the samer material. - * meaning that color transforms will affect all of them. - * @return - - - - - - - - - { mipmap : true, cacheMaterial : false } - - - - - - - - - - - - { cacheMaterial : false } - - - * ... - * @author P.J.Shand - * @author Thomas Byrne - - - - - ()]]> - - - - - - - - - - - - - - - * ... - * @author P.J.Shand - * @author Thomas Byrne - - - - - - - - - - - - { searchClass : true } - - * ... - * @author P.J.Shand - * @author Thomas Byrne - - - - - - - - - - - - - - - - <_atfData> - - - - - - - - - - - - - - - - - - - - - - 0x0 - - - - 0x1 - - - - - - - - - - - - - Create a new instance by parsing the given byte array. - - - - - - - <_atfData> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_bitmapDatas> - - - * The texture on the cube's right face. - - - - - - - - * The texture on the cube's left face. - - - - - - - - * The texture on the cube's top face. - - - - - - - - * The texture on the cube's bottom face. - - - - - - - - * The texture on the cube's far face. - - - - - - - - * The texture on the cube's near face. - - - - - - - - - - - - - - - - - - - - - - - - - - - <_mipMaps expr="[]" line="16" static="1"> - - [] - - <_mipMapUses expr="[]" line="17" static="1"> - - [] - - <_bitmapData> - <_mipMapHolder> - <_generateMipmaps> - - - - - - - - - - - - - - - - - - - - { generateMipmaps : true } - - - - - <_instance static="1"> - - <_textures> - - - - <_usages> - - - - - - - - - - - - - * DEPRECRATED along with BitmapMaterial. Will be removed along with BitmapMaterial - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_mockTexture> - <_mockBitmapData> - <_renderer> - <_entityCollector> - <_cameras> - <_lenses> - <_nearPlaneDistance expr=".01"> - - .01 - - <_farPlaneDistance expr="2000"> - - 2000 - - <_position> - <_isRendering> - - - - - - * @inheritDoc - - - - * The origin where the environment map will be rendered. This is usually in the centre of the reflective object. - - - - - - - - * The near plane used by the camera lens. - - - - - - - - * The far plane of the camera lens. Can be used to cut off objects that are too far to be of interest in reflections - - - - - - - - - - - * Renders the scene in the given view for reflections. - * @param view The view containing the scene to render. - - - - * The renderer to use. - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - - - - - * Creates a new CubeReflectionTexture object - * @param size The size of the cube texture - - * CubeReflectionTexture provides a cube map texture for real-time reflections, used for any method that uses environment maps, - * such as EnvMapMethod. - * - * @see away3d.materials.methods.EnvMapMethod - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_mockTexture> - <_mockBitmapData> - <_renderer> - <_scale expr="1"> - - 1 - - <_isRendering> - <_entityCollector> - <_camera> - <_plane> - <_matrix> - <_vector> - <_scissorRect> - <_lens> - <_viewWidth> - <_viewHeight> - - - * The plane to reflect with. - - - - - - - - - - - * Sets the plane to match a given matrix. This is used to easily match a Mesh using a PlaneGeometry and yUp = false. - * @param matrix The transformation matrix to rotate the plane with. - - - - - - - * @inheritDoc - - - - * The renderer to use. - - - - - - - - * A scale factor to reduce the quality of the reflection. Default value is 1 (same quality as the View) - - - - - - - - - - - * Renders the scene in the given view for reflections. - * @param view The view containing the Scene to render. - - - - - - - - - - * @inheritDoc - - - - - - - - - - - - - - - - - { result : null } - - - - - - - - - - * Creates a new PlanarReflectionTexture object. - - * PlanarReflectionTexture is a Texture that can be used for material-based planar reflections, as provided by PlanarReflectionMethod, FresnelPlanarReflectionMethod. - * - * @see away3d.materials.methods.PlanarReflectionMethod - - - - - - <_specularMap> - <_glossMap> - - - - - - - - - - - - - - - - - - - - - - - { glossMap : null, specularMap : null } - - * A convenience texture that encodes a specular map in the red channel, and the gloss map in the green channel, as expected by BasicSpecularMapMethod - - - - - - - - - <_broadcaster> - <_autoPlay> - <_autoUpdate> - <_materialWidth> - <_materialHeight> - <_player> - <_clippingRect> - - - * Draws the video and updates the bitmap texture - * If autoUpdate is false and this function is not called the bitmap texture will not update! - - - - - - - - - - - - * Indicates whether the video will start playing on initialisation. - * If false, only the first frame is displayed. - - - - - - - - - - - - - - - - - - - * Indicates whether the material will redraw onEnterFrame - - - - - - - - - - - - - - - - - { player : null, autoPlay : false, loop : true, materialHeight : 256, materialWidth : 256 } - - - - - - - - - - - - - - "x" - - - - "y" - - - - "z" - - - - "+" - - - - "-" - - - - "av" - - <_axis static="1"> - <_condition static="1"> - - - - - - - - { condition : POSITIVE } - * Aligns a series of meshes to their bounds along a given axis. - * - * @param meshes A Vector of Mesh objects - * @param axis Represent the axis to align on. - * @param condition Can be POSITIVE ('+') or NEGATIVE ('-'), Default is POSITIVE ('+') - - - - - - - * Place one or more meshes at y 0 using their min bounds - - - - - - - - - { condition : "" } - * Applies to array elements the alignment according to axis, x, y or z and a condition. - * each element must have public x,y and z properties. In case elements are meshes only their positions is affected. Method doesn't take in account their respective bounds - * String condition: - * "+" align to highest value on a given axis - * "-" align to lowest value on a given axis - * "" align to a given axis on 0; This is the default. - * "av" align to average of all values on a given axis - * - * @param aObjs Array. An array with elements with x,y and z public properties such as Mesh, Object3D, ObjectContainer3D,Vector3D or Vertex - * @param axis String. Represent the axis to align on. - * @param condition [optional]. String. Can be '+", "-", "av" or "", Default is "", aligns to given axis at 0. - - - - - - - - * Applies to array elements a distributed alignment according to axis, x,y or z. In case elements are meshes only their positions is affected. Method doesn't take in account their respective bounds - * each element must have public x,y and z properties - * @param aObjs Array. An array with elements with x,y and z public properties such as Mesh, Object3D, ObjectContainer3D,Vector3D or Vertex - * @param axis String. Represent the axis to align on. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Align]]> - - - - - - - - - - - - - - <_keepNormals> - - - - - - - { keepNormals : true } - * Apply the explode code to a given ObjectContainer3D. - * @param object ObjectContainer3D. The target Object3d object. - * @param keepNormals Boolean. If the vertexNormals of the object are preserved. Default is true. - - - - - - - - { keepNormals : true } - - - - - - - * recursive parsing of a container. - - - - - - - - Explode]]> - - - - - - <_objectSpace> - <_keepMaterial> - <_disposeSources> - <_geomVOs> - <_toDispose> - - - - - - * Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false. - - - - - - - - * Determines if the material source(s) used for the merging are disposed. Defaults to false. - - - - - - - - * Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false. - - - - - - - - - * Merges all the children of a container into a single Mesh. If no Mesh object is found, method returns the receiver without modification. - * - * @param receiver The Mesh to receive the merged contents of the container. - * @param objectContainer The ObjectContainer3D holding the meshes to be mergd. - * - * @return The merged Mesh instance. - - - - - - - - - - - - - - - - * Merges 2 meshes into one. It is recommand to use apply when 2 meshes are to be merged. If more need to be merged, use either applyToMeshes or applyToContainer methods. - * - * @param receiver The Mesh to receive the merged contents of both meshes. - * @param mesh The Mesh to be merged with the receiver mesh - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { objectSpace : false, disposeSources : false, keepMaterial : false } - * @param keepMaterial [optional] Determines if the merged object uses the recevier mesh material information or keeps its source material(s). Defaults to false. - * If false and receiver object has multiple materials, the last material found in receiver submeshes is applied to the merged submesh(es). - * @param disposeSources [optional] Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false. - * If true, only receiver geometry and resulting mesh are kept in memory. - * @param objectSpace [optional] Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false. - - Merge]]> - - - - - - - - - - - - - - - 1 - - - - 2 - - - - 4 - - - - "min" - - - - "max" - -
    - - "center" -
    - - - <_recenter> - <_duplicate> - <_axis> - <_offset> - <_additionalOffset> - <_scaleTransform> - <_fullTransform> - <_centerTransform> - <_flipWinding> - - - - - - - - - - - - - - - - - - - { additionalOffset : 0, offset : CENTER } - * Clones a Mesh and mirrors the cloned mesh. returns the cloned (and mirrored) mesh. - * @param mesh the mesh to clone and mirror. - * @param axis the axis to mirror the mesh. - * @param offset can be MIN_BOUND, MAX_BOUND or CENTER. - * @param additionalOffset if MIN_BOUND or MAX_BOUND is selected as offset, this addional offset can be added. - - - - - - - - - - { additionalOffset : 0, offset : CENTER } - * Clones a ObjectContainer3D and all its children and mirrors the cloned Objects. returns the cloned (and mirrored) ObjectContainer3D. - * @param mesh the ObjectContainer3D to clone and mirror. - * @param axis the axis to mirror the ObjectContainer3D. - * @param offset can be MIN_BOUND, MAX_BOUND or CENTER. - * @param additionalOffset if MIN_BOUND or MAX_BOUND is selected as offset, this additional offset can be added. - - - - - - - - - - { additionalOffset : 0, offset : CENTER } - * Mirror a Mesh along a given Axis. - * @param mesh the mesh to mirror. - * @param axis the axis to mirror the mesh. - * @param offset can be MIN_BOUND, MAX_BOUND or CENTER. - * @param additionalOffset if MIN_BOUND or MAX_BOUND is selected as offset, this addional offset can be added. - - - - - - - - - - { additionalOffset : 0, offset : CENTER } - * Mirror a ObjectContainer3d, and all its children along a given Axis. - * @param ctr the ObjectContainer3d to mirror. - * @param axis the axis to mirror the ObjectContainer3d. - * @param offset can be MIN_BOUND, MAX_BOUND or CENTER. - * @param additionalOffset if MIN_BOUND or MAX_BOUND is selected as offset, this addional offset can be added. - - - - - - - - { keepOld : false } - - - - - - - - - - - - - - - - - - - - - - - { duplicate : true, recenter : false } - -
    - - - - 1 - - - - 2 - - <_weight> - <_radius expr="0"> - - 0 - - <_radiusMode> - - - - - - - - - { radius : 100, radiusMode : RADIUS, weight : 1 } - * Apply the SphereMaker code to a given ObjectContainer3D. - * @param container Mesh. The target ObjectContainer3D. - * @param weight Number. The Strength of the effect between 0 and 1. Default is 1. - * @param radiusMode int. Defines which radius will be used. Can be RADIUS or USE_BOUNDS_MAX. Default is RADIUS - * @param radius Number. The Radius to use if radiusMode is RADIUS. Default is 100. - - - - - - - - - - { radius : 100, radiusMode : RADIUS, weight : 1 } - * Apply the SphereMaker code to a given Mesh. - * @param mesh Mesh. The target Mesh object. - * @param weight Number. The Strength of the effect between 0 and 1. Default is 1. - * @param radiusMode int. Defines which radius will be used. Can be RADIUS or USE_BOUNDS_MAX. Default is RADIUS - * @param radius Number. The Radius to use if radiusMode is RADIUS. Default is 100. - - - - - - - - - - - SphereMaker]]> - - - - - "UseVertexNormals" - - - - "UseFaceNormals" - - - - <_keepUvs> - <_normalThreshold> - <_useNormalMode> - <_smoothNormals> - <_vertCnt> - - - - - - - - - - { smoothNormals : true, useNormalMode : USE_FACENORMALS, normalAngleDegree : 180, keepUvs : true } - * Perfoms a weld operation on a specified mesh geometry. - * - * @param mesh The mesh to weld - * @param keepUVs If the uvs should be kept as defined. Default is true. - * @param normalAngleDegree Threshold to compair the normals. Default is 180. - * @param useNormalMode If the face normals or vertex normals are used for comparison. VERTEXNORMALS keeps intact the original data. Default uses USE_FACENORMALS. - * @param smoothNormals Smooth. Default is true. - - - - - - - - - - - { smoothNormals : true, useNormalMode : USE_FACENORMALS, normalAngleDegree : 180, keepUVs : true } - * Perfoms a weld operation on all children Mesh object geometries of the specified ObjectContainer3D. - * - * @param obj The ObjectContainer3D to weld - * @param keepUVs If the uvs should be kept as defined. Default is true. - * @param normalAngleDegree Threshold to compair the normals. Default is 180. - * @param useNormalMode If the face normals or vertex normals are used for comparison. VERTEXNORMALS keeps intact the original data. Default uses USE_FACENORMALS. - * @param smoothNormals Smooth. Default is true. - - - - * returns howmany vertices were deleted during the welding operation. - - - - * returns howmany vertices were added during the welding operation. - - - - - - - - - - - - - - - - * Class Weld removes the vertices that can be shared from one or more meshes (smoothes the mesh surface when lighted). - - - - - 196605 - - - - 2 - - - - 3 - - - - 4 - - <_n expr="new Vertex()" line="23" static="1"> - - new Vertex() - - <_t expr="new Vertex()" line="24" static="1"> - - new Vertex() - - - - - - - - - - - - - - - - - - - - * Remove a face from a mesh - * @param mesh Mesh. The mesh to remove a face from - * @param index uint. Index of the face in vertices. The value represents the position in indices vector divided by 3. - * For instance, to edit face [1], the parameter indice will be 1. The x value of the v0 at position 3 in vertice vector is then extracted from vertices[indices[indice]] - * @param subGeomIndice uint. Index of vertex 1 of the face - - - - - - - - - * Remove a series of faces from a mesh. Indices and geomIndices must have the same length. - * Meshes with less that 20k faces and single material, will generally only have one single subgeometry. - * The geomIndices vector will then contain only zeros. - * IMPORTANT: the code considers the indices as location in the mesh subgemeometry indices vector, not the value at the pointer location. - * - * @param mesh Mesh. The mesh to remove a face from - * @param indices A vector with a series of uints indices: the indices of the faces to be removed. - * @param subGeomIndices A vector with a series of uints indices representing the subgeometries of the faces to be removed. - - - - - - - - - - - - - - * Adds a series of faces from a mesh. All vectors must have the same length. - * @param mesh Mesh. The mesh to remove a face from - * @param v0s A vector with a series of Vertex Objects representing the v0 of a face. - * @param v1s A vector with a series of Vertex Objects representing the v1 of a face. - * @param v2s A vector with a series of Vertex Objects representing the v2 of a face. - * @param uv0s A vector with a series of UV Objects representing the uv0 of a face. - * @param uv1s A vector with a series of UV Objects representing the uv1 of a face. - * @param uv2s A vector with a series of UV Objects representing the uv2 of a face. - - - - - - - - - - { side : 0 } - * Divides a face into 2 faces. - * @param mesh The mesh holding the face to split in 2 - * @param indice The face index. The value represents the position in indices vector divided by 3. - * For instance, to edit face [1], the parameter indice will be 1. The x value of the v0 at position 9 in vertices vector is then extracted from vertices[indices[indice*3]] - * @param subGeomIndice The index of the subgeometry holder this face. - * @param side [optional] The side of the face to split in two. 0 , 1 or 2. (clockwize). - - - - - - - - - * Divides a face into 3 faces. - * @param mesh The mesh holding the face to split in 3. - * @param indice The face index. The value represents the position in indices vector divided by 3. - * For instance, to edit face [1], the parameter indice will be 1. The x value of the v0 at position 9 in vertices vector is then extracted from vertices[indices[indice*3]] - * @param subGeomIndice The index of the subgeometry holder this face. - - - - - - - - - * Divides a face into 4 faces. - * @param mesh The mesh holding the face to split in 4. - * @param indice The face index. The value represents the position in indices vector divided by 3. - * For instance, to edit face [1], the parameter indice will be 1. The x value of the v0 at position 9 in vertices vector is then extracted from vertices[indices[indice*3]] - * @param subGeomIndice The index of the subgeometry holder this face. - - - - - - - * Divides all the faces of a mesh in 2 faces. - * @param mesh The mesh holding the faces to split in 2 - * @param face The face index. The value represents the position in indices vector divided by 3. - * @param side The side of the face to split in two. 0 , 1 or 2. (clockwize). - * At this time of dev, splitFaces method will abort if a subgeometry reaches max buffer limit of 65k - - - - - - - * Divides all the faces of a mesh in 3 faces. - * @param mesh The mesh holding the faces to split in 3 - * At this time of dev, triFaces method will abort if a subgeometry reaches max buffer limit of 65k - - - - - - - * Divides all the faces of a mesh in 4 faces. - * @param mesh The mesh holding the faces to split in 4 - * At this time of dev, quarterFaces method will abort if a subgeometry reaches max buffer limit of 65k - - - - - - - - - - { out : null } - - - - - - - - - - - - - - { out : null, uvScaleV : 1 } - - - - - - - - - { value : 0 } - - - - - - - - - - - - { tangents : null, normals : null } - - - - - - - - - - - - - - FaceHelper]]> - - - <_lightsArray static="1"> - <_light static="1"> - <_state static="1"> - - - - - - - - - - - - - - - * Adds one light to all materials found into an objectcontainer and its children. - * The lights eventually set previously on a material are kept unchanged. The new light is added to the lights array of the materials found during parsing. - * @param objectContainer3D ObjectContainer3D. The target ObjectContainer3D object to be inspected. - * @param light LightBase. The light to add to all materials found during the parsing of the target ObjectContainer3D. - - - - - - - - * Removes a given light from all materials found into an objectcontainer and its children. - * @param objectContainer3D ObjectContainer3D. The target ObjectContainer3D object to be inspected. - * @param light LightBase. The light to be removed from all materials found during the parsing of the target ObjectContainer3D. - - - - - - - - - - - - - - - - - - - - LightsHelper - * A series of methods to ease work with LightBase objects]]> - - - - - - - - - <_meshesData expr="new Vector<MeshDebugData>()"> - - ()]]> - - <_colorNormals expr="0xFF3399"> - - 0xFF3399 - - <_colorVertexNormals expr="0x66CCFF"> - - 0x66CCFF - - <_colorTangents expr="0xFFCC00"> - - 0xFFCC00 - - <_lengthNormals expr="50"> - - 50 - - <_lengthTangents expr="50"> - - 50 - - <_lengthVertexNormals expr="50"> - - 50 - - <_dirty> - - - - - - - - - - { displayTangents : false, displayVertexNormals : false, displayNormals : true } - - - - - - - - - - - { displayTangents : false, displayVertexNormals : false, displayNormals : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MeshDebugger - * Displays the normals, tangents and vertexNormals of a given mesh.]]> - - - - - - - - - - - - - - - - 196605 - - - - - - - * Returns the boundingRadius of an Entity of a Mesh. - * @param mesh Mesh. The mesh to get the boundingRadius from. - - - - - - - * Returns the boundingRadius of a ObjectContainer3D - * @param container ObjectContainer3D. The ObjectContainer3D and its children to get the boundingRadius from. - - - - - - - - { keepPosition : true } - * Recenter geometry - * @param mesh Mesh. The Mesh to recenter in its own objectspace - * @param keepPosition Boolean. KeepPosition applys the offset to the object position. Object is "visually" at same position. - - - - - - - - { keepPosition : true } - * Recenter geometry of all meshes found into container - * @param mesh Mesh. The Mesh to recenter in its own objectspace - * @param keepPosition Boolean. KeepPosition applys the offset to the object position. Object is "visually" at same position. - - - - - - - * Applys the rotation values of a mesh in object space and resets rotations to zero. - * @param mesh Mesh. The Mesh to alter - - - - - - - * Applys the rotation values of each mesh found into an ObjectContainer3D - * @param obj ObjectContainer3D. The ObjectContainer3D to alter - - - - - - - - - - - { parent : null } - * Applys the scaleX, scaleY and scaleZ scale factors to the mesh vertices. Resets the mesh scaleX, scaleY and scaleZ properties to 1; - * @param mesh Mesh. The Mesh to rescale - * @param scaleX Number. The scale factor to apply on all vertices x values. - * @param scaleY Number. The scale factor to apply on all vertices y values. - * @param scaleZ Number. The scale factor to apply on all vertices z values. - * @param parent ObjectContainer3D. If a parent is set, the position of children is also scaled - - - - - - - - - - - { parent : null } - * Applys the scale properties values of each mesh found into an ObjectContainer3D - * @param obj ObjectContainer3D. The ObjectContainer3D to alter - * @param scaleX Number. The scale factor to apply on all vertices x values. - * @param scaleY Number. The scale factor to apply on all vertices y values. - * @param scaleZ Number. The scale factor to apply on all vertices z values. - - - - - - - - - - * Applys an offset to a mesh at vertices level - * @param mesh Mesh. The Mesh to offset - * @param dx Number. The offset along the x axis - * @param dy Number. The offset along the y axis - * @param dz Number. The offset along the z axis - - - - - - - - { newName : "" } - * Clones a Mesh - * @param mesh Mesh. The mesh to clone - * @param newname [optional] String. new name for the duplicated mesh. Default = ""; - * - * @ returns Mesh - - - - - - - * Inverts the faces of all the Meshes into an ObjectContainer3D - * @param obj ObjectContainer3D. The ObjectContainer3D to invert. - - - - - - - - { invertU : false } - * Inverts the faces of a Mesh - * @param mesh Mesh. The Mesh to invert. - * @param invertUV Boolean. If the uvs are inverted too. Default is false; - - - - - - - - - - - - - - { useCompactSubGeometry : true, useDefaultMap : true, shareVertices : true, material : null, name : "", uvs : null } - - - - - - - - - { disposeSource : false } - - - - - - - - - { disposeSource : false } - - MeshHelper - * A series of methods usually usefull for mesh manipulations]]> - - - - - - 65535 - - - - - - - - { transforms : null } - - * ... - - - - - - - - - - - - - - { backgroundColor : 0, transparent : false } - - - - - - - - - - - - - { __to : 0, __from : 0, mapCount : 1 } - * Returns a SpriteSheetClipNode to pass to animator from animation id , cols and rows. - * @param animID String:The name of the animation - * @param cols uint: Howmany cells along the u axis. - * @param rows uint: Howmany cells along the v axis. - * @param mapCount uint: If the same animation is spread over more bitmapDatas. Howmany bimapDatas. Default is 1. - * @param from uint: The offset start if the animation first frame isn't in first cell top left on the map. zero based. Default is 0. - * @param to uint: The last cell if the animation last frame cell isn't located down right on the map. zero based. Default is 0. - * - * @return SpriteSheetClipNode SpriteSheetClipNode: The SpriteSheetClipNode filled with the data - - - * SpriteSheetHelper, a class to ease sprite sheet animation data generation - - - - <_normal expr="new Vector3D()"> - - new Vector3D() - - - - 1 - - - - 2 - - - - - - - - - - { length : 30, color : 0xFF3399 } - - - - - - - - - { length : 30, color : 0x66CCFF } - - - - - - - - - { length : 30, color : 0xFFCC00 } - - - - - - - - - - { length : 30, color : 0x66CCFF } - - - - - - - - - * MeshDebug, holds the data for the MeshDebugger class - - - - - - - <_defaultVertexTransform> - <_defaultInvVertexTransform> - <_defaultUVTransform> - - - - - - - - - - - - - * ... - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Begin object serialization. Output className and instanceName. - * @param className name of class being serialized - * @param instanceName name of instance being serialized - - - - - - - - * Serialize int - * @param name name of value being serialized - * @param value value being serialized - - - - - - - - * Serialize uint - * @param name name of value being serialized - * @param value value being serialized - - - - - - - - * Serialize Boolean - * @param name name of value being serialized - * @param value value being serialized - - - - - - - - * Serialize String - * @param name name of value being serialized - * @param value value being serialized - - - - - - - - * Serialize Vector3D - * @param name name of value being serialized - * @param value value being serialized - - - - - - - - - - - - - - - - * Serialize Quaternion - * @param name name of value being serialized - * @param value value being serialized - - - - * End object serialization - - - - * Creates a new SerializerBase object. - - * SerializerBase is the abstract class for all Serializers. It provides an interface for basic data type writing. - * It is not intended for reading. - * - * @see away3d.tools.serialize.Serialize - - - - <_indent expr="0"> - - 0 - - - - ": " - - - - 2 - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - - - - - * @inheritDoc - - - - * @inheritDoc - - <_indentString set="method" line="148"> - - - * Creates a new TraceSerializer object. - - * TraceSerializer is a concrete Serializer that will output its results to trace(). It has user settable tabSize and separator vars. - * - * @see away3d.tools.serialize.Serialize - - - - - - - - - - - - <_minX static="1"> - <_minY static="1"> - <_minZ static="1"> - <_maxX static="1"> - <_maxY static="1"> - <_maxZ static="1"> - <_defaultPosition expr="new Vector3D(0.0, 0.0, 0.0)" line="33" static="1"> - - new Vector3D(0.0, 0.0, 0.0) - - <_containers static="1"> - - - - - - - - - * Calculate the bounds of a Mesh object - * @param mesh Mesh. The Mesh to get the bounds from. - * Use the getters of this class to retrieve the results - - - - - - - - { worldBased : true } - * Calculate the bounds of an ObjectContainer3D object - * @param container ObjectContainer3D. The ObjectContainer3D to get the bounds from. - * Use the getters of this class to retrieve the results - - - - - - - - - - - - - - { outCenter : null } - * @param outCenter Vector3D. Optional Vector3D, if provided the same Vector3D is returned with the bounds center. - * @return the center of the bound - - - - * @return the smalest x value - - - - * @return the smalest y value - - - - * @return the smalest z value - - - - * @return the biggest x value - - - - * @return the biggest y value - - - - * @return the biggest z value - - - - * @return the width value from the bounds - - - - * @return the height value from the bounds - - - - * @return the depth value from the bounds - - - - - - - - - { parentTransform : null } - - - - - - - - - - - - - { resetBounds : false, parentTransform : null } - - - - - - - - - - - - - - - - - Bounds]]> - - - - - - - - - - <_colorMap> - <_colorObjects> - <_scaleX> - <_scaleY> - <_offsetX> - <_offsetY> - - - - - - - * If at the given coordinates a color is found that matches a defined color event, the color event will be triggered. - * - * @param x X coordinate on the source bmd - * @param y Y coordinate on the source bmd - - - - - - - - * returns the color at x,y coordinates. - * This method is made to test if the color is indeed the expected one, (the one you set for an event), as due to compression - * for instance using the Flash IDE library, compression might have altered the color values. - * - * @param x X coordinate on the source bitmapData - * @param y Y coordinate on the source bitmapData - * - * @return A uint, the color value at coordinates x, y - * @see plotAt - - - - - - - - - { color : 0xFF0000 } - * Another method for debug, if you addChild your bitmapdata on screen, this method will colour a pixel at the coordinates - * helping you to visualize if your scale factors or entered coordinates are correct. - * @param x X coordinate on the source bitmapData - * @param y Y coordinate on the source bitmapData - - - - - - - - - - - - * Defines a color event for this class. - * If read method is called, and the target pixel color has the same value as a previously set listener, an event is triggered. - * - * @param color A color Number - * @param eventID A string to identify that event - * @param listener The function that must be triggered - - - - - - - * removes a color event by its id - * - * @param eventID The Event id - - - - - - - * The offsetX, offsetY - * by default offsetX and offsetY represent the center of the map. - - - - - - - - - - - - - * defines the scaleX and scaleY. Defines the ratio map to the 3d world - - - - - - - - - - - - - * The source bitmapdata uses for colour readings - - - - - - - - - - - - - - { scaleY : 1, scaleX : 1 } - ColorHitMap - * - * @param bitmapData The bitmapdata with color regions to act as trigger. - * @param scaleX [optional] A factor scale along the X axis. Default is 1. - * @param scaleY [optional] A factor scale along the Y axis. Default is 1. - * - * Note that by default the class is considered as centered, like a plane at 0,0,0. - * Also by default coordinates offset are set. If a map of 256x256 is set, and no custom offsets are set. - * The read method using the camera position -128 x and -128 z would return the color value found at 0,0 on the map.]]> - - - - - - - - - - - - - - - - "xz" - - - - "xy" - - - - "zy" - - - - 0.000001 - - - - - - - - - - <_view> - <_debug> - <_object3d> - <_planeXZ> - <_planeXY> - <_planeZY> - <_red> - <_green> - <_blue> - <_planesContainer> - <_np expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_intersect expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_rotations> - <_baserotations> - <_offsetCenter expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_bSetOffset> - <_a expr="0"> - - 0 - - <_b expr="0"> - - 0 - - <_c expr="0"> - - 0 - - <_d expr="1"> - - 1 - - <_planeid> - <_useRotations> - - - - - - - * Defines if the target object3d plane will be aligned to object rotations or not - * - * @param b Boolean. Defines if the target object3d planes will be aligned to object rotations or not. Default is false. - - - - - - - - * Defines an offset for the drag from center mesh to mouse position. - * object3d must have been set previously for this setter. if not an error is triggered - * Since the offset is set from center to mouse projection, its usually a good practice to set it during firt mouse down - * prior to drag. - - - - - * getIntersect method returns the 3d point in space (Vector3D) where mouse hits the given plane. - *@return Vector3D the difference mouse mouse hit to object center - - - - - - - * Displays the planes for debug/visual aid purposes - * - * @param b Boolean. Display the planes of the dragged object3d. Default is false; - - - - - - - - * Changes the plane the object will be considered on. - * If class debug is set to true. It display the selected plane for debug/visual aid purposes with a brighter color. - * @param planeid String. Plane to drag the object3d on. - * Possible strings are Drag3D.PLANE_XZ ("xz"), Drag3D.PLANE_XY ("xy") or Drag3D.PLANE_ZY ("zy"). Default is Drag3D.PLANE_XZ; - - - - - - - - * Returns the Vector3D where mouse to scene ray hits the plane set for the class. - * - * @return Vector3D The intersection Vector3D - * If both x and y params are NaN, the class will return the hit from mouse coordinates - * @param x [optional] Number. x coordinate. - * @param y [optional] Number. y coordinate. - - - - * if an ObjectContainer3D is set this handler will calculate the mouse intersection on given plane and will update position - * and rotations of the ObjectContainer3D set accordingly - - - - - - - * Sets the target ObjectContainer3D to the class. The ObjectContainer3D that will be dragged - * - * @param object3d ObjectContainer3D. The ObjectContainer3D that will be dragged. Default is null. When null planes will be considered at 0,0,0 world - - - - - - - * Defines planes as the position of a given ObjectContainer3D - * - * @param object3d ObjectContainer3D. The object3d that will be used to define the planes - - - - - - - * Defines planes position by a postion Vector3D - * - * @param pos Vector3D. The Vector3D that will be used to define the planes position - - - - - - - - - - - - - - - { obj : null } - - - - - - - - - { plane : PLANE_XZ, object3d : null } - Drag3D - * @param view View3D. The view3d where the object to drag is or will be addChilded. - * @param object3d [optional] ObjectContainer3D. The object3D to drag. - * @param plane [optional] String. The plane to drag on.]]> - - * Class Drag3D allows free dragging of an ObjectContainer3D onto a given plane. - * - * locks on world planes - * locks on ObjectContainer3D planes - * locks on ObjectContainer3D rotations planes - - - - - 3 * 0xffff - - - - 15 * 0xffff - - - - - - - - - - - - - - { triangleOffset : 0 } - * Build a list of sub-geometries from raw data vectors, splitting them up in - * such a way that they won't exceed buffer length limits. - - - - - - - - - - - - - - * Build a sub-geometry from data vectors. - - - - - - - - - - - - { suvs : null, uvs : null, tangents : null, normals : null, vertices : null } - - - - - - - - - - - - - - - <_unit> - <_objectSpace> - - - - - - - { dovert : false } - * Apply the grid code to a given object3D. If type ObjectContainer3D, all children Mesh vertices will be affected. - * @param object3d Object3D. The Object3d to snap to grid. - * @param dovert [optional]. If the vertices must be handled or not. When false only object position is snapped to grid. Default is false. - - - - - - - - - - - - - - * Apply the grid code to a single mesh - * @param mesh Mesh. The mesh to snap to grid. Vertices are affected by default. Mesh position is snapped if grid.objectSpace is true; - - - - - - - * Defines if the grid unit. - - - - - - - - * Defines if the grid unit is applied in objectspace or worldspace. In worldspace, objects positions are affected. - - - - - - - - - { dovert : true } - - - - - - - - - - - - { objectSpace : false, unit : 1 } - * Grid snaps vertexes according to a given grid unit - * @param unit [optional] Number. The grid unit. Default is 1. - * @param objectSpace [optional] Boolean. Apply only to vertexes in geometry objectspace when Object3D are considered. Default is false. - - Grid]]> - - - - - "front" - - - - "back" - - - - "top" - - - - "bottom" - - - - "left" - - - - "right" - - - - "cylindricalx" - - - - "cylindricaly" - - - - "cylindricalz" - - - - "spherical" - - <_width static="1"> - <_height static="1"> - <_depth static="1"> - <_offsetW static="1"> - <_offsetH static="1"> - <_offsetD static="1"> - <_orientation static="1"> - <_center static="1"> - <_vn static="1"> - <_ve static="1"> - <_vp static="1"> - <_dir static="1"> - <_radius static="1"> - <_uv static="1"> - - - Math.PI - - - - Math.PI * 2 - - - - - - - - * Class remaps the uv data of a mesh - * - * @param orientation String. Defines the projection direction and methods. - * Note: As we use triangles, cylindrical and spherical projections might require correction, - * as some faces, may have vertices pointing at other side of the map, causing some faces to be rendered as a whole reverted map. - * - * @param obj ObjectContainer3D. The ObjectContainer3D to remap. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_orig expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_dir expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_tu expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_tv expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_w expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_pn expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_npn expr="new Vector3D(0.0, 0.0, 0.0)"> - - new Vector3D(0.0, 0.0, 0.0) - - <_a> - <_b> - <_c> - <_d> - - - - - - * Defines the origin point of the Ray object - * @return Vector3D The origin point of the Ray object - - - - - - - - * Defines the directional vector of the Ray object - * @return Vector3D The directional vector - - - - - * Defines the directional normal of the Ray object - * @return Vector3D The normal of the plane - - - - - - - - - - * Checks if a ray intersects a sphere. - *@param pOrig Vector3D. The origin vector of the ray. - *@param dir Vector3D. The normalized direction vector of the ray. - *@param sPos Vector3D. The position of the sphere. - *@param radius Number. The radius of the sphere. - * - * @return Boolean If the ray intersects the sphere - - - - - - - - - - - - - { outVector3D : null, bNormal : false, bNearest : true } - * Returns a Vector3D where the ray intersects a sphere. Return null if the ray misses the sphere - * - *@param pOrig Vector3D. The origin of the ray. - *@param dir Vector3D. The direction of the ray. - *@param sPos Vector3D. The position of the sphere. - *@param radius Number. The radius of the sphere. - *@param bNearest [optional] Boolean. If the ray traverses the sphere and if true the returned hit is the nearest to ray origin. Default is true. - *@param bNormal [optional] Boolean. If the returned vector is the normal of the hitpoint. Default is false. - * - * @return Vector3D The intersection vector3D or the normal vector3D of the hitpoint. Default is false. - * - * example of a ray triggered from mouse - var pMouse:Vector3D = _view.unproject(_view.mouseX, _view.mouseY, 1); - var cam:Vector3D = _view.camera.position; - var dir:Vector3D = new Vector3D( pMouse.x-cam.x, pMouse.y-cam.y, pMouse.z-cam.z); - dir.normalize(); - - var spherePosition:Vector3D = new Vector3D(200, 200, 200); - - //hittest - trace("Ray intersects sphere :"+ _ray.intersectsSphere(pMouse, dir, spherePosition, 500) ); - - var sintersect:Vector3D = _ray.getRayToSphereIntersection(pMouse, dir, spherePosition, 500, true, false); - if sintersect == null no hit, else sintersect = intersection vector3d or the normal of the intersection - - - - - - - - - - - - { outVector3D : null } - * Returns a Vector3D where the ray intersects a plane inside a triangle - * Returns null if no hit is found. - * - *@param p0 Vector3D. The origin of the ray. - *@param p1 Vector3D. The end of the ray. - *@param v0 Vector3D. The first scenespace vertex of the face. - *@param v1 Vector3D. The second scenespace vertex of the face. - *@param v2 Vector3D. The third scenespace vertex of the face. - *@param outVector3D Vector3D. Optional user defined Vector3D returned with result values - * - * example: fire a ray from camera position to 0,0,0 and test if it hits the triangle. - - view.camera.x = 100; - view.camera.y = 100; - view.camera.z = 500; - - var v0:Vector3D = new Vector3D(-200, 100, 60); - var v1:Vector3D = new Vector3D(200, 100, 60); - var v2:Vector3D = new Vector3D(0, -200, 60); - - var dest: Vector3D = new Vector3D(0, 0, 0); - - var intersect:Vector3D = _ray.getRayToTriangleIntersection(_view.camera.position, dest, v0, v1, v2 ); - trace("intersect ray: "+intersect); - - * - * @return Vector3D The intersection point - - - - - - - - - - - - - - 4096 - - - - - - - - - - - - - - - - - - - - - <_colorNames static="1"> - - - - <_hexChars expr=""0123456789abcdefABCDEF"" line="19" static="1"> - - "0123456789abcdefABCDEF" - - <_notClasses expr="new Map<String,Bool>()" line="21" static="1"> - - - - - ()]]> - - <_classes expr="new Map<String,Dynamic>()" line="22" static="1"> - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Helper class for casting assets to usable objects - - - - - - - - - - - - - - - - - - - - - - - - - - - on cpp.]]> - - - - - - <_new public="1" get="inline" set="null" line="37" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="37" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="26" static="1"> - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="26" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - "::cpp::Pointer_obj::fromRaw" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "cpp/Pointer.h" - "cpp.Pointer" - variable - - - - <_hx_getIndex public="1" set="method"> - <_hx_getTag public="1" set="method"> - <_hx_getParamCount public="1" set="method"> - <_hx_getParamI public="1" set="method"> - - - - <_hx_getParameters public="1" set="method"> - - - - - - - - - "hx.EnumBase" - - - - - "HX_INVALID_CAST" - - - - "HX_INDEX_OUT_OF_BOUNDS" - - - - "HX_INVALID_OBJECT" - - - - "HX_INVALID_ARG_COUNT" - - - - "HX_NULL_FUNCTION_POINTER" - - - - - - - - - - - - - - - - - - - - - - - - "cpp/Pointer.h" - - - - <_new public="1" get="inline" set="null" line="30" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="30" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Load and return a Cpp primitive from a DLL library. - - - - - Unloaded all dynamic libraries in reverse order of loading. - Returns the number of libraries unloaded. - - <_loadPrime public="1" set="method" line="50" static="1"> - - - - - - - - - - { quietFail : false } - - - - - - - - - - - Tries to load, and always returns a valid function, but the function may throw - if called. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns bytes referencing the content of a string. - Use with extreme caution - changing constant strings will crash. - Changing one string can cause others to change unexpectedly. - Only really safe if you are using it read-only or if it comes from stringReference above - - - - - - - - Print the specified value on the default output. - - - - - - - This function is used to make porting from neko to cpp easy. - It does not need to do anything because the c-code can work with any Dynamic - - - - - - - This function is used to make porting from neko to cpp easy. - It does not need to do anything because the c-code can work with any Dynamic - - - - - - - - Print the specified value on the default output followed by a newline character. - - - - - - - - - Platform-specific Cpp Library. Provides some platform-specific functions - for the C++ target, such as conversion from Haxe types to native types - and vice-versa. - - - - - - - - - "_hx_create_array_length" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "_hx_reslove_virtual_array" - - - - - - - - "_hx_array_unsafe_get" - - - - - - - - - - - "_hx_array_unsafe_set" - - - - - - - - - "_hx_array_set_size_exact" - - -
    - - - "]]> - - - - - - - - "__hxcpp_gc_mem_info" - - - - - - - - - "_hx_allocate_extended" - - - - - - - - - - "_hx_add_finalizable" - - - - - - - - "::hx::InternalNew" - - - - - - - - - - - - - - - "_hx_std_process_run" - - - - - - - - - "_hx_std_process_run" - - - - - - - - - - "_hx_std_process_stdout_read" - - - - - - - - - - "_hx_std_process_stderr_read" - - - - - - - - - - "_hx_std_process_stdin_write" - - - - - - - "_hx_std_process_stdin_close" - - - - - - - "_hx_std_process_exit" - - - - - - - "_hx_std_process_pid" - - - - - - - "_hx_std_process_kill" - - - - - - - "_hx_std_process_close" - - - - "]]> - - - - - - "_hx_std_socket_init" - - - - - - - "_hx_std_socket_new" - - - - - - - - "_hx_std_socket_new" - - - - - - - "_hx_std_socket_close" - - - - - - - - - "_hx_std_socket_bind" - - - - - - - - - "_hx_std_socket_bind_ipv6" - - - - - - - - "_hx_std_socket_send_char" - - - - - - - - - - "_hx_std_socket_send" - - - - - - - - - - "_hx_std_socket_recv" - - - - - - - "_hx_std_socket_recv_char" - - - - - - - - "_hx_std_socket_write" - - - - - - - "_hx_std_socket_read" - - - - - - - "_hx_std_host_resolve_ipv6" - - - - - - - "_hx_std_host_resolve" - - - - - - - "_hx_std_host_to_string" - - - - - - - "_hx_std_host_to_string_ipv6" - - - - - - - "_hx_std_host_reverse" - - - - - - - "_hx_std_host_reverse_ipv6" - - - - "_hx_std_host_local" - - - - - - - - - - "_hx_std_socket_connect" - - - - - - - - - "_hx_std_socket_connect_ipv6" - - - - - - - - "_hx_std_socket_listen" - - - - - - - - - - "_hx_std_socket_select" - - - - - - - - - - "_hx_std_socket_fast_select" - - - - - - - "_hx_std_socket_accept" - - - - - - - "_hx_std_socket_peer" - - - - - - - "_hx_std_socket_host" - - - - - - - - "_hx_std_socket_set_timeout" - - - - - - - - - "_hx_std_socket_shutdown" - - - - - - - - "_hx_std_socket_set_blocking" - - - - - - - - "_hx_std_socket_set_fast_send" - - - - - - - - "_hx_std_socket_set_broadcast" - - - - - - - "_hx_std_socket_poll_alloc" - - - - - - - - - "_hx_std_socket_poll_prepare" - - - - - - - - "_hx_std_socket_poll_events" - - - - - - - - - "_hx_std_socket_poll" - - - - - - - - - - - "_hx_std_socket_send_to" - - - - - - - - - - - "_hx_std_socket_recv_from" - - - - "]]> - - - - - - - - - "_hx_ssl_debug_set" - - - - - - - "_hx_ssl_new" - - - - - - - "_hx_ssl_close" - - - - - - - "_hx_ssl_handshake" - - - - - - - - "_hx_ssl_set_socket" - - - - - - - - "_hx_ssl_set_hostname" - - - - - - - "_hx_ssl_get_peer_certificate" - - - - - - - "_hx_ssl_get_verify_result" - - - - - - - - "_hx_ssl_send_char" - - - - - - - - - - "_hx_ssl_send" - - - - - - - - "_hx_ssl_write" - - - - - - - "_hx_ssl_recv_char" - - - - - - - - - - "_hx_ssl_recv" - - - - - - - "_hx_ssl_read" - - - - - - - "_hx_ssl_conf_new" - - - - - - - "_hx_ssl_conf_close" - - - - - - - - "_hx_ssl_conf_set_ca" - - - - - - - - "_hx_ssl_conf_set_verify" - - - - - - - - - "_hx_ssl_conf_set_cert" - - - - - - - - "_hx_ssl_conf_set_servername_callback" - - - - "_hx_ssl_cert_load_defaults" - - - - - - - "_hx_ssl_cert_load_file" - - - - - - - "_hx_ssl_cert_load_path" - - - - - - - - "_hx_ssl_cert_get_subject" - - - - - - - - "_hx_ssl_cert_get_issuer" - - - - - - - "_hx_ssl_cert_get_altnames" - - - - - - - "_hx_ssl_cert_get_notbefore" - - - - - - - "_hx_ssl_cert_get_notafter" - - - - - - - "_hx_ssl_cert_get_next" - - - - - - - - "_hx_ssl_cert_add_pem" - - - - - - - - "_hx_ssl_cert_add_der" - - - - - - - - "_hx_ssl_key_from_der" - - - - - - - - - "_hx_ssl_key_from_pem" - - - - - - - - "_hx_ssl_dgst_make" - - - - - - - - - "_hx_ssl_dgst_sign" - - - - - - - - - - "_hx_ssl_dgst_verify" - - - - "_hx_ssl_init" - - - - "]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "__hxcpp_parse_float" - - - - - - - - - "__hxcpp_parse_substr_float" - - - - - - - "__hxcpp_parse_substr_int" - - - - - - - - - "__hxcpp_parse_substr_int" - - - - - - - - "_hx_string_compare" - - - - - - - - "_hx_utf8_char_code_at" - - - - - - - "_hx_utf8_length" - - - - - - - "_hx_utf8_is_valid" - - - - - - - - - "_hx_utf8_sub" - - - - - - - - "_hx_string_create" - - - - - - - "_hx_utf8_decode_advance" - - - - - - - - - "__hxcpp_print" - - - - - - - "__hxcpp_println" - - - - "]]> - - - - - - - - - - -1 - - - - 0xff - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 0x100 - - - - - - - - - - - - - - "::cpp::Pointer_obj::fromRaw" - - - - - - - - "::cpp::Pointer_obj::fromHandle" - - - - - - - - - - - - - - - - - - - - - - - - - "::cpp::Pointer_obj::arrayElem" - - - - - - - - - - - - "::cpp::Pointer_obj::ofArray" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - variable - - - - - - - - - "::hx::AddressOf" - - - - - - - - - - - "::hx::AddressOf" - - - - - - Allows haxe to type result correctly, and hxcpp can recognise this and - prevent unwanted casting. - reference - - - - Allows haxe to type result correctly, and hxcpp can recognise this use the - correct type. - - - - - - - - - - - - "void" - - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - - - - Introduced hxcpp_api_level 310 - - Returns stats on memory usage: - - `MEM_INFO_USAGE` - estimate of how much is needed by program (at last collect) - - `MEM_INFO_RESERVED` - memory allocated for possible use - - `MEM_INFO_CURRENT` - memory in use, includes uncollected garbage. - This will generally saw-tooth between USAGE and RESERVED - - `MEM_INFO_LARGE` - Size of separate pool used for large allocs. Included in all the above. - - - - - - - - - - - - - - { printInstances : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_onRequest set="method" line="159" static="1"> - - - - <_onSpectate set="method" line="158" static="1"> - - - - <_onJoin set="method" line="156" static="1"> - - - - <_onError set="method" line="154" static="1"> - - - - - <_onDisconnected set="method" line="152" static="1"> - - - - - <_onReady set="method" line="150" static="1"> - - - - - - * Called once Discord has connected and is ready to start. - - - - - - - - * Called when discord has disconnected the program. - * Int is the error code, String is the error message. - - - - - - - - * Called when an error occured. - * Int is the error code, String is the error message. - - - - - - - * Called when the user has joined a game through discord. - * String is the join secret. - - - - - - - * Called when the user has spectated a game through discord. - * String is the spectate secret. - - - - - - - * Called when the user has recieved a join request. - * JoinRequest contains the userID, username, and avatar of the user. - - - - - - - * Attempts to connect to discord and initialize itself. - * @param _options - Anonymouse structure containin the start options. - - - - * Call this to process any callbacks. - - - - - - - - * Respond to a join request. - * @param _userID - The userID of the user who requested to join. - * @param _response - The reply to the request. - - - - - - - * Set the rich presence for discord. - * @param _options - All of the rich presence options. - - - - * Stops rich presence content from showing. - - - - - <_init set="method" static="1"> - - - - - - - - - - - - "linc::discord_rpc::init" - - - - - - - - - "linc::discord_rpc::process" - - - - - - - - "linc::discord_rpc::respond" - - - - - - - - - - - - - - - - - - - - - "linc::discord_rpc::update_presence" - - - - "linc::discord_rpc::shutdown" - - <_onReady get="inline" set="null" line="150" static="1"> - <_onDisconnected get="inline" set="null" line="152" static="1"> - - - - - <_onError get="inline" set="null" line="154" static="1"> - - - - - <_onJoin get="inline" set="null" line="156" static="1"> - - - - <_onSpectate get="inline" set="null" line="158" static="1"> - - - - <_onRequest get="inline" set="null" line="159" static="1"> - - - - <__touch get="inline" set="null" expr=""1.680366002e+012"" line="22" static="1"> - - "1.680366002e+012" - - - - \n"]]> - - "linc_discord_rpc.h" - linc.Linc.touch() - linc.Linc.xml("discord_rpc") - - - - - - - - - "linc_discord_rpc.h" - "DiscordJoinRequest" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    -
    - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - idEnumerator++ - * A unique ID starting from 0 and increasing by 1 for each subsequent `FlxBasic` that is created. - - - - true - * Controls whether `update()` is automatically called by `FlxState`/`FlxGroup`. - - - - true - * Controls whether `draw()` is automatically called by `FlxState`/`FlxGroup`. - - - - true - * Useful state for many game objects - "dead" (`!alive`) vs `alive`. `kill()` and - * `revive()` both flip this switch (along with `exists`, but you can override that). - - - - true - * Controls whether `update()` and `draw()` are automatically called by `FlxState`/`FlxGroup`. - - - - * Gets or sets the first camera of this object. - - - - * This determines on which `FlxCamera`s this object will be drawn. If it is `null` / has not been - * set, it uses the list of default draw targets, which is controlled via `FlxG.camera.setDefaultDrawTarget` - * as well as the `DefaultDrawTarget` argument of `FlxG.camera.add`. - - - - - NONE - - - * Enum that informs the collision system which type of object this is (to avoid expensive type casting). - - <_cameras> - - - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - - - * Handy function for "killing" game objects. Use `reset()` to revive them. - * Default behavior is to flag them as nonexistent AND dead. - * However, if you want the "corpse" to remain in the game, like to animate an effect or whatever, - * you should `override` this, setting only `alive` to `false`, and leaving `exists` `true`. - - - - * Handy function for bringing game objects "back to life". Just sets `alive` and `exists` back to `true`. - * In practice, this function is most often called by `FlxObject#reset()`. - - - - - - - * Override this function to update your class's position and appearance. - * This is where most of your game rules and behavioral code will go. - - - - * Override this function to control how the object is drawn. - * Doing so is rarely necessary, but can be very useful. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This is a useful "generic" Flixel object. Both `FlxObject` and - * `FlxGroup` extend this class. Has no size, position or graphical data. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * Types of flixel objects - mainly for collisions. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (0, flixel.FlxType) - - - - cast (1, flixel.FlxType) - - - - cast (2, flixel.FlxType) - - - - cast (3, flixel.FlxType) - - - - cast (4, flixel.FlxType) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Handy function for "killing" game objects. Use `reset()` to revive them. - * Default behavior is to flag them as nonexistent AND dead. - * However, if you want the "corpse" to remain in the game, like to animate an effect or whatever, - * you should `override` this, setting only `alive` to `false`, and leaving `exists` `true`. - - <_HX_SUPER__kill public="1" set="method" line="31"> - - - * Handy function for bringing game objects "back to life". Just sets `alive` and `exists` back to `true`. - * In practice, this function is most often called by `FlxObject#reset()`. - - <_HX_SUPER__revive public="1" set="method" line="31"> - - - - - - * Override this function to update your class's position and appearance. - * This is where most of your game rules and behavioral code will go. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Override this function to control how the object is drawn. - * Doing so is rarely necessary, but can be very useful. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_active set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_exists set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_alive set="method" line="148"> - - - - - - - - <_HX_SUPER__get_camera set="method" line="148"> - - - - - - - - <_HX_SUPER__set_camera set="method" line="148"> - - - - - - - - <_HX_SUPER__get_cameras set="method" line="148"> - - - - - - - - <_HX_SUPER__set_cameras set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxBasic - flixel.FlxBasic.FlxType - flixel.FlxBasic.FlxType - flixel.FlxBasic.IFlxBasic - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_pool expr="new FlxPool<FlxRect>(FlxRect)" line="15" static="1"> - - (FlxRect)]]> - - - - - - - - - - { Height : 0, Width : 0, Y : 0, X : 0 } - * Recycle or create new FlxRect. - * Be sure to put() them back into the pool after you're done with them! - - - - - - - - - - { Height : 0, Width : 0, Y : 0, X : 0 } - * Recycle or create a new FlxRect which will automatically be released - * to the pool when passed into a flixel function. - - - - - - - - - * The x coordinate of the left side of the rectangle. - - - - * The x coordinate of the right side of the rectangle. - - - - * The y coordinate of the top of the rectangle. - - - - * The y coordinate of the bottom of the rectangle. - - - - * Whether width or height of this rectangle is equal to zero or not. - - <_weak expr="false"> - - false - - <_inPool expr="false"> - - false - - - - * Add this FlxRect to the recycling pool. - - - - * Add this FlxPoint to the recycling pool if it's a weak reference (allocated via weak()). - - - - - - - - * Shortcut for setting both width and Height. - * - * @param Width The new sprite width. - * @param Height The new sprite height. - - - - - - - - * Shortcut for setting both x and y. - - - - - - - - - - { Height : 0, Width : 0, Y : 0, X : 0 } - * Fill this rectangle with the data provided. - * - * @param X The X-coordinate of the point in space. - * @param Y The Y-coordinate of the point in space. - * @param Width Desired width of the rectangle. - * @param Height Desired height of the rectangle. - * @return A reference to itself. - - - - - - - * Helper function, just copies the values from the specified rectangle. - * - * @param Rect Any FlxRect. - * @return A reference to itself. - - - - - - - * Helper function, just copies the values from this rectangle to the specified rectangle. - * - * @param Point Any FlxRect. - * @return A reference to the altered rectangle parameter. - - - - - - - * Helper function, just copies the values from the specified Flash rectangle. - * - * @param FlashRect Any Rectangle. - * @return A reference to itself. - - - - - - - * Helper function, just copies the values from this rectangle to the specified Flash rectangle. - * - * @param Point Any Rectangle. - * @return A reference to the altered rectangle parameter. - - - - - - - * Checks to see if some FlxRect object overlaps this FlxRect object. - * - * @param Rect The rectangle being tested. - * @return Whether or not the two rectangles overlap. - - - - - - - * Returns true if this FlxRect contains the FlxPoint - * - * @param Point The FlxPoint to check - * @return True if the FlxPoint is within this FlxRect, otherwise false - - - - - - - * Add another rectangle to this one by filling in the - * horizontal and vertical space between the two rectangles. - * - * @param Rect The second FlxRect to add to this one - * @return The changed FlxRect - - - - * Rounds x, y, width and height using Math.floor() - - - - * Rounds x, y, width and height using Math.ceil() - - - - * Rounds x, y, width and height using Math.round() - - - - - - - - * Calculation of bounding box for two points - * - * @param point1 first point to calculate bounding box - * @param point2 second point to calculate bounding box - * @return this rectangle filled with the position and size of bounding box for two specified points - - - - - - - * Add another point to this rectangle one by filling in the - * horizontal and vertical space between the point and this rectangle. - * - * @param Point point to add to this one - * @return The changed FlxRect - - - - - - - - - - - - - - - * Calculates the globally aligned bounding box of a `FlxRect` with the given angle and origin. - * @param degrees The rotation, in degrees of the rect. - * @param origin The relative pivot point, or the point that the rectangle rotates around. - * if `null` , the top-left (or 0,0) is used. - * @param newRect Optional output `FlxRect`, if `null`, a new one is created. Note: If you like, you can - * pass in the input rect to manipulate it. ex: `rect.calcRotatedBounds(angle, null, rect)` - * @return A globally aligned `FlxRect` that fully contains the input rectangle. - * @since 4.11.0 - - - - * Necessary for IFlxDestroyable. - - - - - - - * Checks if this rectangle's properties are equal to properties of provided rect. - * - * @param rect Rectangle to check equality to. - * @return Whether both rectangles are equal. - - - - - - - - * Returns the area of intersection with specified rectangle. - * If the rectangles do not intersect, this method returns an empty rectangle. - * - * @param rect Rectangle to check intersection against. - * @return The area of intersection of two rectangles. - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Height : 0, Width : 0, Y : 0, X : 0 } - - - - * Stores a rectangle. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * While you can alter the zoom of each camera after the fact, - * this variable determines what value the camera will start at when created. - - - - "`FlxCamera.defaultCameras` is deprecated, use `FlxG.cameras.setDefaultDrawTarget` instead" - * Used behind-the-scenes during the draw phase so that members use the same default - * cameras as their parent. - * - * Prior to 4.9.0 it was useful to change this value, but that feature is deprecated. - * Instead use the `defaultDrawTarget` argument in `FlxG.cameras.add `. - * or`FlxG.cameras.setDefaultDrawTarget` . - * @see FlxG.cameras.setDefaultDrawTarget - - <_defaultCameras static="1"> - - - flixel.FlxBasic.get_cameras - flixel.FlxBasic.get_camera - flixel.system.frontEnds.CameraFrontEnd - flixel.group.FlxTypedGroup.draw - - * Used behind-the-scenes during the draw phase so that members use the same default - * cameras as their parent. - * - * This is the non-deprecated list that the public `defaultCameras` proxies. Allows flixel classes - * to use it without warning. - - <_storageTilesHead static="1"> - - * Draw tiles stack items that can be reused - - <_storageTrianglesHead static="1"> - - * Draw triangles stack items that can be reused - - - - ()]]> - * Internal variable, used for visibility checks to minimize `drawTriangles()` calls. - - - - new Sprite() - * Internal variable, used in blit render mode to render triangles (`drawTriangles()`) on camera's buffer. - - - - FlxPoint.get() - * Internal variables, used in blit render mode to draw trianglesSprite on camera's buffer. - * Added for less garbage creation. - - - - FlxRect.get() - - - - "`FlxCamera.defaultCameras` is deprecated, use `FlxG.cameras.setDefaultDrawTarget` instead" - - - - - - - "`FlxCamera.defaultCameras` is deprecated, use `FlxG.cameras.setDefaultDrawTarget` instead" - - - - - - - - - - - - null - * Whenever the camera should be widescreen or not. - * If null, will use the `FlxG.widescreen` variable. - - - - new FlxPoint(0, 0) - * Widescreen dimensions multipliers - * For example, if the camera is in widescreen mode and the game is in 1920x720 while the camera is in 1280x720, - * the value will be equal to `new FlxPoint(1.5, 1);`. - - - - - - - - true - * Whenever the camera follow is active. Used for pause. - - - - true - * Whenever the fix for black bars when the camera rotates should be enabled. Defaults to `true`. - - - - 0 - * The X position of this camera's display. `zoom` does NOT affect this number. - * Measured in pixels from the left side of the window. - * You might be interested in using camera's `scroll.x` instead. - - - - 0 - * The Y position of this camera's display. `zoom` does NOT affect this number. - * Measured in pixels from the top of the window. - * You might be interested in using camera's `scroll.y` instead. - - - - 0 - * The scaling on horizontal axis for this camera. - * Setting `scaleX` changes `scaleX` and x coordinate of camera's internal display objects. - - - - 0 - * The scaling on vertical axis for this camera. - * Setting `scaleY` changes `scaleY` and y coordinate of camera's internal display objects. - - - - * Product of camera's `scaleX` and game's scale mode `scale.x` multiplication. - - - - * Product of camera's scaleY and game's scale mode scale.y multiplication. - - - - - * Tells the camera to follow this FlxObject object around. - - - - FlxPoint.get() - * Offset the camera target. - - - - 1 - * Used to smoothly track the camera as it follows: - * The percent of the distance to the follow `target` the camera moves per 1/60 sec. - * Values are bounded between `0.0` and `1.0`. - * `elapsed` is used during `update` calls for consistency across framerates. - * The maximum value means no camera easing. A value of `0` means the camera does not move. - - - - * You can assign a "dead zone" to the camera in order to better control its movement. - * The camera will always keep the focus object inside the dead zone, unless it is bumping up against - * the camera bounds. The `deadzone`'s coordinates are measured from the camera's upper left corner in game pixels. - * For rapid prototyping, you can use the preset deadzones (e.g. `PLATFORMER`) with `follow()`. - - - - * Lower bound of the camera's `scroll` on the x axis. - - - - * Upper bound of the camera's `scroll` on the x axis. - - - - * Lower bound of the camera's `scroll` on the y axis. - - - - * Upper bound of the camera's `scroll` on the y axis. - - - - FlxPoint.get() - * Stores the basic parallax scrolling values. - * This is basically the camera's top-left corner position in world coordinates. - * There is also `focusOn(point:FlxPoint)` which you can use to - * make the camera look at specified point in world coordinates. - - - - * The actual `BitmapData` of the camera display itself. - * Used in blit render mode, where you can manipulate its pixels for achieving some visual effects. - - - - * The natural background color of the camera, in `AARRGGBB` format. Defaults to `FlxG.cameras.bgColor`. - * On Flash, transparent backgrounds can be used in conjunction with `useBgAlphaBlending`. - - - - * Sometimes it's easier to just work with a `FlxSprite` than it is to work directly with the `BitmapData` buffer. - * This sprite reference will allow you to do exactly that. - * Basically this sprite's `pixels` property is camera's `BitmapData` buffer. - * NOTE: This variable is used only in blit render mode. - * - * The FlxBloom demo shows how you can use this variable in blit render mode. - * @see http://haxeflixel.com/demos/FlxBloom/ - - - - false - * Whether to use alpha blending for camera's background fill or not. - * If `true` then previously drawn graphics won't be erased, - * and if camera's `bgColor` is transparent/semitransparent then you - * will be able to see graphics of the previous frame. - * Useful for blit render mode (and works only in this mode). Default value is `false`. - * - * Usage example can be seen in FlxBloom demo. - * @see http://haxeflixel.com/demos/FlxBloom/ - - - - new Sprite() - * Used to render buffer to screen space. - * NOTE: We don't recommend modifying this directly unless you are fairly experienced. - * Uses include 3D projection, advanced display list modification, and more. - * This is container for everything else that is used by camera and rendered to the camera. - * - * Its position is modified by `updateFlashSpritePosition()` which is called every frame. - - - - * Whether the positions of the objects rendered on this camera are rounded. - * If set on individual objects, they ignore the global camera setting. - * Defaults to `false` with `FlxG.renderTile` and to `true` with `FlxG.renderBlit`. - * WARNING: setting this to `false` on blitting targets is very expensive. - - - - 0 - * How wide the camera display is, in game pixels. - - - - 0 - * How tall the camera display is, in game pixels. - - - - * The zoom level of this camera. `1` = 1:1, `2` = 2x zoom, etc. - * Indicates how far the camera is zoomed in. - - - - 0 - * Difference between native size of camera and zoomed size, divided in half - * Needed to do occlusion of objects when zoom != initialZoom - - - - 0 - - - - 0 - * The size of the camera plus view offset. - * These variables are used for object visibility checks. - - - - 0 - - - - 0 - * Dimensions of area visible at current camera zoom. - - - - 0 - - <_blitMatrix expr="new FlxMatrix()"> - - new FlxMatrix() - * Helper matrix object. Used in blit render mode when camera's zoom is less than initialZoom - * (it is applied to all objects rendered on the camera at such circumstances). - - <_useBlitMatrix expr="false"> - - false - * Logical flag for tracking whether to apply _blitMatrix transformation to objects or not. - - - - 1 - * The alpha value of this camera display (a number between `0.0` and `1.0`). - - - - 0 - * The angle of the camera display (in degrees). - - - - FlxColor.WHITE - * The color tint of the camera display. - - - - false - * Whether the camera display is smooth and filtered, or chunky and pixelated. - * Default behavior is chunky-style. - - - - FlxPoint.get() - * Used to force the camera to look ahead of the target. - - - - true - * Enables or disables the filters set via `setFilters()`. - - <_flashRect> - - * Internal, used in blit render mode in camera's `fill()` method for less garbage creation. - * It represents the size of buffer `BitmapData` - * (the area of camera's buffer which should be filled with `bgColor`). - * Do not modify it unless you know what are you doing. - - <_flashPoint expr="new Point()"> - - new Point() - * Internal, used in blit render mode in camera's `fill()` method for less garbage creation: - * Its coordinates are always `(0,0)`, where camera's buffer filling should start. - * Do not modify it unless you know what are you doing. - - <_flashOffset expr="FlxPoint.get()"> - - FlxPoint.get() - * Internal, used for positioning camera's `flashSprite` on screen. - * Basically it represents position of camera's center point in game sprite. - * It's recalculated every time you resize game or camera. - * Its value depends on camera's size (`width` and `height`), game's `scale` and camera's initial zoom factor. - * Do not modify it unless you know what are you doing. - - <_fxFlashColor expr="FlxColor.TRANSPARENT"> - - FlxColor.TRANSPARENT - * Internal, represents the color of `flash()` special effect. - - <_fxFlashDuration expr="0"> - - 0 - * Internal, stores `flash()` special effect duration. - - <_fxFlashComplete expr="null"> - - null - * Internal, camera's `flash()` complete callback. - - <_fxFlashAlpha expr="0"> - - 0 - * Internal, used to control the `flash()` special effect. - - <_fxFadeColor expr="FlxColor.TRANSPARENT"> - - FlxColor.TRANSPARENT - * Internal, color of fading special effect. - - <_lastTargetPosition> - - * Used to calculate the following target current velocity. - - <_scrollTarget expr="FlxPoint.get()"> - - FlxPoint.get() - * Helper to calculate follow target current scroll. - - <_fxFadeDuration expr="0"> - - 0 - * Internal, `fade()` special effect duration. - - <_fxFadeIn expr="false"> - - false - * Internal, "direction" of the `fade()` effect. - * `true` means that camera fades from a color, `false` - camera fades to it. - - <_fxFadeComplete expr="null"> - - null - * Internal, used to control the `fade()` special effect complete callback. - - <_fxFadeAlpha expr="0"> - - 0 - * Internal, alpha component of fade color. - * Changes from 0 to 1 or from 1 to 0 as the effect continues. - - <_fxShakeIntensity expr="0"> - - 0 - * Internal, percentage of screen size representing the maximum distance that the screen can move while shaking. - - <_fxShakeDuration expr="0"> - - 0 - * Internal, duration of the `shake()` effect. - - <_fxShakeComplete> - - * Internal, `shake()` effect complete callback. - - <_fxShakeAxes expr="XY"> - - XY - * Internal, defines on what axes to `shake()`. Default value is `XY` / both. - - <_point expr="FlxPoint.get()"> - - FlxPoint.get() - * Internal, used for repetitive calculations and added to help avoid costly allocations. - - <_filters> - - * Internal, the filters array to be applied to the camera. - - - - 1 - * Camera's initial zoom value. Used for camera's scale handling. - - <_fill> - - * Internal helper variable for doing better wipes/fills between renders. - * Used it blit render mode only (in `fill()` method). - - <_flashBitmap> - - * Internal, used to render buffer to screen space. Used it blit render mode only. - * This Bitmap used for rendering camera's buffer (`_flashBitmap.bitmapData = buffer;`) - * Its position is modified by `updateInternalSpritePositions()`, which is called on camera's resize and scale events. - * It is a child of the `_scrollRect` `Sprite`. - - <_scrollRect expr="new Sprite()"> - - new Sprite() - * Internal sprite, used for correct trimming of camera viewport. - * It is a child of `flashSprite`. - * Its position is modified by `updateScrollRect()` method, which is called on camera's resize and scale events. - - <_bounds expr="FlxRect.get()"> - - FlxRect.get() - * Helper rect for `drawTriangles()` visibility checks - - - - * Sprite used for actual rendering in tile render mode (instead of `_flashBitmap` for blitting). - * Its graphics is used as a drawing surface for `drawTriangles()` and `drawTiles()` methods. - * It is a child of `_scrollRect` `Sprite` (which trims graphics that should be invisible). - * Its position is modified by `updateInternalSpritePositions()`, which is called on camera's resize and scale events. - - <_helperMatrix expr="new FlxMatrix()"> - - new FlxMatrix() - - <_helperPoint expr="new Point()"> - - new Point() - - <_currentDrawItem> - - * Currently used draw stack item - - <_headOfDrawStack> - - * Pointer to head of stack with draw items - - <_headTiles> - - * Last draw tiles item - - <_headTriangles> - - * Last draw triangles item - - - - * Scroll Rect (non affected by widescreen) - - - - - - - - - - - - - { smooth : false, hasColorOffsets : false } - - - - - - - - - - - - - { isColored : false, smoothing : false } - - - - - - - - - - - - - { isColored : false, smoothing : false } - - - - - - flixel.system.frontEnds.CameraFrontEnd - - - - flixel.system.frontEnds.CameraFrontEnd - - - - - - - - - - - - - { smoothing : false } - - - - false - - - - false - - - - - - - - - - - - - - { smoothing : false } - - - - - - - - - - - - - - - { smoothing : false, repeat : false } - - - - - - - * Helper method preparing debug rectangle for rendering in blit render mode - * @param rect rectangle to prepare for rendering - * @return transformed rectangle with respect to camera's zoom factor - - - - - - - * Helper method preparing debug point for rendering in blit render mode (for debug path rendering, for example) - * @param point point to prepare for rendering - * @return transformed point with respect to camera's zoom factor - - - - - - - * Helper method preparing debug vectors (relative positions) for rendering in blit render mode - * @param vector relative position to prepare for rendering - * @return transformed vector with respect to camera's zoom factor - - - - - - - * Helper method for applying transformations (scaling and offsets) - * to specified display objects which has been added to the camera display list. - * For example, debug sprite for nape debug rendering. - * @param object display object to apply transformations to. - * @return transformed object. - - - - * Clean up memory. - - - - - - - * Updates the camera scroll as well as special effects like screen-shake or fades. - - - - * Updates (bounds) the camera scroll. - * Called every frame by camera's `update()` method. - - - - - - - * Updates camera's scroll. - * Called every frame by camera's `update()` method (if camera's `target` isn't `null`). - - - - - - - - - - - - - - - - - * Recalculates `flashSprite` position. - * Called every frame by camera's `update()` method and every time you change camera's position. - - - - * Recalculates `_flashOffset` point, which is used for positioning flashSprite in the game. - * It's called every time you resize the camera or the game. - - - - * Updates `_scrollRect` sprite to crop graphics of the camera: - * 1) `scrollRect` property of this sprite - * 2) position of this sprite inside `flashSprite` - * - * It takes camera's size and game's scale into account. - * It's called every time you resize the camera or the game. - - - - - * Modifies position of `_flashBitmap` in blit render mode and `canvas` and `debugSprite` - * in tile render mode (these objects are children of `_scrollRect` sprite). - * It takes camera's size and game's scale into account. - * It's called every time you resize the camera or the game. - - - - - - - - - * Tells this camera object what `FlxObject` to track. - * - * @param Target The object you want the camera to track. Set to `null` to not follow anything. - * @param Style Leverage one of the existing "deadzone" presets. Default is `LOCKON`. - * If you use a custom deadzone, ignore this parameter and - * manually specify the deadzone after calling `follow()`. - * @param Lerp How much lag the camera should have (can help smooth out the camera movement). - - - - * Snaps the camera to the current `target`. Useful to move the camera without - * any easing when the `target` position changes and there is a `followLerp`. - - - - - - - * Move the camera focus to this location instantly. - * - * @param Point Where you want the camera to focus. - - - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - * The screen is filled with this color and gradually returns to normal. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the flash to fade. - * @param OnComplete A function you want to run when the flash finishes. - * @param Force Force the effect to reset. - - - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - * The screen is gradually filled with this color. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the fade to finish. - * @param FadeIn `true` fades from a color, `false` fades to it. - * @param OnComplete A function you want to run when the fade finishes. - * @param Force Force the effect to reset. - - - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - * A simple screen-shake effect. - * - * @param Intensity Percentage of screen size representing the maximum distance - * that the screen can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete A function you want to run when the shake effect finishes. - * @param Force Force the effect to reset (default = `true`, unlike `flash()` and `fade()`!). - * @param Axes On what axes to shake. Default value is `FlxAxes.XY` / both. - - - - * Just turns off all the camera effects instantly. - - - - - - - * Sets the filter array to be applied to the camera. - - - - - - - * Copy the bounds, focus object, and `deadzone` info from an existing camera. - * - * @param Camera The camera you want to copy from. - * @return A reference to this `FlxCamera` object. - - - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - * Fill the camera with the specified color. - * - * @param Color The color to fill with in `0xAARRGGBB` hex format. - * @param BlendAlpha Whether to blend the alpha value or just wipe the previous contents. Default is `true`. - - - - flixel.system.frontEnds.CameraFrontEnd - * Internal helper function, handles the actual drawing of all the special effects. - - - - flixel.system.frontEnds.CameraFrontEnd - - - - - - - - - * Shortcut for setting both `width` and `height`. - * - * @param Width The new camera width. - * @param Height The new camera height. - - - - - - - - { Y : 0, X : 0 } - * Helper function to set the coordinates of this camera. - * Handy since it only requires one line of code. - * - * @param X The new x position. - * @param Y The new y position. - - - - - - - - - - - { UpdateWorld : false, Height : 0, Width : 0, Y : 0, X : 0 } - * Specify the bounding rectangle of where the camera is allowed to move. - * - * @param X The smallest X value of your level (usually `0`). - * @param Y The smallest Y value of your level (usually `0`). - * @param Width The largest X value of your level (usually the level width). - * @param Height The largest Y value of your level (usually the level height). - * @param UpdateWorld Whether the global quad-tree's dimensions should be updated to match (default: `false`). - - - - - - - - - - * Specify the bounds of where the camera is allowed to move. - * Set the boundary of a side to `null` to leave that side unbounded. - * - * @param MinX The minimum X value the camera can scroll to - * @param MaxX The maximum X value the camera can scroll to - * @param MinY The minimum Y value the camera can scroll to - * @param MaxY The maximum Y value the camera can scroll to - - - - - - - - * Helper function to set the scale of this camera. - * Handy since it only requires one line of code. - * - * @param X The new scale on x axis - * @param Y The new scale of y axis - - - - * Called by camera front end every time you resize the game. - * It triggers reposition of camera's internal display objects. - - - - - - - * The size and position of this camera's screen - * @since 4.11.0 - - - - - - - - - { height : 0, width : 0 } - * Checks whether this camera contains a given point or rectangle, in - * screen coordinates. - * @since 4.3.0 - - - - - - - * Checks whether this camera contains a given rectangle, in screen coordinates. - * @since 4.11.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Zoom : 0, Height : 0, Width : 0, Y : 0, X : 0 } - * Instantiates a new camera at the specified location, with the specified size and zoom level. - * - * @param X X location of the camera's display in pixels. Uses native, 1:1 resolution, ignores zoom. - * @param Y Y location of the camera's display in pixels. Uses native, 1:1 resolution, ignores zoom. - * @param Width The width of the camera display in pixels. - * @param Height The height of the camera display in pixels. - * @param Zoom The initial zoom level of the camera. - * A zoom level of 2 will make all pixels display at 2x resolution. - - `_scrollRect:Sprite` (which is used for cropping camera's graphic, mostly in tile render mode) - * |-> `_flashBitmap:Bitmap` (its bitmapData property is buffer BitmapData, this var is used in blit render mode. - * Everything is rendered on buffer in blit render mode) - * |-> `canvas:Sprite` (its graphics is used for rendering objects in tile render mode) - * |-> `debugLayer:Sprite` (this sprite is used in tile render mode for rendering debug info, like bounding boxes)]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - * Camera has no deadzone, just tracks the focus object directly. - * Camera's deadzone is narrow but tall. - * Camera's deadzone is a medium-size square around the focus object. - * Camera's deadzone is a small square around the focus object. - * Camera will move screenwise. - * Camera has no deadzone, just tracks the focus object directly and centers it. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__addShader public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__removeShader public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_widescreen set="method" line="148"> - - - - - - - - - - - - - - - { smooth : false, hasColorOffsets : false } - - - - <_HX_SUPER__startQuadBatch public="1" set="method" line="148"> - - - - - - - - - - { smooth : false, hasColorOffsets : false } - - - - - - - - - - - { isColored : false, smoothing : false } - - - - <_HX_SUPER__startTrianglesBatch public="1" set="method" line="148"> - - - - - - - - { isColored : false, smoothing : false } - - - - - - - - - - - { isColored : false, smoothing : false } - - - - <_HX_SUPER__getNewDrawTrianglesItem public="1" set="method" line="148"> - - - - - - - - { isColored : false, smoothing : false } - - - - flixel.system.frontEnds.CameraFrontEnd - - <_HX_SUPER__clearDrawStack set="method" line="31"> - - - flixel.system.frontEnds.CameraFrontEnd - - <_HX_SUPER__render set="method" line="31"> - - - - - - - - - - - - { smoothing : false } - - <_HX_SUPER__drawPixels public="1" set="method" line="31"> - - - - - - - - - - - { smoothing : false } - - - - - - - - - - - - - - { smoothing : false } - - <_HX_SUPER__copyPixels public="1" set="method" line="31"> - - - - - - - - - - - - { smoothing : false } - - - - - - - - - - - - - - - { smoothing : false, repeat : false } - - <_HX_SUPER__drawTriangles public="1" set="method" line="31"> - - - - - - - - - - - - - { smoothing : false, repeat : false } - - - - - - - * Helper method preparing debug rectangle for rendering in blit render mode - * @param rect rectangle to prepare for rendering - * @return transformed rectangle with respect to camera's zoom factor - - <_HX_SUPER__transformRect set="method" line="148"> - - - - - - - - - * Helper method preparing debug point for rendering in blit render mode (for debug path rendering, for example) - * @param point point to prepare for rendering - * @return transformed point with respect to camera's zoom factor - - <_HX_SUPER__transformPoint set="method" line="148"> - - - - - - - - - * Helper method for applying transformations (scaling and offsets) - * to specified display objects which has been added to the camera display list. - * For example, debug sprite for nape debug rendering. - * @param object display object to apply transformations to. - * @return transformed object. - - <_HX_SUPER__transformObject set="method" line="148"> - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Updates the camera scroll as well as special effects like screen-shake or fades. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Updates (bounds) the camera scroll. - * Called every frame by camera's `update()` method. - - <_HX_SUPER__updateScroll public="1" set="method" line="31"> - - - - - - * Updates camera's scroll. - * Called every frame by camera's `update()` method (if camera's `target` isn't `null`). - - <_HX_SUPER__updateFollow public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__updateFlash set="method" line="31"> - - - - - - - - <_HX_SUPER__updateFade set="method" line="31"> - - - - - <_HX_SUPER__completeFade set="method" line="148"> - - - - - <_HX_SUPER__updateShake set="method" line="31"> - - - - - - * Recalculates `flashSprite` position. - * Called every frame by camera's `update()` method and every time you change camera's position. - - <_HX_SUPER__updateFlashSpritePosition set="method" line="31"> - - - * Recalculates `_flashOffset` point, which is used for positioning flashSprite in the game. - * It's called every time you resize the camera or the game. - - <_HX_SUPER__updateFlashOffset set="method" line="31"> - - - * Updates `_scrollRect` sprite to crop graphics of the camera: - * 1) `scrollRect` property of this sprite - * 2) position of this sprite inside `flashSprite` - * - * It takes camera's size and game's scale into account. - * It's called every time you resize the camera or the game. - - <_HX_SUPER__updateScrollRect set="method" line="31"> - - <_HX_SUPER__calculateScrollRect set="method" line="148"> - - - * Modifies position of `_flashBitmap` in blit render mode and `canvas` and `debugSprite` - * in tile render mode (these objects are children of `_scrollRect` sprite). - * It takes camera's size and game's scale into account. - * It's called every time you resize the camera or the game. - - <_HX_SUPER__updateInternalSpritePositions set="method" line="31"> - - - - - - - - * Tells this camera object what `FlxObject` to track. - * - * @param Target The object you want the camera to track. Set to `null` to not follow anything. - * @param Style Leverage one of the existing "deadzone" presets. Default is `LOCKON`. - * If you use a custom deadzone, ignore this parameter and - * manually specify the deadzone after calling `follow()`. - * @param Lerp How much lag the camera should have (can help smooth out the camera movement). - - <_HX_SUPER__follow public="1" set="method" line="31"> - - - - - - - - * Snaps the camera to the current `target`. Useful to move the camera without - * any easing when the `target` position changes and there is a `followLerp`. - - <_HX_SUPER__snapToTarget public="1" set="method" line="31"> - - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - * The screen is filled with this color and gradually returns to normal. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the flash to fade. - * @param OnComplete A function you want to run when the flash finishes. - * @param Force Force the effect to reset. - - <_HX_SUPER__flash public="1" set="method" line="31"> - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - - - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - * The screen is gradually filled with this color. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the fade to finish. - * @param FadeIn `true` fades from a color, `false` fades to it. - * @param OnComplete A function you want to run when the fade finishes. - * @param Force Force the effect to reset. - - <_HX_SUPER__fade public="1" set="method" line="31"> - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - - - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - * A simple screen-shake effect. - * - * @param Intensity Percentage of screen size representing the maximum distance - * that the screen can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete A function you want to run when the shake effect finishes. - * @param Force Force the effect to reset (default = `true`, unlike `flash()` and `fade()`!). - * @param Axes On what axes to shake. Default value is `FlxAxes.XY` / both. - - <_HX_SUPER__shake public="1" set="method" line="31"> - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - - - - * Just turns off all the camera effects instantly. - - <_HX_SUPER__stopFX public="1" set="method" line="31"> - - - - - - * Sets the filter array to be applied to the camera. - - <_HX_SUPER__setFilters public="1" set="method" line="31"> - - - - - - - - - * Copy the bounds, focus object, and `deadzone` info from an existing camera. - * - * @param Camera The camera you want to copy from. - * @return A reference to this `FlxCamera` object. - - <_HX_SUPER__copyFrom public="1" set="method" line="148"> - - - - - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - * Fill the camera with the specified color. - * - * @param Color The color to fill with in `0xAARRGGBB` hex format. - * @param BlendAlpha Whether to blend the alpha value or just wipe the previous contents. Default is `true`. - - <_HX_SUPER__fill public="1" set="method" line="31"> - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - - - - flixel.system.frontEnds.CameraFrontEnd - * Internal helper function, handles the actual drawing of all the special effects. - - <_HX_SUPER__drawFX set="method" line="31"> - - - flixel.system.frontEnds.CameraFrontEnd - - <_HX_SUPER__checkResize set="method" line="31"> - - - - - - - - - - { UpdateWorld : false, Height : 0, Width : 0, Y : 0, X : 0 } - * Specify the bounding rectangle of where the camera is allowed to move. - * - * @param X The smallest X value of your level (usually `0`). - * @param Y The smallest Y value of your level (usually `0`). - * @param Width The largest X value of your level (usually the level width). - * @param Height The largest Y value of your level (usually the level height). - * @param UpdateWorld Whether the global quad-tree's dimensions should be updated to match (default: `false`). - - <_HX_SUPER__setScrollBoundsRect public="1" set="method" line="31"> - - - - - - - - - { UpdateWorld : false, Height : 0, Width : 0, Y : 0, X : 0 } - - - - - - - - - - * Specify the bounds of where the camera is allowed to move. - * Set the boundary of a side to `null` to leave that side unbounded. - * - * @param MinX The minimum X value the camera can scroll to - * @param MaxX The maximum X value the camera can scroll to - * @param MinY The minimum Y value the camera can scroll to - * @param MaxY The maximum Y value the camera can scroll to - - <_HX_SUPER__setScrollBounds public="1" set="method" line="31"> - - - - - - - - - - - - - * Helper function to set the scale of this camera. - * Handy since it only requires one line of code. - * - * @param X The new scale on x axis - * @param Y The new scale of y axis - - <_HX_SUPER__setScale public="1" set="method" line="31"> - - - - - - - * Called by camera front end every time you resize the game. - * It triggers reposition of camera's internal display objects. - - <_HX_SUPER__onResize public="1" set="method" line="31"> - - - - - - * The size and position of this camera's screen - * @since 4.11.0 - - <_HX_SUPER__getViewRect public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_followLerp set="method" line="148"> - - - - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_zoom set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_angle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_antialiasing set="method" line="148"> - - - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxCamera.FlxDrawItem - flixel.FlxCamera - flixel.FlxCamera.FlxCameraFollowStyle - - - - - - "" - - - - - - - * Formats the version in the format "HaxeFlixel MAJOR.MINOR.PATCH-COMMIT_SHA", - * e.g. HaxeFlixel 3.0.4. - * If this is a dev version, the git sha is included. - - - - - - - - * Helper object for semantic versioning. - * @see http://semver.org/ - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.system.macros.FlxGitSHA.buildGitSHA("flixel") - - - - - - * Gets max texture size for native targets - - - - * Helper FlxFrame object. Containing only one frame. - * Useful for drawing colored rectangles of all sizes in FlxG.renderTile mode. - - <_cache> - - - - - flixel.system.frontEnds.BitmapLogFrontEnd - - <_whitePixel> - <_lastUniqueKeyIndex expr="0"> - - 0 - - - - - - - - * New context handler. - * Regenerates tilesheets for all dumped graphics objects in the cache. - - - - * Dumps bits of all graphics in the cache. This frees some memory, but you can't read/write pixels on those graphics anymore. - * You can call undump() method for each FlxGraphic (or undumpCache()) object which will restore it again. - - - - * Restores graphics of all dumped objects in the cache. - - - - - - - * Check the local bitmap cache to see if a bitmap with this key has been loaded already. - * - * @param Key The string key identifying the bitmap. - * @return Whether or not this file can be found in the cache. - - - - - - - - - - - { Unique : false } - * Generates a new BitmapData object (a colored rectangle) and caches it. - * - * @param Width How wide the rectangle should be. - * @param Height How high the rectangle should be. - * @param Color What color the rectangle should be (0xAARRGGBB) - * @param Unique Ensures that the bitmap data uses a new slot in the cache. - * @param Key Force the cache to use a specific Key to index the bitmap. - * @return The BitmapData we just created. - - - - - - - - - { Unique : false } - * Loads a bitmap from a file, clones it if necessary and caches it. - * @param Graphic Optional FlxGraphics object to create FlxGraphic from. - * @param Frames Optional FlxFramesCollection object to create FlxGraphic from. - * @param Bitmap Optional BitmapData object to create FlxGraphic from. - * @param BitmapClass Optional Class for BitmapData to create FlxGraphic from. - * @param Str Optional String key to use for FlxGraphic instantiation. - * @param Unique Ensures that the bitmap data uses a new slot in the cache. - * @param Key Force the cache to use a specific Key to index the bitmap. - * @return The FlxGraphic we just created. - - - - - - - * Caches specified FlxGraphic object. - * - * @param graphic FlxGraphic to store in the cache. - * @return cached FlxGraphic object. - - - - - - - * Gets FlxGraphic object from this storage by specified key. - * @param key Key for FlxGraphic object (its name) - * @return FlxGraphic with the key name, or null if there is no such object - - - - - - - * Gets key from bitmap cache for specified BitmapData - * - * @param bmd BitmapData to find in cache - * @return BitmapData's key or null if there isn't such BitmapData in cache - - - - - - - * Helper method for getting cache key for FlxGraphic objects created from the class. - * - * @param source BitmapData source class. - * @return Full name for provided class. - - - - - - - - - { unique : false } - * Creates string key for further caching. - * - * @param systemKey The first string key to use as a base for a new key. It's usually a key from openfl.Assets ("assets/image.png"). - * @param userKey The second string key to use as a base for a new key. It's usually a key provided by the user - * @param unique Whether generated key should be unique or not. - * @return Created key. - - - - - - - * Gets unique key for bitmap cache - * - * @param baseKey key's prefix - * @return unique key - - - - - - - - - - - * Generates key from provided base key and information about tile size and offsets in spritesheet - * and the region of image to use as spritesheet graphics source. - * - * @param baseKey Beginning of the key. Usually it is the key for original spritesheet graphics (like "assets/tile.png") - * @param frameSize the size of tile in spritesheet - * @param frameSpacing offsets between tiles in offsets - * @param region region of image to use as spritesheet graphics source - * @return Generated key for spritesheet with inserted spaces between tiles - - - - - - - * Totally removes specified FlxGraphic object. - * @param FlxGraphic object you want to remove and destroy. - - - - - - - * Totally removes FlxGraphic object with specified key. - * @param key the key for cached FlxGraphic object. - - - - - - <__doNotDelete expr="false"> - - - false - flixel.graphics.FlxGraphic - - - <__countCache expr="[]"> - - [] - - <__cacheCopy expr="[]"> - - - - - [] - - - - * Clears image cache (and destroys those images). - * Graphics object will be removed and destroyed only if it shouldn't persist in the cache and its useCount is 0. - - - - * Maps the entire cache as destroyable, aka must be cleared. - - - - - - - - * Completely resets bitmap cache, which means destroying ALL of the cached FlxGraphic objects. - - - - * Removes all unused graphics from cache, - * but skips graphics which should persist in cache and shouldn't be destroyed on no use. - - - - - * Internal storage system to prevent graphics from being used repeatedly in memory. - * - * Accessed via `FlxG.bitmap`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - { Name : "" } - - - - * Clears all bitmaps - - - - - - - { Index : -1 } - * Clear one bitmap object from the log -- the last one, by default - * @param Index - - - - * Clears the bitmapLog window and adds the entire cache to it. - - - - flixel.FlxG - - * Accessed via `FlxG.bitmapLog`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - [] - * An array listing FlxCamera objects that are used to draw stuff. - * By default flixel creates one camera the size of the screen. - * Do not edit directly, use `add` and `remove` instead. - - - - [] - * Array listing all cameras marked as default draw targets, `FlxBasics` with no - *`cameras` set will render to them. - - - - * The current (global, applies to all cameras) bgColor. - - - - - - - ()]]> - @since 4.2.0 - - - - - - - ()]]> - @since 4.2.0 - - - - - - - ()]]> - @since 4.2.0 - - - - - - - ()]]> - @since 4.2.0 - - - - - - - ()]]> - @since 4.2.0 - - - - false - * Allows you to possibly slightly optimize the rendering process IF - * you are not doing any pre-processing in your game state's draw() call. - - <_cameraRect expr="new Rectangle()"> - - new Rectangle() - * Internal helper variable for clearing the cameras each frame. - - - - - - - - { DefaultDrawTarget : true } - * Add a new camera object to the game. - * Handy for PiP, split-screen, etc. - * @see flixel.FlxBasic.cameras - * - * @param NewCamera The camera you want to add. - * @param DefaultDrawTarget Whether to add the camera to the list of default draw targets. If false, - * `FlxBasics` will not render to it unless you add it to their `cameras` list. - * @return This FlxCamera instance. - - - - - - - - { Destroy : true } - * Remove a camera from the game. - * - * @param Camera The camera you want to remove. - * @param Destroy Whether to call destroy() on the camera, default value is true. - - - - - - - - * If set to true, the camera is listed as a default draw target, meaning `FlxBasics` - * render to the specified camera if the `FlxBasic` has a null `cameras` value. - * @see flixel.FlxBasic.cameras - * - * @param camera The camera you wish to change. - * @param value If false, FlxBasics will not render to it unless you add it to their `cameras` list. - * @since 4.9.0 - - - - - - - * Dumps all the current cameras and resets to just one camera. - * Handy for doing split-screen especially. - * - * @param NewCamera Optional; specify a specific camera object to be the new main camera. - - - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - * All screens are filled with this color and gradually return to normal. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the flash to fade. - * @param OnComplete A function you want to run when the flash finishes. - * @param Force Force the effect to reset. - - - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - * The screen is gradually filled with this color. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the fade to finish. - * @param FadeIn True fades from a color, false fades to it. - * @param OnComplete A function you want to run when the fade finishes. - * @param Force Force the effect to reset. - - - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - * A simple screen-shake effect. - * - * @param Intensity Percentage of screen size representing the maximum distance that the screen can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete A function you want to run when the shake effect finishes. - * @param Force Force the effect to reset (default = true, unlike flash() and fade()!). - * @param Axes On what axes to shake. Default value is XY / both. - - - - flixel.FlxGame - * Called by the game object to lock all the camera buffers and clear them for the next draw pass. - - - - flixel.FlxGame - - - - flixel.FlxGame - * Called by the game object to draw the special FX and unlock all the camera buffers. - - - - - - - flixel.FlxGame - * Called by the game object to update the cameras and their tracking/special effects logic. - - - - flixel.FlxGame - * Resizes and moves cameras when the game resizes (onResize signal). - - - - - - - - - flixel.FlxG - - * Accessed via `FlxG.cameras`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - true - * Whether the console should auto-pause or not when it's focused. - - - - true - * Whether the console should `step()` the game after a command is entered. - * Setting this to `false` allows inputting multiple console commands within the same frame. - * Use the `step()` command to step the game from the console. - * @since 4.2.0 - - - - - - - - * Register a new function to use in any command. - * - * @param FunctionAlias The name with which you want to access the function. - * @param Function The function to register. - - - - - - - - * Register a new object to use in any command. - * - * @param ObjectAlias The name with which you want to access the object. - * @param AnyObject The object to register. - - - - - - - * Register a new class to use in any command. - * - * @param cl The class to register. - - - - - - - * Register a new enum to use in any command. - * - * @param e The enum to register. - * @since 4.4.0 - - - - flixel.FlxG - - * Accessed via `FlxG.console`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - 3 - * The amount of decimals Floats are rounded to in the debugger. - - - - [F2, GRAVEACCENT, BACKSLASH] - * The key codes used to toggle the debugger (see FlxG.keys for the keys available). - * Default keys: F2, ` and \. Set to null to deactivate. - - - - false - * Whether to draw the hitboxes of FlxObjects. - - - - new FlxSignal() - * Dispatched when `drawDebug` is changed. - - - - new FlxSignal() - * Dispatched when `visible` is changed. - * @since 4.1.0 - - - - false - - - - - - - * Change the way the debugger's windows are laid out. - * - * @param Layout The layout codes can be found in FlxDebugger, for example FlxDebugger.MICRO - - - - * Just resets the debugger windows to whatever the last selected layout was (STANDARD by default). - - - - - - - - - - - { UpdateLayout : true, ToggleMode : false } - * Create and add a new debugger button. - * - * @param Position Either LEFT, CENTER or RIGHT. - * @param Icon The icon to use for the button - * @param UpHandler The function to be called when the button is pressed. - * @param ToggleMode Whether this is a toggle button or not. - * @param UpdateLayout Whether to update the button layout. - * @return The added button. - - - - - - - - * Creates a new tracker window if there exists a tracking profile for the class / class of the object. - * By default, flixel classes like FlxBasic, FlxRect and FlxPoint are supported. - * - * @param ObjectOrClass The object or class to track - * @param WindowTitle Title of the tracker window, uses the class name by default - - - - - - - * Adds a new TrackerProfile for track(). This also overrides existing profiles. - * - * @param Profile The TrackerProfile - - - - - - - - { UpdateLayout : true } - * Removes and destroys a button from the debugger. - * - * @param Button The FlxSystemButton instance to remove. - * @param UpdateLayout Whether to update the button layout. - - - - - - - - - - - flixel.FlxGame.onFocus - - - - flixel.FlxG - - * Accessed via `FlxG.debugger`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - [] - * A read-only list of all inputs. - - - - true - * Whether inputs are reset on state switches. - * Disable if you need persistent input states across states. - - - - - flixel.FlxGame - - - - flixel.FlxGame - - - - flixel.FlxGame - - - - - flixel.FlxGame - flixel.FlxState.resetSubState - - - - - - flixel.FlxG - - * Accessed via `FlxG.inputs`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - false - * Whether everything you trace() is being redirected into the log window. - - <_standardTraceFunction> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { FireOnce : false } - * Add an advanced log message to the debugger by also specifying a LogStyle. Backend to FlxG.log.add(), FlxG.log.warn(), FlxG.log.error() and FlxG.log.notice(). - * - * @param Data Any Data to log. - * @param Style The LogStyle to use, for example LogStyle.WARNING. You can also create your own by importing the LogStyle class. - * @param FireOnce Whether you only want to log the Data in case it hasn't been added already - - - - * Clears the log output. - - - - - - - - - - - - * Internal function used as a interface between trace() and add(). - * - * @param Data The data that has been traced - * @param Inf Information about the position at which trace() was called - - - - flixel.FlxG - - * Accessed via `FlxG.log`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - Outputs `v` in a platform-dependent way. - - The second parameter `infos` is injected by the compiler and contains - information about the position where the `trace()` call was made. - - This method can be rebound to a custom function: - - var oldTrace = haxe.Log.trace; // store old function - haxe.Log.trace = function(v, ?infos) { - // handle trace - } - ... - haxe.Log.trace = oldTrace; - - If it is bound to null, subsequent calls to `trace()` will cause an - exception. - - - - - - - - Format the output of `trace` before printing it. - - Log primarily provides the `trace()` method, which is invoked upon a call to - `trace()` in Haxe code. - - - - - - - - - - - - * Internal shared function to ensure an arbitrary value is in the valid range of seed values. - - <_arrayFloatHelper expr="null" line="448" static="1"> - - null - * Internal shared helper variable. Used by getObject(). - - - - 48271.0 - * Constants used in the pseudorandom number generation equation. - * These are the constants suggested by the revised MINSTD pseudorandom number generator, - * and they use the full range of possible integer values. - * - * @see http://en.wikipedia.org/wiki/Linear_congruential_generator - * @see Stephen K. Park and Keith W. Miller and Paul K. Stockmeyer (1988). - * "Technical Correspondence". Communications of the ACM 36 (7): 105–110. - - - - FlxMath.MAX_VALUE_INT - - - - 1 - * The global base random number generator seed (for deterministic behavior in recordings and saves). - * If you want, you can set the seed with an integer between 1 and 2,147,483,647 inclusive. - * Altering this yourself may break recording functionality! - - - - * Current seed used to generate new random numbers. You can retrieve this value if, - * for example, you want to store the seed that was used to randomly generate a level. - - - - * Function to easily set the global seed to a new random number. - * Please note that this function is not deterministic! - * If you call it in your game, recording may not function as expected. - * - * @return The new initial seed. - - - - - - - - - { Max : FlxMath.MAX_VALUE_INT, Min : 0 } - * Returns a pseudorandom integer between Min and Max, inclusive. - * Will not return a number in the Excludes array, if provided. - * Please note that large Excludes arrays can slow calculations. - * - * @param Min The minimum value that should be returned. 0 by default. - * @param Max The maximum value that should be returned. 2,147,483,647 by default. - * @param Excludes Optional array of values that should not be returned. - - - - - - - - - { Max : 1, Min : 0 } - * Returns a pseudorandom float value between Min (inclusive) and Max (exclusive). - * Will not return a number in the Excludes array, if provided. - * Please note that large Excludes arrays can slow calculations. - * - * @param Min The minimum value that should be returned. 0 by default. - * @param Max The maximum value that should be returned. 1 by default. - * @param Excludes Optional array of values that should not be returned. - - <_hasFloatNormalSpare expr="false"> - - false - - <_floatNormalRand1 expr="0"> - - 0 - - <_floatNormalRand2 expr="0"> - - 0 - - <_twoPI expr="Math.PI * 2"> - - Math.PI * 2 - - <_floatNormalRho expr="0"> - - 0 - - - - - - - - { StdDev : 1, Mean : 0 } - * Returns a pseudorandom float value in a statistical normal distribution centered on Mean with a standard deviation size of StdDev. - * (This uses the Box-Muller transform algorithm for gaussian pseudorandom numbers) - * - * Normal distribution: 68% values are within 1 standard deviation, 95% are in 2 StdDevs, 99% in 3 StdDevs. - * See this image: https://github.com/HaxeFlixel/flixel-demos/blob/dev/Performance/FlxRandom/normaldistribution.png - * - * @param Mean The Mean around which the normal distribution is centered - * @param StdDev Size of the standard deviation - - - - - - - { Chance : 50 } - * Returns true or false based on the chance value (default 50%). - * For example if you wanted a player to have a 30.5% chance of getting a bonus, - * call bool(30.5) - true means the chance passed, false means it failed. - * - * @param Chance The chance of receiving the value. - * Should be given as a number between 0 and 100 (effectively 0% to 100%) - * @return Whether the roll passed or not. - - - - - - - { Chance : 50 } - * Returns either a 1 or -1. - * - * @param Chance The chance of receiving a positive value. - * Should be given as a number between 0 and 100 (effectively 0% to 100%) - * @return 1 or -1 - - - - - - - * Pseudorandomly select from an array of weighted options. For example, if you passed in an array of [50, 30, 20] - * there would be a 50% chance of returning a 0, a 30% chance of returning a 1, and a 20% chance of returning a 2. - * Note that the values in the array do not have to add to 100 or any other number. - * The percent chance will be equal to a given value in the array divided by the total of all values in the array. - * - * @param WeightsArray An array of weights. - * @return A value between 0 and (SelectionArray.length - 1), with a probability equivalent to the values in SelectionArray. - - - - - - - - - - { GreyScale : false } - * Returns a random color. - * - * @param Min An optional FlxColor representing the lower bounds for the generated color. - * @param Max An optional FlxColor representing the upper bounds for the generated color. - * @param Alpha An optional value for the alpha channel of the generated color. - * @param GreyScale Whether or not to create a color that is strictly a shade of grey. False by default. - * @return A color value as a FlxColor. - - - - * Internal method to quickly generate a pseudorandom number. Used only by other functions of this class. - * Also updates the internal seed, which will then be used to generate the next pseudorandom number. - * - * @return A new pseudorandom number. - - - - 1 - * The actual internal seed. Stored as a Float value to prevent inaccuracies due to - * integer overflow in the generate() equation. - - - - - - - * Internal function to update the current seed whenever the initial seed is reset, - * and keep the initial seed's value in range. - - - - * Returns the internal seed as an integer. - - - - - - - * Sets the internal seed to an integer value. - - - - - - - * Create a new FlxRandom object. - * - * @param InitialSeed The first seed of this FlxRandom object. If ignored, a random seed will be generated. - - * A class containing a set of functions for random generation. Should be accessed via `FlxG.random`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - ?#]+/]]> - - - - - - - ?#` or space characters]]> - - - - - - - flixel.FlxG.initSave - * Converts invalid characters to "-", producing a valid string for a FlxSave's name and path - - - - - - - - * Converts invalid characters to "-", and logs a warning in debug mode - - - - * Allows you to directly access the data container in the local shared object. - - - - * The name of the local shared object. - - - - * The path of the local shared object. - * @since 4.6.0 - - - - EMPTY - * The current status of the save. - * @since 5.0.0 - - - - * Wether the save was successfully bound. - * @since 5.0.0 - - <_sharedObject> - - * The local shared object itself. - - - - * Clean up memory. - - - - - - - - ? #` - * @param path The full or partial path to the file that created the shared object. - * Mainly used to differentiate from other FlxSaves. If you do not specify - * this parameter, the company name specified in your Project.xml is used. - * @return Whether or not you successfully connected to the save data.]]> - - - - - - - - - - - { minFileSize : 0, eraseSave : true, overwrite : false } - * Creates a new FlxSave and copies the data from old to new, - * flushes the new save (if changed) and then optionally erases the old save. - * - * @param name The name of the save. - * @param path The full or partial path to the file that created the save. - * @param overwrite Whether the data should overwrite, should the 2 saves share data fields. defaults to false. - * @param eraseSave Whether to erase the save after successfully migrating the data. defaults to true. - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not you successfully found, merged and flushed data. - - - - - - - - - { minFileSize : 0, overwrite : false } - * Copies the given data over to this save and flushes (if changed). - * - * @param sourceData The data to merge - * @param overwrite Whether the data should overwrite, should the 2 saves share data fields. defaults to false. - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not you successfully saved the data. - - - - - - - { minFileSize : 0 } - * A way to safely call flush() and destroy() on your save file. - * Will correctly handle storage size popups and all that good stuff. - * If you don't want to save your changes first, just call destroy() instead. - * - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return The result of result of the flush() call (see below for more details). - - - - - - - { minFileSize : 0 } - * Writes the local shared object to disk immediately. Leaves the object open in memory. - * - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not the data was written immediately. False could be an error OR a storage request popup. - - - - * Erases everything stored in the local shared object. - * Data is immediately erased and the object is saved that way, - * so use with caution! - * - * @return Returns false if the save object is not bound yet. - - - - * Handy utility function for checking and warning if the shared object is bound yet or not. - * - * @return Whether the shared object was bound yet. - - - - - - - * Scans the data for any properties. - * @since 5.0.0 - - - \AppData\Roaming\\.sol"``` - * - Mac: ```"/Users//Library/Application Support//.sol"``` - * - Chrome: In the developer tools, go to the Application tab, and under - * `Storage->Local Storage->https://.com` with the key:`:"` - * - * ## 5.0.0 Migration - * In older version of flixel, a null path on html5 would use the current url. FlxSaves with a - * null path will now look for that path, if the new default path is not found. If data is found - * at the legacy, it is loaded, but `flush` calls will save to the new default path. The old save - * is not deleted. - * - * Prior to 5.0.0, FlxG.save's default save name was `"flixel"`, now it uses the project name as - * defined in Project.xml. FlxG.save will automatically look for the old default save if the new - * one is not found, and any flush call will save to the new path and id. - * - * Previously, on desktop targets, saves were added to subfolders based on the project's name and - * company, eg: `"////.sol"`. This prevent separate - * projects from referencing each others saves (this was OpenFL attempting to mirror Flash's - * SharedObject behaviour). To allow cross-save referencing, the new location is simply: - * `'//.sol'`. If no data is found in this location, `FlxSave` will look in the - * old location, any `flush` call will save to the new location. For example, a save named with the - * old default name `"flixel"` may be saved at `"<...>/FooBarGames/PorbsAdventure/flixel.sol"`. - * The new default save name "PorbsAdventure" would be at `"<...>/FooBarGames/PorbsAdventure.sol"`. - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide)]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.util.FlxSharedObject - - - - - - - - - - CENTER - - - - CENTER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The base class from which all other scale modes extend from. - * You can implement your own scale mode by extending this class and overriding the appropriate methods. - * - * The default behavior of `BaseScaleMode` matches that of `FillScaleMode`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - { fillScreen : false } - * @param fillScreen Whether to cut the excess side to fill the - * screen or always display everything. - - * `RatioScaleMode` is a scaling mode which maintains the game's aspect ratio. - * When you shrink or grow the window, the width and height of the game will adjust, - * either scaling the game or adding black bars as needed. - * - * This is the default scaling mode used by HaxeFlixel. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - new FlxSignal() - * Gets dispatched when a state change occurs. - * @since 4.6.0 - - - - new FlxSignal() - * @since 4.6.0 - - - - "Use preStateSwitch instead of stateSwitched" - - - - - - - ()]]> - - - - - - - - Int>()]]> - * Gets dispatched when the game is resized. - * Passes the new window width and height to callback functions. - - - - new FlxSignal() - - - - new FlxSignal() - - - - new FlxSignal() - * Gets dispatched just before the game is started (before the first state after the splash screen is created) - * @since 4.6.0 - - - - new FlxSignal() - * Gets dispatched when the game is started (first state after the splash screen). - * @since 4.6.0 - - - - "Use postGameStart instead of gameStarted" - - - - new FlxSignal() - - - - new FlxSignal() - - - - new FlxSignal() - - - - new FlxSignal() - - - - new FlxSignal() - - - - new FlxSignal() - - - - "Use preStateSwitch instead of stateSwitched" - - - - "Use postGameStart instead of gameStarted" - - - - flixel.FlxG - - * Accessed via `FlxG.signals`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - * Add a variable to the watch list in the debugger. - * This lets you see the value of the variable all the time. - * - * @param object A reference to any object in your game, e.g. Player or Robot or this. - * @param field The name of the variable you want to watch, in quotes, as a string: e.g. "speed" or "health". - * @param displayName Optional, display your own string instead of the class name + variable name: e.g. "enemy count". - - - - - - - - * Remove a variable from the watch list in the debugger. - * - * @param object A reference to any object in your game, e.g. Player or Robot or this. - * @param field The name of the variable you want to watch, in quotes, as a string: e.g. "speed" or "health". - - - - - - - - * Add or update a quickWatch entry to the watch list in the debugger. - * Extremely useful when called in update() functions when there - * doesn't exist a variable for a value you want to watch - so you won't have to create one. - * - * @param displayName The name of the quickWatch entry, for example `"mousePressed"`. - * @param value The new value for this entry, for example `FlxG.mouse.pressed`. - - - - - - - * Remove a quickWatch entry from the watch list of the debugger. - * - * @param displayName The name of the quickWatch entry you want to remove. - - - - - - - - * Add an expression to the watch list in the debugger. - * The expression gets evaluated with hscript, and you can see its current value all the time. - * - * @param expression A Haxe expression written as a string that will be evaluated and watched. - * @param displayName Optional, display your own string instead of the expression string: e.g. "enemy count". - * @since 4.1.0 - - - - - - - * Remove an expression from the watch list in the debugger. - * - * @param displayName The display name of the registered expression, if you supplied one, or the Haxe expression that you want to remove, in string form. - * @since 4.1.0 - - - - * Add the mouse coords to the watch window. Useful for quickly - * getting coordinates for object placement during prototyping! - - - - * Removes the mouse coords from the watch window. - - - * Accessed via `FlxG.watch`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - false - * Whenever black bars for cameras shouldn't show up. - - - - - - - - false - * Whenever antialiasing should be forced off, even if the `antialiasing` property of the sprite is set to `true`. - - - - true - * Whether the game should be paused when focus is lost or not. Use `-D FLX_NO_FOCUS_LOST_SCREEN` - * if you only want to get rid of the default pause screen. - * Override `onFocus()` and `onFocusLost()` for your own behaviour in your state. - - - - true - * WARNING: Changing this can lead to issues with physics and the recording system. Setting this to - * `false` might lead to smoother animations (even at lower fps) at the cost of physics accuracy. - - - - 1 - * How fast or slow time should pass in the game; default is `1.0`. - - - - 6 - * How many times the quad tree should divide the world on each axis. - * Generally, sparse collisions can have fewer divisons, - * while denser collision activity usually profits from more. Default value is `6`. - - <_camera static="1"> - - * By default this just refers to the first entry in the `FlxG.cameras.list` - * array but you can do what you like with it. - - - - * By default this just refers to the first entry in the `FlxG.cameras.list` - * array but you can do what you like with it. - - - - - - - - - new FlxVersion(5, 0, 2) - * The HaxeFlixel version, in semantic versioning syntax. Use `Std.string()` - * on it to get a `String` formatted like this: `"HaxeFlixel MAJOR.MINOR.PATCH-COMMIT_SHA"`. - - - - * Internal tracker for game object. - - - - * The Flash stage object (required for event listeners). - * Will be `null` if it's not safe/useful yet. - - - - * Access the current game state from anywhere. Consider using `addChildBelowMouse()` - * if you want to add a `DisplayObject` to the stage instead of directly adding it here! - - - - * How many times you want your game to update each second. - * More updates usually means better collisions and smoother motion. - * NOTE: This is NOT the same thing as the draw framerate! - - - - * How many times you want your game to step each second. More steps usually means greater responsiveness, - * but it can also slowdown your game if the stage can't keep up with the update routine. - * NOTE: This is NOT the same thing as the update framerate! - - - - * Whether the game is running on a mobile device. - * If on HTML5, it returns `FlxG.html5.onMobile`. - * Otherwise, it checks whether the `mobile` haxedef is defined. - * @since 4.2.0 - - - - - - - - 0 - flixel.FlxGame.updateElapsed - - * Represents the amount of time in seconds that passed since last frame. - - - - 0.1 - * Useful when the timestep is NOT fixed (i.e. variable), - * to prevent jerky movement or erratic behavior at very low fps. - * Essentially locks the framerate to a minimum value - any slower and you'll get - * slowdown instead of frameskip; default is 1/10th of a second. - - - - flixel.system.scaleModes - * The width of the screen in game pixels. Read-only, use `resizeGame()` to change. - - - - flixel.system.scaleModes - * The height of the screen in game pixels. Read-only, use `resizeGame()` to change. - - - - new RatioScaleMode() - * The scale mode the game should use. - * HaxeFlixel includes several available scale modes, which are located in `flixel.system.scaleModes`. - * However, you may also create a class which extends `BaseScaleMode`, and override its behavior according to your needs. - - - - * Use this to toggle between fullscreen and normal mode. Works on CPP, Neko and Flash. - * You can easily toggle fullscreen with e.g.: `FlxG.fullscreen = !FlxG.fullscreen;` - - - - FlxRect.get() - * The dimensions of the game world, used by the quad tree for collisions and overlap checks. - * Use `.set()` instead of creating a new object! - - - - new FlxSave() - * A `FlxSave` used internally by flixel to save sound preferences and - * the history of the console window, but no reason you can't use it for your own stuff too! - - - - new FlxRandom() - * A `FlxRandom` object which can be used to generate random numbers. - * Also used by Flixel internally. - - - - * Used for mouse input. e.g.: check if the left mouse button - * is pressed with `if (FlxG.mouse.pressed) { })` in `update()`. - - - - * Useful for devices with multitouch support. - - - - [] - * Contains all "swipes" from both mouse and touch input that have just ended. - - - - * Used for keyboard input e.g.: check if the left arrow key is - * pressed with `if (FlxG.keys.pressed.LEFT) { }` in `update()`. - - - - * Allows accessing the available gamepads. - - - - new InputFrontEnd() - * Mostly used internally, but you can use it too to reset inputs and create input classes of your own. - - - - new ConsoleFrontEnd() - * Used to register functions and objects or add new commands to the console window. - - - - new LogFrontEnd() - * Used to add messages to the log window or enable `trace()` redirection. - - - - new BitmapLogFrontEnd() - * Used to add images to the bitmap log window. - - - - new WatchFrontEnd() - * Used to add or remove things to / from the watch window. - - - - new DebuggerFrontEnd() - * Used it to show / hide the debugger, change its layout, - * activate debug drawing or change the key used to toggle it. - - - - * Contains all the functions needed for recording and replaying. - - - - new BitmapFrontEnd() - * Contains things related to bitmaps, for example regarding the `BitmapData` cache and the cache itself. - - - - new CameraFrontEnd() - * Contains things related to cameras, a list of all cameras and several effects like `flash()` or `fade()`. - - - - * Contains a list of all plugins and the functions required to `add()`, `remove()` them etc. - - - - 0 - - - - 0 - - - - 0 - - - - * Contains a list of all sounds and other things to manage or `play()` sounds. - - - - new SignalFrontEnd() - * Contains system-wide signals like `gameResized` or `preStateSwitch`. - - - - - - - - * Resizes the game within the window by reapplying the current scale mode. - - - - - - - - * Resizes the window. Only works on desktop targets (Neko, Windows, Linux, Mac). - - - - * Like hitting the reset button a game console, this will re-launch the game as if it just started. - - - - - - - * Attempts to switch from the current game state to `nextState`. - * The state switch is successful if `switchTo()` of the current `state` returns `true`. - - - - * Request a reset of the current game state. - * Calls `switchState()` with a new instance of the current `state`. - - - - - - - - - - - - - - - - - - * Call this function to see if one `FlxObject` overlaps another within `FlxG.worldBounds`. - * Can be called with one object and one group, or two groups, or two objects, - * whatever floats your boat! For maximum performance try bundling a lot of objects - * together using a `FlxGroup` (or even bundling groups together!). - * - * NOTE: does NOT take objects' `scrollFactor` into account, all overlaps are checked in world space. - * - * NOTE: this takes the entire area of `FlxTilemap`s into account (including "empty" tiles). - * Use `FlxTilemap#overlaps()` if you don't want that. - * - * @param ObjectOrGroup1 The first object or group you want to check. - * @param ObjectOrGroup2 The second object or group you want to check. If it is the same as the first, - * Flixel knows to just do a comparison within that group. - * @param NotifyCallback A function with two `FlxObject` parameters - - * e.g. `onOverlap(object1:FlxObject, object2:FlxObject)` - - * that is called if those two objects overlap. - * @param ProcessCallback A function with two `FlxObject` parameters - - * e.g. `onOverlap(object1:FlxObject, object2:FlxObject)` - - * that is called if those two objects overlap. - * If a `ProcessCallback` is provided, then `NotifyCallback` - * will only be called if `ProcessCallback` returns true for those objects! - * @return Whether any overlaps were detected. - - - - - - - - - - { AlphaTolerance : 255 } - * A pixel perfect collision check between two `FlxSprite` objects. - * It will do a bounds check first, and if that passes it will run a - * pixel perfect match on the intersecting area. Works with rotated and animated sprites. - * May be slow, so use it sparingly. - * - * @param Sprite1 The first `FlxSprite` to test against. - * @param Sprite2 The second `FlxSprite` to test again, sprite order is irrelevant. - * @param AlphaTolerance The tolerance value above which alpha pixels are included. - * Default to `255` (must be fully opaque for collision). - * @param Camera If the collision is taking place in a camera other than - * `FlxG.camera` (the default/current) then pass it here. - * @return Whether the sprites collide - - - - - - - - - - - - - * Call this function to see if one `FlxObject` collides with another within `FlxG.worldBounds`. - * Can be called with one object and one group, or two groups, or two objects, - * whatever floats your boat! For maximum performance try bundling a lot of objects - * together using a FlxGroup (or even bundling groups together!). - * - * This function just calls `FlxG.overlap` and presets the `ProcessCallback` parameter to `FlxObject.separate`. - * To create your own collision logic, write your own `ProcessCallback` and use `FlxG.overlap` to set it up. - * NOTE: does NOT take objects' `scrollFactor` into account, all overlaps are checked in world space. - * - * @param ObjectOrGroup1 The first object or group you want to check. - * @param ObjectOrGroup2 The second object or group you want to check. If it is the same as the first, - * Flixel knows to just do a comparison within that group. - * @param NotifyCallback A function with two `FlxObject` parameters - - * e.g. `onOverlap(object1:FlxObject, object2:FlxObject)` - - * that is called if those two objects overlap. - * @return Whether any objects were successfully collided/separated. - - - - - - - - { IndexModifier : 0 } - * Regular `DisplayObject`s are normally displayed over the Flixel cursor and the Flixel debugger if simply - * added to `stage`. This function simplifies things by adding a `DisplayObject` directly below mouse level. - * - * @param Child The `DisplayObject` to add - * @param IndexModifier Amount to add to the index - makes sure the index stays within bounds. - * @return The added `DisplayObject` - - - - - - - * Removes a child from the Flixel display list, if it is part of it. - * - * @param Child The `DisplayObject` to add - * @return The removed `DisplayObject` - - - - - - - - - - - - - - - - { Target : "_blank" } - * Opens a web page, by default a new tab or window. If the URL does not - * already start with `"http://"` or `"https://"`, it gets added automatically. - * - * @param URL The address of the web page. - * @param Target `"_blank"`, `"_self"`, `"_parent"` or `"_top"` - - - - - - - - - - flixel.FlxGame.new - * Called by `FlxGame` to set up `FlxG` during `FlxGame`'s constructor. - - - - - flixel.FlxGame - * Called whenever the game is reset, doesn't have to do quite as much work as the basic initialization stuff. - - - - - - - - - - - - - - - - - - - - - - - - - - * Global helper class for audio, input, the camera system, the debugger and other global properties. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxG - flixel.FlxG.FlxRenderMethod - - - - - - - 10 - * Framerate to use on focus lost. Default is `10`. - - - - * The sound tray display container. - - - - 0 - * Time in milliseconds that has passed (amount of "ticks" passed) since the game has started. - - - - true - * Enables or disables the filters set via `setFilters()`. - - <_gameJustStarted expr="false"> - - - false - flixel.system.FlxSplash - - * A flag for triggering the `preGameStart` and `postGameStart` "events". - - <_initialState> - - * Class type of the initial/first game state for the game, usually `MenuState` or something like that. - - <_state> - - * Current game state. - - <_total expr="0"> - - 0 - * Total number of milliseconds elapsed since game start. - - <_startTime expr="0"> - - 0 - * Time stamp of game startup. Needed on JS where `Lib.getTimer()` - * returns time stamp of current date, not the time passed since app start. - - <_accumulator> - - * Total number of milliseconds elapsed since last update loop. - * Counts down as we step through the game loop. - - <_elapsedMS> - - * Milliseconds of time since last step. - - <_stepMS> - - * Milliseconds of time per step of the game loop. e.g. 60 fps = 16ms. - - <_stepSeconds> - - * Optimization so we don't have to divide step by 1000 to get its value in seconds every frame. - - <_maxAccumulation> - - * Max allowable accumulation (see `_accumulator`). - * Should always (and automatically) be set to roughly 2x the stage framerate. - - <_lostFocus expr="false"> - - false - * Whether the game lost focus. - - <_filters> - - * The filters array to be applied to the game. - - <_inputContainer> - - - flixel.FlxG - flixel.system.frontEnds.CameraFrontEnd - - * Mouse cursor. - - <_customSoundTray expr="FlxSoundTray"> - - FlxSoundTray - * Change this after calling `super()` in the `FlxGame` constructor - * to use a customized sound tray based on `FlxSoundTray`. - - <_skipSplash expr="false"> - - false - * Whether the splash screen should be skipped. - - <_startFullscreen expr="false"> - - false - * Should we start fullscreen or not? This is useful if you want to load fullscreen settings from a - * `FlxSave` and set it when the game starts, instead of having it hard-set in your `Project.xml`. - - <_requestedState> - - * If a state change was requested, the new state object is stored here until we switch to it. - - <_resetGame expr="false"> - - false - * A flag for keeping track of whether a game reset was requested or not. - - - - - - - - - - - * Sets the filter array to be applied to the game. - - - - - - - * Used to instantiate the guts of the flixel game object once we have a valid reference to the root. - - - - - - - - - - - - - - - flixel.FlxG - - - - - - - - - - - - * Handles the `onEnterFrame` call and figures out how many updates and draw calls to do. - - - - * Internal method to create a new instance of `_initialState` and reset the game. - * This gets called when the game is created, as well as when a new state is requested. - - - - false - - <__firstSwitch expr="true"> - - true - - - - * If there is a state change requested during the update loop, - * this function handles actual destroying the old state and related processes, - * and calls creates on the new state and plugs it into the game object. - - - - - * This is the main game update logic section. - * The `onEnterFrame()` handler is in charge of calling this - * the appropriate number of times each frame. - * This block handles state changes, replays, all that good stuff. - - - - - * This function is called by `step()` and updates the actual game state. - * May be called multiple times per "frame" or draw call. - - - - - - * Goes through the game state and draws all the game objects and special effects. - - - - - - - - - - - - - - - - { StartFullscreen : false, SkipSplash : false, DrawFramerate : 60, UpdateFramerate : 60, Zoom : 1, GameHeight : 0, GameWidth : 0 } - * Instantiate a new game object. - * - * @param GameWidth The width of your game in game pixels, not necessarily final display pixels (see `Zoom`). - * If equal to `0`, the window width specified in the `Project.xml` is used. - * @param GameHeight The height of your game in game pixels, not necessarily final display pixels (see `Zoom`). - * If equal to `0`, the window height specified in the `Project.xml` is used. - * @param InitialState The class name of the state you want to create and switch to first (e.g. `MenuState`). - * @param Zoom The default level of zoom for the game's cameras (e.g. `2` = all pixels are now drawn at 2x). - * @param UpdateFramerate How frequently the game should update (default is `60` times per second). - * @param DrawFramerate Sets the actual display / draw framerate for the game (default is `60` times per second). - * @param SkipSplash Whether you want to skip the flixel splash screen with `FLX_NO_DEBUG`. - * @param StartFullscreen Whether to start the game in fullscreen mode (desktop targets only). - - * `FlxGame` is the heart of all Flixel games, and contains a bunch of basic game loops and things. - * It is a long and sloppy file that you shouldn't have to worry about too much! - * It is basically only used to create your game object in the first place, - * after that `FlxG` and `FlxState` have all the useful stuff you actually need. - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.FlxG - - - - - - - - - <_HX_SUPER__addShader public="1" set="method" line="148"> - - - - - - - - - * Sets the filter array to be applied to the game. - - <_HX_SUPER__setFilters public="1" set="method" line="31"> - - - - - - - - - * Used to instantiate the guts of the flixel game object once we have a valid reference to the root. - - <_HX_SUPER__create set="method" line="31"> - - - - - - - - <_HX_SUPER__onFocus set="method" line="31"> - - - - - - - - <_HX_SUPER__onFocusLost set="method" line="31"> - - - - - - - - - flixel.FlxG - - <_HX_SUPER__onResize set="method" line="31"> - - - - - - - - - <_HX_SUPER__resizeGame set="method" line="31"> - - - - - - - - - - * Handles the `onEnterFrame` call and figures out how many updates and draw calls to do. - - <_HX_SUPER__onEnterFrame set="method" line="31"> - - - - - - * If there is a state change requested during the update loop, - * this function handles actual destroying the old state and related processes, - * and calls creates on the new state and plugs it into the game object. - - <_HX_SUPER__switchState set="method" line="31"> - - <_HX_SUPER__gameStart set="method" line="31"> - - - * This is the main game update logic section. - * The `onEnterFrame()` handler is in charge of calling this - * the appropriate number of times each frame. - * This block handles state changes, replays, all that good stuff. - - <_HX_SUPER__step set="method" line="31"> - - <_HX_SUPER__handleReplayRequests set="method" line="31"> - - - * This function is called by `step()` and updates the actual game state. - * May be called multiple times per "frame" or draw call. - - <_HX_SUPER__update set="method" line="31"> - - <_HX_SUPER__updateElapsed set="method" line="31"> - - <_HX_SUPER__updateInput set="method" line="31"> - - - * Goes through the game state and draws all the game objects and special effects. - - <_HX_SUPER__draw set="method" line="31"> - <__interp> - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxGame - - - - - - - false - * Default value for `FlxObject`'s `pixelPerfectPosition` var. - - - - 4 - * This value dictates the maximum number of pixels two objects have to intersect - * before collision stops trying to separate them. - * Don't modify this unless your objects are passing through each other. - - - - - FlxDirectionFlags.LEFT - "Use LEFT or FlxDirectionFlags.LEFT instead" - - - * Generic value for "left". Used by `facing`, `allowCollisions`, and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.LEFT` directly. - - - - - FlxDirectionFlags.RIGHT - "Use RIGHT or FlxDirectionFlags.RIGHT instead" - - - * Generic value for "right". Used by `facing`, `allowCollisions`, and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.RIGHT` directly. - - - - - FlxDirectionFlags.UP - "Use UP or FlxDirectionFlags.UP instead" - - - * Generic value for "up". Used by `facing`, `allowCollisions`, and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.UP` directly. - - - - - FlxDirectionFlags.DOWN - "Use DOWN or FlxDirectionFlags.DOWN instead" - - - * Generic value for "down". Used by `facing`, `allowCollisions`, and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.DOWN` directly. - - - - - FlxDirectionFlags.NONE - "Use NONE or FlxDirectionFlags.NONE instead" - - - * Special-case constant meaning no collisions, used mainly by `allowCollisions` and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.NONE` directly. - - - - - FlxDirectionFlags.CEILING - "Use CEILING or FlxDirectionFlags.CEILING instead" - - - * Special-case constant meaning up, used mainly by `allowCollisions` and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.CEILING` directly. - - - - - FlxDirectionFlags.FLOOR - "Use FLOOR or FlxDirectionFlags.FLOOR instead" - - - * Special-case constant meaning down, used mainly by `allowCollisions` and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.FLOOR` directly. - - - - - FlxDirectionFlags.WALL - "Use WALL or FlxDirectionFlags.WALL instead" - - - * Special-case constant meaning only the left and right sides, used mainly by `allowCollisions` and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.WALL` directly. - - - - - FlxDirectionFlags.ANY - "Use ANY or FlxDirectionFlags.ANY instead" - - - * Special-case constant meaning any direction, used mainly by `allowCollisions` and `touching`. - * Note: This exists for backwards compatibility, prefer using `FlxDirectionFlags.ANY` directly. - - <_firstSeparateFlxRect expr="FlxRect.get()" line="162" static="1"> - - - FlxRect.get() - - - - <_secondSeparateFlxRect expr="FlxRect.get()" line="164" static="1"> - - - FlxRect.get() - - - - - - - - - - * The main collision resolution function in Flixel. - * - * @param Object1 Any `FlxObject`. - * @param Object2 Any other `FlxObject`. - * @return Whether the objects in fact touched and were separated. - - - - - - - - * Similar to `separate()`, but only checks whether any overlap is found and updates - * the `touching` flags of the input objects, but no separation is performed. - * - * @param Object1 Any `FlxObject`. - * @param Object2 Any other `FlxObject`. - * @return Whether the objects in fact touched. - - - - - - - - - - - - - - - - { checkMaxOverlap : true } - - - * Internal function that computes overlap among two objects on the X axis. It also updates the `touching` variable. - * `checkMaxOverlap` is used to determine whether we want to exclude (therefore check) overlaps which are - * greater than a certain maximum (linked to `SEPARATE_BIAS`). Default is `true`, handy for `separateX` code. - - - - - - - - * The X-axis component of the object separation process. - * - * @param object1 Any `FlxObject`. - * @param object2 Any other `FlxObject`. - * @return Whether the objects in fact touched and were separated along the X axis. - - - - - - - - * Checking overlap and updating `touching` variables, X-axis part used by `updateTouchingFlags`. - * - * @param object1 Any `FlxObject`. - * @param object2 Any other `FlxObject`. - * @return Whether the objects in fact touched along the X axis. - - - - - - - - - - { checkMaxOverlap : true } - - - * Internal function that computes overlap among two objects on the Y axis. It also updates the `touching` variable. - * `checkMaxOverlap` is used to determine whether we want to exclude (therefore check) overlaps which are - * greater than a certain maximum (linked to `SEPARATE_BIAS`). Default is `true`, handy for `separateY` code. - - - - - - - - * The Y-axis component of the object separation process. - * - * @param object1 Any `FlxObject`. - * @param object2 Any other `FlxObject`. - * @return Whether the objects in fact touched and were separated along the Y axis. - - - - - - - - * Checking overlap and updating touching variables, Y-axis part used by `updateTouchingFlags`. - * - * @param object1 Any `FlxObject`. - * @param object2 Any other `FlxObject`. - * @return Whether the objects in fact touched along the Y axis. - - - - 0 - * X position of the upper left corner of this object in world space. - - - - 0 - * Y position of the upper left corner of this object in world space. - - - - - * The width of this object's hitbox. For sprites, use `offset` to control the hitbox position. - - - - - * The height of this object's hitbox. For sprites, use `offset` to control the hitbox position. - - - - * Whether or not the coordinates should be rounded during rendering. - * Does not affect `copyPixels()`, which can only render on whole pixels. - * Defaults to the camera's global `pixelPerfectRender` value, - * but overrides that value if not equal to `null`. - - - - true - * Whether or not the position of this object should be rounded before any `draw()` or collision checking. - - - - 0 - * Set the angle (in degrees) of a sprite to rotate it. WARNING: rotating sprites - * decreases their rendering performance by a factor of ~10x when using blitting! - - - - true - * Set this to `false` if you want to skip the automatic motion/movement stuff (see `updateMotion()`). - * `FlxObject` and `FlxSprite` default to `true`. `FlxText`, `FlxTileblock` and `FlxTilemap` default to `false`. - - - - false - * Whether an object will move/alter position after a collision. - - - - * Whether the object collides or not. For more control over what directions the object will collide from, - * use collision constants (like `LEFT`, `FLOOR`, etc) to set the value of `allowCollisions` directly. - - - - * Controls how much this object is affected by camera scrolling. `0` = no movement (e.g. a background layer), - * `1` = same movement speed as the foreground. Default value is `(1,1)`, - * except for UI elements like `FlxButton` where it's `(0,0)`. - - - - * The basic speed of this object (in pixels per second). - - - - * How fast the speed of this object is changing (in pixels per second). - * Useful for smooth movement and gravity. - - - - * This isn't drag exactly, more like deceleration that is only applied - * when `acceleration` is not affecting the sprite. - - - - * If you are using `acceleration`, you can use `maxVelocity` with it - * to cap the speed automatically (very useful!). - - - - * Important variable for collision processing. - * By default this value is set automatically during at the start of `update()`. - - - - 1 - * The virtual mass of the object. Default value is 1. Currently only used with elasticity - * during collision resolution. Change at your own risk; effects seem crazy unpredictable so far! - - - - 0 - * The bounciness of this object. Only affects collisions. Default value is 0, or "not bouncy at all." - - - - 0 - * This is how fast you want this sprite to spin (in degrees per second). - - - - 0 - * How fast the spin speed should change (in degrees per second). - - - - 0 - * Like drag but for spinning. - - - - 10000 - * Use in conjunction with angularAcceleration for fluid spin speed control. - - - - 1 - * Handy for storing health percentage or armor points or whatever. - - - - FlxDirectionFlags.NONE - * Bit field of flags (use with UP, DOWN, LEFT, RIGHT, etc) indicating surface contacts. Use bitwise operators to check the values - * stored here, or use isTouching(), justTouched(), etc. You can even use them broadly as boolean values if you're feeling saucy! - - - - FlxDirectionFlags.NONE - * Bit field of flags (use with UP, DOWN, LEFT, RIGHT, etc) indicating surface contacts from the previous game loop step. Use bitwise operators to check the values - * stored here, or use isTouching(), justTouched(), etc. You can even use them broadly as boolean values if you're feeling saucy! - - - - FlxDirectionFlags.ANY - * Bit field of flags (use with UP, DOWN, LEFT, RIGHT, etc) indicating collision directions. Use bitwise operators to check the values stored here. - * Useful for things like one-way platforms (e.g. allowCollisions = UP;). The accessor "solid" just flips this variable between NONE and ANY. - - - - "Use `collisionXDrag`, instead. Note the corrected spelling: `collis(i)onXDrag" - DEPRECATED - * Whether this sprite is dragged along with the horizontal movement of objects it collides with - * (makes sense for horizontally-moving platforms in platformers for example). - * - * Apart from having a weird typo, this has been deprecated for collisionXDrag, which allows more options. - - - - IMMOVABLE - * Whether this sprite is dragged along with the horizontal movement of objects it collides with - * (makes sense for horizontally-moving platforms in platformers for example). Use values - * IMMOVABLE, ALWAYS, HEAVIER or NEVER - * @since 4.11.0 - - - - NEVER - * Whether this sprite is dragged along with the vertical movement of objects it collides with - * (for sticking to vertically-moving platforms in platformers for example). Use values - * IMMOVABLE, ALWAYS, HEAVIER or NEVER - * @since 4.11.0 - - - - null - * The path this object follows. Not initialized by default. - * Assign a `new FlxPath()` object and `start()` it if you want to this object to follow a path. - * Set `path` to `null` again to stop following the path. - * See `flixel.util.FlxPath` for more info and usage examples. - - <_point expr="FlxPoint.get()"> - - - FlxPoint.get() - - - - <_rect expr="FlxRect.get()"> - - - FlxRect.get() - - - - - - - * Internal function for initialization of some object's variables. - - - - - * Internal function for initialization of some variables that are used in `updateMotion()`. - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - - - - - - * Override this function to update your class's position and appearance. - * This is where most of your game rules and behavioral code will go. - - - - - - - - * Internal function for updating the position and speed of this object. - * Useful for cases when you need to update this but are buried down in too many supers. - * Does a slightly fancier-than-normal integration to help with higher fidelity framerate-independent motion. - - - - * Rarely called, and in this case just increments the visible objects count and calls `drawDebug()` if necessary. - - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if some `FlxObject` overlaps this `FlxObject` or `FlxGroup`. - * If the group has a LOT of things in it, it might be faster to use `FlxG.overlap()`. - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param objectOrGroup The object or group being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * Default is `false`, or "only compare in world space." - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the two objects overlap. - - - - - - - - - - - - - - - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if this `FlxObject` were located at the given position, - * would it overlap the `FlxObject` or `FlxGroup`? - * This is distinct from `overlapsPoint()`, which just checks that point, - * rather than taking the object's size into account. - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param x The X position you want to check. - * Pretends this object (the caller, not the parameter) is located here. - * @param y The Y position you want to check. - * Pretends this object (the caller, not the parameter) is located here. - * @param objectOrGroup The object or group being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * Default is `false`, or "only compare in world space." - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the two objects overlap. - - - - - - - - - - - - - - - - - - - - { inScreenSpace : false } - * Checks to see if a point in 2D world space overlaps this `FlxObject`. - * - * @param point The point in world space you want to check. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the point overlaps this object. - - - - * Check and see if this object is currently within the world bounds - - * useful for killing objects that get too far away. - * - * @return Whether the object is within the world bounds or not. - - - - - - - - * Returns the screen position of this object. - * - * @param result Optional arg for the returning point - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return The screen position of this object. - - - - - - - * Returns the world position of this object. - * - * @param result Optional arg for the returning point. - * @return The world position of this object. - - - - - - - * Retrieve the midpoint of this object in world coordinates. - * - * @param point Allows you to pass in an existing `FlxPoint` object if you're so inclined. - * Otherwise a new one is created. - * @return A `FlxPoint` object containing the midpoint of this object in world coordinates. - - - - - - - - - - - - * Handy function for reviving game objects. - * Resets their existence flags and position. - * - * @param x The new X position of this object. - * @param y The new Y position of this object. - - - - - - - * Check and see if this object is currently on screen. - * - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether the object is on screen or not. - - - - - - - * Check if object is rendered pixel perfect on a specific camera. - - - - - - - * Handy function for checking if this object is touching a particular surface. - * Be sure to check it before calling `super.update()`, as that will reset the flags. - * - * @param direction Any of the collision flags (e.g. `LEFT`, `FLOOR`, etc). - * @return Whether the object is touching an object in (any of) the specified direction(s) this frame. - - - - - - - * Handy function for checking if this object is just landed on a particular surface. - * Be sure to check it before calling `super.update()`, as that will reset the flags. - * - * @param direction Any of the collision flags (e.g. `LEFT`, `FLOOR`, etc). - * @return Whether the object just landed on (any of) the specified surface(s) this frame. - - - - - - - * Reduces the `health` variable of this object by the amount specified in `Damage`. - * Calls `kill()` if health drops to or below zero. - * - * @param Damage How much health to take away (use a negative number to give a health bonus). - - - - - - - { axes : XY } - * Centers this `FlxObject` on the screen, either by the x axis, y axis, or both. - * - * @param axes On what axes to center the object (e.g. `X`, `Y`, `XY`) - default is both. - * @return This FlxObject for chaining - - - - - - - - { y : 0.0, x : 0.0 } - * Helper function to set the coordinates of this object. - * Handy since it only requires one line of code. - * - * @param x The new x position - * @param y The new y position - - - - - - - - * Shortcut for setting both width and Height. - * - * @param width The new hitbox width. - * @param height The new hitbox height. - - - - - - - flixel.FlxCamera - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this - * object's width and height, at its current rotation. - * Note, if called on a `FlxSprite`, the origin is used, but scale and offset are ignored. - * Use `getScreenBounds` to use these properties. - * @param newRect The optional output `FlxRect` to be returned, if `null`, a new one is created. - * @return A globally aligned `FlxRect` that fully contains the input object's width and height. - * @since 4.11.0 - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Use `collisionXDrag`, instead. Note the corrected spelling: `collis(i)onXDrag" - - - - - - - - - - "Use `collisionXDrag`, instead. Note the corrected spelling: `collis(i)onXDrag" - - - - - - - - - - - - - - - - - - - { height : 0, width : 0, y : 0, x : 0 } - * @param X The X-coordinate of the point in space. - * @param Y The Y-coordinate of the point in space. - * @param Width Desired width of the rectangle. - * @param Height Desired height of the rectangle. - - * At their core `FlxObjects` are just boxes with positions that can move and collide with other - * objects. Most games utilize `FlxObject's` features through [FlxSprite](https://api.haxeflixel.com/flixel/FlxSprite.html), - * which extends `FlxObject` directly and adds graphical capabilities. - * - * ## Motion - * Whenever `update` is called, objects with `move` set to true will update their positions based - * on the following properties: - * - `velocity`: The speed of the object in pixels per second. - * - `acceleration`: The rate at which `velocity` will change in pixels per second. - * - `drag`: When `acceleration` is 0, `velocity` will slow by this amount, in pixels per second. - * When less than or equal to 0, no drag is applied. - * - `maxVelocity`: The maximum `velocity` (or negative `velocity`) this object can have. - * - `angle`: The orientation, in degrees, of this `object`. Does not affect collision, mainly - * used for `FlxSprite` graphics. - * - `angularVelocity`: The rotational speed of thiw object in degrees per second. - * - * ## Overlaps - * If you're only checking an overlap between two objects you can use `player.overlaps(door)` - * or `player.overlaps(spikeGroup)`. You can check if two objects or groups of object overlap - * with [FlxG.overlap](https://api.haxeflixel.com/flixel/FlxG.html#overlap). - * - * Example: - * ```haxe - * if (FlxG.overlap(playerGroup, spikeGroup)) trace("overlap!"); - * ``` - * - * You can also specify a callback to handle which specific objects collided: - * ```haxe - * FlxG.overlap(playerGroup, medKitGroup - * function onOverlap(player, medKit) - * { - * player.health = 100; - * medKit.kill(); - * } - * ); - * ``` - * - * Additional resources: - * - [Snippets - Simple Overlap](https://snippets.haxeflixel.com/overlap/simple-overlap/) - * - [Snippets - Overlap Callbacks](https://snippets.haxeflixel.com/overlap/overlap-callbacks/) - * - * ## Collision - * `FlxG.collide` is similar to `FlxG.overlap` except it resolves the overlap by separating their - * positions before calling the callback. Typically collide is called on an update loop like so: - * ```haxe - * FlxG.collide(playerGroup, crateGroup); - * ``` - * This takes the player's and crate's momentum and previous and current position in consideration - * when resolving overlaps between them. Like `overlap` collide will return true if any objects - * were overlapping, and you can specify a callback. - * - * Additional resources: - * - [Snippets - 1 to 1 Collision](https://snippets.haxeflixel.com/collision/1-to-1-collision/) - * - [Demos - FlxCollisions](https://haxeflixel.com/demos/FlxCollisions/) - * - [Demos - Collision and Grouping](https://haxeflixel.com/demos/CollisionAndGrouping/) - * @see [Demos - EZPlatformer](https://haxeflixel.com/demos/EZPlatformer/) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * Determines when to apply collision drag to one object that collided with another. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - Never drags on colliding objects. - - - - - cast 1 - - - - Always drags on colliding objects. - - - - - cast 2 - - - - Drags when colliding with immovable objects. - - - - - cast 3 - - - - Drags when colliding with heavier objects. Immovable objects have infinite mass. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - Never drags on colliding objects. - - - - - cast 1 - - - - Always drags on colliding objects. - - - - - cast 2 - - - - Drags when colliding with immovable objects. - - - - - cast 3 - - - - Drags when colliding with heavier objects. Immovable objects have infinite mass. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.CollisionDragType) - Never drags on colliding objects. - - - - cast (1, flixel.CollisionDragType) - Always drags on colliding objects. - - - - cast (2, flixel.CollisionDragType) - Drags when colliding with immovable objects. - - - - cast (3, flixel.CollisionDragType) - Drags when colliding with heavier objects. Immovable objects have infinite mass. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - * Internal function for initialization of some object's variables. - - <_HX_SUPER__initVars set="method" line="31"> - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Override this function to update your class's position and appearance. - * This is where most of your game rules and behavioral code will go. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - * Internal function for updating the position and speed of this object. - * Useful for cases when you need to update this but are buried down in too many supers. - * Does a slightly fancier-than-normal integration to help with higher fidelity framerate-independent motion. - - <_HX_SUPER__updateMotion set="method" line="31"> - - - - - - * Rarely called, and in this case just increments the visible objects count and calls `drawDebug()` if necessary. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if some `FlxObject` overlaps this `FlxObject` or `FlxGroup`. - * If the group has a LOT of things in it, it might be faster to use `FlxG.overlap()`. - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param objectOrGroup The object or group being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * Default is `false`, or "only compare in world space." - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the two objects overlap. - - <_HX_SUPER__overlaps public="1" set="method" line="148"> - - - - - - - { inScreenSpace : false } - - - - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if this `FlxObject` were located at the given position, - * would it overlap the `FlxObject` or `FlxGroup`? - * This is distinct from `overlapsPoint()`, which just checks that point, - * rather than taking the object's size into account. - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param x The X position you want to check. - * Pretends this object (the caller, not the parameter) is located here. - * @param y The Y position you want to check. - * Pretends this object (the caller, not the parameter) is located here. - * @param objectOrGroup The object or group being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * Default is `false`, or "only compare in world space." - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the two objects overlap. - - <_HX_SUPER__overlapsAt public="1" set="method" line="148"> - - - - - - - - - { inScreenSpace : false } - - - - - - - - - { inScreenSpace : false } - * Checks to see if a point in 2D world space overlaps this `FlxObject`. - * - * @param point The point in world space you want to check. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether or not the point overlaps this object. - - <_HX_SUPER__overlapsPoint public="1" set="method" line="148"> - - - - - - - { inScreenSpace : false } - - - - - - - - * Returns the screen position of this object. - * - * @param result Optional arg for the returning point - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return The screen position of this object. - - <_HX_SUPER__getScreenPosition public="1" set="method" line="148"> - - - - - - - - - - * Returns the world position of this object. - * - * @param result Optional arg for the returning point. - * @return The world position of this object. - - <_HX_SUPER__getPosition public="1" set="method" line="148"> - - - - - - - - - * Retrieve the midpoint of this object in world coordinates. - * - * @param point Allows you to pass in an existing `FlxPoint` object if you're so inclined. - * Otherwise a new one is created. - * @return A `FlxPoint` object containing the midpoint of this object in world coordinates. - - <_HX_SUPER__getMidpoint public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getHitbox public="1" set="method" line="148"> - - - - - - - - - - * Handy function for reviving game objects. - * Resets their existence flags and position. - * - * @param x The new X position of this object. - * @param y The new Y position of this object. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - - - - - * Check and see if this object is currently on screen. - * - * @param camera Specify which game camera you want. - * If `null`, it will just grab the first global camera. - * @return Whether the object is on screen or not. - - <_HX_SUPER__isOnScreen public="1" set="method" line="148"> - - - - - - - - - * Check if object is rendered pixel perfect on a specific camera. - - <_HX_SUPER__isPixelPerfectRender public="1" set="method" line="148"> - - - - - - - - - * Reduces the `health` variable of this object by the amount specified in `Damage`. - * Calls `kill()` if health drops to or below zero. - * - * @param Damage How much health to take away (use a negative number to give a health bonus). - - <_HX_SUPER__hurt public="1" set="method" line="31"> - - - - - - - - - - { y : 0.0, x : 0.0 } - * Helper function to set the coordinates of this object. - * Handy since it only requires one line of code. - * - * @param x The new x position - * @param y The new y position - - <_HX_SUPER__setPosition public="1" set="method" line="31"> - - - - - - { y : 0.0, x : 0.0 } - - - - - - - - * Shortcut for setting both width and Height. - * - * @param width The new hitbox width. - * @param height The new hitbox height. - - <_HX_SUPER__setSize public="1" set="method" line="148"> - - - - - - - - - - flixel.FlxCamera - - <_HX_SUPER__getBoundingBox set="method" line="148"> - - - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this - * object's width and height, at its current rotation. - * Note, if called on a `FlxSprite`, the origin is used, but scale and offset are ignored. - * Use `getScreenBounds` to use these properties. - * @param newRect The optional output `FlxRect` to be returned, if `null`, a new one is created. - * @return A globally aligned `FlxRect` that fully contains the input object's width and height. - * @since 4.11.0 - - <_HX_SUPER__getRotatedBounds public="1" set="method" line="148"> - - - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__get_width set="method" line="148"> - - - - - <_HX_SUPER__get_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_solid set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_angle set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_moves set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_immovable set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_pixelPerfectRender set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_allowCollisions set="method" line="148"> - - - - - - - - <_HX_SUPER__get_collisonXDrag set="method" line="148"> - - - - - - - - <_HX_SUPER__set_collisonXDrag set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_path set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxObject - flixel.FlxObject.CollisionDragType - flixel.FlxObject.CollisionDragType - - - - - - - false - * The default value for `antialiasing` across all `FlxSprites`, - * defaults to `false`. - * @since 5.0.0 - - - - * Class that handles adding and playing animations on this sprite. - - - - * The current display state of the sprite including current animation frame, - * tint, flip etc... may be `null` unless `useFramePixels` is `true`. - - - - true - * Always `true` on `FlxG.renderBlit`. On `FlxG.renderTile` it determines whether - * `framePixels` is used and defaults to `false` for performance reasons. - - - - defaultAntialiasing - * Controls whether the object is smoothed when rotated, affects performance. - - - - true - * Set this flag to true to force the sprite to update during the `draw()` call. - * NOTE: Rarely if ever necessary, most sprite operations will flip this flag automatically. - - - - * This sprite's graphic / `BitmapData` object. - * Automatically adjusts graphic size and render helpers if changed. - - - - * Link to current `FlxFrame` from loaded atlas - - - - 0 - * The width of the actual graphic or image being displayed (not necessarily the game object/bounding box). - - - - 0 - * The height of the actual graphic or image being displayed (not necessarily the game object/bounding box). - - - - 0 - * The total number of frames in this image. - * WARNING: assumes each row in the sprite sheet is full! - - - - * Rendering variables. - - - - - 0 - * The minimum angle (out of 360°) for which a new baked rotation exists. Example: `90` means there - * are 4 baked rotations in the spritesheet. `0` if this sprite does not have any baked rotations. - - - - 1.0 - * Set alpha to a number between `0` and `1` to change the opacity of the sprite. - - - - RIGHT - * Can be set to `LEFT`, `RIGHT`, `UP`, and `DOWN` to take advantage - * of flipped sprites and/or just track player orientation more easily. - - - - false - * Whether this sprite is flipped on the X axis. - - - - false - * Whether this sprite is flipped on the Y axis. - - - - * WARNING: The `origin` of the sprite will default to its center. If you change this, - * the visuals and the collisions will likely be pretty out-of-sync if you do any rotation. - - - - * The position of the sprite's graphic relative to its hitbox. For example, `offset.x = 10;` will - * show the graphic 10 pixels left of the hitbox. Likely needs to be adjusted after changing a sprite's - * `width`, `height` or `scale`. - - - - false - * Whenever it should render the offset as the rotOffset. Defaults to false - - - - * Rotation hitbox - - - - * Rotation hitbox angle - - - - * Change the size of your sprite's graphic. - * NOTE: The hitbox is not automatically adjusted, use `updateHitbox()` for that (or `setGraphicSize()`). - * WARNING: With `FlxG.renderBlit`, scaling sprites decreases rendering performance by a factor of about x10! - - - - * Blending modes, just like Photoshop or whatever, e.g. "multiply", "screen", etc. - - - - 0xffffff - * Tints the whole sprite to a color (`0xRRGGBB` format) - similar to OpenGL vertex colors. You can use - * `0xAARRGGBB` colors, but the alpha value will simply be ignored. To change the opacity use `alpha`. - - - - - false - * Whether or not to use a `ColorTransform` set via `setColorTransform()`. - - - - * Clipping rectangle for this sprite. - * Changing the rect's properties directly doesn't have any effect, - * reassign the property to update it (`sprite.clipRect = sprite.clipRect;`). - * Set to `null` to discard graphic frame clipping. - - - - * GLSL shader for this sprite. Only works with OpenFL Next or WebGL. - * Avoid changing it frequently as this is a costly operation. - * @since 4.1.0 - - <_frame> - - - * The actual frame used for sprite rendering - - <_frameGraphic> - - - * Graphic of `_frame`. Used in tile render mode, when `useFramePixels` is `true`. - - <_facingHorizontalMult expr="1"> - - - 1 - - - - <_facingVerticalMult expr="1"> - - - 1 - - - - <_flashPoint> - - - * Internal, reused frequently during drawing and animating. - - <_flashRect> - - - * Internal, reused frequently during drawing and animating. - - <_flashRect2> - - - * Internal, reused frequently during drawing and animating. - - <_flashPointZero> - - - * Internal, reused frequently during drawing and animating. Always contains `(0,0)`. - - <_matrix> - - - * Internal, helps with animation, caching and drawing. - - <_halfSize> - - - * Rendering helper variable - - <_sinAngle expr="0"> - - - 0 - - - * These vars are being used for rendering in some of `FlxSprite` subclasses (`FlxTileblock`, `FlxBar`, - * and `FlxBitmapText`) and for checks if the sprite is in camera's view. - - <_cosAngle expr="1"> - - - 1 - - - - <_angleChanged expr="true"> - - - true - - - - <_facingFlip expr="new Map<FlxDirectionFlags,{ var x : Bool; var y : Bool}>()"> - - - - - - - - - ()]]> - - - * Maps `FlxDirectionFlags` values to axis flips - - - - - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - - - - - - - * Load graphic from another `FlxSprite` and copy its tile sheet data. - * This method can useful for non-flash targets. - * - * @param Sprite The `FlxSprite` from which you want to load graphic data. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - * Load an image from an embedded graphic file. - * - * HaxeFlixel's graphic caching system keeps track of loaded image data. - * When you load an identical copy of a previously used image, by default - * HaxeFlixel copies the previous reference onto the `pixels` field instead - * of creating another copy of the image data, to save memory. - * - * @param Graphic The image you want to use. - * @param Animated Whether the `Graphic` parameter is a single sprite or a row / grid of sprites. - * @param Width Specify the width of your sprite - * (helps figure out what to do with non-square sprites or sprite sheets). - * @param Height Specify the height of your sprite - * (helps figure out what to do with non-square sprites or sprite sheets). - * @param Unique Whether the graphic should be a unique instance in the graphics cache. - * Set this to `true` if you want to modify the `pixels` field without changing - * the `pixels` of other sprites with the same `BitmapData`. - * @param Key Set this parameter if you're loading `BitmapData`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Frame : -1, Rotations : 16 } - * Create a pre-rotated sprite sheet from a simple sprite. - * This can make a huge difference in graphical performance on blitting targets! - * - * @param Graphic The image you want to rotate and stamp. - * @param Rotations The number of rotation frames the final sprite should have. - * For small sprites this can be quite a large number (`360` even) without any problems. - * @param Frame If the `Graphic` has a single row of square animation frames on it, - * you can specify which of the frames you want to use here. - * Default is `-1`, or "use whole graphic." - * @param AntiAliasing Whether to use high quality rotations when creating the graphic. Default is `false`. - * @param AutoBuffer Whether to automatically increase the image size to accommodate rotated corners. - * Will create frames that are 150% larger on each axis than the original frame or graphic. - * @param Key Optional, set this parameter if you're loading `BitmapData`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Rotations : 16 } - * Helper method which allows using `FlxFrame` as graphic source for sprite's `loadRotatedGraphic()` method. - * - * @param frame Frame to load into this sprite. - * @param rotations The number of rotation frames the final sprite should have. - * For small sprites this can be quite a large number (`360` even) without any problems. - * @param antiAliasing Whether to use high quality rotations when creating the graphic. Default is `false`. - * @param autoBuffer Whether to automatically increase the image size to accommodate rotated corners. - * Will create frames that are 150% larger on each axis than the original frame or graphic. - * @return this FlxSprite with loaded rotated graphic in it. - - - - - - - - - - - { Unique : false, Color : FlxColor.WHITE } - * This function creates a flat colored rectangular image dynamically. - * - * HaxeFlixel's graphic caching system keeps track of loaded image data. - * When you make an identical copy of a previously used image, by default - * HaxeFlixel copies the previous reference onto the pixels field instead - * of creating another copy of the image data, to save memory. - * - * @param Width The width of the sprite you want to generate. - * @param Height The height of the sprite you want to generate. - * @param Color Specifies the color of the generated block (ARGB format). - * @param Unique Whether the graphic should be a unique instance in the graphics cache. Default is `false`. - * Set this to `true` if you want to modify the `pixels` field without changing the - * `pixels` of other sprites with the same `BitmapData`. - * @param Key An optional `String` key to identify this graphic in the cache. - * If `null`, the key is determined by `Width`, `Height` and `Color`. - * If `Unique` is `true` and a graphic with this `Key` already exists, - * it is used as a prefix to find a new unique name like `"Key3"`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - - - * Called whenever a new graphic is loaded for this sprite (after `loadGraphic()`, `makeGraphic()` etc). - - - - * Resets some internal variables used for frame `BitmapData` calculation. - - - - * Resets frame size to frame dimensions. - - - - * Resets sprite's size back to frame size. - - - - * Helper method just for convenience, so you don't need to type - * `sprite.frame = sprite.frame;` - * You may need this method in tile render mode, - * when you want sprite to use its original graphic, not the graphic generated from its `framePixels`. - - - - - - - - { Height : 0, Width : 0 } - - - - - * Updates the sprite's hitbox (`width`, `height`, `offset`) according to the current `scale`. - * Also calls `centerOrigin()`. - - - - - * Resets some important variables for sprite optimization and rendering. - - - - - - - - - - - * This is separated out so it can be easily overridden. - - - - - - <__firstDraw expr="true"> - - true - - - - * Called by game loop, updates then blits or renders current frame of animation to the screen. - - - - - - - - - <_flipX expr="false"> - - false - - <_flipY expr="false"> - - false - - - - - - - - - - - - - - - * Made in case developer wanna finalize stuff with the matrix. - - - - - - - - - { Y : 0, X : 0 } - * Stamps / draws another `FlxSprite` onto this `FlxSprite`. - * This function is NOT intended to replace `draw()`! - * - * @param Brush The sprite you want to use as a brush or stamp or pen or whatever. - * @param X The X coordinate of the brush's top left corner on this sprite. - * @param Y They Y coordinate of the brush's top left corner on this sprite. - - - - - - - { Force : false } - * Request (or force) that the sprite update the frame before rendering. - * Useful if you are doing procedural generation or other weirdness! - * - * @param Force Force the frame to redraw, even if its not flagged as necessary. - - - - - - - { AdjustPosition : false } - * Helper function that adjusts the offset automatically to center the bounding box within the graphic. - * - * @param AdjustPosition Adjusts the actual X and Y position just once to match the offset change. - - - - * Sets the sprite's origin to its center - useful after adjusting - * `scale` to make sure rotations work as expected. - - - - - - - - - { FetchPositions : false } - * Replaces all pixels with specified `Color` with `NewColor` pixels. - * WARNING: very expensive (especially on big graphics) as it iterates over every single pixel. - * - * @param Color Color to replace - * @param NewColor New color - * @param FetchPositions Whether we need to store positions of pixels which colors were replaced. - * @return `Array` with replaced pixels positions - - - - - - - - - - - - - - { alphaOffset : 0, blueOffset : 0, greenOffset : 0, redOffset : 0, alphaMultiplier : 1.0, blueMultiplier : 1.0, greenMultiplier : 1.0, redMultiplier : 1.0 } - * Sets the sprite's color transformation with control over color offsets. - * With `FlxG.renderTile`, offsets are only supported on OpenFL Next version 3.6.0 or higher. - * - * @param redMultiplier The value for the red multiplier, in the range from `0` to `1`. - * @param greenMultiplier The value for the green multiplier, in the range from `0` to `1`. - * @param blueMultiplier The value for the blue multiplier, in the range from `0` to `1`. - * @param alphaMultiplier The value for the alpha transparency multiplier, in the range from `0` to `1`. - * @param redOffset The offset value for the red color channel, in the range from `-255` to `255`. - * @param greenOffset The offset value for the green color channel, in the range from `-255` to `255`. - * @param blueOffset The offset for the blue color channel value, in the range from `-255` to `255`. - * @param alphaOffset The offset for alpha transparency channel value, in the range from `-255` to `255`. - - - - - - - - - - { mask : 0xFF } - * Checks to see if a point in 2D world space overlaps this `FlxSprite` object's - * current displayed pixels. This check is ALWAYS made in screen space, and - * factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint point in world space you want to check. - * @param mask Used in the pixel hit test to determine what counts as solid. - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return Whether or not the point overlaps this object. - - - - - - - - * Determines which of this sprite's pixels are at the specified world coordinate, if any. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint The point in world space - * @param camera The camera, used for `scrollFactor`. If `null`, `FlxG.camera` is used. - * @return a `FlxColor`, if the point is in the sprite's graphic, otherwise `null` is returned. - * @since 5.0.0 - - - - - - - - * Determines which of this sprite's pixels are at the specified screen coordinate, if any. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param screenPoint The point in screen space - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return a `FlxColor`, if the point is in the sprite's graphic, otherwise `null` is returned. - * @since 5.0.0 - - - - - - - - - * Converts the point from world coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint The world coordinates. - * @param camera The camera, used for `scrollFactor`. If `null`, `FlxG.camera` is used. - * @param result Optional arg for the returning point - - - - - - - - * Converts the point from world coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. Same as `worldToPixels` but never uses a camera, - * therefore `scrollFactor` is ignored - * - * @param worldPoint The world coordinates. - * @param result Optional arg for the returning point - - - - - - - - - * Converts the point from screen coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param screenPoint The screen coordinates - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @param result Optional arg for the returning point - - - - - - - - { RunOnCpp : false } - - - * Internal function to update the current animation frame. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - - - * Retrieves the `BitmapData` of the current `FlxFrame`. Updates `framePixels`. - - - - - - - * Retrieve the midpoint of this sprite's graphic in world coordinates. - * - * @param point Allows you to pass in an existing `FlxPoint` if you're so inclined. - * Otherwise a new one is created. - * @return A `FlxPoint` containing the midpoint of this sprite's graphic in world coordinates. - - - - - - - * Check and see if this object is currently on screen. Differs from `FlxObject`'s implementation - * in that it takes the actual graphic into account, not just the hitbox or bounding box or whatever. - * - * @param Camera Specify which game camera you want. If `null`, `FlxG.camera` is used. - * @return Whether the object is on screen or not. - - - - - - - * Returns the result of `isSimpleRenderBlit()` if `FlxG.renderBlit` is - * `true`, or `false` if `FlxG.renderTile` is `true`. - - - - - - - * Determines the function used for rendering in blitting: - * `copyPixels()` for simple sprites, `draw()` for complex ones. - * Sprites are considered simple when they have an `angle` of `0`, a `scale` of `1`, - * don't use `blend` and `pixelPerfectRender` is `true`. - * - * @param camera If a camera is passed its `pixelPerfectRender` flag is taken into account - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this - * sprite's width and height, at its current rotation. - * Note, if called on a `FlxSprite`, the origin is used, but scale and offset are ignored. - * Use `getScreenBounds` to use these properties. - * @param newRect The optional output `FlxRect` to be returned, if `null`, a new one is created. - * @return A globally aligned `FlxRect` that fully contains the input object's width and height. - * @since 4.11.0 - - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this sprite's graphic as it - * would be displayed. Honors scrollFactor, rotation, scale, offset and origin. - * @param newRect Optional output `FlxRect`, if `null`, a new one is created. - * @param camera Optional camera used for scrollFactor, if null `FlxG.camera` is used. - * @return A globally aligned `FlxRect` that fully contains the input sprite. - * @since 4.11.0 - - - - - - - - - * Set how a sprite flips when facing in a particular direction. - * - * @param Direction Use constants `LEFT`, `RIGHT`, `UP`, and `DOWN`. - * These may be combined with the bitwise OR operator. - * E.g. To make a sprite flip horizontally when it is facing both `UP` and `LEFT`, - * use `setFacingFlip(LEFT | UP, true, false);` - * @param FlipX Whether to flip the sprite on the X axis. - * @param FlipY Whether to flip the sprite on the Y axis. - - - - - - - - - { saveAnimations : true } - flixel.animation.FlxAnimationController - - * Sets frames and allows you to save animations in sprite's animation controller - * - * @param Frames Frames collection to set for this sprite. - * @param saveAnimations Whether to save animations in animation controller or not. - * @return This sprite with loaded frames - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Internal function for setting graphic property for this object. - * It changes graphics' `useCount` also for better memory tracking. - - - - - - - - - - - - - - - * Frames setter. Used by `loadGraphic` methods, but you can load generated frames yourself - * (this should be even faster since engine doesn't need to do bunch of additional stuff). - * - * @param Frames frames to load into this sprite. - * @return loaded frames. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * Creates a `FlxSprite` at a specified position with a specified one-frame graphic. - * If none is provided, a 16x16 image of the HaxeFlixel logo is used. - * - * @param X The initial X position of the sprite. - * @param Y The initial Y position of the sprite. - * @param SimpleGraphic The graphic you want to display - * (OPTIONAL - for simple stuff only, do NOT use for animated images!). - - * The main "game object" class, the sprite is a `FlxObject` - * with a bunch of graphics options and abilities, like animation and stamping. - * - * Load an image onto a sprite using the `loadGraphic*()` functions, - * or create a base monochromatic rectangle using `makeGraphic()`. - * The image `BitmapData` is stored in the `pixels` field. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__initVars set="method" line="31"> - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - - * Load graphic from another `FlxSprite` and copy its tile sheet data. - * This method can useful for non-flash targets. - * - * @param Sprite The `FlxSprite` from which you want to load graphic data. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadGraphicFromSprite public="1" set="method" line="148"> - - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - * Load an image from an embedded graphic file. - * - * HaxeFlixel's graphic caching system keeps track of loaded image data. - * When you load an identical copy of a previously used image, by default - * HaxeFlixel copies the previous reference onto the `pixels` field instead - * of creating another copy of the image data, to save memory. - * - * @param Graphic The image you want to use. - * @param Animated Whether the `Graphic` parameter is a single sprite or a row / grid of sprites. - * @param Width Specify the width of your sprite - * (helps figure out what to do with non-square sprites or sprite sheets). - * @param Height Specify the height of your sprite - * (helps figure out what to do with non-square sprites or sprite sheets). - * @param Unique Whether the graphic should be a unique instance in the graphics cache. - * Set this to `true` if you want to modify the `pixels` field without changing - * the `pixels` of other sprites with the same `BitmapData`. - * @param Key Set this parameter if you're loading `BitmapData`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadGraphic public="1" set="method" line="148"> - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Frame : -1, Rotations : 16 } - * Create a pre-rotated sprite sheet from a simple sprite. - * This can make a huge difference in graphical performance on blitting targets! - * - * @param Graphic The image you want to rotate and stamp. - * @param Rotations The number of rotation frames the final sprite should have. - * For small sprites this can be quite a large number (`360` even) without any problems. - * @param Frame If the `Graphic` has a single row of square animation frames on it, - * you can specify which of the frames you want to use here. - * Default is `-1`, or "use whole graphic." - * @param AntiAliasing Whether to use high quality rotations when creating the graphic. Default is `false`. - * @param AutoBuffer Whether to automatically increase the image size to accommodate rotated corners. - * Will create frames that are 150% larger on each axis than the original frame or graphic. - * @param Key Optional, set this parameter if you're loading `BitmapData`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadRotatedGraphic public="1" set="method" line="148"> - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Frame : -1, Rotations : 16 } - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Rotations : 16 } - * Helper method which allows using `FlxFrame` as graphic source for sprite's `loadRotatedGraphic()` method. - * - * @param frame Frame to load into this sprite. - * @param rotations The number of rotation frames the final sprite should have. - * For small sprites this can be quite a large number (`360` even) without any problems. - * @param antiAliasing Whether to use high quality rotations when creating the graphic. Default is `false`. - * @param autoBuffer Whether to automatically increase the image size to accommodate rotated corners. - * Will create frames that are 150% larger on each axis than the original frame or graphic. - * @return this FlxSprite with loaded rotated graphic in it. - - <_HX_SUPER__loadRotatedFrame public="1" set="method" line="148"> - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Rotations : 16 } - - - - - - - - - - - { Unique : false, Color : FlxColor.WHITE } - * This function creates a flat colored rectangular image dynamically. - * - * HaxeFlixel's graphic caching system keeps track of loaded image data. - * When you make an identical copy of a previously used image, by default - * HaxeFlixel copies the previous reference onto the pixels field instead - * of creating another copy of the image data, to save memory. - * - * @param Width The width of the sprite you want to generate. - * @param Height The height of the sprite you want to generate. - * @param Color Specifies the color of the generated block (ARGB format). - * @param Unique Whether the graphic should be a unique instance in the graphics cache. Default is `false`. - * Set this to `true` if you want to modify the `pixels` field without changing the - * `pixels` of other sprites with the same `BitmapData`. - * @param Key An optional `String` key to identify this graphic in the cache. - * If `null`, the key is determined by `Width`, `Height` and `Color`. - * If `Unique` is `true` and a graphic with this `Key` already exists, - * it is used as a prefix to find a new unique name like `"Key3"`. - * @return This `FlxSprite` instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__makeGraphic public="1" set="method" line="148"> - - - - - - - - - { Unique : false, Color : FlxColor.WHITE } - - - - * Called whenever a new graphic is loaded for this sprite (after `loadGraphic()`, `makeGraphic()` etc). - - <_HX_SUPER__graphicLoaded public="1" set="method" line="31"> - - - - - - - { Height : 0, Width : 0 } - - - <_HX_SUPER__setGraphicSize public="1" set="method" line="31"> - - - - - - { Height : 0, Width : 0 } - - - - * Updates the sprite's hitbox (`width`, `height`, `offset`) according to the current `scale`. - * Also calls `centerOrigin()`. - - <_HX_SUPER__updateHitbox public="1" set="method" line="31"> - - - - * Resets some important variables for sprite optimization and rendering. - - <_HX_SUPER__resetHelpers set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - * This is separated out so it can be easily overridden. - - <_HX_SUPER__updateAnimation set="method" line="31"> - - - - - - - - <_HX_SUPER__checkEmptyFrame set="method" line="148"> - - - * Called by game loop, updates then blits or renders current frame of animation to the screen. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__drawSimple set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__drawComplex set="method" line="31"> - - - - - - - - - - * Made in case developer wanna finalize stuff with the matrix. - - <_HX_SUPER__doAdditionalMatrixStuff public="1" set="method" line="148"> - - - - - - - - - - - - { Y : 0, X : 0 } - * Stamps / draws another `FlxSprite` onto this `FlxSprite`. - * This function is NOT intended to replace `draw()`! - * - * @param Brush The sprite you want to use as a brush or stamp or pen or whatever. - * @param X The X coordinate of the brush's top left corner on this sprite. - * @param Y They Y coordinate of the brush's top left corner on this sprite. - - <_HX_SUPER__stamp public="1" set="method" line="31"> - - - - - - - { Y : 0, X : 0 } - - - - - - - { Force : false } - * Request (or force) that the sprite update the frame before rendering. - * Useful if you are doing procedural generation or other weirdness! - * - * @param Force Force the frame to redraw, even if its not flagged as necessary. - - <_HX_SUPER__drawFrame public="1" set="method" line="31"> - - - - - { Force : false } - - - - - - - { AdjustPosition : false } - * Helper function that adjusts the offset automatically to center the bounding box within the graphic. - * - * @param AdjustPosition Adjusts the actual X and Y position just once to match the offset change. - - <_HX_SUPER__centerOffsets public="1" set="method" line="31"> - - - - - { AdjustPosition : false } - - - - - - - - - { FetchPositions : false } - * Replaces all pixels with specified `Color` with `NewColor` pixels. - * WARNING: very expensive (especially on big graphics) as it iterates over every single pixel. - * - * @param Color Color to replace - * @param NewColor New color - * @param FetchPositions Whether we need to store positions of pixels which colors were replaced. - * @return `Array` with replaced pixels positions - - <_HX_SUPER__replaceColor public="1" set="method" line="148"> - - - - - - - { FetchPositions : false } - - - - - - - - - - - - - - { alphaOffset : 0, blueOffset : 0, greenOffset : 0, redOffset : 0, alphaMultiplier : 1.0, blueMultiplier : 1.0, greenMultiplier : 1.0, redMultiplier : 1.0 } - * Sets the sprite's color transformation with control over color offsets. - * With `FlxG.renderTile`, offsets are only supported on OpenFL Next version 3.6.0 or higher. - * - * @param redMultiplier The value for the red multiplier, in the range from `0` to `1`. - * @param greenMultiplier The value for the green multiplier, in the range from `0` to `1`. - * @param blueMultiplier The value for the blue multiplier, in the range from `0` to `1`. - * @param alphaMultiplier The value for the alpha transparency multiplier, in the range from `0` to `1`. - * @param redOffset The offset value for the red color channel, in the range from `-255` to `255`. - * @param greenOffset The offset value for the green color channel, in the range from `-255` to `255`. - * @param blueOffset The offset for the blue color channel value, in the range from `-255` to `255`. - * @param alphaOffset The offset for alpha transparency channel value, in the range from `-255` to `255`. - - <_HX_SUPER__setColorTransform public="1" set="method" line="31"> - - - - - - - - - - - - { alphaOffset : 0, blueOffset : 0, greenOffset : 0, redOffset : 0, alphaMultiplier : 1.0, blueMultiplier : 1.0, greenMultiplier : 1.0, redMultiplier : 1.0 } - - - <_HX_SUPER__updateColorTransform set="method" line="31"> - - - - - - - - { mask : 0xFF } - * Checks to see if a point in 2D world space overlaps this `FlxSprite` object's - * current displayed pixels. This check is ALWAYS made in screen space, and - * factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint point in world space you want to check. - * @param mask Used in the pixel hit test to determine what counts as solid. - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return Whether or not the point overlaps this object. - - <_HX_SUPER__pixelsOverlapPoint public="1" set="method" line="148"> - - - - - - - { mask : 0xFF } - - - - - - - - * Determines which of this sprite's pixels are at the specified world coordinate, if any. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint The point in world space - * @param camera The camera, used for `scrollFactor`. If `null`, `FlxG.camera` is used. - * @return a `FlxColor`, if the point is in the sprite's graphic, otherwise `null` is returned. - * @since 5.0.0 - - <_HX_SUPER__getPixelAt public="1" set="method" line="148"> - - - - - - - - - - - * Determines which of this sprite's pixels are at the specified screen coordinate, if any. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param screenPoint The point in screen space - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @return a `FlxColor`, if the point is in the sprite's graphic, otherwise `null` is returned. - * @since 5.0.0 - - <_HX_SUPER__getPixelAtScreen public="1" set="method" line="148"> - - - - - - - - - - - - * Converts the point from world coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param worldPoint The world coordinates. - * @param camera The camera, used for `scrollFactor`. If `null`, `FlxG.camera` is used. - * @param result Optional arg for the returning point - - <_HX_SUPER__transformWorldToPixels public="1" set="method" line="148"> - - - - - - - - - - - - * Converts the point from world coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. Same as `worldToPixels` but never uses a camera, - * therefore `scrollFactor` is ignored - * - * @param worldPoint The world coordinates. - * @param result Optional arg for the returning point - - <_HX_SUPER__transformWorldToPixelsSimple public="1" set="method" line="148"> - - - - - - - - - - - - * Converts the point from screen coordinates to this sprite's pixel coordinates where (0,0) - * is the top left of the graphic. - * Factors in `scale`, `angle`, `offset`, `origin`, and `scrollFactor`. - * - * @param screenPoint The screen coordinates - * @param camera The desired "screen" coordinate space. If `null`, `FlxG.camera` is used. - * @param result Optional arg for the returning point - - <_HX_SUPER__transformScreenToPixels public="1" set="method" line="148"> - - - - - - - - - - - - { RunOnCpp : false } - - - * Internal function to update the current animation frame. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - <_HX_SUPER__calcFrame set="method" line="31"> - - - - - { RunOnCpp : false } - - - - * Retrieves the `BitmapData` of the current `FlxFrame`. Updates `framePixels`. - - <_HX_SUPER__updateFramePixels public="1" set="method" line="148"> - - - - - - * Retrieve the midpoint of this sprite's graphic in world coordinates. - * - * @param point Allows you to pass in an existing `FlxPoint` if you're so inclined. - * Otherwise a new one is created. - * @return A `FlxPoint` containing the midpoint of this sprite's graphic in world coordinates. - - <_HX_SUPER__getGraphicMidpoint public="1" set="method" line="148"> - - - - - - - - - * Check and see if this object is currently on screen. Differs from `FlxObject`'s implementation - * in that it takes the actual graphic into account, not just the hitbox or bounding box or whatever. - * - * @param Camera Specify which game camera you want. If `null`, `FlxG.camera` is used. - * @return Whether the object is on screen or not. - - <_HX_SUPER__isOnScreen public="1" set="method" line="148"> - - - - - - - - - * Returns the result of `isSimpleRenderBlit()` if `FlxG.renderBlit` is - * `true`, or `false` if `FlxG.renderTile` is `true`. - - <_HX_SUPER__isSimpleRender public="1" set="method" line="148"> - - - - - - - - - * Determines the function used for rendering in blitting: - * `copyPixels()` for simple sprites, `draw()` for complex ones. - * Sprites are considered simple when they have an `angle` of `0`, a `scale` of `1`, - * don't use `blend` and `pixelPerfectRender` is `true`. - * - * @param camera If a camera is passed its `pixelPerfectRender` flag is taken into account - - <_HX_SUPER__isSimpleRenderBlit public="1" set="method" line="148"> - - - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this - * sprite's width and height, at its current rotation. - * Note, if called on a `FlxSprite`, the origin is used, but scale and offset are ignored. - * Use `getScreenBounds` to use these properties. - * @param newRect The optional output `FlxRect` to be returned, if `null`, a new one is created. - * @return A globally aligned `FlxRect` that fully contains the input object's width and height. - * @since 4.11.0 - - <_HX_SUPER__getRotatedBounds set="method" line="148"> - - - - - - - - - - * Calculates the smallest globally aligned bounding box that encompasses this sprite's graphic as it - * would be displayed. Honors scrollFactor, rotation, scale, offset and origin. - * @param newRect Optional output `FlxRect`, if `null`, a new one is created. - * @param camera Optional camera used for scrollFactor, if null `FlxG.camera` is used. - * @return A globally aligned `FlxRect` that fully contains the input sprite. - * @since 4.11.0 - - <_HX_SUPER__getScreenBounds public="1" set="method" line="148"> - - - - - - - - - - - - { saveAnimations : true } - flixel.animation.FlxAnimationController - - * Sets frames and allows you to save animations in sprite's animation controller - * - * @param Frames Frames collection to set for this sprite. - * @param saveAnimations Whether to save animations in animation controller or not. - * @return This sprite with loaded frames - - <_HX_SUPER__setFrames public="1" set="method" line="148"> - - - - - - { saveAnimations : true } - - - - - - <_HX_SUPER__get_pixels set="method" line="148"> - - - - - - - - <_HX_SUPER__set_pixels set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_frame set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_facing set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_angle set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_blend set="method" line="148"> - - - - - - - - - - * Internal function for setting graphic property for this object. - * It changes graphics' `useCount` also for better memory tracking. - - <_HX_SUPER__set_graphic set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_clipRect set="method" line="148"> - - - - - - - - - - * Frames setter. Used by `loadGraphic` methods, but you can load generated frames yourself - * (this should be even faster since engine doesn't need to do bunch of additional stuff). - * - * @param Frames frames to load into this sprite. - * @return loaded frames. - - <_HX_SUPER__set_frames set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_flipX set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_flipY set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_antialiasing set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_useFramePixels set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxSprite - flixel.FlxSprite.IFlxSprite - - - - - - - - - - - - - - - - - - - - - - - * Helper for overlap functions in `FlxObject` and `FlxTilemap`. - - - - - - - - - - - * `Array` of all the members in this group. - - - - * The maximum capacity of this group. Default is `0`, meaning no max capacity, and the group can just grow. - - - - 0 - * The number of entries in the members array. For performance and safety you should check this - * variable instead of `members.length` unless you really know what you're doing! - - - - - - - * A `FlxSignal` that dispatches when a child is added to this group. - * @since 4.4.0 - - - - - - - * A `FlxSignal` that dispatches when a child is removed from this group. - * @since 4.4.0 - - <_memberAdded> - - - - - - * Internal variables for lazily creating `memberAdded` and `memberRemoved` signals when needed. - - <_memberRemoved> - - - - - - - <_marker expr="0"> - - - 0 - - - * Internal helper variable for recycling objects a la `FlxEmitter`. - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - - - - - - * Automatically goes through and calls update on everything you added. - - - - * Automatically goes through and calls render on everything you added. - - - - - - - * Adds a new `FlxBasic` subclass (`FlxBasic`, `FlxSprite`, `Enemy`, etc) to the group. - * `FlxGroup` will try to replace a `null` member of the array first. - * Failing that, `FlxGroup` will add it to the end of the member array. - * WARNING: If the group has a `maxSize` that has already been met, - * the object will NOT be added to the group! - * - * @param Object The object you want to add to the group. - * @return The same `FlxBasic` object that was passed in. - - - - - - - - * Inserts a new `FlxBasic` subclass (`FlxBasic`, `FlxSprite`, `Enemy`, etc) - * into the group at the specified position. - * `FlxGroup` will try to replace a `null` member at the specified position of the array first. - * Failing that, `FlxGroup` will insert it at the position of the member array. - * WARNING: If the group has a `maxSize` that has already been met, - * the object will NOT be inserted to the group! - * - * @param Position The position in the group where you want to insert the object. - * @param Object The object you want to insert into the group. - * @return The same `FlxBasic` object that was passed in. - - - - - - - - - - { Revive : true, Force : false } - 0` / "rotating-recycling" (used by `FlxEmitter`): - * - at capacity: returns the next object in line, no matter its properties like `alive`, `exists` etc. - * - otherwise: returns a new object. - * - * `maxSize == 0` / "grow-style-recycling" - * - tries to find the first object with `exists == false` - * - otherwise: adds a new object to the `members` array - * - * WARNING: If this function needs to create a new object, and no object class was provided, - * it will return `null` instead of a valid object! - * - * @param ObjectClass The class type you want to recycle (e.g. `FlxSprite`, `EvilRobot`, etc). - * @param ObjectFactory Optional factory function to create a new object - * if there aren't any dead members to recycle. - * If `null`, `Type.createInstance()` is used, - * which requires the class to have no constructor parameters. - * @param Force Force the object to be an `ObjectClass` and not a super class of `ObjectClass`. - * @param Revive Whether recycled members should automatically be revived - * (by calling `revive()` on them). - * @return A reference to the object that was created.]]> - - - - - - - - - - - - - - - - { Splice : false } - * Removes an object from the group. - * - * @param Object The `FlxBasic` you want to remove. - * @param Splice Whether the object should be cut from the array entirely or not. - * @return The removed object. - - - - - - - - * Replaces an existing `FlxBasic` with a new one. - * Does not do anything and returns `null` if the old object is not part of the group. - * - * @param OldObject The object you want to replace. - * @param NewObject The new object you want to use instead. - * @return The new object. - - - - - - - - - - - - - { Order : FlxSort.ASCENDING } - * Call this function to sort the group according to a particular value and order. - * For example, to sort game objects for Zelda-style overlaps you might call - * `group.sort(FlxSort.byY, FlxSort.ASCENDING)` at the bottom of your `FlxState#update()` override. - * - * @param Function The sorting function to use - you can use one of the premade ones in - * `FlxSort` or write your own using `FlxSort.byValues()` as a "backend". - * @param Order A constant that defines the sort order. - * Possible values are `FlxSort.ASCENDING` (default) and `FlxSort.DESCENDING`. - - - - - - - - { Force : false } - * Call this function to retrieve the first object with `exists == false` in the group. - * This is handy for recycling in general, e.g. respawning enemies. - * - * @param ObjectClass An optional parameter that lets you narrow the - * results to instances of this particular class. - * @param Force Force the object to be an `ObjectClass` and not a super class of `ObjectClass`. - * @return A `FlxBasic` currently flagged as not existing. - - - - * Call this function to retrieve the first index set to `null`. - * Returns `-1` if no index stores a `null` object. - * - * @return An `Int` indicating the first `null` slot in the group. - - - - * Call this function to retrieve the first object with `exists == true` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxBasic` currently flagged as existing. - - - - * Call this function to retrieve the first object with `dead == false` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxBasic` currently flagged as not dead. - - - - * Call this function to retrieve the first object with `dead == true` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxBasic` currently flagged as dead. - - - - * Call this function to find out how many members of the group are not dead. - * - * @return The number of `FlxBasic`s flagged as not dead. Returns `-1` if group is empty. - - - - * Call this function to find out how many members of the group are dead. - * - * @return The number of `FlxBasic`s flagged as dead. Returns `-1` if group is empty. - - - - - - - - { Length : 0, StartIndex : 0 } - * Returns a member at random from the group. - * - * @param StartIndex Optional offset off the front of the array. - * Default value is `0`, or the beginning of the array. - * @param Length Optional restriction on the number of values you want to randomly select from. - * @return A `FlxBasic` from the `members` list. - - - - * Remove all instances of `FlxBasic` subclasses (`FlxSprite`, `FlxTileblock`, etc) from the list. - * WARNING: does not `destroy()` or `kill()` any of these objects! - - - - * Calls `kill()` on the group's `members` and then on the group itself. - * You can revive this group later via `revive()` after this. - - - - * Calls `revive()` on the group's members and then on the group itself. - - - - - - - - - - * Iterates through every member. - - - - - - - - - - - { Recurse : false } - * Applies a function to all members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all `alive` members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all dead members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all existing members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - - { Recurse : false } - `. - * - * @param ObjectClass A class that objects will be checked against before Function is applied, ex: `FlxSprite`. - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { MaxSize : 0 } - * @param MaxSize Maximum amount of members allowed. - - * This is an organizational class that can update and render a bunch of `FlxBasic`s. - * NOTE: Although `FlxGroup` extends `FlxBasic`, it will not automatically - * add itself to the global collisions quad tree, it will only add its members. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - false - * Whenever the state already has been created. When create is called, this is set to true to prevent the state from being created twice when switching back to it. - - - - false - - - - false - * Determines whether or not this state is updated even when it is not the active state. - * For example, if you have your game state first, and then you push a menu state on top of it, - * if this is set to `true`, the game state would continue to update in the background. - * By default this is `false`, so background states will be "paused" when they are not active. - - - - true - * Determines whether or not this state is updated even when it is not the active state. - * For example, if you have your game state first, and then you push a menu state on top of it, - * if this is set to `true`, the game state would continue to be drawn behind the pause state. - * By default this is `true`, so background states will continue to be drawn behind the current state. - * - * If background states are not `visible` when you have a different state on top, - * you should set this to `false` for improved performance. - - - - true - * If substates get destroyed when they are closed, setting this to - * `false` might reduce state creation time, at greater memory cost. - - - - * The natural background color the cameras default to. In `AARRGGBB` format. - - - - * Current substate. Substates also can be nested. - - <_requestedSubState> - - - * If a state change was requested, the new state object is stored here until we switch to it. - - <_requestSubStateReset expr="false"> - - - false - - - * Whether to reset the substate (when it changes, or when it's closed). - - - - - - - * A `FlxSignal` that dispatches when a sub state is opened from this state. - * @since 4.9.0 - - - - - - - * A `FlxSignal` that dispatches when a sub state is closed from this state. - * @since 4.9.0 - - <_subStateOpened> - - - - - - * Internal variables for lazily creating `subStateOpened` and `subStateClosed` signals when needed. - - <_subStateClosed> - - - - - - - - - * This function is called after the game engine successfully switches states. - * Override this function, NOT the constructor, to initialize or set up your game state. - * We do NOT recommend initializing any flixel objects or utilizing flixel features in - * the constructor, unless you want some crazy unpredictable things to happen! - - - - - - - - - - * Closes the substate of this state, if one exists. - - - - * Load substate for this state - - - - - - - - * Called from `FlxG.switchState()`. If `false` is returned, the state - * switch is cancelled - the default implementation returns `true`. - * - * Useful for customizing state switches, e.g. for transition effects. - - - - * This method is called after the game loses focus. - * Can be useful for third party libraries, such as tweening engines. - - - - * This method is called after the game receives focus. - * Can be useful for third party libraries, such as tweening engines. - - - - - - - - * This function is called whenever the window size has been changed. - * - * @param Width The new window width - * @param Height The new window Height - - - - - - - flixel.FlxGame - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This is the basic game "state" object - e.g. in a simple game you might have a menu state and a play state. - * It is for all intents and purpose a fancy `FlxGroup`. And really, it's not even that fancy. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - * This function is called after the game engine successfully switches states. - * Override this function, NOT the constructor, to initialize or set up your game state. - * We do NOT recommend initializing any flixel objects or utilizing flixel features in - * the constructor, unless you want some crazy unpredictable things to happen! - - <_HX_SUPER__create public="1" set="method" line="31"> - - <_HX_SUPER__createPost public="1" set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - <_HX_SUPER__openSubState public="1" set="method" line="31"> - - - - - - * Closes the substate of this state, if one exists. - - <_HX_SUPER__closeSubState public="1" set="method" line="31"> - - - * Load substate for this state - - <_HX_SUPER__resetSubState public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Called from `FlxG.switchState()`. If `false` is returned, the state - * switch is cancelled - the default implementation returns `true`. - * - * Useful for customizing state switches, e.g. for transition effects. - - <_HX_SUPER__switchTo public="1" set="method" line="148"> - - - - - - * This method is called after the game loses focus. - * Can be useful for third party libraries, such as tweening engines. - - <_HX_SUPER__onFocusLost public="1" set="method" line="31"> - - - * This method is called after the game receives focus. - * Can be useful for third party libraries, such as tweening engines. - - <_HX_SUPER__onFocus public="1" set="method" line="31"> - - - - - - - * This function is called whenever the window size has been changed. - * - * @param Width The new window width - * @param Height The new window Height - - <_HX_SUPER__onResize public="1" set="method" line="31"> - - - - - - - - - - flixel.FlxGame - - <_HX_SUPER__tryUpdate set="method" line="31"> - - - - - - - - <_HX_SUPER__get_bgColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_bgColor set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__get_subStateOpened set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__get_subStateClosed set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxState - - - - - - - ()]]> - * A `Vector` of floats where each pair of numbers is treated as a coordinate location (an x, y pair). - - - - ()]]> - * A `Vector` of integers or indexes, where every three indexes define a triangle. - - - - ()]]> - * A `Vector` of normalized coordinates used to apply texture mapping. - - - - ()]]> - - - - false - - - - - - - - - - * A very basic rendering component which uses `drawTriangles()`. - * You have access to `vertices`, `indices` and `uvtData` vectors which are used as data storages for rendering. - * The whole `FlxGraphic` object is used as a texture for this sprite. - * Use these links for more info about `drawTriangles()`: - * @see http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#drawTriangles%28%29 - * @see http://help.adobe.com/en_US/as3/dev/WS84753F1C-5ABE-40b1-A2E4-07D7349976C4.html - * @see http://www.flashandmath.com/advanced/p10triangles/index.html - * - * WARNING: This class is EXTREMELY slow on Flash! - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxStrip - - - - - - - * Callback method for state open/resume event. - * @since 4.3.0 - - - - * Callback method for state close event. - - <_bgSprite> - - - * Helper sprite object for non-flash targets. Draws the background. - - <_parentState> - - - - flixel.FlxState.resetSubState - - * Helper var for `close()` so `closeSubState()` can be called on the parent. - - <_bgColor> - - - - - - - - * Closes this substate. - - - - - - - - - - - - - - - - - - { BGColor : FlxColor.TRANSPARENT } - * @param BGColor background color for this substate - - * A `FlxSubState` can be opened inside of a `FlxState`. - * By default, it also stops the parent state from updating, - * making it convenient for pause screens or menus. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Closes this substate. - - <_HX_SUPER__close public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__set_bgColor set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.FlxSubState - - - - - - 0 - * Hash types for the cryptography function. Use this or HASH_SHA1 for encryptURL(). MD5 is used by default. - - - - 1 - * Hash types for the cryptography function. Use this or HASH_MD5 for encryptURL(). MD5 is used by default. - - - - -1 - * Trophy data return type, will return only non-unlocked trophies. As an alternative, can just pass in the ID of the trophy to see if it's unlocked. - - - - -2 - * Trophy data return type, will return only unlocked trophies. As an alternative, can just pass in the ID of the trophy to see if it's unlocked. - - - - HASH_MD5 - * The hash type to be used for private key encryption. Set to FlxGameJolt.HASH_MD5 or FlxGameJolt.HASH_SHA1. Default is MD5. See https://gamejolt.com/api/doc/game/ section "Signature". - - - - false - * Whether or not to log the URL that is contacted and messages returned from GameJolt. - * Useful if you're not getting the right data back. - * Only works in debug mode. - - - - * Whether or not the API has been fully initialized by passing game id, private key, and authenticating user name and token. - - - - * Internal method to verify that init() has been called on this class. Called before running functions that require game ID or private key but not user data. - * - * @return True if game ID is set, false otherwise. - - - - * Internal method to verify that this user (and game) have been authenticated. Called before running functions which require authentication. - * - * @return True if authenticated, false otherwise. - - - - * The user's GameJolt user name. Only works if you've called authUser() and/or init(), otherwise will return "No user". - - - - * The user's GameJolt user token. Only works if you've called authUser() and/or init(), otherwise will return "No token". - * Generally you should not need to mess with this. - - - - * An alternative to running authUser() and hoping for the best; this will tell you if your game was run via Quick Play, and user name and token is available. Does NOT authenticate the user data! - * - * @return True if this was run via Quick Play with user name and token available, false otherwise. - - - - * An alternative to running authUser() and hoping for the best; this will tell you if your game was run as an embedded Flash on GameJolt that has user name and token data already. Does NOT authenticate the user data! - * - * @return True if it's an embedded SWF with user name and token available, false otherwise. - - <_callBack static="1"> - - * Internal storage for a callback function, used when the URLLoader is complete. - - <_gameID expr="0" line="122" static="1"> - - 0 - * Internal storage for this game's ID. - - <_privateKey expr="""" line="130" static="1"> - - "" - * Internal storage for this game's private key. - * Do NOT store your private key as a string literal in your game! - * This can be found at https://gamejolt.com/dashboard/developer/games/achievements/GAME_ID/ where GAME_ID is your unique game ID number. - * Each game has a unique private key; you cannot use one key for all of your games. - - <_userName static="1"> - - * Internal storage for this user's username. Can be retrieved automatically if Flash or QuickPlay. - - <_userToken static="1"> - - * Internal storage for this user's token. Can be retrieved automatically if Flash or QuickPlay. - - <_idURL static="1"> - - * Internal storage for the most common URL elements: the gameID, user name, and user token. - - <_initialized expr="false" line="150" static="1"> - - false - * Set to true once game ID, user name, user token have been set and user name and token have been verified. - - <_verifyAuth expr="false" line="155" static="1"> - - false - * Internal tracker for authenticating user data. - - <_getImage expr="false" line="160" static="1"> - - false - * Internal tracker for getting bitmapdata for a trophy image. - - <_loader static="1"> - - * URLLoader object for sending URL requests. - - - - - - - ()]]> - * A string map that contains what is returned from GameJolt servers. - - - - "https://gamejolt.com/api/game/v1/" - * Various common strings required by the API's https values. - - - - "?format=keypair" - - - - - - - - - - - - - - - - - - - - - - - - { AutoAuth : false } - * Initialize this class by storing the GameID and private key. - * You must call this function first for many of the other functions to work. - * To enable user-specific functions, call authUser() afterward, or set AutoAuth to true. - * - * @param GameID The unique game ID associated with this game on GameJolt. You must create a game profile on GameJolt to get this number. - * @param PrivateKey Your private key. You must have a developer account on GameJolt to have this number. Do NOT store this as plaintext in your game! - * @param AutoAuth Call authUser after init() has run to authenticate user data. - * @param UserName The username to authenticate, if AutoAuth is true. If you set AutoAuth to true but don't put a value here, FlxGameJolt will attempt to get the user data automatically, which will only work for Flash embedded on GameJolt, or games run via Quick Play. - * @param UserToken The user token to authenticate, if AutoAuth is true. If you set AutoAuth to true but don't put a value here, FlxGameJolt will attempt to get the user data automatically, which will only work for Flash embedded on GameJolt, or games run via Quick Play. - * @param Callback An optional callback function, which is only used if AutoAuth is set to true. Will return true if authentication was successful, false otherwise. - - - - - - - - - - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - * Verify user data. Must be called before any user-specific functions, and after init(). Will set initialized to true if successful. - * - * @see https://gamejolt.com/api/doc/game/users/auth/ - * @param UserName A user name. Leave null to automatically pull user data (only works for embedded Flash on GameJolt or Quick Play). Usernames can only have letters, numbers, hyphens (-) and underscores (_), and must be 3-30 characters long. - * @param UserToken A user token. Players enter this instead of a password to enable highscores, trophies, etc. Leave null to automatically pull user data (only works for embedded Flash on GameJolt or Quick Play). User tokens can only have letters and numbers, and must be 4-30 characters long. - * @param Callback An optional callback function. Will return true if authentication was successful, false otherwise. - - - - - - - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - { Active : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - { DataType : 0 } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - / in the right-hand column. - * @param Callback An optional callback function. Will return a Map whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - - - - - { AllowGuest : false } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - { User : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - - { User : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - - - { User : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - - { User : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - { User : true } - whose keys and values are equivalent to the key-value pairs returned by GameJolt.]]> - - - - - - - - * A generic internal function to setup and send a URLRequest. All of the functions that interact with the API use this. - * - * @param URLString The URL to send to. Usually formatted as the API url, section of the API (e.g. "trophies/") and then variables to pass (e.g. user name, trophy ID). - * @param Callback A function to call when loading is done and data is parsed. - - - - - - - when done. - * However, if we're getting an image, a second URLRequest is called, and that will be done first. - * Or, if we're authenticating the user, the verifyAuthentication function will be called instead. - * - * @param The URLLoader complete event.]]> - - - - - - - - - - * Internal function to evaluate whether or not a user was successfully authenticated and store the result in _initialized. If authentication failed, the tentative user name and token are nulled. - * - * @param ReturnMap The data received back from GameJolt. This should be {"success"="true"} if authenticated, or {"success"="false"} otherwise. - - - - - - - - - * Function to authenticate a new user, to be used when a user has already been authenticated but you'd like to authenticate a new one. - * If you just try to run authUser after a user has been authenticated, it will fail. - * - * @param UserName The user's name. - * @param UserToken The user's token. - * @param Callback An optional callback function. Will return true if authentication was successful, false otherwise. - - - - - - - - - - - * An easy-to-use function that returns the image associated with a trophy as BitmapData. - * All trophy images will be 75px by 75px. - * - * @param ID The ID of the trophy whose image you want to get. - * @param Callback An optional callback function. Must take a BitmapData object as a parameter. - - - - - - - - - - * An easy-to-use function that returns the user's avatar image as BitmapData. - * Requires that you've authenticated the user's data. - * All user images will be 60px by 60px. - * - * @param Callback An optional callback function. Must take a BitmapData object as a parameter. - - - - - - - - - - * Internal function that uses the image_url or avatar_url element from GameJolt to start a Loader that will retrieve the desired image. - - - - - - - * Internal function to send the image_url or avatar_url content to the callback function as BitmapData. - - - - - - - - - - - - - - - - Click on your game under "Manage Games" -> Click on "Achievements" in the menu. - * FlxGameJolt.init(gameid, keystring); // Use this if your game is embedded as Flash on GameJolt's site, or run via Quick Play.]]> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.api.FlxGameJolt - - - - - - - XY - * The axes to repeat the backdrop, defaults to XY which covers the whole camera. - - - - new FlxPoint() - * The gap between repeated tiles, defaults to (0, 0), or no gap. - - - - FlxG.renderBlit - * If true, tiles are pre-rendered to a intermediary bitmap whenever `loadGraphic` is called - * or the following properties are changed: camera size camera zoom, `scale.x`, `scale.y`, - * `spacing.x`, `spacing.y`, `repeatAxes` or `angle`. If these properties change often, it is recommended to - * set `drawBlit` to `false`. - * - * Note: blitting will disable animations and only show the first frame. - - - - AUTO - * Decides the the size of the blit graphic. Leave as `AUTO` unless you know what you're doing. - * - * @see flixel.addons.display.FlxBackDrop.BackdropBlitMode - - <_blitOffset expr="FlxPoint.get()"> - - FlxPoint.get() - - <_blitGraphic expr="null"> - - null - - <_prevDrawParams expr="{ graphicKey : null, tilesX : -1, tilesY : -1, scaleX : 0.0, scaleY : 0.0, spacingX : 0.0, spacingY : 0.0, repeatAxes : XY, angle : 0.0 }"> - - { graphicKey : null, tilesX : -1, tilesY : -1, scaleX : 0.0, scaleY : 0.0, spacingX : 0.0, spacingY : 0.0, repeatAxes : XY, angle : 0.0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { spacingY : 0, spacingX : 0, repeatAxes : XY } - * Creates an instance of the FlxBackdrop class, used to create infinitely scrolling backgrounds. - * - * @param graphic The image you want to use for the backdrop. - * @param repeatAxes If the backdrop should repeat on the X axis. - * @param spacingX Amount of spacing between tiles on the X axis - * @param spacingY Amount of spacing between tiles on the Y axis - - * Used for showing infinitely scrolling backgrounds. - * @author George Kurelic (Original concept by Chevy Ray) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - * Not implemented yet. - - - - * Blits a bitmap as big as the specified number of x and y tiles and repeats that. - - - - * Blits a bitmap as big as the specified number of tiles and repeats that. - - - - * Blits enough tiles to cover the screen in multiple draws, for example, if the camera is 10x8 - * tiles big, SPLIT(2) will draw a blit target 5x4 tiles large and draw it 2x2 times to cover the - * stage. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy set="method" line="31"> - - <_HX_SUPER__draw set="method" line="148"> - - - - - <_HX_SUPER__isOnScreen set="method" line="148"> - - - - - <_HX_SUPER__drawToLargestCamera set="method" line="148"> - - - - - <_HX_SUPER__isSimpleRenderBlit set="method" line="148"> - - - - - - - - <_HX_SUPER__drawSimple set="method" line="31"> - - - - - - - - <_HX_SUPER__drawComplex set="method" line="148"> - - - - - - - - <_HX_SUPER__getFrameScreenBounds set="method" line="148"> - - - - - - - - - - <_HX_SUPER__modMin set="method" line="148"> - - - - - - - - - - - - <_HX_SUPER__modMax set="method" line="148"> - - - - - - - - - - <_HX_SUPER__regenGraphic set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxBackdrop - flixel.addons.display.FlxBackdrop.BackdropBlitMode - flixel.addons.display.FlxBackdrop.BackdropDrawParams - - - - - - - * Used by FlxMouseControl when multiple sprites overlap and register clicks, and you need to determine which sprite has priority - - - - false - * If the mouse currently pressed down on this sprite? - - - - false - * Is this sprite allowed to be clicked? - - - - false - * Is this sprite allowed to be thrown? - - - - * An FlxRect region of the game world within which the sprite is restricted during mouse drag - - - - * An FlxSprite the bounds of which this sprite is restricted during mouse drag - - - - false - * Does this sprite have gravity applied to it? - - - - * The x axis gravity influence - - - - * The y axis gravity influence - - - - * Determines how quickly the Sprite come to rest on the walls if the sprite has x gravity enabled - - - - * Determines how quickly the Sprite come to rest on the ground if the sprite has y gravity enabled - - - - * If the velocity.x of this sprite falls between zero and this amount, then the sprite will come to a halt (have velocity.x set to zero) - - - - * If the velocity.y of this sprite falls between zero and this amount, then the sprite will come to a halt (have velocity.y set to zero) - - - - false - * Is this sprite being dragged by the mouse or not? - - - - false - * Is this sprite allowed to be dragged by the mouse? true = yes, false = no - - - - true - * Will the Mouse Spring be active always (false) or only when pressed (true) - - - - * By default the spring attaches to the top left of the sprite. To change this location provide an x offset (in pixels) - - - - * By default the spring attaches to the top left of the sprite. To change this location provide a y offset (in pixels) - - - - * Function called when the mouse is pressed down on this sprite. Function is passed these parameters: obj:FlxExtendedSprite, x:int, y:int - - - - * Function called when the mouse is released from this sprite. Function is passed these parameters: obj:FlxExtendedSprite, x:int, y:int - - - - * The MouseSpring object which is used to tie this sprite to the mouse - - - - * Function called when the mouse starts to drag this sprite. Function is passed these parameters: obj:FlxExtendedSprite, x:int, y:int - - - - * Function called when the mouse stops dragging this sprite. Function is passed these parameters: obj:FlxExtendedSprite, x:int, y:int - - - - false - * Is this sprite using a mouse spring? - - - - * The number of clicks this item has received. Usually you'd only set it to zero. - - - - * The spring x coordinate in game world space. Consists of sprite.x + springOffsetX - - - - * The spring y coordinate in game world space. Consists of sprite.y + springOffsetY - - - - * A FlxPoint consisting of this sprites world x/y coordinates - - - - * Returns a FlxRect consisting of the bounds of this Sprite. - - - - * Return true if the mouse is over this Sprite, otherwise false. Only takes the Sprites bounding box into consideration and does not check if there - * are other sprites potentially on-top of this one. Check the value of this.isPressed if you need to know if the mouse is currently clicked on this sprite. - - - - * Returns how many horizontal pixels the mouse pointer is inside this sprite from the top left corner. Returns -1 if outside. - - - - * Returns how many vertical pixels the mouse pointer is inside this sprite from the top left corner. Returns -1 if outside. - - <_snapOnDrag expr="false"> - - false - - <_snapOnRelease expr="false"> - - false - - <_snapX> - <_snapY> - <_clickOnRelease expr="false"> - - false - - <_clickPixelPerfect expr="false"> - - false - - <_clickPixelPerfectAlpha> - <_clickCounter expr="0"> - - 0 - - <_throwXFactor> - <_throwYFactor> - <_dragPixelPerfect expr="false"> - - false - - <_dragPixelPerfectAlpha> - <_dragOffsetX> - <_dragOffsetY> - <_dragFromPoint> - <_allowHorizontalDrag expr="true"> - - true - - <_allowVerticalDrag expr="true"> - - true - - - - - - - - - { AlphaThreshold : 255, PixelPerfect : false } - * Allow this Sprite to receive mouse clicks, the total number of times this sprite is clicked is stored in this.clicks - * You can add callbacks via mousePressedCallback and mouseReleasedCallback - * - * @param OnRelease Register the click when the mouse is pressed down (false) or when it's released (true). Note that callbacks still fire regardless of this setting. - * @param PixelPerfect If true it will use a pixel perfect test to see if you clicked the Sprite. False uses the bounding box. - * @param AlphaThreshold If using pixel perfect collision this specifies the alpha level from 0 to 255 above which a collision is processed (default 255) - - - - * Stops this sprite from checking for mouse clicks and clears any set callbacks - - - - - - - - - - - { AlphaThreshold : 255, PixelPerfect : false, LockCenter : false } - * Make this Sprite draggable by the mouse. You can also optionally set mouseStartDragCallback and mouseStopDragCallback - * - * @param LockCenter If false the Sprite will drag from where you click it. If true it will center itself to the tip of the mouse pointer. - * @param PixelPerfect If true it will use a pixel perfect test to see if you clicked the Sprite. False uses the bounding box. - * @param AlphaThreshold If using pixel perfect collision this specifies the alpha level from 0 to 255 above which a collision is processed (default 255) - * @param BoundsRect If you want to restrict the drag of this sprite to a specific FlxRect, pass the FlxRect here, otherwise it's free to drag anywhere - * @param BoundsSprite If you want to restrict the drag of this sprite to within the bounding box of another sprite, pass it here - - - - * Stops this sprite from being able to be dragged. If it is currently the target of - * an active drag it will be stopped immediately. Also disables any set callbacks. - - - - - - - - * Make this Sprite throwable by the mouse. The sprite is thrown only when the mouse button is released. - * - * @param FactorX The sprites velocity is set to FlxMouseControl.speedX * xFactor. Try a value around 50+ - * @param FactorY The sprites velocity is set to FlxMouseControl.speedY * yFactor. Try a value around 50+ - - - - * Stops this sprite from being able to be thrown. If it currently has velocity this is NOT removed from it. - - - - - - - - - - { OnRelease : false, OnDrag : true } - * Make this Sprite snap to the given grid either during drag or when it's released. - * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. - * - * @param SnapX The width of the grid cell in pixels - * @param SnapY The height of the grid cell in pixels - * @param OnDrag If true the sprite will snap to the grid while being dragged - * @param OnRelease If true the sprite will snap to the grid when released - - - - * Stops the sprite from snapping to a grid during drag or release. - - - - - - - - - - - { Gravity : 0, Friction : 0.95, Tension : 0.1, RetainVelocity : false, OnPressed : true } - * Adds a simple spring between the mouse and this Sprite. The spring can be activated either when the mouse is pressed (default), or enabled all the time. - * Note that nearly always the Spring will over-ride any other motion setting the sprite has (like velocity or gravity) - * - * @param OnPressed True if the spring should only be active when the mouse is pressed down on this sprite - * @param RetainVelocity True to retain the velocity of the spring when the mouse is released, or false to clear it - * @param Tension The tension of the spring, smaller numbers create springs closer to the mouse pointer - * @param Friction The friction applied to the spring as it moves - * @param Gravity The gravity controls how far "down" the spring hangs (use a negative value for it to hang up!) - * @return The FlxMouseSpring object if you wish to perform further chaining on it. Also available via FlxExtendedSprite.mouseSpring - - - - * Stops the sprite to mouse spring from being active - - - - - - - - { AllowVerticalDrag : true, AllowHorizontalDrag : true } - * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! - * - * @param AllowHorizontalDrag To enable the sprite to be dragged horizontally set to true, otherwise false - * @param AllowVerticalDrag To enable the sprite to be dragged vertically set to true, otherwise false - - - - - - - * Core update loop - - - - * Called by update, applies friction if the sprite has gravity to stop jittery motion when slowing down - - - - * Updates the Mouse Drag on this Sprite. - - - - * Checks if the mouse is over this sprite and pressed, then does a pixel - * perfect check if needed and adds it to the FlxMouseControl check stack. - - - - * Called by FlxMouseControl when this sprite is clicked. Should not usually be called directly. - - - - * Called by FlxMouseControl when this sprite is released from a click. Should not usually be called directly. - - - - * Called by FlxMouseControl when Mouse Drag starts on this Sprite. Should not usually be called directly. - - - - * Bounds Rect check for the sprite drag - - - - * Parent Sprite Bounds check for the sprite drag - - - - * Called by FlxMouseControl when Mouse Drag is stopped on this Sprite. Should not usually be called directly. - - - - - - - - - - - - { ToleranceY : 10, ToleranceX : 10, FrictionY : 500, FrictionX : 500 } - * Gravity can be applied to the sprite, pulling it in any direction. Gravity is given in pixels per second and is applied as acceleration. - * If you don't want gravity for a specific direction pass a value of zero. To cancel it entirely pass both values as zero. - * - * @param GravityX A positive value applies gravity dragging the sprite to the right. A negative value drags the sprite to the left. Zero disables horizontal gravity. - * @param GravityY A positive value applies gravity dragging the sprite down. A negative value drags the sprite up. Zero disables vertical gravity. - * @param FrictionX The amount of friction applied to the sprite if it hits a wall. Allows it to come to a stop without constantly jittering. - * @param FrictionY The amount of friction applied to the sprite if it hits the floor/roof. Allows it to come to a stop without constantly jittering. - * @param ToleranceX If the velocity.x of the sprite falls between 0 and +- this value, it is set to stop (velocity.x = 0) - * @param ToleranceY If the velocity.y of the sprite falls between 0 and +- this value, it is set to stop (velocity.y = 0) - - - - * Switches the gravity applied to the sprite. If gravity was +400 Y (pulling them down) this will swap it to -400 Y (pulling them up) - * To reset call flipGravity again - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * Creates a white 8x8 square FlxExtendedSprite at the specified position. - * Optionally can load a simple, one-frame graphic instead. - * - * @param X The initial X position of the sprite. - * @param Y The initial Y position of the sprite. - * @param SimpleGraphic The graphic you want to display (OPTIONAL - for simple stuff only, do NOT use for animated images!). - - * An enhanced FlxSprite that is capable of receiving mouse clicks, being dragged and thrown, mouse springs, gravity and other useful things - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - { AlphaThreshold : 255, PixelPerfect : false } - * Allow this Sprite to receive mouse clicks, the total number of times this sprite is clicked is stored in this.clicks - * You can add callbacks via mousePressedCallback and mouseReleasedCallback - * - * @param OnRelease Register the click when the mouse is pressed down (false) or when it's released (true). Note that callbacks still fire regardless of this setting. - * @param PixelPerfect If true it will use a pixel perfect test to see if you clicked the Sprite. False uses the bounding box. - * @param AlphaThreshold If using pixel perfect collision this specifies the alpha level from 0 to 255 above which a collision is processed (default 255) - - <_HX_SUPER__enableMouseClicks public="1" set="method" line="31"> - - - - - - - { AlphaThreshold : 255, PixelPerfect : false } - - - - - - - - - - - { AlphaThreshold : 255, PixelPerfect : false, LockCenter : false } - * Make this Sprite draggable by the mouse. You can also optionally set mouseStartDragCallback and mouseStopDragCallback - * - * @param LockCenter If false the Sprite will drag from where you click it. If true it will center itself to the tip of the mouse pointer. - * @param PixelPerfect If true it will use a pixel perfect test to see if you clicked the Sprite. False uses the bounding box. - * @param AlphaThreshold If using pixel perfect collision this specifies the alpha level from 0 to 255 above which a collision is processed (default 255) - * @param BoundsRect If you want to restrict the drag of this sprite to a specific FlxRect, pass the FlxRect here, otherwise it's free to drag anywhere - * @param BoundsSprite If you want to restrict the drag of this sprite to within the bounding box of another sprite, pass it here - - <_HX_SUPER__enableMouseDrag public="1" set="method" line="31"> - - - - - - - - - { AlphaThreshold : 255, PixelPerfect : false, LockCenter : false } - - - - * Stops this sprite from being able to be dragged. If it is currently the target of - * an active drag it will be stopped immediately. Also disables any set callbacks. - - <_HX_SUPER__disableMouseDrag public="1" set="method" line="31"> - - - - - - - * Make this Sprite throwable by the mouse. The sprite is thrown only when the mouse button is released. - * - * @param FactorX The sprites velocity is set to FlxMouseControl.speedX * xFactor. Try a value around 50+ - * @param FactorY The sprites velocity is set to FlxMouseControl.speedY * yFactor. Try a value around 50+ - - <_HX_SUPER__enableMouseThrow public="1" set="method" line="31"> - - - - - - - * Stops this sprite from being able to be thrown. If it currently has velocity this is NOT removed from it. - - <_HX_SUPER__disableMouseThrow public="1" set="method" line="31"> - - - - - - - - - { OnRelease : false, OnDrag : true } - * Make this Sprite snap to the given grid either during drag or when it's released. - * For example 16x16 as the snapX and snapY would make the sprite snap to every 16 pixels. - * - * @param SnapX The width of the grid cell in pixels - * @param SnapY The height of the grid cell in pixels - * @param OnDrag If true the sprite will snap to the grid while being dragged - * @param OnRelease If true the sprite will snap to the grid when released - - <_HX_SUPER__enableMouseSnap public="1" set="method" line="31"> - - - - - - - - { OnRelease : false, OnDrag : true } - - - - * Stops the sprite from snapping to a grid during drag or release. - - <_HX_SUPER__disableMouseSnap public="1" set="method" line="31"> - - - - - - - - - - { Gravity : 0, Friction : 0.95, Tension : 0.1, RetainVelocity : false, OnPressed : true } - * Adds a simple spring between the mouse and this Sprite. The spring can be activated either when the mouse is pressed (default), or enabled all the time. - * Note that nearly always the Spring will over-ride any other motion setting the sprite has (like velocity or gravity) - * - * @param OnPressed True if the spring should only be active when the mouse is pressed down on this sprite - * @param RetainVelocity True to retain the velocity of the spring when the mouse is released, or false to clear it - * @param Tension The tension of the spring, smaller numbers create springs closer to the mouse pointer - * @param Friction The friction applied to the spring as it moves - * @param Gravity The gravity controls how far "down" the spring hangs (use a negative value for it to hang up!) - * @return The FlxMouseSpring object if you wish to perform further chaining on it. Also available via FlxExtendedSprite.mouseSpring - - <_HX_SUPER__enableMouseSpring public="1" set="method" line="148"> - - - - - - - - - { Gravity : 0, Friction : 0.95, Tension : 0.1, RetainVelocity : false, OnPressed : true } - - - - * Stops the sprite to mouse spring from being active - - <_HX_SUPER__disableMouseSpring public="1" set="method" line="31"> - - - - - - - { AllowVerticalDrag : true, AllowHorizontalDrag : true } - * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! - * - * @param AllowHorizontalDrag To enable the sprite to be dragged horizontally set to true, otherwise false - * @param AllowVerticalDrag To enable the sprite to be dragged vertically set to true, otherwise false - - <_HX_SUPER__setDragLock public="1" set="method" line="31"> - - - - - - { AllowVerticalDrag : true, AllowHorizontalDrag : true } - - - - - - - * Core update loop - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Called by update, applies friction if the sprite has gravity to stop jittery motion when slowing down - - <_HX_SUPER__updateGravity set="method" line="31"> - - - * Updates the Mouse Drag on this Sprite. - - <_HX_SUPER__updateDrag set="method" line="31"> - - - * Checks if the mouse is over this sprite and pressed, then does a pixel - * perfect check if needed and adds it to the FlxMouseControl check stack. - - <_HX_SUPER__checkForClick set="method" line="31"> - - - * Called by FlxMouseControl when this sprite is clicked. Should not usually be called directly. - - <_HX_SUPER__mousePressedHandler public="1" set="method" line="31"> - - - * Called by FlxMouseControl when this sprite is released from a click. Should not usually be called directly. - - <_HX_SUPER__mouseReleasedHandler public="1" set="method" line="31"> - - - * Called by FlxMouseControl when Mouse Drag starts on this Sprite. Should not usually be called directly. - - <_HX_SUPER__startDrag public="1" set="method" line="31"> - - - * Bounds Rect check for the sprite drag - - <_HX_SUPER__checkBoundsRect set="method" line="31"> - - - * Parent Sprite Bounds check for the sprite drag - - <_HX_SUPER__checkBoundsSprite set="method" line="31"> - - - * Called by FlxMouseControl when Mouse Drag is stopped on this Sprite. Should not usually be called directly. - - <_HX_SUPER__stopDrag public="1" set="method" line="31"> - - - - - - - - - - - { ToleranceY : 10, ToleranceX : 10, FrictionY : 500, FrictionX : 500 } - * Gravity can be applied to the sprite, pulling it in any direction. Gravity is given in pixels per second and is applied as acceleration. - * If you don't want gravity for a specific direction pass a value of zero. To cancel it entirely pass both values as zero. - * - * @param GravityX A positive value applies gravity dragging the sprite to the right. A negative value drags the sprite to the left. Zero disables horizontal gravity. - * @param GravityY A positive value applies gravity dragging the sprite down. A negative value drags the sprite up. Zero disables vertical gravity. - * @param FrictionX The amount of friction applied to the sprite if it hits a wall. Allows it to come to a stop without constantly jittering. - * @param FrictionY The amount of friction applied to the sprite if it hits the floor/roof. Allows it to come to a stop without constantly jittering. - * @param ToleranceX If the velocity.x of the sprite falls between 0 and +- this value, it is set to stop (velocity.x = 0) - * @param ToleranceY If the velocity.y of the sprite falls between 0 and +- this value, it is set to stop (velocity.y = 0) - - <_HX_SUPER__setGravity public="1" set="method" line="31"> - - - - - - - - - - { ToleranceY : 10, ToleranceX : 10, FrictionY : 500, FrictionX : 500 } - - - - * Switches the gravity applied to the sprite. If gravity was +400 Y (pulling them down) this will swap it to -400 Y (pulling them up) - * To reset call flipGravity again - - <_HX_SUPER__flipGravity public="1" set="method" line="31"> - - <_HX_SUPER__get_mouseOver set="method" line="148"> - - <_HX_SUPER__get_mouseX set="method" line="148"> - - <_HX_SUPER__get_mouseY set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxExtendedSprite - flixel.addons.display.FlxExtendedSprite.MouseCallback - - - - - - - - - - - - - - - { Color2 : 0xffd9d5d5, Color1 : 0xffe7e6e6, Alternate : true, Height : -1, Width : -1 } - * Creates a FlxSprite of the given width and height filled with a checkerboard pattern. - * Each grid cell is the specified width and height, and alternates between two colors. - * If alternate is true each row of the pattern will be offset, for a proper checkerboard style. - * If false each row will be the same colour, creating a striped-pattern effect. - * So to create an 8x8 grid you'd call create(8,8) - * - * @param CellWidth The grid cell width - * @param CellHeight The grid cell height - * @param Width The width of the FlxSprite. If -1 it will be the size of the game (FlxG.width) - * @param Height The height of the FlxSprite. If -1 it will be the size of the game (FlxG.height) - * @param Alternate Should the pattern alternate on each new row? Default true = checkerboard effect. False = vertical stripes - * @param Color1 The first fill colour in 0xAARRGGBB format - * @param Color2 The second fill colour in 0xAARRGGBB format - * @return FlxSprite of given width/height - - - - - - - - - - - - - - { Color2 : 0x88d9d5d5, Color1 : 0x88e7e6e6, Alternate : true, Height : -1, Width : -1 } - * Creates a checkerboard pattern of the given width/height and overlays it onto the given FlxSprite. - * Each grid cell is the specified width and height, and alternates between two colors. - * If alternate is true each row of the pattern will be offset, for a proper checkerboard style. - * If false each row will be the same colour, creating a striped-pattern effect. - * So to create an 8x8 grid you'd call create(8,8, - * - * @param Sprite The FlxSprite you wish to draw the grid on-top of. This updates its pixels value, not just the current frame (don't use animated sprites!) - * @param CellWidth The grid cell width - * @param CellHeight The grid cell height - * @param Width The width of the FlxSprite. If -1 it will be the size of the game (FlxG.width) - * @param Height The height of the FlxSprite. If -1 it will be the size of the game (FlxG.height) - * @param Alternate Should the pattern alternate on each new row? Default true = checkerboard effect. False = vertical stripes - * @param Color1 The first fill colour in 0xAARRGGBB format - * @param Color2 The second fill colour in 0xAARRGGBB format - * @return The modified source FlxSprite - - - - - - - - - - - - * FlxGridOverlay - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxGridOverlay - - - - - - - * The tension of the spring, smaller numbers create springs closer to the mouse pointer - * @default 0.1 - - - - * The friction applied to the spring as it moves - * @default 0.95 - - - - * The gravity controls how far "down" the spring hangs (use a negative value for it to hang up!) - * @default 0 - - <_retainVelocity> - <_vx expr="0"> - - 0 - - <_vy expr="0"> - - 0 - - <_dx expr="0"> - - 0 - - <_dy expr="0"> - - 0 - - <_ax expr="0"> - - 0 - - <_ay expr="0"> - - 0 - - - - - - - * Updates the spring physics and repositions the sprite - - - - * Resets the internal spring physics - - - - - - - - - - - { Gravity : 0, Friction : 0.95, Tension : 0.1, RetainVelocity : false } - * Adds a spring between the mouse and a FlxExtendedSprite. - * - * @param Sprite The FlxExtendedSprite to which this spring is attached - * @param RetainVelocity True to retain the velocity of the spring when the mouse is released, or false to clear it - * @param Tension The tension of the spring, smaller numbers create springs closer to the mouse pointer - * @param Friction The friction applied to the spring as it moves - * @param Gravity The gravity controls how far "down" the spring hangs (use a negative value for it to hang up!) - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Updates the spring physics and repositions the sprite - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Resets the internal spring physics - - <_HX_SUPER__reset public="1" set="method" line="31"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxMouseSpring - - - - - - - 0 - * X position of this sprite relative to parent, 0 by default - - - - 0 - * Y position of this sprite relative to parent, 0 by default - - - - 0 - * Angle of this sprite relative to parent - - - - 0 - * Angular velocity relative to parent sprite - - - - 0 - * Angular acceleration relative to parent sprite - - - - 1 - - - - FlxPoint.get(1, 1) - * Scale of this sprite relative to parent - - - - FlxPoint.get() - * Velocity relative to parent sprite - - - - FlxPoint.get() - * Acceleration relative to parent sprite - - - - [] - * All FlxNestedSprites in this list. - - - - * Amount of Graphics in this list. - - <_parentRed expr="1"> - - 1 - - <_parentGreen expr="1"> - - 1 - - <_parentBlue expr="1"> - - 1 - - - - * WARNING: This will remove this sprite entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - - - - - - * Adds the FlxNestedSprite to the children list. - * - * @param Child The FlxNestedSprite to add. - * @return The added FlxNestedSprite. - - - - - - - * Removes the FlxNestedSprite from the children list. - * - * @param Child The FlxNestedSprite to remove. - * @return The removed FlxNestedSprite. - - - - - - - { Index : 0 } - * Removes the FlxNestedSprite from the position in the children list. - * - * @param Index Index to remove. - - - - * Removes all children sprites from this sprite. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Some sort of DisplayObjectContainer but very limited. - * It can contain only other FlxNestedSprites. - * @author Zaphod - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * WARNING: This will remove this sprite entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Adds the FlxNestedSprite to the children list. - * - * @param Child The FlxNestedSprite to add. - * @return The added FlxNestedSprite. - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - * Removes the FlxNestedSprite from the children list. - * - * @param Child The FlxNestedSprite to remove. - * @return The removed FlxNestedSprite. - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - - - - { Index : 0 } - * Removes the FlxNestedSprite from the position in the children list. - * - * @param Index Index to remove. - - <_HX_SUPER__removeAt public="1" set="method" line="148"> - - - - - { Index : 0 } - - - - * Removes all children sprites from this sprite. - - <_HX_SUPER__removeAll public="1" set="method" line="31"> - - - - - <_HX_SUPER__preUpdate public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__postUpdate public="1" set="method" line="31"> - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_facing set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxNestedSprite - - - - - <_shadedScrollRect expr="new Sprite()"> - - new Sprite() - * Internal sprite, duplicate of `_scrollRect` to which we apply a shader and mask. - * It is a child of `flashSprite`. - * Its position is also modified by the `updateScrollRect()` method. - - - - * All tile rendering is duplicated to this canvas, so that we have - * another copy of the scene to which to apply the effect shader. - * It is a child of `_shadedScrollRect` - * Its position is modified by `updateInternalSpritePositions()` - - - - * Only the mask objects are rendered to this sprite, - * which is both a child of and used as a mask for `_shadedScrollRect`. - - - - * This filter is applied to the area masked by maskCanvas - - <_maskGroup> - - * Collection of objects that will be rendered to the mask buffer rather than the main camera. - - - - - - - - - - - - * Add objects and groups to the mask. - * The effect shader is applied to the area covered by objects added in this way. - * The camera will `update()` objects added here, so you probably want to avoid - * adding them to your scene as well. - * - * @return The same `FlxBasic` object that was passed in. - - - - - - - * Remove objects and groups from the mask. - * - * @return The removed object. - - - - - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - - - - - - - - - - - - - - - - - - - - - - { Zoom : 0, Height : 0, Width : 0, Y : 0, X : 0 } - * Instantiates a new camera at the specified location, with the specified size and zoom level, - * which will be shaded in areas by the specified shader. - * - * @param effectShader Shader to be applied to the masked area. - * @param X X location of the camera's display in pixels. Uses native, 1:1 resolution, ignores zoom. - * @param Y Y location of the camera's display in pixels. Uses native, 1:1 resolution, ignores zoom. - * @param Width The width of the camera display in pixels. - * @param Height The height of the camera display in pixels. - * @param Zoom The initial zoom level of the camera. - * A zoom level of 2 will make all pixels display at 2x resolution. - - `_scrollRect:Sprite` (which is used for cropping camera's graphic, mostly in tile render mode) - * |-> `canvas:Sprite` (its graphics is used for rendering objects in tile render mode) - * |-> `debugLayer:Sprite` (this sprite is used in tile render mode for rendering debug info, like bounding boxes) - * |-> `_shadedScrollRect:Sprite` (the effect shader is applied to this sprite, which holds a copy of the scene and is masked by `maskCanvas`) - * |-> `shaderCanvas:Sprite` (everything rendered to `canvas` will simultaneously render to this canvas) - * |-> `maskCanvas:Sprite` (all mask objects are rendered to this sprite, which is then used to mask `_shadedScrollRect`) - * - * @since 2.9.0]]> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__render set="method" line="31"> - - - - - - * Add objects and groups to the mask. - * The effect shader is applied to the area covered by objects added in this way. - * The camera will `update()` objects added here, so you probably want to avoid - * adding them to your scene as well. - * - * @return The same `FlxBasic` object that was passed in. - - <_HX_SUPER__addMaskObject public="1" set="method" line="148"> - - - - - - - - - * Remove objects and groups from the mask. - * - * @return The removed object. - - <_HX_SUPER__removeMaskObject public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy set="method" line="31"> - - <_HX_SUPER__updateInternalSpritePositions set="method" line="31"> - - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - - <_HX_SUPER__fill public="1" set="method" line="31"> - - - - - - - - { FxAlpha : 1.0, BlendAlpha : true } - - - <_HX_SUPER__drawFX set="method" line="31"> - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - <_HX_SUPER__updateScrollRect set="method" line="31"> - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxShaderMaskCamera - - - - - - - 0 - - - - 1 - - - - 2 - - - - 3 - -
    - - 4 -
    - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - new FlxRect() - - - - new FlxPoint() - - - - new FlxPoint() - - - - new FlxPoint() - - - - false - * Whether to adjust sprite's width to slice grid or not. - - - - false - * Whether to adjust sprite's height to slice grid or not. - - - - false - * Whether to use tiling or to stretch left border of the sprite. - - - - false - * Whether to use tiling or to stretch top border of the sprite. - - - - false - * Whether to use tiling or to stretch right border of the sprite. - - - - false - * Whether to use tiling or to stretch bottom border of the sprite. - - - - false - * Whether to use tiling or to stretch center part of the sprite. - - - - true - * Whether to fill center part of sprite. - - - - * Rectangle that defines slice grid: - - - - * Rectangle that defines what part of source image to use as a texture for slicing. - - - - * Actual width of the sprite which will be visible. - * Its calculation is based on snapWidth and sliceRect values. - - - - * Actual height of the sprite which will be visible. - * Its calculation is based on snapHeight and sliceRect values. - - - - * Internal array of FlxRect objects for each element of slice grid. - - - - * Helper sprite, which does actual rendering in blit render mode. - - - - true - - - - true - - - <_snappedWidth expr="-1"> - - -1 - - <_snappedHeight expr="-1"> - - -1 - - - - 0 - * Current number of vertices - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Sprite which can be used for various sorts of slicing (9-slice, 3 slice, tiled sprite but without scrolling). - * Based on Kyle Pulver's NineSlice class for FlashPunk: http://kpulv.com/96/Flashpunk_NineSlice_Class__Updated__/ - * @author kpulv - * @author Zaphod - * @since 2.1.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - <_HX_SUPER__loadGraphic public="1" set="method" line="148"> - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - - - - <_HX_SUPER__loadFrame public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_graphic set="method" line="148"> - - - - - <_HX_SUPER__regenGraphic set="method" line="31"> - - - - - - - - - <_HX_SUPER__stretchSlice set="method" line="148"> - - - - - - - - - <_HX_SUPER__regenSliceRects set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - <_HX_SUPER__updateColors set="method" line="31"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_snapWidth set="method" line="148"> - - - - - - - - <_HX_SUPER__set_snapHeight set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stretchLeft set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stretchTop set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stretchRight set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stretchBottom set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stretchCenter set="method" line="148"> - - - - - - - - <_HX_SUPER__set_fillCenter set="method" line="148"> - - - - - - - - <_HX_SUPER__set_sliceRect set="method" line="148"> - - - - - - - - <_HX_SUPER__set_sourceRect set="method" line="148"> - - - - - <_HX_SUPER__get_snappedWidth set="method" line="148"> - - <_HX_SUPER__get_snappedHeight set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxSliceSprite - - - - - - - - 0 - - - - -1 - - - - - - - - - - - - { RunOnCpp : false } - - - - - - - - - - - - - - { Y : 0, X : 0, Height : 0, Width : 0, Antialiasing : false, AutoBuffer : false, Rotations : 16 } - * Constructor, which creates array of prerotated spritesheets for each frame in provided AnimatedGraphic. - * - * @param AnimatedGraphic The image you want to rotate and stamp. - * @param Rotations The number of rotation frames the final sprite should have. For small sprites this can be quite a large number (360 even) without any problems. - * @param AutoBuffer Whether to automatically increase the image size to accomodate rotated corners. Default is false. Will create frames that are 150% larger on each axis than the original frame or graphic. - * @param Antialiasing Whether to use high quality rotations when creating the graphic. Default is false. - * @param Width The width of frame in provided spritesheet. - * @param Height The height of frame in provided spritesheet - * @param X The x component of sprite's position. - * @param Y The y component of sprite's position. - - * Creating animated and rotated sprite from an un-rotated animated image. - * - * @version 1.0 - November 8th 2011 - * @link http://www.gameonaut.com - * @author Simon Etienne Rozner / Gameonaut.com, ported to Haxe by Sam Batista - * @author Slightly updated by Beeblerox. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - { RunOnCpp : false } - - <_HX_SUPER__calcFrame set="method" line="31"> - - - - - { RunOnCpp : false } - - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxSpriteAniRot - - - - - - - FlxColor.BLACK - - <_stars> - <_depthColors> - <_minSpeed> - <_maxSpeed> - - - - - - - - - - { HighestColor : 0xffF4F4F4, LowestColor : 0xff85858 } - * Change the number of layers (depth) and colors used for each layer of the starfield. - * - * @param Depth Number of depths (for a 2D starfield the default is 5) - * @param LowestColor The color given to the slowest stars, typically the darker colour - * @param HighestColor The color given to the fastest stars, typically the brighter colour - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - { StarAmount : 300, Height : 0, Width : 0, Y : 0, X : 0 } - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - -
    - - - - - - - - - - - - - - - { StarAmount : 300, Height : 0, Width : 0, Y : 0, X : 0 } - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - <_HX_SUPER__setStarSpeed public="1" set="method" line="31"> - - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxStarField.FlxStarField2D - flixel.addons.display.FlxStarField.FlxStarField3D - flixel.addons.display.FlxStarField - flixel.addons.display.FlxStarField.FlxStar - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxStarField.FlxStarField2D - flixel.addons.display.FlxStarField.FlxStarField3D - flixel.addons.display.FlxStarField - flixel.addons.display.FlxStarField.FlxStar - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxStarField.FlxStarField2D - flixel.addons.display.FlxStarField.FlxStarField3D - flixel.addons.display.FlxStarField - flixel.addons.display.FlxStarField.FlxStar - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxStarField.FlxStarField2D - flixel.addons.display.FlxStarField.FlxStarField3D - flixel.addons.display.FlxStarField - flixel.addons.display.FlxStarField.FlxStar - - - - - - - 0 - * The x-offset of the texture - - - - 0 - * The y-offset of the texture. - - - - true - * Repeat texture on x axis. Default is true - - - - true - * Repeat texture on y axis. Default is true - - - - * Helper sprite, which does actual rendering in blit render mode. - - - - true - - - - true - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { RepeatY : true, RepeatX : true } - - * Tiled sprite which displays repeated and clipped graphic. - * @author Zaphod - * @since 2.1.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - <_HX_SUPER__loadGraphic public="1" set="method" line="148"> - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - - - - <_HX_SUPER__loadFrame public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_graphic set="method" line="148"> - - - - - <_HX_SUPER__regenGraphic set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__updateRenderSprite set="method" line="31"> - - <_HX_SUPER__updateVerticesData set="method" line="31"> - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_scrollX set="method" line="148"> - - - - - - - - <_HX_SUPER__set_scrollY set="method" line="148"> - - - - - - - - <_HX_SUPER__set_repeatX set="method" line="148"> - - - - - - - - <_HX_SUPER__set_repeatY set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxTiledSprite - - - - - - - * Tell the camera to LERP here eventually - - - - 25 - * This number is pretty arbitrary, make sure it's greater than zero! - - - - 0.25 - * Determines how far to "look ahead" when the target is near the - * edge of the camera's bounds - 0 = no effect, 1 = huge effect - - - - - - - - * Align the camera x and y to center on the target - * that it's following when zoomed in - * - * This took many guesses! - - - - - - - - - - - { Zoom : 0 } - - * FlxZoomCamera: A FlxCamera that centers its zoom on the target that it follows - * - * @link http://www.kwarp.com - * @author greglieberman - * @email greg@kwarp.com - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Align the camera x and y to center on the target - * that it's following when zoomed in - * - * This took many guesses! - - <_HX_SUPER__alignCamera set="method" line="31"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.display.FlxZoomCamera - - - - - - - - - - - - { scale : 1 } - * This function will parse a *.pex file and return a new emitter. - * There are some incompatibilities: - * - It only supports the "Gravity" emitter type. - * - Tangential and radial acceleration aren't supported. - * - Blend functions aren't supported. The default blend mode is ADD. - * @param data The data to be parsed. It has to be an ID to the assets file, a file embedded with @:file(), a string with the content of the file or a XML object. - * @param particleGraphic The particle graphic - * @param emitter (optional) A FlxEmitter. Most properties will be overwritten! - * @param scale (optional) Used to scale the resulting emitter. Will scale both the texture size and positions of resulting particles. - * @return A new emitter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Parser for particle files created with "Starling Particle Editor" or "Particle Designer". - * - * Starling Particle Editor: - * @see http://onebyonedesign.com/flash/particleeditor/ - * @see https://github.com/devon-o/Starling-Particle-Editor - * - * Particle Designer: - * @see https://71squared.com/particledesigner - * - * @author MrCdK - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.addons.editors.pex.PexEmitterType) - - - - cast (1, flixel.addons.editors.pex.PexEmitterType) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.pex.FlxPexParser - flixel.addons.editors.pex.FlxPexParser.PexEmitterType - flixel.addons.editors.pex.FlxPexParser.PexEmitterType - flixel.addons.editors.pex.FlxPexParser.PexEmitterType_HSC - - - - - - - - - - - - @since 2.1.0 - - - - @since 2.1.0 - - - - - - - - - - - * Base class for Tiled object and tile layers - * - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - [] - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - <_HX_SUPER__loadLayers set="method" line="31"> - - - - - - - - - - - - - <_HX_SUPER__getLayer public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledGroupLayer - - - - - - - - = 0.15 uses offsetX]]> - - - - = 0.15 uses offsetY]]> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledImageLayer - - - - - - - - - - - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledImageTile - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__loadProperties set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledLayer - flixel.addons.editors.tiled.TiledLayer.TiledLayerType - - - - - - - - - - - - - - - new TiledPropertySet() - - - - - - - ()]]> - * Use to get a tileset by name - - - - [] - * Use for iterating over tilesets, and for merging tilesets (because order is important) - - - - [] - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * works only after TiledTileSet has been initialized with an image... - - - - - - - - * @param data Either a string or XML object containing the Tiled map data - * @param rootPath Path to use as root to resolve any internal file references - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__loadAttributes set="method" line="31"> - - - - - - - - <_HX_SUPER__loadProperties set="method" line="31"> - - - - - - - - <_HX_SUPER__loadTilesets set="method" line="31"> - - - - - - - - <_HX_SUPER__loadLayers set="method" line="31"> - - - - - - - - <_HX_SUPER__getTileSet public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getLayer public="1" set="method" line="148"> - - - - - - - - - * works only after TiledTileSet has been initialized with an image... - - <_HX_SUPER__getGidOwner public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledMap - flixel.addons.editors.tiled.TiledMap.FlxTiledMapAsset - - - - - - 0x40000000 - 0; - * sprite.facing = flipped ? LEFT : RIGHT; - * ```]]> - - - - 0x80000000 - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - 4 - - - - - - - - - - - * In degrees - - - - * Global identifier for this object - - - - * Custom properties that users can set on this object - * If "type" is not defined, the parent layer's "defaultType" is used - - - - * Shared properties are tileset properties added on object tile - - - - * Information on the layer that contains this object - - - - * The type of the object (RECTANGLE, ELLIPSE, POLYGON, POLYLINE, TILE) - - - - * Whether the object is flipped horizontally. - - - - * Whether the object is flipped vertically. - - - - * An array with points if the object is a POLYGON or POLYLINE - - - - - - - - - - - - { parent : null } - - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__loadObjects set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledObjectLayer - - - - - - - - - <_HX_SUPER__getPoints set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledObject - - - - - - - - - - - - - - - - - - - - - - - - - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__extend public="1" set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledPropertySet - - - - - - 0x80000000 - - - - 0x40000000 - - - - 0x20000000 - - - - 0 - - - - 1 - - - - 2 - - - - * The original ID as described in the mapData - - - - * The ID of this tile in its tileset - - - - false - * Set the tile to flip horizontally - - - - false - * Set the tile to flip vertically - - - - * Set the rotation of the tile - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__getByteArrayData set="method" line="148"> - - - - - <_HX_SUPER__base64ToByteArray set="method" line="148"> - - - - - - - - <_HX_SUPER__resolveTile set="method" line="148"> - - - - - <_HX_SUPER__get_encoding set="method" line="148"> - - <_HX_SUPER__get_csvData set="method" line="148"> - - <_HX_SUPER__get_tileArray set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledTileLayer - - - - - - - - @since 2.2.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - @since 2.8.0 - - - - - - - - - - - - @since 2.8.0 - - - - - - @since 2.2.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__addAnimationFrame public="1" set="method" line="31"> - - - - - - - - - - @since 2.8.0 - - <_HX_SUPER__addTileObject public="1" set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledTilePropertySet.TileAnimationData - flixel.addons.editors.tiled.TiledTilePropertySet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { rootPath : "" } - - * Copyright (c) 2013 by Samuel Batista - * (original by Matt Tuttle based on Thomas Jahn's. Haxe port by Adrien Fischer) - * This content is released under the MIT License. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__getPropertiesByGid public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getImageSourceByGid public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledTileSet - flixel.addons.editors.tiled.TiledTileSet.ValidByteArray - flixel.addons.editors.tiled.TiledTileSet.FlxTiledTileAsset - - - - - - <_HX_SUPER__resolveFlipAndRotation set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.editors.tiled.TiledTile - - - - - - - FlxPoint.get() - * An extra velocity applied to mesh (in pixels per second). Use to simulate gravity or wind. - - - - FlxPoint.get(0.99, 0.99) - * Determines how quickly the mesh points come to rest. - - - - FlxPoint.get(1, 1) - * Change the size of the mesh related to the original frame. Need to call setMesh() to update. - - - - * Bit field of flags (use with UP, DOWN, LEFT, RIGHT, NONE, ANY, etc) indicating pinned side. Use bitwise operators to check the values stored here. - - - - 3 - * How many iterations will do on constraints for each update. - * Bigger number make constraint more strong and mesh more rigid. - - - - false - * Adds two extra constraints crossing the squares to make the mesh more rigid. Need to call setMesh() to update. - - - - * Number of columns of the mesh. To set it you must use setMesh(). - - - - * Number of rows of the mesh. To set it you must use setMesh(). - - - - * The width of mesh squares. To set it you must use setMesh(). - - - - * The height of mesh squares. To set it you must use setMesh(). - - - - [] - * An array containing all vertices of the mesh, they are indexed row by row. - - - - [] - * An array containing all vertices conections. - - <_vertices> - - * Mesh arrays. Vertices, indices, uvtData and colors to drawTriangles(). - - <_indices> - <_uvtData> - - <_drawOffset> - - * Use to offset the drawing position of the mesh. - - - - * The actual Flash BitmapData object representing the current display state of the modified framePixels. - - - - * WARNING: This will remove this sprite entirely. Use kill() if you want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - - - - - - * Core update loop - - - - - - - - - - - - - - - - - - - { pinned : null, meshPixelsHeight : 0, meshPixelsWidth : 0, rows : 0, columns : 0 } - * Sets mesh points and constraints. - * - * @param columns Number of columns of the created mesh. - * @param rows Number of rows of the created mesh. - * @param meshPixelsWidth Optional, specify the width of the bitmapData where the mesh will be drawn. - * It uses frameWidth by default, but when mesh state is bigger, a new BitmapData is created. - * @param meshPixelsHeight Optional, specify the height of the bitmapData where the mesh will be drawn. - * It uses frameHeight by default, but when mesh state is bigger, a new BitmapData is created. - * @param pinned Indices of pinned points that are not affected by wind or velocity. - - - - - - - * Called by update, applies meshVelocity, meshFriction and velocity for each point. - - - - - - - * Called by update, applies velocity for each constraints points. - - - - * Called by draw, calculate triangles, drawOffset and bitmapData dimensions. - - - - * Called by draw, draw calculated triangles to meshPixels bitmapData. - - - - - - - - - - - - - { CrossingConstraints : false, PinnedSide : UP, Rows : 0, Columns : 0, Y : 0, X : 0 } - * Creates a FlxClothSprite at a specified position with a specified one-frame graphic. - * If none is provided, a 16x16 image of the HaxeFlixel logo is used. - * - * @param X The initial X position of the sprite. - * @param Y The initial Y position of the sprite. - * @param SimpleGraphic The graphic you want to display (OPTIONAL - for simple stuff only, do NOT use for animated images!). - * @param Columns Number of columns of the created mesh. - * @param Rows Number of rows of the created mesh. - * @param PinnedSide The pinned side that points are not affected by wind or velocity. Use UP, DOWN, LEFT, RIGHT, NONE, ANY, etc. - - * A FlxSprite that draw it's frame in a mesh and behave like a cloth. - * - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * WARNING: This will remove this sprite entirely. Use kill() if you want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Core update loop - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__drawSimple set="method" line="31"> - - - - - - - - <_HX_SUPER__drawComplex set="method" line="31"> - - - - - - - - - - - - - { pinned : null, meshPixelsHeight : 0, meshPixelsWidth : 0, rows : 0, columns : 0 } - * Sets mesh points and constraints. - * - * @param columns Number of columns of the created mesh. - * @param rows Number of rows of the created mesh. - * @param meshPixelsWidth Optional, specify the width of the bitmapData where the mesh will be drawn. - * It uses frameWidth by default, but when mesh state is bigger, a new BitmapData is created. - * @param meshPixelsHeight Optional, specify the height of the bitmapData where the mesh will be drawn. - * It uses frameHeight by default, but when mesh state is bigger, a new BitmapData is created. - * @param pinned Indices of pinned points that are not affected by wind or velocity. - - <_HX_SUPER__setMesh public="1" set="method" line="31"> - - - - - - - - - { pinned : null, meshPixelsHeight : 0, meshPixelsWidth : 0, rows : 0, columns : 0 } - - - - - - - * Called by update, applies meshVelocity, meshFriction and velocity for each point. - - <_HX_SUPER__updatePoints set="method" line="148"> - - - - - - - - - * Called by update, applies velocity for each constraints points. - - <_HX_SUPER__updateConstraints set="method" line="148"> - - - - - - * Called by draw, calculate triangles, drawOffset and bitmapData dimensions. - - <_HX_SUPER__calcImage set="method" line="31"> - - - * Called by draw, draw calculated triangles to meshPixels bitmapData. - - <_HX_SUPER__drawImage set="method" line="31"> - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.FlxClothSprite - flixel.addons.effects.FlxClothSprite.FlxClothPoint - flixel.addons.effects.FlxClothSprite.FlxClothConstraint - - - - - - - FlxPoint.get() - - - - new Matrix() - * Tranformation matrix for this sprite. - * Used only when matrixExposed is set to true - - - - false - * Bool flag showing whether transformMatrix is used for rendering or not. - * False by default, which means that transformMatrix isn't used for rendering - - <_skewMatrix expr="new Matrix()"> - - new Matrix() - * Internal helper matrix object. Used for rendering calculations when matrixExposed is set to false - - - - * WARNING: This will remove this sprite entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - - - - - - - - - - - - - - - - * @author Zaphod - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * WARNING: This will remove this sprite entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__drawComplex set="method" line="31"> - - - - - <_HX_SUPER__updateSkewMatrix set="method" line="31"> - - - - - <_HX_SUPER__isSimpleRender public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.FlxSkewedSprite - - - - - - - * The actual group which holds all sprites. - - - - * The link to a group's `members` array. - - - - * The number of entries in the members array. For performance and safety you should check this - * variable instead of `members.length` unless you really know what you're doing! - - - - false - * Whether to attempt to preserve the ratio of alpha values of group members, or set them directly through - * the alpha property. Defaults to `false` (preservation). - * @since 4.5.0 - - - - * The maximum capacity of this group. Default is `0`, meaning no max capacity, and the group can just grow. - - <_skipTransformChildren expr="false"> - - false - * Optimization to allow setting position of group without transforming children twice. - - <_sprites> - - * Array of all the `FlxSprite`s that exist in this group for - * optimization purposes / static typing on cpp targets. - - - - * This method is used for initialization of variables of complex types. - * Don't forget to call `super.initVars()` if you'll override this method, - * or you'll get `null` object error and app will crash. - - - - * **WARNING:** A destroyed `FlxBasic` can't be used anymore. - * It may even cause crashes if it is still part of a group or state. - * You may want to use `kill()` instead if you want to disable the object temporarily only and `revive()` it later. - * - * This function is usually not called manually (Flixel calls it automatically during state switches for all `add()`ed objects). - * - * Override this function to `null` out variables manually or call `destroy()` on class members if necessary. - * Don't forget to call `super.destroy()`! - - - - * Recursive cloning method: it will create a copy of this group which will hold copies of all sprites - * - * @return copy of this sprite group - - - - - - - * Check and see if any sprite in this group is currently on screen. - * - * @param Camera Specify which game camera you want. If `null`, it will just grab the first global camera. - * @return Whether the object is on screen or not. - - - - - - - - - { InScreenSpace : false } - * Checks to see if a point in 2D world space overlaps any `FlxSprite` object from this group. - * - * @param Point The point in world space you want to check. - * @param InScreenSpace Whether to take scroll factors into account when checking for overlap. - * @param Camera Specify which game camera you want. If `null`, it will just grab the first global camera. - * @return Whether or not the point overlaps this group. - - - - - - - - - { Mask : 0xFF } - * Checks to see if a point in 2D world space overlaps any of FlxSprite object's current displayed pixels. - * This check is ALWAYS made in screen space, and always takes scroll factors into account. - * - * @param Point The point in world space you want to check. - * @param Mask Used in the pixel hit test to determine what counts as solid. - * @param Camera Specify which game camera you want. If `null`, it will just grab the first global camera. - * @return Whether or not the point overlaps this object. - - - - - - - - - - - - - - { FetchPositions : false } - * Replaces all pixels with specified `Color` with `NewColor` pixels. - * WARNING: very expensive (especially on big graphics) as it iterates over every single pixel. - * - * @param Color Color to replace - * @param NewColor New color - * @param FetchPositions Whether we need to store positions of pixels which colors were replaced. - * @return `Array` with replaced pixels positions - - - - - - - * Adds a new `FlxSprite` subclass to the group. - * - * @param Sprite The sprite or sprite group you want to add to the group. - * @return The same object that was passed in. - - - - - - - - * Inserts a new `FlxSprite` subclass to the group at the specified position. - * - * @param Position The position that the new sprite or sprite group should be inserted at. - * @param Sprite The sprite or sprite group you want to insert into the group. - * @return The same object that was passed in. - * - * @since 4.3.0 - - - - - - - * Adjusts the position and other properties of the soon-to-be child of this sprite group. - * Private helper to avoid duplicate code in `add()` and `insert()`. - * - * @param Sprite The sprite or sprite group that is about to be added or inserted into the group. - - - - - - - - - - { Revive : true, Force : false } - 0` / "rotating-recycling" (used by `FlxEmitter`): - * - at capacity: returns the next object in line, no matter its properties like `alive`, `exists` etc. - * - otherwise: returns a new object. - * - * `maxSize == 0` / "grow-style-recycling" - * - tries to find the first object with `exists == false` - * - otherwise: adds a new object to the `members` array - * - * WARNING: If this function needs to create a new object, and no object class was provided, - * it will return `null` instead of a valid object! - * - * @param ObjectClass The class type you want to recycle (e.g. `FlxSprite`, `EvilRobot`, etc). - * @param ObjectFactory Optional factory function to create a new object - * if there aren't any dead members to recycle. - * If `null`, `Type.createInstance()` is used, - * which requires the class to have no constructor parameters. - * @param Force Force the object to be an `ObjectClass` and not a super class of `ObjectClass`. - * @param Revive Whether recycled members should automatically be revived - * (by calling `revive()` on them). - * @return A reference to the object that was created.]]> - - - - - - - - { Splice : false } - * Removes the specified sprite from the group. - * - * @param Sprite The `FlxSprite` you want to remove. - * @param Splice Whether the object should be cut from the array entirely or not. - * @return The removed sprite. - - - - - - - - * Replaces an existing `FlxSprite` with a new one. - * - * @param OldObject The sprite you want to replace. - * @param NewObject The new object you want to use instead. - * @return The new sprite. - - - - - - - - - - - - - { Order : FlxSort.ASCENDING } - * Call this function to sort the group according to a particular value and order. - * For example, to sort game objects for Zelda-style overlaps you might call - * `group.sort(FlxSort.byY, FlxSort.ASCENDING)` at the bottom of your `FlxState#update()` override. - * - * @param Function The sorting function to use - you can use one of the premade ones in - * `FlxSort` or write your own using `FlxSort.byValues()` as a "backend". - * @param Order A constant that defines the sort order. - * Possible values are `FlxSort.ASCENDING` (default) and `FlxSort.DESCENDING`. - - - - - - - - { Force : false } - * Call this function to retrieve the first object with `exists == false` in the group. - * This is handy for recycling in general, e.g. respawning enemies. - * - * @param ObjectClass An optional parameter that lets you narrow the - * results to instances of this particular class. - * @param Force Force the object to be an `ObjectClass` and not a super class of `ObjectClass`. - * @return A `FlxSprite` currently flagged as not existing. - - - - * Call this function to retrieve the first index set to `null`. - * Returns `-1` if no index stores a `null` object. - * - * @return An `Int` indicating the first `null` slot in the group. - - - - * Call this function to retrieve the first object with `exists == true` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxSprite` currently flagged as existing. - - - - * Call this function to retrieve the first object with `dead == false` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxSprite` currently flagged as not dead. - - - - * Call this function to retrieve the first object with `dead == true` in the group. - * This is handy for checking if everything's wiped out, or choosing a squad leader, etc. - * - * @return A `FlxSprite` currently flagged as dead. - - - - * Call this function to find out how many members of the group are not dead. - * - * @return The number of `FlxSprite`s flagged as not dead. Returns `-1` if group is empty. - - - - * Call this function to find out how many members of the group are dead. - * - * @return The number of `FlxSprite`s flagged as dead. Returns `-1` if group is empty. - - - - - - - - { Length : 0, StartIndex : 0 } - * Returns a member at random from the group. - * - * @param StartIndex Optional offset off the front of the array. - * Default value is `0`, or the beginning of the array. - * @param Length Optional restriction on the number of values you want to randomly select from. - * @return A `FlxSprite` from the `members` list. - - - - - - - - - - * Iterate through every member - * - * @return An iterator - - - - - - - - - - - { Recurse : false } - * Applies a function to all members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all `alive` members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all dead members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - { Recurse : false } - * Applies a function to all existing members. - * - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well. - - - - - - - - - - - - { Recurse : false } - `. - * - * @param ObjectClass A class that objects will be checked against before Function is applied, ex: `FlxSprite`. - * @param Function A function that modifies one element at a time. - * @param Recurse Whether or not to apply the function to members of subgroups as well.]]> - - - - * Remove all instances of `FlxSprite` from the list. - * WARNING: does not `destroy()` or `kill()` any of these objects! - - - - * Calls `kill()` on the group's members and then on the group itself. - * You can revive this group later via `revive()` after this. - - - - * Revives the group. - - - - - - - - - - - - - { Y : 0, X : 0 } - * Helper function to set the coordinates of this object. - * Handy since it only requires one line of code. - * - * @param X The new x position - * @param Y The new y position - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This functionality isn't supported in SpriteGroup - - - - - * Returns the left-most position of the left-most member. - * If there are no members, x is returned. - * - * @since 5.0.0 - - - - - * Returns the right-most position of the right-most member. - * If there are no members, x is returned. - * - * @since 5.0.0 - - - - - - - - * This functionality isn't supported in SpriteGroup - - - - - * Returns the top-most position of the top-most member. - * If there are no members, y is returned. - * - * @since 5.0.0 - - - - - * Returns the top-most position of the top-most member. - * If there are no members, y is returned. - * - * @since 5.0.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This functionality isn't supported in SpriteGroup - * @return this sprite group - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - * This functionality isn't supported in SpriteGroup - * @return this sprite group - - - - - - - - - - - - { AutoBuffer : false, AntiAliasing : false, Frame : -1, Rotations : 16 } - * This functionality isn't supported in SpriteGroup - * @return this sprite group - - - - - - - - - - - { Unique : false, Color : FlxColor.WHITE } - * This functionality isn't supported in SpriteGroup - * @return this sprite group - - - - - - - - - - - - - - - - { RunOnCpp : false } - * Internal function to update the current animation frame. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - - - * This functionality isn't supported in SpriteGroup - - - - - - - - - { Y : 0, X : 0 } - * This functionality isn't supported in SpriteGroup - - - - - - - - * This functionality isn't supported in SpriteGroup - - - - - - - - - { MaxSize : 0, Y : 0, X : 0 } - * @param X The initial X position of the group. - * @param Y The initial Y position of the group. - * @param MaxSize Maximum amount of members allowed. - - * `FlxSpriteGroup` is a special `FlxSprite` that can be treated like - * a single sprite even if it's made up of several member sprites. - * It shares the `FlxTypedGroup` API, but it doesn't inherit from it. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Stores the FlxSprite the trail is attached to. - - - - * How often to update the trail. - - - - true - * Whether to check for X changes or not. - - - - true - * Whether to check for Y changes or not. - - - - true - * Whether to check for angle changes or not. - - - - true - * Whether to check for scale changes or not. - - - - true - * Whether to check for frame changes of the "parent" FlxSprite or not. - - <_counter expr="0"> - - 0 - * Counts the frames passed. - - <_trailLength expr="0"> - - 0 - * How long is the trail? - - <_graphic> - - * Stores the trailsprite image. - - <_transp expr="1"> - - 1 - * The alpha value for the next trailsprite. - - <_difference> - - * How much lower the alpha value of the next trailsprite is. - - <_recentPositions expr="[]"> - - [] - - <_recentAngles expr="[]"> - - [] - - <_recentScales expr="[]"> - - [] - - <_recentFrames expr="[]"> - - [] - - <_recentFlipX expr="[]"> - - [] - - <_recentFlipY expr="[]"> - - [] - - <_recentAnimations expr="[]"> - - [] - - <_spriteOrigin> - - * Stores the sprite origin (rotation axis) - - - - - - - - * Updates positions and other values according to the delay that has been set. - - - - - - - - - - - - - * A function to add a specific number of sprites to the trail to increase its length. - * - * @param Amount The amount of sprites to add to the trail. - - - - - - - * In case you want to change the trailsprite image in runtime... - * - * @param Image The image the sprites should load - - - - - - - - - - { Scale : true, Y : true, X : true } - * Handy little function to change which events affect the trail. - * - * @param Angle Whether the trail reacts to angle changes or not. - * @param X Whether the trail reacts to x changes or not. - * @param Y Whether the trail reacts to y changes or not. - * @param Scale Wheater the trail reacts to scale changes or not. - - - - - - - - - - - - { Diff : 0.05, Alpha : 0.4, Delay : 3, Length : 10 } - * Creates a new FlxTrail effect for a specific FlxSprite. - * - * @param Target The FlxSprite the trail is attached to. - * @param Graphic The image to use for the trailsprites. Optional, uses the sprite's graphic if null. - * @param Length The amount of trailsprites to create. - * @param Delay How often to update the trail. 0 updates every frame. - * @param Alpha The alpha value for the very first trailsprite. - * @param Diff How much lower the alpha of the next trailsprite is. - - * Nothing too fancy, just a handy little class to attach a trail effect to a FlxSprite. - * Inspired by the way "Buck" from the inofficial #flixel IRC channel - * creates a trail effect for the character in his game. - * Feel free to use this class and adjust it to your needs. - * @author Gama11 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 2 - * How often the trail is updated, in frames. Default value is 2, or "every frame". - - - - false - * If this is true, the render process ignores any color/scale/rotation manipulation of the sprites - * with the advantage of being faster - - - - null - * Specifies the blendMode for the trails. - * Ignored in simple render mode. Only works on the flash target. - - - - * Stores all sprites that have a trail. - - - - 1 - * The bitmap's red value is multiplied by this every update - - - - 1 - * The bitmap's green value is multiplied by this every update - - - - 1 - * The bitmap's blue value is multiplied by this every update - - - - * The bitmap's alpha value is multiplied by this every update - - - - 0 - * The bitmap's red value is offsettet by this every update - - - - 0 - * The bitmap's green value is offsettet by this every update - - - - 0 - * The bitmap's blue value is offsettet by this every update - - - - 0 - * The bitmap's alpha value is offsettet by this every update - - <_counter expr="0"> - - 0 - * Counts the frames passed. - - <_width expr="1"> - - 1 - * Internal width variable - * Initialized to 1 to prevent invalid bitmapData during construction - - <_height expr="1"> - - 1 - * Internal height variable - * Initialized to 1 to prevent invalid bitmapData during construction - - <_areaPixels> - - * Internal helper var, linking to area's pixels - - - - - - - - * Sets the FlxTrailArea to a new size. Clears the area! - * - * @param Width The new width - * @param Height The new height - - - - - - * Wipes the trail area - - - - - - - * Adds a FlxSprite to the FlxTrailArea. Not an add() in the traditional sense, - * this just enables the trail effect for the sprite. You still need to add it to your state for it to update! - * - * @param Sprite The sprite to enable the trail effect for - * @return The FlxSprite, useful for chaining stuff together - - - - * Redirects width to _width - - - - - - - * Setter for width, defaults to FlxG.width, creates new _rendeBitmap if neccessary - - - - * Redirects height to _height - - - - - - - * Setter for height, defaults to FlxG.height, creates new _rendeBitmap if neccessary - - - - - - - - - - - - - - - { Antialiasing : false, SimpleRender : false, Delay : 2, AlphaMultiplier : 0.8, Height : 0, Width : 0, Y : 0, X : 0 } - * Creates a new FlxTrailArea, in which all added sprites get a trail effect. - * - * @param X x position of the trail area - * @param Y y position of the trail area - * @param Width The width of the area - defaults to FlxG.width - * @param Height The height of the area - defaults to FlxG.height - * @param AlphaMultiplier By what the area's alpha is multiplied per update - * @param Delay How often to update the trail. 1 updates every frame - * @param SimpleRender If simple rendering should be used. Ignores all sprite transformations - * @param Antialiasing If sprites should be smoothed when drawn to the area. Ignored when simple rendering is on - * @param TrailBlendMode The blend mode used for the area. Only works in flash - - * This provides an area in which the added sprites have a trail effect. Usage: Create the FlxTrailArea and - * add it to the display. Then add all sprites that should have a trail effect via the add function. - * @author KeyMaster - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - * Sets the FlxTrailArea to a new size. Clears the area! - * - * @param Width The new width - * @param Height The new height - - <_HX_SUPER__setSize public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - * Setter for width, defaults to FlxG.width, creates new _rendeBitmap if neccessary - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - - * Setter for height, defaults to FlxG.height, creates new _rendeBitmap if neccessary - - <_HX_SUPER__set_height set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.FlxTrailArea - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Updates positions and other values according to the delay that has been set. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__resetTrail public="1" set="method" line="31"> - - - - - - * A function to add a specific number of sprites to the trail to increase its length. - * - * @param Amount The amount of sprites to add to the trail. - - <_HX_SUPER__increaseLength public="1" set="method" line="31"> - - - - - - - - - * In case you want to change the trailsprite image in runtime... - * - * @param Image The image the sprites should load - - <_HX_SUPER__changeGraphic public="1" set="method" line="31"> - - - - - - - - - - - - { Scale : true, Y : true, X : true } - * Handy little function to change which events affect the trail. - * - * @param Angle Whether the trail reacts to angle changes or not. - * @param X Whether the trail reacts to x changes or not. - * @param Y Whether the trail reacts to y changes or not. - * @param Scale Wheater the trail reacts to scale changes or not. - - <_HX_SUPER__changeValuesEnabled public="1" set="method" line="31"> - - - - - - - - { Scale : true, Y : true, X : true } - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.FlxTrail - - - - - - - true - * Enables and disables the effects update loop. - - - - * The target FlxSprite that is used to apply effects. - - - - true - * Whether to call target's FlxSprite#updateAnimation() every FlxEffectSprite#update(). Set this false if the target is also added to state. - - - - * Effects applied to frames - - <_effectOffset> - - * Use to offset the drawing position of the bitmap. - - - - * WARNING: This will remove this sprite entirely. Use kill() if you want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - - - - - - - * Call this function to figure out the on-screen position of the object. - * - * @param Point Takes a FlxPoint object and assigns the post-scrolled X and Y values of this object to it. - * @param Camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return The Point you passed in, or a new Point if you didn't pass one, containing the screen X and Y position of this object. - - - - - - - - * Core update loop, and updates each active effect. - - - - - - - - * Creates a FlxEffectSprite for a specific FlxSprite. - * - * @param Target The target FlxSprite that is used to apply effects. - * @param Effects Effects to be applied to frames. - - * Use this class to chain bitmap effects to your target FlxSprite frame. - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * WARNING: This will remove this sprite entirely. Use kill() if you want to disable it temporarily only and reset() it later to revive it. - * Used to clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Call this function to figure out the on-screen position of the object. - * - * @param Point Takes a FlxPoint object and assigns the post-scrolled X and Y values of this object to it. - * @param Camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return The Point you passed in, or a new Point if you didn't pass one, containing the screen X and Y position of this object. - - <_HX_SUPER__getScreenPosition public="1" set="method" line="148"> - - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - * Core update loop, and updates each active effect. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxEffectSprite - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - true - - - - FlxPoint.get() - - - - 1 - * How thick each glitch segment should be. - - - - 0.05 - * Time, in seconds, between glitch updates - - - - * Which direction the glitch effect should be applied. - - - - 2 - * How strong the glitch effect should be (how much it should move from the center) - - <_time expr="0"> - - 0 - * Current time of the effect. - - <_flashPoint expr="new Point()"> - - new Point() - * Internal, reused frequently during drawing and animating. - - <_flashRect expr="new Rectangle()"> - - new Rectangle() - * Internal, reused frequently during drawing and animating. - - <_pixels> - - * The actual Flash BitmapData object representing the current effect state. - - - - - - - - - - - - - - - - - - - { Delay : 0.05, Size : 1, Strength : 4 } - * Creates a new FlxGlitchSprite, which applies a Glitch-distortion effect. - * This effect is non-destructive to the target's pixels, and can be used on animated FlxSprites. - * - * @param Strength How strong you want the effect. - * @param Size How 'thick' you want each piece of the glitch. - * @param Delay How long (in seconds) between each glitch update. - * @param Direction Which Direction you want the effect to be applied (HORIZONTAL or VERTICAL). - - * This is a modified version of FlxGlitchSprite by Tim Hely - * - * @author Tim Hely / tims-world.com - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxGlitchEffect - flixel.addons.effects.chainable.FlxGlitchEffect.FlxGlitchDirection - - - - - - - true - - - - FlxPoint.get() - - - - true - * Set this flag to true to force the effect to update during the apply() call. - * This effect is too heavy, and must be called just when the main shape of sprite changes. - - - - * Which mode we're using for the effect - * @since 2.1.0 - - - - * Color of the outline. - - - - * Stroke thickness in pixels of outline. - - - - * Set alpha sensitivity to a number between 0 and 1. - - - - * How many iterations do use when drawing the outline. 0: only 1 iteration, 1: one iteration for every pixel in thickness - * A value of 1 will have the best quality for large border sizes, but might reduce performance. - * NOTE: If the thickness is 1, quality of 0 or 1 will have the exact same effect (and performance). - * @since 2.1.0 - - <_pixels> - - * The actual Flash BitmapData object representing the current effect state. - - <_borderPixels> - - * The actual Flash BitmapData object representing the colored border. - - <_flashPoint expr="new Point()"> - - new Point() - * Internal, reused frequently during drawing and animating. - - <_matrix expr="new Matrix()"> - - new Matrix() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Quality : 1, Threshold : 0, Thickness : 1, Color : FlxColor.WHITE } - * Creates an outline around the bitmapData with the specified color and thickness. To update, dirty need to be setted as true. - * - * @param Mode Which Mode you would like to use for the effect. FAST = Optimized using only 4 draw calls, NORMAL = Outline on all 8 sides, PIXEL_BY_PIXEL = Surround every pixel (can affect performance). - * @param Color Color of the outline. - * @param Thickness Outline thickness in pixels. - * @param Quality Outline quality - # of iterations to use when drawing. 0:just 1, 1:equal number to Thickness. Not used with PIXEL_BY_PIXEL mode. - * @param Threshold Alpha sensitivity, only used with PIXEL_BY_PIXEL mode. - - * This creates an outline around the bitmapData. This is a modified version of FlxOutline by red__hara, with some code get from FlxText's borders. - * - * @author red__hara - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - @since 2.1.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__drawPixelByPixel set="method" line="31"> - - - - - - - - <_HX_SUPER__drawNormal set="method" line="31"> - - - - - - - - <_HX_SUPER__drawFast set="method" line="31"> - - - - - - - - - - <_HX_SUPER__surroundPixel set="method" line="148"> - - - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxOutlineEffect - flixel.addons.effects.chainable.FlxOutlineEffect.FlxOutlineMode - - - - - - - true - - - - - 5 - * How fast the hue should change each tick. - - - - 1 - * Set alpha to a number between 0 and 1 to change the opacity of the effect. - - - - 1 - * A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - - <_hue expr="0"> - - 0 - * The current hue of the effect - - <_time expr="0"> - - 0 - * Used to adjust the hue using speed - - <_flashPoint expr="new Point()"> - - new Point() - * Internal, reused frequently during drawing and animating. Always contains (0,0). - - <_pixels> - - * The actual Flash BitmapData object representing the current effect state. - - - - - - - - - - - - - - - - - - - { StartHue : 0, Speed : 5, Brightness : 1, Alpha : 1 } - * Creates a new FlxEffectRainbow, which applies a color-cycling effect, using the target's bitmap as a mask. - * - * @param Alpha A number between 0 and 1 to change the opacity of the effect. - * @param Brightness A number between 0 and 1, indicating how bright the color should be. - * @param Speed How fast the hue should change each tick. - * @param StartHue The initial hue of the effect. - - * This is a modified version of FlxRainbowSprite by Tim Hely - * - * @author Tim Hely / tims-world.com - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxRainbowEffect - - - - - - - true - - - - FlxPoint.get() - - - - 0 - * Value in pixels representing the maximum distance that the bitmapData can move while shaking. - - - - * A function you want to run when the shake finishes. - - - - XY - * On what axes to shake. - - <_duration expr="0"> - - 0 - * The length in seconds that the shaking effect should last. - - <_time expr="0"> - - 0 - * Current time of the effect. - - - - - - - - - - - - - - - - { Force : false } - * Reset and start the effect with the same parameters. - * - * @param Force Force the effect to reset. - - - - - - - - - - { Duration : 0.5, Intensity : 5 } - * Reset the effect, need to set the parameters again. To use the same parameters call method start(). - * - * @param Intensity Value in pixels representing the maximum distance that the bitmapData can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete Optional completion callback function. - * @param Axes On what axes to shake. Default value is XY / both. - - - - - - - - - - { Duration : 0.5, Intensity : 5 } - * A shake effect. - * - * @param Intensity Value in pixels representing the maximum distance that the bitmapData can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete Optional completion callback function. - * @param Axes On what axes to shake. Default value is XY / both. - - * This will shake the bitmapData. - * - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - - - - - - { Force : false } - * Reset and start the effect with the same parameters. - * - * @param Force Force the effect to reset. - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - { Force : false } - - - - - - - - - - { Duration : 0.5, Intensity : 5 } - * Reset the effect, need to set the parameters again. To use the same parameters call method start(). - * - * @param Intensity Value in pixels representing the maximum distance that the bitmapData can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete Optional completion callback function. - * @param Axes On what axes to shake. Default value is XY / both. - - <_HX_SUPER__reset public="1" set="method" line="148"> - - - - - - - - { Duration : 0.5, Intensity : 5 } - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxShakeEffect - - - - - - - true - - - - FlxPoint.get() - - - - * The target FlxEffectSprite that to apply the trail. - - - - * The amount of trail images to create. - - - - * The alpha value for the first trail. - - - - * Number of frames to wait until next updated. - - - - * Whether to cache current pixels bitmapData of the target for every trail position. - - <_recentPositions expr="[]"> - - [] - * An array containing the 'length' last differences of the target positions. - - <_recentPixels expr="[]"> - - [] - * An array containing the 'length' last pixels bitmapData of the target. Only used if cachePixels is enabled. - - <_currentFrames expr="0"> - - 0 - * Current number of frames passed. - - <_pixels> - - * The actual Flash BitmapData object representing the current effect state. - - <_matrix expr="new Matrix()"> - - new Matrix() - - <_colorTransform expr="new ColorTransform()"> - - new ColorTransform() - - - - - - - - - - - - - - @since 2.1.0 - - - - - - - - - - - - - - - - - - - - { CachePixels : true, FramesDelay : 2, Alpha : 0.5, Length : 10 } - * Creates a trail effect. - * - * @param Length The amount of trail images to create. - * @param Alpha The alpha value for the first trailsprite. - * @param FramesDelay How many frames wait until next trail updated. - * @param CachePixels Whether to cache current pixels bitmapData of the target for every trail position. Disable if target never update graphics. - - * This creates a trail copying the bitmapData many times. - * - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__updateRecents public="1" set="method" line="31"> - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - - - @since 2.1.0 - - <_HX_SUPER__clear public="1" set="method" line="31"> - - <_HX_SUPER__disposeCachedPixels set="method" line="148"> - - - - - <_HX_SUPER__set_length set="method" line="148"> - - - - - - - - <_HX_SUPER__set_cachePixels set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxTrailEffect - - - - - - - true - - - - FlxPoint.get() - - - - * Which mode we're using for the effect. - - - - * How fast should the wave effect be (higher = faster). - -
    - - * The 'center' of our sprite (where the wave effect should start/end). Ratio based on the bitmapData size. -
    - - - * Which direction the wave effect should be applied. - - - - * How long waves are. - - - - * How strong the wave effect should be. - - - - * The wave ratio to offset every odd line of the `BitmapData`. Must be a value between 0 and 1. - * @since 2.1.0 - - <_time expr="0"> - - 0 - * Current time of the effect. - - <_flashPoint expr="new Point()"> - - new Point() - * Internal, reused frequently during drawing and animating. - - <_flashRect expr="new Rectangle()"> - - new Rectangle() - * Internal, reused frequently during drawing and animating. - - <_pixels> - - * The actual Flash BitmapData object representing the current effect state. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { InterlaceOffset : 0, Wavelength : 5, Speed : 3, Center : 0.5, Strength : 10 } - * Creates a new FlxEffectWave, which applies a wave-distortion effect. - * - * @param Mode Which Mode you would like to use for the effect. ALL = applies a constant distortion throughout the image, END = makes the effect get stronger towards the bottom of the image, and START = the reverse of END. - * @param Strength How strong you want the effect. - * @param Center The 'center' of the effect when using END or START modes. Anything before(END)/after(START) this point on the image will have no distortion effect. Ratio based on the bitmapData size. - * @param Speed How fast you want the effect to move. Higher values = faster. - * @param Wavelength How long waves are. - * @param Direction Which Direction you want the effect to be applied (HORIZONTAL or VERTICAL). - * @param InterlaceOffset The wave ratio to offset every odd line of the bitmapData. Must be a value between 0 and 1; - - * This is a modified version of FlxWaveSprite by Tim Hely - * - * @author Tim Hely / tims-world.com - * @author adrianulima - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_interlaceOffset set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.effects.chainable.FlxWaveEffect - flixel.addons.effects.chainable.FlxWaveEffect.FlxWaveMode - flixel.addons.effects.chainable.FlxWaveEffect.FlxWaveDirection - - - - - - - -1 - * Use with sort() to sort in ascending order. - - - - 1 - * Use with sort() to sort in descending order. - - - - "y" - * The value that the FlxExtendedSprites are sorted by before deciding which is "on-top" for click select - - - - ASCENDING - * The sorting order. If the sortIndex is "y" and the order is ASCENDING then a sprite with a Y value of 200 would be "on-top" of one with a Y value of 100. - - - - false - * Is the mouse currently dragging a sprite? If you have just clicked but NOT yet moved the mouse then this might return false. - - - - * The FlxExtendedSprite that is currently being dragged, if any. - - - - - * The speed the mouse is moving on the X axis in pixels per frame - - - - * The speed the mouse is moving on the Y axis in pixels per frame - - - - * The mouse can be set to only be active within a specific FlxRect region of the game world. - * If outside this FlxRect no clicks, drags or throws will be processed. - * If the mouse leaves this region while still dragging then the sprite is automatically dropped and its release handler is called. - * Set the FlxRect to null to disable the zone. - - - - false - * Instead of using a mouseZone (which is calculated in world coordinates) you can limit the mouse to the FlxG.camera.deadzone area instead. - * If set to true the mouse will use the camera deadzone. If false (or the deadzone is null) no check will take place. - * Note that this takes priority over the mouseZone above. If the mouseZone and deadzone are set, the deadzone is used. - - <_clickStack expr="new Array<FlxExtendedSprite>()" line="80" static="1"> - - ()]]> - * The FlxExtendedSprite that currently has the mouse button pressed on it - - <_clickCoords static="1"> - <_hasClickTarget expr="false" line="83" static="1"> - - false - - <_oldX expr="0" line="85" static="1"> - - 0 - - <_oldY expr="0" line="86" static="1"> - - 0 - - - - - - - * Adds the given FlxExtendedSprite to the stack of potential sprites that were clicked, the stack is then sorted and the final sprite is selected from that - * - * @param Item The FlxExtendedSprite that was clicked by the mouse - - - - * Removes all references to any click / drag targets and resets this class - - - - - - - * Main Update Loop - checks mouse status and updates FlxExtendedSprites accordingly - - - - * Internal function used to release the click / drag targets and reset the mouse state - - - - * Once the clickStack is created this sorts it and then picks the sprite with the highest priority (based on sortIndex and sortOrder) - - - - - - - - * Helper function for the sort process. - * - * @param Item1 The first object being sorted. - * @param Item2 The second object being sorted. - * - * @return An integer value: -1 (item1 before item2), 0 (same), or 1 (item1 after item2) - - - - * Runs when this plugin is destroyed - - - * FlxMouseControl - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Main Update Loop - checks mouse status and updates FlxExtendedSprites accordingly - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Internal function used to release the click / drag targets and reset the mouse state - - <_HX_SUPER__releaseMouse set="method" line="31"> - - - * Once the clickStack is created this sorts it and then picks the sprite with the highest priority (based on sortIndex and sortOrder) - - <_HX_SUPER__assignClickedSprite set="method" line="31"> - - - - - - - * Helper function for the sort process. - * - * @param Item1 The first object being sorted. - * @param Item2 The second object being sorted. - * - * @return An integer value: -1 (item1 before item2), 0 (same), or 1 (item1 after item2) - - <_HX_SUPER__sortHandler set="method" line="148"> - - - - - - - * Runs when this plugin is destroyed - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.FlxMouseControl - - - - <__pool expr="new ObjectPool<Point>(function() return new Point(), function(p) p.setTo(0, 0))" line="37" static="1"> - - - (function() return new Point(), function(p) p.setTo(0, 0))]]> - - - - <__limeVector2 static="1"> - - - - - - - - - - Returns the distance between `pt1` and `pt2`. - - @param pt1 The first point. - @param pt2 The second point. - @return The distance between the first and second points. - - - - - - - - - Determines a point between two specified points. The parameter - `f` determines where the new interpolated point is located - relative to the two end points specified by parameters `pt1` - and `pt2`. The closer the value of the parameter `f` - is to `1.0`, the closer the interpolated point is to the first - point(parameter `pt1`). The closer the value of the parameter - `f` is to 0, the closer the interpolated point is to the second - point(parameter `pt2`). - - @param pt1 The first point. - @param pt2 The second point. - @param f The level of interpolation between the two points. Indicates - where the new point will be, along the line between - `pt1` and `pt2`. If `f`=1, - `pt1` is returned; if `f`=0, - `pt2` is returned. - @return The new, interpolated point. - - - - - - - - Converts a pair of polar coordinates to a Cartesian point coordinate. - - @param len The length coordinate of the polar pair. - @param angle The angle, in radians, of the polar pair. - @return The Cartesian point. - - - - The length of the line segment from(0,0) to this point. - - - - The horizontal coordinate of the point. The default value is 0. - - - - The vertical coordinate of the point. The default value is 0. - - - - - - - Adds the coordinates of another point to the coordinates of this point to - create a new point. - - @param v The point to be added. - @return The new point. - - - - Creates a copy of this Point object. - - @return The new Point object. - - - - - - - Copies all of the point data from the source Point object into the calling Point - object. - - @param sourcePoint The Point object from which to copy the data. - - - - - - - Determines whether two points are equal. Two points are equal if they have - the same _x_ and _y_ values. - - @param toCompare The point to be compared. - @return A value of `true` if the object is equal to this Point - object; `false` if it is not equal. - - - - - - - Scales the line segment between(0,0) and the current point to a set - length. - - @param thickness The scaling value. For example, if the current point is - (0,5), and you normalize it to 1, the point returned is - at(0,1). - @return The normalized point. - - - - - - - - Offsets the Point object by the specified amount. The value of - `dx` is added to the original value of _x_ to create the - new _x_ value. The value of `dy` is added to the original - value of _y_ to create the new _y_ value. - - @param dx The amount by which to offset the horizontal coordinate, - _x_. - @param dy The amount by which to offset the vertical coordinate, _y_. - - - - - - - - Sets the members of Point to the specified values - - @param xa the values to set the point to. - @param ya - - - - - - - Subtracts the coordinates of another point from the coordinates of this - point to create a new point. - - @param v The point to be subtracted. - @return The new point. - - - - Returns a string that contains the values of the _x_ and _y_ - coordinates. The string has the form `"(x=_x_, - y=_y_)"`, so calling the `toString()` method for a - point at 23,17 would return `"(x=23, y=17)"`. - - @return The string representation of the coordinates. - - <__toLimeVector2 set="method" line="254"> - - - - - - - - - - - - - - { y : 0, x : 0 } - Creates a new point. If you pass no parameters to this method, a point is - created at(0,0). - - @param x The horizontal coordinate. - @param y The vertical coordinate. - - The Point object represents a location in a two-dimensional coordinate - system, where _x_ represents the horizontal axis and _y_ - represents the vertical axis. - - The following code creates a point at(0,0): - - Methods and properties of the following classes use Point objects: - - - * BitmapData - * DisplayObject - * DisplayObjectContainer - * DisplacementMapFilter - * NativeWindow - * Matrix - * Rectangle - - - You can use the `new Point()` constructor to create a Point - object. - - - "tags=\"haxe,release\"" - - - - - - - - - - - ()]]> - - - - new Point(0, 0) - - - - - - - - - - - - - { loopOnWrap : true, onlyScrollOnscreen : true, text : null, steps : 0, pixels : 1 } - * Adds an FlxBitmapTextField to the Scrolling Text Manager and returns an FlxSprite which contains the text scroller in it. - * The FlxSprite will automatically update itself via this plugin, but can be treated as a normal FlxSprite in all other regards - * re: positioning, collision, rotation, etc. - * - * @param bitmapText A pre-prepared FlxBitmapTextField object (see the Test Suite examples for details on how this works) - * @param region A Rectangle that defines the size of the scrolling FlxSprite. The sprite will be placed at region.x/y and be region.width/height in size. - * @param pixels The number of pixels to scroll per step. For a smooth (but slow) scroll use low values. Keep the value proportional to the font width, so if the font width is 16 use a value like 1, 2, 4 or 8. - * @param steps How many steps should pass before the text is next scrolled? Default 0 means every step we scroll. Higher values slow things down. - * @param text The default text for your scrolling message. Can be changed in real-time via the addText method. - * @param onlyScrollOnscreen Only update the text scroller when this FlxSprite is visible on-screen? Default true. - * @param loopOnWrap When the scroller reaches the end of the given "text" should it wrap to the start? Default true. If false it will clear the screen then set itself to not update. - * - * @return An FlxSprite of size region.width/height, positioned at region.x/y, that auto-updates its contents while this plugin runs - - - - - - - - - { overwrite : false } - * Adds or replaces the text in the given Text Scroller. - * Can be called while the scroller is still active. - * - * @param source The FlxSprite Text Scroller you wish to update (must have been added to FlxScrollingText via a call to add() - * @param text The text to add or update to the Scroller - * @param overwrite If true the given text will fully replace the previous scroller text. If false it will be appended to the end (default) - - - - - - - - * Removes all FlxSprites - * This is called automatically if the plugin is destroyed, but should be called manually by you if you change States - * as all the FlxSprites will be destroyed by Flixel otherwise - - - - - - - { source : null } - * Starts scrolling on the given FlxSprite. If no FlxSprite is given it starts scrolling on all FlxSprites currently added. - * Scrolling is enabled by default, but this can be used to re-start it if you have stopped it via stopScrolling. - * - * @param source The FlxSprite to start scrolling on. If left as null it will start scrolling on all sprites. - - - - - - - { source : null } - * Stops scrolling on the given FlxSprite. If no FlxSprite is given it stops scrolling on all FlxSprites currently added. - * Scrolling is enabled by default, but this can be used to stop it. - * - * @param source The FlxSprite to stop scrolling on. If left as null it will stop scrolling on all sprites. - - - - - - - * Checks to see if the given FlxSprite is a Scrolling Text, and is actively scrolling or not - * Note: If the text is set to only scroll when on-screen, but if off-screen when this is called, it will still return true. - * - * @param source The FlxSprite to check for scrolling on. - * @return Bool true is the FlxSprite was found and is scrolling, otherwise false - - - - - - - * Removes an FlxSprite from the Text Scroller. Note that it doesn't restore the sprite bitmapData. - * - * @param source The FlxSprite to remove scrolling for. - * @return Bool true if the FlxSprite was removed, otherwise false. - - - - - * FlxScrollingText - * -- Part of the Flixel Power Tools set - * -- Works only FLX_BLIT_RENDER mode for now - * - * v1.0 First version released - * - * @version 1.0 - May 5th 2011 - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - * @co-author Ungar Djordje / ArtBIT (Haxe port) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.FlxScrollingText - flixel.addons.plugin.FlxScrollingText.ScrollingTextData - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.FlxScrollingText - flixel.addons.plugin.FlxScrollingText.ScrollingTextData - - - - - - - - - <_members expr="new ObjectMap<FlxControlHandler,FlxControlHandler>()" line="23" static="1"> - - - - - ()]]> - - - - - - - - - - - - { EnableArrowKeys : true, UpdateFacing : false, Player : 1 } - * Creates a new FlxControlHandler. You can have as many FlxControlHandlers as you like, but you usually only have one per player. The first handler you make - * will be assigned to the FlxControl.player1 var. The 2nd to FlxControl.player2 and so on for player3 and player4. Beyond this you need to keep a reference to the - * handler yourself. - * - * @param Sprite The FlxSprite you want this class to control. It can only control one FlxSprite at once. - * @param MovementType Set to either MOVEMENT_INSTANT or MOVEMENT_ACCELERATES - * @param StoppingType Set to STOPPING_INSTANT, STOPPING_DECELERATES or STOPPING_NEVER - * @param UpdateFacing If true it sets the FlxSprite.facing value to the direction pressed (default false) - * @param EnableArrowKeys If true it will enable all arrow keys (default) - see setCursorControl for more fine-grained control - * @return The new FlxControlHandler - - - - - - - * Removes a FlxControlHandler - * - * @param ControlHandler The FlxControlHandler to delete - * @return Boolean true if the FlxControlHandler was removed, otherwise false. - - - - * Removes all FlxControlHandlers. - * This is called automatically if this plugin is ever destroyed. - - - - - - - * Starts updating the given FlxControlHandler, enabling keyboard actions for it. If no FlxControlHandler is given it starts updating all FlxControlHandlers currently added. - * Updating is enabled by default, but this can be used to re-start it if you have stopped it via stop(). - * - * @param ControlHandler The FlxControlHandler to start updating on. If left as null it will start updating all handlers. - - - - - - - * Stops updating the given FlxControlHandler. If no FlxControlHandler is given it stops updating all FlxControlHandlers currently added. - * Updating is enabled by default, but this can be used to stop it, for example if you paused your game (see start() to restart it again). - * - * @param ControlHandler The FlxControlHandler to stop updating. If left as null it will stop updating all handlers. - - - - - - - * Runs update on all currently active FlxControlHandlers - - - - * Runs when this plugin is destroyed - - - * FlxControl - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - 0 - * The "Instant" Movement Type means the sprite will move at maximum speed instantly, and will not "accelerate" (or speed-up) before reaching that speed. - - - - 1 - * The "Accelerates" Movement Type means the sprite will accelerate until it reaches maximum speed. - - - - 0 - * The "Instant" Stopping Type means the sprite will stop immediately when no direction keys are being pressed, there will be no deceleration. - - - - 1 - * The "Decelerates" Stopping Type means the sprite will start decelerating when no direction keys are being pressed. Deceleration continues until the speed reaches zero. - - - - 2 - * The "Never" Stopping Type means the sprite will never decelerate, any speed built up will be carried on and never reduce. - - - - 0 - * The "Instant" Movement Type means the sprite will rotate at maximum speed instantly, and will not "accelerate" (or speed-up) before reaching that speed. - - - - 1 - * The "Accelerates" Rotaton Type means the sprite will accelerate until it reaches maximum rotation speed. - - - - 0 - * The "Instant" Stopping Type means the sprite will stop rotating immediately when no rotation keys are being pressed, there will be no deceleration. - - - - 1 - * The "Decelerates" Stopping Type means the sprite will start decelerating when no rotation keys are being pressed. Deceleration continues until rotation speed reaches zero. - - - - 2 - * The "Never" Stopping Type means the sprite will never decelerate, any speed built up will be carried on and never reduce. - - - - 0 - * This keymode fires for as long as the key is held down - - - - 1 - * This keyboard fires when the key has just been pressed down, and not again until it is released and re-pressed - - - - 2 - * This keyboard fires only when the key has been pressed and then released again - - - - FlxMath.SQUARE_ROOT_OF_TWO * 0.5 - - - - false - - - - false - - - - false - - - - false - - - - false - - <_entity> - <_bounds> - <_up expr="false"> - - false - - <_down expr="false"> - - false - - <_left expr="false"> - - false - - <_right expr="false"> - - false - - <_fire> - <_altFire> - <_jump> - <_altJump> - <_xFacing> - <_yFacing> - <_rotateAntiClockwise> - <_rotateClockwise> - <_upMoveSpeed> - <_downMoveSpeed> - <_leftMoveSpeed> - <_rightMoveSpeed> - <_thrustSpeed> - <_reverseSpeed> - <_thrustEnabled expr="false"> - - false - - <_reverseEnabled> - <_isRotating expr="false"> - - false - - <_antiClockwiseRotationSpeed> - <_clockwiseRotationSpeed> - <_enforceAngleLimits expr="false"> - - false - - <_minAngle> - <_maxAngle> - <_capAngularVelocity> - <_xSpeedAdjust expr="0"> - - 0 - - <_ySpeedAdjust expr="0"> - - 0 - - <_gravityX expr="0"> - - 0 - - <_gravityY expr="0"> - - 0 - - <_fireRate> - <_nextFireTime expr="0"> - - 0 - - <_lastFiredTime> - <_fireKeyMode> - <_fireCallback> - <_jumpHeight> - <_jumpRate> - <_jumpKeyMode> - <_nextJumpTime> - <_lastJumpTime> - <_jumpFromFallTime> - <_extraSurfaceTime> - <_jumpSurface> - <_jumpCallback> - <_movement> - <_stopping> - <_rotation> - <_rotationStopping> - <_capVelocity> - <_hotkeys> - <_upKey> - <_downKey> - <_leftKey> - <_rightKey> - <_fireKey> - <_altFireKey> - <_jumpKey> - <_altJumpKey> - <_antiClockwiseKey> - <_clockwiseKey> - <_thrustKey> - <_reverseKey> - - - @since 2.1.0 - - - - @since 2.1.0 - - <_jumpSound> - <_fireSound> - <_walkSound> - <_thrustSound> - - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - * Set the speed at which the sprite will move when a direction key is pressed. - * All values are given in pixels per second. So an xSpeed of 100 would move the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - * - * If you need different speed values for left/right or up/down then use setAdvancedMovementSpeed - * - * @param SpeedX The speed in pixels per second in which the sprite will move/accelerate horizontally - * @param SpeedY The speed in pixels per second in which the sprite will move/accelerate vertically - * @param SpeedMaxX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedMaxY The maximum speed in pixels per second in which the sprite can move vertically - * @param DecelerationX A deceleration speed in pixels per second to apply to the sprites horizontal movement (default 0) - * @param DecelerationY A deceleration speed in pixels per second to apply to the sprites vertical movement (default 0) - - - - - - - - { Acceleration : true } - * If you know you need the same value for the acceleration, maximum speeds and (optionally) deceleration then this is a quick way to set them. - * - * @param Speed The speed in pixels per second in which the sprite will move/accelerate/decelerate - * @param Acceleration If true it will set the speed value as the deceleration value (default) false will leave deceleration disabled - - - - - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - * Set the speed at which the sprite will move when a direction key is pressed. - * All values are given in pixels per second. So an xSpeed of 100 would move the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - * - * If you don't need different speed values for every direction on its own then use setMovementSpeed - * - * @param LeftSpeed The speed in pixels per second in which the sprite will move/accelerate to the left - * @param RightSpeed The speed in pixels per second in which the sprite will move/accelerate to the right - * @param UpSpeed The speed in pixels per second in which the sprite will move/accelerate up - * @param DownSpeed The speed in pixels per second in which the sprite will move/accelerate down - * @param SpeedMaxX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedMaxY The maximum speed in pixels per second in which the sprite can move vertically - * @param DecelerationX Deceleration speed in pixels per second to apply to the sprites horizontal movement (default 0) - * @param DecelerationY Deceleration speed in pixels per second to apply to the sprites vertical movement (default 0) - - - - - - - - - - * Set the speed at which the sprite will rotate when a direction key is pressed. - * Use this in combination with setMovementSpeed to create a Thrust like movement system. - * All values are given in pixels per second. So an xSpeed of 100 would rotate the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - - - - - - - - * @param RotationType - * @param StoppingType - - - - - - - - { LimitVelocity : true } - * Sets the maximum speed (in pixels per second) that the FlxSprite can rotate. - * When the FlxSprite is accelerating (movement type MOVEMENT_ACCELERATES) its speed won't increase above this value. - * However Flixel allows the velocity of an FlxSprite to be set to anything. So if you'd like to check the value and restrain it, then enable "limitVelocity". - * - * @param Speed The maximum speed in pixels per second in which the sprite can rotate - * @param LimitVelocity If true the angular velocity of the FlxSprite will be checked and kept within the limit. If false it can be set to anything. - - - - - - - * Deceleration is a speed (in pixels per second) that is applied to the sprite if stopping type is "DECELERATES" and if no rotation is taking place. - * The velocity of the sprite will be reduced until it reaches zero. - * - * @param Speed The speed in pixels per second at which the sprite will have its angular rotation speed decreased - - - - - - - - * Set minimum and maximum angle limits that the Sprite won't be able to rotate beyond. - * Values must be between -180 and +180. 0 is pointing right, 90 down, 180 left, -90 up. - * - * @param MinimumAngle Minimum angle below which the sprite cannot rotate (must be -180 or above) - * @param MaximumAngle Maximum angle above which the sprite cannot rotate (must be 180 or below) - - - - * Disables rotation limits set in place by setRotationLimits() - - - - - - - - - - { CustomClockwise : "", CustomAntiClockwise : "", UpDown : false, LeftRight : true } - * Set which keys will rotate the sprite. The speed of rotation is set in setRotationSpeed. - * - * @param LeftRight Use the LEFT and RIGHT arrow keys for anti-clockwise and clockwise rotation respectively. - * @param UpDown Use the UP and DOWN arrow keys for anti-clockwise and clockwise rotation respectively. - * @param CustomAntiClockwise The String value of your own key to use for anti-clockwise rotation (as taken from flixel.system.input.Keyboard) - * @param CustomClockwise The String value of your own key to use for clockwise rotation (as taken from flixel.system.input.Keyboard) - - - - - - - - - - { ReverseSpeed : 0 } - * If you want to enable a Thrust like motion for your sprite use this to set the speed and keys. - * This is usually used in conjunction with Rotation and it will over-ride anything already defined in setMovementSpeed. - * - * @param ThrustKey Specify the key String (as taken from flixel.system.input.Keyboard) to use for the Thrust action - * @param ThrustSpeed The speed in pixels per second which the sprite will move. Acceleration or Instant movement is determined by the Movement Type. - * @param ReverseKey If you want to be able to reverse, set the key string as taken from flixel.system.input.Keyboard (defaults to null). - * @param ReverseSpeed The speed in pixels per second which the sprite will reverse. Acceleration or Instant movement is determined by the Movement Type. - - - - - - - - - { LimitVelocity : true } - * Sets the maximum speed (in pixels per second) that the FlxSprite can move. You can set the horizontal and vertical speeds independantly. - * When the FlxSprite is accelerating (movement type MOVEMENT_ACCELERATES) its speed won't increase above this value. - * However Flixel allows the velocity of an FlxSprite to be set to anything. So if you'd like to check the value and restrain it, then enable "limitVelocity". - * - * @param SpeedX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedY The maximum speed in pixels per second in which the sprite can move vertically - * @param LimitVelocity If true the velocity of the FlxSprite will be checked and kept within the limit. If false it can be set to anything. - - - - - - - - * Deceleration is a speed (in pixels per second) that is applied to the sprite if stopping type is "DECELERATES" and if no acceleration is taking place. - * The velocity of the sprite will be reduced until it reaches zero, and can be configured separately per axis. - * - * @param SpeedX The speed in pixels per second at which the sprite will have its horizontal speed decreased - * @param SpeedY The speed in pixels per second at which the sprite will have its vertical speed decreased - - - - - - - - * Gravity can be applied to the sprite, pulling it in any direction. - * Gravity is given in pixels per second and is applied as acceleration. The speed the sprite reaches under gravity will never exceed the Maximum Movement Speeds set. - * If you don't want gravity for a specific direction pass a value of zero. - * - * @param ForceX A positive value applies gravity dragging the sprite to the right. A negative value drags the sprite to the left. Zero disables horizontal gravity. - * @param ForceY A positive value applies gravity dragging the sprite down. A negative value drags the sprite up. Zero disables vertical gravity. - - - - * Switches the gravity applied to the sprite. If gravity was +400 Y (pulling them down) this will swap it to -400 Y (pulling them up) - * To reset call flipGravity again - - - - - - - - { ResetY : true, ResetX : true } - * TODO - * - * @param ResetX - * @param ResetY - - - - - - - - - - * Set sound effects for the movement events jumping, firing, walking and thrust. - * - * @param Jump The FlxSound to play when the user jumps - * @param Fire The FlxSound to play when the user fires - * @param Walk The FlxSound to play when the user walks - * @param Thrust The FlxSound to play when the user thrusts - - - - - - - - - - - { AltKey : "" } - * Enable a fire button - * - * @param Key The key to use as the fire button (String from flixel.system.input.Keyboard, i.e. "SPACE", "CONTROL") - * @param Keymode The FlxControlHandler KEYMODE value (KEYMODE_PRESSED, KEYMODE_JUST_DOWN, KEYMODE_RELEASED) - * @param RepeatDelay Time delay in ms between which the fire action can repeat (0 means instant, 250 would allow it to fire approx. 4 times per second) - * @param Callback A user defined function to call when it fires - * @param AltKey Specify an alternative fire key that works AS WELL AS the primary fire key (TODO) - - - - - - - - - - - - - - { AltKey : "", JumpFromFall : 0, RepeatDelay : 250 } - * Enable a jump button - * - * @param Key The key to use as the jump button (String from flixel.system.input.Keyboard, i.e. "SPACE", "CONTROL") - * @param Keymode The FlxControlHandler KEYMODE value (KEYMODE_PRESSED, KEYMODE_JUST_DOWN, KEYMODE_RELEASED) - * @param Height The height in pixels/sec that the Sprite will attempt to jump (gravity and acceleration can influence this actual height obtained) - * @param Surface A bitwise combination of all valid surfaces the Sprite can jump off (such as FLOOR) - * @param RepeatDelay Time delay in ms between which the jumping can repeat (250 would be 4 times per second) - * @param JumpFromFall A time in ms that allows the Sprite to still jump even if it's just fallen off a platform, if still within ths time limit - * @param Callback A user defined function to call when the Sprite jumps - * @param AltKey Specify an alternative jump key that works AS WELL AS the primary jump key (TODO) - - - - - - - - - - * Limits the sprite to only be allowed within this rectangle. If its x/y coordinates go outside it will be repositioned back inside. - * Coordinates should be given in GAME WORLD pixel values (not screen value, although often they are the two same things) - * - * @param X The x coordinate of the top left corner of the area (in game world pixels) - * @param Y The y coordinate of the top left corner of the area (in game world pixels) - * @param Width The width of the area (in pixels) - * @param Height The height of the area (in pixels) - - - - * Clears any previously set sprite bounds - - - - - - - - - - - - - - - - - * Called by the FlxControl plugin - - - - - - - - - - * Sets Custom Key controls. Useful if none of the pre-defined sets work. All String values should be taken from flixel.system.input.Keyboard - * Pass a blank (empty) String to disable that key from being checked. - * - * @param CustomUpKey The String to use for the Up key. - * @param CustomDownKey The String to use for the Down key. - * @param CustomLeftKey The String to use for the Left key. - * @param CustomRightKey The String to use for the Right key. - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Cursor/Arrow Key controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the UP key - * @param AllowDown Enable the DOWN key - * @param AllowLeft Enable the LEFT key - * @param AllowRight Enable the RIGHT key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables WASD controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param allowUp Enable the up (W) key - * @param allowDown Enable the down (S) key - * @param allowLeft Enable the left (A) key - * @param allowRight Enable the right (D) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables ESDF (home row) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (E) key - * @param AllowDown Enable the down (D) key - * @param AllowLeft Enable the left (S) key - * @param AllowRight Enable the right (F) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables IJKL (right-sided or secondary player) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (I) key - * @param AllowDown Enable the down (K) key - * @param AllowLeft Enable the left (J) key - * @param AllowRight Enable the right (L) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables HJKL (Rogue / Net-Hack) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (K) key - * @param AllowDown Enable the down (J) key - * @param AllowLeft Enable the left (H) key - * @param AllowRight Enable the right (L) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables ZQSD (Azerty keyboard) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (Z) key - * @param AllowDown Enable the down (Q) key - * @param AllowLeft Enable the left (S) key - * @param AllowRight Enable the right (D) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Dvoark Simplified Controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (COMMA) key - * @param AllowDown Enable the down (A) key - * @param AllowLeft Enable the left (O) key - * @param AllowRight Enable the right (E) key - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Numpad (left-handed) Controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (NUMPADEIGHT) key - * @param AllowDown Enable the down (NUMPADTWO) key - * @param AllowLeft Enable the left (NUMPADFOUR) key - * @param AllowRight Enable the right (NUMPADSIX) key - - - - - - - - - - - { EnableArrowKeys : true, UpdateFacing : false } - * Sets the FlxSprite to be controlled by this class, and defines the initial movement and stopping types. - * After creating an instance of this class you should call setMovementSpeed, and one of the enableXControl functions if you need more than basic cursors. - * - * @param Sprite The FlxSprite you want this class to control. It can only control one FlxSprite at once. - * @param MovementType Set to either MOVEMENT_INSTANT or MOVEMENT_ACCELERATES - * @param StoppingType Set to STOPPING_INSTANT, STOPPING_DECELERATES or STOPPING_NEVER - * @param UpdateFacing If true it sets the FlxSprite.facing value to the direction pressed (default false) - * @param EnableArrowKeys If true it will enable all arrow keys (default) - see setCursorControl for more fine-grained control - - * - * Makes controlling an FlxSprite with the keyboard a LOT easier and quicker to set-up! - * Sometimes it's hard to know what values to set, especially if you want gravity, jumping, sliding, etc. - * This class helps sort that - and adds some cool extra functionality too :) - * - * TODO: Hot Keys - * TODO: Binding of sound effects to keys (seperate from setSounds? as those are event based) - * TODO: Specify animation frames to play based on velocity - * TODO: Variable gravity (based on height, the higher the stronger the effect) - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - * Set the speed at which the sprite will move when a direction key is pressed. - * All values are given in pixels per second. So an xSpeed of 100 would move the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - * - * If you need different speed values for left/right or up/down then use setAdvancedMovementSpeed - * - * @param SpeedX The speed in pixels per second in which the sprite will move/accelerate horizontally - * @param SpeedY The speed in pixels per second in which the sprite will move/accelerate vertically - * @param SpeedMaxX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedMaxY The maximum speed in pixels per second in which the sprite can move vertically - * @param DecelerationX A deceleration speed in pixels per second to apply to the sprites horizontal movement (default 0) - * @param DecelerationY A deceleration speed in pixels per second to apply to the sprites vertical movement (default 0) - - <_HX_SUPER__setMovementSpeed public="1" set="method" line="31"> - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - - - - - - - - { Acceleration : true } - * If you know you need the same value for the acceleration, maximum speeds and (optionally) deceleration then this is a quick way to set them. - * - * @param Speed The speed in pixels per second in which the sprite will move/accelerate/decelerate - * @param Acceleration If true it will set the speed value as the deceleration value (default) false will leave deceleration disabled - - <_HX_SUPER__setStandardSpeed public="1" set="method" line="31"> - - - - - - { Acceleration : true } - - - - - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - * Set the speed at which the sprite will move when a direction key is pressed. - * All values are given in pixels per second. So an xSpeed of 100 would move the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - * - * If you don't need different speed values for every direction on its own then use setMovementSpeed - * - * @param LeftSpeed The speed in pixels per second in which the sprite will move/accelerate to the left - * @param RightSpeed The speed in pixels per second in which the sprite will move/accelerate to the right - * @param UpSpeed The speed in pixels per second in which the sprite will move/accelerate up - * @param DownSpeed The speed in pixels per second in which the sprite will move/accelerate down - * @param SpeedMaxX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedMaxY The maximum speed in pixels per second in which the sprite can move vertically - * @param DecelerationX Deceleration speed in pixels per second to apply to the sprites horizontal movement (default 0) - * @param DecelerationY Deceleration speed in pixels per second to apply to the sprites vertical movement (default 0) - - <_HX_SUPER__setAdvancedMovementSpeed public="1" set="method" line="31"> - - - - - - - - - - - - { DecelerationY : 0, DecelerationX : 0 } - - - - - - - - - - * Set the speed at which the sprite will rotate when a direction key is pressed. - * Use this in combination with setMovementSpeed to create a Thrust like movement system. - * All values are given in pixels per second. So an xSpeed of 100 would rotate the sprite 100 pixels in 1 second (1000ms) - * Due to the nature of the internal Flash timer this amount is not 100% accurate and will vary above/below the desired distance by a few pixels. - - <_HX_SUPER__setRotationSpeed public="1" set="method" line="31"> - - - - - - - - - - - - - * @param RotationType - * @param StoppingType - - <_HX_SUPER__setRotationType public="1" set="method" line="31"> - - - - - - - - - - - { LimitVelocity : true } - * Sets the maximum speed (in pixels per second) that the FlxSprite can rotate. - * When the FlxSprite is accelerating (movement type MOVEMENT_ACCELERATES) its speed won't increase above this value. - * However Flixel allows the velocity of an FlxSprite to be set to anything. So if you'd like to check the value and restrain it, then enable "limitVelocity". - * - * @param Speed The maximum speed in pixels per second in which the sprite can rotate - * @param LimitVelocity If true the angular velocity of the FlxSprite will be checked and kept within the limit. If false it can be set to anything. - - <_HX_SUPER__setMaximumRotationSpeed public="1" set="method" line="31"> - - - - - - { LimitVelocity : true } - - - - - - - * Deceleration is a speed (in pixels per second) that is applied to the sprite if stopping type is "DECELERATES" and if no rotation is taking place. - * The velocity of the sprite will be reduced until it reaches zero. - * - * @param Speed The speed in pixels per second at which the sprite will have its angular rotation speed decreased - - <_HX_SUPER__setRotationDeceleration public="1" set="method" line="31"> - - - - - - - - - - * Set minimum and maximum angle limits that the Sprite won't be able to rotate beyond. - * Values must be between -180 and +180. 0 is pointing right, 90 down, 180 left, -90 up. - * - * @param MinimumAngle Minimum angle below which the sprite cannot rotate (must be -180 or above) - * @param MaximumAngle Maximum angle above which the sprite cannot rotate (must be 180 or below) - - <_HX_SUPER__setRotationLimits public="1" set="method" line="31"> - - - - - - - * Disables rotation limits set in place by setRotationLimits() - - <_HX_SUPER__disableRotationLimits public="1" set="method" line="31"> - - - - - - - - - { CustomClockwise : "", CustomAntiClockwise : "", UpDown : false, LeftRight : true } - * Set which keys will rotate the sprite. The speed of rotation is set in setRotationSpeed. - * - * @param LeftRight Use the LEFT and RIGHT arrow keys for anti-clockwise and clockwise rotation respectively. - * @param UpDown Use the UP and DOWN arrow keys for anti-clockwise and clockwise rotation respectively. - * @param CustomAntiClockwise The String value of your own key to use for anti-clockwise rotation (as taken from flixel.system.input.Keyboard) - * @param CustomClockwise The String value of your own key to use for clockwise rotation (as taken from flixel.system.input.Keyboard) - - <_HX_SUPER__setRotationKeys public="1" set="method" line="31"> - - - - - - - - { CustomClockwise : "", CustomAntiClockwise : "", UpDown : false, LeftRight : true } - - - - - - - - - - { ReverseSpeed : 0 } - * If you want to enable a Thrust like motion for your sprite use this to set the speed and keys. - * This is usually used in conjunction with Rotation and it will over-ride anything already defined in setMovementSpeed. - * - * @param ThrustKey Specify the key String (as taken from flixel.system.input.Keyboard) to use for the Thrust action - * @param ThrustSpeed The speed in pixels per second which the sprite will move. Acceleration or Instant movement is determined by the Movement Type. - * @param ReverseKey If you want to be able to reverse, set the key string as taken from flixel.system.input.Keyboard (defaults to null). - * @param ReverseSpeed The speed in pixels per second which the sprite will reverse. Acceleration or Instant movement is determined by the Movement Type. - - <_HX_SUPER__setThrust public="1" set="method" line="31"> - - - - - - - - { ReverseSpeed : 0 } - - - - - - - - - { LimitVelocity : true } - * Sets the maximum speed (in pixels per second) that the FlxSprite can move. You can set the horizontal and vertical speeds independantly. - * When the FlxSprite is accelerating (movement type MOVEMENT_ACCELERATES) its speed won't increase above this value. - * However Flixel allows the velocity of an FlxSprite to be set to anything. So if you'd like to check the value and restrain it, then enable "limitVelocity". - * - * @param SpeedX The maximum speed in pixels per second in which the sprite can move horizontally - * @param SpeedY The maximum speed in pixels per second in which the sprite can move vertically - * @param LimitVelocity If true the velocity of the FlxSprite will be checked and kept within the limit. If false it can be set to anything. - - <_HX_SUPER__setMaximumSpeed public="1" set="method" line="31"> - - - - - - - { LimitVelocity : true } - - - - - - - - * Deceleration is a speed (in pixels per second) that is applied to the sprite if stopping type is "DECELERATES" and if no acceleration is taking place. - * The velocity of the sprite will be reduced until it reaches zero, and can be configured separately per axis. - * - * @param SpeedX The speed in pixels per second at which the sprite will have its horizontal speed decreased - * @param SpeedY The speed in pixels per second at which the sprite will have its vertical speed decreased - - <_HX_SUPER__setDeceleration public="1" set="method" line="31"> - - - - - - - - - - - * Gravity can be applied to the sprite, pulling it in any direction. - * Gravity is given in pixels per second and is applied as acceleration. The speed the sprite reaches under gravity will never exceed the Maximum Movement Speeds set. - * If you don't want gravity for a specific direction pass a value of zero. - * - * @param ForceX A positive value applies gravity dragging the sprite to the right. A negative value drags the sprite to the left. Zero disables horizontal gravity. - * @param ForceY A positive value applies gravity dragging the sprite down. A negative value drags the sprite up. Zero disables vertical gravity. - - <_HX_SUPER__setGravity public="1" set="method" line="31"> - - - - - - - * Switches the gravity applied to the sprite. If gravity was +400 Y (pulling them down) this will swap it to -400 Y (pulling them up) - * To reset call flipGravity again - - <_HX_SUPER__flipGravity public="1" set="method" line="31"> - - - - - - - { ResetY : true, ResetX : true } - * TODO - * - * @param ResetX - * @param ResetY - - <_HX_SUPER__resetSpeeds public="1" set="method" line="31"> - - - - - - { ResetY : true, ResetX : true } - - - - - - - - - - * Set sound effects for the movement events jumping, firing, walking and thrust. - * - * @param Jump The FlxSound to play when the user jumps - * @param Fire The FlxSound to play when the user fires - * @param Walk The FlxSound to play when the user walks - * @param Thrust The FlxSound to play when the user thrusts - - <_HX_SUPER__setSounds public="1" set="method" line="31"> - - - - - - - - - - - - - - - - { AltKey : "" } - * Enable a fire button - * - * @param Key The key to use as the fire button (String from flixel.system.input.Keyboard, i.e. "SPACE", "CONTROL") - * @param Keymode The FlxControlHandler KEYMODE value (KEYMODE_PRESSED, KEYMODE_JUST_DOWN, KEYMODE_RELEASED) - * @param RepeatDelay Time delay in ms between which the fire action can repeat (0 means instant, 250 would allow it to fire approx. 4 times per second) - * @param Callback A user defined function to call when it fires - * @param AltKey Specify an alternative fire key that works AS WELL AS the primary fire key (TODO) - - <_HX_SUPER__setFireButton public="1" set="method" line="31"> - - - - - - - - - { AltKey : "" } - - - - - - - - - - - - - - { AltKey : "", JumpFromFall : 0, RepeatDelay : 250 } - * Enable a jump button - * - * @param Key The key to use as the jump button (String from flixel.system.input.Keyboard, i.e. "SPACE", "CONTROL") - * @param Keymode The FlxControlHandler KEYMODE value (KEYMODE_PRESSED, KEYMODE_JUST_DOWN, KEYMODE_RELEASED) - * @param Height The height in pixels/sec that the Sprite will attempt to jump (gravity and acceleration can influence this actual height obtained) - * @param Surface A bitwise combination of all valid surfaces the Sprite can jump off (such as FLOOR) - * @param RepeatDelay Time delay in ms between which the jumping can repeat (250 would be 4 times per second) - * @param JumpFromFall A time in ms that allows the Sprite to still jump even if it's just fallen off a platform, if still within ths time limit - * @param Callback A user defined function to call when the Sprite jumps - * @param AltKey Specify an alternative jump key that works AS WELL AS the primary jump key (TODO) - - <_HX_SUPER__setJumpButton public="1" set="method" line="31"> - - - - - - - - - - - - { AltKey : "", JumpFromFall : 0, RepeatDelay : 250 } - - - - - - - - - - * Limits the sprite to only be allowed within this rectangle. If its x/y coordinates go outside it will be repositioned back inside. - * Coordinates should be given in GAME WORLD pixel values (not screen value, although often they are the two same things) - * - * @param X The x coordinate of the top left corner of the area (in game world pixels) - * @param Y The y coordinate of the top left corner of the area (in game world pixels) - * @param Width The width of the area (in pixels) - * @param Height The height of the area (in pixels) - - <_HX_SUPER__setBounds public="1" set="method" line="31"> - - - - - - - - - * Clears any previously set sprite bounds - - <_HX_SUPER__removeBounds public="1" set="method" line="31"> - - <_HX_SUPER__moveUp set="method" line="148"> - - <_HX_SUPER__moveDown set="method" line="148"> - - <_HX_SUPER__moveLeft set="method" line="148"> - - <_HX_SUPER__moveRight set="method" line="148"> - - <_HX_SUPER__moveAntiClockwise set="method" line="148"> - - <_HX_SUPER__moveClockwise set="method" line="148"> - - <_HX_SUPER__moveThrust set="method" line="148"> - - <_HX_SUPER__moveReverse set="method" line="148"> - - <_HX_SUPER__runFire set="method" line="148"> - - <_HX_SUPER__runJump set="method" line="148"> - - - - - - * Called by the FlxControl plugin - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - - - * Sets Custom Key controls. Useful if none of the pre-defined sets work. All String values should be taken from flixel.system.input.Keyboard - * Pass a blank (empty) String to disable that key from being checked. - * - * @param CustomUpKey The String to use for the Up key. - * @param CustomDownKey The String to use for the Down key. - * @param CustomLeftKey The String to use for the Left key. - * @param CustomRightKey The String to use for the Right key. - - <_HX_SUPER__setCustomKeys public="1" set="method" line="31"> - - - - - - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Cursor/Arrow Key controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the UP key - * @param AllowDown Enable the DOWN key - * @param AllowLeft Enable the LEFT key - * @param AllowRight Enable the RIGHT key - - <_HX_SUPER__setCursorControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables WASD controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param allowUp Enable the up (W) key - * @param allowDown Enable the down (S) key - * @param allowLeft Enable the left (A) key - * @param allowRight Enable the right (D) key - - <_HX_SUPER__setWASDControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables ESDF (home row) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (E) key - * @param AllowDown Enable the down (D) key - * @param AllowLeft Enable the left (S) key - * @param AllowRight Enable the right (F) key - - <_HX_SUPER__setESDFControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables IJKL (right-sided or secondary player) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (I) key - * @param AllowDown Enable the down (K) key - * @param AllowLeft Enable the left (J) key - * @param AllowRight Enable the right (L) key - - <_HX_SUPER__setIJKLControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables HJKL (Rogue / Net-Hack) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (K) key - * @param AllowDown Enable the down (J) key - * @param AllowLeft Enable the left (H) key - * @param AllowRight Enable the right (L) key - - <_HX_SUPER__setHJKLControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables ZQSD (Azerty keyboard) controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (Z) key - * @param AllowDown Enable the down (Q) key - * @param AllowLeft Enable the left (S) key - * @param AllowRight Enable the right (D) key - - <_HX_SUPER__setZQSDControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Dvoark Simplified Controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (COMMA) key - * @param AllowDown Enable the down (A) key - * @param AllowLeft Enable the left (O) key - * @param AllowRight Enable the right (E) key - - <_HX_SUPER__setDvorakSimplifiedControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - * Enables Numpad (left-handed) Controls. Can be set on a per-key basis. Useful if you only want to allow a few keys. - * For example in a Space Invaders game you'd only enable LEFT and RIGHT. - * - * @param AllowUp Enable the up (NUMPADEIGHT) key - * @param AllowDown Enable the down (NUMPADTWO) key - * @param AllowLeft Enable the left (NUMPADFOUR) key - * @param AllowRight Enable the right (NUMPADSIX) key - - <_HX_SUPER__setNumpadControl public="1" set="method" line="31"> - - - - - - - - { AllowRight : true, AllowLeft : true, AllowDown : true, AllowUp : true } - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.control.FlxControlHandler - - - - - - - - - - * Runs update on all currently active FlxControlHandlers - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Runs when this plugin is destroyed - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.control.FlxControl - - - - - - <_hotkeys static="1"> - <_autoSave expr="false" line="33" static="1"> - - false - - <_autoHideMouse expr="false" line="34" static="1"> - - false - - <_region static="1"> - - - - - - - - - 1 you need to account for this here. - * - * @param X The x coordinate (in Flash display space, not Flixel game world) - * @param Y The y coordinate (in Flash display space, not Flixel game world) - * @param Width The width of the grab region - * @param Height The height of the grab region]]> - - - - * Clears a previously defined capture region - - - - - - - - - { HideMouse : false, SaveToFile : false } - * Specify which key will capture a screen shot. Use the String value of the key in the same way FlxG.keys does (so "F1" for example) - * Optionally save the image to a file immediately. This uses the file systems "Save as" dialog window and pauses your game during the process. - * - * @param Key The key(s) you press to capture the screen (i.e. [F1, SPACE]) - * @param SaveToFile If true it will immediately encodes the grab to a PNG and open a "Save As" dialog window when the hotkey is pressed - * @param HideMouse If true the mouse will be hidden before capture and displayed afterwards when the hotkey is pressed - - - - * Clears all previously defined hotkeys - - - - - - - - - { HideMouse : false, SaveToFile : false } - * Takes a screen grab immediately of the given region or a previously defined region - * - * @param CaptureRegion A Rectangle area to capture. This over-rides that set by "defineCaptureRegion". If neither are set the full SWF size is used. - * @param SaveToFile Boolean If set to true it will immediately encode the grab to a PNG and open a "Save As" dialog window - * @param HideMouse Boolean If set to true the mouse will be hidden before capture and displayed again afterwards - * @return Bitmap The screen grab as a Flash Bitmap image - - - - - - - - - - - { Filename : "" } - - - - - - - - * Captures a screen grab of the game and stores it locally, optionally saving as a PNG. - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.screengrab.FlxScreenGrab - - - - - - - * Method-task to be executed - - - - * If true then the task will be deleted from the manager immediately after execution. - - - - * If true the task will be completed right after it's first call - - - - * Pointer to the next task. - - - - * Destroys the list. - - - - - - - - - - { Instant : false, IgnoreCycle : false } - * Creates a new FlxTask - - * @author Anton Karlov - * @since 08.22.2012 - * @author Zaphod - * @since 11.19.2012 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * This function will be called when all tasks in the task manager are completed - - - - 0 - * Number of tasks in the list - - <_taskList> - - * The list of active tasks - - <_cycle expr="false"> - - false - * Determines whether tasks are performed in a loop - - <_delay expr="0"> - - 0 - * Used to calculate the current pause between tasks - - - - - - - - - { IgnoreCycle : false } - * Adds a task to the end of queue, the method will be executed while it returns false. - * The task will be completed only when the method will return true. And manager will switch to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - - - - - - - { IgnoreCycle : false } - * Adds a task to the end of queue, the method will be executed only ONCE, after that we go to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - - - - - - - { IgnoreCycle : false } - * Adds a task to the top of the queue, the method will be executed while it returns false. - * The task will be completed only when the method will return true, and the manager will move to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - - - - - - - { IgnoreCycle : false } - * Adds a task to the top of the queue, the method will be executed only ONCE, after that we go to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - - - - - - - { IgnoreCycle : false } - * Adds a pause between tasks - * - * @param Delay Pause duration - * @param IgnoreCycle If true, the pause will be executed only once per cycle - - - - * Removes all the tasks from manager and stops it - - - - - - - { IgnoreCycle : false } - * Move to the next task - * - * @param IgnoreCycle Specifies whether to leave the previous problem in the manager - - - - - - - * Current task processing - - - - - - - * Method-task for a pause between tasks - * - * @param Delay Delay - * @return Returns true when the task is completed - - - - - - - * Adds the specified object to the end of the list - * - * @param Task The FlxTask to be added. - * @return Returns a pointer to the added FlxTask. - - - - - - - * Adds task to the top of task list - * - * @param Task The FlxTask to be added. - * @return Returns a pointer to the added FlxTask - - - - * Removes first task - * - * @return The task that has been removed - - - - - - - - { Cycle : false } - - * The Task Manager is used to perform tasks (call methods) in specified order. - * Allows you to quickly and easily program any action, such as the appearance of the buttons in the game menus. - * Task Manager is started automatically when you add at least one task, and stops when all tasks are done. - * - * @author Anton Karlov - * @since 08.22.2012 - * @author Zaphod - * @since 11.19.2012 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - { IgnoreCycle : false } - * Adds a task to the end of queue, the method will be executed while it returns false. - * The task will be completed only when the method will return true. And manager will switch to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - <_HX_SUPER__addTask public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - - - - - - - - { IgnoreCycle : false } - * Adds a task to the end of queue, the method will be executed only ONCE, after that we go to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - <_HX_SUPER__addInstantTask public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - - - - - - - - { IgnoreCycle : false } - * Adds a task to the top of the queue, the method will be executed while it returns false. - * The task will be completed only when the method will return true, and the manager will move to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - <_HX_SUPER__addUrgentTask public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - - - - - - - - { IgnoreCycle : false } - * Adds a task to the top of the queue, the method will be executed only ONCE, after that we go to the next task. - * - * @param Function Method-task to be executed in sequence. - * @param IgnoreCycle If true then the task will be deleted from the manager immediately after execution. - - <_HX_SUPER__addUrgentInstantTask public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - - - - - - - - { IgnoreCycle : false } - * Adds a pause between tasks - * - * @param Delay Pause duration - * @param IgnoreCycle If true, the pause will be executed only once per cycle - - <_HX_SUPER__addPause public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - - - - * Removes all the tasks from manager and stops it - - <_HX_SUPER__clear public="1" set="method" line="31"> - - - - - - { IgnoreCycle : false } - * Move to the next task - * - * @param IgnoreCycle Specifies whether to leave the previous problem in the manager - - <_HX_SUPER__nextTask public="1" set="method" line="31"> - - - - - { IgnoreCycle : false } - - - - - - - * Current task processing - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - * Method-task for a pause between tasks - * - * @param Delay Delay - * @return Returns true when the task is completed - - <_HX_SUPER__taskPause set="method" line="148"> - - - - - - - - - * Adds the specified object to the end of the list - * - * @param Task The FlxTask to be added. - * @return Returns a pointer to the added FlxTask. - - <_HX_SUPER__push set="method" line="148"> - - - - - - - - - * Adds task to the top of task list - * - * @param Task The FlxTask to be added. - * @return Returns a pointer to the added FlxTask - - <_HX_SUPER__unshift set="method" line="148"> - - - - - - * Removes first task - * - * @return The task that has been removed - - <_HX_SUPER__shift set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.taskManager.FlxTaskManager - - - - - - - * Destroys the list. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.plugin.taskManager.FlxTask - - - - - - - 4 - * 2px gutter on both top and bottom - - - - "" - * The text being displayed. - - - - * The size of the text being displayed in pixels. - - - - * The font used for this text (assuming that it's using embedded font). - - - - * Whether this text field uses an embedded font (by default) or not. - * Read-only - use `systemFont` to specify a system font to use, which then automatically sets this to `false`. - - - - * The system font for this text (not embedded). Setting this sets `embedded` to `false`. - * Passing an invalid font name (like `""` or `null`) causes a default font to be used. - - - - * Whether to use bold text or not (`false` by default). - - - - * Whether to use italic text or not (`false` by default). Only works on Flash. - - - - * Whether to use word wrapping and multiline or not (`true` by default). - - - - * The alignment of the font. Note: `autoSize` must be set to - * `false` or `alignment` won't show any visual differences. - - - - NONE - * The border style to use - - - - FlxColor.TRANSPARENT - * The color of the border in `0xAARRGGBB` format - - - - 1 - * The size of the border, in pixels. - - - - 1 - * How many iterations do use when drawing the border. `0`: only 1 iteration, `1`: one iteration for every pixel in `borderSize` - * A value of `1` will have the best quality for large border sizes, but might reduce performance when changing text. - * NOTE: If the `borderSize` is `1`, `borderQuality` of `0` or `1` will have the exact same effect (and performance). - - - - * Reference to a `TextField` object used internally for rendering - - * be sure to know what you're doing if messing with its properties! - - - - - - - - * Whether the `fieldWidth` should be determined automatically. Requires `wordWrap` to be `false`. - - - - * Offset that is applied to the shadow border style, if active. - * `x` and `y` are multiplied by `borderSize`. Default is `(1, 1)`, or lower-right corner. - - <_defaultFormat> - <_formatAdjusted> - <_formatRanges expr="[]"> - - [] - - <_font> - <_regen expr="true"> - - true - * Helper boolean which tells whether to update graphic of this text object or not. - - <_borderPixels> - - * Helper vars to draw border styles with transparency. - - <_borderColorTransform> - <_hasBorderAlpha expr="false"> - - false - - - - * Clean up memory. - - - - - - - { Force : false } - - - - - - - * Stamps text onto specified atlas object and loads graphic from this atlas. - * WARNING: Changing text after stamping it on the atlas will break the atlas, so do it only for - * static texts and only after making all the text customizing (like `size`, `alignment`, `color`, etc.) - * - * @param atlas atlas to stamp graphic to. - * @return whether the graphic was stamped on the atlas successfully - - - - - - - - "); - * text.applyMarkup("Hey @Buddy@, what is going @on?@", [yellow, green]); - * ``` - * - * @param input The text you want to format - * @param rules `FlxTextFormat`s to selectively apply, paired with marker strings]]> - - - - - - - - - { End : -1, Start : -1 } - * Adds another format to this `FlxText` - * - * @param Format The format to be added. - * @param Start The start index of the string where the format will be applied. - * @param End The end index of the string where the format will be applied. - - - - - - - - - * Removes a specific `FlxTextFormat` from this text. - * If a range is specified, this only removes the format when it touches that range. - - - - * Clears all the formats applied. - - - - - - - - - - - - - { EmbeddedFont : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - * You can use this if you have a lot of text parameters to set instead of the individual properties. - * - * @param Font The name of the font face for the text display. - * @param Size The size of the font (in pixels essentially). - * @param Color The color of the text in `0xRRGGBB` format. - * @param Alignment The desired alignment - * @param BorderStyle Which border style to use - * @param BorderColor Color for the border, `0xAARRGGBB` format - * @param EmbeddedFont Whether this text field uses embedded fonts or not - * @return This `FlxText` instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - { Quality : 1, Size : 1, Color : 0 } - * Set border's style (shadow, outline, etc), color, and size all in one go! - * - * @param Style outline style - * @param Color outline color in `0xAARRGGBB` format - * @param Size outline size in pixels - * @param Quality outline quality - # of iterations to use when drawing. `0`: just 1, `1`: equal number to `Size` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Internal function to draw textField to a BitmapData, if flash it calculates every line x to avoid blurry lines. - - - - - - - - { RunOnCpp : false } - * Internal function to update the current animation frame. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - - - - - - - - - * Helper function for `applyBorderStyle()` - - - - - - - - { UseBorderColor : false } - - - - - - - - - { withAlign : true } - - - - * A helper function for updating the TextField that we use for rendering. - * - * @return A writable copy of `TextField.defaultTextFormat`. - - - - - - - - - - - - - - - - - { EmbeddedFont : true, Size : 8, FieldWidth : 0, Y : 0, X : 0 } - - - * Extends FlxSprite to support rendering text. Can tint, fade, rotate and scale just like a sprite. Doesn't really animate - * though. Also does nice pixel-perfect centering on pixel fonts as long as they are only one-liners. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - - - - - - - - { Y : 0, X : 0 } - - - - - - - - - { Mask : 0xFF } - - - - - - - - - - - - - - - - - - - - - - - - - - - flixel.FlxCamera - * Called by game loop, updates then blits or renders current frame of animation to the screen - - - - - - - - - - - - - - - - - { EmbeddedFont : true, Size : 8 } - * Creates a new FlxText object at the specified position. - * @param X The X position of the text. - * @param Y The Y position of the text. - * @param Width The width of the text object (height is determined automatically). - * @param Text The actual text you would like to display initially. - * @param EmbeddedFont Whether this text field uses embedded fonts or not - - * Extends FlxText for better support rendering text on cpp target. - * Doesn't have multicamera support. - * Displays over all other objects. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - { Y : 0, X : 0 } - - <_HX_SUPER__stamp public="1" set="method" line="31"> - - - - - - - { Y : 0, X : 0 } - - - - - - - - - { Mask : 0xFF } - - <_HX_SUPER__pixelsOverlapPoint public="1" set="method" line="148"> - - - - - - - { Mask : 0xFF } - - - - - - <_HX_SUPER__isSimpleRender public="1" set="method" line="148"> - - - - - <_HX_SUPER__get_pixels set="method" line="148"> - - - - - <_HX_SUPER__set_pixels set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - <_HX_SUPER__kill public="1" set="method" line="31"> - - <_HX_SUPER__revive public="1" set="method" line="31"> - - - flixel.FlxCamera - * Called by game loop, updates then blits or renders current frame of animation to the screen - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__get_camera set="method" line="148"> - - - - - <_HX_SUPER__set_camera set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.text.FlxTextField - - - - - - - - - - Creates a new Sound from an AudioBuffer immediately. - - @param buffer An AudioBuffer instance - @returns A new Sound - - - - - - - Creates a new Sound from a file path synchronously. This means that the - Sound will be returned immediately (if supported). - - HTML5 and Flash do not support creating Sound synchronously, so these targets - always return `null`. - - In order to load files from a remote web address, use the `loadFromFile` method, - which supports asynchronous loading. - - @param path A local file path containing a sound - @returns A new Sound if successful, or `null` if unsuccessful - - - - - - - Creates a new Sound from a file path or web address asynchronously. The file - load will occur in the background. - - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A local file path or web address containing a sound - @returns A Future Sound - - - - - - - Creates a new Sound from a set of file paths or web addresses asynchronously. - The audio backend will choose the first compatible file format, and will load the file - it selects in the background. - - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param paths A set of local file paths or web addresses containing sound - @returns A Future Sound - - - - Returns the currently available number of bytes in this sound object. This - property is usually useful only for externally loaded files. - - - - Returns the total number of bytes in this sound object. - - - - Security.]]> - - - - Returns the buffering state of external MP3 files. If the value is - `true`, any playback is currently suspended while the object - waits for more data. - - - - The length of the current sound in milliseconds. - - - - The URL from which this sound was loaded. This property is applicable only - to Sound objects that were loaded using the `Sound.load()` - method. For Sound objects that are associated with a sound asset from a - SWF file's library, the value of the `url` property is - `null`. - - When you first call `Sound.load()`, the `url` - property initially has a value of `null`, because the final URL - is not yet known. The `url` property will have a non-null value - as soon as an `open` event is dispatched from the Sound - object. - - The `url` property contains the final, absolute URL from - which a sound was loaded. The value of `url` is usually the - same as the value passed to the `stream` parameter of - `Sound.load()`. However, if you passed a relative URL to - `Sound.load()` the value of the `url` property - represents the absolute URL. Additionally, if the original URL request is - redirected by an HTTP server, the value of the `url` property - reflects the final URL from which the sound file was actually downloaded. - This reporting of an absolute, final URL is equivalent to the behavior of - `LoaderInfo.url`. - - In some cases, the value of the `url` property is truncated; - see the `isURLInaccessible` property for details. - - <__buffer> - - - - - - Closes the stream, causing any download of data to cease. No data may - be read from the stream after the `close()` method is called. - - @throws IOError The stream could not be closed, or the stream was not - open. - - - - - - - - { context : null } - Initiates loading of an external MP3 file from the specified URL. If you - provide a valid URLRequest object to the Sound constructor, the - constructor calls `Sound.load()` for you. You only need to call - `Sound.load()` yourself if you don't pass a valid URLRequest - object to the Sound constructor or you pass a `null` value. - - Once `load()` is called on a Sound object, you can't later - load a different sound file into that Sound object. To load a different - sound file, create a new Sound object. - - When using this method, consider the following security model: - - * Calling `Sound.load()` is not allowed if the calling file - is in the local-with-file-system sandbox and the sound is in a network - sandbox. - * Access from the local-trusted or local-with-networking sandbox - requires permission from a website through a URL policy file. - * You cannot connect to commonly reserved ports. For a complete list - of blocked ports, see "Restricting Networking APIs" in the _ActionScript - 3.0 Developer's Guide_. - * You can prevent a SWF file from using this method by setting the - `allowNetworking` parameter of the `object` and - `embed` tags in the HTML page that contains the SWF - content. - - In Flash Player 10 and later, if you use a multipart Content-Type(for - example "multipart/form-data") that contains an upload(indicated by a - "filename" parameter in a "content-disposition" header within the POST - body), the POST operation is subject to the security rules applied to - uploads: - - * The POST operation must be performed in response to a user-initiated - action, such as a mouse click or key press. - * If the POST operation is cross-domain(the POST target is not on the - same server as the SWF file that is sending the POST request), the target - server must provide a URL policy file that permits cross-domain - access. - - - Also, for any multipart Content-Type, the syntax must be valid - (according to the RFC2046 standards). If the syntax appears to be invalid, - the POST operation is subject to the security rules applied to - uploads. - - In Adobe AIR, content in the `application` security sandbox - (content installed with the AIR application) are not restricted by these - security limitations. - - For more information related to security, see the Flash Player - Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @param stream A URL that points to an external MP3 file. - @param context An optional SoundLoader context object, which can define - the buffer time(the minimum number of milliseconds of MP3 - data to hold in the Sound object's buffer) and can specify - whether the application should check for a cross-domain - policy file prior to loading the sound. - @throws IOError A network error caused the load to fail. - @throws IOError The `digest` property of the - `stream` object is not `null`. - You should only set the `digest` property - of a URLRequest object when calling the - `URLLoader.load()` method when loading a - SWZ file(an Adobe platform component). - @throws SecurityError Local untrusted files may not communicate with the - Internet. You can work around this by reclassifying - this file as local-with-networking or trusted. - @throws SecurityError You cannot connect to commonly reserved ports. For a - complete list of blocked ports, see "Restricting - Networking APIs" in the _ActionScript 3.0 - Developer's Guide_. - - - - - - - - Load MP3 sound data from a ByteArray object into a Sound object. The data will be read from the current - ByteArray position and will leave the ByteArray position at the end of the specified bytes length once - finished. If the MP3 sound data contains ID3 data ID3 events will be dispatched during this function call. - This function will throw an exception if the ByteArray object does not contain enough data. - - @param bytes - @param bytesLength - - - - - - - - - - - { sampleRate : 44100, stereo : true, format : "float" } - = 21, this function throws an exception if the amount of audio data passed into this function is - more than 1800 seconds. That is, samples / sampleRate should be less than or equal to 1800. For swf versions < - 21, the runtime fails silently if the amount of audio data passed in is more than 12000 seconds. This is - provided only for backward compatibility. - - This function throws an exception if the ByteArray object does not contain enough data. - - @param bytes - @param samples - @param format - @param stereo - @param sampleRate]]> - - - - 0 - - - - - - - - - - { sndTransform : null, loops : 0, startTime : 0.0 } - Generates a new SoundChannel object to play back the sound. This method - returns a SoundChannel object, which you access to stop the sound and to - monitor volume.(To control the volume, panning, and balance, access the - SoundTransform object assigned to the sound channel.) - - @param startTime The initial position in milliseconds at which playback - should start. - @param loops Defines the number of times a sound loops back to the - `startTime` value before the sound channel - stops playback. - @param sndTransform The initial SoundTransform object assigned to the - sound channel. - @return A SoundChannel object, which you use to control the sound. This - method returns `null` if you have no sound card or if - you run out of available sound channels. The maximum number of - sound channels available at once is 32. - - - - - - - - - - - - - - - - - - - - - - - { context : null, stream : null } - Creates a new Sound object. If you pass a valid URLRequest object to the - Sound constructor, the constructor automatically calls the - `load()` function for the Sound object. If you do not pass a - valid URLRequest object to the Sound constructor, you must call the - `load()` function for the Sound object yourself, or the stream - will not load. - - Once `load()` is called on a Sound object, you can't later - load a different sound file into that Sound object. To load a different - sound file, create a new Sound object. - In Flash Player 10 and later and AIR 1.5 and later, instead of using - `load()`, you can use the `sampleData` event handler - to load sound dynamically into the Sound object. - - @param stream The URL that points to an external MP3 file. - @param context An optional SoundLoader context object, which can define - the buffer time(the minimum number of milliseconds of MP3 - data to hold in the Sound object's buffer) and can specify - whether the application should check for a cross-domain - policy file prior to loading the sound. - - The Sound class lets you work with sound in an application. The Sound class - lets you create a Sound object, load and play an external MP3 file into - that object, close the sound stream, and access data about the sound, such - as information about the number of bytes in the stream and ID3 metadata. - More detailed control of the sound is performed through the sound source - - the SoundChannel or Microphone object for the sound - and through the - properties in the SoundTransform class that control the output of the sound - to the computer's speakers. - - In Flash Player 10 and later and AIR 1.5 and later, you can also use - this class to work with sound that is generated dynamically. In this case, - the Sound object uses the function you assign to a `sampleData` - event handler to poll for sound data. The sound is played as it is - retrieved from a ByteArray object that you populate with sound data. You - can use `Sound.extract()` to extract sound data from a Sound - object, after which you can manipulate it before writing it back to the - stream for playback. - - To control sounds that are embedded in a SWF file, use the properties in - the SoundMixer class. - - **Note**: The ActionScript 3.0 Sound API differs from ActionScript - 2.0. In ActionScript 3.0, you cannot take sound objects and arrange them in - a hierarchy to control their properties. - - When you use this class, consider the following security model: - - - * Loading and playing a sound is not allowed if the calling file is in - a network sandbox and the sound file to be loaded is local. - * By default, loading and playing a sound is not allowed if the calling - file is local and tries to load and play a remote sound. A user must grant - explicit permission to allow this type of access. - * Certain operations dealing with sound are restricted. The data in a - loaded sound cannot be accessed by a file in a different domain unless you - implement a cross-domain policy file. Sound-related APIs that fall under - this restriction are `Sound.id3`, - `SoundMixer.computeSpectrum()`, - `SoundMixer.bufferTime`, and the `SoundTransform` - class. - - - However, in Adobe AIR, content in the `application` security - sandbox(content installed with the AIR application) are not restricted by - these security limitations. - - For more information related to security, see the Flash Player Developer - Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @event complete Dispatched when data has loaded successfully. - @event id3 Dispatched by a Sound object when ID3 data is available - for an MP3 sound. - @event ioError Dispatched when an input/output error occurs that causes - a load operation to fail. - @event open Dispatched when a load operation starts. - @event progress Dispatched when data is received as a load operation - progresses. - @event sampleData Dispatched when the runtime requests new audio data. - - - "tags=\"haxe,release\"" - - lime.media.AudioBuffer - lime.utils.AssetLibrary - openfl.media.SoundMixer - openfl.media.SoundChannel.new - openfl.utils._internal.AssetsMacro.embedSound() - - - - - - - "__ASSET__:sound_flixel_addons_text_TypeSound" - - - - - - - - - openfl.utils._internal.AssetsMacro.embedSound() - openfl.utils._internal.AssetsMacro.embedSound() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/sounds/type.ogg" - - - - - - - "" - * Helper string to reduce garbage generation. - - - - 0.05 - * The delay between each character, in seconds. - - - - 0.02 - * The delay between each character erasure, in seconds. - - - - false - * Set to true to show a blinking cursor at the end of the text. - - - - "|" - * The character to blink at the end of the text. - - - - 0.5 - * The speed at which the cursor should blink, if shown at all. - - - - "" - * Text to add at the beginning, without animating. - - - - false - * Whether or not to erase this message when it is complete. - - - - 1.0 - * How long to pause after finishing the text before erasing it. Only used if autoErase is true. - - - - false - * Whether or not to animate the text. Set to false by start() and erase(). - - - - * The sounds that are played when letters are added; optional. - - - - false - * Whether or not to use the default typing sound. - - - - false - * Whether typing sound effects should always be played in their entirety, or if it's ok to restart them on new letters. - * For longer typing sounds, setting this to `true` usually makes more sense. - * @since 2.4.0 - - - - [] - * An array of keys (e.g. `[FlxKey.SPACE, FlxKey.L]`) that will advance the text. - - - - * This function is called when the message is done typing. - - - - * This function is called when the message is done erasing, if that is enabled. - - <_finalText expr=""""> - - "" - * The text that will ultimately be displayed. - - <_timer expr="0.0"> - - 0.0 - * This is incremented every frame by elapsed, and when greater than delay, adds the next letter. - - <_waitTimer expr="0.0"> - - 0.0 - * A timer that is used while waiting between typing and erasing. - - <_length expr="0"> - - 0 - * Internal tracker for current string length, not counting the prefix. - - <_typing expr="false"> - - false - * Whether or not to type the text. Set to true by start() and false by pause(). - - <_erasing expr="false"> - - false - * Whether or not to erase the text. Set to true by erase() and false by pause(). - - <_waiting expr="false"> - - false - * Whether or not we're waiting between the type and erase phases. - - <_cursorTimer expr="0.0"> - - 0.0 - * Internal tracker for cursor blink time. - - <_typingVariation expr="false"> - - false - * Whether or not to add a "natural" uneven rhythm to the typing speed. - - <_typeVarPercent expr="0.5"> - - 0.5 - * How much to vary typing speed, as a percent. So, at 0.5, each letter will be "typed" up to 50% sooner or later than the delay variable is set. - - <_sound> - - * Internal reference to the default sound object. - - - - - - - - - - - { AutoErase : false, ForceRestart : false } - * Start the text animation. - * - * @param Delay Optionally, set the delay between characters. Can also be set separately. - * @param ForceRestart Whether or not to start this animation over if currently animating; false by default. - * @param AutoErase Whether or not to begin the erase animation when the typing animation is complete. - * Can also be set separately. - * @param SkipKeys An array of keys as string values (e.g. `[FlxKey.SPACE, FlxKey.L]`) that will advance the text. - * Can also be set separately. - * @param Callback An optional callback function, to be called when the typing animation is complete. - - - - - - - - - * Internal function that replace last space in a line for a line break. - * To prevent a word start typing in a line and jump to next. - - - - - - - - - - { ForceRestart : false } - * Begin an animated erase of this text. - * - * @param Delay Optionally, set the delay between characters. Can also be set separately. - * @param ForceRestart Whether or not to start this animation over if currently animating; false by default. - * @param SkipKeys An array of keys as string values (e.g. `[FlxKey.SPACE, FlxKey.L]`) that will advance the text. Can also be set separately. - * @param Callback An optional callback function, to be called when the erasing animation is complete. - * @param Params Optional parameters to pass to the callback function. - - - - - - - * Reset the text with a new text string. Automatically cancels typing, and erasing. - * - * @param Text The text that will ultimately be displayed. - - - - - - - - { On : true, Amount : 0.5 } - 0 and <1. - * @param On Whether or not to add the random variation. True by default.]]> - - - - * Internal function that is called when typing is complete. - - - - - - - - - * Immediately finishes the animation. Called if any of the skipKeys is pressed. - * Handy for custom skipping behaviour (for example with different inputs like mouse or gamepad). - - - - - - - - - - - - - { EmbeddedFont : true, Size : 8 } - * Create a FlxTypeText object, which is very similar to FlxText except that the text is initially hidden and can be - * animated one character at a time by calling start(). - * - * @param X The X position for this object. - * @param Y The Y position for this object. - * @param Width The width of this object. Text wraps automatically. - * @param Text The text that will ultimately be displayed. - * @param Size The size of the text. - * @param EmbeddedFont Whether this text field uses embedded fonts or not. - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - openfl.utils._internal.AssetsMacro.embedSound() - openfl.utils._internal.AssetsMacro.embedSound() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.text.FlxTypeText.TypeSound - flixel.addons.text.FlxTypeText - - - - - - - - - - - - - - { AutoErase : false, ForceRestart : false } - * Start the text animation. - * - * @param Delay Optionally, set the delay between characters. Can also be set separately. - * @param ForceRestart Whether or not to start this animation over if currently animating; false by default. - * @param AutoErase Whether or not to begin the erase animation when the typing animation is complete. - * Can also be set separately. - * @param SkipKeys An array of keys as string values (e.g. `[FlxKey.SPACE, FlxKey.L]`) that will advance the text. - * Can also be set separately. - * @param Callback An optional callback function, to be called when the typing animation is complete. - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - - { AutoErase : false, ForceRestart : false } - - - - - - - <_HX_SUPER__applyMarkup public="1" set="method" line="148"> - - - - - - - * Internal function that replace last space in a line for a line break. - * To prevent a word start typing in a line and jump to next. - - <_HX_SUPER__insertBreakLines set="method" line="148"> - - - - - - - - - { ForceRestart : false } - * Begin an animated erase of this text. - * - * @param Delay Optionally, set the delay between characters. Can also be set separately. - * @param ForceRestart Whether or not to start this animation over if currently animating; false by default. - * @param SkipKeys An array of keys as string values (e.g. `[FlxKey.SPACE, FlxKey.L]`) that will advance the text. Can also be set separately. - * @param Callback An optional callback function, to be called when the erasing animation is complete. - * @param Params Optional parameters to pass to the callback function. - - <_HX_SUPER__erase public="1" set="method" line="31"> - - - - - - - - { ForceRestart : false } - - - - - - - * Reset the text with a new text string. Automatically cancels typing, and erasing. - * - * @param Text The text that will ultimately be displayed. - - <_HX_SUPER__resetText public="1" set="method" line="31"> - - - - - - - - - - { On : true, Amount : 0.5 } - 0 and <1. - * @param On Whether or not to add the random variation. True by default.]]> - - <_HX_SUPER__setTypingVariation public="1" set="method" line="31"> - - - - - - { On : true, Amount : 0.5 } - - - - * Internal function that is called when typing is complete. - - <_HX_SUPER__onComplete set="method" line="31"> - - <_HX_SUPER__onErased set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Immediately finishes the animation. Called if any of the skipKeys is pressed. - * Handy for custom skipping behaviour (for example with different inputs like mouse or gamepad). - - <_HX_SUPER__skip public="1" set="method" line="31"> - - <_HX_SUPER__loadDefaultSound set="method" line="31"> - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.text.FlxTypeText.TypeSound - flixel.addons.text.FlxTypeText - - - - - - - - - * Convert a matrix generated via generateCaveMatrix() into data - * that is usable by FlxTilemap. - * - * @param Matrix A matrix of data - * @return A string that is usuable for FlxTilemap.loadMap() - - - - - - - - - - { WallRatio : 0.5, SmoothingIterations : 6 } - * Generate the matrix (2-dimensional array of Ints) for a cave. - * - * @param Columns Number of columns for the matrix - * @param Rows Number of rows for the matrix - * @param SmoothingIterations How many times do you want to "smooth" the caev - the higher the smoother, but slower - * @param WallRatio Chance for a tile to become a wall - the closer the value is to 1.0, the more walls there are - * @return Returns a matrix of a cave! - - - - - - - - - - { WallRatio : 0.5, SmoothingIterations : 6 } - * Generates a new cave matrix via generateCaveMatrix() and returns it in a format - * usable by FlxTilemap.load() via convertMatrixToString(). - * - * @param Columns Number of columns for the matrix - * @param Rows Number of rows for the matrix - * @param SmoothingIterations How many times do you want to "smooth" the caev - the higher the smoother, but slower - * @param WallRatio Chance for a tile to become a wall - the closer the value is to 1.0, the more walls there are - * @return A cave string that is usable by FlxTilemap.loadMap() - - - - - - - - * Creates a matrix (2-dimensional array of Ints) of an empty cave consisting of zeros only. - * - * @param Columns Number of columns for the matrix - * @param Rows Number of rows for the matrix - * @return Spits out a matrix that is columns * rows big, initiated with zeros - - - - - - - - - - { Distance : 1 } - * @param Matrix Matrix of data (0 = empty, 1 = wall) - * @param PosX Column we are examining - * @param PosY Row we are exampining - * @param Distance Radius of how far to check for neighbors - * @return Number of walls around the target, including itself - - - - - - - - * Use the 4-5 rule to smooth cells - - * This class uses the cellular automata algorithm - * to generate very sexy caves. - * (Coded by Eddie Lee, October 16, 2010) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.tile.FlxCaveGenerator - - - - - - - * String name of the animation (e.g. "walk") - - - - * Seconds between frames (basically the framerate) - - - - * A list of frames stored as int objects - - - - * Whether or not the animation is looped - - - - * An array of dynamic elements that let you add arbritary data to each frame - - - - * Animation frameRate - the speed in frames per second that the animation should play at. - - - - * Clean up memory. - - - - - - - - - - - - - - - { Looped : true, FrameRate : 0 } - * @param Name What this animation should be called (e.g. "run") - * @param Frames An array of numbers indicating what frames to play in what order (e.g. 1, 2, 3) - * @param FrameRate The speed in frames per second that the animation should play at (e.g. 40) - * @param Looped Whether or not the animation is looped or just plays once - * @param FramesData An array of dynamic elements that let you add arbritary data to each frame - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_frameRate set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.tile.FlxTileAnimation - - - - - - - 0 - - - - 1 - - - - 2 - - - - false - - - - false - - - - - - 0 - - - <_tmp_flipH> - <_tmp_flipV> - <_tmp_rot> - <_matrix> - - <_currIndex expr="0"> - - 0 - - <_lastIndex expr="-1"> - - -1 - - <_currAnimParam> - <_frameTimer expr="0.0"> - - 0.0 - - - - true - - - - - - - - - - - - - - - - - - - - - - { frameRate : 30 } - * Add an animation to this special tile - * @param tiles An array with the tilesetID of each frame - * @param frameRate The speed of the animation in frames per second (Default: 30) - - - - - - - * Creates tile animation and copies data from specified sprite animation (name, frame ids, framerate and looping); - * @param anim Animation to copy data from - - - - * Calculates and return the matrix - * @param width the tile width - * @param height the tile height - * @return The matrix calculated - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__paint public="1" set="method" line="31"> - - - - - - - - - - - - { frameRate : 30 } - * Add an animation to this special tile - * @param tiles An array with the tilesetID of each frame - * @param frameRate The speed of the animation in frames per second (Default: 30) - - <_HX_SUPER__addAnimation public="1" set="method" line="31"> - - - - - - - { frameRate : 30 } - - - - - - - * Creates tile animation and copies data from specified sprite animation (name, frame ids, framerate and looping); - * @param anim Animation to copy data from - - <_HX_SUPER__fromSpriteAnimation public="1" set="method" line="31"> - - - - - - * Calculates and return the matrix - * @param width the tile width - * @param height the tile height - * @return The matrix calculated - - <_HX_SUPER__getMatrix public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_frames set="method" line="148"> - - - - - - - - <_HX_SUPER__set_currTileId set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.tile.FlxTileSpecial - flixel.addons.tile.FlxTileSpecial.AnimParams - - - - - - - - - - Calculates the distance between two `Vector2` points - @param pt1 A `Vector2` instance - @param pt2 A second `Vector2` instance - @return The distance between each `Vector2` - - - - - - - - - - { result : null } - Interpolates between two points, given a specified percentage value - @param pt1 A `Vector2` instance - @param pt2 A second `Vector2` instance - @param f A percentage value to interpolate - @param result (Optional) A `Vector2` instance to use for the result - @return A `Vector2` instance holding the interpolated value - - - - - - - - - { result : null } - Converts a polar coordinate to into a cartesian `Vector2` instance - @param len The length of the polar value - @param angle The angle of the polar value - @param result (Optional) A `Vector2` instance to store the result - @return A `Vector2` instance in cartesian coordinates - - - - Gets the length of this vector from (0, 0) to (x, y) - - - - Gets the square of the length of this vector, which - avoids use of `Math.sqrt` for faster performance - - - - The x coodinate for this vector - - - - The y coodinate for this vector - - - - - - - - { result : null } - Adds the current vector to a second `Vector2` instance - and returns the result - @param v A `Vector2` instance to add - @param result (Optional) A `Vector2` instance to store the result - @return A `Vector2` instance that combines both vector values - - - - Clones the current `Vector2` - @return A new `Vector2` instance with the same values as the current one - - - - - - - Whether this `Vector2` has the same values as another instance - @param toCompare A `Vector2` instance to compare against - @return Whether the values of each vector are equal - - - - - - - Normalizes this vector between the current length and a set scale value - @param thickness The scaling value. . For example, if the current vector is `(0, 5)` and you normalize it to 1, the normalized value will be `(0, 1)` - - - - - - - - Offsets the current value of this vector - @param dx An offset x value - @param dy An offset y value - - - - - - - - Sets this `Vector2` to new values - @param xa An `x` value - @param ya A `y` value - - - - - - - - { result : null } - Subtracts the current vector from another `Vector2` instance - @param v A `Vector2` instance to subtract from the current vector - @param result (Optional) A `Vector2` instance to store the result - @return A `Vector2` instance containing the subtracted values - - <__toFlashPoint set="method" line="181"> - - - - - - - - - - - - - - - - - - { y : 0, x : 0 } - Creates a new `Vector` instance - @param x (Optional) An initial `x` value (default is 0) - @param y (Optional) An initial `y` value (default is 0) - - The `Vector2` class can be used for calculating math with - basic (x, y) coordinates - - - "tags=\"haxe,release\"" - - - - - - - - - 14 - - - - <__supportsBGRA expr="null" line="127" static="1"> - - - null - - - - <__textureFormat static="1"> - - - - <__textureInternalFormat static="1"> - - - - <__tempVector expr="new Vector2()" line="131" static="1"> - - - new Vector2() - - - - - - - - - - Creates a new BitmapData instance from Base64-encoded data synchronously. This means - that the BitmapData will be returned immediately (if supported). - - HTML5 and Flash do not support creating BitmapData synchronously, so these targets - always return `null`. Other targets will return `null` if decoding was unsuccessful. - - @param base64 Base64-encoded data - @param type The MIME-type for the encoded data ("image/jpeg", etc) - @returns A new BitmapData if successful, or `null` if unsuccessful - - - - - - - - { rawAlpha : null } - Creates a new BitmapData from bytes (a haxe.io.Bytes or openfl.utils.ByteArray) - synchronously. This means that the BitmapData will be returned immediately (if - supported). - - HTML5 and Flash do not support creating BitmapData synchronously, so these targets - always return `null`. Other targets will return `null` if decoding was unsuccessful. - - The optional `rawAlpha` parameter makes it easier to process images that have alpha - data stored separately. - - @param bytes A haxe.io.Bytes or openfl.utils.ByteArray instance - @param rawAlpha An optional byte array with alpha data - @returns A new BitmapData if successful, or `null` if unsuccessful - - - - - - - Creates a new BitmapData from a file path synchronously. This means that the - BitmapData will be returned immediately (if supported). - - HTML5 and Flash do not support creating BitmapData synchronously, so these targets - always return `null`. - - In order to load files from a remote web address, use the `loadFromFile` method, - which supports asynchronous loading. - - @param path A local file path containing an image - @returns A new BitmapData if successful, or `null` if unsuccessful - - - - - - - - { transparent : true } - Creates a new BitmapData using an existing Lime Image instance. - - @param image A Lime Image object - @param transparent Whether the new BitmapData object should be considered - transparent - @returns A new BitmapData if the Image (and associated ImageBuffer) are not - `null`, otherwise `null` will be returned - - - - - - - **BETA** - - Creates a new BitmapData instance from a Stage3D rectangle texture. - - This method is not supported by the Flash target. - - @param texture A Texture or RectangleTexture instance - @returns A new BitmapData if successful, or `null` if unsuccessful - - - - - - - - Creates a new BitmapData from Base64-encoded data asynchronously. The data - and (if successful) decoding the data into an image occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param base64 Base64-encoded data - @param type The MIME-type for the encoded data ("image/jpeg", etc) - @returns A Future BitmapData - - - - - - - - { rawAlpha : null } - Creates a new BitmapData from haxe.io.Bytes or openfl.utils.ByteArray data - asynchronously. The data and image decoding will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - The optional `rawAlpha` parameter makes it easier to process images that have alpha - data stored separately. - - @param bytes A haxe.io.Bytes or openfl.utils.ByteArray instance - @param rawAlpha An optional byte array with alpha data - @returns A Future BitmapData - - - - - - - Creates a new BitmapData from a file path or web address asynchronously. The file - load and image decoding will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A local file path or web address containing an image - @returns A Future BitmapData - - - - The height of the bitmap image in pixels. - - - - "checkstyle:Dynamic" - The Lime image that holds the pixels for the current image. - - In Flash Player, this property is always `null`. - - - - - Defines whether the bitmap image is readable. Hardware-only bitmap images - do not support `getPixels`, `setPixels` and other - BitmapData methods, though they can still be used inside a Bitmap object - or other display objects that do not need to modify the pixels. - - As an exception to the rule, `bitmapData.draw` is supported for - non-readable bitmap images. - - Since non-readable bitmap images do not have a software image buffer, they - will need to be recreated if the current hardware rendering context is lost. - - - - The rectangle that defines the size and location of the bitmap image. The - top and left of the rectangle are 0; the width and height are equal to the - width and height in pixels of the BitmapData object. - - - - Defines whether the bitmap image supports per-pixel transparency. You can - set this value only when you construct a BitmapData object by passing in - `true` for the `transparent` parameter of the - constructor. Then, after you create a BitmapData object, you can check - whether it supports per-pixel transparency by determining if the value of - the `transparent` property is `true`. - - - - The width of the bitmap image in pixels. - - <__blendMode> - - - - <__drawableType> - - - - <__framebuffer> - - - - <__framebufferContext> - - - "checkstyle:Dynamic" - - - - <__indexBuffer> - - - - <__indexBufferContext> - - - "checkstyle:Dynamic" - - - - <__indexBufferData> - - - - <__indexBufferGrid> - - - - <__isMask> - - - - <__isValid> - - - - <__mask> - - - - <__renderable> - - - - <__renderTransform> - - - - <__scrollRect> - - - - <__stencilBuffer> - - - - <__surface> - - - "checkstyle:Dynamic" - - - - <__texture> - - - - <__textureContext> - - - "checkstyle:Dynamic" - - - - <__textureHeight> - - - - <__textureVersion> - - - - <__textureWidth> - - - - <__transform> - - - - <__uvRect> - - - - <__vertexBuffer> - - - - <__vertexBufferContext> - - - "checkstyle:Dynamic" - - - - <__vertexBufferData> - - - - <__vertexBufferGrid> - - - - <__vertexBufferHeight> - - - - <__vertexBufferScaleX> - - - - <__vertexBufferScaleY> - - - - <__vertexBufferWidth> - - - - <__worldAlpha> - - - - <__worldColorTransform> - - - - <__worldTransform> - - - - - - - - - - - - Takes a source image and a filter object and generates the filtered image. - - This method relies on the behavior of built-in filter objects, which determine the - destination rectangle that is affected by an input source rectangle. - - After a filter is applied, the resulting image can be larger than the input image. - For example, if you use a BlurFilter class to blur a source rectangle of(50,50,100,100) - and a destination point of(10,10), the area that changes in the destination image is - larger than(10,10,60,60) because of the blurring. This happens internally during the - applyFilter() call. - - If the `sourceRect` parameter of the sourceBitmapData parameter is an - interior region, such as(50,50,100,100) in a 200 x 200 image, the filter uses the source - pixels outside the `sourceRect` parameter to generate the destination rectangle. - - If the BitmapData object and the object specified as the `sourceBitmapData` - parameter are the same object, the application uses a temporary copy of the object to - perform the filter. For best performance, avoid this situation. - - @param sourceBitmapData The input bitmap image to use. The source image can be a different BitmapData object or it can refer to the current BitmapData instance. - @param sourceRect A rectangle that defines the area of the source image to use as input. - @param destPoint The point within the destination image(the current BitmapData instance) that corresponds to the upper-left corner of the source rectangle. - @param filter The filter object that you use to perform the filtering operation. - - - - Returns a new BitmapData object that is a clone of the original instance with an exact copy of the contained bitmap. - @return A new BitmapData object that is identical to the original. - - - - - - - - Adjusts the color values in a specified area of a bitmap image by using a `ColorTransform` - object. If the rectangle matches the boundaries of the bitmap image, this method transforms the color - values of the entire image. - @param rect A Rectangle object that defines the area of the image in which the ColorTransform object is applied. - @param colorTransform A ColorTransform object that describes the color transformation values to apply. - - - - - - - "checkstyle:Dynamic" - Compares two BitmapData objects. If the two BitmapData objects have the same dimensions (width and height), the method returns a new BitmapData object, in which each pixel is the "difference" between the pixels in the two source objects: - - - If two pixels are equal, the difference pixel is 0x00000000. - - If two pixels have different RGB values (ignoring the alpha value), the difference pixel is 0xFFRRGGBB where RR/GG/BB are the individual difference values between red, green, and blue channels. Alpha channel differences are ignored in this case. - - If only the alpha channel value is different, the pixel value is 0xZZFFFFFF, where ZZ is the difference in the alpha value. - - @param otherBitmapData The BitmapData object to compare with the source BitmapData object. - @return If the two BitmapData objects have the same dimensions (width and height), the method returns a new BitmapData object that has the difference between the two objects (see the main discussion).If the BitmapData objects are equivalent, the method returns the number 0. If no argument is passed or if the argument is not a BitmapData object, the method returns -1. If either BitmapData object has been disposed of, the method returns -2. If the widths of the BitmapData objects are not equal, the method returns the number -3. If the heights of the BitmapData objects are not equal, the method returns the number -4. - - - - - - - - - - - Transfers data from one channel of another BitmapData object or the - current BitmapData object into a channel of the current BitmapData object. - All of the data in the other channels in the destination BitmapData object - are preserved. - - The source channel value and destination channel value can be one of - following values: - - * `BitmapDataChannel.RED` - * `BitmapDataChannel.GREEN` - * `BitmapDataChannel.BLUE` - * `BitmapDataChannel.ALPHA` - - - @param sourceBitmapData The input bitmap image to use. The source image - can be a different BitmapData object or it can - refer to the current BitmapData object. - @param sourceRect The source Rectangle object. To copy only channel - data from a smaller area within the bitmap, - specify a source rectangle that is smaller than - the overall size of the BitmapData object. - @param destPoint The destination Point object that represents the - upper-left corner of the rectangular area where - the new channel data is placed. To copy only - channel data from one area to a different area in - the destination image, specify a point other than - (0,0). - @param sourceChannel The source channel. Use a value from the - BitmapDataChannel class - (`BitmapDataChannel.RED`, - `BitmapDataChannel.BLUE`, - `BitmapDataChannel.GREEN`, - `BitmapDataChannel.ALPHA`). - @param destChannel The destination channel. Use a value from the - BitmapDataChannel class - (`BitmapDataChannel.RED`, - `BitmapDataChannel.BLUE`, - `BitmapDataChannel.GREEN`, - `BitmapDataChannel.ALPHA`). - @throws TypeError The sourceBitmapData, sourceRect or destPoint are null. - - - - - - - - - - - - { mergeAlpha : false, alphaPoint : null, alphaBitmapData : null } - Provides a fast routine to perform pixel manipulation between images with - no stretching, rotation, or color effects. This method copies a - rectangular area of a source image to a rectangular area of the same size - at the destination point of the destination BitmapData object. - - If you include the `alphaBitmap` and `alphaPoint` - parameters, you can use a secondary image as an alpha source for the - source image. If the source image has alpha data, both sets of alpha data - are used to composite pixels from the source image to the destination - image. The `alphaPoint` parameter is the point in the alpha - image that corresponds to the upper-left corner of the source rectangle. - Any pixels outside the intersection of the source image and alpha image - are not copied to the destination image. - - The `mergeAlpha` property controls whether or not the alpha - channel is used when a transparent image is copied onto another - transparent image. To copy pixels with the alpha channel data, set the - `mergeAlpha` property to `true`. By default, the - `mergeAlpha` property is `false`. - - @param sourceBitmapData The input bitmap image from which to copy pixels. - The source image can be a different BitmapData - instance, or it can refer to the current - BitmapData instance. - @param sourceRect A rectangle that defines the area of the source - image to use as input. - @param destPoint The destination point that represents the - upper-left corner of the rectangular area where - the new pixels are placed. - @param alphaBitmapData A secondary, alpha BitmapData object source. - @param alphaPoint The point in the alpha BitmapData object source - that corresponds to the upper-left corner of the - `sourceRect` parameter. - @param mergeAlpha To use the alpha channel, set the value to - `true`. To copy pixels with no alpha - channel, set the value to `false`. - @throws TypeError The sourceBitmapData, sourceRect, destPoint are null. - - - - Frees memory that is used to store the BitmapData object. - - When the `dispose()` method is called on an image, the width - and height of the image are set to 0. All subsequent calls to methods or - properties of this BitmapData instance fail, and an exception is thrown. - - - `BitmapData.dispose()` releases the memory occupied by the - actual bitmap data, immediately(a bitmap can consume up to 64 MB of - memory). After using `BitmapData.dispose()`, the BitmapData - object is no longer usable and an exception may be thrown if - you call functions on the BitmapData object. However, - `BitmapData.dispose()` does not garbage collect the BitmapData - object(approximately 128 bytes); the memory occupied by the actual - BitmapData object is released at the time the BitmapData object is - collected by the garbage collector. - - - - - Frees the backing Lime image buffer, if possible. - - When using a software renderer, such as Flash Player or desktop targets - without OpenGL, the software buffer will be retained so that the BitmapData - will work properly. When using a hardware renderer, the Lime image - buffer will be available to garbage collection after a hardware texture - has been created internally. - - `BitmapData.disposeImage()` will immediately change the value of - the `readable` property to `false`. - - - - - - - - - - - - { smoothing : false, clipRect : null, blendMode : null, colorTransform : null, matrix : null } - Draws the `source` display object onto the bitmap image, using - the OpenFL software renderer. You can specify `matrix`, - `colorTransform`, `blendMode`, and a destination - `clipRect` parameter to control how the rendering performs. - Optionally, you can specify whether the bitmap should be smoothed when - scaled(this works only if the source object is a BitmapData object). - - The source display object does not use any of its applied - transformations for this call. It is treated as it exists in the library - or file, with no matrix transform, no color transform, and no blend mode. - To draw a display object(such as a movie clip) by using its own transform - properties, you can copy its `transform` property object to the - `transform` property of the Bitmap object that uses the - BitmapData object. - - @param source The display object or BitmapData object to draw to - the BitmapData object.(The DisplayObject and - BitmapData classes implement the IBitmapDrawable - interface.) - @param matrix A Matrix object used to scale, rotate, or translate - the coordinates of the bitmap. If you do not want to - apply a matrix transformation to the image, set this - parameter to an identity matrix, created with the - default `new Matrix()` constructor, or - pass a `null` value. - @param colorTransform A ColorTransform object that you use to adjust the - color values of the bitmap. If no object is - supplied, the bitmap image's colors are not - transformed. If you must pass this parameter but you - do not want to transform the image, set this - parameter to a ColorTransform object created with - the default `new ColorTransform()` - constructor. - @param blendMode A string value, from the openfl.display.BlendMode - class, specifying the blend mode to be applied to - the resulting bitmap. - @param clipRect A Rectangle object that defines the area of the - source object to draw. If you do not supply this - value, no clipping occurs and the entire source - object is drawn. - @param smoothing A Boolean value that determines whether a BitmapData - object is smoothed when scaled or rotated, due to a - scaling or rotation in the `matrix` - parameter. The `smoothing` parameter only - applies if the `source` parameter is a - BitmapData object. With `smoothing` set - to `false`, the rotated or scaled - BitmapData image can appear pixelated or jagged. For - example, the following two images use the same - BitmapData object for the `source` - parameter, but the `smoothing` parameter - is set to `true` on the left and - `false` on the right: - - ![Two images: the left one with smoothing and the right one without smoothing.](/images/bitmapData_draw_smoothing.jpg) - - Drawing a bitmap with `smoothing` set - to `true` takes longer than doing so with - `smoothing` set to - `false`. - @throws ArgumentError The `source` parameter is not a - BitmapData or DisplayObject object. - @throws ArgumentError The source is null or not a valid IBitmapDrawable - object. - @throws SecurityError The `source` object and(in the case of a - Sprite or MovieClip object) all of its child objects - do not come from the same domain as the caller, or - are not in a content that is accessible to the - caller by having called the - `Security.allowDomain()` method. This - restriction does not apply to AIR content in the - application security sandbox. - - - - - - - - - - - - - { quality : null, smoothing : false, clipRect : null, blendMode : null, colorTransform : null, matrix : null } - Draws the `source` display object onto the bitmap image, using the Flash runtime - vector renderer. You can specify `matrix`, `colorTransform`, `blendMode`, and a - destination `clipRect` parameter to control how the rendering performs. - Optionally, you can specify whether the bitmap should be smoothed when scaled - (this works only if the source object is a BitmapData object). - - **Note:** The `drawWithQuality()` method works exactly like the `draw()` method, - but instead of using the `Stage.quality` property to determine the quality of - vector rendering, you specify the `quality` parameter to the `drawWithQuality()` - method. - - This method directly corresponds to how objects are drawn with the standard - vector renderer for objects in the authoring tool interface. - - The source display object does not use any of its applied transformations for - this call. It is treated as it exists in the library or file, with no matrix - transform, no color transform, and no blend mode. To draw a display object - (such as a movie clip) by using its own transform properties, you can copy its - `transform` property object to the `transform` property of the Bitmap object that - uses the BitmapData object. - - This method is supported over RTMP in Flash Player 9.0.115.0 and later and in - Adobe AIR. You can control access to streams on Flash Media Server in a - server-side script. For more information, see the `Client.audioSampleAccess` and - `Client.videoSampleAccess` properties in Server-Side ActionScript Language - Reference for Adobe Flash Media Server. - - If the source object and (in the case of a Sprite or MovieClip object) all of - its child objects do not come from the same domain as the caller, or are not in - a content that is accessible to the caller by having called the - `Security.allowDomain()` method, a call to the `drawWithQuality()` throws a - SecurityError exception. This restriction does not apply to AIR content in the - application security sandbox. - - There are also restrictions on using a loaded bitmap image as the source. A call - to the `drawWithQuality()` method is successful if the loaded image comes from the - same domain as the caller. Also, a cross-domain policy file on the image's server - can grant permission to the domain of the SWF content calling the - `drawWithQuality()` method. In this case, you must set the `checkPolicyFile` property - of a LoaderContext object, and use this object as the `context` parameter when - calling the `load()` method of the Loader object used to load the image. These - restrictions do not apply to AIR content in the application security sandbox. - - On Windows, the `drawWithQuality()` method cannot capture SWF content embedded in an - HTML page in an HTMLLoader object in Adobe AIR. - - The `drawWithQuality()` method cannot capture PDF content in Adobe AIR. Nor can it - capture or SWF content embedded in HTML in which the `wmode` attribute is set to - `"window"` in Adobe AIR. - - @param source The display object or BitmapData object to draw to the BitmapData - object. (The DisplayObject and BitmapData classes implement the IBitmapDrawable - interface.) - @param matrix A Matrix object used to scale, rotate, or translate the coordinates - of the bitmap. If you do not want to apply a matrix transformation to the image, - set this parameter to an identity matrix, created with the default `new Matrix()` - constructor, or pass a `null` value. - @param colorTransform A ColorTransform object that you use to adjust the color - values of the bitmap. If no object is supplied, the bitmap image's colors are not - transformed. If you must pass this parameter but you do not want to transform the - image, set this parameter to a ColorTransform object created with the default - `new ColorTransform()` constructor. - @param blendMode A string value, from the flash.display.BlendMode class, - specifying the blend mode to be applied to the resulting bitmap. - @param clipRect A Rectangle object that defines the area of the source object - to draw. If you do not supply this value, no clipping occurs and the entire source - object is drawn. - @param smoothing A Boolean value that determines whether a BitmapData object is - smoothed when scaled or rotated, due to a scaling or rotation in the `matrix` - parameter. The smoothing parameter only applies if the `source` parameter is a - BitmapData object. With `smoothing` set to `false`, the rotated or scaled BitmapData - image can appear pixelated or jagged. For example, the following two images use the - same BitmapData object for the `source` parameter, but the `smoothing` parameter is - set to `true` on the left and `false` on the right: - ![Two images: the left one with smoothing and the right one without smoothing.](/images/bitmapData_draw_smoothing.jpg) - Drawing a bitmap with `smoothing` set to `true` takes longer than doing so with - `smoothing` set to `false`. - @param quality Any of one of the StageQuality values. Selects the antialiasing - quality to be used when drawing vectors graphics. - @throws ArgumentError The source parameter is not a BitmapData or DisplayObject - object. - @throws SecurityError The source object and (in the case of a Sprite or MovieClip - object) all of its child objects do not come from the same domain as the caller, - or are not in a content that is accessible to the caller by having called the - `Security.allowDomain()` method. This restriction does not apply to AIR content - in the application security sandbox. - @throws ArgumentError The source is `null` or not a valid IBitmapDrawable object. - - - - - - - - - { byteArray : null } - Compresses this BitmapData object using the selected compressor algorithm and - returns a new ByteArray object. Optionally, writes the resulting data to the - specified ByteArray. The `compressor` argument specifies the encoding algorithm, - and can be PNGEncoderOptions, JPEGEncoderOptions, or JPEGXREncoderOptions. - - The following example compresses a BitmapData object using the JPEGEncoderOptions: - - ```haxe - // Compress a BitmapData object as a JPEG file. - var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00); - var byteArray:ByteArray = new ByteArray(); - bitmapData.encode(new Rectangle(0,0,640,480), new openfl.display.JPEGEncoderOptions(), byteArray); - ``` - - @param rect The area of the BitmapData object to compress. - @param compressor The compressor type to use. Valid values are: - flash.display.PNGEncoderOptions, flash.display.JPEGEncoderOptions, and - flash.display.JPEGXREncoderOptions. - @param byteArray The output ByteArray to hold the encoded image. - @return A ByteArray containing the encoded image. - - - - - - - - Fills a rectangular area of pixels with a specified ARGB color. - - @param rect The rectangular area to fill. - @param color The ARGB color value that fills the area. ARGB colors are - often specified in hexadecimal format; for example, - 0xFF336699. - @throws TypeError The rect is null. - - - - - - - - - Performs a flood fill operation on an image starting at an(_x_, - _y_) coordinate and filling with a certain color. The - `floodFill()` method is similar to the paint bucket tool in - various paint programs. The color is an ARGB color that contains alpha - information and color information. - - @param x The _x_ coordinate of the image. - @param y The _y_ coordinate of the image. - @param color The ARGB color to use as a fill. - - - - - - - - Determines the destination rectangle that the `applyFilter()` - method call affects, given a BitmapData object, a source rectangle, and a - filter object. - - For example, a blur filter normally affects an area larger than the - size of the original image. A 100 x 200 pixel image that is being filtered - by a default BlurFilter instance, where `blurX = blurY = 4` - generates a destination rectangle of `(-2,-2,104,204)`. The - `generateFilterRect()` method lets you find out the size of - this destination rectangle in advance so that you can size the destination - image appropriately before you perform a filter operation. - - Some filters clip their destination rectangle based on the source image - size. For example, an inner `DropShadow` does not generate a - larger result than its source image. In this API, the BitmapData object is - used as the source bounds and not the source `rect` - parameter. - - @param sourceRect A rectangle defining the area of the source image to use - as input. - @param filter A filter object that you use to calculate the - destination rectangle. - @return A destination rectangle computed by using an image, the - `sourceRect` parameter, and a filter. - @throws TypeError The sourceRect or filter are null. - - - - - - - - - { scale9Grid : null } - hide - - **BETA** - - Get the IndexBuffer3D object associated with this BitmapData object - - @param context A Stage3D context - @returns An IndexBuffer3D object for use with rendering - - - - - - - - - - { targetObject : null, scale9Grid : null } - hide - - **BETA** - - Get the VertexBuffer3D object associated with this BitmapData object - - @param context A Stage3D context - @returns A VertexBuffer3D object for use with rendering - - - - - - - - - { findColor : true } - - - - - - - - - Returns an integer that represents an RGB pixel value from a BitmapData - object at a specific point(_x_, _y_). The - `getPixel()` method returns an unmultiplied pixel value. No - alpha information is returned. - - All pixels in a BitmapData object are stored as premultiplied color - values. A premultiplied image pixel has the red, green, and blue color - channel values already multiplied by the alpha data. For example, if the - alpha value is 0, the values for the RGB channels are also 0, independent - of their unmultiplied values. This loss of data can cause some problems - when you perform operations. All BitmapData methods take and return - unmultiplied values. The internal pixel representation is converted from - premultiplied to unmultiplied before it is returned as a value. During a - set operation, the pixel value is premultiplied before the raw image pixel - is set. - - @param x The _x_ position of the pixel. - @param y The _y_ position of the pixel. - @return A number that represents an RGB pixel value. If the(_x_, - _y_) coordinates are outside the bounds of the image, the - method returns 0. - - - - - - - - Returns an ARGB color value that contains alpha channel data and RGB data. - This method is similar to the `getPixel()` method, which - returns an RGB color without alpha channel data. - - All pixels in a BitmapData object are stored as premultiplied color - values. A premultiplied image pixel has the red, green, and blue color - channel values already multiplied by the alpha data. For example, if the - alpha value is 0, the values for the RGB channels are also 0, independent - of their unmultiplied values. This loss of data can cause some problems - when you perform operations. All BitmapData methods take and return - unmultiplied values. The internal pixel representation is converted from - premultiplied to unmultiplied before it is returned as a value. During a - set operation, the pixel value is premultiplied before the raw image pixel - is set. - - @param x The _x_ position of the pixel. - @param y The _y_ position of the pixel. - @return A number representing an ARGB pixel value. If the(_x_, - _y_) coordinates are outside the bounds of the image, 0 is - returned. - - - - - - - Generates a byte array from a rectangular region of pixel data. Writes an - unsigned integer(a 32-bit unmultiplied pixel value) for each pixel into - the byte array. - - @param rect A rectangular area in the current BitmapData object. - @return A ByteArray representing the pixels in the given Rectangle. - @throws TypeError The rect is null. - - - - - "checkstyle:Dynamic" - hide - - **BETA** - - Get the CairoImageSurface associated with this BitmapData object for use with - Cairo software rendering - - @returns The associated CairoImageSurface - - - - - - - hide - **BETA** - - Get a hardware texture representing this BitmapData instance - - @param context A Context3D instance - @returns A Texture or RectangleTexture instance - - - - - - - Generates a vector array from a rectangular region of pixel data. Returns - a Vector object of unsigned integers(a 32-bit unmultiplied pixel value) - for the specified rectangle. - @param rect A rectangular area in the current BitmapData object. - @return A Vector representing the given Rectangle. - @throws TypeError The rect is null. - - - - - - - { hRect : null } - instances (four Vector - objects that contain Float objects). The four Vector instances represent the - red, green, blue and alpha components in order. Each Vector instance contains - 256 values that represent the population count of an individual component value, - from 0 to 255. - @param hRect The area of the BitmapData object to use.]]> - - - - - - - - - - - { secondAlphaThreshold : 1, secondBitmapDataPoint : null } - Performs pixel-level hit detection between one bitmap image and a point, - rectangle, or other bitmap image. A hit is defined as an overlap of a point or - rectangle over an opaque pixel, or two overlapping opaque pixels. No stretching, - rotation, or other transformation of either object is considered when the hit test - is performed. - - If an image is an opaque image, it is considered a fully opaque rectangle for this - method. Both images must be transparent images to perform pixel-level hit testing - that considers transparency. When you are testing two transparent images, the alpha - threshold parameters control what alpha channel values, from 0 to 255, are - considered opaque. - - @param firstPoint A position of the upper-left corner of the BitmapData image - in an arbitrary coordinate space. The same coordinate space is used in defining - the secondBitmapPoint parameter. - @param firstAlphaThreshold The smallest alpha channel value that is considered - opaque for this hit test. - @param secondObject A Rectangle, Point, Bitmap, or BitmapData object. - @param secondBitmapDataPoint A point that defines a pixel location in the - second BitmapData object. Use this parameter only when the value of `secondObject` - is a BitmapData object. - @param secondAlphaThreshold The smallest alpha channel value that is - considered opaque in the second BitmapData object. Use this parameter only when - the value of `secondObject` is a BitmapData object and both BitmapData objects - are transparent. - @return A value of `true` if a hit occurs; otherwise, `false`. - @throws ArgumentError The `secondObject` parameter is not a Point, Rectangle, - Bitmap, or BitmapData object. - @throws TypeError The `firstPoint` is `null`. - - - - Locks an image so that any objects that reference the BitmapData object, - such as Bitmap objects, are not updated when this BitmapData object - changes. To improve performance, use this method along with the - `unlock()` method before and after numerous calls to the - `setPixel()` or `setPixel32()` method. - - - - - - - - - - - - - Performs per-channel blending from a source image to a destination image. For - each channel and each pixel, a new value is computed based on the channel - values of the source and destination pixels. For example, in the red channel, - the new value is computed as follows (where `redSrc` is the red channel value - for a pixel in the source image and `redDest` is the red channel value at the - corresponding pixel of the destination image): - - ```haxe - redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256; - ``` - - The `redMultiplier`, `greenMultiplier`, `blueMultiplier`, and `alphaMultiplier` - values are the multipliers used for each color channel. Use a hexadecimal - value ranging from 0 to 0x100 (256) where 0 specifies the full value from the - destination is used in the result, 0x100 specifies the full value from the - source is used, and numbers in between specify a blend is used (such as 0x80 - for 50%). - - @param sourceBitmapData The input bitmap image to use. The source image can - be a different BitmapData object, or it can refer to the current BitmapData - object. - @param sourceRect A rectangle that defines the area of the source image to use - as input. - @param destPoint The point within the destination image (the current - BitmapData instance) that corresponds to the upper-left corner of the source - rectangle. - @param redMultiplier A hexadecimal uint value by which to multiply the red - channel value. - @param greenMultiplier A hexadecimal uint value by which to multiply the green - channel value. - @param blueMultiplier A hexadecimal uint value by which to multiply the blue - channel value. - @param alphaMultiplier A hexadecimal uint value by which to multiply the alpha - transparency value. - @throws TypeError The `sourceBitmapData`, `sourceRect` or `destPoint` are `null`. - - - - - - - - - - - { grayScale : false, channelOptions : 7, high : 255, low : 0 } - Fills an image with pixels representing random noise. - - @param randomSeed The random seed number to use. If you keep all other - parameters the same, you can generate different - pseudo-random results by varying the random seed - value. The noise function is a mapping function, not - a true random-number generation function, so it - creates the same results each time from the same - random seed. - @param low The lowest value to generate for each channel(0 to - 255). - @param high The highest value to generate for each channel(0 to - 255). - @param channelOptions A number that can be a combination of any of the - four color channel values - (`BitmapDataChannel.RED`, - `BitmapDataChannel.BLUE`, - `BitmapDataChannel.GREEN`, and - `BitmapDataChannel.ALPHA`). You can use - the logical OR operator(`|`) to combine - channel values. - @param grayScale A Boolean value. If the value is `true`, - a grayscale image is created by setting all of the - color channels to the same value. The alpha channel - selection is not affected by setting this parameter - to `true`. - - - - - - - - - - - - - { alphaArray : null, blueArray : null, greenArray : null, redArray : null } - Remaps the color channel values in an image that has up to four arrays of - color palette data, one for each channel. - - Flash runtimes use the following steps to generate the resulting image: - - 1. After the red, green, blue, and alpha values are computed, they are added - together using standard 32-bit-integer arithmetic. - 2. The red, green, blue, and alpha channel values of each pixel are extracted - into separate 0 to 255 values. These values are used to look up new color - values in the appropriate array: `redArray`, `greenArray`, `blueArray`, and - `alphaArray`. Each of these four arrays should contain 256 values. - 3. After all four of the new channel values are retrieved, they are combined - into a standard ARGB value that is applied to the pixel. - - Cross-channel effects can be supported with this method. Each input array can - contain full 32-bit values, and no shifting occurs when the values are added - together. This routine does not support per-channel clamping. - - If no array is specified for a channel, the color channel is copied from the - source image to the destination image. - - You can use this method for a variety of effects such as general palette mapping - (taking one channel and converting it to a false color image). You can also use - this method for a variety of advanced color manipulation algorithms, such as - gamma, curves, levels, and quantizing. - - @param sourceBitmapData The input bitmap image to use. The source image can - be a different BitmapData object, or it can refer to the current BitmapData - instance. - @param sourceRect A rectangle that defines the area of the source image to use - as input. - @param destPoint The point within the destination image (the current BitmapData - object) that corresponds to the upper-left corner of the source rectangle. - @param redArray If `redArray` is not `null`, `red = redArray[source red value] else red = source rect value`. - @param greenArray If `greenArray` is not `null`, `green = greenArray[source green value] else green = source green value`. - @param blueArray If `blueArray` is not `null, `blue = blueArray[source blue value] else blue = source blue value`. - @param alphaArray If `alphaArray` is not `null, `alpha = alphaArray[source alpha value] else alpha = source alpha value`. - @throws TypeError The `sourceBitmapData`, `sourceRect` or `destPoint` are `null`. - - - - - - - - - - - - - - - { offsets : null, grayScale : false, channelOptions : 7 } - Generates a Perlin noise image. - - The Perlin noise generation algorithm interpolates and combines - individual random noise functions(called octaves) into a single function - that generates more natural-seeming random noise. Like musical octaves, - each octave function is twice the frequency of the one before it. Perlin - noise has been described as a "fractal sum of noise" because it combines - multiple sets of noise data with different levels of detail. - - You can use Perlin noise functions to simulate natural phenomena and - landscapes, such as wood grain, clouds, and mountain ranges. In most - cases, the output of a Perlin noise function is not displayed directly but - is used to enhance other images and give them pseudo-random - variations. - - Simple digital random noise functions often produce images with harsh, - contrasting points. This kind of harsh contrast is not often found in - nature. The Perlin noise algorithm blends multiple noise functions that - operate at different levels of detail. This algorithm results in smaller - variations among neighboring pixel values. - - @param baseX Frequency to use in the _x_ direction. For - example, to generate a noise that is sized for a 64 - x 128 image, pass 64 for the `baseX` - value. - @param baseY Frequency to use in the _y_ direction. For - example, to generate a noise that is sized for a 64 - x 128 image, pass 128 for the `baseY` - value. - @param numOctaves Number of octaves or individual noise functions to - combine to create this noise. Larger numbers of - octaves create images with greater detail. Larger - numbers of octaves also require more processing - time. - @param randomSeed The random seed number to use. If you keep all other - parameters the same, you can generate different - pseudo-random results by varying the random seed - value. The Perlin noise function is a mapping - function, not a true random-number generation - function, so it creates the same results each time - from the same random seed. - @param stitch A Boolean value. If the value is `true`, - the method attempts to smooth the transition edges - of the image to create seamless textures for tiling - as a bitmap fill. - @param fractalNoise A Boolean value. If the value is `true`, - the method generates fractal noise; otherwise, it - generates turbulence. An image with turbulence has - visible discontinuities in the gradient that can - make it better approximate sharper visual effects - like flames and ocean waves. - @param channelOptions A number that can be a combination of any of the - four color channel values - (`BitmapDataChannel.RED`, - `BitmapDataChannel.BLUE`, - `BitmapDataChannel.GREEN`, and - `BitmapDataChannel.ALPHA`). You can use - the logical OR operator(`|`) to combine - channel values. - @param grayScale A Boolean value. If the value is `true`, - a grayscale image is created by setting each of the - red, green, and blue color channels to identical - values. The alpha channel value is not affected if - this value is set to `true`. - - - - - - - - Scrolls an image by a certain(_x_, _y_) pixel amount. Edge - regions outside the scrolling area are left unchanged. - - @param x The amount by which to scroll horizontally. - @param y The amount by which to scroll vertically. - - - - - - - - - Sets a single pixel of a BitmapData object. The current alpha channel - value of the image pixel is preserved during this operation. The value of - the RGB color parameter is treated as an unmultiplied color value. - - **Note:** To increase performance, when you use the - `setPixel()` or `setPixel32()` method repeatedly, - call the `lock()` method before you call the - `setPixel()` or `setPixel32()` method, and then call - the `unlock()` method when you have made all pixel changes. - This process prevents objects that reference this BitmapData instance from - updating until you finish making the pixel changes. - - @param x The _x_ position of the pixel whose value changes. - @param y The _y_ position of the pixel whose value changes. - @param color The resulting RGB color for the pixel. - - - - - - - - - Sets the color and alpha transparency values of a single pixel of a - BitmapData object. This method is similar to the `setPixel()` - method; the main difference is that the `setPixel32()` method - takes an ARGB color value that contains alpha channel information. - - All pixels in a BitmapData object are stored as premultiplied color - values. A premultiplied image pixel has the red, green, and blue color - channel values already multiplied by the alpha data. For example, if the - alpha value is 0, the values for the RGB channels are also 0, independent - of their unmultiplied values. This loss of data can cause some problems - when you perform operations. All BitmapData methods take and return - unmultiplied values. The internal pixel representation is converted from - premultiplied to unmultiplied before it is returned as a value. During a - set operation, the pixel value is premultiplied before the raw image pixel - is set. - - **Note:** To increase performance, when you use the - `setPixel()` or `setPixel32()` method repeatedly, - call the `lock()` method before you call the - `setPixel()` or `setPixel32()` method, and then call - the `unlock()` method when you have made all pixel changes. - This process prevents objects that reference this BitmapData instance from - updating until you finish making the pixel changes. - - @param x The _x_ position of the pixel whose value changes. - @param y The _y_ position of the pixel whose value changes. - @param color The resulting ARGB color for the pixel. If the bitmap is - opaque(not transparent), the alpha transparency portion of - this color value is ignored. - - - - - - - - Converts a byte array into a rectangular region of pixel data. For each - pixel, the `ByteArray.readUnsignedInt()` method is called and - the return value is written into the pixel. If the byte array ends before - the full rectangle is written, the function returns. The data in the byte - array is expected to be 32-bit ARGB pixel values. No seeking is performed - on the byte array before or after the pixels are read. - - @param rect Specifies the rectangular region of the BitmapData - object. - @param inputByteArray A ByteArray object that consists of 32-bit - unmultiplied pixel values to be used in the - rectangular region. - @throws EOFError The `inputByteArray` object does not include - enough data to fill the area of the `rect` - rectangle. The method fills as many pixels as possible - before throwing the exception. - @throws TypeError The rect or inputByteArray are null. - - - - - - - - Converts a Vector into a rectangular region of pixel data. For each pixel, - a Vector element is read and written into the BitmapData pixel. The data - in the Vector is expected to be 32-bit ARGB pixel values. - - @param rect Specifies the rectangular region of the BitmapData object. - @throws RangeError The vector array is not large enough to read all the - pixel data. - - - - - - - - - - - - - - { copySource : false, mask : 0xFFFFFFFF, color : 0x00000000 } - ", ">=", "==", "!=" - @param threshold The value that each pixel is tested against to see - if it meets or exceeds the threshhold. - @param color The color value that a pixel is set to if the - threshold test succeeds. The default value is - 0x00000000. - @param mask The mask to use to isolate a color component. - @param copySource If the value is `true`, pixel values - from the source image are copied to the - destination when the threshold test fails. If the - value is `false`, the source image is - not copied when the threshold test fails. - @return The number of pixels that were changed. - @throws ArgumentError The operation string is not a valid operation - @throws TypeError The sourceBitmapData, sourceRect destPoint or - operation are null.]]> - - - - - - - { changeRect : null } - Unlocks an image so that any objects that reference the BitmapData object, - such as Bitmap objects, are updated when this BitmapData object changes. - To improve performance, use this method along with the `lock()` - method before and after numerous calls to the `setPixel()` or - `setPixel32()` method. - - @param changeRect The area of the BitmapData object that has changed. If - you do not specify a value for this parameter, the - entire area of the BitmapData object is considered - changed. - - <__applyAlpha set="method" line="3044"> - - - - - - - <__drawCairo set="method" line="3061"> - - - - - - - - <__drawCanvas set="method" line="3084"> - - - - - - - - <__drawGL set="method" line="3102"> - - - - - - - - <__fillRect set="method" line="3125"> - - - - - - - - - <__fromBase64 get="inline" set="null" line="3180"> - - - - - - - - <__fromBytes get="inline" set="null" line="3188"> - - - - - - - { rawAlpha : null } - - - - <__fromFile set="method" line="3201"> - - - - - - - <__fromImage set="method" line="3210"> - - - - - - "checkstyle:Dynamic" - - - - <__getBounds set="method" line="3235"> - - - - - - - - <__loadFromBase64 get="inline" set="null" line="3270"> - - - - - - - - <__loadFromBytes get="inline" set="null" line="3283"> - - - - - - - { rawAlpha : null } - - - - <__loadFromFile set="method" line="3302"> - - - - - - - <__resize set="method" line="3315"> - - - - - - - - <__setUVRect set="method" line="3326"> - - - - - - - - - - - <__sync set="method" line="3359"> - - - - <__update set="method" line="3366"> - - - - - - - - <__updateTransforms set="method" line="3371"> - - - - - - { overrideTransform : null } - - - - - - - - - - - - { fillColor : 0xFFFFFFFF, transparent : true } - Creates a BitmapData object with a specified width and height. If you specify a value for - the `fillColor` parameter, every pixel in the bitmap is set to that color. - - By default, the bitmap is created as transparent, unless you pass the value `false` - for the transparent parameter. After you create an opaque bitmap, you cannot change it - to a transparent bitmap. Every pixel in an opaque bitmap uses only 24 bits of color channel - information. If you define the bitmap as transparent, every pixel uses 32 bits of color - channel information, including an alpha transparency channel. - - @param width The width of the bitmap image in pixels. - @param height The height of the bitmap image in pixels. - @param transparent Specifies whether the bitmap image supports per-pixel transparency. The default value is `true`(transparent). To create a fully transparent bitmap, set the value of the `transparent` parameter to `true` and the value of the `fillColor` parameter to 0x00000000(or to 0). Setting the `transparent` property to `false` can result in minor improvements in rendering performance. - @param fillColor A 32-bit ARGB color value that you use to fill the bitmap image area. The default value is 0xFFFFFFFF(solid white). - - The BitmapData class lets you work with the data (pixels) of a Bitmap - object. You can use the methods of the BitmapData class to create - arbitrarily sized transparent or opaque bitmap images and manipulate them - in various ways at runtime. You can also access the BitmapData for a bitmap - image that you load with the `openfl.Assets` or - `openfl.display.Loader` classes. - - This class lets you separate bitmap rendering operations from the - internal display updating routines of OpenFL. By manipulating a - BitmapData object directly, you can create complex images without incurring - the per-frame overhead of constantly redrawing the content from vector - data. - - The methods of the BitmapData class support effects that are not - available through the filters available to non-bitmap display objects. - - A BitmapData object contains an array of pixel data. This data can - represent either a fully opaque bitmap or a transparent bitmap that - contains alpha channel data. Either type of BitmapData object is stored as - a buffer of 32-bit integers. Each 32-bit integer determines the properties - of a single pixel in the bitmap. - - Each 32-bit integer is a combination of four 8-bit channel values (from - 0 to 255) that describe the alpha transparency and the red, green, and blue - (ARGB) values of the pixel. (For ARGB values, the most significant byte - represents the alpha channel value, followed by red, green, and blue.) - - The four channels (alpha, red, green, and blue) are represented as - numbers when you use them with the `BitmapData.copyChannel()` - method or the `DisplacementMapFilter.componentX` and - `DisplacementMapFilter.componentY` properties, and these numbers - are represented by the following constants in the BitmapDataChannel - class: - - * `BitmapDataChannel.ALPHA` - * `BitmapDataChannel.RED` - * `BitmapDataChannel.GREEN` - * `BitmapDataChannel.BLUE` - - You can attach BitmapData objects to a Bitmap object by using the - `bitmapData` property of the Bitmap object. - - You can use a BitmapData object to fill a Graphics object by using the - `Graphics.beginBitmapFill()` method. - - You can also use a BitmapData object to perform batch tile rendering - using the `openfl.display.Tilemap` class. - - In Flash Player 10, the maximum size for a BitmapData object - is 8,191 pixels in width or height, and the total number of pixels cannot - exceed 16,777,215 pixels. (So, if a BitmapData object is 8,191 pixels wide, - it can only be 2,048 pixels high.) In Flash Player 9 and earlier, the limitation - is 2,880 pixels in height and 2,880 in width. - - - lime.graphics.opengl.GL - lime.graphics.Image - lime.graphics.ImageBuffer - lime.math.Rectangle - openfl.display3D.textures.TextureBase - openfl.display3D.Context3D - openfl.display.DisplayObject - openfl.display.DisplayObjectShader - openfl.display.Graphics - openfl.display.Shader - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Point - openfl.geom.Rectangle - "tags=\"haxe,release\"" - - openfl.utils._internal.AssetsMacro.embedBitmap() - - - - - - - "__ASSET__:bitmap_flixel_addons_transition_GraphicTransTileCircle" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/transitions/circle.png" - - - - - - - "__ASSET__:bitmap_flixel_addons_transition_GraphicTransTileDiamond" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/transitions/diamond.png" - - - - - - - "__ASSET__:bitmap_flixel_addons_transition_GraphicTransTileSquare" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/transitions/square.png" - - - - - <_delay> - <_count> - <_starting expr="true"> - - true - - <_finished expr="false"> - - false - - - - IN - - <_newStatus expr="NULL"> - - NULL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { FrameRate : 40, GraphicHeight : 32, GraphicWidth : 32, Graphic : null, Y : 0, X : 0 } - - * - * @author Tim Hely - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast -1 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast -1 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.addons.transition.TransitionStatus) - - - - cast (1, flixel.addons.transition.TransitionStatus) - - - - cast (2, flixel.addons.transition.TransitionStatus) - - - - cast (3, flixel.addons.transition.TransitionStatus) - - - - cast (-1, flixel.addons.transition.TransitionStatus) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__startStatus set="method" line="31"> - - - - - - - - <_HX_SUPER__setStatus public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__onFinishAnim set="method" line="31"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__onTime set="method" line="31"> - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.FlxTransitionSprite.GraphicTransTileCircle - flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond - flixel.addons.transition.FlxTransitionSprite.GraphicTransTileSquare - flixel.addons.transition.FlxTransitionSprite - flixel.addons.transition.FlxTransitionSprite.TransitionStatus - flixel.addons.transition.FlxTransitionSprite.TransitionStatus - flixel.addons.transition.FlxTransitionSprite.TransitionStatus_HSC - - - - - - - null - - - - null - - - - false - - - - false - - - - - - - - - - - - - - - - - - - * Starts the in-transition. Can be called manually at any time. - - - - - - - * Starts the out-transition. Can be called manually at any time. - - - - false - - <_exiting expr="false"> - - false - - <_onExit> - - - - - - - - - - - - - - - * Create a state with the ability to do visual transitions - * @param TransIn Plays when the state begins - * @param TransOut Plays when the state ends - - * A `FlxState` which can perform visual transitions - * - * Usage: - * - * First, extend `FlxTransitionableState` as ie, `FooState`. - * - * Method 1: - * - * ```haxe - * var in:TransitionData = new TransitionData(...); // add your data where "..." is - * var out:TransitionData = new TransitionData(...); - * - * FlxG.switchState(new FooState(in,out)); - * ``` - * - * Method 2: - * - * ```haxe - * FlxTransitionableState.defaultTransIn = new TransitionData(...); - * FlxTransitionableState.defaultTransOut = new TransitionData(...); - * - * FlxG.switchState(new FooState()); - * ``` - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__create public="1" set="method" line="31"> - - <_HX_SUPER__createPost public="1" set="method" line="31"> - - - - - <_HX_SUPER__switchTo public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__transitionToState set="method" line="31"> - - - - - - * Starts the in-transition. Can be called manually at any time. - - <_HX_SUPER__transitionIn public="1" set="method" line="31"> - - - - - - * Starts the out-transition. Can be called manually at any time. - - <_HX_SUPER__transitionOut public="1" set="method" line="31"> - - - - - <_HX_SUPER__get_hasTransIn set="method" line="148"> - - <_HX_SUPER__get_hasTransOut set="method" line="148"> - - - - - <_HX_SUPER__createTransition set="method" line="148"> - - - - - <_HX_SUPER__finishTransIn set="method" line="148"> - - <_HX_SUPER__finishTransOut set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.FlxTransitionableState - - - - - - <_effect> - - - - - - - - - - - - - - - - - - - - - - - - - - - * This substate is automatically created to play the actual transition visuals inside a FlxTransitionState. - * To achieve a specific effect, you should use a sub-class of this such as TileTransition or FadeTransition - * @author Tim Hely, larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast "none" - - - - - - - - cast "tiles" - - - - - - - - cast "fade" - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast "none" - - - - - - - - cast "tiles" - - - - - - - - cast "fade" - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - 1.0 - - - - - - - - - - - - - - - - { Duration : 1.0, Color : FlxColor.WHITE, TransType : FADE } - - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast ("none", flixel.addons.transition.TransitionType) - - - - cast ("tiles", flixel.addons.transition.TransitionType) - - - - cast ("fade", flixel.addons.transition.TransitionType) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.TransitionData.TransitionType - flixel.addons.transition.TransitionData.TransitionType - flixel.addons.transition.TransitionData.TransitionTileData - flixel.addons.transition.TransitionData - - - - - - - - false - - <_started expr="false"> - - false - - <_endStatus> - <_finalDelayTime expr="0.0"> - - 0.0 - - <_data> - - - - - - - - - - - - - - - - - - - * @author larsiusprime - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.addons.transition.Transition - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__setStatus public="1" set="method" line="31"> - - - - - <_HX_SUPER__delayThenFinish set="method" line="31"> - - - - - <_HX_SUPER__onFinish set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.TransitionEffect - - - - - - - "__ASSET__:bitmap_flixel_addons_transition_GraphicDiagonalGradient" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/transitions/diagonal_gradient.png" - - - - - - - - "" - - - - "" - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - * - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__setTweenValues set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__makeSprite set="method" line="148"> - - - - - - - <_HX_SUPER__getGradient set="method" line="148"> - - - - - <_HX_SUPER__finishTween set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.TransitionFade.GraphicDiagonalGradient - flixel.addons.transition.TransitionFade - - - - - <_grpSprites> - <_isCenter expr="false"> - - false - - - - - - - - - - - - - - - - - - - * - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__setStatus public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.TransitionTiles - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__setStatus public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__createEffect set="method" line="148"> - - - - - <_HX_SUPER__get_finishCallback set="method" line="148"> - - - - - <_HX_SUPER__set_finishCallback set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.transition.Transition - - - - - - - "left" - - - - "right" - - - - "top" - - - - "bottom" - -
    - - "center" -
    - - - "unknown" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * A class that describes how some object should be positioned relative to another - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - 0 - - - - Anchor.CENTER - - - - Anchor.CENTER - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.AnchorPoint - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__anchorThing public="1" set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__getFlipped public="1" set="method" line="148"> - - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - <_HX_SUPER__flipAnchorSide set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.Anchor - - - - - - - - - - - - - - - - - - - - - - - - - { Quality : 1, Size : 1 } - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - <_HX_SUPER__apply public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.BorderDef - - - - - - null - - - - null - - - - null - - - - null - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="31"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.ButtonLabelStyle - - - - - - - * The code for the main input itself, ie, tab, or the A button - - - - * Any other inputs that must be pressed at the same time, ie, shift, alt, etc - - - - * Any other inputs, that if pressed at the same time, forbid the press. - * (Forbidden is useful so you can distinguish a "TAB" from a "SHIFT+TAB" - * -- you add "SHIFT" to the first one's forbidden list) - - - - - - - - * Was the main key JUST pressed, AND are all of the combo keys currently pressed? (and none of the forbiddens?) - - - - * Was the main key JUST released, AND are no forbidden keys currently pressed? (Ignore whether combos were just released) - - - - * Is the main key and all of the combo keys currently pressed? (and none of the forbiddens?) - - - - - - - - - - - - { forbiddenValue : false, comboValue : true } - * Check Combo/Forbidden values. Default--are combos all pressed, AND are forbiddens all NOT pressed? - - - - - - - - - - - * Makes it easier to check if, say, SHIFT+Tab is being pressed rather than just Tab by itself - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__checkJustPressed set="method" line="148"> - - <_HX_SUPER__checkJustReleased set="method" line="148"> - - <_HX_SUPER__checkPressed set="method" line="148"> - - - * Was the main key JUST pressed, AND are all of the combo keys currently pressed? (and none of the forbiddens?) - - <_HX_SUPER__justPressed public="1" set="method" line="148"> - - - * Was the main key JUST released, AND are no forbidden keys currently pressed? (Ignore whether combos were just released) - - <_HX_SUPER__justReleased public="1" set="method" line="148"> - - - * Is the main key and all of the combo keys currently pressed? (and none of the forbiddens?) - - <_HX_SUPER__pressed public="1" set="method" line="148"> - - - - - <_HX_SUPER__equals public="1" set="method" line="148"> - - - - - - - - - - { forbiddenValue : false, comboValue : true } - * Check Combo/Forbidden values. Default--are combos all pressed, AND are forbiddens all NOT pressed? - - <_HX_SUPER__passCombosAndForbiddens set="method" line="148"> - - - - - - { forbiddenValue : false, comboValue : true } - - - - - - <_HX_SUPER__checkCombos set="method" line="148"> - - - - - - - - <_HX_SUPER__checkForbiddens set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxBaseMultiInput - - - - - - - 0 - - - - 1 - - - - 2 - - - - FlxColor.WHITE - * The 1px thick border color that is drawn around this button - - - - * The color gradient of the button in its in-active (not hovered over) state - - - - * The color gradient of the button in its hovered state - - - - * This function is called when the button is clicked. - - - - * This function is called when the button is hovered over - - - - * This function is called when the mouse leaves a hovered button (but didn't click) - - - - - - - - * If this button has text, set this to change the value - - <_status expr="NORMAL"> - - NORMAL - * Shows the current state of the button. - - <_initialized expr="false"> - - false - * Whether or not the button has initialized itself yet. - - - - - - - - * If you wish to replace the two buttons (normal and hovered-over) with FlxSprites, then pass them here. - * Note: The pixel data is extract from the passed FlxSprites and assigned locally, it doesn't actually use the sprites - * or keep a reference to them. - * - * @param Normal The FlxSprite to use when the button is in-active (not hovered over) - * @param Highlight The FlxSprite to use when the button is hovered-over by the mouse - - - - - - - * Called by the game loop automatically, handles mouseover and click detection. - - - - * Basic button update logic - - - - * WARNING: This will remove this object entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Called by the game state when state is changed (if this object belongs to the state) - - - - - - - * Internal function for handling the actual callback call (for UI thread dependent calls like FlxStringUtil.openURL()). - - - - - - - * If you want to change the color of this button in its in-active (not hovered over) state, then pass a new array of color values - - - - - - - * If you want to change the color of this button in its active (hovered over) state, then pass a new array of color values - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Height : 20, Width : 100, Y : 0, X : 0 } - * Creates a new FlxButton object with a gray background - * and a callback function on the UI thread. - * - * @param X The X position of the button. - * @param Y The Y position of the button. - * @param Callback The function to call whenever the button is clicked. - * @param Label Text to display on the button - * @param Width The width of the button. - * @param Height The height of the button. - - * A simple button class that calls a function when clicked by the mouse. - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - * If you wish to replace the two buttons (normal and hovered-over) with FlxSprites, then pass them here. - * Note: The pixel data is extract from the passed FlxSprites and assigned locally, it doesn't actually use the sprites - * or keep a reference to them. - * - * @param Normal The FlxSprite to use when the button is in-active (not hovered over) - * @param Highlight The FlxSprite to use when the button is hovered-over by the mouse - - <_HX_SUPER__loadButtonGraphic public="1" set="method" line="31"> - - - - - - - - - - * Called by the game loop automatically, handles mouseover and click detection. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Basic button update logic - - <_HX_SUPER__updateButton set="method" line="31"> - - - * WARNING: This will remove this object entirely. Use kill() if you - * want to disable it temporarily only and reset() it later to revive it. - * Called by the game state when state is changed (if this object belongs to the state) - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Internal function for handling the actual callback call (for UI thread dependent calls like FlxStringUtil.openURL()). - - <_HX_SUPER__onMouseUp set="method" line="31"> - - - - - - - - - * If you want to change the color of this button in its in-active (not hovered over) state, then pass a new array of color values - - <_HX_SUPER__updateInactiveButtonColors public="1" set="method" line="31"> - - - - - - - - - * If you want to change the color of this button in its active (hovered over) state, then pass a new array of color values - - <_HX_SUPER__updateActiveButtonColors public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxButtonPlus - - - - - - - * Shows the current state of the button, either NORMAL, - * HIGHLIGHT or PRESSED - - - - * This function is called when the button is released. - * We recommend assigning your main button behavior to this function - * via the FlxClickArea constructor. - - <_pressed> - - * Tracks whether or not the button is currently pressed. - - <_initialized> - - * Whether or not the button has initialized itself yet. - - - - * Called by the game state when state is changed (if this object belongs to the state) - - - - - - - * Called by the game loop automatically, handles mouseover and click detection. - - - - * Basic button update logic - - - - - - - - - * Updates status and handles the onDown and onOver logic (callback function). - - - - - - - * Internal function for handling the actual callback call (for UI thread dependent calls like FlxStringUtil.openURL()). - - - - - - - - - - - { Height : 20, Width : 80, Y : 0, X : 0 } - * Creates a new FlxClickArea object - * and a callback function on the UI thread. - * - * @param X The X position of the button. - * @param Y The Y position of the button. - * @param Width Width of the area - * @param Height Height of the area - * @param OnUp The function to call whenever the button is clicked. - - * Trimmed-down button, invisible click area, only responds to onUP - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Called by the game state when state is changed (if this object belongs to the state) - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Called by the game loop automatically, handles mouseover and click detection. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Basic button update logic - - <_HX_SUPER__updateButton set="method" line="31"> - - - - - - - - * Updates status and handles the onDown and onOver logic (callback function). - - <_HX_SUPER__updateButtonStatus set="method" line="148"> - - - - - - - - - - - * Internal function for handling the actual callback call (for UI thread dependent calls like FlxStringUtil.openURL()). - - <_HX_SUPER__onMouseUp set="method" line="31"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxClickArea - - - - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - 4 - - - - 0 - - - - 1 - - - - 2 - - - - "backspace" - - - - "delete" - - - - "enter" - - - - "input" - - - - true - - - - * This regular expression will filter out (remove) everything that matches. - * Automatically sets filterMode = FlxInputText.CUSTOM_FILTER. - - - - - - - - - - - - * A function called whenever the value changes from user input, or enter is pressed - - - - false - * Whether or not the textbox has a background - - - - * The caret's color. Has the same color as the text by default. - - - - - - - - 1 - - - - - - - - - * Whether or not the textfield is a password textfield - - - - false - * Whether or not the text box is the active object on the screen. - - - - 0 - * The position of the selection cursor. An index of 0 means the carat is before the character at index 0. - - - - * callback that is triggered when this text field gets focus - * @since 2.2.0 - - - - * callback that is triggered when this text field loses focus - * @since 2.2.0 - - - - ALL_CASES - * The Case that's being enforced. Either ALL_CASES, UPPER_CASE or LOWER_CASE. - - - - 0 - * Set the maximum length for the field (e.g. "3" - * for Arcade type hi-score initials). 0 means unlimited. - - - - * Change the amount of lines that are allowed. - - - - NO_FILTER - * Defines what text to filter. It can be NO_FILTER, ONLY_ALPHA, ONLY_NUMERIC, ONLY_ALPHA_NUMERIC or CUSTOM_FILTER - * (Remember to append "FlxInputText." as a prefix to those constants) - - - - FlxColor.BLACK - * The color of the fieldBorders - - - - 1 - * The thickness of the fieldBorders - - - - FlxColor.WHITE - * The color of the background of the textbox. - - - - * A FlxSprite representing the background sprite - - <_caretTimer> - - * A timer for the flashing caret effect. - - - - * A FlxSprite representing the flashing caret when editing text. - - <_charBoundaries> - - * A FlxSprite representing the fieldBorders. - - - - * Stores last input text scroll. - - - - * Clean up memory - - - - * Draw the caret in addition to the text. - - - - - - - * Helper function that makes sure sprites are drawn up even though they haven't been added. - * @param Sprite The Sprite to be drawn. - - - - - - - * Check for mouse input every tick. - - - - - - - * Handles keypresses generated on the stage. - - - - - - - - - - - - - * Inserts a substring into a string at a specific index - * - * @param Insert The string to have something inserted into - * @param Insert The string to insert - * @param Index The index to insert at - * @return Returns the joined string for chaining. - - - - - - - * Gets the index of the character in this box under the mouse cursor - * @return The index of the character. - * between 0 and the length of the text - - - - - - - - - - - - - - - - - - - - - * Called every time the text is changed (for both flash/cpp) to update scrolling, etc - - - - - - - { RunOnCpp : false } - * Draws the frame of animation for the input text. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - - - - - - * Turns the caret on/off for the caret flashing animation. - - - - - - - * Checks an input string against the current - * filter and returns a filtered string - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { EmbeddedFont : true, BackgroundColor : FlxColor.WHITE, TextColor : FlxColor.BLACK, size : 8, Width : 150, Y : 0, X : 0 } - * @param X The X position of the text. - * @param Y The Y position of the text. - * @param Width The width of the text object (height is determined automatically). - * @param Text The actual text you would like to display initially. - * @param size Initial size of the font - * @param TextColor The color of the text - * @param BackgroundColor The color of the background (FlxColor.TRANSPARENT for no background color) - * @param EmbeddedFont Whether this text field uses embedded fonts or not - - * FlxInputText v1.11, ported to Haxe - * @author larsiusprime, (Lars Doucet) - * @link http://github.com/haxeflixel/flixel-ui - * - * FlxInputText v1.10, Input text field extension for Flixel - * @author Gama11, Mr_Walrus, nitram_cero (Martín Sebastián Wain) - * @link http://forums.flixel.org/index.php/topic,272.0.html - * - * Copyright (c) 2009 Martín Sebastián Wain - * License: Creative Commons Attribution 3.0 United States - * @link http://creativecommons.org/licenses/by/3.0/us/ - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Draw the caret in addition to the text. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - * Check for mouse input every tick. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - * Handles keypresses generated on the stage. - - <_HX_SUPER__onKeyDown set="method" line="31"> - - - - - - - - <_HX_SUPER__onChange set="method" line="31"> - - - - - - - - - - - * Inserts a substring into a string at a specific index - * - * @param Insert The string to have something inserted into - * @param Insert The string to insert - * @param Index The index to insert at - * @return Returns the joined string for chaining. - - <_HX_SUPER__insertSubstring set="method" line="148"> - - - - - - - - - - - * Gets the index of the character in this box under the mouse cursor - * @return The index of the character. - * between 0 and the length of the text - - <_HX_SUPER__getCaretIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__getCharBoundaries set="method" line="148"> - - - - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - - - - - - <_HX_SUPER__getCharIndexAtPoint set="method" line="148"> - - - - - - - - - <_HX_SUPER__prepareCharBoundaries set="method" line="31"> - - - - - - * Called every time the text is changed (for both flash/cpp) to update scrolling, etc - - <_HX_SUPER__onSetTextCheck set="method" line="31"> - - - - - - { RunOnCpp : false } - * Draws the frame of animation for the input text. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - <_HX_SUPER__calcFrame set="method" line="31"> - - - - - { RunOnCpp : false } - - - - - - - * Turns the caret on/off for the caret flashing animation. - - <_HX_SUPER__toggleCaret set="method" line="31"> - - - - - - - - - * Checks an input string against the current - * filter and returns a filtered string - - <_HX_SUPER__filter set="method" line="148"> - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - - - - - <_HX_SUPER__set_hasFocus set="method" line="148"> - - - - - <_HX_SUPER__getAlignStr set="method" line="148"> - - - - - <_HX_SUPER__set_caretIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__set_size set="method" line="148"> - - - - - - - - <_HX_SUPER__set_maxLength set="method" line="148"> - - - - - - - - <_HX_SUPER__set_lines set="method" line="148"> - - - - - - - - <_HX_SUPER__set_passwordMode set="method" line="148"> - - - - - - - - <_HX_SUPER__set_filterMode set="method" line="148"> - - - - - - - - <_HX_SUPER__set_fieldBorderColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_fieldBorderThickness set="method" line="148"> - - - - - - - - <_HX_SUPER__set_backgroundColor set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxInputText - - - - - - - - - - - - - - - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Given a string of the form "left_analog_stick_x_plus", returns a StickInput object with the corresponding values - * @param str - * @return - - - - - - - - - - - - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__checkJustPressed set="method" line="148"> - - <_HX_SUPER__checkJustReleased set="method" line="148"> - - <_HX_SUPER__checkPressed set="method" line="148"> - - - - - <_HX_SUPER__checkCombos set="method" line="148"> - - - - - - - - <_HX_SUPER__checkForbiddens set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxMultiGamepadAnalogStick - flixel.addons.ui.FlxMultiGamepadAnalogStick.XY - flixel.addons.ui.FlxMultiGamepadAnalogStick.StickInput - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__checkJustPressed set="method" line="148"> - - <_HX_SUPER__checkJustReleased set="method" line="148"> - - <_HX_SUPER__checkPressed set="method" line="148"> - - - - - <_HX_SUPER__checkCombos set="method" line="148"> - - - - - - - - <_HX_SUPER__checkForbiddens set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxMultiGamepad - - - - - - - - - - - - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__checkJustPressed set="method" line="148"> - - <_HX_SUPER__checkJustReleased set="method" line="148"> - - <_HX_SUPER__checkPressed set="method" line="148"> - - - - - <_HX_SUPER__checkCombos set="method" line="148"> - - - - - - - - <_HX_SUPER__checkForbiddens set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxMultiKey - - - - - - - * The horizontal line in the background. - - - - * The dragable handle - loadGraphic() to change its graphic. - - - - * The text under the left border - equals minValue by default. - - - - * The text under the right border - equals maxValue by default. - - - - * A text above the slider that displays its name. - - - - * A text under the slider that displays the current value. - - - - * Stores the current value of the variable - updated each frame. - - - - * Mininum value the variable can be changed to. - - - - * Maximum value the variable can be changed to. - - - - 0 - * How many decimals the variable can have at max. Default is zero, - * or "only whole numbers". - - - - * Sound that's played whenever the slider is clicked. - - - - * Sound that's played whenever the slider is hovered over. - - - - 0.5 - * The alpha value the slider uses when it's hovered over. 1 to turn the effect off. - - - - - - - null - * A function to be called when the slider was used. - * The current relativePos is passed as an argument. - - - - true - * Whether the slider sets the variable it tracks. Can be useful to deactivate this in conjunction with callbacks. - - - - * The expected position of the handle based on the current variable value. - - - - * The position of the handle relative to the slider / max value. - - - - * Stores the variable the slider controls. - - <_bounds> - - * The dragable area for the handle. Is configured automatically. - - <_width> - - * The width of the slider. - - <_height> - - * The height of the slider - make sure to call createSlider() if you - * want to change this. - - <_thickness> - - * The thickness of the slider - make sure to call createSlider() if you - * want to change this. - - <_color> - - * The color of the slider - make sure to call createSlider() if you - * want to change this. - - <_handleColor> - - * The color of the handle - make sure to call createSlider() if you - * want to change this. - - <_object> - - * Stores a reference to parent object. - - <_lastPos> - - * Helper var for callbacks. - - <_justClicked expr="false"> - - false - * Helper variable to avoid the clickSound playing every frame. - - <_justHovered expr="false"> - - false - * Helper variable to avoid the hoverSound playing every frame. - - - - * Initially creates the slider with all its objects. - - - - - - - - * Function that is called whenever the slider is used to either update the variable tracked or call the Callback function. - - - - - - - - - - - { Size : 8, Value : true } - * Handy function for changing the textfields. - * - * @param Name Text of nameLabel - null to hide - * @param Value Whether to show the valueText or not - * @param Min Text of minLabel - null to hide - * @param Max Text of maxLabel - null to hide - * @param Size Size to use for the texts - - - - * Cleaning up memory. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { HandleColor : 0xFF828282, Color : 0xFF000000, Thickness : 3, Height : 15, Width : 100, MaxValue : 10, MinValue : 0, Y : 0, X : 0 } - * Creates a new FlxSlider. - * - * @param Object Reference to the parent object of the variable - * @param VarString Variable that the slider controls - * @param X x Position - * @param Y y Position - * @param MinValue Mininum value the variable can be changed to - * @param MaxValue Maximum value the variable can be changed to - * @param Width Width of the slider - * @param Height Height of the slider - * @param Thickness Thickness of the slider - * @param Color Color of the slider background and all texts except for valueText showing the current value - * @param HandleColor Color of the slider handle and the valueText showing the current value - - * A slider GUI element for float and integer manipulation. - * @author Gama11 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Initially creates the slider with all its objects. - - <_HX_SUPER__createSlider set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Function that is called whenever the slider is used to either update the variable tracked or call the Callback function. - - <_HX_SUPER__updateValue set="method" line="31"> - - - - - - - - - - { Size : 8, Value : true } - * Handy function for changing the textfields. - * - * @param Name Text of nameLabel - null to hide - * @param Value Whether to show the valueText or not - * @param Min Text of minLabel - null to hide - * @param Max Text of maxLabel - null to hide - * @param Size Size to use for the texts - - <_HX_SUPER__setTexts public="1" set="method" line="31"> - - - - - - - - - { Size : 8, Value : true } - - - - * Cleaning up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__get_expectedPos set="method" line="148"> - - <_HX_SUPER__get_relativePos set="method" line="148"> - - - - - <_HX_SUPER__set_varString set="method" line="148"> - - - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxSlider - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * ... - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - *PUBLIC VARS* - - - - true - - - - true - *PUBLIC GETTER/SETTERS* - - - - - - - - - - - - - { Splice : false } - - - - - - - - - - - - - - - - { rect : null } - * Calculates the bounds of the group and sets width/height - * @param rect (optional) -- if supplied, populates this with the boundaries of the group - - - - * Floor the positions of all children - - - - - - - - { Y : 0, X : 0 } - *PUBLIC FUNCTIONS* - - * A cheap extension of FlxUIGroup that lets you move all the children around - * without having to call reset() - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - *EVENT HANDLING* - - - - - - - - { style : "" } - * Given something like "verdana" and "bold" returns "assets/fonts/verdanab" - * Also: checks Firetongue (if available) for font replacement rules - * @param str - * @param style - * @since 2.1.0 - - - - - - - - - - - - - - - - - { extension : ".ttf", style : "" } - * Given something like "verdana", "bold", ".ttf", returns "assets/fonts/verdanab.ttf" - * Also: checks Firetongue (if available) for font replacement rules - * @param str - * @param style - * @param extension - * @since 2.1.0 - - <__getTongue get="inline" set="null" line="226" static="1"> - - flixel.addons.ui.interfaces.IFlxUIState - - - - - - - - * Static-level function used to force giving a certain widget focus (useful for e.g. enforcing overlap logic) - * @param b - * @param thing - - - - * Drill down to the current state or sub-state, and ensure it is an IFlxUIState (FlxUIState or FlxUISubState) - * @return - - - - - - - - - - * Broadcasts an event to the current FlxUIState/FlxUISubState, and expects data in return - * @param name string identifier of the event -- each IFlxUIWidget has a set of string constants - * @param sender the IFlxUIWidget that sent this event - * @param data non-array data (boolean for a checkbox, string for a radiogroup, etc) - * @param params (optional) user-specified array of arbitrary data - * @return some sort of arbitrary data from the recipient - - <_delta get="inline" set="null" line="1578" static="1"> - - - - - - - { Y : 0, X : 0 } - * Adds to thing.x and/or thing.y with wrappers depending on type - * @param thing - * @param X - * @param Y - - <_center get="inline" set="null" line="1589" static="1"> - - - - - - - { Y : true, X : true } - * Centers thing in x axis with wrappers depending on type - * @param thing - * @param amt - - - - - - - - - { combineUniqueChildren : false } - * Takes two XML files and combines them, with "data" overriding duplicate attributes found in "definition" - * @param data the local data tag - * @param definition the base definition you are extending - * @param combineUniqueChildren if true, will combine child tags if they are unique. If false, inserts child tags as new ones. - * @return - - <_loadBitmapRect get="inline" set="null" line="4324" static="1"> - - - - - - - - - - * Parses params out of xml and loads them in the correct type - * @param data - - - - - - - - - true - - - - 0.01 - - - - false - - - - 0 - - - - * Whether or not this UI is directly attached to the current top-most FlxState - - - - - - - - - - - - - - - - - - - - - - null - - - - null - - * - * - * ]]> - - <_ptr_tongue> - <_data> - <_tongueSet set="method" line="134"> - - - - - - * Make sure to recursively propogate the tongue pointer down to all my members - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { suppressed : true } - - - - - - - * This causes FlxUI to respond to a specific widget losing focus - * @param widget - - - - - - - * Set a pointer to another FlxUI for the purposes of indexing - * @param flxUI - - - - - - - - - - - - - - - - - { Active : null } - - - - - - - - - { Active : null } - - - - - - - - { destroy : true } - * Removes an asset - * @param key the asset to remove - * @param destroy whether to destroy it - * @return the asset, or null if destroy=true - - - - - - - - - - { recursive : false, group_name : "" } - * Adds an asset to this UI, and optionally puts it in a group - * @param asset the IFlxUIWidget asset you want to add - * @param key unique key for this asset. If it already exists, this fails. - * @param group_name string name of group inside this FlxUI you want to add it to. - * @param recursive whether to recursively search through sub-ui's - - - - - - - - - - - { destroy_old : true, center_y : true, center_x : true } - - - - - * Remove all the references and pointers, then destroy everything - - - - - - - Xml - * Main setup function - pass in a Access(xml) object - * to set up your FlxUI - * @param data - - - - - - <_loadPointSize set="method" line="988"> - - - - <_loadSub set="method" line="1011"> - - - - - - { iteration : 0 } - - <_addTags set="method" line="1083"> - - - - - <_loadGlobals set="method" line="1100"> - - - - - <_postLoad set="method" line="1120"> - - - - <_sendTo set="method" line="1163"> - - - - - - - - - - - { recursive : true } - * Send an asset to the front of the member list that it's in - * @param name string identifier of the asset - * @param recursive whether to check superIndex if not found - - - - - - - - { recursive : true } - * Send an asset to either the back of the member list that it's in - * @param name string identifier of the asset - * @param recursive whether to check superIndex if not found - - - - - - - - - - - - - - { target_name : "" } - * Set a mode for this UI. This lets you show/hide stuff basically. - * @param mode_name The mode you want, say, "empty" or "play" for a save slot - * @param target_name UI element to target - "" for the UI itself, otherwise the name of an element that is itself a FlxUI - - - - - - - - - { activeStatus : null, visibleStatus : true } - - - - - - - - { recursive : true } - ****UTILITY FUNCTIONS******** - - - - - - - - { recursive : true } - - - - - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - - - - - - - - - - - * Get the group that contains a given IFlxUIWidget - * @param key the asset key of the IFlxUIWidget - * @param thing the IFlxUIWidget itself - * @return - - - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - - - - - - - - - - - - - - { recursive : true, op : "==" } - - - - - - - - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - - - <_postLoaded expr="false"> - - - false - FlxUI - - *PRIVATE* - - <_pointX expr="1"> - - 1 - - <_pointY expr="1"> - - 1 - - <_group_index> - - - - <_asset_index> - - - - <_tag_index> - - - - <_definition_index> - - - - <_variable_index> - - - - <_mode_index> - - - - <_curr_mode expr=""""> - - "" - - <_ptr> - <_superIndexUI> - <_safe_input_delay_elapsed expr="0.0"> - - 0.0 - - <_failure_checks> - <_assetsToCleanUp expr="[]"> - - [] - - <_scaledAssets expr="[]"> - - [] - - - - - - - - - { splice : false } - * Replace an object in whatever group it is in - * @param original the original object - * @param replace the replacement object - * @param splice if replace is null, whether to splice the entry - - - - - - - **********LOADING FUNCTIONS************ - - - - - - - - * Make any necessary changes to data/definition xml objects (such as for locale or haxedef settings) - * @param data Access xml data - * @param nodeName name of the node, "locale", "haxedef", or "resolution" - - - - - - - - * Load an individual flixel-ui widget from a snippet of xml - * @param type - * @param data - * @return - - <_loadThingGetInfo set="method" line="1817"> - - - - <_loadTooltip set="method" line="1854"> - - - - - <_loadTooltipData set="method" line="1873"> - - - - <_loadTooltipStyle set="method" line="1941"> - - - - - <_loadTooltipText set="method" line="1966"> - - - - - - <_loadAnchor set="method" line="2015"> - - - - <_loadThing set="method" line="2030"> - - - - - <_loadX get="inline" set="null" line="2111"> - - - - - - { default_ : 0 } - - <_loadY get="inline" set="null" line="2116"> - - - - - - { default_ : 0 } - - <_loadScale set="method" line="2121"> - - - - - - - { str : "scale", default_ : 1.0 } - - <_loadScaleX set="method" line="2126"> - - - - - - { default_ : 1.0 } - - <_loadScaleY set="method" line="2131"> - - - - - - { default_ : 1.0 } - - <_loadWidth set="method" line="2136"> - - - - - - - - { defaultRound : "", str : "width", default_ : 10 } - - <_loadHeight set="method" line="2143"> - - - - - - - - { defaultRound : "", str : "height", default_ : 10 } - - <_loadCompass set="method" line="2150"> - - - - - - { str : "resize_point" } - - <_changeParamsThing set="method" line="2187"> - - - - <_changeThing set="method" line="2205"> - - - - <_alignThing set="method" line="2276"> - - - - - - { suppressError : false } - - <_doAlign set="method" line="2369"> - - - - - - - - - - - { allowShrink : true, allowGrow : true } - - <_checkFailure set="method" line="2492"> - - - - <_resizeThing set="method" line="2586"> - - - - - - - - - - <_postLoadThing set="method" line="2620"> - - - - - <_loadTileTest set="method" line="2759"> - - - - <_loadString set="method" line="2836"> - - - - - <_loadText set="method" line="2845"> - - - - <_loadInputText set="method" line="2904"> - - - - <_loadRadioGroup set="method" line="3069"> - - - - <_loadCheckBox set="method" line="3235"> - - - - <_loadDropDownMenu set="method" line="3319"> - - - - <_loadTest set="method" line="3455"> - - - - <_loadTestSub set="method" line="3505"> - - - - - - - - <_loadLayout set="method" line="3624"> - - - - - - - - - - - - - - - - - <_loadTabMenu set="method" line="3669"> - - - - <_loadNumericStepper set="method" line="3813"> - - - - - - { setCallback : true } - - - - - - - - { defaultAxis : FlxUISprite.RESIZE_RATIO_Y } - - <_loadButton set="method" line="3907"> - - - - - - - - - { load_code : "", isToggle : false, setCallback : true } - flixel.addons.ui.FlxUITypedButton - - - <_loadRegion set="method" line="4333"> - - - - <_load9SliceSprite set="method" line="4353"> - - - - - - { load_code : "" } - - - - - - - - - - { srcString : "src" } - - <_loadTileRule get="inline" set="null" line="4494"> - - - - <_loadBox set="method" line="4510"> - - - - <_loadLine set="method" line="4580"> - - - - <_loadBar set="method" line="4651"> - - - - <_loadSprite set="method" line="4762"> - - - - - - - - - - - - - - - - - - { tilesTall : 1, tilesWide : 1, scaleName : "scale", attName : "src" } - * For grabbing a resolution-specific version of an image src and dynamically scaling (and caching) it as necessary - * @param data the xml node in question - * @return the unique key of the scaled bitmap - - - - <_getAnchorPos set="method" line="4999"> - - - - - - - - - - - - { defaultStr : "" } - - - - - - - - - - - - - - { height : null, width : null } - - <_getDataSize set="method" line="5201"> - - - - - - - { default_ : 0 } - - <_getOperation set="method" line="5283"> - - - - - - * @return [:String,:String,:Float]]]> - - <_doOperation set="method" line="5350"> - - - - - - <_getStretch set="method" line="5368"> - - - - - - - - - - - - <_loadCursor set="method" line="5525"> - - - - <_loadPosition set="method" line="5554"> - - - - - <_loadBorder set="method" line="5662"> - - - - <_loadColor set="method" line="5675"> - - - - - - - { _default : 0xffffffff, colorName : "color" } - - <_loadFontDef set="method" line="5690"> - - - - <_loadFontFace set="method" line="5699"> - - - - <_onFinishLoad set="method" line="5711"> - - - - - - - - - { code : "", safe : true, context : "data" } - ********UTILITY FUNCTIONS********** - - - - - - - - - - - - - - - - - - - - - - - - - { uiVars_ : null, liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - - * A simple xml-driven user interface - * - * Usage example: - * _ui = new FlxUI(U.xml("save_slot"),this); - * add(_ui); - * - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * ... - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - 0 - - - - 1 - - - - -1 - - - - true - - - - - null - - - - false - - - - - RESIZE_RATIO_Y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - * Load an image from an embedded graphic file. - * - * @param Graphic The image you want to use. - * @param Animated Whether the Graphic parameter is a single sprite or a row of sprites. - * @param Width Optional, specify the width of your sprite (helps FlxSprite figure out what to do with non-square sprites or sprite sheets). - * @param Height Optional, specify the height of your sprite (helps FlxSprite figure out what to do with non-square sprites or sprite sheets). - * @param Unique Optional, whether the graphic should be a unique instance in the graphics cache. Default is false. - * @param Key Optional, set this parameter if you're loading BitmapData. - * @return This FlxSprite instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - <_originalKey expr=""""> - - "" - - - - - - - - - { SimpleGraphic : null, Y : 0, X : 0 } - - * Cheap extension of FlxSprite - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - 0 - - - - true - - - - - - - - - - <_staticPoint expr="new Point()" line="47" static="1"> - - new Point() - - <_staticRect expr="new Rectangle()" line="48" static="1"> - - new Rectangle() - - <_staticRect2 expr="new Rectangle()" line="49" static="1"> - - new Rectangle() - - <_staticPointZero expr="new Point(0, 0)" line="51" static="1"> - - new Point(0, 0) - - <_staticMatrix expr="new Matrix()" line="52" static="1"> - - new Matrix() - - <_staticFlxRect expr="FlxRect.get()" line="54" static="1"> - - FlxRect.get() - - <_staticFlxRect2 expr="FlxRect.get()" line="55" static="1"> - - FlxRect.get() - - - - 0x00 - - - - 0x11 - - - - 0x10 - - - - 0x01 - - <_staticRects static="1"> - - - - - - - - - - - - - - - - - - - - - - - { smooth : false, tile : TILE_NONE } - * Does the actual drawing for a 9-slice scaled graphic - * @param g the graphics object for drawing to (ie, sprite.graphic) - * @param assetID id of bitmapdata asset you are scaling - * @param scale9 int array defining 2 points that define the grid as [x1,y1,x2,y2] (upper-interior-left, lower-interior-right) - * @param rc rectangle object defining how big you want to scale it to - * @param tile if a bit is false, scale those pieces, if true, tile them (default both false) - * @param smooth whether to smooth when scaling or not (default false) - * @param raw raw pixels supplied, if any - * @return the new unique id - - - - - - - - - - - - - - - - - - - - - - { raw : null, smooth : false, tile : TILE_NONE } - - - - - - - - - - - - - - { raw : null, smooth : false, tile : TILE_NONE, srcData : null } - - - - - - - - - - - { smooth_ : false, tile : TILE_NONE } - - <_bmpCanvas> - - - "" - - <_slice9 expr="null"> - - null - - <_tile expr="TILE_NONE"> - - TILE_NONE - - <_smooth expr="false"> - - false - - <_asset_id expr=""""> - - "" - - <_raw_pixels> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Color : FlxColor.WHITE, DeferResize : false, Resize_axis : FlxUISprite.RESIZE_RATIO_Y, Resize_point : null, Ratio : -1, Id : "", Smooth : false, Tile : TILE_NONE, Slice9 : null } - stretch) - * @param smooth When stretching, whether to smooth middle pieces (default false) - * @param id if Graphic is a BitmapData, manually specify its original source id, if any - * @param ratio Resize ratio to force, if desired (W/H) - * @param Resize_point Point for anchoring resizes - * @param Resize_axis Whether resizing is based around the X or Y axis - * @param Color Color to tint this graphic to. (White has no effect.)]]> - - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__noLongerUsingCachedID set="method" line="31"> - - - - - - - - <_HX_SUPER__purgeSections set="method" line="31"> - - - - <__interp> - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUI9SliceSprite - flixel.addons.ui.FlxUI9SliceSprite.SectionCounter - - - - - - "flixel/flixel-ui/img/button.png" - - - - "flixel/flixel-ui/img/button_arrow_down.png" - - - - "flixel/flixel-ui/img/button_arrow_left.png" - - - - "flixel/flixel-ui/img/button_arrow_right.png" - - - - "flixel/flixel-ui/img/button_arrow_up.png" - - - - "flixel/flixel-ui/img/button_thin.png" - - - - "flixel/flixel-ui/img/button_toggle.png" - - - - 18 - - - - "flixel/flixel-ui/img/check_mark.png" - - - - "flixel/flixel-ui/img/check_box.png" - - - - "flixel/flixel-ui/img/chrome.png" - - - - "flixel/flixel-ui/img/chrome_light.png" - - - - "flixel/flixel-ui/img/chrome_flat.png" - - - - "flixel/flixel-ui/img/chrome_inset.png" - - - - "flixel/flixel-ui/img/radio.png" - - - - "flixel/flixel-ui/img/radio_dot.png" - - - - "flixel/flixel-ui/img/tab.png" - - - - "flixel/flixel-ui/img/tab_back.png" - - - - "flixel/flixel-ui/img/box.png" - - - - "flixel/flixel-ui/img/dropdown_mark.png" - - - - "flixel/flixel-ui/img/plus_mark.png" - - - - "flixel/flixel-ui/img/minus_mark.png" - - - - "flixel/flixel-ui/img/hilight.png" - - - - "flixel/flixel-ui/img/invis.png" - - - - "flixel/flixel-ui/img/swatch.png" - - - - "flixel/flixel-ui/img/tooltip_arrow.png" - - - - "flixel/flixel-ui/img/finger_small.png" - - - - "flixel/flixel-ui/img/finger_big.png" - - - - "6,6,11,11" - - - - "2,2,15,15" - - - - "6,6,11,11" - - - - "6,6,11,11" - - - - "flixel/flixel-ui/xml/defaults" - - - - "flixel/flixel-ui/xml/default_popup" - - - - "flixel/flixel-ui/xml/default_loading_screen" - - - - - - - null - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIAssets - - - - - - - true - * If false, the bar is tracking its parent - * (the position is synchronized with the parent's position). - - - - * How many pixels = 1% of the bar (barWidth (or barHeight) / 100) - - - - * The positionOffset controls how far offset the FlxBar is from the parent sprite (if at all) - - - - false - * If this FlxBar should be killed when its empty - - - - * The percentage of how full the bar is (a value between 0 and 100) - - - - * The percentage of how full the bar is (a value between 0 and 100) - - - - - * The current value - must always be between min and max - - - - = max)]]> - - - - - - - - * How wide is the range of this bar? (max - min) - - - - * What 1% of the bar is equal to in terms of value (range / 100) - - - - 100 - * Number of frames FlxBar will have. Default value is 100. - * The bigger value you set then visual will change smoother. - * @since 4.1.0 - - - - * This function will be called when value will hit it's minimum - - - - * This function will be called when value will hit it's maximum - - - - * Object to track value from/ - - - - * Property of parent object to track. - - - - - - - * BarFrames which will be used for filled bar rendering. - * It is recommended to use this property in tile render mode - * (although it will work in blit render mode also). - - - - - * The direction from which the health bar will fill-up. Default is from left to right. Change takes effect immediately. - - <_fillHorizontal> - <_frontFrame> - - * FlxSprite which is used for rendering front graphics of bar (showing value) in tile render mode. - - <_filledFlxRect> - <_emptyBar> - <_emptyBarRect> - <_filledBar> - <_zeroOffset> - <_filledBarRect> - <_filledBarPoint> - <_maxPercent expr="100"> - - 100 - - - - - - - - - * Track the parent FlxSprites x/y coordinates. For example if you wanted your sprite to have a floating health-bar above their head. - * If your health bar is 10px tall and you wanted it to appear above your sprite, then set offsetY to be -10 - * If you wanted it to appear below your sprite, and your sprite was 32px tall, then set offsetY to be 32. Same applies to offsetX. - * - * @param offsetX The offset on X in relation to the origin x/y of the parent - * @param offsetY The offset on Y in relation to the origin x/y of the parent - * @see stopTrackingParent - - - - - - - - - - - { offsetY : 0, offsetX : 0, track : false } - * Sets a parent for this FlxBar. Instantly replaces any previously set parent and refreshes the bar. - * - * @param parentRef A reference to an object in your game that you wish the bar to track - * @param variable The variable of the object that is used to determine the bar position. For example if the parent was an FlxSprite this could be "health" to track the health value - * @param track If you wish the FlxBar to track the x/y coordinates of parent set to true (default false) - * @param offsetX The offset on X in relation to the origin x/y of the parent - * @param offsetY The offset on Y in relation to the origin x/y of the parent - - - - - - - - * Tells the health bar to stop following the parent sprite. The given posX and posY values are where it will remain on-screen. - * - * @param posX X coordinate of the health bar now it's no longer tracking the parent sprite - * @param posY Y coordinate of the health bar now it's no longer tracking the parent sprite - - - - - - - - - { killOnEmpty : false } - * Sets callbacks which will be triggered when the value of this FlxBar reaches min or max. - * Functions will only be called once and not again until the value changes. - * Optionally the FlxBar can be killed if it reaches min, but if will fire the empty callback first (if set) - * - * @param onEmpty The function that is called if the value of this FlxBar reaches min - * @param onFilled The function that is called if the value of this FlxBar reaches max - * @param killOnEmpty If set it will call FlxBar.kill() if the value reaches min - - - - - - - - * Set the minimum and maximum allowed values for the FlxBar - * - * @param min The minimum value. I.e. for a progress bar this would be zero (nothing loaded yet) - * @param max The maximum value the bar can reach. I.e. for a progress bar this would typically be 100. - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled health bar in the given colours, with optional 1px thick border. - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * - * @param empty The color of the bar when empty in 0xAARRGGBB format (the background colour) - * @param fill The color of the bar when full in 0xAARRGGBB format (the foreground colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled background for health bar in the given colour, with optional 1px thick border. - * - * @param empty The color of the bar when empty in 0xAARRGGBB format (the background colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering health bar background. - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled foreground for health bar in the given colour, with optional 1px thick border. - * @param fill The color of the bar when full in 0xAARRGGBB format (the foreground colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled health bar using the given colour ranges, with optional 1px thick border. - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * - * @param empty Array of colour values used to create the gradient of the health bar when empty, each colour must be in 0xAARRGGBB format (the background colour) - * @param fill Array of colour values used to create the gradient of the health bar when full, each colour must be in 0xAARRGGBB format (the foreground colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled background for health bar using the given colour range, with optional 1px thick border. - * - * @param empty Array of colour values used to create the gradient of the health bar when empty, each colour must be in 0xAARRGGBB format (the background colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for background rendering. - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled foreground for health bar using the given colour range, with optional 1px thick border. - * - * @param fill Array of colour values used to create the gradient of the health bar when full, each colour must be in 0xAARRGGBB format (the foreground colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - - - - - - - - - { fillBackground : FlxColor.LIME, emptyBackground : FlxColor.BLACK } - * Creates a health bar filled using the given bitmap images. - * You can provide "empty" (background) and "fill" (foreground) images. either one or both images (empty / fill), and use the optional empty/fill colour values - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * NOTE: This method doesn't check if the empty image doesn't have the same size as fill image. - * - * @param empty Bitmap image used as the background (empty part) of the health bar, if null the emptyBackground colour is used - * @param fill Bitmap image used as the foreground (filled part) of the health bar, if null the fillBackground colour is used - * @param emptyBackground If no background (empty) image is given, use this colour value instead. 0xAARRGGBB format - * @param fillBackground If no foreground (fill) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - - - - - - - { emptyBackground : FlxColor.BLACK } - * Loads given bitmap image for health bar background. - * - * @param empty Bitmap image used as the background (empty part) of the health bar, if null the emptyBackground colour is used - * @param emptyBackground If no background (empty) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated image for background rendering. - - - - - - - - { fillBackground : FlxColor.LIME } - * Loads given bitmap image for health bar foreground. - * - * @param fill Bitmap image used as the foreground (filled part) of the health bar, if null the fillBackground colour is used - * @param fillBackground If no foreground (fill) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - - - - - - - - * Updates health bar view according its current value. - * Called when the health bar detects a change in the health of the parent. - - - - * Stamps health bar background on its pixels - - - - * Stamps health bar foreground on its pixels - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { showBorder : false, max : 100, min : 0, variable : "", height : 10, width : 100, y : 0, x : 0 } - * Create a new FlxBar Object - * - * @param x The x coordinate location of the resulting bar (in world pixels) - * @param y The y coordinate location of the resulting bar (in world pixels) - * @param direction The fill direction, LEFT_TO_RIGHT by default - * @param width The width of the bar in pixels - * @param height The height of the bar in pixels - * @param parentRef A reference to an object in your game that you wish the bar to track - * @param variable The variable of the object that is used to determine the bar position. For example if the parent was an FlxSprite this could be "health" to track the health value - * @param min The minimum value. I.e. for a progress bar this would be zero (nothing loaded yet) - * @param max The maximum value the bar can reach. I.e. for a progress bar this would typically be 100. - * @param showBorder Include a 1px border around the bar? (if true it adds +2 to width and height to accommodate it) - - * FlxBar is a quick and easy way to create a graphical bar which can - * be used as part of your UI/HUD, or positioned next to a sprite. - * It could represent a loader, progress or health bar. - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - * Applies a new style to this FlxBar and redraws it - - - - - - - - - - - - - - - - - - - - - - - - - { showBorder : false, max : 100, min : 0, variable : "", height : 10, width : 100, y : 0, x : 0 } - * Create a new FlxBar Object - * - * @param x The x coordinate location of the resulting bar (in world pixels) - * @param y The y coordinate location of the resulting bar (in world pixels) - * @param direction The fill direction, LEFT_TO_RIGHT by default - * @param width The width of the bar in pixels - * @param height The height of the bar in pixels - * @param parentRef A reference to an object in your game that you wish the bar to track - * @param variable The variable of the object that is used to determine the bar position. For example if the parent was an FlxSprite this could be "health" to track the health value - * @param min The minimum value. I.e. for a progress bar this would be zero (nothing loaded yet) - * @param max The maximum value the bar can reach. I.e. for a progress bar this would typically be 100. - * @param showBorder Include a 1px border around the bar? (if true it adds +2 to width and height to accommodate it) - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - - * Applies a new style to this FlxBar and redraws it - - <_HX_SUPER__set_style public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIBar - flixel.addons.ui.FlxUIBar.FlxBarStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - [FlxPoint.get(), FlxPoint.get(), FlxPoint.get(0, 1)] - * What offsets the `label` should have for each status. - - - - [0.8, 1.0, 0.5] - * What alpha value the label should have for each status. Default is `[0.8, 1.0, 0.5]`. - * Multiplied with the button's `alpha`. - - - - ["normal", "highlight", "pressed"] - * What animation should be played for each status. - * Default is ["normal", "highlight", "pressed"]. - - - - true - * Whether you can press the button simply by releasing the touch / mouse button over it (default). - * If false, the input has to be pressed while hovering over the button. - - - - [FlxMouseButtonID.LEFT] - * Which mouse buttons can trigger the button - by default only the left mouse button. - - - - Math.POSITIVE_INFINITY - * Maximum distance a pointer can move to still trigger event handlers. - * If it moves beyond this limit, onOut is triggered. - * Defaults to `Math.POSITIVE_INFINITY` (i.e. no limit). - - - - * Shows the current state of the button, either `FlxButton.NORMAL`, - * `FlxButton.HIGHLIGHT` or `FlxButton.PRESSED`. - - - - * The properties of this button's `onUp` event (callback function, sound). - - - - * The properties of this button's `onDown` event (callback function, sound). - - - - * The properties of this button's `onOver` event (callback function, sound). - - - - * The properties of this button's `onOut` event (callback function, sound). - - - - - - <_spriteLabel> - - * We cast label to a `FlxSprite` for internal operations to avoid Dynamic casts in C++ - - - - * We don't need an ID here, so let's just use `Int` as the type. - - - - * The input currently pressing this button, if none, it's `null`. Needed to check for its release. - - - - -1 - - - - - - - - - - - * Called by the game state when state is changed (if this object belongs to the state) - - - - - - - * Called by the game loop automatically, handles mouseover and click detection. - - - - - * Just draws the button graphic and text label to the screen. - - - - - - - * Stamps button's graphic and label onto specified atlas object and loads graphic from this atlas. - * This method assumes that you're using whole image for button's graphic and image has no spaces between frames. - * And it assumes that label is a single frame sprite. - * - * @param atlas Atlas to stamp graphic to. - * @return Whether the button's graphic and label's graphic were stamped on the atlas successfully. - - - - * Basic button update logic - searches for overlaps with touches and - * the mouse cursor and calls `updateStatus()`. - - - - - - - - - - - - - - - - * Updates the button status by calling the respective event handler function. - - - - - - - - - * Using an event listener is necessary for security reasons on flash - - * certain things like opening a new window are only allowed when they are user-initiated. - - - - * Internal function that handles the onUp event. - - - - * Internal function that handles the onDown event. - - - - * Internal function that handles the onOver event. - - - - * Internal function that handles the onOut event. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * Creates a new `FlxTypedButton` object with a gray background. - * - * @param X The x position of the button. - * @param Y The y position of the button. - * @param OnClick The function to call whenever the button is clicked. - - * A simple button class that calls a function when clicked by the mouse. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * The cursor can point to one of these - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { frame_indeces : null, src_h : 0, src_w : 0, isToggle : false, Resize_Ratio : -1, Tile : FlxUI9SliceSprite.TILE_NONE, slice9 : null, H : 20, W : 80, assets : null } - - - - - - - - { Key : "" } - - - - - - - - - { for_toggle : false } - - - - - - - * This interface keeps me from having to use a Dynamic variable to point to a value holding a FlxUITypedButton - * that could be either a FlxUIButton or a FlxUISpriteButton - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.ui.FlxButton - - - - - - - - - - - - - "click_button" - - - - "over_button" - - - - "down_button" - - - - "out_button" - - - - - -1 - - - - FlxUISprite.RESIZE_RATIO_Y - - - - null - - - - FlxUI9SliceSprite.TILE_NONE - - - - false - - - - false - - - - - - - - true - - - - - - - - - - - - - null - - - - null - - - - null - - - - null - - - - null - - - - null - - - - true - - - - true - - - - true - - - - true - - - - true - - - - true - - - - - - - - - - - - - true - - - - false - - - - - - - - - - - - - - false - - - - - - - - flixel.addons.ui.FlxUITypedButton - - - - - - - - - - - - * Set all 3 sets of labelOffsets at once - - - - - - - - * Offset the statusAnimations-index by 3 when toggled. - - - - * Just draws the button graphic and text label to the screen. - - - - - - - - - - - - - - { Redraw : true } - - - - - - - - - - - - { Key : "" } - * Provide a list of assets, load states from each one - * @param assets - * @param key string key for caching (optional) - - - - - - - - - { for_toggle : false } - * Provide one combined asset, load all 3 state frames from it and infer the width/height - * @param asset graphic to load - * @param for_toggle whether this is for a toggle button or not - * @param key string key for caching (optional) - - - - - - - - - - - - - - - - { frame_indeces : null, src_h : 0, src_w : 0, isToggle : false, Resize_Ratio : -1, Tile : FlxUI9SliceSprite.TILE_NONE, slice9 : null, H : 20, W : 80, assets : null } - Graphics chopping functions - - - - * Sets labelOffset to center the label horizontally and vertically - - - - - - - - - - - - - - - - - - - - - - { key : null, src_h : 0, src_w : 0, for_toggle : false } - *UTILITY FUNCTIONS* - - - - - - - - * Combines two stacked button images for a toggle button - - - - - - - - - * Give me three bitmapdatas and I'll return an assembled button bitmapdata for you. - * If overB or downB are missing, it will not include those frames. - - - - - - - - - - - - - - - - - - - - - <_autoCleanup expr="true"> - - true - *******PRIVATE********** - - <_assetsToCleanup expr="[]"> - - [] - - <_no_graphic expr="false"> - - false - - <_src_w expr="0"> - - 0 - - <_src_h expr="0"> - - 0 - - <_frame_indeces> - <_slice9_arrays> - <_slice9_assets> - <_centerLabelOffset expr="null"> - - null - - - - - - - - - { Y : 0, X : 0 } - * Creates a new FlxUITypedButton object with a gray background. - * - * @param X The X position of the button. - * @param Y The Y position of the button. - * @param OnClick The function to call whenever the button is clicked. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - * ... - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - <_noIconGraphicsBkup> - - - null - - - - null - - - - null - - - - null - - - - null - - - - null - - - - - - - - - - - - - { Embedded : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - * You can use this if you have a lot of text parameters - * to set instead of the individual properties. - * - * @param Font The name of the font face for the text display. - * @param Size The size of the font (in pixels essentially). - * @param Color The color of the text in traditional flash 0xRRGGBB format. - * @param Alignment The desired alignment - * @param BorderStyle NONE, SHADOW, OUTLINE, or OUTLINE_FAST (use setBorderFormat) - * @param BorderColor Int, color for the border, 0xRRGGBB format - * @param EmbeddedFont Whether this text field uses embedded fonts or not - * @return This FlxText instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - - - - For ILabeled: - - - - - - - - - For IResizable: - - - - - - - - - - { center : true, Y : 0, X : 0 } - - - - - - - - - - ********PRIVATE******* - - - - * Updates the size of the text field to match the button. - - - - - - - - - - - - - - - - - { Color : FlxColor.WHITE, LoadBlank : false, LoadDefaultGraphics : true, Y : 0, X : 0 } - * Creates a new FlxUIButton. - * - * @param X The X position of the button. - * @param Y The Y position of the button. - * @param Label The text that you want to appear on the button. - * @param OnClick The function to call whenever the button is clicked. - * @param LoadDefaultGraphics By default it will load up with placeholder graphics. Pass false if you want to skip this (i.e. if you will provide your own graphics subsequently, can save time) - * @param LoadBlank Load this button without ANY visible graphics, but still functions (in case you need an invisible click area) - - * This class extends FlxUITypedButton and has a Text label, and is thus - * most analagous to the regular FlxButton - * - * Like all FlxUITypedButton's, it can work as a toggle button, and load - * 9-slice sprites for its button images, and be dynamically resized - * accordingly. - * - * Furthermore, you have the ability to set the text's coloring for each - * state just by adjusting a few public variables - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - { Embedded : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - * You can use this if you have a lot of text parameters - * to set instead of the individual properties. - * - * @param Font The name of the font face for the text display. - * @param Size The size of the font (in pixels essentially). - * @param Color The color of the text in traditional flash 0xRRGGBB format. - * @param Alignment The desired alignment - * @param BorderStyle NONE, SHADOW, OUTLINE, or OUTLINE_FAST (use setBorderFormat) - * @param BorderColor Int, color for the border, 0xRRGGBB format - * @param EmbeddedFont Whether this text field uses embedded fonts or not - * @return This FlxText instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__setLabelFormat public="1" set="method" line="148"> - - - - - - - - - - - { Embedded : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - - - <_HX_SUPER__autoCenterLabel public="1" set="method" line="31"> - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - <_HX_SUPER__copyStyle public="1" set="method" line="31"> - - - - - - - - - For ILabeled: - - <_HX_SUPER__setLabel public="1" set="method" line="148"> - - - - - <_HX_SUPER__getLabel public="1" set="method" line="148"> - - - - - - - For IResizable: - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - - - - - { center : true, Y : 0, X : 0 } - - <_HX_SUPER__addIcon public="1" set="method" line="148"> - - - - - - - - { center : true, Y : 0, X : 0 } - - - <_HX_SUPER__removeIcon public="1" set="method" line="148"> - - - - - <_HX_SUPER__changeIcon public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - ********PRIVATE******* - - <_HX_SUPER__loadDefaultGraphic set="method" line="31"> - - - * Updates the size of the text field to match the button. - - <_HX_SUPER__resetHelpers set="method" line="31"> - - <_HX_SUPER__onDownHandler set="method" line="31"> - - <_HX_SUPER__onOverHandler set="method" line="31"> - - <_HX_SUPER__onOutHandler set="method" line="31"> - - <_HX_SUPER__onUpHandler set="method" line="31"> - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIButton - - - - - - - - - - - "click_check_box" - - - - - - - -1 - - - - false - - - - - true - - - - false - - - - 0 - - - - 0 - - - - 2 - - - - false - - - - - - - - - - - - - - - - - - - - For ILabeled: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ***GETTER/SETTER* - - <_clickCheck set="method" line="283"> - - ***PRIVATE**** - - - - - - - - - - - - - - { LabelW : 100, Y : 0, X : 0 } - - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - - For ILabeled: - - <_HX_SUPER__setLabel public="1" set="method" line="148"> - - - - - <_HX_SUPER__getLabel public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - - - - <_HX_SUPER__anchorTime set="method" line="31"> - - - - - - - - <_HX_SUPER__set_textX set="method" line="148"> - - - - - - - - <_HX_SUPER__set_textY set="method" line="148"> - - - - - <_HX_SUPER__anchorLabelX public="1" set="method" line="31"> - - <_HX_SUPER__anchorLabelY public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__get_text set="method" line="148"> - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - ***GETTER/SETTER* - - <_HX_SUPER__set_checked set="method" line="148"> - - - - <_clickCheck set="method" line="110" override="1"> - - ***PRIVATE**** - - <_HX_SUPER___clickCheck set="method" line="31"> - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUICheckBox - - - - - - - "click_color_swatch" - - - - - - - - - - - - - - SETTERS - - - - - - - - - * Set a color at a specific index in the swatch - * @param Color - * @param index - - - - - - - - - - - * If true, the swatch will draw itself dynamically based on the four colors provided - - - - - - - - - - - - - - - - - - - - - - - - - - - <_origKey expr=""""> - - "" - - <_skipRefresh expr="false"> - - false - - - - - - - - - - - - - - - - { Height : -1, Width : -1, Color : 0xFFFFFF } - * Creates a new color swatch that can store and display a color value - * @param Color Single color for the swatch - * @param Colors Multiple colors for the swatch - * @param Asset An asset for the swatch graphic (optional) - * @param Callback Function to call when clicked - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - "click_color_swatch_selecter" - - - - - <_previewSwatch> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - { IgnoreInvisible : true, PickClosest : true } - - - - - - - - <_previewGraphic> - <_swatchGraphic> - <_selectedSwatch> - <_selectionSprite> - <_dirtyLayout expr="false"> - - false - - - - - - - - - - - - - - - - - { Swatch : null, Preview : null, MaxColumns : -1, SpacingV : 2, SpacingH : 2 } - * A handy little group for selecting color swatches from - * @param X X location - * @param Y Y location - * @param SelectionSprite The selection box sprite (optional, auto-generated if not supplied) - * @param list_colors A list of single-colors to generate swatches from. 1st of 3 alternatives. - * @param list_data A list of swatch data to generate swatches from. 2nd of 3 alternatives. - * @param list_swatches A list of the actual swatch widgets themselves. 3rd of 3 alternatives. - * @param SpacingH Horizontal spacing between swatches - * @param SpacingV Vertical spacing between swatches - * @param MaxColumns Number of horizontal swatches in a row before a line break - * @param Preview Graphic information for the preview swatch - * @param Swatch Graphic information for the regular swatches - - * ... - * @author larsiusprime - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_spacingH set="method" line="148"> - - - - - - - - <_HX_SUPER__set_spacingV set="method" line="148"> - - - - - - - - <_HX_SUPER__set_maxColumns set="method" line="148"> - - - - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - <_HX_SUPER__get_numSwatches set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__updateLayout public="1" set="method" line="31"> - - - - - <_HX_SUPER__changeColors public="1" set="method" line="31"> - - - - - <_HX_SUPER__get_selectedSwatch set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__selectCallback set="method" line="31"> - - - - - - - - <_HX_SUPER__selectByIndex public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__selectByColor public="1" set="method" line="31"> - - - - - - - - - - - { IgnoreInvisible : true, PickClosest : true } - - <_HX_SUPER__selectByColors public="1" set="method" line="31"> - - - - - - - { IgnoreInvisible : true, PickClosest : true } - - - - - - <_HX_SUPER__selectByName public="1" set="method" line="31"> - - - - - <_HX_SUPER__unselect public="1" set="method" line="31"> - - <_HX_SUPER__updateSelected public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIColorSwatchSelecter - flixel.addons.ui.FlxUIColorSwatchSelecter.SwatchGraphic - - - - - - - - - - SETTERS - - <_HX_SUPER__set_color set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Set a color at a specific index in the swatch - * @param Color - * @param index - - <_HX_SUPER__setColorAtIndex public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__set_colors set="method" line="148"> - - - - - - - - - * If true, the swatch will draw itself dynamically based on the four colors provided - - <_HX_SUPER__set_multiColored set="method" line="148"> - - - - - - - - <_HX_SUPER__set_hilight set="method" line="148"> - - - - - - - - <_HX_SUPER__set_midtone set="method" line="148"> - - - - - - - - <_HX_SUPER__set_shadowMid set="method" line="148"> - - - - - - - - <_HX_SUPER__set_shadowDark set="method" line="148"> - - - - - - - - <_HX_SUPER__equalsSwatch public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawDifferenceSwatch public="1" set="method" line="148"> - - - - - <_HX_SUPER__refreshColor public="1" set="method" line="31"> - - <_HX_SUPER__onClick set="method" line="31"> - - <_HX_SUPER__colorKey public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIColorSwatch - - - - - - - 0x00000001 - - - - 0x00000010 - - - - 0x00000100 - - - - 0x00001000 - - - - 0x00010000 - - - - 0x00100000 - - - - 0x01000000 - - - - 0x10000000 - - - - 0x00 - - - - 0x01 - - - - 0x10 - - - - - - - - - true - - - - -1 - - - - 0 - - - - * Exactly what it sounds like. The next input that would trigger a jump doesn't happen, then this flag is reset. - - - - - - - - - { wrap : true, forwardIfInvisible : true } - * Same as setting .location, but lets you specificy what to do if that object is invisible - * @param loc the location you want to set the cursor to - * @param forwardIfInvisible if object @ loc is invisible, keep adding 1 until we find a good state. If false, subtract 1. - * @param wrap if true, wrap around if we reach the end of the list. If false, don't. - - - - * Returns the current widget the cursor is pointing to, if any - * @since 2.1.0 - - - - - - - - - - - - - - - - FirstActive - * If a gamepad's connection is suddenly lost, what should be done? - - - - - - - - <_gamepad> - - - - - - - - - true - - - - 0x00 - - - - - - - - - - - - - - - - * Forces the cursor to change its location to point to this widget, if the widget is in its list - * @param widget - * @return whether the widget was found or not - - - - - - - - * Forces the cursor to to point to whatever widget's center is closest to X,Y -- IF the widget is in its list - * @param X - * @param Y - * @return - - - - - - - - - - - - - - - - - @since 2.1.0 - - - - - - - - - - - - * Set the default key layout quickly using a constant. - * @param code KEYS_TAB, ..._WASD, etc, combine with "|" operator - - <_lists> - - **PRIVATE** - - <_widgets> - <_newMouse> - - - 0 - - - - 0 - - <_clickPressed expr="false"> - - false - - <_defaultCode> - <_rightAnchor> - <_topAnchor> - <_leftAnchor> - <_bottomAnchor> - <_clickTime expr="0"> - - 0 - - - - - - - { exhaustive : true } - - <_sortIDVisible set="method" line="718"> - - - - - <_sortXYWidgetList set="method" line="731"> - - - - - <_sortXYVisible set="method" line="744"> - - - - - <_addToKeys set="method" line="761"> - - - - - <_clearKeys set="method" line="778"> - <_newKeys set="method" line="792"> - <_checkKeys set="method" line="801"> - <_clickKeysJustPressed set="method" line="873"> - <_clickKeysPressed set="method" line="885"> - <_getWidgetPoint set="method" line="897"> - - - - <_doMouseMove set="method" line="936"> - - - - <_doPress set="method" line="971"> - - - - <_doRelease set="method" line="1015"> - - - - <_findNextY set="method" line="1074"> - - - - - - - <_wrapX set="method" line="1147"> - - - - - - <_wrapY set="method" line="1160"> - - - - - - - <_doInput set="method" line="1237"> - - - - - - - { recursion : 0 } - - <_updateCursor set="method" line="1338"> - <_flipAnchor set="method" line="1399"> - - - - - - - - - - - - - - - - - { DefaultKeys : KEYS_TAB, InputMethod : INPUT_KEYS } - ***************************** - - * Cursor object that you can use to "click" on interface elements using a keyboard or gamepad - * TODO: need to support gamepad and/or deal with absence of mouse - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - { wrap : true, forwardIfInvisible : true } - * Same as setting .location, but lets you specificy what to do if that object is invisible - * @param loc the location you want to set the cursor to - * @param forwardIfInvisible if object @ loc is invisible, keep adding 1 until we find a good state. If false, subtract 1. - * @param wrap if true, wrap around if we reach the end of the list. If false, don't. - - <_HX_SUPER__findVisibleLocation public="1" set="method" line="31"> - - - - - - - { wrap : true, forwardIfInvisible : true } - - - - * Returns the current widget the cursor is pointing to, if any - * @since 2.1.0 - - <_HX_SUPER__getCurrentWidget public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_listIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - - - - <_HX_SUPER__set_location set="method" line="148"> - - - - - - - - <_HX_SUPER__set_gamepad set="method" line="148"> - - - - - <_HX_SUPER__get_gamepad set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__addWidgetsFromUI public="1" set="method" line="148"> - - - - - - - - - * Forces the cursor to change its location to point to this widget, if the widget is in its list - * @param widget - * @return whether the widget was found or not - - <_HX_SUPER__jumpTo public="1" set="method" line="148"> - - - - - - - - - - * Forces the cursor to to point to whatever widget's center is closest to X,Y -- IF the widget is in its list - * @param X - * @param Y - * @return - - <_HX_SUPER__jumpToXY public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__addWidgetList public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__addWidget public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__sortWidgets public="1" set="method" line="31"> - - - - - - - @since 2.1.0 - - <_HX_SUPER__clearWidgets public="1" set="method" line="31"> - - - - - - <_HX_SUPER__removeWidget public="1" set="method" line="148"> - - - - - - - - - - * Set the default key layout quickly using a constant. - * @param code KEYS_TAB, ..._WASD, etc, combine with "|" operator - - <_HX_SUPER__setDefaultKeys public="1" set="method" line="31"> - - - - - - - - - { exhaustive : true } - - <_HX_SUPER__getGamepad set="method" line="148"> - - - - - { exhaustive : true } - - <_sortIDVisible set="method" line="74" override="1"> - - - - - <_HX_SUPER___sortIDVisible set="method" line="148"> - - - - - <_sortXYWidgetList set="method" line="74" override="1"> - - - - - <_HX_SUPER___sortXYWidgetList set="method" line="148"> - - - - - <_sortXYVisible set="method" line="74" override="1"> - - - - - <_HX_SUPER___sortXYVisible set="method" line="148"> - - - - - <_addToKeys set="method" line="74" override="1"> - - - - - <_HX_SUPER___addToKeys set="method" line="148"> - - - - - <_clearKeys set="method" line="110" override="1"> - <_HX_SUPER___clearKeys set="method" line="31"> - <_newKeys set="method" line="110" override="1"> - <_HX_SUPER___newKeys set="method" line="31"> - <_checkKeys set="method" line="110" override="1"> - <_HX_SUPER___checkKeys set="method" line="31"> - <_clickKeysJustPressed set="method" line="74" override="1"> - <_HX_SUPER___clickKeysJustPressed set="method" line="148"> - <_clickKeysPressed set="method" line="74" override="1"> - <_HX_SUPER___clickKeysPressed set="method" line="148"> - <_getWidgetPoint set="method" line="74" override="1"> - - - - <_HX_SUPER___getWidgetPoint set="method" line="148"> - - - - <_doMouseMove set="method" line="110" override="1"> - - - - <_HX_SUPER___doMouseMove set="method" line="31"> - - - - <_doPress set="method" line="110" override="1"> - - - - <_HX_SUPER___doPress set="method" line="31"> - - - - <_doRelease set="method" line="110" override="1"> - - - - <_HX_SUPER___doRelease set="method" line="31"> - - - - <_findNextY set="method" line="74" override="1"> - - - - - - - <_HX_SUPER___findNextY set="method" line="148"> - - - - - - - <_wrapX set="method" line="74" override="1"> - - - - - - <_HX_SUPER___wrapX set="method" line="148"> - - - - - - <_wrapY set="method" line="74" override="1"> - - - - - - - <_HX_SUPER___wrapY set="method" line="148"> - - - - - - - <_doInput set="method" line="110" override="1"> - - - - - - - { recursion : 0 } - - <_HX_SUPER___doInput set="method" line="31"> - - - - - - - { recursion : 0 } - - <_updateCursor set="method" line="110" override="1"> - <_HX_SUPER___updateCursor set="method" line="31"> - <_flipAnchor set="method" line="110" override="1"> - - - - - <_HX_SUPER___flipAnchor set="method" line="31"> - - - - - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUICursor - flixel.addons.ui.FlxUICursor.WidgetList - flixel.addons.ui.FlxUICursor.GamepadAutoConnectPreference - flixel.addons.ui.FlxUICursor.SortMethod - - - - - - - - - - "click_dropdown" - - - - - - - - { UseIndexID : false } - * Helper function to easily create a data list for a dropdown menu from an array of strings. - * - * @param StringArray The strings to use as data - used for both label and string ID. - * @param UseIndexID Whether to use the integer index of the current string as ID. - * @return The StrIDLabel array ready to be used in FlxUIDropDownMenu's constructor - - - - - - - - - <_selectedId> - <_selectedLabel> - - - - - - - - - - -
    - - * The header of this dropdown menu. -
    - - - [] - * The list of items that is shown when the toggle button is clicked. - - - - * The background for the list. - - - - - - - - - Automatic - - - - - - - - - - - - - - - - - - - - - - - * Change the contents with a new data list - * Replaces the old content with the new content - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * This creates a new dropdown menu. - * - * @param X x position of the dropdown menu - * @param Y y position of the dropdown menu - * @param DataList The data to be displayed - * @param Callback Optional Callback - * @param Header The header of this dropdown menu - * @param DropPanel Optional 9-slice-background for actual drop down menu - * @param ButtonList Optional list of buttons to be used for the corresponding entry in DataList - * @param UIControlCallback Used internally by FlxUI - - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - - * The background of the header. - - - - * The text that displays the currently selected item. - - - - - - - - - - - - { Width : 120 } - * Creates a new dropdown header to be used in a FlxUIDropDownMenu. - * - * @param Width Width of the dropdown - only relevant when no back sprite was specified - * @param Back Optional sprite to be placed in the background - * @param Text Optional text that displays the current value - * @param Button Optional button that toggles the dropdown list - - * Header for a FlxUIDropDownMenu - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - <_HX_SUPER__get_selectedId set="method" line="148"> - - - - - <_HX_SUPER__set_selectedId set="method" line="148"> - - - - - <_HX_SUPER__get_selectedLabel set="method" line="148"> - - - - - <_HX_SUPER__set_selectedLabel set="method" line="148"> - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - - - - - <_HX_SUPER__set_dropDirection set="method" line="148"> - - - - - <_HX_SUPER__updateButtonPositions set="method" line="31"> - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - <_HX_SUPER__dropsUp set="method" line="148"> - - <_HX_SUPER__exceedsHeight set="method" line="148"> - - <_HX_SUPER__getPanelHeight set="method" line="148"> - - - - - - * Change the contents with a new data list - * Replaces the old content with the new content - - <_HX_SUPER__setData public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__selectSomething set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__makeListButton set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__changeLabelByIndex public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__changeLabelById public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__getBtnByIndex public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getBtnById public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__showList set="method" line="31"> - - - - - <_HX_SUPER__onDropdown set="method" line="31"> - - - - - <_HX_SUPER__onClickItem set="method" line="31"> - - - - <__interp> - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIDropDownMenu - flixel.addons.ui.FlxUIDropDownMenu.FlxUIDropDownHeader - flixel.addons.ui.FlxUIDropDownMenu.FlxUIDropDownMenuDropDirection - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIDropDownMenu - flixel.addons.ui.FlxUIDropDownMenu.FlxUIDropDownHeader - flixel.addons.ui.FlxUIDropDownMenu.FlxUIDropDownMenuDropDirection - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - - { Splice : false } - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - { Splice : false } - - - - - - - <_HX_SUPER__setScrollFactor public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__hasThis public="1" set="method" line="148"> - - - - - - - - - { rect : null } - * Calculates the bounds of the group and sets width/height - * @param rect (optional) -- if supplied, populates this with the boundaries of the group - - <_HX_SUPER__calcBounds public="1" set="method" line="148"> - - - - - { rect : null } - - - - * Floor the positions of all children - - <_HX_SUPER__floorAll public="1" set="method" line="31"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIGroup - - - - - - - - - - "change_input_text" - - - - "enter_input_text" - - - - "delete_input_text" - - - - "input_input_text" - - - - - true - - - - - - - - - - - - - - - - - - - - - - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__onChange set="method" line="31"> - - - - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIInputText - - - - - - - - HORIZONTAL - - - - 10 - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_axis set="method" line="148"> - - - - - - - - <_HX_SUPER__set_length set="method" line="148"> - - - - - - - - <_HX_SUPER__set_thickness set="method" line="148"> - - - - - <_HX_SUPER__refresh set="method" line="31"> - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUILine - flixel.addons.ui.FlxUILine.LineAxis - - - - - - - 0 - - - - 1 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - **PRIVATE** - - <_skipRefresh expr="false"> - - - false - flixel.addons.ui.FlxUIRadioGroup - - - - - - - - - - - - - - - - - flixel.addons.ui.FlxUIRadioGroup - - - - - - - - - - - - - - - - - - - - - - - - - - - - more...", H : 0, W : 0, Widgets : null, Y : 0, X : 0 }]]> - more..." in your language (must use variable!) - * @param Stacking How to stack the widgets? STACK_HORIZONTAL or STACK_VERTICAL - * @param Spacing Space between widgets - * @param PrevButtonOffset Offset for Scroll - Button - * @param NextButtonOffset Offset for Scroll + Button - * @param PrevButton Button to Scroll - - * @param NextButton Button to Scroll +]]> - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_scrollIndex public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stacking public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_spacing public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_moreString public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__setSize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - **PRIVATE** - - <_HX_SUPER__safeAdd set="method" line="148"> - - - - - - - - <_HX_SUPER__getMoreString set="method" line="148"> - - - - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - - - - <_HX_SUPER__onClick set="method" line="31"> - - - - - - flixel.addons.ui.FlxUIRadioGroup - - <_HX_SUPER__refreshList set="method" line="31"> - - <_HX_SUPER__get_width set="method" line="148"> - - <_HX_SUPER__get_height set="method" line="148"> - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIList - - - - - - - - - - - - <_tongue> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - null - - <_makeCursor> - - - * frontend for adding tooltips to things - - <_xml_id expr=""""> - - "" - - <_ui> - <_tongue> - - - false - - <_reload expr="false"> - - false - - <_reload_countdown expr="0"> - - 0 - - - - - - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Safe : true, Context : "ui" } - - - - flixel.addons.ui.FlxUI - - - - * Creates a cursor. Makes it easy to override this function in your own FlxUIState. - * @return - - - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - - - - - - - { BGColor : 0 } - - * This is a simple extension of FlxState that does two things: - * 1) It implements the IEventGetter interface - * 2) Automatically creates a FlxUI objects from a single string id - * - * Usage: - * Create a class that extends FlxUIState, override create, and - * before you call super.create(), set _xml_id to the string id - * of the corresponding UI xml file (leave off the extension). - * - * @author Lars Doucet - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - "click_popup" - - - - - true - - - - STUBS TO MAKE THE INTERFACE HAPPY: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - - - - 0 - - - - 0 - - - - null - - - - 1 - - - - <_width expr="0"> - - 0 - - <_height expr="0"> - - 0 - - - - ********************************** - - - - - - - - - - * Assuming you use the default format, puts this information in the popup. - * This function ONLY works if you are using the default_popup.xml, OR your - * custom xml contains the following assets: - * 2 texts, ids: "title","body" - * 3 buttons, ids: "btn0","btn1","btn2" - * 3 modes, ids: "1btn","2btn","3btn" - * @param title title text - * @param body body text - * @param button_labels up to three button labels - if fewer, shows less buttons - - - - - - - - - - <_quickSetupParams expr="null"> - - <c path="String"/> - - - - null - - - - - - - - - { safe : true, context : "ui" } - - <_doQuickSetup set="method" line="260"> - <_doQuickSetupButtons set="method" line="280"> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - "loading_screen_progress" - - - - "loading_screen_finished" - - - - "loading_screen_cancelled" - - - - "loading_screen_accepted" - - - - 0 - - - - - - - - <c path="String"/> - - - - - - - - - - - - - - - - - - - - - - - - - { canCancel_ : false } - - - - - - - - - - - - - - - - - - - - - { safe : true, context : "ui" } - - <_doQuickSetupButtons set="method" line="217" override="1"> - <_timeSpentAlive expr="0"> - - 0 - - <_currTimer> - <_task expr="null"> - - null - - <_sleepTime expr="0"> - - 0 - - <_closeOnFinished expr="true"> - - true - - <_progress expr="0"> - - 0 - - <_bar> - <_bar_back> - <_title> - <_body> - <_body_temp_txt expr=""$LOADING_BODY""> - - "$LOADING_BODY" - - <_title_temp_txt expr=""$LOADING_TITLE""> - - "$LOADING_TITLE" - - - - - - * A simple loading screen -- you must drive the churning of tasks externally - * - * @author larsiusprime - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_body set="method" line="148"> - - - - - <_HX_SUPER__set_body set="method" line="148"> - - - - - <_HX_SUPER__get_title set="method" line="148"> - - - - - <_HX_SUPER__set_title set="method" line="148"> - - - - - - - - <_HX_SUPER__set_canCancel set="method" line="148"> - - - - - <_HX_SUPER__get_progress set="method" line="148"> - - - - - <_HX_SUPER__set_progress set="method" line="148"> - - - - - - - - - - - - { canCancel_ : false } - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - - - { canCancel_ : false } - - - <_HX_SUPER__create public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - - { safe : true, context : "ui" } - - <_HX_SUPER__myGetTextFallback set="method" line="148"> - - - - - - - { safe : true, context : "ui" } - - <_doQuickSetupButtons set="method" line="110" override="1"> - <_HX_SUPER___doQuickSetupButtons set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUILoadingScreen - - - - <_cachedPoint expr="new FlxPoint()" line="19" static="1"> - - new FlxPoint() - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - <_globalScreenX expr="0"> - - 0 - - <_globalScreenY expr="0"> - - 0 - - - - - - - - * Fetch the world position of the pointer on any given camera. - * NOTE: x and y also store the world position of the pointer on the main camera. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location in world space. - - - - - - - - * Fetch the screen position of the pointer on any given camera. - * NOTE: screenX and screenY also store the screen position of the pointer on the main camera. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location in screen space. - - - - - - - - flixel.FlxCamera - * Fetch the screen position of the pointer relative to given camera's viewport. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location relative to camera's viewport. - - - - - - - * Returns a FlxPoint with this input's x and y. - - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - * Checks to see if some FlxObject overlaps this FlxObject or FlxGroup. - * If the group has a LOT of things in it, it might be faster to use FlxG.overlaps(). - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param ObjectOrGroup The object or group being tested. - * @param Camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return Whether or not the two objects overlap. - - - - - - - - * Directly set the underyling screen position variable. WARNING! You should never use - * this unless you are trying to manually dispatch low-level mouse / touch events to the stage. - - - - - * Helper function to update the cursor used by update() and playback(). - * Updates the x, y, screenX, and screenY variables based on the default camera. - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.system.frontEnds.InputFrontEnd - - - - - - - - true - * Whether or not mouse input is currently enabled. - * @since 4.1.0 - - - - 0 - * Current "delta" value of mouse wheel. If the wheel was just scrolled up, - * it will have a positive value and vice versa. Otherwise the value will be 0. - - - - * A display container for the mouse cursor. It is a child of FlxGame and - * sits at the right "height". Not used on flash with the native cursor API. - - - - true - * Used to toggle the visiblity of the mouse cursor - works on both - * the flixel and the system cursor, depending on which one is active. - - - - false - * Tells flixel to use the default system mouse cursor instead of custom Flixel mouse cursors. - - - - * Check to see if the mouse has just been moved. - * @since 4.4.0 - - - - * Check to see if the left mouse button is currently pressed. - - - - * Check to see if the left mouse button has just been pressed. - - - - * Check to see if the left mouse button has just been released. - - - - * Time in ticks of last left mouse button press. - * @since 4.3.0 - - - - * Check to see if the right mouse button is currently pressed. - - - - * Check to see if the right mouse button has just been pressed. - - - - * Check to see if the right mouse button has just been released. - - - - * Time in ticks of last right mouse button press. - * @since 4.3.0 - - - - * Check to see if the middle mouse button is currently pressed. - - - - * Check to see if the middle mouse button has just been pressed. - - - - * Check to see if the middle mouse button has just been released. - - - - * Time in ticks of last middle mouse button press. - * @since 4.3.0 - - <_leftButton> - - flixel.input.mouse.FlxMouseButton - * The left mouse button. - - <_middleButton> - - flixel.input.mouse.FlxMouseButton - * The middle mouse button. - - <_rightButton> - - flixel.input.mouse.FlxMouseButton - * The right mouse button. - - <_cursor expr="null"> - - null - * This is just a reference to the current cursor image, if there is one. - - <_cursorBitmapData> - <_wheelUsed expr="false"> - - false - - <_visibleWhenFocusLost expr="true"> - - true - - <_lastX expr="0"> - - 0 - * Helper variables for recording purposes. - - <_lastY expr="0"> - - 0 - - <_lastWheel expr="0"> - - 0 - - <_lastLeftButtonState> - <_prevX expr="0"> - - 0 - * Helper variables to see if the mouse has moved since the last update. - - <_prevY expr="0"> - - 0 - - <_stage> - - - - - - - - - { YOffset : 0, XOffset : 0, Scale : 1 } - * Helper variables for flash native cursors - - - - * Unload the current cursor graphic. If the current cursor is visible, - * then the default system cursor is loaded up to replace the old one. - - - - - - - - * Clean up memory. Internal use only. - - - - * Resets the just pressed/just released flags and sets mouse to not pressed. - - - - * Called by the internal game loop to update the mouse pointer's position in the game world. - * Also updates the just pressed/just released flags. - - - - * Called from the main Event.ACTIVATE that is dispatched in FlxGame - - - - * Called from the main Event.DEACTIVATE that is dispatched in FlxGame - - - - - - - - * Internal event handler for input and focus. - - - - - - - * We're detecting the mouse leave event to prevent a bug where `pressed` remains true - * for the middle and right mouse button when pressed and dragged outside the window. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - flixel.system.replay.FlxReplay - - - - - - - flixel.system.replay.FlxReplay - - - - - - - - - flixel.FlxG - - * @param cursorContainer The cursor container sprite passed by FlxGame - - * This class helps contain and track the mouse pointer in your game. - * Automatically accounts for parallax scrolling, etc. - * Normally accessed via `FlxG.mouse`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - true - - - - * Called by the internal game loop to update the mouse pointer's position in the game world. - * Also updates the just pressed/just released flags. - - - - - - * A customized extension to FlxMouse that lets us add in accessibility stuff - * like using the keyboard to control mouse moving/clicking - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Called by the internal game loop to update the mouse pointer's position in the game world. - * Also updates the just pressed/just released flags. - - <_HX_SUPER__update set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIMouse - - - - - - - - - - 0 - - - - 1 - - - - "click_numeric_stepper" - - - - "edit_numeric_stepper" - - - - "change_numeric_stepper" - - - - - - - 0 - - - - 0 - - - - 0 - - - - 10 - - - - 0 - - - - STACK_HORIZONTAL - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__textBoxValueChanged expr="false"> - - false - - <_onInputTextEvent set="method" line="281"> - - - - - <_onPlus set="method" line="311"> - <_onMinus set="method" line="318"> - <_doCallback set="method" line="325"> - - - - - - - - - - - - - - - - - - - - { IsPercent : false, Stack : STACK_HORIZONTAL, Decimals : 0, Max : 999, Min : -999, DefaultValue : 0, StepSize : 1, Y : 0, X : 0 } - * This creates a new dropdown menu. - * - * @param X x position of the dropdown menu - * @param Y y position of the dropdown menu - * @param StepSize How big is the step - * @param DefaultValue Optional default numerical value for the stepper to display - * @param Min Optional Minimum values for the stepper - * @param Max Optional Maximum and Minimum values for the stepper - * @param Decimals Optional # of decimal places - * @param Stack Stacking method - * @param TextField Optional text field - * @param ButtonPlus Optional button to use for plus - * @param ButtonMinus Optional button to use for minus - * @param IsPercent Whether to portray the number as a percentage - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_min set="method" line="148"> - - - - - - - - <_HX_SUPER__set_max set="method" line="148"> - - - - - - - - <_HX_SUPER__set_value set="method" line="148"> - - - - - - - - <_HX_SUPER__set_decimals set="method" line="148"> - - - - - - - - <_HX_SUPER__set_isPercent set="method" line="148"> - - - - - - - - <_HX_SUPER__set_stack set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <_onInputTextEvent set="method" line="110" override="1"> - - - - - <_HX_SUPER___onInputTextEvent set="method" line="31"> - - - - - <_onPlus set="method" line="110" override="1"> - <_HX_SUPER___onPlus set="method" line="31"> - <_onMinus set="method" line="110" override="1"> - <_HX_SUPER___onMinus set="method" line="31"> - <_doCallback set="method" line="110" override="1"> - - - - <_HX_SUPER___doCallback set="method" line="31"> - - - - <__interp> - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUINumericStepper - - - - - - - - - <_HX_SUPER__set_immovable set="method" line="148"> - - - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - - <_HX_SUPER__get_width set="method" line="148"> - - <_HX_SUPER__get_height set="method" line="148"> - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_angle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_facing set="method" line="148"> - - - - - - - - <_HX_SUPER__set_moves set="method" line="148"> - - - - - - - - <_HX_SUPER__set_offset set="method" line="148"> - - - - - - - - <_HX_SUPER__set_origin set="method" line="148"> - - - - - - - - <_HX_SUPER__set_scale set="method" line="148"> - - - - - - - - <_HX_SUPER__set_scrollFactor set="method" line="148"> - - - - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - - - - - - { Y : 0, X : 0 } - - <_HX_SUPER__setPosition public="1" set="method" line="31"> - - - - - - { Y : 0, X : 0 } - - - - ********************************** - - <_HX_SUPER__create public="1" set="method" line="31"> - - <_HX_SUPER__destroy set="method" line="148"> - - - - - - - - * Assuming you use the default format, puts this information in the popup. - * This function ONLY works if you are using the default_popup.xml, OR your - * custom xml contains the following assets: - * 2 texts, ids: "title","body" - * 3 buttons, ids: "btn0","btn1","btn2" - * 3 modes, ids: "1btn","2btn","3btn" - * @param title title text - * @param body body text - * @param button_labels up to three button labels - if fewer, shows less buttons - - <_HX_SUPER__quickSetup public="1" set="method" line="31"> - - - - - - - - - - - - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__castParent set="method" line="148"> - - - - - - - - { safe : true, context : "ui" } - - <_HX_SUPER__myGetTextFallback set="method" line="148"> - - - - - - - { safe : true, context : "ui" } - - <_doQuickSetup set="method" line="110" override="1"> - <_HX_SUPER___doQuickSetup set="method" line="31"> - <_doQuickSetupButtons set="method" line="110" override="1"> - <_HX_SUPER___doQuickSetupButtons set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIPopup - - - - - - - - - "click_radio_group" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - * If this is false, when the size changes it auto-expands the scroll canvas - * If this is true, when the size changes it forces it to scroll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *GETTER / SETTER* - - - - - - - - - - - - - - - - - - - - - - - - - - - * If you want to show only a portion of the radio group, scrolled line-by-line - * This will scroll the "pane" by that amount and return how many lines are above/below - * the currently visible pane - * @param scroll How many lines DOWN you have scrolled - * @param max_items (optional) Max amount of lines visible - * @return a FlxPoint of off-pane radio lines : (count_above,count_below) - - - - - - - <_list_active> - - *PRIVATE* - - <_list> - <_box_asset> - <_dot_asset> - <_labels> - <_ids> - <_label_width expr="100"> - - 100 - - <_width expr="100"> - - 100 - - <_height expr="20"> - - 20 - - <_y_space expr="25"> - - 25 - - <_selected expr="0"> - - 0 - - <_clickable expr="true"> - - true - - <_list_radios> - <_refreshRadios set="method" line="422"> - - * Create the radio elements if necessary, and/or just refresh them - - - - <_onCheckBoxEvent set="method" line="560"> - - - - <_onClick set="method" line="565"> - - - - - - - - - - - - - - - - - - - - - - - - - - more...", label_width_ : 100, height_ : 20, width_ : 100, y_space_ : 25, callback_ : null }]]> - more..." in your language. MUST have "" token - * @param PrevButtonOffset Offset for the "previous" scroll button - * @param NextButtonOffset Offset for the "next" scroll button - * @param PrevButton Your own custom button for the "previous" scroll button - * @param NextButton Your own custom button for the "next" scroll button]]> - - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - null - - - - - - - - - - - - - - - { CheckColor : null } - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_activeStyle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_inactiveStyle set="method" line="148"> - - - - - <_HX_SUPER__get_numRadios set="method" line="148"> - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - - - - <_HX_SUPER__set_params set="method" line="148"> - - - - - - - - <_HX_SUPER__set_width public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__loadGraphics public="1" set="method" line="31"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__updateLabel public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__updateId public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__show public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__updateRadios public="1" set="method" line="31"> - - - - - - <_HX_SUPER__getRadios public="1" set="method" line="148"> - - - - - <_HX_SUPER__getLabel public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getId public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getIsVisible public="1" set="method" line="148"> - - - - - - *GETTER / SETTER* - - <_HX_SUPER__get_clickable set="method" line="148"> - - - - - <_HX_SUPER__set_clickable set="method" line="148"> - - - - - <_HX_SUPER__get_selectedIndex set="method" line="148"> - - - - - <_HX_SUPER__set_selectedIndex set="method" line="148"> - - - - - <_HX_SUPER__get_selectedLabel set="method" line="148"> - - - - - <_HX_SUPER__set_selectedLabel set="method" line="148"> - - - - - <_HX_SUPER__get_selectedId set="method" line="148"> - - - - - <_HX_SUPER__set_selectedId set="method" line="148"> - - - - - - - - - - * If you want to show only a portion of the radio group, scrolled line-by-line - * This will scroll the "pane" by that amount and return how many lines are above/below - * the currently visible pane - * @param scroll How many lines DOWN you have scrolled - * @param max_items (optional) Max amount of lines visible - * @return a FlxPoint of off-pane radio lines : (count_above,count_below) - - <_HX_SUPER__setLineScroll public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__setRadioActive public="1" set="method" line="31"> - - - - - <_refreshRadios set="method" line="110" override="1"> - - * Create the radio elements if necessary, and/or just refresh them - - <_HX_SUPER___refreshRadios set="method" line="31"> - - <_HX_SUPER__updateActives set="method" line="31"> - - <_HX_SUPER__makeActiveStyle set="method" line="148"> - <_onCheckBoxEvent set="method" line="110" override="1"> - - - - <_HX_SUPER___onCheckBoxEvent set="method" line="31"> - - - - <_onClick set="method" line="74" override="1"> - - - - - <_HX_SUPER___onClick set="method" line="148"> - - - - - <__interp> - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIRadioGroup - flixel.addons.ui.FlxUIRadioGroup.CheckStyle - - - - - - - - - <_HX_SUPER__applyToCheck public="1" set="method" line="31"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIRadioGroup - flixel.addons.ui.FlxUIRadioGroup.CheckStyle - - - - - - - - - true - - - - - - - - - - - - - - - - { H : 16, W : 16, Y : 0, X : 0 } - - * A scalable object with width and height that isn't used for display purposes - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIRegion - - - - - - - - "change_slider" - - - - - true - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUISlider - - - - - - - - - - - - For IResizable: - - - - - - - - - - - { Y : 0, X : 0 } - * Creates a new FlxUISpriteButton. - * - * @param X The X position of the button. - * @param Y The Y position of the button. - * @param Label The text that you want to appear on the button. - * @param OnClick The function to call whenever the button is clicked. - - * This class extends FlxUISpriteButton and has a Sprite "label" - * - * Like all FlxUITypedButton's, it can work as a toggle button, and load - * 9-slice sprites for its button images, and be dynamically resized - * accordingly. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - For IResizable: - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - <_HX_SUPER__autoCenterLabel public="1" set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUISpriteButton - - - - - - - - - <_HX_SUPER__set_resize_ratio set="method" line="148"> - - - - - - - - <_HX_SUPER__set_resize_point set="method" line="148"> - - - - - - - - <_HX_SUPER__recycle public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__loadGraphicAtScale public="1" set="method" line="31"> - - - - - - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - * Load an image from an embedded graphic file. - * - * @param Graphic The image you want to use. - * @param Animated Whether the Graphic parameter is a single sprite or a row of sprites. - * @param Width Optional, specify the width of your sprite (helps FlxSprite figure out what to do with non-square sprites or sprite sheets). - * @param Height Optional, specify the height of your sprite (helps FlxSprite figure out what to do with non-square sprites or sprite sheets). - * @param Unique Optional, whether the graphic should be a unique instance in the graphics cache. Default is false. - * @param Key Optional, set this parameter if you're loading BitmapData. - * @return This FlxSprite instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadGraphic public="1" set="method" line="148"> - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - <_HX_SUPER__loadFromScaledGraphic set="method" line="31"> - - - - - - - - - - { Unique : false, Height : 0, Width : 0, Animated : false } - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUISprite - - - - - - - - - null - - - - - null - - - - false - - <_cursorHidden expr="false"> - - false - - - - * frontend for adding tooltips to things - - <_xml_id expr=""""> - - "" - - <_makeCursor> - <_ui_vars> - - - - <_ui> - <_tongue> - - - false - - <_reload expr="false"> - - false - - <_reload_countdown expr="0"> - - 0 - - - - - - - - - null - - - - - - - - - flixel.addons.ui.FlxUI - - <_cleanupUIVars set="method" line="244"> - - - - - - - - - - - - { height : 600, width : 800 } - - - - - - - - - - - - - - - - - @since 2.1.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Safe : true, Context : "ui" } - - - - * Creates a cursor. Makes it easy to override this function in your own FlxUIState. - * @return - - - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - - - - - - - - - - - - - - * This is a simple extension of FlxState that does two things: - * 1) It implements the IFlxUIState interface - * 2) Automatically creates a FlxUI objects from a single string id - * - * Usage: - * Create a class that extends FlxUIState, override create, and - * before you call super.create(), set _xml_id to the string id - * of the corresponding UI xml file (leave off the extension). - * - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - flixel.addons.ui.FlxUI - - <_HX_SUPER__cleanup set="method" line="31"> - <_cleanupUIVars set="method" line="110" override="1"> - <_HX_SUPER___cleanupUIVars set="method" line="31"> - - - - - - <_HX_SUPER__setUIVariable public="1" set="method" line="31"> - - - - - - - - - - - { height : 600, width : 800 } - - <_HX_SUPER__resizeScreen public="1" set="method" line="31"> - - - - - - { height : 600, width : 800 } - - - - - - <_HX_SUPER__openSubState public="1" set="method" line="31"> - - - - - <_HX_SUPER__closeSubState public="1" set="method" line="31"> - - - - - - <_HX_SUPER__onResize public="1" set="method" line="31"> - - - - - - - - - - @since 2.1.0 - - <_HX_SUPER__onShowTooltip public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__forceFocus public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__onCursorEvent public="1" set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__getRequest public="1" set="method" line="148"> - - - - - - - - - - - - - - { Safe : true, Context : "ui" } - - <_HX_SUPER__getText public="1" set="method" line="148"> - - - - - - - { Safe : true, Context : "ui" } - - - - * Creates a cursor. Makes it easy to override this function in your own FlxUIState. - * @return - - <_HX_SUPER__createCursor set="method" line="148"> - - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - <_HX_SUPER__createUI set="method" line="148"> - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - - - - - <_HX_SUPER__loadUIFromData set="method" line="31"> - - - - - - - - <_HX_SUPER__reloadUI set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIState - - - - - - - - - - <_HX_SUPER__forceScrollFactor public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__forceFocus public="1" set="method" line="31"> - - - - - - <_HX_SUPER__create public="1" set="method" line="31"> - - - - - - <_HX_SUPER__onCursorEvent public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__onShowTooltip public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__onResize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__getRequest public="1" set="method" line="148"> - - - - - - - - - - - - - - { Safe : true, Context : "ui" } - - <_HX_SUPER__getText public="1" set="method" line="148"> - - - - - - - { Safe : true, Context : "ui" } - - - - flixel.addons.ui.FlxUI - - <_HX_SUPER__cleanup set="method" line="31"> - - - * Creates a cursor. Makes it easy to override this function in your own FlxUIState. - * @return - - <_HX_SUPER__createCursor set="method" line="148"> - - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - <_HX_SUPER__createUI set="method" line="148"> - - - - - - - - - { liveFilePath_ : "", tongue_ : null, superIndex_ : null, ptr : null, data : null } - - - <_HX_SUPER__reloadUI set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUISubState - - - - - - - - - - "tab_menu_click" - - - - "front" - - - - "back" - - - - - - - - - - - - To make IEventGetter happy - - - - - - - - - - - For IFlxUIClickable - - - - - - - - For IResizable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_onTabEvent set="method" line="331"> - - - - - - - - - <_back> - - *PRIVATE* - - <_tabs> - <_tab_groups> - <_stretch_tabs expr="false"> - - false - - <_tab_spacing expr="null"> - - null - - <_tab_stacking expr="null"> - - null - - <_tab_offset expr="null"> - - null - - <_selected_tab_id expr=""""> - - "" - - <_selected_tab expr="-1"> - - -1 - - - - - - - - - - - <_showOnlyGroup set="method" line="448"> - - - - - - - - - - { W : -1 } - - - - - - - - - - - - - - - - { tab_stacking : null, tab_spacing : null, stretch_tabs : false } - *PUBLIC* - - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_numTabs public="1" set="method" line="148"> - - - - - - - - - To make IEventGetter happy - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__getRequest public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_skipButtonUpdate set="method" line="148"> - - - - - - For IResizable - - <_HX_SUPER__get_width set="method" line="148"> - - <_HX_SUPER__get_height set="method" line="148"> - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - <_HX_SUPER__get_selected_tab set="method" line="148"> - - - - - <_HX_SUPER__set_selected_tab set="method" line="148"> - - - - - <_HX_SUPER__get_selected_tab_id set="method" line="148"> - - - - - <_HX_SUPER__set_selected_tab_id set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__getTab public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__getTabGroup public="1" set="method" line="148"> - - - - - - <_HX_SUPER__getBack public="1" set="method" line="148"> - - - - - <_HX_SUPER__replaceBack public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__addGroup public="1" set="method" line="31"> - - - - <_onTabEvent set="method" line="110" override="1"> - - - - <_HX_SUPER___onTabEvent set="method" line="31"> - - - - - <_HX_SUPER__stackTabs public="1" set="method" line="31"> - - - - - <_HX_SUPER__showTabId public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__sortTabs set="method" line="148"> - - - - - - - - - <_HX_SUPER__showTabInt set="method" line="31"> - - - - <_showOnlyGroup set="method" line="110" override="1"> - - - - <_HX_SUPER___showOnlyGroup set="method" line="31"> - - - - - <_HX_SUPER__getFirstTab set="method" line="148"> - - - - - - { W : -1 } - - <_HX_SUPER__distributeTabs set="method" line="31"> - - - - - { W : -1 } - - <__interp> - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUITabMenu - - - - - - - - - - true - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - { EmbeddedFont : true, Size : 8, FieldWidth : 0, Y : 0, X : 0 } - - * Simple extension to the basic text field class. - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__set_minimumHeight public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_params public="1" set="method" line="148"> - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUIText - - - - - - - - - - - - - <_tilesWide expr="2"> - - 2 - - <_tilesTall expr="2"> - - 2 - - <_color1 expr="0"> - - 0 - - <_color2 expr="0"> - - 0 - - - - false - - - - -1 - - - - - - - - - - - - { color2 : 0xffc4c4c4, color1 : 0xff808080 } - - - - - - - - - - - - - - - - - - - - - - - - - { FloorToEven : false, color2 : 0xc4c4c4, color1 : 0x808080 } - - * This is mostly just for testing purposes, it is NOT a replacement for FlxTileMap - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_widthInTiles set="method" line="148"> - - <_HX_SUPER__get_heightInTiles set="method" line="148"> - - - - - - - - - - - { color2 : 0xffc4c4c4, color1 : 0xff808080 } - - <_HX_SUPER__makeTiles set="method" line="31"> - - - - - - - - - - { color2 : 0xffc4c4c4, color1 : 0xff808080 } - - - - - - - <_HX_SUPER__constrain set="method" line="148"> - - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - <__interp> - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUITileTest - - - - - - - - - - - flixel.addons.ui.FlxUITooltipManager - - - - - - - - - - - - - - - - - - <c path="String"/> - - - - - - - - - - - - { ShowArrow : true, AutoSizeHorizontal : true, AutoSizeVertical : true, Body : "", Title : "" } - - - - - - - - - *SETTERS* - - - - - - - - - - - - - - <_bkg> - - ********* - - <_titleText> - <_bodyText> - <_arrow> - <_arrowBkg> - <_anchorArrow> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - true - * Turn on flipping the anchor position around in order to keep a tooltip on screen - - - - null - * Default anchor position for tooltips where no anchor is defined - - - - - - - null - * Optional fixed position to use for ALL tooltips - * @since 2.1.0 - - - - null - * Default style for tooltips where no style is defined - - - - false - - - - 0.1 - - - - @since 2.1.0 - - - - @since 2.2.0 - - - - - flixel.addons.ui.FlxUI - flixel.addons.ui.FlxUIState - flixel.addons.ui.FlxUISubState - - - - - - * Removes all tooltips - - - - * Hides the tooltip that is being displayed right now - - - - @since 2.1.0 - - - - - - - - { checkChildren : true } - * Checks whether the currently shown tooltip belongs to a given FlxSprite, or optionally, any of its children (if it is a FlxUIGroup or FlxUI) - * @param thing the FlxSprite to check - * @param checkChildren whether or not to check its children (default: true) - * @return - - - - - - - - { sticky : true } - * Set an object's tooltip's stickiness (whether it disappears when the mouse moves off of it or not) - * @param thing the thing you want to modify the tooltip for - * @param sticky if true, this tooltip will not disappear until explicitly hidden or until another tooltip is triggered - * @since 2.1.0 - - - - - - - - { value : true } - * Show the tooltip for the given object, if one exists - * @param thing the thing you want to display a tooltip for - * @param value whether to show or hide the tooltip - * @since 2.1.0 - - - - - - - - * Allows you to turn tooltips on or off for an object that has already been added - * @param thing The object you want to turn tooltips on or off for - * @param b On or off - * - * @return true if the object was found and the property set, false if the object has not been added to the tooltip manager - - - - - - - - * Adds a tooltip for this object, using the specified data. - * NOTE: if thing does not implement IFlxUIButton, a new invisible - * button will be created for it in order to drive tooltips. - * - * @param thing The object you want to add a tooltip to. - * @param data - - - - - - - * Remove a tooltip associated with this object, if there is one - * @param thing - - - - - - <_init expr="false"> - - false - *******PRIVATE*********** - - - - list of all the tooltip entries - - - - we actually only ever use one tooltip object :) - - - - -1 - the current tooltip - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - flixel.addons.ui.FlxUITooltip - - - - - - - - - - - - { anchor : null } - - - - - - - - - - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - false - * Intentionally shown by the programmer, when shown will only unshow when explicitly hidden or another tooltip is shown - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <c path="String"/> - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - flixel.addons.ui.FlxUI - flixel.addons.ui.FlxUIState - flixel.addons.ui.FlxUISubState - - - <_HX_SUPER__init public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - * Removes all tooltips - - <_HX_SUPER__clear public="1" set="method" line="148"> - - - * Hides the tooltip that is being displayed right now - - <_HX_SUPER__hideCurrent public="1" set="method" line="148"> - - - @since 2.1.0 - - <_HX_SUPER__isVisible public="1" set="method" line="148"> - - - - - - - { checkChildren : true } - * Checks whether the currently shown tooltip belongs to a given FlxSprite, or optionally, any of its children (if it is a FlxUIGroup or FlxUI) - * @param thing the FlxSprite to check - * @param checkChildren whether or not to check its children (default: true) - * @return - - <_HX_SUPER__doesCurrentTooltipBelongTo public="1" set="method" line="148"> - - - - - - { checkChildren : true } - - - - - - - - { sticky : true } - * Set an object's tooltip's stickiness (whether it disappears when the mouse moves off of it or not) - * @param thing the thing you want to modify the tooltip for - * @param sticky if true, this tooltip will not disappear until explicitly hidden or until another tooltip is triggered - * @since 2.1.0 - - <_HX_SUPER__stickyTooltipFor public="1" set="method" line="31"> - - - - - - { sticky : true } - - - - - - - - { value : true } - * Show the tooltip for the given object, if one exists - * @param thing the thing you want to display a tooltip for - * @param value whether to show or hide the tooltip - * @since 2.1.0 - - <_HX_SUPER__showTooltipFor public="1" set="method" line="31"> - - - - - - { value : true } - - - - - - - - * Allows you to turn tooltips on or off for an object that has already been added - * @param thing The object you want to turn tooltips on or off for - * @param b On or off - * - * @return true if the object was found and the property set, false if the object has not been added to the tooltip manager - - <_HX_SUPER__enableTooltipFor public="1" set="method" line="148"> - - - - - - - - - - - * Adds a tooltip for this object, using the specified data. - * NOTE: if thing does not implement IFlxUIButton, a new invisible - * button will be created for it in order to drive tooltips. - * - * @param thing The object you want to add a tooltip to. - * @param data - - <_HX_SUPER__add public="1" set="method" line="31"> - - - - - - - - - - * Remove a tooltip associated with this object, if there is one - * @param thing - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__hide set="method" line="31"> - - - - - - - - <_HX_SUPER__findThing set="method" line="148"> - - - - - - - - <_HX_SUPER__findBtn set="method" line="148"> - - - - - - - - <_HX_SUPER__findObj set="method" line="148"> - - - - - - - - - - - - - - <_HX_SUPER__set_fixedPosition set="method" line="148"> - - - - - - - - - - - - - - - flixel.addons.ui.FlxUITooltip - - <_HX_SUPER__set_showTooltipArrow set="method" line="148"> - - - - - - - - <_HX_SUPER__show set="method" line="31"> - - - - - - - - - - { anchor : null } - - <_HX_SUPER__checkAutoFlip set="method" line="148"> - - - - - - { anchor : null } - - - - - - <_HX_SUPER__set_cameras set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUITooltipManager - flixel.addons.ui.FlxUITooltipManager.FlxUITooltipEntry - flixel.addons.ui.FlxUITooltipManager.FlxUITooltipData - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUITooltipManager - flixel.addons.ui.FlxUITooltipManager.FlxUITooltipEntry - flixel.addons.ui.FlxUITooltipManager.FlxUITooltipData - - - - - - - - - - - - - - - { ShowArrow : true, AutoSizeHorizontal : true, AutoSizeVertical : true, Body : "", Title : "" } - - <_HX_SUPER__show public="1" set="method" line="31"> - - - - - - - - - - { ShowArrow : true, AutoSizeHorizontal : true, AutoSizeVertical : true, Body : "", Title : "" } - - - <_HX_SUPER__get_height set="method" line="148"> - - <_HX_SUPER__hide public="1" set="method" line="31"> - - - - - - *SETTERS* - - <_HX_SUPER__set_anchor public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_style public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_title public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_body public="1" set="method" line="148"> - - - - - - - - - - - - - <_HX_SUPER__refresh set="method" line="148"> - - - - - - - - - - - - - - - <_HX_SUPER__refreshBkg set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__getStyleKey set="method" line="148"> - - - - - - - - - - <_HX_SUPER__makeArrowBkg set="method" line="148"> - - - - - - - - - <_HX_SUPER__getArrowAnchor set="method" line="148"> - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUITooltip - flixel.addons.ui.FlxUITooltip.FlxUITooltipStyle - - - - - - <_HX_SUPER__get_isRoot set="method" line="148"> - - <_HX_SUPER__get_tongue set="method" line="148"> - - - - - <_HX_SUPER__set_tongue set="method" line="148"> - - - - - - - - <_HX_SUPER__set_focus set="method" line="148"> - - - - <_tongueSet set="method" line="110" override="1"> - - - - - - * Make sure to recursively propogate the tongue pointer down to all my members - - <_HX_SUPER___tongueSet set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__callEvent public="1" set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__getEvent public="1" set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__getRequest public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__onFocus public="1" set="method" line="31"> - - - - - - - - - - - { suppressed : true } - - <_HX_SUPER__setWidgetSuppression set="method" line="31"> - - - - - - - { suppressed : true } - - - - - - - * This causes FlxUI to respond to a specific widget losing focus - * @param widget - - <_HX_SUPER__onFocusLost public="1" set="method" line="31"> - - - - - - - - - * Set a pointer to another FlxUI for the purposes of indexing - * @param flxUI - - <_HX_SUPER__setSuperIndex public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__toggleShow public="1" set="method" line="148"> - - - - - - - - - - - { Active : null } - - <_HX_SUPER__showGroup public="1" set="method" line="31"> - - - - - - - { Active : null } - - - - - - - - - { Active : null } - - <_HX_SUPER__showAsset public="1" set="method" line="31"> - - - - - - - { Active : null } - - - - - - - - { destroy : true } - * Removes an asset - * @param key the asset to remove - * @param destroy whether to destroy it - * @return the asset, or null if destroy=true - - <_HX_SUPER__removeAsset public="1" set="method" line="148"> - - - - - - { destroy : true } - - - - - - - - - - { recursive : false, group_name : "" } - * Adds an asset to this UI, and optionally puts it in a group - * @param asset the IFlxUIWidget asset you want to add - * @param key unique key for this asset. If it already exists, this fails. - * @param group_name string name of group inside this FlxUI you want to add it to. - * @param recursive whether to recursively search through sub-ui's - - <_HX_SUPER__addAsset public="1" set="method" line="148"> - - - - - - - - { recursive : false, group_name : "" } - - - - - - - - - - - { destroy_old : true, center_y : true, center_x : true } - - - <_HX_SUPER__replaceAsset public="1" set="method" line="148"> - - - - - - - - - { destroy_old : true, center_y : true, center_x : true } - - - - * Remove all the references and pointers, then destroy everything - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - Xml - * Main setup function - pass in a Access(xml) object - * to set up your FlxUI - * @param data - - <_HX_SUPER__load public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__unparentXML set="method" line="148"> - - - - <_loadPointSize set="method" line="110" override="1"> - - - - <_HX_SUPER___loadPointSize set="method" line="31"> - - - - <_loadSub set="method" line="110" override="1"> - - - - - - { iteration : 0 } - - <_HX_SUPER___loadSub set="method" line="31"> - - - - - - { iteration : 0 } - - <_addTags set="method" line="110" override="1"> - - - - - <_HX_SUPER___addTags set="method" line="31"> - - - - - <_loadGlobals set="method" line="74" override="1"> - - - - - <_HX_SUPER___loadGlobals set="method" line="148"> - - - - - <_postLoad set="method" line="110" override="1"> - - - - <_HX_SUPER___postLoad set="method" line="31"> - - - - <_sendTo set="method" line="110" override="1"> - - - - - <_HX_SUPER___sendTo set="method" line="31"> - - - - - - - - - - - { recursive : true } - * Send an asset to the front of the member list that it's in - * @param name string identifier of the asset - * @param recursive whether to check superIndex if not found - - <_HX_SUPER__sendToFront public="1" set="method" line="31"> - - - - - - { recursive : true } - - - - - - - - { recursive : true } - * Send an asset to either the back of the member list that it's in - * @param name string identifier of the asset - * @param recursive whether to check superIndex if not found - - <_HX_SUPER__sendToBack public="1" set="method" line="31"> - - - - - - { recursive : true } - - - <_HX_SUPER__get_currMode set="method" line="148"> - - - - - <_HX_SUPER__set_currMode set="method" line="148"> - - - - - - - - - - { target_name : "" } - * Set a mode for this UI. This lets you show/hide stuff basically. - * @param mode_name The mode you want, say, "empty" or "play" for a save slot - * @param target_name UI element to target - "" for the UI itself, otherwise the name of an element that is itself a FlxUI - - <_HX_SUPER__setMode public="1" set="method" line="31"> - - - - - - { target_name : "" } - - - - - - - - - { activeStatus : null, visibleStatus : true } - - <_HX_SUPER__showThing set="method" line="31"> - - - - - - - { activeStatus : null, visibleStatus : true } - - - - - - - - { recursive : true } - ****UTILITY FUNCTIONS******** - - <_HX_SUPER__getGroup public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - <_HX_SUPER__getFlxText public="1" set="method" line="148"> - - - - - - { recursive : true } - - - <_HX_SUPER__getAllAssets public="1" set="method" line="148"> - - <_HX_SUPER__getAssetKeys public="1" set="method" line="148"> - - - - - - - { recursive : true } - - <_HX_SUPER__hasAsset public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - <_HX_SUPER__getAsset public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - <_HX_SUPER__getAssetsWithTag public="1" set="method" line="148"> - - - - - - - - - - * Get the group that contains a given IFlxUIWidget - * @param key the asset key of the IFlxUIWidget - * @param thing the IFlxUIWidget itself - * @return - - <_HX_SUPER__getAssetGroup public="1" set="method" line="148"> - - - - - - - - - - - { recursive : true } - - <_HX_SUPER__getMode public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - <_HX_SUPER__getLabelStyleFromDefinition public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - <_HX_SUPER__getLabelStyleFromData public="1" set="method" line="148"> - - - - - - - - - - - - - { recursive : true, op : "==" } - - <_HX_SUPER__checkVariable public="1" set="method" line="148"> - - - - - - - - - { recursive : true, op : "==" } - - - - - - - <_HX_SUPER__setVariable public="1" set="method" line="31"> - - - - - - - - - - - { recursive : true } - - <_HX_SUPER__getVariable public="1" set="method" line="148"> - - - - - - { recursive : true } - - - - - - - - { recursive : true } - - <_HX_SUPER__getDefinition public="1" set="method" line="148"> - - - - - - { recursive : true } - - - <_HX_SUPER__screenWidth set="method" line="148"> - - <_HX_SUPER__screenHeight set="method" line="148"> - - - - - - - - { splice : false } - * Replace an object in whatever group it is in - * @param original the original object - * @param replace the replacement object - * @param splice if replace is null, whether to splice the entry - - <_HX_SUPER__replaceInGroup set="method" line="148"> - - - - - - - { splice : false } - - - - - - - **********LOADING FUNCTIONS************ - - <_HX_SUPER__applyNodeConditionals set="method" line="148"> - - - - - - - - - - * Make any necessary changes to data/definition xml objects (such as for locale or haxedef settings) - * @param data Access xml data - * @param nodeName name of the node, "locale", "haxedef", or "resolution" - - <_HX_SUPER__applyNodeChanges set="method" line="148"> - - - - - - - - - - - * Load an individual flixel-ui widget from a snippet of xml - * @param type - * @param data - * @return - - <_HX_SUPER__loadThing public="1" set="method" line="148"> - - - - - <_loadThingGetInfo set="method" line="74" override="1"> - - - - <_HX_SUPER___loadThingGetInfo set="method" line="148"> - - - - <_loadTooltip set="method" line="110" override="1"> - - - - - <_HX_SUPER___loadTooltip set="method" line="31"> - - - - - <_loadTooltipData set="method" line="74" override="1"> - - - - <_HX_SUPER___loadTooltipData set="method" line="148"> - - - - <_loadTooltipStyle set="method" line="110" override="1"> - - - - - <_HX_SUPER___loadTooltipStyle set="method" line="31"> - - - - - <_loadTooltipText set="method" line="110" override="1"> - - - - - - <_HX_SUPER___loadTooltipText set="method" line="31"> - - - - - - <_loadAnchor set="method" line="74" override="1"> - - - - <_HX_SUPER___loadAnchor set="method" line="148"> - - - - <_loadThing set="method" line="74" override="1"> - - - - - <_HX_SUPER___loadThing set="method" line="148"> - - - - - <_loadScale set="method" line="74" override="1"> - - - - - - - { str : "scale", default_ : 1.0 } - - <_HX_SUPER___loadScale set="method" line="148"> - - - - - - - { str : "scale", default_ : 1.0 } - - <_loadScaleX set="method" line="74" override="1"> - - - - - - { default_ : 1.0 } - - <_HX_SUPER___loadScaleX set="method" line="148"> - - - - - - { default_ : 1.0 } - - <_loadScaleY set="method" line="74" override="1"> - - - - - - { default_ : 1.0 } - - <_HX_SUPER___loadScaleY set="method" line="148"> - - - - - - { default_ : 1.0 } - - <_loadWidth set="method" line="74" override="1"> - - - - - - - - { defaultRound : "", str : "width", default_ : 10 } - - <_HX_SUPER___loadWidth set="method" line="148"> - - - - - - - - { defaultRound : "", str : "width", default_ : 10 } - - <_loadHeight set="method" line="74" override="1"> - - - - - - - - { defaultRound : "", str : "height", default_ : 10 } - - <_HX_SUPER___loadHeight set="method" line="148"> - - - - - - - - { defaultRound : "", str : "height", default_ : 10 } - - <_loadCompass set="method" line="74" override="1"> - - - - - - { str : "resize_point" } - - <_HX_SUPER___loadCompass set="method" line="148"> - - - - - - { str : "resize_point" } - - <_changeParamsThing set="method" line="110" override="1"> - - - - <_HX_SUPER___changeParamsThing set="method" line="31"> - - - - <_changeThing set="method" line="110" override="1"> - - - - <_HX_SUPER___changeThing set="method" line="31"> - - - - <_alignThing set="method" line="110" override="1"> - - - - - - { suppressError : false } - - <_HX_SUPER___alignThing set="method" line="31"> - - - - - - { suppressError : false } - - <_doAlign set="method" line="110" override="1"> - - - - - - - - - - - { allowShrink : true, allowGrow : true } - - <_HX_SUPER___doAlign set="method" line="31"> - - - - - - - - - - - { allowShrink : true, allowGrow : true } - - <_checkFailure set="method" line="74" override="1"> - - - - <_HX_SUPER___checkFailure set="method" line="148"> - - - - <_resizeThing set="method" line="110" override="1"> - - - - - - - - - - <_HX_SUPER___resizeThing set="method" line="31"> - - - - - - - - - - <_postLoadThing set="method" line="110" override="1"> - - - - - <_HX_SUPER___postLoadThing set="method" line="31"> - - - - - <_loadTileTest set="method" line="74" override="1"> - - - - <_HX_SUPER___loadTileTest set="method" line="148"> - - - - <_loadString set="method" line="74" override="1"> - - - - - <_HX_SUPER___loadString set="method" line="148"> - - - - - <_loadText set="method" line="74" override="1"> - - - - <_HX_SUPER___loadText set="method" line="148"> - - - - <_loadInputText set="method" line="74" override="1"> - - - - <_HX_SUPER___loadInputText set="method" line="148"> - - - - <_loadRadioGroup set="method" line="74" override="1"> - - - - <_HX_SUPER___loadRadioGroup set="method" line="148"> - - - - <_loadCheckBox set="method" line="74" override="1"> - - - - <_HX_SUPER___loadCheckBox set="method" line="148"> - - - - <_loadDropDownMenu set="method" line="74" override="1"> - - - - <_HX_SUPER___loadDropDownMenu set="method" line="148"> - - - - <_loadTest set="method" line="74" override="1"> - - - - <_HX_SUPER___loadTest set="method" line="148"> - - - - <_loadTestSub set="method" line="74" override="1"> - - - - <_HX_SUPER___loadTestSub set="method" line="148"> - - - - - - - - <_HX_SUPER__parseVarValue set="method" line="148"> - - - - <_loadLayout set="method" line="74" override="1"> - - - - <_HX_SUPER___loadLayout set="method" line="148"> - - - - - - - - <_HX_SUPER__addToCleanup set="method" line="31"> - - - - - - - - <_HX_SUPER__addToScaledAssets set="method" line="31"> - - - - - <_HX_SUPER__cleanup set="method" line="31"> - - - - - <_HX_SUPER__createUI set="method" line="148"> - - - - <_loadTabMenu set="method" line="74" override="1"> - - - - <_HX_SUPER___loadTabMenu set="method" line="148"> - - - - <_loadNumericStepper set="method" line="74" override="1"> - - - - - - { setCallback : true } - - <_HX_SUPER___loadNumericStepper set="method" line="148"> - - - - - - { setCallback : true } - - - - - - - - { defaultAxis : FlxUISprite.RESIZE_RATIO_Y } - - <_HX_SUPER__getResizeRatio set="method" line="148"> - - - - - - { defaultAxis : FlxUISprite.RESIZE_RATIO_Y } - - <_loadButton set="method" line="74" override="1"> - - - - - - - - - { load_code : "", isToggle : false, setCallback : true } - flixel.addons.ui.FlxUITypedButton - - - <_HX_SUPER___loadButton set="method" line="148"> - - - - - - - - { load_code : "", isToggle : false, setCallback : true } - - <_loadRegion set="method" line="74" override="1"> - - - - <_HX_SUPER___loadRegion set="method" line="148"> - - - - <_load9SliceSprite set="method" line="74" override="1"> - - - - - - { load_code : "" } - - <_HX_SUPER___load9SliceSprite set="method" line="148"> - - - - - - { load_code : "" } - - - - - - - - - - { srcString : "src" } - - <_HX_SUPER__load9SliceSprite_scaleSub set="method" line="148"> - - - - - - - - { srcString : "src" } - - <_loadBox set="method" line="74" override="1"> - - - - <_HX_SUPER___loadBox set="method" line="148"> - - - - <_loadLine set="method" line="74" override="1"> - - - - <_HX_SUPER___loadLine set="method" line="148"> - - - - <_loadBar set="method" line="74" override="1"> - - - - <_HX_SUPER___loadBar set="method" line="148"> - - - - <_loadSprite set="method" line="74" override="1"> - - - - <_HX_SUPER___loadSprite set="method" line="148"> - - - - - - - - - <_HX_SUPER__loadSmooth set="method" line="148"> - - - - - - - - - - - - - - { tilesTall : 1, tilesWide : 1, scaleName : "scale", attName : "src" } - * For grabbing a resolution-specific version of an image src and dynamically scaling (and caching) it as necessary - * @param data the xml node in question - * @return the unique key of the scaled bitmap - - <_HX_SUPER__loadScaledSrc set="method" line="148"> - - - - - - - - - { tilesTall : 1, tilesWide : 1, scaleName : "scale", attName : "src" } - - - <_HX_SUPER__thisWidth set="method" line="148"> - - <_HX_SUPER__thisHeight set="method" line="148"> - <_getAnchorPos set="method" line="74" override="1"> - - - - - - <_HX_SUPER___getAnchorPos set="method" line="148"> - - - - - - - - - - - - { defaultStr : "" } - - <_HX_SUPER__getRound set="method" line="148"> - - - - - - { defaultStr : "" } - - - - - - - <_HX_SUPER__doRound set="method" line="148"> - - - - - - - - - - - - { height : null, width : null } - - <_HX_SUPER__calcMaxMinSize set="method" line="148"> - - - - - - - { height : null, width : null } - - <_getDataSize set="method" line="74" override="1"> - - - - - - - { default_ : 0 } - - <_HX_SUPER___getDataSize set="method" line="148"> - - - - - - - { default_ : 0 } - - <_getOperation set="method" line="74" override="1"> - - - - - - * @return [:String,:String,:Float]]]> - - <_HX_SUPER___getOperation set="method" line="148"> - - - - <_doOperation set="method" line="74" override="1"> - - - - - - <_HX_SUPER___doOperation set="method" line="148"> - - - - - - <_getStretch set="method" line="74" override="1"> - - - - - - <_HX_SUPER___getStretch set="method" line="148"> - - - - - - - - - - - - <_HX_SUPER__getAssetProperty set="method" line="148"> - - - - - - <_loadCursor set="method" line="110" override="1"> - - - - <_HX_SUPER___loadCursor set="method" line="31"> - - - - <_loadPosition set="method" line="110" override="1"> - - - - - <_HX_SUPER___loadPosition set="method" line="31"> - - - - - <_loadBorder set="method" line="74" override="1"> - - - - <_HX_SUPER___loadBorder set="method" line="148"> - - - - <_loadColor set="method" line="74" override="1"> - - - - - - - { _default : 0xffffffff, colorName : "color" } - - <_HX_SUPER___loadColor set="method" line="148"> - - - - - - - { _default : 0xffffffff, colorName : "color" } - - <_loadFontDef set="method" line="74" override="1"> - - - - <_HX_SUPER___loadFontDef set="method" line="148"> - - - - <_loadFontFace set="method" line="74" override="1"> - - - - <_HX_SUPER___loadFontFace set="method" line="148"> - - - - <_onFinishLoad set="method" line="110" override="1"> - <_HX_SUPER___onFinishLoad set="method" line="31"> - - - - - - - - - { code : "", safe : true, context : "data" } - ********UTILITY FUNCTIONS********** - - <_HX_SUPER__getText public="1" set="method" line="148"> - - - - - - - - { code : "", safe : true, context : "data" } - - - - - - - <_HX_SUPER__formatFromCode set="method" line="148"> - - - - - - - - - - <_HX_SUPER__formatButtonText set="method" line="148"> - - - - - <__interp> - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FlxUI - flixel.addons.ui.FlxUI.UIEventCallback - flixel.addons.ui.FlxUI.Rounding - flixel.addons.ui.FlxUI.SortValue - flixel.addons.ui.FlxUI.NamedBool - flixel.addons.ui.FlxUI.NamedInt - flixel.addons.ui.FlxUI.NamedFloat - flixel.addons.ui.FlxUI.NamedString - flixel.addons.ui.FlxUI.MaxMinSize - flixel.addons.ui.FlxUI.VarValue - - - - - - [".ttf", ".otf"] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { recursion : 0 } - * Given a str like "verdanab.ttf", reverse-engineer the basic font properties - * @param str a string name of a font, such as "verdanab.ttf" - - <_size expr="0"> - - 0 - - - - - - - * If a recognized font extension exists, remove it from the font str - * @param str font + extension, ie "verdanab.ttf" - * @return font - extension, ie "verdanab" - - - - - - - - - - - - * See if a style is "baked" into the font str, and if so return it - * @param str font string, ie, "verdanab", "verdanai", "verdanaz" - * @return "b" for bold, "i" for italic, "z" for bold-italic, "" for normal - - - - - - - - - - - - - - - - { File : "", Extension : ".ttf" } - - * ... - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_size set="method" line="148"> - - - - - <_HX_SUPER__set_size set="method" line="148"> - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - <_HX_SUPER__applyFlx public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__apply public="1" set="method" line="31"> - - - - - - - - - - - { recursion : 0 } - * Given a str like "verdanab.ttf", reverse-engineer the basic font properties - * @param str a string name of a font, such as "verdanab.ttf" - - <_HX_SUPER__fromStr public="1" set="method" line="31"> - - - - - - { recursion : 0 } - - - - - - - * If a recognized font extension exists, remove it from the font str - * @param str font + extension, ie "verdanab.ttf" - * @return font - extension, ie "verdanab" - - <_HX_SUPER__stripFontExtensions set="method" line="148"> - - - - - - - - <_HX_SUPER__getFontExtension set="method" line="148"> - - - - - <_HX_SUPER__fixFontName set="method" line="31"> - - - - - - * See if a style is "baked" into the font str, and if so return it - * @param str font string, ie, "verdanab", "verdanai", "verdanaz" - * @return "b" for bold, "i" for italic, "z" for bold-italic, "" for normal - - <_HX_SUPER__getFontStyle set="method" line="148"> - - - - - - - - <_HX_SUPER__setFontStyle public="1" set="method" line="31"> - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FontDef - - - - - - - - - - - - - - - - - - - { name : "" } - - * A really simple little class that solves an annoying problem with Flash font file names - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.FontFixer - - - - - - - - - - - - - - - - - - - - - - - - { Label : "", Name : "" } - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__copy public="1" set="method" line="148"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.StrNameLabel - - - - - - - - - - - - - - - - - - - - - - GETTERs/SETTERS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { IgnoreInvisible : false } - - - - - - - - - - - - - - - - - * ... - * @author Lars A. Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__setColor public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__getColor public="1" set="method" line="148"> - - - - - - GETTERs/SETTERS - - <_HX_SUPER__get_hilight set="method" line="148"> - - - - - <_HX_SUPER__set_hilight set="method" line="148"> - - - - - <_HX_SUPER__get_midtone set="method" line="148"> - - - - - <_HX_SUPER__set_midtone set="method" line="148"> - - - - - <_HX_SUPER__get_shadowMid set="method" line="148"> - - - - - <_HX_SUPER__set_shadowMid set="method" line="148"> - - - - - <_HX_SUPER__get_shadowDark set="method" line="148"> - - - - - <_HX_SUPER__set_shadowDark set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__copy public="1" set="method" line="148"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - - - - - - { IgnoreInvisible : false } - - <_HX_SUPER__getRawDifference public="1" set="method" line="148"> - - - - - - - { IgnoreInvisible : false } - - - - - - - <_HX_SUPER__doColorsEqual public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__getRGBdelta set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.SwatchData - - - - - - - - - - - - { default_str : "", lower_case : false } - * Safety wrapper for reading a string attribute from xml - * @param data the Xml object - * @param att the name of the attribute - * @param lower_case force lower_case or not - * @param what to return if it is "" - * @return the attribute as a string if it exists, otherwise returns "" - - - - - - - * For conveniently getting the very common "name" attribute, with backwards-compatibility for the old "id" attribute if name is not found - * @param data - * @return - - - - - - - - - - { defaultColor : null, cast32Bit : true } - * Safety wrapper for reading a FlxColor attribute from xml - * @param data the Xml object - * @param att a color string in either 0xRRGGBB or 0xAARRGGBB format - * @param cast32Bit if true adds an alpha channel if not detected - - - - - - - - - - - - - - - - - - - - { default_ : null, lowerCase : true } - - - - - - - - - { cast32Bit : true } - - - - - - - * If a string is a number that ends with a % sign, it will return a normalized percent float (0-100% = 0.0-1.0) - * @param str a percentage value, such as "5%" or "236.214%" - * @return a normalized float, or NaN if not valid input - - - - - - - - - - - - - - - - - - - - - { default_ : 0 } - * Safety wrapper for reading a float attribute from xml - * @param data the Xml object - * @param att the name of the attribute - * @param default_ what to return if the value doesn't exist - * @return the attribute as a float if it exists, otherwise returns default - - - - - - - - - { default_ : 0 } - * Safety wrapper for reading an int attribute from xml - * @param data the Xml object - * @param att the name of the attribute - * @param default_ what to return if the value doesn't exist - * @return the attribute as an int if it exists, otherwise returns default - - - - - - - - - { default_ : null } - * Safety wrapper for reading a point attribute from xml - * @param data the Xml object - * @param att the name of the attribute - * @param default_ what to return if the value doesn't exist - * @return the attribute as a point if it exists, otherwise returns default - - - - - - - - - - - * Parses a point expressed as a string to a FlxPoint object. - * Must be two numbers separated by a "," or an "x" - * This function strips extraneous characters first, ie "(",")"," ","=",":" - * @param str - * @return - - - - - - - - - - { op : "==" } - ","<=",">=" - * @return the value of the comparison]]> - - - - - - - - - { default_ : false } - * Safety wrapper for reading a bool attribute from xml - * @param data the Xml object - * @param att the name of the attribute - * @param what to return if the value doesn't exist - * @return true if att is "true" (case-insensitive) or "1", otherwise false - - - - - - - - - { test : true } - -
    - - - - - - - - { centerY : true, centerX : true } - * Center fb2 on fb1's center point - * @param fb1 a FlxObject (does not move) - * @param fb2 a FlxObject (center on fb1) - * @param centerX center X axis? - * @param centerY center Y axis? -
    - - - - - - - - - - - - - - - - - - - - { padChar : "0" } - * Return a numeric string with leading zeroes - * @param i any integer - * @param d how many digits - * @param padChar what to pad with ("0") by default - * @return i's value as a string padded with padChar, exactly d digits in length - - - - - - - - - - - - - - - { default_color : 0x000000, safe : false, cast32Bit : false } - * Parses hex string to equivalent integer, with safety checks - * @param hex_str string in format 0xRRGGBB or 0xAARRGGBB - * @param cast32Bit add an alpha channel if none is given - * @param safe don't throw errors, just return -1 - * @param default_color what to return if safe is true and it fails - * @return integer value - - - - - - - * Parses an individual hexadecimal string character to the equivalent decimal integer value - * @param hex_char hexadecimal character (1-length string) - * @return decimal value of hex_char - - - - - - - * Parses hex string to equivalent integer - * @param hex_str string in format RRGGBB or AARRGGBB (no "0x") - * @return integer value - - - - - - - * Parses hex pixel value into a 3-length array of [r,g,b] ints - * @param hex - * @return - - - - - - - - - - - - - - - - - * Returns the hex pixel value of 3 r, g, b ints - * @param r - * @param g - * @param b - * @return - - - - - - - - - * Returns a color somewhere between the given two. - * @param hex1 A hexadecimal color - * @param hex2 A hexadecimal color - * @param amt 0=100% hex1, 1=100% hex2, 0.5=50% of each - * @return - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { addHeader : true, wrapData : true } - - - - - - - - { folder : "" } - - - - - - - - - { dir : "assets/json/", extension : "json" } - - - - - - - - - { _default : null } - - - - - - - - - - { dir : "assets/xml/", getAccess : true, extension : "xml" } - - - - - - - * This will remove an array structure, but will leave its contents untouched. - * This can lead to memory leaks! Only use this when you want an array gone but - * you still need the original elements and know what you're doing. - * @param array - - - - - - - * This will MURDER an array, removing all traces of both it and its contents - * @param array - - - - - - - - - - - - { style : "" } - * Given something like "verdana" and "bold" returns "assets/fonts/verdanab" - * @param str - * @param style - * @return - - - - - - - - - { extension : ".ttf", style : "" } - * Given something like "verdana", "bold", ".ttf", returns "assets/fonts/verdanab.ttf" - * @param str - * @param style - * @param extension - * @return - - <_font get="inline" set="null" line="1052" static="1"> - - - - - - { style : "" } - - - - - - - - - - - - - - - * Return string with first character uppercase'd - * @param str - * @return - - - - - - - * Return string with first character uppercase'd, rest lowercase'd - * @param str - * @return - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { smooth : true, H : -1, W : -1 } - * This scales an image that contains tiles, being super OCD about it, making sure each tile is - * properly scaled and put in the correct position - * @param orig_id asset id - * @param scale the scale factor - * @param origW original width of the tile - * @param origH original height of the tile - * @param W final width of the tile - * @param H final height of the tile - * @param smooth - * @return - - - - - - - - - - - - - { Smooth : true, TileH : -1, TileW : -1 } - * This scales an image that contains tiles, being super OCD about it, making sure each tile is - * properly scaled and put in the correct position, and returns the new asset key - * @param orig_id asset id - * @param scale the scale factor - * @param OrigW original width of the tile - * @param OrigH original height of the tile - * @param TileW final width of the tile - * @param TileH final height of the tile - * @param Smooth - * @return the asset key - - - - - - - - - - { smooth : true } - * For grabbing a resolution-specific version of an image src and dynamically scaling (and caching) it as necessary - * @param src the asset key of the base image - * @param W the final scaled width of the new image - * @param H the final scaled height of the new image - * @return the unique key of the scaled bitmap - - - - - - - - - - { checkFlxBitmap : false, Smooth : true } - - - - - - - - - - - { fixAlphaChannel : false, checkFlxBitmap : false, smooth : true } - * For grabbing a version of an image src and dynamically scaling (and caching) it as necessary - * @param src the asset key of the base image - * @param Scale the scale factor of the new image - * @param smooth whether to apply smoothing or not - * @param checkFlxBitmap whether to use the FlxG.bitmap.get cache instead of Assets.getBitmapData - * @return the unique key of the scaled bitmap - - - - - - - - - - - - { suppressError : false, dir4 : "", dir3 : "", dir2 : "", dir1 : "" } - - - - - - - - - - - - - * Converts a PNG file to a comma-separated string. - * pixels that match color_index are flagged - * others are ignored - * must be a PERFECT MATCH - * - * @param color_index The matching color index - * - * @return A comma-separated string containing the level data in a FlxTilemap-friendly format. - - - - - - - - - - - - - - - * Converts a comma and hyphen list string of numbers to an int array - * @param str input, ex: "1,2,3", "2-4", "1,2,3,5-10" - * @return int array, ex: [1,2,3], [2,3,4], [1,2,3,5,6,7,8,9,10] - - - - - - - * Converts a comma and hyphen list string of numbers to a String array - * @param str input, ex: "1,2,3", "2-4", "1,2,3,5-10" - * @return int array, ex: [1,2,3], [2,3,4], [1,2,3,5,6,7,8,9,10] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { multB : 1, multA : 1 } - - - - - - - - - - - - * Get the dimensions of a bit string - - - - - - - * Splits a binary string with endlines into a big long int array - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @since 2.1.0 - - - <_matrix expr="null" line="2287" static="1"> - - null - - * Utility functions, inlined where possible - * @author Lars Doucet - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.ui.U - - - - - - - - - - - { safe : true, context : "data" } - - - - - - - - - - - - * An interface to match FireTongue, so we can use this without making - * a full dependency - * @author Lars Doucet - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - false - - - - false - - <_curIndex expr="0"> - - 0 - - <_iterationsPerUpdate> - <_iterations> - <_callback> - - - * Start the loop (if it's not already started or finished) - - - - - - - - - - - - - - { IterationsPerUpdate : 100 } - * Creates an instance of the FlxAsyncLoop class, used to do a loop while still allowing update() to get called and the screen to refresh. - * - * @param Iterations How many total times should it loop - * @param Callback The function that should be called each loop - * @param IterationsPerUpdate Optional: how many loops before we allow an update() - defaults to 100. - - * Special class for asynchonously performing a loop. - * @author Timothy Ian Hely / SeiferTim - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Start the loop (if it's not already started or finished) - - <_HX_SUPER__start public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.util.FlxAsyncLoop - - - - - - - - - - - * Called when state becomes active. - * - * @param Owner The object the state controls - * @param FSM The FSM instance this state belongs to. Used for changing the state to another. - - - - - - - - - * Called every update loop. - * - * @param Owner The object the state controls - * @param FSM The FSM instance this state belongs to. Used for changing the state to another. - - - - - - - * Called when the state becomes inactive. - * - * @param Owner The object the state controls - - - - * A generic FSM State implementation. Extend this class to create new states. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - * Helper typedef for FlxExtendedFSM's pools - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * The owner of this FSM instance. Gets passed to each state. - - - - * Current state - - - - * Class of current state - - - - * The age of the active state - - - - * Name of this FSM. Used for locking/unlocking when in a stack. - - - - * Binary flag. Used for locking/unlocking when in a stack. - - - - * The stack this FSM belongs to or null - - - - * Optional transition table for this FSM - - - - * Optional map object containing FlxPools for FlxFSMStates - - - - - - - * Updates the active state instance. - - - - * Calls exit on current state - - - - - - - - - - - - - - - * A generic Finite-state machine implementation. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <_lockSignal static="1"> - - - - - - - - - * Sends a message to all active FSMStacks to lock given types. - * @param type You can use `FSMType` abstract for values or build your own. - - - ` - * Only function is to create a static `FlxTypedSignal` that's shared between stacks. - * Otherwise signals would be type specific, and `FlxFSMStack` could not dispatch - * to `FlxFSMStack`]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - * Test if the stack is empty - - <_stack> - <_alteredStack> - <_hasLocks> - <_lockedNames> - <_lockedTypes> - <_lockRemaining> - - - - - - * Updates the states that have not been locked - - - - - - - * Locks the specified FSM for the duration of the update loop - * @param name - - - - * Locks the remaining FSMs for the duration of the update loop - - - - - - - - - - - - - - * Adds the FSM to the front of the stack - * @param FSM - - - - * Removes the first FSM from the stack - * @return The removed FSM - - - - - - - * Adds the FSM to the end of the stack - * @param FSM - - - - * Removes the first FSM from the stack - * @return The removed FSM - - - - - - - * Removes the FSM from the stack and destroys it - * @param The removed FSM - - - - - - - * Removes the FSM with given name from the stack and destroys it - * @param The removed FSM - - - - * Destroys every member in stack and self - - - - * Used for grouping FSM instances and updating them according to the stack's updateMode. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <_table> - <_startState> - <_garbagecollect expr="false"> - - false - - - - - - - - * Polls the transition table for active states - * @param FSM The FlxFSMState the table belongs to - * @return The state that should become or remain active. - - - - - - - - - - - - * Adds a transition condition to the table. - * @param From The state the condition applies to - * @param To The state to transition - * @param Condition Function that returns true if the transition conditions are met - - - - - - - - - - - * Adds a global transition condition to the table. - * @param To The state to transition - * @param Condition Function that returns true if the transition conditions are met - - - - - - - * Add a transition directly - * @param transition - - - - - - - * Sets the starting State - * @param With - - - - - - - - * Replaces given state class with another. - * @param Target State class to replace - * @param Replacement State class to replace with - - - - - - - - - - - - * Removes a transition condition from the table - * @param From From State - * @param To To State - * @param Condition Condition function - * @return True when removed, false if not in table - - - - - - - - - - - - * Tells if the table contains specific transition or transitions. - * @param From From State - * @param To To State - * @param Condition Condition function - * @return True if match found - - - * Contains the information on when to transition from a given state to another. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - * If this function returns true, the transition becomes active. - * Note: you can override this function if you don't want to use functions passed as variables. - - - - * The state this transition applies to, or null for global transition, ie. from any state - - - - * The state this transition leads to - - - - - - - * Function used for evaluation. - * The evaluation function may be overridden, in which case this param may be redundant. - - - - false - * Used to mark this transition for removal - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Sends a message to all active FSMStacks to lock given types. - * @param type You can use `FSMType` abstract for values or build your own. - - <_HX_SUPER__globalLock public="1" set="method" line="31"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.util.FlxFSM.FlxFSMState - flixel.addons.util.FlxFSM.StatePool - flixel.addons.util.FlxFSM - flixel.addons.util.FlxFSM.FlxFSMStack - flixel.addons.util.FlxFSM.FlxFSMStackSignal - flixel.addons.util.FlxFSM.FlxFSMTransitionTable - flixel.addons.util.FlxFSM.Transition - - - - - - attribute.]]> - - - - attribute.]]> - - - - attribute.]]> - - - - attribute.]]> - - - - attribute.]]> - - - - "assets/" - * Base directory for all assets loaded inside FlxScene. - - - - * Tilemap reference. - - <_constants> - - - - - .]]> - - <_objects> - - - - - * Contains all objects with an "id" attribute. - - <_xml> - - * Internal XML. - - <_fastXml> - - * Internal xml.Access. - - - - - - - * Set the current scene, loads from XML file. - * - * @param file Location of XML. - - - - - - - - * Instantiate objects to state. - * - * @param container Add objects to this FlxTypedGroup (layer). - * @param layerId Add objects only from this layer. - - - - - - - * Add backgrounds to state. - * - * @param container Add backgrounds to this FlxTypedGroup (layer). - - - - - - - * Add tilemap to state. - * - * @param container Add tilemap to this FlxTypedGroup (layer). - - - - * Add everything (backgrounds, tilemap and all objects) to the state. - - - - * Make constants accesible through function FlxScene.constants("id"). - - - - - - - - - * Add an instance into correct destination (a specific group or FlxG.state). - * If has attribute "id" then make it accesible through function: object("id"). - * - * @param instance Instance to be added to container. - * @param container FlxTypedGroup. - * @param element XML attributes. - - - - - - - - * Apply all FlxSprite properties to a given instance. - * - * @param instance Instance to set properties. - * @param element XML attributes. - - - - - - - - * Apply all FlxText properties to a given instance. - * - * @param instance Instance to set properties. - * @param element XML attributes. - - - - - - - * Gets a specific constant by id. - * - * @param id Constant name. - * @return Bool, Int, Float or String. - - - - - - - * Gets a specific object by id. - * - * @param Id Constant name. - * @return - - - - - - - * Helper function to parse Booleans from String to Bool - * - * @param Value String value - - - - - - - * Optionally set the scene file already. - * - * @param file Location of XML. - - * Loads a scene from XML file. Scenes contain layers of entities (custom FlxSprite), - * backgrounds, tilemaps, constants, UI and more. - * - * Any questions tweet me @AndreiRegiani - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Set the current scene, loads from XML file. - * - * @param file Location of XML. - - <_HX_SUPER__set public="1" set="method" line="31"> - - - - - - - - - - * Instantiate objects to state. - * - * @param container Add objects to this FlxTypedGroup (layer). - * @param layerId Add objects only from this layer. - - <_HX_SUPER__spawn public="1" set="method" line="31"> - - - - - - - - - - * Add backgrounds to state. - * - * @param container Add backgrounds to this FlxTypedGroup (layer). - - <_HX_SUPER__loadBackgrounds public="1" set="method" line="31"> - - - - - - - - - * Add tilemap to state. - * - * @param container Add tilemap to this FlxTypedGroup (layer). - - <_HX_SUPER__loadTilemap public="1" set="method" line="31"> - - - - - - * Add everything (backgrounds, tilemap and all objects) to the state. - - <_HX_SUPER__loadEverything public="1" set="method" line="31"> - - - * Make constants accesible through function FlxScene.constants("id"). - - <_HX_SUPER__loadConstants set="method" line="31"> - - - - - - - - * Add an instance into correct destination (a specific group or FlxG.state). - * If has attribute "id" then make it accesible through function: object("id"). - * - * @param instance Instance to be added to container. - * @param container FlxTypedGroup. - * @param element XML attributes. - - <_HX_SUPER__addInstance set="method" line="31"> - - - - - - - - - - - - * Apply all FlxSprite properties to a given instance. - * - * @param instance Instance to set properties. - * @param element XML attributes. - - <_HX_SUPER__applySpriteProperties set="method" line="31"> - - - - - - - - - - - * Apply all FlxText properties to a given instance. - * - * @param instance Instance to set properties. - * @param element XML attributes. - - <_HX_SUPER__applyTextProperties set="method" line="31"> - - - - - - - - - - * Gets a specific constant by id. - * - * @param id Constant name. - * @return Bool, Int, Float or String. - - <_HX_SUPER__const public="1" set="method" line="148"> - - - - - - - - - * Gets a specific object by id. - * - * @param Id Constant name. - * @return - - <_HX_SUPER__object public="1" set="method" line="148"> - - - - - - - - - * Helper function to parse Booleans from String to Bool - * - * @param Value String value - - <_HX_SUPER__parseBool set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.util.FlxScene - - - - - - 0.3660254037 - - - - 0.2113248654 - - - - 0.309016994 - - - - 0.138196601 - -

    - - [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180] -

    - - - [[3, 2, 1, 0], [2, 3, 1, 0], [0, 0, 0, 0], [2, 1, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [2, 1, 0, 3], [3, 1, 2, 0], [0, 0, 0, 0], [1, 3, 2, 0], [1, 2, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [1, 2, 0, 3], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [3, 1, 0, 2], [0, 0, 0, 0], [1, 3, 0, 2], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [1, 0, 3, 2], [1, 0, 2, 3], [3, 2, 0, 1], [2, 3, 0, 1], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [2, 0, 3, 1], [0, 0, 0, 0], [2, 0, 1, 3], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [3, 0, 2, 1], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 3, 2, 1], [0, 2, 3, 1], [0, 0, 0, 0], [0, 2, 1, 3], [3, 0, 1, 2], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 3, 1, 2], [0, 0, 0, 0], [0, 1, 3, 2], [0, 1, 2, 3]] - - - - - - - - - - - - [0, 0, 0, 0] - - - - - - - - - - - - - - { octaves : 1, persistence : 1, scale : 1 } - - - - - - - - - - - - { octaves : 1, persistence : 1, scale : 1 } - - - - - - - - - * Calculates the simplex noise at a given 2D coordinate. - * - * @param x The x coordinate at which the noise value should be obtained. - * @param y The y coordinate at which the noise value should be obtained. - * @return The value of noise at the input coordinate, ranging from -1 to 1, inclusive. - - - - - - - * Private helper that finds the noise contribution of a single corner of a simplex cell. - * - * @param a Which corner to use. - * @return The noise value of the corner. - - - - - - - - - - * Calculates the simplex noise at a given 4D coordinate. - * Used internally to generate tileable 2D noise, but it might as well be public. - * - * @param x The x coordinate at which the noise value should be obtained. - * @param y The y coordinate at which the noise value should be obtained. - * @param z The z coordinate at which the noise value should be obtained. - * @param w The w coordinate at which the noise value should be obtained. - * @return The value of noise at the input coordinate, ranging from -1 to 1, inclusive. - - - - - - - * Private helper that finds the noise contribution of a single corner of a 4D simplex cell. - * - * @param a Which corner to use next. - * @return The noise value of the corner. - - * Simplex noise generation. - * A combination of algorithms for very fast noise generation: http://weber.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf, http://www.google.com/patents/US6867776, and http://www.jgallant.com/procedurally-generating-wrapping-world-maps-in-unity-csharp-part-2/#wrap2. - * @author MSGHero - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" set="method" line="357" static="1"> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" set="method" line="357" static="1"> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.util.FlxSimplex - flixel.addons.util.FlxSimplex.SimplexCell - flixel.addons.util.FlxSimplex.SimplexCell - flixel.addons.util.FlxSimplex.SimplexCell_HSC - - - - - - - - - - - * Created a PNG image from the specified BitmapData - * - * @param image The BitmapData that will be converted into the PNG format. - * @return a ByteArray representing the PNG encoded image data. - * @langversion ActionScript 3.0 - * @playerversion Flash 9.0 - * @tiptext - - - - - - - - * Class that converts BitmapData into a valid PNG - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.addons.util.PNGEncoder - - - - - - - * Animation controller this animation belongs to - - - - * String name of the animation (e.g. `"walk"`) - - - - 0 - * Keeps track of the current index into the tile sheet based on animation or rotation. - - - - - - - - - - - - - - - - - - - - * @author Zaphod - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - null - Animation prefix used during the creation - - - - * Animation frameRate - the speed in frames per second that the animation should play at. - - - - 0 - * Keeps track of the current frame of animation. - * This is NOT an index into the tile sheet, but the frame number in the animation object. - - - - * Accessor for `frames.length` - - - - 0 - * Seconds between frames (basically the framerate) - - - - [] - * - - - - true - * Whether the current animation has finished. - - - - true - * Whether the current animation gets updated or not. - - - - true - * Whether or not the animation is looped. - - - - 0 - * The custom loop point for this animation. - * This allows you to skip the first few frames of an animation when looping. - - - - false - * Whether or not this animation is being played backwards. - - - - false - * Whether or not the frames of this animation are horizontally flipped - - - - false - * Whether or not the frames of this animation are vertically flipped - - - - * A list of frames stored as int indices - * @since 4.2.0 - - <_frameTimer expr="0"> - - 0 - * Internal, used to time each frame of animation. - - - - * Clean up memory. - - - - - - - - - { Frame : 0, Reversed : false, Force : false } - * Starts this animation playback. - * - * @param Force Whether to force this animation to restart. - * @param Reversed Whether to play animation backwards or not. - * @param Frame The frame number in this animation you want to start from (`0` by default). - * If you pass a negative value then it will start from a random frame. - * If you `Reversed` is `true`, the frame value will be "reversed" - * (`Frame = numFrames - 1 - Frame`), so `Frame` value will mean frame index - * from the animation's end in this case. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 0 } - * @param Name What this animation should be called (e.g. `"run"`). - * @param Frames An array of numbers indicating what frames to play in what order (e.g. `[1, 2, 3]`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40`). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether or not the frames of this animation are horizontally flipped. - * @param FlipY Whether or not the frames of this animation are vertically flipped. - - * Just a helper structure for the `FlxSprite` animation system. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Property access for currently playing animation (warning: can be `null`). - - - - -1 - * The frame index of the current animation. Can be changed manually. - - - - * Tell the sprite to change to a frame with specific name. - * Useful for sprites with loaded TexturePacker atlas. - - - - * Gets or sets the currently playing animation (warning: can be `null`). - - - - * Pause or resume the current animation. - - - - * Whether the current animation has finished playing. - - - - * The total number of frames in this image. - * WARNING: assumes each row in the sprite sheet is full! - - - - - - - - - * If assigned, will be called each time the current animation's frame changes. - * A function that has 3 parameters: a string name, a frame number, and a frame index. - - - - - - - * If assigned, will be called each time the current animation finishes. - * A function that has 1 parameter: a string name - animation name. - - <_sprite> - - * Internal, reference to owner sprite. - - <_curAnim> - - flixel.animation - * Internal, currently playing animation. - - <_animations set="null"> - - - - - * Internal, stores all the animation that were added to this sprite. - - <_prerotated> - - - - - - - - - - - - - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Frames An array of indices indicating what frames to play in what order (e.g. `[0, 1, 2]`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - - - - - - * Removes (and destroys) an animation. - * - * @param Name The name of animation to remove. - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the indices of the frames in the atlas are already known. - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Frames An array of indices indicating what frames to append (e.g. `[0, 1, 2]`). - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param FrameNames An array of image names from the atlas indicating what frames to play in what order. - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the exact name of each frame from the atlas is known (e.g. `"walk00.png"`, `"walk01.png"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param FrameNames An array of image names from atlas indicating what frames to append. - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. Should be slightly faster than `addByIndices()`. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. `"tiles-"`). - * @param Indices An array of strings indicating what frames to play in what order - * (e.g. `["01", "02", "03"]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Should be slightly faster than `appendByIndices()`. Use this method when the names of each frame from - * the atlas share a common prefix and postfix (e.g. `"walk00.png"`, `"walk01.png"`). - * The animation must already exist in order to append frames to it. FrameRate and Looped are unchanged. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. `"tiles-"`). - * @param Indices An array of strings indicating what frames to append (e.g. `["01", "02", "03"]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. "tiles-"). - * @param Indices An array of numbers indicating what frames to play in what order (e.g. `[0, 1, 2]`). - * @param Postfix Common ending of image names in the atlas (e.g. `".png"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the names of each frame from the atlas share a common prefix - * and postfix (e.g. `"walk00.png"`, `"walk01.png"`). - * Leading zeroes are ignored for matching indices (`5` will match `"5"` and `"005"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`). - * @param Indices An array of numbers indicating what frames to append (e.g. `[0, 1, 2]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - - - - - - - - - * Find a sprite frame so that for `Prefix = "file"; Index = 5; Postfix = ".png"` - * It will find frame with name `"file5.png"`. If it doesn't exist it will try - * to find `"file05.png"`, allowing 99 frames per animation. - * Returns the found frame or `-1` on failure. - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the names of each frame from the atlas share a common prefix - * (e.g. `"walk00.png"`, `"walk01.png"`). - * Frames are sorted numerically while ignoring postfixes (e.g. `".png"`, `".gif"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`) - - - - - - - - - - { Frame : 0, Reversed : false, Force : false } - * Plays an existing animation (e.g. `"run"`). - * If you call an animation that is already playing, it will be ignored. - * - * @param AnimName The string name of the animation you want to play. - * @param Force Whether to force the animation to restart. - * @param Reversed Whether to play animation backwards or not. - * @param Frame The frame number in the animation you want to start from. - * If a negative value is passed, a random frame is used. - - - - * Stops current animation and resets its frame index to zero. - - - - * Stops current animation and sets its frame to the last one. - - - - * Just stops current animation. - - - - * Pauses the current animation. - - - - * Resumes the current animation if it exists. - - - - * Reverses current animation if it exists. - - - - - - - * Gets the FlxAnimation object with the specified name. - - - - * Changes to a random animation frame. - * Useful for instantiating particles or other weird things. - - - - - - - - flixel.animation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Gets a list with all the animations that are added in a sprite. - * WARNING: Do not confuse with `getNameList`, this function returns the animation instances - * @return an array with all the animations. - * @since 4.11.0 - - - - * Gets a list with all the name animations that are added in a sprite - * WARNING: Do not confuse with `getAnimationList`, this function returns the animation names - * @return an array with all the animation names in it. - * @since 4.11.0 - - - - - - - * Checks if an animation exists by it's name. - * @param name The animation name. - * @since 4.11.0 - - - - - - - - * Renames the animation with a new name. - * @param oldName the name that is replaced. - * @param newName the name that replaces the old one. - * @since 4.11.0 - - - - - - - - - - - - - - - - - - - - - - - * Helper function used for finding index of `FlxFrame` in `_framesData`'s frames array - * - * @param Frame `FlxFrame` to find - * @return position of specified `FlxFrame` object. - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__copyFrom public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__createPrerotated public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroyAnimations public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__clearPrerotated set="method" line="31"> - - <_HX_SUPER__clearAnimations set="method" line="31"> - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Frames An array of indices indicating what frames to play in what order (e.g. `[0, 1, 2]`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - <_HX_SUPER__add public="1" set="method" line="31"> - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - - - - - - - * Removes (and destroys) an animation. - * - * @param Name The name of animation to remove. - - <_HX_SUPER__remove public="1" set="method" line="31"> - - - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the indices of the frames in the atlas are already known. - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Frames An array of indices indicating what frames to append (e.g. `[0, 1, 2]`). - - <_HX_SUPER__append public="1" set="method" line="31"> - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param FrameNames An array of image names from the atlas indicating what frames to play in what order. - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - <_HX_SUPER__addByNames public="1" set="method" line="31"> - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the exact name of each frame from the atlas is known (e.g. `"walk00.png"`, `"walk01.png"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param FrameNames An array of image names from atlas indicating what frames to append. - - <_HX_SUPER__appendByNames public="1" set="method" line="31"> - - - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. Should be slightly faster than `addByIndices()`. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. `"tiles-"`). - * @param Indices An array of strings indicating what frames to play in what order - * (e.g. `["01", "02", "03"]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - <_HX_SUPER__addByStringIndices public="1" set="method" line="31"> - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - - - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Should be slightly faster than `appendByIndices()`. Use this method when the names of each frame from - * the atlas share a common prefix and postfix (e.g. `"walk00.png"`, `"walk01.png"`). - * The animation must already exist in order to append frames to it. FrameRate and Looped are unchanged. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. `"tiles-"`). - * @param Indices An array of strings indicating what frames to append (e.g. `["01", "02", "03"]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - - <_HX_SUPER__appendByStringIndices public="1" set="method" line="31"> - - - - - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in the atlas (e.g. "tiles-"). - * @param Indices An array of numbers indicating what frames to play in what order (e.g. `[0, 1, 2]`). - * @param Postfix Common ending of image names in the atlas (e.g. `".png"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - <_HX_SUPER__addByIndices public="1" set="method" line="31"> - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - - - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the names of each frame from the atlas share a common prefix - * and postfix (e.g. `"walk00.png"`, `"walk01.png"`). - * Leading zeroes are ignored for matching indices (`5` will match `"5"` and `"005"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`). - * @param Indices An array of numbers indicating what frames to append (e.g. `[0, 1, 2]`). - * @param Postfix Common ending of image names in atlas (e.g. `".png"`). - - <_HX_SUPER__appendByIndices public="1" set="method" line="31"> - - - - - - - - - - - - - - * Find a sprite frame so that for `Prefix = "file"; Index = 5; Postfix = ".png"` - * It will find frame with name `"file5.png"`. If it doesn't exist it will try - * to find `"file05.png"`, allowing 99 frames per animation. - * Returns the found frame or `-1` on failure. - - <_HX_SUPER__findSpriteFrame set="method" line="148"> - - - - - - - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - * Adds a new animation to the sprite. - * - * @param Name What this animation should be called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`). - * @param FrameRate The speed in frames per second that the animation should play at (e.g. `40` fps). - * @param Looped Whether or not the animation is looped or just plays once. - * @param FlipX Whether the frames should be flipped horizontally. - * @param FlipY Whether the frames should be flipped vertically. - - <_HX_SUPER__addByPrefix public="1" set="method" line="31"> - - - - - - - - - - { FlipY : false, FlipX : false, Looped : true, FrameRate : 30 } - - - - - - - - * Adds to an existing animation in the sprite by appending the specified frames to the existing frames. - * Use this method when the names of each frame from the atlas share a common prefix - * (e.g. `"walk00.png"`, `"walk01.png"`). - * Frames are sorted numerically while ignoring postfixes (e.g. `".png"`, `".gif"`). - * The animation must already exist in order to append frames to it. - * - * @param Name What the existing animation is called (e.g. `"run"`). - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`) - - <_HX_SUPER__appendByPrefix public="1" set="method" line="31"> - - - - - - - - - - - - - { Frame : 0, Reversed : false, Force : false } - * Plays an existing animation (e.g. `"run"`). - * If you call an animation that is already playing, it will be ignored. - * - * @param AnimName The string name of the animation you want to play. - * @param Force Whether to force the animation to restart. - * @param Reversed Whether to play animation backwards or not. - * @param Frame The frame number in the animation you want to start from. - * If a negative value is passed, a random frame is used. - - <_HX_SUPER__play public="1" set="method" line="31"> - - - - - - - - { Frame : 0, Reversed : false, Force : false } - - - - * Stops current animation and sets its frame to the last one. - - <_HX_SUPER__finish public="1" set="method" line="31"> - - - * Just stops current animation. - - <_HX_SUPER__stop public="1" set="method" line="31"> - - - * Changes to a random animation frame. - * Useful for instantiating particles or other weird things. - - <_HX_SUPER__randomFrame public="1" set="method" line="31"> - - - - - - <_HX_SUPER__byNamesHelper set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__byStringIndicesHelper set="method" line="31"> - - - - - - - - - - - - - - <_HX_SUPER__byIndicesHelper set="method" line="31"> - - - - - - - - - - - - - <_HX_SUPER__byPrefixHelper set="method" line="31"> - - - - - - - - - - - <_HX_SUPER__findByPrefix set="method" line="31"> - - - - - - - - - <_HX_SUPER__set_frameIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__set_frameName set="method" line="148"> - - - - - <_HX_SUPER__get_name set="method" line="148"> - - - - - <_HX_SUPER__set_name set="method" line="148"> - - - - - - * Gets a list with all the animations that are added in a sprite. - * WARNING: Do not confuse with `getNameList`, this function returns the animation instances - * @return an array with all the animations. - * @since 4.11.0 - - <_HX_SUPER__getAnimationList public="1" set="method" line="148"> - - - * Gets a list with all the name animations that are added in a sprite - * WARNING: Do not confuse with `getAnimationList`, this function returns the animation names - * @return an array with all the animation names in it. - * @since 4.11.0 - - <_HX_SUPER__getNameList public="1" set="method" line="148"> - - - - - - * Checks if an animation exists by it's name. - * @param name The animation name. - * @since 4.11.0 - - <_HX_SUPER__exists public="1" set="method" line="148"> - - - - - - - - - - * Renames the animation with a new name. - * @param oldName the name that is replaced. - * @param newName the name that replaces the old one. - * @since 4.11.0 - - <_HX_SUPER__rename public="1" set="method" line="148"> - - - - - - <_HX_SUPER__get_finished set="method" line="148"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.animation.FlxAnimationController - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - { Frame : 0, Reversed : false, Force : false } - * Starts this animation playback. - * - * @param Force Whether to force this animation to restart. - * @param Reversed Whether to play animation backwards or not. - * @param Frame The frame number in this animation you want to start from (`0` by default). - * If you pass a negative value then it will start from a random frame. - * If you `Reversed` is `true`, the frame value will be "reversed" - * (`Frame = numFrames - 1 - Frame`), so `Frame` value will mean frame index - * from the animation's end in this case. - - <_HX_SUPER__play public="1" set="method" line="31"> - - - - - - - { Frame : 0, Reversed : false, Force : false } - - - <_HX_SUPER__restart public="1" set="method" line="31"> - - <_HX_SUPER__stop public="1" set="method" line="31"> - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__finish public="1" set="method" line="31"> - - <_HX_SUPER__pause public="1" set="method" line="31"> - - <_HX_SUPER__reverse public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_frameRate set="method" line="148"> - - - - - - - - <_HX_SUPER__set_curFrame set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.animation.FlxAnimation - - - - - - - - - <_HX_SUPER__set_curIndex set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.animation.FlxBaseAnimation - - - - - - - "prerotated_animation" - - - - - - 0 - - - - - - - - - - - - - - - - - - - * @author Zaphod - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_angle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_curIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__clone public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.animation.FlxPrerotatedAnimation - - - - - <_pool expr="new FlxPool<FlxFlicker>(FlxFlicker)" line="15" static="1"> - - (FlxFlicker)]]> - - <_boundObjects expr="new Map<FlxObject,FlxFlicker>()" line="20" static="1"> - - - - - ()]]> - * Internal map for looking up which objects are currently flickering and getting their flicker data. - - - - - - - - - - - - - - - - - - - { ForceRestart : true, EndVisibility : true, Interval : 0.04, Duration : 1 } - - - - - - - - * Returns whether the object is flickering or not. - * - * @param Object The object to test. - - - - - - - * Stops flickering of the object. Also it will make the object visible. - * - * @param Object The object to stop flickering. - - - - * The flickering object. - - - - * The final visibility of the object after flicker is complete. - - - - * The flicker timer. You can check how many seconds has passed since flickering started etc. - - - - - - - * The callback that will be triggered after flicker has completed. - - - - - - - * The callback that will be triggered every time object visiblity is changed. - - - - * The duration of the flicker (in seconds). `0` means "forever". - - - - * The interval of the flicker. - - - - * Nullifies the references to prepare object for reuse and avoid memory leaks. - - - - - - - - - - - - - - - - - - * Starts flickering behavior. - - - - * Prematurely ends flickering. - - - - * Unbinds the object from flicker and releases it into pool for reuse. - - - - - - - * Just a helper function for flicker() to update object's visibility. - - - - - * Internal constructor. Use static methods. - - * The retro flickering effect with callbacks. - * You can use this as a mixin in any FlxObject subclass or by calling the static functions. - * @author pixelomatic - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Nullifies the references to prepare object for reuse and avoid memory leaks. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - - - - - - - * Starts flickering behavior. - - <_HX_SUPER__start set="method" line="31"> - - - - - - - - - - - - - - - - - * Prematurely ends flickering. - - <_HX_SUPER__stop public="1" set="method" line="31"> - - - * Unbinds the object from flicker and releases it into pool for reuse. - - <_HX_SUPER__release set="method" line="31"> - - - - - - * Just a helper function for flicker() to update object's visibility. - - <_HX_SUPER__flickerProgress set="method" line="31"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.effects.FlxFlicker - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast FlxParticle - * Set your own particle class type here. The custom class must extend `FlxParticle`. Default is `FlxParticle`. - - - - false - * Determines whether the emitter is currently emitting particles. It is totally safe to directly toggle this. - - - - 0.1 - * How often a particle is emitted (if emitter is started with `Explode == false`). - - - - * Sets particle's blend mode. `null` by default. Warning: Expensive on Flash. - - - - 0 - * The x position of this emitter. - - - - 0 - * The y position of this emitter. - - - - 0 - * The width of this emitter. Particles can be randomly generated from anywhere within this box. - - - - 0 - * The height of this emitter. Particles can be randomly generated from anywhere within this box. - - - - FlxEmitterMode.CIRCLE - * How particles should be launched. If `CIRCLE`, particles will use `launchAngle` and `speed`. - * Otherwise, particles will just use `velocity.x` and `velocity.y`. - - - - false - * Keep the scale ratio of the particle. Uses the `x` values of `scale`. - - - - new FlxPointRangeBounds(-100, -100, 100, 100) - * Sets the velocity range of particles launched from this emitter. Only used with `FlxEmitterMode.SQUARE`. - - - - (0, 100)]]> - * Set the speed range of particles launched from this emitter. Only used with `FlxEmitterMode.CIRCLE`. - - - - (0, 0)]]> - * Set the angular acceleration range of particles launched from this emitter. - - - - (0, 0)]]> - * Set the angular drag range of particles launched from this emitter. - - - - (0, 0)]]> - * The angular velocity range of particles launched from this emitter. - - - - (0)]]> - * The angle range of particles launched from this emitter. - * `angle.end` is ignored unless `ignoreAngularVelocity` is set to `true`. - - - - false - * Set this if you want to specify the beginning and ending value of angle, - * instead of using `angularVelocity` (or `angularAcceleration`). - - - - (-180, 180)]]> - * The angle range at which particles will be launched from this emitter. - * Ignored unless `launchMode` is set to `FlxEmitterMode.CIRCLE`. - - - - (3)]]> - * The life, or duration, range of particles launched from this emitter. - - - - new FlxPointRangeBounds(1, 1) - * Sets `scale` range of particles launched from this emitter. - - - - (1)]]> - * Sets `alpha` range of particles launched from this emitter. - - - - new FlxRangeBounds(FlxColor.WHITE, FlxColor.WHITE) - * Sets `color` range of particles launched from this emitter. - - - - new FlxPointRangeBounds(0, 0) - * Sets X and Y drag component of particles launched from this emitter. - - - - new FlxPointRangeBounds(0, 0) - * Sets the `acceleration` range of particles launched from this emitter. - * Set acceleration y-values to give particles gravity. - - - - (0)]]> - * Sets the `elasticity`, or bounce, range of particles launched from this emitter. - - - - false - * Sets the `immovable` flag for particles launched from this emitter. - - - - false - * Sets the `autoUpdateHitbox` flag for particles launched from this emitter. - * If true, the particles' hitbox will be updated to match scale. - - - - NONE - * Sets the `allowCollisions` value for particles launched from this emitter. - * Set to `NONE` by default. Don't forget to call `FlxG.collide()` in your update loop! - - - - * Shorthand for toggling `allowCollisions` between `ANY` (if `true`) and `NONE` (if `false`). - * Don't forget to call `FlxG.collide()` in your update loop! - - <_quantity expr="0"> - - 0 - * Internal helper for deciding how many particles to launch. - - <_explode expr="true"> - - true - * Internal helper for the style of particle emission (all at once, or one at a time). - - <_timer expr="0"> - - 0 - * Internal helper for deciding when to launch particles or kill them. - - <_counter expr="0"> - - 0 - * Internal counter for figuring out how many particles to launch. - - <_point expr="FlxPoint.get()"> - - FlxPoint.get() - * Internal point object, handy for reusing for memory management purposes. - - <_waitForKill expr="false"> - - false - * Internal helper for automatically calling the `kill()` method - - - - * Clean up memory. - - - - - - - - - - - { AutoBuffer : false, Multiple : false, bakedRotationAngles : 16, Quantity : 50 } - * This function generates a new array of particle sprites to attach to the emitter. - * - * @param Graphics If you opted to not pre-configure an array of `FlxParticle` objects, - * you can simply pass in a particle image or sprite sheet. - * @param Quantity The number of particles to generate when using the "create from image" option. - * @param BakedRotations How many frames of baked rotation to use (boosts performance). - * Set to zero to not use baked rotations. - * @param Multiple Whether the image in the `Graphics` param is a single particle or a bunch of particles - * (if it's a bunch, they need to be square!). - * @param AutoBuffer Whether to automatically increase the image size to accommodate rotated corners. - * Default is `false`. Will create frames that are 150% larger on each axis than the - * original frame or graphic. - * @return This `FlxEmitter` instance (nice for chaining stuff together). - - - - - - - - - - - - { AutoBuffer : false, Multiple : false } - - - - - - - - - - { Quantity : 50, Color : FlxColor.WHITE, Height : 2, Width : 2 } - * Similar to `FlxSprite#makeGraphic()`, this function allows you to quickly make single-color particles. - * - * @param Width The width of the generated particles. Default is `2` pixels. - * @param Height The height of the generated particles. Default is `2` pixels. - * @param Color The color of the generated particles. Default is white. - * @param Quantity How many particles to generate. Default is `50`. - * @return This `FlxEmitter` instance (nice for chaining stuff together). - - - - - - - * Called automatically by the game loop, decides when to launch particles and when to "die". - - - - - - - - - - - * Call this function to turn off all the particles and the emitter. - - - - - - - - - { Quantity : 0, Frequency : 0.1, Explode : true } - * Call this function to start emitting particles. - * - * @param Explode Whether the particles should all burst out at once. - * @param Frequency Ignored if `Explode` is set to `true`. `Frequency` is how often to emit a particle. - * `0` = never emit, `0.1` = 1 particle every 0.1 seconds, `5` = 1 particle every 5 seconds. - * @param Quantity How many particles to launch. `0` = "all of the particles". - * @return This `FlxEmitter` instance (nice for chaining stuff together). - - - - * This function can be used both internally and externally to emit the next particle. - - - - - - - * Change the emitter's midpoint to match the midpoint of a `FlxObject`. - * - * @param Object The `FlxObject` that you want to sync up with. - - - - - - - - { Y : 0, X : 0 } - * Helper function to set the coordinates of this object. - - - - - - - - - - - - - - - - - - - { Size : 0, Y : 0, X : 0 } - * Creates a new `FlxTypedEmitter` object at a specific position. - * Does NOT automatically generate or attach particles! - * - * @param X The X position of the emitter. - * @param Y The Y position of the emitter. - * @param Size Optional, specifies a maximum capacity for this emitter. - - * FlxTypedEmitter is a lightweight particle emitter. - * It can be used for one-time explosions or for continuous fx like rain and fire. - * `FlxEmitter` is not optimized or anything; all it does is launch `FlxParticle` objects out - * at set intervals by setting their positions and velocities accordingly. - * It is easy to use and relatively efficient, relying on `FlxGroup`'s RECYCLE POWERS. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - 0 - * How long this particle lives before it disappears. Set to `0` to never `kill()` the particle automatically. - * NOTE: this is a maximum, not a minimum; the object could get recycled before its `lifespan` is up. - - - - 0 - * How long this particle has lived so far. - - - - 0 - * What percentage progress this particle has made of its total life. - * Essentially just `(age / lifespan)` on a scale from `0` to `1`. - - - - false - * Whether or not the hitbox should be updated each frame when scaling. - - - - * The range of values for `velocity` over this particle's `lifespan`. - - - - * The range of values for `angularVelocity` over this particle's `lifespan`. - - - - * The range of values for `scale` over this particle's `lifespan`. - - - - * The range of values for `alpha` over this particle's `lifespan`. - - - - * The range of values for `color` over this particle's `lifespan`. - - - - * The range of values for `drag` over this particle's `lifespan`. - - - - * The range of values for `acceleration` over this particle's `lifespan`. - - - - * The range of values for `elasticity` over this particle's `lifespan`. - - <_delta expr="0"> - - 0 - * The amount of change from the previous frame. - - - - * Clean up memory. - - - - - - - * The particle's main update logic. Basically updates properties if alive, based on ranged properties. - - - - - - - - - * Triggered whenever this object is launched by a `FlxEmitter`. - * You can override this to add custom behavior like a sound or AI or something. - - - - - * Instantiate a new particle. Like `FlxSprite`, all meaningful creation - * happens during `loadGraphic()` or `makeGraphic()` or whatever. - - * This is a simple particle class that extends the default behavior - * of `FlxSprite` to have slightly more specialized behavior - * common to many game scenarios. You can override and extend this class - * just like you would FlxSprite. While FlxEmitter - * used to work with just any old sprite, it now requires a - * `FlxParticle` based class. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * The particle's main update logic. Basically updates properties if alive, based on ranged properties. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - - * Triggered whenever this object is launched by a `FlxEmitter`. - * You can override this to add custom behavior like a sound or AI or something. - - <_HX_SUPER__onEmit public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.effects.particles.FlxParticle - flixel.effects.particles.FlxParticle.IFlxParticle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__enable public="1" set="method" line="148"> - - - - - <_HX_SUPER__capture public="1" set="method" line="148"> - - <_HX_SUPER__rebuild public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__render public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__setUniform public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__set_to public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.effects.postprocess.PostProcess - - - - - - - false - * The default value for the `persist` variable at creation if none is specified in the constructor. - * @see [FlxGraphic.persist](https://api.haxeflixel.com/flixel/graphics/FlxGraphic.html#persist) - - - - - - - - - - { Cache : true, Unique : false } - * Creates and caches FlxGraphic object from openfl.Assets key string. - * - * @param Source `openfl.Assets` key string. For example: `"assets/image.png"`. - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @param Cache Whether to use graphic caching or not. Default value is `true`, which means automatic caching. - * @return Cached `FlxGraphic` object we just created. - - - - - - - - - - { Cache : true, Unique : false } - `. - * - * @param Source `Class` to create `BitmapData` for `FlxGraphic` from. - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @param Cache Whether to use graphic caching or not. Default value is `true`, which means automatic caching. - * @return `FlxGraphic` object we just created.]]> - - - - - - - - - - { Cache : true, Unique : false } - * Creates and caches `FlxGraphic` object from specified `BitmapData` object. - * - * @param Source `BitmapData` for `FlxGraphic` to use. - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @param Cache Whether to use graphic caching or not. Default value is `true`, which means automatic caching. - * @return `FlxGraphic` object we just created. - - - - - - - - - - { Cache : true, Unique : false } - * Creates and (optionally) caches a `FlxGraphic` object from the specified `FlxFrame`. - * It uses frame's `BitmapData`, not the `frame.parent.bitmap`. - * - * @param Source `FlxFrame` to get the `BitmapData` from. - * @param Unique Ensures that the bitmap data uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @param Cache Whether to use graphic caching or not. Default value is `true`, which means automatic caching. - * @return `FlxGraphic` object we just created. - - - - - - - - - { Unique : false } - * Creates and caches a FlxGraphic object from the specified `FlxFramesCollection`. - * It uses `frames.parent.bitmap` as a source for the `FlxGraphic`'s `BitmapData`. - * It also copies all the frames collections onto the newly created `FlxGraphic`. - * - * @param Source `FlxFramesCollection` to get the `BitmapData` from. - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @return Cached `FlxGraphic` object we just created. - - - - - - - - - { Unique : false } - * Creates and caches a `FlxGraphic` object from the specified `FlxGraphic` object. - * It copies all the frame collections onto the newly created `FlxGraphic`. - * - * @param Source `FlxGraphic` to get the `BitmapData` from. - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * If `true`, then `BitmapData` for this `FlxGraphic` will be cloned, which means extra memory. - * @param Key Force the cache to use a specific key to index the bitmap. - * @return Cached `FlxGraphic` object we just created. - - - - - - - - - - - { Unique : false } - * Generates and caches new `FlxGraphic` object with a colored rectangle. - * - * @param Width How wide the rectangle should be. - * @param Height How high the rectangle should be. - * @param Color What color the rectangle should have (`0xAARRGGBB`). - * @param Unique Ensures that the `BitmapData` uses a new slot in the cache. - * @param Key Force the cache to use a specific key to index the bitmap. - * @return The `FlxGraphic` object we just created. - - - - - - - - { Unique : false } - * Helper method for cloning specified `BitmapData` if necessary. - * - * @param Bitmap `BitmapData` to process - * @param Unique Whether we need to clone specified `BitmapData` object or not - * @return Processed `BitmapData` - - - - - - - - - - { Cache : true, Unique : false } - * Creates and caches the specified `BitmapData` object. - * - * @param Bitmap `BitmapData` to use as a graphic source for the new `FlxGraphic`. - * @param Key Key to use as a cache key for the created `FlxGraphic`. - * @param Unique Whether the new `FlxGraphic` object uses a unique `BitmapData` or not. - * If `true`, the specified `BitmapData` will be cloned. - * @param Cache Whether to use graphic caching or not. Default value is `true`, which means automatic caching. - * @return Created `FlxGraphic` object. - - - - false - - - - * Key used in the `BitmapFrontEnd` cache. - - - - * The cached `BitmapData` object. - - - - 0 - * Width of the cached `BitmapData`. - - - - 0 - * Height of the cached `BitmapData`. - - - - * Asset name from `openfl.Assets`. - - - - * Class name for the `BitmapData`. - - - - false - * Whether this graphic object should stay in the cache after state changes or not. - * `destroyOnNoUse` has no effect when this is set to `true`. - - - - * Whether this `FlxGraphic` should be destroyed when `useCount` becomes zero (defaults to `true`). - * Has no effect when `persist` is `true`. - - - - false - * Whether the `BitmapData` of this graphic object has been dumped or not. - - - - * Whether the `BitmapData` of this graphic object has been loaded or not. - - - - * Whether the `BitmapData` of this graphic object can be dumped for decreased memory usage, - * but may cause some issues (when you need direct access to pixels of this graphic. - * If the graphic is dumped then you should call `undump()` and have total access to pixels. - - - - - * Usage counter for this `FlxGraphic` object. - - - - * `FlxImageFrame` object for the whole bitmap. - - - - * Atlas frames for this graphic. - * You should fill it yourself with one of `FlxAtlasFrames`'s static methods - * (like `fromTexturePackerJson()`, `fromTexturePackerXml()`, etc). - - - - - - - * Storage for all available frame collection of all types for this graphic object. - - - - * All types of frames collection which had been added to this graphic object. - * It helps to avoid map iteration, which produces a lot of garbage. - - - - false - * Shows whether this object unique in cache or not. - * - * Whether undumped `BitmapData` should be cloned or not. - * It is `false` by default, since it significantly increases memory consumption. - - <_imageFrame> - - * Internal var holding `FlxImageFrame` for the whole bitmap of this graphic. - * Use public `imageFrame` var to access/generate it. - - <_useCount expr="0"> - - 0 - - <_destroyOnNoUse expr="true"> - - true - - - - * Dumps bits of `BitmapData` to decrease memory usage, but you can't read/write pixels on it anymore - * (but you can call `onContext()` (or `undump()`) method which will restore it again). - - - - * Undumps bits of the `BitmapData` - regenerates it and regenerate tilesheet data for this object - - - - * Use this method to restore cached `BitmapData` (if it's possible). - * It's called automatically when the RESIZE event occurs. - - - - * Asset reload callback for this graphic object. - * It regenerated its tilesheet and resets frame bitmaps. - - - - * Trying to free the memory as much as possible - - - - - - - * Stores specified `FlxFrame` collection in internal map (this helps reduce object creation). - * - * @param collection frame collection to store. - - - - - - - * Searches frame collections of specified type for this `FlxGraphic` object. - * - * @param type The type of frames collections to search for. - * @return Array of available frames collections of specified type for this object. - - - - - - - * Creates empty frame for this graphic with specified size. - * This method could be useful for tile frames, in case when you'll need empty tile. - * - * @param size dimensions of the frame to add. - * @return Empty frame with specified size which belongs to this `FlxGraphic` object. - - - - * Gets the `BitmapData` for this graphic object from OpenFL. - * This method is used for undumping graphic. - - - - - - - - - - - - - - - - - - - - - - - - - - - * `FlxGraphic` constructor - * - * @param Key Key string for this graphic object, with which you can get it from bitmap cache. - * @param Bitmap `BitmapData` for this graphic object. - * @param Persist Whether or not this graphic stay in the cache after resetting it. - * Default value is `false`, which means that this graphic will be destroyed at the cache reset. - - * `BitmapData` wrapper which is used for rendering. - * It stores info about all frames, generated for specific `BitmapData` object. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Dumps bits of `BitmapData` to decrease memory usage, but you can't read/write pixels on it anymore - * (but you can call `onContext()` (or `undump()`) method which will restore it again). - - <_HX_SUPER__dump public="1" set="method" line="31"> - - - * Undumps bits of the `BitmapData` - regenerates it and regenerate tilesheet data for this object - - <_HX_SUPER__undump public="1" set="method" line="31"> - - - * Use this method to restore cached `BitmapData` (if it's possible). - * It's called automatically when the RESIZE event occurs. - - <_HX_SUPER__onContext public="1" set="method" line="31"> - - - * Asset reload callback for this graphic object. - * It regenerated its tilesheet and resets frame bitmaps. - - <_HX_SUPER__onAssetsReload public="1" set="method" line="31"> - - - * Trying to free the memory as much as possible - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Stores specified `FlxFrame` collection in internal map (this helps reduce object creation). - * - * @param collection frame collection to store. - - <_HX_SUPER__addFrameCollection public="1" set="method" line="31"> - - - - - - * Gets the `BitmapData` for this graphic object from OpenFL. - * This method is used for undumping graphic. - - <_HX_SUPER__getBitmapFromSystem set="method" line="148"> - - <_HX_SUPER__get_useCount set="method" line="148"> - - - - - <_HX_SUPER__set_useCount set="method" line="148"> - - - - - <_HX_SUPER__get_destroyOnNoUse set="method" line="148"> - - - - - <_HX_SUPER__set_destroyOnNoUse set="method" line="148"> - - - - - <_HX_SUPER__get_imageFrame set="method" line="148"> - - <_HX_SUPER__get_atlasFrames set="method" line="148"> - - - - - <_HX_SUPER__set_bitmap set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.FlxGraphic - - - - - - - new Point() - - - - new Matrix() - - - - new FlxPoint(128, 128) - * Default minimum size for atlases. - - - - new FlxPoint(1024, 1024) - * Default maximum size for atlases. - - - - * Root node of the atlas. - - - - * Name of this atlas, used as a key in the bitmap cache. - - - - - - - - * `BitmapData` of this atlas, combines all images into a big one. - - - - * Graphic for this atlas. - - - - false - * Whether this atlas should stay in memory after state switch. - * Default value if `false`. - - - - 1 - * Offsets between nodes. - - - - - * Total width of the atlas. - - - - - * Total height of the atlas. - - - - 128 - * Minimum width for this atlas. - - - - 128 - * Minimum height for this atlas - - - - 1024 - * Maximum width for this atlas. - - - - 1024 - * Maximum height for this atlas. - - - - false - * Whether to allow image rotation for packing in atlas. - - - - false - * Whether the size of this atlas should be the power of 2 or not. - - <_graphic> - <_tempStorage> - - * Internal storage for building atlas from queue - - - - - - - - - `. - * @param Key Image name, optional. - * You can omit it if you pass `String` or `Class` as a `Graphic` source. - * @return Newly created and added node, or `null` if there is no space for it.]]> - - - - - - - - - - - - - - - - - - - - - - - - - { firstGrandChildRotated : false } - - - - - - - - - - - - - - - - - - - - { decideHowToDivide : false } - - - - - - - - - - - - - - - - - `). - * @param Key Optional key for image - * @param tileSize The size of tile in spritesheet - * @param tileSpacing Offsets to add in spritesheet between tiles - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem) - * @param region Region of source image to use as a source graphic - * @return Generated `FlxTileFrames` for the added node]]> - - - - * Gets the `FlxAtlasFrames` object for this atlas. - * It caches graphic of this atlas and generates `FlxAtlasFrames` if it doesn't exist yet. - * - * @return `FlxAtlasFrames` for this atlas - - - - - - - - - - - * Checks if the atlas already contains node with the same name. - * - * @param nodeName Node name to check. - * @return `true` if atlas already contains node with the name. - - - - - - - * Gets a node by it's name. - * - * @param key Node name to search for. - * @return node with searched name. `null` if atlas doesn't contain any node with that name. - - - - - - - - * Optimized version of method for adding multiple nodes to atlas. - * Uses less of the atlas' area (it sorts images by the size before adding them to atlas). - * - * @param bitmaps `BitmapData`'s to insert - * @param keys Names of these `BitmapData` objects. - * @return `this` `FlxAtlas` - - - - - - - - - - - - * Internal method for sorting bitmaps - - - - * Creates a new "queue" for adding new nodes. - * This method should be used with the `addToQueue()` and `generateFromQueue()` methods: - * - first, you create queue, like `atlas.createQueue()`; - * - second, you add several bitmaps to the queue: `atlas.addToQueue(bmd1, "key1").addToQueue(bmd2, "key2");` - * - third, you actually bake those bitmaps onto the atlas: `atlas.generateFromQueue();` - - - - - - - - * Adds new object to queue for later creation of new node - * - * @param data `BitmapData` to bake on atlas - * @param key "name" of the `BitmapData`. You'll use it as a key for accessing the created node. - - - - * Adds all objects in "queue" to existing atlas. Doesn't remove any nodes. - - - - - - - - * Destroys the atlas. Use only if you want to clear memory and don't need this atlas anymore, - * since it disposes the `BitmapData` and removes it from the cache. - - - - * Clears all data in atlas. Use it when you want reuse this atlas. - * WARNING: it will destroy the graphic of this image, so you can get - * null pointer exceptions if you're still using it for your sprites. - - - - * Returns atlas data in LibGdx packer format. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { rotate : false, border : 1, powerOfTwo : false } - * Atlas constructor - * - * @param name The name of this atlas. It will be used for caching `BitmapData` of this atlas. - * @param powerOfTwo Whether the size of this atlas should be the power of 2 or not. - * @param border Gap between nodes to insert. - * @param rotate Whether to rotate added images for less atlas size. - * @param minSize Min size of atlas. - * @param maxSize Max size of atlas. - - * Class for packing multiple images in big one and generating frame data for each of them - * so you can easily load regions of atlas in sprites and tilemaps as a source of graphic - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - -
    - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initRoot set="method" line="31"> - - - - - - - `. - * @param Key Image name, optional. - * You can omit it if you pass `String` or `Class` as a `Graphic` source. - * @return Newly created and added node, or `null` if there is no space for it.]]> - - <_HX_SUPER__addNode public="1" set="method" line="148"> - - - - - - <_HX_SUPER__wrapRoot set="method" line="31"> - - - - - - <_HX_SUPER__tryInsert set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__needToDivideHorizontally set="method" line="148"> - - - - - - - - - - - - - - - - - { firstGrandChildRotated : false } - - <_HX_SUPER__divideNode set="method" line="148"> - - - - - - - - - - - { firstGrandChildRotated : false } - - - - - - - <_HX_SUPER__insertFirstNodeInRoot set="method" line="148"> - - - - - - - - - - <_HX_SUPER__expand set="method" line="148"> - - - - - - - - - - - - - { decideHowToDivide : false } - - <_HX_SUPER__expandRoot set="method" line="31"> - - - - - - - - { decideHowToDivide : false } - - - <_HX_SUPER__expandBitmapData set="method" line="31"> - - - - - <_HX_SUPER__getNextPowerOfTwo set="method" line="148"> - - - - - - - - - - - - - - `). - * @param Key Optional key for image - * @param tileSize The size of tile in spritesheet - * @param tileSpacing Offsets to add in spritesheet between tiles - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem) - * @param region Region of source image to use as a source graphic - * @return Generated `FlxTileFrames` for the added node]]> - - <_HX_SUPER__addNodeWithSpacesAndBorders public="1" set="method" line="148"> - - - - - - - - - - - * Gets the `FlxAtlasFrames` object for this atlas. - * It caches graphic of this atlas and generates `FlxAtlasFrames` if it doesn't exist yet. - * - * @return `FlxAtlasFrames` for this atlas - - <_HX_SUPER__getAtlasFrames public="1" set="method" line="148"> - - - - - <_HX_SUPER__addNodeToAtlasFrames set="method" line="31"> - - - - - - - - - * Checks if the atlas already contains node with the same name. - * - * @param nodeName Node name to check. - * @return `true` if atlas already contains node with the name. - - <_HX_SUPER__hasNodeWithName public="1" set="method" line="148"> - - - - - - - - - * Gets a node by it's name. - * - * @param key Node name to search for. - * @return node with searched name. `null` if atlas doesn't contain any node with that name. - - <_HX_SUPER__getNode public="1" set="method" line="148"> - - - - - - - - - - * Optimized version of method for adding multiple nodes to atlas. - * Uses less of the atlas' area (it sorts images by the size before adding them to atlas). - * - * @param bitmaps `BitmapData`'s to insert - * @param keys Names of these `BitmapData` objects. - * @return `this` `FlxAtlas` - - <_HX_SUPER__addNodes public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__addFromAtlasObjects set="method" line="31"> - - - - - - - - - - * Internal method for sorting bitmaps - - <_HX_SUPER__bitmapSorter set="method" line="148"> - - - - - - - * Creates a new "queue" for adding new nodes. - * This method should be used with the `addToQueue()` and `generateFromQueue()` methods: - * - first, you create queue, like `atlas.createQueue()`; - * - second, you add several bitmaps to the queue: `atlas.addToQueue(bmd1, "key1").addToQueue(bmd2, "key2");` - * - third, you actually bake those bitmaps onto the atlas: `atlas.generateFromQueue();` - - <_HX_SUPER__createQueue public="1" set="method" line="148"> - - - - - - - * Adds new object to queue for later creation of new node - * - * @param data `BitmapData` to bake on atlas - * @param key "name" of the `BitmapData`. You'll use it as a key for accessing the created node. - - <_HX_SUPER__addToQueue public="1" set="method" line="148"> - - - - - - - * Adds all objects in "queue" to existing atlas. Doesn't remove any nodes. - - <_HX_SUPER__generateFromQueue public="1" set="method" line="148"> - - - - - <_HX_SUPER__onClear set="method" line="31"> - - - - - - * Destroys the atlas. Use only if you want to clear memory and don't need this atlas anymore, - * since it disposes the `BitmapData` and removes it from the cache. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Clears all data in atlas. Use it when you want reuse this atlas. - * WARNING: it will destroy the graphic of this image, so you can get - * null pointer exceptions if you're still using it for your sprites. - - <_HX_SUPER__clear public="1" set="method" line="31"> - - - * Returns atlas data in LibGdx packer format. - - <_HX_SUPER__getLibGdxData public="1" set="method" line="148"> - - - - - <_HX_SUPER__deleteSubtree set="method" line="31"> - - - - - - - - - <_HX_SUPER__findNodeToInsert set="method" line="148"> - - - - - - - - - <_HX_SUPER__set_bitmapData set="method" line="148"> - - - - - <_HX_SUPER__get_graphic set="method" line="148"> - - - - - <_HX_SUPER__set_persist set="method" line="148"> - - - - - - - - <_HX_SUPER__set_minWidth set="method" line="148"> - - - - - - - - <_HX_SUPER__set_minHeight set="method" line="148"> - - - - - <_HX_SUPER__get_width set="method" line="148"> - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - <_HX_SUPER__get_height set="method" line="148"> - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - - - - - <_HX_SUPER__set_maxWidth set="method" line="148"> - - - - - - - - <_HX_SUPER__set_maxHeight set="method" line="148"> - - - - - - - - <_HX_SUPER__set_powerOfTwo set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.atlas.FlxAtlas - flixel.graphics.atlas.FlxAtlas.TempAtlasObj - - - - - - - * Left child of this node. - - - - * Right child of this node. - - - - * Region of the atlas which this node holds, includes spacings between nodes. - - - - * The "name" of this node. You can get access to this node with it: - * `atlas.getNode(key);` - - - - * Logical flag showing whether this node has an image in it or not. - - - - * Atlas object which contains this node. - - - - * The x coordinate of the top-left corner of this node. - - - - * The y coordinate of the top-left corner of this node. - - - - * The width of this node. - - - - * The height of this node. - - - - * Logical flag, showing whether this node have any child nodes or image in it. - - - - - - - - - - * Whether we place node with specified width and height in this node. - - - - - - - - - * Generates TileFrames object for this node - * - * @param tileSize The size of tile in spritesheet. - * @param tileSpacing Offsets between tiles in spritesheet. - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem). - * @return Created TileFrames object for this node. - - - - * Generates a `FlxImageFrame` object for this node. - * - * @return `FlxImageFrame` for the whole node - - - - - - - - - - - - - - - - - - - - - - - - { rotated : false, key : "", filled : false } - * Node constructor - * - * @param rect Region of atlas this node holds. - * @param atlas Atlas this node belongs to. - * @param filled Whether this node contains image or not. - * @param key The name of image in this node, and the name of this node. - - * Atlas node holds information about image on Atlas. - * Plus it have few methods for easy frame data generation, - * which can be loaded in sprites and in tilemaps. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * Generates TileFrames object for this node - * - * @param tileSize The size of tile in spritesheet. - * @param tileSpacing Offsets between tiles in spritesheet. - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem). - * @return Created TileFrames object for this node. - - <_HX_SUPER__getTileFrames public="1" set="method" line="148"> - - - - - - - - * Generates a `FlxImageFrame` object for this node. - * - * @return `FlxImageFrame` for the whole node - - <_HX_SUPER__getImageFrame public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_width set="method" line="148"> - - - - - - - - <_HX_SUPER__set_height set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.atlas.FlxNode - - - - - - - - - - - * Parsing method for TexturePacker atlases in JSON format. - * - * @param Source The image source (can be `FlxGraphic`, `String`, or `BitmapData`). - * @param Description Contents of JSON file with atlas description. - * You can get it with `Assets.getText(path/to/description.json)`. - * Or you can just a pass path to the JSON file in the assets directory. - * You can also directly pass in the parsed object. - * @return Newly created `FlxAtlasFrames` collection. - - - - - - - - - * Internal method for TexturePacker parsing. Parses the actual frame data. - * - * @param FrameName Name of the frame (file name of the original source image). - * @param FrameData The TexturePacker data excluding "filename". - * @param Frames The `FlxAtlasFrames` to add this frame to. - - - - - - - - * Parsing method for LibGDX atlases. - * - * @param source The image source (can be `FlxGraphic`, `String` or `BitmapData`). - * @param description Contents of the file with atlas description. - * You can get it with `Assets.getText(path/to/description/file)`. - * Or you can just pass path to the description file in the assets directory. - * @return Newly created `FlxAtlasFrames` collection. - - - - - - - - - - * Internal method for LibGDX atlas parsing. It tries to extract dimensions info from the specified string. - - - - - - - - - { useCache : true } - * Parsing method for Sparrow texture atlases - * (they can be generated with Shoebox http://renderhjs.net/shoebox/ for example). - * - * @param Source The image source (can be `FlxGraphic`, `String` or `BitmapData`). - * @param Description Contents of the XML file with atlas description. - * You can get it with `Assets.getText(path/to/description.xml)`. - * Or you can just pass a path to the XML file in the assets directory. - * @param useCache Will specify whenever the cache should be used. - * @return Newly created `FlxAtlasFrames` collection. - - - - - - - - * Parsing method for TexturePacker atlases in generic XML format. - * - * @param Source The image source (can be `FlxGraphic`, `String` or `BitmapData`). - * @param Description Contents of the XML file with atlas description. - * You can get it with `Assets.getText(path/to/description.xml)`. - * Or you can just pass a path to the XML file in the assets directory. - * @return Newly created `FlxAtlasFrames` collection. - - - - - - - - * Parsing method for Sprite Sheet Packer atlases (http://spritesheetpacker.codeplex.com/). - * - * @param Source The image source (can be `FlxGraphic`, `String` or `BitmapData`). - * @param Description Contents of the file with atlas description. - * You can get it with `Assets.getText(path/to/description/file)`. - * Or you can just pass a path to the description file in the assets directory. - * @return Newly created `FlxAtlasFrames` collection. - - - - - - - - * Returns the `FlxAtlasFrame` of the specified `FlxGraphic` object. - * - * @param graphic `FlxGraphic` object to find the `FlxAtlasFrames` collection for. - * @return `FlxAtlasFrames` collection for the specified `FlxGraphic` object - * Could be `null` if `FlxGraphic` doesn't have it yet. - - - - - - - - - - - * Atlas frames collection. It makes possible to use texture atlases in Flixel. - * Plus it contains few packer parser methods for most commonly used atlas formats. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__addBorder public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxAtlasFrames - flixel.graphics.frames.FlxAtlasFrames.TexturePackerObject - - - - - - - 32 - - - - 9 - - - - 10 - - - - "DEFAULT_FONT_KEY" - - - - 46100001000010010010000000?56111000001001100000000100000000@66011100100010101110101010011100000000A56011001001010010111101001000000B56111001001011100100101110000000C56011001001010000100100110000000D56111001001010010100101110000000E56111101000011000100001111000000F56111101000010000110001000000000G56011001000010110100100111000000H56100101001011110100101001000000I26101010101000J56000100001000010100100110000000K56100101001010010111001001000000L46100010001000100011100000M66100010100010110110101010100010000000N56100101001011010101101001000000O56011001001010010100100110000000P56111001001010010111001000000000Q56011001001010010100100110000010R56111001001010010111001001000000S56011101000001100000101110000000T46111001000100010001000000U56100101001010010100100110000000V56100101001010010101000100000000W66100010100010101010110110100010000000X56100101001001100100101001000000Y56100101001010010011100001001100Z56111100001001100100001111000000[36110100100100110000}46110001000010010011000000]36110010010010110000^46010010100000000000000000_46000000000000000011110000'26101000000000a56000000111010010100100111000000b56100001110010010100101110000000c46000001101000100001100000d56000100111010010100100111000000e56000000110010110110000110000000f46011010001000110010000000g5700000011001001010010011100001001100h56100001110010010100101001000000i26100010101000j37010000010010010010100k56100001001010010111001001000000l26101010101000m66000000111100101010101010101010000000n56000001110010010100101001000000o56000000110010010100100110000000p5700000111001001010010111001000010000q5700000011101001010010011100001000010r46000010101100100010000000s56000000111011000001101110000000t46100011001000100001100000u56000001001010010100100111000000v56000001001010010101000100000000w66000000101010101010101010011110000000x56000001001010010011001001000000y5700000100101001010010011100001001100z56000001111000100010001111000000{46011001001000010001100000|26101010101000}46110001000010010011000000~56010101010000000000000000000000\\46111010101010101011100000"]]> - - - - ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"]]> - * Default letters for XNA font. - - - - new Point() - - - - new Rectangle() - - - - * Retrieves the default `FlxBitmapFont`. - * May work incorrectly on HTML5. - * Utterly unreliable on Brave Browser with shields up. - - - - - - - - * Loads font data in AngelCode's format. - * - * @param Source Font image source. - * @param Data Font data. - * @return Generated bitmap font object. - - - - - - - - - { charBGColor : FlxColor.TRANSPARENT } - * Load bitmap font in XNA/Pixelizer format. - * May work incorrectly on HTML5. - * Utterly unreliable on Brave Browser with shields up. - * - * @param source Source image for this font. - * @param letters `String` of characters contained in the source image, - * in order (ex. `" abcdefghijklmnopqrstuvwxyz"`). Defaults to `DEFAULT_CHARS`. - * @param charBGColor An additional background color to remove. Defaults to `FlxColor.TRANSPARENT`. - * @return Generated bitmap font object. - - - - - - - - - - - - - - - - * Loads a monospaced bitmap font. - * - * @param source Source image for this font. - * Use white pixels if you intend to change the color. - * @param letters The characters used in the font set, in display order. - * You can use the `TEXT_SET` constants for common font set arrangements. - * @param charSiz The size of each character in the font set. - * @param region The region of image to use for the font. - * Default is null which means that the whole image will be used. - * @param spacing Spaces between characters in the font set. Default is `null` which means no spaces. - * @return Generated bitmap font object. - - - - - - - - - 0 - * The size of the font. Can be useful for AngelCode fonts. - - - - 0 - - - - false - - - - false - - - - - 0 - - - - 0 - * Minimum x offset in this font. - * This is a helper variable for rendering purposes. - - - - 0 - * The width of space character. - - - - - - - * Helper map where character's frames are stored by char codes. - - - - - - - * Helper map where character's xAdvance are stored by char codes. - - - - * Atlas frame from which this font has been parsed. - - - - - - - - - - - * Internal method which creates and add char frames into this font. - * - * @param charCode Char code for char frame. - * @param frame Character region from source image. - * @param offset Offset before rendering this char. - * @param xAdvance How much cursor will jump after this char. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Creates a new bitmap font using specified bitmap data and letter input. - - * Holds information and bitmap characters for a bitmap font. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.text.FlxBitmapText - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - * Internal method which creates and add char frames into this font. - * - * @param charCode Char code for char frame. - * @param frame Character region from source image. - * @param offset Offset before rendering this char. - * @param xAdvance How much cursor will jump after this char. - - <_HX_SUPER__addCharFrame set="method" line="31"> - - - - - - - - <_HX_SUPER__updateSourceHeight set="method" line="31"> - - - - - <_HX_SUPER__addBorder public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxBitmapFont - - - - - - - new Point() - - - - new Rectangle() - - - - - - - - - - { heightInc : 0, widthInc : 0 } - * Generates new frames collection from specified frames. - * - * @param frames Frames collection to generate filters for. - * @param widthInc How much frames should expand horizontally. - * @param heightInc How much frames should expend vertically. - * @param filters Optional filters array to apply. - * @return New frames collection which you can apply filters to. - - - - * Original frames collection - - - - 0 - * How much frames should expand horizontally - - - - 0 - * How much frames should expand vertically - - - - * Filters applied to these frames - - - - - - - - - { updateFrames : false, saveAnimations : false } - * Just helper method which "centers" sprite offsets - * - * @param spr Sprite to apply this frame collection. - * @param saveAnimations Whether to save sprite's animations or not. - * @param updateFrames Whether to regenerate frame `BitmapData`s or not. - - - - - - - - * Adds a filter to this frames collection. - * - * @param filter The filter to be added. - - - - - - - * Removes a filter from this frames collection. - * - * @param filter The filter to be removed. - - - - * Removes all filters from the frames. - - - - - - - - { fill : true } - - - - - - - - - - - - - - - - - - - - { heightInc : 0, widthInc : 0 } - - * Frames collection which you can apply bitmap filters to. - * WARNING: this frame collection doesn't use caching, so be careful or you will "leak" out memory very fast. - * You should destroy frames collections of this type manually. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - { updateFrames : false, saveAnimations : false } - * Just helper method which "centers" sprite offsets - * - * @param spr Sprite to apply this frame collection. - * @param saveAnimations Whether to save sprite's animations or not. - * @param updateFrames Whether to regenerate frame `BitmapData`s or not. - - <_HX_SUPER__applyToSprite public="1" set="method" line="31"> - - - - - - - { updateFrames : false, saveAnimations : false } - - - <_HX_SUPER__genFrames set="method" line="31"> - - - - - - * Removes a filter from this frames collection. - * - * @param filter The filter to be removed. - - <_HX_SUPER__removeFilter public="1" set="method" line="31"> - - - - - - * Removes all filters from the frames. - - <_HX_SUPER__clearFilters public="1" set="method" line="31"> - - <_HX_SUPER__regenAndApplyFilters set="method" line="31"> - - - - - - { fill : true } - - <_HX_SUPER__regenBitmaps set="method" line="31"> - - - - - { fill : true } - - - - - - <_HX_SUPER__applyFilter set="method" line="148"> - - - - - <_HX_SUPER__applyFilters set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_filters set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxFilterFrames - - - - - - - - - - - - * Sorts an array of `FlxFrame` objects by their name, e.g. - * `["tiles-001.png", "tiles-003.png", "tiles-002.png"]` - * with `"tiles-".length == prefixLength` and `".png".length == postfixLength`. - - - - - - - - - - - new Point() - - - - new Point() - - - - new Rectangle() - - - - new FlxMatrix() - - - - - * Region of the image to render. - - - - * UV coordinates for this frame. - * WARNING: For optimization purposes, width and height of this rect - * contain right and bottom coordinates (`x + width` and `y + height`). - - - - - * Rotation angle of this frame. - * Required for packed atlas images. - - - - - - * Original (uncropped) image size. - - - - * Frame offset from top left corner of original image. - - - - * The type of this frame. - - - - - - - flixel.graphics.frames.FlxFramesCollection - flixel.graphics.frames.FlxBitmapFont - - - - - - - - - { blit : true } - * Applies frame rotation to the specified matrix, which should be used for tiling or blitting. - * Required for rotated frame support. - * - * @param mat Matrix to transform / rotate - * @param blit Whether specified matrix will be used for blitting or for tile rendering. - * @return Transformed matrix. - - - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Rotates and flips matrix. This method expects matrix which was prepared by `prepareBlitMatrix()`. - * Internal use only. - * - * @param mat Matrix to transform - * @param rotation Rotation to apply to specified matrix. - * @param flipX Do we need to flip frame horizontally - * @param flipY Do we need to flip frame vertically - * @return Transformed matrix with applied rotation and flipping - - - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Prepares matrix for frame blitting (see `paint` methods). - * - * @param mat Matrix to transform/prepare. - * @param rotation Rotation to apply to specified matrix. - * @param flipX Do we need to flip frame horizontally. - * @param flipY Do we need to flip frame vertically. - * @return Transformed matrix which can be used for frame painting. - - - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Prepares matrix for frame tile/triangles rendering. - * - * @param mat Matrix to transform/prepare - * @param rotation Rotation to apply to specified matrix. - * @param flipX Do we need to flip frame horizontally - * @param flipY Do we need to flip frame vertically - * @return Transformed matrix which can be used for frame drawing. - - - - - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false } - * Draws frame on specified `BitmapData` object. - * - * @param bmd `BitmapData` object to draw this frame on. - * If bmd is `null` then new a `BitmapData` is created. - * @param point Where to draw this frame on the specified `BitmapData` object. - * @param mergeAlpha Whether to merge alphas or not. - * (works like with `BitmapData`'s `copyPixels()` method). - * @param disposeIfNotEqual Whether dispose passed `bmd` or not if its size isn't - * equal to frame's original size (`sourceSize`) - * @return Modified or newly created `BitmapData` with frame image on it. - - - - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false, flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Draws rotated and flipped frame on specified BitmapData object. - * - * @param bmd BitmapData object to draw this frame on. - * If `bmd` is `null` then new `BitmapData` created. - * @param point Where to draw this frame on the specified `BitmapData` object - * @param rotation How much rotate the frame. - * @param flipX Do we need to flip frame horizontally. - * @param flipY Do we need to flip frame vertically. - * @param mergeAlpha Whether to merge alphas or not - * (works like with `BitmapData`'s `copyPixels()` method). - * @param disposeIfNotEqual Whether dispose passed `bmd` or not if its size isn't - * equal to frame's original size (`sourceSize`) - * @return Modified or newly created `BitmapData` with frame image on it. - - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false, rotation : FlxFrameAngle.ANGLE_0 } - * Internal method which runs few checks on specified `BitmapData` object. - * - * @param bmd `BitmapData` object to check against. - * @param point Optional point for mergeAlpha checks - * @param rotation How much we will rotate the frame when we will be - * drawing it on specified `BitmapData`. - * @param mergeAlpha Whether to merge alphas or not - * (works like with `BitmapData`'s `copyPixels()` method). - * @param disposeIfNotEqual Whether dispose passed bmd or not if its size isn't - * equal to frame's original size (`sourceSize`). - * @return Prepared `BitmapData` for further frame blitting. Output `BitmapData` could be a different object. - - - - - - - * Internal method which prepares frame rect for blitting. - * Required for rotated frames support. - * - * @param mat Frame transformation matrix (rotated / flipped / translated). - * @return Clipping rectangle which will be used for frame blitting. - - - - - - - - * Generates frame with specified subregion of this frame. - * - * @param rect Frame region to generate frame for. - * @param frameToFill Frame to fill with data. If `null` then a new frame will be created. - * @return Specified `frameToFill` object but filled with data. - - - - - - - - * Just a helper method for some frame adjusting. - * Try to not use it, since it may cause memory leaks. - * - * @param border Amount to clip from frame - * @return Clipped frame - - - - - - - - * Frame clipping - * - * @param clip Clipping rectangle to apply on frame - * @param clippedFrame The frame which will contain result of original frame clipping. - * If `null`, a new frame will be created. - * @return Result of applying frame clipping - - - - - - - * Copies data from this frame into specified frame. - * - * @param clone Frame to fill data with. If `null`, a new frame will be created. - * @return Frame with data of this frame. - - - - - - - - - - - - - - - - - { flipY : false, flipX : false, angle : FlxFrameAngle.ANGLE_0 } - flixel.graphics.FlxGraphic - flixel.graphics.frames.FlxFramesCollection - - - * Base class for all frame types - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * Just enumeration of all types of frames. - * Added for faster type detection with less usage of casting. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 90 - - - - - - - - cast -90 - - - - - - - - cast -90 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 90 - - - - - - - - cast -90 - - - - - - - - cast -90 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.graphics.frames.FlxFrameAngle) - - - - cast (90, flixel.graphics.frames.FlxFrameAngle) - - - - cast (-90, flixel.graphics.frames.FlxFrameAngle) - - - - cast (-90, flixel.graphics.frames.FlxFrameAngle) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (0, flixel.graphics.frames.FlxFrameType) - - - - cast (2, flixel.graphics.frames.FlxFrameType) - - - - cast (3, flixel.graphics.frames.FlxFrameType) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - flixel.graphics.frames.FlxFramesCollection - flixel.graphics.frames.FlxBitmapFont - - - <_HX_SUPER__cacheFrameMatrix set="method" line="31"> - - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Prepares matrix for frame blitting (see `paint` methods). - * - * @param mat Matrix to transform/prepare. - * @param rotation Rotation to apply to specified matrix. - * @param flipX Do we need to flip frame horizontally. - * @param flipY Do we need to flip frame vertically. - * @return Transformed matrix which can be used for frame painting. - - <_HX_SUPER__prepareTransformedBlitMatrix set="method" line="148"> - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - - - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Prepares matrix for frame tile/triangles rendering. - * - * @param mat Matrix to transform/prepare - * @param rotation Rotation to apply to specified matrix. - * @param flipX Do we need to flip frame horizontally - * @param flipY Do we need to flip frame vertically - * @return Transformed matrix which can be used for frame drawing. - - <_HX_SUPER__prepareMatrix public="1" set="method" line="148"> - - - - - - - - { flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false } - * Draws frame on specified `BitmapData` object. - * - * @param bmd `BitmapData` object to draw this frame on. - * If bmd is `null` then new a `BitmapData` is created. - * @param point Where to draw this frame on the specified `BitmapData` object. - * @param mergeAlpha Whether to merge alphas or not. - * (works like with `BitmapData`'s `copyPixels()` method). - * @param disposeIfNotEqual Whether dispose passed `bmd` or not if its size isn't - * equal to frame's original size (`sourceSize`) - * @return Modified or newly created `BitmapData` with frame image on it. - - <_HX_SUPER__paint public="1" set="method" line="148"> - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false } - - - - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false, flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - * Draws rotated and flipped frame on specified BitmapData object. - * - * @param bmd BitmapData object to draw this frame on. - * If `bmd` is `null` then new `BitmapData` created. - * @param point Where to draw this frame on the specified `BitmapData` object - * @param rotation How much rotate the frame. - * @param flipX Do we need to flip frame horizontally. - * @param flipY Do we need to flip frame vertically. - * @param mergeAlpha Whether to merge alphas or not - * (works like with `BitmapData`'s `copyPixels()` method). - * @param disposeIfNotEqual Whether dispose passed `bmd` or not if its size isn't - * equal to frame's original size (`sourceSize`) - * @return Modified or newly created `BitmapData` with frame image on it. - - <_HX_SUPER__paintRotatedAndFlipped public="1" set="method" line="148"> - - - - - - - - - - - { disposeIfNotEqual : false, mergeAlpha : false, flipY : false, flipX : false, rotation : FlxFrameAngle.ANGLE_0 } - - - - - - - - * Generates frame with specified subregion of this frame. - * - * @param rect Frame region to generate frame for. - * @param frameToFill Frame to fill with data. If `null` then a new frame will be created. - * @return Specified `frameToFill` object but filled with data. - - <_HX_SUPER__subFrameTo public="1" set="method" line="148"> - - - - - - - - - - - * Just a helper method for some frame adjusting. - * Try to not use it, since it may cause memory leaks. - * - * @param border Amount to clip from frame - * @return Clipped frame - - <_HX_SUPER__setBorderTo public="1" set="method" line="148"> - - - - - - - - - - - * Frame clipping - * - * @param clip Clipping rectangle to apply on frame - * @param clippedFrame The frame which will contain result of original frame clipping. - * If `null`, a new frame will be created. - * @return Result of applying frame clipping - - <_HX_SUPER__clipTo public="1" set="method" line="148"> - - - - - - - - - - * Copies data from this frame into specified frame. - * - * @param clone Frame to fill data with. If `null`, a new frame will be created. - * @return Frame with data of this frame. - - <_HX_SUPER__copyTo public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_frame set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxFrame - flixel.graphics.frames.FlxFrame.FlxFrameType - flixel.graphics.frames.FlxFrame.FlxFrameType - flixel.graphics.frames.FlxFrame.FlxFrameAngle - flixel.graphics.frames.FlxFrame.FlxFrameAngle - flixel.graphics.frames.FlxFrame.FlxFrameAngle_HSC - flixel.graphics.frames.FlxFrame.FlxFrameType_HSC - - - - - - - - - - * An enumeration of all types of frame collections. - * Added for faster type detection with less usage of casting. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Finds frame index by its name. - * - * @param name Name of the frame. - * @return Index of the frame with specified name. - - <_HX_SUPER__getIndexByName public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Adds empty frame into this frame collection. - * An empty frame is doing almost nothing for all the time. - * - * @param size Dimensions of the frame to add. - * @return Newly added empty frame. - - <_HX_SUPER__addEmptyFrame public="1" set="method" line="148"> - - - - - - - - - * Adds new regular (not rotated) `FlxFrame` to this frame collection. - * - * @param region Region of image which new frame will display. - * @return Newly created `FlxFrame` object for specified region of image. - - <_HX_SUPER__addSpriteSheetFrame public="1" set="method" line="148"> - - - - - - - - - - - - - - - { flipY : false, flipX : false, angle : 0 } - * Adds new frame to this frame collection. - * This method runs additional check, and can add rotated frames (from texture atlases). - * - * @param frame Region of image. - * @param sourceSize Original size of packed image - * (if image had been cropped, then original size will be bigger than frame size). - * @param offset How frame region is located on original frame image - * (offset from top left corner of original image). - * @param name Name for this frame (name of packed image file). - * @param angle Rotation of packed image (can be `0`, `90` or `-90`). - * @param flipX If packed image should be horizontally flipped. - * @param flipY If packed image should be vertically flipped. - * @return Newly created and added frame object. - - <_HX_SUPER__addAtlasFrame public="1" set="method" line="148"> - - - - - - - - - - - { flipY : false, flipX : false, angle : 0 } - - - - - - - - * Checks if frame's area fits into atlas image, and trims if it's out of atlas image bounds. - * - * @param frame Frame area to check. - * @param name Optional frame name for debugging info. - * @return Checked and trimmed frame rectangle. - - <_HX_SUPER__checkFrame set="method" line="148"> - - - - - - - - - - * Helper method for a adding frame to the collection. - * - * @param frameObj Frame to add. - * @return Added frame. - - <_HX_SUPER__pushFrame public="1" set="method" line="148"> - - - - - - - - - * Generates new frames collection from this collection but trims frames by specified borders. - * - * @param border How much space trim around the frames. - * @return Generated frames collection. - - <_HX_SUPER__addBorder public="1" set="method" line="148"> - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxFramesCollection - flixel.graphics.frames.FlxFramesCollection.FlxFrameCollectionType - - - - - - - - - - - * Generates a `FlxImageFrame` object with empty frame of specified size. - * - * @param graphic Graphic for the `FlxImageFrame`. - * @param frameRect The size of the empty frame to generate - * (only `width` and `height` of the `frameRect` need to be set properly). - * @return Newly created `FlxImageFrame` object with empty frame of specified size. - - - - - - - * Generates a `FlxImageFrame` object from the specified `FlxFrame`. - * - * @param source `FlxFrame` to generate `FlxImageFrame` from. - * @return Created `FlxImageFrame` object. - - - - - - - * Creates a `FlxImageFrame` object for the whole image. - * - * @param source image graphic for the `FlxImageFrame`. - * @return Newly created `FlxImageFrame` object for specified graphic. - - - - - - - - * Creates `FlxImageFrame` for the specified region of `FlxGraphic`. - * - * @param graphic Graphic for `FlxImageFrame`. - * @param region Region of image to create the `FlxImageFrame` for. - * @return Newly created `FlxImageFrame` object for the specified region of `FlxGraphic` object. - - - - - - - - * Creates a `FlxImageFrame` object for specified region of the image. - * - * @param source Image graphic for `FlxImageFrame`. - * @param region Region of the image to create the `FlxImageFrame` for. - * @return Newly created `FlxImageFrame` object for specified region of image. - - - - - - - - - * Gets source BitmapData, generates new BitmapData (if there is no such BitmapData in the cache already) - * and creates FlxImageFrame collection. - * - * @param source The source of graphic for frame collection. - * @param border Border to add around tiles (helps to avoid "tearing" problem). - * @param region Region of image to generate image frame from. Default value is `null`, which means that - * whole image will be used for it. - * @return Newly created image frame collection. - - - - - - - - * Gets `FlxFrame` object, generates new `BitmapData` with border pixels around - * (if there is no such BitmapData in the cache already) and creates image frame collection. - * - * @param frame Frame to generate tiles from. - * @param border Border to add around frame image (helps to avoid "tearing" problem). - * @return Newly created image frame collection. - - - - - - - - - * Searches `FlxImageFrame` object for specified `FlxGraphic` object which have the same frame rectangle. - * - * @param graphic `FlxGraphic` object to search the `FlxImageFrame` for. - * @param frameRect `FlxImageFrame` object should have frame with - * the same position and dimensions as specified with this argument. - * @return `FlxImageFrame` object which corresponds to specified rectangle. - * Could be `null` if there is no such `FlxImageFrame`. - - - - - - - - * Searches `FlxImageFrame` object with the empty frame which have specified size. - * - * @param graphic `FlxGraphic` object to search `FlxImageFrame` for. - * @param frameRect The size of empty frame to search for. - * @return `FlxImageFrame` with empty frame. - - - - * Single frame of this frame collection. - * Added this var for faster access, so you don't need to type something like: `imageFrame.frames[0]` - - - - - - - - * `FlxImageFrame` comparison method. For internal use. - - - - - - - - - - - - - * Single-frame collection. - * Could be useful for non-animated sprites. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__addBorder public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__get_frame set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxImageFrame - - - - - - - - - - - - - - * Gets source `BitmapData`, generates new `BitmapData` with spaces between frames - * (if there is no such `BitmapData` in the cache already) and creates `FlxTileFrames` collection. - * - * @param source The source of graphic for frame collection. - * @param tileSize The size of tiles in spritesheet. - * @param tileSpacing Desired offsets between frames in spritesheet - * (this method takes spritesheet bitmap without offsets between frames and adds them). - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem). - * @param region Region of image to generate spritesheet from. Default value is `null`, which means that - * the whole image will be used for spritesheet generation. - * @return Newly created spritesheet. - - - - - - - - - - * Gets `FlxFrame` object, generates new `BitmapData` with spaces between tiles in the frame - * (if there is no such `BitmapData` in the cache already) and creates a `FlxTileFrames` collection. - * - * @param frame Frame to generate tiles from. - * @param tileSize the size of tiles in spritesheet. - * @param tileSpacing desired offsets between frames in spritesheet. - * (this method takes spritesheet bitmap without offsets between frames and adds them). - * @param tileBorder Border to add around tiles (helps to avoid "tearing" problem). - * @return Newly created spritesheet. - - - - - - - - - * Generates spritesheet frame collection from provided frame. Can be useful for spritesheets packed into atlases. - * It can generate spritesheets from rotated and cropped frames also, - * which is important for devices with limited memory. - * - * @param frame Frame, containing spritesheet image - * @param tileSize The size of tiles in spritesheet - * @param tileSpacing Offsets between frames in spritesheet. - * Default value is `null`, which means no offsets between tiles. - * @return Newly created spritesheet frame collection. - - - - - - - * Just generates tile frames collection from specified array of frames. - * - * @param Frames `Array` of frames to generate tile frames from. - * They all should have the same source size and parent graphic. - * If not then `null` will be returned. - * @return Generated collection of frames. - - - - - - - - * Creates new a `FlxTileFrames` collection from atlas frames which begin with - * a common name (e.g. `"tiles-"`) and differ in indices (e.g. `"001"`, `"002"`, etc.). - * This method is similar to `FlxAnimationController`'s `addByPrefix()`. - * - * @param Frames Collection of atlas frames to generate tiles from. - * @param Prefix Common beginning of image names in atlas (e.g. `"tiles-"`). - * @return Generated tile frames collection. - - - - - - - - - - * Generates spritesheet frame collection from provided region of image. - * - * @param graphic Source graphic for spritesheet. - * @param tileSize The size of tiles in spritesheet. - * @param region Region of image to use for spritesheet generation. Default value is `null`, - * which means that the whole image will be used for it. - * @param tileSpacing Offsets between frames in spritesheet. - * Default value is `null`, which means no offsets between tiles. - * @return Newly created spritesheet frame collection. - - - - - - - - - - * Generates a spritesheet frame collection from the provided image region. - * - * @param source Source graphic for the spritesheet. - * @param tileSize The size of tiles in spritesheet. - * @param region Region of image to use for spritesheet generation. Default value is `null`, - * which means that whole image will be used for it. - * @param tileSpacing Offsets between frames in spritesheet. - * Default value is `null`, which means no offsets between tiles. - * @return Newly created spritesheet frame collection. - - - - - - - - - - * This method takes array of tileset bitmaps and the size of - * tiles in them and then combine them in one big tileset. - * The order of bitmaps in the array is important. - * - * ```haxe - * var combinedFrames = FlxTileFrames.combineTileSets(bitmaps, FlxPoint.get(16, 16)); - * tilemap.loadMapFromCSV(mapData, combinedFrames); - * ``` - * - * or - * - * ```haxe - * sprite.frames = combinedFrames; - * ``` - * - * @param bitmaps tilesets - * @param tileSize The size of tiles (tilesets should have tiles of the same size). - * @return Atlas frames collection, which you can load in tilemaps or sprites: - - - - - - - - - * This method takes array of tile frames collections and then combine them in one big tileset. - * The order of bitmaps in array is important. - * - * - * ```haxe - * var combinedFrames = FlxTileFrames.combineTileFrames(tileframes); - * tilemap.loadMapFromCSV(mapData, combinedFrames); - * ``` - * - * or - * - * ```haxe - * sprite.frames = combinedFrames; - * ``` - * - * @param tileframes Tile frames collection to combine tiles from. - * @return Atlas frames collection, which you can load in tilemaps or sprites: - - - - - - - - - - - - * Searches `FlxTileFrames` object for a specified `FlxGraphic` object - * which has the same parameters (frame size, frame spacings, region of image, etc.). - * - * @param graphic `FlxGraphic` object to search `FlxTileFrames` for. - * @param tileSize The size of tiles in TileFrames. - * @param region The region of source image used for spritesheet generation. - * @param atlasFrame Optional `FlxFrame` object used for spritesheet generation. - * @param tileSpacing Spaces between tiles in spritesheet. - * @return `FlxTileFrames` object which corresponds to specified arguments. - * Could be null if there is no such `FlxTileFrames`. - - - - * Atlas frame from which this frame collection had been generated. - * Could be `null` if this collection generated from rectangle. - - - - * Image region of the image from which this frame collection had been generated. - - - - * The size of frame in this spritesheet. - - - - * Offsets between frames in this spritesheet. - - - - 0 - - - - 0 - - - - - - - - * Gets frame by its "position" in spritesheet. - - - - - - - - - - - * TileFrames comparison method. For internal use. - - - - - - - - - - - - * Spritesheet frame collection. It is used for tilemaps and animated sprites. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - * TileFrames comparison method. For internal use. - - <_HX_SUPER__equals public="1" set="method" line="148"> - - - - - - - - - - - - <_HX_SUPER__addBorder public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.frames.FlxTileFrames - - - - - - 0 - * Tracks the total number of draw calls made each frame. - - - - - - - - - - - false - - - - false - - - - false - - - - 0 - - - - - - - - - - - - - - - - - - - - - * @author Zaphod - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__dispose public="1" set="method" line="31"> - - - - - - - <_HX_SUPER__addQuad public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__render public="1" set="method" line="31"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.tile.FlxDrawQuadsItem - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - FlxPoint.get() - - - - FlxRect.get() - - - - - - - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - 0 - - - - 0 - - - - 0 - - - - FlxRect.get() - - - - - - - - - - - - - - - - - - - - - - - - - - * @author Zaphod - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__render public="1" set="method" line="31"> - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__dispose public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__addTriangles public="1" set="method" line="31"> - - - - - - - - - - - - - - - <_HX_SUPER__addQuad public="1" set="method" line="31"> - - - - - - - <_HX_SUPER__get_numVertices set="method" line="148"> - - <_HX_SUPER__get_numTriangles set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.tile.FlxDrawTrianglesItem.DrawData - flixel.graphics.tile.FlxDrawTrianglesItem - - - - - - The raw shader bytecode for this Shader instance. - - - - Provides access to parameters, input images, and metadata for the - Shader instance. ShaderParameter objects representing parameters for - the shader, ShaderInput objects representing the input images for the - shader, and other values representing the shader's metadata are - dynamically added as properties of the `data` property object when the - Shader instance is created. Those properties can be used to introspect - the shader and to set parameter and input values. - For information about accessing and manipulating the dynamic - properties of the `data` object, see the ShaderData class description. - - - - Get or set the fragment source used when compiling with GLSL. - - This property is not available on the Flash target. - - - - "checkstyle:Dynamic" - The compiled GLProgram if available. - - This property is not available on the Flash target. - - - - Get or set the vertex source used when compiling with GLSL. - - This property is not available on the Flash target. - - - - The precision of math operations performed by the shader. - The set of possible values for the `precisionHint` property is defined - by the constants in the ShaderPrecision class. - - The default value is `ShaderPrecision.FULL`. Setting the precision to - `ShaderPrecision.FAST` can speed up math operations at the expense of - precision. - - Full precision mode (`ShaderPrecision.FULL`) computes all math - operations to the full width of the IEEE 32-bit floating standard and - provides consistent behavior on all platforms. In this mode, some math - operations such as trigonometric and exponential functions can be - slow. - - Fast precision mode (`ShaderPrecision.FAST`) is designed for maximum - performance but does not work consistently on different platforms and - individual CPU configurations. In many cases, this level of precision - is sufficient to create graphic effects without visible artifacts. - - The precision mode selection affects the following shader operations. - These operations are faster on an Intel processor with the SSE - instruction set: - - * `sin(x)` - * `cos(x)` - * `tan(x)` - * `asin(x)` - * `acos(x)` - * `atan(x)` - * `atan(x, y)` - * `exp(x)` - * `exp2(x)` - * `log(x)` - * `log2(x)` - * `pow(x, y)` - * `reciprocal(x)` - * `sqrt(x)` - - - - The compiled Program3D if available. - - This property is not available on the Flash target. - - <__alpha> - - - - <__bitmap> - - - - <__colorMultiplier> - - - - <__colorOffset> - - - - <__context> - - - - <__data> - - - - <__glFragmentSource> - - - - <__glSourceDirty> - - - - <__glVertexSource> - - - - <__hasColorTransform> - - - - <__inputBitmapData> - - - - <__isGenerated> - - - - <__matrix> - - - - <__numPasses> - - - - <__paramBool> - - - - <__paramFloat> - - - - <__paramInt> - - - - <__position> - - - - <__textureCoord> - - - - <__texture> - - - - <__textureSize> - - - - <__clearUseArray set="method" line="271"> - - - - <__createGLShader set="method" line="319"> - - - - - - - - <__createGLProgram set="method" line="343"> - - - - - - - - <__disable set="method" line="376"> - - - - <__disableGL set="method" line="384"> - - - - <__enable set="method" line="422"> - - - - <__enableGL set="method" line="432"> - - - - <__init set="method" line="452"> - - - - <__initGL set="method" line="465"> - - - - <__processGLData set="method" line="573"> - - - - - - - - <__update set="method" line="733"> - - - - <__updateFromBuffer set="method" line="741"> - - - - - - - - <__updateGL set="method" line="749"> - - - - <__updateGLFromBuffer set="method" line="775"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { code : null } - Creates a new Shader instance. - - @param code The raw shader bytecode to link to the Shader. - - - AIR Profile Support for more information regarding API support across - multiple profiles.]]> - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display3D.Program3D - openfl.display.ShaderInput - openfl.display.ShaderParameter - openfl.utils._internal.ShaderMacro.build() - - - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - - - - - - - { code : null } - "attribute float openfl_Alpha;\n\t\tattribute vec4 openfl_ColorMultiplier;\n\t\tattribute vec4 openfl_ColorOffset;\n\t\tattribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\n\t\tvarying float openfl_Alphav;\n\t\tvarying vec4 openfl_ColorMultiplierv;\n\t\tvarying vec4 openfl_ColorOffsetv;\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform bool openfl_HasColorTransform;\n\t\tuniform vec2 openfl_TextureSize;" - "openfl_Alphav = openfl_Alpha;\n\t\topenfl_TextureCoordv = openfl_TextureCoord;\n\n\t\tif (openfl_HasColorTransform) {\n\n\t\t\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\n\t\t\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\n\n\t\t}\n\n\t\tgl_Position = openfl_Matrix * openfl_Position;" - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - "varying float openfl_Alphav;\n\t\tvarying vec4 openfl_ColorMultiplierv;\n\t\tvarying vec4 openfl_ColorOffsetv;\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform bool openfl_HasColorTransform;\n\t\tuniform vec2 openfl_TextureSize;\n\t\tuniform sampler2D bitmap;" - 0.0) {\n\n\t\t\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl_FragColor = color * openfl_Alphav;\n\n\t\t}"]]> - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_camSize public="1"> - - - - - - - "\r\n\t\t#pragma header\r\n\t\t\r\n\t\tattribute float alpha;\r\n\t\tattribute vec4 colorMultiplier;\r\n\t\tattribute vec4 colorOffset;\r\n\t\tuniform bool hasColorTransform;\r\n\t\t\r\n\t\tvoid main(void)\r\n\t\t{\r\n\t\t\t#pragma body\r\n\t\t\t\r\n\t\t\topenfl_Alphav = openfl_Alpha * alpha;\r\n\t\t\t\r\n\t\t\tif (hasColorTransform)\r\n\t\t\t{\r\n\t\t\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\t\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t\t\t}\r\n\t\t}" - 0.0)\r\n\t\t\t{\r\n\t\t\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t\t\t}\r\n\t\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n\t\t}\r\n\r\n\t\tuniform vec4 _camSize;\r\n\t\t\r\n\t\tfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\t\t return min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n\t\t}\r\n\t\t\r\n\t\tvec2 getCamPos(vec2 pos) {\r\n\t\t\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\t\t\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n\t\t}\r\n\t\tvec2 camToOg(vec2 pos) {\r\n\t\t\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\t\t\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n\t\t}\r\n\t\tvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\t\t\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n\t\t}\r\n\t"]]> - "\r\n\t\t#pragma header\r\n\t\t\r\n\t\tvoid main(void)\r\n\t\t{\r\n\t\t\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n\t\t}" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - <_HX_SUPER__setCamSize public="1" set="method" line="148"> - - - - - - - <__interp> - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.graphics.tile.FlxGraphicsShader - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <_groupMembers> - <_filter> - - - - <_cursor> - <_length> - - - - - - - - - - - * Iterator implementation for groups - * Support a filter method (used for iteratorAlive, iteratorDead and iteratorExists) - * @author Masadow - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * @since 4.8.0 - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_ANY set="method" line="148"> - - <_HX_SUPER__get_NONE set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.FlxBaseKeyList - - - - - - - - - - - - RELEASED - - - - RELEASED - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (-1, flixel.input.FlxInputState) - - - - cast (0, flixel.input.FlxInputState) - - - - cast (1, flixel.input.FlxInputState) - - - - cast (2, flixel.input.FlxInputState) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - true - * Whether or not keyboard input is currently enabled. - - - - [] - * List of keys on which preventDefault() is called, useful on HTML5 to stop - * the browser from scrolling when pressing the up or down key for example, or - * on android to prevent the default back key action. - - - - * Helper class to check if a key is pressed. - - - - * Helper class to check if a key was just pressed. - - - - * Helper class to check if a key is released. - * @since 4.8.0 - - - - * Helper class to check if a key was just released. - - <_keyListArray expr="[]"> - - - [] - flixel.input.FlxBaseKeyList - - * Internal storage of input keys as an array, for efficient iteration. - - <_keyListMap expr="new Map<Int,FlxInput<Key>>()"> - - - - - >()]]> - * Internal storage of input keys as a map, for efficient indexing. - - - - - - - * Check to see if at least one key from an array of keys is pressed. - * - * @param KeyArray An array of key names - * @return Whether at least one of the keys passed in is pressed. - - - - - - - * Check to see if at least one key from an array of keys was just pressed. - * - * @param KeyArray An array of key names - * @return Whether at least one of the keys passed was just pressed. - - - - - - - * Check to see if at least one key from an array of keys was just released. - * - * @param KeyArray An array of key names - * @return Whether at least one of the keys passed was just released. - - - - * Get the ID of the first key which is currently pressed. - * - * @return The ID of the first pressed key or -1 if none are pressed. - - - - * Get the ID of the first key which has just been pressed. - * - * @return The ID of the key or -1 if none were just pressed. - - - - * Get the ID of the first key which has just been released. - * - * @return The ID of the key or -1 if none were just released. - - - - - - - - * Check the status of a single of key - * - * @param KeyCode KeyCode to be checked. - * @param Status The key state to check for. - * @return Whether the provided key has the specified status. - - - - - - - - flixel.input.FlxBaseKeyList - * Check the status of a single of key. - * Throws errors on ANY, NONE or invalid keys. - * Use `checkStatus`, for most cases. - * - * @param KeyCode KeyCode to be checked. - * @param Status The key state to check for. - * @return Whether the provided key has the specified status. - - - - * Get an Array of Key that are in a pressed state - * - * @return Array of keys that are currently pressed. - - - - * Clean up memory. - - - - * Resets all the keys. - - - - * Updates the key states (for tracking just pressed, just released, etc). - - - - - - - - * Helper function to check the status of an array of keys - * - * @param KeyArray An array of keys as Strings - * @param State The key state to check for - * @return Whether at least one of the keys has the specified status - - - - - - - * Event handler so FlxGame can toggle keys. - - - - - - - * Internal event handler for input and focus. - - - - - - - - - - - - - * A Helper function to check whether an array of keycodes contains - * a certain key safely (returns false if the array is null). - - - - - - - - - - - - * A helper function to update the key states based on a keycode provided. - - - - - - - - - * Return a key from the key list, if found. Will return null if not found. - - - - - - - - - - - - - * Keeps track of what keys are pressed and how with handy Bools or strings. - * Automatically instatiated by flixel as a `FlxKeyboard` and accessed via `FlxG.keys` - * or `FlxAndroidKeys` with `FlxG.android`. - * Example: `FlxG.keys.justPressed.A` - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - * Fetch the world position of the pointer on any given camera. - * NOTE: x and y also store the world position of the pointer on the main camera. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location in world space. - - <_HX_SUPER__getWorldPosition public="1" set="method" line="148"> - - - - - - - - - - - * Fetch the screen position of the pointer on any given camera. - * NOTE: screenX and screenY also store the screen position of the pointer on the main camera. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location in screen space. - - <_HX_SUPER__getScreenPosition public="1" set="method" line="148"> - - - - - - - - - - - flixel.FlxCamera - * Fetch the screen position of the pointer relative to given camera's viewport. - * - * @param Camera If unspecified, first/main global camera is used instead. - * @param point An existing point object to store the results (if you don't want a new one created). - * @return The touch point's location relative to camera's viewport. - - <_HX_SUPER__getPositionInCameraView public="1" set="method" line="148"> - - - - - - - - - - * Returns a FlxPoint with this input's x and y. - - <_HX_SUPER__getPosition public="1" set="method" line="148"> - - - - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - * Checks to see if some FlxObject overlaps this FlxObject or FlxGroup. - * If the group has a LOT of things in it, it might be faster to use FlxG.overlaps(). - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param ObjectOrGroup The object or group being tested. - * @param Camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return Whether or not the two objects overlap. - - <_HX_SUPER__overlaps public="1" set="method" line="148"> - - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - * Helper function to update the cursor used by update() and playback(). - * Updates the x, y, screenX, and screenY variables based on the default camera. - - <_HX_SUPER__updatePositions set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.FlxPointer - - - - - - * Either LEFT_MOUSE, MIDDLE_MOUSE or RIGHT_MOUSE, - * or the touchPointID of a FlxTouch. - - - - - - - "FlxSwipe.angle is deprecated, use degrees" - - - - - <_startTimeInTicks> - <_endTimeInTicks> - - - - - "FlxSwipe.angle is deprecated, use degrees" - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.mouse.FlxMouseButton - flixel.input.touch.FlxTouch - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.FlxSwipe - - - - - - - * Digital or Analog - - - - * The name of the action, "jump", "fire", "move", etc. - - - - -1 - * This action's numeric handle for the Steam API (ignored if not using Steam) - - - - false - * If true, this action has just been triggered - - - - * The inputs attached to this action - - <_x expr="null"> - - null - - <_y expr="null"> - - null - - <_timestamp expr="0"> - - 0 - - <_checked expr="false"> - - false - - - - false - * Whether the steam controller inputs for this action have changed since the last time origins were polled. Always false if steam isn't active - - - - - - - - - - - - { Destroy : true } - - - - - - - - { Destroy : false } - - - - - * See if this action has just been triggered - - - - - - - - - - - - - - - - - - - - - - - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - flixel.input.actions.FlxActionDigital - flixel.input.actions.FlxActionAnalog - flixel.input.actions.FlxActionSet - - - - - - - - - - - * Function to call when this action occurs - - - - - - - * Add a digital input (any kind) that will trigger this action - * @param input - * @return This action - - - - - - - - * Add a generic IFlxInput action input - * - * WARNING: IFlxInput objects are often member variables of some other - * object that is often destructed at the end of a state. If you don't - * destroy() this input (or the action you assign it to), the IFlxInput - * reference will persist forever even after its parent object has been - * destroyed! - * - * @param Input A generic IFlxInput object (ex: FlxButton.input) - * @param Trigger Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE } - * Add a gamepad action input for digital (button-like) events - * @param InputID "universal" gamepad input ID (A, X, DPAD_LEFT, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.ALL / FIRST_ACTIVE - * @return This action - - - - - - - - * Add a keyboard action input - * @param Key Key identifier (FlxKey.SPACE, FlxKey.Z, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - - - - - - - * Mouse button action input - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - - - - - - - 0; False: respond to mouse wheel values < 0 - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action]]> - - - - - - - - - - - - - { Name : "" } - * Create a new digital action - * @param Name name of the action - * @param Callback function to call when this action occurs - - * A digital action is a binary on/off event like "jump" or "fire". - * FlxActions let you attach multiple inputs to a single in-game action, - * so "jump" could be performed by a keyboard press, a mouse click, - * or a gamepad button press. - * - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Function to call when this action occurs - - - - * X axis value, or the value of a single-axis analog input. - - - - * Y axis value. (If action only has single-axis input this is always == 0) - - - - - - - * Add an analog input that will trigger this action - - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : FlxAnalogAxis.EITHER } - * Add mouse input -- same as mouse motion, but requires a particular mouse button to be PRESSED - * Very useful for e.g. panning a map or canvas around - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - * @return This action - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : EITHER } - * Add mouse input -- X/Y is the RELATIVE motion of the mouse since the last frame - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - * @return This action - - - - - - - - { Axis : EITHER } - * Add mouse input -- X/Y is the mouse's absolute screen position - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @return This action - - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE, Axis : EITHER } - * Add gamepad action input for analog (trigger, joystick, touchpad, etc) events - * @param InputID "universal" gamepad input ID (LEFT_TRIGGER, RIGHT_ANALOG_STICK, TILT_PITCH, etc) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.FIRST_ACTIVE / ALL - * @return This action - - - - - - - - - - - - - - - - - { Name : "" } - * Create a new analog action - * @param Name name of the action - * @param Callback function to call when this action occurs - - * Analog actions are events with continuous (floating-point) values, and up - * to two axes (x,y). This is for events like "move" and "accelerate" where the - * event is not simply on or off. - * - * FlxActions let you attach multiple inputs to a single in-game action, - * so "move" could be performed by a gamepad joystick, a mouse movement, etc. - * - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Digital or Analog - - - - * Mouse, Keyboard, Gamepad, SteamController, etc. - - - - - - - - false - - - - * Input code (FlxMouseButtonID, FlxKey, FlxGamepadInputID, or Steam Controller action handle) - - - - * What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - - - - - - - - - * Check whether this action has just been triggered - - - - - - - - * Check whether `state` fulfills `condition`. Note: order of operations is - * important here. `compareState(JUST_PRESSED, PRESSED) == false`, while - * `compareState(PRESSED, JUST_PRESSED) == true`. - * @return Whether or not the condition is satisfied by state. - - - - - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputAnalog - - - - - - - * @since 4.6.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - * @since 4.6.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - -1 - * Means "every connected device of the given type" (ie all gamepads, all steam controllers, etc) - - - - -2 - * Means "the first connected device that has an active input" (ie a pressed button or moved analog stick/trigger/etc) - - - - -3 - * Means "no device" - - * Just a bucket for some handy sentinel values. - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { Model : "" } - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast cast FlxInputState.JUST_RELEASED - - - - - - - - cast cast FlxInputState.RELEASED - - - - - - - - cast cast FlxInputState.PRESSED - - - - - - - - cast cast FlxInputState.JUST_PRESSED - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast cast FlxInputState.JUST_RELEASED - - - - - - - - cast cast FlxInputState.RELEASED - - - - - - - - cast cast FlxInputState.PRESSED - - - - - - - - cast cast FlxInputState.JUST_PRESSED - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - true - - - - false - - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE, Axis : EITHER } - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions.FlxAction - - - - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : EITHER } - * Mouse input -- X/Y is the RELATIVE motion of the mouse since the last frame - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : FlxAnalogAxis.EITHER } - * Mouse input -- same as FlxActionInputAnalogMouseMotion, but requires a particular mouse button to be PRESSED - * Very useful for e.g. panning a map or canvas around - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - { Axis : EITHER } - * Mouse input -- X/Y is the mouse's absolute screen position - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE, Axis : EITHER } - * Gamepad action input for analog (trigger, joystick, touchpad, etc) events - * @param InputID "universal" gamepad input ID (LEFT_TRIGGER, RIGHT_ANALOG_STICK, TILT_PITCH, etc) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.FIRST_ACTIVE / ALL - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { DeviceID : FlxInputDeviceID.ALL, Axis : EITHER } - flixel.input.actions.FlxActionSet - - * Steam Controller action input for analog (trigger, joystick, touchpad, etc) events - * @param ActionHandle handle received from FlxSteamController.getAnalogActionHandle() - * @param Trigger what state triggers this action (MOVING, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param DeviceHandle handle received from FlxSteamController.getConnectedControllers(), or FlxInputDeviceID.ALL / FlxInputDeviceID.FIRST_ACTIVE - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.input.actions.FlxAnalogAxis) - - - - cast (1, flixel.input.actions.FlxAnalogAxis) - - - - cast (2, flixel.input.actions.FlxAnalogAxis) - - - - cast (3, flixel.input.actions.FlxAnalogAxis) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (cast FlxInputState.JUST_RELEASED, flixel.input.actions.FlxAnalogState) - - - - cast (cast FlxInputState.RELEASED, flixel.input.actions.FlxAnalogState) - - - - cast (cast FlxInputState.PRESSED, flixel.input.actions.FlxAnalogState) - - - - cast (cast FlxInputState.JUST_PRESSED, flixel.input.actions.FlxAnalogState) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__checkAxis set="method" line="148"> - - - - - - - - - - <_HX_SUPER__updateValues set="method" line="31"> - - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState_HSC - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - <_HX_SUPER__updateValues set="method" line="31"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState_HSC - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - <_HX_SUPER__updateXYPosition set="method" line="31"> - - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState_HSC - - - - - - - - - - <_HX_SUPER__updateValues set="method" line="31"> - - - - - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState_HSC - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogClickAndDragMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMouseMotion - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogMousePosition - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogGamepad - flixel.input.actions.FlxActionInputAnalog.FlxActionInputAnalogSteam - flixel.input.actions.FlxActionInputAnalog - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis - flixel.input.actions.FlxActionInputAnalog.FlxAnalogAxis_HSC - flixel.input.actions.FlxActionInputAnalog.FlxAnalogState_HSC - - - - - - - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - 0 - - - - - - - - - - - - - 0; False: respond to mouse wheel values < 0 - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED)]]> - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE } - * Gamepad action input for digital (button-like) events - * @param InputID "universal" gamepad input ID (A, X, DPAD_LEFT, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.ALL / FIRST_ACTIVE - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - * Keyboard action input - * @param Key Key identifier (FlxKey.SPACE, FlxKey.Z, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - * Mouse button action input - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - { DeviceHandle : FlxInputDeviceID.FIRST_ACTIVE } - flixel.input.actions.FlxActionSet - - * Steam Controller action input for digital (button-like) events - * @param ActionHandle handle received from FlxSteamController.getDigitalActionHandle() - * @param Trigger what state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @param DeviceHandle handle received from FlxSteamController.getConnectedControllers(), or FlxInputDeviceID.ALL / FIRST_ACTIVE - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - * Generic IFlxInput action input - * - * WARNING: IFlxInput objects are often member variables of some other - * object that is often destructed at the end of a state. If you don't - * destroy() this input (or the action you assign it to), the IFlxInput - * reference will persist forever even after its parent object has been - * destroyed! - * - * @param Input A generic IFlxInput object (ex: FlxButton.input) - * @param Trigger Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - - - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInputDigital - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouseWheel - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalGamepad - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalKeyboard - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalMouse - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalSteam - flixel.input.actions.FlxActionInputDigital.FlxActionInputDigitalIFlxInput - - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInput - flixel.input.actions.FlxActionInput.FlxInputType - flixel.input.actions.FlxActionInput.FlxInputDevice - flixel.input.actions.FlxActionInput.FlxInputDeviceID - flixel.input.actions.FlxActionInput.FlxInputDeviceObject - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInput - flixel.input.actions.FlxActionInput.FlxInputType - flixel.input.actions.FlxActionInput.FlxInputDevice - flixel.input.actions.FlxActionInput.FlxInputDeviceID - flixel.input.actions.FlxActionInput.FlxInputDeviceObject - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Check whether this action has just been triggered - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionInput - flixel.input.actions.FlxActionInput.FlxInputType - flixel.input.actions.FlxActionInput.FlxInputDevice - flixel.input.actions.FlxActionInput.FlxInputDeviceID - flixel.input.actions.FlxActionInput.FlxInputDeviceObject - - - - - - - - - - null - - - - * The number of registered action sets - - - - - - - - - * A signal fired when a device currently in use is suddenly disconnected. Returns the device type, handle/id, and a string identifier for the device model (if applicable) - - - - - - - - - * A signal fired when a device is connected. Returns the device type, handle/id, and a string identifier for the device model (if applicable) - - - - - - - * A signal fired when an action's inputs have been externally changed. Returns a list of all actions whose inputs have changed. For now only used for Steam Controllers. - - - - ResetPolicy.DEFAULT_SET_ONLY - * Which action sets to remove on state switches. - - - - - - - - - * Activate an action set for a particular device - * @param ActionSet The integer ID for the Action Set you want to activate - * @param Device The device type (Mouse, Keyboard, Gamepad, SteamController, etc) - * @param DeviceID FlxGamepad ID or a Steam Controller Handle (ignored for Mouse/Keyboard) - - - - - - - - { ActionSet : 0 } - * Add actions to a particular action set - * @param Actions The FlxActions you want to add - * @param ActionSet The index of the FlxActionSet you want to add - * @return whether they were all successfully added - - - - - - - - { ActionSet : 0 } - * Add an action to a particular action set - * @param Action The FlxAction you want to add - * @param ActionSet The index of the FlxActionSet you want to add - * @return whether it was successfully added - - - - - - - * Add a FlxActionSet to the manager - * @param set The FlxActionSet you want to add - * @return the index of the FlxActionSet - - - - - - - - { DeviceID : FlxInputDeviceID.ALL } - * Deactivate an action set for any devices it is currently active for - * @param ActionSet The integer ID for the Action Set you want to deactivate - * @param DeviceID FlxGamepad ID or a Steam Controller Handle (ignored for Mouse/Keyboard) - - - - - - - - * Get the index of a particular action set - * @param name Action set name - * @return Index number of that set, -1 if not found - - - - - - - * Get the name of an action set - * @param Index Action set index - * @return Name of that set, "" if not found - - - - - - - * Get an action set - * @param Index Action set index - * @return The FlxActionSet at that location, or null if not found - - - - - - - - - { deviceID : FlxInputDeviceID.ALL } - flixel.input.actions.FlxActionManager.ActionSetRegister - - * Returns the action set that has been activated for this specific device - - - - - - - - - - - - - - - * Load action sets from a parsed Json object - * @param data Json object parsed from the same format that "exportToJson()" outputs - * @param CallbackDigital Callback function for digital actions - * @param CallbackAnalog Callback function for analog actions - * @return The number of new FlxActionSets created and added. 0 means nothing happened. - - - - flixel.input.actions.FlxAction - - - - - - - - { Destroy : true } - - - - - - - - - * Remove an action to a particular action set - * @param Action The FlxAction you want to remove - * @param ActionSet The index of the FlxActionSet you want to remove - * @return whether it was successfully removed - - - - - - - - - - - - - - - - - - - - - - - - - - flixel.input.actions.FlxSteamController - - - - - * High level input manager for `FlxAction`s. This lets you manage multiple input - * devices and action sets, and is the only supported method for natively using - * the Steam Controller API. - * - * Once you've set up `FlxActionManager`, you can let flixel handle it globally - * with: `FlxG.inputs.add(myFlxActionManager)`; - * - * If you don't add it globally, you will have to call `update()` on it yourself. - * - * If you are using the steamwrap library, `FlxActionManager` can automatically - * create action sets from a steamwrap object derived from the master vdf game - * actions file that Steam makes you set up for native controller support. - * You must then ACTIVATE one of those action sets for any connected steam - * controllers, which will automatically attach the proper steam action inputs - * to the actions in the set. You can also add as many regular `FlxActionInput`s - * as you like to any actions in the sets. - * - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - -1 - * The current action set for the mouse - - - - -1 - * The current action set for the keyboard - - - - -1 - * The current action set for ALL gamepads - - - - -1 - * The current action set for ALL steam controllers - - - - * Maps individual gamepad ID's to different action sets - - - - * Maps individual steam controller handles to different action sets - - - - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - - - - - - - - - - - - - - - - - - - - - { DoActivate : true, DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - - - - - - ********PRIVATE******* - - - - - - - - - flixel.input.actions.FlxAction - - - - - - - - - flixel.input.actions.FlxAction - - - - - - - - - - - * Helper function to properly update the action sets with proper steam inputs - - - - - - - - - * Attach this controller to a new action set, remove it from the old action set, update internal steam inputs accordingly - * @param controllerHandle steam controller handle (guaranteed not to be FlxInputDeviceID.ALL or FlxInputDeviceID.FIRST_ACTIVE) - * @param newSet the action set handle of the new set to attach to - - - - - - - - * Go through all action sets and mark them as active if any device is - * subscribed to one of their actions. (Assumes you've previously set - * them all to active=false earlier in the udpate loop) - * @param device - * @param sets - - - - - - - - { ActionSet : -1 } - - - * internal helper class - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions.FlxActionManager - - - - - - - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - * @since 4.6.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - * Do not reset any action sets. - * Reset all action sets. - * Only reset the default action set (created automatically by adding actions to the action manager without first defining an action set) - * @since 4.6.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * Activate an action set for a particular device - * @param ActionSet The integer ID for the Action Set you want to activate - * @param Device The device type (Mouse, Keyboard, Gamepad, SteamController, etc) - * @param DeviceID FlxGamepad ID or a Steam Controller Handle (ignored for Mouse/Keyboard) - - <_HX_SUPER__activateSet public="1" set="method" line="148"> - - - - - - - - - - - - { ActionSet : 0 } - * Add actions to a particular action set - * @param Actions The FlxActions you want to add - * @param ActionSet The index of the FlxActionSet you want to add - * @return whether they were all successfully added - - <_HX_SUPER__addActions public="1" set="method" line="148"> - - - - - - { ActionSet : 0 } - - - - - - - - { ActionSet : 0 } - * Add an action to a particular action set - * @param Action The FlxAction you want to add - * @param ActionSet The index of the FlxActionSet you want to add - * @return whether it was successfully added - - <_HX_SUPER__addAction public="1" set="method" line="148"> - - - - - - { ActionSet : 0 } - - - - - - - * Add a FlxActionSet to the manager - * @param set The FlxActionSet you want to add - * @return the index of the FlxActionSet - - <_HX_SUPER__addSet public="1" set="method" line="148"> - - - - - - - - - - { DeviceID : FlxInputDeviceID.ALL } - * Deactivate an action set for any devices it is currently active for - * @param ActionSet The integer ID for the Action Set you want to deactivate - * @param DeviceID FlxGamepad ID or a Steam Controller Handle (ignored for Mouse/Keyboard) - - <_HX_SUPER__deactivateSet public="1" set="method" line="148"> - - - - - - { DeviceID : FlxInputDeviceID.ALL } - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Get the index of a particular action set - * @param name Action set name - * @return Index number of that set, -1 if not found - - <_HX_SUPER__getSetIndex public="1" set="method" line="148"> - - - - - - - - - * Get the name of an action set - * @param Index Action set index - * @return Name of that set, "" if not found - - <_HX_SUPER__getSetName public="1" set="method" line="148"> - - - - - - - - - * Get an action set - * @param Index Action set index - * @return The FlxActionSet at that location, or null if not found - - <_HX_SUPER__getSet public="1" set="method" line="148"> - - - - - - - - - - - { deviceID : FlxInputDeviceID.ALL } - flixel.input.actions.FlxActionManager.ActionSetRegister - - * Returns the action set that has been activated for this specific device - - <_HX_SUPER__getSetActivatedForDevice public="1" set="method" line="148"> - - - - - - { deviceID : FlxInputDeviceID.ALL } - - - - - - - - - - - - - - - * Load action sets from a parsed Json object - * @param data Json object parsed from the same format that "exportToJson()" outputs - * @param CallbackDigital Callback function for digital actions - * @param CallbackAnalog Callback function for analog actions - * @return The number of new FlxActionSets created and added. 0 means nothing happened. - - <_HX_SUPER__initFromJson public="1" set="method" line="148"> - - - - - - - - - - - - - - flixel.input.actions.FlxAction - - <_HX_SUPER__exportToJson public="1" set="method" line="148"> - - - - - - - { Destroy : true } - - - <_HX_SUPER__removeSet public="1" set="method" line="148"> - - - - - - { Destroy : true } - - - - - - - - * Remove an action to a particular action set - * @param Action The FlxAction you want to remove - * @param ActionSet The index of the FlxActionSet you want to remove - * @return whether it was successfully removed - - <_HX_SUPER__removeAction public="1" set="method" line="148"> - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__get_numSets set="method" line="148"> - - <_HX_SUPER__onChange set="method" line="31"> - - - - - <_HX_SUPER__onDeviceConnected set="method" line="148"> - - - - - - - - <_HX_SUPER__onDeviceDisconnected set="method" line="148"> - - - - - <_HX_SUPER__onFocus set="method" line="31"> - - <_HX_SUPER__onFocusLost set="method" line="31"> - - <_HX_SUPER__onStateSwitched set="method" line="148"> - - - - - <_HX_SUPER__onSteamConnected set="method" line="148"> - - - - - - - - <_HX_SUPER__onSteamDisconnected set="method" line="148"> - - - - - - flixel.input.actions.FlxSteamController - - <_HX_SUPER__updateSteamControllers set="method" line="31"> - - <_HX_SUPER__updateSteamOrigins set="method" line="31"> - - <_HX_SUPER__update set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionManager - flixel.input.actions.FlxActionManager.ActionSetRegister - flixel.input.actions.FlxActionManager.ActionSetJsonArray - flixel.input.actions.FlxActionManager.ActionSetJson - flixel.input.actions.FlxActionManager.ResetPolicy - - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - <_HX_SUPER__activate public="1" set="method" line="148"> - - - - - - - { DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - - - - - <_HX_SUPER__markActiveSets public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__updateSteam public="1" set="method" line="148"> - - - - - - - - - - - - { DoActivate : true, DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - <_HX_SUPER__setActivate set="method" line="148"> - - - - - - - - { DoActivate : true, DeviceID : FlxInputDeviceID.FIRST_ACTIVE } - - - - - - - ********PRIVATE******* - - <_HX_SUPER__updateSteamOrigins set="method" line="148"> - - - - - - - - - - - flixel.input.actions.FlxAction - - <_HX_SUPER__updateDigitalActionOrigins set="method" line="148"> - - - - - - - - - - - - - flixel.input.actions.FlxAction - - <_HX_SUPER__updateAnalogActionOrigins set="method" line="148"> - - - - - - - - - - <_HX_SUPER__cheapChecksum set="method" line="148"> - - - - - - - - - * Helper function to properly update the action sets with proper steam inputs - - <_HX_SUPER__updateSteamInputs set="method" line="31"> - - - - - - - - - - - * Attach this controller to a new action set, remove it from the old action set, update internal steam inputs accordingly - * @param controllerHandle steam controller handle (guaranteed not to be FlxInputDeviceID.ALL or FlxInputDeviceID.FIRST_ACTIVE) - * @param newSet the action set handle of the new set to attach to - - <_HX_SUPER__changeSteamControllerActionSet set="method" line="148"> - - - - - - - - - - - - * Go through all action sets and mark them as active if any device is - * subscribed to one of their actions. (Assumes you've previously set - * them all to active=false earlier in the udpate loop) - * @param device - * @param sets - - <_HX_SUPER__syncDevice set="method" line="148"> - - - - - - - - - - - { ActionSet : -1 } - - <_HX_SUPER__clearSetFromArray set="method" line="148"> - - - - - - { ActionSet : -1 } - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionManager - flixel.input.actions.FlxActionManager.ActionSetRegister - flixel.input.actions.FlxActionManager.ActionSetJsonArray - flixel.input.actions.FlxActionManager.ActionSetJson - flixel.input.actions.FlxActionManager.ResetPolicy - - - - - - - - - - - - - - - - - - flixel.input.actions.FlxActionManager - * Create an action set from a parsed Json object - * - * @param Data A parsed Json object - * @param CallbackDigital A function to call when digital actions fire - * @param CallbackAnalog A function to call when analog actions fire - * @return An action set - - - - "" - * Name of the action set - - - - * Digital actions in this set - - - - * Analog actions in this set - - - - true - * Whether this action set runs when update() is called - - - - - - - - - { Attach : true } - * Automatically adds or removes inputs for a steam controller - * to any steam-affiliated actions - * @param Handle steam controller handle from FlxSteam.getConnectedControllers(), or FlxInputDeviceID.FIRST_ACTIVE / ALL - * @param Attach true: adds inputs, false: removes inputs - - - - - - - - - - - - - { Destroy : true } - * Remove an action from this set - * @param Action a FlxAction - * @param Destroy whether to destroy it as well - * @return whether it was found and removed - - - - - - - - - - - - - - - - - - - - * @since 4.6.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions.FlxActionManager - - - - - - <_HX_SUPER__toJson public="1" set="method" line="148"> - - - - - - - { Attach : true } - * Automatically adds or removes inputs for a steam controller - * to any steam-affiliated actions - * @param Handle steam controller handle from FlxSteam.getConnectedControllers(), or FlxInputDeviceID.FIRST_ACTIVE / ALL - * @param Attach true: adds inputs, false: removes inputs - - <_HX_SUPER__attachSteamController public="1" set="method" line="31"> - - - - - - { Attach : true } - - - - - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - { Destroy : true } - * Remove an action from this set - * @param Action a FlxAction - * @param Destroy whether to destroy it as well - * @return whether it was found and removed - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - { Destroy : true } - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__attachSteamControllerSub set="method" line="148"> - - - - - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxActionSet - - - - - - <_HX_SUPER__getFirstSteamOrigin public="1" set="method" line="148"> - - - - - <_HX_SUPER__getSteamOrigins public="1" set="method" line="148"> - - - - - - - - - { Destroy : true } - - <_HX_SUPER__removeAll public="1" set="method" line="31"> - - - - - { Destroy : true } - - - - - - - - { Destroy : false } - - <_HX_SUPER__remove public="1" set="method" line="31"> - - - - - - { Destroy : false } - - - <_HX_SUPER__toString public="1" set="method" line="148"> - - - * See if this action has just been triggered - - <_HX_SUPER__check public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__match public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__addGenericInput set="method" line="148"> - - - - - - - - <_HX_SUPER__checkExists set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxAction.FlxActionDigital - flixel.input.actions.FlxAction.FlxActionAnalog - flixel.input.actions.FlxAction - - - - - - - - - - * Add a digital input (any kind) that will trigger this action - * @param input - * @return This action - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - - * Add a generic IFlxInput action input - * - * WARNING: IFlxInput objects are often member variables of some other - * object that is often destructed at the end of a state. If you don't - * destroy() this input (or the action you assign it to), the IFlxInput - * reference will persist forever even after its parent object has been - * destroyed! - * - * @param Input A generic IFlxInput object (ex: FlxButton.input) - * @param Trigger Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - <_HX_SUPER__addInput public="1" set="method" line="148"> - - - - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE } - * Add a gamepad action input for digital (button-like) events - * @param InputID "universal" gamepad input ID (A, X, DPAD_LEFT, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.ALL / FIRST_ACTIVE - * @return This action - - <_HX_SUPER__addGamepad public="1" set="method" line="148"> - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE } - - - - - - - - * Add a keyboard action input - * @param Key Key identifier (FlxKey.SPACE, FlxKey.Z, etc) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - <_HX_SUPER__addKey public="1" set="method" line="148"> - - - - - - - - - - - * Mouse button action input - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action - - <_HX_SUPER__addMouse public="1" set="method" line="148"> - - - - - - - - - - - 0; False: respond to mouse wheel values < 0 - * @param Trigger What state triggers this action (PRESSED, JUST_PRESSED, RELEASED, JUST_RELEASED) - * @return This action]]> - - <_HX_SUPER__addMouseWheel public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__check public="1" set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxAction.FlxActionDigital - flixel.input.actions.FlxAction.FlxActionAnalog - flixel.input.actions.FlxAction - - - - - - - - - - * Add an analog input that will trigger this action - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : FlxAnalogAxis.EITHER } - * Add mouse input -- same as mouse motion, but requires a particular mouse button to be PRESSED - * Very useful for e.g. panning a map or canvas around - * @param ButtonID Button identifier (FlxMouseButtonID.LEFT / MIDDLE / RIGHT) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - * @return This action - - <_HX_SUPER__addMouseClickAndDragMotion public="1" set="method" line="148"> - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : FlxAnalogAxis.EITHER } - - - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : EITHER } - * Add mouse input -- X/Y is the RELATIVE motion of the mouse since the last frame - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param PixelsPerUnit How many pixels of movement = 1.0 in analog motion (lower: more sensitive, higher: less sensitive) - * @param DeadZone Minimum analog value before motion will be reported - * @param InvertY Invert the Y axis - * @param InvertX Invert the X axis - * @return This action - - <_HX_SUPER__addMouseMotion public="1" set="method" line="148"> - - - - - - - - - - { InvertX : false, InvertY : false, DeadZone : 0.1, PixelsPerUnit : 10, Axis : EITHER } - - - - - - - - { Axis : EITHER } - * Add mouse input -- X/Y is the mouse's absolute screen position - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @return This action - - <_HX_SUPER__addMousePosition public="1" set="method" line="148"> - - - - - - { Axis : EITHER } - - - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE, Axis : EITHER } - * Add gamepad action input for analog (trigger, joystick, touchpad, etc) events - * @param InputID "universal" gamepad input ID (LEFT_TRIGGER, RIGHT_ANALOG_STICK, TILT_PITCH, etc) - * @param Trigger What state triggers this action (MOVED, JUST_MOVED, STOPPED, JUST_STOPPED) - * @param Axis which axes to monitor for triggering: X, Y, EITHER, or BOTH - * @param GamepadID specific gamepad ID, or FlxInputDeviceID.FIRST_ACTIVE / ALL - * @return This action - - <_HX_SUPER__addGamepad public="1" set="method" line="148"> - - - - - - - - { GamepadID : FlxInputDeviceID.FIRST_ACTIVE, Axis : EITHER } - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - - <_HX_SUPER__check public="1" set="method" line="148"> - - <_HX_SUPER__get_x set="method" line="148"> - - <_HX_SUPER__get_y set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxAction.FlxActionDigital - flixel.input.actions.FlxAction.FlxActionAnalog - flixel.input.actions.FlxAction - - - - - - * The maximum number of controllers that can be connected - - - - * The maximum number of origins (input glyphs, basically) that can be assigned to an action - - - - 0.25 - * The wait time between polls for connected controllers - - - - 1.0 - * The wait time between polls for action origins (checking which input glyphs are associated with an action, in case the player has re-configured them) - - - - - null - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - -1 - - - - -1 - - - - false - - - - (0)]]> - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions - - - - - - - 0.0 - - - - 0.0 - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.actions - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxSteamController - flixel.input.actions.FlxSteamController.DigitalActionData - flixel.input.actions.FlxSteamController.FlxSteamControllerMetadata - flixel.input.actions.FlxSteamController.FlxSteamUpdater - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxSteamController - flixel.input.actions.FlxSteamController.DigitalActionData - flixel.input.actions.FlxSteamController.FlxSteamControllerMetadata - flixel.input.actions.FlxSteamController.FlxSteamUpdater - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxSteamController - flixel.input.actions.FlxSteamController.DigitalActionData - flixel.input.actions.FlxSteamController.FlxSteamControllerMetadata - flixel.input.actions.FlxSteamController.FlxSteamUpdater - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__update set="method" line="31"> - - <_HX_SUPER__onFocus set="method" line="31"> - - <_HX_SUPER__onFocusLost set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.actions.FlxSteamController - flixel.input.actions.FlxSteamController.DigitalActionData - flixel.input.actions.FlxSteamController.FlxSteamControllerMetadata - flixel.input.actions.FlxSteamController.FlxSteamUpdater - - - - - - - - * The device name. Used to determine the `model`. - - - - * The gamepad model used for the mapping of the IDs. - * Defaults to `detectedModel`, but can be changed manually. - - - - * The gamepad model this gamepad has been identified as. - - - - * The mapping that is used to map the raw hardware IDs to the values in `FlxGamepadInputID`. - * Determined by the current `model`. - * It's also possible to create a custom mapping and assign it here. - - - - true - - - - * For gamepads that can have things plugged into them (the Wii Remote, basically). - * Making the user set this helps Flixel properly interpret inputs properly. - * EX: if you plug a nunchuk into the Wii Remote, you will get different values for - * certain buttons than with the Wii Remote alone. - * (This is probably why Wii games ask the player what control scheme they are using.) - * - * In the future, this could also be used for any attachment that exposes new API features - * to the controller, e.g. a microphone or headset - - - - * Gamepad deadzone. The lower, the more sensitive the gamepad. - * Should be between 0.0 and 1.0. Defaults to 0.15. - - - - INDEPENDENT_AXES - * Which dead zone mode to use for analog sticks. - - - - * Helper class to check if a button is pressed. - - - - * Helper class to check if a button is released - - - - * Helper class to check if a button was just pressed. - - - - * Helper class to check if a button was just released. - - - - * Helper class to get the justMoved, justReleased, and float values of analog input. - - - - * Helper class to get the float values of motion-sensing input, if it is supported - - - - * Helper class to get the float values of mouse-like pointer input, if it is supported. - * (contains continously updated X and Y coordinates, each between 0.0 and 1.0) - - - - [for (i in 0 ... 6) 0] - - - - false - - - <_deadZone expr="0.15"> - - 0.15 - - <_device> - - - [] - - - - - - - - - - - - - * Updates the key states (for tracking just pressed, just released, etc). - - - - - - - - - - * Check the status of a "universal" button ID, auto-mapped to this gamepad (something like FlxGamepadInputID.A). - * - * @param ID "universal" gamepad input ID - * @param Status The key state to check for - * @return Whether the provided button has the specified status - - - - - - - - * Check the status of a raw button ID (like XInputID.A). - * - * @param RawID Index into buttons array. - * @param Status The key state to check for - * @return Whether the provided button has the specified status - - - - - - - - * Helper function to check the status of an array of buttons - * - * @param IDArray An array of button IDs - * @param State The button state to check for - * @return Whether at least one of the keys has the specified status - - - - - - - - * Helper function to check the status of an array of buttons - * - * @param IDArray An array of keys as Strings - * @param State The key state to check for - * @return Whether at least one of the keys has the specified status - - - - - - - * Check if at least one button from an array of button IDs is pressed. - * - * @param IDArray An array of "universal" gamepad input IDs - * @return Whether at least one of the buttons is pressed - - - - - - - * Check if at least one button from an array of raw button IDs is pressed. - * - * @param RawIDArray An array of raw button IDs - * @return Whether at least one of the buttons is pressed - - - - - - - * Check if at least one button from an array of universal button IDs was just pressed. - * - * @param IDArray An array of "universal" gamepad input IDs - * @return Whether at least one of the buttons was just pressed - - - - - - - * Check if at least one button from an array of raw button IDs was just pressed. - * - * @param RawIDArray An array of raw button IDs - * @return Whether at least one of the buttons was just pressed - - - - - - - * Check if at least one button from an array of gamepad input IDs was just released. - * - * @param IDArray An array of "universal" gamepad input IDs - * @return Whether at least one of the buttons was just released - - - - - - - * Check if at least one button from an array of raw button IDs was just released. - * - * @param RawArray An array of raw button IDs - * @return Whether at least one of the buttons was just released - - - - * Get the first found "universal" ID of the button which is currently pressed. - * Returns NONE if no button is pressed. - - - - * Get the first found raw ID of the button which is currently pressed. - * Returns -1 if no button is pressed. - - - - * Get the first found "universal" ButtonID of the button which has been just pressed. - * Returns NONE if no button was just pressed. - - - - * Get the first found raw ID of the button which has been just pressed. - * Returns -1 if no button was just pressed. - - - - * Get the first found "universal" ButtonID of the button which has been just released. - * Returns NONE if no button was just released. - - - - * Get the first found raw ID of the button which has been just released. - * Returns -1 if no button was just released. - - - - - - - * Gets the value of the specified axis using the "universal" ButtonID - - * use this only for things like FlxGamepadButtonID.LEFT_TRIGGER, - * use getXAxis() / getYAxis() for analog sticks! - - - - - - - * Gets the value of the specified axis using the raw ID - - * use this only for things like XInputID.LEFT_TRIGGER, - * use getXAxis() / getYAxis() for analog sticks! - - - - - - - - - - - - - - - * Given a ButtonID for an analog stick, gets the value of its x axis - * @param AxesButtonID an analog stick like FlxGamepadButtonID.LEFT_STICK - - - - - - - * Given both raw IDs for the axes of an analog stick, gets the value of its x axis - - - - - - - * Given a ButtonID for an analog stick, gets the value of its y axis - * @param AxesButtonID an analog stick like FlxGamepadButtonID.LEFT_STICK - - - - - - - * Given both raw ID's for the axes of an analog stick, gets the value of its Y axis - * (should be used in flash to correct the inverted y axis) - - - - - - - * Convenience method that wraps `getXAxis()` and `getYAxis()` into a `FlxPoint`. - * - * @param AxesButtonID an analog stick like `FlxGamepadButtonID.LEFT_STICK` - * @since 4.3.0 - - - - - - - { state : PRESSED } - * Whether any buttons have the specified input state. - - - - * Check to see if any buttons are pressed right or Axis, Ball and Hat moved now. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { sign : 1.0 } - - - - - - - - - - - - - - - - - - - - - - - - - * @since 4.8.0 - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.gamepad - - - - * The value of each axis is compared to the deadzone individually. - * Works better when an analog stick is used like arrow keys for 4-directional-input. - * X and y are combined against the deadzone combined. - * Works better when an analog stick is used as a two-dimensional control surface. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * @since 4.8.0 - * @since 4.8.0 - * @since 4.8.0 - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - -1 - * a raw button input ID, for sending a digital event for "up" alongside the analog event - - - - -1 - * a raw button input ID, for sending a digital event for "down" alongside the analog event - - - - -1 - * a raw button input ID, for sending a digital event for "left" alongside the analog event - - - - -1 - * a raw button input ID, for sending a digital event for "right" alongside the analog event - - - - 0.5 - * the absolute value the dpad must be greater than before digital inputs are sent - - - - BOTH - * when analog inputs are received, how to process them digitally - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - * Send both digital and analog events when the analog stick is moved - * Send only digital events when the analog stick is moved - * Send only analog events when the analog stick is moved - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.FlxGamepadAnalogStick - flixel.input.gamepad.FlxGamepadAnalogStick.FlxGamepadAnalogStickSettings - flixel.input.gamepad.FlxGamepadAnalogStick.FlxAnalogToDigitalMode - - - - - - - 0 - * Optional analog value, so we can check when the value has changed from the last frame - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.FlxGamepadButton - - - - - - - - - - - - - * A high-level list of unique values for gamepad inputs. - * These do NOT correspond to any actual hardware values but - * are the basis for all hardware-specific lookups. - * - * Maps enum values and strings to unique integer codes - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID") - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID", true) - - - - - cast -2 - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - BOTTOM face button - - - - - cast 1 - - - - RIGHT face button - - - - - cast 2 - - - - LEFT face button - - - - - cast 3 - - - - TOP face button - - - - - cast 4 - - - - left digital "bumper" - - - - - cast 5 - - - - right digital "bumper" - - - - - cast 6 - - - - also known as "select", the leftmost center button - - - - - cast 7 - - - - the rightmost center button - - - - - cast 8 - - - - digital click of the left analog stick - - - - - cast 9 - - - - digital click of the right analog stick - - - - - cast 10 - - - - this is the "XBox" or "PS" or "home" button in the center - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - digital click at end of left analog trigger's squeeze (if available) - - - - - cast 16 - - - - digital click at end of right analog trigger's squeeze (if available) - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - identifier for the entire LEFT_ANALOG_STICK itself, not just any particular direction - - - - - cast 20 - - - - identifier for the entire RIGHT_ANALOG_STICK itself, not just any particular direction - - - - - cast 21 - - - - identifier for the entire DPAD itself, not just any particular button - - - - - cast 26 - - - - tilting towards or away from the ceiling (think "look up", "look down") - - - - - cast 27 - - - - tilting side-to-side (think "twisting", or "do a barrel roll!") - - - - - cast 28 - - - - for a mouse-like input such as touch or IR camera. Horizontal axis. - - - - - cast 29 - - - - for a mouse-like input such as touch or IR camera. Vertical axis. - - - - - cast 30 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 31 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 32 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 33 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 34 - - - - left analog stick as a dpad, pushed up - - - - - cast 35 - - - - left analog stick as a dpad, pushed right - - - - - cast 36 - - - - left analog stick as a dpad, pushed down - - - - - cast 37 - - - - left analog stick as a dpad, pushed left - - - - - cast 38 - - - - left analog stick as a dpad, pushed up - - - - - cast 39 - - - - left analog stick as a dpad, pushed right - - - - - cast 40 - - - - left analog stick as a dpad, pushed down - - - - - cast 41 - - - - left analog stick as a dpad, pushed left - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID") - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID", true) - - - - - cast -2 - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - BOTTOM face button - - - - - cast 1 - - - - RIGHT face button - - - - - cast 2 - - - - LEFT face button - - - - - cast 3 - - - - TOP face button - - - - - cast 4 - - - - left digital "bumper" - - - - - cast 5 - - - - right digital "bumper" - - - - - cast 6 - - - - also known as "select", the leftmost center button - - - - - cast 7 - - - - the rightmost center button - - - - - cast 8 - - - - digital click of the left analog stick - - - - - cast 9 - - - - digital click of the right analog stick - - - - - cast 10 - - - - this is the "XBox" or "PS" or "home" button in the center - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - digital click at end of left analog trigger's squeeze (if available) - - - - - cast 16 - - - - digital click at end of right analog trigger's squeeze (if available) - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - identifier for the entire LEFT_ANALOG_STICK itself, not just any particular direction - - - - - cast 20 - - - - identifier for the entire RIGHT_ANALOG_STICK itself, not just any particular direction - - - - - cast 21 - - - - identifier for the entire DPAD itself, not just any particular button - - - - - cast 26 - - - - tilting towards or away from the ceiling (think "look up", "look down") - - - - - cast 27 - - - - tilting side-to-side (think "twisting", or "do a barrel roll!") - - - - - cast 28 - - - - for a mouse-like input such as touch or IR camera. Horizontal axis. - - - - - cast 29 - - - - for a mouse-like input such as touch or IR camera. Vertical axis. - - - - - cast 30 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 31 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 32 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 33 - - - - an extra digital button that doesn't fit cleanly into the universal template - - - - - cast 34 - - - - left analog stick as a dpad, pushed up - - - - - cast 35 - - - - left analog stick as a dpad, pushed right - - - - - cast 36 - - - - left analog stick as a dpad, pushed down - - - - - cast 37 - - - - left analog stick as a dpad, pushed left - - - - - cast 38 - - - - left analog stick as a dpad, pushed up - - - - - cast 39 - - - - left analog stick as a dpad, pushed right - - - - - cast 40 - - - - left analog stick as a dpad, pushed down - - - - - cast 41 - - - - left analog stick as a dpad, pushed left - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID") - - - - - - - FlxMacroUtil.buildMap("flixel.input.gamepad.FlxGamepadInputID", true) - - - - cast (-2, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (-1, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (0, flixel.input.gamepad.FlxGamepadInputID) - BOTTOM face button - - - - cast (1, flixel.input.gamepad.FlxGamepadInputID) - RIGHT face button - - - - cast (2, flixel.input.gamepad.FlxGamepadInputID) - LEFT face button - - - - cast (3, flixel.input.gamepad.FlxGamepadInputID) - TOP face button - - - - cast (4, flixel.input.gamepad.FlxGamepadInputID) - left digital "bumper" - - - - cast (5, flixel.input.gamepad.FlxGamepadInputID) - right digital "bumper" - - - - cast (6, flixel.input.gamepad.FlxGamepadInputID) - also known as "select", the leftmost center button - - - - cast (7, flixel.input.gamepad.FlxGamepadInputID) - the rightmost center button - - - - cast (8, flixel.input.gamepad.FlxGamepadInputID) - digital click of the left analog stick - - - - cast (9, flixel.input.gamepad.FlxGamepadInputID) - digital click of the right analog stick - - - - cast (10, flixel.input.gamepad.FlxGamepadInputID) - this is the "XBox" or "PS" or "home" button in the center - - - - cast (11, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (12, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (13, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (14, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (15, flixel.input.gamepad.FlxGamepadInputID) - digital click at end of left analog trigger's squeeze (if available) - - - - cast (16, flixel.input.gamepad.FlxGamepadInputID) - digital click at end of right analog trigger's squeeze (if available) - - - - cast (17, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (18, flixel.input.gamepad.FlxGamepadInputID) - - - - cast (19, flixel.input.gamepad.FlxGamepadInputID) - identifier for the entire LEFT_ANALOG_STICK itself, not just any particular direction - - - - cast (20, flixel.input.gamepad.FlxGamepadInputID) - identifier for the entire RIGHT_ANALOG_STICK itself, not just any particular direction - - - - cast (21, flixel.input.gamepad.FlxGamepadInputID) - identifier for the entire DPAD itself, not just any particular button - - - - cast (26, flixel.input.gamepad.FlxGamepadInputID) - tilting towards or away from the ceiling (think "look up", "look down") - - - - cast (27, flixel.input.gamepad.FlxGamepadInputID) - tilting side-to-side (think "twisting", or "do a barrel roll!") - - - - cast (28, flixel.input.gamepad.FlxGamepadInputID) - for a mouse-like input such as touch or IR camera. Horizontal axis. - - - - cast (29, flixel.input.gamepad.FlxGamepadInputID) - for a mouse-like input such as touch or IR camera. Vertical axis. - - - - cast (30, flixel.input.gamepad.FlxGamepadInputID) - an extra digital button that doesn't fit cleanly into the universal template - - - - cast (31, flixel.input.gamepad.FlxGamepadInputID) - an extra digital button that doesn't fit cleanly into the universal template - - - - cast (32, flixel.input.gamepad.FlxGamepadInputID) - an extra digital button that doesn't fit cleanly into the universal template - - - - cast (33, flixel.input.gamepad.FlxGamepadInputID) - an extra digital button that doesn't fit cleanly into the universal template - - - - cast (34, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed up - - - - cast (35, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed right - - - - cast (36, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed down - - - - cast (37, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed left - - - - cast (38, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed up - - - - cast (39, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed right - - - - cast (40, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed down - - - - cast (41, flixel.input.gamepad.FlxGamepadInputID) - left analog stick as a dpad, pushed left - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - true - Indicates whether the current platform supports the GameInput API. - - - - 0 - Provides the number of connected input devices. When a device is connected, the - `GameInputEvent.DEVICE_ADDED` event is fired. - - <__deviceList expr="new Array()" line="80" static="1"> - - - new Array() - - - - <__instances expr="[]" line="81" static="1"> - - - [] - - - - <__devices expr="new Map()" line="83" static="1"> - - - - - - new Map() - - - - - - - - - Gets the input device at the specified index location in the list of connected - input devices. - - The order of devices in the index may change whenever a device is added or removed. - You can check the name and id properties on a GameInputDevice object to match a - specific input device. - - @param index The index position in the list of input devices. - @returns The specified GameInputDevice. - @throws RangeError When the provided index is less than zero or greater than - (`numDevices` - 1). - - <__getDevice set="method" line="133" static="1"> - - - - - - - <__onGamepadAxisMove set="method" line="150" static="1"> - - - - - - - - - <__onGamepadButtonDown set="method" line="172" static="1"> - - - - - - - - <__onGamepadButtonUp set="method" line="194" static="1"> - - - - - - - - <__onGamepadConnect set="method" line="216" static="1"> - - - - - - - <__onGamepadDisconnect set="method" line="229" static="1"> - - - - - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - "checkstyle:Dynamic" - - - - The GameInput class is the entry point into the GameInput API. You can use this API to - manage the communications between an application and game input devices (for example: - joysticks, gamepads, and wands). - - The main purpose of this class is to provide access to the supported input devices that - are connected to your application platform. This static class enumerates the connected - input devices in a list. You access a device from the list using the - `getDeviceAt(index:Int)` method. - - The `numDevices` property provides the number of input devices currently connected to - your platform. Use this value to determine the upper bound of the list of devices. - - Use an instance of this class to listen for events that notify you about the addition - and removal of input devices. To listen these events, do the following: - - 1. Create an instance of the GameInput class. - 2. Add event listeners for the `GameInputEvent.DEVICE_ADDED` and - `GameInputEvent.DEVICE_REMOVED` events. (Events can only be registered on an instance - of the class.) - - This class also features the `isSupported` flag, which indicates whether the GameInput - API is supported on your platform. - - For more information, see the Adobe Air Developer Center article: Game controllers on - Adobe AIR. - - For Android, this feature supports a minimum Android OS version of 4.1 and requires the - minimum SWF version 20 and namespace 3.7. For iOS, this feature supports a minimum iOS - version of 9.0 and requires the minimum SWF version 34 and namespace 23.0. - - **How to Detect One Game Input Device From Among Identical Devices** - - A common requirement for two-or-more player games is detecting one device from among - identical devices. For example, applications sometimes must determine which device - represents "Player 1", "Player 2", ..., "Player N". - - Solution: - - 1. Add event listeners to every control on all undetected input devices. These event - listeners listen for `Event.CHANGE` events, which are dispatched whenever a control - value changes. - 2. The first time any control is activated (for example a button press or trigger pull) - the application labels that device. - 3. Remove all of the event listeners from the remaining undetected input devices. - 4. Repeat steps 1-3 as required to identify the rest of the undetected input devices. - - - "tags=\"haxe,release\"" - - openfl.ui.GameInputControl - openfl.ui.GameInputDevice - - - - - - <_gameInput expr="new GameInput()" line="68" static="1"> - - new GameInput() - * GameInput needs to be statically created, otherwise GameInput.numDevices will be zero during construction. - - - - * The first accessed gamepad - can be `null`! - - - - * The last accessed gamepad - can be `null`! - - - - * A counter for the number of active gamepads - - - - * Global Gamepad deadzone. The lower, the more sensitive the gamepad. Should be - * between 0.0 and 1.0. Null by default, overrides the deadzone of gamepads if non-null. - - - - - - - * Signal for when a device is connected; returns the connected gamepad object to the attached listener - * @since 4.6.0 - - - - - - - * Signal for when a device is disconnected; returns the id of the disconnected gamepad to the attached listener - * @since 4.6.0 - - <_gamepads expr="[]"> - - [] - * Stores all gamepads - can have null entries, but index matches event.device - - <_activeGamepads expr="[]"> - - [] - * Stores all gamepads - no null entries, but index does *not* match event.device - - - - - - - * Returns a FlxGamepad with the specified ID or null if none was found. - * For example, if there are 4 gamepads connected, they will have the IDs 0-3. - - - - - - - - - - - - - - - - * Get array of ids for gamepads with any pressed buttons or moved Axis, Ball and Hat. - * - * @param IDsArray optional array to fill with ids - * @return array filled with active gamepad ids - - - - - - - * Get array of gamepads with any pressed buttons or moved Axis, Ball and Hat. - * - * @param GamepadArray optional array to fill with active gamepads - * @return array filled with active gamepads - - - - * Get first found active gamepad id (with any pressed buttons or moved Axis, Ball and Hat). - * Returns "-1" if no active gamepad has been found. - - - - * Get first found active gamepad (with any pressed buttons or moved Axis, Ball and Hat). - * Returns null if no active gamepad has been found. - - - - - - - { state : PRESSED } - * Whether any buttons have the specified input state on any gamepad. - - - - * Whether there's any input at all on any gamepad. - - - - - - - * Whether this button is pressed on any gamepad. - - - - - - - * Whether this button was just pressed on any gamepad. - - - - - - - * Whether this button was just released on any gamepad. - - - - - - - - - - - - * Check to see if the X axis is moved on any Gamepad. - * - * @param AxisID The axis id - * @return Float Value from -1 to 1 or 0 if no X axes were moved - - - - - - - * Check to see if the Y axis is moved on any Gamepad. - * - * @param AxisID The axis id - * @return Float Value from -1 to 1 or 0 if no Y axes were moved - - - - - * Clean up memory. Internal use only. - - - - * Resets all the keys on all joys. - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Updates the key states (for tracking just pressed, just released, etc). - - - - - - - flixel.FlxG - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__removeByID set="method" line="31"> - - - - - - - - - <_HX_SUPER__createByID set="method" line="148"> - - - - - - - - - - * Get array of ids for gamepads with any pressed buttons or moved Axis, Ball and Hat. - * - * @param IDsArray optional array to fill with ids - * @return array filled with active gamepad ids - - <_HX_SUPER__getActiveGamepadIDs public="1" set="method" line="148"> - - - - - - - - - * Get array of gamepads with any pressed buttons or moved Axis, Ball and Hat. - * - * @param GamepadArray optional array to fill with active gamepads - * @return array filled with active gamepads - - <_HX_SUPER__getActiveGamepads public="1" set="method" line="148"> - - - - - - * Get first found active gamepad id (with any pressed buttons or moved Axis, Ball and Hat). - * Returns "-1" if no active gamepad has been found. - - <_HX_SUPER__getFirstActiveGamepadID public="1" set="method" line="148"> - - - * Get first found active gamepad (with any pressed buttons or moved Axis, Ball and Hat). - * Returns null if no active gamepad has been found. - - <_HX_SUPER__getFirstActiveGamepad public="1" set="method" line="148"> - - - - - - { state : PRESSED } - * Whether any buttons have the specified input state on any gamepad. - - <_HX_SUPER__anyButton public="1" set="method" line="148"> - - - - - { state : PRESSED } - - - - * Whether there's any input at all on any gamepad. - - <_HX_SUPER__anyInput public="1" set="method" line="148"> - - - - - - <_HX_SUPER__anyHasState set="method" line="148"> - - - - - - - - - - * Check to see if the X axis is moved on any Gamepad. - * - * @param AxisID The axis id - * @return Float Value from -1 to 1 or 0 if no X axes were moved - - <_HX_SUPER__anyMovedXAxis public="1" set="method" line="148"> - - - - - - - - - * Check to see if the Y axis is moved on any Gamepad. - * - * @param AxisID The axis id - * @return Float Value from -1 to 1 or 0 if no Y axes were moved - - <_HX_SUPER__anyMovedYAxis public="1" set="method" line="148"> - - - - - - - * Clean up memory. Internal use only. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Resets all the keys on all joys. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - <_HX_SUPER__onDeviceAdded set="method" line="31"> - - - - - - - - <_HX_SUPER__onDeviceRemoved set="method" line="31"> - - - - - - - - <_HX_SUPER__findGamepadIndex set="method" line="148"> - - - - - - - - <_HX_SUPER__addGamepad set="method" line="31"> - - - - - - - - <_HX_SUPER__getModelFromDeviceName set="method" line="148"> - - - - - - - - <_HX_SUPER__removeGamepad set="method" line="31"> - - - - - - * Updates the key states (for tracking just pressed, just released, etc). - - <_HX_SUPER__update set="method" line="31"> - - <_HX_SUPER__get_numActiveGamepads set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.FlxGamepadManager - - - - - - - - - <_HX_SUPER__getButton set="method" line="148"> - - - - - - * Updates the key states (for tracking just pressed, just released, etc). - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__reset public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Helper function to check the status of an array of buttons - * - * @param IDArray An array of button IDs - * @param State The button state to check for - * @return Whether at least one of the keys has the specified status - - <_HX_SUPER__checkButtonArrayState set="method" line="148"> - - - - - - - - - - - * Helper function to check the status of an array of buttons - * - * @param IDArray An array of keys as Strings - * @param State The key state to check for - * @return Whether at least one of the keys has the specified status - - <_HX_SUPER__checkButtonArrayStateRaw set="method" line="148"> - - - - - - - * Get the first found raw ID of the button which is currently pressed. - * Returns -1 if no button is pressed. - - <_HX_SUPER__firstPressedRawID public="1" set="method" line="148"> - - - * Get the first found raw ID of the button which has been just pressed. - * Returns -1 if no button was just pressed. - - <_HX_SUPER__firstJustPressedRawID public="1" set="method" line="148"> - - - * Get the first found raw ID of the button which has been just released. - * Returns -1 if no button was just released. - - <_HX_SUPER__firstJustReleasedRawID public="1" set="method" line="148"> - - - - - - * Gets the value of the specified axis using the "universal" ButtonID - - * use this only for things like FlxGamepadButtonID.LEFT_TRIGGER, - * use getXAxis() / getYAxis() for analog sticks! - - <_HX_SUPER__getAxis public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__isAxisForAnalogStick set="method" line="148"> - - - - - - - - - * Given both raw ID's for the axes of an analog stick, gets the value of its Y axis - * (should be used in flash to correct the inverted y axis) - - <_HX_SUPER__getYAxisRaw public="1" set="method" line="148"> - - - - - - - - - * Convenience method that wraps `getXAxis()` and `getYAxis()` into a `FlxPoint`. - * - * @param AxesButtonID an analog stick like `FlxGamepadButtonID.LEFT_STICK` - * @since 4.3.0 - - <_HX_SUPER__getAnalogAxes public="1" set="method" line="148"> - - - - - - - - - { state : PRESSED } - * Whether any buttons have the specified input state. - - <_HX_SUPER__anyButton public="1" set="method" line="148"> - - - - - { state : PRESSED } - - - - * Check to see if any buttons are pressed right or Axis, Ball and Hat moved now. - - <_HX_SUPER__anyInput public="1" set="method" line="148"> - - - - - <_HX_SUPER__getAxisValue set="method" line="148"> - - - - - - - - <_HX_SUPER__getAnalogXAxisValue set="method" line="148"> - - - - - - - - <_HX_SUPER__getAnalogYAxisValue set="method" line="148"> - - - - - - - - - <_HX_SUPER__getAnalogAxisValueCircular set="method" line="148"> - - - - - - - - - <_HX_SUPER__getAnalogAxisValueIndependent set="method" line="148"> - - - - - - - - - - <_HX_SUPER__handleAxisMove set="method" line="148"> - - - - - - - - - - - - - - - { sign : 1.0 } - - <_HX_SUPER__handleAxisMoveSub set="method" line="148"> - - - - - - - - - { sign : 1.0 } - - - - - - <_HX_SUPER__createMappingForModel set="method" line="148"> - - - - - <_HX_SUPER__get_name set="method" line="148"> - - - - - <_HX_SUPER__set_model set="method" line="148"> - - - - - - - - <_HX_SUPER__set_attachment set="method" line="148"> - - - - - <_HX_SUPER__get_deadZone set="method" line="148"> - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.FlxGamepad - flixel.input.gamepad.FlxGamepad.FlxGamepadDeadZoneMode - flixel.input.gamepad.FlxGamepad.FlxGamepadModel - flixel.input.gamepad.FlxGamepad.FlxGamepadAttachment - - - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - 11 - - - - 16 - - - - 17 - - - - 18 - - - - 19 - - - - -5 - - - - new FlxGamepadAnalogStick(0, 1, { up : 24, down : 25, left : 26, right : 27 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 28, down : 29, left : 30, right : 31 }) - - * IDs for Logitech controllers (key codes based on Cordless Rumblepad 2) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.LogitechID - - - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 15 - - - - 16 - - - - 10 - - - - 12 - - - - 13 - - - - 14 - - - - 11 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - - - new FlxGamepadAnalogStick(0, 1, { up : 21, down : 22, left : 23, right : 24 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 25, down : 26, left : 27, right : 28 }) - - - - 4 - - - - 5 - - * IDs for MFi controllers - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.MFiID - - - - - - 8 - * Things to add: - * - Accelerometer (in both remote and nunchuk) - * - Gyroscope (in Motion-Plus version only) - * - IR camera (position tracking) - * - Rumble - * - Speaker - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 19 - - - - 14 - - - - 15 - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 12 - - - - 13 - - - - 19 - - - - 10 - - - - 11 - - - - 8 - - - - 9 - - - - 8 - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 17 - - - - 19 - - - - -1 - - - - -1 - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 2 - - - - 3 - - - - new FlxGamepadAnalogStick(0, 1, { up : REMOTE_DPAD_UP, down : REMOTE_DPAD_DOWN, left : REMOTE_DPAD_LEFT, right : REMOTE_DPAD_RIGHT, threshold : 0.5, mode : ONLY_DIGITAL }) - - - - new FlxGamepadAnalogStick(0, 1, { up : 26, down : 27, left : 28, right : 29 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 26, down : 27, left : 28, right : 29 }) - - - - 4 - - - - 5 - - - - 22 - - - - 23 - - - - 24 - - - - 25 - - * WiiRemote hardware input ID's when using "Mode 3" of the MayFlash DolphinBar accessory - * - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.MayflashWiiRemoteID - - - - - - 6 - - - - 8 - - - - 9 - - - - 7 - - - - 15 - - - - 16 - - - - 13 - - - - 14 - - - - 0x01000012 - - - - 4 - - - - 5 - - - - 19 - - - - 20 - - - - 18 - - - - 17 - - - - new FlxGamepadAnalogStick(0, 1, { up : 23, down : 24, left : 25, right : 26 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 27, down : 28, left : 29, right : 30 }) - - * IDs for OUYA controllers - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.OUYAID - - - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 10 - - - - new FlxGamepadAnalogStick(0, 1, { up : 22, down : 23, left : 24, right : 25 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 26, down : 27, left : 28, right : 29 }) - - - - 30 - - - - 4 - - - - 5 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - * IDs for PlayStation 4 controllers - * - *------- - * NOTES - *------- - * - * WINDOWS: seems to work fine without any special drivers on Windows 10 (and I seem to recall the same on Windows 7). - * DS4Windows is the popular 3rd-party utility here, but it will make the PS4 controller look like a 360 controller, which - * means that it will be indistinguishable from an XInput device to flixel (DS4Windows: http://ds4windows.com). - * - * LINUX: the PS4 controller will be detected as an XInput device when using xpad (see notes in XInputID.hx) - * - * MAC: the PS4 controller seemed to work perfectly without anything special installed, and was not detected in the 360Controller - * control panel, so it might just work right out of the box! - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.PS4ID - - - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - - 12 - - - - 15 - - - - 16 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - - - new FlxGamepadAnalogStick(0, 1, { up : 21, down : 22, left : 23, right : 24 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 25, down : 26, left : 27, right : 28 }) - - * Native PSVita input values. - * (The only way to use these is to actually be using a PSVita with the upcoming openfl vita target!) - * - * This will ONLY work with the gamepad API (available only in OpenFL "next", not "legacy") and will NOT work with the joystick API - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.PSVitaID - - - - - - 4 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - 12 - - - - 13 - - - - 15 - - - - 16 - - - - 21 - - - - new FlxGamepadAnalogStick(0, 1, { up : 22, down : 23, left : 24, right : 25 }) - - * IDs for Switch's Left JoyCon controllers - * - *------- - * NOTES - *------- - * - * WINDOWS: untested. - * - * LINUX: untested. - * - * MAC: Worked on html out of box for me when connected via microUSB cable or Bluetooth. - * Flash and neko couldn't detect the controller via bluetooth, - * which is weird because The pro worked wirelessly. - * - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.SwitchJoyconLeftID - - - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 15 - - - - 16 - - - - new FlxGamepadAnalogStick(0, 1, { up : 22, down : 23, left : 24, right : 25 }) - - * IDs for Switch's Right JoyCon controllers - * - *------- - * NOTES - *------- - * - * WINDOWS: untested. - * - * LINUX: untested. - * - * MAC: Worked on html out of box for me when connected via microUSB cable or Bluetooth. - * Flash and neko couldn't detect the controller via bluetooth, - * which is weird because The pro worked wirelessly. - * - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.SwitchJoyconRightID - - - - - - 4 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - - - 21 - - - - new FlxGamepadAnalogStick(0, 1, { up : 22, down : 23, left : 24, right : 25 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 26, down : 27, left : 28, right : 29 }) - - * IDs for Switch Pro controllers - * - *------- - * NOTES - *------- - * - * WINDOWS: untested. - * - * LINUX: untested - * - * MAC: Worked out of box for me when connected via microUSB cable or Bluetooth - * - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.SwitchProID - - - - - - 9 - * Things to add: - * - Accelerometer (in both remote and nunchuk) - * - Gyroscope (in Motion-Plus version only) - * - IR camera (position tracking) - * - Rumble - * - Speaker - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 17 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - 11 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - - - 21 - - - - 5 - - - - 6 - - - - 7 - - - - 8 - - - - 2 - - - - 3 - - - - 3 - - - - 2 - - - - 4 - - - - 4 - - - - new FlxGamepadAnalogStick(0, 1, { up : REMOTE_DPAD_UP, down : REMOTE_DPAD_DOWN, left : REMOTE_DPAD_LEFT, right : REMOTE_DPAD_RIGHT, threshold : 0.5, mode : ONLY_DIGITAL }) - - - - new FlxGamepadAnalogStick(0, 1, { up : 28, down : 29, left : 30, right : 31 }) - * the nunchuk only has the "left" analog stick - - - - new FlxGamepadAnalogStick(2, 3, { up : 32, down : 33, left : 34, right : 35 }) - * the classic controller has both the "left" and "right" analog sticks - - - - 4 - - - - 5 - - - - 22 - - - - 23 - - - - 24 - - - - 25 - - - - 26 - - - - 27 - - * WiiRemote hardware input ID's when using the device directly - * Hardware ID's: "Nintendo RVL-CNT-01-TR" and "Nintendo RVL-CNT-01" -- the latter does not have the Motion-Plus attachment - * - * NOTE: On Windows this requires the HID-Wiimote driver by Julian Löhr, available here: - * https://github.com/jloehr/HID-Wiimote - * - * @author larsiusprime - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.WiiRemoteID - - - - - - 6 - - - - 7 - - - - 8 - - - - 9 - - - - 10 - - - - -1 - - - - 12 - - - - 13 - - - - 14 - - - - 15 - - - - 16 - - - - 17 - - - - 18 - - - - 19 - - - - 20 - - - - new FlxGamepadAnalogStick(0, 1, { up : 21, down : 22, left : 23, right : 24 }) - - - - new FlxGamepadAnalogStick(2, 3, { up : 25, down : 26, left : 27, right : 28 }) - - - - 4 - - - - 5 - - * IDs for generic XInput controllers - * - * Compatible with the Xbox 360 controller, the Xbox One controller, and anything that masquerades as either of those. - * - *------- - * NOTES - *------- - * - * WINDOWS: we assume the user is using the default drivers that ship with windows. - * - * LINUX: we assume the user is using the xpad driver, specifically Valve's version, steamos-xpad-dkms - * (we got weird errors when using xboxdrv). For full instructions on installation, see: - * http://askubuntu.com/questions/165210/how-do-i-get-an-xbox-360-controller-working/441548#441548 - * - * MAC: we assume the user is using the 360 Controller driver, specifically this one: - * https://github.com/360Controller/360Controller/releases - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.id.XInputID - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_ANY set="method" line="148"> - - <_HX_SUPER__get_ALL set="method" line="148"> - - <_HX_SUPER__get_NONE set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxBaseGamepadList - - - - - - - - - - - * A helper class for gamepad input. - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadAnalogList - - - - - - - - - - - - - - - - - - - - - - - * Checks if the entire stick itself is in the given state - - - - - - - - - - - - - - - - - - - - * A helper class for gamepad input. - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - * Checks if the entire stick itself is in the given state - - <_HX_SUPER__checkXY set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadAnalogStateList - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * A helper class for gamepad input. - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadAnalogValueList - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * A helper class for gamepad input. - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadButtonList - - - - - - - flixel.input.gamepad.FlxGamepad - - - - * analog value (-1.0 to +1.0) tilting towards or away from the ceiling (think "look up", "look down") - - - - - * analog value (-1.0 to +1.0) tilting side-to-side (think "twisting", or "do a barrel roll!") - - - - - - - - - - - - * A helper class for gamepad input. - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadMotionValueList - - - - - - - flixel.input.gamepad.FlxGamepad - * whether or not the current gamepad model supports any pointer features (IR Camera, touch surface, etc) - - - - * horizontal position (0.0-1.0) on the touch-surface or pointer-space - - - - - * vertical position (0.0-1.0) on the touch-surface or pointer-space - - - - - - - - - - - - * A helper class for gamepad input -- returns X/Y analog coordinate values between 0.0 and 1.0 - * Provides optimized gamepad button checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.lists.FlxGamepadPointerValueList - - - - - - false - - - - false - - - - - - - NONE - flixel.input.gamepad.FlxGamepad - - - - - - - - - - - - - - * Given a raw hardware code, return the "universal" ID - - - - - - - * Given an ID, return the raw hardware code - - - - - - - * Whether this axis needs to be flipped - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "checkstyle:MemberName" - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getAnalogStick public="1" set="method" line="148"> - - - - - - - - - * Given a raw hardware code, return the "universal" ID - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - - * Given an ID, return the raw hardware code - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - - * Whether this axis needs to be flipped - - <_HX_SUPER__isAxisFlipped public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__isAxisForMotion public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_attachment set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.FlxGamepadMapping - flixel.input.gamepad.mappings.FlxGamepadMapping.Manufacturer - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.LogitechMapping - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.MFiMapping - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDClassicController set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDNunchuk set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDDefault set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawClassicController set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawNunchuk set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawDefault set="method" line="148"> - - - - - - - - <_HX_SUPER__set_attachment set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.MayflashWiiRemoteMapping - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.OUYAMapping - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.PS4Mapping - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - - - - - <_HX_SUPER__isAxisFlipped public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.PSVitaMapping - - - - - - - - - - - - - - - - - - - - - - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.SwitchJoyconLeftMapping - - - - - - - - - - - - - - - - - - - - - - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.SwitchJoyconRightMapping - - - - - - - - - - - - - - - - - - - - - - * @since 4.8.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.SwitchProMapping - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDClassicController set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDNunchuk set="method" line="148"> - - - - - - - - <_HX_SUPER__getIDDefault set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawClassicController set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawNunchuk set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawDefault set="method" line="148"> - - - - - - - - <_HX_SUPER__isAxisForMotion public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__isAxisFlipped public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_attachment set="method" line="148"> - - - - - - - - <_HX_SUPER__getInputLabel set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.WiiRemoteMapping - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initValues set="method" line="31"> - - - - - <_HX_SUPER__getID public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getRawID public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.gamepad.mappings.XInputMapping - - - - - - - - - - - - - * Maps enum values and strings to integer keycodes. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey") - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey", true) - - - - - cast -2 - - - - - - - - cast -1 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 76 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - -

    - - - cast 80 - - - -

    - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 48 - - - - - - - - cast 49 - - - - - - - - cast 50 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 57 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 36 - - - - - - - - cast 35 - - - - - - - - cast 45 - - - - - - - - cast 27 - - - - - - - - cast 189 - - - - - - - - cast 187 - - - - - - - - cast 46 - - - - - - - - cast 8 - - - - - - - - cast 219 - - - - - - - - cast 221 - - - - - - - - cast 220 - - - - - - - - cast 20 - - - - - - - - cast 145 - - - - - - - - cast 144 - - - - - - - - cast 186 - - - - - - - - cast 222 - - - - - - - - cast 13 - - - - - - - - cast 16 - - - - - - - - cast 188 - - - - - - - - cast 190 - - - - - - - - cast 191 - - - - - - - - cast 192 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 32 - - - - - - - - cast 38 - - - - - - - - cast 40 - - - - - - - - cast 37 - - - - - - - - cast 39 - - - - - - - - cast 9 - - - - - - - - cast 15 - - - - - - - - cast 302 - - - - - - - - cast 301 - - - - - - - - cast 19 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 115 - - - - - - - - cast 116 - - - - - - - - cast 117 - - - - - - - - cast 118 - - - - - - - - cast 119 - - - - - - - - cast 120 - - - - - - - - cast 121 - - - - - - - - cast 122 - - - - - - - - cast 123 - - - - - - - - cast 96 - - - - - - - - cast 97 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 100 - - - - - - - - cast 101 - - - - - - - - cast 102 - - - - - - - - cast 103 - - - - - - - - cast 104 - - - - - - - - cast 105 - - - - - - - - cast 109 - - - - - - - - cast 107 - - - - - - - - cast 110 - - - - - - - - cast 106 - - - - - - - - cast 111 - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - -
    -
    - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey") - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey", true) - - - - - cast -2 - - - - - - - - cast -1 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 76 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - -

    - - - cast 80 - - - -

    - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 48 - - - - - - - - cast 49 - - - - - - - - cast 50 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 57 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 36 - - - - - - - - cast 35 - - - - - - - - cast 45 - - - - - - - - cast 27 - - - - - - - - cast 189 - - - - - - - - cast 187 - - - - - - - - cast 46 - - - - - - - - cast 8 - - - - - - - - cast 219 - - - - - - - - cast 221 - - - - - - - - cast 220 - - - - - - - - cast 20 - - - - - - - - cast 145 - - - - - - - - cast 144 - - - - - - - - cast 186 - - - - - - - - cast 222 - - - - - - - - cast 13 - - - - - - - - cast 16 - - - - - - - - cast 188 - - - - - - - - cast 190 - - - - - - - - cast 191 - - - - - - - - cast 192 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 32 - - - - - - - - cast 38 - - - - - - - - cast 40 - - - - - - - - cast 37 - - - - - - - - cast 39 - - - - - - - - cast 9 - - - - - - - - cast 15 - - - - - - - - cast 302 - - - - - - - - cast 301 - - - - - - - - cast 19 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 115 - - - - - - - - cast 116 - - - - - - - - cast 117 - - - - - - - - cast 118 - - - - - - - - cast 119 - - - - - - - - cast 120 - - - - - - - - cast 121 - - - - - - - - cast 122 - - - - - - - - cast 123 - - - - - - - - cast 96 - - - - - - - - cast 97 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 100 - - - - - - - - cast 101 - - - - - - - - cast 102 - - - - - - - - cast 103 - - - - - - - - cast 104 - - - - - - - - cast 105 - - - - - - - - cast 109 - - - - - - - - cast 107 - - - - - - - - cast 110 - - - - - - - - cast 106 - - - - - - - - cast 111 - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - -
    - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey") - - - - - - - FlxMacroUtil.buildMap("flixel.input.keyboard.FlxKey", true) - - - - cast (-2, flixel.input.keyboard.FlxKey) - - - - cast (-1, flixel.input.keyboard.FlxKey) - - - - cast (65, flixel.input.keyboard.FlxKey) - - - - cast (66, flixel.input.keyboard.FlxKey) - - - - cast (67, flixel.input.keyboard.FlxKey) - - - - cast (68, flixel.input.keyboard.FlxKey) - - - - cast (69, flixel.input.keyboard.FlxKey) - - - - cast (70, flixel.input.keyboard.FlxKey) - - - - cast (71, flixel.input.keyboard.FlxKey) - - - - cast (72, flixel.input.keyboard.FlxKey) - - - - cast (73, flixel.input.keyboard.FlxKey) - - - - cast (74, flixel.input.keyboard.FlxKey) - - - - cast (75, flixel.input.keyboard.FlxKey) - - - - cast (76, flixel.input.keyboard.FlxKey) - - - - cast (77, flixel.input.keyboard.FlxKey) - - - - cast (78, flixel.input.keyboard.FlxKey) - - - - cast (79, flixel.input.keyboard.FlxKey) - -

    - - cast (80, flixel.input.keyboard.FlxKey) -

    - - - cast (81, flixel.input.keyboard.FlxKey) - - - - cast (82, flixel.input.keyboard.FlxKey) - - - - cast (83, flixel.input.keyboard.FlxKey) - - - - cast (84, flixel.input.keyboard.FlxKey) - - - - cast (85, flixel.input.keyboard.FlxKey) - - - - cast (86, flixel.input.keyboard.FlxKey) - - - - cast (87, flixel.input.keyboard.FlxKey) - - - - cast (88, flixel.input.keyboard.FlxKey) - - - - cast (89, flixel.input.keyboard.FlxKey) - - - - cast (90, flixel.input.keyboard.FlxKey) - - - - cast (48, flixel.input.keyboard.FlxKey) - - - - cast (49, flixel.input.keyboard.FlxKey) - - - - cast (50, flixel.input.keyboard.FlxKey) - - - - cast (51, flixel.input.keyboard.FlxKey) - - - - cast (52, flixel.input.keyboard.FlxKey) - - - - cast (53, flixel.input.keyboard.FlxKey) - - - - cast (54, flixel.input.keyboard.FlxKey) - - - - cast (55, flixel.input.keyboard.FlxKey) - - - - cast (56, flixel.input.keyboard.FlxKey) - - - - cast (57, flixel.input.keyboard.FlxKey) - - - - cast (33, flixel.input.keyboard.FlxKey) - - - - cast (34, flixel.input.keyboard.FlxKey) - - - - cast (36, flixel.input.keyboard.FlxKey) - - - - cast (35, flixel.input.keyboard.FlxKey) - - - - cast (45, flixel.input.keyboard.FlxKey) - - - - cast (27, flixel.input.keyboard.FlxKey) - - - - cast (189, flixel.input.keyboard.FlxKey) - - - - cast (187, flixel.input.keyboard.FlxKey) - - - - cast (46, flixel.input.keyboard.FlxKey) - - - - cast (8, flixel.input.keyboard.FlxKey) - - - - cast (219, flixel.input.keyboard.FlxKey) - - - - cast (221, flixel.input.keyboard.FlxKey) - - - - cast (220, flixel.input.keyboard.FlxKey) - - - - cast (20, flixel.input.keyboard.FlxKey) - - - - cast (145, flixel.input.keyboard.FlxKey) - - - - cast (144, flixel.input.keyboard.FlxKey) - - - - cast (186, flixel.input.keyboard.FlxKey) - - - - cast (222, flixel.input.keyboard.FlxKey) - - - - cast (13, flixel.input.keyboard.FlxKey) - - - - cast (16, flixel.input.keyboard.FlxKey) - - - - cast (188, flixel.input.keyboard.FlxKey) - - - - cast (190, flixel.input.keyboard.FlxKey) - - - - cast (191, flixel.input.keyboard.FlxKey) - - - - cast (192, flixel.input.keyboard.FlxKey) - - - - cast (17, flixel.input.keyboard.FlxKey) - - - - cast (18, flixel.input.keyboard.FlxKey) - - - - cast (32, flixel.input.keyboard.FlxKey) - - - - cast (38, flixel.input.keyboard.FlxKey) - - - - cast (40, flixel.input.keyboard.FlxKey) - - - - cast (37, flixel.input.keyboard.FlxKey) - - - - cast (39, flixel.input.keyboard.FlxKey) - - - - cast (9, flixel.input.keyboard.FlxKey) - - - - cast (15, flixel.input.keyboard.FlxKey) - - - - cast (302, flixel.input.keyboard.FlxKey) - - - - cast (301, flixel.input.keyboard.FlxKey) - - - - cast (19, flixel.input.keyboard.FlxKey) - - - - cast (112, flixel.input.keyboard.FlxKey) - - - - cast (113, flixel.input.keyboard.FlxKey) - - - - cast (114, flixel.input.keyboard.FlxKey) - - - - cast (115, flixel.input.keyboard.FlxKey) - - - - cast (116, flixel.input.keyboard.FlxKey) - - - - cast (117, flixel.input.keyboard.FlxKey) - - - - cast (118, flixel.input.keyboard.FlxKey) - - - - cast (119, flixel.input.keyboard.FlxKey) - - - - cast (120, flixel.input.keyboard.FlxKey) - - - - cast (121, flixel.input.keyboard.FlxKey) - - - - cast (122, flixel.input.keyboard.FlxKey) - - - - cast (123, flixel.input.keyboard.FlxKey) - - - - cast (96, flixel.input.keyboard.FlxKey) - - - - cast (97, flixel.input.keyboard.FlxKey) - - - - cast (98, flixel.input.keyboard.FlxKey) - - - - cast (99, flixel.input.keyboard.FlxKey) - - - - cast (100, flixel.input.keyboard.FlxKey) - - - - cast (101, flixel.input.keyboard.FlxKey) - - - - cast (102, flixel.input.keyboard.FlxKey) - - - - cast (103, flixel.input.keyboard.FlxKey) - - - - cast (104, flixel.input.keyboard.FlxKey) - - - - cast (105, flixel.input.keyboard.FlxKey) - - - - cast (109, flixel.input.keyboard.FlxKey) - - - - cast (107, flixel.input.keyboard.FlxKey) - - - - cast (110, flixel.input.keyboard.FlxKey) - - - - cast (106, flixel.input.keyboard.FlxKey) - - - - cast (111, flixel.input.keyboard.FlxKey) - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * A helper class for keyboard input. - * Provides optimized key checking using direct array access. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
    - - - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.keyboard.FlxKeyList - - - - - - - - <_nativeCorrection> - - - - - * Function and numpad keycodes on native targets are incorrect, - * this workaround fixes that. Thanks @HaxePunk! - * @see https://github.com/openfl/openfl-native/issues/193 - - - - - - - [] - - - - - - - - - - - - - - - - flixel.system.replay.FlxReplay - * If any keys are not "released", - * this function will return an array indicating - * which keys are pressed and what state they are in. - * - * @return An array of key state data. Null if there is no data. - - - - - - - flixel.system.replay.FlxReplay - * Part of the keystroke recording system. - * Takes data about key presses and sets it into array. - * - * @param Record Array of data about key states. - - - * Keeps track of what keys are pressed and how with handy Bools or strings. - * Normally accessed via `FlxG.keys`. Example: `FlxG.keys.justPressed.A` - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__onKeyUp set="method" line="31"> - - - - - - - - <_HX_SUPER__onKeyDown set="method" line="31"> - - - - - - - - <_HX_SUPER__resolveKeyCode set="method" line="148"> - - - - - - flixel.system.replay.FlxReplay - * If any keys are not "released", - * this function will return an array indicating - * which keys are pressed and what state they are in. - * - * @return An array of key state data. Null if there is no data. - - <_HX_SUPER__record set="method" line="148"> - - - - - - flixel.system.replay.FlxReplay - * Part of the keystroke recording system. - * Takes data about key presses and sets it into array. - * - * @param Record Array of data about key states. - - <_HX_SUPER__playback set="method" line="31"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.keyboard.FlxKeyboard - flixel.input.keyboard.FlxKeyboard.FlxKeyInput - - - - - - - "__ASSET__:bitmap_flixel_input_mouse_GraphicCursor" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/ui/cursor.png" - - - - - - - - - - - - FlxPoint.get() - - - - -1 - - - - * Updates the last and current state of this mouse button. - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - * These IDs are negative to avoid overlaps with possible touch point IDs. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast -1 - - - - - - - - cast -2 - - - - - - - - cast -3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast -1 - - - - - - - - cast -2 - - - - - - - - cast -3 - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (-1, flixel.input.mouse.FlxMouseButtonID) - - - - cast (-2, flixel.input.mouse.FlxMouseButtonID) - - - - cast (-3, flixel.input.mouse.FlxMouseButtonID) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Updates the last and current state of this mouse button. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__onDown public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__onUp public="1" set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.mouse.FlxMouseButton - flixel.input.mouse.FlxMouseButton.FlxMouseButtonID - flixel.input.mouse.FlxMouseButton.FlxMouseButtonID - flixel.input.mouse.FlxMouseButton.FlxMouseButtonID_HSC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { pixelPerfect : true, mouseEnabled : true, mouseChildren : false } - * Adds an object to the FlxMouseEventManager registry. Automatically initializes the plugin. - * - * @param onMouseDown Callback when mouse is pressed down over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseUp Callback when mouse is released over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseOver Callback when mouse is this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseOut Callback when mouse moves out of this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param mouseChildren If true, other objects overlapped by this will still receive mouse events. - * @param mouseEnabled If true, this object will receive mouse events. - * @param pixelPerfect If true, the collision check will be pixel-perfect. Only works for FlxSprites. - * @param mouseButtons The mouse buttons that can trigger callbacks. Left only by default. - - - - - - - * Removes a registered object from the registry. - - - - * Removes all registered objects from the registry. - - - - * Reorders the registered objects, using the current object drawing order. - * This should be called if you alter the draw/update order of a registered object, - * That is, if you alter the position of a registered object inside its `FlxGroup`. - * It may also be called if the objects are not registered by the same order they are - * added to `FlxGroup`. - - - - - - - - - - - * Sets the mouseDown callback associated with an object. - * - * @param onMouseDown Callback when mouse is pressed down over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseUp callback associated with an object. - * - * @param onMouseUp Callback when mouse is released over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseClick callback associated with an object. - * - * @param onMouseClick Callback when mouse is pressed and released over this object. - * Must have Object as argument - e.g. `onMouseClick(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseDoubleClick callback associated with an object. - * - * @param onMouseDoubleClick Callback when mouse is pressed and released over this object twice. - * Must have Object as argument - e.g. `onMouseDoubleClick(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseOver callback associated with an object. - * - * @param onMouseOver Callback when mouse is over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseOut callback associated with an object. - * - * @param OnMouseOver Callback when mouse is moved out of this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseMove callback associated with an object. - * - * @param onMouseMove Callback when the mouse is moved while over this object. - * Must have Object as argument - e.g. `onMouseMove(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseWheel callback associated with an object. - * - * @param onMouseWheel Callback when the mouse wheel is moved while over this object. - * Must have Object as argument - e.g. `onMouseWheel(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - * Enables/disables mouse behavior for an object. - * - * @param mouseEnabled Whether this object will be tested for mouse events. - - - - - - - * Checks if a registered object is mouseEnabled. - - - - - - - - * Enables/disables mouseChildren for an object. - * - * @param mouseChildren Whether this object will allow other overlapping object to receive mouse events. - - - - - - - * Checks if an object allows mouseChildren. - - - - - - - - * @param mouseButtons The mouse buttons that can trigger callbacks. Left only by default. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - flixel.input.mouse.FlxMouseEventManager - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_list expr="[]"> - - [] - - <_overList expr="[]"> - - [] - - <_downList expr="[]"> - - [] - - <_clickList expr="[]"> - - [] - - - - -1 - - <_point expr="FlxPoint.get()"> - - - FlxPoint.get() - - - - - - 500 - * The maximum amount of time between two clicks that is considered a double click, in milliseconds. - * @since 4.4.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { pixelPerfect : true, mouseEnabled : true, mouseChildren : false } - * Adds an object to the FlxMouseEventManager registry. Automatically initializes the plugin. - * - * @param onMouseDown Callback when mouse is pressed down over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseUp Callback when mouse is released over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseOver Callback when mouse is this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param onMouseOut Callback when mouse moves out of this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - * @param mouseChildren If true, other objects overlapped by this will still receive mouse events. - * @param mouseEnabled If true, this object will receive mouse events. - * @param pixelPerfect If true, the collision check will be pixel-perfect. Only works for FlxSprites. - * @param mouseButtons The mouse buttons that can trigger callbacks. Left only by default. - - - - - - - * Removes a registered object from the registry. - - - - * Removes all registered objects from the registry. - - - - * Reorders the registered objects, using the current object drawing order. - * This should be called if you alter the draw/update order of a registered object, - * That is, if you alter the position of a registered object inside its `FlxGroup`. - * It may also be called if the objects are not registered by the same order they are - * added to `FlxGroup`. - - - - - - - - - - - * Sets the mouseDown callback associated with an object. - * - * @param onMouseDown Callback when mouse is pressed down over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseUp callback associated with an object. - * - * @param onMouseUp Callback when mouse is released over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseClick callback associated with an object. - * - * @param onMouseClick Callback when mouse is pressed and released over this object. - * Must have Object as argument - e.g. `onMouseClick(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseDoubleClick callback associated with an object. - * - * @param onMouseDoubleClick Callback when mouse is pressed and released over this object twice. - * Must have Object as argument - e.g. `onMouseDoubleClick(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseOver callback associated with an object. - * - * @param onMouseOver Callback when mouse is over this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseOut callback associated with an object. - * - * @param onMouseOver Callback when mouse is moved out of this object. - * Must have Object as argument - e.g. `onMouseDown(object:FlxObject)`. - - - - - - - - - - - * Sets the mouseMove callback associated with an object. - * - * @param onMouseMove Callback when the mouse is moved while over this object. - * Must have Object as argument - e.g. `onMouseMove(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - - - - * Sets the mouseWheel callback associated with an object. - * - * @param onMouseWheel Callback when the mouse wheel is moved while over this object. - * Must have Object as argument - e.g. `onMouseWheel(object:FlxObject)`. - * @since 4.4.0 - - - - - - - - * Enables/disables mouse behavior for an object. - * - * @param MouseEnabled Whether this object will be tested for mouse events. - - - - - - - * Checks if a registered object is mouseEnabled. - - - - - - - - * Enables/disables mouseChildren for an object. - * - * @param mouseChildren Whether this object will allow other overlapping object to receive mouse events. - - - - - - - * Checks if an object allows mouseChildren. - - - - - - - - * @param MouseButtons The mouse buttons that can trigger callbacks. Left only by default. - - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - - - - - - - - - - - - - - - - - - - - - - - - * Provides mouse event detection for `FlxObject` and `FlxSprite` (pixel-perfect for those). - * To use it, initialize the manager and register objects / sprites. - * - * ```haxe - * FlxG.plugins.add(new FlxMouseEventManager()); - * var object = new FlxObject(); - * FlxMouseEventManager.add( - * object, onMouseDown, onMouseUp, onMouseOver, onMouseOut); - * ``` - * - * Or simply add a new object and this plugin will initialize itself: - * - * ```haxe - * FlxMouseEventManager.add( - * object, onMouseDown, onMouseUp, onMouseOver, onMouseOut); - * ``` - * - * Also implement the callbacks with the object's type as parameters: - * - * ```haxe - * function onMouseDown(object:FlxObject) {} - * function onMouseUp(object:FlxObject) {} - * function onMouseOver(object:FlxObject) {} - * function onMouseOut(object:FlxObject) {} - * ``` - * - * @author TiagoLr (~~~ ProG4mr ~~~) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Removes all registered objects from the registry. - - <_HX_SUPER__removeAll public="1" set="method" line="31"> - - - * Reorders the registered objects, using the current object drawing order. - * This should be called if you alter the draw/update order of a registered object, - * That is, if you alter the position of a registered object inside its `FlxGroup`. - * It may also be called if the objects are not registered by the same order they are - * added to `FlxGroup`. - - <_HX_SUPER__reorder public="1" set="method" line="31"> - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - - <_HX_SUPER__traverseFlxGroup set="method" line="31"> - - - - - - - - - - <_HX_SUPER__sortByMouseChildren set="method" line="148"> - - - - - - <_HX_SUPER__clearRegistry set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.mouse.FlxMouseEventManager - - - - - - - - - - - - - { YOffset : 0, XOffset : 0, Scale : 1 } - * Helper variables for flash native cursors - - <_HX_SUPER__load public="1" set="method" line="31"> - - - - - - - - { YOffset : 0, XOffset : 0, Scale : 1 } - - - - * Unload the current cursor graphic. If the current cursor is visible, - * then the default system cursor is loaded up to replace the old one. - - <_HX_SUPER__unload public="1" set="method" line="31"> - - - - * Clean up memory. Internal use only. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Resets the just pressed/just released flags and sets mouse to not pressed. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - * Called by the internal game loop to update the mouse pointer's position in the game world. - * Also updates the just pressed/just released flags. - - <_HX_SUPER__update set="method" line="31"> - - - * Called from the main Event.ACTIVATE that is dispatched in FlxGame - - <_HX_SUPER__onFocus set="method" line="31"> - - - * Called from the main Event.DEACTIVATE that is dispatched in FlxGame - - <_HX_SUPER__onFocusLost set="method" line="31"> - - <_HX_SUPER__onGameStart set="method" line="31"> - - - - - - * Internal event handler for input and focus. - - <_HX_SUPER__onMouseWheel set="method" line="31"> - - - - - <_HX_SUPER__showSystemCursor set="method" line="31"> - - <_HX_SUPER__hideSystemCursor set="method" line="31"> - - - - - <_HX_SUPER__set_useSystemCursor set="method" line="148"> - - - - - <_HX_SUPER__showCursor set="method" line="31"> - - <_HX_SUPER__hideCursor set="method" line="31"> - - - - - <_HX_SUPER__set_visible set="method" line="148"> - - - - - - flixel.system.replay.FlxReplay - - <_HX_SUPER__record set="method" line="148"> - - - - - - flixel.system.replay.FlxReplay - - <_HX_SUPER__playback set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.mouse.FlxMouse.GraphicCursor - flixel.input.mouse.FlxMouse - - - - - - - - - * The _unique_ ID of this touch. You should not make not any further assumptions - * about this value - IDs are not guaranteed to start from 0 or ascend in order. - * The behavior may vary from device to device. - - - - - - - - - new Point() - - - - FlxPoint.get() - - - - -1 - - - - - - - - - - * Resets the justPressed/justReleased flags and sets touch to not pressed. - - - - * Called by the internal game loop to update the just pressed/just released flags. - - - - - - - - * Function for updating touch coordinates. Called by the TouchManager. - * - * @param X stageX touch coordinate - * @param Y stageY touch coordinate - - - - - - - - - - - - - - { pointID : 0, y : 0, x : 0 } - * @param X stageX touch coordinate - * @param Y stageX touch coordinate - * @param PointID touchPointID of the touch - - * Helper class, contains and tracks touch points in your game. - * Automatically accounts for parallax scrolling, etc. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.input.touch.FlxTouchManager - - - - - - - 0 - * The maximum number of concurrent touch points supported by the current device. - - - - * All active touches including just created, moving and just released. - - <_inactiveTouches> - - * Storage for inactive touches (some sort of cache for them). - - <_touchesCache> - - - - - * Helper storage for active touches (for faster access) - - - - - - - * WARNING: can be null if no active touch with the provided ID could be found - - - - * Return the first touch if there is one, beware of null - - - - - * Clean up memory. Internal use only. - - - - - - - * Gets all touches which were just started - * - * @param TouchArray Optional array to fill with touch objects - * @return Array with touches - - - - - - - * Gets all touches which were just ended - * - * @param TouchArray Optional array to fill with touch objects - * @return Array with touches - - - - * Resets all touches to inactive state. - - - - - - - * Event handler so FlxGame can update touches. - - - - - - - * Event handler so FlxGame can update touches. - - - - - - - * Event handler so FlxGame can update touches. - - - - - - - * Internal function for adding new touches to the manager - * - * @param Touch A new FlxTouch object - * @return The added FlxTouch object - - - - - - - - - * Internal function for touch reuse - * - * @param X stageX touch coordinate - * @param Y stageY touch coordinate - * @param PointID id of the touch - * @return A recycled touch object - - - - * Called by the internal game loop to update the touch position in the game world. - * Also updates the just pressed/just released flags. - - - - - - flixel.FlxG - - * @author Zaphod - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Return the first touch if there is one, beware of null - - <_HX_SUPER__getFirst public="1" set="method" line="148"> - - - - * Clean up memory. Internal use only. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Gets all touches which were just started - * - * @param TouchArray Optional array to fill with touch objects - * @return Array with touches - - <_HX_SUPER__justStarted public="1" set="method" line="148"> - - - - - - - - - * Gets all touches which were just ended - * - * @param TouchArray Optional array to fill with touch objects - * @return Array with touches - - <_HX_SUPER__justReleased public="1" set="method" line="148"> - - - - - - * Resets all touches to inactive state. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - * Event handler so FlxGame can update touches. - - <_HX_SUPER__handleTouchBegin set="method" line="31"> - - - - - - - - - * Event handler so FlxGame can update touches. - - <_HX_SUPER__handleTouchEnd set="method" line="31"> - - - - - - - - - * Event handler so FlxGame can update touches. - - <_HX_SUPER__handleTouchMove set="method" line="31"> - - - - - - - - - * Internal function for adding new touches to the manager - * - * @param Touch A new FlxTouch object - * @return The added FlxTouch object - - <_HX_SUPER__add set="method" line="148"> - - - - - - - - - - - * Internal function for touch reuse - * - * @param X stageX touch coordinate - * @param Y stageY touch coordinate - * @param PointID id of the touch - * @return A recycled touch object - - <_HX_SUPER__recycle set="method" line="148"> - - - - - - - - * Called by the internal game loop to update the touch position in the game world. - * Also updates the just pressed/just released flags. - - <_HX_SUPER__update set="method" line="31"> - - <_HX_SUPER__onFocus set="method" line="31"> - - <_HX_SUPER__onFocusLost set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.touch.FlxTouchManager - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - * Resets the justPressed/justReleased flags and sets touch to not pressed. - - <_HX_SUPER__recycle public="1" set="method" line="31"> - - - - - - - - * Called by the internal game loop to update the just pressed/just released flags. - - <_HX_SUPER__update set="method" line="31"> - - - - - - - * Function for updating touch coordinates. Called by the TouchManager. - * - * @param X stageX touch coordinate - * @param Y stageY touch coordinate - - <_HX_SUPER__setXY set="method" line="31"> - - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.input.touch.FlxTouch - - - - - - * Convert radians to degrees by multiplying it with this value. - - - - * Convert degrees to radians by multiplying it with this value. - - - - - - - - * Calculates the angle from (0, 0) to (x, y), in radians - * @param x The x distance from the origin - * @param y The y distance from the origin - * @return The angle in radians between -PI to PI - - - - - - - - * Calculates the angle from (0, 0) to (x, y), in degrees - * @param x The x distance from the origin - * @param y The y distance from the origin - * @return The angle in degrees between -180 to 180 - - - - - - - - - { asDegrees : false } - * Calculates the angle from (0, 0) to (x, y) - * @param x The x distance from the origin - * @param y The y distance from the origin - * @param asDegrees If true, it gives the value in degrees - * @return The angle, either in degrees, between -180 and 180 or in radians, between -PI and PI - - - - - - - * Keeps an angle value between -180 and +180 by wrapping it - * e.g an angle of +270 will be converted to -90 - * Should be called whenever the angle is updated on a FlxSprite to stop it from going insane. - * - * @param angle The angle value to check - * - * @return The new angle value, returns the same as the input angle if it was within bounds - - - - - - - * Converts a Radian value into a Degree - * Converts the radians value into degrees and returns - * - * @param radians The value in radians - * @return Degrees - - - - - - - * Converts a Degrees value into a Radian - * Converts the degrees value into radians and returns - * - * @param degrees The value in degrees - * @return Radians - - - - - - - - - { AsDegrees : false } - * Find the angle between the two FlxSprite, taking their x/y and origin into account. - * - * @param SpriteA The FlxSprite to test from - * @param SpriteB The FlxSprite to test to - * @param AsDegrees If you need the value in degrees instead of radians, set to true - * @return The angle (in radians unless asDegrees is true) - - - - - - - - * Find the angle (in degrees) between the two FlxSprite, taking their x/y and origin into account. - * @since 5.0.0 - * - * @param SpriteA The FlxSprite to test from - * @param SpriteB The FlxSprite to test to - * @return The angle in degrees - - - - - - - - * Find the angle (in radians) between the two FlxSprite, taking their x/y and origin into account. - * @since 5.0.0 - * - * @param SpriteA The FlxSprite to test from - * @param SpriteB The FlxSprite to test to - * @return The angle in radians - - - - - - - - - { AsDegrees : false } - * Find the angle between an FlxSprite and an FlxPoint. - * The source sprite takes its x/y and origin into account. - * - * @param Sprite The FlxSprite to test from - * @param Target The FlxPoint to angle the FlxSprite towards - * @param AsDegrees If you need the value in degrees instead of radians, set to true - * @return The angle (in radians unless AsDegrees is true) - - - - - - - - * Find the angle (in degrees) between an FlxSprite and an FlxPoint. - * The source sprite takes its x/y and origin into account. - * @since 5.0.0 - * - * @param Sprite The FlxSprite to test from - * @param Target The FlxPoint to angle the FlxSprite towards - * @return The angle in degrees - - - - - - - - * Find the angle (in radians) between an FlxSprite and an FlxPoint. - * The source sprite takes its x/y and origin into account. - * @since 5.0.0 - * - * @param Sprite The FlxSprite to test from - * @param Target The FlxPoint to angle the FlxSprite towards - * @return The angle in radians - - - - - - - - { AsDegrees : false } - * Find the angle between an FlxSprite and the mouse, - * taking their **screen** x/y and origin into account. - * - * @param Object The FlxObject to test from - * @param AsDegrees If you need the value in degrees instead of radians, set to true - * @return The angle (in radians unless AsDegrees is true) - - - - - - - * Find the angle (in degrees) between an FlxSprite and the mouse, - * taking their **screen** x/y and origin into account. - * @since 5.0.0 - * - * @param Object The FlxObject to test from - * @return The angle in degrees - - - - - - - * Find the angle (in radians) between an FlxSprite and the mouse, - * taking their **screen** x/y and origin into account. - * @since 5.0.0 - * - * @param Object The FlxObject to test from - * @return The angle in radians - - - - - - - - - { AsDegrees : false } - * Find the angle between an FlxSprite and a FlxTouch, - * taking their **screen** x/y and origin into account. - * - * @param Object The FlxObject to test from - * @param Touch The FlxTouch to test to - * @param AsDegrees If you need the value in degrees instead of radians, set to true - * @return The angle (in radians unless AsDegrees is true) - - - - - - - - * Find the angle (in degrees) between an FlxSprite and a FlxTouch, - * taking their **screen** x/y and origin into account. - * @since 5.0.0 - * - * @param Object The FlxObject to test from - * @param Touch The FlxTouch to test to - * @return The angle in degrees - - - - - - - - * Find the angle (in radians) between an FlxSprite and a FlxTouch, - * taking their **screen** x/y and origin into account. - * @since 5.0.0 - * - * @param Object The FlxObject to test from - * @param Touch The FlxTouch to test to - * @return The angle in radians - - - - - - - - - { AsDegrees : false } - "FlxAngle.angleFromFacing is deprecated, use flags.degrees." - - * Translate an object's facing to angle. - * - * @param FacingBitmask Bitmask from which to calculate the angle, as in FlxSprite::facing - * @param AsDegrees If you need the value in degrees instead of radians, set to true - * @return The angle (in radians unless AsDegrees is true) - - - - - - - - - "FlxAngle.getCartesianCoords is deprecated, use FlxVector.setPolarDegrees" - * Convert polar coordinates (radius + angle) to cartesian coordinates (x + y) - * - * @param Radius The radius - * @param Angle The angle, in degrees - * @param point Optional FlxPoint if you don't want a new one created - * @return The point in cartesian coords - - - - - - - - - "FlxAngle.getCartesianCoords is deprecated, use FlxPoint" - * Convert cartesian coordinates (x + y) to polar coordinates (radius + angle) - * - * @param X x position - * @param Y y position - * @param point Optional FlxPoint if you don't want a new one created - * @return The point in polar coords (x = Radius, y = Angle (degrees)) - - - - * A set of functions related to angle calculations. - * In degrees: (down = 90, right = 0, up = -90) - * - * Note: in Flixel 5.0.0 all angle-related tools were changed so that 0 degrees points right, instead of up - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxAngle - flixel.math.FlxAngle.FlxSinCos - - - - - - 5e-324 - * Minimum value of a floating point number. - - - - 1.79e+308 - * Maximum value of a floating point number. - - - - -MAX_VALUE_INT - * Minimum value of an integer. - - - - 0x7FFFFFFF - * Maximum value of an integer. - - - - 1.41421356237 - * Approximation of `Math.sqrt(2)`. - - - - 0.0000001 - * Used to account for floating-point inaccuracies. - - - - - - - - * Round a decimal number to have reduced precision (less decimal numbers). - * - * ```haxe - * roundDecimal(1.2485, 2) = 1.25 - * ``` - * - * @param Value Any number. - * @param Precision Number of decimals the result should have. - * @return The rounded value of that number. - - - - - - - - - * Bound a number by a minimum and maximum. Ensures that this number is - * no smaller than the minimum, and no larger than the maximum. - * Leaving a bound `null` means that side is unbounded. - * - * @param Value Any number. - * @param Min Any number. - * @param Max Any number. - * @return The bounded value of the number. - - - - - - - - - * Returns the linear interpolation of two numbers if `ratio` - * is between 0 and 1, and the linear extrapolation otherwise. - * - * Examples: - * - * ```haxe - * lerp(a, b, 0) = a - * lerp(a, b, 1) = b - * lerp(5, 15, 0.5) = 10 - * lerp(5, 15, -1) = -5 - * ``` - - - - - - - - - * Checks if number is in defined range. A null bound means that side is unbounded. - * - * @param Value Number to check. - * @param Min Lower bound of range. - * @param Max Higher bound of range. - * @return Returns true if Value is in range. - - - - - - - * Returns `true` if the given number is odd. - - - - - - - * Returns `true` if the given number is even. - - - - - - - - * Returns `-1` if `a` is smaller, `1` if `b` is bigger and `0` if both numbers are equal. - - - - - - - - - - - - * Returns true if the given x/y coordinate is within the given rectangular block - * - * @param pointX The X value to test - * @param pointY The Y value to test - * @param rectX The X value of the region to test within - * @param rectY The Y value of the region to test within - * @param rectWidth The width of the region to test within - * @param rectHeight The height of the region to test within - * - * @return true if pointX/pointY is within the region, otherwise false - - - - - - - - - * Returns true if the given x/y coordinate is within the given rectangular block - * - * @param pointX The X value to test - * @param pointY The Y value to test - * @param rect The FlxRect to test within - * @return true if pointX/pointY is within the FlxRect, otherwise false - - - - - - - - * Returns true if the mouse world x/y coordinate are within the given rectangular block - * - * @param useWorldCoords If true the world x/y coordinates of the mouse will be used, otherwise screen x/y - * @param rect The FlxRect to test within. If this is null for any reason this function always returns true. - * - * @return true if mouse is within the FlxRect, otherwise false - - - - - - - - - * Returns true if the given x/y coordinate is within the Rectangle - * - * @param pointX The X value to test - * @param pointY The Y value to test - * @param rect The Rectangle to test within - * @return true if pointX/pointY is within the Rectangle, otherwise false - - - - - - - - - - { min : 0 } - * Adds the given amount to the value, but never lets the value - * go over the specified maximum or under the specified minimum. - * - * @param value The value to add the amount to - * @param amount The amount to add to the value - * @param max The maximum the value is allowed to be - * @param min The minimum the value is allowed to be - * @return The new value - - - - - - - - - * Makes sure that value always stays between 0 and max, - * by wrapping the value around. - * - * @param value The value to wrap around - * @param min The minimum the value is allowed to be - * @param max The maximum the value is allowed to be - * @return The wrapped value - - - - - - - - - - - * Remaps a number from one range to another. - * - * @param value The incoming value to be converted - * @param start1 Lower bound of the value's current range - * @param stop1 Upper bound of the value's current range - * @param start2 Lower bound of the value's target range - * @param stop2 Upper bound of the value's target range - * @return The remapped value - - - - - - - - - - * Finds the dot product value of two vectors - * - * @param ax Vector X - * @param ay Vector Y - * @param bx Vector X - * @param by Vector Y - * - * @return Result of the dot product - - - - - - - - * Returns the length of the given vector. - - - - - - - - * Find the distance (in pixels, rounded) between two FlxSprites, taking their origin into account - * - * @param SpriteA The first FlxSprite - * @param SpriteB The second FlxSprite - * @return Distance between the sprites in pixels - - - - - - - - - - { IncludeEqual : false } - * Check if the distance between two FlxSprites is within a specified number. - * A faster algorithm than distanceBetween because the Math.sqrt() is avoided. - * - * @param SpriteA The first FlxSprite - * @param SpriteB The second FlxSprite - * @param Distance The distance to check - * @param IncludeEqual If set to true, the function will return true if the calculated distance is equal to the given Distance - * @return True if the distance between the sprites is less than the given Distance - - - - - - - - * Find the distance (in pixels, rounded) from an FlxSprite - * to the given FlxPoint, taking the source origin into account. - * - * @param Sprite The FlxSprite - * @param Target The FlxPoint - * @return Distance in pixels - - - - - - - - - - { IncludeEqual : false } - * Check if the distance from an FlxSprite to the given - * FlxPoint is within a specified number. - * A faster algorithm than distanceToPoint because the Math.sqrt() is avoided. - * - * @param Sprite The FlxSprite - * @param Target The FlxPoint - * @param Distance The distance to check - * @param IncludeEqual If set to true, the function will return true if the calculated distance is equal to the given Distance - * @return True if the distance between the sprites is less than the given Distance - - - - - - - * Find the distance (in pixels, rounded) from the object x/y and the mouse x/y - * - * @param Sprite The FlxSprite to test against - * @return The distance between the given sprite and the mouse coordinates - - - - - - - - - { IncludeEqual : false } - * Check if the distance from the object x/y and the mouse x/y is within a specified number. - * A faster algorithm than distanceToMouse because the Math.sqrt() is avoided. - * - * @param Sprite The FlxSprite to test against - * @param Distance The distance to check - * @param IncludeEqual If set to true, the function will return true if the calculated distance is equal to the given Distance - * @return True if the distance between the sprites is less than the given Distance - - - - - - - - * Find the distance (in pixels, rounded) from the object x/y and the FlxPoint screen x/y - * - * @param Sprite The FlxSprite to test against - * @param Touch The FlxTouch to test against - * @return The distance between the given sprite and the mouse coordinates - - - - - - - - - - { IncludeEqual : false } - * Check if the distance from the object x/y and the FlxPoint screen x/y is within a specified number. - * A faster algorithm than distanceToTouch because the Math.sqrt() is avoided. - * - * @param Sprite The FlxSprite to test against - * @param Distance The distance to check - * @param IncludeEqual If set to true, the function will return true if the calculated distance is equal to the given Distance - * @return True if the distance between the sprites is less than the given Distance - - - - - - - * Returns the amount of decimals a `Float` has. - - - - - - - - - { aDiff : EPSILON } - - - - - - - * Returns `-1` if the number is smaller than `0` and `1` otherwise - - - - - - - - * Checks if two numbers have the same sign (using `FlxMath.signOf()`). - - - - - - - - - - - - - - - - - - - - - * Hyperbolic sine. - - - - - - - - * Returns the bigger argument. - - - - - - - - * Returns the smaller argument. - - - - - - - * Returns the absolute integer value. - - * A class containing a set of math-related functions. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxMath - - - - - - - - - - - * Rotates this matrix, but takes the values of sine and cosine, - * so it might be useful when you rotate multiple matrices by the same angle - * @param cos The cosine value for rotation angle - * @param sin The sine value for rotation angle - * @return this transformed matrix - - - - * Adds 180 degrees to rotation of this matrix - * @return rotated matrix - - - - * Adds 90 degrees to rotation of this matrix - * @return rotated matrix - - - - * Subtract 90 degrees from rotation of this matrix - * @return rotated matrix - - - - - - - - * Transforms x coordinate of the point. - * Took original code from openfl.geom.Matrix (which isn't available on flash target). - * - * @param px x coordinate of the point - * @param py y coordinate of the point - * @return transformed x coordinate of the point - * - * @since 4.3.0 - - - - - - - - * Transforms y coordinate of the point. - * Took original code from openfl.geom.Matrix (which isn't available on flash target). - * - * @param px x coordinate of the point - * @param py y coordinate of the point - * @return transformed y coordinate of the point - * - * @since 4.3.0 - - - - - - - - - - - * Helper class for making fast matrix calculations for rendering. - * It mostly copies Matrix class, but with some additions for - * faster rotation by 90 degrees. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxMatrix - - - - - - - * 2-dimensional point class - * - * ## Pooling - * To avoid creating new instances, unnecessarily, used points can be - * for later use. Rather than creating a new instance directly, call - * `FlxPoint.get(x, y)` and it will retrieve a point from the pool, if - * one exists, otherwise it will create a new instance. Similarly, when - * you're done using a point, call `myPoint.put()` to place it back. - * - * You can disable point pooling entirely with `FLX_NO_POINT_POOL`. - * - * ## Weak points - * Weak points are points meant for a singular use, rather than calling - * `put` on every point you `get`, you can create a weak point, and have - * it placed back once used. All `FlxPoint` methods and Flixel utilities - * automatically call `putWeak()` on every point passed in. - * - * In the following example, a weak point is created, and passed into - * `p.degreesTo` where `putWeak` is called on it, putting it back in the pool. - * - * ```haxe - * var angle = p.degreesTo(FlxPoint.weak(FlxG.mouse.x, FlxG.mouse.y)); - * ``` - * - * ## Overloaded Operators - * - * - `A += B` adds the value of `B` to `A` - * - `A -= B` subtracts the value of `B` from `A` - * - `A *= k` scales `A` by float `k` in both x and y components - * - `A + B` returns a new point that is sum of `A` and `B` - * - `A - B` returns a new point that is difference of `A` and `B` - * - `A * k` returns a new point that is `A` scaled with coefficient `k` - * - * Note: also accepts `openfl.geom.Point`, but always returns a FlxPoint. - * - * Note: that these operators get points from the pool, but do not put - * points back in the pool, unless they are weak. - * - * Example: 4 total points are created, but only 3 are put into the pool - * ```haxe - * var a = FlxPoint.get(1, 1); - * var b = FlxPoint.get(1, 1); - * var c = (a * 2.0) + b; - * a.put(); - * b.put(); - * c.put(); - * ``` - * - * To put all 4 back, it should look like this: - * ```haxe - * var a = FlxPoint.get(1, 1); - * var b = FlxPoint.get(1, 1); - * var c = a * 2.0; - * var d = c + b; - * a.put(); - * b.put(); - * c.put(); - * d.put(); - * ``` - * - * Otherwise, the remainging points will become garbage, adding to the - * heap, potentially triggering a garbage collection when you don't want. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - 0.0000001 - - - - EPSILON * EPSILON - - <_point1 expr="new FlxPoint()" line="77" static="1"> - - new FlxPoint() - - <_point2 expr="new FlxPoint()" line="78" static="1"> - - new FlxPoint() - - <_point3 expr="new FlxPoint()" line="79" static="1"> - - new FlxPoint() - - - - - - - - { y : 0, x : 0 } - * Recycle or create new FlxPoint. - * Be sure to put() them back into the pool after you're done with them! - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - - - - - - - { y : 0, x : 0 } - * Recycle or create a new FlxPoint which will automatically be released - * to the pool when passed into a flixel function. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - * @since 4.6.0 - - - - - - - - - - A + B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A * B - - - * Operator that scales a point by float, returning a new point. - - - - - - - - - - A / B - - * Operator that divides a point by float, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A *= B - - * Operator that scales a points by float, returning a new point. - - - - - - - - - - A + B - - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - - - - * The horizontal component of the unit point - - - - * The vertical component of the unit point - - - - * Length of the point - - - - * length of the point squared - - - - * The angle formed by the point with the horizontal axis (in degrees) - - - - * The angle formed by the point with the horizontal axis (in radians) - - - - * The horizontal component of the right normal of the point - - - - * The vertical component of the right normal of the point - - - - * The horizontal component of the left normal of the point - - - - * The vertical component of the left normal of the point - - <_new public="1" get="inline" set="null" line="300" static="1"> - - - - - - - { y : 0, x : 0 } - - - - - - - - - - - { y : 0, x : 0 } - * Set the coordinates of this point object. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - - - - - - - - { y : 0, x : 0 } - * Adds to the coordinates of this point. - * - * @param x Amount to add to x - * @param y Amount to add to y - * @return This point. - - - - - - - - * Adds the coordinates of another point to the coordinates of this point. - * - * @param point The point to add to this point - * @return This point. - - - - - - - - - { y : 0, x : 0 } - * Subtracts from the coordinates of this point. - * - * @param x Amount to subtract from x - * @param y Amount to subtract from y - * @return This point. - - - - - - - - * Subtracts the coordinates of another point from the coordinates of this point. - * - * @param point The point to subtract from this point - * @return This point. - - - - - - - - - * Scale this point. - * - * @param x - scale x coefficient - * @param y - scale y coefficient, if omitted, x is used - * @return scaled point - - - - - - - - * Scale this point by another point. - * - * @param point - The x and y scale coefficient - * @return scaled point - - - - - - - - * Returns scaled copy of this point. - * - * @param k - scale coefficient - * @return scaled point - - - - - - - - * Return new point which equals to sum of this point and passed p point. - * - * @param p point to add - * @return addition result - - - - - - - - * Returns new point which is result of subtraction of p point from this point. - * - * @param p point to subtract - * @return subtraction result - - - - - - - - * Helper function, just copies the values from the specified point. - * - * @param p Any FlxPoint. - * @return A reference to itself. - - - - - - - - * Helper function, just copies the values from the specified Flash point. - * - * @param p Any Point. - * @return A reference to itself. - - - - - - - - * Helper function, just copies the values from this point to the specified point. - * - * @param p optional point to copy this point to - * @return copy of this point - - - - - - - - * Helper function, just copies the values from this point to the specified Flash point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - - * Helper function, just increases the values of the specified Flash point by the values of this point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - - * Helper function, just decreases the values of the specified Flash point by the values of this point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - * Rounds x and y using Math.floor() - - - - - - - * Rounds x and y using Math.ceil() - - - - - - - * Rounds x and y using Math.round() - - - - - - - - - - - * Returns true if this point is within the given rectangular bounds - * - * @param x The X value of the region to test within - * @param y The Y value of the region to test within - * @param width The width of the region to test within - * @param height The height of the region to test within - * @return True if the point is within the region, otherwise false - - - - - - - - * Returns true if this point is within the given rectangular block - * - * @param rect The FlxRect to test within - * @return True if pointX/pointY is within the FlxRect, otherwise false - - - - - - - - - "rotate is deprecated, use pivotDegrees" - * Rotates this point clockwise in 2D space around another point by the given degrees. - * - * @param pivot The pivot you want to rotate this point around - * @param degrees Rotate the point by this many degrees clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - - * Rotates this point clockwise in 2D space around another point by the given radians. - * Note: To rotate a point around 0,0 you can use `p.radians += angle` - * @since 5.0.0 - * - * @param pivot The pivot you want to rotate this point around - * @param radians Rotate the point by this many radians clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - - * Rotates this point clockwise in 2D space around another point by the given degrees. - * Note: To rotate a point around 0,0 you can use `p.degrees += angle` - * @since 5.0.0 - * - * @param pivot The pivot you want to rotate this point around - * @param degrees Rotate the point by this many degrees clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - * Calculate the distance to another point. - * - * @param point A FlxPoint object to calculate the distance to. - * @return The distance between the two points as a Float. - - - - - - - - * Calculates the angle from this to another point. - * If the point is straight right of this, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in radians, between -PI and PI - - - - - - - - * Calculates the angle from another point to this. - * If this is straight right of the point, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in radians, between -PI and PI - - - - - - - - * Calculates the angle from this to another point. - * If the point is straight right of this, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in degrees, between -180 and 180 - - - - - - - - * Calculates the angle from another point to this. - * If this is straight right of the point, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in degrees, between -180 and 180 - - - - - - - - "angleBetween is deprecated, use degreesTo instead" - DEPRECATED - * - * Calculates the angle between this and another point. 0 degrees points straight up. - * - * Note: Every other flixel function treats straight right as 0 degrees. - * - * Also Note: The result is very innacurate. - * - * @param point The other point. - * @return The angle in degrees, between -180 and 180. - * - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - - - - - - - - * Applies transformation matrix to this point - * @param matrix transformation matrix - * @return transformed point - - - - - - - - * Short for dot product. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product between two points. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product between two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product of points with normalization of the second point. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Check the perpendicularity of two points. - * - * @param p point to check - * @return true - if they are perpendicular - - - - - - - - * Find the length of cross product between two points. - * - * @param p point to multiply - * @return the length of cross product of two points - - - - - - - - * Find the length of cross product between two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to multiply - * @return the length of cross product of two points - - - - - - - - * Check for parallelism of two points. - * - * @param p point to check - * @return true - if they are parallel - - - - - - - - * Check for parallelism of two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to check - * @return true - if they are parallel - - - - - - - * Check if this point has zero length. - * - * @return true - if the point is zero - - - - - - - * point reset - - - - - - - * Normalization of the point (reduction to unit length) - - - - - - - * Check the point for unit length - - - - - - - - * Rotate the point for a given angle. - * - * @param rads angle to rotate - * @return rotated point - - - - - - - - * Rotate the point for a given angle. - * - * @param degs angle to rotate - * @return rotated point - - - - - - - - - * Rotate the point with the values of sine and cosine of the angle of rotation. - * - * @param sin the value of sine of the angle of rotation - * @param cos the value of cosine of the angle of rotation - * @return rotated point - - - - - - - - - * Sets the polar coordinates of the point - * - * @param length The length to set the point - * @param radians The angle to set the point, in radians - * @return The rotated point - * - * @since 4.10.0 - - - - - - - - - * Sets the polar coordinates of the point - * - * @param length The length to set the point - * @param degrees The angle to set the point, in degrees - * @return The rotated point - * - * @since 4.10.0 - - - - - - - - * Right normal of the point - - - - - - - - * Left normal of the point - - - - - - - * Change direction of the point to opposite - - - - - - - - - - - - - * The projection of this point to point that is passed as an argument - * (without modifying the original point!). - * - * @param p point to project - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - - * Projecting this point on the normalized point p. - * - * @param p this point has to be normalized, ie have unit length - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - - * Projecting this point on the normalized point p. - * Meant for internal use, does not call putWeak. - * - * @param p this point has to be normalized, ie have unit length - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - * Dot product of left the normal point and point p. - - - - - - - - * Dot product of left the normal point and point p. - * Meant for internal use, does not call putWeak. - - - - - - - - - - * Find the ratio between the perpProducts of this point and p point. This helps to find the intersection point. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the ratio between the perpProducts of this point and p point - - - - - - - - - - * Find the ratio between the perpProducts of this point and p point. This helps to find the intersection point. - * Meant for internal use, does not call putWeak. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the ratio between the perpProducts of this point and p point - - - - - - - - - - - * Finding the point of intersection of points. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the point of intersection of points - - - - - - - - - - - * Finding the point of intersection of points if it is in the "bounds" of the points. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the point of intersection of points if it is in the "bounds" of the points - - - - - - - - * Limit the length of this point. - * - * @param max maximum length of this point - - - - - - - - * Get the angle between points (in radians). - * - * @param p second point, which we find the angle - * @return the angle in radians - - - - - - - - * The angle between points (in degrees). - * - * @param p second point, which we find the angle - * @return the angle in radians - - - - - - - - - * The sign of half-plane of point with respect to the point through the a and b points. - * - * @param a start point of the wall-point - * @param b end point of the wall-point - - - - - - - - * The distance between points - - - - - - - - * The squared distance between points - - - - - - - - - { bounceCoeff : 1 } - - - - - - - - - - - { friction : 0, bounceCoeff : 1 } - - - - - - - - * Checking if this is a valid point. - * - * @return true - if the point is valid - - - - - - - - * Copies this point. - * - * @param p optional point to copy this point to - * @return copy of this point - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 0.0000001 - - - - EPSILON * EPSILON - - <_point1 expr="new FlxPoint()" line="77" static="1"> - - new FlxPoint() - - <_point2 expr="new FlxPoint()" line="78" static="1"> - - new FlxPoint() - - <_point3 expr="new FlxPoint()" line="79" static="1"> - - new FlxPoint() - - - - - - - - { y : 0, x : 0 } - * Recycle or create new FlxPoint. - * Be sure to put() them back into the pool after you're done with them! - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - - - - - - - { y : 0, x : 0 } - * Recycle or create a new FlxPoint which will automatically be released - * to the pool when passed into a flixel function. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - * @since 4.6.0 - - - - - - - - - - A + B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A * B - - - * Operator that scales a point by float, returning a new point. - - - - - - - - - - A / B - - * Operator that divides a point by float, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A *= B - - * Operator that scales a points by float, returning a new point. - - - - - - - - - - A + B - - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - - - - * The horizontal component of the unit point - - - - * The vertical component of the unit point - - - - * Length of the point - - - - * length of the point squared - - - - * The angle formed by the point with the horizontal axis (in degrees) - - - - * The angle formed by the point with the horizontal axis (in radians) - - - - * The horizontal component of the right normal of the point - - - - * The vertical component of the right normal of the point - - - - * The horizontal component of the left normal of the point - - - - * The vertical component of the left normal of the point - - <_new public="1" get="inline" set="null" line="300" static="1"> - - - - - - - { y : 0, x : 0 } - - - - - - - - - - - { y : 0, x : 0 } - * Set the coordinates of this point object. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - - - - - - - - { y : 0, x : 0 } - * Adds to the coordinates of this point. - * - * @param x Amount to add to x - * @param y Amount to add to y - * @return This point. - - - - - - - - * Adds the coordinates of another point to the coordinates of this point. - * - * @param point The point to add to this point - * @return This point. - - - - - - - - - { y : 0, x : 0 } - * Subtracts from the coordinates of this point. - * - * @param x Amount to subtract from x - * @param y Amount to subtract from y - * @return This point. - - - - - - - - * Subtracts the coordinates of another point from the coordinates of this point. - * - * @param point The point to subtract from this point - * @return This point. - - - - - - - - - * Scale this point. - * - * @param x - scale x coefficient - * @param y - scale y coefficient, if omitted, x is used - * @return scaled point - - - - - - - - * Scale this point by another point. - * - * @param point - The x and y scale coefficient - * @return scaled point - - - - - - - - * Returns scaled copy of this point. - * - * @param k - scale coefficient - * @return scaled point - - - - - - - - * Return new point which equals to sum of this point and passed p point. - * - * @param p point to add - * @return addition result - - - - - - - - * Returns new point which is result of subtraction of p point from this point. - * - * @param p point to subtract - * @return subtraction result - - - - - - - - * Helper function, just copies the values from the specified point. - * - * @param p Any FlxPoint. - * @return A reference to itself. - - - - - - - - * Helper function, just copies the values from the specified Flash point. - * - * @param p Any Point. - * @return A reference to itself. - - - - - - - - * Helper function, just copies the values from this point to the specified point. - * - * @param p optional point to copy this point to - * @return copy of this point - - - - - - - - * Helper function, just copies the values from this point to the specified Flash point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - - * Helper function, just increases the values of the specified Flash point by the values of this point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - - * Helper function, just decreases the values of the specified Flash point by the values of this point. - * - * @param p Any Point. - * @return A reference to the altered point parameter. - - - - - - - * Rounds x and y using Math.floor() - - - - - - - * Rounds x and y using Math.ceil() - - - - - - - * Rounds x and y using Math.round() - - - - - - - - - - - * Returns true if this point is within the given rectangular bounds - * - * @param x The X value of the region to test within - * @param y The Y value of the region to test within - * @param width The width of the region to test within - * @param height The height of the region to test within - * @return True if the point is within the region, otherwise false - - - - - - - - * Returns true if this point is within the given rectangular block - * - * @param rect The FlxRect to test within - * @return True if pointX/pointY is within the FlxRect, otherwise false - - - - - - - - - "rotate is deprecated, use pivotDegrees" - * Rotates this point clockwise in 2D space around another point by the given degrees. - * - * @param pivot The pivot you want to rotate this point around - * @param degrees Rotate the point by this many degrees clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - - * Rotates this point clockwise in 2D space around another point by the given radians. - * Note: To rotate a point around 0,0 you can use `p.radians += angle` - * @since 5.0.0 - * - * @param pivot The pivot you want to rotate this point around - * @param radians Rotate the point by this many radians clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - - * Rotates this point clockwise in 2D space around another point by the given degrees. - * Note: To rotate a point around 0,0 you can use `p.degrees += angle` - * @since 5.0.0 - * - * @param pivot The pivot you want to rotate this point around - * @param degrees Rotate the point by this many degrees clockwise. - * @return A FlxPoint containing the coordinates of the rotated point. - - - - - - - - * Calculate the distance to another point. - * - * @param point A FlxPoint object to calculate the distance to. - * @return The distance between the two points as a Float. - - - - - - - - * Calculates the angle from this to another point. - * If the point is straight right of this, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in radians, between -PI and PI - - - - - - - - * Calculates the angle from another point to this. - * If this is straight right of the point, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in radians, between -PI and PI - - - - - - - - * Calculates the angle from this to another point. - * If the point is straight right of this, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in degrees, between -180 and 180 - - - - - - - - * Calculates the angle from another point to this. - * If this is straight right of the point, 0 is returned. - * @since 5.0.0 - * - * @param point The other point. - * @return The angle, in degrees, between -180 and 180 - - - - - - - - "angleBetween is deprecated, use degreesTo instead" - DEPRECATED - * - * Calculates the angle between this and another point. 0 degrees points straight up. - * - * Note: Every other flixel function treats straight right as 0 degrees. - * - * Also Note: The result is very innacurate. - * - * @param point The other point. - * @return The angle in degrees, between -180 and 180. - * - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - - - - - - - - * Applies transformation matrix to this point - * @param matrix transformation matrix - * @return transformed point - - - - - - - - * Short for dot product. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product between two points. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product between two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Dot product of points with normalization of the second point. - * - * @param p point to multiply - * @return dot product of two points - - - - - - - - * Check the perpendicularity of two points. - * - * @param p point to check - * @return true - if they are perpendicular - - - - - - - - * Find the length of cross product between two points. - * - * @param p point to multiply - * @return the length of cross product of two points - - - - - - - - * Find the length of cross product between two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to multiply - * @return the length of cross product of two points - - - - - - - - * Check for parallelism of two points. - * - * @param p point to check - * @return true - if they are parallel - - - - - - - - * Check for parallelism of two points. - * Meant for internal use, does not call putWeak. - * - * @param p point to check - * @return true - if they are parallel - - - - - - - * Check if this point has zero length. - * - * @return true - if the point is zero - - - - - - - * point reset - - - - - - - * Normalization of the point (reduction to unit length) - - - - - - - * Check the point for unit length - - - - - - - - * Rotate the point for a given angle. - * - * @param rads angle to rotate - * @return rotated point - - - - - - - - * Rotate the point for a given angle. - * - * @param degs angle to rotate - * @return rotated point - - - - - - - - - * Rotate the point with the values of sine and cosine of the angle of rotation. - * - * @param sin the value of sine of the angle of rotation - * @param cos the value of cosine of the angle of rotation - * @return rotated point - - - - - - - - - * Sets the polar coordinates of the point - * - * @param length The length to set the point - * @param radians The angle to set the point, in radians - * @return The rotated point - * - * @since 4.10.0 - - - - - - - - - * Sets the polar coordinates of the point - * - * @param length The length to set the point - * @param degrees The angle to set the point, in degrees - * @return The rotated point - * - * @since 4.10.0 - - - - - - - - * Right normal of the point - - - - - - - - * Left normal of the point - - - - - - - * Change direction of the point to opposite - - - - - - - - - - - - - * The projection of this point to point that is passed as an argument - * (without modifying the original point!). - * - * @param p point to project - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - - * Projecting this point on the normalized point p. - * - * @param p this point has to be normalized, ie have unit length - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - - * Projecting this point on the normalized point p. - * Meant for internal use, does not call putWeak. - * - * @param p this point has to be normalized, ie have unit length - * @param proj optional argument - result point - * @return projection of the point - - - - - - - - * Dot product of left the normal point and point p. - - - - - - - - * Dot product of left the normal point and point p. - * Meant for internal use, does not call putWeak. - - - - - - - - - - * Find the ratio between the perpProducts of this point and p point. This helps to find the intersection point. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the ratio between the perpProducts of this point and p point - - - - - - - - - - * Find the ratio between the perpProducts of this point and p point. This helps to find the intersection point. - * Meant for internal use, does not call putWeak. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the ratio between the perpProducts of this point and p point - - - - - - - - - - - * Finding the point of intersection of points. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the point of intersection of points - - - - - - - - - - - * Finding the point of intersection of points if it is in the "bounds" of the points. - * - * @param a start point of the point - * @param b start point of the p point - * @param p the second point - * @return the point of intersection of points if it is in the "bounds" of the points - - - - - - - - * Limit the length of this point. - * - * @param max maximum length of this point - - - - - - - - * Get the angle between points (in radians). - * - * @param p second point, which we find the angle - * @return the angle in radians - - - - - - - - * The angle between points (in degrees). - * - * @param p second point, which we find the angle - * @return the angle in radians - - - - - - - - - * The sign of half-plane of point with respect to the point through the a and b points. - * - * @param a start point of the wall-point - * @param b end point of the wall-point - - - - - - - - * The distance between points - - - - - - - - * The squared distance between points - - - - - - - - - { bounceCoeff : 1 } - - - - - - - - - - - { friction : 0, bounceCoeff : 1 } - - - - - - - - * Checking if this is a valid point. - * - * @return true - if the point is valid - - - - - - - - * Copies this point. - * - * @param p optional point to copy this point to - * @return copy of this point - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_setXCallback> - - - - <_setYCallback> - - - - <_setXYCallback> - - - - - - - - - - { y : 0, x : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - * If you only specify one callback function, then the remaining two will use the same. - * - * @param setXCallback Callback for set_x() - * @param setYCallback Callback for set_y() - * @param setXYCallback Callback for set() - - * A FlxPoint that calls a function when set_x(), set_y() or set() is called. Used in FlxSpriteGroup. - * IMPORTANT: Calling set(x, y); is MUCH FASTER than setting x and y separately. Needs to be destroyed unlike simple FlxPoints! - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (0.0000001, Float) - - - - cast (EPSILON * EPSILON, Float) - - <_point1 public="1" expr="cast (new FlxPoint(), flixel.math.FlxPoint)" line="23" static="1"> - - cast (new FlxPoint(), flixel.math.FlxPoint) - - <_point2 public="1" expr="cast (new FlxPoint(), flixel.math.FlxPoint)" line="23" static="1"> - - cast (new FlxPoint(), flixel.math.FlxPoint) - - <_point3 public="1" expr="cast (new FlxPoint(), flixel.math.FlxPoint)" line="23" static="1"> - - cast (new FlxPoint(), flixel.math.FlxPoint) - - - - - - - - { y : 0, x : 0 } - * Recycle or create new FlxPoint. - * Be sure to put() them back into the pool after you're done with them! - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - - - - - - - { y : 0, x : 0 } - * Recycle or create a new FlxPoint which will automatically be released - * to the pool when passed into a flixel function. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - * @since 4.6.0 - - - - - - - - - - A + B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A * B - - - * Operator that scales a point by float, returning a new point. - - - - - - - - - - A / B - - * Operator that divides a point by float, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A *= B - - * Operator that scales a points by float, returning a new point. - - - - - - - - - - A + B - - - * Operator that adds two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A - B - - * Operator that subtracts two points, returning a new point. - - - - - - - - - - A += B - - * Operator that adds two points, returning a new point. - - - - - - - - - - A -= B - - * Operator that subtracts two points, returning a new point. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - { y : 0, x : 0 } - * Set the coordinates of this point object. - * - * @param x The X-coordinate of the point in space. - * @param y The Y-coordinate of the point in space. - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - { y : 0, x : 0 } - - - - * Add this FlxBasePoint to the recycling pool. - - <_HX_SUPER__put public="1" set="method" line="31"> - - - * Necessary for IFlxDestroyable. - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - * Necessary for FlxCallbackPoint. - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - - * Necessary for FlxCallbackPoint. - - <_HX_SUPER__set_y set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxPoint - flixel.math.FlxPoint - flixel.math.FlxPoint.FlxBasePoint - flixel.math.FlxPoint.FlxCallbackPoint - - - - - - - - - - - { y : 0, x : 0 } - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - { y : 0, x : 0 } - - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__put public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxPoint - flixel.math.FlxPoint - flixel.math.FlxPoint.FlxBasePoint - flixel.math.FlxPoint.FlxCallbackPoint - flixel.math.FlxPoint.FlxPoint_HSC - - - - - - - - - - - - { Max : FlxMath.MAX_VALUE_INT, Min : 0 } - * Returns a pseudorandom integer between Min and Max, inclusive. - * Will not return a number in the Excludes array, if provided. - * Please note that large Excludes arrays can slow calculations. - * - * @param Min The minimum value that should be returned. 0 by default. - * @param Max The maximum value that should be returned. 2,147,483,647 by default. - * @param Excludes Optional array of values that should not be returned. - - <_HX_SUPER__int public="1" set="method" line="148"> - - - - - - - { Max : FlxMath.MAX_VALUE_INT, Min : 0 } - - - - - - - - - { Max : 1, Min : 0 } - * Returns a pseudorandom float value between Min (inclusive) and Max (exclusive). - * Will not return a number in the Excludes array, if provided. - * Please note that large Excludes arrays can slow calculations. - * - * @param Min The minimum value that should be returned. 0 by default. - * @param Max The maximum value that should be returned. 1 by default. - * @param Excludes Optional array of values that should not be returned. - - <_HX_SUPER__float public="1" set="method" line="148"> - - - - - - - { Max : 1, Min : 0 } - - - - - - - - { StdDev : 1, Mean : 0 } - * Returns a pseudorandom float value in a statistical normal distribution centered on Mean with a standard deviation size of StdDev. - * (This uses the Box-Muller transform algorithm for gaussian pseudorandom numbers) - * - * Normal distribution: 68% values are within 1 standard deviation, 95% are in 2 StdDevs, 99% in 3 StdDevs. - * See this image: https://github.com/HaxeFlixel/flixel-demos/blob/dev/Performance/FlxRandom/normaldistribution.png - * - * @param Mean The Mean around which the normal distribution is centered - * @param StdDev Size of the standard deviation - - <_HX_SUPER__floatNormal public="1" set="method" line="148"> - - - - - - { StdDev : 1, Mean : 0 } - - - - - - - * Pseudorandomly select from an array of weighted options. For example, if you passed in an array of [50, 30, 20] - * there would be a 50% chance of returning a 0, a 30% chance of returning a 1, and a 20% chance of returning a 2. - * Note that the values in the array do not have to add to 100 or any other number. - * The percent chance will be equal to a given value in the array divided by the total of all values in the array. - * - * @param WeightsArray An array of weights. - * @return A value between 0 and (SelectionArray.length - 1), with a probability equivalent to the values in SelectionArray. - - <_HX_SUPER__weightedPick public="1" set="method" line="148"> - - - - - - - - - - - - { GreyScale : false } - * Returns a random color. - * - * @param Min An optional FlxColor representing the lower bounds for the generated color. - * @param Max An optional FlxColor representing the upper bounds for the generated color. - * @param Alpha An optional value for the alpha channel of the generated color. - * @param GreyScale Whether or not to create a color that is strictly a shade of grey. False by default. - * @return A color value as a FlxColor. - - <_HX_SUPER__color public="1" set="method" line="148"> - - - - - - - - { GreyScale : false } - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxRandom - - - - - - - - - - - - - * Calculates the globally aligned bounding box of a `FlxRect` with the given angle and origin. - * @param degrees The rotation, in degrees of the rect. - * @param origin The relative pivot point, or the point that the rectangle rotates around. - * if `null` , the top-left (or 0,0) is used. - * @param newRect Optional output `FlxRect`, if `null`, a new one is created. Note: If you like, you can - * pass in the input rect to manipulate it. ex: `rect.calcRotatedBounds(angle, null, rect)` - * @return A globally aligned `FlxRect` that fully contains the input rectangle. - * @since 4.11.0 - - <_HX_SUPER__getRotatedBounds public="1" set="method" line="148"> - - - - - - - - - * Necessary for IFlxDestroyable. - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - - * Returns the area of intersection with specified rectangle. - * If the rectangles do not intersect, this method returns an empty rectangle. - * - * @param rect Rectangle to check intersection against. - * @return The area of intersection of two rectangles. - - <_HX_SUPER__intersection public="1" set="method" line="148"> - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxRect - - - - - * DEPRECATED - Use `FlxPoint` - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "FlxVector utils have been moved to FlxPoint" - - - - - - - - - - - - { MaxTime : 0, Speed : 60 } - * Sets the source FlxSprite x/y velocity so it will move directly towards the destination FlxSprite at the speed given (in pixels per second) - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way Flash timers work, and irrespective of SWF frame rate. Allow for a variance of +- 50ms. - * The source object doesn't stop moving automatically should it ever reach the destination coordinates. - * If you need the object to accelerate, see accelerateTowardsObject() instead - * Note: Doesn't take into account acceleration, maxVelocity or drag (if you set drag or acceleration too high this object may not move at all) - * - * @param Source The FlxSprite on which the velocity will be set - * @param Dest The FlxSprite where the source object will move to - * @param Speed The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param MaxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the source will arrive at destination in the given number of ms - - - - - - - - - - * Sets the x/y acceleration on the source FlxSprite so it will move towards the destination FlxSprite at the speed given (in pixels per second) - * You must give a maximum speed value, beyond which the FlxSprite won't go any faster. - * If you don't need acceleration look at moveTowardsObject() instead. - * - * @param Source The FlxSprite on which the acceleration will be set - * @param Dest The FlxSprite where the source object will move towards - * @param Acceleration The speed it will accelerate in pixels per second - * @param MaxSpeed The maximum speed in pixels per second in which the sprite can move - - - - - - - - - { MaxTime : 0, Speed : 60 } - * Move the given FlxSprite towards the mouse pointer coordinates at a steady velocity - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way Flash timers work, and irrespective of SWF frame rate. Allow for a variance of +- 50ms. - * The source object doesn't stop moving automatically should it ever reach the destination coordinates. - * - * @param Source The FlxSprite to move - * @param Speed The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param MaxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the source will arrive at destination in the given number of ms - - - - - - - - - - { MaxTime : 0, Speed : 60 } - * Move the given FlxSprite towards a FlxTouch point at a steady velocity - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way Flash timers work, and irrespective of SWF frame rate. Allow for a variance of +- 50ms. - * The source object doesn't stop moving automatically should it ever reach the destination coordinates. - * - * @param source The FlxSprite to move - * @param speed The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param maxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the source will arrive at destination in the given number of ms - - - - - - - - - * Sets the x/y acceleration on the source FlxSprite so it will move towards the mouse coordinates at the speed given (in pixels per second) - * You must give a maximum speed value, beyond which the FlxSprite won't go any faster. - * If you don't need acceleration look at moveTowardsMouse() instead. - * - * @param Source The FlxSprite on which the acceleration will be set - * @param Acceleration The speed it will accelerate in pixels per second - * @param MaxSpeed The maximum speed in pixels per second in which the sprite can move - - - - - - - - - - * Sets the x/y acceleration on the source FlxSprite so it will move towards a FlxTouch at the speed given (in pixels per second) - * You must give a maximum speed value, beyond which the FlxSprite won't go any faster. - * If you don't need acceleration look at moveTowardsMouse() instead. - * - * @param Source The FlxSprite on which the acceleration will be set - * @param Touch The FlxTouch on which to accelerate towards - * @param Acceleration The speed it will accelerate in pixels per second - * @param MaxSpeed The maximum speed in pixels per second in which the sprite can move - - - - - - - - - - { MaxTime : 0, Speed : 60 } - * Sets the x/y velocity on the source FlxSprite so it will move towards the target coordinates at the speed given (in pixels per second) - * If you specify a maxTime then it will adjust the speed (over-writing what you set) so it arrives at the destination in that number of seconds. - * Timings are approximate due to the way Flash timers work, and irrespective of SWF frame rate. Allow for a variance of +- 50ms. - * The source object doesn't stop moving automatically should it ever reach the destination coordinates. - * - * @param Source The FlxSprite to move - * @param Target The FlxPoint coordinates to move the source FlxSprite towards - * @param Speed The speed it will move, in pixels per second (default is 60 pixels/sec) - * @param MaxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the source will arrive at destination in the given number of ms - - - - - - - - - - * Sets the x/y acceleration on the source FlxSprite so it will move towards the target coordinates at the speed given (in pixels per second) - * You must give a maximum speed value, beyond which the FlxSprite won't go any faster. - * If you don't need acceleration look at moveTowardsPoint() instead. - * - * @param Source The FlxSprite on which the acceleration will be set - * @param Target The FlxPoint coordinates to move the source FlxSprite towards - * @param Acceleration The speed it will accelerate in pixels per second - * @param MaxSpeed The maximum speed in pixels per second in which the sprite can move - - - - - - - - * Given the angle and speed calculate the velocity and return it as an FlxPoint - * - * @param Angle The angle (in degrees) calculated in clockwise positive direction (down = 90 degrees positive, right = 0 degrees positive, up = 90 degrees negative) - * @param Speed The speed it will move, in pixels per second sq - * @return A FlxPoint where FlxPoint.x contains the velocity x value and FlxPoint.y contains the velocity y value - - - - - - - - * Given the FlxSprite and speed calculate the velocity and return it as an FlxPoint based on the direction the sprite is facing - * - * @param Parent The FlxSprite to get the facing value from - * @param Speed The speed it will move, in pixels per second - * @return An FlxPoint where FlxPoint.x contains the velocity x value and FlxPoint.y contains the velocity y value - - - - - - - - - - - * A tween-like function that takes a starting velocity and some other factors and returns an altered velocity. - * - * @param Velocity Any component of velocity (e.g. 20). - * @param Acceleration Rate at which the velocity is changing. - * @param Drag Really kind of a deceleration, this is how much the velocity changes if Acceleration is not set. - * @param Max An absolute value cap for the velocity (0 for no cap). - * @param Elapsed The amount of time passed in to the latest update cycle - * @return The altered Velocity value. - - - - - - - - - - - { resetVelocity : true } - * Sets the x/y acceleration on the source FlxSprite so it will accelerate in the direction of the specified angle. - * You must give a maximum speed value (in pixels per second), beyond which the FlxSprite won't go any faster. - * - * @param Source The FlxSprite on which the acceleration will be set - * @param Radians The angle in which the FlxPoint will be set to accelerate - * @param Acceleration The speed it will accelerate in pixels per second - * @param MaxSpeed The maximum speed in pixels per second in which the sprite can move - * @param ResetVelocity Whether to reset the FlxSprite velocity to 0 each time - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.math.FlxVelocity - - - - - - - - FlxPathType.FORWARD - "Use FORWARD or FlxPathType.FORWARD instead" - - - * Move from the start of the path to the end then stop. - - - - - FlxPathType.BACKWARD - "Use BACKWARD or FlxPathType.BACKWARD instead" - - - * Move from the end of the path to the start then stop. - - - - - FlxPathType.LOOP_FORWARD - "Use LOOP_FORWARD or FlxPathType.LOOP_FORWARD instead" - - - * Move from the start of the path to the end then directly back to the start, and start over. - - - - - FlxPathType.LOOP_BACKWARD - "Use LOOP_BACKWARD or FlxPathType.LOOP_BACKWARD instead" - - - * Move from the end of the path to the start then directly back to the end, and start over. - - - - - FlxPathType.YOYO - "Use YOYO or FlxPathType.YOYO instead" - - - * Move from the start of the path to the end then turn around and go back to the start, over and over. - - <_point expr="FlxPoint.get()" line="87" static="1"> - - FlxPoint.get() - * Path behavior controls: move from the start of the path to the end then stop. - - - - * The list of FlxPoints that make up the path data. - - <_nodes> - - * An actual array, which holds all the path points. - - - - 0 - * The speed at which the object is moving on the path. - * When an object completes a non-looping path circuit, - * the path's speed will be zeroed out, but the path reference - * will NOT be nulled out. So `speed` is a good way - * to check if this object is currently following a path or not. - - - - false - * Whether to make the object immovable while active. - - - - 0 - * The angle in degrees between this object and the next node, where -90 is directly upward, and 0 is to the right. - - - - true - * Whether the object should auto-center the path or at its origin. - - - - false - * Whether the object's angle should be adjusted to the path angle during path follow behavior. - - - - 0 - * The amount of degrees to offset from the path's angle, when `autoRotate` is `true`. To use - * flixel 4.11's autoRotate behavior, set this to `90`, so there is no rotation at 0 degrees. - * - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - * @since 5.0.0 - - - - false - * Pauses or checks the pause state of the path. - - - - - - - - 0 - * Tracks which node of the path this object is currently moving toward. - - - - false - - - - XY - * Whether to limit movement to certain axes. - - <_mode> - - * Internal tracker for path behavior flags (like looping, yoyo, etc). - - <_inc expr="1"> - - 1 - * Internal helper for node navigation, specifically yo-yo and backwards movement. - - <_wasObjectImmovable expr="null"> - - null - - <_firstUpdate expr="false"> - - false - - - - flixel.FlxObject - * Object which will follow this path - - - - * Just resets some debugging related variables (for debugger renderer). - * Also resets `autoCenter` to `true`. - * @return This path object. - - - - - - - - - { autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - * Sets the following properties: `speed`, `mode` and auto rotation. - * - * @param speed The speed at which the object is moving on the path. - * @param mode Path following behavior (like looping, horizontal only, etc). - * @param autoRotate Whether the object's angle should be adjusted to the path angle during - * path follow behavior. Note that moving straight right is 0 degrees, when angle - * angleOffset is 0. - * @return This path object. - * @since 4.2.0 - - - - - - - - - - - { nodesAsReference : false, autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - * Starts movement along specified path. - * - * @param nodes An optional array of path waypoints. If null then previously added points will be used. Movement is not started if the resulting array has no points. - * @param speed The speed at which the object is moving on the path. - * @param mode Path following behavior (like looping, horizontal only, etc). - * @param autoRotate The object's angle should be adjusted to the path angle during path follow behavior. - * @param nodesAsReference To pass the input array as reference (true) or to copy the points (false). Default is false. - * @return This path object. - - - - * Restarts this path. So object starts movement again from the first (or last) path point - * (depends on path movement behavior mode). - * - * @return This path object. - - - - - - - * Change the path node this object is currently at. - * - * @param NodeIndex The index of the new node out of path.nodes. - - - - - - - * Internal function for moving the object along the path. - * The first half of the function decides if the object can advance to the next node in the path, - * while the second half handles actually picking a velocity toward the next node. - - - - - - - - - - - - - { snap : true } - * Internal function that decides what node in the path to aim for next based on the behavior flags. - * - * @return The node (a `FlxPoint`) we are aiming for next. - - - - * Stops the path's movement. - * - * @return This path object. - - - - * Called when the path ends, either by completing normally or via `cancel()`. - - - - * Clean up memory. - - - - - - - - * Add a new node to the end of the path at the specified location. - * - * @param x X position of the new path point in world coordinates. - * @param y Y position of the new path point in world coordinates. - * - * @return This path object. - - - - - - - - - * Add a new node to the path at the specified location and index within the path. - * - * @param x X position of the new path point in world coordinates. - * @param y Y position of the new path point in world coordinates. - * @param index Where within the list of path nodes to insert this new point. - * - * @return This path object. - - - - - - - - { asReference : false } - * Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. - * This also gives you the option of not creating a new node but actually adding that specific - * FlxPoint object to the path. This allows you to do neat things, like dynamic paths. - * - * @param node The point in world coordinates you want to add to the path. - * @param asReference Whether to add the point as a reference, or to create a new point with the specified values. - * - * @return This path object. - - - - - - - - - { asReference : false } - * Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. - * This also gives you the option of not creating a new node but actually adding that specific - * FlxPoint object to the path. This allows you to do neat things, like dynamic paths. - * - * @param node The point in world coordinates you want to add to the path. - * @param index Where within the list of path nodes to insert this new point. - * @param asReference Whether to add the point as a reference, or to create a new point with the specified values. - * - * @return This path object. - - - - - - - * Remove a node from the path. - * NOTE: only works with points added by reference or with references from nodes itself! - * - * @param node The point object you want to remove from the path. - * @return The node that was excised. Returns null if the node was not found. - - - - - - - * Remove a node from the path using the specified position in the list of path nodes. - * - * @param index Where within the list of path nodes you want to remove a node. - * @return The node that was excised. Returns null if there were no nodes in the path. - - - - * Get the first node in the list. - * - * @return The first node in the path. - - - - * Get the last node in the list. - * - * @return The last node in the path. - - - - - - - - - - - - - - - = [new FlxPoint(0, 0), new FlxPoint(100, 0)]; - * object.path = path; - * path.start(points, 50, FORWARD); - * ``` - * - * You can also do this in one line: - * - * ```haxe - * object.path = new FlxPath().start([new FlxPoint(0, 0), new FlxPoint(100, 0)], 50, FORWARD); - * ``` - * - * ...or using some more chaining: - * - * ```haxe - * object.path = new FlxPath().add(0, 0).add(100, 0).start(50, FORWARD); - * ``` - * - * If you are fine with the default values of start (speed, mode, auto-rotate) you can also do: - * - * ```haxe - * object.path = new FlxPath([new FlxPoint(0, 0), new FlxPoint(100, 0)]).start(); - * ```]]> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Path behavior controls - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0x000000 - - - - * Move from the start of the path to the end then stop. - - - - - cast 0x000001 - - - - * Move from the end of the path to the start then stop. - - - - - cast 0x000010 - - - - * Move from the start of the path to the end then directly back to the start, and start over. - - - - - cast 0x000100 - - - - * Move from the end of the path to the start then directly back to the end, and start over. - - - - - cast 0x001000 - - - - * Move from the start of the path to the end then turn around and go back to the start, over and over. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0x000000 - - - - * Move from the start of the path to the end then stop. - - - - - cast 0x000001 - - - - * Move from the end of the path to the start then stop. - - - - - cast 0x000010 - - - - * Move from the start of the path to the end then directly back to the start, and start over. - - - - - cast 0x000100 - - - - * Move from the end of the path to the start then directly back to the end, and start over. - - - - - cast 0x001000 - - - - * Move from the start of the path to the end then turn around and go back to the start, over and over. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - FlxColor.WHITE - - - - FlxColor.WHITE - - - - FlxColor.GREEN - - - - FlxColor.RED - - - - 1 - - - - 3 - - - - 5 - - - - 5 - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0x000000, flixel.path.FlxPathType) - * Move from the start of the path to the end then stop. - - - - cast (0x000001, flixel.path.FlxPathType) - * Move from the end of the path to the start then stop. - - - - cast (0x000010, flixel.path.FlxPathType) - * Move from the start of the path to the end then directly back to the start, and start over. - - - - cast (0x000100, flixel.path.FlxPathType) - * Move from the end of the path to the start then directly back to the end, and start over. - - - - cast (0x001000, flixel.path.FlxPathType) - * Move from the start of the path to the end then turn around and go back to the start, over and over. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Just resets some debugging related variables (for debugger renderer). - * Also resets `autoCenter` to `true`. - * @return This path object. - - <_HX_SUPER__reset public="1" set="method" line="148"> - - - - - - - - { autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - * Sets the following properties: `speed`, `mode` and auto rotation. - * - * @param speed The speed at which the object is moving on the path. - * @param mode Path following behavior (like looping, horizontal only, etc). - * @param autoRotate Whether the object's angle should be adjusted to the path angle during - * path follow behavior. Note that moving straight right is 0 degrees, when angle - * angleOffset is 0. - * @return This path object. - * @since 4.2.0 - - <_HX_SUPER__setProperties public="1" set="method" line="148"> - - - - - - - { autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - - - - - - - - - - - { nodesAsReference : false, autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - * Starts movement along specified path. - * - * @param nodes An optional array of path waypoints. If null then previously added points will be used. Movement is not started if the resulting array has no points. - * @param speed The speed at which the object is moving on the path. - * @param mode Path following behavior (like looping, horizontal only, etc). - * @param autoRotate The object's angle should be adjusted to the path angle during path follow behavior. - * @param nodesAsReference To pass the input array as reference (true) or to copy the points (false). Default is false. - * @return This path object. - - <_HX_SUPER__start public="1" set="method" line="148"> - - - - - - - - - { nodesAsReference : false, autoRotate : false, mode : FlxPathType.FORWARD, speed : 100.0 } - - - - * Restarts this path. So object starts movement again from the first (or last) path point - * (depends on path movement behavior mode). - * - * @return This path object. - - <_HX_SUPER__restart public="1" set="method" line="148"> - - - - - - * Change the path node this object is currently at. - * - * @param NodeIndex The index of the new node out of path.nodes. - - <_HX_SUPER__setNode public="1" set="method" line="148"> - - - - - - - - - * Internal function for moving the object along the path. - * The first half of the function decides if the object can advance to the next node in the path, - * while the second half handles actually picking a velocity toward the next node. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__calculateVelocity set="method" line="31"> - - - - - - - - - - - { snap : true } - * Internal function that decides what node in the path to aim for next based on the behavior flags. - * - * @return The node (a `FlxPoint`) we are aiming for next. - - <_HX_SUPER__advancePath set="method" line="148"> - - - - - { snap : true } - - - - * Stops the path's movement. - * - * @return This path object. - - <_HX_SUPER__cancel public="1" set="method" line="148"> - - - * Called when the path ends, either by completing normally or via `cancel()`. - - <_HX_SUPER__onEnd set="method" line="31"> - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Add a new node to the end of the path at the specified location. - * - * @param x X position of the new path point in world coordinates. - * @param y Y position of the new path point in world coordinates. - * - * @return This path object. - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - - - - * Add a new node to the path at the specified location and index within the path. - * - * @param x X position of the new path point in world coordinates. - * @param y Y position of the new path point in world coordinates. - * @param index Where within the list of path nodes to insert this new point. - * - * @return This path object. - - <_HX_SUPER__addAt public="1" set="method" line="148"> - - - - - - - - - - - - { asReference : false } - * Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. - * This also gives you the option of not creating a new node but actually adding that specific - * FlxPoint object to the path. This allows you to do neat things, like dynamic paths. - * - * @param node The point in world coordinates you want to add to the path. - * @param asReference Whether to add the point as a reference, or to create a new point with the specified values. - * - * @return This path object. - - <_HX_SUPER__addPoint public="1" set="method" line="148"> - - - - - - { asReference : false } - - - - - - - - - { asReference : false } - * Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. - * This also gives you the option of not creating a new node but actually adding that specific - * FlxPoint object to the path. This allows you to do neat things, like dynamic paths. - * - * @param node The point in world coordinates you want to add to the path. - * @param index Where within the list of path nodes to insert this new point. - * @param asReference Whether to add the point as a reference, or to create a new point with the specified values. - * - * @return This path object. - - <_HX_SUPER__addPointAt public="1" set="method" line="148"> - - - - - - - { asReference : false } - - - - - - - * Remove a node from the path. - * NOTE: only works with points added by reference or with references from nodes itself! - * - * @param node The point object you want to remove from the path. - * @return The node that was excised. Returns null if the node was not found. - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - - - - * Remove a node from the path using the specified position in the list of path nodes. - * - * @param index Where within the list of path nodes you want to remove a node. - * @return The node that was excised. Returns null if there were no nodes in the path. - - <_HX_SUPER__removeAt public="1" set="method" line="148"> - - - - - - * Get the first node in the list. - * - * @return The first node in the path. - - <_HX_SUPER__head public="1" set="method" line="148"> - - - * Get the last node in the list. - * - * @return The last node in the path. - - <_HX_SUPER__tail public="1" set="method" line="148"> - - <_HX_SUPER__get_nodes set="method" line="148"> - - - - - <_HX_SUPER__set_nodes set="method" line="148"> - - - - - - - - <_HX_SUPER__set_immovable set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.path.FlxPath - flixel.path.FlxPath.FlxPathType - flixel.path.FlxPath.FlxPathType - flixel.path.FlxPath.FlxPathDrawData - - - - - <__interp> - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.path.FlxPath - flixel.path.FlxPath.FlxPathType - flixel.path.FlxPath.FlxPathType - flixel.path.FlxPath.FlxPathDrawData - - - - - - - - * Used to find paths in a FlxBaseTilemap. extend this class and override - * `getNeighbors` and `getDistance` to create you're own! For top-down maps, it may - * be wiser to extend FlxDiagonalPathfinder, as it already has a lot of basic helpers. - * @since 5.0.0 - * - * To use, either call `myPathfinder.findPath(myMap, start, end)` or - * `myMap.findPathCustom(myPathfinder, start, end)` - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * The path data created whenever a `FlxPathfinderData` is used. - * @since 5.0.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - Data currently being processed by the pathfinder - - - - - - - - - - { simplify : LINE } - * Find a path through the tilemap. Any tile with any collision flags set is treated as impassable. - * If no path is discovered then a null reference is returned. - * - * @param map The map we're moving through. - * @param start The start point in world coordinates. - * @param end The end point in world coordinates. - * @param simplify The simplification method to run on the raw path. Default value is LINE. - * @return An Array of FlxPoints, containing all waypoints from the start to the end. If no path - * could be found, then a null reference is returned. - - - - - - - - - * Find a path through the tilemap. Any tile with any collision flags set is treated as impassable. - * If no path is discovered then a null reference is returned. - * - * @param map The map we're moving through. - * @param startIndex The start point in world coordinates. - * @param endIndex The end point in world coordinates. - * @return An Array of FlxPoints, containing all waypoints from the start to the end. If no path could be found, - * then a null reference is returned. - - - - - - - * Helper for findPathIndices, after a data instance is already created. - * - * @param data The pathfinder data for this current search. - - - - - - - - - - - - - - * Pathfinding helper function, strips out extra points on the same line. - * - * @param data The pathfinder data for this current search. - * @param points An array of FlxPoint nodes. - - - - - - - - * Pathfinding helper function, strips out extra points on the same line. - * - * @param data The pathfinder data for this current search. - * @param points An array of FlxPoint nodes. - - - - - - - - * Pathfinding helper function, strips out even more points by raycasting from one - * point to the next and dropping unnecessary points. - * - * @param data The pathfinder data for this current search. - * @param points An array of FlxPoint nodes. - - - - - - - - - - * Pathfinding helper function, strips out even more points by raycasting from one - * point to the next and dropping unnecessary points. - * - * @param data The pathfinder data for this current search. - * @param points An array of FlxPoint nodes. - - - - - - - - - * Pathfinding helper function, strips out even more points by rayStepping from one - * point to the next and dropping unnecessary points. - * - * @param data The pathfinder data for this current search. - * @param points An array of FlxPoint nodes. - * @param reolution Defaults to 1, meaning check every tile or so. Higher means more checks! - - - - - - - - - - { stopOnEnd : true } - * Pathfinding helper function, floods a grid with distance information until it finds the end point. - * NOTE: Currently this process does NOT use any kind of fancy heuristic! It's pretty brute. - * - * @param map The map we're moving through. - * @param startIndex The starting tile's map index. - * @param endIndex The ending tile's map index. - * @param stopOnEnd Whether to stop at the end or not. default true. - * @return An array of FlxPoint nodes. If the end tile could not be found, then a null Array is returned instead. - - - - - - - - { stopOnEnd : true } - * Actually begins the brute pathfinding process. - * - * @param data The pathfinder data for this current search. - * @param stopOnEnd Whether to stop at the end or not. default true. - * @return The pathfinder data that was passed in. - - - - - - - - * Intended to be overriden according to your pathfinder extension's needs. - * Returns all neighbors this tile can travel to in a single "move". - * - * @param from The tile we're moving from. - * @return A list of tile indices. - - - - - - - - - * Intended to be overriden according to your pathfinder extension's needs. Otherwise throws an error - * - * Determines the weight or value of moving from one tile to another (lower being more valuable). - * - * @param from The tile we moved from. - * @param to The tile we moved to. - * @return Float used for comparisons in finding the best route. - - - - - - - * Intended to be overriden according to your pathfinder extension's needs. - * - * Determines whether the path has found the solution and can stop. By default it - * checks if there is any valid move to the end posiion. - * - * Note: The pathfinder will still continue computing paths if `stopOnEnd` is false. - - - - - - - - * Intended to be overriden according to your pathfinder extension's needs. - * - * Determines whether the tile has found the shortest path and can be avoided. - * By default it returns true. - - - - - - - * Intended to be overriden according to your pathfinder extension's needs. - * - * Determines whether the pathfinder should even bother computing paths. By default it - * makes sure the supplied start and end positions are valid and have collision:NONE. - - - - - - - - - - * Creates a FlxTilemapPathPolicy. - * - * @param factory A method to create `FlxTypedPathfinderData` instances. - * Note: You don't need to create a new instances of the same policy for different maps. - - * Typed version of `FlxPathfinder` in case you're using - * a different `FlxPathfinderData` or FlxTilemap type. - * @since 5.0.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - * Determines which neighbors are inside the maps bounds. - * - * @param from The tile index we're moving from. - * @return Direction flags indicating the direction. - - - - - - - - - { dir : ANY } - * Useful If you want to extend this with slight changes. - * - * @param data The pathfinder data for this current search. - * @param to The tile index we're moving from. - * @param dir The direction we came from. - - - - - - - - - - - - - { diagonalPolicy : NONE } - - * A basic implementation of FlxPathfinder that allows for different diagonal policies. - * @since 5.0.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Usually just FlxPathfinderData.new, but can be any function that takes a map and 2 - * indices and returns whatever FlxPathfinderData you're looking for. - * @since 5.0.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - The start index of path - - - - The end index of path - - - - The end index of path - - - - The distance of every tile from the starting position - - - - Every index has the tileIndex that reached it first while computing the path - - - - Every index has the tileIndex that reached it first while computing the path - - - - Whether a path from startIndex to endIndex was found - - - - - - - * If possible, this returns the tile indices used to get there the fastest. - * If impossible, null is returned. - - - - * If the desired start to end path was successful, this returns the tile indices used - * to get there the fastest. If unsuccessful, null is returned. - - - - - - - - - * Whether the specified index is excluded as a possible path. - * Meaning no shorter paths to it can be found. - - - - - - - * Helper for converting a tile index to a X index. - - - - - - - * Helper for converting a tile index to a Y index. - - - - - - - * Helper that gets the collision properties of a tile by it's index. - - - - - - - - - * Mainly a helper class for FlxTilemapPathPolicy. Used to store data while the paths - * are computed, but also useful for analyzing the data once it's done somputing. - * - * @param mapSize The total number of tiles in the map - * @param startIndex The start index of the path - * @param endIndex The end index of the path - - * The data used by Pathfinders to "solve" a single pathfinding request. A new Instance - * gets created whenever you request pathfinder computations. Extend this class if your - * pathfinding needs require special iterative data. - * @since 5.0.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.path.FlxTypedPathfinder - - - - * No simplification - * Removes nodes that are directly in line with it's neighbors - * Removes nodes who'with neighbors that have no walls directly blocking - * Uses `tilemap.ray`. - - - * Removes nodes who'with neighbors that have no walls directly blocking - * Uses `tilemap.rayStep`. - - - - - * Removes nodes who'with neighbors that have no walls directly - * blocking a box of the given size. Assumes centered origin - * Uses `tilemap.ray`. - - - - - - - - * calls the method to simplify - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * The policy to use with `FlxDiagonalPathfinder`. - * @since 5.0.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - * No diagonal movement allowed when calculating the path - - - - - cast 1 - - - - * Diagonal movement costs the same as orthogonal movement - - - - - cast 2 - - - - * Diagonal movement costs one more than orthogonal movement - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - * No diagonal movement allowed when calculating the path - - - - - cast 1 - - - - * Diagonal movement costs the same as orthogonal movement - - - - - cast 2 - - - - * Diagonal movement costs one more than orthogonal movement - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0, flixel.path.FlxTilemapDiagonalPolicy) - * No diagonal movement allowed when calculating the path - - - - cast (1, flixel.path.FlxTilemapDiagonalPolicy) - * Diagonal movement costs the same as orthogonal movement - - - - cast (2, flixel.path.FlxTilemapDiagonalPolicy) - * Diagonal movement costs one more than orthogonal movement - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__getNeighbors set="method" line="148"> - - - - - - - - - - - * Determines which neighbors are inside the maps bounds. - * - * @param from The tile index we're moving from. - * @return Direction flags indicating the direction. - - <_HX_SUPER__getInBoundDirections set="method" line="148"> - - - - - - - - - - - - { dir : ANY } - * Useful If you want to extend this with slight changes. - * - * @param data The pathfinder data for this current search. - * @param to The tile index we're moving from. - * @param dir The direction we came from. - - <_HX_SUPER__canGo set="method" line="148"> - - - - - - - { dir : ANY } - - - - - - - - <_HX_SUPER__getDistance set="method" line="148"> - - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.path.FlxPathfinder - flixel.path.FlxPathfinder.FlxPathfinderData - flixel.path.FlxPathfinder.FlxTypedPathfinder - flixel.path.FlxPathfinder.FlxDiagonalPathfinder - flixel.path.FlxPathfinder.FlxPathfinderDataFactory - flixel.path.FlxPathfinder.FlxTypedPathfinderData - flixel.path.FlxPathfinder.FlxPathSimplifier - flixel.path.FlxPathfinder.FlxTilemapDiagonalPolicy - flixel.path.FlxPathfinder.FlxTilemapDiagonalPolicy - flixel.path.FlxPathfinder.FlxTilemapDiagonalPolicy_HSC - - - - - - - "__ASSET__:bitmap_flixel_system_GraphicLogo" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/logo/logo.png" - - - - - - - "__ASSET__:bitmap_flixel_system_GraphicVirtualInput" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/ui/virtual-input.png" - - - - - - - - - - - - - - - - - - - - - - - The byte order for the data, either the `BIG_ENDIAN` or `LITTLE_ENDIAN` constant - from the Endian class. - - - - Used to determine whether the `AMF3` or `AMF0` format is used when writing or - reading binary data using the `writeObject()` method. The value is a constant from - the ObjectEncoding class. - - - - - - - Writes a Boolean value. A single byte is written according to the `value` parameter, - either 1 if `true` or 0 if `false`. - - @param value A Boolean value determining which byte is written. If the parameter - is `true`, 1 is written; if `false`, 0 is written. - - - - - - - Writes a byte. The low 8 bits of the parameter are used; the high 24 bits are - ignored. - - @param value A byte value as an integer. - - - - - - - - - { length : 0, offset : 0 } - Writes a sequence of bytes from the specified byte array, bytes, starting at the - byte specified by `offset` (using a zero-based index) with a length specified by - `length`, into the file stream, byte stream, or byte array. - - If the `length` parameter is omitted, the default length of 0 is used and the - entire buffer starting at `offset` is written. If the `offset` parameter is also - omitted, the entire buffer is written. - - If the `offset` or `length` parameter is out of range, they are clamped to the - beginning and end of the bytes array. - - @param bytes The byte array to write. - @param offset A zero-based index specifying the position into the array to begin - writing. - @param length An unsigned integer specifying how far into the buffer to write. - - - - - - - Writes an IEEE 754 double-precision (64-bit) floating point number. - - @param value A double-precision (64-bit) floating point number. - - - - - - - Writes an IEEE 754 single-precision (32-bit) floating point number. - - @param value A single-precision (32-bit) floating point number. - - - - - - - Writes a 32-bit signed integer. - - @param value A byte value as a signed integer. - - - - - - - - Writes a multibyte string to the file stream, byte stream, or byte array, using - the specified character set. - - @param value The string value to be written. - @param charSet The string denoting the character set to use. Possible character - set strings include "shift-jis", "cn-gb", "iso-8859-1", and others. For a complete - list, see Supported Character Sets. - - - - - - - Writes an object to the file stream, byte stream, or byte array, in AMF - serialized format. - - @param object The object to be serialized. - - - - - - - Writes a 16-bit integer. The low 16 bits of the parameter are used; the high 16 - bits are ignored. - - @param value A byte value as an integer. - - - - - - - Writes a 32-bit unsigned integer. - - @param value A byte value as an unsigned integer. - - - - - - - Writes a UTF-8 string to the file stream, byte stream, or byte array. The length - of the UTF-8 string in bytes is written first, as a 16-bit integer, followed by - the bytes representing the characters of the string. - - @param value The string value to be written. - @throws RangeError If the `length` is larger than 65535. - - - - - - - Writes a UTF-8 string. Similar to `writeUTF()`, but does not prefix the string with - a 16-bit `length` word. - - @param value The string value to be written. - - The IDataOutput interface provides a set of methods for writing binary data. This - interface is the I/O counterpart to the IDataInput interface, which reads binary data. The IDataOutput interface is implemented by the FileStream, Socket and ByteArray - classes. - - All IDataInput and IDataOutput operations are "bigEndian" by default (the most - significant byte in the sequence is stored at the lowest or first storage address), - and are nonblocking. - - Sign extension matters only when you read data, not when you write it. Therefore, you - do not need separate write methods to work with `IDataInput.readUnsignedByte()` and `IDataInput.readUnsignedShort()`. In other words: - - * Use `IDataOutput.writeByte()` with `IDataInput.readUnsignedByte()` and - `IDataInput.readByte()`. - * Use `IDataOutput.writeShort()` with `IDataInput.readUnsignedShort()` and - `IDataInput.readShort()`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns the number of bytes of data available for reading in the input buffer. - User code must call `bytesAvailable` to ensure that sufficient data is available - before trying to read it with one of the read methods. - - - - The byte order for the data, either the `BIG_ENDIAN` or `LITTLE_ENDIAN` constant - from the Endian class. - - - - Used to determine whether the `AMF3` or `AMF0` format is used when writing or - reading binary data using the `readObject()` method. The value is a constant from - the ObjectEncoding class. - - - - Reads a Boolean value from the file stream, byte stream, or byte array. A single - byte is read and `true` is returned if the byte is nonzero, `false` otherwise. - - @returns A Boolean value, `true` if the byte is nonzero, `false` otherwise. - @throws EOFError There is not sufficient data available to read. - - - - Reads a signed byte from the file stream, byte stream, or byte array. - - @returns The returned value is in the range -128 to 127. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - { length : 0, offset : 0 } - Reads the number of data bytes, specified by the `length` parameter, from the file - stream, byte stream, or byte array. The bytes are read into the ByteArray objected - specified by the `bytes` parameter, starting at the position specified by `offset`. - - @param bytes The ByteArray object to read data into. - @param offset The offset into the `bytes` parameter at which data read should - begin. - @param length The number of bytes to read. The default value of 0 causes all - available data to be read. - @throws EOFError There is not sufficient data available to read. - - - - Reads an IEEE 754 double-precision floating point number from the file stream, byte - stream, or byte array. - - @returns An IEEE 754 double-precision floating point number. - @throws EOFError There is not sufficient data available to read. - - - - Reads an IEEE 754 single-precision floating point number from the file stream, byte - stream, or byte array. - - @returns An IEEE 754 single-precision floating point number. - @throws EOFError There is not sufficient data available to read. - - - - Reads a signed 32-bit integer from the file stream, byte stream, or byte array. - - @returns The returned value is in the range -2147483648 to 2147483647. - @throws EOFError There is not sufficient data available to read. - - - - - - - - Reads a multibyte string of specified length from the file stream, byte stream, or - byte array using the specified character set. - - @param length The number of bytes from the byte stream to read. - @param charSet The string denoting the character set to use to interpret the - bytes. Possible character set strings include "shift-jis", "cn-gb", "iso-8859-1", - and others. For a complete list, see Supported Character Sets. - - **Note:** If the value for the `charSet` parameter is not recognized by the current - system, then Adobe® Flash® Player or Adobe® AIR® uses the system's default code page - as the character set. For example, a value for the `charSet` parameter, as in - `myTest.readMultiByte(22, "iso-8859-01")`, that uses `01` instead of `1` might work - on your development system, but not on another system. On the other system, Flash - Player or the AIR runtime will use the system's default code page. - @returns UTF-8 encoded string. - @throws EOFError There is not sufficient data available to read. - - - - Reads an object from the file stream, byte stream, or byte array, encoded in AMF - serialized format. - - @returns The deserialized object - @throws EOFError There is not sufficient data available to read. - - - - Reads a signed 16-bit integer from the file stream, byte stream, or byte array. - - @returns The returned value is in the range -32768 to 32767. - @throws EOFError There is not sufficient data available to read. - - - - Reads an unsigned byte from the file stream, byte stream, or byte array. - - @returns The returned value is in the range 0 to 255. - @throws EOFError There is not sufficient data available to read. - - - - Reads an unsigned 32-bit integer from the file stream, byte stream, or byte array. - - @returns The returned value is in the range 0 to 4294967295. - @throws EOFError There is not sufficient data available to read. - - - - Reads an unsigned 16-bit integer from the file stream, byte stream, or byte array. - - @returns The returned value is in the range 0 to 65535. - @throws EOFError There is not sufficient data available to read. - - - - Reads a UTF-8 string from the file stream, byte stream, or byte array. The string - is assumed to be prefixed with an unsigned short indicating the length in bytes. - - This method is similar to the `readUTF()` method in the Java® IDataInput interface. - - @returns A UTF-8 string produced by the byte representation of characters. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a sequence of UTF-8 bytes from the byte stream or byte array and returns a - string. - - @param length The number of bytes to read. - @returns A UTF-8 string produced by the byte representation of characters of - the specified length. - @throws EOFError There is not sufficient data available to read. - - The IDataInput interface provides a set of methods for reading binary data. This - interface is the I/O counterpart to the IDataOutput interface, which writes binary data. - - All IDataInput and IDataOutput operations are "bigEndian" by default (the most - significant byte in the sequence is stored at the lowest or first storage address), and - are nonblocking. If insufficient data is available, an `EOFError` exception is thrown. - Use the `IDataInput.bytesAvailable` property to determine how much data is available - to read. - - Sign extension matters only when you read data, not when you write it. Therefore you - do not need separate write methods to work with `IDataInput.readUnsignedByte()` and - `IDataInput.readUnsignedShort()`. In other words: - - * Use `IDataOutput.writeByte()` with `IDataInput.readUnsignedByte()` and - `IDataInput.readByte()`. - * Use `IDataOutput.writeShort()` with `IDataInput.readUnsignedShort()` and - `IDataInput.readShort()`. - - - - - - - - - ObjectEncoding.DEFAULT - - <__defaultEndian expr="null" line="1069" static="1"> - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__endian> - - - - <__length> - - - - - - - - - - { algorithm : ZLIB } - - - - - - - - - - - - - { length : 0, offset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - { algorithm : ZLIB } - - - - - - - - - - - - - - - - - { length : 0, offset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__fromBytes set="method" line="1730"> - - - - - - - <__resize set="method" line="1740"> - - - - - - - <__setData get="inline" set="null" line="1776"> - - - - - - - - - - - - - - - - - - - - - - - - - - - { length : 0 } - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - lime._internal.macros.AssetsMacro.embedByteArray() - - hide - - - - - - - "__ASSET__:file_flixel_system_VirtualInputData" - - - - - - - { length : 0 } - - - - lime._internal.macros.AssetsMacro.embedByteArray() - lime._internal.macros.AssetsMacro.embedByteArray() - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/ui/virtual-input.txt" - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - "Nokia Cellphone FC Small" - - - - "Monsterrat" - - - - - - - - - - - - - - - * Generates BitmapData from specified class. Less typing. - * - * @param source BitmapData class to generate BitmapData object from. - * @return Newly instantiated BitmapData object. - - - - - - - , then it will create BitmapData from this class; - * 3) if the input is String, then it will get BitmapData from openfl.Assets; - * 4) it will return null in any other case. - * - * @param Graphic input data to get BitmapData object for. - * @return BitmapData for specified Dynamic object.]]> - - - - - - - - , then it will return the name of this class; - * 3) if the input is String, then it will return it; - * 4) it will return null in any other case. - * - * @param Graphic input data to get string key for. - * @param Key optional key string. - * @return Key String for specified Graphic object.]]> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedBytes() - lime._internal.macros.AssetsMacro.embedByteArray() - lime._internal.macros.AssetsMacro.embedByteArray() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxAssets.GraphicLogo - flixel.system.FlxAssets.GraphicVirtualInput - flixel.system.FlxAssets.VirtualInputData - flixel.system.FlxAssets.FlxAngelCodeSource - flixel.system.FlxAssets.FlxTexturePackerSource - flixel.system.FlxAssets.FlxSoundAsset - flixel.system.FlxAssets.FlxGraphicAsset - flixel.system.FlxAssets.FlxGraphicSource - flixel.system.FlxAssets.FlxTilemapGraphicAsset - flixel.system.FlxAssets.FlxBitmapFontGraphicAsset - flixel.system.FlxAssets.FlxShader - flixel.system.FlxAssets - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxAssets.GraphicLogo - flixel.system.FlxAssets.GraphicVirtualInput - flixel.system.FlxAssets.VirtualInputData - flixel.system.FlxAssets.FlxAngelCodeSource - flixel.system.FlxAssets.FlxTexturePackerSource - flixel.system.FlxAssets.FlxSoundAsset - flixel.system.FlxAssets.FlxGraphicAsset - flixel.system.FlxAssets.FlxGraphicSource - flixel.system.FlxAssets.FlxTilemapGraphicAsset - flixel.system.FlxAssets.FlxBitmapFontGraphicAsset - flixel.system.FlxAssets.FlxShader - flixel.system.FlxAssets - - - - - - - flixel.FlxCamera - * Called by game loop, updates then blits or renders current frame of animation to the screen - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - flixel.FlxCamera - * Called by game loop, updates then blits or renders current frame of animation to the screen - - <_HX_SUPER__draw public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxBGSprite - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - "localhost" - * Add this string to allowedURLs array if you want to be able to test game with enabled site-locking on local machine - - - - 0 - * Change this if you want the flixel logo to show for more or less time. Default value is 0 seconds (no delay). - - - - * List of allowed URLs for built-in site-locking. - * Set it in FlxPreloader's constructor as: `['http://adamatomic.com/canabalt/', FlxPreloader.LOCAL]`; - - - - 0 - * The index of which URL in allowedURLs will be triggered when a user clicks on the Site-lock Message. - * For example, if allowedURLs is `['mysite.com', 'othersite.com']`, and `siteLockURLIndex = 1`, then - * the user will go to 'othersite.com' when they click the message, but sitelocking will allow either of those URLs to work. - * Defaults to 0. - - - - "Sorry." - * The title text to display on the sitelock failure screen. - * NOTE: This string should be reviewed for accuracy and may need to be localized. - * - * To customize this variable, create a class extending `FlxBasePreloader`, and override its value in the constructor: - * - * ```haxe - * class Preloader extends FlxBasePreloader - * { - * public function new():Void - * { - * super(0, ["http://placeholder.domain.test/path/document.html"]); - * - * siteLockTitleText = "Custom title text."; - * siteLockBodyText = "Custom body text."; - * } - * } - * ``` - * @since 4.3.0 - - - - "It appears the website you are using is hosting an unauthorized copy of this game. " + "Storage or redistribution of this content, without the express permission of the " + "developer or other copyright holder, is prohibited under copyright law.\n\n" + "Thank you for your interest in this game! Please support the developer by " + "visiting the following website to play the game:" - * The body text to display on the sitelock failure screen. - * NOTE: This string should be reviewed for accuracy and may need to be localized. - * - * To customize this variable, create a class extending `FlxBasePreloader`, and override its value in the constructor. - * @see `siteLockTitleText` - * @since 4.3.0 - - <_percent expr="0"> - - 0 - - <_width> - <_height> - <_loaded expr="false"> - - false - - <_urlChecked expr="false"> - - false - - <_destroyed expr="false"> - - false - - <_startTime> - - - * Override this to create your own preloader objects. - - - - * This function is called externally to initialize the Preloader. - - - - - - - - * This function is called each update to check the load status of the project. - * It is highly recommended that you do NOT override this. - - - - - - - * This function is triggered on each 'frame'. - * It is highly recommended that you do NOT override this. - - - - * This function is called when the project has finished loading. - * Override it to remove all of your objects. - - - - - - - * Override to draw your preloader objects in response to the Percent - * - * @param Percent How much of the program has loaded. - - - - * This function is called EXTERNALLY once the movie has actually finished being loaded. - * Highly recommended you DO NOT override. - - - - - - - - - - - * This should be used whenever you want to create a Bitmap that uses BitmapData embedded with the - * @:bitmap metadata, if you want to support both Flash and HTML5. Because the embedded data is loaded - * asynchronously in HTML5, any code that depends on the pixel data or size of the bitmap should be - * in the onLoad function; any such code executed before it is called will fail on the HTML5 target. - * - * @param bitmapDataClass A reference to the BitmapData child class that contains the embedded data which is to be used. - * @param onLoad Executed once the bitmap data is finished loading in HTML5, and immediately in Flash. The new Bitmap instance is passed as an argument. - * @return The Bitmap instance that was created. - - - - - - - - - - - * This should be used whenever you want to create a BitmapData object from a class containing data embedded with - * the @:bitmap metadata. Often, you'll want to use the BitmapData in a Bitmap object; in this case, createBitmap() - * can should be used instead. Because the embedded data is loaded asynchronously in HTML5, any code that depends on - * the pixel data or size of the bitmap should be in the onLoad function; any such code executed before it is called - * will fail on the HTML5 target. - * - * @param bitmapDataClass A reference to the BitmapData child class that contains the embedded data which is to be used. - * @param onLoad Executed once the bitmap data is finished loading in HTML5, and immediately in Flash. The new BitmapData instance is passed as an argument. - * @return The BitmapData instance that was created. - - - - * Site-locking Functionality - - - - - - - - { MinDisplayTime : 0 } - * FlxBasePreloader Constructor. - * @param MinDisplayTime Minimum time (in seconds) the preloader should be shown. (Default = 0) - * @param AllowedURLs Allowed URLs used for Site-locking. If the game is run anywhere else, a message will be displayed on the screen (Default = []) - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__onAddedToStage public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__onComplete set="method" line="31"> - - - - - - - - <_HX_SUPER__onProgress public="1" set="method" line="31"> - - - - - <_HX_SUPER__onInit public="1" set="method" line="148"> - - <_HX_SUPER__onLoaded public="1" set="method" line="148"> - - - - - - <_HX_SUPER__onUpdate public="1" set="method" line="31"> - - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxBasePreloader - flixel.system.FlxBasePreloader.DefaultPreloader - - - - - - - * Override this to create your own preloader objects. - - <_HX_SUPER__create set="method" line="31"> - - - * This function is called externally to initialize the Preloader. - - <_HX_SUPER__onInit public="1" set="method" line="148"> - - - - - - - * This function is called each update to check the load status of the project. - * It is highly recommended that you do NOT override this. - - <_HX_SUPER__onUpdate public="1" set="method" line="148"> - - - - - - - - - - * This function is triggered on each 'frame'. - * It is highly recommended that you do NOT override this. - - <_HX_SUPER__onEnterFrame set="method" line="31"> - - - - - - * This function is called when the project has finished loading. - * Override it to remove all of your objects. - - <_HX_SUPER__destroy set="method" line="31"> - - - - - - * Override to draw your preloader objects in response to the Percent - * - * @param Percent How much of the program has loaded. - - <_HX_SUPER__update set="method" line="31"> - - - - - - * This function is called EXTERNALLY once the movie has actually finished being loaded. - * Highly recommended you DO NOT override. - - <_HX_SUPER__onLoaded public="1" set="method" line="148"> - - - - - - - - - - * This should be used whenever you want to create a Bitmap that uses BitmapData embedded with the - * @:bitmap metadata, if you want to support both Flash and HTML5. Because the embedded data is loaded - * asynchronously in HTML5, any code that depends on the pixel data or size of the bitmap should be - * in the onLoad function; any such code executed before it is called will fail on the HTML5 target. - * - * @param bitmapDataClass A reference to the BitmapData child class that contains the embedded data which is to be used. - * @param onLoad Executed once the bitmap data is finished loading in HTML5, and immediately in Flash. The new Bitmap instance is passed as an argument. - * @return The Bitmap instance that was created. - - <_HX_SUPER__createBitmap set="method" line="148"> - - - - - - - - - - - - - - - - - * This should be used whenever you want to create a BitmapData object from a class containing data embedded with - * the @:bitmap metadata. Often, you'll want to use the BitmapData in a Bitmap object; in this case, createBitmap() - * can should be used instead. Because the embedded data is loaded asynchronously in HTML5, any code that depends on - * the pixel data or size of the bitmap should be in the onLoad function; any such code executed before it is called - * will fail on the HTML5 target. - * - * @param bitmapDataClass A reference to the BitmapData child class that contains the embedded data which is to be used. - * @param onLoad Executed once the bitmap data is finished loading in HTML5, and immediately in Flash. The new BitmapData instance is passed as an argument. - * @return The BitmapData instance that was created. - - <_HX_SUPER__loadBitmapData set="method" line="148"> - - - - - - - - - - * Site-locking Functionality - - <_HX_SUPER__checkSiteLock set="method" line="31"> - <__interp> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxBasePreloader - flixel.system.FlxBasePreloader.DefaultPreloader - - - - - <_NUM_CACHED_FLX_LIST public="1" expr="0" line="17" static="1"> - - 0 - * Pooling mechanism, when FlxLinkedLists are destroyed, they get added - * to this collection, and when they get recycled they get removed. - - <_cachedListsHead static="1"> - - - * Recycle a cached Linked List, or creates a new one if needed. - - - - * Clear cached List nodes. You might want to do this when loading new levels - * (probably not though, no need to clear cache unless you run into memory problems). - - - - * Stores a reference to a FlxObject. - - - - * Stores a reference to the next link in the list. - - - - true - - - - * Clean up memory. - - - - * Private, use recycle instead. - - * A miniature linked list class. - * Useful for optimizing time-critical or highly repetitive tasks! - * See FlxQuadTree for how to use it, IF YOU DARE. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxLinkedList - - - - - - - "__ASSET__:bitmap_flixel_system_GraphicLogoLight" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/preloader/light.png" - - - - - - - "__ASSET__:bitmap_flixel_system_GraphicLogoCorners" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/preloader/corners.png" - - - - - <_buffer> - <_bmpBar> - <_text> - <_logo> - <_logoGlow> - - - * This class is called as soon as the FlxPreloaderBase has finished initializing. - * Override it to draw all your graphics and things - make sure you also override update - * Make sure you call super.create() - - - - * Cleanup your objects! - * Make sure you call super.destroy()! - - - - - - - * Update is called every frame, passing the current percent loaded. Use this to change your loading bar or whatever. - * @param Percent The percentage that the project is loaded - - - - - - - - { MinDisplayTime : 0 } - * Initialize your preloader here. - * - * ```haxe - * super(0, ["test.com", FlxPreloaderBase.LOCAL]); // example of site-locking - * super(10); // example of long delay (10 seconds) - * ``` - - `]]> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * This class is called as soon as the FlxPreloaderBase has finished initializing. - * Override it to draw all your graphics and things - make sure you also override update - * Make sure you call super.create() - - <_HX_SUPER__create set="method" line="31"> - - - * Cleanup your objects! - * Make sure you call super.destroy()! - - <_HX_SUPER__destroy set="method" line="31"> - - - - - - * Update is called every frame, passing the current percent loaded. Use this to change your loading bar or whatever. - * @param Percent The percentage that the project is loaded - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxPreloader.GraphicLogoLight - flixel.system.FlxPreloader.GraphicLogoCorners - flixel.system.FlxPreloader - - - - - - - 0 - * Flag for specifying that you want to add an object to the A list. - - - - 1 - * Flag for specifying that you want to add an object to the B list. - - - - * Controls the granularity of the quad tree. Default is 6 (decent performance on large and small worlds). - - <_min static="1"> - - * Internal, governs and assists with the formation of the tree. - - <_object static="1"> - - * Internal, used to reduce recursive method parameters during object placement and tree formation. - - <_objectLeftEdge static="1"> - - * Internal, used to reduce recursive method parameters during object placement and tree formation. - - <_objectTopEdge static="1"> - - * Internal, used to reduce recursive method parameters during object placement and tree formation. - - <_objectRightEdge static="1"> - - * Internal, used to reduce recursive method parameters during object placement and tree formation. - - <_objectBottomEdge static="1"> - - * Internal, used to reduce recursive method parameters during object placement and tree formation. - - <_list static="1"> - - * Internal, used during tree processing and overlap checks. - - <_useBothLists static="1"> - - * Internal, used during tree processing and overlap checks. - - <_processingCallback static="1"> - - - - - - * Internal, used during tree processing and overlap checks. - - <_notifyCallback static="1"> - - - - - - * Internal, used during tree processing and overlap checks. - - <_iterator static="1"> - - * Internal, used during tree processing and overlap checks. - - <_objectHullX static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_objectHullY static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_objectHullWidth static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_objectHullHeight static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_checkObjectHullX static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_checkObjectHullY static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_checkObjectHullWidth static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_checkObjectHullHeight static="1"> - - * Internal, helpers for comparing actual object-to-object overlap - see overlapNode(). - - <_NUM_CACHED_QUAD_TREES public="1" expr="0" line="222" static="1"> - - 0 - * Pooling mechanism, turn FlxQuadTree into a linked list, when FlxQuadTrees are destroyed, they get added to the list, and when they get recycled they get removed. - - <_cachedTreesHead static="1"> - - - - - - - - - - * Recycle a cached Quad Tree node, or creates a new one if needed. - * @param X The X-coordinate of the point in space. - * @param Y The Y-coordinate of the point in space. - * @param Width Desired width of this node. - * @param Height Desired height of this node. - * @param Parent The parent branch or node. Pass null to create a root. - - - - * Clear cached Quad Tree nodes. You might want to do this when loading new levels (probably not though, no need to clear cache unless you run into memory problems). - - - <_canSubdivide> - - * Whether this branch of the tree can be subdivided or not. - - <_headA> - - * Refers to the internal A and B linked lists, - * which are used to store objects in the leaves. - - <_tailA> - - * Refers to the internal A and B linked lists, - * which are used to store objects in the leaves. - - <_headB> - - * Refers to the internal A and B linked lists, - * which are used to store objects in the leaves. - - <_tailB> - - * Refers to the internal A and B linked lists, - * which are used to store objects in the leaves. - - <_northWestTree> - - * Internal, governs and assists with the formation of the tree. - - <_northEastTree> - - * Internal, governs and assists with the formation of the tree. - - <_southEastTree> - - * Internal, governs and assists with the formation of the tree. - - <_southWestTree> - - * Internal, governs and assists with the formation of the tree. - - <_leftEdge> - - * Internal, governs and assists with the formation of the tree. - - <_rightEdge> - - * Internal, governs and assists with the formation of the tree. - - <_topEdge> - - * Internal, governs and assists with the formation of the tree. - - <_bottomEdge> - - * Internal, governs and assists with the formation of the tree. - - <_halfWidth> - - * Internal, governs and assists with the formation of the tree. - - <_halfHeight> - - * Internal, governs and assists with the formation of the tree. - - <_midpointX> - - * Internal, governs and assists with the formation of the tree. - - <_midpointY> - - * Internal, governs and assists with the formation of the tree. - - - - - - - - - - - - - * Clean up memory. - - - - - - - - - - - - - - - - - - * Load objects and/or groups into the quad tree, and register notify and processing callbacks. - * @param ObjectOrGroup1 Any object that is or extends FlxObject or FlxGroup. - * @param ObjectOrGroup2 Any object that is or extends FlxObject or FlxGroup. If null, the first parameter will be checked against itself. - * @param NotifyCallback A function with the form myFunction(Object1:FlxObject,Object2:FlxObject):void that is called whenever two objects are found to overlap in world space, and either no ProcessCallback is specified, or the ProcessCallback returns true. - * @param ProcessCallback A function with the form myFunction(Object1:FlxObject,Object2:FlxObject):Boolean that is called whenever two objects are found to overlap in world space. The NotifyCallback is only called if this function returns true. See FlxObject.separate(). - - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - * Call this function to add an object to the root of the tree. - * This function will recursively add all group members, but - * not the groups themselves. - * @param ObjectOrGroup FlxObjects are just added, FlxGroups are recursed and their applicable members added accordingly. - * @param List A int flag indicating the list to which you want to add the objects. Options are A_LIST and B_LIST. - - - - * Internal function for recursively navigating and creating the tree - * while adding objects to the appropriate nodes. - - - - * Internal function for recursively adding objects to leaf lists. - - - - * FlxQuadTree's other main function. Call this after adding objects - * using FlxQuadTree.load() to compare the objects that you loaded. - * @return Whether or not any overlaps were found. - - - - * An internal function for comparing an object against the contents of a node. - * @return Whether or not any overlaps were found. - - - - - - - - - - - * Private, use recycle instead. - - * A fairly generic quad tree structure for rapid overlap checks. - * FlxQuadTree is also configured for single or dual list operation. - * You can add items either to its A list or its B list. - * When you do an overlap check, you can compare the A list to itself, - * or the A list against the B list. Handy for different things! - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - - - - - - - * Load objects and/or groups into the quad tree, and register notify and processing callbacks. - * @param ObjectOrGroup1 Any object that is or extends FlxObject or FlxGroup. - * @param ObjectOrGroup2 Any object that is or extends FlxObject or FlxGroup. If null, the first parameter will be checked against itself. - * @param NotifyCallback A function with the form myFunction(Object1:FlxObject,Object2:FlxObject):void that is called whenever two objects are found to overlap in world space, and either no ProcessCallback is specified, or the ProcessCallback returns true. - * @param ProcessCallback A function with the form myFunction(Object1:FlxObject,Object2:FlxObject):Boolean that is called whenever two objects are found to overlap in world space. The NotifyCallback is only called if this function returns true. See FlxObject.separate(). - - <_HX_SUPER__load public="1" set="method" line="31"> - - - - - - - - - - - - - - - - - - - - - flixel.group.FlxTypedGroup.resolveGroup - * Call this function to add an object to the root of the tree. - * This function will recursively add all group members, but - * not the groups themselves. - * @param ObjectOrGroup FlxObjects are just added, FlxGroups are recursed and their applicable members added accordingly. - * @param List A int flag indicating the list to which you want to add the objects. Options are A_LIST and B_LIST. - - <_HX_SUPER__add public="1" set="method" line="31"> - - - - - - - * Internal function for recursively navigating and creating the tree - * while adding objects to the appropriate nodes. - - <_HX_SUPER__addObject set="method" line="31"> - - - * Internal function for recursively adding objects to leaf lists. - - <_HX_SUPER__addToList set="method" line="31"> - - - * FlxQuadTree's other main function. Call this after adding objects - * using FlxQuadTree.load() to compare the objects that you loaded. - * @return Whether or not any overlaps were found. - - <_HX_SUPER__execute public="1" set="method" line="148"> - - - * An internal function for comparing an object against the contents of a node. - * @return Whether or not any overlaps were found. - - <_HX_SUPER__overlapNode set="method" line="148"> - <__interp> - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxQuadTree - - - - - - - * The x position of this sound in world coordinates. - * Only really matters if you are doing proximity/panning stuff. - - - - * The y position of this sound in world coordinates. - * Only really matters if you are doing proximity/panning stuff. - - - - * Whether or not this sound should be automatically destroyed when you switch states. - - - - * The ID3 song name. Defaults to null. Currently only works for streamed sounds. - - - - * The ID3 artist name. Defaults to null. Currently only works for streamed sounds. - - - - * Stores the average wave amplitude of both stereo channels - - - - * Just the amplitude of the left stereo channel - - - - * Just the amplitude of the left stereo channel - - - - * Whether to call `destroy()` when the sound has finished playing. - - - - * Tracker for sound complete callback. If assigned, will be called - * each time when sound reaches its end. - - - - * Pan amount. -1 = full left, 1 = full right. Proximity based panning overrides this. - - - - * Whether or not the sound is currently playing. - - - - * Set volume to a value between 0 and 1 to change how this sound is. - - - - * Set pitch, which also alters the playback speed. Default is 1. - - - - - * The length of the sound in milliseconds. - * @since 4.2.0 - - - - * The sound group this sound belongs to - - - - * Whether or not this sound should loop. - - - - 0 - * In case of looping, the point (in milliseconds) from where to restart the sound when it loops back - * @since 4.1.0 - - - - * At which point to stop playing the sound, in milliseconds. - * If not set / `null`, the sound completes normally. - * @since 4.2.0 - - - - * The tween used to fade this sound's volume in and out (set via `fadeIn()` and `fadeOut()`) - * @since 4.1.0 - - <_sound> - - flixel.system.frontEnds.SoundFrontEnd.load - * Internal tracker for a Flash sound object. - - <_channel> - - * Internal tracker for a Flash sound channel object. - - <_transform> - - * Internal tracker for a Flash sound transform object. - - <_paused> - - * Internal tracker for whether the sound is paused or not (not the same as stopped). - - <_volume> - - * Internal tracker for volume. - - <_time expr="0"> - - 0 - * Internal tracker for sound channel position. - - <_length expr="0"> - - 0 - * Internal tracker for sound length, so that length can still be obtained while a sound is paused, because _sound becomes null. - - <_pitch expr="1.0"> - - 1.0 - * Internal tracker for pitch. - - <_volumeAdjust expr="1.0"> - - 1.0 - * Internal tracker for total volume adjustment. - - <_target> - - * Internal tracker for the sound's "target" (for proximity and panning). - - <_radius> - - * Internal tracker for the maximum effective radius of this sound (for proximity and panning). - - <_proximityPan> - - * Internal tracker for whether to pan the sound left and right. Default is false. - - <_alreadyPaused expr="false"> - - false - * Helper var to prevent the sound from playing after focus was regained when it was already paused. - - - - * An internal function for clearing all the variables used by sounds. - - - - - - - - * Handles fade out, fade in, panning, proximity, and amplitude operations each frame. - - - - - - - - - - - { AutoDestroy : false, Looped : false } - * One of the main setup functions for sounds, this function loads a sound from an embedded MP3. - * - * @param EmbeddedSound An embedded Class object representing an MP3 file. - * @param Looped Whether or not this sound should loop endlessly. - * @param AutoDestroy Whether or not this FlxSound instance should be destroyed when the sound finishes playing. - * Default value is false, but `FlxG.sound.play()` and `FlxG.sound.stream()` will set it to true by default. - * @param OnComplete Called when the sound finished playing - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - - - - - - - - - - { AutoDestroy : false, Looped : false } - * One of the main setup functions for sounds, this function loads a sound from a URL. - * - * @param SoundURL A string representing the URL of the MP3 file you want to play. - * @param Looped Whether or not this sound should loop endlessly. - * @param AutoDestroy Whether or not this FlxSound instance should be destroyed when the sound finishes playing. - * Default value is false, but `FlxG.sound.play()` and `FlxG.sound.stream()` will set it to true by default. - * @param OnComplete Called when the sound finished playing - * @param OnLoad Called when the sound finished loading. - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - - - - - - - - { AutoDestroy : false, Looped : false } - - - - - - - - - - - { Pan : true } - * Call this function if you want this sound's volume to change - * based on distance from a particular FlxObject. - * - * @param X The X position of the sound. - * @param Y The Y position of the sound. - * @param TargetObject The object you want to track. - * @param Radius The maximum distance this sound can travel. - * @param Pan Whether panning should be used in addition to the volume changes. - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - - - - - - - - { StartTime : 0.0, ForceRestart : false } - * Call this function to play the sound - also works on paused sounds. - * - * @param ForceRestart Whether to start the sound over or not. - * Default value is false, meaning if the sound is already playing or was - * paused when you call play(), it will continue playing from its current - * position, NOT start again from the beginning. - * @param StartTime At which point to start playing the sound, in milliseconds. - * @param EndTime At which point to stop playing the sound, in milliseconds. - * If not set / `null`, the sound completes normally. - - - - * Unpause a sound. Only works on sounds that have been paused. - - - - * Call this function to pause this sound. - - - - * Call this function to stop this sound. - - - - - - - - - - - - { To : 0, Duration : 1 } - * Helper function that tweens this sound's volume. - * - * @param Duration The amount of time the fade-out operation should take. - * @param To The volume to tween to, 0 by default. - - - - - - - - - - - - - { To : 1, From : 0, Duration : 1 } - * Helper function that tweens this sound's volume. - * - * @param Duration The amount of time the fade-in operation should take. - * @param From The volume to tween from, 0 by default. - * @param To The volume to tween to, 1 by default. - - - - - - - - * Returns the currently selected "real" volume of the sound (takes fades and proximity into account). - * - * @return The adjusted volume of the sound. - - - - - - - - { Y : 0, X : 0 } - * Helper function to set the coordinates of this object. - * Sound positioning is used in conjunction with proximity/panning. - * - * @param X The new x position - * @param Y The new y position - - - - flixel.system.FlxSoundGroup - * Call after adjusting the volume to update the sound channel's settings. - - - - - - - * An internal helper function used to attempt to start playing - * the sound and populate the _channel variable. - - - - - - - * An internal helper function used to help Flash - * clean up finished sounds or restart looped sounds. - - - - - - - - { resetPosition : true } - * An internal helper function used to help Flash clean up (and potentially re-use) finished sounds. - * Will stop the current sound and destroy the associated SoundChannel, plus, - * any other commands ordered by the passed in parameters. - * - * @param destroySound Whether or not to destroy the sound. If this is true, - * the position and fading will be reset as well. - * @param resetPosition Whether or not to reset the position of the sound. - - - - - - - * Internal event handler for ID3 info (i.e. fetching the song name). - - - - flixel.system.frontEnds.SoundFrontEnd - - - - flixel.system.frontEnds.SoundFrontEnd - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * The FlxSound constructor gets all the variables initialized, but NOT ready to play a sound yet. - - * This is the universal flixel sound object, used for streaming, music, and sound effects. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - [] - * The sounds in this group - - - - * The volume of this group - - - - - - - * Add a sound to this group - * @param sound The sound to add to this group - * @return True if sound was successfully added, false otherwise - - - - - - - * Remove a sound from this group - * @param sound The sound to remove - * @return True if sound was successfully removed, false otherwise - - - - * Call this function to pause all sounds in this group. - * @since 4.3.0 - - - - * Unpauses all sounds in this group. Only works on sounds that have been paused. - * @since 4.3.0 - - - - - - - - - - - { volume : 1 } - * Create a new sound group - * @param volume The initial volume of this group - - * A way of grouping sounds for things such as collective volume control - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Add a sound to this group - * @param sound The sound to add to this group - * @return True if sound was successfully added, false otherwise - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - * Remove a sound from this group - * @param sound The sound to remove - * @return True if sound was successfully removed, false otherwise - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - * Call this function to pause all sounds in this group. - * @since 4.3.0 - - <_HX_SUPER__pause public="1" set="method" line="31"> - - - * Unpauses all sounds in this group. Only works on sounds that have been paused. - * @since 4.3.0 - - <_HX_SUPER__resume public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_volume set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxSoundGroup - - - - - - - * An internal function for clearing all the variables used by sounds. - - <_HX_SUPER__reset set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Handles fade out, fade in, panning, proximity, and amplitude operations each frame. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__kill public="1" set="method" line="31"> - - - - - - - - - { AutoDestroy : false, Looped : false } - * One of the main setup functions for sounds, this function loads a sound from an embedded MP3. - * - * @param EmbeddedSound An embedded Class object representing an MP3 file. - * @param Looped Whether or not this sound should loop endlessly. - * @param AutoDestroy Whether or not this FlxSound instance should be destroyed when the sound finishes playing. - * Default value is false, but `FlxG.sound.play()` and `FlxG.sound.stream()` will set it to true by default. - * @param OnComplete Called when the sound finished playing - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadEmbedded public="1" set="method" line="148"> - - - - - - - - { AutoDestroy : false, Looped : false } - - - - - - - - - - - { AutoDestroy : false, Looped : false } - * One of the main setup functions for sounds, this function loads a sound from a URL. - * - * @param SoundURL A string representing the URL of the MP3 file you want to play. - * @param Looped Whether or not this sound should loop endlessly. - * @param AutoDestroy Whether or not this FlxSound instance should be destroyed when the sound finishes playing. - * Default value is false, but `FlxG.sound.play()` and `FlxG.sound.stream()` will set it to true by default. - * @param OnComplete Called when the sound finished playing - * @param OnLoad Called when the sound finished loading. - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__loadStream public="1" set="method" line="148"> - - - - - - - - - { AutoDestroy : false, Looped : false } - - - - - - - - - { AutoDestroy : false, Looped : false } - - <_HX_SUPER__init set="method" line="148"> - - - - - - - { AutoDestroy : false, Looped : false } - - - - - - - - - - - { Pan : true } - * Call this function if you want this sound's volume to change - * based on distance from a particular FlxObject. - * - * @param X The X position of the sound. - * @param Y The Y position of the sound. - * @param TargetObject The object you want to track. - * @param Radius The maximum distance this sound can travel. - * @param Pan Whether panning should be used in addition to the volume changes. - * @return This FlxSound instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__proximity public="1" set="method" line="148"> - - - - - - - - - { Pan : true } - - - - - - - - - { StartTime : 0.0, ForceRestart : false } - * Call this function to play the sound - also works on paused sounds. - * - * @param ForceRestart Whether to start the sound over or not. - * Default value is false, meaning if the sound is already playing or was - * paused when you call play(), it will continue playing from its current - * position, NOT start again from the beginning. - * @param StartTime At which point to start playing the sound, in milliseconds. - * @param EndTime At which point to stop playing the sound, in milliseconds. - * If not set / `null`, the sound completes normally. - - <_HX_SUPER__play public="1" set="method" line="148"> - - - - - - - { StartTime : 0.0, ForceRestart : false } - - - - * Unpause a sound. Only works on sounds that have been paused. - - <_HX_SUPER__resume public="1" set="method" line="148"> - - - * Call this function to pause this sound. - - <_HX_SUPER__pause public="1" set="method" line="148"> - - - - - <_HX_SUPER__volumeTween set="method" line="31"> - - - - - - flixel.system.FlxSoundGroup - * Call after adjusting the volume to update the sound channel's settings. - - <_HX_SUPER__updateTransform set="method" line="31"> - - - - - - * An internal helper function used to attempt to start playing - * the sound and populate the _channel variable. - - <_HX_SUPER__startSound set="method" line="31"> - - - - - - - - - * An internal helper function used to help Flash - * clean up finished sounds or restart looped sounds. - - <_HX_SUPER__stopped set="method" line="31"> - - - - - - - - - - { resetPosition : true } - * An internal helper function used to help Flash clean up (and potentially re-use) finished sounds. - * Will stop the current sound and destroy the associated SoundChannel, plus, - * any other commands ordered by the passed in parameters. - * - * @param destroySound Whether or not to destroy the sound. If this is true, - * the position and fading will be reset as well. - * @param resetPosition Whether or not to reset the position of the sound. - - <_HX_SUPER__cleanup set="method" line="31"> - - - - - - { resetPosition : true } - - - - - - - * Internal event handler for ID3 info (i.e. fetching the song name). - - <_HX_SUPER__gotID3 set="method" line="31"> - - - - - - flixel.system.frontEnds.SoundFrontEnd - - <_HX_SUPER__onFocus set="method" line="31"> - - - flixel.system.frontEnds.SoundFrontEnd - - <_HX_SUPER__onFocusLost set="method" line="31"> - - - - - <_HX_SUPER__set_group set="method" line="148"> - - - - - - - - <_HX_SUPER__set_volume set="method" line="148"> - - - - - - - - <_HX_SUPER__set_pitch set="method" line="148"> - - - - - - - - <_HX_SUPER__set_time set="method" line="148"> - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxSound - - - - - - - - false - * @since 4.8.0 - - <_sprite> - <_gfx> - <_text> - <_times> - <_colors> - <_functions> - <_curPart expr="0"> - - 0 - - <_cachedBgColor> - <_cachedTimestep> - <_cachedAutoPause> - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__onResize public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__timerCallback set="method" line="31"> - - - - - <_HX_SUPER__drawGreen set="method" line="31"> - - <_HX_SUPER__drawYellow set="method" line="31"> - - <_HX_SUPER__drawRed set="method" line="31"> - - <_HX_SUPER__drawBlue set="method" line="31"> - - <_HX_SUPER__drawLightBlue set="method" line="31"> - - - - - <_HX_SUPER__onComplete set="method" line="31"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxSplash - - - - - - - * Formats the version in the format "HaxeFlixel MAJOR.MINOR.PATCH-COMMIT_SHA", - * e.g. HaxeFlixel 3.0.4. - * If this is a dev version, the git sha is included. - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.FlxVersion - - - - - - - - - - - - { Size : 12, Color : FlxColor.WHITE, Y : 0, X : 0 } - - - - - - - - - - - { Size : 12, Color : FlxColor.WHITE, Y : 0, X : 0 } - - - - - - - flixel.system - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.DebuggerUtil - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicFlixel" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/flixel.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicDrawDebug" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/drawDebug.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicLog" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/log.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicStats" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/stats.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicWatch" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/watch.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicBitmapLog" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/bitmapLog.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicConsole" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/console.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicArrowLeft" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/arrowLeft.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicArrowRight" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/arrowRight.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicCloseButton" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/close.png" - - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicInteractive" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/interactive.png" - - - - - - - * Container for the new debugger overlay. Most of the functionality is in the debug folder widgets, - * but this class instantiates the widgets and handles their basic formatting and arrangement. - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.FlxDebugger.GraphicFlixel - flixel.system.debug.FlxDebugger.GraphicDrawDebug - flixel.system.debug.FlxDebugger.GraphicLog - flixel.system.debug.FlxDebugger.GraphicStats - flixel.system.debug.FlxDebugger.GraphicWatch - flixel.system.debug.FlxDebugger.GraphicBitmapLog - flixel.system.debug.FlxDebugger.GraphicConsole - flixel.system.debug.FlxDebugger.GraphicArrowLeft - flixel.system.debug.FlxDebugger.GraphicArrowRight - flixel.system.debug.FlxDebugger.GraphicCloseButton - flixel.system.debug.FlxDebugger.GraphicInteractive - flixel.system.debug.FlxDebugger - flixel.system.debug.FlxDebugger.FlxDebuggerLayout - - - - <_tooltips expr="[]" line="18" static="1"> - - [] - - <_container static="1"> - - - - - - - - - - - - - - * Manages tooltips to be used within the debugger. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 0xFF3A3A3A - * The background color of all tooltips. - - - - 0.8 - * Alpha applied to the tooltips text. - - - - 10 - * How many pixels the tooltip should be away from the target in the x axis. - - - - 10 - * How many pixels the tooltip should be away from the target in the y axis. - - <_width> - - * Width of the tooltip. Using Sprite.width is super unreliable for some reason! - - <_height> - - * Height of the tooltip. Using Sprite.height is super unreliable for some reason! - - <_background> - - * Main elements - - <_shadow> - - - * Texfield used by the tooltip to display text. If you change anything in the textfield, - * be sure to call the proper methods of the tooltip to ensure it keeps a correct size, etc. - * If you just want to change the text of the tooltip, use the method `setText()` instead, since - * it takes care of properly resizing and positioning the tooltip after the text changes. - - - - * The element the tooltip is monitoring. - - - - * Maximum size allowed for the tooltip. A negative value (or zero) makes - * the tooltip auto-adjust its size to properly house its text. - - - - * Clean up memory. - - - - - - - - * Resize the tooltip. Subject to pre-specified minimums, maximums, and bounding rectangles. - * - * @param Width How wide to make the tooltip. If zero is specified, the tooltip will adjust its size to properly accommodate the text. - * @param Height How tall to make the tooltip. If zero is specified, the tooltip will adjust its size to properly accommodate the text. - - - - - - - - * Change the position of the tooltip. - * - * @param X Desired X position of top left corner of the tooltip. - * @param Y Desired Y position of top left corner of the tooltip. - - - - - - - - - - - * Change the text of the tooltip. - * - * @param Text Text to be used in the tooltip. - - - - - - - * Update the Flash shapes to match the new size, and reposition the header, shadow, and handle accordingly. - - - - - - - - - - - - - - - { height : 0, width : 0 } - * Creates a new tooltip. - * - * @param target Element the tooltip will monitor. If the tooltip is being used in "stand alone" fashion, i.e. not monitoring any element, then use `null` as the target. - * @param text Text displayed with this tooltip. - * @param width Width of the tooltip. If a negative value (or zero) is specified, the tooltip will adjust its width to properly accommodate the text. - * @param height Height of the tooltip. If a negative value (or zero) is specified, the tooltip will adjust its height to properly accommodate the text. - - * A generic, Flash-based tooltip class, created for use in FlxDebugger. - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.Tooltip - flixel.system.debug.Tooltip.TooltipOverlay - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Resize the tooltip. Subject to pre-specified minimums, maximums, and bounding rectangles. - * - * @param Width How wide to make the tooltip. If zero is specified, the tooltip will adjust its size to properly accommodate the text. - * @param Height How tall to make the tooltip. If zero is specified, the tooltip will adjust its size to properly accommodate the text. - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - - - * Change the position of the tooltip. - * - * @param X Desired X position of top left corner of the tooltip. - * @param Y Desired Y position of top left corner of the tooltip. - - <_HX_SUPER__reposition public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__setVisible public="1" set="method" line="31"> - - - - - - - - - * Change the text of the tooltip. - * - * @param Text Text to be used in the tooltip. - - <_HX_SUPER__setText public="1" set="method" line="31"> - - - - - <_HX_SUPER__toggleVisible public="1" set="method" line="31"> - - <_HX_SUPER__update public="1" set="method" line="31"> - - - * Update the Flash shapes to match the new size, and reposition the header, shadow, and handle accordingly. - - <_HX_SUPER__updateSize set="method" line="31"> - - <_HX_SUPER__ensureOnScreen set="method" line="31"> - - - - - <_HX_SUPER__handleMouseEvents set="method" line="31"> - - - - <__interp> - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.Tooltip - flixel.system.debug.Tooltip.TooltipOverlay - - - - - - - "__ASSET__:bitmap_flixel_system_debug_GraphicWindowHandle" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/windowHandle.png" - - - - - - - 0xDD5F5F5F - * The background color of the window. - - - - 0xBB000000 - - - - 0.8 - - - - 15 - - - - 0 - * How many windows there are currently in total. - - - - - <_width> - - * Width of the window. Using Sprite.width is super unreliable for some reason! - - <_height> - - * Height of the window. Using Sprite.height is super unreliable for some reason! - - <_bounds> - - * Controls where the window is allowed to be positioned. - - <_background> - - * Window elements - - <_header> - <_shadow> - <_title> - <_handle> - <_icon> - <_closeButton> - <_overHeader> - - * Interaction helpers. - - <_overHandle> - <_drag> - <_dragging> - <_resizing> - <_resizable> - <_closable> - <_alwaysOnTop> - <_id> - - * The ID of this window. - - - - * Clean up memory. - - - - - - - - * Resize the window. Subject to pre-specified minimums, maximums, and bounding rectangles. - * - * @param Width How wide to make the window. - * @param Height How tall to make the window. - - - - - - - - * Change the position of the window. Subject to pre-specified bounding rectangles. - * - * @param X Desired X position of top left corner of the window. - * @param Y Desired Y position of top left corner of the window. - - - - - - - - - - - - - - - - - - - * Used to set up basic mouse listeners.. - - - - - - - * Mouse movement handler. Figures out if mouse is over handle or header bar or what. - - - - - - - * Figure out if window is being repositioned (clicked on header) or resized (clicked on handle). - - - - - - - * User let go of header bar or handler (or nothing), so turn off drag and resize behaviors. - - - - * Keep the window within the pre-specified bounding rectangle. - - - - * Update the Flash shapes to match the new size, and reposition the header, shadow, and handle accordingly. - - - - - - - - - - - - - - - { AlwaysOnTop : true, Closable : false, Resizable : true, Height : 0, Width : 0 } - * Creates a new window object. This Flash-based class is mainly (only?) used by FlxDebugger. - * - * @param Title The name of the window, displayed in the header bar. - * @param Icon The icon to use for the window header. - * @param Width The initial width of the window. - * @param Height The initial height of the window. - * @param Resizable Whether you can change the size of the window with a drag handle. - * @param Bounds A rectangle indicating the valid screen area for the window. - * @param Closable Whether this window has a close button that removes the window. - * @param AlwaysOnTop Whether this window should be forcibly put in front of any other window when clicked. - - * A generic, Flash-based window class, created for use in FlxDebugger. - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Resize the window. Subject to pre-specified minimums, maximums, and bounding rectangles. - * - * @param Width How wide to make the window. - * @param Height How tall to make the window. - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - - - * Change the position of the window. Subject to pre-specified bounding rectangles. - * - * @param X Desired X position of top left corner of the window. - * @param Y Desired Y position of top left corner of the window. - - <_HX_SUPER__reposition public="1" set="method" line="31"> - - - - - - - - - <_HX_SUPER__updateBounds public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__setVisible public="1" set="method" line="31"> - - - - - <_HX_SUPER__toggleVisible public="1" set="method" line="31"> - - <_HX_SUPER__loadSaveData set="method" line="31"> - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - * Used to set up basic mouse listeners.. - - <_HX_SUPER__init set="method" line="31"> - - - - - - - - - * Mouse movement handler. Figures out if mouse is over handle or header bar or what. - - <_HX_SUPER__onMouseMove set="method" line="31"> - - - - - - - - - * Figure out if window is being repositioned (clicked on header) or resized (clicked on handle). - - <_HX_SUPER__onMouseDown set="method" line="31"> - - - - - - - - - * User let go of header bar or handler (or nothing), so turn off drag and resize behaviors. - - <_HX_SUPER__onMouseUp set="method" line="31"> - - - - - - * Keep the window within the pre-specified bounding rectangle. - - <_HX_SUPER__bound public="1" set="method" line="31"> - - - * Update the Flash shapes to match the new size, and reposition the header, shadow, and handle accordingly. - - <_HX_SUPER__updateSize set="method" line="31"> - - <_HX_SUPER__close public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.Window.GraphicWindowHandle - flixel.system.debug.Window - - - - - - "Entry Value" - - - - "Entry Type" - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__getTextUntilCaret set="method" line="148"> - - <_HX_SUPER__getCaretIndex set="method" line="148"> - - - - - <_HX_SUPER__onKeyUp set="method" line="148"> - - - - - - - - - <_HX_SUPER__invokeCompletion set="method" line="148"> - - - - - - <_HX_SUPER__getGlobals set="method" line="148"> - - <_HX_SUPER__getCharXPosition set="method" line="148"> - - - - - - <_HX_SUPER__getCompletedText set="method" line="148"> - - - - - - - - - <_HX_SUPER__completed set="method" line="148"> - - - - - - - - <_HX_SUPER__selectionChanged set="method" line="148"> - - - - - - - - <_HX_SUPER__getReadableType set="method" line="148"> - - - - - <_HX_SUPER__completionClosed set="method" line="148"> - - - - - <_HX_SUPER__getPathBeforeDot set="method" line="148"> - - - - - - - - <_HX_SUPER__getWordAfterDot set="method" line="148"> - - - - - - - - <_HX_SUPER__getLastWord set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.completion.CompletionHandler - - - - - - - - - - - - - - - - - - [] - - - - - 0 - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - closer to the filter) have a higher priority]]> - - - - - - - - * Custom startsWith() that ignores leading underscores. - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 150 - - - - 20 - - - - 0xFF5F5F5F - - - - 0xFF6D6D6D - - - - 4 - - - - - - false - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__initBitmapDatas set="method" line="148"> - - - - - <_HX_SUPER__setItem public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__set_selected set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.completion.CompletionListEntry - - - - - - - 0xFF444444 - - - - 0xFF222222 - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - <_HX_SUPER__updateHandle public="1" set="method" line="148"> - - - - - - <__interp> - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.completion.CompletionListScrollBar - - - - - - - - - - <_HX_SUPER__show public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__setY public="1" set="method" line="148"> - - - - - <_HX_SUPER__close public="1" set="method" line="148"> - - - - - <_HX_SUPER__createPopupEntries set="method" line="148"> - - - - - <_HX_SUPER__createScrollBar set="method" line="148"> - - - - - <_HX_SUPER__onKeyDown set="method" line="148"> - - - - - - - - <_HX_SUPER__updateIndices set="method" line="148"> - - - - - - - - <_HX_SUPER__bound set="method" line="148"> - - - - - <_HX_SUPER__updateEntries set="method" line="148"> - - <_HX_SUPER__updateLabels set="method" line="148"> - - <_HX_SUPER__updateSelectedItem set="method" line="148"> - - - - - <_HX_SUPER__setItems set="method" line="148"> - - - - - - - - <_HX_SUPER__filterItems set="method" line="148"> - - - - - - - - - - closer to the filter) have a higher priority]]> - - <_HX_SUPER__sortItems set="method" line="148"> - - - - - - - - - - - * Custom startsWith() that ignores leading underscores. - - <_HX_SUPER__startsWithExt set="method" line="148"> - - - - - - - - - <_HX_SUPER__set_filter set="method" line="148"> - - - - <__interp> - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.completion.CompletionList - - - - - - 50 - - - - - - 0 - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__getPreviousCommand public="1" set="method" line="148"> - - <_HX_SUPER__getNextCommand public="1" set="method" line="148"> - - - - - <_HX_SUPER__addCommand public="1" set="method" line="148"> - - - - - <_HX_SUPER__clear public="1" set="method" line="148"> - - <_HX_SUPER__get_isEmpty set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.console.ConsoleHistory - - - - - - * The hscript parser to make strings into haxe code. - - - - * The custom hscript interpreter to run the haxe code from the parser. - - - - * Sets up the hscript parser and interpreter. - - - - - - - * Converts the input string into its AST form to be executed. - * - * @param Input The user's input command. - * @return The parsed out AST. - - - - - - - * Parses and runs the input command. - * - * @param Input The user's input command. - * @return Whatever the input code evaluates to. - - - - - - - * Runs the input expression. - * @param Parsed The parsed form of the user's input command. - * @return Whatever the input code evaluates to. - - - - - - - - * Register a new object to use in any command. - * - * @param ObjectAlias The name with which you want to access the object. - * @param AnyObject The object to register. - - - - - - - - * Register a new function to use in any command. - * - * @param FunctionAlias The name with which you want to access the function. - * @param Function The function to register. - - - - - - - - - - - - - - - * Shortcut to log a text with the Console LogStyle. - * - * @param Text The text to log. - - * A set of helper functions used by the console. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - [] - - - - - - - - - - - - [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - false - - - - true - - - - false - - - - false - - - - [] - - <__instanceFields expr="[]"> - - [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { rethrow : false } - - - - - - - - - - - - { doException : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * hscript doesn't use property access by default... have to make our own. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.console.ConsoleUtil - flixel.system.debug.console.ConsoleUtil.Interp - - - - - - <_HX_SUPER__getGlobals public="1" set="method" line="148"> - - - - - - <_HX_SUPER__get set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set set="method" line="148"> - - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.console.ConsoleUtil - flixel.system.debug.console.ConsoleUtil.Interp - - - - - - - - new FlxTypedGroup() - - - - new FlxPoint() - - - - false - - - - false - - - - false - - - - true - * Control if an outline should be drawn on selected elements. - * Tools can set this property to `false` if they want to draw custom - * selection marks, for instance. - - <_container> - <_customCursor> - <_tools expr="[]"> - - [] - - <_turn expr="2"> - - 2 - - <_keysDown expr="new Map()"> - - - - - new Map() - - <_keysUp expr="new Map()"> - - - - - new Map() - - <_wasMouseVisible> - <_wasUsingSystemCursor> - <_debuggerInteraction expr="false"> - - false - - <_flixelPointer expr="new FlxPointer()"> - - new FlxPointer() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Add a new tool to the interaction system. - * - * Any tool added to the interaction system must extend the class - * `flixel.system.debug.interaction.tools.Tool`. The class contains several methods - * that can be used to provide new funcionalities to the interaction, or they can be - * overridden to alter existing behavior. For instance, tools can draw things on the - * screen, they can be activated when the user clicks a button, and so on. Check - * the classes in the package `flixel.system.debug.interaction.tools` for examples. - * - * @param tool instance of a tool that will be added to the interaction system. - - - - * Clean up memory. - - - - - - * Called after the game state has been drawn. - - - - - - - - - * Obtain a reference to a tool that has been added to the interaction system and is - * available for use. This method can be used to access information provided by any - * tool in the system, or to change their behavior. - * - * @param className name of the class to be fetched, e.g. `flixel.system.debug.interaction.tools.Pointer`. - * @return Tool reference to the first tool found whose type matches the class name provided. If no tool is found, `null` is returned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Informs whether the interactive debug is in use or not. Usage is defined - * as the interactive debug being visible and one of its tools is selected/active. - * - * @return `true` if the interactive debug is visible and one of its tools is selected/active. - - - - - - - - - - - - - - - flixel.group.FlxTypedGroup - * Find all items within an area. In order to improve performance and reduce temporary allocations, - * the method has no return, you must pass an array where items will be placed. The method decides - * if an item is within the searching area or not by checking if the item's hitbox (obtained from - * `getHitbox()`) overlaps the area parameter. - * - * @param items array where the method will place all found items. Any previous content in the array will be preserved. - * @param members array where the method will recursively search for items. - * @param area a rectangle that describes the area where the method should search within. - - - - - - * Adds a new functionality to Flixel debugger that allows any object - * on the screen to be dragged, moved or deleted while the game is - * still running. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__handleDebuggerVisibilityChanged set="method" line="31"> - - - - - <_HX_SUPER__updateMouse set="method" line="31"> - - - - - - - - <_HX_SUPER__handleMouseClick set="method" line="31"> - - - - - - - - <_HX_SUPER__belongsToDebugger set="method" line="148"> - - - - - - - - <_HX_SUPER__handleMouseInDebugger set="method" line="31"> - - - - - - - - <_HX_SUPER__handleKeyEvent set="method" line="31"> - - - - - <_HX_SUPER__countToolsWithUIButton set="method" line="148"> - - - - - - * Add a new tool to the interaction system. - * - * Any tool added to the interaction system must extend the class - * `flixel.system.debug.interaction.tools.Tool`. The class contains several methods - * that can be used to provide new funcionalities to the interaction, or they can be - * overridden to alter existing behavior. For instance, tools can draw things on the - * screen, they can be activated when the user clicks a button, and so on. Check - * the classes in the package `flixel.system.debug.interaction.tools` for examples. - * - * @param tool instance of a tool that will be added to the interaction system. - - <_HX_SUPER__addTool public="1" set="method" line="31"> - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__isActive public="1" set="method" line="148"> - - <_HX_SUPER__update public="1" set="method" line="31"> - - - * Called after the game state has been drawn. - - <_HX_SUPER__postDraw set="method" line="31"> - - <_HX_SUPER__getDebugGraphics public="1" set="method" line="148"> - - <_HX_SUPER__drawItemsSelection set="method" line="31"> - - - - - - * Obtain a reference to a tool that has been added to the interaction system and is - * available for use. This method can be used to access information provided by any - * tool in the system, or to change their behavior. - * - * @param className name of the class to be fetched, e.g. `flixel.system.debug.interaction.tools.Pointer`. - * @return Tool reference to the first tool found whose type matches the class name provided. If no tool is found, `null` is returned. - - <_HX_SUPER__getTool public="1" set="method" line="148"> - - - - - <_HX_SUPER__toggleVisible public="1" set="method" line="31"> - - - - - - <_HX_SUPER__registerCustomCursor public="1" set="method" line="31"> - - - - - - <_HX_SUPER__updateCustomCursors public="1" set="method" line="31"> - - <_HX_SUPER__saveSystemCursorInfo set="method" line="31"> - - <_HX_SUPER__restoreSystemCursor set="method" line="31"> - - - - - <_HX_SUPER__setActiveTool public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__setSystemCursorVisibility set="method" line="31"> - - - - - - - - <_HX_SUPER__setToolsCursorVisibility set="method" line="31"> - - - - - <_HX_SUPER__clearSelection public="1" set="method" line="31"> - - - - - <_HX_SUPER__keyPressed public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__keyJustPressed public="1" set="method" line="148"> - - - - - - * Informs whether the interactive debug is in use or not. Usage is defined - * as the interactive debug being visible and one of its tools is selected/active. - * - * @return `true` if the interactive debug is visible and one of its tools is selected/active. - - <_HX_SUPER__isInUse public="1" set="method" line="148"> - - - - - - - <_HX_SUPER__findItemsWithinState public="1" set="method" line="31"> - - - - - - - - - - - - - flixel.group.FlxTypedGroup - * Find all items within an area. In order to improve performance and reduce temporary allocations, - * the method has no return, you must pass an array where items will be placed. The method decides - * if an item is within the searching area or not by checking if the item's hitbox (obtained from - * `getHitbox()`) overlaps the area parameter. - * - * @param items array where the method will place all found items. Any previous content in the array will be preserved. - * @param members array where the method will recursively search for items. - * @param area a rectangle that describes the area where the method should search within. - - <_HX_SUPER__findItemsWithinArea public="1" set="method" line="31"> - - - - - - <__interp> - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.Interaction - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicEraserTool" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/eraser.png" - - - - - - - - - - "" - - <_name expr=""(Unknown tool)""> - - "(Unknown tool)" - - <_shortcut> - <_brain> - - - - - - - - - - - - - - - - - - - - * Set the default icon for the tool. The default icon is used when - * the tool is selected in the interaction window toolbar. Tools - * can have more than one cursor, e.g. a custom cursor to indicate - * that a specific action is happening. Use `setCursorInUse()` to - * learn more about custom cursors. - - - - - - - * Make the tool use a custom cursor that it is not its default one. - * This is particularly useful to indicate to users that a particular - * action of the tool is happening, e.g. rotating something. - * Any custom cursor to be used must be previously registed via - * `Interaction#registerCustomCursor()`. - * - * @param customCursorName Name of the custom cursor that will be used from now on for the tool. If an empty string is informed, the tool's default icon (informed via `setCursor()`) will be used. - - - - * Make the tool use its default cursor, which was informed via `setCursor()`. - - - - - * The base class of all tools in the interactive debug. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - { remove : false } - - - - - - - - * A tool to delete items from the screen. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__init public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__activate public="1" set="method" line="31"> - - - - - <_HX_SUPER__doDeletion set="method" line="31"> - - - - - - - - - - { remove : false } - - <_HX_SUPER__findAndDelete set="method" line="31"> - - - - - - { remove : false } - - - - - - - <_HX_SUPER__removeFromMemory set="method" line="31"> - - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.tools.Eraser.GraphicEraserTool - flixel.system.debug.interaction.tools.Eraser - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicMoverTool" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/mover.png" - - - - - <_dragging expr="false"> - - false - - <_lastCursorPosition> - - - - - - - - - - * A tool to move selected items. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__init public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__stopDragging set="method" line="31"> - - <_HX_SUPER__startDragging set="method" line="31"> - - <_HX_SUPER__doDragging set="method" line="31"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.tools.Mover.GraphicMoverTool - flixel.system.debug.interaction.tools.Mover - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicCursorCross" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursorCross.png" - - - - - <_selectionStartPoint expr="new FlxPoint()"> - - new FlxPoint() - - <_selectionEndPoint expr="new FlxPoint()"> - - new FlxPoint() - - <_selectionHappening expr="false"> - - false - - <_selectionCancelled expr="false"> - - false - - <_selectionArea expr="new FlxRect()"> - - new FlxRect() - - <_itemsInSelectionArea expr="[]"> - - [] - - - - - - - - - - * Start a selection area. A selection area is a rectangular shaped area - * whose boundaries will be used to select game elements. - - - - * Cancel any selection activity that is happening, removing the selection rectangle from the screen. - * Any item within the (canceled) selection area will be ignored. If you want to stop the selection - * and actually process the action/items, use `stopSelection()`. - - - - - - - { findItems : true } - * Stop any selection activity that is happening. - * - * @param findItems If `true` (default), all items within the (stopped) selection area will be included in the list of selected items of the tool. - - - - * We register the current selection to the console for easy interaction. - - - - - - - - * A tool to use the mouse cursor to select game elements. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__init public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__calculateSelectionArea set="method" line="31"> - - - * Start a selection area. A selection area is a rectangular shaped area - * whose boundaries will be used to select game elements. - - <_HX_SUPER__startSelection public="1" set="method" line="31"> - - - * Cancel any selection activity that is happening, removing the selection rectangle from the screen. - * Any item within the (canceled) selection area will be ignored. If you want to stop the selection - * and actually process the action/items, use `stopSelection()`. - - <_HX_SUPER__cancelSelection public="1" set="method" line="31"> - - - - - - { findItems : true } - * Stop any selection activity that is happening. - * - * @param findItems If `true` (default), all items within the (stopped) selection area will be included in the list of selected items of the tool. - - <_HX_SUPER__stopSelection public="1" set="method" line="31"> - - - - - { findItems : true } - - - - * We register the current selection to the console for easy interaction. - - <_HX_SUPER__updateConsoleSelection set="method" line="148"> - - - - - <_HX_SUPER__handleItemAddition set="method" line="31"> - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.tools.Pointer.GraphicCursorCross - flixel.system.debug.interaction.tools.Pointer - - - - - - - - - <_HX_SUPER__init public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__activate public="1" set="method" line="31"> - - <_HX_SUPER__deactivate public="1" set="method" line="31"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - <_HX_SUPER__isActive public="1" set="method" line="148"> - - - - - <_HX_SUPER__setButton set="method" line="31"> - - - - - - - - - * Set the default icon for the tool. The default icon is used when - * the tool is selected in the interaction window toolbar. Tools - * can have more than one cursor, e.g. a custom cursor to indicate - * that a specific action is happening. Use `setCursorInUse()` to - * learn more about custom cursors. - - <_HX_SUPER__setCursor set="method" line="31"> - - - - - - - - - * Make the tool use a custom cursor that it is not its default one. - * This is particularly useful to indicate to users that a particular - * action of the tool is happening, e.g. rotating something. - * Any custom cursor to be used must be previously registed via - * `Interaction#registerCustomCursor()`. - * - * @param customCursorName Name of the custom cursor that will be used from now on for the tool. If an empty string is informed, the tool's default icon (informed via `setCursor()`) will be used. - - <_HX_SUPER__setCursorInUse set="method" line="31"> - - - - - - * Make the tool use its default cursor, which was informed via `setCursor()`. - - <_HX_SUPER__useDefaultCursor set="method" line="31"> - - <_HX_SUPER__onButtonClicked set="method" line="31"> - - <_HX_SUPER__getName public="1" set="method" line="148"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.tools.Tool - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformTool" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/transform.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformCursorDefault" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursorCross.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformCursorScaleY" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursors/transformScaleY.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformCursorScaleX" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursors/transformScaleX.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformCursorScaleXY" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursors/transformScaleXY.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_interaction_tools_GraphicTransformCursorRotate" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/cursors/transformRotate.png" - - - - - - - 5.0 - - - - 3.0 - - - - 5.0 - - - - 10.0 - - - - "transformRotate" - - - - "transformScaleX" - - - - "transformScaleY" - - - - "transformScaleXY" - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - <_actionTargetStartScale expr="new FlxPoint()"> - - new FlxPoint() - - <_actionTargetStartAngle> - <_actionStartPoint expr="new FlxPoint()"> - - new FlxPoint() - - <_actionHappening> - <_actionMarker> - <_actionScaleDirection expr="new FlxPoint()"> - - new FlxPoint() - - <_tooltip> - <_markers expr="[]"> - - [] - - <_target> - <_targetArea expr="new FlxRect()"> - - new FlxRect() - - <_mouseCursor expr="new FlxPoint()"> - - new FlxPoint() - - - - - - - - - - - - * Start an interaction with a marker. Depending on the marker being used, the interaction - * can be to resize or rotate something. - - - - * Stop any interaction activity that is happening with any marker. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * A tool to scale and rotate selected game elements. - * - * @author Fernando Bevilacqua (dovyski@gmail.com) - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__init public="1" set="method" line="148"> - - - - - <_HX_SUPER__updateTargetArea set="method" line="31"> - - - - - - * Start an interaction with a marker. Depending on the marker being used, the interaction - * can be to resize or rotate something. - - <_HX_SUPER__startAction set="method" line="31"> - - - - - - * Stop any interaction activity that is happening with any marker. - - <_HX_SUPER__stopAction set="method" line="31"> - - - - - <_HX_SUPER__getCursorNameByMarker set="method" line="148"> - - - - - <_HX_SUPER__handleInteractionsWithMarkersUI set="method" line="31"> - - - - - <_HX_SUPER__formatFloat set="method" line="148"> - - - - - - - - <_HX_SUPER__showTooltip set="method" line="31"> - - - - - <_HX_SUPER__updateScaleActionDirection set="method" line="31"> - - <_HX_SUPER__updateScaleAction set="method" line="31"> - - <_HX_SUPER__updateRotateAction set="method" line="31"> - - <_HX_SUPER__updateAction set="method" line="31"> - - <_HX_SUPER__updateMarkersPosition set="method" line="31"> - - - - - - <_HX_SUPER__updateMarkersRotation set="method" line="31"> - - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__drawTargetAreaOutline set="method" line="31"> - - - - - - - - <_HX_SUPER__drawMarkers set="method" line="31"> - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__activate public="1" set="method" line="31"> - - <_HX_SUPER__deactivate public="1" set="method" line="31"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.interaction.tools.Transform.GraphicTransformTool - flixel.system.debug.interaction.tools.Transform.GraphicTransformCursorDefault - flixel.system.debug.interaction.tools.Transform.GraphicTransformCursorScaleY - flixel.system.debug.interaction.tools.Transform.GraphicTransformCursorScaleX - flixel.system.debug.interaction.tools.Transform.GraphicTransformCursorScaleXY - flixel.system.debug.interaction.tools.Transform.GraphicTransformCursorRotate - flixel.system.debug.interaction.tools.Transform - - - - - - new LogStyle() - - - - new LogStyle("[WARNING] ", "D9F85C", 12, false, false, false, "flixel/sounds/beep", true) - - - - new LogStyle("[ERROR] ", "FF8888", 12, false, false, false, "flixel/sounds/beep", true) - - - - new LogStyle("[NOTICE] ", "5CF878", 12, false) - - - - ", "5A96FA", 12, false)]]> - - - - * A prefix which is always attached to the start of the logged data. - - - - - - - - - * A sound to be played when this LogStyle is used. - - - - * Whether the console should be forced to open when this LogStyle is used. - - - - * A callback function that is called when this LogStyle is used. - - - - - - - - - - - - - - - { OpenConsole : false, Underlined : false, Italic : false, Bold : false, Size : 12, Color : "FFFFFF", Prefix : "" } - * Create a new LogStyle to be used in conjunction with FlxG.log.advanced() - * - * @param Prefix A prefix which is always attached to the start of the logged data. - * @param Color The text color. - * @param Size The text size. - * @param Bold Whether the text is bold or not. - * @param Italic Whether the text is italic or not. - * @param Underlined Whether the text is underlined or not. - * @param ErrorSound A sound to be played when this LogStyle is used. - * @param OpenConsole Whether the console should be forced to open when this LogStyle is used. - * @param CallbackFunction A callback function that is called when this LogStyle is used. - - * A class that allows you to create a custom style for FlxG.log.advanced(). - * Also used internally for the pre-defined styles. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.log.LogStyle - - - - - - - "__ASSET__:bitmap_flixel_system_debug_stats_GraphicMinimizeButton" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/minimize.png" - - - - - - - "__ASSET__:bitmap_flixel_system_debug_stats_GraphicMaximizeButton" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "assets/images/debugger/buttons/maximize.png" - - - - - <__defaultTextFormat static="1"> - - - - <__missingFontWarning expr="new Map()" line="128" static="1"> - - - - - - new Map() - - - - - - When set to `true` and the text field is not in focus, Flash Player - highlights the selection in the text field in gray. When set to - `false` and the text field is not in focus, Flash Player does not - highlight the selection in the text field. - - @default false - - - - Controls automatic sizing and alignment of text fields. Acceptable values - for the `TextFieldAutoSize` constants: - `TextFieldAutoSize.NONE`(the default), - `TextFieldAutoSize.LEFT`, `TextFieldAutoSize.RIGHT`, - and `TextFieldAutoSize.CENTER`. - - If `autoSize` is set to `TextFieldAutoSize.NONE` - (the default) no resizing occurs. - - If `autoSize` is set to `TextFieldAutoSize.LEFT`, - the text is treated as left-justified text, meaning that the left margin - of the text field remains fixed and any resizing of a single line of the - text field is on the right margin. If the text includes a line break(for - example, `"\n"` or `"\r"`), the bottom is also - resized to fit the next line of text. If `wordWrap` is also set - to `true`, only the bottom of the text field is resized and the - right side remains fixed. - - If `autoSize` is set to - `TextFieldAutoSize.RIGHT`, the text is treated as - right-justified text, meaning that the right margin of the text field - remains fixed and any resizing of a single line of the text field is on - the left margin. If the text includes a line break(for example, - `"\n" or "\r")`, the bottom is also resized to fit the next - line of text. If `wordWrap` is also set to `true`, - only the bottom of the text field is resized and the left side remains - fixed. - - If `autoSize` is set to - `TextFieldAutoSize.CENTER`, the text is treated as - center-justified text, meaning that any resizing of a single line of the - text field is equally distributed to both the right and left margins. If - the text includes a line break(for example, `"\n"` or - `"\r"`), the bottom is also resized to fit the next line of - text. If `wordWrap` is also set to `true`, only the - bottom of the text field is resized and the left and right sides remain - fixed. - - @throws ArgumentError The `autoSize` specified is not a member - of openfl.text.TextFieldAutoSize. - - - - Specifies whether the text field has a background fill. If - `true`, the text field has a background fill. If - `false`, the text field has no background fill. Use the - `backgroundColor` property to set the background color of a - text field. - - @default false - - - - The color of the text field background. The default value is - `0xFFFFFF`(white). This property can be retrieved or set, even - if there currently is no background, but the color is visible only if the - text field has the `background` property set to - `true`. - - - - Specifies whether the text field has a border. If `true`, the - text field has a border. If `false`, the text field has no - border. Use the `borderColor` property to set the border color. - - @default false - - - - The color of the text field border. The default value is - `0x000000`(black). This property can be retrieved or set, even - if there currently is no border, but the color is visible only if the text - field has the `border` property set to `true`. - - - - An integer(1-based index) that indicates the bottommost line that is - currently visible in the specified text field. Think of the text field as - a window onto a block of text. The `scrollV` property is the - 1-based index of the topmost visible line in the window. - - All the text between the lines indicated by `scrollV` and - `bottomScrollV` is currently visible in the text field. - - - - The index of the insertion point(caret) position. If no insertion point - is displayed, the value is the position the insertion point would be if - you restored focus to the field(typically where the insertion point last - was, or 0 if the field has not had focus). - - Selection span indexes are zero-based(for example, the first position - is 0, the second position is 1, and so on). - - - - false - ` and `

    ` to place line breaks in the text field. - - Set the `condenseWhite` property before setting the `htmlText` - property.]]> - - - - Specifies the format applied to newly inserted text, such as text entered - by a user or text inserted with the `replaceSelectedText()` - method. - - **Note:** When selecting characters to be replaced with - `setSelection()` and `replaceSelectedText()`, the - `defaultTextFormat` will be applied only if the text has been - selected up to and including the last character. Here is an example: - - ``` - var my_txt:TextField new TextField(); - my_txt.text = "Flash Macintosh version"; var my_fmt:TextFormat = new - TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt; - my_txt.setSelection(6,15); // partial text selected - defaultTextFormat - not applied my_txt.setSelection(6,23); // text selected to end - - defaultTextFormat applied my_txt.replaceSelectedText("Windows version"); - ``` - - When you access the `defaultTextFormat` property, the - returned TextFormat object has all of its properties defined. No property - is `null`. - - **Note:** You can't set this property if a style sheet is applied to - the text field. - - @throws Error This method cannot be used on a text field with a style - sheet. - - - - Specifies whether the text field is a password text field. If the value of - this property is `true`, the text field is treated as a - password text field and hides the input characters using asterisks instead - of the actual characters. If `false`, the text field is not - treated as a password text field. When password mode is enabled, the Cut - and Copy commands and their corresponding keyboard shortcuts will not - function. This security mechanism prevents an unscrupulous user from using - the shortcuts to discover a password on an unattended computer. - - @default false - - - - Specifies whether to render by using embedded font outlines. If - `false`, Flash Player renders the text field by using device - fonts. - - If you set the `embedFonts` property to `true` - for a text field, you must specify a font for that text by using the - `font` property of a TextFormat object applied to the text - field. If the specified font is not embedded in the SWF file, the text is - not displayed. - - @default false - - - - The type of grid fitting used for this text field. This property - applies only if the `openfl.text.AntiAliasType` property of the text - field is set to `openfl.text.AntiAliasType.ADVANCED`. - The type of grid fitting used determines whether Flash Player forces - strong horizontal and vertical lines to fit to a pixel or subpixel - grid, or not at all. - - For the `openfl.text.GridFitType` property, you can use the following - string values: - - | String value | Description | - | --- | --- | - | `openfl.text.GridFitType.NONE` | Specifies no grid fitting. Horizontal and vertical lines in the glyphs are not forced to the pixel grid. This setting is recommended for animation or for large font sizes. | - | `openfl.text.GridFitType.PIXEL` | Specifies that strong horizontal and vertical lines are fit to the pixel grid. This setting works only for left-aligned text fields. To use this setting, the `openfl.dispaly.AntiAliasType` property of the text field must be set to `openfl.text.AntiAliasType.ADVANCED`. This setting generally provides the best legibility for left-aligned text. | - | `openfl.text.GridFitType.SUBPIXEL` | Specifies that strong horizontal and vertical lines are fit to the subpixel grid on an LCD monitor. To use this setting, the `openfl.text.AntiAliasType` property of the text field must be set to `openfl.text.AntiAliasType.ADVANCED`. The `openfl.text.GridFitType.SUBPIXEL` setting is often good for right-aligned or centered dynamic text, and it is sometimes a useful trade-off for animation versus text quality. | - - @default pixel - - - - ` tag creates a hypertext link and supports the following attributes:

    • `target`: Specifies the name of the target window where you load the page. Options include `_self`, `_blank`, `_parent`, and `_top`. The `_self` option specifies the current frame in the current window, `_blank` specifies a new window, `_parent` specifies the parent of the current frame, and `_top` specifies the top-level frame in the current window.
    • `href`: Specifies a URL or an ActionScript `link` event.The URL can be either absolute or relative to the location of the SWF file that is loading the page. An example of an absolute reference to a URL is `http://www.adobe.com`; an example of a relative reference is `/index.html`. Absolute URLs must be prefixed with http://; otherwise, Flash Player or AIR treats them as relative URLs. You can use the `link` event to cause the link to execute an ActionScript function in a SWF file instead of opening a URL. To specify a `link` event, use the event scheme instead of the http scheme in your `href` attribute. An example is `href="event:myText"` instead of `href="http://myURL"`; when the user clicks a hypertext link that contains the event scheme, the text field dispatches a `link` TextEvent with its `text` property set to "`myText`". You can then create an ActionScript function that executes whenever the link TextEvent is dispatched. You can also define `a:link`, `a:hover`, and `a:active` styles for anchor tags by using style sheets.
    | - | Bold tag | The `` tag renders text as bold. A bold typeface must be available for the font used. | - | Break tag | The `
    ` tag creates a line break in the text field. Set the text field to be a multiline text field to use this tag. | - | Font tag | The `` tag specifies a font or list of fonts to display the text.The font tag supports the following attributes:
    • `color`: Only hexadecimal color (`#FFFFFF`) values are supported.
    • `face`: Specifies the name of the font to use. As shown in the following example, you can specify a list of comma-delimited font names, in which case Flash Player selects the first available font. If the specified font is not installed on the local computer system or isn't embedded in the SWF file, Flash Player selects a substitute font.
    • `size`: Specifies the size of the font. You can use absolute pixel sizes, such as 16 or 18, or relative point sizes, such as +2 or -4.
    | - | Image tag | The `` tag lets you embed external image files (JPEG, GIF, PNG), SWF files, and movie clips inside text fields. Text automatically flows around images you embed in text fields. You must set the text field to be multiline to wrap text around an image.
    The `` tag supports the following attributes:
    • `src`: Specifies the URL to an image or SWF file, or the linkage identifier for a movie clip symbol in the library. This attribute is required; all other attributes are optional. External files (JPEG, GIF, PNG, and SWF files) do not show until they are downloaded completely.
    • `width`: The width of the image, SWF file, or movie clip being inserted, in pixels.
    • `height`: The height of the image, SWF file, or movie clip being inserted, in pixels.
    • `align`: Specifies the horizontal alignment of the embedded image within the text field. Valid values are `left` and `right`. The default value is `left`.
    • `hspace`: Specifies the amount of horizontal space that surrounds the image where no text appears. The default value is 8.
    • `vspace`: Specifies the amount of vertical space that surrounds the image where no text appears. The default value is 8.
    • `id`: Specifies the name for the movie clip instance (created by Flash Player) that contains the embedded image file, SWF file, or movie clip. This approach is used to control the embedded content with ActionScript.
    • `checkPolicyFile`: Specifies that Flash Player checks for a URL policy file on the server associated with the image domain. If a policy file exists, SWF files in the domains listed in the file can access the data of the loaded image, for example, by calling the `BitmapData.draw()` method with this image as the `source` parameter. For more information related to security, see the Flash Player Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en).
    Flash displays media embedded in a text field at full size. To specify the dimensions of the media you are embedding, use the `` tag `height` and `width` attributes.
    In general, an image embedded in a text field appears on the line following the `` tag. However, when the `` tag is the first character in the text field, the image appears on the first line of the text field.
    For AIR content in the application security sandbox, AIR ignores `img` tags in HTML content in ActionScript TextField objects. This is to prevent possible phishing attacks. | - | Italic tag | The `` tag displays the tagged text in italics. An italic typeface must be available for the font used. | - | List item tag | The `
  • ` tag places a bullet in front of the text that it encloses.
    **Note:** Because Flash Player and AIR do not recognize ordered and unordered list tags (`
      ` and `
        `, they do not modify how your list is rendered. All lists are unordered and all list items use bullets. | - | Paragraph tag | The `

        ` tag creates a new paragraph. The text field must be set to be a multiline text field to use this tag. The `

        ` tag supports the following attributes:

        • align: Specifies alignment of text within the paragraph; valid values are `left`, `right`, `justify`, and `center`.
        • class: Specifies a CSS style class defined by a openfl.text.StyleSheet object.
        | - | Span tag | The `` tag is available only for use with CSS text styles. It supports the following attribute:
        • class: Specifies a CSS style class defined by a openfl.text.StyleSheet object.
        | - | Text format tag | The `` tag lets you use a subset of paragraph formatting properties of the TextFormat class within text fields, including line leading, indentation, margins, and tab stops. You can combine `` tags with the built-in HTML tags.
        The `` tag has the following attributes:
      • `blockindent`: Specifies the block indentation in points; corresponds to `TextFormat.blockIndent`.
      • `indent`: Specifies the indentation from the left margin to the first character in the paragraph; corresponds to `TextFormat.indent`. Both positive and negative numbers are acceptable.
      • `leading`: Specifies the amount of leading (vertical space) between lines; corresponds to `TextFormat.leading`. Both positive and negative numbers are acceptable.
      • `leftmargin`: Specifies the left margin of the paragraph, in points; corresponds to `TextFormat.leftMargin`.
      • `rightmargin`: Specifies the right margin of the paragraph, in points; corresponds to `TextFormat.rightMargin`.
      • `tabstops`: Specifies custom tab stops as an array of non-negative integers; corresponds to `TextFormat.tabStops`.
      | - | Underline tag | The `` tag underlines the tagged text. | - - Flash Player and AIR support the following HTML entities: - - | Entity | Description | - | --- | --- | - | &lt; | < (less than) | - | &gt; | > (greater than) | - | &amp; | & (ampersand) | - | &quot; | " (double quotes) | - | &apos; | ' (apostrophe, single quote) | - - Flash Player and AIR also support explicit character codes, such as - & (ASCII ampersand) and € (Unicode € symbol).]]> - - - - The number of characters in a text field. A character such as tab - (`\t`) counts as one character. - - - - The maximum number of characters that the text field can contain, as - entered by a user. A script can insert more text than - `maxChars` allows; the `maxChars` property indicates - only how much text a user can enter. If the value of this property is - `0`, a user can enter an unlimited amount of text. - - @default 0 - - - - The maximum value of `scrollH`. - - - - The maximum value of `scrollV`. - - - - A Boolean value that indicates whether Flash Player automatically scrolls - multiline text fields when the user clicks a text field and rolls the mouse wheel. - By default, this value is `true`. This property is useful if you want to prevent - mouse wheel scrolling of text fields, or implement your own text field scrolling. - - - - Indicates whether field is a multiline text field. If the value is - `true`, the text field is multiline; if the value is - `false`, the text field is a single-line text field. In a field - of type `TextFieldType.INPUT`, the `multiline` value - determines whether the `Enter` key creates a new line(a value - of `false`, and the `Enter` key is ignored). If you - paste text into a `TextField` with a `multiline` - value of `false`, newlines are stripped out of the text. - - @default false - - - - Defines the number of text lines in a multiline text field. If - `wordWrap` property is set to `true`, the number of - lines increases when text wraps. - - - - This property does - not synchronize with the Embed font options in the Property inspector. - - If the string begins with a caret(^) character, all characters are - initially accepted and succeeding characters in the string are excluded - from the set of accepted characters. If the string does not begin with a - caret(^) character, no characters are initially accepted and succeeding - characters in the string are included in the set of accepted - characters. - - The following example allows only uppercase characters, spaces, and - numbers to be entered into a text field: - `my_txt.restrict = "A-Z 0-9";` - - The following example includes all characters, but excludes lowercase - letters: - `my_txt.restrict = "^a-z";` - - You can use a backslash to enter a ^ or - verbatim. The accepted - backslash sequences are \-, \^ or \\. The backslash must be an actual - character in the string, so when specified in ActionScript, a double - backslash must be used. For example, the following code includes only the - dash(-) and caret(^): - `my_txt.restrict = "\\-\\^";` - - The ^ can be used anywhere in the string to toggle between including - characters and excluding characters. The following code includes only - uppercase letters, but excludes the uppercase letter Q: - `my_txt.restrict = "A-Z^Q";` - - You can use the `\u` escape sequence to construct - `restrict` strings. The following code includes only the - characters from ASCII 32(space) to ASCII 126(tilde). - `my_txt.restrict = "\u0020-\u007E";` - - @default null]]> - - - - The current horizontal scrolling position. If the `scrollH` - property is 0, the text is not horizontally scrolled. This property value - is an integer that represents the horizontal position in pixels. - - The units of horizontal scrolling are pixels, whereas the units of - vertical scrolling are lines. Horizontal scrolling is measured in pixels - because most fonts you typically use are proportionally spaced; that is, - the characters can have different widths. Flash Player performs vertical - scrolling by line because users usually want to see a complete line of - text rather than a partial line. Even if a line uses multiple fonts, the - height of the line adjusts to fit the largest font in use. - - **Note: **The `scrollH` property is zero-based, not - 1-based like the `scrollV` vertical scrolling property. - - - - The vertical position of text in a text field. The `scrollV` - property is useful for directing users to a specific paragraph in a long - passage, or creating scrolling text fields. - - The units of vertical scrolling are lines, whereas the units of - horizontal scrolling are pixels. If the first line displayed is the first - line in the text field, scrollV is set to 1(not 0). Horizontal scrolling - is measured in pixels because most fonts are proportionally spaced; that - is, the characters can have different widths. Flash performs vertical - scrolling by line because users usually want to see a complete line of - text rather than a partial line. Even if there are multiple fonts on a - line, the height of the line adjusts to fit the largest font in use. - - - - A Boolean value that indicates whether the text field is selectable. The - value `true` indicates that the text is selectable. The - `selectable` property controls whether a text field is - selectable, not whether a text field is editable. A dynamic text field can - be selectable even if it is not editable. If a dynamic text field is not - selectable, the user cannot select its text. - - If `selectable` is set to `false`, the text in - the text field does not respond to selection commands from the mouse or - keyboard, and the text cannot be copied with the Copy command. If - `selectable` is set to `true`, the text in the text - field can be selected with the mouse or keyboard, and the text can be - copied with the Copy command. You can select text this way even if the - text field is a dynamic text field instead of an input text field. - - @default true - - - - The zero-based character index value of the first character in the current - selection. For example, the first character is 0, the second character is - 1, and so on. If no text is selected, this property is the value of - `caretIndex`. - - - - The zero-based character index value of the last character in the current - selection. For example, the first character is 0, the second character is - 1, and so on. If no text is selected, this property is the value of - `caretIndex`. - - - - The sharpness of the glyph edges in this text field. This property applies - only if the `openfl.text.AntiAliasType` property of the text - field is set to `openfl.text.AntiAliasType.ADVANCED`. The range - for `sharpness` is a number from -400 to 400. If you attempt to - set `sharpness` to a value outside that range, Flash sets the - property to the nearest value in the range(either -400 or 400). - - @default 0 - - - - Attaches a style sheet to the text field. For information on creating - style sheets, see the StyleSheet class and the _ActionScript 3.0 - Developer's Guide_. - You can change the style sheet associated with a text field at any - time. If you change the style sheet in use, the text field is redrawn - with the new style sheet. You can set the style sheet to `null` or - `undefined` to remove the style sheet. If the style sheet in use is - removed, the text field is redrawn without a style sheet. - - **Note:** If the style sheet is removed, the contents of both - `TextField.text` and ` TextField.htmlText` change to incorporate the - formatting previously applied by the style sheet. To preserve the - original `TextField.htmlText` contents without the formatting, save - the value in a variable before removing the style sheet. - - - - A string that is the current text in the text field. Lines are separated - by the carriage return character(`'\r'`, ASCII 13). This - property contains unformatted text in the text field, without HTML tags. - - To get the text in HTML form, use the `htmlText` - property. - - - - The color of the text in a text field, in hexadecimal format. The - hexadecimal color system uses six digits to represent color values. Each - digit has 16 possible values or characters. The characters range from 0-9 - and then A-F. For example, black is `0x000000`; white is - `0xFFFFFF`. - - @default 0(0x000000) - - - - The height of the text in pixels. - - - - The interaction mode property, Default value is - TextInteractionMode.NORMAL. On mobile platforms, the normal mode - implies that the text can be scrolled but not selected. One can switch - to the selectable mode through the in-built context menu on the text - field. On Desktop, the normal mode implies that the text is in - scrollable as well as selection mode. - - - - The type of the text field. Either one of the following TextFieldType - constants: `TextFieldType.DYNAMIC`, which specifies a dynamic - text field, which a user cannot edit, or `TextFieldType.INPUT`, - which specifies an input text field, which a user can edit. - - @default dynamic - @throws ArgumentError The `type` specified is not a member of - openfl.text.TextFieldType. - - - - Specifies whether to copy and paste the text formatting along with the - text. When set to `true`, Flash Player copies and pastes formatting - (such as alignment, bold, and italics) when you copy and paste between - text fields. Both the origin and destination text fields for the copy - and paste procedure must have `useRichTextClipboard` set to `true`. - The default value is `false`. - - <__bounds> - - - - <__caretIndex> - - - - <__cursorTimer> - - - - <__dirty> - - - - <__displayAsPassword> - - - - <__domRender> - - - - <__inputEnabled> - - - - <__isHTML> - - - - <__layoutDirty> - - - - <__mouseScrollVCounter expr="0"> - - - 0 - - - - <__mouseWheelEnabled> - - - - <__offsetX> - - - - <__offsetY> - - - - <__selectionIndex> - - - - <__showCursor> - - - - <__styleSheet> - - - - <__text> - - - - <__htmlText> - - - - <__textEngine> - - - - <__textFormat> - - - - - - - - - Appends the string specified by the `newText` parameter to the - end of the text of the text field. This method is more efficient than an - addition assignment(`+=`) on a `text` property - (such as `someTextField.text += moreText`), particularly for a - text field that contains a significant amount of content. - - @param newText The string to append to the existing text. - - - - - - - Returns a rectangle that is the bounding box of the character. - - @param charIndex The zero-based index value for the character (for - example, the first position is 0, the second position is - 1, and so on). - @return A rectangle with `x` and `y` minimum and - maximum values defining the bounding box of the character. - - - - - - - - Returns the zero-based index value of the character at the point specified - by the `x` and `y` parameters. - - @param x The _x_ coordinate of the character. - @param y The _y_ coordinate of the character. - @return The zero-based index value of the character(for example, the - first position is 0, the second position is 1, and so on). Returns - -1 if the point is not over any character. - - - - - - - Given a character index, returns the index of the first character in - the same paragraph. - - @param charIndex The zero-based index value of the character (for - example, the first character is 0, the second - character is 1, and so on). - @return The zero-based index value of the first character in the same - paragraph. - @throws RangeError The character index specified is out of range. - - - - - - - - ` tag. The `` tag is in the following format: - - ```html - - ``` - - @param id The `id` to match (in the `id` attribute of the `` - tag). - @return The display object corresponding to the image or SWF file with - the matching `id` attribute in the `` tag of the text - field. For media loaded from an external source, this object - is a Loader object, and, once loaded, the media object is a - child of that Loader object. For media embedded in the SWF - file, it is the loaded object. If no `` tag with the - matching `id` exists, the method returns `null`.]]> - - - - - - - Returns the zero-based index value of the line containing the - character specified by the `charIndex` parameter. - - @param charIndex The zero-based index value of the character (for - example, the first character is 0, the second - character is 1, and so on). - @return The zero-based index value of the line. - @throws RangeError The character index specified is out of range. - - - - - - - Returns the number of characters in a specific text line. - - @param lineIndex The line number for which you want the length. - @return The number of characters in the line. - @throws RangeError The line number specified is out of range. - - - - - - - Returns metrics information about a given text line. - - @param lineIndex The line number for which you want metrics information. - @return A TextLineMetrics object. - @throws RangeError The line number specified is out of range. - - - - - - - Returns the character index of the first character in the line that the - `lineIndex` parameter specifies. - - @param lineIndex The zero-based index value of the line(for example, the - first line is 0, the second line is 1, and so on). - @return The zero-based index value of the first character in the line. - @throws RangeError The line number specified is out of range. - - - - - - - Returns the text of the line specified by the `lineIndex` - parameter. - - @param lineIndex The zero-based index value of the line(for example, the - first line is 0, the second line is 1, and so on). - @return The text string contained in the specified line. - @throws RangeError The line number specified is out of range. - - - - - - - Given a character index, returns the length of the paragraph - containing the given character. The length is relative to the first - character in the paragraph (as returned by - `getFirstCharInParagraph()`), not to the character index passed in. - - @param charIndex The zero-based index value of the character (for - example, the first character is 0, the second - character is 1, and so on). - @return Returns the number of characters in the paragraph. - @throws RangeError The character index specified is out of range. - - - - - - - - { endIndex : -1, beginIndex : -1 } - Returns a TextFormat object that contains formatting information for - the range of text that the `beginIndex` and `endIndex` parameters - specify. Only properties that are common to the entire text specified - are set in the resulting TextFormat object. Any property that is - _mixed_, meaning that it has different values at different points in - the text, has a value of `null`. - If you do not specify values for these parameters, this method is - applied to all the text in the text field. - - The following table describes three possible usages: - - | Usage | Description | - | --- | --- | - | `my_textField.getTextFormat()` | Returns a TextFormat object containing formatting information for all text in a text field. Only properties that are common to all text in the text field are set in the resulting TextFormat object. Any property that is _mixed_, meaning that it has different values at different points in the text, has a value of `null`. | - | `my_textField.getTextFormat(beginIndex:Number)` | Returns a TextFormat object containing a copy of the text format of the character at the `beginIndex` position. | - | `my_textField.getTextFormat(beginIndex:Number,endIndex:Number)` | Returns a TextFormat object containing formatting information for the span of text from `beginIndex` to `endIndex-1`. Only properties that are common to all of the text in the specified range are set in the resulting TextFormat object. Any property that is mixed (that is, has different values at different points in the range) has its value set to `null`. | - - @return The TextFormat object that represents the formatting - properties for the specified text. - @throws RangeError The `beginIndex` or `endIndex` specified is out of - range. - - - - - - - Returns true if an embedded font is available with the specified - `fontName` and `fontStyle` where `Font.fontType` is - `openfl.text.FontType.EMBEDDED`. Starting with Flash Player 10, two - kinds of embedded fonts can appear in a SWF file. Normal embedded - fonts are only used with TextField objects. CFF embedded fonts are - only used with the openfl.text.engine classes. The two types are - distinguished by the `fontType` property of the `Font` class, as - returned by the `enumerateFonts()` function. - TextField cannot use a font of type `EMBEDDED_CFF`. If `embedFonts` is - set to `true` and the only font available at run time with the - specified name and style is of type `EMBEDDED_CFF`, Flash Player fails - to render the text, as if no embedded font were available with the - specified name and style. - - If both `EMBEDDED` and `EMBEDDED_CFF` fonts are available with the - same name and style, the `EMBEDDED` font is selected and text renders - with the `EMBEDDED` font. - - @param fontName The name of the embedded font to check. - @param fontStyle Specifies the font style to check. Use - `openfl.text.FontStyle` - @return `true` if a compatible embedded font is available, otherwise - `false`. - @throws ArgumentError The `fontStyle` specified is not a member of - `openfl.text.FontStyle`. - - - - - - - - - Replaces the range of characters that the `beginIndex` and `endIndex` - parameters specify with the contents of the `newText` parameter. As - designed, the text from `beginIndex` to `endIndex-1` is replaced. - **Note:** This method does not work if a style sheet is applied to the - text field. - - @param beginIndex The zero-based index value for the start position of - the replacement range. - @param endIndex The zero-based index position of the first character - after the desired text span. - @param newText The text to use to replace the specified range of - characters. - @throws Error This method cannot be used on a text field with a style - sheet. - - - - - - - - Sets as selected the text designated by the index values of the first and - last characters, which are specified with the `beginIndex` and - `endIndex` parameters. If the two parameter values are the - same, this method sets the insertion point, as if you set the - `caretIndex` property. - - @param beginIndex The zero-based index value of the first character in the - selection(for example, the first character is 0, the - second character is 1, and so on). - @param endIndex The zero-based index value of the last character in the - selection. - - - - - - - - - { endIndex : -1, beginIndex : -1 } - Applies the text formatting that the `format` parameter - specifies to the specified text in a text field. The value of - `format` must be a TextFormat object that specifies the desired - text formatting changes. Only the non-null properties of - `format` are applied to the text field. Any property of - `format` that is set to `null` is not applied. By - default, all of the properties of a newly created TextFormat object are - set to `null`. - - **Note:** This method does not work if a style sheet is applied to - the text field. - - The `setTextFormat()` method changes the text formatting - applied to a range of characters or to the entire body of text in a text - field. To apply the properties of format to all text in the text field, do - not specify values for `beginIndex` and `endIndex`. - To apply the properties of the format to a range of text, specify values - for the `beginIndex` and the `endIndex` parameters. - You can use the `length` property to determine the index - values. - - The two types of formatting information in a TextFormat object are - character level formatting and paragraph level formatting. Each character - in a text field can have its own character formatting settings, such as - font name, font size, bold, and italic. - - For paragraphs, the first character of the paragraph is examined for - the paragraph formatting settings for the entire paragraph. Examples of - paragraph formatting settings are left margin, right margin, and - indentation. - - Any text inserted manually by the user, or replaced by the - `replaceSelectedText()` method, receives the default text field - formatting for new text, and not the formatting specified for the text - insertion point. To set the default formatting for new text, use - `defaultTextFormat`. - - @param format A TextFormat object that contains character and paragraph - formatting information. - @throws Error This method cannot be used on a text field with a style - sheet. - @throws RangeError The `beginIndex` or `endIndex` - specified is out of range. - - <__allowMouseFocus set="method" line="1597" override="1"> - - - - <__caretBeginningOfLine set="method" line="1604"> - - - - <__caretBeginningOfNextLine set="method" line="1609"> - - - - <__caretBeginningOfPreviousLine set="method" line="1623"> - - - - <__caretEndOfLine set="method" line="1642"> - - - - <__caretNextCharacter set="method" line="1656"> - - - - <__caretNextLine set="method" line="1664"> - - - - <__caretPreviousCharacter set="method" line="1674"> - - - - <__caretPreviousLine set="method" line="1682"> - - - - <__disableInput set="method" line="1692"> - - - - <__dispatch set="method" line="1707" override="1"> - - - - - - - <__enableInput set="method" line="1735"> - - - - <__getAdvance get="inline" set="null" line="1776"> - - - - - - - <__getBounds set="method" line="1785" override="1"> - - - - - - - - <__getCharBoundaries set="method" line="1799"> - - - - - - - - <__getCharIndexOnDifferentLine set="method" line="1831"> - - - - - - - - <__getCursor set="method" line="1868" override="1"> - - - - <__getGroup set="method" line="1884"> - - - - - - - - { precise : false } - - - - <__getPosition set="method" line="1933"> - - - - - - - - <__hitTest set="method" line="1965" override="1"> - - - - - - - - - - - - <__hitTestMask set="method" line="1989" override="1"> - - - - - - - - <__replaceSelectedText set="method" line="2005"> - - - - - - - { restrict : true } - - - - <__replaceText set="method" line="2028"> - - - - - - - - - - <__startCursorTimer set="method" line="2158"> - - - - <__startTextInput set="method" line="2174"> - - - - <__stopCursorTimer set="method" line="2190"> - - - - <__stopTextInput set="method" line="2206"> - - - - <__updateLayout set="method" line="2216"> - - - - <__updateScrollH set="method" line="2248"> - - - - <__updateScrollV set="method" line="2322"> - - - - <__updateMouseDrag set="method" line="2384"> - - - - <__updateText set="method" line="2414"> - - - - - - - <__updateTransforms set="method" line="2474" override="1"> - - - - - - { overrideTransform : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new TextField instance. After you create the TextField instance, - call the `addChild()` or `addChildAt()` method of - the parent DisplayObjectContainer object to add the TextField instance to - the display list. - - The default size for a text field is 100 x 100 pixels. - - You can use the TextField class to - perform low-level text rendering. However, in Flex, you typically use the - Label, Text, TextArea, and TextInput controls to process text. You can give a text field an instance name in the - Property inspector and use the methods and properties of the TextField - class to manipulate it with ActionScript. TextField instance names are - displayed in the Movie Explorer and in the Insert Target Path dialog box in - the Actions panel. - - To create a text field dynamically, use the `TextField()` - constructor. - - The methods of the TextField class let you set, select, and manipulate - text in a dynamic or input text field that you create during authoring or - at runtime. - - ActionScript provides several ways to format your text at runtime. The - TextFormat class lets you set character and paragraph formatting for - TextField objects. You can apply Cascading Style Sheets(CSS) styles to - text fields by using the `TextField.styleSheet` property and the - StyleSheet class. You can use CSS to style built-in HTML tags, define new - formatting tags, or apply styles. You can assign HTML formatted text, which - optionally uses CSS styles, directly to a text field. HTML text that you - assign to a text field can contain embedded media(movie clips, SWF files, - GIF files, PNG files, and JPEG files). The text wraps around the embedded - media in the same way that a web browser wraps text around media embedded - in an HTML document. - - Flash Player supports a subset of HTML tags that you can use to format - text. See the list of supported HTML tags in the description of the - `htmlText` property. - - @event change Dispatched after a control value is - modified, unlike the - `textInput` event, which is - dispatched before the value is modified. - Unlike the W3C DOM Event Model version of - the `change` event, which - dispatches the event only after the - control loses focus, the ActionScript 3.0 - version of the `change` event - is dispatched any time the control - changes. For example, if a user types text - into a text field, a `change` - event is dispatched after every keystroke. - @event link Dispatched when a user clicks a hyperlink - in an HTML-enabled text field, where the - URL begins with "event:". The remainder of - the URL after "event:" is placed in the - text property of the LINK event. - - **Note:** The default behavior, - adding the text to the text field, occurs - only when Flash Player generates the - event, which in this case happens when a - user attempts to input text. You cannot - put text into a text field by sending it - `textInput` events. - @event scroll Dispatched by a TextField object - _after_ the user scrolls. - @event textInput Flash Player dispatches the - `textInput` event when a user - enters one or more characters of text. - Various text input methods can generate - this event, including standard keyboards, - input method editors(IMEs), voice or - speech recognition systems, and even the - act of pasting plain text with no - formatting or style information. - @event textInteractionModeChange Flash Player dispatches the - `textInteractionModeChange` - event when a user changes the interaction - mode of a text field. for example on - Android, one can toggle from NORMAL mode - to SELECTION mode using context menu - options]]> - - - "tags=\"haxe,release\"" - - openfl.display.Graphics - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - openfl.text._internal.TextEngine - openfl.text.TextFormat - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__onMouseUp set="method" line="31"> - - - - - - - - <_HX_SUPER__onKeyUp set="method" line="31"> - - - - - - - - <_HX_SUPER__onKeyDown set="method" line="31"> - - - - - - - - - <_HX_SUPER__cycleValue set="method" line="31"> - - - - - - <_HX_SUPER__selectEnd set="method" line="31"> - - - - - <_HX_SUPER__cycleNumericValue set="method" line="31"> - - - - - - - - - <_HX_SUPER__cycleEnumValue set="method" line="31"> - - - - - - - - - <_HX_SUPER__onFocusLost set="method" line="148"> - - - - - <_HX_SUPER__submit public="1" set="method" line="31"> - - - - - <_HX_SUPER__setIsEditing set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.watch.EditableTextField - - - - - - - - - - - - - - - - * A Visual Studio-style "watch" window, for use in the debugger overlay. - * Track the values of any public variable in real-time, and/or edit their values on the fly. - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.watch.Tracker - flixel.system.debug.watch.Tracker.TrackerProfile - - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.watch.Tracker - flixel.system.debug.watch.Tracker.TrackerProfile - - - - - - - - 4 - - - - 20 - - - - 125 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * `object.field` resolved via `Reflect.getProperty()`. - - - - * Manually updated values. - - - - - * Haxe expression evaluated with hscript. - - - - * A function that returns the value to display. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__getTextColor set="method" line="148"> - - - - - - <_HX_SUPER__updateSize public="1" set="method" line="31"> - - - - - - <_HX_SUPER__updateName set="method" line="148"> - - - - - <_HX_SUPER__setNameText set="method" line="148"> - - - - - <_HX_SUPER__getValue set="method" line="148"> - - <_HX_SUPER__getFormattedValue set="method" line="148"> - - - - - <_HX_SUPER__submitValue set="method" line="31"> - - - - - <_HX_SUPER__updateValue public="1" set="method" line="148"> - - <_HX_SUPER__getNameWidth public="1" set="method" line="148"> - - <_HX_SUPER__getMinWidth public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.watch.WatchEntry - - - - - <__interp> - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.debug.watch.Watch - - - - - - - - - <_HX_SUPER__onAssetsReload public="1" set="method" line="31"> - - - - - - * New context handler. - * Regenerates tilesheets for all dumped graphics objects in the cache. - - <_HX_SUPER__onContext public="1" set="method" line="31"> - - - * Dumps bits of all graphics in the cache. This frees some memory, but you can't read/write pixels on those graphics anymore. - * You can call undump() method for each FlxGraphic (or undumpCache()) object which will restore it again. - - <_HX_SUPER__dumpCache public="1" set="method" line="31"> - - - * Restores graphics of all dumped objects in the cache. - - <_HX_SUPER__undumpCache public="1" set="method" line="31"> - - - - - - - - - - { Unique : false } - * Generates a new BitmapData object (a colored rectangle) and caches it. - * - * @param Width How wide the rectangle should be. - * @param Height How high the rectangle should be. - * @param Color What color the rectangle should be (0xAARRGGBB) - * @param Unique Ensures that the bitmap data uses a new slot in the cache. - * @param Key Force the cache to use a specific Key to index the bitmap. - * @return The BitmapData we just created. - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - - - - - { Unique : false } - - - - - - - - - { Unique : false } - * Loads a bitmap from a file, clones it if necessary and caches it. - * @param Graphic Optional FlxGraphics object to create FlxGraphic from. - * @param Frames Optional FlxFramesCollection object to create FlxGraphic from. - * @param Bitmap Optional BitmapData object to create FlxGraphic from. - * @param BitmapClass Optional Class for BitmapData to create FlxGraphic from. - * @param Str Optional String key to use for FlxGraphic instantiation. - * @param Unique Ensures that the bitmap data uses a new slot in the cache. - * @param Key Force the cache to use a specific Key to index the bitmap. - * @return The FlxGraphic we just created. - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - { Unique : false } - - - - - - - * Gets key from bitmap cache for specified BitmapData - * - * @param bmd BitmapData to find in cache - * @return BitmapData's key or null if there isn't such BitmapData in cache - - <_HX_SUPER__findKeyForBitmap public="1" set="method" line="148"> - - - - - - - - - - - { unique : false } - * Creates string key for further caching. - * - * @param systemKey The first string key to use as a base for a new key. It's usually a key from openfl.Assets ("assets/image.png"). - * @param userKey The second string key to use as a base for a new key. It's usually a key provided by the user - * @param unique Whether generated key should be unique or not. - * @return Created key. - - <_HX_SUPER__generateKey public="1" set="method" line="148"> - - - - - - - { unique : false } - - - - - - - * Gets unique key for bitmap cache - * - * @param baseKey key's prefix - * @return unique key - - <_HX_SUPER__getUniqueKey public="1" set="method" line="148"> - - - - - - - - - - - - - * Generates key from provided base key and information about tile size and offsets in spritesheet - * and the region of image to use as spritesheet graphics source. - * - * @param baseKey Beginning of the key. Usually it is the key for original spritesheet graphics (like "assets/tile.png") - * @param frameSize the size of tile in spritesheet - * @param frameSpacing offsets between tiles in offsets - * @param region region of image to use as spritesheet graphics source - * @return Generated key for spritesheet with inserted spaces between tiles - - <_HX_SUPER__getKeyWithSpacesAndBorders public="1" set="method" line="148"> - - - - - - - - - - - - - * Totally removes specified FlxGraphic object. - * @param FlxGraphic object you want to remove and destroy. - - <_HX_SUPER__remove public="1" set="method" line="31"> - - - - - - - - - * Totally removes FlxGraphic object with specified key. - * @param key the key for cached FlxGraphic object. - - <_HX_SUPER__removeByKey public="1" set="method" line="31"> - - - - - - - - <_HX_SUPER__removeIfNoUse public="1" set="method" line="31"> - - - - - - * Clears image cache (and destroys those images). - * Graphics object will be removed and destroyed only if it shouldn't persist in the cache and its useCount is 0. - - <_HX_SUPER__clearCache public="1" set="method" line="31"> - - - * Maps the entire cache as destroyable, aka must be cleared. - - <_HX_SUPER__mapCacheAsDestroyable public="1" set="method" line="148"> - - - * Completely resets bitmap cache, which means destroying ALL of the cached FlxGraphic objects. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - * Removes all unused graphics from cache, - * but skips graphics which should persist in cache and shouldn't be destroyed on no use. - - <_HX_SUPER__clearUnused public="1" set="method" line="31"> - - <_HX_SUPER__get_maxTextureSize set="method" line="148"> - - <_HX_SUPER__get_whitePixel set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.BitmapFrontEnd - - - - - - - * Clears the bitmapLog window and adds the entire cache to it. - - <_HX_SUPER__viewCache public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.BitmapLogFrontEnd - - - - - - - - - - - { Destroy : true } - * Remove a camera from the game. - * - * @param Camera The camera you want to remove. - * @param Destroy Whether to call destroy() on the camera, default value is true. - - <_HX_SUPER__remove public="1" set="method" line="31"> - - - - - - { Destroy : true } - - - - - - - - * If set to true, the camera is listed as a default draw target, meaning `FlxBasics` - * render to the specified camera if the `FlxBasic` has a null `cameras` value. - * @see flixel.FlxBasic.cameras - * - * @param camera The camera you wish to change. - * @param value If false, FlxBasics will not render to it unless you add it to their `cameras` list. - * @since 4.9.0 - - <_HX_SUPER__setDefaultDrawTarget public="1" set="method" line="148"> - - - - - - - - - - * Dumps all the current cameras and resets to just one camera. - * Handy for doing split-screen especially. - * - * @param NewCamera Optional; specify a specific camera object to be the new main camera. - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - * All screens are filled with this color and gradually return to normal. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the flash to fade. - * @param OnComplete A function you want to run when the flash finishes. - * @param Force Force the effect to reset. - - <_HX_SUPER__flash public="1" set="method" line="31"> - - - - - - - - { Force : false, Duration : 1, Color : FlxColor.WHITE } - - - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - * The screen is gradually filled with this color. - * - * @param Color The color you want to use. - * @param Duration How long it takes for the fade to finish. - * @param FadeIn True fades from a color, false fades to it. - * @param OnComplete A function you want to run when the fade finishes. - * @param Force Force the effect to reset. - - <_HX_SUPER__fade public="1" set="method" line="31"> - - - - - - - - - { Force : false, FadeIn : false, Duration : 1, Color : FlxColor.BLACK } - - - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - * A simple screen-shake effect. - * - * @param Intensity Percentage of screen size representing the maximum distance that the screen can move while shaking. - * @param Duration The length in seconds that the shaking effect should last. - * @param OnComplete A function you want to run when the shake effect finishes. - * @param Force Force the effect to reset (default = true, unlike flash() and fade()!). - * @param Axes On what axes to shake. Default value is XY / both. - - <_HX_SUPER__shake public="1" set="method" line="31"> - - - - - - - - - { Force : true, Duration : 0.5, Intensity : 0.05 } - - - - flixel.FlxGame - * Resizes and moves cameras when the game resizes (onResize signal). - - <_HX_SUPER__resize set="method" line="31"> - - <_HX_SUPER__get_bgColor set="method" line="148"> - - - - - <_HX_SUPER__set_bgColor set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.CameraFrontEnd - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.ConsoleFrontEnd - - - - - - - - - - - - - - { UpdateLayout : true, ToggleMode : false } - * Create and add a new debugger button. - * - * @param Position Either LEFT, CENTER or RIGHT. - * @param Icon The icon to use for the button - * @param UpHandler The function to be called when the button is pressed. - * @param ToggleMode Whether this is a toggle button or not. - * @param UpdateLayout Whether to update the button layout. - * @return The added button. - - <_HX_SUPER__addButton public="1" set="method" line="148"> - - - - - - - - - { UpdateLayout : true, ToggleMode : false } - - - - - - - - * Creates a new tracker window if there exists a tracking profile for the class / class of the object. - * By default, flixel classes like FlxBasic, FlxRect and FlxPoint are supported. - * - * @param ObjectOrClass The object or class to track - * @param WindowTitle Title of the tracker window, uses the class name by default - - <_HX_SUPER__track public="1" set="method" line="148"> - - - - - - - - - - - { UpdateLayout : true } - * Removes and destroys a button from the debugger. - * - * @param Button The FlxSystemButton instance to remove. - * @param UpdateLayout Whether to update the button layout. - - <_HX_SUPER__removeButton public="1" set="method" line="31"> - - - - - - { UpdateLayout : true } - - - - - - <_HX_SUPER__set_drawDebug set="method" line="148"> - - - - - - - - - flixel.FlxGame.onFocus - - <_HX_SUPER__set_visible set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.DebuggerFrontEnd - - - - - - <_HX_SUPER__reset public="1" set="method" line="31"> - - - - flixel.FlxGame - flixel.FlxState.resetSubState - - - <_HX_SUPER__onStateSwitch set="method" line="31"> - - <_HX_SUPER__destroy set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.InputFrontEnd - - - - - - - - - - - - { FireOnce : false } - * Add an advanced log message to the debugger by also specifying a LogStyle. Backend to FlxG.log.add(), FlxG.log.warn(), FlxG.log.error() and FlxG.log.notice(). - * - * @param Data Any Data to log. - * @param Style The LogStyle to use, for example LogStyle.WARNING. You can also create your own by importing the LogStyle class. - * @param FireOnce Whether you only want to log the Data in case it hasn't been added already - - <_HX_SUPER__advanced public="1" set="method" line="31"> - - - - - - - { FireOnce : false } - - - - - - - - * Internal function used as a interface between trace() and add(). - * - * @param Data The data that has been traced - * @param Inf Information about the position at which trace() was called - - <_HX_SUPER__processTraceData set="method" line="31"> - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.LogFrontEnd - - - - - - [] - * An array container for plugins. - - - - - - - * Retrieves a plugin based on its class name from the global plugin array. - * - * @param ClassType The class name of the plugin you want to retrieve. See the FlxPath or FlxTimer constructors for example usage. - * @return The plugin object, or null if no matching plugin was found. - - - - - - - * Removes an instance of a plugin from the global plugin array. - * - * @param Plugin The plugin instance you want to remove. - * @return The same FlxPlugin-based plugin you passed in. - - - - - - - * Removes all instances of a plugin from the global plugin array. - * - * @param ClassType The class name of the plugin type you want removed from the array. - * @return Whether or not at least one instance of this plugin type was removed. - - - - - - - flixel.FlxGame - * Used by the game object to call update() on all the plugins. - - - - flixel.FlxGame - * Used by the game object to call draw() on all the plugins. - - - - flixel.FlxG - - * Accessed via `FlxG.plugins`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Removes all instances of a plugin from the global plugin array. - * - * @param ClassType The class name of the plugin type you want removed from the array. - * @return Whether or not at least one instance of this plugin type was removed. - - <_HX_SUPER__removeType public="1" set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.PluginFrontEnd - - - - - - <_HX_SUPER__get_stateSwitched set="method" line="148"> - - <_HX_SUPER__get_gameStarted set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.SignalFrontEnd - - - - - - * A handy container for a background music object. - - - - false - * Whether or not the game sounds are muted. - - - - - - - * Set this hook to get a callback whenever the volume changes. - * Function should take the form myVolumeHandler(volume:Float). - - - - [PLUS, NUMPADPLUS] - * The key codes used to increase volume (see FlxG.keys for the keys available). - * Default keys: + (and numpad +). Set to null to deactivate. - - - - [MINUS, NUMPADMINUS] - * The keys to decrease volume (see FlxG.keys for the keys available). - * Default keys: - (and numpad -). Set to null to deactivate. - - - - [ZERO, NUMPADZERO] - * The keys used to mute / unmute the game (see FlxG.keys for the keys available). - * Default keys: 0 (and numpad 0). Set to null to deactivate. - - - - true - * Whether or not the soundTray should be shown when any of the - * volumeUp-, volumeDown- or muteKeys is pressed. - - - - new FlxSoundGroup() - * The group sounds played via playMusic() are added to unless specified otherwise. - - - - new FlxSoundGroup() - * The group sounds in load() / play() / stream() are added to unless specified otherwise. - - - - ()]]> - * A list of all the sounds being played in the game. - - - - 1 - * Set this to a number between 0 and 1 to change the global volume. - - - - true - * Whenever switching volume is enabled or not. - - - - - - - - - - { Looped : true, Volume : 1 } - * Set up and play a looping background soundtrack. - * - * @param Music The sound file you want to loop in the background. - * @param Volume How loud the sound should be, from 0 to 1. - * @param Looped Whether to loop this music. - * @param Group The group to add this sound to. - - - - - - - - - - - - - - - { AutoPlay : false, AutoDestroy : false, Looped : false, Volume : 1 } - * Creates a new FlxSound object. - * - * @param EmbeddedSound The embedded sound resource you want to play. To stream, use the optional URL parameter instead. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param AutoPlay Whether to play the sound. - * @param URL Load a sound from an external web resource instead. Only used if EmbeddedSound = null. - * @param OnComplete Called when the sound finished playing. - * @param OnLoad Called when the sound finished loading. Called immediately for succesfully loaded embedded sounds. - * @return A FlxSound object. - - - - - - - - - - { AutoPlay : false } - - - - - - - * Method for sound caching (especially useful on mobile targets). The game may freeze - * for some time the first time you try to play a sound if you don't use this method. - * - * @param EmbeddedSound Name of sound assets specified in your .xml project file - * @return Cached Sound object - - - - * Calls FlxG.sound.cache() on all sounds that are embedded. - * WARNING: can lead to high memory usage. - - - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - * Plays a sound from an embedded sound. Tries to recycle a cached sound first. - * - * @param EmbeddedSound The embedded sound resource you want to play. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param OnComplete Called when the sound finished playing - * @return A FlxSound object. - - - - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - * Plays a sound from a URL. Tries to recycle a cached sound first. - * NOTE: Just calls FlxG.sound.load() with AutoPlay == true. - * - * @param URL Load a sound from an external web resource instead. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param OnComplete Called when the sound finished playing - * @param OnLoad Called when the sound finished loading. - * @return A FlxSound object. - - - - * Pause all sounds currently playing. - - - - * Resume playing existing sounds. - - - - - - - { ForceDestroy : false } - * Called by FlxGame on state changes to stop and destroy sounds. - * - * @param ForceDestroy Kill sounds even if persist is true. - - - - - - - - * Toggles muted, also activating the sound tray. - - - - - - - * Changes the volume by a certain amount, also activating the sound tray. - - - - * Shows the sound tray if it is enabled. - - - - - - - flixel.FlxGame - * Called by the game loop to make sure the sounds get updated each frame. - - - - flixel.FlxGame - - - - flixel.FlxGame - - - - * Loads saved sound preferences if they exist. - - - - - - - * Accessed via `FlxG.sound`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.FlxG - - - - - - - - - - - - - { Looped : true, Volume : 1 } - * Set up and play a looping background soundtrack. - * - * @param Music The sound file you want to loop in the background. - * @param Volume How loud the sound should be, from 0 to 1. - * @param Looped Whether to loop this music. - * @param Group The group to add this sound to. - - <_HX_SUPER__playMusic public="1" set="method" line="31"> - - - - - - - - { Looped : true, Volume : 1 } - - - - - - - - - - - - - - - { AutoPlay : false, AutoDestroy : false, Looped : false, Volume : 1 } - * Creates a new FlxSound object. - * - * @param EmbeddedSound The embedded sound resource you want to play. To stream, use the optional URL parameter instead. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param AutoPlay Whether to play the sound. - * @param URL Load a sound from an external web resource instead. Only used if EmbeddedSound = null. - * @param OnComplete Called when the sound finished playing. - * @param OnLoad Called when the sound finished loading. Called immediately for succesfully loaded embedded sounds. - * @return A FlxSound object. - - <_HX_SUPER__load public="1" set="method" line="148"> - - - - - - - - - - - - - { AutoPlay : false, AutoDestroy : false, Looped : false, Volume : 1 } - - - - - - - - - - { AutoPlay : false } - - <_HX_SUPER__loadHelper set="method" line="148"> - - - - - - - - { AutoPlay : false } - - - - * Calls FlxG.sound.cache() on all sounds that are embedded. - * WARNING: can lead to high memory usage. - - <_HX_SUPER__cacheAll public="1" set="method" line="31"> - - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - * Plays a sound from an embedded sound. Tries to recycle a cached sound first. - * - * @param EmbeddedSound The embedded sound resource you want to play. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param OnComplete Called when the sound finished playing - * @return A FlxSound object. - - <_HX_SUPER__play public="1" set="method" line="148"> - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - - - - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - * Plays a sound from a URL. Tries to recycle a cached sound first. - * NOTE: Just calls FlxG.sound.load() with AutoPlay == true. - * - * @param URL Load a sound from an external web resource instead. - * @param Volume How loud to play it (0 to 1). - * @param Looped Whether to loop this sound. - * @param Group The group to add this sound to. - * @param AutoDestroy Whether to destroy this sound when it finishes playing. - * Leave this value set to "false" if you want to re-use this FlxSound instance. - * @param OnComplete Called when the sound finished playing - * @param OnLoad Called when the sound finished loading. - * @return A FlxSound object. - - <_HX_SUPER__stream public="1" set="method" line="148"> - - - - - - - - - - - { AutoDestroy : true, Looped : false, Volume : 1 } - - - - * Pause all sounds currently playing. - - <_HX_SUPER__pause public="1" set="method" line="31"> - - - * Resume playing existing sounds. - - <_HX_SUPER__resume public="1" set="method" line="31"> - - - - - - { ForceDestroy : false } - * Called by FlxGame on state changes to stop and destroy sounds. - * - * @param ForceDestroy Kill sounds even if persist is true. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - { ForceDestroy : false } - - - - - - <_HX_SUPER__destroySound set="method" line="31"> - - - - - - * Toggles muted, also activating the sound tray. - - <_HX_SUPER__toggleMuted public="1" set="method" line="31"> - - - - - - * Changes the volume by a certain amount, also activating the sound tray. - - <_HX_SUPER__changeVolume public="1" set="method" line="31"> - - - - - - * Shows the sound tray if it is enabled. - - <_HX_SUPER__showSoundTray public="1" set="method" line="31"> - - - - - - flixel.FlxGame - * Called by the game loop to make sure the sounds get updated each frame. - - <_HX_SUPER__update set="method" line="31"> - - - - - - flixel.FlxGame - - <_HX_SUPER__onFocusLost set="method" line="31"> - - - flixel.FlxGame - - <_HX_SUPER__onFocus set="method" line="31"> - - - * Loads saved sound preferences if they exist. - - <_HX_SUPER__loadSavedPrefs set="method" line="31"> - - - - - <_HX_SUPER__set_volume set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.SoundFrontEnd - - - - - - false - * Whether the debugger has been paused. - - - - false - * Whether a "1 frame step forward" was requested. - - - - * Pause the main game loop - - - - * Resume the main game loop from FlxG.vcr.pause(); - - - - flixel.FlxG - - * Accessed via `FlxG.vcr`. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Pause the main game loop - - <_HX_SUPER__pause public="1" set="method" line="31"> - - - * Resume the main game loop from FlxG.vcr.pause(); - - <_HX_SUPER__resume public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.VCRFrontEnd - - - - - - - - - - - * Add an expression to the watch list in the debugger. - * The expression gets evaluated with hscript, and you can see its current value all the time. - * - * @param expression A Haxe expression written as a string that will be evaluated and watched. - * @param displayName Optional, display your own string instead of the expression string: e.g. "enemy count". - * @since 4.1.0 - - <_HX_SUPER__addExpression public="1" set="method" line="31"> - - - - - - - - - - * Remove an expression from the watch list in the debugger. - * - * @param displayName The display name of the registered expression, if you supplied one, or the Haxe expression that you want to remove, in string form. - * @since 4.1.0 - - <_HX_SUPER__removeExpression public="1" set="method" line="31"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.frontEnds.WatchFrontEnd - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.macros.FlxMacroUtil - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.replay.CodeValuePair - - - - - - * The random number generator seed value for this recording. - - - - * The current frame for this recording. - - - - * The number of frames in this recording. - - - - * Whether the replay has finished playing or not. - - <_frames> - - * Internal container for all the frames in this replay. - - <_capacity> - - * Internal tracker for max number of frames we can fit before growing the _frames again. - - <_marker> - - * Internal helper variable for keeping track of where we are in _frames during recording or replay. - - - - * Clean up memory. - - - - - - - * Create a new gameplay recording. Requires the current random number generator seed. - * - * @param Seed The current seed from the random number generator. - - - - - - - * Load replay data from a String object. - * Strings can come from embedded assets or external - * files loaded through the debugger overlay. - * @param FileContents A String object containing a gameplay recording. - - - - * Save the current recording data off to a String object. - * Basically goes through and calls FrameRecord.save() on each frame in the replay. - * return The gameplay recording in simple ASCII format. - - - - * Get the current input data from the input managers and store it in a new frame record. - - - - * Get the current frame record data and load it into the input managers. - - - - * Reset the replay back to the first frame. - - - - * Common initialization terms used by both create() and load() to set up the replay object. - - - - * Instantiate a new replay object. Doesn't actually do much until you call create() or load(). - - * The replay object both records and replays game recordings, - * as well as handle saving and loading replays to and from files. - * Gameplay recordings are essentially a list of keyboard and mouse inputs, - * but since Flixel is fairly deterministic, we can use these to play back - * recordings of gameplay with a decent amount of fidelity. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Create a new gameplay recording. Requires the current random number generator seed. - * - * @param Seed The current seed from the random number generator. - - <_HX_SUPER__create public="1" set="method" line="31"> - - - - - - - - - * Load replay data from a String object. - * Strings can come from embedded assets or external - * files loaded through the debugger overlay. - * @param FileContents A String object containing a gameplay recording. - - <_HX_SUPER__load public="1" set="method" line="31"> - - - - - - * Save the current recording data off to a String object. - * Basically goes through and calls FrameRecord.save() on each frame in the replay. - * return The gameplay recording in simple ASCII format. - - <_HX_SUPER__save public="1" set="method" line="148"> - - - * Get the current input data from the input managers and store it in a new frame record. - - <_HX_SUPER__recordFrame public="1" set="method" line="31"> - - - * Get the current frame record data and load it into the input managers. - - <_HX_SUPER__playNextFrame public="1" set="method" line="31"> - - - * Reset the replay back to the first frame. - - <_HX_SUPER__rewind public="1" set="method" line="31"> - - - * Common initialization terms used by both create() and load() to set up the replay object. - - <_HX_SUPER__init set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.replay.FlxReplay - - - - - - * Which frame of the game loop this record is from or for. - - - - * An array of simple integer pairs referring to what key is pressed, and what state its in. - - - - * A container for the 4 mouse state integers. - - - - - - - - - * Load this frame record with input data from the input managers. - * @param Frame What frame it is. - * @param Keys Keyboard data from the keyboard manager. - * @param Mouse Mouse data from the mouse manager. - * @return A reference to this FrameRecord object. - - - - * Clean up memory. - - - - * Save the frame record data to array simple ASCII string. - * @return A String object containing the relevant frame record data. - - - - - - - * Load the frame record data from array simple ASCII string. - * @param Data A String object containing the relevant frame record data. - - - - * Instantiate array new frame record. - - * Helper class for the new replay system. Represents all the game inputs for one "frame" or "step" of the game loop. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * Load this frame record with input data from the input managers. - * @param Frame What frame it is. - * @param Keys Keyboard data from the keyboard manager. - * @param Mouse Mouse data from the mouse manager. - * @return A reference to this FrameRecord object. - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - * Save the frame record data to array simple ASCII string. - * @return A String object containing the relevant frame record data. - - <_HX_SUPER__save public="1" set="method" line="148"> - - - - - - * Load the frame record data from array simple ASCII string. - * @param Data A String object containing the relevant frame record data. - - <_HX_SUPER__load public="1" set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.replay.FrameRecord - - - - - - - - - * The state of the mouse wheel. - - - - - - - - - - * Instantiate a new mouse input record. - * - * @param X The main X value of the mouse in screen space. - * @param Y The main Y value of the mouse in screen space. - * @param Button The state of the left mouse button. - * @param Wheel The state of the mouse wheel. - - * A helper class for the frame records, part of the replay/demo/recording system. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.replay.MouseRecord - - - - - - - - - - <_HX_SUPER__onMeasure public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="31"> - - - - - - - - - - <_HX_SUPER__updateDeviceSize set="method" line="31"> - - - - - - <_HX_SUPER__updateScaleOffset set="method" line="31"> - - <_HX_SUPER__updateOffsetX set="method" line="31"> - - <_HX_SUPER__updateOffsetY set="method" line="31"> - - <_HX_SUPER__updateGamePosition set="method" line="31"> - - - - - <_HX_SUPER__set_horizontalAlign set="method" line="148"> - - - - - - - - <_HX_SUPER__set_verticalAlign set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.BaseScaleMode - - - - - - - * `FillScaleMode` is a scaling mode which stretches and squashes the game to exactly fit the provided window. - * This may result in the graphics of your game being distorted if the user resizes their game window. - * - * To enable it in your project, use `FlxG.scaleMode = new FillScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__updateGamePosition set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.FillScaleMode - - - - - - - false - - - - false - - - - - - - - - - - - - - - - - - { fixedHeight : false, fixedWidth : false } - - * `FixedScaleAdjustSizeScaleMode` is a scaling mode which maintains the game's scene at a fixed size. - * This will clip off the edges of the scene for dimensions which are too small. - * However, unlike `FixedScaleMode`, this mode will extend the width of the current scene to match the window scale. - * The result is that objects that would be offscreen on smaller window sizes will be visible in larger ones. - * - * Note that compared with `StageSizeScaleMode`, this scale mode aligns with the center of the game's screen, - * so the coordinates 0,0 may not be located at the top left of your game window. - * - * To enable it in your project, use `FlxG.scaleMode = new FixedScaleAdjustSizeScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__onMeasure public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="31"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.FixedScaleAdjustSizeScaleMode - - - - - - - - - - - * `FixedScaleMode` is a scaling mode which maintains the game's scene at a fixed size. - * This will clip off the edges of the scene for dimensions which are too small, - * and leave black margins on the sides for dimensions which are too large. - * - * To enable it in your project, use `FlxG.scaleMode = new FixedScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="31"> - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.FixedScaleMode - - - - - - - - - - - * `PixelPerfectScaleMode` is a scaling mode which maintains the game's aspect ratio. - * When you shrink or grow the window, the width and height of the game will adjust, - * either scaling the game or adding black bars as needed. - * - * However, it will only scale the game by integer factors, to maintain pixel perfect rendering. - * This may cause the game window to be windowboxed on all sides, scaling the game up only when there is - * enough room to exactly double the render scale. - * - * To enable it in your project, use `FlxG.scaleMode = new PixelPerfectScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="148"> - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.PixelPerfectScaleMode - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="31"> - - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.RatioScaleMode - - - - - <_widthScale> - <_heightScale> - - - - - - - - - - - - - - - - - - - - - * `RelativeScaleMode` is a scaling mode which stretches and squashes the game to exactly fit the provided window. - * It acts similar to the `FillScaleMode`, however there is one major difference. - * `RelativeScaleMode` takes two parameters, which represent the width scale and height scale. - * - * For example, `RelativeScaleMode(1, 0.5)` will cause the game to take up 100% of the window width, - * but only 50% of the window height, filling in the remaining space with a black margin. - * - * To enable it in your project, use `FlxG.scaleMode = new RelativeScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__setScale public="1" set="method" line="31"> - - - - - - - - - - <_HX_SUPER__updateGameSize set="method" line="31"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.RelativeScaleMode - - - - - - - - - - - * `StageSizeScaleMode` is a scaling mode which maintains the game's scene at a fixed size. - * This will clip off the edges of the scene for dimensions which are too small. - * However, unlike `FixedScaleMode`, this mode will extend the width of the current scene to match the window scale. - * The result is that objects that would be offscreen on smaller window sizes will be visible in larger ones. - * - * Note that compared with `FixedScaleAdjustSizeScaleMode`, this scale mode aligns with the top left of the game's screen. - * The coordinates 0,0 are always located at the top left of your game window. - * - * To enable it in your project, use `FlxG.scaleMode = new StageSizeScaleMode();`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__onMeasure public="1" set="method" line="31"> - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.scaleModes.StageSizeScaleMode - - - - - - - * Redraws the big arrow on the focus lost screen. - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Redraws the big arrow on the focus lost screen. - - <_HX_SUPER__draw public="1" set="method" line="31"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.ui.FlxFocusLostScreen - - - - - - - "flixel/sounds/beep" - The sound that'll play when you change volume. - - - - new TextField() - * "VOLUME" text. - - - - * Because reading any data from DisplayObject is insanely expensive in hxcpp, keep track of whether we need to update it or not. - - <_timer> - - * Helps us auto-hide the sound tray after a volume change. - - <_bars> - - * Helps display the volume bars on the sound tray. - - <_width expr="80"> - - 80 - * How wide the sound tray background is. - - <_defaultScale expr="2.0"> - - 2.0 - - - - - - - * This function just updates the soundtray object. - - - - - - - { Silent : false } - * Makes the little volume tray slide out. - * - * @param Silent Whether or not it should beep. - - - - - - * Sets up the "sound tray", the little volume meter that pops down sometimes. - - * The flixel sound tray, the little volume meter that pops down sometimes. - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * This function just updates the soundtray object. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - { Silent : false } - * Makes the little volume tray slide out. - * - * @param Silent Whether or not it should beep. - - <_HX_SUPER__show public="1" set="method" line="31"> - - - - - { Silent : false } - - - <_HX_SUPER__screenCenter public="1" set="method" line="31"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.ui.FlxSoundTray - - - - - - - - * The function to be called when the button is pressed. - - - - true - * Whether or not the downHandler function will be called when - * the button is clicked. - - - - false - * Whether this is a toggle button or not. If so, a Boolean representing the current - * state will be passed to the callback function, and the alpha value will be lowered when toggled. - - - - false - * Whether the button has been toggled in toggleMode. - - <_icon> - - * The icon this button uses. - - <_mouseDown expr="false"> - - false - * Whether the mouse has been pressed while over this button. - - - - - - - * Change the Icon of the button - * - * @param Icon The new icon to use for the button. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { ToggleMode : false } - * Create a new FlxSystemButton - * - * @param Icon The icon to use for the button. - * @param UpHandler The function to be called when the button is pressed. - * @param ToggleMode Whether this is a toggle button or not. - - * A basic button for the debugger, extends flash.display.Sprite. - * Cannot be used in a FlxState. - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Change the Icon of the button - * - * @param Icon The new icon to use for the button. - - <_HX_SUPER__changeIcon public="1" set="method" line="31"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__onMouseUp set="method" line="31"> - - - - - - - - <_HX_SUPER__onMouseDown set="method" line="31"> - - - - - - - - <_HX_SUPER__set_toggled set="method" line="148"> - - - - <__interp> - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.system.ui.FlxSystemButton - - - - - - - * Font for text rendering. - - - - "" - * Text to display. - - <_colorParams expr="new ColorTransform()"> - - new ColorTransform() - * Helper object to avoid many ColorTransform allocations - - <_lines expr="[]"> - - [] - * Helper array which contains actual strings for rendering. - - <_linesWidth expr="[]"> - - [] - * Helper array which contains width of each displayed lines. - - - - FlxTextAlign.LEFT - * Specifies how the text field should align text. - * JUSTIFY alignment isn't supported. - * Note: 'autoSize' must be set to false or alignment won't show any visual differences. - - - - 0 - * The distance to add between lines. - - - - 0 - * The distance to add between letters. - - - - false - * Whether to convert text to upper case or not. - - - - true - * A Boolean value that indicates whether the text field has word wrap. - - - - true - * Whether word wrapping algorithm should wrap lines by words or by single character. - * Default value is true. - - - - true - * Whether this text field have fixed width or not. - * Default value if true. - - - - 0 - * Number of pixels between text and text field border - - - - * Width of the text in this text field. - - - - * Height of the text in this text field. - - - - * Height of the single line of text (without lineSpacing). - - - - 4 - * Number of space characters in one tab. - - - - FlxColor.WHITE - * The color of the text in 0xAARRGGBB format. - * Result color of text will be multiplication of textColor and color. - - - - false - * Whether to use textColor while rendering or not. - - - - NONE - * Use a border style - - - - FlxColor.BLACK - * The color of the border in 0xAARRGGBB format - - - - 1 - * The size of the border, in pixels. - - - - 0 - * How many iterations do use when drawing the border. 0: only 1 iteration, 1: one iteration for every pixel in borderSize - * A value of 1 will have the best quality for large border sizes, but might reduce performance when changing text. - * NOTE: If the borderSize is 1, borderQuality of 0 or 1 will have the exact same effect (and performance). - - - - * Offset that is applied to the shadow border style, if active. - * x and y are multiplied by borderSize. Default is (1, 1), or lower-right corner. - - - - false - * Specifies whether the text should have background - - - - FlxColor.TRANSPARENT - * Specifies the color of background - - - - true - * Specifies whether the text field will break into multiple lines or not on overflow. - - - - * Reflects how many lines have this text field. - - - - - - <_fieldWidth> - - - true - - - - true - - - - true - - - - - - - * Helper bitmap buffer for text pixels but without any color transformations - - - - * Clears all resources used. - - - - - - - { Force : false } - * Forces graphic regeneration for this text field. - - - - - - - - { useTiles : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - { RunOnCpp : false } - - - - - - - - - * Calculates the size of text field. - - - - - - - * Calculates width of the line with provided index - * - * @param lineIndex index of the line in _lines array - * @return The width of the line - - - - - - - * Calculates width of provided string (for current font). - * - * @param str String to calculate width for - * @return The width of result bitmap text. - - - - * Just cuts the lines which are too long to fit in the field. - - - - * Automatically wraps text by figuring out how many characters can fit on a - * single line, and splitting the remainder onto a new line. - - - - - - - - * Helper function for splitting line of text into separate words. - * - * @param line line to split. - * @param words result array to fill with words. - - - - - - - - * Wraps provided line by words. - * - * @param words The array of words in the line to process. - * @param newLines Array to fill with result lines. - - - - - - - - * Wraps provided line by characters (as in standart flash text fields). - * - * @param words The array of words in the line to process. - * @param newLines Array to fill with result lines. - - - - - - - { useTiles : false } - * Internal method for updating helper data for text rendering - - - - - - - - - - { useTiles : false } - - - - - - - - - - - - - - - - - - - { useTiles : false } - - - - - - - - - - - { useTiles : false, isFront : true } - - - - - - - - - - { isFront : true } - - - - - - - - - { isFront : true } - - - - - - - - - - { Quality : 1, Size : 1, Color : 0 } - * Set border's style (shadow, outline, etc), color, and size all in one go! - * - * @param Style outline style - * @param Color outline color in flash 0xAARRGGBB format - * @param Size outline size in pixels - * @param Quality outline quality - # of iterations to use when drawing. 0:just 1, 1:equal number to BorderSize - - - - - - - - * Sets the width of the text field. If the text does not fit, it will spread on multiple lines. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Checks if the specified code is one of the Unicode Combining Diacritical Marks - * @param Code The charactercode we want to check - * @return Bool Returns true if the code is a Unicode Combining Diacritical Mark - - - - - - - * Constructs a new text field component. - * Warning: The default font may work incorrectly on HTML5 - * and is utterly unreliable on Brave Browser with shields up. - * - * @param font Optional parameter for component's font prop - - * Extends FlxSprite to support rendering text. - * Can tint, fade, rotate and scale just like a sprite. - * Doesn't really animate though, as far as I know. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clears all resources used. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - { Force : false } - * Forces graphic regeneration for this text field. - - <_HX_SUPER__drawFrame public="1" set="method" line="31"> - - - - - { Force : false } - - - <_HX_SUPER__updateHitbox set="method" line="148"> - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_clipRect set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_textColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_useTextColor set="method" line="148"> - - - - - - - - - { RunOnCpp : false } - - <_HX_SUPER__calcFrame set="method" line="31"> - - - - - { RunOnCpp : false } - - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - - <_HX_SUPER__updateText set="method" line="31"> - - - * Calculates the size of text field. - - <_HX_SUPER__computeTextSize set="method" line="31"> - - - - - - * Calculates width of the line with provided index - * - * @param lineIndex index of the line in _lines array - * @return The width of the line - - <_HX_SUPER__getLineWidth public="1" set="method" line="148"> - - - - - - - - - * Calculates width of provided string (for current font). - * - * @param str String to calculate width for - * @return The width of result bitmap text. - - <_HX_SUPER__getStringWidth public="1" set="method" line="148"> - - - - - - * Just cuts the lines which are too long to fit in the field. - - <_HX_SUPER__cutLines set="method" line="31"> - - - * Automatically wraps text by figuring out how many characters can fit on a - * single line, and splitting the remainder onto a new line. - - <_HX_SUPER__wrap set="method" line="31"> - - - - - - - * Helper function for splitting line of text into separate words. - * - * @param line line to split. - * @param words result array to fill with words. - - <_HX_SUPER__splitLineIntoWords set="method" line="31"> - - - - - - - - - - - * Wraps provided line by words. - * - * @param words The array of words in the line to process. - * @param newLines Array to fill with result lines. - - <_HX_SUPER__wrapLineByWord set="method" line="31"> - - - - - - - - - - - * Wraps provided line by characters (as in standart flash text fields). - * - * @param words The array of words in the line to process. - * @param newLines Array to fill with result lines. - - <_HX_SUPER__wrapLineByCharacter set="method" line="31"> - - - - - - - - - - { useTiles : false } - * Internal method for updating helper data for text rendering - - <_HX_SUPER__updateTextBitmap set="method" line="31"> - - - - - { useTiles : false } - - - - - - - - - - { useTiles : false } - - <_HX_SUPER__drawLine set="method" line="31"> - - - - - - - - { useTiles : false } - - - - - - - - <_HX_SUPER__blitLine set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__tileLine set="method" line="31"> - - - - - - - - - - - { useTiles : false } - - <_HX_SUPER__updatePixels set="method" line="31"> - - - - - { useTiles : false } - - - - - - - - - - - { useTiles : false, isFront : true } - - <_HX_SUPER__drawText set="method" line="31"> - - - - - - - - - { useTiles : false, isFront : true } - - - - - - - - - - { isFront : true } - - <_HX_SUPER__blitText set="method" line="31"> - - - - - - - - { isFront : true } - - - - - - - - - { isFront : true } - - <_HX_SUPER__tileText set="method" line="31"> - - - - - - - { isFront : true } - - - <_HX_SUPER__get_fieldWidth set="method" line="148"> - - - - - - * Sets the width of the text field. If the text does not fit, it will spread on multiple lines. - - <_HX_SUPER__set_fieldWidth set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alignment set="method" line="148"> - - - - - - - - <_HX_SUPER__set_multiLine set="method" line="148"> - - - - - - - - <_HX_SUPER__set_font set="method" line="148"> - - - - - - - - <_HX_SUPER__set_lineSpacing set="method" line="148"> - - - - - - - - <_HX_SUPER__set_letterSpacing set="method" line="148"> - - - - - - - - <_HX_SUPER__set_autoUpperCase set="method" line="148"> - - - - - - - - <_HX_SUPER__set_wordWrap set="method" line="148"> - - - - - - - - <_HX_SUPER__set_wrapByWord set="method" line="148"> - - - - - - - - <_HX_SUPER__set_autoSize set="method" line="148"> - - - - - - - - <_HX_SUPER__set_padding set="method" line="148"> - - - - - - - - <_HX_SUPER__set_numSpacesInTab set="method" line="148"> - - - - - - - - <_HX_SUPER__set_background set="method" line="148"> - - - - - - - - <_HX_SUPER__set_backgroundColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderStyle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderSize set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderQuality set="method" line="148"> - - - - - <_HX_SUPER__get_numLines set="method" line="148"> - - <_HX_SUPER__get_textWidth set="method" line="148"> - - <_HX_SUPER__get_textHeight set="method" line="148"> - - <_HX_SUPER__get_lineHeight set="method" line="148"> - - <_HX_SUPER__get_width set="method" line="148"> - - <_HX_SUPER__get_height set="method" line="148"> - - - - - - * Checks if the specified code is one of the Unicode Combining Diacritical Marks - * @param Code The charactercode we want to check - * @return Bool Returns true if the code is a Unicode Combining Diacritical Mark - - <_HX_SUPER__isUnicodeComboMark set="method" line="148"> - - - - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.text.FlxBitmapText - - - - - - * The leading (vertical space between lines) of the text. - * @since 4.10.0 - - - - * The border color if the text has a shadow or a border - - - - - - - - - - - - - - - * @param FontColor Font color, in `0xRRGGBB` format. Inherits from the default format by default. - * @param Bold Whether the text should be bold (must be supported by the font). `false` by default. - * @param Italic Whether the text should be in italics (must be supported by the font). Only works on Flash. `false` by default. - * @param BorderColor Border color, in `0xAARRGGBB` format. By default, no border (`null` / transparent). - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.text.FlxText.applyFormats - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * A simple shadow to the lower-right. - * Use `FlxText.shadowOffset` for custom placement. - * Outline on all 8 sides - * Outline, optimized using only 4 draw calls (might not work for narrow and/or 1-pixel fonts) - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast "left" - - - - -
      - - - cast "center" - - - - * Warning: on Flash, this can have a negative impact on performance - * of multiline texts that are frequently regenerated (especially with - * `borderStyle == OUTLINE`) due to a workaround for blurry rendering. -
      - - - - cast "right" - - - - - - - - cast "justify" - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - -
      -
      - - - - - cast "left" - - - - -
      - - - cast "center" - - - - * Warning: on Flash, this can have a negative impact on performance - * of multiline texts that are frequently regenerated (especially with - * `borderStyle == OUTLINE`) due to a workaround for blurry rendering. -
      - - - - cast "right" - - - - - - - - cast "justify" - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - -
      - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast ("left", flixel.text.FlxTextAlign) - -
      - - cast ("center", flixel.text.FlxTextAlign) - * Warning: on Flash, this can have a negative impact on performance - * of multiline texts that are frequently regenerated (especially with - * `borderStyle == OUTLINE`) due to a workaround for blurry rendering. -
      - - - cast ("right", flixel.text.FlxTextAlign) - - - - cast ("justify", flixel.text.FlxTextAlign) - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - -
      - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.text.FlxText - flixel.text.FlxText.FlxTextFormat - flixel.text.FlxText.FlxTextFormatRange - flixel.text.FlxText.FlxTextFormatMarkerPair - flixel.text.FlxText.FlxTextBorderStyle - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.AlignType - - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.text.FlxText - flixel.text.FlxText.FlxTextFormat - flixel.text.FlxText.FlxTextFormatRange - flixel.text.FlxText.FlxTextFormatMarkerPair - flixel.text.FlxText.FlxTextBorderStyle - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.AlignType - - - - - - - - - <_HX_SUPER__set_leading set="method" line="148"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.text.FlxText - flixel.text.FlxText.FlxTextFormat - flixel.text.FlxText.FlxTextFormatRange - flixel.text.FlxText.FlxTextFormatMarkerPair - flixel.text.FlxText.FlxTextBorderStyle - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.AlignType - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - { Force : false } - - <_HX_SUPER__drawFrame public="1" set="method" line="31"> - - - - - { Force : false } - - - - - - - * Stamps text onto specified atlas object and loads graphic from this atlas. - * WARNING: Changing text after stamping it on the atlas will break the atlas, so do it only for - * static texts and only after making all the text customizing (like `size`, `alignment`, `color`, etc.) - * - * @param atlas atlas to stamp graphic to. - * @return whether the graphic was stamped on the atlas successfully - - <_HX_SUPER__stampOnAtlas public="1" set="method" line="148"> - - - - - - - - - - "); - * text.applyMarkup("Hey @Buddy@, what is going @on?@", [yellow, green]); - * ``` - * - * @param input The text you want to format - * @param rules `FlxTextFormat`s to selectively apply, paired with marker strings]]> - - <_HX_SUPER__applyMarkup public="1" set="method" line="148"> - - - - - - - - - - - - { End : -1, Start : -1 } - * Adds another format to this `FlxText` - * - * @param Format The format to be added. - * @param Start The start index of the string where the format will be applied. - * @param End The end index of the string where the format will be applied. - - <_HX_SUPER__addFormat public="1" set="method" line="148"> - - - - - - - { End : -1, Start : -1 } - - - - - - - - - * Removes a specific `FlxTextFormat` from this text. - * If a range is specified, this only removes the format when it touches that range. - - <_HX_SUPER__removeFormat public="1" set="method" line="148"> - - - - - - - - * Clears all the formats applied. - - <_HX_SUPER__clearFormats public="1" set="method" line="148"> - - - - - - - - - - - - { EmbeddedFont : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - * You can use this if you have a lot of text parameters to set instead of the individual properties. - * - * @param Font The name of the font face for the text display. - * @param Size The size of the font (in pixels essentially). - * @param Color The color of the text in `0xRRGGBB` format. - * @param Alignment The desired alignment - * @param BorderStyle Which border style to use - * @param BorderColor Color for the border, `0xAARRGGBB` format - * @param EmbeddedFont Whether this text field uses embedded fonts or not - * @return This `FlxText` instance (nice for chaining stuff together, if you're into that). - - <_HX_SUPER__setFormat public="1" set="method" line="148"> - - - - - - - - - - - { EmbeddedFont : true, BorderColor : FlxColor.TRANSPARENT, Color : FlxColor.WHITE, Size : 8 } - - - <_HX_SUPER__updateHitbox set="method" line="148"> - - - - - <_HX_SUPER__set_fieldWidth set="method" line="148"> - - - - - <_HX_SUPER__get_fieldWidth set="method" line="148"> - - - - - <_HX_SUPER__set_autoSize set="method" line="148"> - - - - - <_HX_SUPER__get_autoSize set="method" line="148"> - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - - - - - <_HX_SUPER__set_size set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__set_font set="method" line="148"> - - - - - - - - <_HX_SUPER__set_systemFont set="method" line="148"> - - - - - - - - <_HX_SUPER__set_bold set="method" line="148"> - - - - - - - - <_HX_SUPER__set_italic set="method" line="148"> - - - - - - - - <_HX_SUPER__set_wordWrap set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alignment set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderStyle set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderColor set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderSize set="method" line="148"> - - - - - - - - <_HX_SUPER__set_borderQuality set="method" line="148"> - - - - - - - - <_HX_SUPER__set_graphic set="method" line="148"> - - - - - <_HX_SUPER__get_width set="method" line="148"> - - <_HX_SUPER__get_height set="method" line="148"> - - <_HX_SUPER__updateColorTransform set="method" line="31"> - - <_HX_SUPER__regenGraphic set="method" line="31"> - - - - - - * Internal function to draw textField to a BitmapData, if flash it calculates every line x to avoid blurry lines. - - <_HX_SUPER__drawTextFieldTo set="method" line="31"> - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - { RunOnCpp : false } - * Internal function to update the current animation frame. - * - * @param RunOnCpp Whether the frame should also be recalculated if we're on a non-flash target - - <_HX_SUPER__calcFrame set="method" line="31"> - - - - - { RunOnCpp : false } - - - <_HX_SUPER__applyBorderStyle set="method" line="31"> - - - - - - - { UseBorderColor : false } - - <_HX_SUPER__applyFormats set="method" line="31"> - - - - - - { UseBorderColor : false } - - - - - - - - - { withAlign : true } - - <_HX_SUPER__copyTextFormat set="method" line="31"> - - - - - - - { withAlign : true } - - - - * A helper function for updating the TextField that we use for rendering. - * - * @return A writable copy of `TextField.defaultTextFormat`. - - <_HX_SUPER__dtfCopy set="method" line="148"> - - - - - <_HX_SUPER__set_frames set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.text.FlxText - flixel.text.FlxText.FlxTextFormat - flixel.text.FlxText.FlxTextFormatRange - flixel.text.FlxText.FlxTextFormatMarkerPair - flixel.text.FlxText.FlxTextBorderStyle - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.FlxTextAlign - flixel.text.FlxText.AlignType - - - - - - - [0, 0, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 13, 13, 0, 14, 0, 0, 0, 0, 18, 18, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 53, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 0, 0, 64, 64, 0, 65, 0, 0, 0, 0, 69, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 0, 0, 88, 88, 0, 89, 0, 0, 0, 0, 93, 93, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 162, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 175, 0, 176, 0, 0, 0, 0, 0, 181, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 202, 0, 203, 0, 0, 0, 0, 0, 208, 0, 209] - - - - new FlxDiagonalPathfinder() - - - - OFF - * Set this flag to use one of the 16-tile binary auto-tile algorithms (OFF, AUTO, or ALT). - - - - 0 - - - - 0 - - - - 0 - - - - * Set this to create your own image index remapper, so you can create your own tile layouts. - * Mostly useful in combination with the auto-tilers. - * - * Normally, each tile's value in _data corresponds to the index of a - * tile frame in the tilesheet. With this active, each value in _data - * is a lookup value to that index in customTileRemap. - * - * Example: - * customTileRemap = [10,9,8,7,6] - * means: 0=10, 1=9, 2=8, 3=7, 4=6 - - <_randomIndices> - - * If these next two arrays are not null, you're telling FlxTilemap to - * draw random tiles in certain places. - * - * _randomIndices is a list of tilemap values that should be replaced - * by a randomly selected value. The available values are chosen from - * the corresponding array in randomize_choices - * - * So if you have: - * randomIndices = [12,14] - * randomChoices = [[0,1,2],[3,4,5,6,7]] - * - * Everywhere the tilemap has a value of 12 it will be replaced by 0, 1, or, 2 - * Everywhere the tilemap has a value of 14 it will be replaced by 3, 4, 5, 6, 7 - - <_randomChoices> - <_randomLambda> - - * Setting this function allows you to control which choice will be selected for each element within _randomIndices array. - * Must return a 0-1 value that gets multiplied by _randomChoices[randIndex].length; - - <_tileObjects expr="[]"> - - [] - * Internal collection of tile objects, one for each type of tile in the map (NOT one for every single tile in the whole map). - - <_startingIndex expr="0"> - - 0 - * Internal, used to sort of insert blank tiles in front of the tiles in the provided graphic. - - <_data> - - * Internal representation of the actual tile data, as a large 1D array of integers. - - <_drawIndex expr="0"> - - 0 - - <_collideIndex expr="0"> - - 0 - - - - - - - * Virtual methods, must be implemented in each renderers - - - - - - - - - - - - - - - - - - - - - { midpoint : true } - - - - - - - - - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * Note: In flixel 5.0.0, this was redone, the old method is now `rayStep` - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - - - - - - - - - { resolution : 1 } - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * This method checks at steps and can miss, for better results use `ray()` - * @since 5.0.0 - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @param resolution Defaults to 1, meaning check every tile or so. Higher means more checks! - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - - - - - - - - * Calculates at which point where the given line, from start to end, first enters the tilemap. - * If the line starts inside the tilemap, a copy of start is returned. - * If the line never enters the tilemap, null is returned. - * - * Note: If a result vector is supplied and the line is outside the tilemap, null is returned - * and the supplied result is unchanged - * @since 5.0.0 - * - * @param start The start of the line - * @param end The end of the line - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the tilemap. - * @return The point of entry of the line into the tilemap, if possible. - - - - - - - - - * Calculates at which point where the given line, from start to end, was last inside the tilemap. - * If the line ends inside the tilemap, a copy of end is returned. - * If the line is never inside the tilemap, null is returned. - * - * Note: If a result vector is supplied and the line is outside the tilemap, null is returned - * and the supplied result is unchanged - * @since 5.0.0 - * - * @param start The start of the line - * @param end The end of the line - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the tilemap. - * @return The point of exit of the line from the tilemap, if possible. - - - - - - - - - - - - - - { flipCallbackParams : false } - - - - - - - { dirty : true } - - - - - - - - - - - - - - - { collideIndex : 1, drawIndex : 1, startingIndex : 0, tileHeight : 0, tileWidth : 0 } - * Load the tilemap with string data and a tile graphic. - * - * @param mapData A csv-formatted string indicating what order the tiles should go in (or the path to that file) - * @param tileGraphic All the tiles you want to use, arranged in a strip corresponding to the numbers in MapData. - * @param tileWidth The width of your tiles (e.g. 8) - defaults to height of the tile graphic if unspecified. - * @param tileHeight The height of your tiles (e.g. 8) - defaults to width if unspecified. - * @param autoTile Whether to load the map using an automatic tile placement algorithm (requires 16 tiles!). - * Setting this to either AUTO or ALT will override any values you put for StartingIndex, DrawIndex, or CollideIndex. - * @param startingIndex Used to sort of insert empty tiles in front of the provided graphic. - * Default is 0, usually safest ot leave it at that. Ignored if AutoTile is set. - * @param drawIndex Initializes all tile objects equal to and after this index as visible. - * Default value is 1. Ignored if AutoTile is set. - * @param collideIndex Initializes all tile objects equal to and after this index as allowCollisions = ANY. - * Default value is 1. Ignored if AutoTile is set. - * Can override and customize per-tile-type collision behavior using setTileProperties(). - * @return A reference to this instance of FlxTilemap, for chaining as usual :) - - - - - - - - - - - - - - - - { collideIndex : 1, drawIndex : 1, startingIndex : 0, tileHeight : 0, tileWidth : 0 } - * Load the tilemap with string data and a tile graphic. - * - * @param mapData An array containing the (non-negative) tile indices. - * @param widthInTiles The width of the tilemap in tiles - * @param heightInTiles The height of the tilemap in tiles - * @param tileGraphic All the tiles you want to use, arranged in a strip corresponding to the numbers in MapData. - * @param tileWidth The width of your tiles (e.g. 8) - defaults to height of the tile graphic if unspecified. - * @param tileHeight The height of your tiles (e.g. 8) - defaults to width if unspecified. - * @param autoTile Whether to load the map using an automatic tile placement algorithm (requires 16 tiles!). - * Setting this to either AUTO or ALT will override any values you put for StartingIndex, DrawIndex, or CollideIndex. - * @param startingIndex Used to sort of insert empty tiles in front of the provided graphic. - * Default is 0, usually safest ot leave it at that. Ignored if AutoTile is set. - * @param drawIndex Initializes all tile objects equal to and after this index as visible. - * Default value is 1. Ignored if AutoTile is set. - * @param collideIndex Initializes all tile objects equal to and after this index as allowCollisions = ANY. - * Default value is 1. Ignored if AutoTile is set. - * Can override and customize per-tile-type collision behavior using setTileProperties(). - * @return A reference to this instance of FlxTilemap, for chaining as usual :) - - - - - - - - - - - - - - { collideIndex : 1, drawIndex : 1, startingIndex : 0, tileHeight : 0, tileWidth : 0 } - * Load the tilemap with string data and a tile graphic. - * - * @param mapData A 2D array containing the (non-negative) tile indices. The length of the inner arrays should be consistent. - * @param tileGraphic All the tiles you want to use, arranged in a strip corresponding to the numbers in MapData. - * @param tileWidth The width of your tiles (e.g. 8) - defaults to height of the tile graphic if unspecified. - * @param tileHeight The height of your tiles (e.g. 8) - defaults to width if unspecified. - * @param autoTile Whether to load the map using an automatic tile placement algorithm (requires 16 tiles!). - * Setting this to either AUTO or ALT will override any values you put for StartingIndex, DrawIndex, or CollideIndex. - * @param startingIndex Used to sort of insert empty tiles in front of the provided graphic. - * Default is 0, usually safest ot leave it at that. Ignored if AutoTile is set. - * @param drawIndex Initializes all tile objects equal to and after this index as visible. - * Default value is 1. Ignored if AutoTile is set. - * @param collideIndex Initializes all tile objects equal to and after this index as allowCollisions = ANY. - * Default value is 1. Ignored if AutoTile is set. - * Can override and customize per-tile-type collision behavior using setTileProperties(). - * @return A reference to this instance of FlxTilemap, for chaining as usual :) - - - - - - - - - - - - - - - - - { collideIndex : 1, drawIndex : 1, startingIndex : 0, tileHeight : 0, tileWidth : 0, scale : 1, invert : false } - * Load the tilemap with image data and a tile graphic. - * Black pixels are flagged as 'solid' by default, non-black pixels are set as non-colliding. Black pixels must be PURE BLACK. - * @param mapGraphic The image you want to use as a source of map data, where each pixel is a tile (or more than one tile if you change Scale's default value). Preferably black and white. - * @param invert Load white pixels as solid instead. - * @param scale Default is 1. Scale of 2 means each pixel forms a 2x2 block of tiles, and so on. - * @param colorMap An array of color values (alpha values are ignored) in the order they're intended to be assigned as indices - * @param tileGraphic All the tiles you want to use, arranged in a strip corresponding to the numbers in MapData. - * @param tileWidth The width of your tiles (e.g. 8) - defaults to height of the tile graphic if unspecified. - * @param tileHeight The height of your tiles (e.g. 8) - defaults to width if unspecified. - * @param autoTile Whether to load the map using an automatic tile placement algorithm (requires 16 tiles!). - * Setting this to either AUTO or ALT will override any values you put for StartingIndex, DrawIndex, or CollideIndex. - * @param startingIndex Used to sort of insert empty tiles in front of the provided graphic. - * Default is 0, usually safest ot leave it at that. Ignored if AutoTile is set. - * @param drawIndex Initializes all tile objects equal to and after this index as visible. - * Default value is 1. Ignored if AutoTile is set. - * @param collideIndex Initializes all tile objects equal to and after this index as allowCollisions = ANY. - * Default value is 1. Ignored if AutoTile is set. - * Can override and customize per-tile-type collision behavior using setTileProperties(). - * @return A reference to this instance of FlxTilemap, for chaining as usual :) - * @since 4.1.0 - - - - - - - - - - - - - { collideIndex : 1, drawIndex : 1, startingIndex : 0, tileHeight : 0, tileWidth : 0 } - - - - - - - - - - - * An internal function used by the binary auto-tilers. (16 tiles) - * - * @param index The index of the tile you want to analyze. - - - - - - - * An internal function used by the binary auto-tilers. (47 tiles) - * - * @param index The index of the tile you want to analyze. - - - - - - - - - - 7, 1-->4, 2-->12" - * @param randomIndices Array of ints indicating which tile indices should be randomized. Ex: [7,4,12] means "replace tile index of 7, 4, or 12 with a randomized value" - * @param randomChoices A list of int-arrays that serve as the corresponding choices to randomly choose from. Ex: indices = [7,4], choices = [[1,2],[3,4,5]], 7 will be replaced by either 1 or 2, 4 will be replaced by 3, 4, or 5. - * @param randomLambda A custom randomizer function, should return value between 0.0 and 1.0. Initialize your random seed before passing this in! If not defined, will default to unseeded Math.random() calls.]]> - - - - - - - - * Check the value of a particular tile. - * - * @param x The X coordinate of the tile (in tiles, not pixels). - * @param y The Y coordinate of the tile (in tiles, not pixels). - * @return An integer containing the value of the tile at this spot in the array. - - - - - - - * Get the value of a tile in the tilemap by index. - * - * @param index The slot in the data array (Y * widthInTiles + X) where this tile is stored. - * @return An integer containing the value of the tile at this spot in the array. - - - - - - - * Gets the collision flags of tile by index. - * - * @param index Tile index returned by getTile or getTileByIndex - * @return The internal collision flag for the requested tile. - - - - - - - * Returns a new array full of every map index of the requested tile type. - * - * @param index The requested tile type. - * @return An Array with a list of all map indices of that tile type. - - - - - - - - - - { updateGraphics : true } - * Change the data and graphic of a tile in the tilemap. - * - * @param x The X coordinate of the tile (in tiles, not pixels). - * @param y The Y coordinate of the tile (in tiles, not pixels). - * @param tile The new integer data you wish to inject. - * @param updateGraphics Whether the graphical representation of this tile should change. - * @return Whether or not the tile was actually changed. - - - - - - - - - { updateGraphics : true } - * Change the data and graphic of a tile in the tilemap. - * - * @param index The slot in the data array (Y * widthInTiles + X) where this tile is stored. - * @param tile The new integer data you wish to inject. - * @param updateGraphics Whether the graphical representation of this tile should change. - * @return Whether or not the tile was actually changed. - - - - - - - - - - - - - - - { range : 1, allowCollisions : ANY } - * Adjust collision settings and/or bind a callback function to a range of tiles. - * This callback function, if present, is triggered by calls to overlap() or overlapsWithCallback(). - * - * @param tile The tile or tiles you want to adjust. - * @param allowCollisions Modify the tile or tiles to only allow collisions from certain directions, use FlxObject constants NONE, ANY, LEFT, RIGHT, etc. Default is "ANY". - * @param callback The function to trigger, e.g. lavaCallback(Tile:FlxObject, Object:FlxObject). - * @param callbackFilter If you only want the callback to go off for certain classes or objects based on a certain class, set that class here. - * @param range If you want this callback to work for a bunch of different tiles, input the range here. Default value is 1. - - - - - - - { simple : false } - * Fetches the tilemap data array. - * - * @param simple If true, returns the data as copy, as a series of 1s and 0s (useful for auto-tiling stuff). - * Default value is false, meaning it will return the actual data array (NOT a copy). - * @return An array the size of the tilemap full of integers indicating tile placement. - - - - - - - - - - { diagonalPolicy : WIDE, simplify : LINE } - * Find a path through the tilemap. Any tile with any collision flags set is treated as impassable. - * If no path is discovered then a null reference is returned. - * - * @param start The start point in world coordinates. - * @param end The end point in world coordinates. - * @param simplify Whether to run a basic simplification algorithm over the path data, removing - * extra points that are on the same line. Default value is true. - * @param raySimplify Whether to run an extra raycasting simplification algorithm over the remaining - * path data. This can result in some close corners being cut, and should be - * used with care if at all (yet). Default value is false. - * @param diagonalPolicy How to treat diagonal movement. (Default is WIDE, count +1 tile for diagonal movement) - * @return An Array of FlxPoints, containing all waypoints from the start to the end. If no path could be found, - * then a null reference is returned. - - - - - - - - - - { simplify : LINE } - * Find a path through the tilemap. Any tile with any collision flags set is treated as impassable. - * If no path is discovered then a null reference is returned. - * @since 5.0.0 - * - * @param pathfinder Decides how to move and evaluate the paths for comparison. - * @param start The start point in world coordinates. - * @param end The end point in world coordinates. - * @param simplify Whether to run a basic simplification algorithm over the path data, removing - * extra points that are on the same line. Default value is true. - * @param raySimplify Whether to run an extra raycasting simplification algorithm over the remaining - * path data. This can result in some close corners being cut, and should be - * used with care if at all (yet). Default value is false. - * @return An Array of FlxPoints, containing all waypoints from the start to the end. If no path could be found, - * then a null reference is returned. - - - - - - - - - - { stopOnEnd : true, diagonalPolicy : WIDE } - * Pathfinding helper function, floods a grid with distance information until it finds the end point. - * NOTE: Currently this process does NOT use any kind of fancy heuristic! It's pretty brute. - * - * @param startIndex The starting tile's map index. - * @param endIndex The ending tile's map index. - * @param diagonalPolicy How to treat diagonal movement. - * @param stopOnEnd Whether to stop at the end or not (default true) - * @return An array of FlxPoint nodes. If the end tile could not be found, then a null Array is returned instead. - - - - - - - - - - { stopOnEnd : true, diagonalPolicy : WIDE } - * Pathfinding helper function, floods a grid with distance information until it finds the end point. - * NOTE: Currently this process does NOT use any kind of fancy heuristic! It's pretty brute. - * @since 5.0.0 - * - * @param startIndex The starting tile's map index. - * @param endIndex The ending tile's map index. - * @param policy Decides how to move and evaluate the paths for comparison. - * @param stopOnEnd Whether to stop at the end or not (default true) - * @return An array of FlxPoint nodes. If the end tile could not be found, then a null Array is returned instead. - - - - - - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if some FlxObject overlaps this FlxObject object in world space. - * If the group has a LOT of things in it, it might be faster to use FlxG.overlaps(). - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param object The object being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * @param camera Specify which game camera you want. If null, getScreenPosition() will just grab the first global camera. - * @return Whether or not the two objects overlap. - - - - - - - - - - - { inScreenSpace : false, y : 0.0, x : 0.0 } - - - - - - - - - - - - { inScreenSpace : false } - flixel.group.FlxTypedGroup - - * Checks to see if this FlxObject were located at the given position, would it overlap the FlxObject or FlxGroup? - * This is distinct from overlapsPoint(), which just checks that point, rather than taking the object's size into account. - * WARNING: Currently tilemaps do NOT support screen space overlap checks! - * - * @param x The X position you want to check. Pretends this object (the caller, not the parameter) is located here. - * @param y The Y position you want to check. Pretends this object (the caller, not the parameter) is located here. - * @param objectOrGroup The object or group being tested. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. Default is false, or "only compare in world space." - * @param camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return Whether or not the two objects overlap. - - - - - - - - - - - - - - - - - { inScreenSpace : false } - * Checks to see if a point in 2D world space overlaps this FlxObject object. - * - * @param worldPoint The point in world space you want to check. - * @param inScreenSpace Whether to take scroll factors into account when checking for overlap. - * @param camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @return Whether or not the point overlaps this object. - - - - - - - - - - - * Get the world coordinates and size of the entire tilemap as a FlxRect. - * - * @param bounds Optional, pass in a pre-existing FlxRect to prevent instantiation of a new object. - * @return A FlxRect containing the world coordinates and size of the entire tilemap. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * Good for levels with thin walls that don't need interior corner art. - * Better for levels with thick walls that look better with interior corner art. - * Better for all, but need 47 tiles. - * @since 4.6.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - null - * This function is called whenever an object hits a tile of this type. - * This function should take the form myFunction(Tile:FlxTile,Object:FlxObject):void. - * Defaults to null, set through FlxTilemap.setTileProperties(). - - - - * Each tile can store its own filter class for their callback functions. - * That is, the callback will only be triggered if an object with a class - * type matching the filter touched it. - * Defaults to null, set through FlxTilemap.setTileProperties(). - - - - * A reference to the tilemap this tile object belongs to. - - - - * The index of this tile type in the core map data. - * For example, if your map only has 16 kinds of tiles in it, - * this number is usually between 0 and 15. - - - - 0 - * The current map index of this tile object at this moment. - * You can think of tile objects as moving around the tilemap helping with collisions. - * This value is only reliable and useful if used from the callback function. - - - - * Frame graphic for this tile. - - - - * Clean up memory. - - - - - - - - - - - - * Instantiate this new tile object. This is usually called from FlxTilemap.loadMap(). - * - * @param Tilemap A reference to the tilemap object creating the tile. - * @param Index The actual core map data index for this tile type. - * @param Width The width of the tile. - * @param Height The height of the tile. - * @param Visible Whether the tile is visible or not. - * @param AllowCollisions The collision flags for the object. By default this value is ANY or NONE depending on the parameters sent to loadMap(). - - * A simple helper object for FlxTilemap that helps expand collision opportunities and control. - * You can use FlxTilemap.setTileProperties() to alter the collision properties and - * callback functions and filters for this object to do things like one-way tiles or whatever. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tile.FlxTile - - - - - - - - - - - - - { empties : 0 } - * Fills the block with a randomly arranged selection of frames. - * - * @param TileFrames The frames that should fill this block. - * @param Empties The number of "empty" tiles to add to the auto-fill algorithm (e.g. 8 tiles + 4 empties = 1/3 of block will be open holes). - * @return This tile block. - - - - - - - - - - { Empties : 0, TileHeight : 0, TileWidth : 0 } - * Fills the block with a randomly arranged selection of graphics from the image provided. - * - * @param TileGraphic The graphic class that contains the tiles that should fill this block. - * @param TileWidth The width of a single tile in the graphic. - * @param TileHeight The height of a single tile in the graphic. - * @param Empties The number of "empty" tiles to add to the auto-fill algorithm (e.g. 8 tiles + 4 empties = 1/3 of block will be open holes). - * @return This tile block. - - - - - - - - - - - - - - - - * Creates a new FlxBlock object with the specified position and size. - * - * @param X The X position of the block. - * @param Y The Y position of the block. - * @param Width The width of the block. - * @param Height The height of the block. - - * This is a basic "environment object" class, used to create simple walls and floors. - * It can be filled with a random selection of tiles to quickly add detail. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - { empties : 0 } - * Fills the block with a randomly arranged selection of frames. - * - * @param TileFrames The frames that should fill this block. - * @param Empties The number of "empty" tiles to add to the auto-fill algorithm (e.g. 8 tiles + 4 empties = 1/3 of block will be open holes). - * @return This tile block. - - <_HX_SUPER__loadFrames public="1" set="method" line="148"> - - - - - - { empties : 0 } - - - - - - - - - - { Empties : 0, TileHeight : 0, TileWidth : 0 } - * Fills the block with a randomly arranged selection of graphics from the image provided. - * - * @param TileGraphic The graphic class that contains the tiles that should fill this block. - * @param TileWidth The width of a single tile in the graphic. - * @param TileHeight The height of a single tile in the graphic. - * @param Empties The number of "empty" tiles to add to the auto-fill algorithm (e.g. 8 tiles + 4 empties = 1/3 of block will be open holes). - * @return This tile block. - - <_HX_SUPER__loadTiles public="1" set="method" line="148"> - - - - - - - - { Empties : 0, TileHeight : 0, TileWidth : 0 } - - - - - - - - <_HX_SUPER__setTile public="1" set="method" line="31"> - - - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tile.FlxTileblock - - - - - - - "__ASSET__:bitmap_flixel_tile_GraphicAuto" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/tile/autotiles.png" - - - - - - - "__ASSET__:bitmap_flixel_tile_GraphicAutoAlt" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/tile/autotiles_alt.png" - - - - - - - "__ASSET__:bitmap_flixel_tile_GraphicAutoFull" - - - - - - - - - - { fillRGBA : 0xFFFFFFFF, transparent : true } - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - "assets/images/tile/autotiles_full.png" - - - - - - - 2 - - - - - - false - "useScaleHaxe is no longer needed" - - - * DISABLED, the static var `defaultFramePadding` fixes the tearing issue in a more performant - * and visually appealing way. - - - - * Changes the size of this tilemap. Default is (1, 1). - * Anything other than the default is very slow with blitting! - - - - FlxSprite.defaultAntialiasing - * Controls whether the object is smoothed when rotated, affects performance. - * @since 4.1.0 - * - * @see FlxSprite.defaultAntialiasing - - - - FlxPoint.get() - * Use to offset the drawing position of the tilemap, - * just like FlxSprite. - - - - * Rendering variables. - - - - - 0xffffff - * Tints the whole sprite to a color (0xRRGGBB format) - similar to OpenGL vertex colors. You can use - * 0xAARRGGBB colors, but the alpha value will simply be ignored. To change the opacity use alpha. - - - - 1.0 - * Set alpha to a number between 0 and 1 to change the opacity of the sprite. - - - - new ColorTransform() - - - - null - * Blending modes, just like Photoshop or whatever, e.g. "multiply", "screen", etc. - - - - 0 - * The unscaled width of a single tile. - - - - 0 - * The unscaled height of a single tile. - - - - 0 - * The scaled width of a single tile. - - - - 0 - * The scaled height of a single tile. - - - - * The scaled width of the entire map. - - - - * The scaled height of the entire map. - - - - * GLSL shader for this tilemap. Only works with OpenFL Next or WebGL. - * Avoid changing it frequently as this is a costly operation. - * @since 4.1.0 - - <_flashPoint expr="new Point()"> - - new Point() - * Rendering helper, minimize new object instantiation on repetitive methods. - - <_flashRect expr="new Rectangle()"> - - new Rectangle() - * Rendering helper, minimize new object instantiation on repetitive methods. - - <_buffers expr="[]"> - - [] - * Internal list of buffers, one for each camera, used for drawing the tilemaps. - - <_helperPoint> - - * Rendering helper, minimize new object instantiation on repetitive methods. Used only in tile rendering mode - - <_matrix> - - * Rendering helper, used for tile's frame transformations (only in tile rendering mode). - - <_checkBufferChanges expr="false"> - - false - * Whether buffers need to be checked again next draw(). - - - - * Clean up memory. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Check and see if this object is currently on screen. Differs from `FlxObject`'s implementation - * in that it takes the actual graphic into account, not just the hitbox or bounding box or whatever. - * - * @param camera Specify which game camera you want. If `null`, it will just grab the first global camera. - * @return Whether the object is on screen or not. - - - - * Draws the tilemap buffers to the cameras. - - - - - - - - { dirty : true } - * Set the dirty flag on all the tilemap buffers. - * Basically forces a reset of the drawn tilemaps, even if it wasn't necessary. - * - * @param dirty Whether to flag the tilemap buffers as dirty or not. - - - - - - - - - - - - - - { flipCallbackParams : false } - * Checks if the Object overlaps any tiles with any collision flags set, - * and calls the specified callback function (if there is one). - * Also calls the tile's registered callback if the filter matches. - * - * @param object The FlxObject you are checking for overlaps against. - * @param callback An optional function that takes the form "myCallback(Object1:FlxObject,Object2:FlxObject)", where Object1 is a FlxTile object, and Object2 is the object passed in in the first parameter of this method. - * @param flipCallbackParams Used to preserve A-B list ordering from FlxObject.separate() - returns the FlxTile object as the second parameter instead. - * @param position Optional, specify a custom position for the tilemap (useful for overlapsAt()-type functionality). - * @return Whether there were overlaps, or if a callback was specified, whatever the return value of the callback was. - - - - - - - - - - - - { midpoint : true } - - - - - - - - { midpoint : true } - * Returns a new array full of every coordinate of the requested tile type. - * - * @param index The requested tile type. - * @param midpoint Whether to return the coordinates of the tile midpoint, or upper left corner. Default is true, return midpoint. - * @return An Array with a list of all the coordinates of that tile type. - - - - - - - - - { updateWorld : true, border : 0 } - * Call this function to lock the automatic camera to the map's edges. - * - * @param camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @param border Adjusts the camera follow boundary by whatever number of tiles you specify here. Handy for blocking off deadends that are offscreen, etc. Use a negative number to add padding instead of hiding the edges. - * @param updateWorld Whether to update the collision system's world size, default value is true. - - - - - - - - - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * Note: In flixel 5.0.0, this was redone, the old method is now `rayStep` - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - - - - - - - - - - - - - - - { resolution : 1 } - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * This method checks at steps and can miss, for better results use `ray()` - * @since 5.0.0 - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * @param resolution Defaults to 1, meaning check every tile or so. Higher means more checks! - * Only returned if the line enters the rect. - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - - - - - - - - - - - - { NewTile : 0 } - * Change a particular tile to FlxSprite. Or just copy the graphic if you dont want any changes to map data itself. - * - * @param x The X coordinate of the tile (in tiles, not pixels). - * @param y The Y coordinate of the tile (in tiles, not pixels). - * @param newTile New tile for the map data. Use -1 if you dont want any changes. Default = 0 (empty) - * @param spriteFactory Method for converting FlxTile to FlxSprite. If null then will be used defaultTileToSprite() method. - * @return FlxSprite. - - - - * Use this method so the tilemap buffers are updated, e.g. when resizing your game - - - - - - - - flixel.FlxCamera - * Internal function that actually renders the tilemap to the tilemap buffer. Called by draw(). - * - * @param buffer The FlxTilemapBuffer you are rendering to. - * @param camera The related FlxCamera, mainly for scroll values. - - - - - - - * Internal function to clean up the map loading code. - * Just generates a wireframe box the size of a tile with the specified color. - - - - - - - - - - - - - - - * Internal function for setting graphic property for this object. - * It changes graphic' useCount also for better memory tracking. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Default method for generating FlxSprite from FlxTile - * - * @param tileProperties properties for new sprite - * @return New FlxSprite with specified graphic - - - - - - - - - - - - - * Get the world coordinates and size of the entire tilemap as a FlxRect. - * - * @param bounds Optional, pass in a pre-existing FlxRect to prevent instantiation of a new object. - * @return A FlxRect containing the world coordinates and size of the entire tilemap. - - - * This is a traditional tilemap display and collision class. It takes a string of comma-separated - * numbers and then associates those values with tiles from the sheet you pass in. It also includes - * some handy static parsers that can convert arrays or images into strings that can be loaded. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 0 - * The current X position of the buffer. - - - - 0 - * The current Y position of the buffer. - - - - 0 - * The width of the buffer (usually just a few tiles wider than the camera). - - - - 0 - * The height of the buffer (usually just a few tiles taller than the camera). - - - - false - * Whether the buffer needs to be redrawn. - - - - 0 - * How many rows of tiles fit in this buffer. - - - - 0 - * How many columns of tiles fit in this buffer. - - - - * Whether or not the coordinates should be rounded during draw(), true by default (recommended for pixel art). - * Only affects tilesheet rendering and rendering using BitmapData.draw() in blitting. - * (copyPixels() only renders on whole pixels by nature). Causes draw() to be used if false, which is more expensive. - - - - * The actual buffer BitmapData. (Only used if FlxG.renderBlit == true) - - - - - false - - <_flashRect> - <_matrix> - <_prevTilemapX> - - * Variables related to calculation of dirty value - - <_prevTilemapY> - <_prevTilemapScaleX> - <_prevTilemapScaleY> - <_prevTilemapScrollX> - <_prevTilemapScrollY> - <_prevCameraScrollX> - <_prevCameraScrollY> - <_prevCameraScaleX> - <_prevCameraScaleY> - <_prevCameraWidth> - <_prevCameraHeight> - - - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - - - - * Clean up memory. - - - - - - - { Color : FlxColor.TRANSPARENT } - * Fill the buffer with the specified color. - * Default value is transparent. - * - * @param Color What color to fill with, in 0xAARRGGBB hex format. - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - * Just stamps this buffer onto the specified camera at the specified location. - * - * @param Camera Which camera to draw the buffer onto. - * @param FlashPoint Where to draw the buffer at in camera coordinates. - - - - - - - - - - - - - - - { ScaleX : 1.0 } - flixel.FlxCamera.viewWidth - - - - - - - - - - - - { ScaleY : 1.0 } - flixel.FlxCamera.viewHeight - - - - - - - - * Check if object is rendered pixel perfect on a specific camera. - - - - - - - - * Check if tilemap or camera has changed (scrolled, moved, resized or scaled) since the previous frame. - * If so, then it means that we need to redraw this buffer. - * @param Tilemap Tilemap to check against. It's a tilemap this buffer belongs to. - * @param Camera Camera to check against. It's a camera this buffer is used for drawing on. - * @return The value of dirty flag. - - - - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - * Instantiates a new camera-specific buffer for storing the visual tilemap data. - * - * @param TileWidth The width of the tiles in this tilemap. - * @param TileHeight The height of the tiles in this tilemap. - * @param WidthInTiles How many tiles wide the tilemap is. - * @param HeightInTiles How many tiles tall the tilemap is. - * @param Camera Which camera this buffer relates to. - - * A helper object to keep tilemap drawing performance decent across the new multi-camera system. - * Pretty much don't even have to think about this class unless you are doing some crazy hacking. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - - <_HX_SUPER__resize public="1" set="method" line="31"> - - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - { Color : FlxColor.TRANSPARENT } - * Fill the buffer with the specified color. - * Default value is transparent. - * - * @param Color What color to fill with, in 0xAARRGGBB hex format. - - <_HX_SUPER__fill public="1" set="method" line="31"> - - - - - { Color : FlxColor.TRANSPARENT } - - - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - * Just stamps this buffer onto the specified camera at the specified location. - * - * @param Camera Which camera to draw the buffer onto. - * @param FlashPoint Where to draw the buffer at in camera coordinates. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - - - - { ScaleY : 1.0, ScaleX : 1.0 } - - - - - - <_HX_SUPER__colorTransform public="1" set="method" line="31"> - - - - - - - - - - - - - { ScaleX : 1.0 } - flixel.FlxCamera.viewWidth - - - <_HX_SUPER__updateColumns public="1" set="method" line="31"> - - - - - - - - { ScaleX : 1.0 } - - - - - - - - - - - { ScaleY : 1.0 } - flixel.FlxCamera.viewHeight - - - <_HX_SUPER__updateRows public="1" set="method" line="31"> - - - - - - - - { ScaleY : 1.0 } - - - - - - - * Check if object is rendered pixel perfect on a specific camera. - - <_HX_SUPER__isPixelPerfectRender public="1" set="method" line="148"> - - - - - - - - - - * Check if tilemap or camera has changed (scrolled, moved, resized or scaled) since the previous frame. - * If so, then it means that we need to redraw this buffer. - * @param Tilemap Tilemap to check against. It's a tilemap this buffer belongs to. - * @param Camera Camera to check against. It's a camera this buffer is used for drawing on. - * @return The value of dirty flag. - - <_HX_SUPER__isDirty public="1" set="method" line="148"> - - - - - <__interp> - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tile.FlxTilemapBuffer - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_frames set="method" line="148"> - - - - - - - - - <_HX_SUPER__onGameResized set="method" line="31"> - - - - - - - - - <_HX_SUPER__onCameraChanged set="method" line="31"> - - - - - - - - - - <_HX_SUPER__cacheGraphics set="method" line="31"> - - - - - - - - - - - - - <_HX_SUPER__padTileFrames set="method" line="148"> - - - - - - - - <_HX_SUPER__initTileObjects set="method" line="31"> - - <_HX_SUPER__computeDimensions set="method" line="31"> - - <_HX_SUPER__updateMap set="method" line="31"> - - - - - - * Check and see if this object is currently on screen. Differs from `FlxObject`'s implementation - * in that it takes the actual graphic into account, not just the hitbox or bounding box or whatever. - * - * @param camera Specify which game camera you want. If `null`, it will just grab the first global camera. - * @return Whether the object is on screen or not. - - <_HX_SUPER__isOnScreen public="1" set="method" line="148"> - - - - - - * Draws the tilemap buffers to the cameras. - - <_HX_SUPER__draw public="1" set="method" line="31"> - - <_HX_SUPER__refreshBuffers set="method" line="31"> - - - - - - { dirty : true } - * Set the dirty flag on all the tilemap buffers. - * Basically forces a reset of the drawn tilemaps, even if it wasn't necessary. - * - * @param dirty Whether to flag the tilemap buffers as dirty or not. - - <_HX_SUPER__setDirty public="1" set="method" line="31"> - - - - - { dirty : true } - - - - - - - - - - - - - - { flipCallbackParams : false } - * Checks if the Object overlaps any tiles with any collision flags set, - * and calls the specified callback function (if there is one). - * Also calls the tile's registered callback if the filter matches. - * - * @param object The FlxObject you are checking for overlaps against. - * @param callback An optional function that takes the form "myCallback(Object1:FlxObject,Object2:FlxObject)", where Object1 is a FlxTile object, and Object2 is the object passed in in the first parameter of this method. - * @param flipCallbackParams Used to preserve A-B list ordering from FlxObject.separate() - returns the FlxTile object as the second parameter instead. - * @param position Optional, specify a custom position for the tilemap (useful for overlapsAt()-type functionality). - * @return Whether there were overlaps, or if a callback was specified, whatever the return value of the callback was. - - <_HX_SUPER__overlapsWithCallback public="1" set="method" line="148"> - - - - - - - - - - - - { flipCallbackParams : false } - - - - - - <_HX_SUPER__getTileIndexByCoords public="1" set="method" line="148"> - - - - - - - - - - { midpoint : true } - - <_HX_SUPER__getTileCoordsByIndex public="1" set="method" line="148"> - - - - - - { midpoint : true } - - - - - - - - { midpoint : true } - * Returns a new array full of every coordinate of the requested tile type. - * - * @param index The requested tile type. - * @param midpoint Whether to return the coordinates of the tile midpoint, or upper left corner. Default is true, return midpoint. - * @return An Array with a list of all the coordinates of that tile type. - - <_HX_SUPER__getTileCoords public="1" set="method" line="148"> - - - - - - { midpoint : true } - - - - - - - - - { updateWorld : true, border : 0 } - * Call this function to lock the automatic camera to the map's edges. - * - * @param camera Specify which game camera you want. If null getScreenPosition() will just grab the first global camera. - * @param border Adjusts the camera follow boundary by whatever number of tiles you specify here. Handy for blocking off deadends that are offscreen, etc. Use a negative number to add padding instead of hiding the edges. - * @param updateWorld Whether to update the collision system's world size, default value is true. - - <_HX_SUPER__follow public="1" set="method" line="31"> - - - - - - - { updateWorld : true, border : 0 } - - - - - - - - - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * Note: In flixel 5.0.0, this was redone, the old method is now `rayStep` - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - <_HX_SUPER__ray set="method" line="148"> - - - - - - - - - - - - <_HX_SUPER__checkColumn set="method" line="148"> - - - - - - - - - - - - - - { resolution : 1 } - * Shoots a ray from the start point to the end point. - * If/when it passes through a tile, it stores that point and returns false. - * This method checks at steps and can miss, for better results use `ray()` - * @since 5.0.0 - * - * @param start The world coordinates of the start of the ray. - * @param end The world coordinates of the end of the ray. - * @param result Optional result vector, to avoid creating a new instance to be returned. - * @param resolution Defaults to 1, meaning check every tile or so. Higher means more checks! - * Only returned if the line enters the rect. - * @return Returns true if the ray made it from Start to End without hitting anything. - * Returns false and fills Result if a tile was hit. - - <_HX_SUPER__rayStep set="method" line="148"> - - - - - - - - { resolution : 1 } - - - - - - - - - - - - - { NewTile : 0 } - * Change a particular tile to FlxSprite. Or just copy the graphic if you dont want any changes to map data itself. - * - * @param x The X coordinate of the tile (in tiles, not pixels). - * @param y The Y coordinate of the tile (in tiles, not pixels). - * @param newTile New tile for the map data. Use -1 if you dont want any changes. Default = 0 (empty) - * @param spriteFactory Method for converting FlxTile to FlxSprite. If null then will be used defaultTileToSprite() method. - * @return FlxSprite. - - <_HX_SUPER__tileToSprite public="1" set="method" line="148"> - - - - - - - - - - - { NewTile : 0 } - - - - * Use this method so the tilemap buffers are updated, e.g. when resizing your game - - <_HX_SUPER__updateBuffers public="1" set="method" line="31"> - - - - - - - flixel.FlxCamera - * Internal function that actually renders the tilemap to the tilemap buffer. Called by draw(). - * - * @param buffer The FlxTilemapBuffer you are rendering to. - * @param camera The related FlxCamera, mainly for scroll values. - - <_HX_SUPER__drawTilemap set="method" line="31"> - - - - - - - - - - * Internal function to clean up the map loading code. - * Just generates a wireframe box the size of a tile with the specified color. - - <_HX_SUPER__updateTile set="method" line="31"> - - - - - - - - <_HX_SUPER__set_antialiasing set="method" line="148"> - - - - - - - - - * Internal function for setting graphic property for this object. - * It changes graphic' useCount also for better memory tracking. - - <_HX_SUPER__set_graphic set="method" line="148"> - - - - - - - - <_HX_SUPER__set_pixelPerfectRender set="method" line="148"> - - - - - - - - <_HX_SUPER__set_alpha set="method" line="148"> - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - <_HX_SUPER__updateColorTransform set="method" line="31"> - - - - - <_HX_SUPER__set_blend set="method" line="148"> - - - - - - - - <_HX_SUPER__setScaleXYCallback set="method" line="31"> - - - - - - - - <_HX_SUPER__setScaleXCallback set="method" line="31"> - - - - - - - - <_HX_SUPER__setScaleYCallback set="method" line="31"> - - - - - - - - - * Default method for generating FlxSprite from FlxTile - * - * @param tileProperties properties for new sprite - * @return New FlxSprite with specified graphic - - <_HX_SUPER__defaultTileToSprite set="method" line="148"> - - - - - - - - <_HX_SUPER__set_allowCollisions set="method" line="148"> - - - - - - - - - * Get the world coordinates and size of the entire tilemap as a FlxRect. - * - * @param bounds Optional, pass in a pre-existing FlxRect to prevent instantiation of a new object. - * @return A FlxRect containing the world coordinates and size of the entire tilemap. - - <_HX_SUPER__getBounds set="method" line="148"> - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tile.FlxTilemap.GraphicAuto - flixel.tile.FlxTilemap.GraphicAutoAlt - flixel.tile.FlxTilemap.GraphicAutoFull - flixel.tile.FlxTilemap - flixel.tile.FlxTilemap.FlxTileProperties - - - - - - Math.PI / 2 - Easing constants - - - - 2 * Math.PI / .45 - - - - 1 / 2.75 - - - - 2 / 2.75 - - - - 1.5 / 2.75 - - - - 2.5 / 2.75 - - - - 2.25 / 2.75 - - - - 2.625 / 2.75 - - - - 1 - - - - 0.4 - - - - - - - @since 4.3.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @since 4.3.0 - - - - - - - @since 4.3.0 - - - - - - - @since 4.3.0 - - - - - - - @since 4.3.0 - - - - - - - @since 4.3.0 - - - - - - - @since 4.3.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.FlxEase - flixel.tweens.FlxEase.EaseFunction - - - - - - - @since 4.5.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 1 - - - - * Persistent Tween type, will stop when it finishes. - - - - - cast 2 - - - - * Looping Tween type, will restart immediately when it finishes. - - - - - cast 4 - - - - * "To and from" Tween type, will play tween hither and thither - - - - - cast 8 - - - - * Oneshot Tween type, will stop and remove itself from its core container when it finishes. - - - - - cast 16 - - - - * Backward Tween type, will play tween in reverse direction - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 1 - - - - * Persistent Tween type, will stop when it finishes. - - - - - cast 2 - - - - * Looping Tween type, will restart immediately when it finishes. - - - - - cast 4 - - - - * "To and from" Tween type, will play tween hither and thither - - - - - cast 8 - - - - * Oneshot Tween type, will stop and remove itself from its core container when it finishes. - - - - - cast 16 - - - - * Backward Tween type, will play tween in reverse direction - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - FlxTweenType.PERSIST - "Use FlxTweenType.PERSIST instead" - - * Deprecated, use `FlxTweenType.PERSIST` instead. - - - - - FlxTweenType.LOOPING - "Use FlxTweenType.LOOPING instead" - - * Deprecated, use `FlxTweenType.LOOPING` instead. - - - - - FlxTweenType.PINGPONG - "Use FlxTweenType.PINGPONG instead" - - * Deprecated, use `FlxTweenType.PINGPONG` instead. - - - - - FlxTweenType.ONESHOT - "Use FlxTweenType.ONESHOT instead" - - * Deprecated, use `FlxTweenType.ONESHOT` instead. - - - - - FlxTweenType.BACKWARD - "Use FlxTweenType.BACKWARD instead" - - * Deprecated, use `FlxTweenType.BACKWARD` instead. - - - - * The global tweening manager that handles global tweens - * @since 4.2.0 - - - - - - - - - - { Duration : 1 } - * Tweens numeric public properties of an Object. Shorthand for creating a VarTween, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.tween(Object, { x: 500, y: 350, "scale.x": 2 }, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object containing the properties to tween. - * @param Values An object containing key/value pairs of properties and target values. - * @param Duration Duration of the tween in seconds. - * @param Options A structure with tween options. - * @return The added VarTween object. - - - - - - - - - - - - - - { Duration : 1 } - * Tweens some numeric value. Shorthand for creating a NumTween, starting it and adding it to the TweenManager. Using it in - * conjunction with a TweenFunction requires more setup, but is faster than VarTween because it doesn't use Reflection. - * - * ```haxe - * function tweenFunction(s:FlxSprite, v:Float) { s.alpha = v; } - * FlxTween.num(1, 0, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }, tweenFunction.bind(mySprite)); - * ``` - * - * Trivia: For historical reasons, you can use either onUpdate or TweenFunction to accomplish the same thing, but TweenFunction - * gives you the updated Float as a direct argument. - * - * @param FromValue Start value. - * @param ToValue End value. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @param TweenFunction A function to be called when the tweened value updates. It is recommended not to use an anonymous - * function if you are maximizing performance, as those will be compiled to Dynamics on cpp. - * @return The added NumTween object. - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents angle. Shorthand for creating a AngleTween object, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.angle(Sprite, -90, 90, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose angle should be tweened. - * @param FromAngle Start angle. - * @param ToAngle End angle. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @return The added AngleTween object. - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents color. Shorthand for creating a ColorTween object, starting it and adding it to a TweenPlugin. - * - * ```haxe - * FlxTween.color(Sprite, 2.0, 0x000000, 0xffffff, 0.0, 1.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose color should be tweened. - * @param Duration Duration of the tween in seconds. - * @param FromColor Start color. - * @param ToColor End color. - * @param Options A structure with tween options. - * @return The added ColorTween object. - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearMotion tween. - * - * ```haxe - * FlxTween.linearMotion(Object, 0, 0, 500, 20, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearMotion object. - - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadMotion tween. - * - * ```haxe - * FlxTween.quadMotion(Object, 0, 100, 300, 500, 100, 2, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ControlX X control, used to determine the curve. - * @param ControlY Y control, used to determine the curve. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadMotion object. - - - - - - - - - - - - - - - - - { Duration : 1 } - * Create a new CubicMotion tween. - * - * ```haxe - * FlxTween.cubicMotion(_sprite, 0, 0, 500, 100, 400, 200, 100, 100, 2, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param aX First control x. - * @param aY First control y. - * @param bX Second control x. - * @param bY Second control y. - * @param ToX X finish. - * @param ToY Y finish. - * @param Duration Duration of the movement in seconds. - * @param Options A structure with tween options. - * @return The CubicMotion object. - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new CircularMotion tween. - * - * ```haxe - * FlxTween.circularMotion(Object, 250, 250, 50, 0, true, 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param CenterX X position of the circle's center. - * @param CenterY Y position of the circle's center. - * @param Radius Radius of the circle. - * @param Angle Starting position on the circle. - * @param Clockwise If the motion is clockwise. - * @param DurationOrSpeed Duration of the movement in seconds. - * @param UseDuration Duration of the movement. - * @param Ease Optional easer function. - * @param Options A structure with tween options. - * @return The CircularMotion object. - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearPath tween. - * - * ```haxe - * FlxTween.linearPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(100, 100)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 2 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearPath object. - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadPath tween. - * - * ```haxe - * FlxTween.quadPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(200, 200), FlxPoint.get(400, 0)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 3 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadPath object. - - - - - - - - * Cancels all related tweens on the specified object. - * - * Note: Any tweens with the specified fields are cancelled, if the tween has other properties they - * will also be cancelled. - * - * @param Object The object with tweens to cancel. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on the specified - * object are canceled. Allows dot paths to check child properties. - * - * @since 4.9.0 - - - - - - - - * Immediately updates all tweens on the specified object with the specified fields that - * are not looping (type `FlxTween.LOOPING` or `FlxTween.PINGPONG`) and `active` through - * their endings, triggering their `onComplete` callbacks. - * - * Note: if they haven't yet begun, this will first trigger their `onStart` callback. - * - * Note: their `onComplete` callbacks are triggered in the next frame. - * To trigger them immediately, call `FlxTween.globalManager.update(0);` after this function. - * - * In no case should it trigger an `onUpdate` callback. - * - * Note: Any tweens with the specified fields are completed, if the tween has other properties they - * will also be completed. - * - * @param Object The object with tweens to complete. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on - * the specified object are completed. Allows dot paths to check child properties. - * - * @since 4.9.0 - - - - * The manager to which this tween belongs - * @since 4.2.0 - - - - false - - - - 0 - - - - - - - - - * Value between `0` and `1` that indicates how far along this tween is in its completion. - * A value of `0.33` means that the tween is `33%` complete. - - - - - 0 - - - - - 0 - * How many times this tween has been executed / has finished so far - useful to - * stop the `LOOPING` and `PINGPONG` types after a certain amount of time - - - - 0 - * Seconds to wait until starting this tween, 0 by default - - - - 0 - * Seconds to wait between loops of this tween, 0 by default - - <_secondsSinceStart expr="0"> - - 0 - - <_delayToUse expr="0"> - - 0 - - <_running expr="false"> - - false - - <_waitingForRestart expr="false"> - - false - - <_chainedTweens> - <_nextTweenInChain> - - - - - - - - - - - * Specify a tween to be executed when this one has finished - * (useful for creating "tween chains"). - - - - - - - * How many seconds to delay the execution of the next tween in a tween chain. - - - - - - - - - - - - * Starts the Tween, or restarts it if it's currently running. - - - - * Immediately stops the Tween and removes it from its - * `manager` without calling the `onComplete` callback. - * - * Yields control to the next chained Tween if one exists. - - - - * Immediately stops the Tween and removes it from its - * `manager` without calling the `onComplete` callback - * or yielding control to the next chained Tween if one exists. - * - * If control has already been passed on, forwards the cancellation - * request along the chain to the currently active Tween. - * - * @since 4.3.0 - - - - - * Called when the tween ends, either via finish() or cancel(). - - - - - - - - - - - - - - * In case the tween.active was set to false in onComplete(), - * the tween should not be restarted yet. - - - - - - - - * Returns true if this is tweening the specified field on the specified object. - * - * @param Object The object. - * @param Field Optional tween field. Ignored if null. - * - * @since 4.9.0 - - - - - - - - * Set both type of delays for this tween. - * - * @param startDelay Seconds to wait until starting this tween, 0 by default. - * @param loopDelay Seconds to wait between loops of this tween, 0 by default. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * This function is called when tween is created, or recycled. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - * Tween type - bit field of `FlxTween`'s static type constants. - - - - - * Seconds to wait until starting this tween, `0` by default. - - - - - * Optional update callback function. - - - - - * Optional start callback function. - - - - - * Optional complete callback function. - - - - - * Seconds to wait between loops of this tween, `0` by default. - - - - - * Optional easer function (see `FlxEase`). - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_tweens set="null" expr="[]"> - - [] - * A list of all FlxTween objects. - - - - - - - - - - { Duration : 1 } - * Tweens numeric public properties of an Object. Shorthand for creating a VarTween, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.tween(Object, { x: 500, y: 350, "scale.x": 2 }, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object containing the properties to tween. - * @param Values An object containing key/value pairs of properties and target values. - * @param Duration Duration of the tween in seconds. - * @param Options A structure with tween options. - * @return The added VarTween object. - * @since 4.2.0 - - - - - - - - - - - - - - { Duration : 1 } - * Tweens some numeric value. Shorthand for creating a NumTween, starting it and adding it to the TweenManager. Using it in - * conjunction with a TweenFunction requires more setup, but is faster than VarTween because it doesn't use Reflection. - * - * ```haxe - * function tweenFunction(s:FlxSprite, v:Float) { s.alpha = v; } - * FlxTween.num(1, 0, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }, tweenFunction.bind(mySprite)); - * ``` - * - * Trivia: For historical reasons, you can use either onUpdate or TweenFunction to accomplish the same thing, but TweenFunction - * gives you the updated Float as a direct argument. - * - * @param FromValue Start value. - * @param ToValue End value. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @param TweenFunction A function to be called when the tweened value updates. It is recommended not to use an anonymous - * function if you are maximizing performance, as those will be compiled to Dynamics on cpp. - * @return The added NumTween object. - * @since 4.2.0 - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents angle. Shorthand for creating a AngleTween object, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.angle(Sprite, -90, 90, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose angle should be tweened. - * @param FromAngle Start angle. - * @param ToAngle End angle. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @return The added AngleTween object. - * @since 4.2.0 - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents color. Shorthand for creating a ColorTween object, starting it and adding it to a TweenPlugin. - * - * ```haxe - * FlxTween.color(Sprite, 2.0, 0x000000, 0xffffff, 0.0, 1.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose color should be tweened. - * @param Duration Duration of the tween in seconds. - * @param FromColor Start color. - * @param ToColor End color. - * @param Options A structure with tween options. - * @return The added ColorTween object. - * @since 4.2.0 - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearMotion tween. - * - * ```haxe - * FlxTween.linearMotion(Object, 0, 0, 500, 20, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearMotion object. - * @since 4.2.0 - - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadMotion tween. - * - * ```haxe - * FlxTween.quadMotion(Object, 0, 100, 300, 500, 100, 2, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ControlX X control, used to determine the curve. - * @param ControlY Y control, used to determine the curve. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadMotion object. - * @since 4.2.0 - - - - - - - - - - - - - - - - - { Duration : 1 } - * Create a new CubicMotion tween. - * - * ```haxe - * FlxTween.cubicMotion(_sprite, 0, 0, 500, 100, 400, 200, 100, 100, 2, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param aX First control x. - * @param aY First control y. - * @param bX Second control x. - * @param bY Second control y. - * @param ToX X finish. - * @param ToY Y finish. - * @param Duration Duration of the movement in seconds. - * @param Options A structure with tween options. - * @return The CubicMotion object. - * @since 4.2.0 - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new CircularMotion tween. - * - * ```haxe - * FlxTween.circularMotion(Object, 250, 250, 50, 0, true, 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param CenterX X position of the circle's center. - * @param CenterY Y position of the circle's center. - * @param Radius Radius of the circle. - * @param Angle Starting position on the circle. - * @param Clockwise If the motion is clockwise. - * @param DurationOrSpeed Duration of the movement in seconds. - * @param UseDuration Duration of the movement. - * @param Ease Optional easer function. - * @param Options A structure with tween options. - * @return The CircularMotion object. - * @since 4.2.0 - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearPath tween. - * - * ```haxe - * FlxTween.linearPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(100, 100)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 2 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearPath object. - * @since 4.2.0 - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadPath tween. - * - * ```haxe - * FlxTween.quadPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(200, 200), FlxPoint.get(400, 0)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 3 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadPath object. - * @since 4.2.0 - - - - - - - - - - - - - - { Destroy : true } - flixel.tweens.FlxTween - - * Remove a FlxTween. - * - * @param Tween The FlxTween to remove. - * @param Destroy Whether you want to destroy the FlxTween - * @return The removed FlxTween object. - - - - * Removes all FlxTweens. - - - - - - - - * Cancels all related tweens on the specified object. - * - * Note: Any tweens with the specified fields are cancelled, if the tween has other properties they - * will also be cancelled. - * - * @param Object The object with tweens to cancel. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on the specified - * object are canceled. Allows dot paths to check child properties. - * - * @since 4.9.0 - - - - - - - - * Immediately updates all tweens on the specified object with the specified fields that - * are not looping (type `FlxTween.LOOPING` or `FlxTween.PINGPONG`) and `active` through - * their endings, triggering their `onComplete` callbacks. - * - * Note: if they haven't yet begun, this will first trigger their `onStart` callback. - * - * Note: their `onComplete` callbacks are triggered in the next frame. - * To trigger them immediately, call `FlxTween.globalManager.update(0);` after this function. - * - * In no case should it trigger an `onUpdate` callback. - * - * Note: Any tweens with the specified fields are completed, if the tween has other properties they - * will also be completed. - * - * @param Object The object with tweens to complete. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on - * the specified object are completed. Allows dot paths to check child properties. - * - * @since 4.9.0 - - - - - - - - - - - - * Internal helper for iterating tweens with specific parameters. - * - * Note: loops backwards to allow removals. - * - * @param Object The object with tweens you are searching for. - * @param FieldPaths Optional list of the tween field paths to check. If null or empty, any tween of the specified - * object will match. Allows dot paths to check child properties. - * @param Function The function to call on each matching tween. - * - * @since 4.9.0 - - - - * Immediately updates all tweens that are not looping (type `FlxTween.LOOPING` or `FlxTween.PINGPONG`) - * and `active` through their endings, triggering their `onComplete` callbacks. - * - * Note: if they haven't yet begun, this will first trigger their `onStart` callback. - * - * Note: their `onComplete` callbacks are triggered in the next frame. - * To trigger them immediately, call `FlxTween.globalManager.update(0);` after this function. - * - * In no case should it trigger an `onUpdate` callback. - * - * @since 4.2.0 - - - - - - - - - - * Applies a function to all tweens - * - * @param Function A function that modifies one tween at a time - * @since 4.2.0 - - - * A simple manager for tracking and updating game tween objects. - * Normally accessed via the static `FlxTween.globalManager` rather than being created separately. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - flixel.tweens - flixel.tweens.FlxTween - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (1, flixel.tweens.FlxTweenType) - * Persistent Tween type, will stop when it finishes. - - - - cast (2, flixel.tweens.FlxTweenType) - * Looping Tween type, will restart immediately when it finishes. - - - - cast (4, flixel.tweens.FlxTweenType) - * "To and from" Tween type, will play tween hither and thither - - - - cast (8, flixel.tweens.FlxTweenType) - * Oneshot Tween type, will stop and remove itself from its core container when it finishes. - - - - cast (16, flixel.tweens.FlxTweenType) - * Backward Tween type, will play tween in reverse direction - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - { Duration : 1 } - * Tweens numeric public properties of an Object. Shorthand for creating a VarTween, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.tween(Object, { x: 500, y: 350, "scale.x": 2 }, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object containing the properties to tween. - * @param Values An object containing key/value pairs of properties and target values. - * @param Duration Duration of the tween in seconds. - * @param Options A structure with tween options. - * @return The added VarTween object. - * @since 4.2.0 - - <_HX_SUPER__tween public="1" set="method" line="148"> - - - - - - - - { Duration : 1 } - - - - - - - - - - - - - - { Duration : 1 } - * Tweens some numeric value. Shorthand for creating a NumTween, starting it and adding it to the TweenManager. Using it in - * conjunction with a TweenFunction requires more setup, but is faster than VarTween because it doesn't use Reflection. - * - * ```haxe - * function tweenFunction(s:FlxSprite, v:Float) { s.alpha = v; } - * FlxTween.num(1, 0, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }, tweenFunction.bind(mySprite)); - * ``` - * - * Trivia: For historical reasons, you can use either onUpdate or TweenFunction to accomplish the same thing, but TweenFunction - * gives you the updated Float as a direct argument. - * - * @param FromValue Start value. - * @param ToValue End value. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @param TweenFunction A function to be called when the tweened value updates. It is recommended not to use an anonymous - * function if you are maximizing performance, as those will be compiled to Dynamics on cpp. - * @return The added NumTween object. - * @since 4.2.0 - - <_HX_SUPER__num public="1" set="method" line="148"> - - - - - - - - - - - - { Duration : 1 } - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents angle. Shorthand for creating a AngleTween object, starting it and adding it to the TweenManager. - * - * ```haxe - * FlxTween.angle(Sprite, -90, 90, 2.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose angle should be tweened. - * @param FromAngle Start angle. - * @param ToAngle End angle. - * @param Duration Duration of the tween. - * @param Options A structure with tween options. - * @return The added AngleTween object. - * @since 4.2.0 - - <_HX_SUPER__angle public="1" set="method" line="148"> - - - - - - - - - { Duration : 1 } - - - - - - - - - - - { Duration : 1 } - * Tweens numeric value which represents color. Shorthand for creating a ColorTween object, starting it and adding it to a TweenPlugin. - * - * ```haxe - * FlxTween.color(Sprite, 2.0, 0x000000, 0xffffff, 0.0, 1.0, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Sprite Optional Sprite whose color should be tweened. - * @param Duration Duration of the tween in seconds. - * @param FromColor Start color. - * @param ToColor End color. - * @param Options A structure with tween options. - * @return The added ColorTween object. - * @since 4.2.0 - - <_HX_SUPER__color public="1" set="method" line="148"> - - - - - - - - - { Duration : 1 } - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearMotion tween. - * - * ```haxe - * FlxTween.linearMotion(Object, 0, 0, 500, 20, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearMotion object. - * @since 4.2.0 - - <_HX_SUPER__linearMotion public="1" set="method" line="148"> - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadMotion tween. - * - * ```haxe - * FlxTween.quadMotion(Object, 0, 100, 300, 500, 100, 2, 5, false, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param ControlX X control, used to determine the curve. - * @param ControlY Y control, used to determine the curve. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadMotion object. - * @since 4.2.0 - - <_HX_SUPER__quadMotion public="1" set="method" line="148"> - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - - - - - - - - - - - - - - - - - { Duration : 1 } - * Create a new CubicMotion tween. - * - * ```haxe - * FlxTween.cubicMotion(_sprite, 0, 0, 500, 100, 400, 200, 100, 100, 2, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param FromX X start. - * @param FromY Y start. - * @param aX First control x. - * @param aY First control y. - * @param bX Second control x. - * @param bY Second control y. - * @param ToX X finish. - * @param ToY Y finish. - * @param Duration Duration of the movement in seconds. - * @param Options A structure with tween options. - * @return The CubicMotion object. - * @since 4.2.0 - - <_HX_SUPER__cubicMotion public="1" set="method" line="148"> - - - - - - - - - - - - - - - { Duration : 1 } - - - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new CircularMotion tween. - * - * ```haxe - * FlxTween.circularMotion(Object, 250, 250, 50, 0, true, 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param CenterX X position of the circle's center. - * @param CenterY Y position of the circle's center. - * @param Radius Radius of the circle. - * @param Angle Starting position on the circle. - * @param Clockwise If the motion is clockwise. - * @param DurationOrSpeed Duration of the movement in seconds. - * @param UseDuration Duration of the movement. - * @param Ease Optional easer function. - * @param Options A structure with tween options. - * @return The CircularMotion object. - * @since 4.2.0 - - <_HX_SUPER__circularMotion public="1" set="method" line="148"> - - - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new LinearPath tween. - * - * ```haxe - * FlxTween.linearPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(100, 100)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 2 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The LinearPath object. - * @since 4.2.0 - - <_HX_SUPER__linearPath public="1" set="method" line="148"> - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - - - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - * Create a new QuadPath tween. - * - * ```haxe - * FlxTween.quadPath(Object, [FlxPoint.get(0, 0), FlxPoint.get(200, 200), FlxPoint.get(400, 0)], 2, true, { ease: easeFunction, onStart: onStart, onUpdate: onUpdate, onComplete: onComplete, type: ONESHOT }); - * ``` - * - * @param Object The object to move (FlxObject or FlxSpriteGroup) - * @param Points An array of at least 3 FlxPoints defining the path - * @param DurationOrSpeed Duration (in seconds) or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - * @param Options A structure with tween options. - * @return The QuadPath object. - * @since 4.2.0 - - <_HX_SUPER__quadPath public="1" set="method" line="148"> - - - - - - - - - { UseDuration : true, DurationOrSpeed : 1 } - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - - { Destroy : true } - flixel.tweens.FlxTween - - * Remove a FlxTween. - * - * @param Tween The FlxTween to remove. - * @param Destroy Whether you want to destroy the FlxTween - * @return The removed FlxTween object. - - <_HX_SUPER__remove set="method" line="148"> - - - - - - { Destroy : true } - - - - * Removes all FlxTweens. - - <_HX_SUPER__clear public="1" set="method" line="31"> - - - - - - - * Cancels all related tweens on the specified object. - * - * Note: Any tweens with the specified fields are cancelled, if the tween has other properties they - * will also be cancelled. - * - * @param Object The object with tweens to cancel. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on the specified - * object are canceled. Allows dot paths to check child properties. - * - * @since 4.9.0 - - <_HX_SUPER__cancelTweensOf public="1" set="method" line="31"> - - - - - - - - - - - * Immediately updates all tweens on the specified object with the specified fields that - * are not looping (type `FlxTween.LOOPING` or `FlxTween.PINGPONG`) and `active` through - * their endings, triggering their `onComplete` callbacks. - * - * Note: if they haven't yet begun, this will first trigger their `onStart` callback. - * - * Note: their `onComplete` callbacks are triggered in the next frame. - * To trigger them immediately, call `FlxTween.globalManager.update(0);` after this function. - * - * In no case should it trigger an `onUpdate` callback. - * - * Note: Any tweens with the specified fields are completed, if the tween has other properties they - * will also be completed. - * - * @param Object The object with tweens to complete. - * @param FieldPaths Optional list of the tween field paths to search for. If null or empty, all tweens on - * the specified object are completed. Allows dot paths to check child properties. - * - * @since 4.9.0 - - <_HX_SUPER__completeTweensOf public="1" set="method" line="31"> - - - - - - - - - - - - - - - * Internal helper for iterating tweens with specific parameters. - * - * Note: loops backwards to allow removals. - * - * @param Object The object with tweens you are searching for. - * @param FieldPaths Optional list of the tween field paths to check. If null or empty, any tween of the specified - * object will match. Allows dot paths to check child properties. - * @param Function The function to call on each matching tween. - * - * @since 4.9.0 - - <_HX_SUPER__forEachTweensOf set="method" line="148"> - - - - - - - - - - - * Immediately updates all tweens that are not looping (type `FlxTween.LOOPING` or `FlxTween.PINGPONG`) - * and `active` through their endings, triggering their `onComplete` callbacks. - * - * Note: if they haven't yet begun, this will first trigger their `onStart` callback. - * - * Note: their `onComplete` callbacks are triggered in the next frame. - * To trigger them immediately, call `FlxTween.globalManager.update(0);` after this function. - * - * In no case should it trigger an `onUpdate` callback. - * - * @since 4.2.0 - - <_HX_SUPER__completeAll public="1" set="method" line="31"> - - - - - - - - - * Applies a function to all tweens - * - * @param Function A function that modifies one tween at a time - * @since 4.2.0 - - <_HX_SUPER__forEach public="1" set="method" line="148"> - - - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.FlxTween.FlxTweenType - flixel.tweens.FlxTween.FlxTweenType - flixel.tweens.FlxTween - flixel.tweens.FlxTween.TweenCallback - flixel.tweens.FlxTween.TweenOptions - flixel.tweens.FlxTween.FlxTweenManager - flixel.tweens.FlxTween.TweenProperty - flixel.tweens.FlxTween.FlxTweenType_HSC - - - - - - - - - <_HX_SUPER__resolveTweenOptions set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Specify a tween to be executed when this one has finished - * (useful for creating "tween chains"). - - <_HX_SUPER__then public="1" set="method" line="148"> - - - - - - - - - * How many seconds to delay the execution of the next tween in a tween chain. - - <_HX_SUPER__wait public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__addChainedTween set="method" line="148"> - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - - * Starts the Tween, or restarts it if it's currently running. - - <_HX_SUPER__start public="1" set="method" line="148"> - - - * Immediately stops the Tween and removes it from its - * `manager` without calling the `onComplete` callback. - * - * Yields control to the next chained Tween if one exists. - - <_HX_SUPER__cancel public="1" set="method" line="31"> - - - * Immediately stops the Tween and removes it from its - * `manager` without calling the `onComplete` callback - * or yielding control to the next chained Tween if one exists. - * - * If control has already been passed on, forwards the cancellation - * request along the chain to the currently active Tween. - * - * @since 4.3.0 - - <_HX_SUPER__cancelChain public="1" set="method" line="31"> - - <_HX_SUPER__finish set="method" line="31"> - - - * Called when the tween ends, either via finish() or cancel(). - - <_HX_SUPER__onEnd set="method" line="31"> - - <_HX_SUPER__setVarsOnEnd set="method" line="31"> - - <_HX_SUPER__processTweenChain set="method" line="31"> - - - - - <_HX_SUPER__doNextTween set="method" line="31"> - - - - - - - - <_HX_SUPER__setChain set="method" line="31"> - - - - - - * In case the tween.active was set to false in onComplete(), - * the tween should not be restarted yet. - - <_HX_SUPER__restart set="method" line="31"> - - - - - - - * Returns true if this is tweening the specified field on the specified object. - * - * @param Object The object. - * @param Field Optional tween field. Ignored if null. - * - * @since 4.9.0 - - <_HX_SUPER__isTweenOf set="method" line="148"> - - - - - - - - - - - * Set both type of delays for this tween. - * - * @param startDelay Seconds to wait until starting this tween, 0 by default. - * @param loopDelay Seconds to wait between loops of this tween, 0 by default. - - <_HX_SUPER__setDelays set="method" line="148"> - - - - - - - - - <_HX_SUPER__set_startDelay set="method" line="148"> - - - - - - - - <_HX_SUPER__set_loopDelay set="method" line="148"> - - - - - - - - <_HX_SUPER__set_percent set="method" line="148"> - - - - - - - - <_HX_SUPER__set_type set="method" line="148"> - - - - - - - - <_HX_SUPER__set_active set="method" line="148"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.FlxTween.FlxTweenType - flixel.tweens.FlxTween.FlxTweenType - flixel.tweens.FlxTween - flixel.tweens.FlxTween.TweenCallback - flixel.tweens.FlxTween.TweenOptions - flixel.tweens.FlxTween.FlxTweenManager - flixel.tweens.FlxTween.TweenProperty - - - - - - - - * Optional sprite object whose angle to tween - - <_start> - <_range> - - - * Clean up references - - - - - - - - - - * Tweens the value from one angle to another. - * - * @param FromAngle Start angle. - * @param ToAngle End angle. - * @param Duration Duration of the tween. - - - - - - - - - - - - - - - - * Tweens from one angle to another. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up references - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - - - - * Tweens the value from one angle to another. - * - * @param FromAngle Start angle. - * @param ToAngle End angle. - * @param Duration Duration of the tween. - - <_HX_SUPER__tween public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - - - - - <_HX_SUPER__isTweenOf set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.misc.AngleTween - - - - - - - - - - * Optional sprite object whose color to tween - - - - * Clean up references - - - - - - - - - - * Tweens the color to a new color and an alpha to a new alpha. - * - * @param Duration Duration of the tween. - * @param FromColor Start color. - * @param ToColor End color. - * @param Sprite Optional sprite object whose color to tween. - * @return The ColorTween. - - - - - - - - - - - - - - - - * Tweens a color's red, green, and blue properties - * independently. Can also tween an alpha value. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up references - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - - - - * Tweens the color to a new color and an alpha to a new alpha. - * - * @param Duration Duration of the tween. - * @param FromColor Start color. - * @param ToColor End color. - * @param Sprite Optional sprite object whose color to tween. - * @return The ColorTween. - - <_HX_SUPER__tween public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - - - - - <_HX_SUPER__isTweenOf set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.misc.ColorTween - - - - - - - * The current value. - - <_tweenFunction> - - - - <_start> - <_range> - - - * Clean up references - - - - - - - - - - - - - * Tweens the value from one value to another. - * - * @param fromValue Start value. - * @param toValue End value. - * @param duration Duration of the tween. - * @param tweenFunction Optional tween function. See FlxTween.num() - - - - - - - - - - - * Tweens a numeric value. See FlxTween.num() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up references - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - - * Tweens the value from one value to another. - * - * @param fromValue Start value. - * @param toValue End value. - * @param duration Duration of the tween. - * @param tweenFunction Optional tween function. See FlxTween.num() - - <_HX_SUPER__tween public="1" set="method" line="148"> - - - - - - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.misc.NumTween - - - - - <_object> - <_properties> - <_propertyInfos> - - - - - - - - * Tweens multiple numeric public properties. - * - * @param object The object containing the properties. - * @param properties An object containing key/value pairs of properties and target values. - * @param duration Duration of the tween. - - - - - - - - - - - - - - - - - - - * Tweens multiple numeric properties of an object simultaneously. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * Tweens multiple numeric public properties. - * - * @param object The object containing the properties. - * @param properties An object containing key/value pairs of properties and target values. - * @param duration Duration of the tween. - - <_HX_SUPER__tween public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__initializeVars set="method" line="31"> - - <_HX_SUPER__setStartValues set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - <_HX_SUPER__isTweenOf set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.misc.VarTween - flixel.tweens.misc.VarTween.VarTweenProperty - - - - - - - 0 - * Current x position of the Tween. - - - - 0 - * Current y position of the Tween. - - <_object> - <_wasObjectImmovable> - - - - - - - - - - - - - - - - - - - - - - * Base class for motion Tweens. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 0 - * The current position on the circle. - - - - * The circumference of the current circle motion. - - <_centerX expr="0"> - - 0 - - <_centerY expr="0"> - - 0 - - <_radius expr="0"> - - 0 - - <_angleStart expr="0"> - - 0 - - <_angleFinish expr="0"> - - 0 - - - - - - - - - - - - - { UseDuration : true } - * Starts moving along a circle. - * - * @param CenterX X position of the circle's center. - * @param CenterY Y position of the circle's center. - * @param Radius Radius of the circle. - * @param Angle Starting position on the circle. - * @param Clockwise If the motion is clockwise. - * @param DurationOrSpeed Duration of the movement. - * @param UseDuration Duration of the movement. - - - - - - - - - - - - * Determines a circular motion. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - { UseDuration : true } - * Starts moving along a circle. - * - * @param CenterX X position of the circle's center. - * @param CenterY Y position of the circle's center. - * @param Radius Radius of the circle. - * @param Angle Starting position on the circle. - * @param Clockwise If the motion is clockwise. - * @param DurationOrSpeed Duration of the movement. - * @param UseDuration Duration of the movement. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - - - - - - { UseDuration : true } - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__get_circumference set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.CircularMotion - - - - - <_fromX expr="0"> - - 0 - - <_fromY expr="0"> - - 0 - - <_toX expr="0"> - - 0 - - <_toY expr="0"> - - 0 - - <_aX expr="0"> - - 0 - - <_aY expr="0"> - - 0 - - <_bX expr="0"> - - 0 - - <_bY expr="0"> - - 0 - - <_ttt expr="0"> - - 0 - - <_tt expr="0"> - - 0 - - - - - - - - - - - - - - - * Starts moving along the curve. - * - * @param fromX X start. - * @param fromY Y start. - * @param aX First control x. - * @param aY First control y. - * @param bX Second control x. - * @param bY Second control y. - * @param toX X finish. - * @param toY Y finish. - * @param duration Duration of the movement. - - - - - - - - - - - * Determines motion along a cubic curve. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - * Starts moving along the curve. - * - * @param fromX X start. - * @param fromY Y start. - * @param aX First control x. - * @param aY First control y. - * @param bX Second control x. - * @param bY Second control y. - * @param toX X finish. - * @param toY Y finish. - * @param duration Duration of the movement. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - - - - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.CubicMotion - - - - - - - * Length of the current line of movement. - - <_fromX expr="0"> - - 0 - - <_fromY expr="0"> - - 0 - - <_moveX expr="0"> - - 0 - - <_moveY expr="0"> - - 0 - - <_distance expr="-1"> - - -1 - - - - - - - - - - - - { UseDuration : true } - * Starts moving along a line. - * - * @param FromX X start. - * @param FromY Y start. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - - - - - - - - - - - * Determines motion along a line, from one point to another. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { UseDuration : true } - * Starts moving along a line. - * - * @param FromX X start. - * @param FromY Y start. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - - - - - { UseDuration : true } - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__get_distance set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.LinearMotion - - - - - - - 0 - * The full length of the path. - - - <_pointD> - <_pointT> - <_speed expr="0"> - - 0 - - <_index expr="0"> - - 0 - - <_last> - <_prevPoint> - <_nextPoint> - - - - - - - - { UseDuration : true } - * Starts moving along the path. - * - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - - - - - - - { y : 0, x : 0 } - - - - - - - { index : 0 } - - - - - - - - - * Updates the path, preparing it for motion. - - - - - - - * Determines linear motion along a set of points. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - { UseDuration : true } - * Starts moving along the path. - * - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - { UseDuration : true } - - - - - - - - { y : 0, x : 0 } - - <_HX_SUPER__addPoint public="1" set="method" line="148"> - - - - - - { y : 0, x : 0 } - - - - - - - { index : 0 } - - <_HX_SUPER__getPoint public="1" set="method" line="148"> - - - - - { index : 0 } - - - <_HX_SUPER__start public="1" set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - - * Updates the path, preparing it for motion. - - <_HX_SUPER__updatePath set="method" line="31"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.LinearPath - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - <_HX_SUPER__setObject public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__onEnd set="method" line="31"> - - <_HX_SUPER__postUpdate set="method" line="31"> - - - - - - <_HX_SUPER__isTweenOf set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.Motion - - - - - - - * The distance of the entire curve. - - <_distance expr="-1"> - - -1 - - <_fromX expr="0"> - - 0 - - <_fromY expr="0"> - - 0 - - <_toX expr="0"> - - 0 - - <_toY expr="0"> - - 0 - - <_controlX expr="0"> - - 0 - - <_controlY expr="0"> - - 0 - - - - - - - - - - - - - - { UseDuration : true } - * Starts moving along the curve. - * - * @param FromX X start. - * @param FromY Y start. - * @param ControlX X control, used to determine the curve. - * @param ControlY Y control, used to determine the curve. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Duration of the movement. - - - - - - - - - - - - * Determines motion along p1 quadratic curve. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - { UseDuration : true } - * Starts moving along the curve. - * - * @param FromX X start. - * @param FromY Y start. - * @param ControlX X control, used to determine the curve. - * @param ControlY Y control, used to determine the curve. - * @param ToX X finish. - * @param ToY Y finish. - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Duration of the movement. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - - - - - - - { UseDuration : true } - - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__get_distance set="method" line="148"> - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.QuadMotion - - - - - <_points> - <_distance expr="0"> - - 0 - - <_speed expr="0"> - - 0 - - <_index expr="0"> - - 0 - - <_numSegs expr="0"> - - 0 - - <_updateCurve expr="true"> - - true - - <_curveT> - <_curveD> - <_a> - <_b> - <_c> - - - - - - - - { UseDuration : true } - * Starts moving along the path. - * - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - - - - - - - { y : 0, x : 0 } - * Adds the point to the path. - - - - - - - { index : 0 } - * Gets the point on the path. - - - - - - - - - - - - - - - - - - - * A series of points which will determine a path from the - * beginning point to the end point using quadratic curves. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - { UseDuration : true } - * Starts moving along the path. - * - * @param DurationOrSpeed Duration or speed of the movement. - * @param UseDuration Whether to use the previous param as duration or speed. - - <_HX_SUPER__setMotion public="1" set="method" line="148"> - - - - - - { UseDuration : true } - - - - - - - - { y : 0, x : 0 } - * Adds the point to the path. - - <_HX_SUPER__addPoint public="1" set="method" line="148"> - - - - - - { y : 0, x : 0 } - - - - - - - { index : 0 } - * Gets the point on the path. - - <_HX_SUPER__getPoint public="1" set="method" line="148"> - - - - - { index : 0 } - - - <_HX_SUPER__start public="1" set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="31"> - - - - - <_HX_SUPER__updatePath set="method" line="31"> - - - - - - - <_HX_SUPER__getCurveLength set="method" line="148"> - - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.tweens.motion.QuadPath - - - - - - - 0 - * Used with public variable status, means not highlighted or pressed. - - - - 1 - * Used with public variable status, means highlighted (usually from mouse over). - - - - 2 - * Used with public variable status, means pressed (usually from mouse click). - - <_analogs expr="[]" line="71" static="1"> - - [] - * A list of analogs that are currently active. - - - - NORMAL - * Shows the current state of the button. - - - - - * The background of the joystick, also known as the base. - - - - * This function is called when the button is released. - - - - * This function is called when the button is pressed down. - - - - * This function is called when the mouse goes over the button. - - - - * This function is called when the button is hold down. - - <_currentTouch> - - * The current pointer that's active on the analog. - - <_tempTouches expr="[]"> - - [] - * Helper array for checking touches - - <_zone expr="FlxRect.get()"> - - FlxRect.get() - * The area which the joystick will react. - - <_radius expr="0"> - - 0 - * The radius in which the stick can move. - - <_direction expr="0"> - - 0 - - <_amount expr="0"> - - 0 - - <_ease> - - * The speed of easing when the thumb is released. - - - - - - - * Creates the background of the analog stick. - - - - - - - * Creates the thumb of the analog stick. - - - - * Creates the touch zone. It's based on the size of the background. - * The thumb will react when the mouse is in the zone. - - - - * Clean up memory. - - - - - - - * Update the behavior. - - - - - - - - - - - - * Returns the angle in degrees. - - - - * Whether the thumb is pressed or not. - - - - - * Whether the thumb is just pressed or not. - - - - - * Whether the thumb is just released or not. - - - - - - - - - - - - - - - - - - - - - { Ease : 0.25, Radius : 0, Y : 0, X : 0 } - * Create a virtual thumbstick - useful for input on mobile devices. - * - * @param X The X-coordinate of the point in space. - * @param Y The Y-coordinate of the point in space. - * @param Radius The radius where the thumb can move. If 0, half the base's width will be used. - * @param Ease Used to smoothly back thumb to center. Must be between 0 and (FlxG.updateFrameRate / 60). - * @param BaseGraphic The graphic you want to display as base of the joystick. - * @param ThumbGraphic The graphic you want to display as thumb of the joystick. - - * A virtual thumbstick - useful for input on mobile devices. - * - * @author Ka Wing Chin - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Creates the background of the analog stick. - - <_HX_SUPER__createBase set="method" line="31"> - - - - - - - - - * Creates the thumb of the analog stick. - - <_HX_SUPER__createThumb set="method" line="31"> - - - - - - * Creates the touch zone. It's based on the size of the background. - * The thumb will react when the mouse is in the zone. - - <_HX_SUPER__createZone set="method" line="31"> - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Update the behavior. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - - - - <_HX_SUPER__updateAnalog set="method" line="148"> - - - - - - - - - - * Returns the angle in degrees. - - <_HX_SUPER__getAngle public="1" set="method" line="148"> - - <_HX_SUPER__get_justPressed set="method" line="148"> - - <_HX_SUPER__get_justReleased set="method" line="148"> - - - - - <_HX_SUPER__set_x set="method" line="148"> - - - - - - - - <_HX_SUPER__set_y set="method" line="148"> - - - - <__interp> - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxAnalog - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - * Track the parent FlxSprites x/y coordinates. For example if you wanted your sprite to have a floating health-bar above their head. - * If your health bar is 10px tall and you wanted it to appear above your sprite, then set offsetY to be -10 - * If you wanted it to appear below your sprite, and your sprite was 32px tall, then set offsetY to be 32. Same applies to offsetX. - * - * @param offsetX The offset on X in relation to the origin x/y of the parent - * @param offsetY The offset on Y in relation to the origin x/y of the parent - * @see stopTrackingParent - - <_HX_SUPER__trackParent public="1" set="method" line="31"> - - - - - - - - - - - - - - { offsetY : 0, offsetX : 0, track : false } - * Sets a parent for this FlxBar. Instantly replaces any previously set parent and refreshes the bar. - * - * @param parentRef A reference to an object in your game that you wish the bar to track - * @param variable The variable of the object that is used to determine the bar position. For example if the parent was an FlxSprite this could be "health" to track the health value - * @param track If you wish the FlxBar to track the x/y coordinates of parent set to true (default false) - * @param offsetX The offset on X in relation to the origin x/y of the parent - * @param offsetY The offset on Y in relation to the origin x/y of the parent - - <_HX_SUPER__setParent public="1" set="method" line="31"> - - - - - - - - - { offsetY : 0, offsetX : 0, track : false } - - - - - - - - * Tells the health bar to stop following the parent sprite. The given posX and posY values are where it will remain on-screen. - * - * @param posX X coordinate of the health bar now it's no longer tracking the parent sprite - * @param posY Y coordinate of the health bar now it's no longer tracking the parent sprite - - <_HX_SUPER__stopTrackingParent public="1" set="method" line="31"> - - - - - - - - - - - - { killOnEmpty : false } - * Sets callbacks which will be triggered when the value of this FlxBar reaches min or max. - * Functions will only be called once and not again until the value changes. - * Optionally the FlxBar can be killed if it reaches min, but if will fire the empty callback first (if set) - * - * @param onEmpty The function that is called if the value of this FlxBar reaches min - * @param onFilled The function that is called if the value of this FlxBar reaches max - * @param killOnEmpty If set it will call FlxBar.kill() if the value reaches min - - <_HX_SUPER__setCallbacks public="1" set="method" line="31"> - - - - - - - { killOnEmpty : false } - - - - - - - - * Set the minimum and maximum allowed values for the FlxBar - * - * @param min The minimum value. I.e. for a progress bar this would be zero (nothing loaded yet) - * @param max The maximum value the bar can reach. I.e. for a progress bar this would typically be 100. - - <_HX_SUPER__setRange public="1" set="method" line="31"> - - - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled health bar in the given colours, with optional 1px thick border. - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * - * @param empty The color of the bar when empty in 0xAARRGGBB format (the background colour) - * @param fill The color of the bar when full in 0xAARRGGBB format (the foreground colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - <_HX_SUPER__createFilledBar public="1" set="method" line="148"> - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled background for health bar in the given colour, with optional 1px thick border. - * - * @param empty The color of the bar when empty in 0xAARRGGBB format (the background colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering health bar background. - - <_HX_SUPER__createColoredEmptyBar public="1" set="method" line="148"> - - - - - - - { border : FlxColor.WHITE, showBorder : false } - - - - - - - - - { border : FlxColor.WHITE, showBorder : false } - * Creates a solid-colour filled foreground for health bar in the given colour, with optional 1px thick border. - * @param fill The color of the bar when full in 0xAARRGGBB format (the foreground colour) - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - <_HX_SUPER__createColoredFilledBar public="1" set="method" line="148"> - - - - - - - { border : FlxColor.WHITE, showBorder : false } - - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled health bar using the given colour ranges, with optional 1px thick border. - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * - * @param empty Array of colour values used to create the gradient of the health bar when empty, each colour must be in 0xAARRGGBB format (the background colour) - * @param fill Array of colour values used to create the gradient of the health bar when full, each colour must be in 0xAARRGGBB format (the foreground colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - <_HX_SUPER__createGradientBar public="1" set="method" line="148"> - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled background for health bar using the given colour range, with optional 1px thick border. - * - * @param empty Array of colour values used to create the gradient of the health bar when empty, each colour must be in 0xAARRGGBB format (the background colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for background rendering. - - <_HX_SUPER__createGradientEmptyBar public="1" set="method" line="148"> - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - - - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - * Creates a gradient filled foreground for health bar using the given colour range, with optional 1px thick border. - * - * @param fill Array of colour values used to create the gradient of the health bar when full, each colour must be in 0xAARRGGBB format (the foreground colour) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param showBorder Should the bar be outlined with a 1px solid border? - * @param border The border colour in 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - <_HX_SUPER__createGradientFilledBar public="1" set="method" line="148"> - - - - - - - - - { border : FlxColor.WHITE, showBorder : false, rotation : 180, chunkSize : 1 } - - - - - - - - - - { fillBackground : FlxColor.LIME, emptyBackground : FlxColor.BLACK } - * Creates a health bar filled using the given bitmap images. - * You can provide "empty" (background) and "fill" (foreground) images. either one or both images (empty / fill), and use the optional empty/fill colour values - * All colour values are in 0xAARRGGBB format, so if you want a slightly transparent health bar give it lower AA values. - * NOTE: This method doesn't check if the empty image doesn't have the same size as fill image. - * - * @param empty Bitmap image used as the background (empty part) of the health bar, if null the emptyBackground colour is used - * @param fill Bitmap image used as the foreground (filled part) of the health bar, if null the fillBackground colour is used - * @param emptyBackground If no background (empty) image is given, use this colour value instead. 0xAARRGGBB format - * @param fillBackground If no foreground (fill) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated images for front and background. - - <_HX_SUPER__createImageBar public="1" set="method" line="148"> - - - - - - - - { fillBackground : FlxColor.LIME, emptyBackground : FlxColor.BLACK } - - - - - - - - { emptyBackground : FlxColor.BLACK } - * Loads given bitmap image for health bar background. - * - * @param empty Bitmap image used as the background (empty part) of the health bar, if null the emptyBackground colour is used - * @param emptyBackground If no background (empty) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated image for background rendering. - - <_HX_SUPER__createImageEmptyBar public="1" set="method" line="148"> - - - - - - { emptyBackground : FlxColor.BLACK } - - - - - - - - { fillBackground : FlxColor.LIME } - * Loads given bitmap image for health bar foreground. - * - * @param fill Bitmap image used as the foreground (filled part) of the health bar, if null the fillBackground colour is used - * @param fillBackground If no foreground (fill) image is given, use this colour value instead. 0xAARRGGBB format - * @return This FlxBar object with generated image for rendering actual values. - - <_HX_SUPER__createImageFilledBar public="1" set="method" line="148"> - - - - - - { fillBackground : FlxColor.LIME } - - - - - - <_HX_SUPER__set_fillDirection set="method" line="148"> - - - - - <_HX_SUPER__updateValueFromParent set="method" line="31"> - - - * Updates health bar view according its current value. - * Called when the health bar detects a change in the health of the parent. - - <_HX_SUPER__updateBar public="1" set="method" line="31"> - - - * Stamps health bar background on its pixels - - <_HX_SUPER__updateEmptyBar public="1" set="method" line="31"> - - - * Stamps health bar foreground on its pixels - - <_HX_SUPER__updateFilledBar public="1" set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - <_HX_SUPER__draw public="1" set="method" line="31"> - - - - - <_HX_SUPER__set_pixels set="method" line="148"> - - - - - <_HX_SUPER__toString public="1" set="method" line="148"> - - <_HX_SUPER__get_percent set="method" line="148"> - - <_HX_SUPER__get_floorPercent set="method" line="148"> - - - - - <_HX_SUPER__set_percent set="method" line="148"> - - - - - - - - <_HX_SUPER__set_value set="method" line="148"> - - - - - <_HX_SUPER__get_value set="method" line="148"> - - - - - <_HX_SUPER__set_numDivisions set="method" line="148"> - - - - - <_HX_SUPER__get_frontFrames set="method" line="148"> - - - - - <_HX_SUPER__set_frontFrames set="method" line="148"> - - - - - <_HX_SUPER__get_backFrames set="method" line="148"> - - - - - <_HX_SUPER__set_backFrames set="method" line="148"> - - - - <__interp> - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxBar - flixel.ui.FlxBar.FlxBarFillDirection - - - - - - - * Updates the size of the text field to match the button. - - - - - - - - - - - - - - { Y : 0, X : 0 } - - * A button with `FlxBitmapText` field as a `label`. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Updates the size of the text field to match the button. - - <_HX_SUPER__resetHelpers set="method" line="31"> - - - - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxBitmapTextButton - - - - - - - 0 - * Used with public variable status, means not highlighted or pressed. - - - - 1 - * Used with public variable status, means highlighted (usually from mouse over). - - - - 2 - * Used with public variable status, means pressed (usually from mouse click). - - - - * Shortcut to setting label.text - - - - * Updates the size of the text field to match the button. - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * Creates a new `FlxButton` object with a gray background - * and a callback function on the UI thread. - * - * @param X The x position of the button. - * @param Y The y position of the button. - * @param Text The text that you want to appear on the button. - * @param OnClick The function to call whenever the button is clicked. - - * A simple button class that calls a function when clicked by the mouse. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * The callback function to call when this even fires. - - - - * The sound to play when this event fires. - - - - * Cleans up memory. - - - - * Fires this event (calls the callback and plays the sound) - - - - - - - - * @param Callback The callback function to call when this even fires. - * @param sound The sound to play when this event fires. - - * Helper function for `FlxButton` which handles its events. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Updates the size of the text field to match the button. - - <_HX_SUPER__resetHelpers set="method" line="31"> - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxButton - flixel.ui.FlxButton.FlxTypedButton - flixel.ui.FlxButton.FlxButtonEvent - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxButton - flixel.ui.FlxButton.FlxTypedButton - flixel.ui.FlxButton.FlxButtonEvent - - - - - - - - - - - - - - - { align : "center", color : 0x333333, size : 8 } - * Generates text graphic for button's label. - * - * @param Text text for button's label - * @param font font name for button's label - * @param size font size for button's label - * @param color text color for button's label - * @param align text align for button's label - * @return this button with generated text graphic. - - - - - - - - - - { Y : 0, X : 0 } - * Creates a new FlxButton object with a gray background - * and a callback function on the UI thread. - * - * @param X The x position of the button. - * @param Y The y position of the button. - * @param Text The text that you want to appear on the button. - * @param OnClick The function to call whenever the button is clicked. - - * A simple button class that calls a function when clicked by the mouse. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - { align : "center", color : 0x333333, size : 8 } - * Generates text graphic for button's label. - * - * @param Text text for button's label - * @param font font name for button's label - * @param size font size for button's label - * @param color text color for button's label - * @param align text align for button's label - * @return this button with generated text graphic. - - <_HX_SUPER__createTextLabel public="1" set="method" line="148"> - - - - - - - - - { align : "center", color : 0x333333, size : 8 } - - <__interp> - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxSpriteButton - - - - - - - - - - - - - - - - * Group of directions buttons. - - - - * Group of action buttons. - - - - - - - - - - - - - * @param X The x-position of the button. - * @param Y The y-position of the button. - * @param Width The width of the button. - * @param Height The height of the button. - * @param Graphic The image of the button. It must contains 3 frames (`NORMAL`, `HIGHLIGHT`, `PRESSED`). - * @param Callback The callback for the button. - * @return The button - - - - - - - - * Create a gamepad which contains 4 directional buttons and 4 action buttons. - * - * @param DPadMode The D-Pad mode. `FULL` for example. - * @param ActionMode The action buttons mode. `A_B_C` for example. - - * A gamepad which contains 4 directional buttons and 4 action buttons. - * It's easy to set the callbacks and to customize the layout. - * - * @author Ka Wing Chin - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - * @param X The x-position of the button. - * @param Y The y-position of the button. - * @param Width The width of the button. - * @param Height The height of the button. - * @param Graphic The image of the button. It must contains 3 frames (`NORMAL`, `HIGHLIGHT`, `PRESSED`). - * @param Callback The callback for the button. - * @return The button - - <_HX_SUPER__createButton public="1" set="method" line="148"> - - - - - - - - - <__interp> - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.ui.FlxVirtualPad - flixel.ui.FlxVirtualPad.FlxDPadMode - flixel.ui.FlxVirtualPad.FlxActionMode - - - - - - - - - - - * Swaps two elements of an array, which are located at indices `index1` and `index2` - * @param array The array whose elements need to be swapped - * @param index1 The index of one of the elements to be swapped - * @param index2 The index of the other element to be swapped - * @return The array - - - - - - - - - * Swaps two elements of an array, which are located at indices `index1` and `index2` and also checks if the indices are valid before swapping - * @param array The array whose elements need to be swapped - * @param index1 The index of one of the elements to be swapped - * @param index2 The index of the other element to be swapped - * @return The array - - - - - - - - - * Swaps two items, `item1` and `item2` which are in the array - * @param array The array whose elements need to be swapped - * @param item1 One of the elements of the array which needs to be swapped - * @param item2 The other element of the array which needs to be swapped - * @return The array - - - - - - - - - * Swaps two items, `item1` and `item2` which are in the array, but only if both elements are present in the array - * @param array The array whose elements need to be swapped - * @param item1 One of the elements of the array which needs to be swapped - * @param item2 The other element of the array which needs to be swapped - * @return The array - - - - - - - - { recursive : false } - * Clears an array structure, but leaves the object data untouched - * Useful for cleaning up temporary references to data you want to preserve. - * WARNING: Can lead to memory leaks. - * - * @param array The array to clear out - * @param Recursive Whether to search for arrays inside of arr and clear them out, too - - - - - - - - * Compares the contents with `==` to see if the two arrays are the same. - * Also takes null arrays and the length of the arrays into account. - - - - - - - * Returns the last element of an array or `null` if the array is `null` / empty. - - - - - - - - * Pushes the element into the array (and if the array is null, creates it first) and returns the array. - * @since 4.6.0 - - - - - - - - - - - - - * Returns true if the array is not null and contains the element. - * @since 5.0.0 - - * A set of functions for array manipulation. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxArrayUtil - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0x01 - - - - - - - - cast 0x10 - - - - - - - - cast 0x11 - - - - - - - - cast 0x00 - - - - - - - * Whether the horizontal axis is anebled - - - - * Whether the vertical axis is anebled - - - - * Internal helper to reference self - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0x01 - - - - - - - - cast 0x10 - - - - - - - - cast 0x11 - - - - - - - - cast 0x00 - - - - - - - * Whether the horizontal axis is anebled - - - - * Whether the vertical axis is anebled - - - - * Internal helper to reference self - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0x01, flixel.util.FlxAxes) - - - - cast (0x10, flixel.util.FlxAxes) - - - - cast (0x11, flixel.util.FlxAxes) - - - - cast (0x00, flixel.util.FlxAxes) - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - 8 - * Maximum number of BitmapData to hold in the pool. - - - - 0 - * Current number of BitmapData present in the pool. - - <_head expr="null" line="28" static="1"> - - null - - <_tail expr="null" line="29" static="1"> - - null - - <_rect expr="new Rectangle()" line="31" static="1"> - - new Rectangle() - - - - - - - - - - - { exactSize : false, transparent : true } - = [w, h] may be returned.]]> - - - - - - - * Adds bmd to the pool for future use. - - - - * Disposes of all the BitmapData in the pool. - - - - - - * BitmapData pool class. - * - * Notes on implementation: - * get() starts searching for a suitable BitmapData from the start of the pool list - * put() adds the BitmapData to the start of the pool list (removing the last one if the pool exceeds maxLength) - * - * @author azrafe7 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - FlxBitmapDataPoolNode - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxBitmapDataPool - flixel.util.FlxBitmapDataPool.FlxBitmapDataPoolNode - - - - - <__interp> - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxBitmapDataPool - flixel.util.FlxBitmapDataPool.FlxBitmapDataPoolNode - - - - - - new FlxMatrix() - - - - - - - - - - - - - - * Performs per-channel blending from a source image to a destination image. - * - * @param sourceBitmapData The input bitmap image to use. The source image can be a different BitmapData object, or it can refer to the current BitmapData object. - * @param sourceRect A rectangle that defines the area of the source image to use as input. - * @param destBitmapData The output bitmap image to use. - * @param destPoint The point within the destination image (the current BitmapData instance) that corresponds to the upper-left corner of the source rectangle. - * @param redMultiplier A hexadecimal uint value by which to multiply the red channel value. - * @param greenMultiplier A hexadecimal uint value by which to multiply the green channel value. - * @param blueMultiplier A hexadecimal uint value by which to multiply the blue channel value. - * @param alphaMultiplier A hexadecimal uint value by which to multiply the alpha transparency value. - - - - - - - - - - - - - - * Compares two BitmapData objects. - * - * @param Bitmap1 The source BitmapData object to compare with. - * @param Bitmap2 The BitmapData object to compare with the source BitmapData object. - * @return If the two BitmapData objects have the same dimensions (width and height), - * the method returns a new BitmapData object that has the difference between the two objects. - * If the BitmapData objects are equivalent, the method returns the number 0. - * If the widths of the BitmapData objects are not equal, the method returns the number -3. - * If the heights of the BitmapData objects are not equal, the method returns the number -4. - - - - - - - - - - - - * Returns the amount of bytes a bitmapData occupies in memory. - - - - - - - - - - - { fetchPositions : false } - * Replaces all BitmapData's pixels with specified color with newColor pixels. - * WARNING: very expensive (especially on big graphics) as it iterates over every single pixel. - * - * @param bitmapData BitmapData to change - * @param color Color to replace - * @param newColor New color - * @param fetchPositions Whether we need to store positions of pixels which colors were replaced - * @param rect area to apply color replacement. Optional, uses whole image area if the rect is null - * @return Array replaced pixels positions - - - - - - - - - - - * Gets image without spaces between tiles and generates new one with spaces and adds borders around them. - * @param bitmapData original image without spaces between tiles. - * @param frameSize the size of tile in spritesheet. - * @param spacing spaces between tiles to add. - * @param border how many times to copy border of tiles. - * @param region region of image to use as a source graphics for spritesheet. Default value is null, which means that whole image will be used. - * @return Image for spritesheet with inserted spaces between tiles. - - - - - - - - - - - - - - - * Helper method for copying border pixels around tiles. - * It modifies provided image, and assumes that there are spaces between tile images already. - * - * @param bitmapData image with spaces between tiles to fill with border pixels - * @param frameWidth tile width - * @param frameHeight tile height - * @param spaceX horizontal spacing between tiles - * @param spaceY vertical spacing between tiles - * @param borderX how many times to copy border of tiles on horizontal axis. - * @param borderY how many times to copy border of tiles on vertical axis. - * @param horizontalFrames how many columns of tiles on provided image. - * @param verticalFrames how many rows of tiles on provided image. - * @return Modified spritesheet with copied pixels around tile images. - * @since 4.1.0 - - - - - - - - - - { autoBuffer : false, antiAliasing : false, rotations : 16 } - * Generates BitmapData with prerotated brush stamped on it - * - * @param brush The image you want to rotate and stamp. - * @param rotations The number of rotation frames the final sprite should have. For small sprites this can be quite a large number (360 even) without any problems. - * @param antiAliasing Whether to use high quality rotations when creating the graphic. Default is false. - * @param autoBuffer Whether to automatically increase the image size to accommodate rotated corners. Default is false. Will create frames that are 150% larger on each axis than the original frame or graphic. - * @return Created BitmapData with stamped prerotations on it. - - * Just a collection of BitmapData utility methods. - * Just for cross-platform stuff, since not all methods are implemented across all targets. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxBitmapDataUtil - - - - - - new FlxPoint() - - - - new FlxPoint() - - - - new FlxPoint() - - - - new FlxPoint() - - - - new FlxMatrix() - - - - new FlxMatrix() - - - - new FlxMatrix() - - - - new FlxRect() - - - - new FlxRect() - - - - new FlxRect() - - - - new Rectangle() - - - - - - - - - - { AlphaTolerance : 1 } - * A Pixel Perfect Collision check between two FlxSprites. It will do a bounds check first, and if that passes it will run a - * pixel perfect match on the intersecting area. Works with rotated and animated sprites. May be slow, so use it sparingly. - * - * @param Contact The first FlxSprite to test against - * @param Target The second FlxSprite to test again, sprite order is irrelevant - * @param AlphaTolerance The tolerance value above which alpha pixels are included. Default to 1 (anything that is not fully invisible). - * @param Camera If the collision is taking place in a camera other than FlxG.camera (the default/current) then pass it here - * @return Whether the sprites collide - - - - - - - - - - { AlphaTolerance : 1 } - * A Pixel Perfect Collision check between a given x/y coordinate and an FlxSprite - * - * @param PointX The x coordinate of the point given in local space (relative to the FlxSprite, not game world coordinates) - * @param PointY The y coordinate of the point given in local space (relative to the FlxSprite, not game world coordinates) - * @param Target The FlxSprite to check the point against - * @param AlphaTolerance The alpha tolerance level above which pixels are counted as colliding. Default to 1 (anything that is not fully invisible). - * @return Boolean True if the x/y point collides with the FlxSprite, false if not - - - - - - - - - - { AdjustWorldBounds : false, PlaceOutside : true } - * Creates a "wall" around the given camera which can be used for FlxSprite collision - * - * @param Camera The FlxCamera to use for the wall bounds (can be FlxG.camera for the current one) - * @param Placement Whether to place the camera wall outside or inside - * @param Thickness The thickness of the wall in pixels - * @param AdjustWorldBounds Adjust the FlxG.worldBounds based on the wall (true) or leave alone (false) - * @return FlxGroup The 4 FlxTileblocks that are created are placed into this FlxGroup which should be added to your State - - - - - - - - - - * Calculates at which point where the given line, from start to end, first enters the rect. - * If the line starts inside the rect, a copy of start is returned. - * If the line never enters the rect, null is returned. - * - * Note: If a result vector is supplied and the line is outside the rect, null is returned - * and the supplied result is unchanged - * @since 5.0.0 - * - * @param rect The rect being entered - * @param start The start of the line - * @param end The end of the line - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @return The point of entry of the line into the rect, if possible. - - - - - - - - - - * Calculates at which point where the given line, from start to end, was last inside the rect. - * If the line ends inside the rect, a copy of end is returned. - * If the line is never inside the rect, null is returned. - * - * Note: If a result vector is supplied and the line is outside the rect, null is returned - * and the supplied result is unchanged - * @since 5.0.0 - * - * @param rect The rect being exited - * @param start The start of the line - * @param end The end of the line - * @param result Optional result vector, to avoid creating a new instance to be returned. - * Only returned if the line enters the rect. - * @return The point of exit of the line from the rect, if possible. - - * FlxCollision - * - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxCollision - - - - - - - - - - - - - * Class representing a color, based on Int. Provides a variety of methods for creating and converting colors. - * - * FlxColors can be written as Ints. This means you can pass a hex value such as - * 0xff123456 to a function expecting a FlxColor, and it will automatically become a FlxColor "object". - * Similarly, FlxColors may be treated as Ints. - * - * Note that when using properties of a FlxColor other than ARGB, the values are ultimately stored as - * ARGB values, so repeatedly manipulating HSB/HSL/CMYK values may result in a gradual loss of precision. - * - * @author Joe Williamson (JoeCreates) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - 0x00000000 - - - - 0xFFFFFFFF - - - - 0xFF808080 - - - - 0xFF000000 - - - - 0xFF008000 - - - - 0xFF00FF00 - - - - 0xFFFFFF00 - - - - 0xFFFFA500 - - - - 0xFFFF0000 - - - - 0xFF800080 - - - - 0xFF0000FF - - - - 0xFF8B4513 - - - - 0xFFFFC0CB - - - - 0xFFFF00FF - - - - 0xFF00FFFF - - - - - - - FlxMacroUtil.buildMap("flixel.util.FlxColor") - ` whose values are the static colors of `FlxColor`. - * You can add more colors for `FlxColor.fromString(String)` if you need.]]> - - - - - - - - - - - - - - - - * The red, green and blue channels of this color as a 24 bit integer (from 0 to 0xFFFFFF) - - - - * The hue of the color in degrees (from 0 to 359) - - - - * The saturation of the color (from 0 to 1) - - - - * The brightness (aka value) of the color (from 0 to 1) - - - - * The lightness of the color (from 0 to 1) - - - - ~/^(0x|#)(([A-F0-9]{2}){3,4})$/ - - - - - - - * Create a color from the least significant four bytes of an Int - * - * @param Value And Int with bytes in the format 0xAARRGGBB - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 255 } - * Generate a color from integer RGB values (0 to 255) - * - * @param Red The red value of the color from 0 to 255 - * @param Green The green value of the color from 0 to 255 - * @param Blue The green value of the color from 0 to 255 - * @param Alpha How opaque the color should be, from 0 to 255 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from float RGB values (0 to 1) - * - * @param Red The red value of the color from 0 to 1 - * @param Green The green value of the color from 0 to 1 - * @param Blue The green value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - - { Alpha : 1 } - * Generate a color from CMYK values (0 to 1) - * - * @param Cyan The cyan value of the color from 0 to 1 - * @param Magenta The magenta value of the color from 0 to 1 - * @param Yellow The yellow value of the color from 0 to 1 - * @param Black The black value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSB (aka HSV) components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Brightness (aka Value) A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSL components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Lightness A number between 0 and 1, indicating the lightness of the color - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - output in hex): - * - * - `0x00FF00` -> `0xFF00FF00` - * - `0xAA4578C2` -> `0xAA4578C2` - * - `#0000FF` -> `0xFF0000FF` - * - `#3F000011` -> `0x3F000011` - * - `GRAY` -> `0xFF808080` - * - `blue` -> `0xFF0000FF` - * - * @param str The string to be parsed - * @return A `FlxColor` or `null` if the `String` couldn't be parsed]]> - - - - - - - { Alpha : 255 } - * Get HSB color wheel values in an array which will be 360 elements in size - * - * @param Alpha Alpha value for each color of the color wheel, between 0 (transparent) and 255 (opaque) - * @return HSB color wheel as Array of FlxColors - - - - - - - - - { Factor : 0.5 } - * Get an interpolated color based on two different colors. - * - * @param Color1 The first color - * @param Color2 The second color - * @param Factor Value from 0 to 1 representing how much to shift Color1 toward Color2 - * @return The interpolated color - - - - - - - - - - - - - * Create a gradient from one color to another - * - * @param Color1 The color to shift from - * @param Color2 The color to shift to - * @param Steps How many colors the gradient should have - * @param Ease An optional easing function, such as those provided in FlxEase - * @return An array of colors of length Steps, shifting from Color1 to Color2 - - - - - - - - A * B - * Multiply the RGB channels of two FlxColors - - - - - - - - A + B - * Add the RGB channels of two FlxColors - - - - - - - - A - B - * Subtract the RGB channels of one FlxColor from another - - - - - - - * Returns a Complementary Color Harmony of this color. - * A complementary hue is one directly opposite the color given on the color wheel - * - * @return The complimentary color - - - - - - - - { Threshold : 30 } - * Returns an Analogous Color Harmony for the given color. - * An Analogous harmony are hues adjacent to each other on the color wheel - * - * @param Threshold Control how adjacent the colors will be (default +- 30 degrees) - * @return Object containing 3 properties: original (the original color), warmer (the warmer analogous color) and colder (the colder analogous color) - - - - - - - - { Threshold : 30 } - * Returns an Split Complement Color Harmony for this color. - * A Split Complement harmony are the two hues on either side of the color's Complement - * - * @param Threshold Control how adjacent the colors will be to the Complement (default +- 30 degrees) - * @return Object containing 3 properties: original (the original color), warmer (the warmer analogous color) and colder (the colder analogous color) - - - - - - - * Returns a Triadic Color Harmony for this color. A Triadic harmony are 3 hues equidistant - * from each other on the color wheel. - * - * @return Object containing 3 properties: color1 (the original color), color2 and color3 (the equidistant colors) - - - - - - - * Return a 24 bit version of this color (i.e. without an alpha value) - * - * @return A 24 bit version of this color - - - - - - - - - { Prefix : true, Alpha : true } - * Return a String representation of the color in the format - * - * @param Alpha Whether to include the alpha value in the hes string - * @param Prefix Whether to include "0x" prefix at start of string - * @return A string of length 10 in the format 0xAARRGGBB - - - - - - - * Return a String representation of the color in the format #RRGGBB - * - * @return A string of length 7 in the format #RRGGBB - - - - - - - * Get a string of color information about this color - * - * @return A string containing information about this color - - - - - - - - { Factor : 0.2 } - * Get a darkened version of this color - * - * @param Factor Value from 0 to 1 of how much to progress toward black. - * @return A darkened version of this color - - - - - - - - { Factor : 0.2 } - * Get a lightened version of this color - * - * @param Factor Value from 0 to 1 of how much to progress toward white. - * @return A lightened version of this color - - - - - - - * Get the inversion of this color - * - * @return The inversion of this color - - - - - - - - - - - { Alpha : 255 } - * Set RGB values as integers (0 to 255) - * - * @param Red The red value of the color from 0 to 255 - * @param Green The green value of the color from 0 to 255 - * @param Blue The green value of the color from 0 to 255 - * @param Alpha How opaque the color should be, from 0 to 255 - * @return This color - - - - - - - - - - - { Alpha : 1 } - * Set RGB values as floats (0 to 1) - * - * @param Red The red value of the color from 0 to 1 - * @param Green The green value of the color from 0 to 1 - * @param Blue The green value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return This color - - - - - - - - - - - - { Alpha : 1 } - * Set CMYK values as floats (0 to 1) - * - * @param Cyan The cyan value of the color from 0 to 1 - * @param Magenta The magenta value of the color from 0 to 1 - * @param Yellow The yellow value of the color from 0 to 1 - * @param Black The black value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return This color - - - - - - - - - - - * Set HSB (aka HSV) components - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Brightness (aka Value) A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return This color - - - - - - - - - - - * Set HSL components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Lightness A number between 0 and 1, indicating the lightness of the color - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255 - * @return This color - - - - - - - - - - - - * Private utility function to perform common operations between setHSB and setHSL - - <_new public="1" set="method" line="566" static="1"> - - - - - - { Value : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - 0x00000000 - - - - 0xFFFFFFFF - - - - 0xFF808080 - - - - 0xFF000000 - - - - 0xFF008000 - - - - 0xFF00FF00 - - - - 0xFFFFFF00 - - - - 0xFFFFA500 - - - - 0xFFFF0000 - - - - 0xFF800080 - - - - 0xFF0000FF - - - - 0xFF8B4513 - - - - 0xFFFFC0CB - - - - 0xFFFF00FF - - - - 0xFF00FFFF - - - - - - - FlxMacroUtil.buildMap("flixel.util.FlxColor") - ` whose values are the static colors of `FlxColor`. - * You can add more colors for `FlxColor.fromString(String)` if you need.]]> - - - - - - - - - - - - - - - - * The red, green and blue channels of this color as a 24 bit integer (from 0 to 0xFFFFFF) - - - - * The hue of the color in degrees (from 0 to 359) - - - - * The saturation of the color (from 0 to 1) - - - - * The brightness (aka value) of the color (from 0 to 1) - - - - * The lightness of the color (from 0 to 1) - - - - ~/^(0x|#)(([A-F0-9]{2}){3,4})$/ - - - - - - - * Create a color from the least significant four bytes of an Int - * - * @param Value And Int with bytes in the format 0xAARRGGBB - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 255 } - * Generate a color from integer RGB values (0 to 255) - * - * @param Red The red value of the color from 0 to 255 - * @param Green The green value of the color from 0 to 255 - * @param Blue The green value of the color from 0 to 255 - * @param Alpha How opaque the color should be, from 0 to 255 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from float RGB values (0 to 1) - * - * @param Red The red value of the color from 0 to 1 - * @param Green The green value of the color from 0 to 1 - * @param Blue The green value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - - { Alpha : 1 } - * Generate a color from CMYK values (0 to 1) - * - * @param Cyan The cyan value of the color from 0 to 1 - * @param Magenta The magenta value of the color from 0 to 1 - * @param Yellow The yellow value of the color from 0 to 1 - * @param Black The black value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSB (aka HSV) components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Brightness (aka Value) A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSL components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Lightness A number between 0 and 1, indicating the lightness of the color - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - output in hex): - * - * - `0x00FF00` -> `0xFF00FF00` - * - `0xAA4578C2` -> `0xAA4578C2` - * - `#0000FF` -> `0xFF0000FF` - * - `#3F000011` -> `0x3F000011` - * - `GRAY` -> `0xFF808080` - * - `blue` -> `0xFF0000FF` - * - * @param str The string to be parsed - * @return A `FlxColor` or `null` if the `String` couldn't be parsed]]> - - - - - - - { Alpha : 255 } - * Get HSB color wheel values in an array which will be 360 elements in size - * - * @param Alpha Alpha value for each color of the color wheel, between 0 (transparent) and 255 (opaque) - * @return HSB color wheel as Array of FlxColors - - - - - - - - - { Factor : 0.5 } - * Get an interpolated color based on two different colors. - * - * @param Color1 The first color - * @param Color2 The second color - * @param Factor Value from 0 to 1 representing how much to shift Color1 toward Color2 - * @return The interpolated color - - - - - - - - - - - - - * Create a gradient from one color to another - * - * @param Color1 The color to shift from - * @param Color2 The color to shift to - * @param Steps How many colors the gradient should have - * @param Ease An optional easing function, such as those provided in FlxEase - * @return An array of colors of length Steps, shifting from Color1 to Color2 - - - - - - - - A * B - * Multiply the RGB channels of two FlxColors - - - - - - - - A + B - * Add the RGB channels of two FlxColors - - - - - - - - A - B - * Subtract the RGB channels of one FlxColor from another - - - - - - - * Returns a Complementary Color Harmony of this color. - * A complementary hue is one directly opposite the color given on the color wheel - * - * @return The complimentary color - - - - - - - - { Threshold : 30 } - * Returns an Analogous Color Harmony for the given color. - * An Analogous harmony are hues adjacent to each other on the color wheel - * - * @param Threshold Control how adjacent the colors will be (default +- 30 degrees) - * @return Object containing 3 properties: original (the original color), warmer (the warmer analogous color) and colder (the colder analogous color) - - - - - - - - { Threshold : 30 } - * Returns an Split Complement Color Harmony for this color. - * A Split Complement harmony are the two hues on either side of the color's Complement - * - * @param Threshold Control how adjacent the colors will be to the Complement (default +- 30 degrees) - * @return Object containing 3 properties: original (the original color), warmer (the warmer analogous color) and colder (the colder analogous color) - - - - - - - * Returns a Triadic Color Harmony for this color. A Triadic harmony are 3 hues equidistant - * from each other on the color wheel. - * - * @return Object containing 3 properties: color1 (the original color), color2 and color3 (the equidistant colors) - - - - - - - * Return a 24 bit version of this color (i.e. without an alpha value) - * - * @return A 24 bit version of this color - - - - - - - - - { Prefix : true, Alpha : true } - * Return a String representation of the color in the format - * - * @param Alpha Whether to include the alpha value in the hes string - * @param Prefix Whether to include "0x" prefix at start of string - * @return A string of length 10 in the format 0xAARRGGBB - - - - - - - * Return a String representation of the color in the format #RRGGBB - * - * @return A string of length 7 in the format #RRGGBB - - - - - - - * Get a string of color information about this color - * - * @return A string containing information about this color - - - - - - - - { Factor : 0.2 } - * Get a darkened version of this color - * - * @param Factor Value from 0 to 1 of how much to progress toward black. - * @return A darkened version of this color - - - - - - - - { Factor : 0.2 } - * Get a lightened version of this color - * - * @param Factor Value from 0 to 1 of how much to progress toward white. - * @return A lightened version of this color - - - - - - - * Get the inversion of this color - * - * @return The inversion of this color - - - - - - - - - - - { Alpha : 255 } - * Set RGB values as integers (0 to 255) - * - * @param Red The red value of the color from 0 to 255 - * @param Green The green value of the color from 0 to 255 - * @param Blue The green value of the color from 0 to 255 - * @param Alpha How opaque the color should be, from 0 to 255 - * @return This color - - - - - - - - - - - { Alpha : 1 } - * Set RGB values as floats (0 to 1) - * - * @param Red The red value of the color from 0 to 1 - * @param Green The green value of the color from 0 to 1 - * @param Blue The green value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return This color - - - - - - - - - - - - { Alpha : 1 } - * Set CMYK values as floats (0 to 1) - * - * @param Cyan The cyan value of the color from 0 to 1 - * @param Magenta The magenta value of the color from 0 to 1 - * @param Yellow The yellow value of the color from 0 to 1 - * @param Black The black value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return This color - - - - - - - - - - - * Set HSB (aka HSV) components - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Brightness (aka Value) A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return This color - - - - - - - - - - - * Set HSL components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Lightness A number between 0 and 1, indicating the lightness of the color - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255 - * @return This color - - - - - - - - - - - - * Private utility function to perform common operations between setHSB and setHSL - - <_new public="1" set="method" line="566" static="1"> - - - - - - { Value : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - cast (0x00000000, FlxColor) - - - - cast (0xFFFFFFFF, FlxColor) - - - - cast (0xFF808080, FlxColor) - - - - cast (0xFF000000, FlxColor) - - - - cast (0xFF008000, FlxColor) - - - - cast (0xFF00FF00, FlxColor) - - - - cast (0xFFFFFF00, FlxColor) - - - - cast (0xFFFFA500, FlxColor) - - - - cast (0xFFFF0000, FlxColor) - - - - cast (0xFF800080, FlxColor) - - - - cast (0xFF0000FF, FlxColor) - - - - cast (0xFF8B4513, FlxColor) - - - - cast (0xFFFFC0CB, FlxColor) - - - - cast (0xFFFF00FF, FlxColor) - - - - cast (0xFF00FFFF, FlxColor) - - - - - - - FlxMacroUtil.buildMap("flixel.util.FlxColor") - ` whose values are the static colors of `FlxColor`. - * You can add more colors for `FlxColor.fromString(String)` if you need.]]> - - - - cast (~/^(0x|#)(([A-F0-9]{2}){3,4})$/, EReg) - - - - - - - * Create a color from the least significant four bytes of an Int - * - * @param Value And Int with bytes in the format 0xAARRGGBB - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 255 } - * Generate a color from integer RGB values (0 to 255) - * - * @param Red The red value of the color from 0 to 255 - * @param Green The green value of the color from 0 to 255 - * @param Blue The green value of the color from 0 to 255 - * @param Alpha How opaque the color should be, from 0 to 255 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from float RGB values (0 to 1) - * - * @param Red The red value of the color from 0 to 1 - * @param Green The green value of the color from 0 to 1 - * @param Blue The green value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - - { Alpha : 1 } - * Generate a color from CMYK values (0 to 1) - * - * @param Cyan The cyan value of the color from 0 to 1 - * @param Magenta The magenta value of the color from 0 to 1 - * @param Yellow The yellow value of the color from 0 to 1 - * @param Black The black value of the color from 0 to 1 - * @param Alpha How opaque the color should be, from 0 to 1 - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSB (aka HSV) components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Brightness (aka Value) A number between 0 and 1, indicating how bright the color should be. 0 is black, 1 is full bright. - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - - - - { Alpha : 1 } - * Generate a color from HSL components. - * - * @param Hue A number between 0 and 360, indicating position on a color strip or wheel. - * @param Saturation A number between 0 and 1, indicating how colorful or gray the color should be. 0 is gray, 1 is vibrant. - * @param Lightness A number between 0 and 1, indicating the lightness of the color - * @param Alpha How opaque the color should be, either between 0 and 1 or 0 and 255. - * @return The color as a FlxColor - - - - - - - output in hex): - * - * - `0x00FF00` -> `0xFF00FF00` - * - `0xAA4578C2` -> `0xAA4578C2` - * - `#0000FF` -> `0xFF0000FF` - * - `#3F000011` -> `0x3F000011` - * - `GRAY` -> `0xFF808080` - * - `blue` -> `0xFF0000FF` - * - * @param str The string to be parsed - * @return A `FlxColor` or `null` if the `String` couldn't be parsed]]> - - - - - - - { Alpha : 255 } - * Get HSB color wheel values in an array which will be 360 elements in size - * - * @param Alpha Alpha value for each color of the color wheel, between 0 (transparent) and 255 (opaque) - * @return HSB color wheel as Array of FlxColors - - - - - - - - - { Factor : 0.5 } - * Get an interpolated color based on two different colors. - * - * @param Color1 The first color - * @param Color2 The second color - * @param Factor Value from 0 to 1 representing how much to shift Color1 toward Color2 - * @return The interpolated color - - - - - - - - - - - - - * Create a gradient from one color to another - * - * @param Color1 The color to shift from - * @param Color2 The color to shift to - * @param Steps How many colors the gradient should have - * @param Ease An optional easing function, such as those provided in FlxEase - * @return An array of colors of length Steps, shifting from Color1 to Color2 - - - - - - - - A * B - * Multiply the RGB channels of two FlxColors - - - - - - - - A + B - * Add the RGB channels of two FlxColors - - - - - - - - A - B - * Subtract the RGB channels of one FlxColor from another - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - * Returns whether red, green, or blue multipliers are set to anything other than 1. - - - - - - - * Returns whether red, green, blue, or alpha multipliers are set to anything other than 1. - - - - - - - * Returns whether red, green, or blue offsets are set to anything other than 0. - - - - - - - * Returns whether red, green, blue, or alpha offsets are set to anything other than 0. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxColorTransformUtil - - - - - - - - - * Checks if an object is not null before calling destroy(), always returns null. - * - * @param object An IFlxDestroyable object that will be destroyed if it's not null. - * @return null - - - - - - - * Destroy every element of an array of IFlxDestroyables - * - * @param array An Array of IFlxDestroyable objects - * @return null - - - - - - - * Checks if an object is not null before putting it back into the pool, always returns null. - * - * @param object An IFlxPooled object that will be put back into the pool if it's not null - * @return null - - - - - - - * Puts all objects in an Array of IFlxPooled objects back into - * the pool by calling FlxDestroyUtil.put() on them - * - * @param array An Array of IFlxPooled objects - * @return null - - - - - - - * Checks if a BitmapData object is not null before calling dispose() on it, always returns null. - * - * @param Bitmap A BitmapData to be disposed if not null - * @return null - - - - - - - - - * Checks if a BitmapData object is not null and it's size isn't equal to specified one before calling dispose() on it. - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxDestroyUtil - flixel.util.FlxDestroyUtil.IFlxDestroyable - - - - - - * Simple enum for orthogonal directions. Can be combined into `FlxDirectionFlags`. - * @since 4.10.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0x0001 - - - - - - - - cast 0x0010 - - - - - - - - cast 0x0100 - - - - - - - - cast 0x1000 - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0x0001 - - - - - - - - cast 0x0010 - - - - - - - - cast 0x0100 - - - - - - - - cast 0x1000 - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0x0001, flixel.util.FlxDirection) - - - - cast (0x0010, flixel.util.FlxDirection) - - - - cast (0x0100, flixel.util.FlxDirection) - - - - cast (0x1000, flixel.util.FlxDirection) - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - * Uses bit flags to create a list of orthogonal directions. useful for - * many `FlxObject` features like `allowCollisions` and `touching`. - * @since 4.10.0 - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast 0x0001 - - - - - - - - cast 0x0010 - - - - - - - - cast 0x0100 - - - - - - - - cast 0x1000 - - - - - - - - cast 0x0000 - - - - Special-case constant meaning no directions. - - - - - cast 0x0100 - - - - Special-case constant meaning "up". - - - - - cast 0x1000 - - - - Special-case constant meaning "down" - - - - - cast 0x0011 - - - - Special-case constant meaning "left" and "right". - - - - - cast 0x1111 - - - - Special-case constant meaning any, or all directions. - - - - * Calculates the angle (in degrees) of the facing flags. - * Returns 0 if two opposing flags are true. - * @since 5.0.0 - - - - - - - - * Calculates the angle (in radians) of the facing flags. - * Returns 0 if two opposing flags are true. - * @since 5.0.0 - - - - - - - - - - - - * Returns true if this contains **all** of the supplied flags. - - - - - - - - * Returns true if this contains **any** of the supplied flags. - - - - - - - - * Creates a new `FlxDirections` that includes the supplied directions. - - - - - - - - * Creates a new `FlxDirections` that excludes the supplied directions. - - - - - - - - - - - - - - * Generates a FlxDirectonFlags instance from 4 bools - * @since 5.0.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0x0001 - - - - - - - - cast 0x0010 - - - - - - - - cast 0x0100 - - - - - - - - cast 0x1000 - - - - - - - - cast 0x0000 - - - - Special-case constant meaning no directions. - - - - - cast 0x0100 - - - - Special-case constant meaning "up". - - - - - cast 0x1000 - - - - Special-case constant meaning "down" - - - - - cast 0x0011 - - - - Special-case constant meaning "left" and "right". - - - - - cast 0x1111 - - - - Special-case constant meaning any, or all directions. - - - - * Calculates the angle (in degrees) of the facing flags. - * Returns 0 if two opposing flags are true. - * @since 5.0.0 - - - - - - - - * Calculates the angle (in radians) of the facing flags. - * Returns 0 if two opposing flags are true. - * @since 5.0.0 - - - - - - - - - - - - * Returns true if this contains **all** of the supplied flags. - - - - - - - - * Returns true if this contains **any** of the supplied flags. - - - - - - - - * Creates a new `FlxDirections` that includes the supplied directions. - - - - - - - - * Creates a new `FlxDirections` that excludes the supplied directions. - - - - - - - - - - - - - - * Generates a FlxDirectonFlags instance from 4 bools - * @since 5.0.0 - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - cast (0x0001, flixel.util.FlxDirectionFlags) - - - - cast (0x0010, flixel.util.FlxDirectionFlags) - - - - cast (0x0100, flixel.util.FlxDirectionFlags) - - - - cast (0x1000, flixel.util.FlxDirectionFlags) - - - - cast (0x0000, flixel.util.FlxDirectionFlags) - Special-case constant meaning no directions. - - - - cast (0x0100, flixel.util.FlxDirectionFlags) - Special-case constant meaning "up". - - - - cast (0x1000, flixel.util.FlxDirectionFlags) - Special-case constant meaning "down" - - - - cast (0x0011, flixel.util.FlxDirectionFlags) - Special-case constant meaning "left" and "right". - - - - cast (0x1111, flixel.util.FlxDirectionFlags) - Special-case constant meaning any, or all directions. - - - - - - - - - - * Generates a FlxDirectonFlags instance from 4 bools - * @since 5.0.0 - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - { rotation : 90, chunkSize : 1 } - - - - - - - - - - - - { interpolate : true, rotation : 90, chunkSize : 1 } - - - - - - - - - - - - { interpolate : true, rotation : 90, chunkSize : 1 } - * Creates a FlxSprite of the given width/height with a colour gradient flowing through it. - * - * @param width The width of the FlxSprite (and therefore gradient) - * @param height The height of the FlxSprite (and therefore gradient) - * @param colors An array of colour values for the gradient to cycle through - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param interpolate Interpolate the colours? True uses RGB interpolation, false uses linear RGB - * @return A FlxSprite containing your gradient (if valid parameters given!) - - - - - - - - - - - - { interpolate : true, rotation : 90, chunkSize : 1 } - - - - - - - - - - - - - - - { interpolate : true, rotation : 90, chunkSize : 1, destY : 0, destX : 0 } - * Creates a new gradient and overlays that on-top of the given FlxSprite at the destX/destY coordinates (default 0,0) - * Use low alpha values in the colours to have the gradient overlay and not destroy the image below - * - * @param dest The FlxSprite to overlay the gradient onto - * @param width The width of the FlxSprite (and therefore gradient) - * @param height The height of the FlxSprite (and therefore gradient) - * @param colors An array of colour values for the gradient to cycle through - * @param destX The X offset the gradient is drawn at (default 0) - * @param destY The Y offset the gradient is drawn at (default 0) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param interpolate Interpolate the colours? True uses RGB interpolation, false uses linear RGB - * @return The composited FlxSprite (for chaining, if you need) - - - - - - - - - - - - - - - { interpolate : true, rotation : 90, chunkSize : 1, destY : 0, destX : 0 } - * Creates a new gradient and overlays that on-top of the given BitmapData at the destX/destY coordinates (default 0,0) - * Use low alpha values in the colours to have the gradient overlay and not destroy the image below - * - * @param dest The BitmapData to overlay the gradient onto - * @param width The width of the FlxSprite (and therefore gradient) - * @param height The height of the FlxSprite (and therefore gradient) - * @param colors An array of colour values for the gradient to cycle through - * @param destX The X offset the gradient is drawn at (default 0) - * @param destY The Y offset the gradient is drawn at (default 0) - * @param chunkSize If you want a more old-skool looking chunky gradient, increase this value! - * @param rotation Angle of the gradient in degrees. 90 = top to bottom, 180 = left to right. Any angle is valid - * @param interpolate Interpolate the colours? True uses RGB interpolation, false uses linear RGB - * @return The composited BitmapData - - * Adds a set of color gradient creation / rendering functions - * - * @version 1.6 - May 9th 2011 - * @link http://www.photonstorm.com - * @author Richard Davey / Photon Storm - * @see Requires FlxMath - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxGradient - flixel.util.FlxGradient.GradientMatrix - - - - -
      - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - * DEPRECATED - `FlxPath` was moved to the `flixel.path` package. Update your imports. - * - * @see [Flixel 5.0.0 Migration guide](https://github.com/HaxeFlixel/flixel/wiki/Flixel-5.0.0-Migration-guide) - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - "FlxPath was moved to the package: `flixel.path`" - - - - - - <_pool expr="[]"> - - [] - - <_class> - <_count expr="0"> - - 0 - * Objects aren't actually removed from the array in order to improve performance. - * _count keeps track of the valid, accessible pool objects. - - - - - - - - - - - - - - - - - - - - - * A generic container that facilitates pooling and recycling of objects. - * WARNING: Pooled objects must have parameter-less constructors: function new() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - ObjectEncoding.DEFAULT - The default object encoding (AMF version) for all local shared objects created in - the SWF file. When local shared objects are written to disk, the - `SharedObject.defaultObjectEncoding` property indicates which Action Message - Format version should be used: the ActionScript 3.0 format (AMF3) or the - ActionScript 1.0 or 2.0 format (AMF0). - - For more information about object encoding, including the difference between - encoding in local and remote shared objects, see the description of the - `objectEncoding` property. - - The default value of `SharedObject.defaultObjectEncoding` is set to use the - ActionScript 3.0 format, AMF3. If you need to write local shared objects that - ActionScript 2.0 or 1.0 SWF files can read, set - `SharedObject.defaultObjectEncoding` to use the ActionScript 1.0 or ActionScript - 2.0 format, `openfl.net.ObjectEncoding.AMF0`, at the beginning of your script, - before you create any local shared objects. All local shared objects created - thereafter will use AMF0 encoding and can interact with older content. You cannot - change the `objectEncoding` value of existing local shared objects by setting - `SharedObject.defaultObjectEncoding` after the local shared objects have been - created. - - To set the object encoding on a per-object basis, rather than for all shared - objects created by the SWF file, set the objectEncoding property of the local - shared object instead. - - <__sharedObjects static="1"> - - - - - - - - - - - - - - { secure : false, localPath : null } - ? #` - @param localPath The full or partial path to the SWF file that created the - shared object, and that determines where the shared - object will be stored locally. If you do not specify this - parameter, the full path is used. - @param secure Determines whether access to this shared object is - restricted to SWF files that are delivered over an HTTPS - connection. If your SWF file is delivered over HTTPS, - this parameter's value has the following effects: - - * If this parameter is set to `true`, - Flash Player creates a new secure shared object or gets a - reference to an existing secure shared object. This - secure shared object can be read from or written to only - by SWF files delivered over HTTPS that call - `SharedObject.getLocal()` with the - `secure` parameter set to - `true`. - * If this parameter is set to `false`, - Flash Player creates a new shared object or gets a - reference to an existing shared object that can be read - from or written to by SWF files delivered over non-HTTPS - connections. - - - If your SWF file is delivered over a non-HTTPS - connection and you try to set this parameter to - `true`, the creation of a new shared object - (or the access of a previously created secure shared - object) fails and `null` is returned. - Regardless of the value of this parameter, the created - shared objects count toward the total amount of disk - space allowed for a domain. - - The following diagram shows the use of the - `secure` parameter: - @return A reference to a shared object that is persistent locally and is - available only to the current client. If Flash Player can't create - or find the shared object(for example, if `localPath` - was specified but no such directory exists), this method throws an - exception. - @throws Error Flash Player cannot create the shared object for whatever - reason. This error might occur is if persistent shared - object creation and storage by third-party Flash content is - prohibited(does not apply to local content). Users can - prohibit third-party persistent shared objects on the Global - Storage Settings panel of the Settings Manager, located at - [http://www.adobe.com/support/documentation/en/flashplayer/help/settings_manager03.html](http://www.adobe.com/support/documentation/en/flashplayer/help/settings_manager03.html).]]> - - - - - - - - - - { secure : false, persistence : false, remotePath : null } - ? ? #` - @param remotePath The URI of the server on which the shared object - will be stored. This URI must be identical to the - URI of the NetConnection object passed to the - `connect()` method. - @param persistence Specifies whether the attributes of the shared - object's data property are persistent locally, - remotely, or both. This parameter can also specify - where the shared object will be stored locally. - Acceptable values are as follows: - * A value of `false` specifies that the shared - object is not persistent on the client or server. - * A value of `true` specifies that the shared - object is persistent only on the server. - * A full or partial local path to the shared object - indicates that the shared object is persistent on - the client and the server. On the client, it is - stored in the specified path; on the server, it is - stored in a subdirectory within the application - directory. - - **Note:** If the user has chosen to never allow - local storage for this domain, the object will not - be saved locally, even if a local path is specified - for persistence. For more information, see the - class description. - @param secure Determines whether access to this shared object is - restricted to SWF files that are delivered over an - HTTPS connection. For more information, see the - description of the `secure` parameter in the - `getLocal` method entry. - @return A reference to an object that can be shared across multiple - clients. - @throws Error Flash Player can't create or find the shared object. - This might occur if nonexistent paths were specified for - the `remotePath` and `persistence` parameters.]]> - - <__getPath set="method" line="879" static="1"> - - - - - - - - <__mkdir set="method" line="916" static="1"> - - - - - - - <__resolveClass set="method" line="964" static="1"> - - - - - - - - - - - - - - - - Indicates the object on which callback methods are invoked. The - default object is `this`. You can set the client property to another - object, and callback methods will be invoked on that other object. - - @throws TypeError The `client` property must be set to a non-null - object. - - - - The collection of attributes assigned to the `data` property of - the object; these attributes can be shared and stored. Each attribute can - be an object of any ActionScript or JavaScript type - Array, Number, - Boolean, ByteArray, XML, and so on. For example, the following lines - assign values to various aspects of a shared object: - - For remote shared objects used with a server, all attributes of the - `data` property are available to all clients connected to the - shared object, and all attributes are saved if the object is persistent. - If one client changes the value of an attribute, all clients now see the - new value. - - - - Specifies the number of times per second that a client's changes to a - shared object are sent to the server. - Use this method when you want to control the amount of traffic between - the client and the server. For example, if the connection between the - client and server is relatively slow, you may want to set `fps` to a - relatively low value. Conversely, if the client is connected to a - multiuser application in which timing is important, you may want to - set `fps` to a relatively high value. - - Setting `fps` will trigger a `sync` event and update all changes to - the server. If you only want to update the server manually, set `fps` - to 0. - - Changes are not sent to the server until the `sync` event has been - dispatched. That is, if the response time from the server is slow, - updates may be sent to the server less frequently than the value - specified in this property. - - - - The object encoding (AMF version) for this shared object. When a local - shared object is written to disk, the `objectEncoding` property - indicates which Action Message Format version should be used: the - ActionScript 3.0 format (AMF3) or the ActionScript 1.0 or 2.0 format - (AMF0). - Object encoding is handled differently depending if the shared object - is local or remote. - - * **Local shared objects**. You can get or set the value of the - `objectEncoding` property for local shared objects. The value of - `objectEncoding` affects what formatting is used for _writing_ this - local shared object. If this local shared object must be readable by - ActionScript 2.0 or 1.0 SWF files, set `objectEncoding` to - `ObjectEncoding.AMF0`. Even if object encoding is set to write AMF3, - Flash Player can still read AMF0 local shared objects. That is, if you - use the default value of this property, `ObjectEncoding.AMF3`, your - SWF file can still read shared objects created by ActionScript 2.0 or - 1.0 SWF files. - * **Remote shared objects**. When connected to the server, a remote - shared object inherits its `objectEncoding` setting from the - associated NetConnection instance (the instance used to connect to the - remote shared object). When not connected to the server, a remote - shared object inherits the `defaultObjectEncoding` setting from the - associated NetConnection instance. Because the value of a remote - shared object's `objectEncoding` property is determined by the - NetConnection instance, this property is read-only for remote shared - objects. - - @throws ReferenceError You attempted to set the value of the - `objectEncoding` property on a remote shared - object. This property is read-only for remote - shared objects because its value is determined - by the associated NetConnection instance. - - - - The current size of the shared object, in bytes. - - Flash calculates the size of a shared object by stepping through all of - its data properties; the more data properties the object has, the longer - it takes to estimate its size. Estimating object size can take significant - processing time, so you may want to avoid using this method unless you - have a specific need for it. - - <__localPath> - - - - <__name> - - - - - - For local shared objects, purges all of the data and deletes the shared - object from the disk. The reference to the shared object is still active, - but its data properties are deleted. - - For remote shared objects used with Flash Media Server, - `clear()` disconnects the object and purges all of the data. If - the shared object is locally persistent, this method also deletes the - shared object from the disk. The reference to the shared object is still - active, but its data properties are deleted. - - - - Closes the connection between a remote shared object and the server. - If a remote shared object is locally persistent, the user can make - changes to the local copy of the object after this method is called. - Any changes made to the local object are sent to the server the next - time the user connects to the remote shared object. - - - - - - - - { params : null } - Connects to a remote shared object on a server through a specified - NetConnection object. Use this method after calling `getRemote()`. - When a connection is successful, the `sync` event is dispatched. - Before attempting to work with a remote shared object, first check for - any errors using a `try..catch..finally` statement. Then, listen for - and handle the `sync` event before you make changes to the shared - object. Any changes made locally — before the `sync` event is - dispatched — might be lost. - - Call the `connect()` method to connect to a remote shared object, for - example: - - ```as3 - var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false); - myRemoteSO.connect(myNC); - ``` - - @param myConnection A NetConnection object that uses the Real-Time - Messaging Protocol (RTMP), such as a NetConnection - object used to communicate with Flash Media - Server. - @param params A string defining a message to pass to the remote - shared object on the server. Cannot be used with - Flash Media Server. - @throws Error Flash Player could not connect to the specified remote - shared object. Verify that the NetConnection instance is - valid and connected and that the remote shared object - was successfully created on the server. - - - - - - - { minDiskSpace : 0 } - Immediately writes a locally persistent shared object to a local file. If - you don't use this method, Flash Player writes the shared object to a file - when the shared object session ends - that is, when the SWF file is - closed, when the shared object is garbage-collected because it no longer - has any references to it, or when you call - `SharedObject.clear()` or `SharedObject.close()`. - - If this method returns `SharedObjectFlushStatus.PENDING`, - Flash Player displays a dialog box asking the user to increase the amount - of disk space available to objects from this domain. To allow space for - the shared object to grow when it is saved in the future, which avoids - return values of `PENDING`, pass a value for - `minDiskSpace`. When Flash Player tries to write the file, it - looks for the number of bytes passed to `minDiskSpace`, instead - of looking for enough space to save the shared object at its current size. - - - For example, if you expect a shared object to grow to a maximum size of - 500 bytes, even though it might start out much smaller, pass 500 for - `minDiskSpace`. If Flash asks the user to allot disk space for - the shared object, it asks for 500 bytes. After the user allots the - requested amount of space, Flash won't have to ask for more space on - future attempts to flush the object(as long as its size doesn't exceed - 500 bytes). - - After the user responds to the dialog box, this method is called again. - A `netStatus` event is dispatched with a `code` - property of `SharedObject.Flush.Success` or - `SharedObject.Flush.Failed`. - - @param minDiskSpace The minimum disk space, in bytes, that must be - allotted for this object. - @return Either of the following values: - - * `SharedObjectFlushStatus.PENDING`: The user has - permitted local information storage for objects from this domain, - but the amount of space allotted is not sufficient to store the - object. Flash Player prompts the user to allow more space. To - allow space for the shared object to grow when it is saved, thus - avoiding a `SharedObjectFlushStatus.PENDING` return - value, pass a value for `minDiskSpace`. - * `SharedObjectFlushStatus.FLUSHED`: The shared - object has been successfully written to a file on the local - disk. - - @throws Error Flash Player cannot write the shared object to disk. This - error might occur if the user has permanently disallowed - local information storage for objects from this domain. - - **Note:** Local content can always write shared - objects from third-party domains(domains other than the - domain in the current browser address bar) to disk, even if - writing of third-party shared objects to disk is - disallowed. - - - - - - - Broadcasts a message to all clients connected to a remote shared - object, including the client that sent the message. To process and - respond to the message, create a callback function attached to the - shared object. - - - - - - - Indicates to the server that the value of a property in the shared - object has changed. This method marks properties as _dirty_, which - means changed. - Call the `SharedObject.setProperty()` to create properties for a - shared object. - - The `SharedObject.setProperty()` method implements `setDirty()`. In - most cases, such as when the value of a property is a primitive type - like String or Number, you can call `setProperty()` instead of calling - `setDirty()`. However, when the value of a property is an object that - contains its own properties, call `setDirty()` to indicate when a - value within the object has changed. - - @param propertyName The name of the property that has changed. - - - - - - - - { value : null } - Flash Media Server - documentation. - - **Note:** The `SharedObject.setProperty()` method implements the - `setDirty()` method. In most cases, such as when the value of a - property is a primitive type like String or Number, you would use - `setProperty()` instead of `setDirty`. However, when the value of a - property is an object that contains its own properties, use - `setDirty()` to indicate when a value within the object has changed. - In general, it is a good idea to call `setProperty()` rather than - `setDirty()`, because `setProperty()` updates a property value only - when that value has changed, whereas `setDirty()` forces - synchronization on all subscribed clients. - - @param propertyName The name of the property in the shared object. - @param value The value of the property (an ActionScript - object), or `null` to delete the property.]]> - - - - - - - - - - The SharedObject class is used to read and store limited amounts of data on - a user's computer or on a server. Shared objects offer real-time data - sharing between multiple client SWF files and objects that are persistent - on the local computer or remote server. Local shared objects are similar to - browser cookies and remote shared objects are similar to real-time data - transfer devices. To use remote shared objects, you need Adobe Flash Media - Server. - - Use shared objects to do the following: - - - * **Maintain local persistence**. This is the simplest way to use a - shared object, and does not require Flash Media Server. For example, you - can call `SharedObject.getLocal()` to create a shared object in - an application, such as a calculator with memory. When the user closes the - calculator, Flash Player saves the last value in a shared object on the - user's computer. The next time the calculator is run, it contains the - values it had previously. Alternatively, if you set the shared object's - properties to `null` before the calculator application is - closed, the next time the application runs, it opens without any values. - Another example of maintaining local persistence is tracking user - preferences or other data for a complex website, such as a record of which - articles a user read on a news site. Tracking this information allows you - to display articles that have already been read differently from new, - unread articles. Storing this information on the user's computer reduces - server load. - * **Store and share data on Flash Media Server**. A shared object - can store data on the server for other clients to retrieve. For example, - call `SharedObject.getRemote()` to create a remote shared - object, such as a phone list, that is persistent on the server. Whenever a - client makes changes to the shared object, the revised data is available to - all clients currently connected to the object or who later connect to it. - If the object is also persistent locally, and a client changes data while - not connected to the server, the data is copied to the remote shared object - the next time the client connects to the object. - * **Share data in real time**. A shared object can share data among - multiple clients in real time. For example, you can open a remote shared - object that stores a list of users connected to a chat room that is visible - to all clients connected to the object. When a user enters or leaves the - chat room, the object is updated and all clients that are connected to the - object see the revised list of chat room users. - - - To create a local shared object, call - `SharedObject.getLocal()`. To create a remote shared object, - call `SharedObject.getRemote()`. - - When an application closes, shared objects are _flushed_, or - written to a disk. You can also call the `flush()` method to - explicitly write data to a disk. - - **Local disk space considerations.** Local shared objects have some - limitations that are important to consider as you design your application. - Sometimes SWF files may not be allowed to write local shared objects, and - sometimes the data stored in local shared objects can be deleted without - your knowledge. Flash Player users can manage the disk space that is - available to individual domains or to all domains. When users decrease the - amount of disk space available, some local shared objects may be deleted. - Flash Player users also have privacy controls that can prevent third-party - domains(domains other than the domain in the current browser address bar) - from reading or writing local shared objects. - - **Note**: SWF files that are stored and run on a local computer, not - from a remote server, can always write third-party shared objects to disk. - For more information about third-party shared objects, see the - [Global Storage Settings panel](http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html) - in Flash Player Help. - - It's a good idea to check for failures related to the amount of disk - space and to user privacy controls. Perform these checks when you call - `getLocal()` and `flush()`: - - * `SharedObject.getLocal()` - Flash Player throws an - exception when a call to this method fails, such as when the user has - disabled third-party shared objects and the domain of your SWF file does - not match the domain in the browser address bar. - * `SharedObject.flush()` - Flash Player throws an - exception when a call to this method fails. It returns - `SharedObjectFlushStatus.FLUSHED` when it succeeds. It returns - `SharedObjectFlushStatus.PENDING` when additional storage space - is needed. Flash Player prompts the user to allow an increase in storage - space for locally saved information. Thereafter, the `netStatus` - event is dispatched with an information object indicating whether the flush - failed or succeeded. - - - - If your SWF file attempts to create or modify local shared objects, make - sure that your SWF file is at least 215 pixels wide and at least 138 pixels - high(the minimum dimensions for displaying the dialog box that prompts - users to increase their local shared object storage limit). If your SWF - file is smaller than these dimensions and an increase in the storage limit - is required, `SharedObject.flush()` fails, returning - `SharedObjectFlushedStatus.PENDING` and dispatching the - `netStatus` event. - - **Remote shared objects.** With Flash Media Server, you can create - and use remote shared objects, that are shared in real-time by all clients - connected to your application. When one client changes a property of a - remote shared object, the property is changed for all connected clients. - You can use remote shared objects to synchronize clients, for example, - users in a multi-player game. - - Each remote shared object has a `data` property which is an - Object with properties that store data. Call `setProperty()` to - change an property of the data object. The server updates the properties, - dispatches a `sync` event, and sends the properties back to the - connected clients. - - You can choose to make remote shared objects persistent on the client, - the server, or both. By default, Flash Player saves locally persistent - remote shared objects up to 100K in size. When you try to save a larger - object, Flash Player displays the Local Storage dialog box, which lets the - user allow or deny local storage for the shared object. Make sure your - Stage size is at least 215 by 138 pixels; this is the minimum size Flash - requires to display the dialog box. - - If the user selects Allow, the server saves the shared object and - dispatches a `netStatus` event with a `code` property - of `SharedObject.Flush.Success`. If the user select Deny, the - server does not save the shared object and dispatches a - `netStatus` event with a `code` property of - `SharedObject.Flush.Failed`. - - @event asyncError Dispatched when an exception is thrown asynchronously - - that is, from native asynchronous code. - @event netStatus Dispatched when a SharedObject instance is reporting its - status or error condition. The `netStatus` - event contains an `info` property, which is an - information object that contains specific information - about the event, such as whether a connection attempt - succeeded or whether the shared object was successfully - written to the local disk. - @event sync Dispatched when a remote shared object has been updated - by the server. - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - * Returns the company name listed in the Project.xml - - - - - - - - - - - - - - - - - - - - - - - * Whether the save exists, checks both the old and new path. - - - - - - - - * Whether the save exists, checks the NEW location - - - - - - - - - - - - - * Whether the save exists, checks the LEGACY location - - - - - - - { minDiskSpace : 0 } - - - - \AppData\Roaming\\.sol"``` - * - Mac: ```"/Users//Library/Application Support//.sol"``` - * - * If localPath is null, the Project.xml's app company metadata is used. FlxG.save's default bind - * args are `bind(app.company, app.file)`. - * - * ## Legacy Paths - * Openfl's default save location are created using app metadata from the Project.xml - * - Windows: ```"C:\Users\\AppData\Roaming\\\\.sol"``` - * - Mac: ```"/Users//Library/Application Support////.sol"``` - * - * This prevents 2 different HaxeFlixel apps from using each other's save files, but cross-save - * referencing is a really cool idea so let's allow it!]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - openfl.net.SharedObject - - - - * The initial state, call bind() in order to use. - - - - * The save is set up correctly. - - - - * There was an issue. - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - ? #` - * @param path The full or partial path to the file that created the shared object. - * Mainly used to differentiate from other FlxSaves. If you do not specify - * this parameter, the company name specified in your Project.xml is used. - * @return Whether or not you successfully connected to the save data.]]> - - <_HX_SUPER__bind public="1" set="method" line="148"> - - - - - - - - - - - - - - { minFileSize : 0, eraseSave : true, overwrite : false } - * Creates a new FlxSave and copies the data from old to new, - * flushes the new save (if changed) and then optionally erases the old save. - * - * @param name The name of the save. - * @param path The full or partial path to the file that created the save. - * @param overwrite Whether the data should overwrite, should the 2 saves share data fields. defaults to false. - * @param eraseSave Whether to erase the save after successfully migrating the data. defaults to true. - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not you successfully found, merged and flushed data. - - <_HX_SUPER__mergeDataFrom public="1" set="method" line="148"> - - - - - - - - - { minFileSize : 0, eraseSave : true, overwrite : false } - - - - - - - - - { minFileSize : 0, overwrite : false } - * Copies the given data over to this save and flushes (if changed). - * - * @param sourceData The data to merge - * @param overwrite Whether the data should overwrite, should the 2 saves share data fields. defaults to false. - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not you successfully saved the data. - - <_HX_SUPER__mergeData public="1" set="method" line="148"> - - - - - - - { minFileSize : 0, overwrite : false } - - - - - - - { minFileSize : 0 } - * A way to safely call flush() and destroy() on your save file. - * Will correctly handle storage size popups and all that good stuff. - * If you don't want to save your changes first, just call destroy() instead. - * - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return The result of result of the flush() call (see below for more details). - - <_HX_SUPER__close public="1" set="method" line="148"> - - - - - { minFileSize : 0 } - - - - - - - { minFileSize : 0 } - * Writes the local shared object to disk immediately. Leaves the object open in memory. - * - * @param minFileSize If you need X amount of space for your save, specify it here. - * @return Whether or not the data was written immediately. False could be an error OR a storage request popup. - - <_HX_SUPER__flush public="1" set="method" line="148"> - - - - - { minFileSize : 0 } - - - - * Erases everything stored in the local shared object. - * Data is immediately erased and the object is saved that way, - * so use with caution! - * - * @return Returns false if the save object is not bound yet. - - <_HX_SUPER__erase public="1" set="method" line="148"> - - - * Handy utility function for checking and warning if the shared object is bound yet or not. - * - * @return Whether the shared object was bound yet. - - <_HX_SUPER__checkStatus set="method" line="148"> - - <_HX_SUPER__get_name set="method" line="148"> - - <_HX_SUPER__get_path set="method" line="148"> - - - * Scans the data for any properties. - * @since 5.0.0 - - <_HX_SUPER__isEmpty public="1" set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSave - flixel.util.FlxSave.FlxSharedObject - flixel.util.FlxSave.FlxSaveStatus - - - - - - - - - - { minDiskSpace : 0 } - - <_HX_SUPER__flush set="method" line="148"> - - - - - { minDiskSpace : 0 } - - - <_HX_SUPER__clear set="method" line="148"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSave - flixel.util.FlxSave.FlxSharedObject - flixel.util.FlxSave.FlxSaveStatus - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - false - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Typed function reference used to dispatch this signal. - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__dispatch0 public="1" set="method" line="31"> - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSignal - flixel.util.FlxSignal.FlxTypedSignal - flixel.util.FlxSignal.FlxTypedSignal - flixel.util.FlxSignal.FlxSignalHandler - flixel.util.FlxSignal.FlxBaseSignal - flixel.util.FlxSignal.FlxSignal0 - flixel.util.FlxSignal.FlxSignal1 - flixel.util.FlxSignal.FlxSignal2 - flixel.util.FlxSignal.FlxSignal3 - flixel.util.FlxSignal.FlxSignal4 - flixel.util.FlxSignal.IFlxSignal - flixel.util.FlxSignal.Macro - flixel.util.FlxSignal.FlxTypedSignal_HSC - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSignal - flixel.util.FlxSignal.FlxTypedSignal - flixel.util.FlxSignal.FlxTypedSignal - flixel.util.FlxSignal.FlxSignalHandler - flixel.util.FlxSignal.FlxBaseSignal - flixel.util.FlxSignal.FlxSignal0 - flixel.util.FlxSignal.FlxSignal1 - flixel.util.FlxSignal.FlxSignal2 - flixel.util.FlxSignal.FlxSignal3 - flixel.util.FlxSignal.FlxSignal4 - flixel.util.FlxSignal.IFlxSignal - flixel.util.FlxSignal.Macro - - - - - - -1 - - - - 1 - - - - - - - - - * You can use this function in FlxTypedGroup.sort() to sort FlxObjects by their y values. - - - - - - - - - * You can use this function as a backend to write a custom sorting function (see byY() for an example). - - * Helper class for sort() in FlxTypedGroup, but could theoretically be used on regular arrays as well. - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSort - - - - - - new Sprite() - * Useful helper objects for doing Flash-specific rendering. - * Primarily used for "debug visuals" like drawing bounding boxes directly to the screen buffer. - - - - flashGfxSprite.graphics - - - - - - - - - * Takes two source images (typically from Embedded bitmaps) and puts the resulting image into the output FlxSprite. - * Note: It assumes the source and mask are the same size. Different sizes may result in undesired results. - * It works by copying the source image (your picture) into the output sprite. Then it removes all areas of it that do not - * have an alpha color value in the mask image. So if you draw a big black circle in your mask with a transparent edge, you'll - * get a circular image to appear. - * May lead to unexpected results if `source` does not have an alpha channel. - * - * @param output The FlxSprite you wish the resulting image to be placed in (will adjust width/height of image) - * @param source The source image. Typically the one with the image / picture / texture in it. - * @param mask The mask to apply. Remember the non-alpha zero areas are the parts that will display. - * @return The FlxSprite for chaining - - - - - - - - - * Takes the image data from two FlxSprites and puts the resulting image into the output FlxSprite. - * Note: It assumes the source and mask are the same size. Different sizes may result in undesired results. - * It works by copying the source image (your picture) into the output sprite. Then it removes all areas of it that do not - * have an alpha color value in the mask image. So if you draw a big black circle in your mask with a transparent edge, you'll - * get a circular image appear. - * May lead to unexpected results if `sprite`'s graphic does not have an alpha channel. - * - * @param sprite The source FlxSprite. Typically the one with the image / picture / texture in it. - * @param mask The FlxSprite containing the mask to apply. Remember the non-alpha zero areas are the parts that will display. - * @param output The FlxSprite you wish the resulting image to be placed in (will adjust width/height of image) - * @return The output FlxSprite for chaining - - - - - - - - - - - { Bottom : true, Top : true, Right : true, Left : true } - * Checks the x/y coordinates of the FlxSprite and keeps them within the - * area of 0, 0, FlxG.width, FlxG.height (i.e. wraps it around the screen) - * - * @param sprite The FlxSprite to keep within the screen - * @param Left Whether to activate screen wrapping on the left side of the screen - * @param Right Whether to activate screen wrapping on the right side of the screen - * @param Top Whether to activate screen wrapping on the top of the screen - * @param Bottom Whether to activate screen wrapping on the bottom of the screen - * @return The FlxSprite for chaining - - - - - - - - - - - { MaxY : 0, MinY : 0, MaxX : 0, MinX : 0 } - * Makes sure a FlxSprite doesn't leave the specified area - most common use case is to call this every frame in update(). - * If you call this without specifying an area, the game area (FlxG.width / height as max) will be used. Takes the graphic size into account. - * - * @param sprite The FlxSprite to bound to an area - * @param MinX The minimum x position allowed - * @param MaxX The maximum x position allowed - * @param MinY The minimum y position allowed - * @param MaxY The minimum y position allowed - * @return The FlxSprite for chaining - - - - - - - - - { edges : ANY } - * Checks the sprite's screen bounds of the FlxSprite and keeps them within the camera by wrapping it around. - * - * @param sprite The FlxSprite to wrap. - * @param camera The camera to wrap around. If left null, `FlxG.camera` is used. - * @param edges The edges FROM which to wrap. Use constants like `LEFT`, `RIGHT`, `UP|DOWN` or `ANY`. - * @return The FlxSprite for chaining - * @since 4.11.0 - - - - - - - - - { edges : ANY } - * Checks the sprite's screen bounds and keeps it entirely within the camera. - * - * @param sprite The FlxSprite to restrict. - * @param camera The camera resitricting the sprite. If left null, `FlxG.camera` is used. - * @param edges The edges to restrict. Use constants like `LEFT`, `RIGHT`, `UP|DOWN` or `ANY`. - * @return The FlxSprite for chaining - * @since 4.11.0 - - - - - - - - - - - - - - - - - - { spaceFromBounds : false } - * Aligns a set of FlxObjects so there is equal spacing between them - * - * @param objects An Array of FlxObjects - * @param startX The base X coordinate to start the spacing from - * @param startY The base Y coordinate to start the spacing from - * @param horizontalSpacing The amount of pixels between each sprite horizontally. Set to `null` to just keep the current X position of each object. - * @param verticalSpacing The amount of pixels between each sprite vertically. Set to `null` to just keep the current Y position of each object. - * @param spaceFromBounds If set to true the h/v spacing values will be added to the width/height of the sprite, if false it will ignore this - * @param position A function with the signature `(target:FlxObject, x:Float, y:Float):Void`. You can use this to tween objects into their spaced position, etc. - - - - - - - - - - - - - * This function draws a line on a FlxSprite from position X1,Y1 - * to position X2,Y2 with the specified color. - * - * @param sprite The FlxSprite to manipulate - * @param StartX X coordinate of the line's start point. - * @param StartY Y coordinate of the line's start point. - * @param EndX X coordinate of the line's end point. - * @param EndY Y coordinate of the line's end point. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - - - - { FillColor : FlxColor.TRANSPARENT } - * This function draws a curve on a FlxSprite from position X1,Y1 - * to anchor position X2,Y2 using control points X3,Y3 with the specified color. - * - * @param sprite The FlxSprite to manipulate - * @param StartX X coordinate of the curve's start point. - * @param StartY Y coordinate of the curve's start point. - * @param EndX X coordinate of the curve's end/anchor point. - * @param EndY Y coordinate of the curve's end/anchor point. - * @param ControlX X coordinate of the curve's control point. - * @param ControlY Y coordinate of the curve's control point. - * @param FillColor The ARGB color to fill this curve with. FlxColor.TRANSPARENT (0x0) means no fill. Filling a curve draws a line from End to Start to complete the figure. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws a rectangle on a FlxSprite. - * - * @param sprite The FlxSprite to manipulate - * @param X X coordinate of the rectangle's start point. - * @param Y Y coordinate of the rectangle's start point. - * @param Width Width of the rectangle - * @param Height Height of the rectangle - * @param FillColor The ARGB color to fill this rectangle with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws a rounded rectangle on a FlxSprite. - * - * @param sprite The FlxSprite to manipulate - * @param X X coordinate of the rectangle's start point. - * @param Y Y coordinate of the rectangle's start point. - * @param Width Width of the rectangle - * @param Height Height of the rectangle - * @param EllipseWidth The width of the ellipse used to draw the rounded corners - * @param EllipseHeight The height of the ellipse used to draw the rounded corners - * @param FillColor The ARGB color to fill this rectangle with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws a rounded rectangle on a FlxSprite. Same as drawRoundRect, - * except it allows you to determine the radius of each corner individually. - * - * @param sprite The FlxSprite to manipulate - * @param X X coordinate of the rectangle's start point. - * @param Y Y coordinate of the rectangle's start point. - * @param Width Width of the rectangle - * @param Height Height of the rectangle - * @param TopLeftRadius The radius of the top left corner of the rectangle - * @param TopRightRadius The radius of the top right corner of the rectangle - * @param BottomLeftRadius The radius of the bottom left corner of the rectangle - * @param BottomRightRadius The radius of the bottom right corner of the rectangle - * @param FillColor The ARGB color to fill this rectangle with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - { FillColor : FlxColor.WHITE, Radius : -1, Y : -1, X : -1 } - - - - - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws an ellipse on a FlxSprite. - * - * @param sprite The FlxSprite to manipulate - * @param X X coordinate of the ellipse's start point. - * @param Y Y coordinate of the ellipse's start point. - * @param Width Width of the ellipse - * @param Height Height of the ellipse - * @param FillColor The ARGB color to fill this ellipse with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws a simple, equilateral triangle on a FlxSprite. - * - * @param sprite The FlxSprite to manipulate - * @param X X position of the triangle - * @param Y Y position of the triangle - * @param Height Height of the triangle - * @param FillColor The ARGB color to fill this triangle with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - - - { FillColor : FlxColor.WHITE } - * This function draws a polygon on a FlxSprite. - * - * @param sprite The FlxSprite to manipulate - * @param Vertices Array of Vertices to use for drawing the polygon - * @param FillColor The ARGB color to fill this polygon with. FlxColor.TRANSPARENT (0x0) means no fill. - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - - * Helper function that the drawing functions use at the start to set the color and lineStyle. - * - * @param FillColor The ARGB color to use for drawing - * @param lineStyle A LineStyle typedef containing the params of Graphics.lineStyle() - - - - - - - - * Helper function that the drawing functions use at the end. - * - * @param sprite The FlxSprite to draw to - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - * Just a helper function that is called at the end of the draw functions - * to handle a few things related to updating a sprite's graphic. - * - * @param Sprite The FlxSprite to manipulate - * @param drawStyle A DrawStyle typedef containing the params of BitmapData.draw() - * @return The FlxSprite for chaining - - - - - - - - * Just a helper function that is called in the draw functions - * to set the lineStyle via Graphics.lineStyle() - * - * @param lineStyle The lineStyle typedef - - - - - - - * Helper function for the default line styles of drawLine() and drawCurve() - * - * @param lineStyle The lineStyle typedef - - - - - - - - * Fills this sprite's graphic with a specific color. - * - * @param Sprite The FlxSprite to manipulate - * @param FillColor The color with which to fill the graphic, format 0xAARRGGBB. - * @return The FlxSprite for chaining - - - - - - - - - - - - - - - - - - - { ForceRestart : true, EndVisibility : true, Interval : 0.04, Duration : 1 } - - - - - - - - * Returns whether an object is flickering or not. - * - * @param Object The object to check against. - - - - - - - * Stops flickering of the object. Also it will make the object visible. - * - * @param Object The object to stop flickering. - * @return The FlxObject for chaining - - - - - - - - - - { Duration : 1 } - * Fade in a sprite, tweening alpha to 1. - * - * @param sprite The object to fade. - * @param Duration How long the fade will take (in seconds). - * @return The FlxSprite for chaining - - - - - - - - - { Duration : 1 } - * Fade out a sprite, tweening alpha to 0. - * - * @param sprite The object to fade. - * @param Duration How long the fade will take (in seconds). - * @return The FlxSprite for chaining - - - - - - - * Some handy functions for FlxSprite (FlxObject) manipulation, mostly drawing-related. - * Note that stage quality impacts the results of the draw() functions - - * use FlxG.stage.quality = flash.display.StageQuality.BEST; for best results. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxSpriteUtil - flixel.util.FlxSpriteUtil.LineStyle - flixel.util.FlxSpriteUtil.DrawStyle - - - - - - - - - - * Takes two "ticks" timestamps and formats them into the number of seconds that passed as a String. - * Useful for logging, debugging, the watch window, or whatever else. - * - * @param StartTicks The first timestamp from the system. - * @param EndTicks The second timestamp from the system. - * @return A String containing the formatted time elapsed information. - - - - - - - - { ShowMS : false } - * Format seconds as minutes with a colon, an optionally with milliseconds too. - * - * @param Seconds The number of seconds (for example, time remaining, time spent, etc). - * @param ShowMS Whether to show milliseconds after a "." as well. Default value is false. - * @return A nicely formatted String, like "1:03". - - - - - - - * Generate a comma-separated string from an array. - * Especially useful for tracing or other debug output. - * - * @param AnyArray Any Array object. - * @return A comma-separated String containing the .toString() output of each element in the array. - - - - - - - - - - * Generate a comma-separated string representation of the keys of a StringMap. - * - * @param AnyMap A StringMap object. - * @return A String formatted like this: key1, key2, ..., keyX - - - - - - - - - { EnglishStyle : true, ShowDecimal : true } - * Automatically commas and decimals in the right places for displaying money amounts. - * Does not include a dollar sign or anything, so doesn't really do much - * if you call say `FlxString.formatMoney(10, false)`. - * However, very handy for displaying large sums or decimal money values. - * - * @param Amount How much moneys (in dollars, or the equivalent "main" currency - i.e. not cents). - * @param ShowDecimal Whether to show the decimals/cents component. - * @param EnglishStyle Major quantities (thousands, millions, etc) separated by commas, and decimal by a period. - * @return A nicely formatted String. Does not include a dollar sign or anything! - - - - - - - - { Precision : 2 } - 117.74MB]]> - - - - - - - * Takes a string and filters out everything but the digits. - * - * @param Input The input string - * @return The output string, digits-only - - - - - - - - - - - - { Underlined : false, Italic : false, Bold : false, Color : "FFFFFF", Size : 12 } - * Format a text with html tags - useful for TextField.htmlText. - * Used by the log window of the debugger. - * - * @param Text The text to format - * @param Size The text size, using the font-size-tag - * @param Color The text color, using font-color-tag - * @param Bold Whether the text should be bold (b-tag) - * @param Italic Whether the text should be italic (i-tag) - * @param Underlined Whether the text should be underlined (u-tag) - * @return The html-formatted text. - - - - - - - - { simple : false } - * Get the string name of any class or class instance. Wraps `Type.getClassName()`. - * - * @param objectOrClass The class or class instance in question. - * @param simple Returns only the type name, without package(s). - * @return The name of the class as a string. - - - - - - - - - - - { simple : false } - * Get the string name of any enum or enum value. Wraps `Type.getEnumName()`. - * - * @param enumValueOrEnum The enum value or enum in question. - * @param simple Returns only the type name, without package(s). - * @return The name of the enum as a string. - * @since 4.4.0 - - - - - - - - - - - - * Returns the host from the specified URL. - * The host is one of three parts that comprise the authority. (User and port are the other two parts.) - * For example, the host for "ftp://anonymous@ftp.domain.test:990/" is "ftp.domain.test". - * - * @return The host from the URL; or the empty string ("") upon failure. - * @since 4.3.0 - - - - - - - * Returns the domain from the specified URL. - * The domain, in this case, refers specifically to the first and second levels only. - * For example, the domain for "api.haxe.org" is "haxe.org". - * - * @return The domain from the URL; or the empty string ("") upon failure. - - - - - - - - - { Simple : true } - * Helper function that uses getClassName to compare two objects' class names. - * - * @param Obj1 The first object - * @param Obj2 The second object - * @param Simple Only uses the class name, not the package or packages. - * @return Whether they have the same class name or not - - - - - - - * Split a comma-separated string into an array of ints - * - * @param Data String formatted like this: "1, 2, 5, -10, 120, 27" - * @return An array of ints - - - - - - - * Split a comma-separated string into an array of floats - * - * @param Data string formatted like this: "1.0,2.1,5.6,1245587.9, -0.00354" - * @return An array of floats - - - - - - - - - { Invert : false } - * Converts a one-dimensional array of tile data to a comma-separated string. - * - * @param Data An array full of integer tile references. - * @param Width The number of tiles in each row. - * @param Invert Recommended only for 1-bit arrays - changes 0s to 1s and vice versa. - * @return A comma-separated string containing the level data in a FlxTilemap-friendly format. - - - - - - - - - - { Scale : 1, Invert : false } - * Converts a BitmapData object to a comma-separated string. Black pixels are flagged as 'solid' by default, - * non-black pixels are set as non-colliding. Black pixels must be PURE BLACK. - * - * @param Bitmap A Flash BitmapData object, preferably black and white. - * @param Invert Load white pixels as solid instead. - * @param Scale Default is 1. Scale of 2 means each pixel forms a 2x2 block of tiles, and so on. - * @param ColorMap An array of color values (alpha values are ignored) in the order they're intended to be assigned as indices - * @return A comma-separated string containing the level data in a FlxTilemap-friendly format. - - - - - - - - - - { Scale : 1, Invert : false } - * Converts a resource image file to a comma-separated string. Black pixels are flagged as 'solid' by default, - * non-black pixels are set as non-colliding. Black pixels must be PURE BLACK. - * - * @param ImageFile An embedded graphic, preferably black and white. - * @param Invert Load white pixels as solid instead. - * @param Scale Default is 1. Scale of 2 means each pixel forms a 2x2 block of tiles, and so on. - * @param ColorMap An array of color values (alpha values are ignored) in the order they're intended to be assigned as indices - * @return A comma-separated string containing the level data in a FlxTilemap-friendly format. - - - - - - - * Helper function to create a string for toString() functions. Automatically rounds values according to FlxG.debugger.precision. - * Strings are formatted in the format: (x: 50 | y: 60 | visible: false) - * - * @param LabelValuePairs Array with the data for the string - - - - - - - - - - - - - * Removes occurrences of a substring by calling `StringTools.replace(s, sub, "")`. - - - - - - - - - * Inserts `insertion` into `s` at index `pos`. - - - - - - - - - - - * Returns true if `s` equals `null` or is empty. - * @since 4.1.0 - - - - - - - * Returns an Underscored, or "slugified" string - * Example: `"A Tale of Two Cities, Part II"` becomes `"a_tale_of_two_cities__part_ii"` - - - - - - - * Returns a string formatted to 'Title Case'. - * Example: `"a tale of two cities, pt ii" returns `"A Tale of Two Cities, Part II"` - - * A class primarily containing functions related - * to formatting different data types to strings. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_pool expr="new FlxPool<LabelValuePair>(LabelValuePair)" line="687" static="1"> - - (LabelValuePair)]]> - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxStringUtil - flixel.util.FlxStringUtil.LabelValuePair - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxStringUtil - flixel.util.FlxStringUtil.LabelValuePair - - - - - - - * The global timer manager that handles global timers - * @since 4.2.0 - - - - * The manager to which this timer belongs - * @since 4.2.0 - - - - - 0 - * How many loops the timer was set for. 0 means "looping forever". - - - - false - * Pauses or checks the pause state of the timer. - - - - false - * Check to see if the timer is finished. - - - - - - - * Function that gets called when timer completes. - * Callback should be formed "onTimer(Timer:FlxTimer);" - - - - * Read-only: check how much time is left on the timer. - - - - * Read-only: The amount of milliseconds that have elapsed since the timer was started - - - - * Read-only: check how many loops are left on the timer. - - - - * Read-only: how many loops that have elapsed since the timer was started. - - - - * Read-only: how far along the timer is, on a scale of 0.0 to 1.0. - - <_timeCounter expr="0"> - - 0 - * Internal tracker for the actual timer counting up. - - <_loopsCounter expr="0"> - - 0 - * Internal tracker for the loops counting up. - - <_inManager expr="false"> - - false - - - - * Clean up memory. - - - - - - - - - - - - { loops : 1, time : 1 } - * Starts the timer and adds the timer to the timer manager. - * - * @param time How many seconds it takes for the timer to go off. - * If 0 then timer will fire OnComplete callback only once at the first call of update method (which means that Loops argument will be ignored). - * @param onComplete Optional, triggered whenever the time runs out, once for each loop. - * Callback should be formed "onTimer(Timer:FlxTimer);" - * @param loops How many times the timer should go off. 0 means "looping forever". - * @return A reference to itself (handy for chaining or whatever). - - - - - - - { newTime : -1 } - * Restart the timer using the new duration - * @param newTime The duration of this timer in seconds. - - - - * Stops the timer and removes it from the timer manager. - - - - - - - * Called by the timer manager plugin to update the timer. - * If time runs out, the loop counter is advanced, the timer reset, and the callback called if it exists. - * If the timer runs out of loops, then the timer calls cancel(). - * However, callbacks are called AFTER cancel() is called. - - - - flixel.util.FlxTimerManager - - - - - - - - - - - - * Creates a new timer. - - { FlxG.log.add("The FlxTimer has finished"); }) - * ``` - * @see [FlxG.fixedTimestep](https://api.haxeflixel.com/flixel/FlxG.html#fixedTimestep) - * @see [FlxG.timeScale](https://api.haxeflixel.com/flixel/FlxG.html#timeScale)]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_timers expr="[]"> - - [] - - - - * Clean up memory. - - - - - - - * Called by FlxG.plugins.update() before the game state has been updated. - * Cycles through timers and calls update() on each one. - - - - - - - flixel.util.FlxTimer - * Add a new timer to the timer manager. - * Called when FlxTimer is started. - * - * @param timer The FlxTimer you want to add to the manager. - - - - - - - flixel.util.FlxTimer - * Remove a timer from the timer manager. - * Called automatically by FlxTimer's cancel() function. - * - * @param timer The FlxTimer you want to remove from the manager. - - - - * Immediately updates all `active`, non-infinite timers to their end points, repeatedly, - * until all their loops are finished, resulting in `loopsLeft` callbacks being run. - * @since 4.2.0 - - - - * Removes all the timers from the timer manager. - - - - - - - - - - * Applies a function to all timers - * - * @param func A function that modifies one timer at a time - * @since 4.2.0 - - - - * Instantiates a new timer manager. - - * A simple manager for tracking and updating game timer objects. - * Normally accessed via the static `FlxTimer.manager` rather than being created separately. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - - - - - - { loops : 1, time : 1 } - * Starts the timer and adds the timer to the timer manager. - * - * @param time How many seconds it takes for the timer to go off. - * If 0 then timer will fire OnComplete callback only once at the first call of update method (which means that Loops argument will be ignored). - * @param onComplete Optional, triggered whenever the time runs out, once for each loop. - * Callback should be formed "onTimer(Timer:FlxTimer);" - * @param loops How many times the timer should go off. 0 means "looping forever". - * @return A reference to itself (handy for chaining or whatever). - - <_HX_SUPER__start public="1" set="method" line="148"> - - - - - - - - - - { loops : 1, time : 1 } - - - - - - - { newTime : -1 } - * Restart the timer using the new duration - * @param newTime The duration of this timer in seconds. - - <_HX_SUPER__reset public="1" set="method" line="148"> - - - - - { newTime : -1 } - - - - * Stops the timer and removes it from the timer manager. - - <_HX_SUPER__cancel public="1" set="method" line="31"> - - - - - - * Called by the timer manager plugin to update the timer. - * If time runs out, the loop counter is advanced, the timer reset, and the callback called if it exists. - * If the timer runs out of loops, then the timer calls cancel(). - * However, callbacks are called AFTER cancel() is called. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - flixel.util.FlxTimerManager - - <_HX_SUPER__onLoopFinished set="method" line="31"> - <__interp> - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxTimer - flixel.util.FlxTimer.FlxTimerManager - - - - - - - * Clean up memory. - - <_HX_SUPER__destroy public="1" set="method" line="31"> - - - - - - * Called by FlxG.plugins.update() before the game state has been updated. - * Cycles through timers and calls update() on each one. - - <_HX_SUPER__update public="1" set="method" line="31"> - - - - - - - - - flixel.util.FlxTimer - * Add a new timer to the timer manager. - * Called when FlxTimer is started. - * - * @param timer The FlxTimer you want to add to the manager. - - <_HX_SUPER__add set="method" line="31"> - - - - - - - - - flixel.util.FlxTimer - * Remove a timer from the timer manager. - * Called automatically by FlxTimer's cancel() function. - * - * @param timer The FlxTimer you want to remove from the manager. - - <_HX_SUPER__remove set="method" line="31"> - - - - - - * Immediately updates all `active`, non-infinite timers to their end points, repeatedly, - * until all their loops are finished, resulting in `loopsLeft` callbacks being run. - * @since 4.2.0 - - <_HX_SUPER__completeAll public="1" set="method" line="31"> - - - - - - - - - * Applies a function to all timers - * - * @param func A function that modifies one timer at a time - * @since 4.2.0 - - <_HX_SUPER__forEach public="1" set="method" line="148"> - - - - - - - <__interp> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxTimer - flixel.util.FlxTimer.FlxTimerManager - - - - - - - - - - - - - - - - - - - - - - - - * Just an internal helper to deal with the deprecation of `haxe.Utf8` - not considered public API. - * Todo: Remove and use Unicode strings - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - - - - <_new public="1" get="inline" set="null" line="36" static="1"> - - - - - - { s : "" } - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - <_new public="1" get="inline" set="null" line="36" static="1"> - - - - - - { s : "" } - - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.FlxUnicodeUtil - flixel.util.FlxUnicodeUtil.UnicodeBuffer - flixel.util.FlxUnicodeUtil.UnicodeBuffer - flixel.util.FlxUnicodeUtil.UnicodeBuffer_HSC - - - - -
      - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - * The minimum value of this property. - - - - * The maximum value of this property. - - - - true - * A flag that can be used to toggle the use of this property. - - - - - - - - * Handy function to set the minimum and maximum values of this Bounds object in one line. - * - * @param min The new minimum value of the property. - * @param max The new maximum value of the property. Optional, will be set equal to min if ignored. - * @return This Bounds instance (nice for chaining stuff together). - - - - - - - * Function to compare this FlxBounds to another. - * - * @param OtherFlxBounds The other FlxBounds to compare to this one. - * @return True if the FlxBounds have the same min and max value, false otherwise. - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - (0, 0)`; - * - * @param min The minimum value of the property. - * @param max The maximum value of the property. Optional, will be set equal to min if ignored.]]> - - * Helper object for holding minimum and maximum values of various properties. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - * The beginning X and Y values of this property. - - - - * The ending X and Y values of this property. - - - - true - * A flag that can be used to toggle the use of this property. - - - - - - - - - - - - - - * Handy function to set the the beginning and ending range of values for a FlxPoint in one line. - * - * @param startMinX The minimum possible initial value of X for this property for particles launched from this emitter. - * @param startMinY The minimum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxX The maximum possible initial value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxY The maximum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMinX The minimum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param endMinY The minimum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMaxX The maximum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to endMinX if ignored. - * @param endMaxY The maximum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to endMinY if ignored. - * @return This FlxPointRangeBounds instance (nice for chaining stuff together). - - - - - - - * Function to compare this FlxPointRangeBounds to another. - * - * @param OtherFlxPointRangeBounds The other FlxPointRangeBounds to compare to this one. - * @return True if the FlxPointRangeBounds have the same min and max value, false otherwise. - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - - - - - - - - * Create a new FlxPointRangeBounds object. - * - * @param startMinX The minimum possible initial value of X for this property for particles launched from this emitter. - * @param startMinY The minimum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxX The maximum possible initial value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxY The maximum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMinX The minimum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param endMinY The minimum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMaxX The maximum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to endMinX if ignored. - * @param endMaxY The maximum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to endMinY if ignored. - * @return This FlxPointRangeBounds instance (nice for chaining stuff together). - - > but this allows a more practical use of set().]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - * Handy function to set the the beginning and ending range of values for a FlxPoint in one line. - * - * @param startMinX The minimum possible initial value of X for this property for particles launched from this emitter. - * @param startMinY The minimum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxX The maximum possible initial value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param startMaxY The maximum possible initial value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMinX The minimum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to startMinX if ignored. - * @param endMinY The minimum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to startMinY if ignored. - * @param endMaxX The maximum possible final value of X for this property for particles launched from this emitter. Optional, will be set equal to endMinX if ignored. - * @param endMaxY The maximum possible final value of Y for this property for particles launched from this emitter. Optional, will be set equal to endMinY if ignored. - * @return This FlxPointRangeBounds instance (nice for chaining stuff together). - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - - - - - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - <_HX_SUPER__toString public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="31"> - <__interp> - - - - - - - - - - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - hide - flixel.util.helpers.FlxPointRangeBounds - - - - - - * The beginning value of this property. - - - - * The ending value of this property. - - - - true - * A flag that can be used to toggle the use of this property. - - - - - - - - * Handy function to set the initial and final values of this Range object in one line. - * - * @param start The new beginning value of the property. - * @param end The new final value of the property. Optional, will be set equal to start if ignored. - * @return This Range instance (nice for chaining stuff together). - - - - - - - * Function to compare this FlxRange to another. - * - * @param OtherFlxRange The other FlxRange to compare to this one. - * @return True if the FlxRanges have the same start and end value, false otherwise. - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - (0, 0); - * - * @param start The beginning value of the property. - * @param end The ending value of the property. Optional, will be set equal to start if ignored.]]> - - * Helper object for holding beginning and ending values of various properties. - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - * The beginning minimum and maximum values of this property. - - - - * The ending minimum and maximum values of this property. - - - - true - * A flag that can be used to toggle the use of this property. - - - - - - - - - - * Handy function to set the the beginning and ending range of values for an emitter property in one line. - * - * @param startMin The minimum possible initial value of this property for particles launched from this emitter. - * @param startMax The maximum possible initial value of this property for particles launched from this emitter. Optional, will be set equal to startMin if ignored. - * @param endMin The minimum possible final value of this property for particles launched from this emitter. Optional, will be set equal to startMin if ignored. - * @param endMax The maximum possible final value of this property for particles launched from this emitter. Optional, will be set equal to startMax if ignored. - * @return This RangeBounds instance (nice for chaining stuff together). - - - - - - - * Function to compare this FlxRangeBounds to another. - * - * @param OtherFlxRangeBounds The other FlxRangeBounds to compare to this one. - * @return True if the FlxRangeBounds have the same min and max value, false otherwise. - - - - * Convert object to readable string name. Useful for debugging, save games, etc. - - - - - - - - - - (0, 0, 0, 0); - * - * @param startMin The minimum possible initial value of this property for particles launched from this emitter. - * @param startMax The maximum possible initial value of this property for particles launched from this emitter. Optional, will be set equal to startMin if ignored. - * @param endMin The minimum possible final value of this property for particles launched from this emitter. Optional, will be set equal to startMin if ignored. - * @param endMax The maximum possible final value of this property for particles launched from this emitter. Optional, will be set equal to startMax if ignored. - * @return This RangeBounds instance (nice for chaining stuff together).]]> - - > but this allows a more practical use of set().]]> - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - * Useful to limit a Dynamic function argument's type to the specified - * type parameters. This does NOT make the use of Dynamic type-safe in - * any way (the underlying type is still Dynamic and Std.is() checks + - * casts are necessary). - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - * Useful to limit a Dynamic function argument's type to the specified - * type parameters. This does NOT make the use of Dynamic type-safe in - * any way (the underlying type is still Dynamic and Std.is() checks + - * casts are necessary). - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - * Useful to limit a Dynamic function argument's type to the specified - * type parameters. This does NOT make the use of Dynamic type-safe in - * any way (the underlying type is still Dynamic and Std.is() checks + - * casts are necessary). - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - hscript.UsingHandler.build() - hscript.ClassExtendMacro.build() - - - - <__3DIDS expr="0" line="32" static="1"> - - 0 - - - - - [] - - - - - - - - - - - - - - { smoothTexture : true } - - <__cur3DStageID> - <_loaders expr="[]"> - - - - - [] - - - - - - - - - - - - - - - - - - - - - - - - - - { DefaultZoom : 1, Height : 0, Width : 0, Y : 0, X : 0 } - - - - - - * Returns the total amount of 3D stages (not excluding the ones in use) - * @return Int - - - - * Returns if a Stage3D is available - * @return Bool - - - - - - - * Calls dispose() (destroy) on a Away3D asset - * @param obj - * @return null - - * @author lunarclient - * @see https://twitter.com/lunarcleint - * - * Help from Ne_Eo - * @see https://twitter.com/Ne_Eo_Twitch - - - - - - - - - * Disposes (destroys) the asset and returns null - * @param obj - * @return T null - - - - - - - - * The Away3D View - - - - true - * Set this flag to true to force the View3D to update during the `draw()` call. - - - - * Disposes of all the Away3D assets associated with the FlxView3D - - - - - - - - - - - - - - - - - - - - - - - - - - - - { height : -1, width : -1, y : 0, x : 0 } - * Creates a new instance of a View3D from Away3D and renders it as a FlxSprite - * ! Call Flx3DUtil.is3DAvailable(); to make sure a 3D stage is usable - * @param x - * @param y - * @param width Leave as -1 for screen width - * @param height Leave as -1 for screen height - - * @author Ne_Eo - * @see https://twitter.com/Ne_Eo_Twitch - * - * @author lunarcleint - * @see https://twitter.com/lunarcleint - - - - <__3DIDS expr="0" line="32" static="1"> - - 0 - - - - [] - - - - - - - - - - - - - { smoothTexture : true } - - - - - - - - - - - - - - { smoothTexture : true } - - - - <__cur3DStageID> - <_loaders expr="[]"> - - - - - [] - - - - - - - - - - - - - - - - - - - - - - - - - { height : -1, width : -1, y : 0, x : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new FlxMatrix() - - <_skewMatrix expr="new FlxMatrix()" line="276" static="1"> - - new FlxMatrix() - - - - - false - - <_pivot> - - - - - - - - - - - * the function `draw()` renders the symbol that `anim` has currently plus a pivot that you can toggle on or off. - - - - - - - - - - - { mainSymbol : false } - * This basically renders an element of any kind, both limbs and symbols. - * It should be considered as the main function that makes rendering a symbol possible. - - - - false - - - - - - - - - - - - - - FlxPoint.get() - - - - new Matrix() - * Tranformation matrix for this sprite. - * Used only when matrixExposed is set to true - - - - false - * Bool flag showing whether transformMatrix is used for rendering or not. - * False by default, which means that transformMatrix isn't used for rendering - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0 } - * # Description - * `FlxAnimate` is a texture atlas parser from the drawing software *Adobe Animate* (once being *Adobe Flash*). - * It tries to replicate how Adobe Animate works on Haxe so it would be considered (as *MrCheemsAndFriends* likes to call it,) a "*Flash--*", in other words, a replica of Animate's work - * on the side of drawing, making symbols, etc. - * ## WARNINGS - * - This does **NOT** convert the frames into a spritesheet - * - Since this is some sort of beta, expect that there could be some inconveniences (bugs, crashes, etc). - * - * @param X The initial X position of the sprite. - * @param Y The initial Y position of the sprite. - * @param Path The path to the texture atlas, **NOT** the path of the any of the files inside the texture atlas (`Animation.json`, `spritemap.json`, etc). - * @param Settings Optional settings for the animation (antialiasing, framerate, reversed, etc.). - - - - - - - * The callback function to call when this even fires. - - - - * The sound to play when this event fires. - - - - * Cleans up memory. - - - - * Fires this event (calls the callback and plays the sound) - - - - - - - - * @param Callback The callback function to call when this even fires. - * @param sound The sound to play when this event fires. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - Checks if the movieclip should move or not. for having a similar experience to swfs - - - - - - - new Map() - - - - * When ever the animation is playing. - - - - - - * Internal, used for each skip between frames. - - - - - - - - new Map() - - - - * Internal, the parsed loop type - - - <_parent> - <_tick> - <_loadAtlas set="method" line="89"> - - - - - flxanimate.FlxAnimate - - - - - - - - - - - - - - { Frame : 0, Reverse : false, Force : false, Name : "" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - { Y : 0, X : 0, Looped : true, FrameRate : 0 } - * Creates an animation using an already made symbol from a texture atlas - * @param Name The name of the animation - * @param SymbolName the name of the symbol you're looking. if you have two symbols beginning by the same name, use `\` at the end to differ one symbol from another - * @param X the *x* axis of the animation. - * @param Y the *y* axis of the animation. - * @param FrameRate the framerate of the animation. - - - - - - - - - - - - - - { FrameRate : 0 } - * Creates an animation using the indices, looking as a reference the main animation of the texture atlas. - * @param Name The name of the animation you're creating - * @param Indices The indices you're gonna be using for the animation, like `[0,1,2]`. - * @param FrameRate the framerate of the animation. - - - - - - - - - - - - - { Y : 0, X : 0, Looped : true, FrameRate : 0 } - - - - - - - - - - - - - - { Looped : true, FrameRate : 0 } - * This adds a new animation by adding a custom timeline, obviously taking as a reference the timeline syntax! - * **WARNING**: I, *CheemsAndFriends*, do **NOT** recommend this unless you're using an extern json file to do this! - * if you wanna make a custom symbol to play around and is separated from the texture atlas, go ahead! but if you wanna just make a new symbol, - * just do it in Flash directly - * @param Name The name of the new Symbol. - * @param Timeline The timeline which will have the symbol. - * @param FrameRate The framerate it'll go, by default is 30. - - - - - - - - - - - - - - - - - * Redirects the frame into a frame with a frame label of that type. - * @param name the name of the label. - - - - - - - * Checks the next frame label name you're looking for. - * **WARNING: DO NOT** confuse with `anim.curSymbol.getNextToFrameLabel`!! - * @param name the name of the frame label. - * @return A `String`. WARNING: it can be `null` - - - - - - - - * Links a callback into a label. - * @param label the name of the label. - * @param callback the callback you're going to add - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { frame : null } - - - - - - - - - - - - - - - - * The frame rate the animation was exported in the texture atlas in the beginning. - - - - - - - - * This class shows what framerate the animation was initially set. - - - - - - - - - ["m00", "m01", "m10", "m11", "m30", "m31"] - - - - - - <_parent> - - flxanimate.animate.FlxKeyFrame - - - - * All the other parameters that are exclusive to the symbol (instance, type, symbol name, etc.) - - - - * The name of the frame itself. - - - - * The matrix that the symbol or bitmap has. - - - - - - - - - - - * Creates a new `FlxElement` instance. - * @param name the name of the element. `WARNING:` this name is dynamic, in other words, this name can used for the limb or the symbol! - * @param symbol the symbol settings, ignore this if you want to add a limb. - * @param matrix the matrix of the element. - - - - - - - - - - - - - flxanimate.animate.FlxSymbol - flxanimate.FlxAnimate - - - <_parent> - - flxanimate.animate.FlxLayer - - - - - <_elements set="null"> - - flxanimate.FlxAnimate - - <_colorEffect get="accessor" set="null"> - - flxanimate.FlxAnimate - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { duration : 1 } - - - - - - - - - - - flxanimate.animate.FlxSymbol - - - - - - - - - - - - - - - <_parent set="accessor"> - - flxanimate.animate.FlxTimeline - - - <_labels> - - - - - flxanimate.animate.FlxKeyFrame - - - <_keyframes set="null"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { name : "" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "" - - - - - <_curFrame> - - flxanimate.animate.FlxAnim - - <_shootCallback> - - flxanimate.FlxAnimate - - <_tick> - - - flxanimate.FlxAnimate - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { layer : null } - - - - - - - - - - - { layer : null } - - - - - - - - - - - { layer : null } - - - - - - - - - - - - - - - - - - { frame : null } - * Gets an element through a specific index from a frame. - * @param index The element index. - * @param frame The keyframe the element is located. If set to `null`, it will take `curFrame` as a reference. - * @return an `FlxElement` instance. - - - - - - - - - - { layer : null } - - - - - - - - - - - - { layer : null, frame : null } - * Gets an element with a name - * @param name this can be either the name of the symbol or the instance. - * @param frame The keyframe the element is located. If set to `null`, it will take `curFrame` as a reference. - * @param layer Which layer it should take as a reference. if set to `null`, it'll take every layer available. - * @return an `FlxElement` instance. - - - - - - - - { frame : null } - - - - - - - - - { frame : null } - - - - - - - - - - - - - - - flxanimate.animate.FlxAnim - - - - - - - - - <_layers> - - flxanimate.FlxAnimate - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { position : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - <_colorEffect get="accessor" set="null"> - - - flxanimate.FlxAnimate - flxanimate.animate.FlxAnim - - - - - - - - - - - - - - - - - - - - - - { loop : Loop, type : Graphic, instance : "", name : null } - - - - - - - - - - - - - - - - - - - { effect : null } - - - - - - - { filters : null } - - - - - - - { colorEffect : None } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "G" - - - - - - - - cast "MC" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - null - - - - - - - - * Parses the spritemaps into small sprites to use in the animation. - * - * @param Path Where the Sprites are, normally you use it once when calling FlxAnimate already - * @return new sliced limbs for you to use ;) - - - - - - - - - - - - - - * Sparrow spritesheet format parser with support of both of the versions and making the image completely optional to you. - * @param Path The direction of the Xml you want to parse. - * @param Image (Optional) the image of the Xml. - * @return A new instance of `FlxAtlasFrames` - - - - - - - - * - * @param Path the Json in specific, can be the path of it or the actual json - * @param Image the image which the file is referencing **WARNING:** if you set the path as a json, it's obligatory to set the image! - * @return A new instance of `FlxAtlasFrames` - - - - - - - - * Edge Animate - * @param Path the Path of the .eas - * @param Image (Optional) the Image - * @return Cute little Frames to use ;) - - - - - - - - * Starling spritesheet format parser which uses a preference list from Mac computer shit - * @param Path the dir of the preference list - * @param Image (Optional) the Image - * @return Some recently cooked Frames for you ;) - - - - - - - - * Cocos2D spritesheet format parser, which basically has 2 versions, - * One is basically Starling (2v) and the other one which is a more fucky and weird (3v) - * @param Path the Path of the plist - * @param Image (Optional) the image - * @return Recently made Frames for your dispose ;) - - - - - - - - * EaselJS spritesheet format parser, pretty weird stuff. - * @param Path The Path of the jsFile - * @param Image (optional) the Path of the image - * @return New frames made for you to use ;) - - - - - - - - - - - - - - - - - - - - - - { padding : 0 } - - - - - - - - - - - - - - - - - - - - - - <_dateRegex expr="~/(\d{4}-\d{2}-\d{2})(?:T(\d{2}:\d{2}:\d{2})Z)?/" line="536" static="1"> - - ~/(\d{4}-\d{2}-\d{2})(?:T(\d{2}:\d{2}:\d{2})Z)?/ - - - - - - - * Parse an Apple property list XML file into a dynamic object. If - * the property list is empty, an empty object will be returned. - * @param text Text contents of the property list file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { preShift : 0, signExtend : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { shiftLeft : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns the PNG header informations. Throws an exception if no header found. - - - - - - - Return the PNG palette colors, or null if no palette chunk was found - - - - - - - - - - - - - { numChannels : 4 } - - - - - - - Converts from BGRA to ARGB and the other way by reversing bytes. - - - - - - - - Decode the greyscale PNG data and apply filters, extracting only the grey channel if alpha is present. - - - - - - - - - - Decode the PNG data and apply filters. By default this will output BGRA low-endian format. You can use the [reverseBytes] function to inverse the bytes to ARGB big-endian format. - - - - - - - - - - { level : 9 } - Creates PNG data from bytes that contains one bytes (grey values) for each pixel. - - - - - - - - - - - { level : 9 } - Creates PNG data from bytes that contains a one byte palette index for each pixel and a separate palette with 3 RGB bytes per color. - - - - - - - - - - { level : 9 } - Creates PNG data from bytes that contains three bytes (R,G and B values) for each pixel. - - - - - - - - - - { level : 9 } - Creates PNG data from bytes that contains four bytes in ARGB format for each pixel. - - - - - - - - - - { level : 9 } - Creates PNG data from bytes that contains four bytes in BGRA format for each pixel. - - - - - - - - - - - - - - - - - - - - - - - - - - - - { level : 9 } - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.chart.BaseGameParser - funkin.chart.BaseGameParser.SwagSong - funkin.chart.BaseGameParser.SwagSection - - - - - - 0xFF9271FD - * Default background colors for songs without bg color - - - - - - - - - { fromMods : true, difficulty : "normal" } - - - - - - - - { difficulty : "normal" } - - - - - - - - - - - - - - - { difficulty : "normal" } - * Saves the chart to the specific song folder path. - * @param songFolderPath Path to the song folder (ex: `mods/your mod/songs/song/`) - * @param chart Chart to save - * @param difficulty Name of the difficulty - * @param saveSettings - * @return Filtered chart used for saving. - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - * STRUMLINE IS MARKED AS OPPONENT - WILL BE PLAYED BY CPU, OR PLAYED BY PLAYER IF OPPONENT MODE IS ON - - - - - cast 1 - - - - * STRUMLINE IS MARKED AS PLAYER - WILL BE PLAYED AS PLAYER, OR PLAYED AS CPU IF OPPONENT MODE IS ON - - - - - cast 2 - - - - * STRUMLINE IS MARKED AS ADDITIONAL - WILL BE PLAYED AS CPU EVEN IF OPPONENT MODE IS ENABLED - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - * STRUMLINE IS MARKED AS OPPONENT - WILL BE PLAYED BY CPU, OR PLAYED BY PLAYER IF OPPONENT MODE IS ON - - - - - cast 1 - - - - * STRUMLINE IS MARKED AS PLAYER - WILL BE PLAYED AS PLAYER, OR PLAYED AS CPU IF OPPONENT MODE IS ON - - - - - cast 2 - - - - * STRUMLINE IS MARKED AS ADDITIONAL - WILL BE PLAYED AS CPU EVEN IF OPPONENT MODE IS ENABLED - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast -1 - - - - * CUSTOM EVENT - * Params: - * - Function Name (String) - * - Function Parameters... - - - - - cast 0 - - - - * NO EVENT, MADE FOR UNKNOWN EVENTS / EVENTS THAT CANNOT BE PARSED - - - - - cast 1 - - - - * CAMERA MOVEMENT EVENT - * Params: - * - Target Strumline ID (Int) - - - - - cast 2 - - - - * BPM CHANGE EVENT - * Params: - * - Target BPM (Float) - - - - - cast 3 - - - - * ALT ANIM TOGGLE - * Params: - * - Strum Line which is going to be toggled (Int) - * - Whenever its going to be toggled or not (Bool) - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast -1 - - - - * CUSTOM EVENT - * Params: - * - Function Name (String) - * - Function Parameters... - - - - - cast 0 - - - - * NO EVENT, MADE FOR UNKNOWN EVENTS / EVENTS THAT CANNOT BE PARSED - - - - - cast 1 - - - - * CAMERA MOVEMENT EVENT - * Params: - * - Target Strumline ID (Int) - - - - - cast 2 - - - - * BPM CHANGE EVENT - * Params: - * - Target BPM (Float) - - - - - cast 3 - - - - * ALT ANIM TOGGLE - * Params: - * - Strum Line which is going to be toggled (Int) - * - Whenever its going to be toggled or not (Bool) - - - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.chart.Chart - funkin.chart.Chart.ChartSaveSettings - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - 0 - - - - 0 - - - - * Current step - - - - * Current beat - - - - * Current beat - - - - * Current step, as a `Float` (ex: 4.94, instead of 4) - - - - * Current beat, as a `Float` (ex: 1.24, instead of 1) - - - - * Current beat, as a `Float` (ex: 1.24, instead of 1) - - - - * Current song position (in milliseconds). - - - - - - - - - - - * Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx") - - - - true - - - - null - - - - * Game Controls. (All players / Solo) - - - - * Game Controls (Player 1 only) - - - - * Game Controls (Player 2 only) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - hide - - - - - - - hide - - - - - - - - - - { fpsSensitive : false } - * Shortcut to `FlxMath.lerp` or `CoolUtil.lerp`, depending on `fpsSensitive` - * @param v1 Value 1 - * @param v2 Value 2 - * @param ratio Ratio - * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate. - - - - - - - * SCRIPTING STUFF - - - - - - - - - - - - - - - - - - - - - - - { scriptsAllowed : true } - - - - hscript.ClassExtendMacro.build() - - - - - <__callback> - - - PlayState.instance - - - - - - - - - - - * Substate made for cutscenes. - hscript.ClassExtendMacro.build() - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__close public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.Cutscene - - - - - - - - - - - - [] - - - - [] - - - - null - - - - - - - - - - - - - - - - - * Substate made for dialogue cutscenes. To use it in a scripted cutscene, call `startDialogue`. - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__next public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.DialogueCutscene - funkin.cutscenes.DialogueCutscene.DialogueLine - - - - - - - - - - null - - - - null - - - - - true - - - - - - - - - - - - { midSong : false, isFullscreen : false, isWindow : false, outputTo : null, repeat : false } - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { midSong : false, isFullscreen : false, isWindow : false, outputTo : null, repeat : false } - - <_HX_SUPER__playMP4 public="1" set="method" line="30"> - - - - - - - - - - { midSong : false, isFullscreen : false, isWindow : false, outputTo : null, repeat : false } - - - - - - <_HX_SUPER__checkFile set="method" line="148"> - - - - - <_HX_SUPER__onVLCVideoReady set="method" line="148"> - - <_HX_SUPER__onVLCComplete public="1" set="method" line="148"> - - <_HX_SUPER__kill public="1" set="method" line="148"> - - <_HX_SUPER__onVLCError set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.MP4Handler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Substate made for scripted cutscenes. - * To add cutscenes to your songs, add a `cutscene.hx` file in your song's directory (ex: `songs/song/cutscene.hx`) - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__stepHit public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - <_HX_SUPER__startVideo public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__startDialogue public="1" set="method" line="148"> - - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.ScriptedCutscene - - - - - - - - - - - - - - - - - - - - - * Substate made for video cutscenes. To use it in a scripted cutscene, call `startVideo`. - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.VideoCutscene - - - - - - - - - - - { y : 0, x : 0 } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - NONE - - - - [] - - - - - 1 - - - - 1 - - - - - - - - - - - - - - - - - - - - - - { Key : null, Unique : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__shouldDoScaleProcedure get="inline" set="null" line="168"> - <__oldScale> - <__skipZoomProcedure expr="false"> - - false - - <__doPreZoomScaleProcedure set="method" line="173"> - - - - <__doPostZoomScaleProcedure set="method" line="182"> - - - - - - ()]]> - - - - - - - - - { y : 0, x : 0 } - - - - - - - - - DANCE - - - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - [] - - - - Paths.sound("dialogue/text") - - - - Paths.sound("dialogue/next") - - - - - - - <__nextText> - <__speed> - - - - - - - - { speed : 0.05 } - - - - - - - - { speed : 0.02 } - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - <_HX_SUPER__popupChar public="1" set="method" line="148"> - - - - - - - - - - - { speed : 0.05 } - - <_HX_SUPER__playBubbleAnim public="1" set="method" line="148"> - - - - - - - { speed : 0.05 } - - - - - - - - { speed : 0.02 } - - <_HX_SUPER__setText public="1" set="method" line="148"> - - - - - - { speed : 0.02 } - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.dialogue.DialogueBox - funkin.cutscenes.dialogue.DialogueBox.CharPosDef - - - - - - - - - NONE - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - <_HX_SUPER__show public="1" set="method" line="148"> - - - - - - <_HX_SUPER__hide public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.cutscenes.dialogue.DialogueCharacter - funkin.cutscenes.dialogue.DialogueCharacter.DialogueCharTweenContext - funkin.cutscenes.dialogue.DialogueCharacter.DialogueCharTweenContext - - - - - - - - 0 - - - - 0 - - - - new GraphicCacheSprite() - * Dummy sprite used to cache graphics to GPU. - - - - false - * Whenever the Conductor auto update should be enabled or not. - - - - * Current step - - - - * Current beat - - - - * Current beat - - - - * Current step, as a `Float` (ex: 4.94, instead of 4) - - - - * Current beat, as a `Float` (ex: 1.24, instead of 1) - - - - * Current beat, as a `Float` (ex: 1.24, instead of 1) - - - - * Current song position (in milliseconds). - - - - - - - - - - - * Game Controls. (All players / Solo) - - - - * Game Controls (Player 1 only) - - - - * Game Controls (Player 2 only) - - - - * Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState) - - - - true - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - hide - - - - - - - hide - - - - - - - - - - { fpsSensitive : false } - * Shortcut to `FlxMath.lerp` or `CoolUtil.lerp`, depending on `fpsSensitive` - * @param v1 Value 1 - * @param v2 Value 2 - * @param ratio Ratio - * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate. - - - - - - - * SCRIPTING STUFF - - - - - - - - - - - - - - - - - - - - - - { scriptsAllowed : true } - - - - hscript.ClassExtendMacro.build() - - - - - - - - -
      - - - - - - - Type.getClass(FlxG.state) - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() -
      - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - 120 - - - - - 0 - - - - 0 - - <__firstFrame expr="true"> - - true - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.DebugOptions - funkin.editors.DebugOptions.DebugOptionsScreen - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.DebugOptions - funkin.editors.DebugOptions.DebugOptionsScreen - - - - - - - - [{ name : "Chart Editor", iconID : 0, state : funkin.editors.charter.CharterSelection }, { name : "Character Editor", iconID : 1, state : null }, { name : "Stage Editor", iconID : 2, state : null }, { name : "UI Debug State", iconID : 3, state : UIDebugState }, { name : "Debug Options", iconID : 4, state : DebugOptions }] - - - - [] - - - - 0 - - - - FlxPoint.get() - - - - FlxPoint.get() - - - - 0 - - - - false - - - - 0 - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - false - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__changeSelection public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.EditorPicker - funkin.editors.EditorPicker.Editor - funkin.editors.EditorPicker.EditorPickerOption - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - <_HX_SUPER__flicker public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.EditorPicker - funkin.editors.EditorPicker.Editor - funkin.editors.EditorPicker.EditorPickerOption - - - - - - - - "default" - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__exit public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.EditorTreeMenu - - - - - - - - - null - - - - null - - - - null - - <__rect> - <__mousePos> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.UIDebugState - - - - - - - <__song> - <__diff> - - - - - ()]]> - - - - - 0xFF272727 - - - - 0xFF545454 - - - - - - - - - - - - [] - * ACTUAL CHART DATA - - - - new CharterNoteGroup() - - - - * CAMERAS - - - - - - [] - - - - [] - - - - [] - - - - - - - - - - false - * NOTE AND CHARTER GRID LOGIC HERE - - - - new FlxPoint() - - - - - - - - - - - - - - - - - - <_edit_undo set="method" line="414"> - - - - <_playback_play set="method" line="441"> - - - - <_edit_redo set="method" line="452"> - - - - <_playback_metronome set="method" line="476"> - - - - <_playback_muteinst set="method" line="479"> - - - - <_playback_mutevoices set="method" line="483"> - - - - - <__crochet> - - - - - - - 0 - - <__camZoom expr="1"> - - 1 - - <_file_exit set="method" line="540"> - - - - <_edit_delete set="method" line="543"> - - - - <_playback_back set="method" line="547"> - - - - <_playback_forward set="method" line="551"> - - - - <_playback_start set="method" line="555"> - - - - <_playback_end set="method" line="559"> - - - - <_chart_zoomin set="method" line="563"> - - - - <_chart_zoomout set="method" line="567"> - - - - <_chart_zoomreset set="method" line="571"> - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - 1 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - [] - - <__lastDrawCameras expr="[]"> - - [] - - <__rect expr="new FlxRect()"> - - new FlxRect() - - <__oldDefCams> - - - false - - - - false - - - - false - - - - null - - - - ARROW - - - - - - - - - - - - - * Called whenever the sprite is being hovered by the mouse. - - - - - - - - - - hscript.ClassExtendMacro.build() - funkin.editors.ui.UIState - funkin.editors.ui.UIUtil - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.CharterBackdrop - funkin.editors.charter.CharterBackdrop.CharterBackdropDummy - - - - - - <_HX_SUPER__updateButton public="1" set="method" line="148"> - - <_HX_SUPER__draw public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.CharterBackdrop - funkin.editors.charter.CharterBackdrop.CharterBackdropDummy - - - - - - - - false - - - - - - - - - - - - - - - { type : 0, susLength : 0 } - - - <__passed expr="false"> - - false - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__loopSprite> - - - 0 - - - - 0 - - <__currentlyLooping expr="false"> - - false - - - - - - - - - - - { recursive : false } - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - { recursive : false } - - <_HX_SUPER__forEach public="1" set="method" line="148"> - - - - - - - - - { recursive : false } - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.CharterNoteGroup - - - - - - <_HX_SUPER__updateButton public="1" set="method" line="148"> - - - - - - - - - { type : 0, susLength : 0 } - - <_HX_SUPER__updatePos public="1" set="method" line="148"> - - - - - - - - { type : 0, susLength : 0 } - - - <_HX_SUPER__kill public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.CharterNote - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__onMenuChange public="1" set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.CharterSelection - - - - - - <_HX_SUPER__get_chart set="method" line="148"> - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__loadSong public="1" set="method" line="148"> - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__updateNoteLogic public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__deleteNote public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__deleteNotes public="1" set="method" line="148"> - - - - <_edit_undo set="method" line="74" override="1"> - - - - <_HX_SUPER___edit_undo set="method" line="148"> - - - - <_playback_play set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_play set="method" line="148"> - - - - <_edit_redo set="method" line="74" override="1"> - - - - <_HX_SUPER___edit_redo set="method" line="148"> - - - - <_playback_metronome set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_metronome set="method" line="148"> - - - - <_playback_muteinst set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_muteinst set="method" line="148"> - - - - <_playback_mutevoices set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_mutevoices set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <_file_exit set="method" line="74" override="1"> - - - - <_HX_SUPER___file_exit set="method" line="148"> - - - - <_edit_delete set="method" line="74" override="1"> - - - - <_HX_SUPER___edit_delete set="method" line="148"> - - - - <_playback_back set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_back set="method" line="148"> - - - - <_playback_forward set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_forward set="method" line="148"> - - - - <_playback_start set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_start set="method" line="148"> - - - - <_playback_end set="method" line="74" override="1"> - - - - <_HX_SUPER___playback_end set="method" line="148"> - - - - <_chart_zoomin set="method" line="74" override="1"> - - - - <_HX_SUPER___chart_zoomin set="method" line="148"> - - - - <_chart_zoomout set="method" line="74" override="1"> - - - - <_HX_SUPER___chart_zoomout set="method" line="148"> - - - - <_chart_zoomreset set="method" line="74" override="1"> - - - - <_HX_SUPER___chart_zoomreset set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.charter.Charter - funkin.editors.charter.Charter.CharterChange - funkin.editors.charter.Charter.CharterStrumline - - - - - - - 120 - - - - 20 - - - - 0 - - - - false - - - - - - - - - <__setSize set="method" line="116"> - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - null - - - - - - - - - - - - - - - - - - - - - - - - { h : 32, w : 120 } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__resize public="1" set="method" line="148"> - - - - - - <_HX_SUPER__onHovered public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIButton - - - - - - - false - - - - - - - null - - - - - - - - - - - - - - - - - - - - - { w : 0, checked : false } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__onHovered public="1" set="method" line="148"> - - <_HX_SUPER__updateButton public="1" set="method" line="148"> - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UICheckbox - - - - - - - - - - - - - [] - - - - [] - - <__oobDeletion expr="true"> - - true - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__select public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIContextMenu - funkin.editors.ui.UIContextMenu.UIContextMenuCallback - funkin.editors.ui.UIContextMenu.UIContextMenuOption - funkin.editors.ui.UIContextMenu.UIContextMenuOptionSpr - - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__onHovered public="1" set="method" line="148"> - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIContextMenu - funkin.editors.ui.UIContextMenu.UIContextMenuCallback - funkin.editors.ui.UIContextMenu.UIContextMenuOption - funkin.editors.ui.UIContextMenu.UIContextMenuOptionSpr - - - - - - <_HX_SUPER__updateButton public="1" set="method" line="148"> - - - - - - <_HX_SUPER__resize public="1" set="method" line="148"> - - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - <__setSize set="method" line="74" override="1"> - - - - - <_HX_SUPER____setSize set="method" line="148"> - - - - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UISliceSprite - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__drawSuper public="1" set="method" line="148"> - - <_HX_SUPER__drawMembers public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - <_HX_SUPER__updateButton public="1" set="method" line="148"> - - - * Called whenever the sprite is being hovered by the mouse. - - <_HX_SUPER__onHovered public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UISprite - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - - <_HX_SUPER__updateButtonHandler public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__updateRectButtonHandler public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__tryUpdate public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__openContextMenu public="1" set="method" line="148"> - - - - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIState - - - - - - - - - - - - - - - { Border : true, Size : 16, FieldWidth : 0, Y : 0, X : 0 } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - { color : 0xFFFFFFFF, size : 15 } - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIText - - - - - - - - false - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - null - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UITopMenu - funkin.editors.ui.UITopMenu.UITopMenuButton - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__onHovered public="1" set="method" line="148"> - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UITopMenu - funkin.editors.ui.UITopMenu.UITopMenuButton - - - - - - - - - - - - { y : 0, x : 0 } - - - - - - - - - - - `. Also checks childrens. - * @param topMenuOptions]]> - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIUtil - - - - - - - [] - - - - new CustomShader("engine/editorBlur") - - <c path="String"/> - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <_HX_SUPER__onSubstateOpen public="1" set="method" line="148"> - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.editors.ui.UIWarningSubstate - funkin.editors.ui.UIWarningSubstate.WarningCamShader - funkin.editors.ui.UIWarningSubstate.WarningButton - - - - - - - <__stunnedTime expr="0"> - - 0 - - <__lockAnimThisFrame expr="false"> - - false - - - - false - - - - - - - - false - - - - false - - - - false - - - - "bf" - - - - Math.NEGATIVE_INFINITY - - - - 4 - - - - false - - - - null - - - - "bf-dead" - - - - new FlxPoint(0, 0) - - - - new FlxPoint(0, 0) - - - - - - - - - - - - - - - - { Frame : 0, Reversed : false, Force : true, Context : SING, suffix : "" } - - <__baseFlipped expr="false"> - - false - - - - false - - - - - - - - false - - - - * FOR GF DANCING SHIT - - - - - true - * Whenever the character should dance on beat or not. Set to false for `gf`, since the dance animation is automatically handled by PlayState. - - - - 1 - * Interval at which the character will dance (higher number = slower dance) - - - - - - - - - - <__reverseDrawProcedure expr="false"> - - false - - - - - - - <__drawingShadowFrame expr="false"> - - false - - <__oldColorTransform expr="new ColorTransform()"> - - new ColorTransform() - - - - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - - - - - - - - - - - - { switchAnims : true, isPlayer : false, character : "bf" } - - - - hscript.ClassExtendMacro.build() - funkin.desktop.editors.CharacterEditor - funkin.game.StrumLine - funkin.game.PlayState - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - <_HX_SUPER__set_stunned set="method" line="148"> - - - - - - - - - - - - - - { Frame : 0, Reversed : false, Force : true, Context : SING, suffix : "" } - - <_HX_SUPER__playSingAnim public="1" set="method" line="148"> - - - - - - - - - - { Frame : 0, Reversed : false, Force : true, Context : SING, suffix : "" } - - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - * FOR GF DANCING SHIT - - <_HX_SUPER__dance public="1" set="method" line="148"> - - <_HX_SUPER__tryDance public="1" set="method" line="148"> - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__stepHit public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__getScreenBounds public="1" set="method" line="148"> - - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - <_HX_SUPER__playAnim public="1" set="method" line="30"> - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.Character - funkin.game.Character.CharacterShadowFrame - - - - - - - - - - - - - - 0 - - - - 0 - - - - - - - - - - - - - - false - - - - - - - - - - - - - - { retrySFX : "gameOverEnd", lossSFX : "gameOverSFX", gameOverSong : "gameOver", player : true, character : "bf-dead" } - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - - - <_HX_SUPER__beatHit set="method" line="148"> - - - - - <_HX_SUPER__endBullshit set="method" line="30"> - <__interp> - - - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.GameOverSubstate - - - - - - - * Used for FreeplayState! If you use it elsewhere, prob gonna annoying - - - - - - - 1, 20 => 0]]]> - Frame Index]]> - - - - - - - * Helper for HScript who can't make maps - * @param steps Something like this: `[[0, 1], [20, 0]]` - - - - - - - - - - - - { isPlayer : false, char : "bf" } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - * Helper for HScript who can't make maps - * @param steps Something like this: `[[0, 1], [20, 0]]` - - <_HX_SUPER__setHealthSteps public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.HealthIcon - - - - - - - - - new Map() - - - - - - - new Map() - - - - - - - - - { diff : "normal" } - - - - - - - - - { diff : "normal" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.game.Highscore - funkin.game.Highscore.SongScore - - - - - - - false - - - - - - - - - - - - - - - - - { smoothing : false } - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - - - - - - - - { smoothing : false } - - <_HX_SUPER__drawPixels public="1" set="method" line="30"> - - - - - - - - - - - { smoothing : false } - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.HudCamera - - - - - - - 160 * 0.7 - - <__customNoteTypeExists expr="[]" line="92" static="1"> - - - - - [] - - - - - - - - 0 - - - - - - - - - - - 0 - - - - false - - - - false - - - - false - - - - false - * Whenever that note should be avoided by Botplay. - - - - * The note that comes before this one (sustain and not) - - - - * The note that comes after this one (sustain and not) - - - - * The next sustain after this one - - - - "default" - * Name of the splash. - - - - - - 0 - - - - false - - - - true - - - - 0 - - - - null - - - - null - - - <__strumCameras public="1" expr="null"> - - - null - hide - - - <__strum public="1" expr="null"> - - - null - hide - - - <__noteAngle public="1" expr="0"> - - - 0 - hide - - - - - - "" - - - - null - - - - true - - - - false - - - - true - * Whenever the position of the note should be relative to the strum position or not. - * For example, if this is true, a note at the position 0; 0 will be on the strum, instead of at the top left of the screen. - - - - - - - - - 0.5 - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { sustainOffset : 0, sustainLength : 0, sustain : false } - - - - hscript.ClassExtendMacro.build() - funkin.game.PlayState - - - - - <__loopSprite> - - - 0 - - <__currentlyLooping expr="false"> - - false - - - - - - - - - - - - - - - - - - - - - { recursive : false } - - - - - - - - - - - { recursive : false } - - - - - - - - { Splice : false } - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__addNotes public="1" set="method" line="148"> - - - - - <_HX_SUPER__sortNotes public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - - - - - - { recursive : false } - - <_HX_SUPER__forEach public="1" set="method" line="148"> - - - - - - - - - { recursive : false } - - - - - - - - - - - { recursive : false } - - <_HX_SUPER__forEachAlive public="1" set="method" line="148"> - - - - - - - - - { recursive : false } - - - - - - - - { Splice : false } - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - { Splice : false } - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.NoteGroup - - - - - - - - - <_HX_SUPER__set_strumLine set="method" line="148"> - - - - - <_HX_SUPER__get_mustPress set="method" line="148"> - - <_HX_SUPER__get_strumID set="method" line="148"> - - <_HX_SUPER__get_noteType set="method" line="148"> - - - - - <_HX_SUPER__drawComplex set="method" line="148"> - - - - - <_HX_SUPER__draw set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - - - <_HX_SUPER__updateSustain public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__setClipRect public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_clipRect set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.Note - - - - - - - null - * Current PlayState instance. - - - - * SONG DATA (Chart, Metadata) - - - - false - * Whenever the song is being played in Story Mode. - - - - null - * The week data of the current week - - - - [] - * The remaining songs in the Story Mode playlist. - - - - "normal" - * The selected difficulty name - - - - false - * Whenever the week is coming from the mods folder or not. - - - - false - * Whenever the song has been started with opponent mode on. - - - - false - // * Whenever the song has been started with co-op mode on. - - - - * Previous cam follow. - - - - 0 - * Score for the current week. - - - - 6 - * Zoom for the pixel assets. - - - - * Script Pack of all the scripts being ran. - - - - [] - * Array of all the players in the stage. - - - - "gameOver" - * Game Over Song. (assets/music/gameOver.ogg) - - - - "gameOverSFX" - * Game Over Song. (assets/sounds/gameOverSFX.ogg) - - - - "gameOverEnd" - * Game Over End SFX, used when retrying. (assets/sounds/gameOverEnd.ogg) - - - - * Current Stage. - - - - true - * Whenever the score will save when you beat the song. - - - - - * Whenever the player can die. - - - - Options.ghostTapping - * Whenever Ghost Tapping is enabled. - - - - - * Whenever the opponent can die. - - - - 0 - * Current scroll speed for all strums. - * To set a scroll speed for a specific strum, use `strum.scrollSpeed`. - - - - * Whenever the game is in downscroll or not. (Can be set) - - - - - - - hide - - - - hide - - - - * Instrumental sound (Inst.ogg). - - - - * Vocals sound (Vocals.ogg). - - - - * Dad character - - - - * Girlfriend character - - - - * Boyfriend character - - - - * Strum line position - - - - 0 - * Number of ratings. - - - - * Object defining the camera follow target. - - - - * Player strums. - - - - * CPU strums. - - - - * Shortcut to `playerStrums`. - - - - * Shortcut to `cpuStrums`. - - - - * Note splashes container - - - - true - * Whenever the vocals should be muted when a note is missed. - - - - true - * Whenever the player can press 7, 8 or 9 to access the debug menus. - - - - false - * Whenever cam zooming is enabled, enables on a note hit if not cancelled. - - - - 4 - * Interval of cam zooming (beats). - * For example: if set to 4, the camera will zoom every 4 beats. - - - - 1 - * How strong the cam zooms should be (defaults to 1) - - - - 1.35 - * Maximum amount of zoom for the camera. - - - - "" - * Current song name (lowercase) - - - - "" - * Current stage name - - - - * Interval at which Girlfriend dances. - - - - 1 - * Current health. Goes from 0 to maxHealth (defaults to 2) - - - - - 2 - - - * Maximum health the player can have. Defaults to 2. - - - - 0 - * Current combo. - - - - !Options.ghostTapping - * Whenever the misses should show "Combo Breaks" instead of "Misses" - - - - * Health bar background. - - - - * Health bar. - - - - false - * Whenever the music has been generated. - - - - false - * Whenever the song is currently being started. - - - - * Player's icon - - - - * Opponent's icon - - - - * Camera for the HUD (notes, misses). - - - - * Camera for the game (stages, characters) - - - - 0 - * The player's current score. - - - - 0 - * The player's amount of misses. - - - - * The player's accuracy (shortcut to `accuracyPressedNotes / totalAccuracyAmount`). - - - - 0 - * The number of pressed notes. - - - - 0 - * The total accuracy amount. - - - - * FunkinText that shows your score. - - - - * FunkinText that shows your amount of misses. - - - - * FunkinText that shows your accuracy. - - - - 1.05 - * Camera zoom at which the game lerps to. - - - - false - * Whenever the game is currently in a cutscene or not. - - - - isStoryMode - * Whenever the game should play the cutscenes. Defaults to whenever the game is currently in Story Mode or not. - - - - null - * Cutscene script path. - - - - null - * End cutscene script path. - - - - * Last rating (may be null) - - - - * Timer for the start countdown - - - - [] - * Remaining events - - - - 0 - * Current camera target. -1 means no automatic camera targetting. - - - - 5 - * Length of the intro countdown. - - - - [null, "game/ready", "game/set", "game/go"] - * Array of sprites for the intro. - - - - ["intro3", "intro2", "intro1", "introGo"] - * Array of sounds for the intro. - - - - false - * Whenever the game is paused or not. - - - - false - * Whenever the countdown has started or not. - - - - true - * Whenever the game can be paused or not. - - - - new FlxTextFormat(0xFF888888, false, false, 0) - * Format for the accuracy rating. - - - - false - * Whenever the song is ending or not. - - - - * Group containing all of the combo sprites. - - - - [null] - * Array containing all of the note types names. - - - - Options.hitWindow - * Hit window, in milliseconds. Defaults to 250ms unless changed in options. - * Base game hit window is 175ms. - - <_startCountdownCalled expr="false"> - - - false - - hide - - - <__vocalOffsetViolation expr="0"> - - - 0 - hide - - - - - - - - - - [new ComboRating(0, "F", 0xFFFF4444), new ComboRating(0.5, "E", 0xFFFF8844), new ComboRating(0.7, "D", 0xFFFFAA44), new ComboRating(0.8, "C", 0xFFFFFF44), new ComboRating(0.85, "B", 0xFFAAFF44), new ComboRating(0.9, "A", 0xFF88FF44), new ComboRating(0.95, "S", 0xFF44FFFF), new ComboRating(1, "S++", 0xFF44FFFF)] - * All combo ratings. - - - - "" - - - - "" - - <__cachedGraphics expr="[]"> - - - [] - - - - - - * Updates the rating. - - - - - - - - - hide - - - - hide - - - - * Function used to update Discord Presence. - * This function is dynamic, which means you can do `updateDiscordPresence = function() {}` in scripts. - - - - - - - - - { prefix : "" } - * Starts a cutscene. - * @param prefix Custom prefix. Using `midsong-` will require you to for example rename your video cutscene to `songs/song/midsong-cutscene.mp4` instead of `songs/song/cutscene.mp4` - * @param cutsceneScriptPath Optional: Custom script path. - * @param callback Callback called after the cutscene ended. If equals to `null`, `startCountdown` will be called. - - - - hide - - - - - - - * Creates a fake countdown. - - - - hide - - - - - - - - hide - - - - - - - - hide - - - - hide - - - - - - - hide - - - - hide - - - - * Returns the Discord RPC icon. - - <__songPlaying expr="false"> - - false - - <__wasAutoPause expr="false"> - - false - - - - hide - - - - hide - - - - hide - - - - * Pauses the game. - - - - - - - hide - - - - - - <__updateNote_event public="1" expr="null"> - - - null - hide - - - - - - - - - - - - * Forces a game over. - * @param character Character which died. Default to `boyfriend`. - * @param deathCharID Character ID (name) for game over. Default to whatever is specified in the character's XML. - * @param gameOverSong Song for the game over screen. Default to `this.gameOverSong` (`gameOver`) - * @param lossSFX SFX at the beginning of the game over (Mic drop). Default to `this.lossSFX` (`gameOverSFX`) - * @param retrySFX SFX played whenever the player retries. Defaults to `retrySFX` (`gameOverEnd`) - - - - * Ends the song. - - - - * Immediately switches to the next song, or goes back to the Story/Freeplay menu. - - - <__funcsToExec expr="[]"> - - - - - [] - - <__pressed expr="[]"> - - [] - - <__justPressed expr="[]"> - - [] - - <__justReleased expr="[]"> - - [] - - - - - - - - - - - * Misses a note - * @param note Note to miss. - * @param direction Specify a custom direction in case note is null. - * @param player Specify a custom player in case note is null. - - - - - - - hide - - - - - - - - * Hits a note - * @param note Note to hit. - - - - - - - - - - - hide - - - - - - - hide - - - - - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - flixel.text.FlxText.FlxTextFormatRange - funkin.game.StrumLine - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hide - - <_HX_SUPER__set_downscroll set="method" line="148"> - - - - - - hide - - <_HX_SUPER__get_downscroll set="method" line="148"> - - <_HX_SUPER__get_accuracy set="method" line="148"> - - - - - <_HX_SUPER__set_accuracy set="method" line="148"> - - - - - - * Updates the rating. - - <_HX_SUPER__updateRating public="1" set="method" line="148"> - - - - - <_HX_SUPER__set_maxHealth set="method" line="148"> - - - - - - hide - - <_HX_SUPER__create public="1" set="method" line="148"> - - - hide - - <_HX_SUPER__createPost public="1" set="method" line="148"> - - - - - - - - { prefix : "" } - * Starts a cutscene. - * @param prefix Custom prefix. Using `midsong-` will require you to for example rename your video cutscene to `songs/song/midsong-cutscene.mp4` instead of `songs/song/cutscene.mp4` - * @param cutsceneScriptPath Optional: Custom script path. - * @param callback Callback called after the cutscene ended. If equals to `null`, `startCountdown` will be called. - - <_HX_SUPER__startCutscene public="1" set="method" line="148"> - - - - - - - { prefix : "" } - - - - hide - - <_HX_SUPER__startCountdown public="1" set="method" line="30"> - - - - - - * Creates a fake countdown. - - <_HX_SUPER__countdown public="1" set="method" line="148"> - - - - - - hide - - <_HX_SUPER__startSong set="method" line="30"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - - hide - - <_HX_SUPER__generateSong set="method" line="30"> - - - - - - - - - - hide - - <_HX_SUPER__sortByShit set="method" line="148"> - - - - - - - - - - hide - - <_HX_SUPER__openSubState set="method" line="148"> - - - - - - hide - - <_HX_SUPER__closeSubState set="method" line="148"> - - - hide - - <_HX_SUPER__onFocus public="1" set="method" line="30"> - - - hide - - <_HX_SUPER__onFocusLost public="1" set="method" line="30"> - - - hide - - <_HX_SUPER__resyncVocals set="method" line="30"> - - - * Pauses the game. - - <_HX_SUPER__pauseGame public="1" set="method" line="148"> - - - - - - hide - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__executeEvent public="1" set="method" line="148"> - - - - - - - - - - - - - * Forces a game over. - * @param character Character which died. Default to `boyfriend`. - * @param deathCharID Character ID (name) for game over. Default to whatever is specified in the character's XML. - * @param gameOverSong Song for the game over screen. Default to `this.gameOverSong` (`gameOver`) - * @param lossSFX SFX at the beginning of the game over (Mic drop). Default to `this.lossSFX` (`gameOverSFX`) - * @param retrySFX SFX played whenever the player retries. Defaults to `retrySFX` (`gameOverEnd`) - - <_HX_SUPER__gameOver public="1" set="method" line="148"> - - - - - - - - - - * Ends the song. - - <_HX_SUPER__endSong public="1" set="method" line="30"> - - - * Immediately switches to the next song, or goes back to the Story/Freeplay menu. - - <_HX_SUPER__nextSong public="1" set="method" line="148"> - - <_HX_SUPER__registerSmoothTransition public="1" set="method" line="148"> - - <_HX_SUPER__keyShit set="method" line="30"> - - - - - - - - - * Misses a note - * @param note Note to miss. - * @param direction Specify a custom direction in case note is null. - * @param player Specify a custom player in case note is null. - - <_HX_SUPER__noteMiss public="1" set="method" line="30"> - - - - - - - - - - - - hide - - <_HX_SUPER__getNoteType public="1" set="method" line="148"> - - - - - - - - - - * Hits a note - * @param note Note to hit. - - <_HX_SUPER__goodNoteHit public="1" set="method" line="30"> - - - - - - - - - - hide - - <_HX_SUPER__stepHit set="method" line="148"> - - - - - - - - - hide - - <_HX_SUPER__measureHit set="method" line="148"> - - - - - - - - - hide - - <_HX_SUPER__beatHit set="method" line="148"> - - - - - <_HX_SUPER__get_boyfriend set="method" line="148"> - - - - - <_HX_SUPER__set_boyfriend set="method" line="148"> - - - - - <_HX_SUPER__get_dad set="method" line="148"> - - - - - <_HX_SUPER__set_dad set="method" line="148"> - - - - - <_HX_SUPER__get_gf set="method" line="148"> - - - - - <_HX_SUPER__set_gf set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.PlayState - funkin.game.PlayState.ComboRating - funkin.game.PlayState.PlayStateTransitionData - - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.PlayState - funkin.game.PlayState.ComboRating - funkin.game.PlayState.PlayStateTransitionData - - - - - - - true - * Whenever the splash group has successfully loaded or not. - - - - * XML data for the note splashes. - - - - [] - * Animation names sorted by strum IDs. - * Use `getSplashAnim` to get one. - - - - - - <__splash> - - - - - - - - - - * Creates a new Splash group - * @param path Path to the splash data (xml) - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__getSplashAnim public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__showOnStrum public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.SplashGroup - - - - - - - - - - [] - * Map containing all of the splashes group. - - - - - - - * Returns a group of splashes, and creates it if it doesn't exist. - * @param path Path to the splashes XML (`Paths.xml('splashes/splash')`) - - - <_firstDraw expr="true"> - - true - - - <__grp> - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - * Returns a group of splashes, and creates it if it doesn't exist. - * @param path Path to the splashes XML (`Paths.xml('splashes/splash')`) - - <_HX_SUPER__getSplashGroup public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - - <_HX_SUPER__showSplash public="1" set="method" line="148"> - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.game.SplashHandler - - - - - - - - - - - - - - - - - - [] - - - - - - - - - [] - - - - - - - - - - - - - - - - - - - - - - { def : false } - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - <_HX_SUPER__getSprite public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getCharGroup public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__addCharPos public="1" set="method" line="148"> - - - - - - - - - - - - { def : false } - - <_HX_SUPER__isCharFlipped public="1" set="method" line="148"> - - - - - - { def : false } - - - - - - - <_HX_SUPER__applyCharStuff public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__stepHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__measureHit public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.Stage - funkin.game.Stage.StageCharPos - funkin.game.Stage.StageCharPosInfo - - - - - - - - 565.4866776461628 - - - - - - - Note.swagWidth / 2 - - - - - - false - - - - -5000 - - - - null - - - - null - - - - [] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { force : true } - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - ()]]> - * Signal that triggers whenever a note is hit. Similar to onPlayerHit and onDadHit, except strumline specific. - * To add a listener, do - * `strumLine.onHit.add(function(e:NoteHitEvent) {});` - - - - - - - ()]]> - * Signal that triggers whenever a note is missed. Similar to onPlayerMiss and onDadMiss, except strumline specific. - * To add a listener, do - * `strumLine.onMiss.add(function(e:NoteHitEvent) {});` - - - - - - - ()]]> - * Signal that triggers whenever a note is being updated. Similar to onNoteUpdate, except strumline specific. - * To add a listener, do - * `strumLine.onNoteUpdate.add(function(e:NoteUpdateEvent) {});` - - - - * Array containing all of the characters "attached" to those strums. - - - - false - * Whenever this strumline is controlled by cpu or not. - - - - false - * Whenever this strumline is from the opponent side or the player side. - - - - null - * Controls assigned to this strumline. - - - - null - * Chart JSON data assigned to this StrumLine (Codename format) - - - - - null - - - * Whenever Ghost Tapping is enabled. - - - - * Group of all of the notes in this strumline. Using `forEach` on this group will only loop through the first notes for performance reasons. - - - - - - - - - 0.25 - - - - - - - - - - - - <__updateNote_strum> - - - - - - - - - - - - - - { amount : 4 } - - - - - - - * Deletes a note from this strumline. - * @param note Note to delete - - - - - - - - - - - - - - - - - - { opponentSide : true, cpu : false, strumOffset : 0.25 } - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__get_ghostTapping set="method" line="148"> - - - - - <_HX_SUPER__generate public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__updateNotes public="1" set="method" line="148"> - - - - - <_HX_SUPER__updateNote public="1" set="method" line="148"> - - - - - - - - - { amount : 4 } - - <_HX_SUPER__generateStrums public="1" set="method" line="148"> - - - - - { amount : 4 } - - - - - - - * Deletes a note from this strumline. - * @param note Note to delete - - <_HX_SUPER__deleteNote public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.StrumLine - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - <_HX_SUPER__updateNotePosition public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__updateSustain public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__updatePlayerInput public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__press public="1" set="method" line="148"> - - - - - - - - - - { force : true } - - <_HX_SUPER__playAnim public="1" set="method" line="148"> - - - - - - { force : true } - - - <_HX_SUPER__getAnim public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.game.Strum - - - - - - - - - - - - - - * Gets all the releases from a specific GitHub repository using the GitHub API. - * @param user - * @param repository - * @return Releases - - - - - - - - - - - - - - - - - - { keepDrafts : false, keepPrereleases : true } - * Filters all releases gotten by `getReleases` - * @param releases Releases - * @param keepPrereleases Whenever to keep Pre-Releases. - * @param keepDrafts Whenever to keep Drafts. - * @return Filtered releases. - - <__requestOnGitHubServers public="1" set="method" line="58" static="1"> - - - - <__requestBytesOnGitHubServers public="1" set="method" line="71" static="1"> - - - - <__parseGitHubException set="method" line="84" static="1"> - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.github.GitHubException - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - * Url of the release (GitHub API) - - - - * Template URL for asset download link. - - - - - - - - - - - - * ID of the release. - - - - * Link to the release on the GitHub website. - - - - - - * Body of the GitHub request (Markdown) - - - - * Author of the release - - - - * Url for the assets JSON. Also accessible via `GitHubRelease.assets` - - - - hscript.ClassExtendMacro.build() - - - - - - * URL to the user on GitHub's servers. - - - - * Date of last account update. - - - - * Type of the user. - - - - * Twitter username of the user. Can be null. - - - - * URL on GitHub's API to access this user's starred repositories. - - - - * Whenever the user is a GitHub administrator. - - - - * Number of public repos this user own. - - - - * Number of public gists this user own. - - - - * ID of the current node on the GitHub database. - - - - * Name of the user. - - - - * Username of the user. - - - - - * ID of the user. - - - - * URL to the user on GitHub's website. - - - - - * Unknown - - - - * URL on GitHub's API to access this user's gists. - - - - * URL on GitHub's API to access the accounts this user is following. - - - - * Number of accounts this user follows. - - - - * URL on GitHub's API to access this user's followers. - - - - * Number of followers this user have - - - - - * Date of creation of the account - - - - * The company this user belongs to. Can be `null`. - - - - - - * Link to the avatar (profile picture). - - - hscript.ClassExtendMacro.build() - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast "User" - - - - - - - - cast "Organization" - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast "User" - - - - - - - - cast "Organization" - - - - - - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.github.GitHub - - - - - - - - - * Returns the defined values - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.macros.DefinesMacro - - - - - - * Returns the current commit number - - - - * Returns the current commit hash - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.macros.GitCommitMacro - - - - - - - - - false - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__goToTitle set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.BetaWarningState - - - - - - - 1 - * How much time a song stays selected until it autoplays. - - - - [] - * Array containing all of the songs metadatas - - - - 0 - * Currently selected song - - - - 1 - * Currently selected difficulty - - - - 0 - * Currently selected coop/opponent mode - - - - * Text containing the score info (PERSONAL BEST: 0) - - - - )]]> - - - - * Text containing the current coop/opponent mode ([TAB] Co-Op mode) - - - - 0 - * Currently lerped score. Is updated to go towards `intendedScore`. - - - - 0 - * Destination for the currently lerped score. - - - - * Assigned FreeplaySonglist item. - - - - * Black background around the score, the difficulty text and the co-op text. - - - - * Background. - - - - true - * Whenever the player can navigate and select - - - - * Group containing all of the alphabets - - - - false - * Whenever the currently selected song is playing. - - - - [] - * Array containing all of the icons. - - - - * FlxInterpolateColor object for smooth transition between Freeplay colors. - - - - - 0 - * Time elapsed since last autoplay. If this time exceeds `timeUntilAutoplay`, the currently selected song will play. - - - - true - * Whenever the currently selected song instrumental is playing. - - - - null - * Path to the currently playing song instrumental. - - - - - - - - - - - - - - { force : false, change : 0 } - * Changes the current difficulty - * @param change How much to change. - * @param force Force the change if `change` is equal to 0 - - - - ["[TAB] Solo", "[TAB] Opponent Mode", "[TAB] Co-Op Mode", "[TAB] Co-Op Mode (Switched)"] - * Array containing all labels for Co-Op / Opponent modes. - - - - - - - - { force : false, change : 0 } - * Change the current coop mode context. - * @param change How much to change - * @param force Force the change, even if `change` is equal to 0. - - - - - - - - { force : false, change : 0 } - * Change the current selection. - * @param change How much to change - * @param force Force the change, even if `change` is equal to 0. - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - { useTxt : true } - - - - [] - - - - - - - - { useTxt : true } - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - <_HX_SUPER__select public="1" set="method" line="148"> - - <_HX_SUPER__convertChart public="1" set="method" line="148"> - - - - - - - { force : false, change : 0 } - * Changes the current difficulty - * @param change How much to change. - * @param force Force the change if `change` is equal to 0 - - <_HX_SUPER__changeDiff public="1" set="method" line="148"> - - - - - - { force : false, change : 0 } - - - - - - - - { force : false, change : 0 } - * Change the current coop mode context. - * @param change How much to change - * @param force Force the change, even if `change` is equal to 0. - - <_HX_SUPER__changeCoopMode public="1" set="method" line="148"> - - - - - - { force : false, change : 0 } - - - - - - - - { force : false, change : 0 } - * Change the current selection. - * @param change How much to change - * @param force Force the change, even if `change` is equal to 0. - - <_HX_SUPER__changeSelection public="1" set="method" line="148"> - - - - - - { force : false, change : 0 } - - - <_HX_SUPER__updateOptionsAlpha set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.FreeplayState - funkin.menus.FreeplayState.FreeplaySonglist - - - - - - - - - - - { useTxt : true } - - <_HX_SUPER__getSongsFromSource public="1" set="method" line="148"> - - - - - - { useTxt : true } - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.FreeplayState - funkin.menus.FreeplayState.FreeplaySonglist - - - - - - - - - false - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - <_HX_SUPER__changeThing set="method" line="30"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.GitarooPause - - - - - - - 0 - - - - - CoolUtil.coolTextFile(Paths.txt("config/menuItems")) - - - - - - true - - - - - false - - - - - - - - - - - - - - - - { huh : 0 } - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - - - <_HX_SUPER__switchTo public="1" set="method" line="148"> - - - - - <_HX_SUPER__selectItem set="method" line="148"> - - - - - - { huh : 0 } - - <_HX_SUPER__changeItem set="method" line="148"> - - - - - { huh : 0 } - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.MainMenuState - - - - - - - [] - - - - - 0 - - - - - - - - - - - - - { force : false } - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - - - { force : false } - - <_HX_SUPER__changeSelection public="1" set="method" line="148"> - - - - - - { force : false } - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.ModSwitchMenu - - - - - - - - - ["Resume", "Restart Song", "Change Controls", "Options", "Exit to menu"] - - - - 0 - - - - - - PlayState.instance - - <__cancelDefault expr="false"> - - false - - - - - - - - - - - - - - { change : 0 } - - - - - - - - { y : 0, x : 0 } - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - <_HX_SUPER__selectOption public="1" set="method" line="148"> - - <_HX_SUPER__destroy set="method" line="148"> - - - - - - { change : 0 } - - <_HX_SUPER__changeSelection set="method" line="30"> - - - - - { change : 0 } - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.PauseSubState - - - - - - - - - - [] - - - - [] - - - - - - - 0 - - - - 0 - - - - - - - [] - - - - - - - - 0 - - - - 0 - - - - true - - - - - - - - - [] - - - <__lastDifficultyTween> - - - - - - - - - - - - { force : false } - - <__oldDiffName expr="null"> - - null - - - - - - - - { force : false } - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - null - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - 0 - - - - false - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__changeCharacter public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.StoryMenuState - funkin.menus.StoryMenuState.WeekData - funkin.menus.StoryMenuState.WeekSong - funkin.menus.StoryMenuState.MenuCharacter - funkin.menus.StoryMenuState.MenuCharacterSprite - funkin.menus.StoryMenuState.MenuItem - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__goBack public="1" set="method" line="148"> - - - - - - - { force : false } - - <_HX_SUPER__changeWeek public="1" set="method" line="148"> - - - - - - { force : false } - - - - - - - - { force : false } - - <_HX_SUPER__changeDifficulty public="1" set="method" line="148"> - - - - - - { force : false } - - - <_HX_SUPER__loadXMLs public="1" set="method" line="148"> - - - - - <_HX_SUPER__addCharacter public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__getWeeksFromSource public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - <_HX_SUPER__selectWeek public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.StoryMenuState - funkin.menus.StoryMenuState.WeekData - funkin.menus.StoryMenuState.WeekSong - funkin.menus.StoryMenuState.MenuCharacter - funkin.menus.StoryMenuState.MenuCharacterSprite - funkin.menus.StoryMenuState.MenuItem - - - - - - <_HX_SUPER__startFlashing public="1" set="method" line="30"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.StoryMenuState - funkin.menus.StoryMenuState.WeekData - funkin.menus.StoryMenuState.WeekSong - funkin.menus.StoryMenuState.MenuCharacter - funkin.menus.StoryMenuState.MenuCharacterSprite - funkin.menus.StoryMenuState.MenuItem - - - - - - - false - - - - false - - - - [] - - - - - - - - - - - false - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - 16 - - - - - - - new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er"]), 3 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er", "present"]), 4 => new IntroText(), 5 => new IntroText(["In association", "with"]), 7 => new IntroText(["In association", "with", "newgrounds", { name : "newgroundsLogo", path : "menus/titlescreen/newgrounds_logo", scale : 0.8 }]), 8 => new IntroText(), 9 => new IntroText(["{introText1}"]), 11 => new IntroText(["{introText1}", "{introText2}"]), 12 => new IntroText(), 13 => new IntroText(["Friday"]), 14 => new IntroText(["Friday", "Night"]), 15 => new IntroText(["Friday", "Night", "Funkin'"])]]]> - - - - - false - - - - - - - - - - hscript.ClassExtendMacro.build() - funkin.mods.ModsFolder - funkin.system.MainState - - - - - - - - - [] - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <_HX_SUPER__create public="1" set="method" line="30"> - - <_HX_SUPER__startIntro set="method" line="148"> - - <_HX_SUPER__getIntroTextShit public="1" set="method" line="148"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - <_HX_SUPER__pressEnter public="1" set="method" line="148"> - - <_HX_SUPER__goToMainMenu set="method" line="148"> - - - - - <_HX_SUPER__createCoolText public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__addMoreText public="1" set="method" line="148"> - - - - - <_HX_SUPER__deleteCoolText public="1" set="method" line="148"> - - - - - <_HX_SUPER__beatHit set="method" line="148"> - - - - - <_HX_SUPER__loadXML public="1" set="method" line="148"> - - <_HX_SUPER__skipIntro public="1" set="method" line="30"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.TitleState - funkin.menus.TitleState.IntroText - funkin.menus.TitleState.TitleStateImage - - - - - - <_HX_SUPER__show public="1" set="method" line="148"> - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.menus.TitleState - funkin.menus.TitleState.IntroText - funkin.menus.TitleState.TitleStateImage - - - - - - - - - - - - - - - - - - - * COPIED DIRECTLY FROM LIME SOURCE CAUSE LIME IS SO FUCKING DUMB!! - hscript.ClassExtendMacro.build() - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.mods.LimeLibrarySymbol - - - - - - <_parsedAsset public="1"> - - <__isCacheValid set="method"> - - - - - - - - - - { isLocal : false } - - <__parseAsset set="method"> - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - ()]]> - hide - - * INTERNAL - Only use when editing source mods!! - - - - null - * Current mod folder. Will affect `Paths`. - - - - "./mods/" - * Path to the `mods` folder. - - - - "./addons/" - * Path to the `addons` folder. - - <__firstTime expr="true" line="44" static="1"> - - true - * Whenever its the first time mods has been reloaded. - - - - * Initialises `mods` folder by adding callbacks and such. - - - - - - - * Switches mod - unloads all the other mods, then load this one. - * @param libName - - - - - - - - - { force : false } - * Loads a mod library from the specified path. Supports folders and zips. - * @param modName Name of the mod - * @param force Whenever the mod should be reloaded if it has already been loaded - - - - - - - - { force : false } - - - - - - - - - { force : false } - - - - - - - - - { force : false } - - - - - - - - - { force : false } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - >()]]> - - - - - - - - - - - - - - >()]]> - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__assetLoaded set="method" line="617"> - - - - - - - <__cacheBreak set="method" line="659"> - - - - - - - <__fromBundle set="method" line="664"> - - - - - - - { manifest : null } - - - - <__fromManifest set="method" line="711"> - - - - - - - <__resolvePath set="method" line="778"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime.text.Font - lime.utils.Assets - - - - - - - - - - true - - - - "assets/" - - - - - - - [] - - <_parsedAsset public="1" expr="null"> - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__getFiles public="1" set="method" line="88"> - - - - - - { folders : false } - - - - - - - - <__isCacheValid set="method" line="113"> - - - - - - - - - - { isLocalCache : false } - - <__parseAsset set="method" line="134"> - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__getEditedTime public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getAudioBuffer public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getBytes public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getFont public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getImage public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getPath public="1" set="method" line="148"> - - - - <__getFiles public="1" set="method" line="74" override="1"> - - - - - - { folders : false } - - <_HX_SUPER____getFiles public="1" set="method" line="148"> - - - - - - { folders : false } - - - - - - - <_HX_SUPER__exists public="1" set="method" line="148"> - - - - - - <_HX_SUPER__getAssetPath set="method" line="148"> - <__isCacheValid set="method" line="74" override="1"> - - - - - - - - - - { isLocalCache : false } - - <_HX_SUPER____isCacheValid set="method" line="148"> - - - - - - - - - - { isLocalCache : false } - - <__parseAsset set="method" line="74" override="1"> - - - - <_HX_SUPER____parseAsset set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.mods.ModsFolderLibrary - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.mods.ModsFolder - - - - - - - - - - - - - - false - - - - "assets/" - - - - - - - - [] - - <_parsedAsset public="1"> - - - - - - - - - - - - - - - - - <__parseAsset public="1" set="method" line="127"> - - - - <__isCacheValid public="1" set="method" line="133"> - - - - - - - - - - { isLocal : false } - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__getAudioBuffer public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getBytes public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getFont public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getImage public="1" set="method" line="148"> - - - - <__parseAsset public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____parseAsset public="1" set="method" line="148"> - - - - <__isCacheValid public="1" set="method" line="74" override="1"> - - - - - - - - - - { isLocal : false } - - <_HX_SUPER____isCacheValid public="1" set="method" line="148"> - - - - - - - - - - { isLocal : false } - - - - - - - <_HX_SUPER__exists public="1" set="method" line="148"> - - - - - - <_HX_SUPER__getAssetPath set="method" line="148"> - - - - - <_HX_SUPER__getFiles public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getFolders public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.mods.ZipFolderLibrary - - - - <__save public="1" static="1"> - - - hide - - - - <__eventAdded expr="false" line="15" static="1"> - - - false - hide - - - - - - true - * SETTINGS - - - - false - - - - true - - - - true - - - - true - - - - true - - - - true - - - - true - - - - 1 - - - - true - - - - false - - - - false - - - - true - - - - 250 - - - - 120 - - - - true - - - - null - - - - true - * EDITORS SETTINGS - - - - true - - - - 120 - - - - null - * QOL FEATURES - - - - "normal" - - - - false - - - - [A] - * PLAYER 1 CONTROLS - - - - [S] - - - - [W] - - - - [D] - - - - [A] - - - - [S] - - - - [W] - - - - [D] - - - - [ENTER] - - - - [BACKSPACE] - - - - [ENTER] - - - - [R] - - - - [TAB] - - - - [LEFT] - * PLAYER 2 CONTROLS (ALT) - - - - [DOWN] - - - - [UP] - - - - [RIGHT] - - - - [LEFT] - - - - [DOWN] - - - - [UP] - - - - [RIGHT] - - - - [SPACE] - - - - [ESCAPE] - - - - [ESCAPE] - - - - [] - - - - [] - - - - * SOLO GETTERS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__flush public="1" set="method" line="9" static="1"> - <__load public="1" set="method" line="9" static="1"> - - - hscript.ClassExtendMacro.build() - funkin.macros.OptionsMacro.build() - funkin.macros.FunkinSaveMacro.build("__save", "__flush", "__load") - - - - - - - - - - - - - - [{ name : "Notes", settings : [{ name : "{noteLeft}", control : "NOTE_LEFT" }, { name : "{noteDown}", control : "NOTE_DOWN" }, { name : "{noteUp}", control : "NOTE_UP" }, { name : "{noteRight}", control : "NOTE_RIGHT" }] }, { name : "UI", settings : [{ name : "Left", control : "LEFT" }, { name : "Down", control : "DOWN" }, { name : "Up", control : "UP" }, { name : "Right", control : "RIGHT" }, { name : "Accept", control : "ACCEPT" }, { name : "Back", control : "BACK" }, { name : "Reset", control : "RESET" }, { name : "Pause", control : "PAUSE" }] }, { name : "Engine", settings : [{ name : "Switch Mod", control : "SWITCHMOD" }] }] - - - - - false - - - - 0 - - - - true - - - - - - - [0xFFC24B99, 0xFF00FFFF, 0xFF12FA05, 0xFFF9393F] - - - - new FlxObject(0, 0, 2, 2) - - - - false - - - - - - true - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - ", desc : "Change Gameplay options such as Downscroll, Scroll Speed, Naughtyness...", state : GameplayOptions }, { name : "Appearance >", desc : "Change Appearance options such as Flashing menus...", state : AppearanceOptions }, { name : "Miscellaneous >", desc : "Use this menu to reset save data or engine settings.", state : MiscOptions }]]]> - - - - - - - - - * XML STUFF - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__exit public="1" set="method" line="148"> - - - - - - * XML STUFF - - <_HX_SUPER__parseOptionsFromXML public="1" set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.OptionsMenu - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__close public="1" set="method" line="148"> - - - - - <_HX_SUPER__changeSelection public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.OptionsScreen - - - - - - - - - - - - - - - - - - - - - - - - <__subMenuClose set="method" line="48"> - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__insert public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__setup public="1" set="method" line="148"> - - - - <__subMenuClose set="method" line="74" override="1"> - - - - <_HX_SUPER____subMenuClose set="method" line="148"> - - - - - <_HX_SUPER__clearLastMenu public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.OptionsTree - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.options.Options - - - - - - 0 - - - - 0 - - - - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__setKeyboardScheme public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.PlayerSettings - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - <_HX_SUPER__createPost public="1" set="method" line="148"> - - <_HX_SUPER__onMenuChange public="1" set="method" line="148"> - - <_HX_SUPER__exit public="1" set="method" line="148"> - - - - - <_HX_SUPER__onMenuClose public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.TreeMenu - funkin.options.TreeMenu.OptionCategory - funkin.options.TreeMenu.OptionTypeDef - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.categories.AppearanceOptions - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.categories.GameplayOptions - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.options.categories.MiscOptions - - - - - - - - - - - - true - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.keybinds.ChangeKeybindSubState - - - - - <c path="funkin.ui.Alphabet"/> - - - - - - -1 - - - - false - - - - - - - - - - - - - - - - { p2 : false } - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - - - - { p2 : false } - - <_HX_SUPER__changeKeybind public="1" set="method" line="148"> - - - - - - - { p2 : false } - - - <_HX_SUPER__updateText public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.keybinds.KeybindSetting - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__changeSelection public="1" set="method" line="148"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.keybinds.KeybindsOptions - - - - - - - - false - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__text> - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - FlxPoint.get(1, -1), "unchecked" => FlxPoint.get(-12, -72), "checking" => FlxPoint.get(12, 30)]]]> - - - - FlxPoint.get() - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - <_HX_SUPER__get_selected set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - <_HX_SUPER__onSelect public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.type.Checkbox - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.type.IconOption - - - - - - <_HX_SUPER__get_controls set="method" line="148"> - - <_HX_SUPER__onSelect public="1" set="method" line="148"> - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.type.OptionType - - - - - - <_HX_SUPER__get_text set="method" line="148"> - - - - - <_HX_SUPER__set_text set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__onSelect public="1" set="method" line="148"> - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.options.type.TextOption - - - - - - - - - 0 - - - - "" - - - - 0 - - - - "penis" - - - - * Class used for saves WITHOUT going through the struggle of type checks - * Just add your save variables the way you would do in the Options.hx file. - * The macro will automatically generate the `flush` and `load` functions. - - - hscript.ClassExtendMacro.build() - funkin.macros.FunkinSaveMacro.build("save", "flush", "load") - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.saves.FunkinSave - - - - - - - - - - - [] - * Use "static var thing = true;" in hscript to use those!! - * are reset every mod switch so once you're done with them make sure to make them null!! - - - - - - - - - - - - - - - ["hx", "hscript", "hsc", "hxs", "lua"] - * All available script extensions - - - - null - * Currently executing script. - - - - - - - * Creates a script from the specified asset path. The language is automatically determined. - * @param path Path in assets - - - - * Script name (with extension) - - - - null - * Path to the script. - - - - * Loads the script - - - - - - - - - - * HSCRIPT ONLY FOR NOW - * Sets the "public" variables map for ScriptPack - - - - * Hot-reloads the script, if possible - - - - - - - * Traces something as this script. - - - - - - - - * Calls the function `func` defined in the script. - * @param func Name of the function - * @param parameters (Optional) Parameters of the function. - * @return Result (if void, then null) - - - - - - - * Sets a script's parent object so that its properties can be accessed easily. Ex: Passing `PlayState.instance` will allow `boyfriend` to be typed instead of `PlayState.instance.boyfriend`. - * @param variable Parent variable. - - - - - - - * Gets the variable `variable` from the script's variables. - * @param variable Name of the variable. - * @return Variable (or null if it doesn't exists) - - - - - - - - * Gets the variable `variable` from the script's variables. - * @param variable Name of the variable. - * @return Variable (or null if it doesn't exists) - - - - - - - - * Shows an error from this script. - * @param text Text of the error (ex: Null Object Reference). - * @param additionalInfo Additional information you could provide. - - - - - - - - * PRIVATE HANDLERS - DO NOT TOUCH - - - - - - - - - - - - - - * Creates a new instance of the script class. - * @param path - - * Class used for scripting. - - - hscript.ClassExtendMacro.build() - - - - - - - - - - [] - - - - - - - - - - - - - - - - - - - - * Simple class for empty scripts or scripts whose language isn't imported yet. - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__get public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__onCall public="1" set="method" line="148"> - - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.DummyScript - - - - - - [] - - - - [] - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.EventManager - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Class for THE Global Script, aka script that runs in the background at all times. - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.GlobalScript - - - - - - - - - - - null - - - - <__importedPaths> - - - - - - - - - <_errorHandler set="method" line="86"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__onCreate public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__importFailedCallback set="method" line="148"> - - - - <_errorHandler set="method" line="74" override="1"> - - - - <_HX_SUPER___errorHandler set="method" line="148"> - - - - - - - - <_HX_SUPER__setParent public="1" set="method" line="148"> - - - - - <_HX_SUPER__onLoad public="1" set="method" line="148"> - - <_HX_SUPER__reload public="1" set="method" line="148"> - - - - - - <_HX_SUPER__onCall set="method" line="148"> - - - - - - - - - <_HX_SUPER__get public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__trace public="1" set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__setPublicMap public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__onDestroy public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.HScript - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.ModState - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.ModSubState - - - - - - - - - - - - - - - - - - - - <__variables> - - - null - * Return value of the last call. - - - - true - * Whenever the current call has ended. - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__call public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.MultiThreadedScript - - - - - - - [] - - - - - - - [] - - - - - - - [] - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Sends an event to every single script, and returns the event. - * @param func Function to call - * @param event Event (will be the first parameter of the function) - * @return (modified by scripts) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__configureNewScript set="method" line="115"> - - - - - - - - - - hscript.ClassExtendMacro.build() - CancellableEvent - - - - - - <_HX_SUPER__load public="1" set="method" line="148"> - - - - - <_HX_SUPER__contains public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getByPath public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__getByName public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__importScript public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__call public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__get public="1" set="method" line="148"> - - - - - <_HX_SUPER__reload public="1" set="method" line="148"> - - - - - - <_HX_SUPER__set public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__setParent public="1" set="method" line="148"> - - - - - <_HX_SUPER__onDestroy public="1" set="method" line="148"> - - - - - <_HX_SUPER__onCreate public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__add public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__remove public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__insert public="1" set="method" line="148"> - - - - - <__configureNewScript set="method" line="74" override="1"> - - - - <_HX_SUPER____configureNewScript set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.ScriptPack - - - - - - - * Loads the script - - <_HX_SUPER__load public="1" set="method" line="148"> - - - - - - - - - * HSCRIPT ONLY FOR NOW - * Sets the "public" variables map for ScriptPack - - <_HX_SUPER__setPublicMap public="1" set="method" line="148"> - - - - - - - - - * Hot-reloads the script, if possible - - <_HX_SUPER__reload public="1" set="method" line="148"> - - - - - - * Traces something as this script. - - <_HX_SUPER__trace public="1" set="method" line="148"> - - - - - - - - - - * Calls the function `func` defined in the script. - * @param func Name of the function - * @param parameters (Optional) Parameters of the function. - * @return Result (if void, then null) - - <_HX_SUPER__call public="1" set="method" line="148"> - - - - - - - - - - * Sets a script's parent object so that its properties can be accessed easily. Ex: Passing `PlayState.instance` will allow `boyfriend` to be typed instead of `PlayState.instance.boyfriend`. - * @param variable Parent variable. - - <_HX_SUPER__setParent public="1" set="method" line="148"> - - - - - - - - - * Gets the variable `variable` from the script's variables. - * @param variable Name of the variable. - * @return Variable (or null if it doesn't exists) - - <_HX_SUPER__get public="1" set="method" line="148"> - - - - - - - - - - * Gets the variable `variable` from the script's variables. - * @param variable Name of the variable. - * @return Variable (or null if it doesn't exists) - - <_HX_SUPER__set public="1" set="method" line="30"> - - - - - - - - - - - * Shows an error from this script. - * @param text Text of the error (ex: Null Object Reference). - * @param additionalInfo Additional information you could provide. - - <_HX_SUPER__error public="1" set="method" line="30"> - - - - - - - - - - - * PRIVATE HANDLERS - DO NOT TOUCH - - <_HX_SUPER__onCall set="method" line="148"> - - - - - - - - - <_HX_SUPER__onCreate public="1" set="method" line="148"> - - - - - <_HX_SUPER__onLoad public="1" set="method" line="148"> - - <_HX_SUPER__onDestroy public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.scripting.Script - - - - - - - - false - hide - - - <__continueCalls expr="true"> - - - true - hide - - - - - { } - * Additional data if used in scripts - - - - - - - { c : false } - * Prevents default action from occurring. - * @param c Whenever the scripts following this one should be called or not. (Defaults to `true`) - - - - - - - - { c : true } - hide - - - - - - * Returns a string representation of the event, in this format: - * `[CancellableEvent]` - * `[CancellableEvent (Cancelled)]` - * @return String - - - - - * Creates a new cancellable event. - * This allows scripts to call `cancel()` to cancel the event. - - - - hscript.ClassExtendMacro.build() - ScriptPack - funkin.macros.EventMacro.build() - - - - - - - - * Final camera position. - - - - * Currently focused strumline. - - - - * Number of focused characters - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * At which count the countdown is. Normally goes 0-1-2-3-4 unless `PlayState.instance.introLength` is changed. - - - - * Volume at which the intro countdown sound will play. - - - - * Path of the intro sound that'll be played. - - - - * Path to the sprite path that'll be shown. - - - - * Scale of the sprite. - - - - * Whenever antialiasing is enabled or not. - - - - * Created sprite, only available in `onPostCountdown` - - - - * Created tween for the sprite, only available in `onPostCountdown` - - - - * Created sound, only available in `onPostCountdown` - - - - - - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - Default animation that will be played - - - - In which direction the animation will be played - - - - The suffix of the animation (ex: "-alt") - Defaults to "" - - - - Context of the animation. Is either equal to `SING` or `MISS`. - - - - Whenever the animation will play reversed or not. - - - - At what frame the animation will start playing - - - - true - Whenever the animation will play reversed or not. - - - - - - - - - - - - - { force : true } - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Object containing all of the data for the presence. Can be altered. - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Song name that is about to be played - - - - * Difficulty name - - - - * Whenever opponent mode is enabled or not. - - - - * Whenever coop mode is enabled. - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Array containing whenever a specific control is pressed or not. - * For example, `pressed[0]` will return whenever the left strum was pressed. - - - - * Array containing whenever a specific control was pressed (not hold) this frame or not. - * For example, `justPressed[0]` will return whenever the left strum was just pressed. - - - - * Array containing whenever a specific control was released this frame or not. - * For example, `justReleased[0]` will return whenever the left strum was just released. - - - - * Strumline which input is being processed. - - - - * ID of the Strumline. - - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Value before the change - - - - * Value after the change - - - - * Amount of change - - - - true - * Whenever the menu SFX should be played. - - - - - - - - - - { playMenuSFX : true } - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Name - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Note that is being created - - - - * ID of the strum (from 0 to 3) - - - - * Note Type (ex: "My Super Cool Note", or "Mine") - - - - * ID of the note type. - - - - * ID of the player. - - - - * Whenever the note will need to be hit by the player - - - - * Note sprite, if you only want to replace the sprite. - - - - * Note scale, if you only want to replace the scale. - - - - * Sing animation suffix. "-alt" for alt anim or "" for normal notes. - - - - - - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - - false - hide - - - - - - false - hide - - - - - - true - hide - - - - - - true - hide - - - - - - true - hide - - - - - - true - hide - - - - - true - * Whenever a miss should be added. - - - - true - * Whenever a miss should be added. - - - - null - * Whenever ratings should be shown or not. - - - - * Note that has been pressed - - - - * Character that pressed the note. - - - - * Characters that pressed the note. - - - - * Whenever the Character is a player - - - - * Note Type name (null if default note) - - - - * Suffix of the animation. "-alt" for alt notes, "" for normal ones. - - - - * Prefix of the rating sprite path. Defaults to "game/score/" - - - - * Suffix of the rating sprite path. - - - - * Direction of the press (0 = Left, 1 = Down, 2 = Up, 3 = Right) - - - - * Score gained after note press. - - - - * Accuracy gained from pressing this note. From 0 to 1. null means no accuracy is gained. - - - - * The amount of health that'll be gained from pressing that note. If called from `onPlayerMiss`, the value will be negative. - - - - "sick" - * Rating name. Defaults to "sick", "good", "bad" and "shit". Customisable. - - - - false - * Whenever a splash should be shown when the note is hit. - - - - 0.5 - * Scale of combo numbers. - - - - true - * Whenever antialiasing should be enabled on combo number. - - - - 0.7 - * Scale of ratings. - - - - true - * Whenever antialiasing should be enabled on ratings. - - - - true - * Whenever the animation should be forced to play. - - - - * Prevents the default sing animation from being played. - - - - hide - - - - * Prevents the note from being deleted. - - - - hide - - - - * Prevents the vocals volume from being set to 1 after pressing the note. - - - - hide - - - - * Prevents the vocals volume from being muted in case its a parameter of `onPlayerMiss` - - - - hide - - - - * Prevents the camera zoom every 4 beats from enabling. - - - - hide - - - - * Prevents the sustain tail (the last one) from being automatically hit when the sustain before it is hit. - - - - hide - - - - * Prevents the strum from glowing after this note has been pressed. - - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { forceAnim : true, ratingAntialiasing : true, ratingScale : 0.7, numAntialiasing : true, numScale : 0.5, showSplash : false, rating : "sick", showRating : null, countAsCombo : true, misses : true } - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - <__updateHitWindow public="1" expr="true"> - - - true - hide - - - <__autoCPUHit public="1" expr="true"> - - - true - hide - - - <__reposNote public="1" expr="true"> - - - true - hide - - - - - * Note that is being updated - - - - * Time elapsed since last frame - - - - * Note's strum (can be changed) - - - - * Cancels the hit window update. - - - - hide - - - - * Cancels the automatic CPU hit. - - - - hide - - - - * Cancels the note position update (note will freeze). - - - - hide - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Music that is going to be played - - - - * All option names - - - - - - - - * CANCEL this event to prevent default behaviour! - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - Name of the animation that's going to be played. - - - - Whenever the animation will be forced or not. - - - - Whenever the animation will play in reverse or not - - - - 0 - The frame at which the animation will start playing - - - - Context of the animation - - - - - - - - - - - { startingFrame : 0 } - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - Contains all contexts possible for `PlayAnimEvent`. - - hscript.ClassExtendMacro.build() - - - - - - - cast null - - - - No context was given for the animation. - The character won't dance until the animation is finished - - - - - cast "SING" - - - - Whenever a note is hit and a sing animation will be played. - The character will only dance after their holdTime is reached. - - - - - cast "DANCE" - - - - Whenever a dance animation is played. - The character's dancing wont be blocked. - - - - - cast "MISS" - - - - Whenever a note is missed and a miss animation will be played. - Only for scripting, since it has the same effects as SING. - - - - - cast "LOCK" - - - - Locks the character's animation. - Prevents the character from dancing, even if the animation ended. - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast null - - - - No context was given for the animation. - The character won't dance until the animation is finished - - - - - cast "SING" - - - - Whenever a note is hit and a sing animation will be played. - The character will only dance after their holdTime is reached. - - - - - cast "DANCE" - - - - Whenever a dance animation is played. - The character's dancing wont be blocked. - - - - - cast "MISS" - - - - Whenever a note is missed and a miss animation will be played. - Only for scripting, since it has the same effects as SING. - - - - - cast "LOCK" - - - - Locks the character's animation. - Prevents the character from dancing, even if the animation ended. - - - hscript.ClassExtendMacro.build() - - - - - - - - X position - - - - Y position - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - New combo - - - - Old combo (may be null) - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * New width - - - - * New height - - - - * Old width (may be null) - - - - * Old height (may be null) - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - Note that is affected. - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Substate that is about to be opened/closed - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - <__doAnimation public="1" expr="true"> - - - true - hide - - - - - * The strum that is being created - - - - s - * Player ID - - - - * Strum ID, for the sprite. - - - - "game/notes/default" - * Sprite path, in case you only want to change the sprite. - - - - * Cancels the animation that makes the strum "land" in the strumline. - - - - hide - - - - - - - - - - { sprite : "game/notes/default" } - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - - * Week that is going to be selected - - - - * The difficulty that has been selected - - - - * At which emplacement the week is. Goes from 0 to the number of weeks - 1. - - - - * At which emplacement the difficulty is. Goes from 0 to the number of weeks - 1. - - - - - - - - - - - - funkin.macros.EventMacro.build() - funkin.macros.EventMacro.build() - hscript.ClassExtendMacro.build() - - - - - - <__instanceFields expr="Type.getInstanceFields(FunkinShader)" line="26" static="1"> - - Type.getInstanceFields(FunkinShader) - - - - "120" - - - - - - - - - - - - - - - - <__initGL set="method" line="70" override="1"> - - - - <__processGLData set="method" line="184" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - { glslVer : "120" } - * Creates a new shader from the specified fragment and vertex source. - * Accepts `#pragma header`. - * @param frag Fragment source (pass `null` to use default) - * @param vert Vertex source (pass `null` to use default) - * @param glslVer Version of GLSL to use (defaults to 120) - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.ClassExtendMacro.build() - openfl.display3D.Context3D - openfl.display3D.Program3D - openfl.display.ShaderInput - openfl.display.ShaderParameter - - - - - - - - - - - { glslVersion : "120" } - * Creates a new custom shader - * @param name Name of the frag and vert files. - * @param glslVersion GLSL version to use. Defaults to `120`. - - * Class for custom shaders. - * - * To create one, create a `shaders` folder in your assets/mod folder, then add a file named `my-shader.frag` or/and `my-shader.vert`. - * - * Non-existent shaders will only load the default one, and throw a warning in the console. - * - * To access the shader's uniform variables, use `shader.variable` - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.ClassExtendMacro.build() - hide - funkin.shaders.CustomShader - - - - - - 0.0)\r\n\t{\r\n\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t}\r\n\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n}\r\n\r\nuniform vec4 _camSize;\r\n\r\nfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\treturn min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n}\r\n\r\nvec2 getCamPos(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n}\r\nvec2 camToOg(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n}\r\nvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n}"]]> - - - - 0.0) {\r\n\r\n\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\r\n\t} else {\r\n\r\n\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n\t}\r\n\r\n} else {\r\n\r\n\tgl_FragColor = color * openfl_Alphav;\r\n\r\n}"]]> - - - - "attribute float openfl_Alpha;\r\nattribute vec4 openfl_ColorMultiplier;\r\nattribute vec4 openfl_ColorOffset;\r\nattribute vec4 openfl_Position;\r\nattribute vec2 openfl_TextureCoord;\r\n\r\nvarying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform mat4 openfl_Matrix;\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;" - - - - "openfl_Alphav = openfl_Alpha;\r\nopenfl_TextureCoordv = openfl_TextureCoord;\r\n\r\nif (openfl_HasColorTransform) {\r\n\r\n\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\r\n\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\r\n\r\n}\r\n\r\ngl_Position = openfl_Matrix * openfl_Position;" - - - - "#pragma header\r\n\r\nattribute float alpha;\r\nattribute vec4 colorMultiplier;\r\nattribute vec4 colorOffset;\r\nuniform bool hasColorTransform;\r\n\r\nvoid main(void)\r\n{\r\n\t#pragma body\r\n\r\n\topenfl_Alphav = openfl_Alpha * alpha;\r\n\r\n\tif (hasColorTransform)\r\n\t{\r\n\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t}\r\n}" - - - - "#pragma header\r\n\r\nvoid main(void)\r\n{\r\n\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n}" - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.shaders.FunkinShader - funkin.shaders.FunkinShader.ShaderTemplates - funkin.shaders.FunkinShader.ShaderTypeException - - - - - - - - - - - - <_HX_SUPER__set_glFragmentSource set="method" line="148"> - - - - - - - - - - - <_HX_SUPER__set_glVertexSource set="method" line="148"> - - - - <__initGL set="method" line="110" override="1"> - - - - <_HX_SUPER____initGL set="method" line="30"> - <__processGLData set="method" line="110" override="1"> - - - - - - - - <_HX_SUPER____processGLData set="method" line="30"> - - - - - - - - - <_HX_SUPER__hget public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__hset public="1" set="method" line="148"> - - - - - <__interp> - - - - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - hscript.ClassExtendMacro.build() - hide - funkin.shaders.FunkinShader - funkin.shaders.FunkinShader.ShaderTemplates - funkin.shaders.FunkinShader.ShaderTypeException - - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.shaders.FunkinShader - funkin.shaders.FunkinShader.ShaderTemplates - funkin.shaders.FunkinShader.ShaderTypeException - - - - - - - [] - - <__defaultLibraries expr="[]"> - - - [] - funkin.system.Main - funkin.system.MainState - - - - - - - - - - - - - - - { source : BOTH } - - - - - - - - - - - - - { source : BOTH } - - - - - - - - - - - - { source : BOTH } - - - - - - - - { source : BOTH } - - - - - - - - - { source : BOTH } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast true - - - - - - - - cast false - - - - - - - - cast null - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast true - - - - - - - - cast false - - - - - - - - cast null - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__removeLibrary public="1" set="method" line="148"> - - - - - - - - - - - { source : BOTH } - - <_HX_SUPER__existsSpecific public="1" set="method" line="148"> - - - - - - - { source : BOTH } - - - - - - - - { source : BOTH } - - <_HX_SUPER__getSpecificPath public="1" set="method" line="148"> - - - - - - { source : BOTH } - - - - - - - - { source : BOTH } - - <_HX_SUPER__getFiles public="1" set="method" line="148"> - - - - - - { source : BOTH } - - - - - - - - { source : BOTH } - - <_HX_SUPER__getFolders public="1" set="method" line="148"> - - - - - - { source : BOTH } - - - - - - - - - { source : BOTH } - - <_HX_SUPER__getSpecificAsset public="1" set="method" line="148"> - - - - - - - { source : BOTH } - - - - - - - <_HX_SUPER__shouldSkipLib set="method" line="148"> - - - - - - - - - - <_HX_SUPER__isLocal public="1" set="method" line="148"> - - - - - - <_HX_SUPER__unloadLibraries public="1" set="method" line="148"> - - <_HX_SUPER__reset public="1" set="method" line="148"> - - - - - <_HX_SUPER__addLibrary public="1" set="method" line="148"> - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.AssetsLibraryList - funkin.system.AssetsLibraryList.AssetSource - funkin.system.AssetsLibraryList.AssetSource - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.system.CommandLineHandler - - - - - - - - - * ... - * @author - hscript.ClassExtendMacro.build() - - - - - - - - new FlxTypedSignal() - * FlxSignals - - - - - - - new FlxTypedSignal() - - - - - - - new FlxTypedSignal() - - - - 100 - * Current BPM - - - - ((60 / bpm) * 1000) - * Current Crochet (time per beat), in milliseconds. - - - - crochet / 4 - * Current StepCrochet (time per step), in milliseconds. - - - - 4 - * Number of beats per mesure (top number in time signature). Defaults to 4. - - - - 4 - * Number of steps per beat (bottom number in time signature). Defaults to 4. - - - - * Current position of the song, in milliseconds. - - - - 0 - * Current step - - - - 0 - * Current beat - - - - 0 - * Current measure - - - - 0 - * Current step, as a `Float` (ex: 4.94, instead of 4) - - - - 0 - * Current beat, as a `Float` (ex: 1.24, instead of 1) - - - - 0 - * Current measure, as a `Float` (ex: 1.24, instead of 1) - - - - - 0 - hide - - - - - - 0 - hide - - - - - [] - * Array of all BPM changes that have been mapped. - - - - - - - - - - - - * Maps BPM changes from a song. - * @param song Song to map BPM changes from. - - - - <__updateSongPos set="method" line="153" static="1"> - - - - - - - - <__lastChange static="1"> - <__updateBeat static="1"> - <__updateMeasure static="1"> - - - - - - - - - { stepsPerBeat : 4, beatsPerMesure : 4 } - - - - - - - - - - - - hide - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.system.Conductor.BPMChangeEvent - funkin.system.Conductor - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast "up" - - - - - - - - cast "left" - - - - - - - - cast "right" - - - - - - - - cast "down" - - - - - - - - cast "up-press" - - - - - - - - cast "left-press" - - - - - - - - cast "right-press" - - - - - - - - cast "down-press" - - - - - - - - cast "up-release" - - - - - - - - cast "left-release" - - - - - - - - cast "right-release" - - - - - - - - cast "down-release" - - - - - - - - cast "note-up" - - - - - - - - cast "note-left" - - - - - - - - cast "note-right" - - - - - - - - cast "note-down" - - - - - - - - cast "note-up-press" - - - - - - - - cast "note-left-press" - - - - - - - - cast "note-right-press" - - - - - - - - cast "note-down-press" - - - - - - - - cast "note-up-release" - - - - - - - - cast "note-left-release" - - - - - - - - cast "note-right-release" - - - - - - - - cast "note-down-release" - - - - - - - - cast "accept" - - - - - - - - cast "back" - - - - - - - - cast "pause" - - - - - - - - cast "reset" - - - - - - - - cast "cheat" - - - - - - - - cast "switchmod" - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast "up" - - - - - - - - cast "left" - - - - - - - - cast "right" - - - - - - - - cast "down" - - - - - - - - cast "up-press" - - - - - - - - cast "left-press" - - - - - - - - cast "right-press" - - - - - - - - cast "down-press" - - - - - - - - cast "up-release" - - - - - - - - cast "left-release" - - - - - - - - cast "right-release" - - - - - - - - cast "down-release" - - - - - - - - cast "note-up" - - - - - - - - cast "note-left" - - - - - - - - cast "note-right" - - - - - - - - cast "note-down" - - - - - - - - cast "note-up-press" - - - - - - - - cast "note-left-press" - - - - - - - - cast "note-right-press" - - - - - - - - cast "note-down-press" - - - - - - - - cast "note-up-release" - - - - - - - - cast "note-left-release" - - - - - - - - cast "note-right-release" - - - - - - - - cast "note-down-release" - - - - - - - - cast "accept" - - - - - - - - cast "back" - - - - - - - - cast "pause" - - - - - - - - cast "reset" - - - - - - - - cast "cheat" - - - - - - - - cast "switchmod" - - - - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - * Since, in many cases multiple actions should use similar keys, we don't want the - * rebinding UI to list every action. ActionBinders are what the user perceives as - * an input so, for instance, they can't set jump-press and jump-release to different keys. - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_up expr="new FlxActionDigital(Action.UP)"> - - new FlxActionDigital(Action.UP) - - <_left expr="new FlxActionDigital(Action.LEFT)"> - - new FlxActionDigital(Action.LEFT) - - <_right expr="new FlxActionDigital(Action.RIGHT)"> - - new FlxActionDigital(Action.RIGHT) - - <_down expr="new FlxActionDigital(Action.DOWN)"> - - new FlxActionDigital(Action.DOWN) - - <_upP expr="new FlxActionDigital(Action.UP_P)"> - - new FlxActionDigital(Action.UP_P) - - <_leftP expr="new FlxActionDigital(Action.LEFT_P)"> - - new FlxActionDigital(Action.LEFT_P) - - <_rightP expr="new FlxActionDigital(Action.RIGHT_P)"> - - new FlxActionDigital(Action.RIGHT_P) - - <_downP expr="new FlxActionDigital(Action.DOWN_P)"> - - new FlxActionDigital(Action.DOWN_P) - - <_upR expr="new FlxActionDigital(Action.UP_R)"> - - new FlxActionDigital(Action.UP_R) - - <_leftR expr="new FlxActionDigital(Action.LEFT_R)"> - - new FlxActionDigital(Action.LEFT_R) - - <_rightR expr="new FlxActionDigital(Action.RIGHT_R)"> - - new FlxActionDigital(Action.RIGHT_R) - - <_downR expr="new FlxActionDigital(Action.DOWN_R)"> - - new FlxActionDigital(Action.DOWN_R) - - <_noteUp expr="new FlxActionDigital(Action.NOTE_UP)"> - - new FlxActionDigital(Action.NOTE_UP) - - <_noteLeft expr="new FlxActionDigital(Action.NOTE_LEFT)"> - - new FlxActionDigital(Action.NOTE_LEFT) - - <_noteRight expr="new FlxActionDigital(Action.NOTE_RIGHT)"> - - new FlxActionDigital(Action.NOTE_RIGHT) - - <_noteDown expr="new FlxActionDigital(Action.NOTE_DOWN)"> - - new FlxActionDigital(Action.NOTE_DOWN) - - <_noteUpP expr="new FlxActionDigital(Action.NOTE_UP_P)"> - - new FlxActionDigital(Action.NOTE_UP_P) - - <_noteLeftP expr="new FlxActionDigital(Action.NOTE_LEFT_P)"> - - new FlxActionDigital(Action.NOTE_LEFT_P) - - <_noteRightP expr="new FlxActionDigital(Action.NOTE_RIGHT_P)"> - - new FlxActionDigital(Action.NOTE_RIGHT_P) - - <_noteDownP expr="new FlxActionDigital(Action.NOTE_DOWN_P)"> - - new FlxActionDigital(Action.NOTE_DOWN_P) - - <_noteUpR expr="new FlxActionDigital(Action.NOTE_UP_R)"> - - new FlxActionDigital(Action.NOTE_UP_R) - - <_noteLeftR expr="new FlxActionDigital(Action.NOTE_LEFT_R)"> - - new FlxActionDigital(Action.NOTE_LEFT_R) - - <_noteRightR expr="new FlxActionDigital(Action.NOTE_RIGHT_R)"> - - new FlxActionDigital(Action.NOTE_RIGHT_R) - - <_noteDownR expr="new FlxActionDigital(Action.NOTE_DOWN_R)"> - - new FlxActionDigital(Action.NOTE_DOWN_R) - - <_accept expr="new FlxActionDigital(Action.ACCEPT)"> - - new FlxActionDigital(Action.ACCEPT) - - <_back expr="new FlxActionDigital(Action.BACK)"> - - new FlxActionDigital(Action.BACK) - - <_pause expr="new FlxActionDigital(Action.PAUSE)"> - - new FlxActionDigital(Action.PAUSE) - - <_reset expr="new FlxActionDigital(Action.RESET)"> - - new FlxActionDigital(Action.RESET) - - <_cheat expr="new FlxActionDigital(Action.CHEAT)"> - - new FlxActionDigital(Action.CHEAT) - - <_switchMod expr="new FlxActionDigital(Action.SWITCHMOD)"> - - new FlxActionDigital(Action.SWITCHMOD) - - - - - - - [] - - - - [] - - - - KeyboardScheme.None - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Void)]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * Sets all actions that pertain to the binder to trigger when the supplied keys are used. - * If binder is a literal you can inline this - - - - - - - - * Sets all actions that pertain to the binder to trigger when the supplied keys are used. - * If binder is a literal you can inline this - - - - - - - - { reset : true } - - - - - - - - - - - - - - - - - - - - - - - - { deviceID : FlxInputDeviceID.ALL } - - - - - - - - - - - - - * Sets all actions that pertain to the binder to trigger when the supplied keys are used. - * If binder is a literal you can inline this - - - - - - - - - * Sets all actions that pertain to the binder to trigger when the supplied keys are used. - * If binder is a literal you can inline this - - - - - - - - - - - - - - - - - - { scheme : None } - - * A list of actions that a player would invoke via some input device. - * Uses FlxActions to funnel various inputs to a single action. - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - new FlxMatrix() - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - <_HX_SUPER__drawLimb set="method" line="148"> - - - - - - - - - - - - <_HX_SUPER__limbOnScreen set="method" line="148"> - - - - - - <__interp> - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.FlxAnimate - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__switchState public="1" set="method" line="148"> - - - - - <_HX_SUPER__onEnterFrame public="1" set="method" line="148"> - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__update public="1" set="method" line="148"> - <__interp> - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.FunkinGame - - - - - - - - null - - - - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__updateGameSize public="1" set="method" line="30"> - - - - - - <_HX_SUPER__resetSize public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.FunkinRatioScaleMode - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - { def : NONE } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - { def : NONE } - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__update public="1" set="method" line="148"> - - - - - - - - - - - { Key : null, Unique : false } - - <_HX_SUPER__loadSprite public="1" set="method" line="148"> - - - - - - - { Key : null, Unique : false } - - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__stepHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__measureHit public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__getScreenBounds public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__drawComplex public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__doAdditionalMatrixStuff public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__getScreenPosition public="1" set="method" line="148"> - - - - - - <_HX_SUPER__draw public="1" set="method" line="148"> - - <_HX_SUPER__copyAtlasValues public="1" set="method" line="148"> - - <_HX_SUPER__destroy public="1" set="method" line="148"> - <__doPreZoomScaleProcedure set="method" line="74" override="1"> - - - - <_HX_SUPER____doPreZoomScaleProcedure set="method" line="148"> - - - - <__doPostZoomScaleProcedure set="method" line="74" override="1"> - <_HX_SUPER____doPostZoomScaleProcedure set="method" line="148"> - - - - - - - - { y : 0, x : 0 } - - <_HX_SUPER__addOffset public="1" set="method" line="148"> - - - - - - - { y : 0, x : 0 } - - - - - - - <_HX_SUPER__switchOffset public="1" set="method" line="148"> - - - - - - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - <_HX_SUPER__playAnim public="1" set="method" line="30"> - - - - - - - - - { Frame : 0, Reversed : false, Context : NONE, Force : false } - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.FunkinSprite.XMLAnimType - funkin.system.FunkinSprite.XMLAnimType - funkin.system.FunkinSprite - - - - - - - [] - * Array containing all of the graphics cached by this sprite. - - - - [] - * Array containing all of the non rendered (not sent to GPU) cached graphics. - - - - - - - * Caches a graphic at specified path. - * @param path Path to the graphic. - - - - - * Dummy FlxSprite that allows you to cache FlxGraphics, and immediatly send them to GPU memory. - - - hscript.ClassExtendMacro.build() - - - - - - - - - - * Caches a graphic at specified path. - * @param path Path to the graphic. - - <_HX_SUPER__cache public="1" set="method" line="148"> - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - <_HX_SUPER__draw public="1" set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.system.GraphicCacheSprite - - - - <__showing expr="false" line="10" static="1"> - - false - - - - - - - - Log.trace - - - - - - - - - { level : INFO } - - - - - - - - { color : LIGHTGRAY } - - <__showInConsole public="1" set="method" line="79" static="1"> - - - - - - - - - - { level : INFO } - - - - - - - - - { color : LIGHTGRAY, level : INFO } - - - - hscript.ClassExtendMacro.build() - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.system.Logs - funkin.system.Logs.Level - funkin.system.Logs.Level - funkin.system.Logs.LogText - - - - - - - false - - - - false - - - - - - - * Simple state used for loading the game - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__create public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.MainState - - - - - - - - - <_HX_SUPER__init set="method" line="30"> - - - - - <_HX_SUPER__setupGame set="method" line="30"> - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.Main - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__beatHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__stepHit public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__measureHit public="1" set="method" line="148"> - - - - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.MusicBeatGroup - - - - - - <_HX_SUPER__loadScript set="method" line="148"> - - - - - <_HX_SUPER__tryUpdate public="1" set="method" line="30"> - - - - - <_HX_SUPER__create set="method" line="148"> - - <_HX_SUPER__createPost public="1" set="method" line="148"> - - - - - - - <_HX_SUPER__call public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - - - - hide - - <_HX_SUPER__stepHit public="1" set="method" line="30"> - - - - - - - - - hide - - <_HX_SUPER__beatHit public="1" set="method" line="30"> - - - - - - - - - hide - - <_HX_SUPER__measureHit public="1" set="method" line="30"> - - - - - - - - - - - - { fpsSensitive : false } - * Shortcut to `FlxMath.lerp` or `CoolUtil.lerp`, depending on `fpsSensitive` - * @param v1 Value 1 - * @param v2 Value 2 - * @param ratio Ratio - * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate. - - <_HX_SUPER__lerp public="1" set="method" line="148"> - - - - - - - - { fpsSensitive : false } - - - - - - - * SCRIPTING STUFF - - <_HX_SUPER__openSubState public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__onResize public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - <_HX_SUPER__draw public="1" set="method" line="148"> - - - - - <_HX_SUPER__switchTo public="1" set="method" line="148"> - - - - - <_HX_SUPER__onFocus public="1" set="method" line="148"> - - <_HX_SUPER__onFocusLost public="1" set="method" line="148"> - - <_HX_SUPER__resetSubState public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.MusicBeatState - - - - - - <_HX_SUPER__loadScript set="method" line="148"> - - - - - <_HX_SUPER__tryUpdate public="1" set="method" line="30"> - - - - - <_HX_SUPER__close set="method" line="148"> - - <_HX_SUPER__create set="method" line="148"> - - <_HX_SUPER__createPost public="1" set="method" line="148"> - - - - - - - <_HX_SUPER__call public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__update set="method" line="148"> - - - - - - - - - hide - - <_HX_SUPER__stepHit public="1" set="method" line="30"> - - - - - - - - - hide - - <_HX_SUPER__beatHit public="1" set="method" line="30"> - - - - - - - - - hide - - <_HX_SUPER__measureHit public="1" set="method" line="30"> - - - - - - - - - - - - { fpsSensitive : false } - * Shortcut to `FlxMath.lerp` or `CoolUtil.lerp`, depending on `fpsSensitive` - * @param v1 Value 1 - * @param v2 Value 2 - * @param ratio Ratio - * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate. - - <_HX_SUPER__lerp public="1" set="method" line="148"> - - - - - - - - { fpsSensitive : false } - - - - - - - * SCRIPTING STUFF - - <_HX_SUPER__openSubState public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__onResize public="1" set="method" line="148"> - - - - - - <_HX_SUPER__destroy public="1" set="method" line="148"> - - - - - <_HX_SUPER__switchTo public="1" set="method" line="148"> - - - - - <_HX_SUPER__onFocus public="1" set="method" line="148"> - - <_HX_SUPER__onFocusLost public="1" set="method" line="148"> - - <_HX_SUPER__onSubstateOpen public="1" set="method" line="148"> - - <_HX_SUPER__resetSubState public="1" set="method" line="148"> - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.system.MusicBeatSubstate - - - - - <__fromImage set="method" line="11" override="1"> - - - - - - "checkstyle:Dynamic" - - - - - - - "checkstyle:Dynamic" - hide - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.ClassExtendMacro.build() - - - - - <__fromImage set="method" line="110" override="1"> - - - - - - "checkstyle:Dynamic" - - - - <_HX_SUPER____fromImage set="method" line="30"> - - - - - - - "checkstyle:Dynamic" - hide - - - <_HX_SUPER__getSurface public="1" set="method" line="148"> - <__interp> - - - - - - - - - openfl.utils._internal.AssetsMacro.embedBitmap() - openfl.utils._internal.AssetsMacro.embedBitmap() - hscript.ClassExtendMacro.build() - hide - funkin.system.OptimizedBitmapData - - - - - - "ogg" - * Preferred sound extension for the game's audio files. - * Currently is set to `mp3` for web targets, and `ogg` for other targets. - - - - - - - - [] - - - - - - - - - - - { skipModsVerification : false } - - - - - - - - - - - - - { library : "default" } - - - - - - - - - - - - - - - - - - { type : TEXT } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { difficulty : "normal" } - - - - - - - - { difficulty : "normal" } - - - - - - - - - { checkForAtlas : false } - - - - - - - - - { difficulty : "normal" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { source : BOTH, addPath : false } - - - - - - - - - { source : BOTH, addPath : false } - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.system.Paths - - - - - <c path="openfl.text.TextField"/> - - - <_text expr=""""> - - "" - - <__enterFrame public="1" set="method" line="42" override="1"> - - - - - - - - - - { text : "" } - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="10" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.AssetTreeInfo - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.CodenameBuildField - - - - - <__enterFrame public="1" set="method" line="9" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.ConductorInfo - - - - - <__enterFrame public="1" set="method" line="8" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.FlixelInfo - - - - - - - - - - - - "${Sys.getEnv(\"windir\")}\\Fonts\\consola.ttf" - - - - false - - - - new FlxPoint() - - <__bitmap public="1" get="accessor" set="null" expr="null" line="32" static="1"> - - - null - - - - - - - - [] - - <__addCategory set="method" line="78"> - - - - <__lastAddedSprite expr="null"> - - null - - <__addToList set="method" line="83"> - - - - - - 0 - - <__enterFrame public="1" set="method" line="93" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.FramerateCategory - - - - - - - - - 0 - - <__enterFrame public="1" set="method" line="29" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.FramerateCounter - - - - - <__addCategory set="method" line="74" override="1"> - - - - <_HX_SUPER____addCategory set="method" line="148"> - - - - <__addToList set="method" line="74" override="1"> - - - - <_HX_SUPER____addToList set="method" line="148"> - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.Framerate - - - - - - - - - 0 - - - - 0 - - <__enterFrame public="1" set="method" line="32" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.MemoryCounter - - - - - - - "Unknown" - - - - "Unknown" - - - - "Unknown" - - - - "Unknown" - - - - "Unknown" - - - - "Unknown" - - - <__enterFrame public="1" set="method" line="52" override="1"> - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - - - - - <__enterFrame public="1" set="method" line="74" override="1"> - - - - <_HX_SUPER____enterFrame public="1" set="method" line="148"> - - - - <__interp> - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - hscript.ClassExtendMacro.build() - hide - funkin.system.framerate.SystemInfo - - - - - - - - - - - - * if youre stealing this keep this comment at least please lol - * - * hi gray itsa me yoshicrafter29 i fixed it hehe - - - hscript.ClassExtendMacro.build() - hide - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.system.modules.AudioSwitchFix - funkin.system.modules.AudioSwitchFix.PlayingSound - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.system.modules.CrashHandler - - - - - - - - - - - - - - - - - - - - - - - Whether caching is currently enabled. - - - - - - - { prefix : null } - Clears all cached assets, or all assets with an ID that - matches an optional prefix. - - For example: - - ```haxe - Assets.setBitmapData("image1", image1); - Assets.setBitmapData("assets/image2", image2); - - Assets.clear("assets"); // will clear image2 - Assets.clear("image"); // will clear image1 - ``` - - @param prefix A ID prefix - - - - - - - Retrieves a cached BitmapData. - - @param id The ID of the cached BitmapData - @return The cached BitmapData instance - - - - - - - Retrieves a cached Font. - - @param id The ID of the cached Font - @return The cached Font instance - - - - - - - Retrieves a cached Sound. - - @param id The ID of the cached Sound - @return The cached Sound instance - - - - - - - Checks whether a BitmapData asset is cached. - - @param id The ID of a BitmapData asset - @return Whether the object has been cached - - - - - - - Checks whether a Font asset is cached. - - @param id The ID of a Font asset - @return Whether the object has been cached - - - - - - - Checks whether a Sound asset is cached. - - @param id The ID of a Sound asset - @return Whether the object has been cached - - - - - - - Removes a BitmapData from the cache. - - @param id The ID of a BitmapData asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Font from the cache. - - @param id The ID of a Font asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Sound from the cache. - - @param id The ID of a Sound asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - - Adds or replaces a BitmapData asset in the cache. - - @param id The ID of a BitmapData asset - @param bitmapData The matching BitmapData instance - - - - - - - - Adds or replaces a Font asset in the cache. - - @param id The ID of a Font asset - @param bitmapData The matching Font instance - - - - - - - - Adds or replaces a Sound asset in the cache. - - @param id The ID of a Sound asset - @param bitmapData The matching Sound instance - - The IAssetCache interface provides methods for caching - resources loaded from openfl.utils.Assets to improve - performance. - - - - - - Whether caching is currently enabled. - - - - - - - - - hide - - Internal - - - - - - - - - hide - - Internal - - - - - - - - - hide - - Internal - - <__enabled expr="true"> - - - true - - - - - - - - - { prefix : null } - Clears all cached assets, or all assets with an ID that - matches an optional prefix. - - For example: - - ```haxe - Assets.setBitmapData("image1", image1); - Assets.setBitmapData("assets/image2", image2); - - Assets.clear("assets"); // will clear image2 - Assets.clear("image"); // will clear image1 - ``` - - @param prefix A ID prefix - - - - - - - Retrieves a cached BitmapData. - - @param id The ID of the cached BitmapData - @return The cached BitmapData instance - - - - - - - Retrieves a cached Font. - - @param id The ID of the cached Font - @return The cached Font instance - - - - - - - Retrieves a cached Sound. - - @param id The ID of the cached Sound - @return The cached Sound instance - - - - - - - Checks whether a BitmapData asset is cached. - - @param id The ID of a BitmapData asset - @return Whether the object has been cached - - - - - - - Checks whether a Font asset is cached. - - @param id The ID of a Font asset - @return Whether the object has been cached - - - - - - - Checks whether a Sound asset is cached. - - @param id The ID of a Sound asset - @return Whether the object has been cached - - - - - - - Removes a BitmapData from the cache. - - @param id The ID of a BitmapData asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Font from the cache. - - @param id The ID of a Font asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Sound from the cache. - - @param id The ID of a Sound asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - - Adds or replaces a BitmapData asset in the cache. - - @param id The ID of a BitmapData asset - @param bitmapData The matching BitmapData instance - - - - - - - - Adds or replaces a Font asset in the cache. - - @param id The ID of a Font asset - @param bitmapData The matching Font instance - - - - - - - - Adds or replaces a Sound asset in the cache. - - @param id The ID of a Sound asset - @param bitmapData The matching Sound instance - - - - - - - - - - - - - - - Creates a new AssetCache instance. - - The AssetCache class is the default cache implementation used - by openfl.utils.Assets, objects will be cached for the lifetime - of the application unless removed explicitly, or using Assets - `unloadLibrary` - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - hide - - Internal - - - - - - - - - hide - - Internal - - - - - - - - - hide - - Internal - - - - - - - - - Retrieves a cached BitmapData. - - @param id The ID of the cached BitmapData - @return The cached BitmapData instance - - - - - - - Retrieves a cached Font. - - @param id The ID of the cached Font - @return The cached Font instance - - - - - - - Retrieves a cached Sound. - - @param id The ID of the cached Sound - @return The cached Sound instance - - - - - - - Checks whether a BitmapData asset is cached. - - @param id The ID of a BitmapData asset - @return Whether the object has been cached - - - - - - - Checks whether a Font asset is cached. - - @param id The ID of a Font asset - @return Whether the object has been cached - - - - - - - Checks whether a Sound asset is cached. - - @param id The ID of a Sound asset - @return Whether the object has been cached - - - - - - - Removes a BitmapData from the cache. - - @param id The ID of a BitmapData asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Font from the cache. - - @param id The ID of a Font asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - - - Removes a Sound from the cache. - - @param id The ID of a Sound asset - @return `true` if the asset was removed, `false` if it was not in the cache - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__moveToSecondLayer public="1" set="method" line="148"> - - <_HX_SUPER__clearSecondLayer public="1" set="method" line="148"> - - - - - - Retrieves a cached BitmapData. - - @param id The ID of the cached BitmapData - @return The cached BitmapData instance - - <_HX_SUPER__getBitmapData public="1" set="method" line="148"> - - - - - - - - - Retrieves a cached Font. - - @param id The ID of the cached Font - @return The cached Font instance - - <_HX_SUPER__getFont public="1" set="method" line="148"> - - - - - - - - - Retrieves a cached Sound. - - @param id The ID of the cached Sound - @return The cached Sound instance - - <_HX_SUPER__getSound public="1" set="method" line="148"> - - - - - - - - - Checks whether a BitmapData asset is cached. - - @param id The ID of a BitmapData asset - @return Whether the object has been cached - - <_HX_SUPER__hasBitmapData public="1" set="method" line="148"> - - - - - - - - - Checks whether a Font asset is cached. - - @param id The ID of a Font asset - @return Whether the object has been cached - - <_HX_SUPER__hasFont public="1" set="method" line="148"> - - - - - - - - - Checks whether a Sound asset is cached. - - @param id The ID of a Sound asset - @return Whether the object has been cached - - <_HX_SUPER__hasSound public="1" set="method" line="148"> - - - - - - - - - Removes a BitmapData from the cache. - - @param id The ID of a BitmapData asset - @return `true` if the asset was removed, `false` if it was not in the cache - - <_HX_SUPER__removeBitmapData public="1" set="method" line="148"> - - - - - - - - - Removes a Font from the cache. - - @param id The ID of a Font asset - @return `true` if the asset was removed, `false` if it was not in the cache - - <_HX_SUPER__removeFont public="1" set="method" line="148"> - - - - - - - - - Removes a Sound from the cache. - - @param id The ID of a Sound asset - @return `true` if the asset was removed, `false` if it was not in the cache - - <_HX_SUPER__removeSound public="1" set="method" line="148"> - - - - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.system.modules.FunkinCache - - - - - - - 0.05 - - - - false - - - - 0 - - - - false - - - - "" - - <_finalText expr=""""> - - "" - - <_curText expr=""""> - - "" - - - - FlxG.width - - - - 1 - - - - - false - - - - [] - - - - false - - - - - - - - - - - - - - "gf" - - - - - - - - - - - - - - - - { typed : false, bold : false, text : "" } - - * Loosely based on FlxTypeText lolol - - - hscript.ClassExtendMacro.build() - - - - - <__alphaPath public="1" expr="null" line="216" static="1"> - - - null - hide - - - - - - - - - - - [] - - - - - - - [] - - - - 0 - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - <_HX_SUPER__set_color set="method" line="148"> - - - - - - - - <_HX_SUPER__refreshAlphabetXML public="1" set="method" line="148"> - - - - - <_HX_SUPER__addText public="1" set="method" line="148"> - - <_HX_SUPER__doSplitWords set="method" line="30"> - - <_HX_SUPER__startTypedText public="1" set="method" line="30"> - - - - - <_HX_SUPER__update set="method" line="148"> - - - - <__interp> - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.ui.Alphabet - funkin.ui.Alphabet.AlphaCharacter - - - - - - - - - - <_HX_SUPER__setColor public="1" set="method" line="148"> - - - - - - - - - <_HX_SUPER__createBold public="1" set="method" line="148"> - - - - - - - - <_HX_SUPER__createLetter public="1" set="method" line="30"> - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.ui.Alphabet - funkin.ui.Alphabet.AlphaCharacter - - - - - <__interp> - - - - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.ui.FunkinText - - - - - - - - - * Returns the most present color in a Bitmap. - * @param bmap Bitmap - * @return FlxColor Color that is the most present. - - - - - - - * Returns the most present saturated color in a Bitmap. - * @param bmap Bitmap - * @return FlxColor Color that is the most present. - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.BitmapUtil - - - - - - - - - - - - - - - * Shortcut to parse JSON from an Asset path - * @param assetPath Path to the JSON asset. - - - - - - - * Shortcut to parse a JSON string - * @param str Path to the JSON string - * @return Parsed JSON - - - - - - - * Whenever a value is NaN or not. - * @param v Value - - - - - - - * Returns the last of an Array - * @param array Array - * @return T Last element - - - - - - - - - * Sets a field's default value, and returns it. In case it already exists, returns the existing one. - * @param v Dynamic to set the default value to - * @param name Name of the value - * @param defaultValue Default value - * @return T New/old value. - - - - - - - - * Add several zeros at the beginning of a string, so that `2` becomes `02`. - * @param str String to add zeros - * @param num The length required - - - - - - - * Returns a string representation of a size, following this format: `1.02 GB`, `134.00 MB` - * @param size Size to convert ot string - * @return String Result string representation - - - - - - - - - * Alternative linear interpolation function for each frame use, without worrying about framerate changes. - * @param v1 Begin value - * @param v2 End value - * @param ratio Ratio - * @return Float Final value - - - - - - - - - - { fpsSensitive : false } - * Lerps from color1 into color2 (Shortcut to `FlxColor.interpolate`) - * @param color1 Color 1 - * @param color2 Color 2 - * @param ratio Ratio - * @param fpsSensitive Whenever the ratio should be fps sensitive (adapted when game is running at 120 instead of 60) - - - - - - - * Modifies a lerp ratio based on current FPS to keep a stable speed on higher framerate. - * @param ratio Ratio - * @return FPS-Modified Ratio - - - - - - - * Tries to get a color from a `Dynamic` variable. - * @param c `Dynamic` color. - * @return The result color, or `null` if invalid. - - - - - - - { fadeIn : false } - * Plays the main menu theme. - * @param fadeIn - - - - - - - - * Preloads a character. - * @param name Character name - * @param spriteName (Optional) sprite name. - - - - - - - - - - - - { DefaultBPM : 102, Looped : true, Volume : 1, Persist : false } - * Plays music, while resetting the Conductor, and taking info from INI in count. - * @param path Path to the music - * @param Persist Whenever the music should persist while switching states - * @param DefaultBPM Default BPM of the music (102) - * @param Volume Volume of the music (1) - * @param Looped Whenever the music loops (true) - * @param Group A group that this music belongs to (default) - - - - - - - - { volume : 1, menuSFX : SCROLL } - * Plays a specified Menu SFX. - * @param menuSFX Menu SFX to play - * @param volume At which volume it should play - - - - - - - ]]> - - - - - - - - { min : 0 } - Final array]]> - - - - - - - - * Switches frames from 2 FlxAnimations. - * @param anim1 First animation - * @param anim2 Second animation - - - - - - - - - - - { maxScale : 0, fill : true } - * Allows you to set a graphic size (ex: 150x150), with proper hitbox without a stretched sprite. - * @param sprite Sprite to apply the new graphic size to - * @param width Width - * @param height Height - * @param fill Whenever the sprite should fill instead of shrinking (true) - * @param maxScale Maximum scale (0 / none) - - - - - - - * Returns a simple string representation of a FlxKey. Used in Controls options. - * @param key Key - * @return Simple representation - - - - - - - - - { axes : XY } - * Centers an object in a camera's field, basically `screenCenter()` but `camera.width` and `camera.height` are used instead of `FlxG.width` and `FlxG.height`. - * @param obj Sprite to center - * @param cam Camera - * @param axes Axes (XY) - - - - - - - - { difficulty : "normal" } - * Load a week into PlayState. - * @param weekData Week Data - * @param difficulty Week Difficulty - - - - - - - - - - { coopMode : false, opponentMode : false, difficulty : "normal" } - * Loads a song into PlayState - * @param name Song name - * @param difficulty Chart difficulty (if invalid, will load an empty chart) - * @param opponentMode Whenever opponent mode is on - * @param coopMode Whenever co-op mode is on. - - <__loadSong public="1" set="method" line="422" static="1"> - - - - - - * (INTERNAL) Loads a song without resetting story mode/opponent mode/coop mode values. - * @param name Song name - * @param difficulty Song difficulty - - - - - - - - - * Equivalent of `setGraphicSize`, except that it can accept floats and automatically updates the hitbox. - * @param sprite Sprite to set the size of - * @param width Width - * @param height Height - - - - - - - - * Gets an XML attribute from an `Access` abstract, without throwing an exception if invalid. - * Example: `xml.getAtt("test").getDefault("Hello, World!");` - * @param xml XML to get the attribute from - * @param name Name of the attribute - - - - - - - - - - { SkipAtlasCheck : false, Key : null, Unique : false } - * Loads frames from a specific image path. Supports Sparrow Atlases, Packer Atlases, and multiple spritesheets. - * @param path Path to the image - * @param Unique Whenever the image should be unique in the cache - * @param Key Key to the image in the cache - * @param SkipAtlasCheck Whenever the atlas check should be skipped. - * @return FlxFramesCollection Frames - - - - - - - - * Loads an animated graphic, and automatically animates it. - * @param spr Sprite to load the graphic for - * @param path Path to the graphic - - - - - - - - * Copies a color transform from color1 to color2 - * @param color1 Color transform to copy to - * @param color2 Color transform to copy from - - - - - - - - - * Resets an FlxSprite - * @param spr Sprite to reset - * @param x New X position - * @param y New Y position - - - - - - - * Gets the macro class created by hscript-improved for an abstract / enum - - - - - - - * Clears the content of an array - - - - - - - - ]]> - - - - - - - * Opens an URL in the browser. - * @param url - - - - - - - * Stops a sound, set its time to 0 then play it again. - * @param sound Sound to replay. - - - - - - - - Float -> Int conversion. - * @param p1 - * @param p2 - * @return return p1 < p2 ? p2 : p1]]> - - - - - - - Float -> Int conversion. - * @param e Value to get the floor of.]]> - - - - - - - - * Sets a SoundFrontEnd's music to a FlxSound. - * Example: `FlxG.sound.setMusic(music);` - * @param frontEnd SoundFrontEnd to set the music of - * @param music Music - - - - hscript.ClassExtendMacro.build() - funkin.game.PlayState - - - - - - * SFXs to play using `playMenuSFX`. - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.CoolUtil - funkin.utils.CoolUtil.CoolSfx - funkin.utils.CoolUtil.CoolSfx - - - - - - null - - - - null - - - - false - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.DiscordUtil - funkin.utils.DiscordUtil.DiscordJson - - - - - - - - - * Starts a new multithreaded script. - * This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict. - * @param path - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.EngineUtil - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - * Additional class for FlxColor lerping. - * Gets rid of precision issues with `FlxColor.interpolate` - - - hscript.ClassExtendMacro.build() - - - - - - - - - - <_HX_SUPER__lerpTo public="1" set="method" line="148"> - - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.FlxInterpolateColor - - - - - - - - - - - - - - - - - - - - - - - - - - * DOESNT SUPPORT CATEGORIES YET!! - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.IniUtil - - - - - - - - - - - - - - - - - - - - - { underline : false, italic : false, bold : false } - - - - - - - - - - - - - - - - - - - { emoteEnd : "\n" } - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.MarkdownUtil - - - - - - 0 - - - - - - - - - - - - <_nb expr="0" line="144" static="1"> - - 0 - - <_nbD expr="0" line="145" static="1"> - - 0 - - <_zombie static="1"> - - - - hscript.ClassExtendMacro.build() - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.MemoryUtil - - - - - - hide - - - - hide - - - - * Allocates a new console. The console will automatically be opened - - - - - - - * Sets the window titlebar to dark mode (Windows 10 only) - - - - - - - - - { icon : MSG_WARNING } - * Shows a message box - - - - - - - - { backgroundColor : BLACK, foregroundColor : LIGHTGRAY } - * Sets the console colors - - - - - - * Class for Windows-only functions, such as transparent windows, message boxes, and more. - * Does not have any effect on other platforms. - - - hscript.ClassExtendMacro.build() - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - cast 0x00000010 - - - - - - - - cast 0x00000020 - - - - - - - - cast 0x00000030 - - - - - - - - cast 0x00000040 - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - cast 0x00000010 - - - - - - - - cast 0x00000020 - - - - - - - - cast 0x00000030 - - - - - - - - cast 0x00000040 - - - - - - hscript.ClassExtendMacro.build() - - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.NativeAPI - funkin.utils.NativeAPI.ConsoleColor - funkin.utils.NativeAPI.ConsoleColor - funkin.utils.NativeAPI.MessageBoxIcon - funkin.utils.NativeAPI.MessageBoxIcon - - - - - - - - - - * Applies a property XML node to an object. - * @param object Object to which the xml property will be applied - * @param property `property` node. - - - - - - - - - - { defaultAnimType : BEAT, parentFolder : "" } - * Creates a new sprite based on a XML node. - - - - - - - - - { loop : false, animType : NONE } - - - - - - - - - { loop : false } - * Adds an XML animation to `sprite`. - * @param sprite Destination sprite - * @param anim Animation (Must be a `anim` XML node) - - - - - - - - - - - * Class made to make XML parsing easier. - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.XMLUtil - funkin.utils.XMLUtil.AnimData - - - - - - [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"] - - - - - - - - - - * [Description] Uncompresses `zip` into the `destFolder` folder - * @param zip - * @param destFolder - - - - - - - - - - - - - - * [Description] Returns a `zip.Reader` instance from path. - * @param zipPath - * @return Reader - - - - - - - * [Description] Copy of haxe's Zip unzip function cause lime replaced it. - * @param f Zip entry - - - - - - - * [Description] Creates a ZIP file at the specified location and returns the Writer. - * @param path - * @return Writer - - - - - - - - - - - [Description] Writes the entirety of a folder to a zip file. - @param zip ZIP file to write to - @param path Folder path - @param prefix (Additional) allows you to set a prefix in the zip itself. - - - - - - - - - - - - - ` to a `List`. - * @param array - * @return List]]> - - - - hscript.ClassExtendMacro.build() - - - - - - null - - - - 0 - - - - 0 - - - - false - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - 46 - The next constant is required for computing the Central - Directory Record(CDR) size. CDR consists of some fields - of constant size and a filename. Constant represents - total length of all fields with constant size for each - file in archive - - - - 30 - The following constant is the total size of all fields - of Local File Header. It's required for calculating - offset of start of central directory record - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - - - - - - <_HX_SUPER__flush public="1" set="method" line="148"> - - - - - <_HX_SUPER__writeFile public="1" set="method" line="148"> - - - - - <_HX_SUPER__close public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.ZipUtil - funkin.utils.ZipUtil.ZipProgress - funkin.utils.ZipUtil.ZipReader - funkin.utils.ZipUtil.ZipWriter - funkin.utils.ZipUtil.StrNameLabel - - - - - - <_HX_SUPER__read public="1" set="method" line="148"> - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.ZipUtil - funkin.utils.ZipUtil.ZipProgress - funkin.utils.ZipUtil.ZipReader - funkin.utils.ZipUtil.ZipWriter - funkin.utils.ZipUtil.StrNameLabel - - - - - - <_HX_SUPER__get_percentage set="method" line="148"> - <__interp> - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.ZipUtil - funkin.utils.ZipUtil.ZipProgress - funkin.utils.ZipUtil.ZipReader - funkin.utils.ZipUtil.ZipWriter - funkin.utils.ZipUtil.StrNameLabel - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.ZipUtil - funkin.utils.ZipUtil.ZipProgress - funkin.utils.ZipUtil.ZipReader - funkin.utils.ZipUtil.ZipWriter - funkin.utils.ZipUtil.StrNameLabel - - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.ZipUtil - funkin.utils.ZipUtil.ZipProgress - funkin.utils.ZipUtil.ZipReader - funkin.utils.ZipUtil.ZipWriter - funkin.utils.ZipUtil.StrNameLabel - - - - - - Endianness (word byte order) used when writing numbers. - - If `true`, big-endian is used, otherwise `little-endian` is used. - - - - - - - Write one byte. - - - - - - - - - - Write `len` bytes from `s` starting by position specified by `pos`. - - Returns the actual length of written data that can differ from `len`. - - See `writeFullBytes` that tries to write the exact amount of specified bytes. - - - - Flush any buffered data. - - - - Close the output. - - Behaviour while writing after calling this method is unspecified. - - - - - - - - - - - Write all bytes stored in `s`. - - - - - - - - - Write `len` bytes from `s` starting by position specified by `pos`. - - Unlike `writeBytes`, this method tries to write the exact `len` amount of bytes. - - - - - - - Write `x` as 32-bit floating point number. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 64-bit double-precision floating point number. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 8-bit signed integer. - - - - - - - Write `x` as 16-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 16-bit unsigned integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 24-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 24-bit unsigned integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - Write `x` as 32-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - Inform that we are about to write at least `nbytes` bytes. - - The underlying implementation can allocate proper working space depending - on this information, or simply ignore it. This is not a mandatory call - but a tip and is only used in some specific cases. - - - - - - - - Read all available data from `i` and write it. - - The `bufsize` optional argument specifies the size of chunks by - which data is read and written. Its default value is 4096. - - - - - - - - Write `s` string. - - An Output is an abstract write. A specific output implementation will only - have to override the `writeByte` and maybe the `write`, `flush` and `close` - methods. See `File.write` and `String.write` for two ways of creating an - Output. - - - -

      - - - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - -
      - - - - Endianness (word byte order) used when reading numbers. - - If `true`, big-endian is used, otherwise `little-endian` is used. - - - - Read and return one byte. - - - - - - - - - - Read `len` bytes and write them into `s` to the position specified by `pos`. - - Returns the actual length of read data that can be smaller than `len`. - - See `readFullBytes` that tries to read the exact amount of specified bytes. - - - - Close the input source. - - Behaviour while reading after calling this method is unspecified. - - - - - - - - - - - Read and return all available data. - - The `bufsize` optional argument specifies the size of chunks by - which data is read. Its default value is target-specific. - - - - - - - - - Read `len` bytes and write them into `s` to the position specified by `pos`. - - Unlike `readBytes`, this method tries to read the exact `len` amount of bytes. - - - - - - - Read and return `nbytes` bytes. - - - - - - - Read a string until a character code specified by `end` is occurred. - - The final character is not included in the resulting string. - - - - Read a line of text separated by CR and/or LF bytes. - - The CR/LF characters are not included in the resulting string. - - - - Read a 32-bit floating point number. - - Endianness is specified by the `bigEndian` property. - - - - Read a 64-bit double-precision floating point number. - - Endianness is specified by the `bigEndian` property. - - - - Read a 8-bit signed integer. - - - - Read a 16-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - Read a 16-bit unsigned integer. - - Endianness is specified by the `bigEndian` property. - - - - Read a 24-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - Read a 24-bit unsigned integer. - - Endianness is specified by the `bigEndian` property. - - - - Read a 32-bit signed integer. - - Endianness is specified by the `bigEndian` property. - - - - - - - - Read and `len` bytes as a string. - - An Input is an abstract reader. See other classes in the `haxe.io` package - for several possible implementations. - - All functions which read data throw `Eof` when the end of the stream - is reached. - - - -

      - - - - - - - - - - - - - - - - - hscript.ClassExtendMacro.build() - -
      - -

      - - - - - - - - - - { block : true } - - - - - - - - - - - - hscript.ClassExtendMacro.build() - -
      - - - - <_HX_SUPER__readByte public="1" set="method" line="148"> - - - - - - - <_HX_SUPER__readBytes public="1" set="method" line="148"> - - - - - - <__interp> - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.native.HiddenProcess.Stdin - funkin.utils.native.HiddenProcess.Stdout - funkin.utils.native.HiddenProcess - - - - - - <_HX_SUPER__close public="1" set="method" line="148"> - - - - - <_HX_SUPER__writeByte public="1" set="method" line="148"> - - - - - - - - - - <_HX_SUPER__writeBytes public="1" set="method" line="148"> - - - - - - <__interp> - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.native.HiddenProcess.Stdin - funkin.utils.native.HiddenProcess.Stdout - funkin.utils.native.HiddenProcess - - - - - - <_HX_SUPER__getPid public="1" set="method" line="148"> - - - - - - { block : true } - - <_HX_SUPER__exitCode public="1" set="method" line="148"> - - - - - { block : true } - - - <_HX_SUPER__close public="1" set="method" line="30"> - - <_HX_SUPER__kill public="1" set="method" line="30"> - <__interp> - - - - - - - - hscript.ClassExtendMacro.build() - hide - funkin.utils.native.HiddenProcess.Stdin - funkin.utils.native.HiddenProcess.Stdout - funkin.utils.native.HiddenProcess - - - - <__audioChangeCallback public="1" expr="function() { - trace("test"); -}" line="118" static="1"> - - function() { - trace("test"); -} - - - - "\r\n\tif (!curAudioFix) curAudioFix = new AudioFixClient();\r\n\t" - - - - - - - - - - - "\r\n\t// https://stackoverflow.com/questions/15543571/allocconsole-not-displaying-cout\r\n\r\n\tif (!AllocConsole())\r\n\t\treturn;\r\n\r\n\tfreopen(\"CONIN$\", \"r\", stdin);\r\n\tfreopen(\"CONOUT$\", \"w\", stdout);\r\n\tfreopen(\"CONOUT$\", \"w\", stderr);\r\n\t" - - - - - - - "\r\n\t\tHANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); \r\n\t\tSetConsoleTextAttribute(console, color);\r\n\t" - - - - - - - - - - - - - - { icon : MSG_WARNING } - "\r\n\t\tMessageBox(GetActiveWindow(), message, caption, icon | MB_SETFOREGROUND);\r\n\t" - - - - - "\r\n\t\tSetProcessDPIAware();\r\n\t" - - - - - - - - hscript.ClassExtendMacro.build() - \r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\r\n"]]> - \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n#include \r\n\r\n#define SAFE_RELEASE(punk) \\\r\n\t\t\t if ((punk) != NULL) \\\r\n\t\t\t\t{ (punk)->Release(); (punk) = NULL; }\r\n\r\nstatic long lastDefId = 0;\r\n\r\nclass AudioFixClient : public IMMNotificationClient {\r\n\tLONG _cRef;\r\n\tIMMDeviceEnumerator *_pEnumerator;\r\n\t\r\n\tpublic:\r\n\tAudioFixClient() :\r\n\t\t_cRef(1),\r\n\t\t_pEnumerator(NULL)\r\n\t{\r\n\t\tHRESULT result = CoCreateInstance(__uuidof(MMDeviceEnumerator),\r\n\t\t\t\t\t\t\t NULL, CLSCTX_INPROC_SERVER,\r\n\t\t\t\t\t\t\t __uuidof(IMMDeviceEnumerator),\r\n\t\t\t\t\t\t\t (void**)&_pEnumerator);\r\n\t\tif (result == S_OK) {\r\n\t\t\t_pEnumerator->RegisterEndpointNotificationCallback(this);\r\n\t\t}\r\n\t}\r\n\r\n\t~AudioFixClient()\r\n\t{\r\n\t\tSAFE_RELEASE(_pEnumerator);\r\n\t}\r\n\r\n\tULONG STDMETHODCALLTYPE AddRef()\r\n\t{\r\n\t\treturn InterlockedIncrement(&_cRef);\r\n\t}\r\n\r\n\tULONG STDMETHODCALLTYPE Release()\r\n\t{\r\n\t\tULONG ulRef = InterlockedDecrement(&_cRef);\r\n\t\tif (0 == ulRef)\r\n\t\t{\r\n\t\t\tdelete this;\r\n\t\t}\r\n\t\treturn ulRef;\r\n\t}\r\n\r\n\tHRESULT STDMETHODCALLTYPE QueryInterface(\r\n\t\t\t\t\t\t\t\tREFIID riid, VOID **ppvInterface)\r\n\t{\r\n\t\treturn S_OK;\r\n\t}\r\n\r\n\tHRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR pwstrDeviceId)\r\n\t{\r\n\t\treturn S_OK;\r\n\t};\r\n\r\n\tHRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR pwstrDeviceId)\r\n\t{\r\n\t\treturn S_OK;\r\n\t}\r\n\r\n\tHRESULT STDMETHODCALLTYPE OnDeviceStateChanged(\r\n\t\t\t\t\t\t\t\tLPCWSTR pwstrDeviceId,\r\n\t\t\t\t\t\t\t\tDWORD dwNewState)\r\n\t{\r\n\t\treturn S_OK;\r\n\t}\r\n\r\n\tHRESULT STDMETHODCALLTYPE OnPropertyValueChanged(\r\n\t\t\t\t\t\t\t\tLPCWSTR pwstrDeviceId,\r\n\t\t\t\t\t\t\t\tconst PROPERTYKEY key)\r\n\t{\r\n\t\treturn S_OK;\r\n\t}\r\n\r\n\tHRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(\r\n\t\tEDataFlow flow, ERole role,\r\n\t\tLPCWSTR pwstrDeviceId)\r\n\t{\r\n\t\t::funkin::_hx_system::Main_obj::audioDisconnected = true;\r\n\t\treturn S_OK;\r\n\t};\r\n};\r\n\r\nAudioFixClient *curAudioFix;\r\n"]]> - hide - - - - - <__interp> - - hscript.ClassExtendMacro.build() - hide - funkin.utils.native.Windows - - - - - - - - - - - - - - - - - Elements return by `CallStack` methods. - - - - - - Get information about the call stack. - - haxe.Exception - haxe.CallStack - - - - - The length of this stack. - - - - - - - - Return the call stack elements, or an empty array if not available. - - - - - - - { fullStack : false } - Return the exception stack : this is the stack elements between - the place the last exception was thrown and the place it was - caught, or an empty array if not available. - Set `fullStack` parameter to true in order to return the full exception stack. - - May not work if catch type was a derivative from `haxe.Exception`. - - - - - - - Returns a representation of the stack as a printable string. - - - - - - - - Returns a range of entries of current stack from the beginning to the the - common part of this and `stack`. - - - - - - - Make a copy of the stack. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - haxe.CallStack - haxe.Exception - - - - - - - The length of this stack. - - - - - - - - Return the call stack elements, or an empty array if not available. - - - - - - - { fullStack : false } - Return the exception stack : this is the stack elements between - the place the last exception was thrown and the place it was - caught, or an empty array if not available. - Set `fullStack` parameter to true in order to return the full exception stack. - - May not work if catch type was a derivative from `haxe.Exception`. - - - - - - - Returns a representation of the stack as a printable string. - - - - - - - - Returns a range of entries of current stack from the beginning to the the - common part of this and `stack`. - - - - - - - Make a copy of the stack. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - haxe.CallStack - haxe.Exception - - - - - This type unifies with any function type. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`. - - - - - - - This type unifies with an enum instance if all constructors of the enum - require no arguments. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`. - - - - - - This type unifies with anything but `Void`. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`. - - - - - - `, A must be explicitly constrained to - `Constructible` as well. - - It is intended to be used as a type parameter constraint. If used as a real - type, the underlying type will be `Dynamic`.]]> - - - - - - - - - - Returns the name of enum `e`, including its path. - - If `e` is inside a package, the package structure is returned dot- - separated, with another dot separating the enum name: - - pack1.pack2.(...).packN.EnumName - - If `e` is a sub-type of a Haxe module, that module is not part of the - package structure. - - If `e` has no package, the enum name is returned. - - If `e` is `null`, the result is unspecified. - - The enum name does not include any type parameters. - - - - - - - - - Creates an instance of enum `e` by calling its constructor `constr` with - arguments `params`. - - If `e` or `constr` is `null`, or if enum `e` has no constructor named - `constr`, or if the number of elements in `params` does not match the - expected number of constructor arguments, or if any argument has an - invalid type, the result is unspecified. - - - - - - - - - Creates an instance of enum `e` by calling its constructor number - `index` with arguments `params`. - - The constructor indices are preserved from Haxe syntax, so the first - declared is index 0, the next index 1 etc. - - If `e` or `index` is `null`, or if enum `e` has no constructor - corresponding to index `index`, or if the number of elements in `params` - does not match the expected number of constructor arguments, or if any - argument has an invalid type, the result is unspecified. - - - - - - - Returns a list of all constructors of enum `e` that require no - arguments. - - This may return the empty Array `[]` if all constructors of `e` require - arguments. - - Otherwise an instance of `e` constructed through each of its non- - argument constructors is returned, in the order of the constructor - declaration. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns a list of the names of all constructors of enum `e`. - - The order of the constructor names in the returned Array is preserved - from the original syntax. - - If `c` is `null`, the result is unspecified. - - This class provides advanced methods on enums. It is ideally used with - `using EnumTools` and then acts as an - [extension](https://haxe.org/manual/lf-static-extension.html) to the - `enum` types. - - If the first argument to any of the methods is `null`, the result is - unspecified. - - - - - - - - - Recursively compares two enum instances `a` and `b` by value. - - Unlike `a == b`, this function performs a deep equality check on the - arguments of the constructors (if there are any). - - If `a` or `b` are `null`, the result is unspecified. - - - - - - - Returns the constructor name of enum instance `e`. - - The result String does not contain any constructor arguments. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns a list of the constructor arguments of enum instance `e`. - - If `e` has no arguments, the result is `[]`. - - Otherwise the result are the values that were used as arguments to `e`, - in the order of their declaration. - - If `e` is `null`, the result is unspecified. - - - - - - - Returns the index of enum instance `e`. - - This corresponds to the original syntactic position of `e`. The index of - the first declared constructor is 0, the next one is 1 etc. - - If `e` is `null`, the result is unspecified. - - This class provides advanced methods on enum values. It is ideally used with - `using EnumValueTools` and then acts as an - [extension](https://haxe.org/manual/lf-static-extension.html) to the - `EnumValue` types. - - If the first argument to any of the methods is `null`, the result is - unspecified. - - - - - - - - - - Int32 provides a 32-bit integer with consistent overflow behavior across - all platforms. - - - - - - - - -A - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - A + B - - - - - - - - - A + B - - - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - - - - - - - - Compare `a` and `b` in unsigned mode. - - - - - - - - - - - - - - -A - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - A + B - - - - - - - - - A + B - - - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - - - - - - - - Compare `a` and `b` in unsigned mode. - - - - - - - - - - - - - - "_hx_int64_make" - - - - - - - " ::cpp::Int64Struct" - - - - - - - " ::cpp::Int64Struct::is" - - - - - - - "_hx_int64_is_neg" - - - - - - - "_hx_int64_is_zero" - - - - - - - - "_hx_int64_compare" - - - - - - - - "_hx_int64_ucompare" - - - - - - - "_hx_int64_to_string" - - - - - - - "_hx_int64_neg" - - - - - - - "_hx_int64_pre_increment" - - - - - - - "_hx_int64_post_increment" - - - - - - - "_hx_int64_pre_decrement" - - - - - - - "_hx_int64_post_decrement" - - - - - - - - "_hx_int64_add" - - - - - - - - "_hx_int64_add" - - - - - - - - "_hx_int64_sub" - - - - - - - - "_hx_int64_sub" - - - - - - - - "_hx_int64_sub" - - - - - - - - "_hx_int64_mul" - -
      - - - - - - "_hx_int64_div" -
      - - - - - - - "_hx_int64_mod" - - - - - - - - "_hx_int64_eq" - - - - - - - - "_hx_int64_eq" - - - - - - - - "_hx_int64_neq" - - - - - - - - "_hx_int64_neq" - - - - - - - "_hx_int64_complement" - - - - - - - - "_hx_int64_and" - - - - - - - - "_hx_int64_or" - - - - - - - - "_hx_int64_xor" - - - - - - - - "_hx_int64_shl" - - - - - - - - "_hx_int64_shr" - - - - - - - - "_hx_int64_ushr" - - - - - - - "_hx_int64_high" - - - - - - - "_hx_int64_low" - - - - - "cpp/Int64.h" - "cpp::Int64Struct" - -
      - - - - - - - - - - - - - - - - - - - Makes a copy of `this` Int64. - - - - - - - - Construct an Int64 from two 32-bit words `high` and `low`. - - - - - - - - Returns an Int64 with the value of the Int `x`. - `x` is sign-extended to fill 64 bits. - - - - - - - Returns an Int with the value of the Int64 `x`. - Throws an exception if `x` cannot be represented in 32 bits. - - - - - - - "haxe.Int64.is() is deprecated. Use haxe.Int64.isInt64() instead" - - - - - - - Returns whether the value `val` is of type `haxe.Int64` - - - - - - - "Use high instead" - Returns the high 32-bit word of `x`. - - - - - - - "Use low instead" - Returns the low 32-bit word of `x`. - - - - - - - Returns `true` if `x` is less than zero. - - - - - - - Returns `true` if `x` is exactly zero. - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - Returns a signed decimal `String` representation of `x`. - - - - - - - - - - - - - - - - - - - - - - - Performs signed integer divison of `dividend` by `divisor`. - Returns `{ quotient : Int64, modulus : Int64 }`. - - - - - - - -A - Returns the negative of `x`. - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - A + B - Returns the sum of `a` and `b`. - - - - - - - - - A + B - - - - - - - - - - A - B - Returns `a` minus `b`. - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - Returns the product of `a` and `b`. - - - - - - - - - A * B - - - -
      - - - - - - A / B - Returns the quotient of `a` divided by `b`. -
      - - - - - - - A / B - - - - - - - - A / B - - - - - - - - A % B - Returns the modulus of `a` divided by `b`. - - - - - - - - A % B - - - - - - - - A % B - - - - - - - - A == B - Returns `true` if `a` is equal to `b`. - - - - - - - - - A == B - - - - - - - - - - A != B - Returns `true` if `a` is not equal to `b`. - - - - - - - - - A != B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - ~A - - - - - - - - - Returns the bitwise AND of `a` and `b`. - - - - - - - - A | B - Returns the bitwise OR of `a` and `b`. - - - - - - - - A ^ B - Returns the bitwise XOR of `a` and `b`. - - - - - - - - - Returns `a` left-shifted by `b` bits. - - - - - - - - > B]]> - Returns `a` right-shifted by `b` bits in signed mode. - `a` is sign-extended. - - - - - - - - >> B]]> - Returns `a` right-shifted by `b` bits in unsigned mode. - `a` is padded with zeroes. - - - - - - - - - - - - - - - -
      -
      - - - - - - - Makes a copy of `this` Int64. - - - - - - - - Construct an Int64 from two 32-bit words `high` and `low`. - - - - - - - - Returns an Int64 with the value of the Int `x`. - `x` is sign-extended to fill 64 bits. - - - - - - - Returns an Int with the value of the Int64 `x`. - Throws an exception if `x` cannot be represented in 32 bits. - - - - - - - "haxe.Int64.is() is deprecated. Use haxe.Int64.isInt64() instead" - - - - - - - Returns whether the value `val` is of type `haxe.Int64` - - - - - - - "Use high instead" - Returns the high 32-bit word of `x`. - - - - - - - "Use low instead" - Returns the low 32-bit word of `x`. - - - - - - - Returns `true` if `x` is less than zero. - - - - - - - Returns `true` if `x` is exactly zero. - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - - b`, - or 0 if `a == b`.]]> - - - - - - - Returns a signed decimal `String` representation of `x`. - - - - - - - - - - - - - - - - - - - - - - - Performs signed integer divison of `dividend` by `divisor`. - Returns `{ quotient : Int64, modulus : Int64 }`. - - - - - - - -A - Returns the negative of `x`. - - - - - - - ++A - - - - - - - A++ - - - - - - - --A - - - - - - - A-- - - - - - - - - A + B - Returns the sum of `a` and `b`. - - - - - - - - - A + B - - - - - - - - - - A - B - Returns `a` minus `b`. - - - - - - - - A - B - - - - - - - - A - B - - - - - - - - A * B - Returns the product of `a` and `b`. - - - - - - - - - A * B - - - -
      - - - - - - A / B - Returns the quotient of `a` divided by `b`. -
      - - - - - - - A / B - - - - - - - - A / B - - - - - - - - A % B - Returns the modulus of `a` divided by `b`. - - - - - - - - A % B - - - - - - - - A % B - - - - - - - - A == B - Returns `true` if `a` is equal to `b`. - - - - - - - - - A == B - - - - - - - - - - A != B - Returns `true` if `a` is not equal to `b`. - - - - - - - - - A != B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - - = B]]> - - - - - - - ~A - - - - - - - - - Returns the bitwise AND of `a` and `b`. - - - - - - - - A | B - Returns the bitwise OR of `a` and `b`. - - - - - - - - A ^ B - Returns the bitwise XOR of `a` and `b`. - - - - - - - - - Returns `a` left-shifted by `b` bits. - - - - - - - - > B]]> - Returns `a` right-shifted by `b` bits in signed mode. - `a` is sign-extended. - - - - - - - - >> B]]> - Returns `a` right-shifted by `b` bits in unsigned mode. - `a` is padded with zeroes. - - - - - - - - - - - - - - - -
      - - - - - - - Create `Int64` from given string. - - - - - - - Create `Int64` from given float. - - Helper for parsing to `Int64` instances. - - - - - - - - - `. - - If given `text` is not valid JSON, an exception will be thrown. - - @see https://haxe.org/manual/std-Json-parsing.html]]> - - - - - - - - - - - - - Encodes the given `value` and returns the resulting JSON string. - - If `replacer` is given and is not null, it is used to retrieve the - actual object to be encoded. The `replacer` function takes two parameters, - the key and the value being encoded. Initial key value is an empty string. - - If `space` is given and is not null, the result will be pretty-printed. - Successive levels will be indented by this string. - - @see https://haxe.org/manual/std-Json-encoding.html - - Cross-platform JSON API: it will automatically use the optimized native API if available. - Use `-D haxeJSON` to force usage of the Haxe implementation even if a native API is found: - This will provide extra encoding features such as enums (replaced by their index) and StringMaps. - - @see https://haxe.org/manual/std-Json.html - - - - - - - - - "haxe.NativeStackTrace.exceptionStack" - - - - - - - - - - - - - - - - - - - - - - { skip : 0 } - - Do not use manually. - - - hide - - - - - - - - - - - - - - - `PosInfos` is a magic type which can be used to generate position information - into the output for debugging use. - - If a function has a final optional argument of this type, i.e. - `(..., ?pos:haxe.PosInfos)`, each call to that function which does not assign - a value to that argument has its position added as call argument. - - This can be used to track positions of calls in e.g. a unit testing - framework. - - - - - - Lists all available resource names. The resource name is the name part - of the `--resource file@name` command line parameter. - - - - - - - - Retrieves the resource identified by `name` as a `String`. - - If `name` does not match any resource name, `null` is returned. - - - - - - - - Retrieves the resource identified by `name` as an instance of - haxe.io.Bytes. - - If `name` does not match any resource name, `null` is returned. - - Resource can be used to access resources that were added through the - `--resource file@name` command line parameter. - - Depending on their type they can be obtained as `String` through - `getString(name)`, or as binary data through `getBytes(name)`. - - A list of all available resource names can be obtained from `listNames()`. - - - - - - - - - - - - } - - f(1, 2, 3); - - final array = [1, 2, 3]; - f(...array); - ``` - - Should be used as a type for the last argument of a method, indicating that - an arbitrary number of arguments of the given type can be passed to that method. - - Allows to use array access by index to get values of rest arguments. - If the index exceeds the amount of rest arguments passed, the result is unspecified.]]> - - - - - Amount of arguments passed as rest arguments - - - - - - - - - - - - Create rest arguments using contents of `array`. - - WARNING: - Depending on a target platform modifying `array` after using this method - may affect the created `Rest` instance. - Use `Rest.of(array.copy())` to avoid that. - - <_new get="inline" set="null" line="48" static="1"> - - - - - - - - - - - - - - - - - - - - - Creates an array containing all the values of rest arguments. - - - - - - - - - - - - - - - - Create a new rest arguments collection by appending `item` to this one. - - - - - - - - Create a new rest arguments collection by prepending this one with `item`. - - - - - - - - - - - - Amount of arguments passed as rest arguments - - - - - - - - - - - - Create rest arguments using contents of `array`. - - WARNING: - Depending on a target platform modifying `array` after using this method - may affect the created `Rest` instance. - Use `Rest.of(array.copy())` to avoid that. - - <_new get="inline" set="null" line="48" static="1"> - - - - - - - - - - - - - - - - - - - - - Creates an array containing all the values of rest arguments. - - - - - - - - - - - - - - - - Create a new rest arguments collection by appending `item` to this one. - - - - - - - - Create a new rest arguments collection by prepending this one with `item`. - - - - - - - - - - - false - If the values you are serializing can contain circular references or - objects repetitions, you should set `USE_CACHE` to true to prevent - infinite loops. - - This may also reduce the size of serialization Strings at the expense of - performance. - - This value can be changed for individual instances of `Serializer` by - setting their `useCache` field. - - - - false - Use constructor indexes for enums instead of names. - - This may reduce the size of serialization Strings, but makes them less - suited for long-term storage: If constructors are removed or added from - the enum, the indices may no longer match. - - This value can be changed for individual instances of `Serializer` by - setting their `useEnumIndex` field. - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:" - - - - null - - - - - - - Serializes `v` and returns the String representation. - - This is a convenience function for creating a new instance of - Serializer, serialize `v` into it and obtain the result through a call - to `toString()`. - - - - - - - - The individual cache setting for `this` Serializer instance. - - See `USE_CACHE` for a complete description. - - - - The individual enum index setting for `this` Serializer instance. - - See `USE_ENUM_INDEX` for a complete description. - - - - Return the String representation of `this` Serializer. - - The exact format specification can be found here: - https://haxe.org/manual/serialization/format - - - - - - - - - - - - - - - - - - - Serializes `v`. - - All haxe-defined values and objects with the exception of functions can - be serialized. Serialization of external/native objects is not - guaranteed to work. - - The values of `this.useCache` and `this.useEnumIndex` may affect - serialization output. - - - - - - - - Creates a new Serializer instance. - - Subsequent calls to `this.serialize` will append values to the - internal buffer of this String. Once complete, the contents can be - retrieved through a call to `this.toString`. - - Each `Serializer` instance maintains its own cache if `this.useCache` is - `true`. - - ]]> - - - - - - [] - - - - - - - - - - - - - - - - - - - <__check set="method" line="289"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - new DefaultResolver() - ` is called to determine a - `Class` from a class name - 2. `resolveEnum(name:String):Enum` is called to determine an - `Enum` from an enum name - - This value is applied when a new `Unserializer` instance is created. - Changing it afterwards has no effect on previously created instances.]]> - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:" - - - - null - - - - - - - - Unserializes `v` and returns the according value. - - This is a convenience function for creating a new instance of - Unserializer with `v` as buffer and calling its `unserialize()` method - once. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sets the type resolver of `this` Unserializer instance to `r`. - - If `r` is `null`, a special resolver is used which returns `null` for all - input values. - - See `DEFAULT_RESOLVER` for more information on type resolvers. - - - - Gets the type resolver of `this` Unserializer instance. - - See `DEFAULT_RESOLVER` for more information on type resolvers. - - - - - - - - - - - - - - - - - - - Unserializes the next part of `this` Unserializer instance and returns - the according value. - - This function may call `this.resolver.resolveClass` to determine a - Class from a String, and `this.resolver.resolveEnum` to determine an - Enum from a String. - - If `this` Unserializer instance contains no more or invalid data, an - exception is thrown. - - This operation may fail on structurally valid data if a type cannot be - resolved or if a field cannot be set. This can happen when unserializing - Strings that were serialized on a different Haxe target, in which the - serialization side has to make sure not to include platform-specific - data. - - Classes are created from `Type.createEmptyInstance`, which means their - constructors are not called. - - - - - - - Creates a new Unserializer instance, with its internal buffer - initialized to `buf`. - - This does not parse `buf` immediately. It is parsed only when calls to - `this.unserialize` are made. - - Each Unserializer instance maintains its own cache. - - ]]> - -
      - - - - - - - - - - - - - - - - - - - Thrown value. - - - - Extract an originally thrown value. - - This method must return the same value on subsequent calls. - Used internally for catching non-native exceptions. - Do _not_ override unless you know what you are doing. - - - - - - - - An exception containing arbitrary value. - - This class is automatically used for throwing values, which don't extend `haxe.Exception` - or native exception type. - For example: - ```haxe - throw "Terrible error"; - ``` - will be compiled to - ```haxe - throw new ValueException("Terrible error"); - ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - Calculates the Adler32 of the given Bytes. - - - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - - - - haxe.io.Bytes.ofString(CHARS) - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" - - - - haxe.io.Bytes.ofString(URL_CHARS) - - - - - - - - { complement : true } - - - - - - - - { complement : true } - - - - - - - - { complement : false } - - - - - - - - { complement : false } - - Allows one to encode/decode String and bytes using Base64 encoding. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Allows one to encode/decode String and bytes using a power of two base dictionary. - - - - - - - - - Calculates the CRC32 of the given data bytes - - - - - - - - - - - - - - - Calculates the Crc32 of the given Bytes. - - - - - - - Hash methods for Hmac calculation. - - - - - - - - - - - - - - - - - - - - - - - - - Calculates a Hmac of the given Bytes using a HashMethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a MD5 of a String. - - - - - - - - - - - - - - - - - Convert a string to a sequence of 16-word blocks, stored as an array. - Append padding bits and the length, as described in the SHA1 standard. - - - - - - - - - - - - - - - - Bitwise rotate a 32-bit number to the left - - - - - - - - - - Perform the appropriate triplet combination function for the current iteration - - - - - - - Determine the appropriate additive constant for the current iteration - - - - - - - Creates a Sha1 of a String. - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a Sha224 of a String. - - - - - - - - - - - - - - - - Convert a string to a sequence of 16-word blocks, stored as an array. - Append padding bits and the length, as described in the SHA1 standard. - - - - - - - - - - - - - - - - Creates a Sha256 of a String. - - - - - - - - ("display/completion")]]> - The completion request is sent from the client to Haxe to request code completion. - Haxe automatically determines the type of completion to use based on the passed position, see `CompletionResultKind`. - - - - - - - ("display/completionItem/resolve")]]> - The request is sent from the client to Haxe to resolve additional information for a given completion item. - - - - - - - ("display/references")]]> - The find references request is sent from the client to Haxe to find locations that reference the symbol at a given text document position. - - - - - - - ("display/definition")]]> - The goto definition request is sent from the client to Haxe to resolve the definition location(s) of a symbol at a given text document position. - - - - - - - ("display/implementation")]]> - The goto implementation request is sent from the client to Haxe to resolve the implementation location(s) of a symbol at a given text document position. - - - - - - - ("display/typeDefinition")]]> - The goto type definition request is sent from the client to Haxe to resolve the type definition location(s) of a symbol at a given text document position. - - - - - - - ("display/hover")]]> - The hover request is sent from the client to Haxe to request hover information at a given text document position. - - - - - - - ("display/package")]]> - This request is sent from the client to Haxe to determine the package for a given file, based on class paths configuration. - - - - - - - ("display/signatureHelp")]]> - The signature help request is sent from the client to Haxe to request signature information at a given cursor position. - - Methods of the JSON-RPC-based `--display` protocol in Haxe 4. - A lot of the methods are *inspired* by the Language Server Protocol, but there is **no** intention to be directly compatible with it. - - - - - - - - Unicode character offset in the file. - - - - - list of metas to include in responses - - - - - - - - Completion - - - - - The qualifier that has to be inserted to use the field if `!isQualified`. - Can either be `this` or `super` for instance fields for the type name for `static` fields. - - - - Whether it's valid to use the unqualified name of the field or not. - This is `false` if the identifier is shadowed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - cast 0 - - - - The field is declared on the current type itself. - - - - - cast 1 - - - - The field is a static field brought into context via a static import - (`import pack.Module.Type.field`). - - - - - cast 2 - - - - The field is declared on a parent type, such as: - - a super class field that is not overriden - - a forwarded abstract field - - - - - cast 3 - - - - The field is a static extension method brought - into context with the `using` keyword. - - - - - cast 4 - - - - This field doesn't belong to any named type, just an anonymous structure. - - - - - cast 5 - - - - Special fields built into the compiler, such as: - - `code` on single-character Strings - - `bind()` on functions. - - - - - cast 6 - - - - The origin of this class field is unknown. - - - - - - - - - cast 0 - - - - The field is declared on the current type itself. - - - - - cast 1 - - - - The field is a static field brought into context via a static import - (`import pack.Module.Type.field`). - - - - - cast 2 - - - - The field is declared on a parent type, such as: - - a super class field that is not overriden - - a forwarded abstract field - - - - - cast 3 - - - - The field is a static extension method brought - into context with the `using` keyword. - - - - - cast 4 - - - - This field doesn't belong to any named type, just an anonymous structure. - - - - - cast 5 - - - - Special fields built into the compiler, such as: - - `code` on single-character Strings - - `bind()` on functions. - - - - - cast 6 - - - - The origin of this class field is unknown. - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - The enum value is declared on the current type itself. - - - - - cast 1 - - - - The enum value is brought into context via a static import - (`import pack.Module.Enum.Value`). - - - - - - - - - cast 0 - - - - The enum value is declared on the current type itself. - - - - - cast 1 - - - - The enum value is brought into context via a static import - (`import pack.Module.Enum.Value`). - - - - - - - - - - - - - - - - - - - - - - - - - - cast "null" - - - - - - - - cast "true" - - - - - - - - cast "false" - - - - - - - - cast "this" - - - - - - - - cast "trace" - - - - - - - - - - - - cast "null" - - - - - - - - cast "true" - - - - - - - - cast "false" - - - - - - - - cast "this" - - - - - - - - cast "trace" - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - A `typedef` that is just an alias for another type. - - - - - cast 6 - - - - A `typedef` that is an alias for an anonymous structure. - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - A `typedef` that is just an alias for another type. - - - - - cast 6 - - - - A `typedef` that is an alias for an anonymous structure. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "TClass" - - - - - - - - cast "TClassField" - - - - - - - - cast "TAbstract" - - - - - - - - cast "TAbstractField" - - - - - - - - cast "TEnum" - - - - - - - - cast "TTypedef" - - - - - - - - cast "TAnyField" - - - - - - - - cast "TExpr" - - - - - - - - cast "TTypeParameter" - - - - - - - - - - - - cast "TClass" - - - - - - - - cast "TClassField" - - - - - - - - cast "TAbstract" - - - - - - - - cast "TAbstractField" - - - - - - - - cast "TEnum" - - - - - - - - cast "TTypedef" - - - - - - - - cast "TAnyField" - - - - - - - - cast "TExpr" - - - - - - - - cast "TTypeParameter" - - - - - - - - - - - - - - cast "cross" - - - - - - - - cast "js" - - - - - - - - cast "lua" - - - - - - - - cast "neko" - - - - - - - - cast "flash" - - - - - - - - cast "php" - - - - - - - - cast "cpp" - - - - - - - - cast "cs" - - - - - - - - cast "java" - - - - - - - - cast "python" - - - - - - - - cast "hl" - - - - - - - - cast "eval" - - - - - - - - - - - - cast "cross" - - - - - - - - cast "js" - - - - - - - - cast "lua" - - - - - - - - cast "neko" - - - - - - - - cast "flash" - - - - - - - - cast "php" - - - - - - - - cast "cpp" - - - - - - - - cast "cs" - - - - - - - - cast "java" - - - - - - - - cast "python" - - - - - - - - cast "hl" - - - - - - - - cast "eval" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "implements" - - - - - - - - cast "extends" - - - - - - - - cast "function" - - - - - - - - cast "var" - - - - - - - - cast "if" - - - - - - - - cast "else" - - - - - - - - cast "while" - - - - - - - - cast "do" - - - - - - - - cast "for" - - - - - - - - cast "break" - - - - - - - - cast "return" - - - - - - - - cast "continue" - - - - - - - - cast "switch" - - - - - - - - cast "case" - - - - - - - - cast "default" - - - - - - - - cast "try" - - - - - - - - cast "catch" - - - - - - - - cast "new" - - - - - - - - cast "throw" - - - - - - - - cast "untyped" - - - - - - - - cast "cast" - - - - - - - - cast "macro" - - - - - - - - cast "package" - - - - - - - - cast "import" - - - - - - - - cast "using" - - - - - - - - cast "public" - - - - - - - - cast "private" - - - - - - - - cast "static" - - - - - - - - cast "extern" - - - - - - - - cast "dynamic" - - - - - - - - cast "override" - - - - - - - - cast "overload" - - - - - - - - cast "class" - - - - - - - - cast "interface" - - - - - - - - cast "enum" - - - - - - - - cast "abstract" - - - - - - - - cast "typedef" - - - - - - - - cast "final" - - - - - - - - cast "inline" - - - - - - - - - - - - cast "implements" - - - - - - - - cast "extends" - - - - - - - - cast "function" - - - - - - - - cast "var" - - - - - - - - cast "if" - - - - - - - - cast "else" - - - - - - - - cast "while" - - - - - - - - cast "do" - - - - - - - - cast "for" - - - - - - - - cast "break" - - - - - - - - cast "return" - - - - - - - - cast "continue" - - - - - - - - cast "switch" - - - - - - - - cast "case" - - - - - - - - cast "default" - - - - - - - - cast "try" - - - - - - - - cast "catch" - - - - - - - - cast "new" - - - - - - - - cast "throw" - - - - - - - - cast "untyped" - - - - - - - - cast "cast" - - - - - - - - cast "macro" - - - - - - - - cast "package" - - - - - - - - cast "import" - - - - - - - - cast "using" - - - - - - - - cast "public" - - - - - - - - cast "private" - - - - - - - - cast "static" - - - - - - - - cast "extern" - - - - - - - - cast "dynamic" - - - - - - - - cast "override" - - - - - - - - cast "overload" - - - - - - - - cast "class" - - - - - - - - cast "interface" - - - - - - - - cast "enum" - - - - - - - - cast "abstract" - - - - - - - - cast "typedef" - - - - - - - - cast "final" - - - - - - - - cast "inline" - - - - - - - - - - - - - - - - cast "Local" - - - - - - - - cast "ClassField" - - - - - - - - cast "EnumField" - - - - - - - - cast "EnumAbstractField" - - - - Only for the enum values in enum abstracts, other fields use `ClassField`. - - - - - cast "Type" - - - - - - - - cast "Package" - - - - - - - - cast "Module" - - - - - - - - cast "Literal" - - - - - - - - cast "Metadata" - - - - - - - - cast "Keyword" - - - - - - - - cast "AnonymousStructure" - - - - - - - - cast "Expression" - - - - - - - - cast "TypeParameter" - - - - - - - - cast "Define" - - - - - - - - - - - - cast "Local" - - - - - - - - cast "ClassField" - - - - - - - - cast "EnumField" - - - - - - - - cast "EnumAbstractField" - - - - Only for the enum values in enum abstracts, other fields use `ClassField`. - - - - - cast "Type" - - - - - - - - cast "Package" - - - - - - - - cast "Module" - - - - - - - - cast "Literal" - - - - - - - - cast "Metadata" - - - - - - - - cast "Keyword" - - - - - - - - cast "AnonymousStructure" - - - - - - - - cast "Expression" - - - - - - - - cast "TypeParameter" - - - - - - - - cast "Define" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CompletionItem Resolve - - - - - - - Unicode character offset in the file. - - - - - - - - - - - - FindReferences - - - - - - - - - - cast "direct" - - - - Find only direct references to the requested symbol. - Does not look for references to parent or overriding methods. - - - - - cast "withBaseAndDescendants" - - - - Find references to the base field and all the overidding fields in the inheritance chain. - - - - - cast "withDescendants" - - - - Find references to the requested field and references to all - descendants of the requested field. - - - - - - - - - cast "direct" - - - - Find only direct references to the requested symbol. - Does not look for references to parent or overriding methods. - - - - - cast "withBaseAndDescendants" - - - - Find references to the base field and all the overidding fields in the inheritance chain. - - - - - cast "withDescendants" - - - - Find references to the requested field and references to all - descendants of the requested field. - - - - - - GotoDefinition - - - - GotoTypeDefinition - - - - Hover - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - DeterminePackage - - - - - - - Unicode character offset in the file. - - - - - - - - SignatureHelp - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - - - - Unicode character offset in the file. - - - - - - - - General types - - - - - <_new public="1" get="inline" set="null" line="26" static="1"> - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="26" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - This type is already available with it's unqualified name for one of these reasons: - - it's a toplevel type - - it's imported with an `import` in the current module - - it's imported in an `import.hx` file - - - - - cast 1 - - - - The type is currently not imported. It can be accessed either - with its fully qualified name or by inserting an import. - - - - - cast 2 - - - - A type with the same name is already imported in the module. - The fully qualified name has to be used to access it. - - - - - - - - - cast 0 - - - - This type is already available with it's unqualified name for one of these reasons: - - it's a toplevel type - - it's imported with an `import` in the current module - - it's imported in an `import.hx` file - - - - - cast 1 - - - - The type is currently not imported. It can be accessed either - with its fully qualified name or by inserting an import. - - - - - cast 2 - - - - A type with the same name is already imported in the module. - The fully qualified name has to be used to access it. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "AClosed" - - - - - - - - cast "AOpened" - - - - - - - - cast "AConst" - - - - - - - - cast "AExtend" - - - - - - - - cast "AClassStatics" - - - - - - - - cast "AEnumStatics" - - - - - - - - cast "AAbstractStatics" - - - - - - - - - - - - cast "AClosed" - - - - - - - - cast "AOpened" - - - - - - - - cast "AConst" - - - - - - - - cast "AExtend" - - - - - - - - cast "AClassStatics" - - - - - - - - cast "AEnumStatics" - - - - - - - - cast "AAbstractStatics" - - - - - - - - - - - - - - - - - - - - - - cast "TMono" - - - - - - - - cast "TInst" - - - - - - - - cast "TEnum" - - - - - - - - cast "TType" - - - - - - - - cast "TAbstract" - - - - - - - - cast "TFun" - - - - - - - - cast "TAnonymous" - - - - - - - - cast "TDynamic" - - - - - - - - - - - - cast "TMono" - - - - - - - - cast "TInst" - - - - - - - - cast "TEnum" - - - - - - - - cast "TType" - - - - - - - - cast "TAbstract" - - - - - - - - cast "TFun" - - - - - - - - cast "TAnonymous" - - - - - - - - cast "TDynamic" - - - - - - - - - - - - - - - - - - - - - - - - cast "OpAdd" - - - - - - - - cast "OpMult" - - - - - - - - cast "OpDiv" - - - - - - - - cast "OpSub" - - - - - - - - cast "OpAssign" - - - - - - - - cast "OpEq" - - - - - - - - cast "OpNotEq" - - - - - - - - cast "OpGt" - - - - - - - - cast "OpGte" - - - - - - - - cast "OpLt" - - - - - - - - cast "OpLte" - - - - - - - - cast "OpAnd" - - - - - - - - cast "OpOr" - - - - - - - - cast "OpXor" - - - - - - - - cast "OpBoolAnd" - - - - - - - - cast "OpBoolOr" - - - - - - - - cast "OpShl" - - - - - - - - cast "OpShr" - - - - - - - - cast "OpUShr" - - - - - - - - cast "OpMod" - - - - - - - - cast "OpAssignOp" - - - - - - - - cast "OpInterval" - - - - - - - - cast "OpArrow" - - - - - - - - cast "OpIn" - - - - - - - - - - - - cast "OpAdd" - - - - - - - - cast "OpMult" - - - - - - - - cast "OpDiv" - - - - - - - - cast "OpSub" - - - - - - - - cast "OpAssign" - - - - - - - - cast "OpEq" - - - - - - - - cast "OpNotEq" - - - - - - - - cast "OpGt" - - - - - - - - cast "OpGte" - - - - - - - - cast "OpLt" - - - - - - - - cast "OpLte" - - - - - - - - cast "OpAnd" - - - - - - - - cast "OpOr" - - - - - - - - cast "OpXor" - - - - - - - - cast "OpBoolAnd" - - - - - - - - cast "OpBoolOr" - - - - - - - - cast "OpShl" - - - - - - - - cast "OpShr" - - - - - - - - cast "OpUShr" - - - - - - - - cast "OpMod" - - - - - - - - cast "OpAssignOp" - - - - - - - - cast "OpInterval" - - - - - - - - cast "OpArrow" - - - - - - - - cast "OpIn" - - - - - - - - - - - - - - - - - - cast "OpIncrement" - - - - - - - - cast "OpDecrement" - - - - - - - - cast "OpNot" - - - - - - - - cast "OpNeg" - - - - - - - - cast "OpNegBits" - - - - - - - - - - - - cast "OpIncrement" - - - - - - - - cast "OpDecrement" - - - - - - - - cast "OpNot" - - - - - - - - cast "OpNeg" - - - - - - - - cast "OpNegBits" - - - - - - - - - - - - - - - - - - - - - cast "TInt" - - - - - - - - cast "TFloat" - - - - - - - - cast "TString" - - - - - - - - cast "TBool" - - - - - - - - cast "TNull" - - - - - - - - cast "TThis" - - - - - - - - cast "TSuper" - - - - - - - - - - - - cast "TInt" - - - - - - - - cast "TFloat" - - - - - - - - cast "TString" - - - - - - - - cast "TBool" - - - - - - - - cast "TNull" - - - - - - - - cast "TThis" - - - - - - - - cast "TSuper" - - - - - - - - - - - - - - - - - - - cast "AccNormal" - - - - - - - - cast "AccNo" - - - - - - - - cast "AccNever" - - - - - - - - cast "AccResolve" - - - - - - - - cast "AccCall" - - - - - - - - cast "AccInline" - - - - - - - - - - - cast "AccRequire" - - - - - - - - cast "AccCtor" - - - - - - - - - - - - cast "AccNormal" - - - - - - - - cast "AccNo" - - - - - - - - cast "AccNever" - - - - - - - - cast "AccResolve" - - - - - - - - cast "AccCall" - - - - - - - - cast "AccInline" - - - - - - - - - - - cast "AccRequire" - - - - - - - - cast "AccCtor" - - - - - - - - - - - - - - - - - - cast "MethNormal" - - - - - - - - cast "MethInline" - - - - - - - - cast "MethDynamic" - - - - - - - - cast "MethMacro" - - - - - - - - - - - - cast "MethNormal" - - - - - - - - cast "MethInline" - - - - - - - - cast "MethDynamic" - - - - - - - - cast "MethMacro" - - - - - - - - - - - - - - - - - cast "FVar" - - - - - - - - cast "FMethod" - - - - - - - - - - - - - - - cast "FVar" - - - - - - - - cast "FMethod" - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "KNormal" - - - - - - - - cast "KTypeParameter" - - - - - - - - cast "KExtension" - - - - - - - - cast "KExpr" - - - - - - - - cast "KGeneric" - - - - - - - - cast "KGenericInstance" - - - - - - - - cast "KMacroType" - - - - - - - - cast "KAbstractImpl" - - - - - - - - cast "KGenericBuild" - - - - - - - - cast "KModuleFields" - - - - - - - - - - - - cast "KNormal" - - - - - - - - cast "KTypeParameter" - - - - - - - - cast "KExtension" - - - - - - - - cast "KExpr" - - - - - - - - cast "KGeneric" - - - - - - - - cast "KGenericInstance" - - - - - - - - cast "KMacroType" - - - - - - - - cast "KAbstractImpl" - - - - - - - - cast "KGenericBuild" - - - - - - - - cast "KModuleFields" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "class" - - - - - - - - cast "enum" - - - - - - - - cast "typedef" - - - - - - - - cast "abstract" - - - - - - - - - - - - cast "class" - - - - - - - - cast "enum" - - - - - - - - cast "typedef" - - - - - - - - cast "abstract" - - - - - - - - - - - - - - - - - - - - - - - - Line position in a document (1-based). - - - - Character offset on a line in a document (1-based). - - - Position in a text document expressed as 1-based line and character offset. - - - - - - The range's start position - - - - The range's end position - - - A range in a text document expressed as (1-based) start and end positions. - - - - - - - Represents a location inside a resource, such as a line inside a text file. - - - - - - - - ("initialize")]]> - The initialize request is sent from the client to Haxe to determine the capabilities. - - - - - - - - - - - - The maximum number of completion items to return - - - - - dot paths to exclude from readClassPaths / toplevel completion - - - - -
      -				
      -				
      -			
      - - - - - - - -
      - Represents a semantic version, see https://semver.org/. -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNIX timestamp at the moment the data was sent. - - - - - Only sent if `--times` is enabled. - - - - - - - - - - - <_new public="1" get="inline" set="null" line="90" static="1"> - - - - - - - - - - - <_new public="1" get="inline" set="null" line="90" static="1"> - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="95" static="1"> - - - - - - - - <_new public="1" get="inline" set="null" line="95" static="1"> - - - - - - - - - - - - - - - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - - - >("server/readClassPaths")]]> - This request is sent from the client to Haxe to explore the class paths. This effectively creates a cache for toplevel completion. - - - - - - - >("server/configure")]]> - - - - - - - >("server/invalidate")]]> - - - - - - - >>("server/contexts")]]> - - - - - - - >("server/memory")]]> - - - - - - - >("server/memory/context")]]> - - - - - - - >("server/memory/module")]]> - - - - - - - >>("server/modules")]]> - - - - - - - >("server/module")]]> - - - - - - - >>("server/files")]]> - - - - - - - >("server/moduleCreated")]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - y` and a - negative Int if `x < y`. - - This operation modifies Array `a` in place. - - This operation is stable: The order of equal elements is preserved. - - If `a` or `cmp` are null, the result is unspecified.]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ArraySort provides a stable implementation of merge sort through its `sort` - method. It should be used instead of `Array.sort` in cases where the order - of equal elements has to be retained on all targets. - - - - - - - - - - - - - - - - - - - - - - - - - - Binds `key` to `value`. - - If `key` is already bound to a value, that binding disappears. - - If `key` is null, the result is unspecified. - - - - - - - Returns the value `key` is bound to. - - If `key` is not bound to any value, `null` is returned. - - If `key` is null, the result is unspecified. - - - - - - - Removes the current binding of `key`. - - If `key` has no binding, `this` BalancedTree is unchanged and false is - returned. - - Otherwise the binding of `key` is removed and true is returned. - - If `key` is null, the result is unspecified. - - - - - - - Tells if `key` is bound to a value. - - This method returns true even if `key` is bound to null. - - If `key` is null, the result is unspecified. - - - - Iterates over the bound values of `this` BalancedTree. - - This operation is performed in-order. - - - - - - - - See `Map.keyValueIterator` - - - - Iterates over the keys of `this` BalancedTree. - - This operation is performed in-order. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Removes all keys from `this` BalancedTree. - - - - Creates a new BalancedTree, which is initially empty. - - BalancedTree allows key-value mapping with arbitrary keys, as long as they - can be ordered. By default, `Reflect.compare` is used in the `compare` - method, which can be overridden in subclasses. - - Operations have a logarithmic average and worst-case cost. - - Iteration over keys and values, using `keys` and `iterator` respectively, - are in-order. - - - - - - - - - - - - - <_height> - - - - - - - - - - - - - - - - - { h : -1 } - - A tree node of `haxe.ds.BalancedTree`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EnumValueMap allows mapping of enum value keys to arbitrary values. - - Keys are compared by value and recursively over their parameters. If any - parameter is not an enum value, `Reflect.compare` is used to compare them. - - - - - - - - HashMap allows mapping of hashable objects to arbitrary values. - - See `Map` for documentation details. - - @see https://haxe.org/manual/std-Map.html - - <_new public="1" get="inline" set="null" line="38" static="1"> - - - - - - Creates a new HashMap. - - - - - - - - - - - - - See `Map.set` - - - - - - - - - - - - See `Map.get` - - - - - - - - - - - See `Map.exists` - - - - - - - - - - - See `Map.remove` - - - - - - - - - - See `Map.keys` - - - - - - - - - - - - - See `Map.copy` - - - - - - - - - - See `Map.iterator` - - - - - - - - - - - - - See `Map.keyValueIterator` - - - - - - - - - - See `Map.clear` - - - - - <_new public="1" get="inline" set="null" line="38" static="1"> - - - - - - Creates a new HashMap. - - - - - - - - - - - - - See `Map.set` - - - - - - - - - - - - See `Map.get` - - - - - - - - - - - See `Map.exists` - - - - - - - - - - - See `Map.remove` - - - - - - - - - - See `Map.keys` - - - - - - - - - - - - - See `Map.copy` - - - - - - - - - - See `Map.iterator` - - - - - - - - - - - - - See `Map.keyValueIterator` - - - - - - - - - - See `Map.clear` - - - - - - - - - - - - - - - "haxe.ds.IntMap.*" - - - - - - - - - See `Map.set` - - - - - - - - See `Map.get` - - - - - - - - See `Map.exists` - - - - - - - - See `Map.remove` - - - - - See `Map.keys` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - See `Map.iterator` - - (cs, java) Implementation detail: Do not `set()` any new value while - iterating, as it may cause a resize, which will break iteration. - - - - - - - - See `Map.keyValueIterator` - - - - See `Map.copy` - - - - - See `Map.toString` - - - - - See `Map.clear` - - - - Creates a new IntMap. - - IntMap allows mapping of Int keys to arbitrary values. - - See `Map` for documentation details. - - @see https://haxe.org/manual/std-Map.html - - - \r\n inline void set(int key, const ::cpp::Struct &value) {__int_hash_set(HX_MAP_THIS,key,value); }\r\n template\r\n inline void set(int key, const ::cpp::Function &value) {__int_hash_set(HX_MAP_THIS,key,value); }\r\n template\r\n inline void set(int key, const ::cpp::Pointer &value) {__int_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }\r\n\r\n template\r\n inline void set(Dynamic &key, const VALUE &value) { set( (int)key, value ); }\r\n\r\n inline bool get_bool(int key) { return __int_hash_get_bool(h,key); }\r\n inline int get_int(int key) { return __int_hash_get_int(h,key); }\r\n inline Float get_float(int key) { return __int_hash_get_float(h,key); }\r\n inline String get_string(int key) { return __int_hash_get_string(h,key); }\r\n"]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - value1, key2 => value2]` syntax. - - Map is an abstract type, it is not available at runtime. - - @see https://haxe.org/manual/std-Map.html]]> - - - @:followWithAbstracts K - - - - - - - - - - - - - Maps `key` to `value`. - - If `key` already has a mapping, the previous value disappears. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - - Returns the current mapping of `key`. - - If no such mapping exists, `null` is returned. - - Note that a check like `map.get(key) == null` can hold for two reasons: - - 1. the map has no mapping for `key` - 2. the map has a mapping with a value of `null` - - If it is important to distinguish these cases, `exists()` should be - used. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - Returns true if `key` has a mapping, false otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - Removes the mapping of `key` and returns true if such a mapping existed, - false otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - Returns an Iterator over the keys of `this` Map. - - The order of keys is undefined. - - - - - - - - - - Returns an Iterator over the values of `this` Map. - - The order of values is undefined. - - - - - - - - - - - - - Returns an Iterator over the keys and values of `this` Map. - - The order of values is undefined. - - - - - - - - - - - - - Returns a shallow copy of `this` map. - - The order of values is undefined. - - - - - - - - - - Returns a String representation of `this` Map. - - The exact representation depends on the platform and key-type. - - - - - - - - - - Removes all keys from `this` Map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `ReadOnlyArray` is an abstract over an ordinary `Array` which only exposes - APIs that don't modify the instance, hence "read-only". - - Note that this doesn't necessarily mean that the instance is *immutable*. - Other code holding a reference to the underlying `Array` can still modify it, - and the reference can be obtained with a `cast`. - - copy - filter - indexOf - iterator - keyValueIterator - join - lastIndexOf - map - slice - contains - toString - - - - - The length of `this` Array. - - - - - - - - - - - - - - - - - - - - Returns a new Array by appending the elements of `a` to the elements of - `this` Array. - - This operation does not modify `this` Array. - - If `a` is the empty Array `[]`, a copy of `this` Array is returned. - - The length of the returned Array is equal to the sum of `this.length` - and `a.length`. - - If `a` is `null`, the result is unspecified. - - - - - - - The length of `this` Array. - - - - - - - - - - - - - - - - - - - - Returns a new Array by appending the elements of `a` to the elements of - `this` Array. - - This operation does not modify `this` Array. - - If `a` is the empty Array `[]`, a copy of `this` Array is returned. - - The length of the returned Array is equal to the sum of `this.length` - and `a.length`. - - If `a` is `null`, the result is unspecified. - - - - - - A Vector is a storage of fixed size. It can be faster than Array on some - targets, and is never slower. - - @see https://haxe.org/manual/std-vector.html - - <_new public="1" get="inline" set="null" line="64" static="1"> - - - - - - Creates a new Vector of length `length`. - - Initially `this` Vector contains `length` neutral elements: - - - always null on dynamic targets - - 0, 0.0 or false for Int, Float and Bool respectively on static targets - - null for other types on static targets - - If `length` is less than or equal to 0, the result is unspecified. - - - - - - - - [] - Returns the value at index `index`. - - If `index` is negative or exceeds `this.length`, the result is - unspecified. - - - - - - - - - [] - Sets the value at index `index` to `val`. - - If `index` is negative or exceeds `this.length`, the result is - unspecified. - - - - Returns the length of `this` Vector. - - - - - - - - - - - - - - - - - - Copies `length` of elements from `src` Vector, beginning at `srcPos` to - `dest` Vector, beginning at `destPos` - - The results are unspecified if `length` results in out-of-bounds access, - or if `src` or `dest` are null - - - - - - - Creates a new Array, copy the content from the Vector to it, and returns it. - - - - - - - Extracts the data of `this` Vector. - - This returns the internal representation type. - - - - - - - Initializes a new Vector from `data`. - - Since `data` is the internal representation of Vector, this is a no-op. - - If `data` is null, the corresponding Vector is also `null`. - - - - - - - Creates a new Vector by copying the elements of `array`. - - This always creates a copy, even on platforms where the internal - representation is Array. - - The elements are not copied and retain their identity, so - `a[i] == Vector.fromArrayCopy(a).get(i)` is true for any valid i. - - If `array` is null, the result is unspecified. - - - - - - - Returns a shallow copy of `this` Vector. - - The elements are not copied and retain their identity, so - `a[i] == a.copy()[i]` is true for any valid `i`. However, - `a == a.copy()` is always false. - - - - - - - - Returns a string representation of `this` Vector, with `sep` separating - each element. - - The result of this operation is equal to `Std.string(this[0]) + sep + - Std.string(this[1]) + sep + ... + sep + Std.string(this[this.length-1])` - - If `this` Vector has length 0, the result is the empty String `""`. - If `this` has exactly one element, the result is equal to a call to - `Std.string(this[0])`. - - If `sep` is null, the result is unspecified. - - - - - - - - - - - Creates a new Vector by applying function `f` to all elements of `this`. - - The order of elements is preserved. - - If `f` is null, the result is unspecified. - - - - - - - - - - - - y and a - negative Int if x < y. - - This operation modifies `this` Vector in place. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. - - If `f` is null, the result is unspecified.]]> - - - - - <_new public="1" get="inline" set="null" line="64" static="1"> - - - - - - Creates a new Vector of length `length`. - - Initially `this` Vector contains `length` neutral elements: - - - always null on dynamic targets - - 0, 0.0 or false for Int, Float and Bool respectively on static targets - - null for other types on static targets - - If `length` is less than or equal to 0, the result is unspecified. - - - - - - - - [] - Returns the value at index `index`. - - If `index` is negative or exceeds `this.length`, the result is - unspecified. - - - - - - - - - [] - Sets the value at index `index` to `val`. - - If `index` is negative or exceeds `this.length`, the result is - unspecified. - - - - Returns the length of `this` Vector. - - - - - - - - - - - - - - - - - - Copies `length` of elements from `src` Vector, beginning at `srcPos` to - `dest` Vector, beginning at `destPos` - - The results are unspecified if `length` results in out-of-bounds access, - or if `src` or `dest` are null - - - - - - - Creates a new Array, copy the content from the Vector to it, and returns it. - - - - - - - Extracts the data of `this` Vector. - - This returns the internal representation type. - - - - - - - Initializes a new Vector from `data`. - - Since `data` is the internal representation of Vector, this is a no-op. - - If `data` is null, the corresponding Vector is also `null`. - - - - - - - Creates a new Vector by copying the elements of `array`. - - This always creates a copy, even on platforms where the internal - representation is Array. - - The elements are not copied and retain their identity, so - `a[i] == Vector.fromArrayCopy(a).get(i)` is true for any valid i. - - If `array` is null, the result is unspecified. - - - - - - - Returns a shallow copy of `this` Vector. - - The elements are not copied and retain their identity, so - `a[i] == a.copy()[i]` is true for any valid `i`. However, - `a == a.copy()` is always false. - - - - - - - - Returns a string representation of `this` Vector, with `sep` separating - each element. - - The result of this operation is equal to `Std.string(this[0]) + sep + - Std.string(this[1]) + sep + ... + sep + Std.string(this[this.length-1])` - - If `this` Vector has length 0, the result is the empty String `""`. - If `this` has exactly one element, the result is equal to a call to - `Std.string(this[0])`. - - If `sep` is null, the result is unspecified. - - - - - - - - - - - Creates a new Vector by applying function `f` to all elements of `this`. - - The order of elements is preserved. - - If `f` is null, the result is unspecified. - - - - - - - - - - - - y and a - negative Int if x < y. - - This operation modifies `this` Vector in place. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. - - If `f` is null, the result is unspecified.]]> - - - - - - - - - - "haxe.ds.WeakMap.*" - - - - - - - - - See `Map.set` - - - - - - - - See `Map.get` - - - - - - - - See `Map.exists` - - - - - - - - See `Map.remove` - - - - - See `Map.keys` - - - - - See `Map.iterator` - - - - - - - See `Map.keyValueIterator` - - - - - - - See `Map.copy` - - - - - See `Map.toString` - - - - - See `Map.clear` - - - - Creates a new WeakMap. - - WeakMap allows mapping of object keys to arbitrary values. - - The keys are considered to be weak references on static targets. - - See `Map` for documentation details. - - @see https://haxe.org/manual/std-Map.html - - \r\n inline void set(Dynamic key, const ::cpp::Struct &value) {__object_hash_set(HX_MAP_THIS,key,value,true); }\r\n template\r\n inline void set(Dynamic key, const ::cpp::Pointer &value) {__object_hash_set(HX_MAP_THIS,key,(Dynamic)value,true ); }\r\n template\r\n inline void set(Dynamic key, const ::cpp::Function &value) {__object_hash_set(HX_MAP_THIS,key,(Dynamic)value,true ); }\r\n"]]> - - - - - - - - Position where this exception was created. - - - - Returns exception message. - - - - - - - - An exception that carry position information of a place where it was created. - - - - - - An argument name. - - - - - - - - - An exception that is thrown when an invalid value provided for an argument of a function. - - - - - - - - - - - { message : "Not implemented" } - - An exception that is thrown when requested function or operation does not have an implementation. - - - - - - - If this type is used as an argument type, the compiler ensures that - argument expressions are bound to a local variable. - - - - variable - - - - - - - - - - - - - - - ]]> - - - - - - - ]]> - - - - - - - - `. - - If given `str` is not valid JSON, an exception will be thrown. - - If `str` is null, the result is unspecified.]]> - - - - - - - - - - - - - - - - - - - - - An implementation of JSON parser in Haxe. - - This class is used by `haxe.Json` when native JSON implementation - is not available. - - @see https://haxe.org/manual/std-Json-parsing.html - - - - - - - - - - - - - - - Encodes `o`'s value and returns the resulting JSON string. - - If `replacer` is given and is not null, it is used to retrieve - actual object to be encoded. The `replacer` function takes two parameters, - the key and the value being encoded. Initial key value is an empty string. - - If `space` is given and is not null, the result will be pretty-printed. - Successive levels will be indented by this string. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - An implementation of JSON printer in Haxe. - - This class is used by `haxe.Json` when native JSON implementation - is not available. - - @see https://haxe.org/manual/std-Json-encoding.html - - - - - - - - - - The url of `this` request. It is used only by the `request()` method and - can be changed in order to send the same request to different target - Urls. - - - - - - - - - - - - - - - - - - - Sets the header identified as `name` to value `value`. - - If `name` or `value` are null, the result is unspecified. - - This method provides a fluent interface. - - - - - - - - - - - - - Sets the parameter identified as `name` to value `value`. - - If `name` or `value` are null, the result is unspecified. - - This method provides a fluent interface. - - - - - - - - - - - - Sets the post data of `this` Http request to `data` string. - - There can only be one post data per request. Subsequent calls to - this method or to `setPostBytes()` overwrite the previously set value. - - If `data` is null, the post data is considered to be absent. - - This method provides a fluent interface. - - - - - - - Sets the post data of `this` Http request to `data` bytes. - - There can only be one post data per request. Subsequent calls to - this method or to `setPostData()` overwrite the previously set value. - - If `data` is null, the post data is considered to be absent. - - This method provides a fluent interface. - - - - - - - Sends `this` Http request to the Url specified by `this.url`. - - If `post` is true, the request is sent as POST request, otherwise it is - sent as GET request. - - Depending on the outcome of the request, this method calls the - `onStatus()`, `onError()`, `onData()` or `onBytes()` callback functions. - - If `this.url` is null, the result is unspecified. - - If `this.url` is an invalid or inaccessible Url, the `onError()` callback - function is called. - - [js] If `this.async` is false, the callback functions are called before - this method returns. - - - - - - - This method is called upon a successful request, with `data` containing - the result String. - - The intended usage is to bind it to a custom function: - `httpInstance.onData = function(data) { // handle result }` - - - - - - - This method is called upon a successful request, with `data` containing - the result String. - - The intended usage is to bind it to a custom function: - `httpInstance.onBytes = function(data) { // handle result }` - - - - - - - This method is called upon a request error, with `msg` containing the - error description. - - The intended usage is to bind it to a custom function: - `httpInstance.onError = function(msg) { // handle error }` - - - - - - - This method is called upon a Http status change, with `status` being the - new status. - - The intended usage is to bind it to a custom function: - `httpInstance.onStatus = function(status) { // handle status }` - - - - Override this if extending `haxe.Http` with overriding `onData` - - - - - - - - - - - - Creates a new Http instance with `url` as parameter. - - This does not do a request until `request()` is called. - - If `url` is null, the field url must be set to a value before making the - call to `request()`, or the result is unspecified. - - (Php) Https (SSL) connections are allowed only if the OpenSSL extension - is enabled. - - This class can be used to handle Http requests consistently across - platforms. There are two intended usages: - - - call `haxe.Http.requestUrl(url)` and receive the result as a `String` - (only available on `sys` targets) - - create a `new haxe.Http(url)`, register your callbacks for `onData`, - `onError` and `onStatus`, then call `request()`. - - - - - - The length of the buffer in bytes. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns either a copy or a reference of the current bytes. - Once called, the buffer should no longer be used. - - - - - - - - - - - - - - The current position in the stream in bytes. - - - - The length of the stream in bytes. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The length of the stream in bytes. - - - - - - - - - - - - - - - Returns the `Bytes` of this output. - - This function should not be called more than once on a given - `BytesOutput` instance. - - - - - - - Output the string the way the platform represent it in memory. This is the most efficient but is platform-specific - String binary encoding supported by Haxe I/O - - - - - - - - - "haxe.io.Eof.*" - - - This exception is raised when reading while data is no longer available in the `haxe.io.Input`. - - - - The IO is set into nonblocking mode and some data cannot be read or written - An integer value is outside its allowed range - An operation on Bytes is outside of its valid range - - - Other errors - - The possible IO errors that can occur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns an Int64 representing the bytes representation of the double precision IEEE float value. - WARNING : for performance reason, the same Int64 value might be reused every time. Copy its low/high values before calling again. - We still ensure that this is safe to use in a multithread environment - - Helper that converts between floating point and binary representation. - Always works in low-endian encoding. - - - - - - - - - Returns the String representation of `path` without the file extension. - - If `path` is `null`, the result is unspecified. - - - - - - - Returns the String representation of `path` without the directory. - - If `path` is `null`, the result is unspecified. - - - - - - - Returns the directory of `path`. - - If the directory is `null`, the empty String `""` is returned. - - If `path` is `null`, the result is unspecified. - - - - - - - Returns the extension of `path`. - - If `path` has no extension, the empty String `""` is returned. - - If `path` is `null`, the result is unspecified. - - - - - - - - Returns a String representation of `path` where the extension is `ext`. - - If `path` has no extension, `ext` is added as extension. - - If `path` or `ext` are `null`, the result is unspecified. - - - - - - - Joins all paths in `paths` together. - - If `paths` is empty, the empty String `""` is returned. Otherwise the - paths are joined with a slash between them. - - If `paths` is `null`, the result is unspecified. - - - - - - - Normalize a given `path` (e.g. turn `'/usr/local/../lib'` into `'/usr/lib'`). - - Also replaces backslashes `\` with slashes `/` and afterwards turns - multiple slashes into a single one. - - If `path` is `null`, the result is unspecified. - - - - - - - Adds a trailing slash to `path`, if it does not have one already. - - If the last slash in `path` is a backslash, a backslash is appended to - `path`. - - If the last slash in `path` is a slash, or if no slash is found, a slash - is appended to `path`. In particular, this applies to the empty String - `""`. - - If `path` is `null`, the result is unspecified. - - - - - - - Removes trailing slashes from `path`. - - If `path` does not end with a `/` or `\`, `path` is returned unchanged. - - Otherwise the substring of `path` excluding the trailing slashes or - backslashes is returned. - - If `path` is `null`, the result is unspecified. - - - - - - - Returns `true` if the path is an absolute path, and `false` otherwise. - - - - - - - - - - - - { allowSlashes : false } - - - - The directory. - - This is the leading part of the path that is not part of the file name - and the extension. - - Does not end with a `/` or `\` separator. - - If the path has no directory, the value is `null`. - - - - The file name. - - This is the part of the part between the directory and the extension. - - If there is no file name, e.g. for `".htaccess"` or `"/dir/"`, the value - is the empty String `""`. - - - - The file extension. - - It is separated from the file name by a dot. This dot is not part of - the extension. - - If the path has no extension, the value is `null`. - - - - `true` if the last directory separator is a backslash, `false` otherwise. - - - - Returns a String representation of `this` path. - - If `this.backslash` is `true`, backslash is used as directory separator, - otherwise slash is used. This only affects the separator between - `this.dir` and `this.file`. - - If `this.directory` or `this.extension` is `null`, their representation - is the empty String `""`. - - - - - - - Creates a new `Path` instance by parsing `path`. - - Path information can be retrieved by accessing the `dir`, `file` and `ext` - properties. - - This class provides a convenient way of working with paths. It supports the - common path formats: - - - `directory1/directory2/filename.extension` - - `directory1\directory2\filename.extension` - - - - - - - 0 - - - - See `Iterator.hasNext` - - - - See `Iterator.next` - - - - - - - Create a new `ArrayIterator`. - - ` is passed to `Iterable`]]> - - - - - - 0 - - - - - - - - - - - - - "anon_read.keyValueIterator" - "dynamic_read.keyValueIterator" - - - - - - - - - - - See `Iterator.hasNext` - - - - - - - See `Iterator.next` - - - - - - - - - - - - - - - - - - See `Iterator.hasNext` - - - - - - - See `Iterator.next` - - - - - - - - - This Key/Value iterator can be used to iterate across maps. - - - - "anon_read.keyValueIterator" - "dynamic_read.keyValueIterator" - - - - - - - - 0 - - - - - - - - - haxe.Rest - - - - - - - 0 - - - - - - - - - - - - haxe.Rest - - - - - - 0 - - - - - See `Iterator.hasNext` - - - - See `Iterator.next` - - - - - - - Create a new `StringIterator` over String `s`. - - This iterator can be used to iterate over char codes in a string. - - Note that char codes may differ across platforms because of different - internal encoding of strings in different of runtimes. - - - - - - - - Convenience function which can be used as a static extension. - - - - 0 - - - - - See `Iterator.hasNext` - - - - StringTools - See `Iterator.next` - - - - - - - Create a new `StringIteratorUnicode` over String `s`. - - This iterator can be used to iterate across strings in a cross-platform - way. It handles surrogate pairs on platforms that require it. On each - iteration, it returns the next character code. - - Note that this has different semantics than a standard for-loop over the - String's length due to the fact that it deals with surrogate pairs. - - - - - 0 - - - - - See `KeyValueIterator.hasNext` - - - - - - - See `KeyValueIterator.next` - - - - - - - Create a new `StringKeyValueIterator` over String `s`. - - This iterator can be used to iterate over char indexes and char codes in a string. - - Note that char codes may differ across platforms because of different - internal encoding of strings in different runtimes. - - - - - - - - Convenience function which can be used as a static extension. - - - - 0 - - - - 0 - - - - - See `Iterator.hasNext` - - - - - - - StringTools - See `Iterator.next` - - - - - - - Create a new `StringKeyValueIteratorUnicode` over String `s`. - - This iterator can be used to iterate across strings in a cross-platform - way. It handles surrogate pairs on platforms that require it. On each - iteration, it returns the next character offset as key and the next - character code as value. - - Note that in the general case, because of surrogate pairs, the key values - should not be used as offsets for various String API operations. For the - same reason, the last key value returned might be less than `s.length - 1`. - - All these methods can be called for compiler configuration macros. - - - - - - - - - - cast "top" - - - - Prepend the file content to the output file. - - - - - cast "closure" - - - - Prepend the file content to the body of the top-level closure. - - Since the closure is in strict-mode, there may be run-time error if the input is not strict-mode-compatible. - - - - - cast "inline" - - - - Directly inject the file content at the call site. - - - - - - - - - cast "top" - - - - Prepend the file content to the output file. - - - - - cast "closure" - - - - Prepend the file content to the body of the top-level closure. - - Since the closure is in strict-mode, there may be run-time error if the input is not strict-mode-compatible. - - - - - cast "inline" - - - - Directly inject the file content at the call site. - - - - - - - - - - - - cast "Off" - - - - Disable null safety. - - - - - cast "Loose" - - - - }) { - if(o.field != null) { - mutate(o); - var notNullable:String = o.field; //no error - } - } - - function mutate(o:{field:Null}) { - o.field = null; - } - ```]]> - - - - - cast "Strict" - - - - }, b:{o:{field:Null}}) { - if(o.field != null) { - var notNullable:String = o.field; //no error - someCall(); - var notNullable:String = o.field; // Error! - } - if(o.field != null) { - var notNullable:String = o.field; //no error - b.o = {field:null}; - var notNullable:String = o.field; // Error! - } - } - ```]]> - - - - - cast "StrictThreaded" - - - - Full scale null safety for a multi-threaded environment. - With this mode checking a field `!= null` does not make it safe, because it could be changed from another thread - at the same time or immediately after the check. - The only nullable thing could be safe are local variables. - - - - - - - - - cast "Off" - - - - Disable null safety. - - - - - cast "Loose" - - - - }) { - if(o.field != null) { - mutate(o); - var notNullable:String = o.field; //no error - } - } - - function mutate(o:{field:Null}) { - o.field = null; - } - ```]]> - - - - - cast "Strict" - - - - }, b:{o:{field:Null}}) { - if(o.field != null) { - var notNullable:String = o.field; //no error - someCall(); - var notNullable:String = o.field; // Error! - } - if(o.field != null) { - var notNullable:String = o.field; //no error - b.o = {field:null}; - var notNullable:String = o.field; // Error! - } - } - ```]]> - - - - - cast "StrictThreaded" - - - - Full scale null safety for a multi-threaded environment. - With this mode checking a field `!= null` does not make it safe, because it could be changed from another thread - at the same time or immediately after the check. - The only nullable thing could be safe are local variables. - - - - - - - - - - Converts type `c` to a human-readable `String` representation. - - The result is guaranteed to be valid Haxe code, but there may be - differences from the original lexical syntax. - - This class provides some utility methods to work with AST-level types. It is - best used through `using haxe.macro.ComplexTypeTools` syntax and then provides - additional methods on `haxe.macro.ComplexType` instances. - - - - - - - - - - - - Context provides an API for macro programming. - - It contains common functions that interact with the macro interpreter to - query or set information. Other API functions are available in the tools - classes: - - - `haxe.macro.ComplexTypeTools` - - `haxe.macro.ExprTools` - - `haxe.macro.TypeTools` - - - - - Position of the first character. - - - - Position of the last character. - - - - Reference to the filename. - - - Represents a position in a file. - - - - - - - - - - Represents an integer literal. - - - - Represents a float literal. - - - - - Represents a string literal. - - - - Represents an identifier. - - - - - Represents a regular expression literal. - - Example: `~/haxe/i` - - - The first argument `haxe` is a string with regular expression pattern. - - The second argument `i` is a string with regular expression flags. - - @see https://haxe.org/manual/std-regex.html - - Represents a constant. - @see https://haxe.org/manual/expression-constants.html - - - `+` - `*` - `/` - `-` - `=` - `==` - `!=` - `]]> - =`]]> - - - - `|` - `^` - - `||` - - >`]]> - >>`]]> - `%` - - - >=` `>>>=` `|=` `&=` `^=` `%=`]]> - - `...` - `]]> - `in` - A binary operator. - @see https://haxe.org/manual/types-numeric-operators.html - - - `++` - `--` - `!` - `-` - `~` - `...` - A unary operator. - @see https://haxe.org/manual/types-numeric-operators.html - - - - - - - The position of the expression. - - - - The expression kind. - - - Represents a node in the AST. - @see https://haxe.org/manual/macro-reification-expression.html - - - - Represents a AST node identical to `Expr`, but it allows constraining the - type of accepted expressions. - @see https://haxe.org/manual/macro-ExprOf.html - - - - - - The value expressions of the case. - - - - - The optional guard expressions of the case, if available. - - - - - The expression of the case, if available. - - - Represents a switch case. - @see https://haxe.org/manual/expression-switch.html - - - - - - - The type-hint of the variable, if available. - - - - The name of the variable. - - - - - Metadata associatied with the variable, if available. - - - - - Whether or not the variable can be assigned to. - - - - - The expression of the variable, if available. - - - Represents a variable in the AST. - @see https://haxe.org/manual/expression-var.html - - - - - - - The type of the catch. - - - - The name of the catch variable. - - - - The expression of the catch. - - - Represents a catch in the AST. - @see https://haxe.org/manual/expression-try-catch.html - - - No quotes - Double quotes `"` - Represents the way something is quoted. - - - - - - - - How the field name is quoted. - - - - The name of the field. - - - - The field expression. - - - Represents the field of an object declaration. - - - Anonymous function - - - - Named function - - Arrow function - Represents function kind in the AST - - - - - A constant. - - - - - Array access `e1[e2]`. - - - - - - Binary operator `e1 op e2`. - - - - - Field access on `e.field`. - - - - Parentheses `(e)`. - - - - An object declaration. - - - - An array declaration `[el]`. - - - - - A call `e(params)`. - - - - - A constructor call `new t(params)`. - - - - - - An unary operator `op` on `e`: - - - `e++` (`op = OpIncrement, postFix = true`) - - `e--` (`op = OpDecrement, postFix = true`) - - `++e` (`op = OpIncrement, postFix = false`) - - `--e` (`op = OpDecrement, postFix = false`) - - `-e` (`op = OpNeg, postFix = false`) - - `!e` (`op = OpNot, postFix = false`) - - `~e` (`op = OpNegBits, postFix = false`) - - - - Variable declarations. - - - - - A function declaration. - - - - A block of expressions `{exprs}`. - - - - - A `for` expression. - - - - - - An `if (econd) eif` or `if (econd) eif else eelse` expression. - - - - - - Represents a `while` expression. - - When `normalWhile` is `true` it is `while (...)`. - - When `normalWhile` is `false` it is `do {...} while (...)`. - - - - - - Represents a `switch` expression with related cases and an optional. - `default` case if `edef != null`. - - - - - Represents a `try`-expression with related catches. - - - - A `return` or `return e` expression. - - A `break` expression. - A `continue` expression. - - - An `untyped e` source code. - - - - A `throw e` expression. - - - - - A `cast e` or `cast (e, m)` expression. - - - - - Used internally to provide completion. - - - - Used internally to provide completion. - - - - - - A `(econd) ? eif : eelse` expression. - - - - - A `(e:t)` expression. - - - - - A `@m e` expression. - - - - - An `expr is Type` expression. - - Represents the kind of a node in the AST. - - - - - - - - - - - - Represents the type path. - - - - - Represents a function type. - @see https://haxe.org/manual/types-function.html - - - - Represents an anonymous structure type. - @see https://haxe.org/manual/types-anonymous-structure.html - - - - Void)` part in - `(Int -> Void) -> String`.]]> - - - - - Iterable`. - The array `p` holds the type paths to the given types. - @see https://haxe.org/manual/type-system-extensions.html]]> - - - - Represents an optional type. - - - - - Represents a type with a name. - - - - - - Represents a type syntax in the AST. - - - - - - - Sub is set on module sub-type access: - `pack.Module.Type` has `name = "Module"`, `sub = "Type"`, if available. - - - - - Optional parameters of the type path. - - - - Represents the package of the type path. - - - - The name of the type path. - - - Represents a type path in the AST. - - - - - `. In that case the value is `TPExpr` while - in the normal case it's `TPType`.]]> - - - - - - - The optional parameters of the type parameter. - - - - The name of the type parameter. - - - - - The metadata of the type parameter. - - - - - The optional constraints of the type parameter. - - - Represents a type parameter declaration in the AST. - - - - - - - The return type-hint of the function, if available. - - - - - An optional list of function parameter type declarations. - - - - - The expression of the function body, if available. - - - - A list of function arguments. - - - Represents a function in the AST. - - - - - - - The optional value of the function argument, if available. - - - - - The type-hint of the function argument, if available. - - - - - Whether or not the function argument is optional. - - - - The name of the function argument. - - - - - The metadata of the function argument. - - - Represents a function argument in the AST. - - - - - - The position of the metadata entry. - - - - - The optional parameters of the metadata entry. - - - - The name of the metadata entry. - - - Represents a metadata entry in the AST. - - - - Represents metadata in the AST. - - - - - - The position of the field. - - - - The name of the field. - - - - - The optional metadata of the field. - - - - The kind of the field. - - - - - The documentation of the field, if available. If the field has no - documentation, the value is `null`. - - - - - The access modifiers of the field. By default fields have private access. - @see https://haxe.org/manual/class-field-access-modifier.html - - - Represents a field in the AST. - - - Public access modifier, grants access from anywhere. - @see https://haxe.org/manual/class-field-visibility.html - Private access modifier, grants access to class and its sub-classes - only. - @see https://haxe.org/manual/class-field-visibility.html - Static access modifier. - Override access modifier. - @see https://haxe.org/manual/class-field-override.html - Dynamic (re-)bindable access modifier. - @see https://haxe.org/manual/class-field-dynamic.html - Inline access modifier. Allows expressions to be directly inserted in - place of calls to them. - @see https://haxe.org/manual/class-field-inline.html - Macro access modifier. Allows expression macro functions. These are - normal functions which are executed as soon as they are typed. - Final access modifier. For functions, they can not be overridden. For - variables, it means they can be assigned to only once. - Extern access modifier. - Abstract access modifier. - Overload access modifier. - Represents an access modifier. - @see https://haxe.org/manual/class-field-access-modifier.html - - - - - - - Represents a variable field type. - - - - Represents a function field type. - - - - - - - Represents a property with getter and setter field type. - - Represents the field type in the AST. - - - - - - The position to the type definition. - - - - - The parameter type declarations of the type definition. - - - - The package of the type definition. - - - - The name of the type definition. - - - - - The optional metadata of the type definition. - - - - The kind of the type definition. - - - - - Whether or not the type is extern. - - - - The fields of the type definition. - - - - - The documentation of the type, if available. If the type has no - documentation, the value is `null`. - - - Represents a type definition. - - - Represents an enum kind. - Represents a structure kind. - - - - - - - Represents a class kind. - - - - Represents an alias/typedef kind. - - - - - - Represents an abstract kind. - - - - - Represents a module-level field. - - Represents a type definition kind. - - - - - - The position of the error. - - - - - - - - - Instantiates an error with given message and position. - - This error can be used to handle or produce compilation errors in macros. - - - Represents a default import `import c`. - - - Represents the alias import `import c as alias`. - - Represents the wildcard import `import *`. - Represents the import mode. - @see https://haxe.org/manual/type-system-import.html - - - - - - - - - The path to the import expression. - - - - The mode of the import expression. - - - Represents the import expression. - - - - - - - - Converts expression `e` to a human-readable String representation. - - The result is guaranteed to be valid Haxe code, but there may be - differences from the original lexical syntax. - - - - - - - - - - - Calls function `f` on each sub-expression of `e`. - - If `e` has no sub-expressions, this operation has no effect. - - Otherwise `f` is called once per sub-expression of `e`, with the - sub-expression as argument. These calls are done in order of the - sub-expression declarations. - - This method does not call itself recursively. It should instead be used - in a recursive function which handles the expression nodes of interest. - - Usage example: - ```haxe - function findStrings(e:Expr) { - switch(e.expr) { - case EConst(CString(s)): - // handle s - case _: - ExprTools.iter(e, findStrings); - } - } - ``` - - - - - - - - - - - Transforms the sub-expressions of `e` by calling `f` on each of them. - - If `e` has no sub-expressions, this operation returns `e` unchanged. - - Otherwise `f` is called once per sub-expression of `e`, with the - sub-expression as argument. These calls are done in order of the - sub-expression declarations. - - This method does not call itself recursively. It should instead be used - in a recursive function which handles the expression nodes of interest. - - Usage example: - ```haxe - function capitalizeStrings(e:Expr) { - return switch(e.expr) { - case EConst(CString(s)): - { expr: EConst(CString(s.toUpperCase())), pos: e.pos }; - case _: - ExprTools.map(e, capitalizeStrings); - } - } - ``` - - - - - - - `, `...` and assignments - - Parentheses, metadata and the `untyped` keyword are ignored. - - If any non-value is encountered, an exception of type `String` is - thrown. - - If `e` is null, the result is unspecified.]]> - - - - - - - - - - - - - - - - - - This class provides some utility methods to work with expressions. It is - best used through 'using haxe.macro.ExprTools' syntax and then provides - additional methods on haxe.macro.Expr instances. - - While mainly intended to be used in macros, it works in non-macro code as - well. - - - - - - - - - - - - - - - - - - - This class provides functions on expression arrays for convenience. For a - detailed reference on each method, see the documentation of ExprTools. - - - - - - - - - Converts an array of Strings `sl` to a field expression. - - If `sl` has no elements, the result is null. - - If `sl` has one element, the result is `EConst(CIdent(sl[0])`. - - Otherwise the result is a chain of `EField` nodes. - - If `sl` is null, the result is unspecified. - - - - - - - - Converts a path given by package `pack` and name `name` to a `String` - separated by dots. - - If `pack` has no elements, the result is `name`. - - If `pack` is null, the result is unspecified. - - Otherwise the elements of `pack` are joined with a separating dot, with - an appended dot separating the result from `name`. - - - - - - This class provides some utility methods to work with strings in macro - context. - - - - - - - - - - - - Like `Context.getPosInfos`, except this method is available on all platforms. - - - - - - - - - - - Like `Context.makePosition`, except this method is available on all platforms. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { printPackage : true } - - - - - - - - - - - - - - - - { prefix : "" } - - - - - - - - - - - { tabString : "\t" } - - This class provides some utility methods to convert elements from the - macro context to a human-readable String representation. - - - - ]]> - hide - - - - hide - - - - hide - - - - hide - - - - hide - - - - hide - - - - - - - Represents a reference to internal compiler structure. It exists to avoid - expensive encoding if it is not required and to ensure that physical - equality remains intact. - - A structure is only encoded when user requests it through `ref.get()`. - - - - - Represents a monomorph. - - @see https://haxe.org/manual/types-monomorph.html - - - - - Represents an enum instance. - - @see https://haxe.org/manual/types-enum-instance.html - - - - - Represents a class instance. - - @see https://haxe.org/manual/types-class-instance.html - - - - - Represents a typedef. - - @see https://haxe.org/manual/type-system-typedef.html - - - - - - - - - Represents a function type. - - @see https://haxe.org/manual/types-function.html - - - - Represents an anonymous structure type. - - @see https://haxe.org/manual/types-anonymous-structure.html - - - - Represents Dynamic. - - @see https://haxe.org/manual/types-dynamic.html - - - - Used internally by the compiler to delay some typing. - - - - - Represents an abstract type. - - @see https://haxe.org/manual/types-abstract.html - - Represents a type. - - - - - - The status/kind of the structure. - - - - The class fields of the structure. - - - Represents information for anonymous structure types. - - - A closed structure is considered complete. That is, no further fields - can be added to it. - An open structure allows having additional fields added to it, which is - used during type inference. It is closed upon unification. - A const structure is one that appears directly in syntax. It cannot be - assigned to a smaller structure type (that is, it does not allow - structural sub-typing). - - - Represents a structure which extends one or multiple structures defined - in `tl`. - - @see https://haxe.org/manual/type-system-extensions.html - - - - A structure that represents the static fields of a class. - - - - A structure that represents the constructors of an enum. - - - - A structure that represents the static fields of an abstract. - - Represents the kind of the anonymous structure type. - - - - - - The type of the type parameter. It is guaranteed to be a `TInst` with a - `KTypeParameter` kind. - - - - The name of the type parameter. - - - Represents the declaration of type parameters. - - - - - - The type of the class field. - - - - The position of the class field. - - - - The type parameters of the class field. - - - - The overload fields of the class field. - - - - The name of the class field. - - - - The metadata of the class field. - - - - The class field kind. - - - - Whether or not the class field is public. - - - - Whether or not the class field is final. - - - - Whether or not the class field is extern. - - - - Whether or not the class field is abstract. - - - - Returns the typed expression of the class field. - - - - The associated documentation of the class field. - - - Represents a class field. - - - - - - The type of the enum constructor. - - - - The position of the enum constructor. - - - - The type parameters of the enum constructor. - - - - The name of the enum constructor. - - - - The metadata of the enum constructor. - - - - The index of the enum constructor, i.e. in which position it appears - in the syntax. - - - - The associated documentation of the enum constructor. - - - Represents an enum constructor. - - - A normal class. - - - A type parameter class with a set of constraints. - - - - A class containing module fields. - - - - A special kind of class to encode expressions into type parameters. - - A `@:generic` base class. - - - - A concrete `@:generic` instance, referencing the original class and the - applied type parameters. - - A special class for `haxe.macro.MacroType`. - - @deprecated - - - An implementation class of an abstract, i.e. where all its run-time code - is. - - A `@:genericBuild` class - Represents the kind of a class. - - - - - - The position of the type. - - - - The type parameters of the type. - - - - The package of the type. - - - - The name of the type. - - - - The module name of the type, which might be different. - - - - The metadata of the type. - - - - Whether or not the type is private. - - - - Whether or not the type is extern. - - - - Allows excluding the type from compilation. - - - - The associated documentation of the class field. - - - The information that all types (`ClassType`, `EnumType`, `DefType`, - `AbstractType`) have in common. - - - - - - - - - The parent class and its type parameters, if available. - - - - The static fields of the class. - - - - The position of the type. - - - - The type parameters of the type. - - - - The package of the type. - - - - The list of fields that have override status. - - - - The name of the type. - - - - The module name of the type, which might be different. - - - - The metadata of the type. - - - - The kind of the class. - - - - Whether or not the type is private. - - - - If true the type is an interface, otherwise it is a class. - - - - If true the class is final and cannot be extended. - - - - Whether or not the type is extern. - - - - If true the class is abstract and cannot be instantiated directly. - - - - - - - The implemented interfaces and their type parameters. - - - - The `__init__` expression of the class, if available. - - - - The member fields of the class. - - - - Allows excluding the type from compilation. - - - - The associated documentation of the class field. - - - - The constructor of the class, if available. - - - Represents a class type. - - - - - - The position of the type. - - - - The type parameters of the type. - - - - The package of the type. - - - - An ordered list of enum constructor names. - - - - The name of the type. - - - - The module name of the type, which might be different. - - - - The metadata of the type. - - - - Whether or not the type is private. - - - - Whether or not the type is extern. - - - - Allows excluding the type from compilation. - - - - The associated documentation of the class field. - - - - - - - The available enum constructors. - - - Represents an enum type. - - - - - - The target type of the typedef. - - - - The position of the type. - - - - The type parameters of the type. - - - - The package of the type. - - - - The name of the type. - - - - The module name of the type, which might be different. - - - - The metadata of the type. - - - - Whether or not the type is private. - - - - Whether or not the type is extern. - - - - Allows excluding the type from compilation. - - - - The associated documentation of the class field. - - - Represents a typedef. - - - - - - - - - - The defined unary operators of the abstract. - - - - The underlying type of the abstract. - - - - - - - The available implicit to-casts of the abstract. - - @see https://haxe.org/manual/types-abstract-implicit-casts.html - - - - The method used for resolving unknown field access, if available. - - - - The method used for resolving unknown field access, if available. - - - - The position of the type. - - - - The type parameters of the type. - - - - The package of the type. - - - - The name of the type. - - - - The module name of the type, which might be different. - - - - The metadata of the type. - - - - Whether or not the type is private. - - - - Whether or not the type is extern. - - - - The implementation class of the abstract, if available. - - - - - - - The available implicit from-casts of the abstract. - - @see https://haxe.org/manual/types-abstract-implicit-casts.html - - - - Allows excluding the type from compilation. - - - - The associated documentation of the class field. - - - - - - - The defined binary operators of the abstract. - - - - The defined array-access fields of the abstract. - - - Represents an abstract type. - - - - - - - - - Removes all `name` metadata entries from the origin of `this` - MetaAccess. - - This method might clear several metadata entries of the same name. - - If a `Metadata` array is obtained through a call to `get`, a subsequent - call to `remove` has no effect on that array. - - If `name` is null, compilation fails with an error. - - - - - - - Tells if the origin of `this` MetaAccess has a `name` metadata entry. - - If `name` is null, compilation fails with an error. - - - - Return the wrapped `Metadata` array. - - Modifying this array has no effect on the origin of `this` MetaAccess. - The `add` and `remove` methods can be used for that. - - - - - - - Extract metadata entries by given `name`. - - If there's no metadata with such name, empty array `[]` is returned. - - If `name` is null, compilation fails with an error. - - - - - - - - - Adds the metadata specified by `name`, `params` and `pos` to the origin - of `this` MetaAccess. - - Metadata names are not unique during compilation, so this method never - overwrites a previous metadata. - - If a `Metadata` array is obtained through a call to `get`, a subsequent - call to `add` has no effect on that array. - - If any argument is null, compilation fails with an error. - - - MetaAccess is a wrapper for the `Metadata` array. It can be used to add - metadata to and remove metadata from its origin. - - - - - - A variable of property, depending on the `read` and `write` values. - - - - A method - - Represents a field kind. - - - Normal access (`default`). - Private access (`null`). - No access (`never`). - Unused. - Access through accessor function (`get`, `set`, `dynamic`). - Inline access (`inline`). - - - - Failed access due to a `@:require` metadata. - - Access is only allowed from the constructor. - Represents the variable accessor. - - - A normal method. - An inline method. - - @see https://haxe.org/manual/class-field-inline.html - A dynamic, rebindable method. - - @see https://haxe.org/manual/class-field-dynamic.html - A macro method. - Represents the method kind. - - - - - - An `Int` literal. - - - - A `Float` literal, represented as String to avoid precision loss. - - - - A `String` literal. - - - - A `Bool` literal. - - The constant `null`. - The constant `this`. - The constant `super`. - Represents typed constant. - - - - - - The type of the variable. - - - - The name of the variable. - - - - The metadata of the variable. - - - - The unique ID of the variable. - - - - - - - Special information which is internally used to keep track of closure. - information - - - - Whether or not the variable has been captured by a closure. - - - Represents a variable in the typed AST. - - - - - A class. - - - - An enum. - - - - A typedef. - - - - An abstract. - - Represents a module type. These are the types that can be declared in a Haxe - module and which are passed to the generators (except `TTypeDecl`). - - - - - - The return type of the function. - - - - The expression of the function body. - - - - - - - A list of function arguments identified by an argument variable `v` and - an optional initialization `value`. - - - Represents a function in the typed AST. - - - - - - - Access of field `cf` on a class instance `c` with type parameters - `params`. - - - - - Static access of a field `cf` on a class `c`. - - - - Access of field `cf` on an anonymous structure. - - - - Dynamic field access of a field named `s`. - - - - - - - - Closure field access of field `cf` on a class instance `c` with type - parameters `params`. - - - - - Field access to an enum constructor `ef` of enum `e`. - - Represents the kind of field access in the typed AST. - - - - - A constant. - - - - Reference to a local variable `v`. - - - - - Array access `e1[e2]`. - - - - - - Binary operator `e1 op e2`. - - - - - Field access on `e` according to `fa`. - - - - Reference to a module type `m`. - - - - Parentheses `(e)`. - - - - - - - An object declaration. - - - - An array declaration `[el]`. - - - - - A call `e(el)`. - - - - - - (el)`.]]> - - - - - - An unary operator `op` on `e`: - - * e++ (op = OpIncrement, postFix = true) - * e-- (op = OpDecrement, postFix = true) - * ++e (op = OpIncrement, postFix = false) - * --e (op = OpDecrement, postFix = false) - * -e (op = OpNeg, postFix = false) - * !e (op = OpNot, postFix = false) - * ~e (op = OpNegBits, postFix = false) - - - - A function declaration. - - - - - A variable declaration `var v` or `var v = expr`. - - - - A block declaration `{el}`. - - - - - - A `for` expression. - - - - - - An `if(econd) eif` or `if(econd) eif else eelse` expression. - - - - - - Represents a `while` expression. - When `normalWhile` is `true` it is `while (...)`. - When `normalWhile` is `false` it is `do {...} while (...)`. - - - - - - - - - Represents a `switch` expression with related cases and an optional - `default` case if edef != null. - - - - - - - - Represents a `try`-expression with related catches. - - - - A `return` or `return e` expression. - - A `break` expression. - A `continue` expression. - - - A `throw e` expression. - - - - - A `cast e` or `cast (e, m)` expression. - - - - - A `@m e1` expression. - - - - - - Access to an enum parameter (generated by the pattern matcher). - - - - Access to an enum index (generated by the pattern matcher). - - - - An unknown identifier. - - Represents kind of a node in the typed AST. - - - - - - The type of the expression. - - - - The position of the expression. - - - - The expression kind. - - - Represents a typed AST node. - - - - - - - - - - - - - - - - Returns a syntax-level type corresponding to Type `t`. - - This function is mostly inverse to `ComplexTypeTools.toType`, but may - lose some information on types that do not have a corresponding syntax - version, such as monomorphs. In these cases, the result is null. - - If `t` is null, an internal exception is thrown. - - - - - - - - - - - - - - - - - - { isStatic : false } - Resolves the field named `name` on class `c`. - - If `isStatic` is true, the classes' static fields are checked. Otherwise - the classes' member fields are checked. - - If the field is found, it is returned. Otherwise if `c` has a super - class, `findField` recursively checks that super class. Otherwise null - is returned. - - If any argument is null, the result is unspecified. - - This class provides some utility methods to work with types. It is - best used through 'using haxe.macro.TypeTools' syntax and then provides - additional methods on haxe.macro.Type instances. - - - - - - - - - - - - - - - - - - - - - - Transforms the sub-expressions of `e` by calling `f` on each of them. - - See `haxe.macro.ExprTools.map` for details on expression mapping in - general. This function works the same way, but with a different data - structure. - - - - - - - - - - - Calls function `f` on each sub-expression of `e`. - - See `haxe.macro.ExprTools.iter` for details on iterating expressions in - general. This function works the same way, but with a different data - structure. - - - - - - - - - - - - - - - - - - - Transforms the sub-expressions of `e` by calling `f` on each of them. - Additionally, types are mapped using `ft` and variables are mapped using - `fv`. - - See `haxe.macro.ExprTools.map` for details on expression mapping in - general. This function works the same way, but with a different data - structure. - - This class provides some utility methods to work with typed expressions. - It is best used through 'using haxe.macro.TypedExprTools' syntax and then - provides additional methods on `haxe.macro.TypedExpr` instances. - - - - - - - - - - - - a.b - - - - - - - - - - - - a.b - - - - - - - - - - - - - - a.b - - <_hx_set set="method" line="49" static="1"> - - - - - - - a.b - - - - - - - - - - - - a.b - - <_hx_set set="method" line="49" static="1"> - - - - - - - a.b - - - - - - - - - - - - - - a.b - - - - - - - - - - - - a.b - - - - - - - - - - - - - - a.b - - - - - - - - - - - - a.b - - - - - - - - - - - - - - a.b - - - - - - - - - - - - a.b - - - - - - The `haxe.xml.Access` API helps providing a fast dot-syntax access to the - most common `Xml` methods. - - - - - - - - - The name of the current element. This is the same as `Xml.nodeName`. - - - - - - - - The inner PCDATA or CDATA of the node. - - An exception is thrown if there is no data or if there not only data - but also other nodes. - - - - The XML string built with all the sub nodes, excluding the current one. - - - - John")); - var user = access.node.user; - var name = user.node.name; - trace(name.innerData); // John - - // Uncaught Error: Document is missing element password - var password = user.node.password; - ```]]> - - - - - - - - - - - - " - )); - - var users = fast.node.users; - for (user in users.nodes.user) { - trace(user.att.name); - } - ```]]> - - - - - - - - ")); - var user = f.node.user; - if (user.has.name) { - trace(user.att.name); // Mark - } - ```]]> - - - - - - - - Check the existence of an attribute with the given name. - - - - - - - - 31")); - var user = f.node.user; - if (user.hasNode.age) { - trace(user.node.age.innerData); // 31 - } - ```]]> - - - - - - - - The list of all sub-elements which are the nodes with type `Xml.Element`. - - - - - - <_new public="1" get="inline" set="null" line="209" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - The name of the current element. This is the same as `Xml.nodeName`. - - - - - - - - The inner PCDATA or CDATA of the node. - - An exception is thrown if there is no data or if there not only data - but also other nodes. - - - - The XML string built with all the sub nodes, excluding the current one. - - - - John")); - var user = access.node.user; - var name = user.node.name; - trace(name.innerData); // John - - // Uncaught Error: Document is missing element password - var password = user.node.password; - ```]]> - - - - - - - - - - - - " - )); - - var users = fast.node.users; - for (user in users.nodes.user) { - trace(user.att.name); - } - ```]]> - - - - - - - - ")); - var user = f.node.user; - if (user.has.name) { - trace(user.att.name); // Mark - } - ```]]> - - - - - - - - Check the existence of an attribute with the given name. - - - - - - - - 31")); - var user = f.node.user; - if (user.hasNode.age) { - trace(user.node.age.innerData); // 31 - } - ```]]> - - - - - - - - The list of all sub-elements which are the nodes with type `Xml.Element`. - - - - - - <_new public="1" get="inline" set="null" line="209" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - -
      - - - cast 14 - - - -
      - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - -
      -
      - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - -
      - - - cast 14 - - - -
      - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - -
      - - - - - - - - { pretty : false } - Convert `Xml` to string representation. - - Set `pretty` to `true` to prettify the result. - - - - - - - - - - - - - - - - - - - - - - This class provides utility methods to convert Xml instances to - String representation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, -1, -1] - - - - [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258] - - - - [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, -1, -1] - - - - [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577] - - - - [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] - - - - null - - - - - - - - { bufsize : 65536 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { crc : true, header : true } - - A pure Haxe implementation of the ZLIB Inflate algorithm which allows reading compressed data without any platform-specific support. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__interp public="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new Map() - allows to check for #if / #else in code - - - - activate JSON compatiblity - - - - allow types declarations - - - - allow haxe metadata declarations - - - - resume from parsing errors (when parsing incomplete code, during completion for example) - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { origin : "hscript" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { origin : "hscript" } - - - - - - - - - - - - - - - <_token set="method" line="1577"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { deltaTime : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - { type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - - - - - cast 0 - - - - - - - - - - - - - - - - - { file : null, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - - - - - cast 0 - - - - - - - - - - - - - - - - - - - - - - - { value : 0, axis : 0, button : 0, id : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - - - - - - - - { y : 0, x : 0, value : 0, index : 0, id : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - - - - - - - - - - - - - - { modifier : 0, keyCode : 0, windowID : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - { movementY : 0, movementX : 0, button : 0, y : 0, x : 0, windowID : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - { type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - - { z : 0, y : 0, x : 0, id : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - - - - - cast 0 - - - - - - - - - - - - - - - - - - - - - - - - { length : 0, start : 0, text : null, windowID : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { device : 0, pressure : 0, dy : 0, dx : 0, id : 0, y : 0, x : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - - - - { y : 0, x : 0, height : 0, width : 0, windowID : 0, type : null } - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - - - [] - - - - 48000 - - - - 3 - - - - 100 - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - { buffers : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime.media.AudioBuffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new BytesBuffer() - - - - - - - - - - - - - - - - - - - - - - - - - - - - { binary : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - <__extensionObjects static="1"> - - - - <__extensionObjectConstructors expr="new Map<String,Void>()" line="39" static="1"> - - - - - ()]]> - - <__lastContextID expr="0" line="40" static="1"> - - 0 - - <__supportedExtensions static="1"> - - - 0x00000100 - - - - 0x00000400 - - - - 0x00004000 - - - - 0x0000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0 - - - - 1 - - - - 0x0300 - - - - 0x0301 - - - - 0x0302 - - - - 0x0303 - - - - 0x0304 - - - - 0x0305 - - - - 0x0306 - - - - 0x0307 - - - - 0x0308 - - - - 0x8006 - - - - 0x8009 - - - - 0x8009 - - - - 0x883D - - - - 0x800A - - - - 0x800B - - - - 0x80C8 - - - - 0x80C9 - - - - 0x80CA - - - - 0x80CB - - - - 0x8001 - - - - 0x8002 - - - - 0x8003 - - - - 0x8004 - - - - 0x8005 - - - - 0x8892 - - - - 0x8893 - - - - 0x8894 - - - - 0x8895 - - - - 0x88E0 - - - - 0x88E4 - - - - 0x88E8 - - - - 0x8764 - - - - 0x8765 - - - - 0x8626 - - - - 0x0404 - - - - 0x0405 - - - - 0x0408 - - - - 0x0DE1 - - - - 0x0B44 - - - - 0x0BE2 - - - - 0x0BD0 - - - - 0x0B90 - - - - 0x0B71 - - - - 0x0C11 - - - - 0x8037 - - - - 0x809E - - - - 0x80A0 - - - - 0 - - - - 0x0500 - - - - 0x0501 - - - - 0x0502 - - - - 0x0505 - - - - 0x0900 - - - - 0x0901 - - - - 0x0B21 - - - - 0x846D - - - - 0x846E - - - - 0x0B45 - - - - 0x0B46 - - - - 0x0B70 - - - - 0x0B72 - - - - 0x0B73 - - - - 0x0B74 - - - - 0x0B91 - - - - 0x0B92 - - - - 0x0B94 - - - - 0x0B95 - - - - 0x0B96 - - - - 0x0B97 - - - - 0x0B93 - - - - 0x0B98 - - - - 0x8800 - - - - 0x8801 - - - - 0x8802 - - - - 0x8803 - - - - 0x8CA3 - - - - 0x8CA4 - - - - 0x8CA5 - - - - 0x0BA2 - - - - 0x0C10 - - - - 0x0C22 - - - - 0x0C23 - - - - 0x0CF5 - - - - 0x0D05 - - - - 0x0D33 - - - - 0x0D3A - - - - 0x0D50 - - - - 0x0D52 - - - - 0x0D53 - - - - 0x0D54 - - - - 0x0D55 - - - - 0x0D56 - - - - 0x0D57 - - - - 0x2A00 - - - - 0x8038 - - - - 0x8069 - - - - 0x80A8 - - - - 0x80A9 - - - - 0x80AA - - - - 0x80AB - - - - 0x86A2 - - - - 0x86A3 - - - - 0x1100 - - - - 0x1101 - - - - 0x1102 - - - - 0x8192 - - - - 0x1400 - - - - 0x1401 - - - - 0x1402 - - - - 0x1403 - - - - 0x1404 - - - - 0x1405 - - - - 0x1406 - - - - 0x0140C - - - - 0x1902 - - - - 0x1906 - - - - 0x1907 - - - - 0x1908 - - - - 0x1909 - - - - 0x190A - - - - 0x8033 - - - - 0x8034 - - - - 0x8363 - - - - 0x8B30 - - - - 0x8B31 - - - - 0x8869 - - - - 0x8DFB - - - - 0x8DFC - - - - 0x8B4D - - - - 0x8B4C - - - - 0x8872 - - - - 0x8DFD - - - - 0x8B4F - - - - 0x8B80 - - - - 0x8B82 - - - - 0x8B83 - - - - 0x8B85 - - - - 0x8B86 - - - - 0x8B87 - - - - 0x8B89 - - - - 0x8B8A - - - - 0x8B8C - - - - 0x8B8D - - - - 0x0200 - - - - 0x0201 - - - - 0x0202 - - - - 0x0203 - - - - 0x0204 - - - - 0x0205 - - - - 0x0206 - - - - 0x0207 - - - - 0x1E00 - - - - 0x1E01 - - - - 0x1E02 - - - - 0x1E03 - - - - 0x150A - - - - 0x8507 - - - - 0x8508 - - - - 0x1F00 - - - - 0x1F01 - - - - 0x1F02 - - - - 0x1F03 - - - - 0x2600 - - - - 0x2601 - - - - 0x2700 - - - - 0x2701 - - - - 0x2702 - - - - 0x2703 - - - - 0x2800 - - - - 0x2801 - - - - 0x2802 - - - - 0x2803 - - - - 0x1702 - - - - 0x8513 - - - - 0x8514 - - - - 0x8515 - - - - 0x8516 - - - - 0x8517 - - - - 0x8518 - - - - 0x8519 - - - - 0x851A - - - - 0x851C - - - - 0x84C0 - - - - 0x84C1 - - - - 0x84C2 - - - - 0x84C3 - - - - 0x84C4 - - - - 0x84C5 - - - - 0x84C6 - - - - 0x84C7 - - - - 0x84C8 - - - - 0x84C9 - - - - 0x84CA - - - - 0x84CB - - - - 0x84CC - - - - 0x84CD - - - - 0x84CE - - - - 0x84CF - - - - 0x84D0 - - - - 0x84D1 - - - - 0x84D2 - - - - 0x84D3 - - - - 0x84D4 - - - - 0x84D5 - - - - 0x84D6 - - - - 0x84D7 - - - - 0x84D8 - - - - 0x84D9 - - - - 0x84DA - - - - 0x84DB - - - - 0x84DC - - - - 0x84DD - - - - 0x84DE - - - - 0x84DF - - - - 0x84E0 - - - - 0x2901 - - - - 0x812F - - - - 0x8370 - - - - 0x8B50 - - - - 0x8B51 - - - - 0x8B52 - - - - 0x8B53 - - - - 0x8B54 - - - - 0x8B55 - - - - 0x8B56 - - - - 0x8B57 - - - - 0x8B58 - - - - 0x8B59 - - - - 0x8B5A - - - - 0x8B5B - - - - 0x8B5C - - - - 0x8B5E - - - - 0x8B60 - - - - 0x8622 - - - - 0x8623 - - - - 0x8624 - - - - 0x8625 - - - - 0x886A - - - - 0x8645 - - - - 0x889F - - - - 0x8B9A - - - - 0x8B9B - - - - 0x8642 - - - - 0x8861 - - - - 0x8B81 - - - - 0x8B84 - - - - 0x8B88 - - - - 0x8DFA - - - - 0x8DF8 - - - - 0x8DF9 - - - - 0x8DF0 - - - - 0x8DF1 - - - - 0x8DF2 - - - - 0x8DF3 - - - - 0x8DF4 - - - - 0x8DF5 - - - - 0x8D40 - - - - 0x8D41 - - - - 0x8056 - - - - 0x8057 - - - - 0x8D62 - - - - 0x81A5 - - - - 0x1901 - - - - 0x8D48 - - - - 0x84F9 - - - - 0x8D42 - - - - 0x8D43 - - - - 0x8D44 - - - - 0x8D50 - - - - 0x8D51 - - - - 0x8D52 - - - - 0x8D53 - - - - 0x8D54 - - - - 0x8D55 - - - - 0x8CD0 - - - - 0x8CD1 - - - - 0x8CD2 - - - - 0x8CD3 - - - - 0x8CE0 - - - - 0x8D00 - - - - 0x8D20 - - - - 0x821A - - - - 0 - - - - 0x8CD5 - - - - 0x8CD6 - - - - 0x8CD7 - - - - 0x8CD9 - - - - 0x8CDD - - - - 0x8CA6 - - - - 0x8CA7 - - - - 0x84E8 - - - - 0x0506 - - - - 0x9240 - - - - 0x9241 - - - - 0x9242 - - - - 0x9243 - - - - 0x9244 - - - - 0x0C02 - - - - 0x0CF2 - - - - 0x0CF3 - - - - 0x0CF4 - - - - 0x0D02 - - - - 0x0D03 - - - - 0x0D04 - - - - 0x806A - - - - 0x806D - - - - 0x806E - - - - 0x8073 - - - - 0x80E8 - - - - 0x80E9 - - - - 0x84FD - - - - 0x8B49 - - - - 0x8B4A - - - - 0x88FF - - - - 0x8904 - - - - 0x8905 - - - - 0x8B4B - - - - 0x8B8B - - - - 0x8C89 - - - - 0x85B5 - - - - 0x9122 - - - - 0x9125 - - - - 0x9111 - - - - 0x8D6B - - - - 0x1903 - - - - 0x8051 - - - - 0x8058 - - - - 0x8059 - - - - 0x806F - - - - 0x8072 - - - - 0x813A - - - - 0x813B - - - - 0x813C - - - - 0x813D - - - - 0x884C - - - - 0x884D - - - - 0x8C40 - - - - 0x8C41 - - - - 0x8C43 - - - - 0x884E - - - - 0x8814 - - - - 0x8815 - - - - 0x881A - - - - 0x881B - - - - 0x8C1A - - - - 0x8C1D - - - - 0x8C3A - - - - 0x8C3D - - - - 0x8D70 - - - - 0x8D71 - - - - 0x8D76 - - - - 0x8D77 - - - - 0x8D7C - - - - 0x8D7D - - - - 0x8D82 - - - - 0x8D83 - - - - 0x8D88 - - - - 0x8D89 - - - - 0x8D8E - - - - 0x8D8F - - - - 0x8D94 - - - - 0x8D98 - - - - 0x8D99 - - - - 0x8229 - - - - 0x822B - - - - 0x822D - - - - 0x822E - - - - 0x822F - - - - 0x8230 - - - - 0x8231 - - - - 0x8232 - - - - 0x8233 - - - - 0x8234 - - - - 0x8235 - - - - 0x8236 - - - - 0x8237 - - - - 0x8238 - - - - 0x8239 - - - - 0x823A - - - - 0x823B - - - - 0x823C - - - - 0x8F94 - - - - 0x8F95 - - - - 0x8F96 - - - - 0x8F97 - - - - 0x906F - - - - 0x912F - - - - 0x82DF - - - - 0x8368 - - - - 0x8C3B - - - - 0x8C3E - - - - 0x8DAD - - - - 0x84FA - - - - 0x140B - - - - 0x8227 - - - - 0x8228 - - - - 0x8D9F - - - - 0x8865 - - - - 0x8866 - - - - 0x8867 - - - - 0x8C2F - - - - 0x8D6A - - - - 0x8824 - - - - 0x8825 - - - - 0x8826 - - - - 0x8827 - - - - 0x8828 - - - - 0x8829 - - - - 0x882A - - - - 0x882B - - - - 0x882C - - - - 0x882D - - - - 0x882E - - - - 0x882F - - - - 0x8830 - - - - 0x8831 - - - - 0x8832 - - - - 0x8833 - - - - 0x8834 - - - - 0x8CDF - - - - 0x8CE1 - - - - 0x8CE2 - - - - 0x8CE3 - - - - 0x8CE4 - - - - 0x8CE5 - - - - 0x8CE6 - - - - 0x8CE7 - - - - 0x8CE8 - - - - 0x8CE9 - - - - 0x8CEA - - - - 0x8CEB - - - - 0x8CEC - - - - 0x8CED - - - - 0x8CEE - - - - 0x8CEF - - - - 0x8B5F - - - - 0x8B62 - - - - 0x8DC1 - - - - 0x8DC4 - - - - 0x8DC5 - - - - 0x8DCA - - - - 0x8DCB - - - - 0x8DCC - - - - 0x8DCF - - - - 0x8DD2 - - - - 0x8DD3 - - - - 0x8DD4 - - - - 0x8DD7 - - - - 0x8D57 - - - - 0x8919 - - - - 0x88EB - - - - 0x88EC - - - - 0x88ED - - - - 0x88EF - - - - 0x8F36 - - - - 0x8F37 - - - - 0x8F36 - - - - 0x8F37 - - - - 0x8B65 - - - - 0x8B66 - - - - 0x8B67 - - - - 0x8B68 - - - - 0x8B69 - - - - 0x8B6A - - - - 0x8DC6 - - - - 0x8DC7 - - - - 0x8DC8 - - - - 0x8C17 - - - - 0x8F9C - - - - 0x88FD - - - - 0x88FE - - - - 0x8C7F - - - - 0x8C80 - - - - 0x8C83 - - - - 0x8C84 - - - - 0x8C85 - - - - 0x8C88 - - - - 0x8C8A - - - - 0x8C8B - - - - 0x8C8C - - - - 0x8C8D - - - - 0x8C8E - - - - 0x8C8F - - - - 0x8E22 - - - - 0x8E23 - - - - 0x8E24 - - - - 0x8E25 - - - - 0x8210 - - - - 0x8211 - - - - 0x8212 - - - - 0x8213 - - - - 0x8214 - - - - 0x8215 - - - - 0x8216 - - - - 0x8217 - - - - 0x8218 - - - - 0x88F0 - - - - 0x8CA6 - - - - 0x8CA8 - - - - 0x8CA9 - - - - 0x8CAA - - - - 0x8CAB - - - - 0x8CD4 - - - - 0x8D56 - - - - 0x8A11 - - - - 0x8A28 - - - - 0x8A29 - - - - 0x8A2A - - - - 0x8A2B - - - - 0x8A2D - - - - 0x8A2E - - - - 0x8A2F - - - - 0x8A30 - - - - 0x8A31 - - - - 0x8A33 - - - - 0x8A34 - - - - 0x8A36 - - - - 0x8A37 - - - - 0x8A38 - - - - 0x8A3A - - - - 0x8A3B - - - - 0x8A3C - - - - 0x8A3D - - - - 0x8A3E - - - - 0x8A3F - - - - 0x8A40 - - - - 0x8A42 - - - - 0x8A43 - - - - 0x8A44 - - - - 0x8A46 - - - - 0x9112 - - - - 0x9113 - - - - 0x9114 - - - - 0x9115 - - - - 0x9116 - - - - 0x9117 - - - - 0x9118 - - - - 0x9119 - - - - 0x911A - - - - 0x911B - - - - 0x911C - - - - 0x911D - - - - 0x00000001 - - - - 0x1800 - - - - 0x1801 - - - - 0x1802 - - - - 0x8007 - - - - 0x8008 - - - - 0x81A6 - - - - 0x88E1 - - - - 0x88E2 - - - - 0x88E5 - - - - 0x88E6 - - - - 0x88E9 - - - - 0x88EA - - - - 0x8CAC - - - - 0x8CAD - - - - 0xFFFFFFFF - - - - -1 - - - - 0x9247 - - - - <__arrayBufferBinding> - <__elementBufferBinding> - <__contextID> - <__currentProgram> - <__framebufferBinding> - <__initialized> - <__isContextLost> - <__renderbufferBinding> - <__texture2DBinding> - <__textureCubeMapBinding> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__contextLost set="method" line="3278"> - <__createObject set="method" line="3291"> - - - - <__getObjectID set="method" line="3296"> - - - - <__initialize set="method" line="3302"> - - - - "tags=\"haxe,release\"" - - hide - lime.ui.Window - lime._internal.backend.native.NativeCFFI - lime.graphics.opengl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime._internal.backend.native.NativeOpenGLRenderContext - lime.app.Application - lime.graphics.cairo.Cairo - lime.graphics.opengl.GL - lime.graphics.OpenGLRenderContext - lime.graphics.RenderContext - lime.system.DisplayMode - lime.ui.Window - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - - - - - - - cast 0x00000001 - - - - - - - - cast 0x00000002 - - - - - - - - cast 0x00000004 - - - - - - - - cast 0x00000008 - - - - - - - - cast 0x00000010 - - - - - - - - cast 0x00000020 - - - - - - - - cast 0x00000060 - - - - - - - - cast 0x00000080 - - - - - - - - cast 0x00000100 - - - - - - - - cast 0x00000200 - - - - - - - - cast 0x00000400 - - - - - - - - cast 0x00000800 - - - - - - - - cast 0x00001000 - - - - - - - - cast 0x00002000 - - - - - - - - cast 0x00004000 - - - - - - - - cast 0x00008000 - - - - - - - - cast 0x00010000 - - - - - - - - - - - - cast 0x00000001 - - - - - - - - cast 0x00000002 - - - - - - - - cast 0x00000004 - - - - - - - - cast 0x00000008 - - - - - - - - cast 0x00000010 - - - - - - - - cast 0x00000020 - - - - - - - - cast 0x00000060 - - - - - - - - cast 0x00000080 - - - - - - - - cast 0x00000100 - - - - - - - - cast 0x00000200 - - - - - - - - cast 0x00000400 - - - - - - - - cast 0x00000800 - - - - - - - - cast 0x00001000 - - - - - - - - cast 0x00002000 - - - - - - - - cast 0x00004000 - - - - - - - - cast 0x00008000 - - - - - - - - cast 0x00010000 - - - - - - - - - - - - - - { type : null } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("") - - - - (); - for (a in DICTIONARY) { - for (b in DICTIONARY) { - result.push(a + b); - }; - }; - result; -}]]> - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - { decodeData : true } - - - - - - - - { decodeData : true } - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.graphics.ImageBuffer - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - { decodeData : true } - - - - - - - - { decodeData : true } - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.graphics.ImageBuffer - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - { clear : false } - - - - - - - - { clear : false } - - - - - - - - - - - - - - - - - - - - - - { mergeAlpha : false, alphaPoint : null, alphaImage : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.graphics.ImageBuffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { mergeAlpha : false, alphaPoint : null, alphaImage : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { color : null, strength : 1, quality : 1, blurY : 4, blurX : 4 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__boxBlur set="method" line="1432" static="1"> - - - - - - - - - <__boxBlurH get="inline" set="null" line="1452" static="1"> - - - - - - - - - <__boxBlurT get="inline" set="null" line="1499" static="1"> - - - - - - - - - <__calculateSourceOffset get="inline" set="null" line="1551" static="1"> - - - - - - - - * Returns: the offset for translated coordinate in the source image or -1 if the source the coordinate out of the source or destination bounds - * Note: destX and destY should be valid coordinates - - <__getBoxesForGaussianBlur set="method" line="1570" static="1"> - - - - - <__pixelCompare get="inline" set="null" line="1589" static="1"> - - - - - <__translatePixel get="inline" set="null" line="1638" static="1"> - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.graphics.ImageBuffer - lime.math.RGBA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__update set="method" line="1742"> - - - - - - - { rect : null } - - - - - - - - - - hide - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - [1, 171, 205, 293, 57, 373, 79, 137, 241, 27, 391, 357, 41, 19, 283, 265, 497, 469, 443, 421, 25, 191, 365, 349, 335, 161, 155, 149, 9, 278, 269, 261, 505, 245, 475, 231, 449, 437, 213, 415, 405, 395, 193, 377, 369, 361, 353, 345, 169, 331, 325, 319, 313, 307, 301, 37, 145, 285, 281, 69, 271, 267, 263, 259, 509, 501, 493, 243, 479, 118, 465, 459, 113, 446, 55, 435, 429, 423, 209, 413, 51, 403, 199, 393, 97, 3, 379, 375, 371, 367, 363, 359, 355, 351, 347, 43, 85, 337, 333, 165, 327, 323, 5, 317, 157, 311, 77, 305, 303, 75, 297, 294, 73, 289, 287, 71, 141, 279, 277, 275, 68, 135, 67, 133, 33, 262, 260, 129, 511, 507, 503, 499, 495, 491, 61, 121, 481, 477, 237, 235, 467, 232, 115, 457, 227, 451, 7, 445, 221, 439, 218, 433, 215, 427, 425, 211, 419, 417, 207, 411, 409, 203, 202, 401, 399, 396, 197, 49, 389, 387, 385, 383, 95, 189, 47, 187, 93, 185, 23, 183, 91, 181, 45, 179, 89, 177, 11, 175, 87, 173, 345, 343, 341, 339, 337, 21, 167, 83, 331, 329, 327, 163, 81, 323, 321, 319, 159, 79, 315, 313, 39, 155, 309, 307, 153, 305, 303, 151, 75, 299, 149, 37, 295, 147, 73, 291, 145, 289, 287, 143, 285, 71, 141, 281, 35, 279, 139, 69, 275, 137, 273, 17, 271, 135, 269, 267, 133, 265, 33, 263, 131, 261, 130, 259, 129, 257, 1] - - - - [0, 9, 10, 11, 9, 12, 10, 11, 12, 9, 13, 13, 10, 9, 13, 13, 14, 14, 14, 14, 10, 13, 14, 14, 14, 13, 13, 13, 9, 14, 14, 14, 15, 14, 15, 14, 15, 15, 14, 15, 15, 15, 14, 15, 15, 15, 15, 15, 14, 15, 15, 15, 15, 15, 15, 12, 14, 15, 15, 13, 15, 15, 15, 15, 16, 16, 16, 15, 16, 14, 16, 16, 14, 16, 13, 16, 16, 16, 15, 16, 13, 16, 15, 16, 14, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 14, 16, 16, 15, 16, 16, 10, 16, 15, 16, 14, 16, 16, 14, 16, 16, 14, 16, 16, 14, 15, 16, 16, 16, 14, 15, 14, 15, 13, 16, 16, 15, 17, 17, 17, 17, 17, 17, 14, 15, 17, 17, 16, 16, 17, 16, 15, 17, 16, 17, 11, 17, 16, 17, 16, 17, 16, 17, 17, 16, 17, 17, 16, 17, 17, 16, 16, 17, 17, 17, 16, 14, 17, 17, 17, 17, 15, 16, 14, 16, 15, 16, 13, 16, 15, 16, 14, 16, 15, 16, 12, 16, 15, 16, 17, 17, 17, 17, 17, 13, 16, 15, 17, 17, 17, 16, 15, 17, 17, 17, 16, 15, 17, 17, 14, 16, 17, 17, 16, 17, 17, 16, 15, 17, 16, 14, 17, 16, 15, 17, 16, 17, 17, 16, 17, 15, 16, 17, 14, 17, 16, 15, 17, 16, 17, 13, 17, 16, 17, 17, 16, 17, 14, 17, 16, 17, 16, 17, 16, 17, 9] - - - - - - - - - - - - <__stackBlurCanvasRGBA set="method" line="38" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - Whether the event was canceled during the previous dispatch - - <__listeners public="1"> - - - - hide - - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - Int->Void` will create a `dispatch` method that - takes two `Int` arguments, like `dispatch (1, 2);`]]> - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - - - Creates a new Event instance - - Void> (); - event.add (function (value:Int):Void { trace (value); }); - event.dispatch (100); - - var event = new EventVoid> (); - event.add (function () { trace ("callback"); }); - event.dispatch (); - ```]]> - - lime._internal.macros.EventMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - { onProgress : null, onError : null } - Create a new `Future` instance based on complete and (optionally) error and/or progress `Event` instances - - - - - - - Creates a `Future` instance which has finished with an error value - @param error The error value to set - @return A new `Future` instance - - - - - - - Creates a `Future` instance which has finished with a completion value - @param error The completion value to set - @return A new `Future` instance - - - - If the `Future` has finished with an error state, the `error` value - - - - Whether the `Future` finished with a completion state - - - - Whether the `Future` finished with an error state - - - - If the `Future` has finished with a completion state, the completion `value` - - <__completeListeners> - - - - - - - <__errorListeners> - - - - - - - <__progressListeners> - - - - - - - - - - - - - - - - Register a listener for when the `Future` completes. - - If the `Future` has already completed, this is called immediately with the result - @param listener A callback method to receive the result value - @return The current `Future` - - - - - - - - - - Register a listener for when the `Future` ends with an error state. - - If the `Future` has already ended with an error, this is called immediately with the error value - @param listener A callback method to receive the error value - @return The current `Future` - - - - - - - - - - - Register a listener for when the `Future` updates progress. - - If the `Future` is already completed, this will not be called. - @param listener A callback method to receive the progress value - @return The current `Future` - - - - - - - { waitTime : -1 } - Attempts to block on an asynchronous `Future`, returning when it is completed. - @param waitTime (Optional) A timeout before this call will stop blocking - @return This current `Future` - - - - - - - { waitTime : -1 } - Attempts to block on an asynchronous `Future`, returning the completion value when it is finished. - @param waitTime (Optional) A timeout before this call will stop blocking - @return The completion value, or `null` if the request timed out or blocking is not possible - - - - - - - - - - Chains two `Future` instances together, passing the result from the first - as input for creating/returning a new `Future` instance of a new or the same type - - - - - - - - { async : false, work : null } - Create a new `Future` instance - @param work (Optional) A function to execute - @param async (Optional) If a function is specified, whether to execute it asynchronously where supported - - `Future` is an implementation of Futures and Promises, with the exception that - in addition to "success" and "failure" states (represented as "complete" and "error"), - Lime `Future` introduces "progress" feedback as well to increase the value of - `Future` values. - - ```haxe - var future = Image.loadFromFile ("image.png"); - future.onComplete (function (image) { trace ("Image loaded"); }); - future.onProgress (function (loaded, total) { trace ("Loading: " + loaded + ", " + total); }); - future.onError (function (error) { trace (error); }); - - Image.loadFromFile ("image.png").then (function (image) { - - return Future.withValue (image.width); - - }).onComplete (function (width) { trace (width); }) - ``` - - `Future` values can be chained together for asynchronous processing of values. - - If an error occurs earlier in the chain, the error is propagated to all `onError` callbacks. - - `Future` will call `onComplete` callbacks, even if completion occurred before registering the - callback. This resolves race conditions, so even functions that return immediately can return - values using `Future`. - - `Future` values are meant to be immutable, if you wish to update a `Future`, you should create one - using a `Promise`, and use the `Promise` interface to influence the error, complete or progress state - of a `Future`. - - - "tags=\"haxe,release\"" - - lime.app.Promise - - - - - - - - - - { state : null } - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - hide - - - - - - The `Future` associated with this `Promise`. - - All subsequent calls to set an error, completion or progress state - will update the status and notify listeners to this `Future` - - - - Whether the `Promise` (and related `Future`) has finished with a completion state. - This will be `false` if the `Promise` has not been resolved with a completion or error state. - - - - Whether the `Promise` (and related `Future`) has finished with an error state. - This will be `false` if the `Promise` has not been resolved with a completion or error state. - - - - - - - Resolves this `Promise` with a completion state - @param data The completion value - @return The current `Promise` - - - - - - - Resolves this `Promise` with the complete, error and/or progress state - of another `Future` - @param future The `Future` to use to resolve this `Promise` - @return The current `Promise` - - - - - - - Resolves this `Promise` with an error state - @param msg The error value - @return The current `Promise` - - - - - - - - Sends progress updates to the related `Future` - @param progress A progress value - @param total A total value. This should be equal or greater to the `progress` value - @return The current `Promise` - - - - - - - - - - - - Create a new `Promise` instance - - { - - var promise = new Promise (); - - var progress = 0, total = 10; - var timer = new Timer (100); - timer.run = function () { - - promise.progress (progress, total); - progress++; - - if (progress == total) { - - promise.complete ("Done!"); - timer.stop (); - - } - - }; - - return promise.future; - - } - - var future = examplePromise (); - future.onComplete (function (message) { trace (message); }); - future.onProgress (function (loaded, total) { trace ("Progress: " + loaded + ", " + total); }); - ```]]> - - - "tags=\"haxe,release\"" - - lime.app.Future - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - - hide - - "tags=\"haxe,release\"" - - - - - - - Whether the event was canceled during the previous dispatch - - <__repeat public="1"> - - - - hide - - - <__priorities> - - - - - - - - - - - { priority : 0, once : false } - Adds a new event listener - @param listener A callback that matches the signature of the event - @param once Whether to receive an event dispatch only once, or each time it is fired - @param priority The priority for this listener, a higher priority will be dispatched sooner - - - - Marks the event as canceled, and stops the current event dispatch - - - - - - - Checks whether a callback is a listener to this event - @param listener A callback that matches the signature of the event - @return Whether the callback is a listener - - - - - - - Removes an event listener - @param listener A callback that matches the signature of the event - - - - Removes all event listeners - - <__listeners public="1"> - - - - - - - - - - Creates a new Event instance - - - hide - - "tags=\"haxe,release\"" - - - - - - - - - - - The `CairoRenderContext` represents the primary `lime.graphics.Cairo` instance when Cairo - is the render context type of the `Window`. - - You can convert from `lime.graphics.RenderContext` to `CairoRenderContext` directly - if desired: - - ```haxe - var cairo:CairoRenderContext = window.context; - ``` - - lime.graphics.RenderContext - - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The number of bits per pixel in this image data - - - - The data for this image, represented as a `UInt8Array` - - - - The `PixelFormat` for this image data - - - - The height of this image data - - - - Whether the image data has premultiplied alpha - - - - The data for this image, represented as a `js.html.CanvasElement`, `js.html.Image` or `flash.display.BitmapData` - - - - The stride, or number of data values (in bytes) per row in the image data - - - - Whether this image data is transparent - - - - The width of this image data - - <__srcBitmapData> - - - - <__srcCanvas> - - - - <__srcContext> - - - - <__srcCustom> - - - - <__srcImage> - - - - <__srcImageData> - - - - - - Creates a duplicate of this `ImageBuffer` - - If the current `ImageBuffer` has `data` or `src` information, this will be - cloned as well. - @return A new `ImageBuffer` with duplicate values - - - - - - - - - - - - - - - - - - - - - - - - - - { format : null, bitsPerPixel : 32, height : 0, width : 0, data : null } - Creates a new `ImageBuffer` instance - @param data (Optional) Initial `UInt8Array` data - @param width (Optional) An initial `width` value - @param height (Optional) An initial `height` value - @param bitsPerPixel (Optional) The `bitsPerPixel` of the data (default is 32) - @param format (Optional) The `PixelFormat` of this image buffer - - `ImageBuffer` is a simple object for storing image data. - - For higher-level operations, use the `Image` class. - - - "tags=\"haxe,release\"" - - lime.graphics.Image - - - - The red color channel - The green color channel - The blue color channel - The alpha color channel - An enum with values for standard image color channels - - - - - - - An image file encoded in the BMP file format - An image file encoded in the JPEG file format - An image file encoded in the PNG file format - An enum with values for image encoding formats - - - - - - - The source image data is stored in a `js.html.Image` or `js.html.CanvasElement` - The source image data is stored in a `UInt8Array` - The source image data is stored in a `flash.display.BitmapData` - The source image data is stored in a custom format - An enum containing values for the underlying image type - represented by an `ImageBuffer` - - - - - - - - - - - - - - The `OpenGLES2RenderContext` allows access to OpenGL ES 2.0 features when OpenGL or - OpenGL ES is the render context type of the `Window`. - - Using an OpenGL ES context on a desktop platform enables support for cross-platform - code that should run on the majority of desktop and mobile platforms (when using - hardware acceleration). - - Platforms supporting an OpenGL ES context are compatible with the Lime - `WebGLRenderContext` if you would prefer to write WebGL-style code, or support web - browsers with the same code. - - You can convert from `lime.graphics.RenderContext`, `lime.graphics.OpenGLRenderContext`, - `lime.graphics.OpenGLES3RenderContext`, `lime.graphics.opengl.GL`, and can convert to - `lime.graphics.WebGLRenderContext` directly if desired: - - ```haxe - var gles2:OpenGLES2RenderContext = window.context; - var gles2:OpenGLES2RenderContext = gl; - var gles2:OpenGLES2RenderContext = gles3; - var gles2:OpenGLES2RenderContext = GL; - - var webgl:WebGLRenderContext = gles2; - ``` - - - ACTIVE_ATTRIBUTES - ACTIVE_TEXTURE - ACTIVE_UNIFORMS - ALIASED_LINE_WIDTH_RANGE - ALIASED_POINT_SIZE_RANGE - ALPHA - ALPHA_BITS - ALWAYS - ARRAY_BUFFER - ARRAY_BUFFER_BINDING - ATTACHED_SHADERS - BACK - BLEND - BLEND_COLOR - BLEND_DST_ALPHA - BLEND_DST_RGB - BLEND_EQUATION - BLEND_EQUATION_ALPHA - BLEND_EQUATION_RGB - BLEND_SRC_ALPHA - BLEND_SRC_RGB - BLUE_BITS - BOOL - BOOL_VEC2 - BOOL_VEC3 - BOOL_VEC4 - BROWSER_DEFAULT_WEBGL - BUFFER_SIZE - BUFFER_USAGE - BYTE - CCW - CLAMP_TO_EDGE - COLOR_ATTACHMENT0 - COLOR_BUFFER_BIT - COLOR_CLEAR_VALUE - COLOR_WRITEMASK - COMPILE_STATUS - COMPRESSED_TEXTURE_FORMATS - CONSTANT_ALPHA - CONSTANT_COLOR - CULL_FACE - CULL_FACE_MODE - CURRENT_PROGRAM - CURRENT_VERTEX_ATTRIB - CW - DECR - DECR_WRAP - DELETE_STATUS - DEPTH_ATTACHMENT - DEPTH_BITS - DEPTH_BUFFER_BIT - DEPTH_CLEAR_VALUE - DEPTH_COMPONENT - DEPTH_COMPONENT16 - DEPTH_FUNC - DEPTH_RANGE - DEPTH_STENCIL - DEPTH_STENCIL_ATTACHMENT - DEPTH_TEST - DEPTH_WRITEMASK - DITHER - DONT_CARE - DST_ALPHA - DST_COLOR - DYNAMIC_DRAW - ELEMENT_ARRAY_BUFFER - ELEMENT_ARRAY_BUFFER_BINDING - EQUAL - FASTEST - FLOAT - FLOAT_MAT2 - FLOAT_MAT3 - FLOAT_MAT4 - FLOAT_VEC2 - FLOAT_VEC3 - FLOAT_VEC4 - FRAGMENT_SHADER - FRAMEBUFFER - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL - FRAMEBUFFER_BINDING - FRAMEBUFFER_COMPLETE - FRAMEBUFFER_INCOMPLETE_ATTACHMENT - FRAMEBUFFER_INCOMPLETE_DIMENSIONS - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT - FRAMEBUFFER_UNSUPPORTED - FRONT - FRONT_AND_BACK - FRONT_FACE - FUNC_ADD - FUNC_REVERSE_SUBTRACT - FUNC_SUBTRACT - GENERATE_MIPMAP_HINT - GEQUAL - GREATER - GREEN_BITS - HIGH_FLOAT - HIGH_INT - INCR - INCR_WRAP - INT - INT_VEC2 - INT_VEC3 - INT_VEC4 - INVALID_ENUM - INVALID_FRAMEBUFFER_OPERATION - INVALID_OPERATION - INVALID_VALUE - INVERT - KEEP - LEQUAL - LESS - LINEAR - LINEAR_MIPMAP_LINEAR - LINEAR_MIPMAP_NEAREST - LINES - LINE_LOOP - LINE_STRIP - LINE_WIDTH - LINK_STATUS - LOW_FLOAT - LOW_INT - LUMINANCE - LUMINANCE_ALPHA - MAX_COMBINED_TEXTURE_IMAGE_UNITS - MAX_CUBE_MAP_TEXTURE_SIZE - MAX_FRAGMENT_UNIFORM_VECTORS - MAX_RENDERBUFFER_SIZE - MAX_TEXTURE_IMAGE_UNITS - MAX_TEXTURE_SIZE - MAX_VARYING_VECTORS - MAX_VERTEX_ATTRIBS - MAX_VERTEX_TEXTURE_IMAGE_UNITS - MAX_VERTEX_UNIFORM_VECTORS - MAX_VIEWPORT_DIMS - MEDIUM_FLOAT - MEDIUM_INT - MIRRORED_REPEAT - NEAREST - NEAREST_MIPMAP_LINEAR - NEAREST_MIPMAP_NEAREST - NEVER - NICEST - NONE - NOTEQUAL - NO_ERROR - ONE - ONE_MINUS_CONSTANT_ALPHA - ONE_MINUS_CONSTANT_COLOR - ONE_MINUS_DST_ALPHA - ONE_MINUS_DST_COLOR - ONE_MINUS_SRC_ALPHA - ONE_MINUS_SRC_COLOR - OUT_OF_MEMORY - PACK_ALIGNMENT - POINTS - POLYGON_OFFSET_FACTOR - POLYGON_OFFSET_FILL - POLYGON_OFFSET_UNITS - RED_BITS - RENDERBUFFER - RENDERBUFFER_ALPHA_SIZE - RENDERBUFFER_BINDING - RENDERBUFFER_BLUE_SIZE - RENDERBUFFER_DEPTH_SIZE - RENDERBUFFER_GREEN_SIZE - RENDERBUFFER_HEIGHT - RENDERBUFFER_INTERNAL_FORMAT - RENDERBUFFER_RED_SIZE - RENDERBUFFER_STENCIL_SIZE - RENDERBUFFER_WIDTH - RENDERER - REPEAT - REPLACE - RGB - RGB565 - RGB5_A1 - RGBA - RGBA4 - SAMPLER_2D - SAMPLER_CUBE - SAMPLES - SAMPLE_ALPHA_TO_COVERAGE - SAMPLE_BUFFERS - SAMPLE_COVERAGE - SAMPLE_COVERAGE_INVERT - SAMPLE_COVERAGE_VALUE - SCISSOR_BOX - SCISSOR_TEST - SHADER_TYPE - SHADING_LANGUAGE_VERSION - SHORT - SRC_ALPHA - SRC_ALPHA_SATURATE - SRC_COLOR - STATIC_DRAW - STENCIL_ATTACHMENT - STENCIL_BACK_FAIL - STENCIL_BACK_FUNC - STENCIL_BACK_PASS_DEPTH_FAIL - STENCIL_BACK_PASS_DEPTH_PASS - STENCIL_BACK_REF - STENCIL_BACK_VALUE_MASK - STENCIL_BACK_WRITEMASK - STENCIL_BITS - STENCIL_BUFFER_BIT - STENCIL_CLEAR_VALUE - STENCIL_FAIL - STENCIL_FUNC - STENCIL_INDEX - STENCIL_INDEX8 - STENCIL_PASS_DEPTH_FAIL - STENCIL_PASS_DEPTH_PASS - STENCIL_REF - STENCIL_TEST - STENCIL_VALUE_MASK - STENCIL_WRITEMASK - STREAM_DRAW - SUBPIXEL_BITS - TEXTURE - TEXTURE0 - TEXTURE1 - TEXTURE10 - TEXTURE11 - TEXTURE12 - TEXTURE13 - TEXTURE14 - TEXTURE15 - TEXTURE16 - TEXTURE17 - TEXTURE18 - TEXTURE19 - TEXTURE2 - TEXTURE20 - TEXTURE21 - TEXTURE22 - TEXTURE23 - TEXTURE24 - TEXTURE25 - TEXTURE26 - TEXTURE27 - TEXTURE28 - TEXTURE29 - TEXTURE3 - TEXTURE30 - TEXTURE31 - TEXTURE4 - TEXTURE5 - TEXTURE6 - TEXTURE7 - TEXTURE8 - TEXTURE9 - TEXTURE_2D - TEXTURE_BINDING_2D - TEXTURE_BINDING_CUBE_MAP - TEXTURE_CUBE_MAP - TEXTURE_CUBE_MAP_NEGATIVE_X - TEXTURE_CUBE_MAP_NEGATIVE_Y - TEXTURE_CUBE_MAP_NEGATIVE_Z - TEXTURE_CUBE_MAP_POSITIVE_X - TEXTURE_CUBE_MAP_POSITIVE_Y - TEXTURE_CUBE_MAP_POSITIVE_Z - TEXTURE_MAG_FILTER - TEXTURE_MIN_FILTER - TEXTURE_WRAP_S - TEXTURE_WRAP_T - TRIANGLES - TRIANGLE_FAN - TRIANGLE_STRIP - UNPACK_ALIGNMENT - UNSIGNED_BYTE - UNSIGNED_INT - UNSIGNED_SHORT - UNSIGNED_SHORT_4_4_4_4 - UNSIGNED_SHORT_5_5_5_1 - UNSIGNED_SHORT_5_6_5 - VALIDATE_STATUS - VENDOR - VERSION - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING - VERTEX_ATTRIB_ARRAY_ENABLED - VERTEX_ATTRIB_ARRAY_NORMALIZED - VERTEX_ATTRIB_ARRAY_POINTER - VERTEX_ATTRIB_ARRAY_SIZE - VERTEX_ATTRIB_ARRAY_STRIDE - VERTEX_ATTRIB_ARRAY_TYPE - VERTEX_SHADER - VIEWPORT - ZERO - activeTexture - attachShader - bindAttribLocation - bindBuffer - bindFramebuffer - bindTexture - blendColor - blendEquation - blendEquationSeparate - blendFunc - blendFuncSeparate - bufferData - bufferSubData - checkFramebufferStatus - clear - clearColor - clearDepthf - clearStencil - colorMask - compileShader - compressedTexImage2D - compressedTexSubImage2D - copyTexImage2D - copyTexSubImage2D - createBuffer - createFramebuffer - createProgram - createRenderbuffer - createShader - createTexture - cullFace - deleteBuffer - deleteFramebuffer - deleteProgram - deleteRenderbuffer - deleteShader - deleteTexture - depthFunc - depthMask - depthRangef - detachShader - disable - disableVertexAttribArray - drawArrays - drawElements - enable - enableVertexAttribArray - finish - flush - framebufferRenderbuffer - framebufferTexture2D - frontFace - genBuffers - generateMipmap - genFramebuffers - genRenderbuffers - genTextures - getActiveAttrib - getActiveUniform - getAttachedShaders - getAttribLocation - getBoolean - getBooleanv - getBufferParameteri - getBufferParameteriv - getError - getFloat - getFloatv - getFramebufferAttachmentParameteri - getFramebufferAttachmentParameteriv - getInteger - getIntegerv - getProgramInfoLog - getProgrami - getProgramiv - getRenderbufferParameteri - getRenderbufferParameteriv - getShaderi - getShaderInfoLog - getShaderiv - getShaderPrecisionFormat - getShaderSource - getString - getTexParameterf - getTexParameterfv - getTexParameteri - getTexParameteriv - getUniform - getUniformLocation - getVertexAttribf - getVertexAttribfv - getVertexAttribi - getVertexAttribiv - getVertexAttribPointerv - hint - isBuffer - isEnabled - isFramebuffer - isProgram - isRenderbuffer - isShader - isTexture - lineWidth - linkProgram - pixelStorei - polygonOffset - readPixels - releaseShaderCompiler - renderbufferStorage - sampleCoverage - scissor - shaderBinary - shaderSource - stencilFunc - stencilFuncSeparate - stencilMask - stencilMaskSeparate - stencilOp - stencilOpSeparate - texImage2D - texParameterf - texParameteri - texSubImage2D - uniform1f - uniform1fv - uniform1i - uniform1iv - uniform2f - uniform2fv - uniform2i - uniform2iv - uniform3f - uniform3fv - uniform3i - uniform3iv - uniform4f - uniform4fv - uniform4i - uniform4iv - uniformMatrix2fv - uniformMatrix3fv - uniformMatrix4fv - useProgram - validateProgram - vertexAttrib1f - vertexAttrib1fv - vertexAttrib2f - vertexAttrib2fv - vertexAttrib3f - vertexAttrib3fv - vertexAttrib4f - vertexAttrib4fv - vertexAttribPointer - viewport - EXTENSIONS - type - version - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The `OpenGLES3RenderContext` allows access to OpenGL ES 3.0 features when OpenGL or - OpenGL ES is the render context type of the `Window`, and the current context supports - GLES3 features. - - Using an OpenGL ES context on a desktop platform enables support for cross-platform - code that should run on both desktop and mobile platforms (when using - hardware acceleration), though support for OpenGL ES 3.0 features are more limited than - GLES2. - - Platforms supporting an OpenGL ES 3.0 context are compatible with the Lime - `WebGLRenderContext` as well as the `WebGL2RenderContext` if you would prefer to write - WebGL-style code, or support web browsers with the same code. Be aware that not all - browsers support WebGL 2, so only plain WebGL might be available. - - You can convert from `lime.graphics.RenderContext`, `lime.graphics.OpenGLRenderContext`, - `lime.graphics.opengl.GL`, and can convert to `lime.graphics.OpenGLES2RenderContext`, - `lime.graphics.WebGL2RenderContext` or `lime.graphics.WebGLRenderContext` directly - if desired: - - ```haxe - var gles3:OpenGLES3RenderContext = window.context; - var gles3:OpenGLES3RenderContext = gl; - var gles3:OpenGLES3RenderContext = GL; - - var gles2:OpenGLES2RenderContext = gles3; - var webgl2:WebGL2RenderContext = gles3; - var webgl:WebGLRenderContext = gles3; - ``` - - - - - - - <__extensions static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { buffers : null } - - - - - - - - - - - - - - { framebuffers : null } - - - - - - - - - { queries : null } - - - - - - - - - { renderbuffers : null } - - - - - - - - - { samplers : null } - - - - - - - - - { textures : null } - - - - - - - - - { transformFeedbacks : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__extensions static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { buffers : null } - - - - - - - - - - - - - - { framebuffers : null } - - - - - - - - - { queries : null } - - - - - - - - - { renderbuffers : null } - - - - - - - - - { samplers : null } - - - - - - - - - { textures : null } - - - - - - - - - { transformFeedbacks : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The `OpenGLRenderContext` allows access to OpenGL features when OpenGL is the render - context type of the `Window`. Historically, Lime was designed for WebGL render support - on all platforms, and support has expanded to provide additional OpenGL ES native APIs. - - Support for desktop OpenGL-specific features is currently sparse, but the - `OpenGLRenderContext` provides the platform for us to add additional desktop specific - features. - - The `OpenGLRenderContext` is not compatible with mobile or web targets, but it can be - converted to an OpenGL ES or a WebGL-style context for cross-platform development. - - You can convert from `lime.graphics.RenderContext` or `lime.graphics.opengl.GL`, and - can convert to `lime.graphics.OpenGLES3RenderContext`, - `lime.graphics.OpenGLES2RenderContext`, `lime.graphics.WebGL2RenderContext`, or - `lime.graphics.WebGLRenderContext` directly if desired: - - ```haxe - var gl:OpenGLRenderContext = window.context; - var gl:OpenGLRenderContext = GL; - - var gles3:OpenGLES3RenderContext = gl; - var gles2:OpenGLES2RenderContext = gl; - var webgl2:WebGL2RenderContext = gl; - var webgl:WebGLRenderContext = gl; - ``` - - lime.graphics.RenderContext - - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - - An enum containing different pixel encoding formats for image data - - - - - - cast 0 - - - - An image encoded in 32-bit RGBA color order - - - - - cast 1 - - - - An image encoded in 32-bit ARGB color order - - - - - cast 2 - - - - An image encoded in 32-bit BGRA color order - - - - - - - - - cast 0 - - - - An image encoded in 32-bit RGBA color order - - - - - cast 1 - - - - An image encoded in 32-bit ARGB color order - - - - - cast 2 - - - - An image encoded in 32-bit BGRA color order - - - - - - - Additional information about the current context - - - - Access to the current Cairo render context, if available - - - - Access to the current HTML5 canvas render context, if available - - - - Access to the current HTML5 DOM render context, if available - - - - Access to the current Flash render context, if available - - - - Access to the current OpenGL render API, if available - - - - Access to the current OpenGL ES 2.0 render API, if available - - - - Access to the current OpenGL ES 3.0 render API, if available - - - - The type of the current `RenderContext` - - - - - Access to the current WebGL render API, if available - - - - Access to the current WebGL 2 render API, if available - - - - - - - The `RenderContext` provides access to rendering for a Lime `Window`. - - Only one render context type is used at once, but when `OPENGL` or - `OPENGLES` is the context type, compatibility contexts for other - forms of GL (such as WebGL) may be available also. - - - - - - - - Whether vertical-sync (VSync) is enabled - - - - - - - - - The type of render context requested - - - - - Whether a stencil buffer is enabled - - - - - Whether hardware acceleration is allowed - - - - - Whether a depth buffer is enabled - - - - - The color depth of the rendering context in bits - - - - - An optional `background` property to be provided to rendering, - a value of `null` means no background color. - - - - - Whether to enable anti-aliasing, `0` is disabled, `2` enables - 2x2 anti-aliasing or `4` enables 4x4 anti-aliasing. - - - Additional options possible for a render context - - - - - - An enum for possible render context types - - - - - - cast "cairo" - - - - Describes a Cairo render context - - - - - cast "canvas" - - - - Describes an HTML5 canvas render context - - - - - cast "dom" - - - - Describes an HTML5 DOM render context - - - - - cast "flash" - - - - Describes a Flash render context - - - - - cast "opengl" - - - - Describes an OpenGL render context - - - - - cast "opengles" - - - - Describes an OpenGL ES render context - - - - - cast "webgl" - - - - Describes a WebGL render context - - - - - cast "custom" - - - - Describes a custom render context - - - - - - - - - cast "cairo" - - - - Describes a Cairo render context - - - - - cast "canvas" - - - - Describes an HTML5 canvas render context - - - - - cast "dom" - - - - Describes an HTML5 DOM render context - - - - - cast "flash" - - - - Describes a Flash render context - - - - - cast "opengl" - - - - Describes an OpenGL render context - - - - - cast "opengles" - - - - Describes an OpenGL ES render context - - - - - cast "webgl" - - - - Describes a WebGL render context - - - - - cast "custom" - - - - Describes a custom render context - - - - - - - - - - - - - The `WebGL2RenderContext` allows access to WebGL 2 features when OpenGL, OpenGL ES - or WebGL is the render context type of the `Window`, and the current context supports - WebGL 2 features. - - Using a WebGL context on a desktop platform enables support for cross-platform - code that should run on all platforms (when using hardware acceleration), though support - for WebGL 2 features are more limited than WebGL, and require an OpenGL ES 3.0 compatible - desktop or mobile context. - - You can convert from `lime.graphics.RenderContext`, `lime.graphics.OpenGLRenderContext`, - `lime.graphics.OpenGLES3RenderContext` or `lime.graphics.opengl.GL`, and can convert to - `lime.graphics.WebGLRenderContext` directly if desired: - - ```haxe - var webgl2:WebGL2RenderContext = window.context; - var webgl2:WebGL2RenderContext = gl; - var webgl2:WebGL2RenderContext = gles3; - var webgl2:WebGL2RenderContext = GL; - - var webgl:WebGLRenderContext = webgl2; - ``` - - lime.graphics.RenderContext - - - - <__tempPointer expr="new BytePointer()" line="312" static="1"> - - new BytePointer() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { length : 0, srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { dstOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - - - - - hide - - - - <__tempPointer expr="new BytePointer()" line="312" static="1"> - - new BytePointer() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { length : 0, srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { dstOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.graphics.RenderContext - - - - - - - - - - - - - The `WebGLRenderContext` allows access to WebGL features when OpenGL, OpenGL ES or - WebGL is the render context type of the `Window`. - - Using a WebGL context on a desktop or mobile platform enables support for cross-platform - code that should run all platforms (when hardware acceleration is supported). - - You can convert from `lime.graphics.RenderContext`, `lime.graphics.OpenGLRenderContext`, - `lime.graphics.OpenGLES3RenderContext`, `lime.graphics.OpenGLES2RenderContext`, - `lime.graphics.WebGL2RenderContext` or `lime.graphics.opengl.GL` directly if desired: - - ```haxe - var webgl:WebGLRenderContext = window.context; - var webgl:WebGLRenderContext = gl; - var webgl:WebGLRenderContext = gles3; - var webgl:WebGLRenderContext = gles2; - var webgl:WebGLRenderContext = webgl2; - var webgl:WebGLRenderContext = GL; - ``` - - - DEPTH_BUFFER_BIT - STENCIL_BUFFER_BIT - COLOR_BUFFER_BIT - POINTS - LINES - LINE_LOOP - LINE_STRIP - TRIANGLES - TRIANGLE_STRIP - TRIANGLE_FAN - ZERO - ONE - SRC_COLOR - ONE_MINUS_SRC_COLOR - SRC_ALPHA - ONE_MINUS_SRC_ALPHA - DST_ALPHA - ONE_MINUS_DST_ALPHA - DST_COLOR - ONE_MINUS_DST_COLOR - SRC_ALPHA_SATURATE - FUNC_ADD - BLEND_EQUATION - BLEND_EQUATION_RGB - BLEND_EQUATION_ALPHA - FUNC_SUBTRACT - FUNC_REVERSE_SUBTRACT - BLEND_DST_RGB - BLEND_SRC_RGB - BLEND_DST_ALPHA - BLEND_SRC_ALPHA - CONSTANT_COLOR - ONE_MINUS_CONSTANT_COLOR - CONSTANT_ALPHA - ONE_MINUS_CONSTANT_ALPHA - BLEND_COLOR - ARRAY_BUFFER - ELEMENT_ARRAY_BUFFER - ARRAY_BUFFER_BINDING - ELEMENT_ARRAY_BUFFER_BINDING - STREAM_DRAW - STATIC_DRAW - DYNAMIC_DRAW - BUFFER_SIZE - BUFFER_USAGE - CURRENT_VERTEX_ATTRIB - FRONT - BACK - FRONT_AND_BACK - CULL_FACE - BLEND - DITHER - STENCIL_TEST - DEPTH_TEST - SCISSOR_TEST - POLYGON_OFFSET_FILL - SAMPLE_ALPHA_TO_COVERAGE - SAMPLE_COVERAGE - NO_ERROR - INVALID_ENUM - INVALID_VALUE - INVALID_OPERATION - OUT_OF_MEMORY - CW - CCW - LINE_WIDTH - ALIASED_POINT_SIZE_RANGE - ALIASED_LINE_WIDTH_RANGE - CULL_FACE_MODE - FRONT_FACE - DEPTH_RANGE - DEPTH_WRITEMASK - DEPTH_CLEAR_VALUE - DEPTH_FUNC - STENCIL_CLEAR_VALUE - STENCIL_FUNC - STENCIL_FAIL - STENCIL_PASS_DEPTH_FAIL - STENCIL_PASS_DEPTH_PASS - STENCIL_REF - STENCIL_VALUE_MASK - STENCIL_WRITEMASK - STENCIL_BACK_FUNC - STENCIL_BACK_FAIL - STENCIL_BACK_PASS_DEPTH_FAIL - STENCIL_BACK_PASS_DEPTH_PASS - STENCIL_BACK_REF - STENCIL_BACK_VALUE_MASK - STENCIL_BACK_WRITEMASK - VIEWPORT - SCISSOR_BOX - COLOR_CLEAR_VALUE - COLOR_WRITEMASK - UNPACK_ALIGNMENT - PACK_ALIGNMENT - MAX_TEXTURE_SIZE - MAX_VIEWPORT_DIMS - SUBPIXEL_BITS - RED_BITS - GREEN_BITS - BLUE_BITS - ALPHA_BITS - DEPTH_BITS - STENCIL_BITS - POLYGON_OFFSET_UNITS - POLYGON_OFFSET_FACTOR - TEXTURE_BINDING_2D - SAMPLE_BUFFERS - SAMPLES - SAMPLE_COVERAGE_VALUE - SAMPLE_COVERAGE_INVERT - COMPRESSED_TEXTURE_FORMATS - DONT_CARE - FASTEST - NICEST - GENERATE_MIPMAP_HINT - BYTE - UNSIGNED_BYTE - SHORT - UNSIGNED_SHORT - INT - UNSIGNED_INT - FLOAT - DEPTH_COMPONENT - ALPHA - RGB - RGBA - LUMINANCE - LUMINANCE_ALPHA - UNSIGNED_SHORT_4_4_4_4 - UNSIGNED_SHORT_5_5_5_1 - UNSIGNED_SHORT_5_6_5 - FRAGMENT_SHADER - VERTEX_SHADER - MAX_VERTEX_ATTRIBS - MAX_VERTEX_UNIFORM_VECTORS - MAX_VARYING_VECTORS - MAX_COMBINED_TEXTURE_IMAGE_UNITS - MAX_VERTEX_TEXTURE_IMAGE_UNITS - MAX_TEXTURE_IMAGE_UNITS - MAX_FRAGMENT_UNIFORM_VECTORS - SHADER_TYPE - DELETE_STATUS - LINK_STATUS - VALIDATE_STATUS - ATTACHED_SHADERS - ACTIVE_UNIFORMS - ACTIVE_ATTRIBUTES - SHADING_LANGUAGE_VERSION - CURRENT_PROGRAM - NEVER - LESS - EQUAL - LEQUAL - GREATER - NOTEQUAL - GEQUAL - ALWAYS - KEEP - REPLACE - INCR - DECR - INVERT - INCR_WRAP - DECR_WRAP - VENDOR - RENDERER - VERSION - NEAREST - LINEAR - NEAREST_MIPMAP_NEAREST - LINEAR_MIPMAP_NEAREST - NEAREST_MIPMAP_LINEAR - LINEAR_MIPMAP_LINEAR - TEXTURE_MAG_FILTER - TEXTURE_MIN_FILTER - TEXTURE_WRAP_S - TEXTURE_WRAP_T - TEXTURE_2D - TEXTURE - TEXTURE_CUBE_MAP - TEXTURE_BINDING_CUBE_MAP - TEXTURE_CUBE_MAP_POSITIVE_X - TEXTURE_CUBE_MAP_NEGATIVE_X - TEXTURE_CUBE_MAP_POSITIVE_Y - TEXTURE_CUBE_MAP_NEGATIVE_Y - TEXTURE_CUBE_MAP_POSITIVE_Z - TEXTURE_CUBE_MAP_NEGATIVE_Z - MAX_CUBE_MAP_TEXTURE_SIZE - TEXTURE0 - TEXTURE1 - TEXTURE2 - TEXTURE3 - TEXTURE4 - TEXTURE5 - TEXTURE6 - TEXTURE7 - TEXTURE8 - TEXTURE9 - TEXTURE10 - TEXTURE11 - TEXTURE12 - TEXTURE13 - TEXTURE14 - TEXTURE15 - TEXTURE16 - TEXTURE17 - TEXTURE18 - TEXTURE19 - TEXTURE20 - TEXTURE21 - TEXTURE22 - TEXTURE23 - TEXTURE24 - TEXTURE25 - TEXTURE26 - TEXTURE27 - TEXTURE28 - TEXTURE29 - TEXTURE30 - TEXTURE31 - ACTIVE_TEXTURE - REPEAT - CLAMP_TO_EDGE - MIRRORED_REPEAT - FLOAT_VEC2 - FLOAT_VEC3 - FLOAT_VEC4 - INT_VEC2 - INT_VEC3 - INT_VEC4 - BOOL - BOOL_VEC2 - BOOL_VEC3 - BOOL_VEC4 - FLOAT_MAT2 - FLOAT_MAT3 - FLOAT_MAT4 - SAMPLER_2D - SAMPLER_CUBE - VERTEX_ATTRIB_ARRAY_ENABLED - VERTEX_ATTRIB_ARRAY_SIZE - VERTEX_ATTRIB_ARRAY_STRIDE - VERTEX_ATTRIB_ARRAY_TYPE - VERTEX_ATTRIB_ARRAY_NORMALIZED - VERTEX_ATTRIB_ARRAY_POINTER - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING - COMPILE_STATUS - LOW_FLOAT - MEDIUM_FLOAT - HIGH_FLOAT - LOW_INT - MEDIUM_INT - HIGH_INT - FRAMEBUFFER - RENDERBUFFER - RGBA4 - RGB5_A1 - RGB565 - DEPTH_COMPONENT16 - STENCIL_INDEX - STENCIL_INDEX8 - DEPTH_STENCIL - RENDERBUFFER_WIDTH - RENDERBUFFER_HEIGHT - RENDERBUFFER_INTERNAL_FORMAT - RENDERBUFFER_RED_SIZE - RENDERBUFFER_GREEN_SIZE - RENDERBUFFER_BLUE_SIZE - RENDERBUFFER_ALPHA_SIZE - RENDERBUFFER_DEPTH_SIZE - RENDERBUFFER_STENCIL_SIZE - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE - COLOR_ATTACHMENT0 - DEPTH_ATTACHMENT - STENCIL_ATTACHMENT - DEPTH_STENCIL_ATTACHMENT - NONE - FRAMEBUFFER_COMPLETE - FRAMEBUFFER_INCOMPLETE_ATTACHMENT - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT - FRAMEBUFFER_INCOMPLETE_DIMENSIONS - FRAMEBUFFER_UNSUPPORTED - FRAMEBUFFER_BINDING - RENDERBUFFER_BINDING - MAX_RENDERBUFFER_SIZE - INVALID_FRAMEBUFFER_OPERATION - UNPACK_FLIP_Y_WEBGL - UNPACK_PREMULTIPLY_ALPHA_WEBGL - CONTEXT_LOST_WEBGL - UNPACK_COLORSPACE_CONVERSION_WEBGL - BROWSER_DEFAULT_WEBGL - type - version - activeTexture - attachShader - bindAttribLocation - bindBuffer - bindFramebuffer - bindRenderbuffer - bindTexture - blendColor - blendEquation - blendEquationSeparate - blendFunc - blendFuncSeparate - checkFramebufferStatus - clear - clearColor - clearDepth - clearStencil - colorMask - compileShader - copyTexImage2D - copyTexSubImage2D - createBuffer - createFramebuffer - createProgram - createRenderbuffer - createShader - createTexture - cullFace - cullFace - deleteBuffer - deleteFramebuffer - deleteProgram - deleteRenderbuffer - deleteShader - deleteTexture - depthFunc - depthMask - depthRange - detachShader - disable - disableVertexAttribArray - drawArrays - drawElements - enable - enableVertexAttribArray - finish - flush - framebufferRenderbuffer - framebufferTexture2D - frontFace - generateMipmap - getActiveAttrib - getActiveUniform - getAttachedShaders - getAttribLocation - getBufferParameter - getContextAttributes - getError - getExtension - getFramebufferAttachmentParameter - getParameter - getProgramInfoLog - getProgramParameter - getRenderbufferParameter - getShaderInfoLog - getShaderParameter - getShaderPrecisionFormat - getShaderSource - getSupportedExtensions - getTexParameter - getUniform - getUniformLocation - getVertexAttrib - getVertexAttribOffset - hint - isBuffer - isContextLost - isEnabled - isFramebuffer - isProgram - isRenderbuffer - isShader - isTexture - lineWidth - linkProgram - pixelStorei - polygonOffset - renderbufferStorage - sampleCoverage - scissor - shaderSource - stencilFunc - stencilFuncSeparate - stencilMask - stencilMaskSeparate - stencilOp - stencilOpSeparate - texParameterf - texParameteri - uniform1f - uniform1fv - uniform1i - uniform1iv - uniform2f - uniform2fv - uniform2i - uniform2iv - uniform3f - uniform3fv - uniform3i - uniform3iv - uniform4f - uniform4fv - uniform4i - uniform4iv - useProgram - validateProgram - vertexAttrib1f - vertexAttrib1fv - vertexAttrib2f - vertexAttrib2fv - vertexAttrib3f - vertexAttrib3fv - vertexAttrib4f - vertexAttrib4fv - vertexAttribPointer - viewport - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { srcOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { surface : null } - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - - - - - - - - - - - - - - - cast 0x1000 - - - - - - - - cast 0x2000 - - - - - - - - cast 0x3000 - - - - - - - - - - - - cast 0x1000 - - - - - - - - cast 0x2000 - - - - - - - - cast 0x3000 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - <_new set="method" line="13" static="1"> - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new set="method" line="13" static="1"> - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - <_new set="method" line="10" static="1"> - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - <_new set="method" line="10" static="1"> - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - <_new public="1" set="method" line="16" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new public="1" set="method" line="16" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - - - - - { y : 0, x : 0 } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new public="1" set="method" line="17" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - <_new public="1" set="method" line="17" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - <_new public="1" set="method" line="16" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new public="1" set="method" line="16" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 29 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 29 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - 0x00000100 - - - - 0x00000400 - - - - 0x00004000 - - - - 0x0000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0 - - - - 1 - - - - 0x0300 - - - - 0x0301 - - - - 0x0302 - - - - 0x0303 - - - - 0x0304 - - - - 0x0305 - - - - 0x0306 - - - - 0x0307 - - - - 0x0308 - - - - 0x8006 - - - - 0x8009 - - - - 0x8009 - - - - 0x883D - - - - 0x800A - - - - 0x800B - - - - 0x80C8 - - - - 0x80C9 - - - - 0x80CA - - - - 0x80CB - - - - 0x8001 - - - - 0x8002 - - - - 0x8003 - - - - 0x8004 - - - - 0x8005 - - - - 0x8892 - - - - 0x8893 - - - - 0x8894 - - - - 0x8895 - - - - 0x88E0 - - - - 0x88E4 - - - - 0x88E8 - - - - 0x8764 - - - - 0x8765 - - - - 0x8626 - - - - 0x0404 - - - - 0x0405 - - - - 0x0408 - - - - 0x0B44 - - - - 0x0BE2 - - - - 0x0BD0 - - - - 0x0B90 - - - - 0x0B71 - - - - 0x0C11 - - - - 0x8037 - - - - 0x809E - - - - 0x80A0 - - - - 0 - - - - 0x0500 - - - - 0x0501 - - - - 0x0502 - - - - 0x0505 - - - - 0x0900 - - - - 0x0901 - - - - 0x0B21 - - - - 0x846D - - - - 0x846E - - - - 0x0B45 - - - - 0x0B46 - - - - 0x0B70 - - - - 0x0B72 - - - - 0x0B73 - - - - 0x0B74 - - - - 0x0B91 - - - - 0x0B92 - - - - 0x0B94 - - - - 0x0B95 - - - - 0x0B96 - - - - 0x0B97 - - - - 0x0B93 - - - - 0x0B98 - - - - 0x8800 - - - - 0x8801 - - - - 0x8802 - - - - 0x8803 - - - - 0x8CA3 - - - - 0x8CA4 - - - - 0x8CA5 - - - - 0x0BA2 - - - - 0x0C10 - - - - 0x0C22 - - - - 0x0C23 - - - - 0x0CF5 - - - - 0x0D05 - - - - 0x0D33 - - - - 0x0D3A - - - - 0x0D50 - - - - 0x0D52 - - - - 0x0D53 - - - - 0x0D54 - - - - 0x0D55 - - - - 0x0D56 - - - - 0x0D57 - - - - 0x2A00 - - - - 0x8038 - - - - 0x8069 - - - - 0x80A8 - - - - 0x80A9 - - - - 0x80AA - - - - 0x80AB - - - - 0x86A2 - - - - 0x86A3 - - - - 0x1100 - - - - 0x1101 - - - - 0x1102 - - - - 0x8192 - - - - 0x1400 - - - - 0x1401 - - - - 0x1402 - - - - 0x1403 - - - - 0x1404 - - - - 0x1405 - - - - 0x1406 - - - - 0x1902 - - - - 0x1906 - - - - 0x1907 - - - - 0x1908 - - - - 0x1909 - - - - 0x190A - - - - 0x8033 - - - - 0x8034 - - - - 0x8363 - - - - 0x8B30 - - - - 0x8B31 - - - - 0x8869 - - - - 0x8DFB - - - - 0x8DFC - - - - 0x8B4D - - - - 0x8B4C - - - - 0x8872 - - - - 0x8DFD - - - - 0x8B4F - - - - 0x8B80 - - - - 0x8B82 - - - - 0x8B83 - - - - 0x8B85 - - - - 0x8B86 - - - - 0x8B89 - - - - 0x8B8C - - - - 0x8B8D - - - - 0x0200 - - - - 0x0201 - - - - 0x0202 - - - - 0x0203 - - - - 0x0204 - - - - 0x0205 - - - - 0x0206 - - - - 0x0207 - - - - 0x1E00 - - - - 0x1E01 - - - - 0x1E02 - - - - 0x1E03 - - - - 0x150A - - - - 0x8507 - - - - 0x8508 - - - - 0x1F00 - - - - 0x1F01 - - - - 0x1F02 - - - - 0x1F03 - - - - 0x2600 - - - - 0x2601 - - - - 0x2700 - - - - 0x2701 - - - - 0x2702 - - - - 0x2703 - - - - 0x2800 - - - - 0x2801 - - - - 0x2802 - - - - 0x2803 - - - - 0x0DE1 - - - - 0x1702 - - - - 0x8513 - - - - 0x8514 - - - - 0x8515 - - - - 0x8516 - - - - 0x8517 - - - - 0x8518 - - - - 0x8519 - - - - 0x851A - - - - 0x851C - - - - 0x84C0 - - - - 0x84C1 - - - - 0x84C2 - - - - 0x84C3 - - - - 0x84C4 - - - - 0x84C5 - - - - 0x84C6 - - - - 0x84C7 - - - - 0x84C8 - - - - 0x84C9 - - - - 0x84CA - - - - 0x84CB - - - - 0x84CC - - - - 0x84CD - - - - 0x84CE - - - - 0x84CF - - - - 0x84D0 - - - - 0x84D1 - - - - 0x84D2 - - - - 0x84D3 - - - - 0x84D4 - - - - 0x84D5 - - - - 0x84D6 - - - - 0x84D7 - - - - 0x84D8 - - - - 0x84D9 - - - - 0x84DA - - - - 0x84DB - - - - 0x84DC - - - - 0x84DD - - - - 0x84DE - - - - 0x84DF - - - - 0x84E0 - - - - 0x2901 - - - - 0x812F - - - - 0x8370 - - - - 0x8B50 - - - - 0x8B51 - - - - 0x8B52 - - - - 0x8B53 - - - - 0x8B54 - - - - 0x8B55 - - - - 0x8B56 - - - - 0x8B57 - - - - 0x8B58 - - - - 0x8B59 - - - - 0x8B5A - - - - 0x8B5B - - - - 0x8B5C - - - - 0x8B5E - - - - 0x8B60 - - - - 0x8622 - - - - 0x8623 - - - - 0x8624 - - - - 0x8625 - - - - 0x886A - - - - 0x8645 - - - - 0x889F - - - - 0x8B9A - - - - 0x8B9B - - - - 0x8642 - - - - 0x8861 - - - - 0x8B81 - - - - 0x8DF0 - - - - 0x8DF1 - - - - 0x8DF2 - - - - 0x8DF3 - - - - 0x8DF4 - - - - 0x8DF5 - - - - 0x8D40 - - - - 0x8D41 - - - - 0x8056 - - - - 0x8057 - - - - 0x8D62 - - - - 0x81A5 - - - - 0x1901 - - - - 0x8D48 - - - - 0x84F9 - - - - 0x8D42 - - - - 0x8D43 - - - - 0x8D44 - - - - 0x8D50 - - - - 0x8D51 - - - - 0x8D52 - - - - 0x8D53 - - - - 0x8D54 - - - - 0x8D55 - - - - 0x8CD0 - - - - 0x8CD1 - - - - 0x8CD2 - - - - 0x8CD3 - - - - 0x8CE0 - - - - 0x8D00 - - - - 0x8D20 - - - - 0x821A - - - - 0 - - - - 0x8CD5 - - - - 0x8CD6 - - - - 0x8CD7 - - - - 0x8CD9 - - - - 0x8CDD - - - - 0x8CA6 - - - - 0x8CA7 - - - - 0x84E8 - - - - 0x0506 - - - - 0x9240 - - - - 0x9241 - - - - 0x9242 - - - - 0x9243 - - - - 0x9244 - - - - 0x0C02 - - - - 0x0CF2 - - - - 0x0CF3 - - - - 0x0CF4 - - - - 0x0D02 - - - - 0x0D03 - - - - 0x0D04 - - - - 0x806A - - - - 0x806D - - - - 0x806E - - - - 0x8073 - - - - 0x80E8 - - - - 0x80E9 - - - - 0x84FD - - - - 0x8B49 - - - - 0x8B4A - - - - 0x88FF - - - - 0x8904 - - - - 0x8905 - - - - 0x8B4B - - - - 0x8B8B - - - - 0x8C89 - - - - 0x85B5 - - - - 0x9122 - - - - 0x9125 - - - - 0x9111 - - - - 0x8D6B - - - - 0x1903 - - - - 0x8051 - - - - 0x8058 - - - - 0x8059 - - - - 0x806F - - - - 0x8072 - - - - 0x813A - - - - 0x813B - - - - 0x813C - - - - 0x813D - - - - 0x884C - - - - 0x884D - - - - 0x8C40 - - - - 0x8C41 - - - - 0x8C43 - - - - 0x884E - - - - 0x8814 - - - - 0x8815 - - - - 0x881A - - - - 0x881B - - - - 0x8C1A - - - - 0x8C1D - - - - 0x8C3A - - - - 0x8C3D - - - - 0x8D70 - - - - 0x8D71 - - - - 0x8D76 - - - - 0x8D77 - - - - 0x8D7C - - - - 0x8D7D - - - - 0x8D82 - - - - 0x8D83 - - - - 0x8D88 - - - - 0x8D89 - - - - 0x8D8E - - - - 0x8D8F - - - - 0x8D94 - - - - 0x8D98 - - - - 0x8D99 - - - - 0x8229 - - - - 0x822B - - - - 0x822D - - - - 0x822E - - - - 0x822F - - - - 0x8230 - - - - 0x8231 - - - - 0x8232 - - - - 0x8233 - - - - 0x8234 - - - - 0x8235 - - - - 0x8236 - - - - 0x8237 - - - - 0x8238 - - - - 0x8239 - - - - 0x823A - - - - 0x823B - - - - 0x823C - - - - 0x8F94 - - - - 0x8F95 - - - - 0x8F96 - - - - 0x8F97 - - - - 0x906F - - - - 0x912F - - - - 0x82DF - - - - 0x8368 - - - - 0x8C3B - - - - 0x8C3E - - - - 0x8DAD - - - - 0x84FA - - - - 0x140B - - - - 0x8227 - - - - 0x8228 - - - - 0x8D9F - - - - 0x8865 - - - - 0x8866 - - - - 0x8867 - - - - 0x8C2F - - - - 0x8D6A - - - - 0x8824 - - - - 0x8825 - - - - 0x8826 - - - - 0x8827 - - - - 0x8828 - - - - 0x8829 - - - - 0x882A - - - - 0x882B - - - - 0x882C - - - - 0x882D - - - - 0x882E - - - - 0x882F - - - - 0x8830 - - - - 0x8831 - - - - 0x8832 - - - - 0x8833 - - - - 0x8834 - - - - 0x8CDF - - - - 0x8CE1 - - - - 0x8CE2 - - - - 0x8CE3 - - - - 0x8CE4 - - - - 0x8CE5 - - - - 0x8CE6 - - - - 0x8CE7 - - - - 0x8CE8 - - - - 0x8CE9 - - - - 0x8CEA - - - - 0x8CEB - - - - 0x8CEC - - - - 0x8CED - - - - 0x8CEE - - - - 0x8CEF - - - - 0x8B5F - - - - 0x8B62 - - - - 0x8DC1 - - - - 0x8DC4 - - - - 0x8DC5 - - - - 0x8DCA - - - - 0x8DCB - - - - 0x8DCC - - - - 0x8DCF - - - - 0x8DD2 - - - - 0x8DD3 - - - - 0x8DD4 - - - - 0x8DD7 - - - - 0x8D57 - - - - 0x8919 - - - - 0x88EB - - - - 0x88EC - - - - 0x88ED - - - - 0x88EF - - - - 0x8F36 - - - - 0x8F37 - - - - 0x8F36 - - - - 0x8F37 - - - - 0x8B65 - - - - 0x8B66 - - - - 0x8B67 - - - - 0x8B68 - - - - 0x8B69 - - - - 0x8B6A - - - - 0x8DC6 - - - - 0x8DC7 - - - - 0x8DC8 - - - - 0x8C17 - - - - 0x8F9C - - - - 0x88FD - - - - 0x88FE - - - - 0x8C7F - - - - 0x8C80 - - - - 0x8C83 - - - - 0x8C84 - - - - 0x8C85 - - - - 0x8C88 - - - - 0x8C8A - - - - 0x8C8B - - - - 0x8C8C - - - - 0x8C8D - - - - 0x8C8E - - - - 0x8C8F - - - - 0x8E22 - - - - 0x8E23 - - - - 0x8E24 - - - - 0x8E25 - - - - 0x8210 - - - - 0x8211 - - - - 0x8212 - - - - 0x8213 - - - - 0x8214 - - - - 0x8215 - - - - 0x8216 - - - - 0x8217 - - - - 0x8218 - - - - 0x88F0 - - - - 0x8CA6 - - - - 0x8CA8 - - - - 0x8CA9 - - - - 0x8CAA - - - - 0x8CAB - - - - 0x8CD4 - - - - 0x8D56 - - - - 0x8A11 - - - - 0x8A28 - - - - 0x8A29 - - - - 0x8A2A - - - - 0x8A2B - - - - 0x8A2D - - - - 0x8A2E - - - - 0x8A2F - - - - 0x8A30 - - - - 0x8A31 - - - - 0x8A33 - - - - 0x8A34 - - - - 0x8A36 - - - - 0x8A37 - - - - 0x8A38 - - - - 0x8A3A - - - - 0x8A3B - - - - 0x8A3C - - - - 0x8A3D - - - - 0x8A3E - - - - 0x8A3F - - - - 0x8A40 - - - - 0x8A42 - - - - 0x8A43 - - - - 0x8A44 - - - - 0x8A46 - - - - 0x9112 - - - - 0x9113 - - - - 0x9114 - - - - 0x9115 - - - - 0x9116 - - - - 0x9117 - - - - 0x9118 - - - - 0x9119 - - - - 0x911A - - - - 0x911B - - - - 0x911C - - - - 0x911D - - - - 0x00000001 - - - - 0x1800 - - - - 0x1801 - - - - 0x1802 - - - - 0x8007 - - - - 0x8008 - - - - 0x81A6 - - - - 0x88E1 - - - - 0x88E2 - - - - 0x88E5 - - - - 0x88E6 - - - - 0x88E9 - - - - 0x88EA - - - - 0x8CAC - - - - 0x8CAD - - - - 0xFFFFFFFF - - - - -1 - - - - 0x9247 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__getObjectID get="inline" set="null" line="2596" static="1"> - - - - - - lime.ui.Window - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - hide - - - - - - - - hide - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - refs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - lime._internal.backend.native.NativeCFFI - lime._internal.backend.native.NativeCFFI - - lime._internal.backend.native.NativeCFFI - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - - - - - - - - id - - - - - - - - - - - - - - - - - <_3DC_X_AMD public="1" expr="0x87F9"> - - 0x87F9 - - <_3DC_XY_AMD public="1" expr="0x87FA"> - - 0x87FA - - - - - - - - - - - - - - - 0x8C92 - - - - 0x8C93 - - - - 0x87EE - - - - - - - - - - - - - - - 0x8BC0 - - - - 0x8BC1 - - - - 0x8BC2 - - - - 0x8BC3 - - - - 0x8BC4 - - - - 0x8BC5 - - - - 0x8BC6 - - - - - - - - - - - - - - - 0x8740 - - - - - - - - - - - - - - - 0x8CA8 - - - - 0x8CA9 - - - - 0x8CA6 - - - - 0x8CAA - - - - - - - - - - - - - - - 0x8CAB - - - - 0x8D56 - - - - 0x8D57 - - - - - - - - - - - - - - - 0x88FE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x93A4 - - - - - - - - - - - - - - - 0x83F2 - - - - - - - - - - - - - - - 0x83F3 - - - - - - - - - - - - - - - 0x93A2 - - - - 0x93A3 - - - - - - - - - - - - - - - 0x93A0 - - - - - - - - - - - - - - - - - - - - - - - - - 0x8CAB - - - - 0x8D56 - - - - 0x8D57 - - - - 0x8CA8 - - - - 0x8CA9 - - - - 0x8CA6 - - - - 0x8CAA - - - - - - - - - - - - - - - 0x8A1F - - - - 0x85BA - - - - 0x85BB - - - - - - - - - - - - - - - 0x8A53 - - - - 0x9111 - - - - 0x9112 - - - - 0x9113 - - - - 0x9114 - - - - 0x9115 - - - - 0x9116 - - - - 0x9117 - - - - 0x9118 - - - - 0x9119 - - - - 0x911A - - - - 0x911B - - - - 0x911C - - - - 0x911D - - - - 0x00000001 - - - - 0xFFFFFFFF - - - - - - - - - - - - - - - 0x80E1 - - - - - - - - - - - - - - - 0x813D - - - - - - - - - - - - - - - 0x8F61 - - - - - - - - - - - - - - - 0x8F60 - - - - - - - - - - - - - - - - - - - - - - - - - 0x9250 - - - - - - - - - - - - - - - 0x80E0 - - - - 0x80E1 - - - - - - - - - - - - - - - 0x8007 - - - - 0x8008 - - - - - - - - - - - - - - - - - - - - - - - - - 0x881A - - - - 0x881B - - - - 0x822F - - - - 0x822D - - - - 0x8211 - - - - 0x8C17 - - - - - - - - - - - - - - - 0x8A4F - - - - 0x8B40 - - - - 0x8B48 - - - - 0x9151 - - - - 0x9153 - - - - 0x9154 - - - - - - - - - - - - - - - - - - - - - - - - - 0x1800 - - - - 0x1801 - - - - 0x1802 - - - - - - - - - - - - - - - 0x0001 - - - - 0x0002 - - - - 0x0004 - - - - 0x0008 - - - - 0x0010 - - - - 0x0020 - - - - - - - - - - - - - - - - - - - - - - - - - 0x8D6C - - - - 0x8CAB - - - - 0x8D56 - - - - 0x8D57 - - - - - - - - - - - - - - - 0x90F0 - - - - 0x90F1 - - - - 0x0C01 - - - - 0x0C02 - - - - 0x90F2 - - - - - - - - - - - - - - - 0x8C2F - - - - 0x8D6A - - - - 0x8865 - - - - 0x8866 - - - - 0x8867 - - - - - - - - - - - - - - - 0x84F9 - - - - 0x84FA - - - - 0x88F0 - - - - 0x88F1 - - - - - - - - - - - - - - - 0x80E1 - - - - 0x8365 - - - - 0x8366 - - - - - - - - - - - - - - - 0x8253 - - - - 0x8254 - - - - 0x8255 - - - - 0x90F3 - - - - 0x8256 - - - - 0x8252 - - - - 0x8261 - - - - - - - - - - - - - - - 0x8C40 - - - - 0x8C42 - - - - 0x8C43 - - - - 0x8210 - - - - - - - - - - - - - - - 0x00000001 - - - - 0x00000002 - - - - 0xFFFFFFFF - - - - 0x8258 - - - - 0x8259 - - - - 0x825A - - - - - - - - - - - - - - - 0x8A52 - - - - - - - - - - - - - - - - - - - - - - - - - - 0x884C - - - - 0x884D - - - - 0x884E - - - - 0x8B62 - - - - - - - - - - - - - - - 0x83F0 - - - - 0x83F1 - - - - - - - - - - - - - - - 0x83F0 - - - - 0x83F1 - - - - 0x83F2 - - - - 0x83F3 - - - - - - - - - - - - - - - 0x84FE - - - - 0x84FF - - - - - - - - - - - - - - - 0x80E1 - - - - - - - - - - - - - - - 0x1903 - - - - 0x8227 - - - - 0x8229 - - - - 0x822B - - - - - - - - - - - - - - - 0x912F - - - - 0x803C - - - - 0x8040 - - - - 0x8045 - - - - 0x8814 - - - - 0x8815 - - - - 0x8816 - - - - 0x8818 - - - - 0x8819 - - - - 0x881A - - - - 0x881B - - - - 0x881C - - - - 0x881E - - - - 0x881F - - - - 0x8059 - - - - 0x8052 - - - - 0x93A1 - - - - 0x8229 - - - - 0x822B - - - - 0x822E - - - - 0x8230 - - - - 0x822D - - - - 0x822F - - - - - - - - - - - - - - - 0x8368 - - - - - - - - - - - - - - - 0x0CF2 - - - - 0x0CF3 - - - - 0x0CF4 - - - - - - - - - - - - - - - 0x9260 - - - - - - - - - - - - - - - 0x9133 - - - - 0x9134 - - - - 0x9135 - - - - 0x9136 - - - - - - - - - - - - - - - 0x9130 - - - - - - - - - - - - - - - 0x80E1 - - - - 0x8365 - - - - - - - - - - - - - - - 0x8C0A - - - - - - - - - - - - - - - 0x8C00 - - - - 0x8C01 - - - - 0x8C02 - - - - 0x8C03 - - - - - - - - - - - - - - - 0x8242 - - - - 0x8243 - - - - 0x8244 - - - - 0x8245 - - - - 0x8246 - - - - 0x8247 - - - - 0x8248 - - - - 0x8249 - - - - 0x824A - - - - 0x824B - - - - 0x824C - - - - 0x824D - - - - 0x824E - - - - 0x824F - - - - 0x8250 - - - - 0x8251 - - - - 0x8268 - - - - 0x8269 - - - - 0x826A - - - - 0x826B - - - - 0x826C - - - - 0x826D - - - - 0x82E0 - - - - 0x82E1 - - - - 0x82E2 - - - - 0x82E3 - - - - 0x82E6 - - - - 0x82E8 - - - - 0x9143 - - - - 0x9144 - - - - 0x9145 - - - - 0x9146 - - - - 0x9147 - - - - 0x9148 - - - - 0x92E0 - - - - 0x00000002 - - - - 0x0503 - - - - 0x0504 - - - - - - - - - - - - - - - 0x93B0 - - - - 0x93B1 - - - - 0x93B2 - - - - 0x93B3 - - - - 0x93B4 - - - - 0x93B5 - - - - 0x93B6 - - - - 0x93B7 - - - - 0x93B8 - - - - 0x93B9 - - - - 0x93BA - - - - 0x93BB - - - - 0x93BC - - - - 0x93BD - - - - 0x93D0 - - - - 0x93D1 - - - - 0x93D2 - - - - 0x93D3 - - - - 0x93D4 - - - - 0x93D5 - - - - 0x93D6 - - - - 0x93D7 - - - - 0x93D8 - - - - 0x93D9 - - - - 0x93DA - - - - 0x93DB - - - - 0x93DC - - - - 0x93DD - - - - - - - - - - - - - - - 0x9047 - - - - 0x9048 - - - - 0x9049 - - - - 0x904A - - - - 0x904B - - - - - - - - - - - - - - - 0x8ED0 - - - - 0x8ED1 - - - - 0x8ED2 - - - - 0x8ED3 - - - - 0x8ED4 - - - - 0x8ED5 - - - - 0x8ED6 - - - - 0x8ED7 - - - - 0x8000 - - - - - - - - - - - - - - - 0x8E2C - - - - - - - - - - - - - - - 0x8824 - - - - 0x8825 - - - - 0x8826 - - - - 0x8827 - - - - 0x8828 - - - - 0x8829 - - - - 0x882A - - - - 0x882B - - - - 0x882C - - - - 0x882D - - - - 0x882E - - - - 0x882F - - - - 0x8830 - - - - 0x8831 - - - - 0x8832 - - - - 0x8833 - - - - 0x8834 - - - - 0x8CE0 - - - - 0x8CE1 - - - - 0x8CE2 - - - - 0x8CE3 - - - - 0x8CE4 - - - - 0x8CE5 - - - - 0x8CE6 - - - - 0x8CE7 - - - - 0x8CE8 - - - - 0x8CE9 - - - - 0x8CEA - - - - 0x8CEB - - - - 0x8CEC - - - - 0x8CED - - - - 0x8CEE - - - - 0x8CEF - - - - - - - - - - - - - - - 0x8CDF - - - - 0x8CE0 - - - - 0x8CE1 - - - - 0x8CE2 - - - - 0x8CE3 - - - - 0x8CE4 - - - - 0x8CE5 - - - - 0x8CE6 - - - - 0x8CE7 - - - - 0x8CE8 - - - - 0x8CE9 - - - - 0x8CEA - - - - 0x8CEB - - - - 0x8CEC - - - - 0x8CED - - - - 0x8CEE - - - - 0x8CEF - - - - - - - - - - - - - - - 0x84F2 - - - - 0x84F3 - - - - 0x84F4 - - - - - - - - - - - - - - - 0x0C02 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x8D65 - - - - 0x8D66 - - - - 0x8D67 - - - - 0x8D68 - - - - - - - - - - - - - - - 0x8D64 - - - - - - - - - - - - - - - 0x8B90 - - - - 0x8B91 - - - - 0x8B92 - - - - 0x8B93 - - - - 0x8B94 - - - - 0x8B95 - - - - 0x8B96 - - - - 0x8B97 - - - - 0x8B98 - - - - 0x8B99 - - - - - - - - - - - - - - - 0x81A6 - - - - - - - - - - - - - - - 0x81A7 - - - - - - - - - - - - - - - - - - - - - - - - - 0x1405 - - - - - - - - - - - - - - - 0x8741 - - - - 0x87FE - - - - 0x87FF - - - - - - - - - - - - - - - 0x88B9 - - - - 0x88BB - - - - 0x88BC - - - - 0x88BD - - - - - - - - - - - - - - - 0x84F9 - - - - 0x84FA - - - - 0x88F0 - - - - - - - - - - - - - - - 0x803C - - - - 0x81A5 - - - - 0x81A6 - - - - 0x88F0 - - - - 0x81A7 - - - - 0x8043 - - - - 0x8045 - - - - 0x8040 - - - - 0x8056 - - - - 0x8057 - - - - 0x8D62 - - - - 0x8051 - - - - 0x8058 - - - - 0x8052 - - - - 0x8059 - - - - - - - - - - - - - - - 0x8051 - - - - 0x8058 - - - - - - - - - - - - - - - 0x8B8B - - - - - - - - - - - - - - - 0x8D46 - - - - - - - - - - - - - - - 0x8D47 - - - - - - - - - - - - - - - 0x8219 - - - - - - - - - - - - - - - 0x8072 - - - - 0x806F - - - - 0x806A - - - - 0x8073 - - - - 0x8B5F - - - - 0x8CD4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x8D61 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x85B5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x8D61 - - - - - - - - - - - - - - - 0x8DF6 - - - - 0x8DF7 - - - - - - - - - - - - - - - 0x0BC0 - - - - 0x0BC1 - - - - 0x0BC2 - - - - - - - - - - - - - - - 0x8FB0 - - - - 0x8FB1 - - - - 0x8FB2 - - - - 0x8FB3 - - - - - - - - - - - - - - - - - - - - - - - - - 0x8BD2 - - - - 0x8BD3 - - - - 0x8BD4 - - - - 0x8BD5 - - - - 0x8BD6 - - - - 0x8BD7 - - - - 0x8BD8 - - - - 0x8BD9 - - - - 0x8BDA - - - - 0x8BDB - - - - 0x8BDC - - - - - - - - - - - - - - - - - - - - - - - - - 0x8FA0 - - - - - - - - - - - - - - - 0x00000001 - - - - 0x00000002 - - - - 0x00000004 - - - - 0x00000008 - - - - 0x00000010 - - - - 0x00000020 - - - - 0x00000040 - - - - 0x00000080 - - - - 0x00000100 - - - - 0x00000200 - - - - 0x00000400 - - - - 0x00000800 - - - - 0x00001000 - - - - 0x00002000 - - - - 0x00004000 - - - - 0x00008000 - - - - 0x00010000 - - - - 0x00020000 - - - - 0x00040000 - - - - 0x00080000 - - - - 0x00100000 - - - - 0x00200000 - - - - 0x00400000 - - - - 0x00800000 - - - - 0x01000000 - - - - 0x02000000 - - - - 0x04000000 - - - - 0x08000000 - - - - 0x10000000 - - - - 0x20000000 - - - - 0x40000000 - - - - 0x80000000 - - - - - - - - - - - - - - - 0x8823 - - - - - - - - - - - - - - - 0x8FC4 - - - - - - - - - - - - - - - - - - - - - - - - A utility for storing, accessing and converting colors in an ARGB - (alpha, red, green, blue) color format. - - ```haxe - var color:ARGB = 0xFF883300; - trace (color.a); // 0xFF - trace (color.r); // 0x88 - trace (color.g); // 0x33 - trace (color.b); // 0x00 - - var convert:BGRA = color; // 0x003388FF - ``` - - - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="51" static="1"> - - - - - - { argb : 0 } - - - Creates a new ARGB instance - @param argb (Optional) An ARGB color value - - - - - - - - - - Creates a new ARGB instance from component values - @param a An alpha component value - @param r A red component value - @param g A green component value - @param b A blue component value - @return A new ARGB instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `ARGB` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `ARGB` color to new component values - @param a The alpha component value to set - @param r The red component value to set - @param g The green component value to set - @param b The blue component vlaue to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `ARGB` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromBGRA get="inline" set="null" line="175" static="1"> - - - - - - - <__fromRGBA get="inline" set="null" line="180" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="51" static="1"> - - - - - - { argb : 0 } - - - Creates a new ARGB instance - @param argb (Optional) An ARGB color value - - - - - - - - - - Creates a new ARGB instance from component values - @param a An alpha component value - @param r A red component value - @param g A green component value - @param b A blue component value - @return A new ARGB instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `ARGB` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `ARGB` color to new component values - @param a The alpha component value to set - @param r The red component value to set - @param g The green component value to set - @param b The blue component vlaue to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `ARGB` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromBGRA get="inline" set="null" line="175" static="1"> - - - - - - - <__fromRGBA get="inline" set="null" line="180" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A utility for storing, accessing and converting colors in a BGRA - (blue, green, red, alpha) color format. - - ```haxe - var color:BGRA = 0x003388FF; - trace (color.b); // 0x00 - trace (color.g); // 0x33 - trace (color.r); // 0x88 - trace (color.a); // 0xFF - - var convert:ARGB = color; // 0xFF883300 - ``` - - - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="51" static="1"> - - - - - - { bgra : 0 } - - - Creates a new BGRA instance - @param bgra (Optional) A BGRA color value - - - - - - - - - - Creates a new BGRA instance from component values - @param b A blue component value - @param g A green component value - @param r A red component value - @param a An alpha component value - @return A new BGRA instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `BGRA` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `BGRA` color to new component values - @param b The blue component vlaue to set - @param g The green component value to set - @param r The red component value to set - @param a The alpha component value to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `BGRA` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromARGB get="inline" set="null" line="175" static="1"> - - - - - - - <__fromRGBA get="inline" set="null" line="180" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="51" static="1"> - - - - - - { bgra : 0 } - - - Creates a new BGRA instance - @param bgra (Optional) A BGRA color value - - - - - - - - - - Creates a new BGRA instance from component values - @param b A blue component value - @param g A green component value - @param r A red component value - @param a An alpha component value - @return A new BGRA instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `BGRA` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `BGRA` color to new component values - @param b The blue component vlaue to set - @param g The green component value to set - @param r The red component value to set - @param a The alpha component value to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `BGRA` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromARGB get="inline" set="null" line="175" static="1"> - - - - - - - <__fromRGBA get="inline" set="null" line="180" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `ColorMatrix` is a 4x5 matrix containing color multiplication - and offset values for tinting and other kinds of color - manipulation. In addition to using the multiplier, offset and - `color` properties, it can be edited directly as a `Float32Array` - - <__alphaTable static="1"> - <__blueTable static="1"> - <__greenTable static="1"> - <__identity expr="[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]" line="20" static="1"> - - [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] - - <__redTable static="1"> - - - The current alpha multiplication value (default is 1.0) - - - - The current alpha offset value (default is 0) - - - - The current blue multiplication value (default is 1.0) - - - - The current blue offset value (default is 0) - - - - Gets or sets a color offset for tinting. - - This will change the red, green and blue multipliers - to zero, and affect the red, green and blue offset - values. - - - - The current green multiplication value (default is 1.0) - - - - The current green offset value (default is 0) - - - - The current red multiplication value (default is 1.0) - - - - The current red offset value (default is 0) - - <_new public="1" set="method" line="78" static="1"> - - - - - - { data : null } - - - Creates a new `ColorMatrix` instance - @param data (Optional) Initial `Float32Array` data to use - - - - - - - Creates a duplicate of the current `ColorMatrix` instance - @return A new `ColorMatrix` instance - - - - - - - - Adds the color multipliers from a second `ColorMatrix` to the current one - @param second The `ColorMatrix` to `concat` to the current one - - - - - - - - Sets the current `ColorMatrix` values to the same as another one - @param other The `ColorMatrix` to copy from - - - - - - - Resets to default values - - - - - - - Returns a reference to a `UInt8Array` table for transforming - alpha values using the current matrix. - - The table is 256 values in length, and includes values based - on the `alphaMultipler` and `alphaOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.alphaOffset = 12; - - var alphaTable = colorMatrix.getAlphaTable (); - trace (alphaTable[0]); // 12 - trace (alphaTable[1]); // 13 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - blue values using the current matrix. - - The table is 256 values in length, and includes values based - on the `blueMultiplier` and `blueOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.blueOffset = 16; - - var blueTable = colorMatrix.getBlueTable (); - trace (blueTable[0]); // 16 - trace (blueTable[1]); // 17 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - green values using the current matrix. - - The table is 256 values in length, and includes values based - on the `greenMultiplier` and `greenOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.greenOffset = 16; - - var greenTable = colorMatrix.getGreenTable (); - trace (greenTable[0]); // 16 - trace (greenTable[1]); // 17 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - red values using the current matrix. - - The table is 256 values in length, and includes values based - on the `redMultiplier` and `redOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.redOffset = 16; - - var redTable = colorMatrix.getRedTable (); - trace (redTable[0]); // 16 - trace (redTable[1]); // 17 - ``` - - <__toFlashColorTransform set="method" line="309" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - hide - - - - - - - - - <__alphaTable static="1"> - <__blueTable static="1"> - <__greenTable static="1"> - <__identity expr="[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]" line="20" static="1"> - - [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] - - <__redTable static="1"> - - - The current alpha multiplication value (default is 1.0) - - - - The current alpha offset value (default is 0) - - - - The current blue multiplication value (default is 1.0) - - - - The current blue offset value (default is 0) - - - - Gets or sets a color offset for tinting. - - This will change the red, green and blue multipliers - to zero, and affect the red, green and blue offset - values. - - - - The current green multiplication value (default is 1.0) - - - - The current green offset value (default is 0) - - - - The current red multiplication value (default is 1.0) - - - - The current red offset value (default is 0) - - <_new public="1" set="method" line="78" static="1"> - - - - - - { data : null } - - - Creates a new `ColorMatrix` instance - @param data (Optional) Initial `Float32Array` data to use - - - - - - - Creates a duplicate of the current `ColorMatrix` instance - @return A new `ColorMatrix` instance - - - - - - - - Adds the color multipliers from a second `ColorMatrix` to the current one - @param second The `ColorMatrix` to `concat` to the current one - - - - - - - - Sets the current `ColorMatrix` values to the same as another one - @param other The `ColorMatrix` to copy from - - - - - - - Resets to default values - - - - - - - Returns a reference to a `UInt8Array` table for transforming - alpha values using the current matrix. - - The table is 256 values in length, and includes values based - on the `alphaMultipler` and `alphaOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.alphaOffset = 12; - - var alphaTable = colorMatrix.getAlphaTable (); - trace (alphaTable[0]); // 12 - trace (alphaTable[1]); // 13 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - blue values using the current matrix. - - The table is 256 values in length, and includes values based - on the `blueMultiplier` and `blueOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.blueOffset = 16; - - var blueTable = colorMatrix.getBlueTable (); - trace (blueTable[0]); // 16 - trace (blueTable[1]); // 17 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - green values using the current matrix. - - The table is 256 values in length, and includes values based - on the `greenMultiplier` and `greenOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.greenOffset = 16; - - var greenTable = colorMatrix.getGreenTable (); - trace (greenTable[0]); // 16 - trace (greenTable[1]); // 17 - ``` - - - - - - - Returns a reference to a `UInt8Array` table for transforming - red values using the current matrix. - - The table is 256 values in length, and includes values based - on the `redMultiplier` and `redOffset` values of the matrix. - - The values are constrained within 0 and 255. - - For example: - - ```haxe - var colorMatrix = new ColorMatrix (); - colorMatrix.redOffset = 16; - - var redTable = colorMatrix.getRedTable (); - trace (redTable[0]); // 16 - trace (redTable[1]); // 17 - ``` - - <__toFlashColorTransform set="method" line="309" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - hide - - - - - - - - - - - - - - `Matrix4` is a 4x4 matrix, useful for 3D calculations - - <__identity expr="[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]" line="11" static="1"> - - [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] - - - - Gets the determinant of the matrix - - - - Gets or sets the position value of this matrix - - <_new public="1" set="method" line="27" static="1"> - - - - - - { data : null } - - - Creates a new matrix instance - @param data (Optional) A `Float32Array` of 16 values to use for this matrix - - - - - - - - Appends a second matrix by multiplying its values against the current one - @param lhs A second matrix instance - - - - - - - - - - { pivotPoint : null } - Appends rotation to the current matrix - @param degrees A rotation value (in degrees) - @param axis The coordinate position of the rotation axis - @param pivotPoint (Optional) A pivot point to use in the rotation - - - - - - - - - - Appends a scale value to the current matrix - @param xScale The x scale to append - @param yScale The y scale to append - @param zScale The z scale to append - - - - - - - - - - Increases the position/translation of the current matrix - @param x The x amount to offset the current position - @param y The y amount to offset the current position - @param z The z amount to offset the current position - - - - - - - Creates a duplicate of the current `Matrix4` - @return A new `Matrix4` with the same values as the current matrix - - - - - - - - - Copies a column of data from a `Vector4` instance into the values of this matrix - @param column The column to copy into (0, 1, 2 or 3) - @param vector The `Vector4` copy from - - - - - - - - - Copies a column of data from the current matrix into a `Vector4` instance - @param column The column to copy (0, 1, 2 or 3) - @param vector The `Vector4` copy to - - - - - - - - Copies the values of another `Matrix4` into the current matrix - @param other A `Matrix4` instance to copy from - - - - - - - - - Copies a row of data from a `Vector4` instance into the values of this matrix - @param row The row to copy into (0, 1, 2 or 3) - @param vector The `Vector4` copy from - - - - - - - - - Copies a row of data from the current matrix into a `Vector4` instance - @param column The row to copy (0, 1, 2 or 3) - @param vector The `Vector4` copy to - - - - - - - - - - - - - { ty : 0, tx : 0 } - Resets the current matrix using two-dimensional transform values - @param a A two-dimensional matrix a value - @param b A two-dimensional matrix b value - @param c A two-dimensional matrix c value - @param d A two-dimensional matrix d value - @param tx (Optional) A two-dimensional matrix tx value (default is 0) - @param ty (Optional) A two-dimensional matrix ty value (default is 0) - - - - - - - - - - - - - Initializes this matrix with values for an orthographic projection, useful in rendering - @param left The left (or x0) coordinate for the projection - @param right The right (or x1) coordinate for the projection - @param bottom The bottom (or y0) coordinate for the projection - @param top The top (or y1) coordinate for the projection - @param zNear The near depth-clipping plane position - @param zFar The far depth-clipping plane position - - - - - - - - - { result : null } - * Returns the transformation matrix's translation, rotation, and scale settings as a Vector of three Vector4 objects. - - - - - - - - - - - - - - Resets the current matrix using default identity values - - - - - - - - - - { result : null } - Interpolates from one `Matrix4` instance to another, given a percentage between the two - @param thisMat The first `Matrix4` object to start from - @param toMat The second `Matrix4` object to interpolate toward - @param percent The percentage value to interpolate by - @param result (Optional) A `Matrix4` instance to use when returning the result - @return A `Matrix4` with the resulting value - - - - - - - - - Interpolates the current matrix toward another matrix, resetting the values of the current matrix - @param toMat The second `Matrix4` object to interpolate toward - @param percetn The percentage value to interpolate by - - - - - - - Attempts to invert the current matrix, so long as the determinant is greater than zero - @return Whether the `invert` operation was successful - - - - - - - - - - { up : null, at : null } - Sets the matrix values as a transformation orientated toward a certain vector position - @param pos A target vector position in absolute coordinates - @param at (Optional) A vector relative to this matrix which defines the current direction - @param up (Optional) A vector relative to this matrix which defines the "up" direction - - - - - - - - Prepends a right-hand matrix to the current matrix - @param rhx A right-hand `Matrix4` to append - - - - - - - - - - { pivotPoint : null } - Prepends rotation to this matrix - @param degrees The rotation amount in degrees - @param axis The rotation axis - @param pivotPoint (Optional) A pivot point for the rotation - - - - - - - - - - Prepends scale to this matrix - @param xScale An x scale value - @param yScale A y scale value - @param zScale A z scale value - - - - - - - - - - Prepends translation values to this matrix - @param x An x translation value - @param y A y translation value - @param z A z translation value - - - - - - - - - { result : null } - Transforms a `Vector4` instance using the current matrix - @param result (Optional) An existing `Vector2` instance to fill with the result - @return The resulting `Vector4` instance - - - - - - - - - Transforms a series of [x, y, z] value pairs at once - @param ain An input `Float32Array` to transform - @param aout An output `Float32Array` to write to - - - - - - - Transposes the current matrix - - <__getAxisRotation set="method" line="919" static="1"> - - - - - - - - - - - <__swap get="inline" set="null" line="949" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - hide - - - - - - - - - <__identity expr="[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]" line="11" static="1"> - - [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0] - - - - Gets the determinant of the matrix - - - - Gets or sets the position value of this matrix - - <_new public="1" set="method" line="27" static="1"> - - - - - - { data : null } - - - Creates a new matrix instance - @param data (Optional) A `Float32Array` of 16 values to use for this matrix - - - - - - - - Appends a second matrix by multiplying its values against the current one - @param lhs A second matrix instance - - - - - - - - - - { pivotPoint : null } - Appends rotation to the current matrix - @param degrees A rotation value (in degrees) - @param axis The coordinate position of the rotation axis - @param pivotPoint (Optional) A pivot point to use in the rotation - - - - - - - - - - Appends a scale value to the current matrix - @param xScale The x scale to append - @param yScale The y scale to append - @param zScale The z scale to append - - - - - - - - - - Increases the position/translation of the current matrix - @param x The x amount to offset the current position - @param y The y amount to offset the current position - @param z The z amount to offset the current position - - - - - - - Creates a duplicate of the current `Matrix4` - @return A new `Matrix4` with the same values as the current matrix - - - - - - - - - Copies a column of data from a `Vector4` instance into the values of this matrix - @param column The column to copy into (0, 1, 2 or 3) - @param vector The `Vector4` copy from - - - - - - - - - Copies a column of data from the current matrix into a `Vector4` instance - @param column The column to copy (0, 1, 2 or 3) - @param vector The `Vector4` copy to - - - - - - - - Copies the values of another `Matrix4` into the current matrix - @param other A `Matrix4` instance to copy from - - - - - - - - - Copies a row of data from a `Vector4` instance into the values of this matrix - @param row The row to copy into (0, 1, 2 or 3) - @param vector The `Vector4` copy from - - - - - - - - - Copies a row of data from the current matrix into a `Vector4` instance - @param column The row to copy (0, 1, 2 or 3) - @param vector The `Vector4` copy to - - - - - - - - - - - - - { ty : 0, tx : 0 } - Resets the current matrix using two-dimensional transform values - @param a A two-dimensional matrix a value - @param b A two-dimensional matrix b value - @param c A two-dimensional matrix c value - @param d A two-dimensional matrix d value - @param tx (Optional) A two-dimensional matrix tx value (default is 0) - @param ty (Optional) A two-dimensional matrix ty value (default is 0) - - - - - - - - - - - - - Initializes this matrix with values for an orthographic projection, useful in rendering - @param left The left (or x0) coordinate for the projection - @param right The right (or x1) coordinate for the projection - @param bottom The bottom (or y0) coordinate for the projection - @param top The top (or y1) coordinate for the projection - @param zNear The near depth-clipping plane position - @param zFar The far depth-clipping plane position - - - - - - - - - { result : null } - * Returns the transformation matrix's translation, rotation, and scale settings as a Vector of three Vector4 objects. - - - - - - - - - - - - - - Resets the current matrix using default identity values - - - - - - - - - - { result : null } - Interpolates from one `Matrix4` instance to another, given a percentage between the two - @param thisMat The first `Matrix4` object to start from - @param toMat The second `Matrix4` object to interpolate toward - @param percent The percentage value to interpolate by - @param result (Optional) A `Matrix4` instance to use when returning the result - @return A `Matrix4` with the resulting value - - - - - - - - - Interpolates the current matrix toward another matrix, resetting the values of the current matrix - @param toMat The second `Matrix4` object to interpolate toward - @param percetn The percentage value to interpolate by - - - - - - - Attempts to invert the current matrix, so long as the determinant is greater than zero - @return Whether the `invert` operation was successful - - - - - - - - - - { up : null, at : null } - Sets the matrix values as a transformation orientated toward a certain vector position - @param pos A target vector position in absolute coordinates - @param at (Optional) A vector relative to this matrix which defines the current direction - @param up (Optional) A vector relative to this matrix which defines the "up" direction - - - - - - - - Prepends a right-hand matrix to the current matrix - @param rhx A right-hand `Matrix4` to append - - - - - - - - - - { pivotPoint : null } - Prepends rotation to this matrix - @param degrees The rotation amount in degrees - @param axis The rotation axis - @param pivotPoint (Optional) A pivot point for the rotation - - - - - - - - - - Prepends scale to this matrix - @param xScale An x scale value - @param yScale A y scale value - @param zScale A z scale value - - - - - - - - - - Prepends translation values to this matrix - @param x An x translation value - @param y A y translation value - @param z A z translation value - - - - - - - - - { result : null } - Transforms a `Vector4` instance using the current matrix - @param result (Optional) An existing `Vector2` instance to fill with the result - @return The resulting `Vector4` instance - - - - - - - - - Transforms a series of [x, y, z] value pairs at once - @param ain An input `Float32Array` to transform - @param aout An output `Float32Array` to write to - - - - - - - Transposes the current matrix - - <__getAxisRotation set="method" line="919" static="1"> - - - - - - - - - - - <__swap get="inline" set="null" line="949" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - hide - - - - - - - - - - - - - - - - - - - A utility for storing, accessing and converting colors in an RGBA - (red, green, blue, alpha) color format. - - ```haxe - var color:RGBA = 0x883300FF; - trace (color.r); // 0x88 - trace (color.g); // 0x33 - trace (color.b); // 0x00 - trace (color.a); // 0xFF - - var convert:ARGB = color; // 0xFF883300 - ``` - - lime.math - - - - <__alpha16 static="1"> - <__clamp static="1"> - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="104" static="1"> - - - - - - { rgba : 0 } - - - Creates a new RGBA instance - @param rgba (Optional) An RGBA color value - - - - - - - - - - Creates a new RGBA instance from component values - @param r A red component value - @param g A green component value - @param b A blue component value - @param a An alpha component value - @return A new RGBA instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `RGBA` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `RGBA` color to new component values - @param r The red component value to set - @param g The green component value to set - @param b The blue component vlaue to set - @param a The alpha component value to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `RGBA` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromARGB get="inline" set="null" line="231" static="1"> - - - - - - - <__fromBGRA get="inline" set="null" line="236" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.math - - - - - - - TypedArrayType.None - - - - - - - - 0 - - - - - - - lime.utils - - - - - - - - - - { len : null, in_byteOffset : 0 } - lime.utils - - - - - - - - lime.utils - - - - - - - - - { offset : 0, array : null, view : null } - - - - - - - - { srcByteOffset : 0 } - - - - - - - - - - - - - - - - - { offset : 0 } - - - - - - - - - { elements : null } - lime.utils - - - - - "tags=\"haxe,release\"" - - - - - - - - - - hide - - - - <__alpha16 static="1"> - <__clamp static="1"> - - - - - Accesses the alpha component of the color - - - - Accesses the blue component of the color - - - - Accesses the green component of the color - - - - Accesses the red component of the color - - <_new public="1" get="inline" set="null" line="104" static="1"> - - - - - - { rgba : 0 } - - - Creates a new RGBA instance - @param rgba (Optional) An RGBA color value - - - - - - - - - - Creates a new RGBA instance from component values - @param r A red component value - @param g A green component value - @param b A blue component value - @param a An alpha component value - @return A new RGBA instance - - - - - - - Multiplies the red, green and blue components by the current alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Reads a value from a `UInt8Array` into the current `RGBA` color - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to read - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - - - - - - - - - - Sets the current `RGBA` color to new component values - @param r The red component value to set - @param g The green component value to set - @param b The blue component vlaue to set - @param a The alpha component value to set - - - - - - - Divides the current red, green and blue components by the alpha component - - - - - - - - - - - { premultiplied : false, format : RGBA32 } - Writes the current `RGBA` color into a `UInt8Array` - @param data A `UInt8Array` instance - @param offset An offset into the `UInt8Array` to write - @param format (Optional) The `PixelFormat` represented by the `UInt8Array` data - @param premultiplied (Optional) Whether the data is stored in premultiplied alpha format - - <__fromARGB get="inline" set="null" line="231" static="1"> - - - - - - - <__fromBGRA get="inline" set="null" line="236" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.math - - - - - - Get or set the bottom (y + height) value of the `Rectangle` - - - - Get or set the bottom-right (x + width, y + height) as a `Vector2` - - - - Get or set the height of the rectangle - - - - Get or set the left (x) of the rectangle - - - - Get or set the right (x + width) of the rectangle - - - - Get or set the size (width, height) as a `Vector2` - - - - Get or set the top (y) of the rectangle - - - - Get or set the top-left (x, y) as a `Vector2` - - - - Get or set the width of the rectangle - - - - Get or set the x of the rectangle - - - - Get or set the y of the rectangle - - - - Creates a clone of this `Rectangle` - @return A new `Rectangle` instance - - - - - - - - Returns whether this rectangle contains the specified (x, y) point - @param x The x coordinate to test - @param y The y coordinate to test - @return Whether the point is contained in the rectangle - - - - - - - - hide - - "Use containsVector" - - - - - - - - Returns whether this rectangle contains another rectangle - This will return `false` if the second rectangle only - overlaps but is not fully contained within the current rectangle - @param rect A second `Rectangle` instance to test - @return Whether the `rect` is contained within the current `Rectangle` - - - - - - - Returns whether this rectangle contains the specified vector - @param vector The vector to test - @return Whether the vector is contained in the rectangle - - - - - - - Copies the x, y, width and height of another `Rectangle` - @param sourceRect Another `Rectangle` instance - - - - - - - Checks whether the current `Rectangle` and another - instance have equal values - @param toCompare Another `Rectangle` to compare with - @return Whether both rectangles are not `null` and have equal values - - - - - - - - Increases the size of the current rectangle by - the given delta x and y values - @param dx A delta x value to increase the size by - @param dy A delta y value to increase the size by - - - - - - - Increases the size of the current rectangle by - the given delta vector values - @param vector A delta vector to increase the size by - - - - - - - - { result : null } - Returns a new rectangle with the area where the current - `Rectangle` and another `Rectangle` instance overlap. - If they do not overlap, the returned `Rectangle` will - be empty - @param toIntersect Another `Rectangle` instance to intersect with - @param result (Optional) A `Rectangle` instance to use for the result - @return A `Rectangle` of the intersection area - - - - - - - Returns if the current `Rectangle` overlaps with another instance - @param toIntersect Another `Rectangle` to compare with - @return Whether the rectangles intersect - - - - - - - - - - - - Moves the rectangle by offset x and values - @param dx A delta x value - @param dy A delta y value - - - - - - - Moves the rectangle by the values of a `Vector2` - @param dx A delta vector - - - - Makes this rectangle empty - - - - - - - - - - Sets the values of this rectangle at once - @param xa A new x value - @param ya A new y value - @param widtha A new width value - @param heighta A new height value - - - - - - - - { result : null } - Combines two rectangles together, returning the - minimum `Rectangle` that contains both rectangles - @param toUnion A second `Rectangle` to unify - @param result (Optional) A `Rectangle` instance for the result - @return A `Rectangle` that contains the dimensions of both rectangles - - <__toFlashRectangle set="method" line="336"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { height : 0, width : 0, y : 0, x : 0 } - Create a new `Rectangle` instance - @param x (Optional) Initial x value (default is 0) - @param y (Optional) Initial y value (default is 0) - @param width (Optional) Initial width value (default is 0) - @param height (Optional) Initial height value (default is 0) - - The `Rectangle` class provides a simple object for storing - and manipulating a logical rectangle for calculations - - - "tags=\"haxe,release\"" - - - - - - - A constant representing the x axis (1, 0, 0) - - - - A constant representing the y axis (0, 1, 0) - - - - A constant representing the z axis (0, 0, 1) - - - - - - - - Calculates the angle between two `Vector4` coordinates - @param a A `Vector4` instance - @param b A second `Vector4` instance - @return The calculated angle - - - - - - - - Calculates the distance between two vectors - @param pt1 A `Vector4` instance - @param pt2 A second `Vector4` instance - @return The distance between each vector - - - - - - - - Calculates the squared distance between two vectors, - (avoids the use of `Math.sqrt` for faster performance) - @param pt1 A `Vector4` instance - @param pt2 A second `Vector4` instance - @return The square of the distance between each vector - - - - - - - Get the length of this vector - - - - Get the squared length of this vector - (avoiding the use of `Math.sqrt` for faster - performance) - - - - The w component value - - - - The x component value - - - - The y component value - - - - The z component value - - - - - - - - { result : null } - Adds two `Vector4` instances together and returns the result - @param a A `Vector4` instance to add to the current one - @param result (Optional) A `Vector4` instance to store the result - @return A `Vector4` instance with the added value - - - - Creates a new `Vector4` instance with the same values as the current one - @return A new `Vector4` instance with the same values - - - - - - - Copies the x, y and z component values of another `Vector4` instance - @param sourceVector4 A `Vector4` instance to copy from - - - - - - - - { result : null } - Performs vector multiplication between this vector and another `Vector4` instance - @param a A `Vector4` instance to multiply by - @param result (Optional) A `Vector4` to use for the result - @return A `Vector4` instance with the result - - - - - - - Decrements the x, y and z component values by those in another `Vector4` instance - @param a A `Vector4` instance to decrement the current vector by - - - - - - - Calculates the dot product of the current vector with another `Vector4` instance - @param a A `Vector4` instance to use in the dot product - @return The calculated dot product value - - - - - - - - { allFour : false } - Whether two `Vector4` instances have equal component values. - - Comparing the w component value is optional. - @param toCompare A `Vector4` instance to compare against - @param allFour (Optional) Whether to compare against the w component (default is false) - @return Whether both instances have equal values - - - - - - - Increments the x, y and z component values by those in a second `Vector4` instance - @param a A `Vector4` instance to increment the current vector by - - - - - - - - - { allFour : false } - Whether two `Vector4` instances have nearly equal component values. - Comparison is performed within a given tolerance value. - @param toCompare A `Vector4` instance to compare against - @param tolerance A floating point value determining how near the values must be to be considered near equal - @param allFour (Optional) Whether to compare against the w component (default is false) - @return Whether both instances have equal values, within the given tolerance - - - - Negates the x, y and z values of the current vector - (multiplying each value by -1) - - - - Divides the x, y and z component values by the - length of the vector - - - - Divides the x, y and z component values by the - w component value - - - - - - - Scales the x, y and z component values by a scale value - @param s The amount of scale to apply - - - - - - - - - Sets the x, y and z component values - @param xa An x value - @param ya A y value - @param za A z value - - - - - - - - { result : null } - Subtracts the values of a second `Vector4` instance - from the current one - @param a A second `Vector4` instance to substract - @param result (Optional) A `Vector4` instance to store the result - @return A `Vector4` instance containing the subtracted value - - - - hide - - - - - - - - - - - - - - - - - - { w : 0., z : 0., y : 0., x : 0. } - Creates a new `Vector4` instance - @param x (Optional) An initial x value (default is 0) - @param y (Optional) An initial y value (default is 0) - @param z (Optional) An initial z value (default is 0) - @param w (Optional) An initial w value (default is 0) - - `Vector4` is a vector suitable for three-dimensional - math, containing (x, y, z, w) components - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__getCodec set="method" line="343" static="1"> - - - - - - - - - <__srcAudio> - - - - <__srcBuffer> - - - - <__srcCustom> - - - - <__srcHowl> - - - - <__srcSound> - - - - <__srcVorbisFile> - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - lime.utils.Assets - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - { type : null } - - - - lime.media.FlashAudioContext - lime.media.HTML5AudioContext - lime.media.OpenALAudioContext - lime.media.WebAudioContext - - - - - - - - - - - - cast "flash" - - - - - - - - cast "html5" - - - - - - - - cast "openal" - - - - - - - - cast "web" - - - - - - - - cast "custom" - - - - - - - - - - - - cast "flash" - - - - - - - - cast "html5" - - - - - - - - cast "openal" - - - - - - - - cast "web" - - - - - - - - cast "custom" - - - - - - - - - - - - - - { context : null } - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - ()]]> - - - - - - - - - - <__backend> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { loops : 0, length : null, offset : 0, buffer : null } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - { context : null, stream : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { startPosition : -1 } - - - - - - - - - { context : null } - - - - - - - - - - - - - - - - - - { sampleRate : 44100, stereo : true, format : null } - - - - - - - - - - { sndTransform : null, loops : 0, startTime : 0 } - - - - - - - - - - 2 - - - - 4 - - - - 3 - - - - 1 - - - - 0 - - - - 0 - - - - 1 - - - - 2 - - - - 3 - - - - - - - - - - - - { urlString : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.media.AudioBuffer - - - - - 0 - - - - 0 - - - - 1 - - - - 0x202 - - - - 0x1001 - - - - 0x1002 - - - - 0x1003 - - - - 0x1004 - - - - 0x1005 - - - - 0x1006 - - - - 0x1007 - - - - 0x1009 - - - - 0x100A - - - - 0x100D - - - - 0x100E - - - - 0x100F - - - - 0x1010 - - - - 0x1011 - - - - 0x1012 - - - - 0x1013 - - - - 0x1014 - - - - 0x1015 - - - - 0x1016 - - - - 0x1020 - - - - 0x1021 - - - - 0x1022 - - - - 0x1023 - - - - 0x1024 - - - - 0x1025 - - - - 0x1026 - - - - 0x1027 - - - - 0x1028 - - - - 0x1029 - - - - 0x1030 - - - - 0x1100 - - - - 0x1101 - - - - 0x1102 - - - - 0x1103 - - - - 0x2001 - - - - 0x2002 - - - - 0x2003 - - - - 0x2004 - - - - 0 - - - - 0xA001 - - - - 0xA002 - - - - 0xA003 - - - - 0xA004 - - - - 0xA005 - - - - 0xB001 - - - - 0xB002 - - - - 0xB003 - - - - 0xB004 - - - - 0xC000 - - - - 0xC003 - - - - 0xC001 - - - - 0xD000 - - - - 0xD001 - - - - 0xD002 - - - - 0xD003 - - - - 0xD004 - - - - 0xD005 - - - - 0xD006 - - - - 0x1008 - - - - 0x1009 - - - - 0x1010 - - - - 0x1011 - - - - 0xA001 - - - - 0xA002 - - - - 0x1002 - - - - 0x1003 - - - - 0x1004 - - - - 0x1005 - - - - 1 - - - - 0x1012 - - - - 0x1013 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { attrlist : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - { device : null } - - - - - - - { device : null } - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - { device : null, count : 1 } - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - { count : 1 } - - - - - - - - { device : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { deviceName : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - 0 - - - - 1 - - - - 0x202 - - - - 0x1001 - - - - 0x1002 - - - - 0x1003 - - - - 0x1004 - - - - 0x1005 - - - - 0x1006 - - - - 0x1007 - - - - 0x1009 - - - - 0x100A - - - - 0x100D - - - - 0x100E - - - - 0x100F - - - - 0x1010 - - - - 0x1011 - - - - 0x1012 - - - - 0x1013 - - - - 0x1014 - - - - 0x1015 - - - - 0x1016 - - - - 0x1020 - - - - 0x1021 - - - - 0x1022 - - - - 0x1023 - - - - 0x1024 - - - - 0x1025 - - - - 0x1026 - - - - 0x1027 - - - - 0x1028 - - - - 0x1029 - - - - 0x1030 - - - - 0x1100 - - - - 0x1101 - - - - 0x1102 - - - - 0x1103 - - - - 0x2001 - - - - 0x2002 - - - - 0x2003 - - - - 0x2004 - - - - 0 - - - - 0xA001 - - - - 0xA002 - - - - 0xA003 - - - - 0xA004 - - - - 0xA005 - - - - 0xB001 - - - - 0xB002 - - - - 0xB003 - - - - 0xB004 - - - - 0xC000 - - - - 0xC003 - - - - 0xC001 - - - - 0xD000 - - - - 0xD001 - - - - 0xD002 - - - - 0xD003 - - - - 0xD004 - - - - 0xD005 - - - - 0xD006 - - - - 0x20004 - - - - 0x20005 - - - - 0x20006 - - - - 0x20007 - - - - 0x20008 - - - - 0x20009 - - - - 0x2000A - - - - 0x2000B - - - - 0x2000C - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0007 - - - - 0x0008 - - - - 0x0009 - - - - 0x000A - - - - 0x000B - - - - 0x000C - - - - 0x000D - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0007 - - - - 0x0008 - - - - 0x0009 - - - - 0x000A - - - - 0x000B - - - - 0x000C - - - - 0x000D - - - - 0x000E - - - - 0x000F - - - - 0x0010 - - - - 0x0011 - - - - 0x0012 - - - - 0x0013 - - - - 0x0014 - - - - 0x0015 - - - - 0x0016 - - - - 0x0017 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0001 - - - - 0x0002 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0001 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0007 - - - - 0x0008 - - - - 0x0009 - - - - 0x000A - - - - 0x0000 - - - - 0x8000 - - - - 0x8001 - - - - 0x0000 - - - - 0x8000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0004 - - - - 0x0005 - - - - 0x0006 - - - - 0x0007 - - - - 0x0008 - - - - 0x0009 - - - - 0x000A - - - - 0x000B - - - - 0x000C - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0001 - - - - 0x0002 - - - - 0x0001 - - - - 0x0002 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - 0x0000 - - - - 0x8000 - - - - 0x8001 - - - - 0x0000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0003 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "genSource has been renamed to 'createSource' for consistency with OpenGL" - - - - - - - - "genBuffer has been renamed to 'createBuffer' for consistency with OpenGL" - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - { count : 1 } - - - - - - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - { count : 1 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - lime.media.openal.AL - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - - 0 - - - - 1 - - - - 0x1007 - - - - 0x1008 - - - - 0x1009 - - - - 0x1010 - - - - 0x1011 - - - - 0 - - - - 0xA001 - - - - 0xA002 - - - - 0xA003 - - - - 0xA004 - - - - 0xA005 - - - - 0x1002 - - - - 0x1003 - - - - 0x1004 - - - - 0x1005 - - - - 0x1006 - - - - 1 - - - - 0x1012 - - - - 0x1013 - - - - - - - - - - - - { attrlist : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { deviceName : null } - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - lime.media.openal.AL - lime.media.openal.ALC - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - - lime.media.openal.ALC - lime.media.openal.AL - - - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - - lime.media.openal.ALC - lime.media.openal.AL - - - - - - - - lime.media.openal.AL - lime.media.openal.ALC - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - - lime.media.openal.ALC - lime.media.openal.AL - - - - - <_new get="inline" set="null" line="10" static="1"> - - - - - - - - - - - lime.media.openal.ALC - lime.media.openal.AL - - - - - - - lime.media.openal.AL - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - - - lime.media.openal.AL - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - - - lime.media.openal.AL - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - <_new get="inline" set="null" line="9" static="1"> - - - - - - - - - - lime.media.openal.AL - - - - - - - - - - - - - - - - - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - - - - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - - { signed : true, wordSize : 2, bigEndianPacking : false, length : 4096 } - - - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - - - - - - - - - - - - - - - { bitstream : -1 } - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__backend> - - - - - - - - - - { uri : null } - - - - - - - { uri : null } - - - "tags=\"haxe,release\"" - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.macros.HTTPRequestMacro.build() - - - - - - - - - - - - - - - - - { uri : null } - - - - - - - { uri : null } - - - "tags=\"haxe,release\"" - - - - - - - - - - - - { uri : null } - - - - - - - { uri : null } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - { value : "" } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - cast "DELETE" - - - - - - - - cast "GET" - - - - - - - - cast "HEAD" - - - - - - - - cast "OPTIONS" - - - - - - - - cast "POST" - - - - - - - - cast "PUT" - - - - - - - - - - - - cast "DELETE" - - - - - - - - cast "GET" - - - - - - - - cast "HEAD" - - - - - - - - cast "OPTIONS" - - - - - - - - cast "POST" - - - - - - - - cast "PUT" - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - GLOBAL_SSL | GLOBAL_WIN32 - - - - 0 - - - - GLOBAL_ALL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { handle : null } - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - cast 39 - - - - - - - - cast 42 - - - - - - - - cast 43 - - - - - - - - cast 45 - - - - - - - - cast 47 - - - - - - - - cast 48 - - - - - - - - cast 49 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 62 - - - - - - - - cast 63 - - - - - - - - cast 64 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 76 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - - - - - cast 19 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - cast 39 - - - - - - - - cast 42 - - - - - - - - cast 43 - - - - - - - - cast 45 - - - - - - - - cast 47 - - - - - - - - cast 48 - - - - - - - - cast 49 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 62 - - - - - - - - cast 63 - - - - - - - - cast 64 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 76 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 0x100000 + 1 - - - - - - - - cast 0x200000 + 2 - - - - - - - - cast 0x300000 + 3 - - - - - - - - cast 0x300000 + 4 - - - - - - - - cast 0x300000 + 5 - - - - - - - - cast 0x300000 + 6 - - - - - - - - cast 0x300000 + 7 - - - - - - - - cast 0x600000 + 7 - - - - - - - - cast 0x300000 + 8 - - - - - - - - cast 0x600000 + 8 - - - - - - - - cast 0x300000 + 9 - - - - - - - - cast 0x600000 + 9 - - - - - - - - cast 0x300000 + 10 - - - - - - - - cast 0x600000 + 10 - - - - - - - - cast 0x200000 + 11 - - - - - - - - cast 0x200000 + 12 - - - - - - - - cast 0x200000 + 13 - - - - - - - - cast 0x200000 + 14 - - - - - - - - cast 0x300000 + 15 - - - - - - - - cast 0x600000 + 15 - - - - - - - - cast 0x300000 + 16 - - - - - - - - cast 0x300000 + 16 - - - - - - - - cast 0x300000 + 17 - - - - - - - - cast 0x100000 + 18 - - - - - - - - cast 0x300000 + 19 - - - - - - - - cast 0x200000 + 20 - - - - - - - - cast 0x100000 + 21 - - - - - - - - cast 0x200000 + 22 - - - - - - - - cast 0x200000 + 23 - - - - - - - - cast 0x200000 + 24 - - - - - - - - cast 0x200000 + 25 - - - - - - - - cast 0x200000 + 26 - - - - - - - - cast 0x400000 + 27 - - - - - - - - cast 0x400000 + 28 - - - - - - - - cast 0x200000 + 29 - - - - - - - - cast 0x100000 + 30 - - - - - - - - cast 0x100000 + 31 - - - - - - - - cast 0x100000 + 32 - - - - - - - - cast 0x300000 + 33 - - - - - - - - cast 0x400000 + 34 - - - - - - - - cast 0x200000 + 35 - - - - - - - - cast 0x100000 + 36 - - - - - - - - cast 0x200000 + 37 - - - - - - - - cast 0x200000 + 38 - - - - - - - - cast 0x200000 + 39 - - - - - - - - cast 0x200000 + 40 - - - - - - - - cast 0x100000 + 41 - - - - - - - - cast 0x200000 + 42 - - - - - - - - cast 0x400000 + 43 - - - - - - - - cast 0x500000 + 44 - - - - - - - - cast 0x400000 + 45 - - - - - - - - cast 0x200000 + 46 - - - - - - - - cast 0x200000 + 47 - - - - - - - - cast 0x200000 + 48 - - - - - - - - cast 0x100000 + 49 - - - - - - - - - - - - cast 0 - - - - - - - - cast 0x100000 + 1 - - - - - - - - cast 0x200000 + 2 - - - - - - - - cast 0x300000 + 3 - - - - - - - - cast 0x300000 + 4 - - - - - - - - cast 0x300000 + 5 - - - - - - - - cast 0x300000 + 6 - - - - - - - - cast 0x300000 + 7 - - - - - - - - cast 0x600000 + 7 - - - - - - - - cast 0x300000 + 8 - - - - - - - - cast 0x600000 + 8 - - - - - - - - cast 0x300000 + 9 - - - - - - - - cast 0x600000 + 9 - - - - - - - - cast 0x300000 + 10 - - - - - - - - cast 0x600000 + 10 - - - - - - - - cast 0x200000 + 11 - - - - - - - - cast 0x200000 + 12 - - - - - - - - cast 0x200000 + 13 - - - - - - - - cast 0x200000 + 14 - - - - - - - - cast 0x300000 + 15 - - - - - - - - cast 0x600000 + 15 - - - - - - - - cast 0x300000 + 16 - - - - - - - - cast 0x300000 + 16 - - - - - - - - cast 0x300000 + 17 - - - - - - - - cast 0x100000 + 18 - - - - - - - - cast 0x300000 + 19 - - - - - - - - cast 0x200000 + 20 - - - - - - - - cast 0x100000 + 21 - - - - - - - - cast 0x200000 + 22 - - - - - - - - cast 0x200000 + 23 - - - - - - - - cast 0x200000 + 24 - - - - - - - - cast 0x200000 + 25 - - - - - - - - cast 0x200000 + 26 - - - - - - - - cast 0x400000 + 27 - - - - - - - - cast 0x400000 + 28 - - - - - - - - cast 0x200000 + 29 - - - - - - - - cast 0x100000 + 30 - - - - - - - - cast 0x100000 + 31 - - - - - - - - cast 0x100000 + 32 - - - - - - - - cast 0x300000 + 33 - - - - - - - - cast 0x400000 + 34 - - - - - - - - cast 0x200000 + 35 - - - - - - - - cast 0x100000 + 36 - - - - - - - - cast 0x200000 + 37 - - - - - - - - cast 0x200000 + 38 - - - - - - - - cast 0x200000 + 39 - - - - - - - - cast 0x200000 + 40 - - - - - - - - cast 0x100000 + 41 - - - - - - - - cast 0x200000 + 42 - - - - - - - - cast 0x400000 + 43 - - - - - - - - cast 0x500000 + 44 - - - - - - - - cast 0x400000 + 45 - - - - - - - - cast 0x200000 + 46 - - - - - - - - cast 0x200000 + 47 - - - - - - - - cast 0x200000 + 48 - - - - - - - - cast 0x100000 + 49 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { handle : null } - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.net.curl.CURL - lime.net.curl.CURLMultiMessage - - - - - - - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - cast -1 - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 200001 - - - - - - - - cast 100002 - - - - - - - - cast 3 - - - - - - - - cast 20004 - - - - - - - - cast 10005 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 30009 - - - - - - - - cast 30010 - - - - - - - - cast 10011 - - - - - - - - cast 10012 - - - - - - - - cast 13 - - - - - - - - cast 20014 - - - - - - - - cast 10015 - - - - - - - - - - - - cast 200001 - - - - - - - - cast 100002 - - - - - - - - cast 3 - - - - - - - - cast 20004 - - - - - - - - cast 10005 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 30009 - - - - - - - - cast 30010 - - - - - - - - cast 10011 - - - - - - - - cast 10012 - - - - - - - - cast 13 - - - - - - - - cast 20014 - - - - - - - - cast 10015 - - - - - - - - - - - - - - - - - - - - - - cast 10002 - - - - - - - - cast 3 - - - - - - - - cast 10004 - - - - - - - - cast 10005 - - - - - - - - cast 10006 - - - - - - - - cast 10007 - - - - - - - - cast 10009 - - - - - - - - cast 10009 - - - - - - - - cast 10010 - - - - - - - - cast 20011 - - - - - - - - cast 20012 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 10015 - - - - - - - - cast 10016 - - - - - - - - cast 10017 - - - - - - - - cast 10018 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 10023 - - - - - - - - cast 10023 - - - - - - - - cast 10024 - - - - - - - - cast 10025 - - - - - - - - cast 10026 - - - - - - - - cast 27 - - - - - - - - cast 10028 - - - - - - - - cast 10029 - - - - - - - - cast 10029 - - - - - - - - cast 10031 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 10036 - - - - - - - - cast 10037 - - - - - - - - cast 10039 - - - - - - - - cast 10040 - - - - - - - - cast 41 - - - - -
      - - - cast 42 - - - -
      - - - - cast 43 - - - - - - - - cast 44 - - - - - - - - cast 45 - - - - - - - - cast 46 - - - - - - - - cast 47 - - - - - - - - cast 48 - - - - - - - - cast 50 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 20056 - - - - - - - - cast 10057 - - - - - - - - cast 10057 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 10062 - - - - - - - - cast 10063 - - - - - - - - cast 64 - - - - - - - - cast 10065 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 10070 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 10076 - - - - - - - - cast 10077 - - - - - - - - cast 78 - - - - - - - - cast 20079 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 10082 - - - - - - - - cast 10083 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 10086 - - - - - - - - cast 10087 - - - - - - - - cast 10088 - - - - - - - - cast 10089 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - cast 10093 - - - - - - - - cast 20094 - - - - - - - - cast 10095 - - - - - - - - cast 96 - - - - - - - - cast 10097 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 10100 - - - - - - - - cast 101 - - - - - - - - cast 10102 - - - - - - - - cast 10103 - - - - - - - - cast 10104 - - - - - - - - cast 105 - - - - - - - - cast 106 - - - - - - - - cast 107 - - - - - - - - cast 20108 - - - - - - - - cast 10109 - - - - - - - - cast 110 - - - - - - - - cast 111 - - - - - - - - cast 112 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 30115 - - - - - - - - cast 30116 - - - - - - - - cast 30117 - - - - - - - - cast 10118 - - - - - - - - cast 119 - - - - - - - - cast 30120 - - - - - - - - cast 121 - - - - - - - - cast 129 - - - - - - - - cast 20130 - - - - - - - - cast 10131 - - - - - - - - cast 10134 - - - - - - - - cast 10135 - - - - - - - - cast 10136 - - - - - - - - cast 137 - - - - - - - - cast 138 - - - - - - - - cast 139 - - - - - - - - cast 140 - - - - - - - - cast 141 - - - - - - - - cast 20142 - - - - - - - - cast 20143 - - - - - - - - cast 20144 - - - - - - - - cast 30145 - - - - - - - - cast 30146 - - - - - - - - cast 10147 - - - - - - - - cast 20148 - - - - - - - - cast 10149 - - - - - - - - cast 150 - - - - - - - - cast 151 - - - - - - - - cast 10152 - - - - - - - - cast 10153 - - - - - - - - cast 154 - - - - - - - - cast 155 - - - - - - - - cast 156 - - - - - - - - cast 157 - - - - - - - - cast 158 - - - - - - - - cast 159 - - - - - - - - cast 160 - - - - - - - - cast 161 - - - - - - - - cast 10162 - - - - - - - - cast 20163 - - - - - - - - cast 10164 - - - - - - - - cast 10165 - - - - - - - - cast 166 - - - - - - - - cast 20167 - - - - - - - - cast 10168 - - - - - - - - cast 10169 - - - - - - - - cast 10170 - - - - - - - - cast 171 - - - - - - - - cast 172 - - - - - - - - cast 10173 - - - - - - - - cast 10174 - - - - - - - - cast 10175 - - - - - - - - cast 10176 - - - - - - - - cast 10177 - - - - - - - - cast 178 - - - - - - - - cast 10179 - - - - - - - - cast 180 - - - - - - - - cast 181 - - - - - - - - cast 182 - - - - - - - - cast 10183 - - - - - - - - cast 20184 - - - - - - - - cast 10185 - - - - - - - - cast 10186 - - - - - - - - cast 10187 - - - - - - - - cast 188 - - - - - - - - cast 189 - - - - - - - - cast 10190 - - - - - - - - cast 10191 - - - - - - - - cast 10192 - - - - - - - - cast 193 - - - - - - - - cast 194 - - - - - - - - cast 10195 - - - - - - - - cast 20196 - - - - - - - - cast 197 - - - - - - - - cast 20198 - - - - - - - - cast 20199 - - - - - - - - cast 20200 - - - - - - - - cast 10201 - - - - - - - - cast 10202 - - - - - - - - cast 10203 - - - - - - - - cast 10204 - - - - - - - - cast 10205 - - - - - - - - cast 10206 - - - - - - - - cast 207 - - - - - - - - cast 20208 - - - - - - - - cast 10209 - - - - - - - - cast 210 - - - - - - - - cast 10211 - - - - - - - - cast 212 - - - - - - - - cast 213 - - - - - - - - cast 214 - - - - - - - - cast 215 - - - - - - - - cast 216 - - - - - - - - cast 10217 - - - - - - - - cast 218 - - - - - - - - cast 20219 - - - - - - - - cast 10220 - - - - - - - - cast 10221 - - - - - - - - cast 10222 - - - - - - - - cast 10223 - - - - - - - - cast 10224 - - - - - - - - cast 225 - - - - - - - - cast 226 - - - - - - - - cast 227 - - - - - - - - cast 10228 - - - - - - - - cast 229 - - - - - - - - cast 10230 - - - - - - - - cast 10231 - - - - - - - - cast 232 - - - - - - - - cast 233 - - - - - - - - cast 234 - - - - - - - - cast 10235 - - - - - - - - cast 10236 - - - - - - - - cast 237 - - - - - - - - cast 10238 - - - - - - - - cast 239 - - - - - - - - cast 10240 - - - - - - - - cast 10241 - - - - - - - - cast 242 - - - - - - - - cast 243 - - - - - - - - cast 244 - - - - - - - - cast 245 - - - - - - - - cast 10246 - - - - - - - - cast 10247 - - - - - - - - cast 248 - - - - - - - - cast 249 - - - - - - - - cast 250 - - - - - - - - cast 10251 - - - - - - - - cast 10252 - - - - - - - - cast 10253 - - - - - - - - cast 10254 - - - - - - - - cast 10255 - - - - - - - - cast 10256 - - - - - - - - cast 10257 - - - - - - - - cast 10258 - - - - - - - - cast 10259 - - - - - - - - cast 10260 - - - - - - - - cast 261 - - - - - - - - cast 10262 - - - - - - - - cast 10263 - - - - - - - - cast 10264 - - - - - - - - cast 265 - - - - - - - - cast 10266 - - - - - - - - cast 267 - - - - - - - - cast 268 - - - - - - - - cast 10269 - - - - - -
      -
      - - - - - cast 10002 - - - - - - - - cast 3 - - - - - - - - cast 10004 - - - - - - - - cast 10005 - - - - - - - - cast 10006 - - - - - - - - cast 10007 - - - - - - - - cast 10009 - - - - - - - - cast 10009 - - - - - - - - cast 10010 - - - - - - - - cast 20011 - - - - - - - - cast 20012 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 10015 - - - - - - - - cast 10016 - - - - - - - - cast 10017 - - - - - - - - cast 10018 - - - - - - - - cast 19 - - - - - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 10023 - - - - - - - - cast 10023 - - - - - - - - cast 10024 - - - - - - - - cast 10025 - - - - - - - - cast 10026 - - - - - - - - cast 27 - - - - - - - - cast 10028 - - - - - - - - cast 10029 - - - - - - - - cast 10029 - - - - - - - - cast 10031 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 10036 - - - - - - - - cast 10037 - - - - - - - - cast 10039 - - - - - - - - cast 10040 - - - - - - - - cast 41 - - - - -
      - - - cast 42 - - - -
      - - - - cast 43 - - - - - - - - cast 44 - - - - - - - - cast 45 - - - - - - - - cast 46 - - - - - - - - cast 47 - - - - - - - - cast 48 - - - - - - - - cast 50 - - - - - - - - cast 51 - - - - - - - - cast 52 - - - - - - - - cast 53 - - - - - - - - cast 54 - - - - - - - - cast 20056 - - - - - - - - cast 10057 - - - - - - - - cast 10057 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 10062 - - - - - - - - cast 10063 - - - - - - - - cast 64 - - - - - - - - cast 10065 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 10070 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 10076 - - - - - - - - cast 10077 - - - - - - - - cast 78 - - - - - - - - cast 20079 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 10082 - - - - - - - - cast 10083 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 10086 - - - - - - - - cast 10087 - - - - - - - - cast 10088 - - - - - - - - cast 10089 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - cast 10093 - - - - - - - - cast 20094 - - - - - - - - cast 10095 - - - - - - - - cast 96 - - - - - - - - cast 10097 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 10100 - - - - - - - - cast 101 - - - - - - - - cast 10102 - - - - - - - - cast 10103 - - - - - - - - cast 10104 - - - - - - - - cast 105 - - - - - - - - cast 106 - - - - - - - - cast 107 - - - - - - - - cast 20108 - - - - - - - - cast 10109 - - - - - - - - cast 110 - - - - - - - - cast 111 - - - - - - - - cast 112 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 30115 - - - - - - - - cast 30116 - - - - - - - - cast 30117 - - - - - - - - cast 10118 - - - - - - - - cast 119 - - - - - - - - cast 30120 - - - - - - - - cast 121 - - - - - - - - cast 129 - - - - - - - - cast 20130 - - - - - - - - cast 10131 - - - - - - - - cast 10134 - - - - - - - - cast 10135 - - - - - - - - cast 10136 - - - - - - - - cast 137 - - - - - - - - cast 138 - - - - - - - - cast 139 - - - - - - - - cast 140 - - - - - - - - cast 141 - - - - - - - - cast 20142 - - - - - - - - cast 20143 - - - - - - - - cast 20144 - - - - - - - - cast 30145 - - - - - - - - cast 30146 - - - - - - - - cast 10147 - - - - - - - - cast 20148 - - - - - - - - cast 10149 - - - - - - - - cast 150 - - - - - - - - cast 151 - - - - - - - - cast 10152 - - - - - - - - cast 10153 - - - - - - - - cast 154 - - - - - - - - cast 155 - - - - - - - - cast 156 - - - - - - - - cast 157 - - - - - - - - cast 158 - - - - - - - - cast 159 - - - - - - - - cast 160 - - - - - - - - cast 161 - - - - - - - - cast 10162 - - - - - - - - cast 20163 - - - - - - - - cast 10164 - - - - - - - - cast 10165 - - - - - - - - cast 166 - - - - - - - - cast 20167 - - - - - - - - cast 10168 - - - - - - - - cast 10169 - - - - - - - - cast 10170 - - - - - - - - cast 171 - - - - - - - - cast 172 - - - - - - - - cast 10173 - - - - - - - - cast 10174 - - - - - - - - cast 10175 - - - - - - - - cast 10176 - - - - - - - - cast 10177 - - - - - - - - cast 178 - - - - - - - - cast 10179 - - - - - - - - cast 180 - - - - - - - - cast 181 - - - - - - - - cast 182 - - - - - - - - cast 10183 - - - - - - - - cast 20184 - - - - - - - - cast 10185 - - - - - - - - cast 10186 - - - - - - - - cast 10187 - - - - - - - - cast 188 - - - - - - - - cast 189 - - - - - - - - cast 10190 - - - - - - - - cast 10191 - - - - - - - - cast 10192 - - - - - - - - cast 193 - - - - - - - - cast 194 - - - - - - - - cast 10195 - - - - - - - - cast 20196 - - - - - - - - cast 197 - - - - - - - - cast 20198 - - - - - - - - cast 20199 - - - - - - - - cast 20200 - - - - - - - - cast 10201 - - - - - - - - cast 10202 - - - - - - - - cast 10203 - - - - - - - - cast 10204 - - - - - - - - cast 10205 - - - - - - - - cast 10206 - - - - - - - - cast 207 - - - - - - - - cast 20208 - - - - - - - - cast 10209 - - - - - - - - cast 210 - - - - - - - - cast 10211 - - - - - - - - cast 212 - - - - - - - - cast 213 - - - - - - - - cast 214 - - - - - - - - cast 215 - - - - - - - - cast 216 - - - - - - - - cast 10217 - - - - - - - - cast 218 - - - - - - - - cast 20219 - - - - - - - - cast 10220 - - - - - - - - cast 10221 - - - - - - - - cast 10222 - - - - - - - - cast 10223 - - - - - - - - cast 10224 - - - - - - - - cast 225 - - - - - - - - cast 226 - - - - - - - - cast 227 - - - - - - - - cast 10228 - - - - - - - - cast 229 - - - - - - - - cast 10230 - - - - - - - - cast 10231 - - - - - - - - cast 232 - - - - - - - - cast 233 - - - - - - - - cast 234 - - - - - - - - cast 10235 - - - - - - - - cast 10236 - - - - - - - - cast 237 - - - - - - - - cast 10238 - - - - - - - - cast 239 - - - - - - - - cast 10240 - - - - - - - - cast 10241 - - - - - - - - cast 242 - - - - - - - - cast 243 - - - - - - - - cast 244 - - - - - - - - cast 245 - - - - - - - - cast 10246 - - - - - - - - cast 10247 - - - - - - - - cast 248 - - - - - - - - cast 249 - - - - - - - - cast 250 - - - - - - - - cast 10251 - - - - - - - - cast 10252 - - - - - - - - cast 10253 - - - - - - - - cast 10254 - - - - - - - - cast 10255 - - - - - - - - cast 10256 - - - - - - - - cast 10257 - - - - - - - - cast 10258 - - - - - - - - cast 10259 - - - - - - - - cast 10260 - - - - - - - - cast 261 - - - - - - - - cast 10262 - - - - - - - - cast 10263 - - - - - - - - cast 10264 - - - - - - - - cast 265 - - - - - - - - cast 10266 - - - - - - - - cast 267 - - - - - - - - cast 268 - - - - - - - - cast 10269 - - - - - -
      - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - "__COMPLETE__" - - - - "__ERROR__" - - - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - <__runMessage> - - - - <__messageQueue> - - - - <__workerThread> - - - - - - - - - - { message : null } - - - - - - - { message : null } - - - - - - - { message : null } - - - - - - - { message : null } - - <__doWork set="method" line="114"> - - - - <__update set="method" line="134"> - - - - - - - - - - "tags=\"haxe,release\"" - - - - - <__moduleNames expr="null" line="15" static="1"> - - - - - - null - - - - - - - - - - - - - - { lazy : false, args : 0 } - * Tries to load a native CFFI primitive on compatible platforms - * @param library The name of the native library (such as "lime") - * @param method The exported primitive method name - * @param args The number of arguments - * @param lazy Whether to load the symbol immediately, or to allow lazy loading - * @return The loaded method - - <__findHaxelib set="method" line="203" static="1"> - - - - <__loaderTrace set="method" line="241" static="1"> - - - - <__sysName set="method" line="316" static="1"> - <__tryLoad set="method" line="330" static="1"> - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - lime._internal.backend.native.NativeCFFI - - <_new public="1" get="inline" set="null" line="9" static="1"> - - - - - - - - - - - - - - - - - - - A == B - - - - - - - - - - - A == B - - - - - - - - - - - B]]> - - - - - - - - - - - B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A != B - - - - - - - - - - - A != B - - - - - lime._internal.backend.native.NativeCFFI - - - - - <_new public="1" get="inline" set="null" line="9" static="1"> - - - - - - - - - - - - - - - - - - - A == B - - - - - - - - - - - A == B - - - - - - - - - - - B]]> - - - - - - - - - - - B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A != B - - - - - - - - - - - A != B - - - - - lime._internal.backend.native.NativeCFFI - - - - - - ()]]> - - - <_text static="1"> - <__update set="method" line="25" static="1"> - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.ui.Window - - - - - - * The desktop area represented by this display, with the upper-leftmost display at 0,0 - - - - * The current display mode - - - - - * Pixel density of the display - - - - * The name of the device, such as "Samsung SyncMaster P2350", "iPhone 6", "Oculus Rift DK2", etc. - - - - * All of the display modes supported by this device - - - - - - - - "tags=\"haxe,release\"" - - - - - - - * vertical resolution - - - - * pixel format - - - - * refresh rate in Hz - - - - * horizontal resolution - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - ()]]> - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - { quietFail : false, useArray : false } - - - - - - - - - - - - - - - - - { quietFail : false, useArray : false } - - - - - - - - - - - - - - The Java Native Interface (JNI) allows C++ code to call Java functions, and - vice versa. On Android, Haxe code compiles to C++, but only Java code can - access the Android system API, so it's often necessary to use both. - - For a working example, run `lime create extension MyExtension`, then look at - MyExtension.hx and MyExtension.java. - - You can pass Haxe objects to Java, much like any other data. In Java, - they'll have type `org.haxe.lime.HaxeObject`, meaning the method that - receives them might have signature `(Lorg/haxe/lime/HaxeObject;)V`. Once - sent, the Java class can store the object and call its functions. - - Note that most Java code runs on a different thread than Haxe, meaning that - you can get thread-related errors in both directions. Java functions can - use `Extension.callbackHandler.post()` to switch to the UI thread, while - Haxe code can avoid the problem using `lime.system.JNI.JNISafety`. - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - Most times a Java class calls a Haxe function, it does so on the UI thread, - which can lead to thread-related errors. These errors can be avoided by - switching back to the main thread before executing any code. - - Usage: - - ```haxe - class MyClass implements JNISafety - { - @:runOnMainThread - public function callbackFunction(data:Dynamic):Void - { - // Code here is guaranteed to run on Haxe's main thread. It's safe - // to call `callbackFunction` via JNI. - } - - public function notACallbackFunction():Void - { - // Code here will run on whichever thread calls the function. It may - // not be safe to call `notACallbackFunction` via JNI. - } - } - ``` - lime.system.JNI.JNISafetyTools.build() - - - - - - - The current thread acquire the mutex or wait if not available. - The same thread can acquire several times the same mutex but - must release it as many times it has been acquired. - - - - - Try to acquire the mutex, returns true if acquire or false - if it's already locked by another thread. - - - - - Release a mutex that has been acquired by the current thread. - The behavior is undefined if the current thread does not own - the mutex. - - - - - Creates a mutex. - - Creates a mutex, which can be used to acquire a temporary lock - to access some ressource. The main difference with a lock is - that a mutex must always be released by the owner thread. - - - - - - - - - new Mutex() - - - - Void>>()]]> - - - - 0 - - - - new Lock() - - - - 0 - - - - - - - - - Schedule event for execution every `intervalMs` milliseconds in current loop. - - - - - - - - - - - Prevent execution of a previously scheduled event in current loop. - - - - Notify this loop about an upcoming event. - This makes the thread to stay alive and wait for as many events as many times - `.promise()` was called. These events should be added via `.runPromised()` - - - - - - - Execute `event` as soon as possible. - - - - - - - Add previously promised `event` for execution. - - - - Executes all pending events. - - The returned time stamps can be used with `Sys.time()` for calculations. - - Depending on a target platform this method may be non-reentrant. It must - not be called from event callbacks. - - - - - - - Blocks until a new event is added or `timeout` (in seconds) to expires. - - Depending on a target platform this method may also automatically execute arriving - events while waiting. However if any event is executed it will stop waiting. - - Returns `true` if more events are expected. - Returns `false` if no more events expected. - - Depending on a target platform this method may be non-reentrant. It must - not be called from event callbacks. - - - - Execute all pending events. - Wait and execute as many events as many times `promiseEvent()` was called. - Runs until all repeating events are cancelled and no more events is expected. - - Depending on a target platform this method may be non-reentrant. It must - not be called from event callbacks. - - <__progress get="inline" set="null" line="199"> - - - - - - - - - - `.progress` implementation with a reusable array for internal usage. - The `nextEventAt` field of the return value denotes when the next event - is expected to run: - * -1 - never - * -2 - now - * other values - at specified time - - - An event loop implementation used for `sys.thread.Thread` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - - - - - - - - - - - - Thread.current() - - - - @return Whether the calling function is being run on the main thread. - - - - - - - - - - - - - <__systemLocale static="1"> - - - <_new public="1" set="method" line="18" static="1"> - - - - - - - - - - - - - - - A == B - - - <__init set="method" line="55" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__systemLocale static="1"> - - - <_new public="1" set="method" line="18" static="1"> - - - - - - - - - - - - - - - A == B - - - <__init set="method" line="55" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - ()]]> - - - - - - - { type : null } - - - - - - - - - - - - - - - Float -> Float>()]]> - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - <__applicationDirectory static="1"> - - - - <__applicationEntryPoint static="1"> - - - - - - - <__applicationStorageDirectory static="1"> - - - - <__desktopDirectory static="1"> - - - - <__deviceModel static="1"> - - - - <__deviceVendor static="1"> - - - - <__directories expr="new Map<SystemDirectory,String>()" line="68" static="1"> - - - - - - ()]]> - - - - <__documentsDirectory static="1"> - - - - <__endianness static="1"> - - - - <__fontsDirectory static="1"> - - - - <__platformLabel static="1"> - - - - <__platformName static="1"> - - - - <__platformVersion static="1"> - - - - <__userDirectory static="1"> - - - - - - - - - - - - - - - - - - - - - { lazy : false, args : 0 } - - - - - - - - - - - - { target : "_blank" } - - <__copyMissingFields set="method" line="335" static="1"> - - - - - - - - <__getDirectory set="method" line="348" static="1"> - - - - - - - <__parseArguments set="method" line="426" static="1"> - - - - <__parseBool get="inline" set="null" line="523" static="1"> - - - - - - - <__registerEntryPoint set="method" line="528" static="1"> - - - - - - - - <__runProcess set="method" line="545" static="1"> - - - - - - - { args : null } - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.system.Display - lime.system.DisplayMode - "\r\n#if defined(HX_WINDOWS)\r\nextern \"C\" {\r\n\t_declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;\r\n\t_declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;\r\n}\r\n#endif\r\n" - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - ()]]> - - - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - <__synchronous> - - - - <__workCompleted> - - - - <__workIncoming expr="new Deque<ThreadPoolMessage>()"> - - - ()]]> - - - - <__workQueued> - - - - <__workResult expr="new Deque<ThreadPoolMessage>()"> - - - ()]]> - - - - - - - - - { state : null } - - - - - - - { state : null } - - - - - - - { state : null } - - - - - - - { state : null } - - - - - - - - { state : null } - - - - <__doWork set="method" line="155"> - - - - <__update set="method" line="172"> - - - - - - - - - - - - - { maxThreads : 1, minThreads : 0 } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" set="method" line="5" static="1"> - - - - - - - - <_new public="1" set="method" line="5" static="1"> - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - { features : null } - - - - lime._internal.backend.native.NativeCFFI - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - <_new public="1" set="method" line="18" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new public="1" set="method" line="18" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - <_new public="1" set="method" line="23" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - <_new public="1" set="method" line="23" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 0 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 0 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - cast 0 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - <_new public="1" set="method" line="14" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - <_new public="1" set="method" line="14" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - <_new public="1" set="method" line="17" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - <_new public="1" set="method" line="17" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - <_new public="1" set="method" line="19" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - <_new public="1" set="method" line="19" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - <_new public="1" set="method" line="10" static="1"> - - - - - - { language : null } - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - <_new public="1" set="method" line="10" static="1"> - - - - - - { language : null } - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - - - - ()]]> - Triggers when the user clicks "Cancel" during any operation, or when a function is unsupported - (such as `open()` on HTML5). - - - - - - - ()]]> - Triggers when `open()` is successful. The `lime.utils.Resource` contains the file's data, and can - be implicitly cast to `haxe.io.Bytes`. - - - - - - - ()]]> - Triggers when `save()` is successful. The `String` is the path to the saved file. - - - - - - - ()]]> - Triggers when `browse()` is successful and `type` is anything other than - `FileDialogType.OPEN_MULTIPLE`. The `String` is the path to the selected file. - - - - - - - >()]]> - ` contains all selected file paths.]]> - - - - - - - - - - { title : null, defaultPath : null, filter : null, type : null } - Opens a file selection dialog. If successful, either `onSelect` or `onSelectMultiple` will trigger - with the result(s). - - This function only works on desktop targets, and will return `false` otherwise. - @param type Type of the file dialog: `OPEN`, `SAVE`, `OPEN_DIRECTORY` or `OPEN_MULTIPLE`. - @param filter A filter to use when browsing. Asterisks are treated as wildcards. For example, - `"*.jpg"` will match any file ending in `.jpg`. - @param defaultPath The directory in which to start browsing and/or the default filename to - suggest. Defaults to `Sys.getCwd()`, with no default filename. - @param title The title to give the dialog window. - @return Whether `browse()` is supported on this target. - - - - - - - - - { title : null, defaultPath : null, filter : null } - Shows an open file dialog. If successful, `onOpen` will trigger with the file contents. - - This function only works on desktop targets, and will return `false` otherwise. - @param filter A filter to use when browsing. Asterisks are treated as wildcards. For example, - `"*.jpg"` will match any file ending in `.jpg`. - @param defaultPath The directory in which to start browsing and/or the default filename to - suggest. Defaults to `Sys.getCwd()`, with no default filename. - @param title The title to give the dialog window. - @return Whether `open()` is supported on this target. - - - - - - - - - - - { type : "application/octet-stream", title : null, defaultPath : null, filter : null } - Shows an open file dialog. If successful, `onSave` will trigger with the selected path. - - This function only works on desktop and HMTL5 targets, and will return `false` otherwise. - @param data The file contents, in `haxe.io.Bytes` format. (Implicit casting possible.) - @param filter A filter to use when browsing. Asterisks are treated as wildcards. For example, - `"*.jpg"` will match any file ending in `.jpg`. Used only if targeting deskop. - @param defaultPath The directory in which to start browsing and/or the default filename to - suggest. When targeting destkop, this defaults to `Sys.getCwd()` with no default filename. When targeting - HTML5, this defaults to the browser's download directory, with a default filename based on the MIME type. - @param title The title to give the dialog window. - @param type The default MIME type of the file, in case the type can't be determined from the - file data. Used only if targeting HTML5. - @return Whether `save()` is supported on this target. - - - trace("Canceled.") ); - - fileDialog.onSave.add( path -> trace("File saved in " + path) ); - - fileDialog.onOpen.add( res -> trace("Size of the file = " + (res:haxe.io.Bytes).length) ); - - if ( fileDialog.open("jpg", null, "Load file") ) - trace("File dialog opened, waiting for selection..."); - else - trace("This dialog is unsupported."); - ``` - - Availability note: most file dialog operations are only available on desktop targets, though - `save()` is also available in HTML5.]]> - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.graphics.Image - - - - - - - - - - - - - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - <__connect set="method" line="46" static="1"> - - - - - - - <__disconnect set="method" line="56" static="1"> - - - - - - - - - - - - - - - - - Float>()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - ()]]> - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - lime.ui.Joystick - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - - - - - - - - - - ()]]> - - - - - - - ()]]> - - <__connect set="method" line="38" static="1"> - - - - - - - <__disconnect set="method" line="48" static="1"> - - - - - - - - - - - - - - - - - - - - - Float>()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - ()]]> - - - - - - - - JoystickHatPosition>()]]> - - - - - - - - - Float -> Float>()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - -
      - - 0x00 -
      - - - 0x04 - - - - 0x08 - - - - 0x02 - - - - 0x01 - - - - (0x04 | 0x08) - - - - (0x04 | 0x02) - - - - (0x01 | 0x08) - - - - (0x01 | 0x02) - -
      - - - - - <_new public="1" set="method" line="21" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - -
      - - 0x00 -
      - - - 0x04 - - - - 0x08 - - - - 0x02 - - - - 0x01 - - - - (0x04 | 0x08) - - - - (0x04 | 0x02) - - - - (0x01 | 0x08) - - - - (0x01 | 0x02) - -
      - - - - - <_new public="1" set="method" line="21" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - - - - - - - cast 0x00 - - - - - - - - cast 0x08 - - - - - - - - cast 0x09 - - - - - - - - cast 0x0D - - - - - - - - cast 0x1B - - - - - - - - cast 0x20 - - - - - - - - cast 0x21 - - - - - - - - cast 0x22 - - - - - - - - cast 0x23 - - - - - - - - cast 0x24 - - - - - - - - cast 0x25 - - - - - - - - cast 0x26 - - - - - - - - cast 0x27 - - - - - - - - cast 0x28 - - - - - - - - cast 0x29 - - - - - - - - cast 0x2A - - - - - - - - cast 0x2B - - - - - - - - cast 0x2C - - - - - - - - cast 0x2D - - - - - - - - cast 0x2E - - - - - - - - cast 0x2F - - - - - - - - cast 0x30 - - - - - - - - cast 0x31 - - - - - - - - cast 0x32 - - - - - - - - cast 0x33 - - - - - - - - cast 0x34 - - - - - - - - cast 0x35 - - - - - - - - cast 0x36 - - - - - - - - cast 0x37 - - - - - - - - cast 0x38 - - - - - - - - cast 0x39 - - - - - - - - cast 0x3A - - - - - - - - cast 0x3B - - - - - - - - cast 0x3C - - - - - - - - cast 0x3D - - - - - - - - cast 0x3E - - - - - - - - cast 0x3F - - - - - - - - cast 0x40 - - - - - - - - cast 0x5B - - - - - - - - cast 0x5C - - - - - - - - cast 0x5D - - - - - - - - cast 0x5E - - - - - - - - cast 0x5F - - - - - - - - cast 0x60 - - - - - - - - cast 0x61 - - - - - - - - cast 0x62 - - - - - - - - cast 0x63 - - - - - - - - cast 0x64 - - - - - - - - cast 0x65 - - - - - - - - cast 0x66 - - - - - - - - cast 0x67 - - - - - - - - cast 0x68 - - - - - - - - cast 0x69 - - - - - - - - cast 0x6A - - - - - - - - cast 0x6B - - - - - - - - cast 0x6C - - - - - - - - cast 0x6D - - - - - - - - cast 0x6E - - - - - - - - cast 0x6F - - - - -

      - - - cast 0x70 - - - -

      - - - - cast 0x71 - - - - - - - - cast 0x72 - - - - - - - - cast 0x73 - - - - - - - - cast 0x74 - - - - - - - - cast 0x75 - - - - - - - - cast 0x76 - - - - - - - - cast 0x77 - - - - - - - - cast 0x78 - - - - - - - - cast 0x79 - - - - - - - - cast 0x7A - - - - - - - - cast 0x7F - - - - - - - - cast 0x40000039 - - - - - - - - cast 0x4000003A - - - - - - - - cast 0x4000003B - - - - - - - - cast 0x4000003C - - - - - - - - cast 0x4000003D - - - - - - - - cast 0x4000003E - - - - - - - - cast 0x4000003F - - - - - - - - cast 0x40000040 - - - - - - - - cast 0x40000041 - - - - - - - - cast 0x40000042 - - - - - - - - cast 0x40000043 - - - - - - - - cast 0x40000044 - - - - - - - - cast 0x40000045 - - - - - - - - cast 0x40000046 - - - - - - - - cast 0x40000047 - - - - - - - - cast 0x40000048 - - - - - - - - cast 0x40000049 - - - - - - - - cast 0x4000004A - - - - - - - - cast 0x4000004B - - - - - - - - cast 0x4000004D - - - - - - - - cast 0x4000004E - - - - - - - - cast 0x4000004F - - - - - - - - cast 0x40000050 - - - - - - - - cast 0x40000051 - - - - - - - - cast 0x40000052 - - - - - - - - cast 0x40000053 - - - - - - - - cast 0x40000054 - - - - - - - - cast 0x40000055 - - - - - - - - cast 0x40000056 - - - - - - - - cast 0x40000057 - - - - - - - - cast 0x40000058 - - - - - - - - cast 0x40000059 - - - - - - - - cast 0x4000005A - - - - - - - - cast 0x4000005B - - - - - - - - cast 0x4000005C - - - - - - - - cast 0x4000005D - - - - - - - - cast 0x4000005E - - - - - - - - cast 0x4000005F - - - - - - - - cast 0x40000060 - - - - - - - - cast 0x40000061 - - - - - - - - cast 0x40000062 - - - - - - - - cast 0x40000063 - - - - - - - - cast 0x40000065 - - - - - - - - cast 0x40000066 - - - - - - - - cast 0x40000067 - - - - - - - - cast 0x40000068 - - - - - - - - cast 0x40000069 - - - - - - - - cast 0x4000006A - - - - - - - - cast 0x4000006B - - - - - - - - cast 0x4000006C - - - - - - - - cast 0x4000006D - - - - - - - - cast 0x4000006E - - - - - - - - cast 0x4000006F - - - - - - - - cast 0x40000070 - - - - - - - - cast 0x40000071 - - - - - - - - cast 0x40000072 - - - - - - - - cast 0x40000073 - - - - - - - - cast 0x40000074 - - - - - - - - cast 0x40000075 - - - - - - - - cast 0x40000076 - - - - - - - - - cast 0x40000078 - - - - - - - - cast 0x40000079 - - - - - - - - cast 0x4000007A - - - - - - - - cast 0x4000007B - - - - - - - - cast 0x4000007C - - - - - - - - cast 0x4000007D - - - - - - - - cast 0x4000007E - - - - - - - - cast 0x4000007F - - - - - - - - cast 0x40000080 - - - - - - - - cast 0x40000081 - - - - - - - - cast 0x40000085 - - - - - - - - cast 0x40000099 - - - - - - - - cast 0x4000009A - - - - - - - - cast 0x4000009B - - - - - - - - cast 0x4000009C - - - - - - - - cast 0x4000009D - - - - - - - - cast 0x4000009E - - - - - - - - cast 0x4000009F - - - - - - - - cast 0x400000A0 - - - - - - - - cast 0x400000A1 - - - - - - - - cast 0x400000A2 - - - - - - - - cast 0x400000A3 - - - - - - - - cast 0x400000A4 - - - - - - - - cast 0x400000B0 - - - - - - - - cast 0x400000B1 - - - - - - - - cast 0x400000B2 - - - - - - - - cast 0x400000B3 - - - - - - - - cast 0x400000B4 - - - - - - - - cast 0x400000B5 - - - - - - - - cast 0x400000B6 - - - - - - - - cast 0x400000B7 - - - - - - - - cast 0x400000B8 - - - - - - - - cast 0x400000B9 - - - - - - - - cast 0x400000BA - - - - - - - - cast 0x400000BB - - - - - - - - cast 0x400000BC - - - - - - - - cast 0x400000BD - - - - - - - - cast 0x400000BE - - - - - - - - cast 0x400000BF - - - - - - - - cast 0x400000C0 - - - - - - - - cast 0x400000C1 - - - - - - - - cast 0x400000C2 - - - - - - - - cast 0x400000C3 - - - - - - - - cast 0x400000C4 - - - - - - - - cast 0x400000C5 - - - - - - - - cast 0x400000C6 - - - - - - - - cast 0x400000C7 - - - - - - - - cast 0x400000C8 - - - - - - - - cast 0x400000C9 - - - - - - - - cast 0x400000CA - - - - - - - - cast 0x400000CB - - - - - - - - cast 0x400000CC - - - - - - - - cast 0x400000CD - - - - - - - - cast 0x400000CE - - - - - - - - cast 0x400000CF - - - - - - - - cast 0x400000D0 - - - - - - - - cast 0x400000D1 - - - - - - - - cast 0x400000D2 - - - - - - - - cast 0x400000D3 - - - - - - - - cast 0x400000D4 - - - - - - - - cast 0x400000D5 - - - - - - - - cast 0x400000D6 - - - - - - - - cast 0x400000D7 - - - - - - - - cast 0x400000D8 - - - - - - - - cast 0x400000D9 - - - - - - - - cast 0x400000DA - - - - - - - - cast 0x400000DB - - - - - - - - cast 0x400000DC - - - - - - - - cast 0x400000DD - - - - - - - - cast 0x400000E0 - - - - - - - - cast 0x400000E1 - - - - - - - - cast 0x400000E2 - - - - - - - - cast 0x400000E3 - - - - - - - - cast 0x400000E4 - - - - - - - - cast 0x400000E5 - - - - - - - - cast 0x400000E6 - - - - - - - - cast 0x400000E7 - - - - - - - - cast 0x40000101 - - - - - - - - cast 0x40000102 - - - - - - - - cast 0x40000103 - - - - - - - - cast 0x40000104 - - - - - - - - cast 0x40000105 - - - - - - - - cast 0x40000106 - - - - - - - - cast 0x40000107 - - - - - - - - cast 0x40000108 - - - - - - - - cast 0x40000109 - - - - - - - - cast 0x4000010A - - - - - - - - cast 0x4000010B - - - - - - - - cast 0x4000010C - - - - - - - - cast 0x4000010D - - - - - - - - cast 0x4000010E - - - - - - - - cast 0x4000010F - - - - - - - - cast 0x40000110 - - - - - - - - cast 0x40000111 - - - - - - - - cast 0x40000112 - - - - - - - - cast 0x40000113 - - - - - - - - cast 0x40000114 - - - - - - - - cast 0x40000115 - - - - - - - - cast 0x40000116 - - - - - - - - cast 0x40000117 - - - - - - - - cast 0x40000118 - - - - - - - - cast 0x40000119 - - - - - - - - cast 0x4000011A - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - A + B - - - - - lime._internal.backend.native.NativeCFFI - -
      -
      - - - - - cast 0x00 - - - - - - - - cast 0x08 - - - - - - - - cast 0x09 - - - - - - - - cast 0x0D - - - - - - - - cast 0x1B - - - - - - - - cast 0x20 - - - - - - - - cast 0x21 - - - - - - - - cast 0x22 - - - - - - - - cast 0x23 - - - - - - - - cast 0x24 - - - - - - - - cast 0x25 - - - - - - - - cast 0x26 - - - - - - - - cast 0x27 - - - - - - - - cast 0x28 - - - - - - - - cast 0x29 - - - - - - - - cast 0x2A - - - - - - - - cast 0x2B - - - - - - - - cast 0x2C - - - - - - - - cast 0x2D - - - - - - - - cast 0x2E - - - - - - - - cast 0x2F - - - - - - - - cast 0x30 - - - - - - - - cast 0x31 - - - - - - - - cast 0x32 - - - - - - - - cast 0x33 - - - - - - - - cast 0x34 - - - - - - - - cast 0x35 - - - - - - - - cast 0x36 - - - - - - - - cast 0x37 - - - - - - - - cast 0x38 - - - - - - - - cast 0x39 - - - - - - - - cast 0x3A - - - - - - - - cast 0x3B - - - - - - - - cast 0x3C - - - - - - - - cast 0x3D - - - - - - - - cast 0x3E - - - - - - - - cast 0x3F - - - - - - - - cast 0x40 - - - - - - - - cast 0x5B - - - - - - - - cast 0x5C - - - - - - - - cast 0x5D - - - - - - - - cast 0x5E - - - - - - - - cast 0x5F - - - - - - - - cast 0x60 - - - - - - - - cast 0x61 - - - - - - - - cast 0x62 - - - - - - - - cast 0x63 - - - - - - - - cast 0x64 - - - - - - - - cast 0x65 - - - - - - - - cast 0x66 - - - - - - - - cast 0x67 - - - - - - - - cast 0x68 - - - - - - - - cast 0x69 - - - - - - - - cast 0x6A - - - - - - - - cast 0x6B - - - - - - - - cast 0x6C - - - - - - - - cast 0x6D - - - - - - - - cast 0x6E - - - - - - - - cast 0x6F - - - - -

      - - - cast 0x70 - - - -

      - - - - cast 0x71 - - - - - - - - cast 0x72 - - - - - - - - cast 0x73 - - - - - - - - cast 0x74 - - - - - - - - cast 0x75 - - - - - - - - cast 0x76 - - - - - - - - cast 0x77 - - - - - - - - cast 0x78 - - - - - - - - cast 0x79 - - - - - - - - cast 0x7A - - - - - - - - cast 0x7F - - - - - - - - cast 0x40000039 - - - - - - - - cast 0x4000003A - - - - - - - - cast 0x4000003B - - - - - - - - cast 0x4000003C - - - - - - - - cast 0x4000003D - - - - - - - - cast 0x4000003E - - - - - - - - cast 0x4000003F - - - - - - - - cast 0x40000040 - - - - - - - - cast 0x40000041 - - - - - - - - cast 0x40000042 - - - - - - - - cast 0x40000043 - - - - - - - - cast 0x40000044 - - - - - - - - cast 0x40000045 - - - - - - - - cast 0x40000046 - - - - - - - - cast 0x40000047 - - - - - - - - cast 0x40000048 - - - - - - - - cast 0x40000049 - - - - - - - - cast 0x4000004A - - - - - - - - cast 0x4000004B - - - - - - - - cast 0x4000004D - - - - - - - - cast 0x4000004E - - - - - - - - cast 0x4000004F - - - - - - - - cast 0x40000050 - - - - - - - - cast 0x40000051 - - - - - - - - cast 0x40000052 - - - - - - - - cast 0x40000053 - - - - - - - - cast 0x40000054 - - - - - - - - cast 0x40000055 - - - - - - - - cast 0x40000056 - - - - - - - - cast 0x40000057 - - - - - - - - cast 0x40000058 - - - - - - - - cast 0x40000059 - - - - - - - - cast 0x4000005A - - - - - - - - cast 0x4000005B - - - - - - - - cast 0x4000005C - - - - - - - - cast 0x4000005D - - - - - - - - cast 0x4000005E - - - - - - - - cast 0x4000005F - - - - - - - - cast 0x40000060 - - - - - - - - cast 0x40000061 - - - - - - - - cast 0x40000062 - - - - - - - - cast 0x40000063 - - - - - - - - cast 0x40000065 - - - - - - - - cast 0x40000066 - - - - - - - - cast 0x40000067 - - - - - - - - cast 0x40000068 - - - - - - - - cast 0x40000069 - - - - - - - - cast 0x4000006A - - - - - - - - cast 0x4000006B - - - - - - - - cast 0x4000006C - - - - - - - - cast 0x4000006D - - - - - - - - cast 0x4000006E - - - - - - - - cast 0x4000006F - - - - - - - - cast 0x40000070 - - - - - - - - cast 0x40000071 - - - - - - - - cast 0x40000072 - - - - - - - - cast 0x40000073 - - - - - - - - cast 0x40000074 - - - - - - - - cast 0x40000075 - - - - - - - - cast 0x40000076 - - - - - - - - - cast 0x40000078 - - - - - - - - cast 0x40000079 - - - - - - - - cast 0x4000007A - - - - - - - - cast 0x4000007B - - - - - - - - cast 0x4000007C - - - - - - - - cast 0x4000007D - - - - - - - - cast 0x4000007E - - - - - - - - cast 0x4000007F - - - - - - - - cast 0x40000080 - - - - - - - - cast 0x40000081 - - - - - - - - cast 0x40000085 - - - - - - - - cast 0x40000099 - - - - - - - - cast 0x4000009A - - - - - - - - cast 0x4000009B - - - - - - - - cast 0x4000009C - - - - - - - - cast 0x4000009D - - - - - - - - cast 0x4000009E - - - - - - - - cast 0x4000009F - - - - - - - - cast 0x400000A0 - - - - - - - - cast 0x400000A1 - - - - - - - - cast 0x400000A2 - - - - - - - - cast 0x400000A3 - - - - - - - - cast 0x400000A4 - - - - - - - - cast 0x400000B0 - - - - - - - - cast 0x400000B1 - - - - - - - - cast 0x400000B2 - - - - - - - - cast 0x400000B3 - - - - - - - - cast 0x400000B4 - - - - - - - - cast 0x400000B5 - - - - - - - - cast 0x400000B6 - - - - - - - - cast 0x400000B7 - - - - - - - - cast 0x400000B8 - - - - - - - - cast 0x400000B9 - - - - - - - - cast 0x400000BA - - - - - - - - cast 0x400000BB - - - - - - - - cast 0x400000BC - - - - - - - - cast 0x400000BD - - - - - - - - cast 0x400000BE - - - - - - - - cast 0x400000BF - - - - - - - - cast 0x400000C0 - - - - - - - - cast 0x400000C1 - - - - - - - - cast 0x400000C2 - - - - - - - - cast 0x400000C3 - - - - - - - - cast 0x400000C4 - - - - - - - - cast 0x400000C5 - - - - - - - - cast 0x400000C6 - - - - - - - - cast 0x400000C7 - - - - - - - - cast 0x400000C8 - - - - - - - - cast 0x400000C9 - - - - - - - - cast 0x400000CA - - - - - - - - cast 0x400000CB - - - - - - - - cast 0x400000CC - - - - - - - - cast 0x400000CD - - - - - - - - cast 0x400000CE - - - - - - - - cast 0x400000CF - - - - - - - - cast 0x400000D0 - - - - - - - - cast 0x400000D1 - - - - - - - - cast 0x400000D2 - - - - - - - - cast 0x400000D3 - - - - - - - - cast 0x400000D4 - - - - - - - - cast 0x400000D5 - - - - - - - - cast 0x400000D6 - - - - - - - - cast 0x400000D7 - - - - - - - - cast 0x400000D8 - - - - - - - - cast 0x400000D9 - - - - - - - - cast 0x400000DA - - - - - - - - cast 0x400000DB - - - - - - - - cast 0x400000DC - - - - - - - - cast 0x400000DD - - - - - - - - cast 0x400000E0 - - - - - - - - cast 0x400000E1 - - - - - - - - cast 0x400000E2 - - - - - - - - cast 0x400000E3 - - - - - - - - cast 0x400000E4 - - - - - - - - cast 0x400000E5 - - - - - - - - cast 0x400000E6 - - - - - - - - cast 0x400000E7 - - - - - - - - cast 0x40000101 - - - - - - - - cast 0x40000102 - - - - - - - - cast 0x40000103 - - - - - - - - cast 0x40000104 - - - - - - - - cast 0x40000105 - - - - - - - - cast 0x40000106 - - - - - - - - cast 0x40000107 - - - - - - - - cast 0x40000108 - - - - - - - - cast 0x40000109 - - - - - - - - cast 0x4000010A - - - - - - - - cast 0x4000010B - - - - - - - - cast 0x4000010C - - - - - - - - cast 0x4000010D - - - - - - - - cast 0x4000010E - - - - - - - - cast 0x4000010F - - - - - - - - cast 0x40000110 - - - - - - - - cast 0x40000111 - - - - - - - - cast 0x40000112 - - - - - - - - cast 0x40000113 - - - - - - - - cast 0x40000114 - - - - - - - - cast 0x40000115 - - - - - - - - cast 0x40000116 - - - - - - - - cast 0x40000117 - - - - - - - - cast 0x40000118 - - - - - - - - cast 0x40000119 - - - - - - - - cast 0x4000011A - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - A + B - - - - - lime._internal.backend.native.NativeCFFI - -
      - - - - - - - - - - - - - - 0x0000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0040 - - - - 0x0080 - - - - 0x0100 - - - - 0x0200 - - - - 0x0400 - - - - 0x0800 - - - - 0x1000 - - - - 0x2000 - - - - 0x4000 - - - - (0x0040 | 0x0080) - - - - (0x001 | 0x0002) - - - - (0x0100 | 0x0200) - - - - (0x0400 | 0x0800) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0x0000 - - - - 0x0001 - - - - 0x0002 - - - - 0x0040 - - - - 0x0080 - - - - 0x0100 - - - - 0x0200 - - - - 0x0400 - - - - 0x0800 - - - - 0x1000 - - - - 0x2000 - - - - 0x4000 - - - - (0x0040 | 0x0080) - - - - (0x001 | 0x0002) - - - - (0x0100 | 0x0200) - - - - (0x0400 | 0x0800) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - lime.ui.KeyCode - - - - - - - cast 0 - - - - - - - - cast 42 - - - - - - - - cast 43 - - - - - - - - cast 40 - - - - - - - - cast 41 - - - - - - - - cast 44 - - - - - - - - cast 52 - - - - - - - - cast 54 - - - - - - - - cast 45 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 39 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - cast 51 - - - - - - - - cast 46 - - - - - - - - cast 47 - - - - - - - - cast 49 - - - - - - - - cast 48 - - - - - - - - cast 53 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - -

      - - - cast 19 - - - -

      - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 29 - - - - - - - - cast 76 - - - - - - - - cast 57 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 62 - - - - - - - - cast 63 - - - - - - - - cast 64 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - cast 93 - - - - - - - - cast 94 - - - - - - - - cast 95 - - - - - - - - cast 96 - - - - - - - - cast 97 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 101 - - - - - - - - cast 102 - - - - - - - - cast 103 - - - - - - - - cast 104 - - - - - - - - cast 105 - - - - - - - - cast 106 - - - - - - - - cast 107 - - - - - - - - cast 108 - - - - - - - - cast 109 - - - - - - - - cast 110 - - - - - - - - cast 111 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 115 - - - - - - - - cast 116 - - - - - - - - cast 117 - - - - - - - - cast 118 - - - - - - - - - cast 120 - - - - - - - - cast 121 - - - - - - - - cast 122 - - - - - - - - cast 123 - - - - - - - - cast 124 - - - - - - - - cast 125 - - - - - - - - cast 126 - - - - - - - - cast 127 - - - - - - - - cast 128 - - - - - - - - cast 129 - - - - - - - - cast 133 - - - - - - - - cast 153 - - - - - - - - cast 154 - - - - - - - - cast 155 - - - - - - - - cast 156 - - - - - - - - cast 157 - - - - - - - - cast 158 - - - - - - - - cast 159 - - - - - - - - cast 160 - - - - - - - - cast 161 - - - - - - - - cast 162 - - - - - - - - cast 163 - - - - - - - - cast 164 - - - - - - - - cast 176 - - - - - - - - cast 177 - - - - - - - - cast 178 - - - - - - - - cast 179 - - - - - - - - cast 180 - - - - - - - - cast 181 - - - - - - - - cast 182 - - - - - - - - cast 183 - - - - - - - - cast 184 - - - - - - - - cast 185 - - - - - - - - cast 186 - - - - - - - - cast 187 - - - - - - - - cast 188 - - - - - - - - cast 189 - - - - - - - - cast 190 - - - - - - - - cast 191 - - - - - - - - cast 192 - - - - - - - - cast 193 - - - - - - - - cast 194 - - - - - - - - cast 195 - - - - - - - - cast 196 - - - - - - - - cast 197 - - - - - - - - cast 198 - - - - - - - - cast 199 - - - - - - - - cast 200 - - - - - - - - cast 201 - - - - - - - - cast 202 - - - - - - - - cast 203 - - - - - - - - cast 204 - - - - - - - - cast 205 - - - - - - - - cast 206 - - - - - - - - cast 207 - - - - - - - - cast 208 - - - - - - - - cast 209 - - - - - - - - cast 210 - - - - - - - - cast 211 - - - - - - - - cast 212 - - - - - - - - cast 213 - - - - - - - - cast 214 - - - - - - - - cast 215 - - - - - - - - cast 216 - - - - - - - - cast 217 - - - - - - - - cast 218 - - - - - - - - cast 219 - - - - - - - - cast 220 - - - - - - - - cast 221 - - - - - - - - cast 224 - - - - - - - - cast 225 - - - - - - - - cast 226 - - - - - - - - cast 227 - - - - - - - - cast 228 - - - - - - - - cast 229 - - - - - - - - cast 230 - - - - - - - - cast 231 - - - - - - - - cast 257 - - - - - - - - cast 258 - - - - - - - - cast 259 - - - - - - - - cast 260 - - - - - - - - cast 261 - - - - - - - - cast 262 - - - - - - - - cast 263 - - - - - - - - cast 264 - - - - - - - - cast 265 - - - - - - - - cast 266 - - - - - - - - cast 267 - - - - - - - - cast 268 - - - - - - - - cast 269 - - - - - - - - cast 270 - - - - - - - - cast 271 - - - - - - - - cast 272 - - - - - - - - cast 273 - - - - - - - - cast 274 - - - - - - - - cast 275 - - - - - - - - cast 276 - - - - - - - - cast 277 - - - - - - - - cast 278 - - - - - - - - cast 279 - - - - - - - - cast 280 - - - - - - - - cast 281 - - - - - - - - cast 282 - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - A + B - - - - lime.ui.KeyCode - lime._internal.backend.native.NativeCFFI - -
      -
      - - - - - cast 0 - - - - - - - - cast 42 - - - - - - - - cast 43 - - - - - - - - cast 40 - - - - - - - - cast 41 - - - - - - - - cast 44 - - - - - - - - cast 52 - - - - - - - - cast 54 - - - - - - - - cast 45 - - - - - - - - cast 55 - - - - - - - - cast 56 - - - - - - - - cast 39 - - - - - - - - cast 30 - - - - - - - - cast 31 - - - - - - - - cast 32 - - - - - - - - cast 33 - - - - - - - - cast 34 - - - - - - - - cast 35 - - - - - - - - cast 36 - - - - - - - - cast 37 - - - - - - - - cast 38 - - - - - - - - cast 51 - - - - - - - - cast 46 - - - - - - - - cast 47 - - - - - - - - cast 49 - - - - - - - - cast 48 - - - - - - - - cast 53 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - cast 11 - - - - - - - - cast 12 - - - - - - - - cast 13 - - - - - - - - cast 14 - - - - - - - - cast 15 - - - - - - - - cast 16 - - - - - - - - cast 17 - - - - - - - - cast 18 - - - - -

      - - - cast 19 - - - -

      - - - - cast 20 - - - - - - - - cast 21 - - - - - - - - cast 22 - - - - - - - - cast 23 - - - - - - - - cast 24 - - - - - - - - cast 25 - - - - - - - - cast 26 - - - - - - - - cast 27 - - - - - - - - cast 28 - - - - - - - - cast 29 - - - - - - - - cast 76 - - - - - - - - cast 57 - - - - - - - - cast 58 - - - - - - - - cast 59 - - - - - - - - cast 60 - - - - - - - - cast 61 - - - - - - - - cast 62 - - - - - - - - cast 63 - - - - - - - - cast 64 - - - - - - - - cast 65 - - - - - - - - cast 66 - - - - - - - - cast 67 - - - - - - - - cast 68 - - - - - - - - cast 69 - - - - - - - - cast 70 - - - - - - - - cast 71 - - - - - - - - cast 72 - - - - - - - - cast 73 - - - - - - - - cast 74 - - - - - - - - cast 75 - - - - - - - - cast 77 - - - - - - - - cast 78 - - - - - - - - cast 79 - - - - - - - - cast 80 - - - - - - - - cast 81 - - - - - - - - cast 82 - - - - - - - - cast 83 - - - - - - - - cast 84 - - - - - - - - cast 85 - - - - - - - - cast 86 - - - - - - - - cast 87 - - - - - - - - cast 88 - - - - - - - - cast 89 - - - - - - - - cast 90 - - - - - - - - cast 91 - - - - - - - - cast 92 - - - - - - - - cast 93 - - - - - - - - cast 94 - - - - - - - - cast 95 - - - - - - - - cast 96 - - - - - - - - cast 97 - - - - - - - - cast 98 - - - - - - - - cast 99 - - - - - - - - cast 101 - - - - - - - - cast 102 - - - - - - - - cast 103 - - - - - - - - cast 104 - - - - - - - - cast 105 - - - - - - - - cast 106 - - - - - - - - cast 107 - - - - - - - - cast 108 - - - - - - - - cast 109 - - - - - - - - cast 110 - - - - - - - - cast 111 - - - - - - - - cast 112 - - - - - - - - cast 113 - - - - - - - - cast 114 - - - - - - - - cast 115 - - - - - - - - cast 116 - - - - - - - - cast 117 - - - - - - - - cast 118 - - - - - - - - - cast 120 - - - - - - - - cast 121 - - - - - - - - cast 122 - - - - - - - - cast 123 - - - - - - - - cast 124 - - - - - - - - cast 125 - - - - - - - - cast 126 - - - - - - - - cast 127 - - - - - - - - cast 128 - - - - - - - - cast 129 - - - - - - - - cast 133 - - - - - - - - cast 153 - - - - - - - - cast 154 - - - - - - - - cast 155 - - - - - - - - cast 156 - - - - - - - - cast 157 - - - - - - - - cast 158 - - - - - - - - cast 159 - - - - - - - - cast 160 - - - - - - - - cast 161 - - - - - - - - cast 162 - - - - - - - - cast 163 - - - - - - - - cast 164 - - - - - - - - cast 176 - - - - - - - - cast 177 - - - - - - - - cast 178 - - - - - - - - cast 179 - - - - - - - - cast 180 - - - - - - - - cast 181 - - - - - - - - cast 182 - - - - - - - - cast 183 - - - - - - - - cast 184 - - - - - - - - cast 185 - - - - - - - - cast 186 - - - - - - - - cast 187 - - - - - - - - cast 188 - - - - - - - - cast 189 - - - - - - - - cast 190 - - - - - - - - cast 191 - - - - - - - - cast 192 - - - - - - - - cast 193 - - - - - - - - cast 194 - - - - - - - - cast 195 - - - - - - - - cast 196 - - - - - - - - cast 197 - - - - - - - - cast 198 - - - - - - - - cast 199 - - - - - - - - cast 200 - - - - - - - - cast 201 - - - - - - - - cast 202 - - - - - - - - cast 203 - - - - - - - - cast 204 - - - - - - - - cast 205 - - - - - - - - cast 206 - - - - - - - - cast 207 - - - - - - - - cast 208 - - - - - - - - cast 209 - - - - - - - - cast 210 - - - - - - - - cast 211 - - - - - - - - cast 212 - - - - - - - - cast 213 - - - - - - - - cast 214 - - - - - - - - cast 215 - - - - - - - - cast 216 - - - - - - - - cast 217 - - - - - - - - cast 218 - - - - - - - - cast 219 - - - - - - - - cast 220 - - - - - - - - cast 221 - - - - - - - - cast 224 - - - - - - - - cast 225 - - - - - - - - cast 226 - - - - - - - - cast 227 - - - - - - - - cast 228 - - - - - - - - cast 229 - - - - - - - - cast 230 - - - - - - - - cast 231 - - - - - - - - cast 257 - - - - - - - - cast 258 - - - - - - - - cast 259 - - - - - - - - cast 260 - - - - - - - - cast 261 - - - - - - - - cast 262 - - - - - - - - cast 263 - - - - - - - - cast 264 - - - - - - - - cast 265 - - - - - - - - cast 266 - - - - - - - - cast 267 - - - - - - - - cast 268 - - - - - - - - cast 269 - - - - - - - - cast 270 - - - - - - - - cast 271 - - - - - - - - cast 272 - - - - - - - - cast 273 - - - - - - - - cast 274 - - - - - - - - cast 275 - - - - - - - - cast 276 - - - - - - - - cast 277 - - - - - - - - cast 278 - - - - - - - - cast 279 - - - - - - - - cast 280 - - - - - - - - cast 281 - - - - - - - - cast 282 - - - - - - - - - - - - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - A + B - - - - lime.ui.KeyCode - lime._internal.backend.native.NativeCFFI - -
      - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - * The current frame rate (measured in frames-per-second) of the window. - * - * On some platforms, a frame rate of 60 or greater may imply vsync, which will - * perform more quickly on displays with a higher refresh rate - - - - - - - - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - - - - - KeyModifier>()]]> - - - - - - - - KeyModifier>()]]> - - - - ()]]> - - - - ()]]> - - - - ()]]> - - - - - - - - - Float -> MouseButton>()]]> - - - - - - - - Float>()]]> - - - - - - - - Float>()]]> - - - - - - - - - Float -> Int>()]]> - - - - - - - - - Float -> MouseWheelMode>()]]> - - - - - - - - Float>()]]> - - - - - - - ()]]> - - - - ()]]> - - - - - - - ()]]> - - - - - - - - Int>()]]> - - - - ()]]> - - - - - - - - - Int -> Int>()]]> - - - - - - - ()]]> - - - - - - - <c path="String"/> - - - - <__attributes> - - - - <__backend> - - - - <__borderless> - - - - <__fullscreen> - - - - <__height> - - - - <__hidden> - - - - <__maximized> - - - - <__minimized> - - - - <__resizable> - - - - <__scale> - - - - <__title> - - - - <__width> - - - - <__x> - - - - <__y> - - - - - - - - - - { title : null, message : null } - - - - - - - - - - - - - - { rect : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - <x path="Null"><c path="String"/></x> - <meta><m n=":optional"/></meta> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="21" static="1"> - - - - - - - - - - - - - - - - - - { end : null } - - - - - - - - - - <_new public="1" get="inline" set="null" line="21" static="1"> - - - - - - - - - - - - - - - - - - { end : null } - - - - - - - - - hide - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - cast 9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - hide - - - - - - - - - - - - - - - - - - - - <__extractBundle set="method" line="56" static="1"> - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - { prefix : null } - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - <__resolvePath set="method" line="149" static="1"> - - - - <__resolveRootPath set="method" line="189" static="1"> - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - cast "BINARY" - - - - - - - - cast "FONT" - - - - - - - - cast "IMAGE" - - - - - - - - cast "MANIFEST" - - - - - - - - cast "MUSIC" - - - - - - - - cast "SOUND" - - - - - - - - - cast "TEXT" - - - - - - - - - - - - cast "BINARY" - - - - - - - - cast "FONT" - - - - - - - - cast "IMAGE" - - - - - - - - cast "MANIFEST" - - - - - - - - cast "MUSIC" - - - - - - - - cast "SOUND" - - - - - - - - - cast "TEXT" - - - - - - - - - - new AssetCache() - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - ()]]> - - - - - - - - { type : null } - - - - - - - - - * Gets an instance of a cached or embedded asset - * @usage var sound = Assets.getAsset("sound.wav", SOUND); - * @param id The ID or asset path for the asset - * @return An Asset object, or null. - - - - - - - - { useCache : true } - * Gets an instance of an embedded sound - * @usage var sound = Assets.getAudioBuffer ("sound.wav"); - * @param id The ID or asset path for the sound - * @return A new Sound object - - - - - - - * Gets an instance of an embedded binary asset - * @usage var bytes = Assets.getBytes("file.zip"); - * @param id The ID or asset path for the file - * @return A new Bytes object - - - - - - - - { useCache : true } - * Gets an instance of an embedded font - * @usage var fontName = Assets.getFont("font.ttf").fontName; - * @param id The ID or asset path for the font - * @return A new Font object - - - - - - - - { useCache : true } - * Gets an instance of an embedded bitmap - * @usage var bitmap = new Bitmap(Assets.getBitmapData("image.jpg")); - * @param id The ID or asset path for the bitmap - * @param useCache (Optional) Whether to use BitmapData from the cache(Default: true) - * @return A new BitmapData object - - - - - - - - - - - * Gets the file path (if available) for an asset - * @usage var path = Assets.getPath("image.jpg"); - * @param id The ID or asset path for the asset - * @return The path to the asset (or null) - - - - - - - * Gets an instance of an embedded text asset - * @usage var text = Assets.getText("text.txt"); - * @param id The ID or asset path for the file - * @return A new String object - - - - - - - - - - - - - { useCache : true, type : null } - - - - - - - - - - - - - - - { type : null } - - - - - - - - - - - - - - { useCache : true } - - - - - - - - - - - - { useCache : true } - - - - - - - - { useCache : true } - - - - - - - - - - - - - - - - - - - <__cacheBreak set="method" line="537" static="1"> - - - - - - - <__libraryNotFound set="method" line="556" static="1"> - - - - - - - - - - - The Assets class provides a cross-platform interface to access - * embedded images, fonts, sounds and other resource files.

      - * - *

      The contents are populated automatically when an application - * is compiled using the Lime command-line tools, based on the - * contents of the project file.

      - * - *

      For most platforms, the assets are included in the same directory - * or package as the application, and the paths are handled - * automatically. For web content, the assets are preloaded before - * the start of the rest of the application.

      ]]>
      - - - "tags=\"haxe,release\"" - - lime.utils.AssetLibrary - -
      - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - haxe.io.Bytes - lime.utils.BytePointerData - - - - - <_new public="1" get="inline" set="null" line="13" static="1"> - - - - - - - { offset : 0, bytes : null } - - - - - - - - - - - - <__arrayGet get="inline" set="null" line="47" static="1"> - - - - - - - - - - - <__arraySet get="inline" set="null" line="52" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.utils.BytePointerData - haxe.io.Bytes - - - - - <_new public="1" get="inline" set="null" line="13" static="1"> - - - - - - - { offset : 0, bytes : null } - - - - - - - - - - - - <__arrayGet get="inline" set="null" line="47" static="1"> - - - - - - - - - - - <__arraySet get="inline" set="null" line="52" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.utils.BytePointerData - haxe.io.Bytes - - - - - - - - haxe.io.Bytes - lime._internal.backend.native.NativeCFFI - - - - - <_new public="1" set="method" line="19" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__fromNativePointer public="1" set="method" line="132" static="1"> - - - - - - - lime._internal.backend.native.NativeCFFI - haxe.io.Bytes - - - - - <_new public="1" set="method" line="19" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__fromNativePointer public="1" set="method" line="132" static="1"> - - - - - - - lime._internal.backend.native.NativeCFFI - haxe.io.Bytes - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime._internal.backend.native.NativeCFFI - haxe.io.Bytes - - - - <_new set="method" line="21" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__withOffset set="method" line="151" static="1"> - - - - - - - - - - - - - A == B - - - - - - - - - - - A == B - - - - - - - - - - - B]]> - - - - - - - - - - - B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A != B - - - - - - - - - - - A != B - - - - - - - - - - - A + B - - - - - - - - - - - A + B - - - - - - - - - - - A - B - - - - - - - - - - - A - B - - - - - haxe.io.Bytes - lime._internal.backend.native.NativeCFFI - - - - - <_new set="method" line="21" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__withOffset set="method" line="151" static="1"> - - - - - - - - - - - - - A == B - - - - - - - - - - - A == B - - - - - - - - - - - B]]> - - - - - - - - - - - B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A != B - - - - - - - - - - - A != B - - - - - - - - - - - A + B - - - - - - - - - - - A + B - - - - - - - - - - - A - B - - - - - - - - - - - A - B - - - - - haxe.io.Bytes - lime._internal.backend.native.NativeCFFI - - - - - - - - - - - - - - - 4 - - - - <_new public="1" params="T" get="inline" set="null" line="103" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - 4 - - - - <_new public="1" params="T" get="inline" set="null" line="103" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - 8 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 8 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 2 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - 4 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 4 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="98" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="98" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - B]]> - - - - - - - - = B]]> - - - - - - - - - - - - - - - - - - - - - - - - ()]]> - - - - - - - - Int>()]]> - - - - - - - - - - - - ()]]> - - - - - - - - - - ()]]> - - - - - - - - - - - - - - ()]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { name : null } - - - - - - - - - - - - - - - - - - - - - - - lime.utils.AssetLibrary - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - <_new public="1" set="method" line="8" static="1"> - - - - - - { size : 0 } - - - - <__fromString get="inline" set="null" line="14" static="1"> - - - - - - - <__toString get="inline" set="null" line="19" static="1"> - - - - - - - - - - <_new public="1" set="method" line="8" static="1"> - - - - - - { size : 0 } - - - - <__fromString get="inline" set="null" line="14" static="1"> - - - - - - - <__toString get="inline" set="null" line="19" static="1"> - - - - - - - - - - - - - - - - - - - 2 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 2 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - 4 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 4 - - - <_new public="1" params="T" get="inline" set="null" line="100" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="98" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="98" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="110" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - 1 - - - <_new public="1" params="T" get="inline" set="null" line="110" static="1"> - - - - - - - - - - - - - { byteoffset : 0 } - - - - - - - - - - - { end : null } - - - - - - - - - { byteOffset : 0 } - - - - - - - - - - - - - - - - - - - - Base class for any AST item. Roughly corresponds to Node in the DOM. Will - be either an ElementNode or TextNode. - - - - - - - - Called when a TextNode has been reached. - - - - - - - Called when an ElementNode has been reached, before its children have been - visited. Return `false` to skip its children. - - - - - - - Called when an ElementNode has been reached, after its children have been - visited. Will not be called if [visitElementBefore] returns `false`. - - Visitor pattern for the AST. Renderers or other AST transformers should - implement this. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A named tag that can contain other nodes. - - - - - - - - - - - - - - A plain text element. - - - - - - - - - - - - - - - - - - - - - - - - - - - Maintains the internal state needed to parse a series of lines into blocks - of markdown suitable for further inline parsing. - - - - - - new EReg("^([ \\t]*)$", "") - The line contains only whitespace or is empty. - - - - new EReg("^((=+)|(-+))$", "") - A series of `=` or `-` (on the next line) define setext-style headers. - - - - new EReg("^(#{1,6})(.*?)( +#* *)?$", "") - Leading (and trailing) `#` define atx-style headers. - - - - [ ]?(.*)$", "")]]> - ` with one optional space after.]]> - - - - new EReg("^(?: |\t)(.*)$", "") - A line indented four spaces. Used for code blocks and lists. - - - - new EReg("^```(\\w*)\\s*$", "") - GitHub style triple quoted code block. - - - - new EReg("^[ ]{0,3}((-+[ ]{0,2}){3,}|(_+[ ]{0,2}){3,}|(\\*+[ ]{0,2}){3,})$", "") - Three or more hyphens, asterisks or underscores by themselves. Note that - a line like `----` is valid as both HR and SETEXT. In case of a tie, - SETEXT should win. - - - - ]", "")]]> - - - - - new EReg("^[ ]{0,3}[*+-][ \\t]+(.*)$", "") - A line starting with one of these markers: `-`, `*`, `+`. May have up to - three leading spaces before the marker and any number of spaces or tabs - after. - - - - new EReg("^[ ]{0,3}\\d+\\.[ \\t]+(.*)$", "") - A line starting with a number like `123.`. May have up to three leading - spaces before the marker and any number of spaces or tabs after. - - - - Gets the collection of built-in block parsers. To turn a series of lines - into blocks, each of these will be tried in turn. Order matters here. - - - - - - - - Gets whether or not [parser]'s current line should end the - previous block. - - - - Gets the regex used to identify the beginning of this block, if any. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Parses setext-style headers. - - - - - - - - - - - Parses atx-style headers: `## Header ##`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new EReg("^(.+?:?\\|:?)+(.+)$", "") - - - - new EReg("(\\|)?([^\\|]+)(\\|)?", "g") - - - - - - - - - - - - - - - new EReg("blockquote|h1|h2|h3|h4|h5|h6|hr|p|pre", "") - - - - ["src", "alt"] - - - - - - - - - - - - - - - - - - - - - - - - - Translates a parsed AST to HTML. - - - - - - - - - - - - - - - - - Represents one kind of markdown tag that can be parsed. - - - - - - - - - - - - - Matches autolinks like `http://foo.com`. - - - - - - - - - - - - - - - Matches stuff that should just be passed through as straight text. - - - - - - - - - - `.]]> - - - - - - - - - - - - - - - - - - - - - - `. Allows nested tags.]]> - - - - - - - "\\](?:(" + "\\s?\\[([^\\]]*)\\]" + "|" + "\\s?\\(([^ )]+)(?:[ ]*\"([^\"]+)\"|)\\)" + ")|)" - - - - - - - - - - - - Matches inline links like `[blah] [id]` and `[blah] (url)`. - - - - - - - "\\](?:(" + "\\s?\\[([^\\]]*)\\]" + "|" + "\\s?\\(([^ )]+)(?:[ ]*\"([^\"]+)\"|)\\)" + ")|)" - - - - - - - - - - - - Matches inline links like `[blah] [id]` and `[blah] (url)`. - - - - - - - - - - - - - - - - - - \n"), new TextSyntax("\\s*[A-Za-z0-9]+"), new AutolinkSyntax(), new LinkSyntax(), new ImgSyntax(), new TextSyntax(" \\* "), new TextSyntax(" _ "), new TextSyntax("&[#a-zA-Z0-9]*;"), new TextSyntax("&", "&"), new TextSyntax("<(?:!--[ ]*|/)?\\w+.*?>"), new TextSyntax("<", "<"), new TagSyntax("\\*\\*", "strong"), new TagSyntax("__", "strong"), new TagSyntax("\\*", "em"), new TagSyntax("\\b_", "em", "_\\b"), new CodeSyntax("``\\s?((?:.|\\n)*?)\\s?``"), new CodeSyntax("`([^`]*)`")]]]> - - - - - - - 0 - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Maintains the internal state needed to parse inline span elements in - markdown. - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__lastTimerID expr="0" line="29" static="1"> - - - 0 - - - - <__sentWarnings expr="new Map()" line="30" static="1"> - - - - - - new Map() - - - - <__timers expr="new Map()" line="31" static="1"> - - - - - - new Map() - - - - <__registeredClassAliases expr="new Map()" line="32" static="1"> - - - - - - new Map() - - - - - - - - - - - - - - - - - - Cancels a specified `setInterval()` call. - - @param id The ID of the `setInterval()` call, which you set to a variable, as - in the following: - - - - - - - Cancels a specified `setTimeout()` call. - - @param id The ID of the `setTimeout()` call, which you set to a variable, as in - the following - - - - - - - Returns a reference to the class object of the class specified by the `name` - parameter. - - @param name The name of a class. - @returns Returns a reference to the class object of the class specified by the - `name` parameter. - @throws ReferenceError No public definition exists with the specified name. - - - - - - - Returns the fully qualified class name of an object. - - @param value The object for which a fully qualified class name is desired. Any - ActionScript value may be passed to this method including all available - ActionScript types, object instances, primitive types such as uint, and class - objects. - @returns String A string containing the fully qualified class name. - - - - - - - Returns the fully qualified class name of the base class of the object specified - by the value parameter. This function provides a quicker way of retrieving the - base class name than `describeType()`, but also doesn't provide all the - information `describeType()` does. - - After you retrieve the name of a class with this function, you can convert the - class name to a class reference with the `getDefinitionByName()` function. - - **Note:** This function restricts itself to instance hierarchies, whereas the - `describeType()` function uses class object hierarchies if the value parameter is - a data type. Calling `describeType()` on a data type returns the superclass based - on the class object hierarchy, in which all class objects inherit from Class. The - `getQualifiedSuperclassName()` function, however, ignores the class object - hierarchy and returns the superclass based on the more familiar instance - hierarchy. For example, calling `getQualifiedSuperclassName(String)` returns - Object although technically the String class object inherits from Class. In other - words, the results are the same whether you use an instance of a type or the type - itself. - - @param value Any value. - @returns A fully qualified base class name, or null if none exists. - - - - Used to compute relative time. For a Flash runtime processing ActionScript 3.0, - this method returns the number of milliseconds that have elapsed since the Flash - runtime virtual machine for ActionScript 3.0 (AVM2) started. For a Flash runtime - processing ActionScript 2.0, this method returns the number of milliseconds since - the Flash runtime began initialization. Flash runtimes use two virtual machines to - process ActionScript. AVM1 is the ActionScript virtual machine used to run - ActionScript 1.0 and 2.0. AVM2 is the ActionScript virtual machine used to run - ActionScript 3.0. The getTimer() method behavior for AVM1 is different than the - behavior for AVM2. - - For a calendar date (timestamp), see the Date object. - - @returns The number of milliseconds since the runtime was initialized (while - processing ActionScript 2.0), or since the virtual machine started (while - processing ActionScript 3.0). If the runtime starts playing one SWF file, and - another SWF file is loaded later, the return value is relative to when the first - SWF file was loaded. - - - - - - - - { target : null } - - - - - - - - { window : null } - = 4096) { - return (false); - } - return (true); - } - ``` - - For local content running in a browser, calls to the `navigateToURL()` method that - specify a "javascript:" pseudo-protocol (via a URLRequest object passed as the first - parameter) are only permitted if the SWF file and the containing web page (if there - is one) are in the local-trusted security sandbox. Some browsers do not support using - the javascript protocol with the `navigateToURL()` method. Instead, consider using the - `call()` method of the ExternalInterface API to invoke JavaScript methods within the - enclosing HTML page. - - In Flash Player, and in non-application sandboxes in Adobe AIR, you cannot connect to - commonly reserved ports. For a complete list of blocked ports, see "Restricting - Networking APIs" in the ActionScript 3.0 Developer's Guide. - - In Flash Player 10 and later running in a browser, using this method programmatically - to open a pop-up window may not be successful. Various browsers (and browser - configurations) may block pop-up windows at any time; it is not possible to guarantee - any pop-up window will appear. However, for the best chance of success, use this - method to open a pop-up window only in code that executes as a direct result of a - user action (for example, in an event handler for a mouse click or key-press event.) - - In Flash Player 10 and later, if you use a multipart Content-Type (for example - "multipart/form-data") that contains an upload (indicated by a "filename" parameter - in a "content-disposition" header within the POST body), the POST operation is subject - to the security rules applied to uploads: - - * The POST operation must be performed in response to a user-initiated action, such - as a mouse click or key press. - * If the POST operation is cross-domain (the POST target is not on the same server - as the SWF file that is sending the POST request), the target server must provide - a URL policy file that permits cross-domain access. - - Also, for any multipart Content-Type, the syntax must be valid (according to the - RFC2046 standards). If the syntax appears to be invalid, the POST operation is - subject to the security rules applied to uploads. - - In AIR, on mobile platforms, the sms: and tel: URI schemes are supported. On - Android, vipaccess:, connectpro:, and market: URI schemes are supported. The URL - syntax is subject to the platform conventions. For example, on Android, the URI - scheme must be lower case. When you navigate to a URL using one of these schemes, - the runtime opens the URL in the default application for handling the scheme. Thus, - navigating to tel:+5555555555 opens the phone dialer with the specified number - already entered. A separate application or utility, such as a phone dialer must be - available to process the URL. - - The following code shows how you can invoke the VIP Access and Connect Pro - applications on Android: - - ```as3 - //Invoke the VIP Access Application. - navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); - - //Invoke the Connect Pro Application. - navigateToURL(new URLRequest("connectpro://")); - ``` - - @param request A URLRequest object that specifies the URL to navigate to. - For content running in Adobe AIR, when using the `navigateToURL()` function, the - runtime treats a URLRequest that uses the POST method (one that has its method - property set to `URLRequestMethod.POST`) as using the GET method. - - @param window The browser window or HTML frame in which to display the document - indicated by the request parameter. You can enter the name of a specific window or - use one of the following values: - - * `"_self"` specifies the current frame in the current window. - * `"_blank"` specifies a new window. - * `"_parent"` specifies the parent of the current frame. - * `"_top"` specifies the top-level frame in the current window. - - If you do not specify a value for this parameter, a new empty window is created. - In the stand-alone player, you can either specify a new ("_blank") window or a - named window. The other values don't apply. - - **Note:** When code in a SWF file that is running in the local-with-filesystem - sandbox calls the `navigateToURL()` function and specifies a custom window name - for the window parameter, the window name is transfered into a random name. The - name is in the form "_flashXXXXXXXX", where each X represents a random hexadecimal - digit. Within the same session (until you close the containing browser window), - if you call the function again and specify the same name for the window parameter, - the same random string is used. - - @throws IOError The digest property of the request object is not null. You should - only set the digest property of a URLRequest object for use calling the - `URLLoader.load()` method when loading a SWZ file (an Adobe platform component). - @throws SecurityError In Flash Player (and in non-application sandbox content in - Adobe AIR), this error is thrown in the following situations: - * Local untrusted SWF files may not communicate with the Internet. You can avoid - this situation by reclassifying this SWF file as local-with-networking or trusted. - * A navigate operation attempted to evaluate a scripting pseudo-URL, but the - containing document (usually an HTML document in a browser) is from a sandbox to - which you do not have access. You can avoid this situation by specifying - `allowScriptAccess="always"` in the containing document. - * You cannot navigate the special windows "_self", "_top", or "_parent" if your - SWF file is contained by an HTML page that has set the allowScriptAccess to - "none", or to "sameDomain" when the domains of the HTML file and the SWF file do - not match. - * You cannot navigate a window with a nondefault name from within a SWF file that - is in the local-with-filesystem sandbox. - * You cannot connect to commonly reserved ports. For a complete list of blocked - ports, see "Restricting Networking APIs" in the ActionScript 3.0 Developer's Guide. - @throws Error If the method is not called in response to a user action, such as a - mouse event or keypress event. This requirement only applies to content in Flash - Player and to non-application sandbox content in Adobe AIR.]]> - - - - - - - - - - - - Sends a URL request to a server, but ignores any response. - - To examine the server response, use the `URLLoader.load()` method instead. - - You cannot connect to commonly reserved ports. For a complete list of blocked - ports, see "Restricting Networking APIs" in the ActionScript 3.0 Developer's Guide. - - You can prevent a SWF file from using this method by setting the `allowNetworking` - parameter of the the object and embed tags in the HTML page that contains the SWF - content. - - In Flash Player 10 and later, if you use a multipart Content-Type (for example - "multipart/form-data") that contains an upload (indicated by a "filename" parameter - in a "content-disposition" header within the POST body), the POST operation is - subject to the security rules applied to uploads: - - * The POST operation must be performed in response to a user-initiated action, - such as a mouse click or key press. - * If the POST operation is cross-domain (the POST target is not on the same server - as the SWF file that is sending the POST request), the target server must provide - a URL policy file that permits cross-domain access. - - Also, for any multipart Content-Type, the syntax must be valid (according to the - RFC2046 standards). If the syntax appears to be invalid, the POST operation is - subject to the security rules applied to uploads. - - For more information related to security, see the Flash Player Developer Center - Topic: Security. - - @param request A URLRequest object specifying the URL to send data to. - @throws SecurityError Local untrusted SWF files cannot communicate with the - Internet. You can avoid this situation by reclassifying this SWF file as - local-with-networking or trusted. - @throws SecurityError You cannot connect to commonly reserved ports. For a - complete list of blocked ports, see "Restricting Networking APIs" in the - ActionScript 3.0 Developer's Guide. - - - - - - - - - { args : null } - Runs a function at a specified interval (in milliseconds). - - Instead of using the `setInterval()` method, consider creating a Timer object, with - the specified interval, using 0 as the `repeatCount` parameter (which sets the timer - to repeat indefinitely). - - If you intend to use the `clearInterval()` method to cancel the `setInterval()` - call, be sure to assign the `setInterval()` call to a variable (which the - `clearInterval()` function will later reference). If you do not call the - `clearInterval()` function to cancel the `setInterval()` call, the object - containing the set timeout closure function will not be garbage collected. - - @param closure The name of the function to execute. Do not include quotation - marks or parentheses, and do not specify parameters of the function to call. For - example, use `functionName`, not `functionName()` or `functionName(param)`. - @param delay The interval, in milliseconds. - @param args An optional list of arguments that are passed to the closure - function. - @returns Unique numeric identifier for the timed process. Use this identifier - to cancel the process, by calling the `clearInterval()` method. - - - - - - - - - { args : null } - Runs a specified function after a specified delay (in milliseconds). - - Instead of using this method, consider creating a Timer object, with the specified - interval, using 1 as the `repeatCount` parameter (which sets the timer to run only - once). - - If you intend to use the `clearTimeout()` method to cancel the `setTimeout()` call, - be sure to assign the `setTimeout()` call to a variable (which the - `clearTimeout()` function will later reference). If you do not call the - `clearTimeout()` function to cancel the `setTimeout()` call, the object containing - the set timeout closure function will not be garbage collected. - - @param closure The name of the function to execute. Do not include quotation marks - or parentheses, and do not specify parameters of the function to call. For - example, use `functionName`, not `functionName()` or `functionName(param)`. - @param delay The delay, in milliseconds, until the function is executed. - @param args An optional list of arguments that are passed to the closure - function. - @returns Unique numeric identifier for the timed process. Use this identifier to - cancel the process, by calling the `clearTimeout()` method. - - - - - - - - - - - Determines whether the specified string is a valid name for an XML - element or attribute. - - - - - - - Looks up a class that previously had an alias registered through a call - to the `registerClassAlias()` method. - - This method does not interact with `getDefinitionByName()` method. - - - - - - - - Preserves the class (type) of an object when the object is encoded in - Action Message Format (AMF). When you encode an object into AMF, this - function saves the alias for its class, so that you can recover the - class when decoding the object. If the encoding context did not register - an alias for an object's class, the object is encoded as an anonymous - object. Similarly, if the decoding context does not have the same alias - registered, an anonymous object is created for the decoded data. - - LocalConnection, ByteArray, SharedObject, NetConnection and NetStream - are all examples of classes that encode objects in AMF. - - The encoding and decoding contexts do not need to use the same class for - an alias; they can intentionally change classes, provided that the - destination class contains all of the members that the source class - serializes. - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.Stage - - - - - - - - - - - - - - - - - - - - `), as shown in this example: - - In the first line of the example, the variable `v` is declared as a - Vector. instance. In other words, it represents a Vector (an array) that - can only hold String instances and from which only String instances can be - retrieved. The second line constructs an instance of the same Vector type (that is, - a Vector whose elements are all String objects) and assigns it to `v`. - - ```as3 - var v:Vector.; - v = new Vector.(); - ``` - - A variable declared with the Vector. data type can only store a Vector instance - that is constructed with the same base type T. For example, a Vector that's - constructed by calling `new Vector.()` can't be assigned to a variable that's - declared with the Vector. data type. The base types must match exactly. For - example, the following code doesn't compile because the object's base type isn't - the same as the variable's declared base type (even though Sprite is a subclass of - DisplayObject): - - ```haxe - // This code doesn't compile even though Sprite is a DisplayObject subclass - var v:Vector. = new Vector.(); - ``` - - To convert a Vector with base type T to a Vector of a superclass of T, use the - `Vector()` global function. - - In addition to the data type restriction, the Vector class has other restrictions - that distinguish it from the Array class: - - * A Vector is a dense array. Unlike an Array, which may have values in indices 0 and 7 - even if there are no values in positions 1 through 6, a Vector must have a value - (or null) in each index. - * A Vector can optionally be fixed-length, meaning the number of elements it contains - can't change. - * Access to a Vector's elements is bounds-checked. You can never read a value from an - index greater than the final element (length - 1). You can never set a value with an - index more than one beyond the current final index (in other words, you can only set - a value at an existing index or at index [length]). - - As a result of its restrictions, a Vector has three primary benefits over an Array - instance whose elements are all instances of a single class: - - * Performance: array element access and iteration are much faster when using a - Vector instance than they are when using an Array. - * Type safety: in strict mode the compiler can identify data type errors. Examples - of data type errors include assigning a value of the incorrect data type to a - Vector or expecting the wrong data type when reading a value from a Vector. Note, - however, that when using the push() method or unshift() method to add values to a - Vector, the arguments' data types are not checked at compile time. Instead, they are - checked at run time. - * Reliability: runtime range checking (or fixed-length checking) increases - reliability significantly over Arrays.]]> - T - - - - Indicates whether the `length` property of the Vector can be changed. If the - value is `true`, the `length` property can't be changed. This means the - following operations are not allowed when `fixed` is `true`: - - * setting the `length` property directly - * assigning a value to index position length - * calling a method that changes the `length` property, including: - * `pop()` - * `push()` - * `shift()` - * `unshift()` - * `splice()` (if the `splice()` call changes the length of the Vector). - - - - The range of valid indices available in the Vector. A Vector instance has index - positions up to but not including the length value. - - Every Vector element always has a value that is either an instance of the base - type or `null`. When the `length` property is set to a value that's larger than - its previous value, additional elements are created and populated with the - default value appropriate to the base type (`null` for reference types). - - When the `length` property is set to a value that's smaller than its previous - value, all the elements at index positions greater than or equal to the new - length value are removed from the Vector. - - - - - - - - { vec : null } - Concatenates the Vectors specified in the parameters list with the elements in - this Vector and creates a new Vector. The Vectors in the parameters list must - have the same base type, or subtype, as this Vector. If you do not pass any - parameters, the returned Vector is a duplicate (shallow clone) of the original - Vector. - - @param vec A Vector of the base type, or subtype, of this Vector. - @return A Vector with the same base type as this Vector that contains the - elements from this Vector followed by elements from the Vector in the - parameter list. - @throws TypeError If any argument is not a Vector of the base type, or cannot - be converted to a Vector of the base type. - - - - - - - Creates a new shallow clone of the current Vector object - @return A new Vector object - - - - - - - - - ):Bool { - // your code here - } - ``` - The callback function should return a Boolean value. - - @param thisObject The object that the identifer this in the callback function - refers to when the function is called. ***Ignored on targets other than neko and - js. - @return A Boolean value of true if the specified function returns true when called - on all items in the Vector; otherwise, false.]]> - - - - - - - - - - - Executes a test function on each item in the Vector and returns a new Vector - containing all items that return true for the specified function. If an item - returns false, it is not included in the result Vector. The base type of the return - Vector matches the base type of the Vector on which the method is called. - @param callback The function to run on each item in the Vector. - - - - - - - - - - hide - - - Array access - - - - - - - - - { fromIndex : 0 } - Searches for an item in the Vector and returns the index position of the item. - The item is compared to the Vector elements using strict equality (`===`). - @param searchElement The item to find in the Vector. - @param fromIndex The location in the Vector from which to start searching for - the item. If this parameter is negative, it is treated as `length + fromIndex`, - meaning the search starts -fromIndex items from the end and searches from that - position forward to the end of the Vector. - @return A zero-based index position of the item in the Vector. If the - `searchElement` argument is not found, the return value is -1. - - - - - - - - - Insert a single element into the Vector. This method modifies the Vector without - making a copy. - - @param index An integer that specifies the position in the Vector where the - element is to be inserted. You can use a negative integer to specify a position - relative to the end of the Vector (for example, -1 for the last element of the - Vector). - @param element The value to insert - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - - hide - - Iterator - - - - - - - - { sep : "," } - Converts the elements in the Vector to strings, inserts the specified separator - between the elements, concatenates them, and returns the resulting string. A - nested Vector is always separated by a comma (`,`), not by the separator passed - to the `join()` method. - - @param sep A character or string that separates Vector elements in the returned - string. If you omit this parameter, a comma is used as the default separator. - @return A string consisting of the elements of the Vector converted to strings - and separated by the specified string. - - - - - - - - - { fromIndex : null } - Searches for an item in the Vector, working backward from the specified index - position, and returns the index position of the matching item. The item is - compared to the Vector elements using strict equality (`===`). - - @param searchElement The item to find in the Vector. - @param fromIndex The location in the Vector from which to start searching for - the item. The default is the maximum allowable index value, meaning that the - search starts at the last item in the Vector. - - If this parameter is negative, it is treated as `length + fromIndex`, meaning the - search starts -fromIndex items from the end and searches from that position - backward to index 0. - @return A zero-based index position of the item in the Vector. If the - `searchElement` argument is not found, the return value is -1. - - - - - - - Removes the last element from the Vector and returns that element. The `length` - property of the Vector is decreased by one when this function is called. - @return The value of the last element in the specified Vector. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - Adds one or more elements to the end of the Vector and returns the new length of - the Vector. - - Because this function can accept multiple arguments, the data type of the - arguments is not checked at compile time even in strict mode. However, if an - argument is passed that is not an instance of the base type, an exception - occurs at run time. - - @param value A value to append to the Vector. - @return The length of the Vector after the new elements are added. - @throws TypeError If any argument is not an instance of the base type T of - the Vector. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - - Remove a single element from the Vector. This method modifies the Vector without - making a copy. - - @param index An integer that specifies the index of the element in the Vector - that is to be deleted. You can use a negative integer to specify a position - relative to the end of the Vector (for example, -1 for the last element of the - Vector). - @return The element that was removed from the original Vector. - @throws RangeError If the index argument specifies an index to be deleted that's - outside the Vector's bounds. - @throws RangeError If this method is called while `fixed` is `true`. - - - - - - - Reverses the order of the elements in the Vector. This method alters the Vector - on which it is called. - - @return The Vector with the elements in reverse order. - - - - - - - - - - - hide - - - Array access - - - - - - - Removes the first element from the Vector and returns that element. The - remaining Vector elements are moved from their original position, i, to i - 1. - - @return The first element in the Vector. - @throws RangeError If `fixed` is `true`. - - - - - - - - - { endIndex : null, startIndex : 0 } - Returns a new Vector that consists of a range of elements from the original - Vector, without modifying the original Vector. The returned Vector includes the - `startIndex` element and all elements up to, but not including, the - `endIndex` element. - - If you don't pass any parameters, the new Vector is a duplicate (shallow clone) of - the original Vector. If you pass a value of 0 for both parameters, a new, empty - Vector is created of the same type as the original Vector. - - @param startIndex A number specifying the index of the starting point for the - slice. If startIndex is a negative number, the starting point begins at the end - of the Vector, where -1 is the last element. - @param endIndex A number specifying the index of the ending point for the - slice. If you omit this parameter, the slice includes all elements from the - starting point to the end of the Vector. If endIndex is a negative number, the - ending point is specified from the end of the Vector, where -1 is the last element. - @return A Vector that consists of a range of elements from the original Vector. - - - - - - - - - ):Bool - ``` - - The callback function should return a Boolean value. - @param thisObject The object that the identifer this in the callback function refers - to when the function is called. ***Ignored on targets other than neko and js. - @return A Boolean value of true if any items in the Vector return true for the specified - function; otherwise, false.]]> - - - - - - - - - - - - Sorts the elements in the Vector object, and also returns a sorted Vector object. - This method sorts according to the parameter sortBehavior, which is either a - function that compares two values, or a set of sorting options. - - The method takes one parameter. The parameter is one of the following: - - * a function that takes two arguments of the base type (T) of the Vector and - returns a Number: - - ```as3 - function compare(x:T, y:T):Number {} - ``` - - The logic of the function is that, given two elements `x` and `y`, the function - returns one of the following three values: - - * a negative number, if `x` should appear before `y` in the sorted sequence - * 0, if `x` equals `y` - * a positive number, if `x` should appear after `y` in the sorted sequence - - * a number which is a bitwise OR of the following values: - * 1 or `Array.CASEINSENSITIVE` - * 2 or `Array.DESCENDING` - * 4 or `Array.UNIQUESORT` - * 8 or `Array.RETURNINDEXEDARRAY` - * 16 or `Array.NUMERIC` - - If the value is 0, the sort works in the following way: - - * Sorting is case-sensitive (Z precedes a). - * Sorting is ascending (a precedes b). - * The array is modified to reflect the sort order; multiple elements that - have identical sort fields are placed consecutively in the sorted array in - no particular order. - * All elements, regardless of data type, are sorted as if they were strings, - so 100 precedes 99, because "1" is a lower string value than "9". - - @param sortBehavior A Function or a Number value that determines the - behavior of the sort. A Function parameter specifies a comparison method. A - Number value specifies the sorting options. - @return A Vector object, with elements in the new order. - - - - - - - - - - Adds elements to and removes elements from the Vector. This method modifies the - Vector without making a copy. - - **Note:** To override this method in a subclass of Vector, use ...args for the - parameters, as this example shows: - - ```as3 - public override function splice(...args) { - // your statements here - } - ``` - - @param startIndex:int — An integer that specifies the index of the element in the Vector where the insertion or deletion begins. You can use a negative integer to specify a position relative to the end of the Vector (for example, -1 for the last element of the Vector). - @param deleteCount:uint (default = 4294967295) — An integer that specifies the number of elements to be deleted. This number includes the element specified in the startIndex parameter. If the value is 0, no elements are deleted. - @param ... items — An optional list of one or more comma-separated values to insert into the Vector at the position specified in the startIndex parameter. - @return a Vector containing the elements that were removed from the original Vector. - @throws RangeError If the startIndex and deleteCount arguments specify an index to be deleted that's outside the Vector's bounds. - @throws RangeError If this method is called while fixed is true and the splice() operation changes the length of the Vector. - - - - - - - Returns a string that represents the elements in the Vector. Every element in the - Vector, starting with index 0 and ending with the highest index, is converted to - a concatenated string and separated by commas. To specify a custom separator, - use the `Vector.join()` method. - - @return A string of Vector elements. - - - - - - - - Adds one or more elements to the beginning of the Vector and returns the new - length of the Vector. The other elements in the Vector are moved from their - original position, i, to i + the number of new elements. - - Because this function can accept multiple arguments, the data type of the - arguments is not checked at compile time even in strict mode. However, if an - argument is passed that is not an instance of the base type, an exception occurs - at run time. - - @param value An instance of the base type of the Vector to be inserted at the - beginning of the Vector. - @return An integer representing the new length of the Vector. - @throws TypeError If any argument is not an instance of the base type T of the - Vector. - @throws RangeError If this method is called while fixed is true. - - - - - - - Attempts to cast a Vector to another Vector object of a similar type - @param vec A Vector object to cast - @return The casted Vector object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { vec : null } - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - - - <__tempIndex> - - - - - "checkstyle:FieldDocComment" - - hide - - - - - - - <__array> - - - - <__tempIndex> - - - - - - - - - { a : null } - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - { array : null, fixed : false, length : 0 } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - <__array> - - - - <__tempIndex> - - - - - - - - - { a : null } - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { forceCopy : false, array : null, fixed : false, length : 0 } - "checkstyle:Dynamic" - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - <__array> - - - - <__tempIndex> - - - - - - - - - { a : null } - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - { array : null, fixed : false, length : 0 } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - <__array> - - - - <__tempIndex> - - - - - - - - - { a : null } - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - { array : null, fixed : false, length : 0 } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - <__array> - - - - <__tempIndex> - - - - - - - - - - { a : null } - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - { from : 0 } - - - - - - - - - - - - - { sep : "," } - - - - - - - - { from : null } - - - - - - - - - - - - - - - - - - - - - - - - { endIndex : null, startIndex : 0 } - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { forceCopy : false, array : null, fixed : false, length : 0 } - "checkstyle:Dynamic" - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - The Application class is a Lime Application instance that uses - OpenFL Window by default when a new window is created. - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.LoaderInfo - openfl.display.Window - "checkstyle:FieldDocComment" - - - - - - - The BitmapData object being referenced. - - - - Controls whether or not the Bitmap object is snapped to the nearest pixel. - This value is ignored in the native and HTML5 targets. - The PixelSnapping class includes possible values: - - * `PixelSnapping.NEVER` - No pixel snapping occurs. - * `PixelSnapping.ALWAYS` - The image is always snapped to - the nearest pixel, independent of transformation. - * `PixelSnapping.AUTO` - The image is snapped to the - nearest pixel if it is drawn with no rotation or skew and it is drawn at a - scale factor of 99.9% to 100.1%. If these conditions are satisfied, the - bitmap image is drawn at 100% scale, snapped to the nearest pixel. - When targeting Flash Player, this value allows the image to be drawn as fast - as possible using the internal vector renderer. - - - - Controls whether or not the bitmap is smoothed when scaled. If - `true`, the bitmap is smoothed when scaled. If - `false`, the bitmap is not smoothed when scaled. - - <__bitmapData> - - - - <__imageVersion> - - - - <__enterFrame set="method" line="125" override="1"> - - - - - - - <__getBounds set="method" line="133" override="1"> - - - - - - - - <__hitTest set="method" line="151" override="1"> - - - - - - - - - - - - <__hitTestMask set="method" line="179" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { smoothing : false, pixelSnapping : null, bitmapData : null } - Initializes a Bitmap object to refer to the specified BitmapData object. - - @param bitmapData The BitmapData object being referenced. - @param pixelSnapping Whether or not the Bitmap object is snapped to the nearest pixel. - @param smoothing Whether or not the bitmap is smoothed when scaled. For example, the following examples - show the same bitmap scaled by a factor of 3, with `smoothing` set to `false` (left) and `true` (right): - - ![A bitmap without smoothing.](/images/bitmap_smoothing_off.jpg) ![A bitmap with smoothing.](bitmap_smoothing_on.jpg) - - The Bitmap class represents display objects that represent bitmap images. - These can be images that you load with the `openfl.Assets` or - `openfl.display.Loader` classes, or they can be images that you - create with the `Bitmap()` constructor. - - The `Bitmap()` constructor allows you to create a Bitmap - object that contains a reference to a BitmapData object. After you create a - Bitmap object, use the `addChild()` or `addChildAt()` - method of the parent DisplayObjectContainer instance to place the bitmap on - the display list. - - A Bitmap object can share its BitmapData reference among several Bitmap - objects, independent of translation or rotation properties. Because you can - create multiple Bitmap objects that reference the same BitmapData object, - multiple display objects can use the same complex BitmapData object without - incurring the memory overhead of a BitmapData object for each display - object instance. - - A BitmapData object can be drawn to the screen by a Bitmap object in one - of two ways: by using the default hardware renderer with a single hardware surface, - or by using the slower software renderer when 3D acceleration is not available. - - If you would prefer to perform a batch rendering command, rather than using a - single surface for each Bitmap object, you can also draw to the screen using the - `openfl.display.Tilemap` class. - - **Note:** The Bitmap class is not a subclass of the InteractiveObject - class, so it cannot dispatch mouse events. However, you can use the - `addEventListener()` method of the display object container that - contains the Bitmap object. - - - "tags=\"haxe,release\"" - - openfl.display.BitmapData - openfl.display.Graphics - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - - - - - - - - - - - - - The BitmapDataChannel class is an enumeration of constant values that - indicate which channel to use: red, blue, green, or alpha transparency. - - When you call some methods, you can use the bitwise OR operator - (`|`) to combine BitmapDataChannel constants to indicate - multiple color channels. - - The BitmapDataChannel constants are provided for use as values in the - following: - - * The `sourceChannel` and `destChannel` - parameters of the `openfl.display.BitmapData.copyChannel()` - method - * The `channelOptions` parameter of the - `openfl.display.BitmapData.noise()` method - * The `openfl.filters.DisplacementMapFilter.componentX` and - `openfl.filters.DisplacementMapFilter.componentY` properties - - - - - - cast 8 - - - - The alpha channel. - - - - - cast 4 - - - - The blue channel. - - - - - cast 2 - - - - The green channel. - - - - - cast 1 - - - - The red channel. - - - - - - - - - cast 8 - - - - The alpha channel. - - - - - cast 4 - - - - The blue channel. - - - - - cast 2 - - - - The green channel. - - - - - cast 1 - - - - The red channel. - - - - - - - - A class that provides constant values for visual blend mode effects. These - constants are used in the following: - - * The `blendMode` property of the - openfl.display.DisplayObject class. - * The `blendMode` parameter of the `draw()` - method of the openfl.display.BitmapData class - - hscript.UsingHandler.build() - - - - - - - cast 0 - - - - 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).]]> - - - - - cast 1 - - - - Applies the alpha value of each pixel of the display object to the - background. This requires the `blendMode` property of the - parent display object be set to - `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - - cast 2 - - - - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - - cast 3 - - - - Compares the constituent colors of the display object with the colors of - its background, and subtracts the darker of the values of the two - constituent colors from the lighter value. This setting is commonly used - for more vibrant colors. - - For example, if the display object has a pixel with an RGB value of - 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the - resulting RGB value for the displayed pixel is 0x222C33(because 0xFF - - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33). - - - - - cast 4 - - - - Erases the background based on the alpha value of the display object. This - process requires that the `blendMode` property of the parent - display object be set to `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - - cast 5 - - - - Adjusts the color of each pixel based on the darkness of the display - object. If the display object is lighter than 50% gray, the display object - and background colors are screened, which results in a lighter color. If - the display object is darker than 50% gray, the colors are multiplied, - which results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - - cast 6 - - - - Inverts the background. - - - - - cast 7 - - - - Forces the creation of a transparency group for the display object. This - means that the display object is precomposed in a temporary buffer before - it is processed further. The precomposition is done automatically if the - display object is precached by means of bitmap caching or if the display - object is a display object container that has at least one child object - with a `blendMode` setting other than `"normal"`. - - Not supported under GPU rendering. - - - - - cast 8 - - - - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - - cast 9 - - - - Multiplies the values of the display object constituent colors by the - constituent colors of the background color, and normalizes by dividing by - 0xFF, resulting in darker colors. This setting is commonly used for - shadows and depth effects. - - For example, if a constituent color(such as red) of one pixel in the - display object and the corresponding color of the pixel in the background - both have the value 0x88, the multiplied result is 0x4840. Dividing by - 0xFF yields a value of 0x48 for that constituent color, which is a darker - shade than the color of the display object or the color of the - background. - - - - - cast 10 - - - - The display object appears in front of the background. Pixel values of the - display object override the pixel values of the background. Where the - display object is transparent, the background is visible. - - - - - cast 11 - - - - Adjusts the color of each pixel based on the darkness of the background. - If the background is lighter than 50% gray, the display object and - background colors are screened, which results in a lighter color. If the - background is darker than 50% gray, the colors are multiplied, which - results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - - cast 12 - - - - Multiplies the complement(inverse) of the display object color by the - complement of the background color, resulting in a bleaching effect. This - setting is commonly used for highlights or to remove black areas of the - display object. - - - - - cast 13 - - - - Uses a shader to define the blend between objects. - - Setting the blendShader property to a Shader instance automatically sets the - display object's `blendMode` property to `BlendMode.SHADER`. If the `blendMode` - property is set to `BlendMode.SHADER` without first setting the `blendShader` - property, the `blendMode` property is set to `BlendMode.NORMAL` instead. If the - `blendShader` property is set (which sets the `blendMode` property to - `BlendMode.SHADER`), then later the value of the `blendMode` property is changed, - the blend mode can be reset to use the blend shader simply by setting the - `blendMode` property to `BlendMode.SHADER`. The `blendShader` property does not - need to be set again except to change the shader that's used to define the blend - mode. - - Not supported under GPU rendering. - - - - - cast 14 - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - - - - - - - - - cast 0 - - - - 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).]]> - - - - - cast 1 - - - - Applies the alpha value of each pixel of the display object to the - background. This requires the `blendMode` property of the - parent display object be set to - `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - - cast 2 - - - - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - - cast 3 - - - - Compares the constituent colors of the display object with the colors of - its background, and subtracts the darker of the values of the two - constituent colors from the lighter value. This setting is commonly used - for more vibrant colors. - - For example, if the display object has a pixel with an RGB value of - 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the - resulting RGB value for the displayed pixel is 0x222C33(because 0xFF - - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33). - - - - - cast 4 - - - - Erases the background based on the alpha value of the display object. This - process requires that the `blendMode` property of the parent - display object be set to `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - - cast 5 - - - - Adjusts the color of each pixel based on the darkness of the display - object. If the display object is lighter than 50% gray, the display object - and background colors are screened, which results in a lighter color. If - the display object is darker than 50% gray, the colors are multiplied, - which results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - - cast 6 - - - - Inverts the background. - - - - - cast 7 - - - - Forces the creation of a transparency group for the display object. This - means that the display object is precomposed in a temporary buffer before - it is processed further. The precomposition is done automatically if the - display object is precached by means of bitmap caching or if the display - object is a display object container that has at least one child object - with a `blendMode` setting other than `"normal"`. - - Not supported under GPU rendering. - - - - - cast 8 - - - - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - - cast 9 - - - - Multiplies the values of the display object constituent colors by the - constituent colors of the background color, and normalizes by dividing by - 0xFF, resulting in darker colors. This setting is commonly used for - shadows and depth effects. - - For example, if a constituent color(such as red) of one pixel in the - display object and the corresponding color of the pixel in the background - both have the value 0x88, the multiplied result is 0x4840. Dividing by - 0xFF yields a value of 0x48 for that constituent color, which is a darker - shade than the color of the display object or the color of the - background. - - - - - cast 10 - - - - The display object appears in front of the background. Pixel values of the - display object override the pixel values of the background. Where the - display object is transparent, the background is visible. - - - - - cast 11 - - - - Adjusts the color of each pixel based on the darkness of the background. - If the background is lighter than 50% gray, the display object and - background colors are screened, which results in a lighter color. If the - background is darker than 50% gray, the colors are multiplied, which - results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - - cast 12 - - - - Multiplies the complement(inverse) of the display object color by the - complement of the background color, resulting in a bleaching effect. This - setting is commonly used for highlights or to remove black areas of the - display object. - - - - - cast 13 - - - - Uses a shader to define the blend between objects. - - Setting the blendShader property to a Shader instance automatically sets the - display object's `blendMode` property to `BlendMode.SHADER`. If the `blendMode` - property is set to `BlendMode.SHADER` without first setting the `blendShader` - property, the `blendMode` property is set to `BlendMode.NORMAL` instead. If the - `blendShader` property is set (which sets the `blendMode` property to - `BlendMode.SHADER`), then later the value of the `blendMode` property is changed, - the blend mode can be reset to use the blend shader simply by setting the - `blendMode` property to `BlendMode.SHADER`. The `blendShader` property does not - need to be set again except to change the shader that's used to define the blend - mode. - - Not supported under GPU rendering. - - - - - cast 14 - - - - - - - - - - - - - - - - - - - - - - hscript.UsingHandler.build() - - - - - - - cast (0, openfl.display.BlendMode) - 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).]]> - - - - cast (1, openfl.display.BlendMode) - Applies the alpha value of each pixel of the display object to the - background. This requires the `blendMode` property of the - parent display object be set to - `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - cast (2, openfl.display.BlendMode) - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - cast (3, openfl.display.BlendMode) - Compares the constituent colors of the display object with the colors of - its background, and subtracts the darker of the values of the two - constituent colors from the lighter value. This setting is commonly used - for more vibrant colors. - - For example, if the display object has a pixel with an RGB value of - 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the - resulting RGB value for the displayed pixel is 0x222C33(because 0xFF - - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33). - - - - cast (4, openfl.display.BlendMode) - Erases the background based on the alpha value of the display object. This - process requires that the `blendMode` property of the parent - display object be set to `openfl.display.BlendMode.LAYER`. - - Not supported under GPU rendering. - - - - cast (5, openfl.display.BlendMode) - Adjusts the color of each pixel based on the darkness of the display - object. If the display object is lighter than 50% gray, the display object - and background colors are screened, which results in a lighter color. If - the display object is darker than 50% gray, the colors are multiplied, - which results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - cast (6, openfl.display.BlendMode) - Inverts the background. - - - - cast (7, openfl.display.BlendMode) - Forces the creation of a transparency group for the display object. This - means that the display object is precomposed in a temporary buffer before - it is processed further. The precomposition is done automatically if the - display object is precached by means of bitmap caching or if the display - object is a display object container that has at least one child object - with a `blendMode` setting other than `"normal"`. - - Not supported under GPU rendering. - - - - cast (8, openfl.display.BlendMode) - - 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33). - - Not supported under GPU rendering.]]> - - - - cast (9, openfl.display.BlendMode) - Multiplies the values of the display object constituent colors by the - constituent colors of the background color, and normalizes by dividing by - 0xFF, resulting in darker colors. This setting is commonly used for - shadows and depth effects. - - For example, if a constituent color(such as red) of one pixel in the - display object and the corresponding color of the pixel in the background - both have the value 0x88, the multiplied result is 0x4840. Dividing by - 0xFF yields a value of 0x48 for that constituent color, which is a darker - shade than the color of the display object or the color of the - background. - - - - cast (10, openfl.display.BlendMode) - The display object appears in front of the background. Pixel values of the - display object override the pixel values of the background. Where the - display object is transparent, the background is visible. - - - - cast (11, openfl.display.BlendMode) - Adjusts the color of each pixel based on the darkness of the background. - If the background is lighter than 50% gray, the display object and - background colors are screened, which results in a lighter color. If the - background is darker than 50% gray, the colors are multiplied, which - results in a darker color. This setting is commonly used for shading - effects. - - Not supported under GPU rendering. - - - - cast (12, openfl.display.BlendMode) - Multiplies the complement(inverse) of the display object color by the - complement of the background color, resulting in a bleaching effect. This - setting is commonly used for highlights or to remove black areas of the - display object. - - - - cast (13, openfl.display.BlendMode) - Uses a shader to define the blend between objects. - - Setting the blendShader property to a Shader instance automatically sets the - display object's `blendMode` property to `BlendMode.SHADER`. If the `blendMode` - property is set to `BlendMode.SHADER` without first setting the `blendShader` - property, the `blendMode` property is set to `BlendMode.NORMAL` instead. If the - `blendShader` property is set (which sets the `blendMode` property to - `BlendMode.SHADER`), then later the value of the `blendMode` property is changed, - the blend mode can be reset to use the blend shader simply by setting the - `blendMode` property to `BlendMode.SHADER`. The `blendShader` property does not - need to be set again except to change the shader that's used to define the blend - mode. - - Not supported under GPU rendering. - - - - cast (14, openfl.display.BlendMode) - - - - - - - - - - hscript.UsingHandler.build() - - - - <__allowSmoothing> - - - - <__blendMode> - - - - <__cleared> - - - - <__context> - - - "checkstyle:Dynamic" - - - - <__overrideBlendMode> - - - - <__pixelRatio> - - - - <__roundPixels> - - - - <__stage> - - - - <__tempColorTransform> - - - - <__transparent> - - - - <__type> - - - "checkstyle:Dynamic" - - - - <__worldAlpha> - - - - <__worldColorTransform> - - - - <__worldTransform> - - - - <__clear set="method" line="70"> - - - - <__getAlpha set="method" line="73"> - - - - - - - <__getColorTransform set="method" line="78"> - - - - - - - <__popMask set="method" line="91"> - - - - <__popMaskObject set="method" line="93"> - - - - - - - { handleScrollRect : true } - - - - <__popMaskRect set="method" line="95"> - - - - <__pushMask set="method" line="97"> - - - - - - - <__pushMaskObject set="method" line="99"> - - - - - - - { handleScrollRect : true } - - - - <__pushMaskRect set="method" line="101"> - - - - - - - - <__render set="method" line="103"> - - - - - - - <__renderEvent set="method" line="106"> - - - - - - - <__resize set="method" line="163"> - - - - - - - - <__setBlendMode set="method" line="165"> - - - - - - - <__shouldCacheHardware set="method" line="168"> - - - - - - - - <__shouldCacheHardware_DisplayObject set="method" line="201"> - - - - - - - - <__updateCacheBitmap set="method" line="213"> - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display._internal.Context3DGraphics - lime.graphics.ImageBuffer - openfl.display.Bitmap - openfl.display.BitmapData - openfl.display.DisplayObject - openfl.display.Graphics - openfl.display.Tilemap - openfl.display3D.Context3D - openfl.events.RenderEvent - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - openfl.geom.Rectangle - openfl.geom.Transform - openfl.text.TextField - openfl.display._internal - openfl.display - openfl.text - - - - - - - "checkstyle:Dynamic" - The current Cairo render context - - <__matrix> - - - - <__matrix3> - - - "checkstyle:Dynamic" - - - - - - - - - - - { cairo : null } - "checkstyle:Dynamic" - - Set the matrix value for the current render context, or (optionally) another Cairo - object - - <__clear set="method" line="101" override="1"> - - - - <__popMask set="method" line="119" override="1"> - - - - <__popMaskObject set="method" line="124" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__popMaskRect set="method" line="137" override="1"> - - - - <__pushMask set="method" line="142" override="1"> - - - - - - - <__pushMaskObject set="method" line="153" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__pushMaskRect set="method" line="166" override="1"> - - - - - - - - <__render set="method" line="177" override="1"> - - - - - - - <__renderDrawable set="method" line="184"> - - - - - - - <__renderDrawableMask set="method" line="210"> - - - - - - - <__setBlendMode set="method" line="236" override="1"> - - - - - - - <__setBlendModeCairo set="method" line="246"> - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - "checkstyle:Dynamic" - - - - **BETA** - - The CairoRenderer API exposes support for native Cairo render instructions within the - `RenderEvent.RENDER_CAIRO` event - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.Graphics - openfl.display.IBitmapDrawable - openfl.display.Stage - openfl.display.Stage3D - openfl.display._internal - openfl.display - - - - - - - "checkstyle:Dynamic" - The current HTML5 canvas render context - - <__isDOM> - - - - <__tempMatrix> - - - - - - - - - - "checkstyle:Dynamic" - Set whether smoothing should be enabled on a canvas context - - - - - - - - - { context : null } - "checkstyle:Dynamic" - - Set the matrix value for the current render context, or (optionally) another canvas - context - - <__clear set="method" line="98" override="1"> - - - - <__popMask set="method" line="123" override="1"> - - - - <__popMaskObject set="method" line="128" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__popMaskRect set="method" line="141" override="1"> - - - - <__pushMask set="method" line="146" override="1"> - - - - - - - <__pushMaskObject set="method" line="159" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__pushMaskRect set="method" line="172" override="1"> - - - - - - - - <__render set="method" line="183" override="1"> - - - - - - - <__renderDrawable set="method" line="188"> - - - - - - - <__renderDrawableMask set="method" line="214"> - - - - - - - <__setBlendMode set="method" line="240" override="1"> - - - - - - - <__setBlendModeContext set="method" line="250"> - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - "checkstyle:Dynamic" - - - - **BETA** - - The CanvasRenderer API exposes support for HTML5 canvas render instructions within the - `RenderEvent.RENDER_CANVAS` event - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.IBitmapDrawable - openfl.display.Stage - openfl.display.Stage3D - openfl.display._internal - openfl.display - openfl.text - - - - - - - The CapsStyle class is an enumeration of constant values that specify the - caps style to use in drawing lines. The constants are provided for use as - values in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. You can specify the - following three types of caps: - - ![The three types of caps: NONE, ROUND, and SQUARE.](/images/linecap.jpg) - - - - - - cast 0 - - - - Used to specify no caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 1 - - - - Used to specify round caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 2 - - - - Used to specify square caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Used to specify no caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 1 - - - - Used to specify round caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 2 - - - - Used to specify square caps in the `caps` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - The current HTML5 DOM element - - <__canvasRenderer> - - - - <__clipRects> - - - - <__currentClipRect> - - - - <__numClipRects> - - - - <__transformOriginProperty> - - - - <__transformProperty> - - - - <__vendorPrefix> - - - - <__z> - - - - - - - - - - "checkstyle:Dynamic" - Applies CSS styles to the specified DOM element, using a DisplayObject as the - virtual parent. This helps set the z-order, position and other components for - the DOM object - - - - - - - "checkstyle:Dynamic" - Removes previously set CSS styles from a DOM element, used when the element - should no longer be a part of the display hierarchy - - <__applyStyle set="method" line="138"> - - - - - - - - - - <__popMask set="method" line="204" override="1"> - - - - <__popMaskObject set="method" line="209" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__popMaskRect set="method" line="222" override="1"> - - - - <__pushMask set="method" line="239" override="1"> - - - - - - - <__pushMaskObject set="method" line="246" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__pushMaskRect set="method" line="259" override="1"> - - - - - - - - <__render set="method" line="291" override="1"> - - - - - - - <__renderDrawable set="method" line="306"> - - - - - - - <__renderDrawableClear set="method" line="357"> - - - - - - - <__setBlendMode set="method" line="383" override="1"> - - - - - - - <__updateClip set="method" line="459"> - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - **BETA** - - The DOMRenderer API exposes support for HTML5 DOM render instructions within the - `RenderEvent.RENDER_DOM` event - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.IBitmapDrawable - openfl.display.Stage3D - openfl.geom.Matrix - openfl.geom.Rectangle - openfl.display._internal - openfl.display - - - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - - - { code : null } - "attribute float openfl_Alpha;\n\t\tattribute vec4 openfl_ColorMultiplier;\n\t\tattribute vec4 openfl_ColorOffset;\n\t\tattribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\n\t\tvarying float openfl_Alphav;\n\t\tvarying vec4 openfl_ColorMultiplierv;\n\t\tvarying vec4 openfl_ColorOffsetv;\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform bool openfl_HasColorTransform;\n\t\tuniform vec2 openfl_TextureSize;" - "openfl_Alphav = openfl_Alpha;\n\t\topenfl_TextureCoordv = openfl_TextureCoord;\n\n\t\tif (openfl_HasColorTransform) {\n\n\t\t\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\n\t\t\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\n\n\t\t}\n\n\t\tgl_Position = openfl_Matrix * openfl_Position;" - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - "varying float openfl_Alphav;\n\t\tvarying vec4 openfl_ColorMultiplierv;\n\t\tvarying vec4 openfl_ColorOffsetv;\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform bool openfl_HasColorTransform;\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform vec2 openfl_TextureSize;" - 0.0) {\n\n\t\t\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl_FragColor = color * openfl_Alphav;\n\n\t\t}"]]> - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - The current frame rate, expressed using frames-per-second - - - - - - - - - - - - - - <__enterFrame set="method" line="63" override="1"> - - - - - - - - - - - - - - { color : 0x000000, y : 10, x : 10 } - - The FPS class provides an easy-to-use monitor to display - the current frame rate of an OpenFL project - - - "tags=\"haxe,release\"" - - - - - - - - The frame number containing the label. - - - - The name of the label. - - - - - - - The FrameLabel object contains properties that specify a frame number and - the corresponding label name. The Scene class includes a `labels` - property, which is an array of FrameLabel objects for the scene. - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - The GradientType class provides values for the `type` parameter - in the `beginGradientFill()` and - `lineGradientStyle()` methods of the openfl.display.Graphics - class. - - - - - - cast 0 - - - - Value used to specify a linear gradient fill. - - - - - cast 1 - - - - Value used to specify a radial gradient fill. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Value used to specify a linear gradient fill. - - - - - cast 1 - - - - Value used to specify a radial gradient fill. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - null - - - - - - - null - - - - <__bounds> - - - - <__commands> - - - - <__dirty set="accessor" expr="true"> - - - true - - - - <__hardwareDirty> - - - - <__height> - - - - <__managed> - - - - <__positionX> - - - - <__positionY> - - - - <__quadBuffer> - - - - <__renderTransform> - - - - <__shaderBufferPool> - - - - <__softwareDirty> - - - - <__strokePadding> - - - - <__transformDirty> - - - - <__triangleIndexBuffer> - - - - <__triangleIndexBufferCount> - - - - <__triangleIndexBufferData> - - - - <__usedShaderBuffers> - - - - <__vertexBuffer> - - - - <__vertexBufferCount> - - - - <__vertexBufferCountUVT> - - - - <__vertexBufferData> - - - - <__vertexBufferDataUVT> - - - - <__vertexBufferUVT> - - - - <__visible> - - - - <__owner> - - - - <__width> - - - - <__worldTransform> - - - - <__cairo> - - - "checkstyle:Dynamic" - - - - <__bitmap> - - - - <__bitmapScale> - - - - - - - - - - - - { smooth : false, repeat : true, matrix : null } - Fills a drawing area with a bitmap image. The bitmap can be repeated or - tiled to fill the area. The fill remains in effect until you call the - `beginFill()`, `beginBitmapFill()`, - `beginGradientFill()`, or `beginShaderFill()` - method. Calling the `clear()` method clears the fill. - - The application renders the fill whenever three or more points are - drawn, or when the `endFill()` method is called. - - @param bitmap A transparent or opaque bitmap image that contains the bits - to be displayed. - @param matrix A matrix object(of the openfl.geom.Matrix class), which you - can use to define transformations on the bitmap. For - example, you can use the following matrix to rotate a bitmap - by 45 degrees(pi/4 radians): - - ```haxe - matrix = new openfl.geom.Matrix(); - matrix.rotate(Math.PI / 4); - ``` - - @param repeat If `true`, the bitmap image repeats in a tiled - pattern. If `false`, the bitmap image does not - repeat, and the edges of the bitmap are used for any fill - area that extends beyond the bitmap. - - For example, consider the following bitmap(a 20 x - 20-pixel checkerboard pattern): - - ![20 by 20 pixel checkerboard](/images/movieClip_beginBitmapFill_repeat_1.jpg) - - When `repeat` is set to `true`(as - in the following example), the bitmap fill repeats the - bitmap: - - ![60 by 60 pixel checkerboard](/images/movieClip_beginBitmapFill_repeat_2.jpg) - - When `repeat` is set to `false`, - the bitmap fill uses the edge pixels for the fill area - outside the bitmap: - - ![60 by 60 pixel image with no repeating](/images/movieClip_beginBitmapFill_repeat_3.jpg) - @param smooth If `false`, upscaled bitmap images are rendered - by using a nearest-neighbor algorithm and look pixelated. If - `true`, upscaled bitmap images are rendered by - using a bilinear algorithm. Rendering by using the nearest - neighbor algorithm is faster. - - - - - - - - { alpha : 1, color : 0 } - Specifies a simple one-color fill that subsequent calls to other Graphics - methods(such as `lineTo()` or `drawCircle()`) use - when drawing. The fill remains in effect until you call the - `beginFill()`, `beginBitmapFill()`, - `beginGradientFill()`, or `beginShaderFill()` - method. Calling the `clear()` method clears the fill. - - The application renders the fill whenever three or more points are - drawn, or when the `endFill()` method is called. - - @param color The color of the fill(0xRRGGBB). - @param alpha The alpha value of the fill(0.0 to 1.0). - - - - - - - - - - - - - - { focalPointRatio : 0, interpolationMethod : InterpolationMethod.RGB, spreadMethod : SpreadMethod.PAD, matrix : null } - `InterpolationMethod.LINEAR_RGB` | ![linear gradient with InterpolationMethod.RGB](/images/beginGradientFill_interp_rgb.jpg)
      `InterpolationMethod.RGB` | - - @param focalPointRatio A number that controls the location of the focal point of the gradient. 0 means that - the focal point is in the center. 1 means that the focal point is at one border of the gradient circle. -1 - means that the focal point is at the other border of the gradient circle. A value less than -1 or greater - than 1 is rounded to -1 or 1. For example, the following example shows a `focalPointRatio` set to 0.75: - - ![radial gradient with focalPointRatio set to 0.75](/images/radial_sketch.jpg) - - @throws ArgumentError If the `type` parameter is not valid.]]>
      -
      - - - - - - - { matrix : null } - instance is - used as an input and the `width` and `height` - properties aren't specified for the ShaderInput, - or the specified values don't match the amount - of data in the input object. See the - `ShaderInput.input` property for more - information.]]> - - - - Clears the graphics that were drawn to this Graphics object, and resets - fill and line style settings. - - - - - - - Copies all of drawing commands from the source Graphics object into - the calling Graphics object. - - @param sourceGraphics The Graphics object from which to copy the - drawing commands. - - - - - - - - - - - - Draws a cubic Bezier curve from the current drawing position to the specified - anchor point. Cubic Bezier curves consist of two anchor points and two control - points. The curve interpolates the two anchor points and curves toward the two - control points. - - ![cubic bezier](/images/cubic_bezier.png) - - The four points you use to draw a cubic Bezier curve with the `cubicCurveTo()` - method are as follows: - - * The current drawing position is the first anchor point. - * The `anchorX` and `anchorY` parameters specify the second anchor point. - * The `controlX1` and `controlY1` parameters specify the first control point. - * The `controlX2` and `controlY2` parameters specify the second control point. - - If you call the `cubicCurveTo()` method before calling the `moveTo()` method, your - curve starts at position (0, 0). - - If the `cubicCurveTo()` method succeeds, the OpenFL runtime sets the current - drawing position to (`anchorX`, `anchorY`). If the `cubicCurveTo()` method fails, - the current drawing position remains unchanged. - - If your movie clip contains content created with the Flash drawing tools, the - results of calls to the `cubicCurveTo()` method are drawn underneath that content. - - @param controlX1 Specifies the horizontal position of the first control point - relative to the registration point of the parent display object. - @param controlY1 Specifies the vertical position of the first control point - relative to the registration point of the parent display object. - @param controlX2 Specifies the horizontal position of the second control point - relative to the registration point of the parent display object. - @param controlY2 Specifies the vertical position of the second control point - relative to the registration point of the parent display object. - @param anchorX Specifies the horizontal position of the anchor point relative to - the registration point of the parent display object. - @param anchorY Specifies the vertical position of the anchor point relative to - the registration point of the parent display object. - - - - - - - - - - Draws a quadratic curve using the current line style from the current drawing - position to(anchorX, anchorY) and using the control point that - (`controlX`, `controlY`) specifies. The current - drawing position is then set to(`anchorX`, - `anchorY`). If the movie clip in which you are drawing contains - content created with the Flash drawing tools, calls to the - `curveTo()` method are drawn underneath this content. If you - call the `curveTo()` method before any calls to the - `moveTo()` method, the default of the current drawing position - is(0, 0). If any of the parameters are missing, this method fails and the - current drawing position is not changed. - - The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves - consist of two anchor points and one control point. The curve interpolates - the two anchor points and curves toward the control point. - - ![quadratic bezier](quad_bezier.png) - - @param controlX A number that specifies the horizontal position of the - control point relative to the registration point of the - parent display object. - @param controlY A number that specifies the vertical position of the - control point relative to the registration point of the - parent display object. - @param anchorX A number that specifies the horizontal position of the - next anchor point relative to the registration point of - the parent display object. - @param anchorY A number that specifies the vertical position of the next - anchor point relative to the registration point of the - parent display object. - - - - - - - - - - - - - - - - Draws an ellipse. Set the line style, fill, or both before you call the - `drawEllipse()` method, by calling the - `linestyle()`, `lineGradientStyle()`, - `beginFill()`, `beginGradientFill()`, or - `beginBitmapFill()` method. - - @param x The _x_ location of the top-left of the bounding-box of - the ellipse relative to the registration point of the parent - display object(in pixels). - @param y The _y_ location of the top left of the bounding-box of - the ellipse relative to the registration point of the parent - display object(in pixels). - @param width The width of the ellipse(in pixels). - @param height The height of the ellipse(in pixels). - - - - - - - Submits a series of IGraphicsData instances for drawing. This method - accepts a Vector containing objects including paths, fills, and strokes - that implement the IGraphicsData interface. A Vector of IGraphicsData - instances can refer to a part of a shape, or a complex fully defined set - of data for rendering a complete shape. - - Graphics paths can contain other graphics paths. If the - `graphicsData` Vector includes a path, that path and all its - sub-paths are rendered during this operation. - - - - - - - - - { winding : GraphicsPathWinding.EVEN_ODD } - Submits a series of commands for drawing. The `drawPath()` - method uses vector arrays to consolidate individual `moveTo()`, - `lineTo()`, and `curveTo()` drawing commands into a - single call. The `drawPath()` method parameters combine drawing - commands with x- and y-coordinate value pairs and a drawing direction. The - drawing commands are values from the GraphicsPathCommand class. The x- and - y-coordinate value pairs are Numbers in an array where each pair defines a - coordinate location. The drawing direction is a value from the - GraphicsPathWinding class. - - Generally, drawings render faster with `drawPath()` than - with a series of individual `lineTo()` and - `curveTo()` methods. - - The `drawPath()` method uses a uses a floating computation - so rotation and scaling of shapes is more accurate and gives better - results. However, curves submitted using the `drawPath()` - method can have small sub-pixel alignment errors when used in conjunction - with the `lineTo()` and `curveTo()` methods. - - The `drawPath()` method also uses slightly different rules - for filling and drawing lines. They are: - - * When a fill is applied to rendering a path: - * A sub-path of less than 3 points is not rendered.(But note that the - stroke rendering will still occur, consistent with the rules for strokes - below.) - * A sub-path that isn't closed(the end point is not equal to the - begin point) is implicitly closed. - * When a stroke is applied to rendering a path: - * The sub-paths can be composed of any number of points. - * The sub-path is never implicitly closed. - - @param commands A Vector of integers representing drawing commands. The set - of accepted values is defined by the constants in the GraphicsPathCommand class. - @param data A Vector of Number instances where each pair of numbers is treated - as a coordinate location (an x, y pair). The x- and y-coordinate value pairs are - not Point objects; the data vector is a series of numbers where each group of two - numbers represents a coordinate location. - @param winding Specifies the winding rule using a value defined in the - GraphicsPathWinding class. - - - - - - - - - { transforms : null, indices : null } - Renders a set of quadrilaterals. This is similar to calling `drawRect` - repeatedly, but each rectangle can use a transform value to rotate, scale - or skew the result. - - Any type of fill can be used, but if the fill has a transform matrix - that transform matrix is ignored. - - The optional `indices` parameter allows the use of either repeated - rectangle geometry, or allows the use of a subset of a broader rectangle - data Vector, such as Tileset `rectData`. - - @param rects A Vector containing rectangle coordinates in - [ x0, y0, width0, height0, x1, y1 ... ] format. - @param indices A Vector containing optional index values to reference - the data contained in `rects`. Each index is a rectangle - index in the Vector, not an array index. If this parameter - is ommitted, each index from `rects` will be used in order. - @param transforms A Vector containing optional transform data to adjust - _x_, _y_, _a_, _b_, _c_ or _d_ value for the resulting - quadrilateral. A `transforms` Vector that is double the - size of the draw count (the length of `indices`, or if - omitted, the rectangle count in `rects`) will be treated - as [ x, y, ... ] pairs. A `transforms` Vector that is - four times the size of the draw count will be used as - matrix [ a, b, c, d, ... ] values. A `transforms` object - which is six times the draw count in size will use full - matrix [ a, b, c, d, tx, ty, ... ] values per draw. - - - - - - - - - - Draws a rectangle. Set the line style, fill, or both before you call the - `drawRect()` method, by calling the `linestyle()`, - `lineGradientStyle()`, `beginFill()`, - `beginGradientFill()`, or `beginBitmapFill()` - method. - - @param x A number indicating the horizontal position relative to the - registration point of the parent display object(in pixels). - @param y A number indicating the vertical position relative to the - registration point of the parent display object(in pixels). - @param width The width of the rectangle(in pixels). - @param height The height of the rectangle(in pixels). - @throws ArgumentError If the `width` or `height` - parameters are not a number - (`Number.NaN`). - - - - - - - - - - - - { ellipseHeight : null } - Draws a rounded rectangle. Set the line style, fill, or both before you - call the `drawRoundRect()` method, by calling the - `linestyle()`, `lineGradientStyle()`, - `beginFill()`, `beginGradientFill()`, or - `beginBitmapFill()` method. - - @param x A number indicating the horizontal position relative - to the registration point of the parent display - object(in pixels). - @param y A number indicating the vertical position relative to - the registration point of the parent display object - (in pixels). - @param width The width of the round rectangle(in pixels). - @param height The height of the round rectangle(in pixels). - @param ellipseWidth The width of the ellipse used to draw the rounded - corners(in pixels). - @param ellipseHeight The height of the ellipse used to draw the rounded - corners(in pixels). Optional; if no value is - specified, the default value matches that provided - for the `ellipseWidth` parameter. - @throws ArgumentError If the `width`, `height`, - `ellipseWidth` or - `ellipseHeight` parameters are not a - number(`Number.NaN`). - - - - - - - - - - - - - - Undocumented method - - - - - - - - - - { culling : TriangleCulling.NONE, uvtData : null, indices : null } - Renders a set of triangles, typically to distort bitmaps and give them a - three-dimensional appearance. The `drawTriangles()` method maps - either the current fill, or a bitmap fill, to the triangle faces using a - set of(u,v) coordinates. - - Any type of fill can be used, but if the fill has a transform matrix - that transform matrix is ignored. - - A `uvtData` parameter improves texture mapping when a - bitmap fill is used. - - @param culling Specifies whether to render triangles that face in a - specified direction. This parameter prevents the rendering - of triangles that cannot be seen in the current view. This - parameter can be set to any value defined by the - TriangleCulling class. - - - - Applies a fill to the lines and curves that were added since the last call - to the `beginFill()`, `beginGradientFill()`, or - `beginBitmapFill()` method. Flash uses the fill that was - specified in the previous call to the `beginFill()`, - `beginGradientFill()`, or `beginBitmapFill()` - method. If the current drawing position does not equal the previous - position specified in a `moveTo()` method and a fill is - defined, the path is closed with a line and then filled. - - - - - - - - - - { smooth : false, repeat : true, matrix : null } - Specifies a bitmap to use for the line stroke when drawing lines. - - The bitmap line style is used for subsequent calls to Graphics methods - such as the `lineTo()` method or the `drawCircle()` - method. The line style remains in effect until you call the - `lineStyle()` or `lineGradientStyle()` methods, or - the `lineBitmapStyle()` method again with different parameters. - - - You can call the `lineBitmapStyle()` method in the middle of - drawing a path to specify different styles for different line segments - within a path. - - Call the `lineStyle()` method before you call the - `lineBitmapStyle()` method to enable a stroke, or else the - value of the line style is `undefined`. - - Calls to the `clear()` method set the line style back to - `undefined`. - - @param bitmap The bitmap to use for the line stroke. - @param matrix An optional transformation matrix as defined by the - openfl.geom.Matrix class. The matrix can be used to scale or - otherwise manipulate the bitmap before applying it to the - line style. - @param repeat Whether to repeat the bitmap in a tiled fashion. - @param smooth Whether smoothing should be applied to the bitmap. - - - - - - - - - - - - - - { focalPointRatio : 0, interpolationMethod : InterpolationMethod.RGB, spreadMethod : SpreadMethod.PAD, matrix : null } - `SpreadMethod.PAD` | ![linear gradient with SpreadMethod.REFLECT](/images/beginGradientFill_spread_reflect.jpg)
      `SpreadMethod.REFLECT` | ![linear gradient with SpreadMethod.REPEAT](/images/beginGradientFill_spread_repeat.jpg)
      `SpreadMethod.REPEAT` | - - @param interpolationMethod A value from the InterpolationMethod class that specifies which value to use. For - example, consider a simple linear gradient between two colors (with the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods affect the appearance as follows: - - | | | - | --- | --- | - | ![linear gradient with InterpolationMethod.LINEAR_RGB](/images/beginGradientFill_interp_linearrgb.jpg)
      `InterpolationMethod.LINEAR_RGB` | ![linear gradient with InterpolationMethod.RGB](/images/beginGradientFill_interp_rgb.jpg)
      `InterpolationMethod.RGB` | - - @param focalPointRatio A number that controls the location of the focal point of the gradient. The value 0 - means the focal point is in the center. The value 1 means the focal point is at one border of the gradient - circle. The value -1 means that the focal point is at the other border of the gradient circle. Values less - than -1 or greater than 1 are rounded to -1 or 1. The following image shows a gradient with a - `focalPointRatio` of -0.75: - - ![radial gradient with focalPointRatio set to 0.75](/images/radial_sketch.jpg)]]>
      -
      - - - - - - - - - - - - - { miterLimit : 3, joints : null, caps : null, scaleMode : LineScaleMode.NORMAL, pixelHinting : false, alpha : 1, color : 0, thickness : null } - Specifies a shader to use for the line stroke when drawing lines. - - The shader line style is used for subsequent calls to Graphics methods such as the `lineTo()` method or the - `drawCircle()` method. The line style remains in effect until you call the `lineStyle()` or - `lineGradientStyle()` methods, or the `lineBitmapStyle()` method again with different parameters. - - You can call the `lineShaderStyle()` method in the middle of drawing a path to specify different styles for - different line segments within a path. - - Call the `lineStyle()` method before you call the `lineShaderStyle()` method to enable a stroke, or else the - value of the line style is undefined. - - Calls to the `clear()` method set the line style back to undefined. - - - - - - - - Draws a line using the current line style from the current drawing - position to(`x`, `y`); the current drawing position - is then set to(`x`, `y`). If the display object in - which you are drawing contains content that was created with the Flash - drawing tools, calls to the `lineTo()` method are drawn - underneath the content. If you call `lineTo()` before any calls - to the `moveTo()` method, the default position for the current - drawing is(_0, 0_). If any of the parameters are missing, this - method fails and the current drawing position is not changed. - - @param x A number that indicates the horizontal position relative to the - registration point of the parent display object(in pixels). - @param y A number that indicates the vertical position relative to the - registration point of the parent display object(in pixels). - - - - - - - - Moves the current drawing position to(`x`, `y`). If - any of the parameters are missing, this method fails and the current - drawing position is not changed. - - @param x A number that indicates the horizontal position relative to the - registration point of the parent display object(in pixels). - @param y A number that indicates the vertical position relative to the - registration point of the parent display object(in pixels). - - - - - - - - "checkstyle:FieldDocComment" - hide - - - - - - - - - { recurse : true } - Queries a Sprite or Shape object (and optionally, its children) for its vector - graphics content. The result is a Vector of IGraphicsData objects. Transformations - are applied to the display object before the query, so the returned paths are all - in the same coordinate space. Coordinates in the result data set are relative to - the stage, not the display object being sampled. - - The result includes the following types of objects, with the specified limitations: - - * GraphicsSolidFill - * GraphicsGradientFill - * All properties of the gradient fill are returned by `readGraphicsData()`. - * The matrix returned is close to, but not exactly the same as, the input - matrix. - * GraphicsEndFill - * GraphicsBitmapFill - * The matrix returned is close to, but not exactly the same as, the input - matrix. - * `repeat` is always `true`. - * `smooth` is always `false`. - * GraphicsStroke - * `thickness` is supported. - * `fill` supports GraphicsSolidFill, GraphicsGradientFill, and GraphicsBitmapFill - as described previously - * All other properties have default values. - * GraphicsPath - * The only supported commands are `MOVE_TO`, `CURVE_TO`, and `LINE_TO`. - - The following visual elements and transformations can't be represented and are not - included in the result: - - * Masks - * Text, with one exception: Static text that is defined with anti-alias type - "anti-alias for animation" is rendered as vector shapes so it is included in the - result. - * Shader fills - * Blend modes - * 9-slice scaling - * Triangles (created with the `drawTriangles()` method) - * Opaque background - * `scrollRect` settings - * 2.5D transformations - * Non-visible objects (objects whose `visible` property is `false`) - - @param recurse whether the runtime should also query display object children of - the current display object. A recursive query can take more time and memory to - execute. The results are returned in a single flattened result set, not separated - by display object. - @returns A Vector of IGraphicsData objects representing the vector graphics - content of the related display object - - <__calculateBezierCubicPoint get="inline" set="null" line="1621"> - - - - - - - - - - - <__calculateBezierQuadPoint get="inline" set="null" line="1628"> - - - - - - - - - - <__cleanup set="method" line="1634"> - - - - <__getBounds set="method" line="1660"> - - - - - - - - <__hitTest set="method" line="1670"> - - - - - - - - - - <__inflateBounds set="method" line="1694"> - - - - - - - - <__readGraphicsData set="method" line="1728"> - - - - - - - <__update set="method" line="1838"> - - - - - - - - - - - - - - - - - - - - - - The Graphics class contains a set of methods that you can use to create a - vector shape. Display objects that support drawing include Sprite and Shape - objects. Each of these classes includes a `graphics` property - that is a Graphics object. The following are among those helper functions - provided for ease of use: `drawRect()`, - `drawRoundRect()`, `drawCircle()`, and - `drawEllipse()`. - - You cannot create a Graphics object directly from ActionScript code. If - you call `new Graphics()`, an exception is thrown. - - The Graphics class is final; it cannot be subclassed. - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.GraphicsPath - openfl.display.IGraphicsData - openfl.display.IGraphicsFill - openfl.display.Shader - openfl.geom.Matrix - openfl.geom.Rectangle - - -
      - <__graphicsFillType set="null"> - - - - <__graphicsDataType set="null"> - - - - - - - - - A transparent or opaque bitmap image. - - - - A matrix object (of the openfl.geom.Matrix class) that defines - transformations on the bitmap. For example, the following matrix - rotates a bitmap by 45 degrees (pi/4 radians): - - ```haxe - var matrix = new openfl.geom.Matrix(); - matrix.rotate(Math.PI / 4); - ``` - - - - Specifies whether to repeat the bitmap image in a tiled pattern. - If `true`, the bitmap image repeats in a tiled pattern. If `false`, - the bitmap image does not repeat, and the outermost pixels along the - edges of the bitmap are used for any fill area that extends beyond the - bounds of the bitmap. - - For example, consider the following bitmap (a 20 x 20-pixel - checkerboard pattern): - - ![20 by 20 pixel checkerboard](/images/movieClip_beginBitmapFill_repeat_1.jpg) - - When `repeat` is set to `true` (as in the following example), the - bitmap fill repeats the bitmap: - - ![60 by 60 pixel checkerboard](/images/movieClip_beginBitmapFill_repeat_2.jpg) - - When `repeat` is set to `false`, the bitmap fill uses the edge pixels - for the fill area outside the bitmap: - - ![60 by 60 pixel image with no repeating](/images/movieClip_beginBitmapFill_repeat_3.jpg) - - - - Specifies whether to apply a smoothing algorithm to the bitmap image. - If `false`, upscaled bitmap images are rendered by using a - nearest-neighbor algorithm and look pixelated. If `true`, upscaled - bitmap images are rendered by using a bilinear algorithm. Rendering by - using the nearest neighbor algorithm is usually faster. - - <__graphicsDataType set="null"> - - - - <__graphicsFillType set="null"> - - - - - - - - - - - - { smooth : false, repeat : true, matrix : null, bitmapData : null } - Creates a new GraphicsBitmapFill object. - - @param bitmapData A transparent or opaque bitmap image that contains - the bits to display. - @param matrix A matrix object (of the openfl.geom.Matrix class), - which you use to define transformations on the - bitmap. - @param repeat If `true`, the bitmap image repeats in a tiled - pattern. If `false`, the bitmap image does not - repeat, and the edges of the bitmap are used for any - fill area that extends beyond the bitmap. - @param smooth If `false`, upscaled bitmap images are rendered - using a nearest-neighbor algorithm and appear - pixelated. If `true`, upscaled bitmap images are - rendered using a bilinear algorithm. Rendering that - uses the nearest-neighbor algorithm is usually - faster. - - Defines a bitmap fill. The bitmap can be smoothed, repeated or tiled to - fill the area; or manipulated using a transformation matrix. - Use a GraphicsBitmapFill object with the `Graphics.drawGraphicsData()` - method. Drawing a GraphicsBitmapFill object is the equivalent of calling - the `Graphics.beginBitmapFill()` method. - - - "tags=\"haxe,release\"" - - - - - - - - <__graphicsDataType set="null"> - - - - <__graphicsFillType set="null"> - - - - - - Creates an object to use with the `Graphics.drawGraphicsData()` - method to end the fill, explicitly. - - Indicates the end of a graphics fill. Use a GraphicsEndFill object with the - `Graphics.drawGraphicsData()` method. - - Drawing a GraphicsEndFill object is the equivalent of calling the - `Graphics.endFill()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - - An array of alpha values for the corresponding colors in the colors - array. Valid values are between 0 and 1. If the value is less than 0, - 0 is used. If the value is greater than 1, 1 is used. - - - - An array of RGB hexadecimal color values to use in the gradient. For - example, red is 0xFF0000, blue is 0x0000FF, and so on. You can specify - up to 15 colors. For each color, specify a corresponding value in the - alphas and ratios properties. - - - - A number that controls the location of the focal point of the - gradient. A value of 0 sets the focal point in the center. A value of - 1 means that the focal point is at one border of the gradient circle.A - value of -1 sets the focal point at the other border of the gradient - circle. A value of less than -1 or greater than 1 is rounded to -1 or - 1, respectively. For example, the following shows a `focalPointRatio` - set to 0.75: - - ![radial gradient with focalPointRatio set to 0.75](/images/radial_sketch.jpg) - - - - A value from the InterpolationMethod class that specifies which value - to use. Valid values are: `InterpolationMethod.LINEAR_RGB` or - `InterpolationMethod.RGB` - For example, the following shows a simple linear gradient between two - colors (with the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods change - the appearance as follows: - - | `InterpolationMethod.LINEAR_RGB` | `InterpolationMethod.RGB` | - | --- | --- | - | ![linear gradient with InterpolationMethod.LINEAR_RGB](/images/beginGradientFill_interp_linearrgb.jpg) | ![linear gradient with InterpolationMethod.RGB](/images/beginGradientFill_interp_rgb.jpg) | - - - - A transformation matrix as defined by the Matrix class. The - openfl.geom.Matrix class includes a `createGradientBox()` method to set - up the matrix for use with the `beginGradientFill()` method. - - - - An array of color distribution ratios. Valid values are between 0 and - 255. This value defines the percentage of the width where the color is - sampled at 100%. The value 0 represents the left position in the - gradient box, and the value 255 represents the right position in the - gradient box. - **Note:** This value represents positions in the gradient box, not the - coordinate space of the final gradient which can be wider or thinner - than the gradient box. Specify a value for corresponding to each value - in the `colors` property. - - For example, for a linear gradient that includes two colors (blue and - green) the following example illustrates the placement of the colors - in the gradient based on different values in the `ratios` array: - - | `ratios` | Gradient | - | --- | --- | - | `[0, 127]` | ![linear gradient blue to green with ratios 0 and 127](/images/gradient-ratios-1.jpg) | - | `[0, 255]` | ![linear gradient blue to green with ratios 0 and 255](/images/gradient-ratios-2.jpg) | - | `[127, 255]` | ![linear gradient blue to green with ratios 127 and 255](/images/gradient-ratios-3.jpg) | - - The values in the array must increase sequentially; for example, `[0, - 63, 127, 190, 255]`. - - - - A value from the SpreadMethod class that specifies which spread method - to use. Valid values are: `SpreadMethod.PAD`, `SpreadMethod.REFLECT`, - or `SpreadMethod.REPEAT`. - - For example, the following shows a simple linear gradient between two - colors: - - ```haxe - import openfl.geom.*; - import openfl.display.*; - - var fillType = GradientType.LINEAR; - var colors = [0xFF0000, 0x0000FF]; - var alphas = [1, 1]; - var ratios = [0x00, 0xFF]; - var matr = new Matrix(); - matr.createGradientBox(20, 20, 0, 0, 0); - var spreadMethod = SpreadMethod.PAD; - graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod); - graphics.drawRect(0,0,100,100); - ``` - - This example uses `SpreadMethod.PAD` for the spread method, and the - gradient fill looks like the following: - - ![linear gradient with SpreadMethod.PAD](/images/beginGradientFill_spread_pad.jpg) - - If you use `SpreadMethod.REFLECT` for the spread method, the gradient - fill looks like the following: - - ![linear gradient with SpreadMethod.REFLECT](/images/beginGradientFill_spread_reflect.jpg) - - If you use `SpreadMethod.REPEAT` for the spread method, the gradient - fill looks like the following: - - ![linear gradient with SpreadMethod.REPEAT](/images/beginGradientFill_spread_repeat.jpg) - - - - A value from the GradientType class that specifies which gradient type - to use. Values are `GradientType.LINEAR` or `GradientType.RADIAL`. - - <__graphicsDataType set="null"> - - - - <__graphicsFillType set="null"> - - - - - - - - - - - - - - - - { focalPointRatio : 0, interpolationMethod : null, spreadMethod : null, matrix : null, ratios : null, alphas : null, colors : null, type : null } - Creates a new GraphicsGradientFill object. - - @param type A value from the GradientType class that - specifies which gradient type to use: - `GradientType.LINEAR` or - `GradientType.RADIAL`. - @param matrix A transformation matrix as defined by the - openfl.geom.Matrix class. The - openfl.geom.Matrix class includes a - `createGradientBox()` method, which lets - you conveniently set up the matrix for use - with the `beginGradientFill()` method. - @param spreadMethod A value from the SpreadMethod class that - specifies which spread method to use, - either: `SpreadMethod.PAD`, - `SpreadMethod.REFLECT`, or - `SpreadMethod.REPEAT`. - @param interpolationMethod A value from the InterpolationMethod class - that specifies which value to use: - `InterpolationMethod.LINEAR_RGB` or - `InterpolationMethod.RGB` - @param focalPointRatio A number that controls the location of the - focal point of the gradient. A value of 0 - sets the focal point in the center. A value - of 1 sets the focal point at one border of - the gradient circle. A value of -1 sets the - focal point at the other border of the - gradient circle. A value less than -1 or - greater than 1 is rounded to -1 or 1, - respectively. - - Defines a gradient fill. - Use a GraphicsGradientFill object with the `Graphics.drawGraphicsData()` - method. Drawing a GraphicsGradientFill object is the equivalent of calling - the `Graphics.beginGradientFill()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - - - 0.70710678118654752440084436210485 - - - - 0.4142135623730950488016887242097 - - - - The Vector of drawing commands as integers representing the path. Each - command can be one of the values defined by the GraphicsPathCommand class. - - - - The Vector of Numbers containing the parameters used with the drawing - commands. - - - - Specifies the winding rule using a value defined in the - GraphicsPathWinding class. - - <__graphicsDataType set="null"> - - - - - - - - - - - - - - Adds a new "cubicCurveTo" command to the commands vector and new coordinates to - the data vector. - - @param controlX1 A number that specifies the horizontal position of the first - control point relative to the registration point of the parent display object. - @param controlY1 A number that specifies the vertical position of the first - control point relative to the registration point of the parent display object. - @param controlX2 A number that specifies the horizontal position of the second - control point relative to the registration point of the parent display object. - @param controlY2 A number that specifies the vertical position of the second - control point relative to the registration point of the parent display object. - @param anchorX A number that specifies the horizontal position of the next anchor - point relative to the registration point of the parent display object. - @param anchorY A number that specifies the vertical position of the next anchor - point relative to the registration point of the parent display object. - - - - - - - - - - Adds a new "curveTo" command to the `commands` vector and new - coordinates to the `data` vector. - - @param controlX A number that specifies the horizontal position of the - control point relative to the registration point of the - parent display object. - @param controlY A number that specifies the vertical position of the - control point relative to the registration point of the - parent display object. - @param anchorX A number that specifies the horizontal position of the - next anchor point relative to the registration point of - the parent display object. - @param anchorY A number that specifies the vertical position of the next - anchor point relative to the registration point of the - parent display object. - - - - - - - - Adds a new "lineTo" command to the `commands` vector and new - coordinates to the `data` vector. - - @param x The x coordinate of the destination point for the line. - @param y The y coordinate of the destination point for the line. - - - - - - - - Adds a new "moveTo" command to the `commands` vector and new - coordinates to the `data` vector. - - @param x The x coordinate of the destination point. - @param y The y coordinate of the destination point. - - - - - - - - Adds a new "wideLineTo" command to the `commands` vector and - new coordinates to the `data` vector. - - @param x The x-coordinate of the destination point for the line. - @param y The y-coordinate of the destination point for the line. - - - - - - - - Adds a new "wideMoveTo" command to the `commands` vector and - new coordinates to the `data` vector. - - @param x The x-coordinate of the destination point. - @param y The y-coordinate of the destination point. - - <__drawCircle set="method" line="195"> - - - - - - - - - <__drawEllipse set="method" line="200"> - - - - - - - - - - <__drawRect set="method" line="205"> - - - - - - - - - - <__drawRoundRect set="method" line="214"> - - - - - - - - - - - - - - - - - - - { winding : GraphicsPathWinding.EVEN_ODD, data : null, commands : null } - Creates a new GraphicsPath object. - - @param winding Specifies the winding rule using a value defined in the - GraphicsPathWinding class. - - A collection of drawing commands and the coordinate parameters for those - commands. - - Use a GraphicsPath object with the - `Graphics.drawGraphicsData()` method. Drawing a GraphicsPath - object is the equivalent of calling the `Graphics.drawPath()` - method. - - The GraphicsPath class also has its own set of methods - (`curveTo()`, `lineTo()`, `moveTo()` - `wideLineTo()` and `wideMoveTo()`) similar to those - in the Graphics class for making adjustments to the - `GraphicsPath.commands` and `GraphicsPath.data` - vector arrays. - - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - Defines the values to use for specifying path-drawing commands. - - The values in this class are used by the - `Graphics.drawPath()` method, or stored in the - `commands` vector of a GraphicsPath object. - - - - - - cast 6 - - - - Specifies a drawing command that draws a curve from the current drawing position - to the x- and y-coordinates specified in the data vector, using a 2 control points. - - - - - cast 3 - - - - Specifies a drawing command that draws a curve from the current drawing position - to the x- and y-coordinates specified in the data vector, using a control point. - This command produces the same effect as the `Graphics.lineTo()` method, and uses - two points in the data vector control and anchor: (cx, cy, ax, ay). - - - - - cast 2 - - - - Specifies a drawing command that draws a line from the current drawing position to - the x- and y-coordinates specified in the data vector. This command produces the - same effect as the `Graphics.lineTo()` method, and uses one point in the data - vector: (x,y). - - - - - cast 1 - - - - Specifies a drawing command that moves the current drawing position to the x- and - y-coordinates specified in the data vector. This command produces the same effect as - the `Graphics.moveTo()` method, and uses one point in the data vector: (x,y). - - - - - cast 0 - - - - Represents the default "do nothing" command. - - - - - cast 5 - - - - Specifies a "line to" drawing command, but uses two sets of coordinates (four - values) instead of one set. This command allows you to switch between "line to" - and "curve to" commands without changing the number of data values used per command. - This command uses two sets in the data vector: one dummy location and one (x,y) - location. - - The `WIDE_LINE_TO` and `WIDE_MOVE_TO` command variants consume the same number of - parameters as does the `CURVE_TO` command. - - - - - cast 4 - - - - Specifies a "move to" drawing command, but uses two sets of coordinates (four - values) instead of one set. This command allows you to switch between "move to" - and "curve to" commands without changing the number of data values used per - command. This command uses two sets in the data vector: one dummy location and one - (x,y) location. - - The `WIDE_LINE_TO` and `WIDE_MOVE_TO` command variants consume the same number of - parameters as does the `CURVE_TO` command. - - - - - - - - - cast 6 - - - - Specifies a drawing command that draws a curve from the current drawing position - to the x- and y-coordinates specified in the data vector, using a 2 control points. - - - - - cast 3 - - - - Specifies a drawing command that draws a curve from the current drawing position - to the x- and y-coordinates specified in the data vector, using a control point. - This command produces the same effect as the `Graphics.lineTo()` method, and uses - two points in the data vector control and anchor: (cx, cy, ax, ay). - - - - - cast 2 - - - - Specifies a drawing command that draws a line from the current drawing position to - the x- and y-coordinates specified in the data vector. This command produces the - same effect as the `Graphics.lineTo()` method, and uses one point in the data - vector: (x,y). - - - - - cast 1 - - - - Specifies a drawing command that moves the current drawing position to the x- and - y-coordinates specified in the data vector. This command produces the same effect as - the `Graphics.moveTo()` method, and uses one point in the data vector: (x,y). - - - - - cast 0 - - - - Represents the default "do nothing" command. - - - - - cast 5 - - - - Specifies a "line to" drawing command, but uses two sets of coordinates (four - values) instead of one set. This command allows you to switch between "line to" - and "curve to" commands without changing the number of data values used per command. - This command uses two sets in the data vector: one dummy location and one (x,y) - location. - - The `WIDE_LINE_TO` and `WIDE_MOVE_TO` command variants consume the same number of - parameters as does the `CURVE_TO` command. - - - - - cast 4 - - - - Specifies a "move to" drawing command, but uses two sets of coordinates (four - values) instead of one set. This command allows you to switch between "move to" - and "curve to" commands without changing the number of data values used per - command. This command uses two sets in the data vector: one dummy location and one - (x,y) location. - - The `WIDE_LINE_TO` and `WIDE_MOVE_TO` command variants consume the same number of - parameters as does the `CURVE_TO` command. - - - - - - - - The GraphicsPathWinding class provides values for the - `openfl.display.GraphicsPath.winding` property and the - `openfl.display.Graphics.drawPath()` method to determine the - direction to draw a path. A clockwise path is positively wound, and a - counter-clockwise path is negatively wound: - - ![positive and negative winding directions](/images/winding_positive_negative.gif) - - When paths intersect or overlap, the winding direction determines the - rules for filling the areas created by the intersection or overlap: - - ![a comparison of even-odd and non-zero winding rules](/images/winding_rules_evenodd_nonzero.gif) - - - - - - cast 0 - - - - Establishes the even-odd winding type. The even-odd winding type is the rule - used by all of the original drawing API and is the default type for the - `openfl.display.Graphics.drawPath()` method. Any overlapping paths will - alternate between open and closed fills. If two squares drawn with the same - fill intersect, the area of the intersection is not filled. Adjacent areas are not - the same (neither both filled nor both unfilled). - - - - - cast 1 - - - - Establishes the non-zero winding type. The non-zero winding type determines that - when paths of opposite winding intersect, the intersection area is unfilled - (as with the even-odd winding type). For paths of the same winding, the - intersection area is filled. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Establishes the even-odd winding type. The even-odd winding type is the rule - used by all of the original drawing API and is the default type for the - `openfl.display.Graphics.drawPath()` method. Any overlapping paths will - alternate between open and closed fills. If two squares drawn with the same - fill intersect, the area of the intersection is not filled. Adjacent areas are not - the same (neither both filled nor both unfilled). - - - - - cast 1 - - - - Establishes the non-zero winding type. The non-zero winding type determines that - when paths of opposite winding intersect, the intersection area is unfilled - (as with the even-odd winding type). For paths of the same winding, the - intersection area is filled. - - - - - - - - - - - - - - - - - - - - - - - A Vector containing optional index values to reference the data contained in - `rects`. Each index is a rectangle index in the Vector, not an array index. If - this parameter is omitted, each index from `rects` will be used in order. - - - - A Vector containing rectangle coordinates in [ x0, y0, width0, height0, x1, y1 ... ] - format. - - - - A Vector containing optional transform data to adjust _x_, _y_, _a_, _b_, _c_ or _d_ - value for the resulting quadrilateral. A `transforms` Vector that is double the size - of the draw count (the length of `indices`, or if omitted, the rectangle count in - `rects`) will be treated as [ x, y, ... ] pairs. A `transforms` Vector that is four - times the size of the draw count will be used as matrix [ a, b, c, d, ... ] values. - A `transforms` object which is six times the draw count in size will use full matrix - [ a, b, c, d, tx, ty, ... ] values per draw. - - <__graphicsDataType set="null"> - - - - - - - - - - - { transforms : null, indices : null, rects : null } - Creates a new GraphicsTrianglePath object. - - @param rects A Vector containing rectangle coordinates in [ x0, y0, width0, height0, x1, y1 ... ] - format. - @param indices A Vector containing optional index values to reference the data contained in - `rects` - @param transforms A Vector containing optional transform data to adjust _x_, _y_, _a_, _b_, _c_ or _d_ - value for the resulting quadrilateral. - - Defines a set of quadrilaterals. This is similar to using GraphicsPath `drawRect` - repeatedly, but each rectangle can use a transform value to rotate, scale or skew - the result. - - Any type of fill can be used, but if the fill has a transform matrix - that transform matrix is ignored. - - The optional `indices` parameter allows the use of either repeated - rectangle geometry, or allows the use of a subset of a broader rectangle - data Vector, such as Tileset `rectData`. - - "tags=\"haxe,release\"" - - - - - - - - - - A matrix object (of the openfl.geom.Matrix class), which you can use to - define transformations on the shader. For example, you can use the - following matrix to rotate a shader by 45 degrees (pi/4 radians): - - ```haxe - var matrix = new openfl.geom.Matrix(); - matrix.rotate(Math.PI / 4); - ``` - - The coordinates received in the shader are based on the matrix that is - specified for the `matrix` parameter. For a default (`null`) matrix, - the coordinates in the shader are local pixel coordinates which can be - used to sample an input. - - - - The shader to use for the fill. This Shader instance is not required - to specify an image input. However, if an image input is specified in - the shader, the input must be provided manually by setting the `input` - property of the corresponding ShaderInput property of the - `Shader.data` property. - When you pass a Shader instance as an argument the shader is copied - internally and the drawing fill operation uses that internal copy, not - a reference to the original shader. Any changes made to the shader, - such as changing a parameter value, input, or bytecode, are not - applied to the copied shader that's used for the fill. - - <__graphicsDataType set="null"> - - - - <__graphicsFillType set="null"> - - - - - - - - - - { matrix : null } - Creates a new GraphicsShaderFill object. - - @param shader The shader to use for the fill. This Shader instance is - not required to specify an image input. However, if an - image input is specified in the shader, the input must - be provided manually by setting the `input` property of - the corresponding ShaderInput property of the - `Shader.data` property. - @param matrix A matrix object (of the openfl.geom.Matrix class), which - you can use to define transformations on the shader. - - Defines a shader fill. - Use a GraphicsShaderFill object with the `Graphics.drawGraphicsData()` - method. Drawing a GraphicsShaderFill object is the equivalent of calling - the `Graphics.beginShaderFill()` method. - - "tags=\"haxe,release\"" - - - - - - - - - - Indicates the alpha transparency value of the fill. Valid values are 0 - (fully transparent) to 1(fully opaque). The default value is 1. Display - objects with alpha set to 0 are active, even though they are invisible. - - - - The color of the fill. Valid values are in the hexadecimal format - 0xRRGGBB. The default value is 0xFF0000(or the uint 0). - - <__graphicsDataType set="null"> - - - - <__graphicsFillType set="null"> - - - - - - - - - - { alpha : 1, color : 0 } - Creates a new GraphicsSolidFill object. - - @param color The color value. Valid values are in the hexadecimal format - 0xRRGGBB. - @param alpha The alpha transparency value. Valid values are 0(fully - transparent) to 1(fully opaque). - - Defines a solid fill. - - Use a GraphicsSolidFill object with the - `Graphics.drawGraphicsData()` method. Drawing a - GraphicsSolidFill object is the equivalent of calling the - `Graphics.beginFill()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - - - Specifies the type of caps at the end of lines. Valid values are: - `CapsStyle.NONE`, `CapsStyle.ROUND`, and - `CapsStyle.SQUARE`. If a value is not indicated, Flash uses - round caps. - - For example, the following illustrations show the different - `capsStyle` settings. For each setting, the illustration shows - a blue line with a thickness of 30(for which the `capsStyle` - applies), and a superimposed black line with a thickness of 1(for which - no `capsStyle` applies): - - - - Specifies the instance containing data for filling a stroke. An - IGraphicsFill instance can represent a series of fill commands. - - - - Specifies the type of joint appearance used at angles. Valid values are: - `JointStyle.BEVEL`, `JointStyle.MITER`, and - `JointStyle.ROUND`. If a value is not indicated, Flash uses - round joints. - - For example, the following illustrations show the different - `joints` settings. For each setting, the illustration shows an - angled blue line with a thickness of 30(for which the - `jointStyle` applies), and a superimposed angled black line - with a thickness of 1(for which no `jointStyle` applies): - - **Note:** For `joints` set to - `JointStyle.MITER`, you can use the `miterLimit` - parameter to limit the length of the miter. - - - - Indicates the limit at which a miter is cut off. Valid values range from 1 - to 255(and values outside that range are rounded to 1 or 255). This value - is only used if the `jointStyle` is set to - `"miter"`. The `miterLimit` value represents the - length that a miter can extend beyond the point at which the lines meet to - form a joint. The value expresses a factor of the line - `thickness`. For example, with a `miterLimit` factor - of 2.5 and a `thickness` of 10 pixels, the miter is cut off at - 25 pixels. - - For example, consider the following angled lines, each drawn with a - `thickness` of 20, but with `miterLimit` set to 1, - 2, and 4. Superimposed are black reference lines showing the meeting - points of the joints: - - Notice that a given `miterLimit` value has a specific - maximum angle for which the miter is cut off. The following table lists - some examples: - - - - Specifies whether to hint strokes to full pixels. This affects both the - position of anchors of a curve and the line stroke size itself. With - `pixelHinting` set to `true`, Flash Player hints - line widths to full pixel widths. With `pixelHinting` set to - `false`, disjoints can appear for curves and straight lines. - For example, the following illustrations show how Flash Player renders two - rounded rectangles that are identical, except that the - `pixelHinting` parameter used in the `lineStyle()` - method is set differently(the images are scaled by 200%, to emphasize the - difference): - - - - Specifies the stroke thickness scaling. Valid values are: - - * `LineScaleMode.NORMAL` - Always scale the line thickness - when the object is scaled(the default). - * `LineScaleMode.NONE` - Never scale the line thickness. - - * `LineScaleMode.VERTICAL` - Do not scale the line - thickness if the object is scaled vertically _only_. For example, - consider the following circles, drawn with a one-pixel line, and each with - the `scaleMode` parameter set to - `LineScaleMode.VERTICAL`. The circle on the left is scaled - vertically only, and the circle on the right is scaled both vertically and - horizontally: - * `LineScaleMode.HORIZONTAL` - Do not scale the line - thickness if the object is scaled horizontally _only_. For example, - consider the following circles, drawn with a one-pixel line, and each with - the `scaleMode` parameter set to - `LineScaleMode.HORIZONTAL`. The circle on the left is scaled - horizontally only, and the circle on the right is scaled both vertically - and horizontally: - - - - Indicates the thickness of the line in points; valid values are 0-255. If - a number is not specified, or if the parameter is undefined, a line is not - drawn. If a value of less than 0 is passed, the default is 0. The value 0 - indicates hairline thickness; the maximum thickness is 255. If a value - greater than 255 is passed, the default is 255. - - <__graphicsDataType set="null"> - - - - - - - - - - - - - - - { fill : null, miterLimit : 3, joints : JointStyle.ROUND, caps : CapsStyle.NONE, scaleMode : LineScaleMode.NORMAL, pixelHinting : false, thickness : null } - Creates a new GraphicsStroke object. - - @param pixelHinting A Boolean value that specifies whether to hint strokes - to full pixels. This affects both the position of - anchors of a curve and the line stroke size itself. - With `pixelHinting` set to - `true`, Flash Player hints line widths to - full pixel widths. With `pixelHinting` set - to `false`, disjoints can appear for curves - and straight lines. For example, the following - illustrations show how Flash Player renders two - rounded rectangles that are identical, except that the - `pixelHinting` parameter used in the - `lineStyle()` method is set differently - (the images are scaled by 200%, to emphasize the - difference): - - If a value is not supplied, the line does not use - pixel hinting. - @param scaleMode A value from the LineScaleMode class that specifies - which scale mode to use: - - * `LineScaleMode.NORMAL` - Always - scale the line thickness when the object is scaled - (the default). - * `LineScaleMode.NONE` - Never scale - the line thickness. - * `LineScaleMode.VERTICAL` - Do not - scale the line thickness if the object is scaled - vertically _only_. For example, consider the - following circles, drawn with a one-pixel line, and - each with the `scaleMode` parameter set to - `LineScaleMode.VERTICAL`. The circle on the - left is scaled vertically only, and the circle on the - right is scaled both vertically and horizontally: - - * `LineScaleMode.HORIZONTAL` - Do not - scale the line thickness if the object is scaled - horizontally _only_. For example, consider the - following circles, drawn with a one-pixel line, and - each with the `scaleMode` parameter set to - `LineScaleMode.HORIZONTAL`. The circle on - the left is scaled horizontally only, and the circle - on the right is scaled both vertically and - horizontally: - - @param caps A value from the CapsStyle class that specifies the - type of caps at the end of lines. Valid values are: - `CapsStyle.NONE`, - `CapsStyle.ROUND`, and - `CapsStyle.SQUARE`. If a value is not - indicated, Flash uses round caps. - - For example, the following illustrations show the - different `capsStyle` settings. For each - setting, the illustration shows a blue line with a - thickness of 30(for which the `capsStyle` - applies), and a superimposed black line with a - thickness of 1(for which no `capsStyle` - applies): - @param joints A value from the JointStyle class that specifies the - type of joint appearance used at angles. Valid values - are: `JointStyle.BEVEL`, - `JointStyle.MITER`, and - `JointStyle.ROUND`. If a value is not - indicated, Flash uses round joints. - - For example, the following illustrations show the - different `joints` settings. For each - setting, the illustration shows an angled blue line - with a thickness of 30(for which the - `jointStyle` applies), and a superimposed - angled black line with a thickness of 1(for which no - `jointStyle` applies): - - **Note:** For `joints` set to - `JointStyle.MITER`, you can use the - `miterLimit` parameter to limit the length - of the miter. - - Defines a line style or stroke. - - Use a GraphicsStroke object with the - `Graphics.drawGraphicsData()` method. Drawing a GraphicsStroke - object is the equivalent of calling one of the methods of the Graphics - class that sets the line style, such as the - `Graphics.lineStyle()` method, the - `Graphics.lineBitmapStyle()` method, or the - `Graphics.lineGradientStyle()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - - Specifies whether to render triangles that face in a given direction. - Used to prevent the rendering of triangles that cannot be seen in the - current view. - Can be set to any value defined by the TriangleCulling class. - - - - A Vector of integers or indexes, where every three indexes define a - triangle. If the indexes parameter is null then every three vertices - (six x,y pairs in the vertices Vector) defines a triangle. Otherwise - each index refers to a vertex, which is a pair of numbers in the - vertices Vector. For example `indexes[1]` refers to (`vertices[2]`, - `vertices[3]`). - - - - A Vector of normalized coordinates used to apply texture mapping. Each - coordinate refers to a point on the bitmap used for the fill. There - must be one UV or one UVT coordinate per vertex. - In UV coordinates, (0,0) is the upper left of the bitmap, and (1,1) is - the lower right of the bitmap. - - If the length of this vector is twice the length of the `vertices` - vector then normalized coordinates are used without perspective - correction. - - If the length of this vector is three times the length of the - `vertices` vector then the third coordinate is interpreted as 't', the - distance from the eye to the texture in eye space. This helps the - rendering engine correctly apply perspective when mapping textures in - 3D. - - - - A Vector of Numbers where each pair of numbers is treated as a point - (an x, y pair). - - <__graphicsDataType set="null"> - - - - - - - - - - - - { culling : NONE, uvtData : null, indices : null, vertices : null } - Creates a new GraphicsTrianglePath object. - - @param vertices A Vector of Numbers where each pair of numbers is treated as a point (an x, y pair). - Required. - @param indices A Vector of integers or indexes, where every three indexes define a triangle. - @param uvtData A Vector of normalized coordinates used to apply texture mapping. - @param culling Specifies whether to render triangles that face in a - given direction. Used to prevent the rendering of - triangles that cannot be seen in the current view. Can - be set to any value defined by the TriangleCulling - class. - - Defines an ordered set of triangles that can be rendered using either - (u,v) fill coordinates or a normal fill. Each triangle in the path is - represented by three sets of (x, y) coordinates, each of which is one - point of the triangle. - The triangle vertices do not contain z coordinates and do not necessarily - represent 3D faces. However a triangle path can be used to support the - rendering of 3D geometry in a 2D space. - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - Returns the number of tiles of this object. - - - - - - - Adds a Tile instance to this ITileContainer instance. The tile is - added to the front (top) of all other tiles in this ITileContainer - instance. (To add a tile to a specific index position, use the `addTileAt()` - method.) - - @param tile The Tile instance to add to this ITileContainer instance. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - - Adds a Tile instance to this ITileContainer instance. The tile is added - at the index position specified. An index of 0 represents the back (bottom) - of the rendered list for this ITileContainer object. - - For example, the following example shows three tiles, labeled - a, b, and c, at index positions 0, 2, and 1, respectively: - - ![b over c over a](/images/DisplayObjectContainer_layers.jpg) - - @param tile The Tile instance to add to this ITileContainer instance. - @param index The index position to which the tile is added. If you - specify a currently occupied index position, the tile object - that exists at that position and all higher positions are - moved up one position in the tile list. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Adds an Array of Tile instances to this ITileContainer instance. The tiles - are added to the front (top) of all other tiles in this ITileContainer - instance. - - @param tiles The Tile instances to add to this ITileContainer instance. - @return The Tile Array that you pass in the `tiles` parameter. - - - - - - - Determines whether the specified tile is contained within the - ITileContainer instance. The search includes the entire tile list including - this ITileContainer instance. Grandchildren, great-grandchildren, and so on - each return `true`. - - @param tile The tile object to test. - @return `true` if the `tile` object is contained within the ITileContainer; - otherwise `false`. - - - - - - - Returns the tile instance that exists at the specified index. - - @param index The index position of the tile object. - @return The tile object at the specified index position. - - - - - - - Returns the index position of a contained Tile instance. - - @param child The Tile instance to identify. - @return The index position of the tile object to identify. - - - - - - - Removes the specified Tile instance from the tile list of the ITileContainer - instance. The index positions of any tile objects above the tile in the - ITileContainer are decreased by 1. - - @param tile The Tile instance to remove. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Removes a Tile from the specified `index` position in the tile list of the - ITileContainer. The index positions of any tile objects above the tile in - the ITileContainer are decreased by 1. - - @param index The index of the Tile to remove. - @return The Tile instance that was removed. - - - - - - - - { endIndex : 0x7fffffff, beginIndex : 0 } - Removes all Tile instances from the tile list of the ITileContainer instance. - - @param beginIndex The beginning position. - @param endIndex The ending position. - - - - - - - - Changes the position of an existing tile in the tile container. - This affects the layering of tile objects. For example, the following - example shows three tile objects, labeled a, b, and c, at index - positions 0, 1, and 2, respectively: - - ![c over b over a](/images/DisplayObjectContainerSetChildIndex1.jpg) - - When you use the `setTileIndex()` method and specify an - index position that is already occupied, the only positions that change - are those in between the tile object's former and new position. All - others will stay the same. If a tile is moved to an index LOWER than its - current index, all tiles in between will INCREASE by 1 for their index - reference. If a tile is moved to an index HIGHER than its current index, - all tiles in between will DECREASE by 1 for their index reference. For - example, if the tile container in the previous example is named - `container`, you can swap the position of the tile objects - labeled a and b by calling the following code: - - ```haxe - container.setTileIndex(container.getTileAt(1), 0); - ``` - - This code results in the following arrangement of objects: - - ![c over a over b](/images/DisplayObjectContainerSetChildIndex2.jpg) - - @param tile The Tile instance for which you want to change the index - number. - @param index The resulting index number for the `tile` object. - - - - - - - - - - - Sorts the z-order (front-to-back order) of all the tile objects in this - container based on a comparison function. - - A comparison function should take two arguments to compare. Given the elements - A and B, the result of `compareFunction` can have a negative, 0, or positive value: - - * A negative return value specifies that A appears before B in the sorted sequence. - * A return value of 0 specifies that A and B have the same sort order. - * A positive return value specifies that A appears after B in the sorted sequence. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. - - @param compareFunction A comparison function to use when sorting. - - - - - - - - Swaps the z-order (front-to-back order) of the two specified tile - objects. All other tile objects in the tile container remain in - the same index positions. - - @param child1 The first tile object. - @param child2 The second tile object. - - - - - - - - Swaps the z-order (front-to-back order) of the tile objects at the two - specified index positions in the tile list. All other tile objects in - the tile container remain in the same index positions. - - @param index1 The index position of the first tile object. - @param index2 The index position of the second tile object. - - ITileContainer is an interface implemented by compatible tile container - objects, including the Tilemap and TileContainer classes. - - - - - - The InterpolationMethod class provides values for the - `interpolationMethod` parameter in the - `Graphics.beginGradientFill()` and - `Graphics.lineGradientStyle()` methods. This parameter - determines the RGB space to use when rendering the gradient. - - - - - - cast 0 - - - - Specifies that the RGB interpolation method should be used. This means - that the gradient is rendered with exponential sRGB(standard RGB) space. - The sRGB space is a W3C-endorsed standard that defines a non-linear - conversion between red, green, and blue component values and the actual - intensity of the visible component color. - - For example, consider a simple linear gradient between two colors(with - the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods - affect the appearance as follows: - - - - - cast 1 - - - - Specifies that the RGB interpolation method should be used. This means - that the gradient is rendered with exponential sRGB(standard RGB) space. - The sRGB space is a W3C-endorsed standard that defines a non-linear - conversion between red, green, and blue component values and the actual - intensity of the visible component color. - - For example, consider a simple linear gradient between two colors(with - the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods - affect the appearance as follows: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that the RGB interpolation method should be used. This means - that the gradient is rendered with exponential sRGB(standard RGB) space. - The sRGB space is a W3C-endorsed standard that defines a non-linear - conversion between red, green, and blue component values and the actual - intensity of the visible component color. - - For example, consider a simple linear gradient between two colors(with - the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods - affect the appearance as follows: - - - - - cast 1 - - - - Specifies that the RGB interpolation method should be used. This means - that the gradient is rendered with exponential sRGB(standard RGB) space. - The sRGB space is a W3C-endorsed standard that defines a non-linear - conversion between red, green, and blue component values and the actual - intensity of the visible component color. - - For example, consider a simple linear gradient between two colors(with - the `spreadMethod` parameter set to - `SpreadMethod.REFLECT`). The different interpolation methods - affect the appearance as follows: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A value between 1 and 100, where 1 means the lowest quality and 100 means the - highest quality. The higher the value, the larger the size of the output of the - compression, and the smaller the compression ratio. - - - - - - - { quality : 80 } - Creates a JPEGEncoderOptions object with the specified setting. - - @param quality The initial quality value. - - The JPEGEncoderOptions class defines a compression algorithm for the - `openfl.display.BitmapData.encode()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - The JointStyle class is an enumeration of constant values that specify the - joint style to use in drawing lines. These constants are provided for use - as values in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. The method supports - three types of joints: miter, round, and bevel, as the following example - shows: - - - - - - cast 0 - - - - Specifies beveled joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 1 - - - - Specifies mitered joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 2 - - - - Specifies round joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies beveled joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 1 - - - - Specifies mitered joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - cast 2 - - - - Specifies round joints in the `joints` parameter of the - `openfl.display.Graphics.lineStyle()` method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The LineScaleMode class provides values for the `scaleMode` - parameter in the `Graphics.lineStyle()` method. - - - - - - cast 0 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line scales - _only_ vertically. For example, consider the following circles, drawn - with a one-pixel line, and each with the `scaleMode` parameter - set to `LineScaleMode.VERTICAL`. The circle on the left is - scaled only vertically, and the circle on the right is scaled both - vertically and horizontally. - - - - - cast 1 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line never scales. - - - - - cast 2 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line always scales - when the object is scaled(the default). - - - - - cast 3 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line scales - _only_ horizontally. For example, consider the following circles, - drawn with a one-pixel line, and each with the `scaleMode` - parameter set to `LineScaleMode.HORIZONTAL`. The circle on the - left is scaled only horizontally, and the circle on the right is scaled - both vertically and horizontally. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line scales - _only_ vertically. For example, consider the following circles, drawn - with a one-pixel line, and each with the `scaleMode` parameter - set to `LineScaleMode.VERTICAL`. The circle on the left is - scaled only vertically, and the circle on the right is scaled both - vertically and horizontally. - - - - - cast 1 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line never scales. - - - - - cast 2 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line always scales - when the object is scaled(the default). - - - - - cast 3 - - - - With this setting used as the `scaleMode` parameter of the - `lineStyle()` method, the thickness of the line scales - _only_ horizontally. For example, consider the following circles, - drawn with a one-pixel line, and each with the `scaleMode` - parameter set to `LineScaleMode.HORIZONTAL`. The circle on the - left is scaled only horizontally, and the circle on the right is scaled - both vertically and horizontally. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Contains the root display object of the SWF file or image(JPG, PNG, or - GIF) file that was loaded by using the `load()` or - `loadBytes()` methods. - - @throws SecurityError The loaded SWF file or image file belongs to a - security sandbox to which you do not have access. - For a loaded SWF file, you can avoid this situation - by having the file call the - `Security.allowDomain()` method or by - having the loading file specify a - `loaderContext` parameter with its - `securityDomain` property set to - `SecurityDomain.currentDomain` when you - call the `load()` or - `loadBytes()` method. - - - - Returns a LoaderInfo object corresponding to the object being loaded. - LoaderInfo objects are shared between the Loader object and the loaded - content object. The LoaderInfo object supplies loading progress - information and statistics about the loaded file. - - Events related to the load are dispatched by the LoaderInfo object - referenced by the `contentLoaderInfo` property of the Loader - object. The `contentLoaderInfo` property is set to a valid - LoaderInfo object, even before the content is loaded, so that you can add - event listeners to the object prior to the load. - - To detect uncaught errors that happen in a loaded SWF, use the - `Loader.uncaughtErrorEvents` property, not the - `Loader.contentLoaderInfo.uncaughtErrorEvents` property. - - - - An object that dispatches an uncaughtError event when an unhandled error occurs in - the SWF that's loaded by this Loader object. An uncaught error happens when an - error is thrown outside of any `try..catch` blocks or when an ErrorEvent object is - dispatched with no registered listeners. - - Note that a Loader object's `uncaughtErrorEvents` property dispatches events that - bubble through it, not events that it dispatches directly. It never dispatches an - `uncaughtErrorEvent` in the target phase. It only dispatches the event in the - capture and bubbling phases. To detect an uncaught error in the current SWF (the - SWF in which the Loader object is defined) use the `LoaderInfo.uncaughtErrorEvents` - property instead. - - If the content loaded by the Loader object is an AVM1 (ActionScript 2) SWF file, - uncaught errors in the AVM1 SWF file do not result in an `uncaughtError` event. - - <__library> - - - - <__path> - - - - <__unloaded> - - - - - - - - - - - - - - - Cancels a `load()` method operation that is currently in - progress for the Loader instance. - - - - - - - - { context : null } - Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an - object that is a child of this Loader object. If you load an animated GIF - file, only the first frame is displayed. As the Loader object can contain - only a single child, issuing a subsequent `load()` request - terminates the previous request, if still pending, and commences a new - load. - - **Note**: In AIR 1.5 and Flash Player 10, the maximum size for a - loaded image is 8,191 pixels in width or height, and the total number of - pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191 - pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and - earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height - and 2,880 pixels in width. - - A SWF file or image loaded into a Loader object inherits the position, - rotation, and scale properties of the parent display objects of the Loader - object. - - Use the `unload()` method to remove movies or images loaded - with this method, or to cancel a load operation that is in progress. - - You can prevent a SWF file from using this method by setting the - `allowNetworking` parameter of the the `object` and - `embed` tags in the HTML page that contains the SWF - content. - - When you use this method, consider the Flash Player security model, - which is described in the Loader class description. - - In Flash Player 10 and later, if you use a multipart Content-Type(for - example "multipart/form-data") that contains an upload(indicated by a - "filename" parameter in a "content-disposition" header within the POST - body), the POST operation is subject to the security rules applied to - uploads: - - * The POST operation must be performed in response to a user-initiated - action, such as a mouse click or key press. - * If the POST operation is cross-domain(the POST target is not on the - same server as the SWF file that is sending the POST request), the target - server must provide a URL policy file that permits cross-domain - access. - - Also, for any multipart Content-Type, the syntax must be valid - (according to the RFC2046 standard). If the syntax appears to be invalid, - the POST operation is subject to the security rules applied to - uploads. - - For more information related to security, see the Flash Player - Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG - file to be loaded. A relative path must be relative to the - main SWF file. Absolute URLs must include the protocol - reference, such as http:// or file:///. Filenames cannot - include disk drive specifications. - @param context A LoaderContext object, which has properties that define - the following: - - * Whether or not to check for the existence of a policy - file upon loading the object - * The ApplicationDomain for the loaded object - * The SecurityDomain for the loaded object - * The ImageDecodingPolicy for the loaded image - object - - If the `context` parameter is not specified - or refers to a null object, the loaded content remains in - its own security domain. - - For complete details, see the description of the - properties in the [LoaderContext](../system/LoaderContext.html) - class. - @throws IOError The `digest` property of the - `request` object is not - `null`. You should only set the - `digest` property of a URLRequest - object when calling the - `URLLoader.load()` method when - loading a SWZ file(an Adobe platform - component). - @throws IllegalOperationError If the `requestedContentParent` - property of the `context` - parameter is a `Loader`. - @throws IllegalOperationError If the `LoaderContext.parameters` - parameter is set to non-null and has some - values which are not Strings. - @throws SecurityError The value of - `LoaderContext.securityDomain` - must be either `null` or - `SecurityDomain.currentDomain`. - This reflects the fact that you can only - place the loaded media in its natural - security sandbox or your own(the latter - requires a policy file). - @throws SecurityError Local SWF files may not set - LoaderContext.securityDomain to anything - other than `null`. It is not - permitted to import non-local media into a - local sandbox, or to place other local media - in anything other than its natural sandbox. - @throws SecurityError You cannot connect to commonly reserved - ports. For a complete list of blocked ports, - see "Restricting Networking APIs" in the - _ActionScript 3.0 Developer's Guide_. - @throws SecurityError If the `applicationDomain` or - `securityDomain` properties of - the `context` parameter are from - a disallowed domain. - @throws SecurityError If a local SWF file is attempting to use the - `securityDomain` property of the - `context` parameter. - @event asyncError Dispatched by the `contentLoaderInfo` - object if the - `LoaderContext.requestedContentParent` - property has been specified and it is not possible to - add the loaded content as a child to the specified - DisplayObjectContainer. This could happen if the - loaded content is a - `openfl.display.AVM1Movie` or if the - `addChild()` call to the - requestedContentParent throws an error. - @event complete Dispatched by the `contentLoaderInfo` - object when the file has completed loading. The - `complete` event is always dispatched - after the `init` event. - @event httpStatus Dispatched by the `contentLoaderInfo` - object when a network request is made over HTTP and - Flash Player can detect the HTTP status code. - @event init Dispatched by the `contentLoaderInfo` - object when the properties and methods of the loaded - SWF file are accessible. The `init` event - always precedes the `complete` event. - @event ioError Dispatched by the `contentLoaderInfo` - object when an input or output error occurs that - causes a load operation to fail. - @event open Dispatched by the `contentLoaderInfo` - object when the loading operation starts. - @event progress Dispatched by the `contentLoaderInfo` - object as data is received while load operation - progresses. - @event securityError Dispatched by the `contentLoaderInfo` - object if a SWF file in the local-with-filesystem - sandbox attempts to load content in the - local-with-networking sandbox, or vice versa. - @event securityError Dispatched by the `contentLoaderInfo` - object if the - `LoaderContext.requestedContentParent` - property has been specified and the security sandbox - of the - `LoaderContext.requestedContentParent` - does not have access to the loaded SWF. - @event unload Dispatched by the `contentLoaderInfo` - object when a loaded object is removed. - - - - - - - - { context : null } - Loads from binary data stored in a ByteArray object. - - The `loadBytes()` method is asynchronous. You must wait for - the "init" event before accessing the properties of a loaded object. - - When you use this method, consider the Flash Player security model, - which is described in the Loader class description. - - @param bytes A ByteArray object. The contents of the ByteArray can be - any of the file formats supported by the Loader class: SWF, - GIF, JPEG, or PNG. - @param context A LoaderContext object. Only the - `applicationDomain` property of the - LoaderContext object applies; the - `checkPolicyFile` and - `securityDomain` properties of the LoaderContext - object do not apply. - - If the `context` parameter is not specified - or refers to a null object, the content is loaded into the - current security domain - a process referred to as "import - loading" in Flash Player security documentation. - Specifically, if the loading SWF file trusts the remote SWF - by incorporating the remote SWF into its code, then the - loading SWF can import it directly into its own security - domain. - - For more information related to security, see the Flash - Player Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - @throws ArgumentError If the `length` property of the - ByteArray object is not greater than 0. - @throws IllegalOperationError If the `checkPolicyFile` or - `securityDomain` property of the - `context` parameter are non-null. - @throws IllegalOperationError If the `requestedContentParent` - property of the `context` - parameter is a `Loader`. - @throws IllegalOperationError If the `LoaderContext.parameters` - parameter is set to non-null and has some - values which are not Strings. - @throws SecurityError If the provided - `applicationDomain` property of - the `context` property is from a - disallowed domain. - @throws SecurityError You cannot connect to commonly reserved - ports. For a complete list of blocked ports, - see "Restricting Networking APIs" in the - _ActionScript 3.0 Developer's Guide_. - @event asyncError Dispatched by the `contentLoaderInfo` - object if the - `LoaderContext.requestedContentParent` - property has been specified and it is not possible to - add the loaded content as a child to the specified - DisplayObjectContainer. This could happen if the - loaded content is a - `openfl.display.AVM1Movie` or if the - `addChild()` call to the - requestedContentParent throws an error. - @event complete Dispatched by the `contentLoaderInfo` - object when the operation is complete. The - `complete` event is always dispatched - after the `init` event. - @event init Dispatched by the `contentLoaderInfo` - object when the properties and methods of the loaded - data are accessible. The `init` event - always precedes the `complete` event. - @event ioError Dispatched by the `contentLoaderInfo` - object when the runtime cannot parse the data in the - byte array. - @event open Dispatched by the `contentLoaderInfo` - object when the operation starts. - @event progress Dispatched by the `contentLoaderInfo` - object as data is transfered in memory. - @event securityError Dispatched by the `contentLoaderInfo` - object if the - `LoaderContext.requestedContentParent` - property has been specified and the security sandbox - of the - `LoaderContext.requestedContentParent` - does not have access to the loaded SWF. - @event unload Dispatched by the `contentLoaderInfo` - object when a loaded object is removed. - - - - - - - - - - - - - - - - - Removes a child of this Loader object that was loaded by using the - `load()` method. The `property` of the associated - LoaderInfo object is reset to `null`. The child is not - necessarily destroyed because other objects might have references to it; - however, it is no longer a child of the Loader object. - - As a best practice, before you unload a child SWF file, you should - explicitly close any streams in the child SWF file's objects, such as - LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise, - audio in the child SWF file might continue to play, even though the child - SWF file was unloaded. To close streams in the child SWF file, add an - event listener to the child that listens for the `unload` - event. When the parent calls `Loader.unload()`, the - `unload` event is dispatched to the child. The following code - shows how you might do this: - - ``` - function closeAllStreams(evt:Event) { - myNetStream.close(); - mySound.close(); - myNetConnection.close(); - myLocalConnection.close(); - } - myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, - closeAllStreams); - ``` - - - - - - - { gc : true } - Attempts to unload child SWF file contents and stops the execution of - commands from loaded SWF files. This method attempts to unload SWF files - that were loaded using `Loader.load()` or - `Loader.loadBytes()` by removing references to EventDispatcher, - NetConnection, Timer, Sound, or Video objects of the child SWF file. As a - result, the following occurs for the child SWF file and the child SWF - file's display list: - - * Sounds are stopped. - * Stage event listeners are removed. - * Event listeners for `enterFrame`, - `frameConstructed`, `exitFrame`, - `activate` and `deactivate` are removed. - * Timers are stopped. - * Camera and Microphone instances are detached - * Movie clips are stopped. - - @param gc Provides a hint to the garbage collector to run on the child SWF - objects(`true`) or not(`false`). If you - are unloading many objects asynchronously, setting the - `gc` paramter to `false` might improve - application performance. However, if the parameter is set to - `false`, media and display objects of the child SWF - file might persist in memory after running the - `unloadAndStop()` command. - - <__dispatchError set="method" line="705"> - - - - - - - <__setContent set="method" line="712"> - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a Loader object that you can use to load files, such as SWF, JPEG, - GIF, or PNG files. Call the `load()` method to load the asset - as a child of the Loader instance. You can then add the Loader object to - the display list(for instance, by using the `addChild()` - method of a DisplayObjectContainer instance). The asset appears on the - Stage as it loads. - - You can also use a Loader instance "offlist," that is without adding it - to a display object container on the display list. In this mode, the - Loader instance might be used to load a SWF file that contains additional - modules of an application. - - To detect when the SWF file is finished loading, you can use the events - of the LoaderInfo object associated with the - `contentLoaderInfo` property of the Loader object. At that - point, the code in the module SWF file can be executed to initialize and - start the module. In the offlist mode, a Loader instance might also be - used to load a SWF file that contains components or media assets. Again, - you can use the LoaderInfo object event notifications to detect when the - components are finished loading. At that point, the application can start - using the components and media assets in the library of the SWF file by - instantiating the ActionScript 3.0 classes that represent those components - and assets. - - To determine the status of a Loader object, monitor the following - events that the LoaderInfo object associated with the - `contentLoaderInfo` property of the Loader object: - - * The `open` event is dispatched when loading begins. - * The `ioError` or `securityError` event is - dispatched if the file cannot be loaded or if an error occured during the - load process. - * The `progress` event fires continuously while the file is - being loaded. - * The `complete` event is dispatched when a file completes - downloading, but before the loaded movie clip's methods and properties are - available. - * The `init` event is dispatched after the properties and - methods of the loaded SWF file are accessible, so you can begin - manipulating the loaded SWF file. This event is dispatched before the - `complete` handler. In streaming SWF files, the - `init` event can occur significantly earlier than the - `complete` event. For most purposes, use the `init` - handler. - - The Loader class is used to load SWF files or image (JPG, PNG, or GIF) - files. Use the `load()` method to initiate loading. The loaded - display object is added as a child of the Loader object. - - Use the URLLoader class to load text or binary data. - - The Loader class overrides the following methods that it inherits, - because a Loader object can only have one child display object - the - display object that it loads. Calling the following methods throws an - exception: `addChild()`, `addChildAt()`, - `removeChild()`, `removeChildAt()`, and - `setChildIndex()`. To remove a loaded display object, you must - remove the _Loader_ object from its parent DisplayObjectContainer - child array. - - **Note:** The ActionScript 2.0 MovieClipLoader and LoadVars classes - are not used in ActionScript 3.0. The Loader and URLLoader classes replace - them. - - When you use the Loader class, consider the Flash Player and Adobe AIR - security model: - - * You can load content from any accessible source. - * Loading is not allowed if the calling SWF file is in a network - sandbox and the file to be loaded is local. - * If the loaded content is a SWF file written with ActionScript 3.0, it - cannot be cross-scripted by a SWF file in another security sandbox unless - that cross-scripting arrangement was approved through a call to the - `System.allowDomain()` or the - `System.allowInsecureDomain()` method in the loaded content - file. - * If the loaded content is an AVM1 SWF file(written using ActionScript - 1.0 or 2.0), it cannot be cross-scripted by an AVM2 SWF file(written using - ActionScript 3.0). However, you can communicate between the two SWF files - by using the LocalConnection class. - * If the loaded content is an image, its data cannot be accessed by a - SWF file outside of the security sandbox, unless the domain of that SWF - file was included in a URL policy file at the origin domain of the - image. - * Movie clips in the local-with-file-system sandbox cannot script movie - clips in the local-with-networking sandbox, and the reverse is also - prevented. - * You cannot connect to commonly reserved ports. For a complete list of - blocked ports, see "Restricting Networking APIs" in the _ActionScript 3.0 - Developer's Guide_. - - However, in AIR, content in the `application` security - sandbox(content installed with the AIR application) are not restricted by - these security limitations. - - For more information related to security, see the Flash Player Developer - Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - When loading a SWF file from an untrusted source(such as a domain other - than that of the Loader object's root SWF file), you may want to define a - mask for the Loader object, to prevent the loaded content(which is a child - of the Loader object) from drawing to portions of the Stage outside of that - mask, as shown in the following code: - - - "tags=\"haxe,release\"" - - openfl.display.LoaderInfo - openfl.events.Event - - - - - <__rootURL expr="""" line="114" static="1"> - - - "" - - - - - - - - - - - hide - "checkstyle:FieldDocComment" - - - - - When an external SWF file is loaded, all ActionScript 3.0 definitions - contained in the loaded class are stored in the - `applicationDomain` property. - - All code in a SWF file is defined to exist in an application domain. - The current application domain is where your main application runs. The - system domain contains all application domains, including the current - domain and all classes used by Flash Player or Adobe AIR. - - All application domains, except the system domain, have an associated - parent domain. The parent domain of your main application's - `applicationDomain` is the system domain. Loaded classes are - defined only when their parent doesn't already define them. You cannot - override a loaded class definition with a newer definition. - - For usage examples of application domains, see the "Client System - Environment" chapter in the _ActionScript 3.0 Developer's Guide_. - - @throws SecurityError This security sandbox of the caller is not allowed - to access this ApplicationDomain. - - - - The bytes associated with a LoaderInfo object. - - @throws SecurityError If the object accessing this API is prevented from - accessing the loaded object due to security - restrictions. This situation can occur, for - instance, when a Loader object attempts to access - the `contentLoaderInfo.content` property - and it is not granted security permission to access - the loaded content. - - For more information related to security, see the - Flash Player Developer Center Topic: - [Security](http://www.adobe.com/go/devnet_security_en). - - - - The number of bytes that are loaded for the media. When this number equals - the value of `bytesTotal`, all of the bytes are loaded. - - - - The number of compressed bytes in the entire media file. - - Before the first `progress` event is dispatched by this - LoaderInfo object's corresponding Loader object, `bytesTotal` - is 0. After the first `progress` event from the Loader object, - `bytesTotal` reflects the actual number of bytes to be - downloaded. - - - - Expresses the trust relationship from content(child) to the Loader - (parent). If the child has allowed the parent access, `true`; - otherwise, `false`. This property is set to `true` - if the child object has called the `allowDomain()` method to - grant permission to the parent domain or if a URL policy is loaded at the - child domain that grants permission to the parent domain. If child and - parent are in the same domain, this property is set to `true`. - - For more information related to security, see the Flash Player - Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @throws Error Thrown if the file is not downloaded sufficiently to - retrieve the requested information. - - - - The loaded object associated with this LoaderInfo object. - - @throws SecurityError If the object accessing this API is prevented from - accessing the loaded object due to security - restrictions. This situation can occur, for - instance, when a Loader object attempts to access - the `contentLoaderInfo.content` property - and it is not granted security permission to access - the loaded content. - - For more information related to security, see the - Flash Player Developer Center Topic: - [Security](http://www.adobe.com/go/devnet_security_en). - - - - The MIME type of the loaded file. The value is `null` if not - enough of the file has loaded in order to determine the type. The - following list gives the possible values: - - * `"application/x-shockwave-flash"` - * `"image/jpeg"` - * `"image/gif"` - * `"image/png"` - - - - The nominal frame rate, in frames per second, of the loaded SWF file. This - number is often an integer, but need not be. - - This value may differ from the actual frame rate in use. Flash Player - or Adobe AIR only uses a single frame rate for all loaded SWF files at any - one time, and this frame rate is determined by the nominal frame rate of - the main SWF file. Also, the main frame rate may not be able to be - achieved, depending on hardware, sound synchronization, and other - factors. - - @throws Error If the file is not downloaded sufficiently to retrieve the - requested information. - @throws Error If the file is not a SWF file. - - - - The nominal height of the loaded file. This value might differ from the - actual height at which the content is displayed, since the loaded content - or its parent display objects might be scaled. - - @throws Error If the file is not downloaded sufficiently to retrieve the - requested information. - - - - The Loader object associated with this LoaderInfo object. If this - LoaderInfo object is the `loaderInfo` property of the instance - of the main class of the SWF file, no Loader object is associated. - - @throws SecurityError If the object accessing this API is prevented from - accessing the Loader object because of security - restrictions. This can occur, for instance, when a - loaded SWF file attempts to access its - `loaderInfo.loader` property and it is - not granted security permission to access the - loading SWF file. - - For more information related to security, see the - Flash Player Developer Center Topic: - [Security](http://www.adobe.com/go/devnet_security_en). - - - - The URL of the SWF file that initiated the loading of the media described - by this LoaderInfo object. For the instance of the main class of the SWF - file, this URL is the same as the SWF file's own URL. - - - - "checkstyle:Dynamic" - An object that contains name-value pairs that represent the parameters - provided to the loaded SWF file. - - You can use a `for-in` loop to extract all the names and - values from the `parameters` object. - - The two sources of parameters are: the query string in the URL of the - main SWF file, and the value of the `FlashVars` HTML parameter - (this affects only the main SWF file). - - The `parameters` property replaces the ActionScript 1.0 and - 2.0 technique of providing SWF file parameters as properties of the main - timeline. - - The value of the `parameters` property is null for Loader - objects that contain SWF files that use ActionScript 1.0 or 2.0. It is - only non-null for Loader objects that contain SWF files that use - ActionScript 3.0. - - - - Expresses the trust relationship from Loader(parent) to the content - (child). If the parent has allowed the child access, `true`; - otherwise, `false`. This property is set to `true` - if the parent object called the `allowDomain()` method to grant - permission to the child domain or if a URL policy file is loaded at the - parent domain granting permission to the child domain. If child and parent - are in the same domain, this property is set to `true`. - - For more information related to security, see the Flash Player - Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @throws Error Thrown if the file is not downloaded sufficiently to - retrieve the requested information. - - - - Expresses the domain relationship between the loader and the content: - `true` if they have the same origin domain; `false` - otherwise. - - @throws Error Thrown if the file is not downloaded sufficiently to - retrieve the requested information. - - - - An EventDispatcher instance that can be used to exchange events across - security boundaries. Even when the Loader object and the loaded content - originate from security domains that do not trust one another, both can - access `sharedEvents` and send and receive events via this - object. - - - - An object that dispatches an `uncaughtError` event when an - unhandled error occurs in code in this LoaderInfo object's SWF file. An - uncaught error happens when an error is thrown outside of any - `try..catch` blocks or when an ErrorEvent object is dispatched - with no registered listeners. - - This property is created when the SWF associated with this LoaderInfo - has finished loading. Until then the `uncaughtErrorEvents` - property is `null`. In an ActionScript-only project, you can - access this property during or after the execution of the constructor - function of the main class of the SWF file. For a Flex project, the - `uncaughtErrorEvents` property is available after the - `applicationComplete` event is dispatched. - - - - The URL of the media being loaded. - - Before the first `progress` event is dispatched by this - LoaderInfo object's corresponding Loader object, the value of the - `url` property might reflect only the initial URL specified in - the call to the `load()` method of the Loader object. After the - first `progress` event, the `url` property reflects - the media's final URL, after any redirects and relative URLs are - resolved. - - In some cases, the value of the `url` property is truncated; - see the `isURLInaccessible` property for details. - - - - The nominal width of the loaded content. This value might differ from the - actual width at which the content is displayed, since the loaded content - or its parent display objects might be scaled. - - @throws Error If the file is not downloaded sufficiently to retrieve the - requested information. - - <__completed> - - - - <__complete set="method" line="419"> - - - - <__update set="method" line="435"> - - - - - - - - - - - - The LoaderInfo class provides information about a loaded SWF file or a - loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for - any display object. The information provided includes load progress, the - URLs of the loader and loaded content, the number of bytes total for the - media, and the nominal height and width of the media. - - You can access LoaderInfo objects in two ways: - - * The `contentLoaderInfo` property of a openfl.display.Loader - object - The `contentLoaderInfo` property is always available - for any Loader object. For a Loader object that has not called the - `load()` or `loadBytes()` method, or that has not - sufficiently loaded, attempting to access many of the properties of the - `contentLoaderInfo` property throws an error. - * The `loaderInfo` property of a display object. - - The `contentLoaderInfo` property of a Loader object provides - information about the content that the Loader object is loading, whereas - the `loaderInfo` property of a DisplayObject provides - information about the root SWF file for that display object. - - When you use a Loader object to load a display object(such as a SWF - file or a bitmap), the `loaderInfo` property of the display - object is the same as the `contentLoaderInfo` property of the - Loader object(`DisplayObject.loaderInfo = - Loader.contentLoaderInfo`). Because the instance of the main class of - the SWF file has no Loader object, the `loaderInfo` property is - the only way to access the LoaderInfo for the instance of the main class of - the SWF file. - - The following diagram shows the different uses of the LoaderInfo - object - for the instance of the main class of the SWF file, for the - `contentLoaderInfo` property of a Loader object, and for the - `loaderInfo` property of a loaded object: - - When a loading operation is not complete, some properties of the - `contentLoaderInfo` property of a Loader object are not - available. You can obtain some properties, such as - `bytesLoaded`, `bytesTotal`, `url`, - `loaderURL`, and `applicationDomain`. When the - `loaderInfo` object dispatches the `init` event, you - can access all properties of the `loaderInfo` object and the - loaded image or SWF file. - - **Note:** All properties of LoaderInfo objects are read-only. - - The `EventDispatcher.dispatchEvent()` method is not - applicable to LoaderInfo objects. If you call `dispatchEvent()` - on a LoaderInfo object, an IllegalOperationError exception is thrown. - - @event complete Dispatched when data has loaded successfully. In other - words, it is dispatched when all the content has been - downloaded and the loading has finished. The - `complete` event is always dispatched after - the `init` event. The `init` event - is dispatched when the object is ready to access, though - the content may still be downloading. - @event httpStatus Dispatched when a network request is made over HTTP and - an HTTP status code can be detected. - @event init Dispatched when the properties and methods of a loaded - SWF file are accessible and ready for use. The content, - however, can still be downloading. A LoaderInfo object - dispatches the `init` event when the following - conditions exist: - - * All properties and methods associated with the - loaded object and those associated with the LoaderInfo - object are accessible. - * The constructors for all child objects have - completed. - * All ActionScript code in the first frame of the - loaded SWF's main timeline has been executed. - - For example, an `Event.INIT` is dispatched - when the first frame of a movie or animation is loaded. - The movie is then accessible and can be added to the - display list. The complete movie, however, can take - longer to download. The `Event.COMPLETE` is - only dispatched once the full movie is loaded. - - The `init` event always precedes the - `complete` event. - @event ioError Dispatched when an input or output error occurs that - causes a load operation to fail. - @event open Dispatched when a load operation starts. - @event progress Dispatched when data is received as the download - operation progresses. - @event unload Dispatched by a LoaderInfo object whenever a loaded - object is removed by using the `unload()` - method of the Loader object, or when a second load is - performed by the same Loader object and the original - content is removed prior to the load beginning. - - - "tags=\"haxe,release\"" - - - - - - - - - - - Creates a new MovieClip based upon a Timeline instance. - - @param timeline A Timeline object - @return A new Sprite - - - - Specifies the number of the frame in which the playhead is located in the - timeline of the MovieClip instance. If the movie clip has multiple scenes, - this value is the frame number in the current scene. - - - - The label at the current frame in the timeline of the MovieClip instance. - If the current frame has no label, `currentLabel` is - `null`. - - - - The current label in which the playhead is located in the timeline of the - MovieClip instance. If the current frame has no label, - `currentLabel` is set to the name of the previous frame that - includes a label. If the current frame and previous frames do not include - a label, `currentLabel` returns `null`. - - - - Returns an array of FrameLabel objects from the current scene. If the - MovieClip instance does not use scenes, the array includes all frame - labels from the entire MovieClip instance. - - - - The current scene in which the playhead is located in the timeline of - the MovieClip instance. - - - - A Boolean value that indicates whether a movie clip is enabled. The - default value of `enabled` is `true`. If - `enabled` is set to `false`, the movie clip's Over, - Down, and Up frames are disabled. The movie clip continues to receive - events(for example, `mouseDown`, `mouseUp`, - `keyDown`, and `keyUp`). - - The `enabled` property governs only the button-like - properties of a movie clip. You can change the `enabled` - property at any time; the modified movie clip is immediately enabled or - disabled. If `enabled` is set to `false`, the object - is not included in automatic tab ordering. - - - - The number of frames that are loaded from a streaming SWF file. You can - use the `framesLoaded` property to determine whether the - contents of a specific frame and all the frames before it loaded and are - available locally in the browser. You can also use it to monitor the - downloading of large SWF files. For example, you might want to display a - message to users indicating that the SWF file is loading until a specified - frame in the SWF file finishes loading. - - If the movie clip contains multiple scenes, the - `framesLoaded` property returns the number of frames loaded for - _all_ scenes in the movie clip. - - - - A Boolean value that indicates whether a movie clip is curently playing. - - - - An array of Scene objects, each listing the name, the number of frames, - and the frame labels for a scene in the MovieClip instance. - - - - The total number of frames in the MovieClip instance. - - If the movie clip contains multiple frames, the - `totalFrames` property returns the total number of frames in - _all_ scenes in the movie clip. - - <__enabled> - - - - <__hasDown> - - - - <__hasOver> - - - - <__hasUp> - - - - <__mouseIsDown> - - - - <__scene> - - - - <__timeline> - - - - - - - - - - Adds a new FrameScript to this MovieClip. - - The FrameScript will be executed automatically when the - MovieClip enters the specified frame. - - This is only functional if this MovieClip has an attached - Timeline. - - @param index A zero-based index referencing a frame - @param method A method to be called entering the requested frame. - - - - - - - Attaches a Timeline to this MovieClip. - - MovieClips that contain a Timeline can play(), stop() and can - include FrameScripts. - - @param timeline A Timeline object - - - - - - - - { scene : null } - Starts playing the SWF file at the specified frame. This happens after all - remaining actions in the frame have finished executing. To specify a scene - as well as a frame, specify a value for the `scene` parameter. - - @param frame A number representing the frame number, or a string - representing the label of the frame, to which the playhead is - sent. If you specify a number, it is relative to the scene - you specify. If you do not specify a scene, the current scene - determines the global frame number to play. If you do specify - a scene, the playhead jumps to the frame number in the - specified scene. - @param scene The name of the scene to play. This parameter is optional. - - - - - - - - { scene : null } - Brings the playhead to the specified frame of the movie clip and stops it - there. This happens after all remaining actions in the frame have finished - executing. If you want to specify a scene in addition to a frame, specify - a `scene` parameter. - - @param frame A number representing the frame number, or a string - representing the label of the frame, to which the playhead is - sent. If you specify a number, it is relative to the scene - you specify. If you do not specify a scene, the current scene - determines the global frame number at which to go to and - stop. If you do specify a scene, the playhead goes to the - frame number in the specified scene and stops. - @param scene The name of the scene. This parameter is optional. - @throws ArgumentError If the `scene` or `frame` - specified are not found in this movie clip. - - - - Sends the playhead to the next frame and stops it. This happens after all - remaining actions in the frame have finished executing. - - - - - Moves the playhead in the timeline of the movie clip. - - - - Sends the playhead to the previous frame and stops it. This happens after - all remaining actions in the frame have finished executing. - - - - - Stops the playhead in the movie clip. - - <__enterFrame set="method" line="341" override="1"> - - - - - - - <__stopAllMovieClips set="method" line="354" override="1"> - - - - <__tabTest set="method" line="360" override="1"> - - - - - - - <__onMouseDown set="method" line="367"> - - - - - - - <__onMouseUp set="method" line="382"> - - - - - - - <__onRollOut set="method" line="406"> - - - - - - - <__onRollOver set="method" line="420"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new MovieClip instance. After creating the MovieClip, call the - `addChild()` or `addChildAt()` method of a display - object container that is onstage. - - The MovieClip class inherits from the following classes: Sprite, - DisplayObjectContainer, InteractiveObject, DisplayObject, and - EventDispatcher. - - Unlike the Sprite object, a MovieClip object has a timeline. - - In Flash Professional, the methods for the MovieClip class provide the - same functionality as actions that target movie clips. Some additional - methods do not have equivalent actions in the Actions toolbox in the - Actions panel in the Flash authoring tool. - - Children instances placed on the Stage in Flash Professional cannot be - accessed by code from within the constructor of a parent instance since - they have not been created at that point in code execution. Before - accessing the child, the parent must instead either create the child - instance by code or delay access to a callback function that listens for - the child to dispatch its `Event.ADDED_TO_STAGE` event. - - If you modify any of the following properties of a MovieClip object that - contains a motion tween, the playhead is stopped in that MovieClip object: - `alpha`, `blendMode`, `filters`, - `height`, `opaqueBackground`, `rotation`, - `scaleX`, `scaleY`, `scale9Grid`, - `scrollRect`, `transform`, `visible`, - `width`, `x`, or `y`. However, it does not - stop the playhead in any child MovieClip objects of that MovieClip - object. - - **Note:**Flash Lite 4 supports the MovieClip.opaqueBackground - property only if FEATURE_BITMAPCACHE is defined. The default configuration - of Flash Lite 4 does not define FEATURE_BITMAPCACHE. To enable the - MovieClip.opaqueBackground property for a suitable device, define - FEATURE_BITMAPCACHE in your project. - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - "tags=\"haxe,release\"" - - openfl.display.Timeline - openfl.geom.ColorTransform - - - - - <__alphaValue expr="[1]" line="57" static="1"> - - - [1] - - - - <__colorMultipliersValue expr="[0, 0, 0, 0]" line="58" static="1"> - - - [0, 0, 0, 0] - - - - <__colorOffsetsValue expr="[0, 0, 0, 0]" line="59" static="1"> - - - [0, 0, 0, 0] - - - - <__defaultColorMultipliersValue expr="[1, 1, 1, 1]" line="60" static="1"> - - - [1, 1, 1, 1] - - - - <__emptyColorValue expr="[0, 0, 0, 0]" line="61" static="1"> - - - [0, 0, 0, 0] - - - - <__emptyAlphaValue expr="[1]" line="62" static="1"> - - - [1] - - - - <__hasColorTransformValue expr="[false]" line="63" static="1"> - - - [false] - - - - <__scissorRectangle expr="new Rectangle()" line="64" static="1"> - - - new Rectangle() - - - - <__textureSizeValue expr="[0, 0]" line="65" static="1"> - - - [0, 0] - - - - - - "checkstyle:Dynamic" - The current OpenGL render context - - <__context3D> - - - - <__clipRects> - - - - <__currentDisplayShader> - - - - <__currentGraphicsShader> - - - - <__currentRenderTarget> - - - - <__currentShader> - - - - <__currentShaderBuffer> - - - - <__defaultDisplayShader> - - - - <__defaultGraphicsShader> - - - - <__defaultRenderTarget> - - - - <__defaultShader> - - - - <__displayHeight> - - - - <__displayWidth> - - - - <__flipped> - - - - <__gl> - - - "checkstyle:Dynamic" - - - - <__height> - - - - <__maskShader> - - - - <__matrix> - - - "checkstyle:Dynamic" - - - - <__maskObjects> - - - - <__numClipRects> - - - - <__offsetX> - - - - <__offsetY> - - - - <__projection> - - - "checkstyle:Dynamic" - - - - <__projectionFlipped> - - - "checkstyle:Dynamic" - - - - <__scrollRectMasks> - - - - <__softwareRenderer> - - - - <__stencilReference> - - - - <__tempRect> - - - - <__updatedStencil> - - - - <__upscaled> - - - - <__values> - - - - <__width> - - - - - - - - - Applies an alpha value to the active shader, if compatible with OpenFL core shaders - - - - - - - - - { repeat : false } - Binds a BitmapData object as the first active texture of the current active shader, - if compatible with OpenFL core shaders - - - - - - - Applies a color transform value to the active shader, if compatible with OpenFL - core shaders - - - - - - - Applies the "has color transform" uniform value for the active shader, if - compatible with OpenFL core shaders - - - - - - - Applies render matrix to the active shader, if compatible with OpenFL core shaders - - - - - - - "checkstyle:Dynamic" - Converts an OpenFL two-dimensional matrix to a compatible 3D matrix for use with - OpenGL rendering. Repeated calls to this method will return the same object with - new values, so it will need to be cloned if the result must be cached - - - - - - - Sets the current active shader, which automatically unbinds the previous shader - if it was bound using an OpenFL Shader object - - - - Updates the current OpenGL viewport using the current OpenFL stage coordinates - - - - Updates the current active shader with cached alpha, color transform, - bitmap data and other uniform or attribute values. This should be called in advance - of rendering - - - - Updates the active shader to expect an alpha array, if the current shader - is compatible with OpenFL core shaders - - - - Updates the active shader to expect a color transform array, if the current shader - is compatible with OpenFL core shaders - - <__cleanup set="method" line="432"> - - - - <__clear set="method" line="448" override="1"> - - - - <__clearShader set="method" line="462"> - - - - <__copyShader set="method" line="484"> - - - - - - - <__getMatrix set="method" line="494"> - - - - - - - - <__initShader set="method" line="530"> - - - - - - - <__initDisplayShader set="method" line="549"> - - - - - - - <__initGraphicsShader set="method" line="568"> - - - - - - - <__initShaderBuffer set="method" line="587"> - - - - - - - <__popMask set="method" line="597" override="1"> - - - - <__popMaskObject set="method" line="624" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__popMaskRect set="method" line="645" override="1"> - - - - <__pushMask set="method" line="662" override="1"> - - - - - - - <__pushMaskObject set="method" line="683" override="1"> - - - - - - - { handleScrollRect : true } - - - - <__pushMaskRect set="method" line="708" override="1"> - - - - - - - - <__render set="method" line="746" override="1"> - - - - - - - <__renderDrawable set="method" line="842"> - - - - - - - <__renderDrawableMask set="method" line="868"> - - - - - - - <__renderFilterPass set="method" line="894"> - - - - - - - - - { clear : true } - - - - <__resize set="method" line="937" override="1"> - - - - - - - - <__resumeClipAndMask set="method" line="954"> - - - - - - - <__scissorRect set="method" line="977"> - - - - - - { clipRect : null } - - - - <__setBlendMode set="method" line="999" override="1"> - - - - - - - <__setRenderTarget set="method" line="1036"> - - - - - - - <__setShaderBuffer set="method" line="1047"> - - - - - - - <__suspendClipAndMask set="method" line="1053"> - - - - <__updateShaderBuffer set="method" line="1067"> - - - - - - - - - - - - - - { defaultRenderTarget : null } - - - - **BETA** - - The OpenGLRenderer API exposes support for OpenGL render instructions within the - `RenderEvent.RENDER_OPENGL` event. - - - "tags=\"haxe,release\"" - - lime.graphics.GLRenderContext - openfl.display._internal.ShaderBuffer - openfl.display3D.Context3D - openfl.display.BitmapData - openfl.display.DisplayObject - openfl.display.Graphics - openfl.display.IBitmapDrawable - openfl.display.Shader - openfl.display.ShaderParameter - openfl.display.Stage3D - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - openfl.display._internal - openfl.display3D.textures - openfl.display3D - openfl.display - openfl.text - - - - - - Chooses compression speed over file size. Setting this property to true improves - compression speed but creates larger files. - - - - - - - { fastCompression : false } - Creates a PNGEncoderOptions object, optionally specifying compression settings. - - @param fastCompression The initial compression mode. - - The PNGEncoderOptions class defines a compression algorithm for the - `openfl.display.BitmapData.encode()` method. - - - "tags=\"haxe,release\"" - - - - - - - - - The PixelSnapping class is an enumeration of constant values for setting - the pixel snapping options by using the `pixelSnapping` property - of a Bitmap object. - - - - - - cast 0 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that the bitmap image is always snapped to the - nearest pixel, independent of any transformation. - - - - - cast 1 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that the bitmap image is snapped to the nearest - pixel if it is drawn with no rotation or skew and it is drawn at a scale - factor of 99.9% to 100.1%. If these conditions are satisfied, the image is - drawn at 100% scale, snapped to the nearest pixel. Internally, this - setting allows the image to be drawn as fast as possible by using the - vector renderer. - - - - - cast 2 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that no pixel snapping occurs. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that the bitmap image is always snapped to the - nearest pixel, independent of any transformation. - - - - - cast 1 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that the bitmap image is snapped to the nearest - pixel if it is drawn with no rotation or skew and it is drawn at a scale - factor of 99.9% to 100.1%. If these conditions are satisfied, the image is - drawn at 100% scale, snapped to the nearest pixel. Internally, this - setting allows the image to be drawn as fast as possible by using the - vector renderer. - - - - - cast 2 - - - - A constant value used in the `pixelSnapping` property of a - Bitmap object to specify that no pixel snapping occurs. - - - - - - - - - - - - - - - - - - - - - - ()]]> - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { display : null } - - The Preloader class is a Lime Preloader instance that uses an OpenFL - display object to display loading progress. - - - "tags=\"haxe,release\"" - - openfl.display.LoaderInfo - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils._internal.AssetsMacro.initBinding() - openfl.utils._internal.AssetsMacro.initBinding() - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - kernel DoNothing - < - namespace: "Adobe::Example"; - vendor: "Adobe examples"; - version: 1; - description: "A shader that does nothing, but does it well."; - > - { - input image4 src; - - output pixel4 dst; - - parameter float2 size - < - description: "The size of the image to which the kernel is applied"; - minValue: float2(0.0, 0.0); - maxValue: float2(100.0, 100.0); - defaultValue: float2(50.0, 50.0); - >; - - parameter float radius - < - description: "The radius of the effect"; - minValue: 0.0; - maxValue: 50.0; - defaultValue: 25.0; - >; - - void evaluatePixel() - { - float2 one = (radius / radius) ∗ (size / size); - dst = sampleNearest(src, outCoord()); - } - } - ``` - - If you create a Shader instance by loading the byte code for this shader, - the ShaderData instance in its `data` property contains these properties: - - | Property | Data type | Value | - | --- | --- | --- | - | name | `String` | "DoNothing" | - | nameSpace | `String` | "Adobe::Example" | - | version | `String` | "1" | - | description | `String` | "A shader that does nothing, but does it well." | - | src | `ShaderInput` | _[A ShaderInput instance]_ | - | size | `ShaderParameter` | _[A ShaderParameter instance, with properties for the parameter metadata]_ | - | radius | `ShaderParameter` | _[A ShaderParameter instance, with properties for the parameter metadata]_ | - - Note that any input image or parameter that is defined in the shader - source code but not used in the shader's `evaluatePixel()` function is - removed when the shader is compiled to byte code. In that case, there is - no corresponding ShaderInput or ShaderParameter instance added as a - property of the ShaderData instance. - - Generally, developer code does not create a ShaderData instance. A - ShaderData instance containing data, parameters, and inputs for a shader - is available as the Shader instance's `data` property.]]> - - "tags=\"haxe,release\"" - - - "checkstyle:Dynamic" - - - <_new public="1" set="method" line="103" static="1"> - - - - - - Creates a ShaderData instance. Generally, developer code does not call - the ShaderData constructor directly. A ShaderData instance containing - data, parameters, and inputs for a Shader instance is accessed using - its `data` property. - - @param byteCode The shader's byte code. - - - - - - <_new public="1" set="method" line="103" static="1"> - - - - - - Creates a ShaderData instance. Generally, developer code does not call - the ShaderData constructor directly. A ShaderData instance containing - data, parameters, and inputs for a Shader instance is accessed using - its `data` property. - - @param byteCode The shader's byte code. - - - - - - - - instance.]]> - - - - The texture filter to use when binding this shader input. - - This property is not available when targeting Flash. - - - - instance. When the input - is a BitmapData instance the height is automatically determined.]]> - - - - "checkstyle:Dynamic" - The zero-based index of the input in the shader, indicating the order - of the input definitions in the shader. - - - - instance. - If a ByteArray value is assigned to the `input` property, the - following conditions must be met: - - * The `height` and `width` properties must be set. - * The byte array's contents must only consist of 32-bit floating-point - values. These values can be written using the `ByteArray.writeFloat()` - method. - * The total length in bytes of the ByteArray must be exactly `width` - times `height` times `channels` times 4. - * The byte array's `endian` property must be `Endian.LITTLE_ENDIAN`. - - If a Vector. instance is assigned to the `input` property, the - length of the Vector must be equal to `width` times `height` times - `channels`.]]> - - - - The mip filter to use when binding this shader input. - - This property is not available when targeting Flash. - - - - - - hide - "checkstyle:FieldDocComment" - - - - - instance. When the input - is a BitmapData instance the width is automatically determined.]]> - - - - The wrap mode to use when binding this shader input. - - This property is not available when targeting Flash. - - <__isUniform> - - - - <__disableGL set="method" line="152"> - - - - - - - - <__updateGL set="method" line="161"> - - - - - - - - - - - { overrideWrap : null, overrideMipFilter : null, overrideFilter : null, overrideInput : null } - - - - - - Creates a ShaderInput instance. Developer code does not call the - ShaderInput constructor directly. A ShaderInput instance is created - for each of a shader's inputs when the Shader instance is created. - - instance containing the image data and - assign it to the `input` property. - The ShaderInput instance representing a Shader instance's input image is - accessed as a property of the Shader instance's `data` property. The - ShaderInput property has the same name as the input's name in the shader - code. For example, if a shader defines an input named `src`, the - ShaderInput instance representing the `src` input is available as the - `src` property, as this example shows: - - ```haxe - myShader.data.src.input = new BitmapData(50, 50, true, 0xFF990000); - ``` - - For some uses of a Shader instance, you do not need to specify an input - image, because it is automatically specified by the operation. You only - need to specify an input when a Shader is used for the following: - - * Shader fill - * ShaderFilter, only for the second or additional inputs if the shader is - defined to use more than one input. (The object to which the filter is - applied is automatically used as the first input.) - * Shader blend mode, only for the third or additional inputs if the shader - is defined to use more than two inputs. (The objects being blended are - automatically used as the first and second inputs.) - * ShaderJob background execution - - If the shader is being executed using a ShaderJob instance to process a - ByteArray containing a linear array of data, set the ShaderInput - instance's `height` to 1 and `width` to the number of 32-bit floating - point values in the ByteArray. In that case, the input in the shader must - be defined with the `image1` data type. - - Generally, developer code does not create a ShaderInput instance directly. - A ShaderInput instance is created for each of a shader's inputs when the - Shader instance is created.]]> - - openfl.display3D.Context3D - "tags=\"haxe,release\"" - - - - - - - - - "checkstyle:Dynamic" - The zero-based index of the parameter. - - - - - - hide - "checkstyle:FieldDocComment" - - - - - The data type of the parameter as defined in the shader. The set of - possible values for the `type` property is defined by the constants in - the ShaderParameterType class. - - - - The value or values that are passed in as the parameter value to the - shader. The `value` property is an indexed Array. The number and type - of the elements of the Array correspond to the data type of the - parameter, which can be determined using the `type` property. - The following table indicates the parameter type and corresponding - number and data type of the `value` Array's elements: - - | Parameter type | # Elements | Element data type | - | --- | --- | --- | - | float (`ShaderParameterType.FLOAT`) | 1 | Number | - | float2 (`ShaderParameterType.FLOAT2`) | 2 | Number | - | float3 (`ShaderParameterType.FLOAT3`) | 3 | Number | - | float4 (`ShaderParameterType.FLOAT4`) | 4 | Number | - | int (`ShaderParameterType.INT`) | 1 | int or uint | - | int2 (`ShaderParameterType.INT2`) | 2 | int or uint | - | int3 (`ShaderParameterType.INT3`) | 3 | int or uint | - | int4 (`ShaderParameterType.INT4`) | 4 | int or uint | - | bool (`ShaderParameterType.BOOL`) | 1 | Boolean | - | bool2 (`ShaderParameterType.BOOL2`) | 2 | Boolean | - | bool3 (`ShaderParameterType.BOOL3`) | 3 | Boolean | - | bool4 (`ShaderParameterType.BOOL4`) | 4 | Boolean | - | float2x2 (`ShaderParameterType.MATRIX2X2`) | 4 | Number | - | float3x3 (`ShaderParameterType.MATRIX3X3`) | 9 | Number | - | float4x4 (`ShaderParameterType.MATRIX4X4`) | 16 | Number | - - For the matrix parameter types, the array elements fill the rows of - the matrix, then the columns. For example, suppose the following line - of ActionScript is used to fill a `float2x2` parameter named - `myMatrix`: - - ```haxe - myShader.data.myMatrix.value = [.1, .2, .3, .4]; - ``` - - Within the shader, the matrix elements have the following values: - - * `myMatrix[0][0]`: .1 - * `myMatrix[0][1]`: .2 - * `myMatrix[1][0]`: .3 - * `myMatrix[1][1]`: .4 - - <__arrayLength> - - - - <__internal> - - - - <__isBool> - - - - <__isFloat> - - - - <__isInt> - - - - <__isUniform> - - - - <__length> - - - - <__uniformMatrix> - - - - <__useArray> - - - - <__disableGL set="method" line="172"> - - - - - - - <__updateGL set="method" line="187"> - - - - - - - { overrideValue : null } - - - - <__updateGLFromBuffer set="method" line="423"> - - - - - - - - - - - - - - - - - - - ; - - parameter float radius - < - description: "The radius of the effect"; - minValue: 0.0; - maxValue: 50.0; - defaultValue: 25.0; - >; - ``` - - The ShaderParameter instance corresponding to the `size` parameter has the - following metadata properties in addition to its built-in properties: - - | Property name | Data type | Value | - | --- | --- | --- | - | `name` | String | `"size"` | - | `description` | String | `"The size of the image to which the kernel is applied"` | - | `minValue` | Array | `[0, 0]` | - | `maxValue` | Array | `[100, 100]` | - | `defaultValue` | Array | `[50, 50]` | - - The ShaderParameter corresponding to the `radius` parameter has the - following additional properties: - - | Property name | Data type | Value | - | --- | --- | --- | - | `name` | String | `"radius"` | - | `description` | String | `"The radius of the effect"` | - | `minValue` | Array | `[0]` | - | `maxValue` | Array | `[50]` | - | `defaultValue` | Array | `[25]` | - - Generally, developer code does not create a ShaderParameter instance - directly. A ShaderParameter instance is created for each of a shader's - parameters when the Shader instance is created.]]> - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - - - - - - - - - This class defines the constants that represent the possible values for - the ShaderParameter class's `type` property. Each constant represents one - of the data types available in Flash Player for parameters in the Pixel - Bender shader language. - - - - - - cast 0 - - - - Indicates that the shader parameter is defined as a `bool` value, - equivalent to a single Boolean instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is bool - myShader.data.param.value = [true]; - ``` - - - - - cast 1 - - - - Indicates that the shader parameter is defined as a `bool2` value, - equivalent to an Array of two Boolean instances in ActionScript. - - - - - cast 2 - - - - Indicates that the shader parameter is defined as a `bool3` value, - equivalent to an Array of three Boolean instances in ActionScript. - - - - - cast 3 - - - - Indicates that the shader parameter is defined as a `bool4` value, - equivalent to an Array of four Boolean instances in ActionScript. - - - - - cast 4 - - - - Indicates that the shader parameter is defined as a `float` value, - equivalent to a single Number instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is float - myShader.data.param.value = [22.5]; - ``` - - - - - cast 5 - - - - Indicates that the shader parameter is defined as a `float2` value, - equivalent to an Array of two Number instances in ActionScript. - - - - - cast 6 - - - - Indicates that the shader parameter is defined as a `float3` value, - equivalent to an Array of three Number instances in ActionScript. - - - - - cast 7 - - - - Indicates that the shader parameter is defined as a `float4` value, - equivalent to an Array of four Number instances in ActionScript. - - - - - cast 8 - - - - Indicates that the shader parameter is defined as an `int` value, - equivalent to a single int or uint instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is int - myShader.data.param.value = [275]; - ``` - - - - - cast 9 - - - - Indicates that the shader parameter is defined as an `int2` value, - equivalent to an Array of two int or uint instances in ActionScript. - - - - - cast 10 - - - - Indicates that the shader parameter is defined as an `int3` value, - equivalent to an Array of three int or uint instances in ActionScript. - - - - - cast 11 - - - - Indicates that the shader parameter is defined as an `int4` value, - equivalent to an Array of four int or uint instances in ActionScript. - - - - - cast 12 - - - - Indicates that the shader parameter is defined as a `float2x2` value, - equivalent to a 2-by-2 matrix. This matrix is represented as an Array - of four Number instances in ActionScript. - - - - - cast 13 - - - - Indicates that the shader parameter is defined as a `float2x3` value, - equivalent to a 2-by-3 matrix. This matrix is represented as an Array - of six Float instances in Haxe. - - - - - cast 14 - - - - Indicates that the shader parameter is defined as a `float2x4` value, - equivalent to a 2-by-4 matrix. This matrix is represented as an Array - of eight Float instances in Haxe. - - - - - cast 15 - - - - Indicates that the shader parameter is defined as a `float3x2` value, - equivalent to a 3-by-2 matrix. This matrix is represented as an Array - of six Float instances in Haxe. - - - - - cast 16 - - - - Indicates that the shader parameter is defined as a `float3x3` value, - equivalent to a 3-by-3 matrix. This matrix is represented as an Array - of nine Number instances in ActionScript. - - - - - cast 17 - - - - Indicates that the shader parameter is defined as a `float3x4` value, - equivalent to a 3-by-4 matrix. This matrix is represented as an Array - of twelve Float instances in Haxe. - - - - - cast 18 - - - - Indicates that the shader parameter is defined as a `float4x2` value, - equivalent to a 4-by-2 matrix. This matrix is represented as an Array - of eight Float instances in Haxe. - - - - - cast 19 - - - - Indicates that the shader parameter is defined as a `float4x3` value, - equivalent to a 4-by-3 matrix. This matrix is represented as an Array - of twelve Float instances in Haxe. - - - - - cast 20 - - - - Indicates that the shader parameter is defined as a `float4x4` value, - equivalent to a 4-by-4 matrix. This matrix is represented as an Array - of 16 Number instances in ActionScript. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Indicates that the shader parameter is defined as a `bool` value, - equivalent to a single Boolean instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is bool - myShader.data.param.value = [true]; - ``` - - - - - cast 1 - - - - Indicates that the shader parameter is defined as a `bool2` value, - equivalent to an Array of two Boolean instances in ActionScript. - - - - - cast 2 - - - - Indicates that the shader parameter is defined as a `bool3` value, - equivalent to an Array of three Boolean instances in ActionScript. - - - - - cast 3 - - - - Indicates that the shader parameter is defined as a `bool4` value, - equivalent to an Array of four Boolean instances in ActionScript. - - - - - cast 4 - - - - Indicates that the shader parameter is defined as a `float` value, - equivalent to a single Number instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is float - myShader.data.param.value = [22.5]; - ``` - - - - - cast 5 - - - - Indicates that the shader parameter is defined as a `float2` value, - equivalent to an Array of two Number instances in ActionScript. - - - - - cast 6 - - - - Indicates that the shader parameter is defined as a `float3` value, - equivalent to an Array of three Number instances in ActionScript. - - - - - cast 7 - - - - Indicates that the shader parameter is defined as a `float4` value, - equivalent to an Array of four Number instances in ActionScript. - - - - - cast 8 - - - - Indicates that the shader parameter is defined as an `int` value, - equivalent to a single int or uint instance in ActionScript. - Note that even though the parameter only expects a single value, the - `ShaderParameter.value` property is an Array, so the single value must - be the only element of an Array assigned to the `value` property, like - this: - - ```haxe - // assumes the shader has a parameter named "param" - // whose data type is int - myShader.data.param.value = [275]; - ``` - - - - - cast 9 - - - - Indicates that the shader parameter is defined as an `int2` value, - equivalent to an Array of two int or uint instances in ActionScript. - - - - - cast 10 - - - - Indicates that the shader parameter is defined as an `int3` value, - equivalent to an Array of three int or uint instances in ActionScript. - - - - - cast 11 - - - - Indicates that the shader parameter is defined as an `int4` value, - equivalent to an Array of four int or uint instances in ActionScript. - - - - - cast 12 - - - - Indicates that the shader parameter is defined as a `float2x2` value, - equivalent to a 2-by-2 matrix. This matrix is represented as an Array - of four Number instances in ActionScript. - - - - - cast 13 - - - - Indicates that the shader parameter is defined as a `float2x3` value, - equivalent to a 2-by-3 matrix. This matrix is represented as an Array - of six Float instances in Haxe. - - - - - cast 14 - - - - Indicates that the shader parameter is defined as a `float2x4` value, - equivalent to a 2-by-4 matrix. This matrix is represented as an Array - of eight Float instances in Haxe. - - - - - cast 15 - - - - Indicates that the shader parameter is defined as a `float3x2` value, - equivalent to a 3-by-2 matrix. This matrix is represented as an Array - of six Float instances in Haxe. - - - - - cast 16 - - - - Indicates that the shader parameter is defined as a `float3x3` value, - equivalent to a 3-by-3 matrix. This matrix is represented as an Array - of nine Number instances in ActionScript. - - - - - cast 17 - - - - Indicates that the shader parameter is defined as a `float3x4` value, - equivalent to a 3-by-4 matrix. This matrix is represented as an Array - of twelve Float instances in Haxe. - - - - - cast 18 - - - - Indicates that the shader parameter is defined as a `float4x2` value, - equivalent to a 4-by-2 matrix. This matrix is represented as an Array - of eight Float instances in Haxe. - - - - - cast 19 - - - - Indicates that the shader parameter is defined as a `float4x3` value, - equivalent to a 4-by-3 matrix. This matrix is represented as an Array - of twelve Float instances in Haxe. - - - - - cast 20 - - - - Indicates that the shader parameter is defined as a `float4x4` value, - equivalent to a 4-by-4 matrix. This matrix is represented as an Array - of 16 Number instances in ActionScript. - - - - - - - - - - - - - - - - - - - - - - This class defines the constants that represent the possible values for - the Shader class's `precisionHint` property. Each constant represents one - of the precision modes for executing shader operations. - The precision mode selection affects the following shader operations. - These operations are faster on an Intel processor with the SSE instruction - set: - - * `sin(x)` - * `cos(x)` - * `tan(x)` - * `asin(x)` - * `acos(x)` - * `atan(x)` - * `atan(x, y)` - * `exp(x)` - * `exp2(x)` - * `log(x)` - * `log2(x)` - * `pow(x, y)` - * `reciprocal(x)` - * `sqrt(x)` - - - - - - cast 0 - - - - Represents fast precision mode. - Fast precision mode is designed for maximum performance but does not - work consistently on different platforms and individual CPU - configurations. In many cases, this level of precision is sufficient - to create graphic effects without visible artifacts. - - It is usually faster to use fast precision mode than to use lookup - tables. - - - - - cast 1 - - - - Represents full precision mode. - In full precision mode, the shader computes all math operations to the - full width of the IEEE 32-bit floating standard. This mode provides - consistent behavior on all platforms. In this mode, some math - operations such as trigonometric and exponential functions can be - slow. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Represents fast precision mode. - Fast precision mode is designed for maximum performance but does not - work consistently on different platforms and individual CPU - configurations. In many cases, this level of precision is sufficient - to create graphic effects without visible artifacts. - - It is usually faster to use fast precision mode than to use lookup - tables. - - - - - cast 1 - - - - Represents full precision mode. - In full precision mode, the shader computes all math operations to the - full width of the IEEE 32-bit floating standard. This mode provides - consistent behavior on all platforms. In this mode, some math - operations such as trigonometric and exponential functions can be - slow. - - - - - - - - - - - - - - - - - - - - <__constructor static="1"> - - - - - - - - - Specifies a display object that is used as the visual object for the - button "Down" state - the state that the button is in when the user - selects the `hitTestState` object. - - - - A Boolean value that specifies whether a button is enabled. When a button - is disabled(the enabled property is set to `false`), the - button is visible but cannot be clicked. The default value is - `true`. This property is useful if you want to disable part of - your navigation; for example, you might want to disable a button in the - currently displayed page so that it can't be clicked and the page cannot - be reloaded. - - **Note:** To prevent mouseClicks on a button, set both the - `enabled` and `mouseEnabled` properties to - `false`. - - - - Specifies a display object that is used as the hit testing object for the - button. For a basic button, set the `hitTestState` property to - the same display object as the `overState` property. If you do - not set the `hitTestState` property, the SimpleButton is - inactive - it does not respond to user input events. - - - - Specifies a display object that is used as the visual object for the - button over state - the state that the button is in when the pointer is - positioned over the button. - - - - The SoundTransform object assigned to this button. A SoundTransform object - includes properties for setting volume, panning, left speaker assignment, - and right speaker assignment. This SoundTransform object applies to all - states of the button. This SoundTransform object affects only embedded - sounds. - - - - Indicates whether other display objects that are SimpleButton or MovieClip - objects can receive user input release events. The - `trackAsMenu` property lets you create menus. You can set the - `trackAsMenu` property on any SimpleButton or MovieClip object. - If the `trackAsMenu` property does not exist, the default - behavior is `false`. - - You can change the `trackAsMenu` property at any time; the - modified button immediately takes on the new behavior. - - - - Specifies a display object that is used as the visual object for the - button up state - the state that the button is in when the pointer is - not positioned over the button. - - - - A Boolean value that, when set to `true`, indicates whether the - hand cursor is shown when the pointer rolls over a button. If this - property is set to `false`, the arrow pointer cursor is - displayed instead. The default is `true`. - - You can change the `useHandCursor` property at any time; the - modified button immediately uses the new cursor behavior. - - <__currentState set="accessor"> - - - - <__downState> - - - - <__hitTestState> - - - - <__ignoreEvent> - - - - <__overState> - - - - <__previousStates> - - - - <__soundTransform> - - - - <__upState> - - - - <__getBounds set="method" line="196" override="1"> - - - - - - - - <__getRenderBounds set="method" line="209" override="1"> - - - - - - - - <__getCursor set="method" line="230" override="1"> - - - - <__hitTest set="method" line="236" override="1"> - - - - - - - - - - - - <__hitTestMask set="method" line="285" override="1"> - - - - - - - - <__setStageReference set="method" line="297" override="1"> - - - - - - - <__setTransformDirty set="method" line="312" override="1"> - - - - <__update set="method" line="327" override="1"> - - - - - - - - <__updateTransforms set="method" line="345" override="1"> - - - - - - { overrideTransform : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__this_onMouseDown set="method" line="502"> - - - - - - - <__this_onMouseOut set="method" line="510"> - - - - - - - <__this_onMouseOver set="method" line="520"> - - - - - - - <__this_onMouseUp set="method" line="533"> - - - - - - - - - - - - - - - { hitTestState : null, downState : null, overState : null, upState : null } - Creates a new SimpleButton instance. Any or all of the display objects - that represent the various button states can be set as parameters in the - constructor. - - @param upState The initial value for the SimpleButton up state. - @param overState The initial value for the SimpleButton over state. - @param downState The initial value for the SimpleButton down state. - @param hitTestState The initial value for the SimpleButton hitTest state. - - The SimpleButton class lets you control all instances of button symbols in - a SWF file. - - In Flash Professional, you can give a button an instance name in the - Property inspector. SimpleButton instance names are displayed in the Movie - Explorer and in the Insert Target Path dialog box in the Actions panel. - After you create an instance of a button in Flash Professional, you can use - the methods and properties of the SimpleButton class to manipulate buttons - with ActionScript. - - In ActionScript 3.0, you use the `new SimpleButton()` - constructor to create a SimpleButton instance. - - The SimpleButton class inherits from the InteractiveObject class. - - "tags=\"haxe,release\"" - - openfl.display.MovieClip - openfl.geom.Matrix - openfl.geom.Rectangle - openfl.utils._internal.AssetsMacro.initBinding() - - - - - - - The SpreadMethod class provides values for the `spreadMethod` - parameter in the `beginGradientFill()` and - `lineGradientStyle()` methods of the Graphics class. - - The following example shows the same gradient fill using various spread - methods: - - - - - - cast 0 - - - - Specifies that the gradient use the _pad_ spread method. - - - - - cast 1 - - - - Specifies that the gradient use the _reflect_ spread method. - - - - - cast 2 - - - - Specifies that the gradient use the _repeat_ spread method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that the gradient use the _pad_ spread method. - - - - - cast 1 - - - - Specifies that the gradient use the _reflect_ spread method. - - - - - cast 2 - - - - Specifies that the gradient use the _repeat_ spread method. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A value from the StageAlign class that specifies the alignment of the - stage in Flash Player or the browser. The following are valid values: - - The `align` property is only available to an object that is - in the same security sandbox as the Stage owner(the main SWF file). To - avoid this, the Stage owner can grant permission to the domain of the - calling object by calling the `Security.allowDomain()` method - or the `Security.alowInsecureDomain()` method. For more - information, see the "Security" chapter in the _ActionScript 3.0 - Developer's Guide_. - - - - Specifies whether this stage allows the use of the full screen mode - - - - Specifies whether this stage allows the use of the full screen with text input mode - - - - The associated Lime Application instance. - - - - The window background color. - - - - Specifies the effective pixel scaling factor of the stage. This - value is 1 on standard screens and HiDPI (Retina display) - screens. When the stage is rendered on HiDPI screens the pixel - resolution is doubled; even if the stage scaling mode is set to - `StageScaleMode.NO_SCALE`. `Stage.stageWidth` and `Stage.stageHeight` - continue to be reported in classic pixel units. - - - - **BETA** - - The current Context3D the default display renderer. - - This property is supported only when using hardware rendering. - - - - A value from the StageDisplayState class that specifies which display - state to use. The following are valid values: - - * `StageDisplayState.FULL_SCREEN` Sets AIR application or - Flash runtime to expand the stage over the user's entire screen, with - keyboard input disabled. - * `StageDisplayState.FULL_SCREEN_INTERACTIVE` Sets the AIR - application to expand the stage over the user's entire screen, with - keyboard input allowed.(Not available for content running in Flash - Player.) - * `StageDisplayState.NORMAL` Sets the Flash runtime back to - the standard stage display mode. - - - The scaling behavior of the movie in full-screen mode is determined by - the `scaleMode` setting(set using the - `Stage.scaleMode` property or the SWF file's `embed` - tag settings in the HTML file). If the `scaleMode` property is - set to `noScale` while the application transitions to - full-screen mode, the Stage `width` and `height` - properties are updated, and the Stage dispatches a `resize` - event. If any other scale mode is set, the stage and its contents are - scaled to fill the new screen dimensions. The Stage object retains its - original `width` and `height` values and does not - dispatch a `resize` event. - - The following restrictions apply to SWF files that play within an HTML - page(not those using the stand-alone Flash Player or not running in the - AIR runtime): - - - * To enable full-screen mode, add the `allowFullScreen` - parameter to the `object` and `embed` tags in the - HTML page that includes the SWF file, with `allowFullScreen` - set to `"true"`, as shown in the following example: - * Full-screen mode is initiated in response to a mouse click or key - press by the user; the movie cannot change `Stage.displayState` - without user input. Flash runtimes restrict keyboard input in full-screen - mode. Acceptable keys include keyboard shortcuts that terminate - full-screen mode and non-printing keys such as arrows, space, Shift, and - Tab keys. Keyboard shortcuts that terminate full-screen mode are: Escape - (Windows, Linux, and Mac), Control+W(Windows), Command+W(Mac), and - Alt+F4. - - A Flash runtime dialog box appears over the movie when users enter - full-screen mode to inform the users they are in full-screen mode and that - they can press the Escape key to end full-screen mode. - - * Starting with Flash Player 9.0.115.0, full-screen works the same in - windowless mode as it does in window mode. If you set the Window Mode - (`wmode` in the HTML) to Opaque Windowless - (`opaque`) or Transparent Windowless - (`transparent`), full-screen can be initiated, but the - full-screen window will always be opaque. - - These restrictions are _not_ present for SWF content running in - the stand-alone Flash Player or in AIR. AIR supports an interactive - full-screen mode which allows keyboard input. - - For AIR content running in full-screen mode, the system screen saver - and power saving options are disabled while video content is playing and - until either the video stops or full-screen mode is exited. - - On Linux, setting `displayState` to - `StageDisplayState.FULL_SCREEN` or - `StageDisplayState.FULL_SCREEN_INTERACTIVE` is an asynchronous - operation. - - @throws SecurityError Calling the `displayState` property of a - Stage object throws an exception for any caller that - is not in the same security sandbox as the Stage - owner(the main SWF file). To avoid this, the Stage - owner can grant permission to the domain of the - caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - Trying to set the `displayState` property - while the settings dialog is displayed, without a - user response, or if the `param` or - `embed` HTML tag's - `allowFullScreen` attribute is not set to - `true` throws a security error. - - - - The interactive object with keyboard focus; or `null` if focus - is not set or if the focused object belongs to a security sandbox to which - the calling object does not have access. - - @throws Error Throws an error if focus cannot be set to the target. - - - - Gets and sets the frame rate of the stage. The frame rate is defined as - frames per second. By default the rate is set to the frame rate of the - first SWF file loaded. Valid range for the frame rate is from 0.01 to 1000 - frames per second. - - **Note:** An application might not be able to follow high frame rate - settings, either because the target platform is not fast enough or the - player is synchronized to the vertical blank timing of the display device - (usually 60 Hz on LCD devices). In some cases, a target platform might - also choose to lower the maximum frame rate if it anticipates high CPU - usage. - - For content running in Adobe AIR, setting the `frameRate` - property of one Stage object changes the frame rate for all Stage objects - (used by different NativeWindow objects). - - @throws SecurityError Calling the `frameRate` property of a - Stage object throws an exception for any caller that - is not in the same security sandbox as the Stage - owner(the main SWF file). To avoid this, the Stage - owner can grant permission to the domain of the - caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - Returns the height of the monitor that will be used when going to full - screen size, if that state is entered immediately. If the user has - multiple monitors, the monitor that's used is the monitor that most of - the stage is on at the time. - **Note**: If the user has the opportunity to move the browser from one - monitor to another between retrieving the value and going to full - screen size, the value could be incorrect. If you retrieve the value - in an event handler that sets `Stage.displayState` to - `StageDisplayState.FULL_SCREEN`, the value will be correct. - - This is the pixel height of the monitor and is the same as the stage - height would be if `Stage.align` is set to `StageAlign.TOP_LEFT` and - `Stage.scaleMode` is set to `StageScaleMode.NO_SCALE`. - - - - www.adobe.com/go/display_settings.]]> - - - - Returns the width of the monitor that will be used when going to full - screen size, if that state is entered immediately. If the user has - multiple monitors, the monitor that's used is the monitor that most of - the stage is on at the time. - **Note**: If the user has the opportunity to move the browser from one - monitor to another between retrieving the value and going to full - screen size, the value could be incorrect. If you retrieve the value - in an event handler that sets `Stage.displayState` to - `StageDisplayState.FULL_SCREEN`, the value will be correct. - - This is the pixel width of the monitor and is the same as the stage - width would be if `Stage.align` is set to `StageAlign.TOP_LEFT` and - `Stage.scaleMode` is set to `StageScaleMode.NO_SCALE`. - - - - A value from the StageQuality class that specifies which rendering quality - is used. The following are valid values: - - * `StageQuality.LOW` - Low rendering quality. Graphics are - not anti-aliased, and bitmaps are not smoothed, but runtimes still use - mip-mapping. - * `StageQuality.MEDIUM` - Medium rendering quality. - Graphics are anti-aliased using a 2 x 2 pixel grid, bitmap smoothing is - dependent on the `Bitmap.smoothing` setting. Runtimes use - mip-mapping. This setting is suitable for movies that do not contain - text. - * `StageQuality.HIGH` - High rendering quality. Graphics - are anti-aliased using a 4 x 4 pixel grid, and bitmap smoothing is - dependent on the `Bitmap.smoothing` setting. Runtimes use - mip-mapping. This is the default rendering quality setting that Flash - Player uses. - * `StageQuality.BEST` - Very high rendering quality. - Graphics are anti-aliased using a 4 x 4 pixel grid. If - `Bitmap.smoothing` is `true` the runtime uses a high - quality downscale algorithm that produces fewer artifacts(however, using - `StageQuality.BEST` with `Bitmap.smoothing` set to - `true` slows performance significantly and is not a recommended - setting). - - - Higher quality settings produce better rendering of scaled bitmaps. - However, higher quality settings are computationally more expensive. In - particular, when rendering scaled video, using higher quality settings can - reduce the frame rate. - - In the desktop profile of Adobe AIR, `quality` can be set to - `StageQuality.BEST` or `StageQuality.HIGH`(and the - default value is `StageQuality.HIGH`). Attempting to set it to - another value has no effect(and the property remains unchanged). In the - moble profile of AIR, all four quality settings are available. The default - value on mobile devices is `StageQuality.MEDIUM`. - - For content running in Adobe AIR, setting the `quality` - property of one Stage object changes the rendering quality for all Stage - objects(used by different NativeWindow objects). - **_Note:_** The operating system draws the device fonts, which are - therefore unaffected by the `quality` property. - - @throws SecurityError Calling the `quality` property of a Stage - object throws an exception for any caller that is - not in the same security sandbox as the Stage owner - (the main SWF file). To avoid this, the Stage owner - can grant permission to the domain of the caller by - calling the `Security.allowDomain()` - method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - A value from the StageScaleMode class that specifies which scale mode to - use. The following are valid values: - - * `StageScaleMode.EXACT_FIT` - The entire application is - visible in the specified area without trying to preserve the original - aspect ratio. Distortion can occur, and the application may appear - stretched or compressed. - * `StageScaleMode.SHOW_ALL` - The entire application is - visible in the specified area without distortion while maintaining the - original aspect ratio of the application. Borders can appear on two sides - of the application. - * `StageScaleMode.NO_BORDER` - The entire application fills - the specified area, without distortion but possibly with some cropping, - while maintaining the original aspect ratio of the application. - * `StageScaleMode.NO_SCALE` - The entire application is - fixed, so that it remains unchanged even as the size of the player window - changes. Cropping might occur if the player window is smaller than the - content. - - - @throws SecurityError Calling the `scaleMode` property of a - Stage object throws an exception for any caller that - is not in the same security sandbox as the Stage - owner(the main SWF file). To avoid this, the Stage - owner can grant permission to the domain of the - caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - Specifies whether to show or hide the default items in the Flash - runtime context menu. - If the `showDefaultContextMenu` property is set to `true` (the - default), all context menu items appear. If the - `showDefaultContextMenu` property is set to `false`, only the Settings - and About... menu items appear. - - @throws SecurityError Calling the `showDefaultContextMenu` property of - a Stage object throws an exception for any - caller that is not in the same security sandbox - as the Stage owner (the main SWF file). To avoid - this, the Stage owner can grant permission to - the domain of the caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. For - more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - The area of the stage that is currently covered by the software - keyboard. - The area has a size of zero (0,0,0,0) when the soft keyboard is not - visible. - - When the keyboard opens, the `softKeyboardRect` is set at the time the - softKeyboardActivate event is dispatched. If the keyboard changes size - while open, the runtime updates the `softKeyboardRect` property and - dispatches an additional softKeyboardActivate event. - - **Note:** On Android, the area covered by the keyboard is estimated - when the operating system does not provide the information necessary - to determine the exact area. This problem occurs in fullscreen mode - and also when the keyboard opens in response to an InteractiveObject - receiving focus or invoking the `requestSoftKeyboard()` method. - - - - A list of Stage3D objects available for displaying 3-dimensional content. - - You can use only a limited number of Stage3D objects at a time. The number of - available Stage3D objects depends on the platform and on the available hardware. - - A Stage3D object draws in front of a StageVideo object and behind the OpenFL - display list. - - - - Specifies whether or not objects display a glowing border when they have - focus. - - @throws SecurityError Calling the `stageFocusRect` property of - a Stage object throws an exception for any caller - that is not in the same security sandbox as the - Stage owner(the main SWF file). To avoid this, the - Stage owner can grant permission to the domain of - the caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - The current height, in pixels, of the Stage. - - If the value of the `Stage.scaleMode` property is set to - `StageScaleMode.NO_SCALE` when the user resizes the window, the - Stage content maintains its size while the `stageHeight` - property changes to reflect the new height size of the screen area - occupied by the SWF file.(In the other scale modes, the - `stageHeight` property always reflects the original height of - the SWF file.) You can add an event listener for the `resize` - event and then use the `stageHeight` property of the Stage - class to determine the actual pixel dimension of the resized Flash runtime - window. The event listener allows you to control how the screen content - adjusts when the user resizes the window. - - Air for TV devices have slightly different behavior than desktop - devices when you set the `stageHeight` property. If the - `Stage.scaleMode` property is set to - `StageScaleMode.NO_SCALE` and you set the - `stageHeight` property, the stage height does not change until - the next frame of the SWF. - - **Note:** In an HTML page hosting the SWF file, both the - `object` and `embed` tags' `height` - attributes must be set to a percentage(such as `100%`), not - pixels. If the settings are generated by JavaScript code, the - `height` parameter of the `AC_FL_RunContent() ` - method must be set to a percentage, too. This percentage is applied to the - `stageHeight` value. - - @throws SecurityError Calling the `stageHeight` property of a - Stage object throws an exception for any caller that - is not in the same security sandbox as the Stage - owner(the main SWF file). To avoid this, the Stage - owner can grant permission to the domain of the - caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - Specifies the current width, in pixels, of the Stage. - - If the value of the `Stage.scaleMode` property is set to - `StageScaleMode.NO_SCALE` when the user resizes the window, the - Stage content maintains its defined size while the `stageWidth` - property changes to reflect the new width size of the screen area occupied - by the SWF file.(In the other scale modes, the `stageWidth` - property always reflects the original width of the SWF file.) You can add - an event listener for the `resize` event and then use the - `stageWidth` property of the Stage class to determine the - actual pixel dimension of the resized Flash runtime window. The event - listener allows you to control how the screen content adjusts when the - user resizes the window. - - Air for TV devices have slightly different behavior than desktop - devices when you set the `stageWidth` property. If the - `Stage.scaleMode` property is set to - `StageScaleMode.NO_SCALE` and you set the - `stageWidth` property, the stage width does not change until - the next frame of the SWF. - - **Note:** In an HTML page hosting the SWF file, both the - `object` and `embed` tags' `width` - attributes must be set to a percentage(such as `100%`), not - pixels. If the settings are generated by JavaScript code, the - `width` parameter of the `AC_FL_RunContent() ` - method must be set to a percentage, too. This percentage is applied to the - `stageWidth` value. - - @throws SecurityError Calling the `stageWidth` property of a - Stage object throws an exception for any caller that - is not in the same security sandbox as the Stage - owner (the main SWF file). To avoid this, the Stage - owner can grant permission to the domain of the - caller by calling the - `Security.allowDomain()` method or the - `Security.allowInsecureDomain()` method. - For more information, see the "Security" chapter in - the _ActionScript 3.0 Developer's Guide_. - - - - The associated Lime Window instance for this Stage. - - <__cacheFocus> - - - Indicates whether GPU compositing is available and in use. The - `wmodeGPU` value is `true` _only_ when all three of the following - conditions exist: - * GPU compositing has been requested. - * GPU compositing is available. - * GPU compositing is in use. - - Specifically, the `wmodeGPU` property indicates one of the following: - - 1. GPU compositing has not been requested or is unavailable. In this - case, the `wmodeGPU` property value is `false`. - 2. GPU compositing has been requested (if applicable and available), - but the environment is operating in "fallback mode" (not optimal - rendering) due to limitations of the content. In this case, the - `wmodeGPU` property value is `true`. - 3. GPU compositing has been requested (if applicable and available), - and the environment is operating in the best mode. In this case, the - `wmodeGPU` property value is also `true`. - - In other words, the `wmodeGPU` property identifies the capability and - state of the rendering environment. For runtimes that do not support - GPU compositing, such as AIR 1.5.2, the value is always `false`, - because (as stated above) the value is `true` only when GPU - compositing has been requested, is available, and is in use. - - The `wmodeGPU` property is useful to determine, at runtime, whether or - not GPU compositing is in use. The value of `wmodeGPU` indicates if - your content is going to be scaled by hardware, or not, so you can - present graphics at the correct size. You can also determine if you're - rendering in a fast path or not, so that you can adjust your content - complexity accordingly. - - For Flash Player in a browser, GPU compositing can be requested by the - value of `gpu` for the `wmode` HTML parameter in the page hosting the - SWF file. For other configurations, GPU compositing can be requested - in the header of a SWF file (set using SWF authoring tools). - - However, the `wmodeGPU` property does not identify the current - rendering performance. Even if GPU compositing is "in use" the - rendering process might not be operating in the best mode. To adjust - your content for optimal rendering, use a Flash runtime debugger - version, and set the `DisplayGPUBlendsetting` in your mm.cfg file. - - **Note:** This property is always `false` when referenced from - ActionScript that runs before the runtime performs its first rendering - pass. For example, if you examine `wmodeGPU` from a script in Frame 1 - of Adobe Flash Professional, and your SWF file is the first SWF file - loaded in a new instance of the runtime, then the `wmodeGPU` value is - `false`. To get an accurate value, wait until at least one rendering - pass has occurred. If you write an event listener for the `exitFrame` - event of any `DisplayObject`, the `wmodeGPU` value at is the correct - value. - - <__clearBeforeRender> - - - - <__color> - - - - <__colorSplit> - - - - <__colorString> - - - - <__contentsScaleFactor> - - - - <__currentTabOrderIndex> - - - - <__deltaTime> - - - - <__dirty> - - - - <__displayMatrix> - - - - <__displayRect> - - - - <__displayState> - - - - <__dragBounds> - - - - <__dragObject> - - - - <__dragOffsetX> - - - - <__dragOffsetY> - - - - <__focus> - - - - <__forceRender> - - - - <__fullscreen> - - - - <__fullScreenSourceRect> - - - - <__invalidated> - - - - <__lastClickTime> - - - - <__lastClickTarget> - - - - <__logicalWidth> - - - - <__logicalHeight> - - - - <__macKeyboard> - - - - <__mouseDownLeft> - - - - <__mouseDownMiddle> - - - - <__mouseDownRight> - - - - <__mouseOutStack> - - - - <__mouseOverTarget> - - - - <__mouseX> - - - - <__mouseY> - - - - <__pendingMouseEvent> - - - - <__pendingMouseX> - - - - <__pendingMouseY> - - - - <__quality> - - - - <__renderer> - - - - <__rendering> - - - - <__rollOutStack> - - - - <__scaleMode> - - - - <__stack> - - - - <__touchData> - - - - - - - <__transparent> - - - - <__uncaughtErrorEvents> - - - - <__wasDirty> - - - - <__wasFullscreen> - - - - <__primaryTouch> - - - - - - Calling the `invalidate()` method signals Flash runtimes to - alert display objects on the next opportunity it has to render the display - list(for example, when the playhead advances to a new frame). After you - call the `invalidate()` method, when the display list is next - rendered, the Flash runtime sends a `render` event to each - display object that has registered to listen for the `render` - event. You must call the `invalidate()` method each time you - want the Flash runtime to send `render` events. - - The `render` event gives you an opportunity to make changes - to the display list immediately before it is actually rendered. This lets - you defer updates to the display list until the latest opportunity. This - can increase performance by eliminating unnecessary screen updates. - - The `render` event is dispatched only to display objects - that are in the same security domain as the code that calls the - `stage.invalidate()` method, or to display objects from a - security domain that has been granted permission via the - `Security.allowDomain()` method. - - - - - - <__broadcastEvent set="method" line="1156"> - - - - - - "checkstyle:Dynamic" - - - - <__createRenderer set="method" line="1189"> - - - - <__dispatchEvent set="method" line="1244" override="1"> - - - - - - ["checkstyle:Dynamic", "checkstyle:LeftCurly"] - - - - <__dispatchPendingMouseEvent set="method" line="1266"> - - - - <__dispatchStack set="method" line="1276"> - - - - - - - ["checkstyle:Dynamic", "checkstyle:LeftCurly"] - - - - <__dispatchTarget set="method" line="1397"> - - - - - - - "checkstyle:Dynamic" - - - - <__drag set="method" line="1417"> - - - - - - - <__getInteractive set="method" line="1453" override="1"> - - - - - - - <__globalToLocal set="method" line="1463" override="1"> - - - - - - - - <__handleError set="method" line="1474"> - - - - - - - "checkstyle:Dynamic" - - - - <__onKey set="method" line="1528"> - - - - - - - - - <__onLimeCreateWindow set="method" line="1767"> - - - - - - - <__onLimeGamepadAxisMove set="method" line="1801"> - - - - - - - - - <__onLimeGamepadButtonDown set="method" line="1820"> - - - - - - - - <__onLimeGamepadButtonUp set="method" line="1839"> - - - - - - - - <__onLimeGamepadConnect set="method" line="1858"> - - - - - - - <__onLimeGamepadDisconnect set="method" line="1882"> - - - - - - - <__onLimeKeyDown set="method" line="1901"> - - - - - - - - - <__onLimeKeyUp set="method" line="1908"> - - - - - - - - - <__onLimeModuleExit set="method" line="1915"> - - - - - - - <__onLimeMouseDown set="method" line="1936"> - - - - - - - - - - <__onLimeMouseMove set="method" line="1957"> - - - - - - - - - <__onLimeMouseMoveRelative set="method" line="1970"> - - - - - - - - - <__onLimeMouseUp set="method" line="1975"> - - - - - - - - - - <__onLimeMouseWheel set="method" line="1996"> - - - - - - - - - - <__onLimeRender set="method" line="2012"> - - - - - - - <__onLimeRenderContextLost set="method" line="2149"> - - - - <__onLimeRenderContextRestored set="method" line="2160"> - - - - - - - <__onLimeTextEdit set="method" line="2170"> - - - - - - - - - - <__onLimeTextInput set="method" line="2175"> - - - - - - - - <__onLimeTouchCancel set="method" line="2207"> - - - - - - - <__onLimeTouchMove set="method" line="2219"> - - - - - - - <__onLimeTouchEnd set="method" line="2224"> - - - - - - - <__onLimeTouchStart set="method" line="2235"> - - - - - - - <__onLimeUpdate set="method" line="2245"> - - - - - - - <__onLimeWindowActivate set="method" line="2252"> - - - - - - - <__onLimeWindowClose set="method" line="2259"> - - - - - - - <__onLimeWindowCreate set="method" line="2284"> - - - - - - - <__onLimeWindowDeactivate set="method" line="2294"> - - - - - - - <__onLimeWindowDropFile set="method" line="2301"> - - - - - - - - <__onLimeWindowEnter set="method" line="2304"> - - - - - - - <__onLimeWindowExpose set="method" line="2309"> - - - - - - - <__onLimeWindowFocusIn set="method" line="2316"> - - - - - - - <__onLimeWindowFocusOut set="method" line="2345"> - - - - - - - <__onLimeWindowFullscreen set="method" line="2376"> - - - - - - - <__onLimeWindowLeave set="method" line="2390"> - - - - - - - <__onLimeWindowMinimize set="method" line="2412"> - - - - - - - <__onLimeWindowMove set="method" line="2420"> - - - - - - - - - <__onLimeWindowResize set="method" line="2425"> - - - - - - - - - <__onLimeWindowRestore set="method" line="2448"> - - - - - - - <__onMouse set="method" line="2461"> - - - - - - - - - - <__onMouseWheel set="method" line="2858"> - - - - - - - - - <__onTouch set="method" line="2892"> - - - - - - - - - <__registerLimeModule set="method" line="3058"> - - - - - - - <__resize set="method" line="3077"> - - - - <__setLogicalSize set="method" line="3218"> - - - - - - - - <__startDrag set="method" line="3226"> - - - - - - - - - <__stopDrag set="method" line="3271"> - - - - - - - <__unregisterLimeModule set="method" line="3277"> - - - - - - - <__update set="method" line="3292" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { color : null } - - ® Player), - the Stage represents the entire area where Flash content is shown. For - content running in AIR on desktop operating systems, each NativeWindow - object has a corresponding Stage object. - - The Stage object is not globally accessible. You need to access it - through the `stage` property of a DisplayObject instance. - - The Stage class has several ancestor classes - DisplayObjectContainer, - InteractiveObject, DisplayObject, and EventDispatcher - from which it - inherits properties and methods. Many of these properties and methods are - either inapplicable to Stage objects, or require security checks when - called on a Stage object. The properties and methods that require security - checks are documented as part of the Stage class. - - In addition, the following inherited properties are inapplicable to - Stage objects. If you try to set them, an IllegalOperationError is thrown. - These properties may always be read, but since they cannot be set, they - will always contain default values. - - - * `accessibilityProperties` - * `alpha` - * `blendMode` - * `cacheAsBitmap` - * `contextMenu` - * `filters` - * `focusRect` - * `loaderInfo` - * `mask` - * `mouseEnabled` - * `name` - * `opaqueBackground` - * `rotation` - * `scale9Grid` - * `scaleX` - * `scaleY` - * `scrollRect` - * `tabEnabled` - * `tabIndex` - * `transform` - * `visible` - * `x` - * `y` - - - Some events that you might expect to be a part of the Stage class, such - as `enterFrame`, `exitFrame`, - `frameConstructed`, and `render`, cannot be Stage - events because a reference to the Stage object cannot be guaranteed to - exist in every situation where these events are used. Because these events - cannot be dispatched by the Stage object, they are instead dispatched by - every DisplayObject instance, which means that you can add an event - listener to any DisplayObject instance to listen for these events. These - events, which are part of the DisplayObject class, are called broadcast - events to differentiate them from events that target a specific - DisplayObject instance. Two other broadcast events, `activate` - and `deactivate`, belong to DisplayObject's superclass, - EventDispatcher. The `activate` and `deactivate` - events behave similarly to the DisplayObject broadcast events, except that - these two events are dispatched not only by all DisplayObject instances, - but also by all EventDispatcher instances and instances of other - EventDispatcher subclasses. For more information on broadcast events, see - the DisplayObject class. - - @event fullScreen Dispatched when the Stage object enters, or - leaves, full-screen mode. A change in - full-screen mode can be initiated through - ActionScript, or the user invoking a keyboard - shortcut, or if the current focus leaves the - full-screen window. - @event mouseLeave Dispatched by the Stage object when the - pointer moves out of the stage area. If the - mouse button is pressed, the event is not - dispatched. - @event orientationChange Dispatched by the Stage object when the stage - orientation changes. - - Orientation changes can occur when the - user rotates the device, opens a slide-out - keyboard, or when the - `setAspectRatio()` is called. - - **Note:** If the - `autoOrients` property is - `false`, then the stage - orientation does not change when a device is - rotated. Thus, StageOrientationEvents are - only dispatched for device rotation when - `autoOrients` is - `true`. - @event orientationChanging Dispatched by the Stage object when the stage - orientation begins changing. - - **Important:** orientationChanging - events are not dispatched on Android - devices. - - **Note:** If the - `autoOrients` property is - `false`, then the stage - orientation does not change when a device is - rotated. Thus, StageOrientationEvents are - only dispatched for device rotation when - `autoOrients` is - `true`. - @event resize Dispatched when the `scaleMode` - property of the Stage object is set to - `StageScaleMode.NO_SCALE` and the - SWF file is resized. - @event stageVideoAvailability Dispatched by the Stage object when the state - of the stageVideos property changes.]]> - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.DisplayObjectRenderer - openfl.display.LoaderInfo - openfl.display.Sprite - openfl.display.Stage3D - openfl.events.Event - openfl.events.UncaughtErrorEvents - openfl.geom.Matrix - openfl.geom.Point - openfl.ui.GameInput - openfl.ui.Keyboard - openfl.ui.Mouse - - - - - <__active static="1"> - - - - - - The Context3D object associated with this Stage3D instance. - - This property is initially `null`. To create the Context3D instance for this - Stage3D object, add an event listener for the `context3DCreate` event and then call - the `requestContext3D` method. The listener is called once the Context3D object has - been created. - - - - Specifies whether this Stage3D object is visible. - - Use this property to temporarily hide a Stage3D object on the Stage. This property - defaults to `true`. - - - - The horizontal coordinate of the Stage3D display on the stage, in pixels. - - This property defaults to zero. - - - - The vertical coordinate of the Stage3D display on the stage, in pixels. - - This property defaults to zero. - - <__contextLost> - - - - <__contextRequested> - - - - <__height> - - - - <__indexBuffer> - - - - <__projectionTransform> - - - - <__renderTransform> - - - - <__stage> - - - - <__vertexBuffer> - - - - <__width> - - - - <__x> - - - - <__y> - - - - - - - - - - { profile : BASELINE, context3DRenderMode : AUTO } - 0 ) - { - var stage3D:Stage3D = stage.stage3Ds[0]; - stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler ); - stage3D.requestContext3D( ); - } - - function myContext3DHandler ( event : Event ) : void - { - var targetStage3D : Stage3D = cast event.target; - InitAll3DResources( targetStage3D.context3D ); - StartRendering( targetStage3D.context3D ); - } - ``` - - @param context3DRenderMode The type of rendering context to request. The default - is `Context3DRenderMode.AUTO` for which the runtime will create a - hardware-accelerated context if possible and fall back to software otherwise. Use - `Context3DRenderMode.SOFTWARE` to request a software rendering context. Software - rendering is not available on mobile devices. Software rendering is available only - for `Context3DProfile.BASELINE` and `Context3DProfile.BASELINE_CONSTRAINED`. - @param profile (AIR 3.4 and higher) Specifies the extent to which Flash Player - supports lower-level GPUs. The default is `Context3DProfile.BASELINE`, which - returns a Context3D instance similar to that used in previous releases. To get - details of all available profiles, see openfl.display3D.Context3DProfile. - @event context3DCreate Dispatched when the requested rendering context is - successfully completed. - @event error Dispatched when the requested rendering context cannot be created. - @throws Error if no listeners for the `context3DCreate` event have been added to - this Stage3D object. - @throws ArgumentError if this method is called again with a different - `context3DRenderMode` before the previous call has completed.]]> - - - - - - - 0 ) - { - var stage3D:Stage3D = stage.stage3Ds[0]; - stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler ); - stage3D.requestContext3DMatchingProfiles(Vector.([Context3DProfile.BASELINE, Context3DProfile.BASELINE_EXTENDED])); - } - - function myContext3DHandler ( event : Event ) : Void - { - var targetStage3D : Stage3D = cast event.target; - if(targetStage3D.context3D.profile.localeCompare(Context3DProfile.BASELINE) == 0) - { - InitAll3DResources( targetStage3D.context3D ); - } - StartRendering( targetStage3D.context3D ); - } - ``` - - @param profiles (AIR 3.4 and higher) a profile arrays that developer want to - use in their flash program. When developer pass profile array to - `Stage3D.requestContext3DMatchingProfiles`, he will get a Context3D based on the - high level profile in that array according to their hardware capability. The - `rendermode` is set to AUTO, so the parameter is omitted. - @event context3DCreate Dispatched when the requested rendering context is - successfully completed. - @event error Dispatched when the requested rendering context cannot be created. - If the hardware is not available, it will not create a software context3d. - @throws Error if no listeners for the context3DCreate event have been added to - this Stage3D object. - @throws ArgumentError if this method is called before the previous call has - completed. - @throws ArgumentError if the item in array is not openfl.display3D.Context3DProfile.]]> - - <__createContext set="method" line="376"> - - - - <__dispatchError set="method" line="476"> - - - - <__dispatchCreate set="method" line="482"> - - - - <__lostContext set="method" line="491"> - - - - <__resize set="method" line="502"> - - - - - - - - <__restoreContext set="method" line="542"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ® Player), the - Stage represents the entire area where Flash content is shown. For content - running in AIR on desktop operating systems, each NativeWindow object has - a corresponding Stage object. - - The Stage object is not globally accessible. You need to access it through - the `stage` property of a DisplayObject instance. - - The Stage class has several ancestor classes נDisplayObjectContainer, - InteractiveObject, DisplayObject, and EventDispatcher נfrom which it - inherits properties and methods. Many of these properties and methods are - either inapplicable to Stage objects, or require security checks when - called on a Stage object. The properties and methods that require security - checks are documented as part of the Stage class. - - In addition, the following inherited properties are inapplicable to Stage - objects. If you try to set them, an IllegalOperationError is thrown. These - properties may always be read, but since they cannot be set, they will - always contain default values. - - * `accessibilityProperties` - * `alpha` - * `blendMode` - * `cacheAsBitmap` - * `contextMenu` - * `filters` - * `focusRect` - * `loaderInfo` - * `mask` - * `mouseEnabled` - * `name` - * `opaqueBackground` - * `rotation` - * `scale9Grid` - * `scaleX` - * `scaleY` - * `scrollRect` - * `tabEnabled` - * `tabIndex` - * `transform` - * `visible` - * `x` - * `y` - - Some events that you might expect to be a part of the Stage class, such as - `enterFrame`, `exitFrame`, `frameConstructed`, and `render`, cannot be - Stage events because a reference to the Stage object cannot be guaranteed - to exist in every situation where these events are used. Because these - events cannot be dispatched by the Stage object, they are instead - dispatched by every DisplayObject instance, which means that you can add - an event listener to any DisplayObject instance to listen for these - events. These events, which are part of the DisplayObject class, are - called broadcast events to differentiate them from events that target a - specific DisplayObject instance. Two other broadcast events, `activate` - and `deactivate`, belong to DisplayObject's superclass, EventDispatcher. - The `activate` and `deactivate` events behave similarly to the - DisplayObject broadcast events, except that these two events are - dispatched not only by all DisplayObject instances, but also by all - EventDispatcher instances and instances of other EventDispatcher - subclasses. For more information on broadcast events, see the - DisplayObject class. - - @event fullScreen Dispatched when the Stage object enters, or - leaves, full-screen mode. A change in - full-screen mode can be initiated through - ActionScript, or the user invoking a - keyboard shortcut, or if the current focus - leaves the full-screen window. - @event mouseLeave Dispatched by the Stage object when the - pointer moves out of the stage area. If the - mouse button is pressed, the event is not - dispatched. - @event orientationChange Dispatched by the Stage object when the - stage orientation changes. - Orientation changes can occur when the user - rotates the device, opens a slide-out - keyboard, or when the `setAspectRatio()` is - called. - - **Note:** If the `autoOrients` property is - `false`, then the stage orientation does not - change when a device is rotated. Thus, - StageOrientationEvents are only dispatched - for device rotation when `autoOrients` is - `true`. - @event orientationChanging Dispatched by the Stage object when the - stage orientation begins changing. - **Important:** orientationChanging events - are not dispatched on Android devices. - - **Note:** If the `autoOrients` property is - `false`, then the stage orientation does not - change when a device is rotated. Thus, - StageOrientationEvents are only dispatched - for device rotation when `autoOrients` is - `true`. - @event resize Dispatched when the `scaleMode` property of - the Stage object is set to - `StageScaleMode.NO_SCALE` and the SWF file - is resized. - @event stageVideoAvailability Dispatched by the Stage object when the - state of the stageVideos property changes.]]> - - - "tags=\"haxe,release\"" - - lime.graphics.opengl.GL - openfl.display3D.Context3D - openfl.display3D.Program3D - openfl.display.Bitmap - openfl.display.BitmapData - openfl.display.Stage - - - - - - - The StageAlign class provides constant values to use for the - `Stage.align` property. - - - - - - cast 0 - - - - Specifies that the Stage is aligned at the bottom. - - - - - cast 1 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 2 - - - - Specifies that the Stage is aligned to the right. - - - - - cast 3 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 4 - - - - Specifies that the Stage is aligned to the right. - - - - - cast 5 - - - - Specifies that the Stage is aligned at the top. - - - - - cast 6 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 7 - - - - Specifies that the Stage is aligned to the right. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that the Stage is aligned at the bottom. - - - - - cast 1 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 2 - - - - Specifies that the Stage is aligned to the right. - - - - - cast 3 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 4 - - - - Specifies that the Stage is aligned to the right. - - - - - cast 5 - - - - Specifies that the Stage is aligned at the top. - - - - - cast 6 - - - - Specifies that the Stage is aligned on the left. - - - - - cast 7 - - - - Specifies that the Stage is aligned to the right. - - - - - - - - - - - - - - - - - - - - - - The StageDisplayState class provides values for the - `Stage.displayState` property. - - - - - - cast 0 - - - - Specifies that the Stage is in full-screen mode. - - - - - cast 1 - - - - Specifies that the Stage is in full-screen mode with keyboard interactivity enabled. - - - - - cast 2 - - - - Specifies that the Stage is in normal mode. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that the Stage is in full-screen mode. - - - - - cast 1 - - - - Specifies that the Stage is in full-screen mode with keyboard interactivity enabled. - - - - - cast 2 - - - - Specifies that the Stage is in normal mode. - - - - - - - - - - - - - - - - - - - - - - The StageQuality class provides values for the `Stage.quality` - property. - - - - - - cast 0 - - - - Specifies very high rendering quality: graphics are anti-aliased using a 4 - x 4 pixel grid and bitmaps are always smoothed. - - - - - cast 1 - - - - Specifies high rendering quality: graphics are anti-aliased using a 4 x 4 - pixel grid, and bitmaps are smoothed if the movie is static. - - - - - cast 2 - - - - Specifies low rendering quality: graphics are not anti-aliased, and - bitmaps are not smoothed. - - - - - cast 3 - - - - Specifies medium rendering quality: graphics are anti-aliased using a 2 x - 2 pixel grid, but bitmaps are not smoothed. This setting is suitable for - movies that do not contain text. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies very high rendering quality: graphics are anti-aliased using a 4 - x 4 pixel grid and bitmaps are always smoothed. - - - - - cast 1 - - - - Specifies high rendering quality: graphics are anti-aliased using a 4 x 4 - pixel grid, and bitmaps are smoothed if the movie is static. - - - - - cast 2 - - - - Specifies low rendering quality: graphics are not anti-aliased, and - bitmaps are not smoothed. - - - - - cast 3 - - - - Specifies medium rendering quality: graphics are anti-aliased using a 2 x - 2 pixel grid, but bitmaps are not smoothed. This setting is suitable for - movies that do not contain text. - - - - - - - - - - - - - - - - - - - - - - The StageScaleMode class provides values for the - `Stage.scaleMode` property. - - - - - - cast 0 - - - - Specifies that the entire application be visible in the specified area without - trying to preserve the original aspect ratio. Distortion can occur. - - - - - cast 1 - - - - Specifies that the entire application fill the specified area, without - distortion but possibly with some cropping, while maintaining the original - aspect ratio of the application. - - - - - cast 2 - - - - Specifies that the size of the application be fixed, so that it remains - unchanged even as the size of the player window changes. Cropping might occur - if the player window is smaller than the content. - - - - - cast 3 - - - - Specifies that the entire application be visible in the specified area without - distortion while maintaining the original aspect ratio of the application. - Borders can appear on two sides of the application. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that the entire application be visible in the specified area without - trying to preserve the original aspect ratio. Distortion can occur. - - - - - cast 1 - - - - Specifies that the entire application fill the specified area, without - distortion but possibly with some cropping, while maintaining the original - aspect ratio of the application. - - - - - cast 2 - - - - Specifies that the size of the application be fixed, so that it remains - unchanged even as the size of the player window changes. Cropping might occur - if the player window is smaller than the content. - - - - - cast 3 - - - - Specifies that the entire application be visible in the specified area without - distortion while maintaining the original aspect ratio of the application. - Borders can appear on two sides of the application. - - - - - - - - - - - - - - - - - - - - - - Indicates the alpha transparency value of the object specified. Valid - values are 0 (fully transparent) to 1 (fully opaque). The default value is 1. - Tile objects with `alpha` set to 0 _are_ active, even though they are invisible. - - - - A value from the BlendMode class that specifies which blend mode to use. - - This property is supported only when using hardware rendering or the Flash target. - - - - - A ColorTransform object containing values that universally adjust the - colors in the display object. - - This property is supported only when using hardware rendering. - - - - "checkstyle:Dynamic" - An additional field for custom user-data - - - - - Indicates the height of the tile, in pixels. The height is - calculated based on the bounds of the tile after local transformations. - When you set the `height` property, the `scaleY` property - is adjusted accordingly. - If a tile has a height of zero, no change is applied - - - - The ID of the tile to draw from the Tileset - - - - A Matrix object containing values that alter the scaling, rotation, and - translation of the tile object. - - If the `matrix` property is set to a value (not `null`), the `x`, `y`, - `scaleX`, `scaleY` and the `rotation` values will be overwritten. - - - - - Modifies the origin x coordinate for this tile, which is the center value - used when determining position, scale and rotation. - - - - - Modifies the origin y coordinate for this tile, which is the center value - used when determining position, scale and rotation. - - - - Indicates the ITileContainer object that contains this display - object. Use the `parent` property to specify a relative path to - tile objects that are above the current tile object in the tile - list hierarchy. - - - - The custom rectangle to draw from the Tileset - - - - - Indicates the rotation of the Tile instance, in degrees, from its - original orientation. Values from 0 to 180 represent clockwise rotation; - values from 0 to -180 represent counterclockwise rotation. Values outside - this range are added to or subtracted from 360 to obtain a value within - the range. For example, the statement `tile.rotation = 450` - is the same as ` tile.rotation = 90`. - - - - - Indicates the horizontal scale (percentage) of the object as applied from - the origin point. The default origin point is (0,0). 1.0 - equals 100% scale. - - Scaling the local coordinate system changes the `x` and - `y` property values, which are defined in whole pixels. - - - - - Indicates the vertical scale (percentage) of an object as applied from the - origin point of the object. The default origin point is (0,0). - 1.0 is 100% scale. - - Scaling the local coordinate system changes the `x` and - `y` property values, which are defined in whole pixels. - - - - - Uses a custom Shader instance when rendering this tile. - - This property is only supported when using hardware rendering. - - - - The Tileset that this Tile is rendered from. - - If `null`, this Tile will use the Tileset value of its parent. - - - - Whether or not the tile object is visible. - - - - - Indicates the width of the tile, in pixels. The width is - calculated based on the bounds of the tile after local transformations. - When you set the `width` property, the `scaleX` property - is adjusted accordingly. - If a tile has a width of zero, no change is applied - - - - - Indicates the _x_ coordinate of the Tile instance relative - to the local coordinates of the parent ITileContainer. If the - object is inside a TileContainer that has transformations, it is - in the local coordinate system of the enclosing TileContainer. - Thus, for a TileContainer rotated 90° counterclockwise, the - TileContainer's children inherit a coordinate system that is - rotated 90° counterclockwise. The object's coordinates refer to the - registration point position. - - - - - Indicates the _y_ coordinate of the Tile instance relative - to the local coordinates of the parent ITileContainer. If the - object is inside a TileContainer that has transformations, it is - in the local coordinate system of the enclosing TileContainer. - Thus, for a TileContainer rotated 90° counterclockwise, the - TileContainer's children inherit a coordinate system that is - rotated 90° counterclockwise. The object's coordinates refer to the - registration point position. - - <__alpha> - - - - <__blendMode> - - - - <__colorTransform> - - - - <__dirty> - - - - <__id> - - - - <__length> - - - - <__matrix> - - - - <__originX> - - - - <__originY> - - - - <__rect> - - - - <__rotation> - - - - <__rotationCosine> - - - - <__rotationSine> - - - - <__scaleX> - - - - <__scaleY> - - - - <__shader> - - - - <__tileset> - - - - <__visible> - - - - - - Duplicates an instance of a Tile subclass. - - @return A new Tile object that is identical to the original. - - - - - - - Gets you the bounding box of the Tile. - It will find a tileset to know the original rect - Then it will apply all the transformations from his parent. - - @param targetCoordinateSpace The tile that works as a coordinate system. - @return Rectangle The bounding box. If no box found, this will return {0,0,0,0} rectangle instead of null. - - <__getBounds set="method" line="384"> - - - - - - - - - - - - - Evaluates the bounding box of the tile to see if it overlaps or - intersects with the bounding box of the `obj` tile. - Both tiles must be under the same Tilemap for this to work. - - @param obj The tile to test against. - @return `true` if the bounding boxes of the tiles - intersect; `false` if not. - - - - Calling the `invalidate()` method signals to have the current tile - redrawn the next time the tile object is eligible to be rendered. - - Invalidation is handled automatically, but in some cases it is - necessary to trigger it manually, such as changing the parameters - of a Shader instance attached to this tile. - - <__findTileRect set="method" line="460"> - - - - - - - <__findTileset set="method" line="497"> - - - - <__getWorldTransform set="method" line="512"> - - - Climbs all the way up to get a transformation matrix - adds his own matrix and then returns it. - @return Matrix The final transformation matrix from stage to this point. - - <__setRenderDirty set="method" line="524"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { originY : 0, originX : 0, rotation : 0, scaleY : 1, scaleX : 1, y : 0, x : 0, id : 0 } - - The Tile class is the base class for all objects that can be contained in a - ITileContainer object. Use the Tilemap or TileContainer class to arrange the tile - objects in the tile list. Tilemap or TileContainer objects can contain tile' - objects, while other the Tile class is a "leaf" node that have only parents and - siblings, no children. - - The Tile class supports basic functionality like the _x_ and _y_ position of an - tile, as well as more advanced properties of a tile such as its transformation - matrix. - - Tile objects render from a Tileset using either an `id` or a `rect` value, to - reference either an existing rectangle within the Tileset, or a custom rectangle. - - Tile objects cannot be rendered on their own. In order to display a Tile object, - it should be contained within a Tilemap instance. - - "tags=\"haxe,release\"" - - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - - - - - - - - Returns the number of tiles of this object. - - <__tiles> - - - - - - - - - Adds a Tile instance to this TileContainer instance. The tile is - added to the front (top) of all other tiles in this TileContainer - instance. (To add a tile to a specific index position, use the `addTileAt()` - method.) - - @param tile The Tile instance to add to this TileContainer instance. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - - Adds a Tile instance to this TileContainer instance. The tile is added - at the index position specified. An index of 0 represents the back (bottom) - of the rendered list for this TileContainer object. - - For example, the following example shows three tiles, labeled - a, b, and c, at index positions 0, 2, and 1, respectively: - - ![b over c over a](/images/DisplayObjectContainer_layers.jpg) - - @param tile The Tile instance to add to this TileContainer instance. - @param index The index position to which the tile is added. If you - specify a currently occupied index position, the tile object - that exists at that position and all higher positions are - moved up one position in the tile list. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Adds an Array of Tile instances to this TileContainer instance. The tiles - are added to the front (top) of all other tiles in this TileContainer - instance. - - @param tiles The Tile instances to add to this TileContainer instance. - @return The Tile Array that you pass in the `tiles` parameter. - - - - - - - - Determines whether the specified tile is contained within the - TileContainer instance. The search includes the entire tile list including - this TileContainer instance. Grandchildren, great-grandchildren, and so on - each return `true`. - - @param tile The tile object to test. - @return `true` if the `tile` object is contained within the TileContainer; - otherwise `false`. - - - - - - - Override from tile. A single tile, just has his rectangle. - A container must get a rectangle that contains all other rectangles. - - @param targetCoordinateSpace The tile that works as a coordinate system. - @return Rectangle The bounding box. If no box found, this will return {0,0,0,0} rectangle instead of null. - - - - - - - Returns the tile instance that exists at the specified index. - - @param index The index position of the tile object. - @return The tile object at the specified index position. - - - - - - - Returns the index position of a contained Tile instance. - - @param child The Tile instance to identify. - @return The index position of the tile object to identify. - - - - - - - Removes the specified Tile instance from the tile list of the TileContainer - instance. The index positions of any tile objects above the tile in the - TileContainer are decreased by 1. - - @param tile The Tile instance to remove. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Removes a Tile from the specified `index` position in the tile list of the - TileContainer. The index positions of any tile objects above the tile in - the TileContainer are decreased by 1. - - @param index The index of the Tile to remove. - @return The Tile instance that was removed. - - - - - - - - { endIndex : 0x7fffffff, beginIndex : 0 } - Removes all Tile instances from the tile list of the TileContainer instance. - - @param beginIndex The beginning position. - @param endIndex The ending position. - - - - - - - - Changes the position of an existing tile in the tile container. - This affects the layering of tile objects. For example, the following - example shows three tile objects, labeled a, b, and c, at index - positions 0, 1, and 2, respectively: - - ![c over b over a](/images/DisplayObjectContainerSetChildIndex1.jpg) - - When you use the `setTileIndex()` method and specify an - index position that is already occupied, the only positions that change - are those in between the tile object's former and new position. All - others will stay the same. If a tile is moved to an index LOWER than its - current index, all tiles in between will INCREASE by 1 for their index - reference. If a tile is moved to an index HIGHER than its current index, - all tiles in between will DECREASE by 1 for their index reference. For - example, if the tile container in the previous example is named - `container`, you can swap the position of the tile objects - labeled a and b by calling the following code: - - ```haxe - container.setTileIndex(container.getTileAt(1), 0); - ``` - - This code results in the following arrangement of objects: - - ![c over a over b](/images/DisplayObjectContainerSetChildIndex2.jpg) - - @param tile The Tile instance for which you want to change the index - number. - @param index The resulting index number for the `tile` object. - - - - - - - - - - - Sorts the z-order (front-to-back order) of all the tile objects in this - container based on a comparison function. - - A comparison function should take two arguments to compare. Given the elements - A and B, the result of `compareFunction` can have a negative, 0, or positive value: - - * A negative return value specifies that A appears before B in the sorted sequence. - * A return value of 0 specifies that A and B have the same sort order. - * A positive return value specifies that A appears after B in the sorted sequence. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. - - @param compareFunction A comparison function to use when sorting. - - - - - - - - Swaps the z-order (front-to-back order) of the two specified tile - objects. All other tile objects in the tile container remain in - the same index positions. - - @param child1 The first tile object. - @param child2 The second tile object. - - - - - - - - Swaps the z-order (front-to-back order) of the tile objects at the two - specified index positions in the tile list. All other tile objects in - the tile container remain in the same index positions. - - @param index1 The index position of the first tile object. - @param index2 The index position of the second tile object. - - - - - - - - - - - - - - - - - - - - - - - - - - - { originY : 0, originX : 0, rotation : 0, scaleY : 1, scaleX : 1, y : 0, x : 0 } - - The TileContainer type is a special kind of Tile that can hold - other tiles within it. - - Tile and TileContainer objects can be rendered by adding them to - a Tilemap instance. - - - "tags=\"haxe,release\"" - - openfl.geom.Matrix - openfl.geom.Rectangle - - - - - - - - Returns the number of tiles of this object. - - - - Enable or disable support for the `alpha` property of contained tiles. Disabling - this property can improve performance on certain renderers. - - - - Enable or disable support for the `blendMode` property of contained tiles. - Disabling this property can improve performance on certain renderers. - - - - Enable or disable support for the `colorTransform` property of contained tiles. - Disabling this property can improve performance on certain renderers. - - - - Optionally define a default Tileset to be used for all contained tiles. Tile - instances that do not have their `tileset` property defined will use this value. - - If a Tile object does not have a Tileset set, either using this property or using - the Tile `tileset` property, it will not be rendered. - - - - Controls whether or not the tilemap is smoothed when scaled. If - `true`, the bitmap is smoothed when scaled. If `false`, the tilemap is not - smoothed when scaled. - - <__group> - - - - <__tileset> - - - - <__buffer> - - - - <__bufferDirty> - - - - <__height> - - - - <__width> - - - - - - - - - Adds a Tile instance to this Tilemap instance. The tile is - added to the front (top) of all other tiles in this Tilemap - instance. (To add a tile to a specific index position, use the `addTileAt()` - method.) - - @param tile The Tile instance to add to this Tilemap instance. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - - Adds a Tile instance to this Tilemap instance. The tile is added - at the index position specified. An index of 0 represents the back (bottom) - of the rendered list for this Tilemap object. - - For example, the following example shows three tiles, labeled - a, b, and c, at index positions 0, 2, and 1, respectively: - - ![b over c over a](/images/DisplayObjectContainer_layers.jpg) - - @param tile The Tile instance to add to this Tilemap instance. - @param index The index position to which the tile is added. If you - specify a currently occupied index position, the tile object - that exists at that position and all higher positions are - moved up one position in the tile list. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Adds an Array of Tile instances to this Tilemap instance. The tiles - are added to the front (top) of all other tiles in this Tilemap - instance. - - @param tiles The Tile instances to add to this Tilemap instance. - @return The Tile Array that you pass in the `tiles` parameter. - - - - - - - Determines whether the specified tile is contained within the - Tilemap instance. The search includes the entire tile list including - this Tilemap instance. Grandchildren, great-grandchildren, and so on - each return `true`. - - @param tile The tile object to test. - @return `true` if the `tile` object is contained within the Tilemap; - otherwise `false`. - - - - - - - Returns the tile instance that exists at the specified index. - - @param index The index position of the tile object. - @return The tile object at the specified index position. - - - - - - - Returns the index position of a contained Tile instance. - - @param child The Tile instance to identify. - @return The index position of the tile object to identify. - - - - Returns a TileContainer with each of the tiles contained within this - Tilemap. - - @return A new TileContainer with the same Tile references as this Tilemap - - - - - - - Removes the specified Tile instance from the tile list of the Tilemap - instance. The index positions of any tile objects above the tile in the - Tilemap are decreased by 1. - - @param tile The Tile instance to remove. - @return The Tile instance that you pass in the `tile` parameter. - - - - - - - Removes a Tile from the specified `index` position in the tile list of the - Tilemap. The index positions of any tile objects above the tile in - the Tilemap are decreased by 1. - - @param index The index of the Tile to remove. - @return The Tile instance that was removed. - - - - - - - - { endIndex : 0x7fffffff, beginIndex : 0 } - Removes all Tile instances from the tile list of the ITileContainer instance. - - @param beginIndex The beginning position. - @param endIndex The ending position. - - - - - - - - Changes the position of an existing tile in the tile container. - This affects the layering of tile objects. For example, the following - example shows three tile objects, labeled a, b, and c, at index - positions 0, 1, and 2, respectively: - - ![c over b over a](/images/DisplayObjectContainerSetChildIndex1.jpg) - - When you use the `setTileIndex()` method and specify an - index position that is already occupied, the only positions that change - are those in between the tile object's former and new position. All - others will stay the same. If a tile is moved to an index LOWER than its - current index, all tiles in between will INCREASE by 1 for their index - reference. If a tile is moved to an index HIGHER than its current index, - all tiles in between will DECREASE by 1 for their index reference. For - example, if the tile container in the previous example is named - `container`, you can swap the position of the tile objects - labeled a and b by calling the following code: - - ```haxe - container.setTileIndex(container.getTileAt(1), 0); - ``` - - This code results in the following arrangement of objects: - - ![c over a over b](/images/DisplayObjectContainerSetChildIndex2.jpg) - - @param tile The Tile instance for which you want to change the index - number. - @param index The resulting index number for the `tile` object. - - - - - - - Sets all the Tile instances of this Tilemap instance. - - @param beginIndex The beginning position. - @param endIndex The ending position. - - - - - - - - - - - Sorts the z-order (front-to-back order) of all the tile objects in this - container based on a comparison function. - - A comparison function should take two arguments to compare. Given the elements - A and B, the result of `compareFunction` can have a negative, 0, or positive value: - - * A negative return value specifies that A appears before B in the sorted sequence. - * A return value of 0 specifies that A and B have the same sort order. - * A positive return value specifies that A appears after B in the sorted sequence. - - The sort operation is not guaranteed to be stable, which means that the - order of equal elements may not be retained. - - @param compareFunction A comparison function to use when sorting. - - - - - - - - Swaps the z-order (front-to-back order) of the two specified tile - objects. All other tile objects in the tile container remain in - the same index positions. - - @param child1 The first tile object. - @param child2 The second tile object. - - - - - - - - Swaps the z-order (front-to-back order) of the tile objects at the two - specified index positions in the tile list. All other tile objects in - the tile container remain in the same index positions. - - @param index1 The index position of the first tile object. - @param index2 The index position of the second tile object. - - <__enterFrame set="method" line="380" override="1"> - - - - - - - <__getBounds set="method" line="390" override="1"> - - - - - - - - <__hitTest set="method" line="404" override="1"> - - - - - - - - - - - - <__renderFlash set="method" line="428"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { smoothing : true, tileset : null } - Creates a new Tilemap object. - - @param width The width of the tilemap in pixels. - @param height The height of the tilemap in pixels. - @param tileset A Tileset being referenced. - @param smoothing Whether or not the tilemap is smoothed when scaled. For example, the following examples - show the same tilemap scaled by a factor of 3, with `smoothing` set to `false` (left) and `true` (right): - - ![A bitmap without smoothing.](/images/bitmap_smoothing_off.jpg) ![A bitmap with smoothing.](/images/bitmap_smoothing_on.jpg) - - The Tilemap class represents a "quad batch", or series of objects that are - rendered from the same bitmap. The Tilemap class is designed to encourage - the use of a single Tileset reference for best performance, but it is possible - to use unique Tileset references for each Tile or TileContainer within a - Tilemap. - - On software renderered platforms, the Tilemap class uses a rendering method - similar to BitmapData `copyPixels`, so it will perform fastest if tile objects - do not use rotation or scale. - - On hardware rendered platforms, the Tilemap class uses a rendering method - that is fast even with transforms, and allows support for additional features, - such as custom `shader` references, and color transform. Using multiple Shader - or Tileset references will require a new draw call each time there is a change. - - **Note:** The Tilemap class is not a subclass of the InteractiveObject - class, so it cannot dispatch mouse events. However, you can use the - `addEventListener()` method of the display object container that - contains the Tilemap object. - - - "tags=\"haxe,release\"" - - openfl.display.Tile - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - - - - - - The BitmapData object being referenced. - - - - The rectangles contained in this Tileset, structured as a Vector object. - - You can use the Tileset `rectData` property alongside the Graphics - `drawQuads` method as a convenient way of re-using a list of rectangles. - - - - Returns the number of rectangles defined in this Tileset. - - <__bitmapData> - - - - <__data> - - - - - - - - - Adds a new rectangle to this Tilemap object. - - @param rect A Rectangle represented a part of the referenced BitmapData object - @returns The assigned ID value for this new rectangle - - - - Duplicates an instance of a Tileset subclass. - - @return A new Tileset object that is identical to the original. - - - - - - - Returns whether the current Tileset already has a rectangle - defined that matches the dimensions of a specific rectangle - object. - - @param rect A Rectangle object to compare against - @returns Whether the Tileset already contains the value of this rectangle - - - - - - - Get the rectangle value associated with a specific tile ID. - - If the ID is invalid, then a `null` value will be returned. - - @param id A tile ID - @return A new Rectangle containing the tile source rectangle, or `null` if the - tile ID does not exist in this Tileset - - - - - - - Gets the tile ID associated with a specified rectangle - value, if it is defined in the Tileset. This will return - `null` if the rectangle value is not defined in the Tileset. - - @param rect A Rectangle object to compare against - @returns The defined tile ID, or `null` if the rectangle - value is not present in this Tileset - - - - - - - - - - - - - - - - - - - - - - - { rects : null } - Creates a new Tileset instance. - - @param bitmapData A BitmapData object to reference - @param rects An optional array of rectangles to define with the referenced BitmapData - - The Tileset class lets you specify logical rectangles within a larger - BitmapData object, to be rendered using a Tilemap instance. - - The `Tileset()` constructor allows you to create a Tileset - object that contains a reference to a BitmapData object. After you create a - Tileset object, use the `addRect()` method to specify rectangles to be used - for tile rendering. - - "tags=\"haxe,release\"" - - openfl.geom.Rectangle - - - - - - - - <__bitmapData public="1"> - <__uvHeight public="1"> - <__uvWidth public="1"> - <__uvX public="1"> - <__uvY public="1"> - <__update set="method" line="247"> - - - - - - - - - - - - { rect : null } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - openfl.display.Tileset - hide - - - - - - The original frame rate for this Timeline. - - - - An Array of Scenes contained within this Timeline. - - Scenes are assumed to occur in order, so if the first Scene - contains 10 frames, then the beginning of the second Scene will - be treated as frame 11 when setting FrameScripts or implementing - enterFrame(). - - - - An optional array of frame scripts to be executed. - - <__currentFrame> - - - - <__currentFrameLabel> - - - - <__currentLabel> - - - - <__currentLabels> - - - - <__currentScene> - - - - <__frameScripts> - - - - - - - - - - <__framesLoaded> - - - - <__frameTime> - - - - <__isPlaying> - - - - <__lastFrameScriptEval> - - - - <__lastFrameUpdate> - - - - <__scope> - - - - <__timeElapsed> - - - - <__totalFrames> - - - - - - - - - - OpenFL will call this method automatically. - - If you are making your own Timeline type, please override this method - and implement the first frame initialization for a MovieClip. - - OpenFL will expect to use one Timeline instance per MovieClip. - - Please initialize the first frame in this method. Afterward enterFrame() - will be called automatically when it is time to enter a different frame. - - - - - - - - OpenFL will call this method automatically for MovieClips with - attached timelines. - - Please update your attached MovieClip instance to the requested frame - when this method is called. - - - - - - - - OpenFL will call this method automatically. - - If you are making your own Timeline type, please override this method - and implement the initialization of a Sprite. - - Sprites do not use frame scripts, or enter multiple frames. In other - words, they will be similar to the first frame of a MovieClip. - - enterFrame() will not be called, and this Timeline object might be - re-used again. - - <__addFrameScript set="method" line="115"> - - - - - - - - <__attachMovieClip set="method" line="139"> - - - - - - - <__enterFrame set="method" line="188"> - - - - - - - <__evaluateFrameScripts set="method" line="225"> - - - - - - - <__getNextFrame set="method" line="257"> - - - - - - - <__goto set="method" line="278"> - - - - - - - <__gotoAndPlay set="method" line="290"> - - - - - - - { scene : null } - - - - <__gotoAndStop set="method" line="296"> - - - - - - - { scene : null } - - - - <__nextFrame set="method" line="302"> - - - - <__nextScene set="method" line="308"> - - - - <__play set="method" line="313"> - - - - <__prevFrame set="method" line="326"> - - - - <__prevScene set="method" line="332"> - - - - <__stop set="method" line="337"> - - - - <__resolveFrameReference set="method" line="342"> - - - - - - - <__updateFrameLabel set="method" line="368"> - - - - <__updateSymbol set="method" line="393"> - - - - - - - - Provides support for MovieClip animations (or a single frame Sprite) when - this class is overridden. - - For example, the OpenFL SWF library provides a Timeline generated from SWF - assets. However, any editor that may provide UI or display elements could - be used to generate assets for OpenFL timelines. - - To implement a custom Timeline, please override this class. Each Timeline - can set their original animation frame rate, and can also provide Scenes or - FrameScripts. OpenFL will automatically execute FrameScripts and request frame - updates. - - There are currently three internal methods which should not be called by the user, - which can be overridden to implement a new type of Timeline: - - attachMovieClip(); - enterFrame(); - initializeSprite(); - - "tags=\"haxe,release\"" - - - - - - - - Defines codes for culling algorithms that determine which triangles not to - render when drawing triangle paths. - - The terms `POSITIVE` and `NEGATIVE` refer to the - sign of a triangle's normal along the z-axis. The normal is a 3D vector - that is perpendicular to the surface of the triangle. - - A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order - has a positive normal value. That is, its normal points in a positive - z-axis direction, away from the current view point. When the - `TriangleCulling.POSITIVE` algorithm is used, triangles with - positive normals are not rendered. Another term for this is backface - culling. - - A triangle whose vertices are arranged in a counter-clockwise order has - a negative normal value. That is, its normal points in a negative z-axis - direction, toward the current view point. When the - `TriangleCulling.NEGATIVE` algorithm is used, triangles with - negative normals will not be rendered. - - - - - - cast 0 - - - - Specifies culling of all triangles facing toward the current view point. - - - - - cast 1 - - - - Specifies no culling. All triangles in the path are rendered. - - - - - cast 2 - - - - Specifies culling of all triangles facing away from the current view - point. This is also known as backface culling. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies culling of all triangles facing toward the current view point. - - - - - cast 1 - - - - Specifies no culling. All triangles in the path are rendered. - - - - - cast 2 - - - - Specifies culling of all triangles facing away from the current view - point. This is also known as backface culling. - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - The Window class is a Lime Window instance that automatically - initializes an OpenFL stage for the current window. - - - "tags=\"haxe,release\"" - - openfl.display.LoaderInfo - openfl.display.Stage - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stitch_threshold : 0.05, stitch : false } - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime.graphics.ImageBuffer - openfl.display.Bitmap - openfl.display.BitmapData - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.BitmapData - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.DisplayObjectContainer - - - - - - new DrawCommandBuffer() - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display._internal.DrawCommandReader - "checkstyle:FieldDocComment" - - - - - - 0.70710678118654752440084436210485 - - - - 0.4142135623730950488016887242097 - - - - - - - - - new DrawCommandBuffer() - - - - - - - - - - - - new DrawCommandBuffer() - - - - - new Matrix3() - - - - - - - - { strokeBefore : false } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { skipT : false } - - - - - - - - { stroke : false } - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.BitmapData - openfl.display.Graphics - openfl.geom.Matrix - openfl.geom.Point - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - new Matrix3() - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.display.Graphics - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.SimpleButton - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.BitmapData - openfl.display.Graphics - openfl.geom.Matrix - openfl.text.TextField - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - lime.graphics.ImageBuffer - openfl.display.BitmapData - openfl.display.Tile - openfl.display.TileContainer - openfl.display.Tilemap - openfl.display.Tileset - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - openfl.display.Bitmap - openfl.display.BitmapData - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - openfl.display.BitmapData - - - - - - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.DisplayObjectContainer - - - - - - 0.70710678118654752440084436210485 - - - - 0.4142135623730950488016887242097 - - - - - - - - - new DrawCommandBuffer() - - - - - - - - - - new DrawCommandBuffer() - - - - "checkstyle:Dynamic" - - - - - - - - { strokeBefore : false } - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { skipT : false } - - - - - - - - { stroke : false } - - - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.BitmapData - openfl.display.Graphics - openfl.geom.Matrix - openfl.geom.Point - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - openfl.display.SimpleButton - - - - - - - - - - - - - - - - - - - - - - openfl.text._internal.TextEngine - openfl.display.Graphics - openfl.geom.Matrix - openfl.text.TextField - openfl.text.TextFormat - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - lime.graphics.ImageBuffer - openfl.display.BitmapData - openfl.display.Tile - openfl.display.TileContainer - openfl.display.Tilemap - openfl.display.Tileset - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - openfl.media.Video - openfl.net.NetStream - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - " tags=\"haxe,release\" " - - openfl.display3D.Context3D - openfl.display.Bitmap - openfl.display.BitmapData - openfl.display.Shader - openfl.display.Stage - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - " tags=\"haxe,release\" " - - openfl.display.BitmapData - openfl.display.Shader - openfl.display3D.Context3D - - - - - - 0xFFFF - - - - 0x2AAA - - - - 0xFFFC - - - - - - - - - - - - - - - - - - { length : -1 } - - - - - - - - - { dataPerVertex : -1 } - - - - - - - - - - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.DisplayObject - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - " tags=\"haxe,release\" " - - openfl.display.DisplayObject - openfl.display.DisplayObjectContainer - - - - - - new BitmapData(1, 1, false, 0) - - - - - new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.DisplayObject - openfl.display.Graphics - openfl.display.Shader - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - new BitmapData(1, 1, false, 0) - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - "varying vec2 openfl_TextureCoordv;\n\n\t\tuniform sampler2D openfl_Texture;\n\n\t\tvoid main(void) {\n\n\t\t\tvec4 color = texture2D (openfl_Texture, openfl_TextureCoordv);\n\n\t\t\tif (color.a == 0.0) {\n\n\t\t\t\tdiscard;\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = color;\n\n\t\t\t}\n\n\t\t}" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform mat4 openfl_Matrix;\n\n\t\tvoid main(void) {\n\n\t\t\topenfl_TextureCoordv = openfl_TextureCoord;\n\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\n\t\t}" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.DisplayObject - openfl.display.BitmapData - openfl.display.Graphics - openfl.display.Shader - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - " tags=\"haxe,release\" " - - openfl.display.SimpleButton - - - - - - - - - - - - - - - - - - - - - - - - - - " tags=\"haxe,release\" " - - openfl.display.Graphics - openfl.text.TextField - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { isTopLevel : true } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display3D.VertexBuffer3D - openfl.display.Shader - openfl.display.Tilemap - openfl.display.Tileset - openfl.display.Tile - openfl.filters.BitmapFilter - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - <__textureSizeValue expr="[0, 0.]" line="22" static="1"> - - [0, 0.] - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Shader - openfl.geom.ColorTransform - openfl.media.Video - openfl.net.NetStream - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lime.graphics.ImageBuffer - openfl.display.Bitmap - openfl.display.BitmapData - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.DisplayObjectContainer - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.Graphics - openfl.geom.Matrix - openfl.geom.Rectangle - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.SimpleButton - - - - <__regexColor expr="~/color=("#([^"]+)"|'#([^']+)')/" line="20" static="1"> - - ~/color=("#([^"]+)"|'#([^']+)')/ - - <__regexFace expr="~/face=("([^"]+)"|'([^']+)')/" line="21" static="1"> - - ~/face=("([^"]+)"|'([^']+)')/ - - <__regexFont expr="~/<font ([^>]+)>/" line="22" static="1"> - - ]+)>/]]> - - <__regexCloseFont expr="new EReg("</font>", "gi")" line="23" static="1"> - - ", "gi")]]> - - <__regexSize expr="~/size=("([^"]+)"|'([^']+)')/" line="24" static="1"> - - ~/size=("([^"]+)"|'([^']+)')/ - - - - - - - - - - - - - - - - - - - - - - - - - - <__getAttributeMatch set="method" line="449" static="1"> - - - - - - openfl.display.DisplayObject - openfl.text._internal.TextEngine - openfl.text.TextField - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.display.DisplayObject - openfl.display.TileContainer - openfl.display.Tilemap - openfl.geom.Matrix - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.media.Video - openfl.net.NetStream - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display._internal - openfl.display._internal - "checkstyle:FieldDocComment" - - - - - - <_new public="1" get="inline" set="null" line="335" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="335" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="371" static="1"> - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="371" static="1"> - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="393" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="393" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="457" static="1"> - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="457" static="1"> - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="472" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="472" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="522" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="522" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="558" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="558" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="587" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="587" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="623" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="623" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="652" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="652" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="688" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="688" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="738" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="738" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="774" static="1"> - - - - - - - - <_new public="1" get="inline" set="null" line="774" static="1"> - - - - - - - - - - <_new public="1" get="inline" set="null" line="782" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="782" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="818" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="818" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="882" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="882" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="946" static="1"> - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="946" static="1"> - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="968" static="1"> - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="968" static="1"> - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="990" static="1"> - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="990" static="1"> - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="1005" static="1"> - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="1005" static="1"> - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="1020" static="1"> - - - - - - - - <_new public="1" get="inline" set="null" line="1020" static="1"> - - - - - - - - - <_new public="1" get="inline" set="null" line="1028" static="1"> - - - - - - - - <_new public="1" get="inline" set="null" line="1028" static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - - - <__renderFlash set="method"> - openfl.display._internal.FlashRenderer - - - - - new ColorTransform() - - - - new Bitmap() - - - - new Point() - - - - new Rectangle() - - - - - - - - - - - - - - - - - - - - - - openfl.display.Tile - openfl.display.TileContainer - openfl.display.Tilemap - openfl.display.Tileset - "checkstyle:FieldDocComment" - - - - - - hide - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - cast 8 - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - cast 9 - - - - - - - - cast 10 - - - - - - - - -

      - - - [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180] - "checkstyle:ConstantName" - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stitch_threshold : 0.05, stitch : false } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { textureAlpha : false, centroid : false, ignoreSampler : false, lodBias : 0.0, mipfilter : MIPNONE, filter : NEAREST, wrap : CLAMP } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display.Shader - "checkstyle:FieldDocComment" - - - - - - - false - Indicates if Context3D supports video texture. - - <__driverInfo static="1"> - - - - <__glDepthStencil expr="-1" line="255" static="1"> - - - -1 - - - - <__glMaxTextureMaxAnisotropy expr="-1" line="256" static="1"> - - - -1 - - - - <__glMaxViewportDims expr="-1" line="257" static="1"> - - - -1 - - - - <__glMemoryCurrentAvailable expr="-1" line="258" static="1"> - - - -1 - - - - <__glMemoryTotalAvailable expr="-1" line="259" static="1"> - - - -1 - - - - <__glTextureMaxAnisotropy expr="-1" line="260" static="1"> - - - -1 - - - - - - 0 - Specifies the height of the back buffer, which can be changed by a successful - call to the `configureBackBuffer()` method. The height may be modified when the - browser zoom factor changes if the `wantsBestResolutionOnBrowserZoom` parameter - is set to `true` in the last successful call to the `configureBackBuffer()` - method. The change in height can be detected by registering an event listener - for the browser zoom change event. - - - - 0 - Specifies the width of the back buffer, which can be changed by a successful - call to the `configureBackBuffer()` method. The width may be modified when the - browser zoom factor changes if the `wantsBestResolutionOnBrowserZoom` parameter - is set to `true` in the last successful call to the `configureBackBuffer()` - method. The change in width can be detected by registering an event listener - for the browser zoom change event. - - - - "OpenGL (Direct blitting)" - The type of graphics library driver used by this rendering context. Indicates - whether the rendering is using software, a DirectX driver, or an OpenGL driver. - Also indicates whether hardware rendering failed. If hardware rendering fails, - Flash Player uses software rendering for Stage3D and `driverInfo` contains one - of the following values: - - * "Software Hw_disabled=userDisabled" - The Enable hardware acceleration - checkbox in the Adobe Flash Player Settings UI is not selected. - * "Software Hw_disabled=oldDriver" - There are known problems with the - hardware graphics driver. Updating the graphics driver may fix this problem. - * "Software Hw_disabled=unavailable" - Known problems with the hardware - graphics driver or hardware graphics initialization failure. - * "Software Hw_disabled=explicit" - The content explicitly requested software - rendering through requestContext3D. - * "Software Hw_disabled=domainMemory" - The content uses domainMemory, which - requires a license when used with Stage3D hardware rendering. Visit - adobe.com/go/fpl. - - - - Specifies whether errors encountered by the renderer are reported to the - application. - - When `enableErrorChecking` is `true`, the `clear()`, and `drawTriangles()` - methods are synchronous and can throw errors. When `enableErrorChecking` - is `false`, the default, the `clear()`, and `drawTriangles()` methods are - asynchronous and errors are not reported. Enabling error checking reduces - rendering performance. You should only enable error checking when debugging. - - - - Specifies the maximum height of the back buffer. The inital value is the system - limit in the platform. The property can be set to a value smaller than or equal - to, but not greater than, the system limit. The property can be set to a value - greater than or equal to, but not smaller than, the minimum limit. The minimum - limit is a constant value, 32, when the back buffer is not configured. The - minimum limit will be the value of the `height` parameter in the last successful - call to the `configureBackBuffer()` method after the back buffer is configured. - - - - Specifies the maximum width of the back buffer. The inital value is the system - limit in the platform. The property can be set to a value smaller than or equal - to, but not greater than, the system limit. The property can be set to a value - greater than or equal to, but not smaller than, the minimum limit. The minimum - limit is a constant value, 32, when the back buffer is not configured. The - minimum limit will be the value of the width parameter in the last successful - call to the `configureBackBuffer()` method after the back buffer is configured. - - - - STANDARD - The feature-support profile in use by this Context3D object. - - - - gpu` will - fall back to `direct`) - - This API can be used when the SWF version is 32 or later.]]> - - - - - - <__backBufferAntiAlias> - - - - <__backBufferTexture> - - - - <__backBufferWantsBestResolution> - - - - <__backBufferWantsBestResolutionOnBrowserZoom> - - - - <__cleared> - - - - <__context> - - - - <__contextState> - - - - <__renderStage3DProgram> - - - - <__enableErrorChecking> - - - - <__fragmentConstants> - - - - <__frontBufferTexture> - - - - <__positionScale> - - - - <__present> - - - - <__programs> - - - - - - - <__quadIndexBuffer> - - - - <__quadIndexBufferCount> - - - - <__quadIndexBufferElements> - - - - <__stage> - - - - <__stage3D> - - - - <__state> - - - - <__vertexConstants> - - - - - - - - - - - - - - - { mask : Context3DClearMask.ALL, stencil : 0, depth : 1, alpha : 1, blue : 0, green : 0, red : 0 } - Clears the color, depth, and stencil buffers associated with this Context3D - object and fills them with the specified values. - - Set the `mask` parameter to specify which buffers to clear. Use the constants - defined in the Context3DClearMask class to set the `mask` parameter. Use the - bitwise OR operator, "|", to add multiple buffers to the mask (or use - Context3DClearMask.ALL). When rendering to the back buffer, the - `configureBackBuffer()` method must be called before any `clear()` calls. - - **Note:** If you specify a parameter value outside the allowed range, Numeric - parameter values are silently clamped to the range zero to one. Likewise, if - stencil is greater than 0xff it is set to 0xff. - - @param red the red component of the color with which to clear the color buffer, - in the range zero to one. - @param green the green component of the color with which to clear the color - buffer, in the range zero to one. - @param blue the blue component of the color with which to clear the color - buffer, in the range zero to one. - @param alpha the alpha component of the color with which to clear the color - buffer, in the range zero to one. The alpha component is not used for blending. - It is written to the buffer alpha directly. - @param depth the value with which to clear the depth buffer, in the range - zero to one. - @param stencil the 8-bit value with which to clear the stencil buffer, in a - range of 0x00 to 0xff. - @param mask specifies which buffers to clear. - @throws Error Object Disposed: If this Context3D object has been disposed by a calling - dispose() or because the underlying rendering hardware has been lost. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - - - - - { wantsBestResolutionOnBrowserZoom : false, wantsBestResolution : false, enableDepthAndStencil : true } - Sets the viewport dimensions and other attributes of the rendering buffer. - - Rendering is double-buffered. The back buffer is swapped with the visible, - front buffer when the `present()` method is called. The minimum size of the - buffer is 32x32 pixels. The maximum size of the back buffer is limited by the - device capabilities and can also be set by the user through the properties - `maxBackBufferWidth` and `maxBackBufferHeight`. Configuring the buffer is a - slow operation. Avoid changing the buffer size or attributes during normal - rendering operations. - - @param width width in pixels of the buffer. - @param height height in pixels of the buffer. - @param antiAlias an integer value specifying the requested antialiasing - quality. The value correlates to the number of subsamples used when - antialiasing. Using more subsamples requires more calculations to be performed, - although the relative performance impact depends on the specific rendering - hardware. The type of antialiasing and whether antialiasing is performed at all is - dependent on the device and rendering mode. Antialiasing is not supported at all by - the software rendering context. - | --- | --- | - | 0 | No antialiasing | - | 2 | Minimal antialiasing | - | 4 | High-quality antialiasing | - | 16 | Very high-quality antialiasing | - @param enableDepthAndStencil `false` indicates no depth or stencil buffer is - created, `true` creates a depth and a stencil buffer. For an AIR 3.2 or later - application compiled with SWF version 15 or higher, if the `renderMode` element in - the application descriptor file is `direct`, then the `depthAndStencil` element in - the application descriptor file must have the same value as this argument. By - default, the value of the `depthAndStencil` element is `false`. - @param wantsBestResolution `true` indicates that if the device supports HiDPI - screens it will attempt to allocate a larger back buffer than indicated with the - `width` and `height` parameters. Since this add more pixels and potentially changes - the result of shader operations this is turned off by default. Use - `Stage.contentsScaleFactor` to determine by how much the native back buffer was - scaled up. - @param wantsBestResolutionOnBrowserZoom `true` indicates that the size of the - back buffer should increase in proportion to the increase in the browser zoom - factor. The setting of this value is persistent across multiple browser zooms. - The default value of the parameter is `false`. Set `maxBackBufferWidth` and - `maxBackBufferHeight` properties to limit the back buffer size increase. Use - `backBufferWidth` and `backBufferHeight` to determine the current size of the - back buffer. - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error Bad Input Size: The `width` or `height` parameter is either less - than the minimum back buffer allowed size or greater than the maximum back buffer - size allowed. - @throws Error 3709: The `depthAndStencil` flag in the application descriptor - must match the `enableDepthAndStencil` Boolean passed to `configureBackBuffer()` - on the Context3D object. - - - - - - - - - - { streamingLevels : 0 } - 0 can impact memory usage and - performance. - - @return A new CubeTexture object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many Texture objects are created - or the amount of memory allocated to textures is exceeded. - @throws ArgumentError Depth Texture Not Implemented: if you attempt to create - a depth texture. - @throws ArgumentError Texture Size Is Zero: if the size parameter is not greater - than zero. - @throws ArgumentError Texture Not Power Of Two: if the size parameter is not a - power of two. - @throws ArgumentError Texture Too Big: if the size parameter is greater than - 1024. - @throws Error Texture Creation Failed: if the CubeTexture object could not be - created by the rendering context (but information about the reason is not - available). - @throws ArgumentError Invalid streaming level: if streamingLevels is greater or - equal to `log2(size)`.]]> - - - - - - - - { bufferUsage : STATIC_DRAW } - Creates an IndexBuffer3D object. - - Use an IndexBuffer3D object to upload a set of triangle indices to the rendering - context and to reference that set of indices for rendering. Each index in the - index buffer references a corresponding vertex in a vertex buffer. Each set of - three indices identifies a triangle. Pass the IndexBuffer3D object to the - `drawTriangles()` method to render one or more triangles defined in the index - buffer. - - You cannot create IndexBuffer3D objects with the IndexBuffer3D class constructor; - use this method instead. After creating a IndexBuffer3D object, upload the - indices using the IndexBuffer3D `uploadFromVector()` or `uploadFromByteArray()` - methods. - - @param numIndices the number of vertices to be stored in the buffer. - @param bufferUsage the expected buffer usage. Use one of the constants defined - in Context3DBufferUsage. The hardware driver can do appropriate optimization - when you set it correctly. This parameter is only available after Flash 12/AIR 4. - @return A new IndexBuffer3D object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many index buffers are created - or the amount of memory allocated to index buffers is exceeded. - @throws Error 3768: The Stage3D API may not be used during background execution. - @throws ArgumentError Buffer Too Big: when `numIndices` is greater than or equal - to 0xf0000. - - - - - - - { format : AGAL } - Creates a Program3D object. - - Use a Program3D object to upload shader programs to the rendering context and - to reference uploaded programs during rendering. A Program3D object stores - two programs, a vertex program and a fragment program (also known as a pixel - program). The programs are written in a binary shader assembly language. - - You cannot create Program3D objects with a Program3D constructor; use this method - instead. After creating a Program3D object, upload the programs using the - Program3D `upload()` method. - - @param format (Experimental) Set the format of this Program3D instance to AGAL - (default) or to GLSL for use on GL-based renderers - @return A new Program3D object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error The number of programs exceeds 4096 or the total memory size - exceeds 16MB (use dispose to free Program3D resources). - - - - - - - - - - Creates a Rectangle Texture object. - - Use a RectangleTexture object to upload texture bitmaps to the rendering context - and to reference a texture during rendering. - - You cannot create RectangleTexture objects with a RectangleTexture constructor; - use this method instead. After creating a RectangleTexture object, upload the - texture bitmaps using the Texture `uploadFromBitmapData()` or - `uploadFromByteArray()` methods. - - Note that 32-bit integer textures are stored in a packed BGRA format to match - the OpenFL BitmapData format. Floating point textures use a conventional RGBA - format. - - Rectangle textures are different from regular 2D textures in that their width and - height do not have to be powers of two. Also, they do not contain mip maps. - They are most useful for use in render to texture cases. If a rectangle texture - is used with a sampler that uses mip map filtering or repeat wrapping the - drawTriangles call will fail. Rectangle texture also do not allow streaming. The - only texture formats supported by Rectangle textures are BGRA, BGR_PACKED, - BGRA_PACKED. The compressed texture formats are not supported by Rectangle - Textures. - - @param width The texture width in texels. - @param height The texture height in texels. - @param format The texel format, of the Context3DTextureFormat enumerated list. - @param optimizeForRenderToTexture Set to true if the texture is likely to be - used as a render target. - @return A new RectangleTexture object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling dispose() or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many Texture objects are created - or the amount of memory allocated to textures is exceeded. - @throws ArgumentError Texture Size Is Zero: if both the width or height - parameters are not greater than zero. - @throws ArgumentError Texture Too Big: if either the width or the height - parameter is greater than 2048. - @throws Error Texture Creation Failed: if the Texture object could not be - created by the rendering context (but information about the reason is not - available). - @throws Error Requires Baseline Profile Or Above: if rectangular texture is - created with baseline constrained profile. - - - - - - - - - - - { streamingLevels : 0 } - 0 can impact memory usage and - performance. - - @return A new Texture object - @throws Error Object Disposed: if this Context3D object has been disposed by a calling dispose() or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many Texture objects are created or the amount of memory allocated to textures is exceeded. - @throws ArgumentError Depth Texture Not Implemented: if you attempt to create a depth texture. - @throws ArgumentError Texture Size Is Zero: if both the width or height parameters are not greater than zero. - @throws ArgumentError Texture Not Power Of Two: if both the width and height parameters are not a power of two. - @throws ArgumentError Texture Too Big: if either the width or the height parameter is greater than 2048 for baseline and baseline constrained profile or if either the width or the height parameter is greater than 4096 for profile baseline extended and above. - @throws Error Texture Creation Failed: if the Texture object could not be created by the rendering context (but information about the reason is not available). - @throws ArgumentError Invalid streaming level: if streamingLevels is greater or equal to log2(min(width,height)).]]> - - - - - - - - - { bufferUsage : STATIC_DRAW } - Creates a VertexBuffer3D object. - - Use a VertexBuffer3D object to upload a set of vertex data to the rendering - context. A vertex buffer contains the data needed to render each point in the - scene geometry. The data attributes associated with each vertex typically - includes position, color, and texture coordinates and serve as the input to - the vertex shader program. Identify the data values that correspond to one of - the inputs of the vertex program using the `setVertexBufferAt()` method. You can - specify up to sixty-four 32-bit values for each vertex. - - You cannot create VertexBuffer3D objects with a VertexBuffer3D constructor; use - this method instead. After creating a VertexBuffer3D object, upload the vertex - data using the VertexBuffer3D `uploadFromVector()` or `uploadFromByteArray()` - methods. - - @param numVertices the number of vertices to be stored in the buffer. The - maximum number of vertices in a single buffer is 65535. - @param data32PerVertex the number of 32-bit(4-byte) data values associated - with each vertex. The maximum number of 32-bit data elements per vertex is 64 - (or 256 bytes). Note that only eight attribute registers are accessible by a - vertex shader program at any given time. Use `setVertextBufferAt()` to select - attributes from within a vertex buffer. - @param bufferUsage the expected buffer usage. Use one of the constants defined - in Context3DBufferUsage. The hardware driver can do appropriate optimization when - you set it correctly. This parameter is only available after Flash 12/AIR 4 - @return A new VertexBuffer3D object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many vertex buffer objects are - created or the amount of memory alloted to vertex buffers is exceeded. - @throws ArgumentError Buffer Too Big: when `numVertices` is greater than 0x10000 - or `data32PerVertex` is greater than 64. - @throws ArgumentError Buffer Has Zero Size: when `numVertices` is zero or - `data32PerVertex` is zero. - @throws ArgumentError Buffer Creation Failed: if the VertexBuffer3D object - could not be created by the rendering context (but additional information about - the reason is not available). - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - Creates a VideoTexture object. - - Use a VideoTexture object to obtain video frames as texture from NetStream object - or Camera object and to upload the video frames to the rendering context. - - The VideoTexture object cannot be created with the VideoTexture constructor; use - this method instead. After creating a VideoTexture object, attach NetStream - object or Camera Object to get the video frames with the VideoTexture - `attachNetStream()` or `attachCamera()` methods. - - Note that this method returns null if the system doesn't support this feature. - - VideoTexture does not contain mipmaps. If VideoTexture is used with a sampler - that uses mip map filtering or repeat wrapping, the drawTriangles call will fail. - VideoTexture can be treated as BGRA texture by the shaders. The attempt to - instantiate the VideoTexture Object will fail if the Context3D was requested - with sotfware rendering mode. - - A maximum of 4 VideoTexture objects are available per Context3D instance. On - mobile the actual number of supported VideoTexture objects may be less than 4 - due to platform limitations. - - @return A new VideoTexture object - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error Resource Limit Exceeded: if too many Texture objects are created - or the amount of memory allocated to textures is exceeded. - @throws Error Texture Creation Failed: if the Texture object could not be - created by the rendering context (but information about the reason is not - available). - - - - - - - { recreate : true } - Frees all resources and internal storage associated with this Context3D. - - All index buffers, vertex buffers, textures, and programs that were created - through this Context3D are disposed just as if calling `dispose()` on each of - them individually. In addition, the Context3D itself is disposed freeing all - temporary buffers and the back buffer. If you call `configureBackBuffer()`, - `clear()`, `drawTriangles()`, `createCubeTexture()`, `createTexture()`, - `createProgram()`, `createIndexBuffer()`, `createVertexBuffer()`, or - `drawToBitmapData()` after calling `dispose()`, the runtime throws an exception. - - Warning: calling `dispose()` on a Context3D while there is still a event - listener for `Events.CONTEXT3D_CREATE` set on the asociated Stage3D object the - `dispose()` call will simulate a device loss. It will create a new Context3D on - the Stage3D and issue the `Events.CONTEXT3D_CREATE` event again. If this is not - desired remove the event listener from the Stage3D object before calling - `dispose()` or set the `recreate` parameter to `false`. - - @param recreate Whether to allow this Stage3D object to create itself again - - - - - - - - - { destPoint : null, srcRect : null } - Draws the current render buffer to a bitmap. - - The current contents of the back render buffer are copied to a BitmapData - object. This is potentially a very slow operation that can take up to a second. - Use with care. Note that this function does not copy the front render buffer - (the one shown on stage), but the buffer being drawn to. To capture the rendered - image as it appears on the stage, call `drawToBitmapData()` immediately before you - calling `present()`. - - Beginning with AIR 25, two new parameters have been introduced in the API - `drawToBitmapData()`. This API now takes three parameters. The first one is the - existing parameter `destination:BitmapData`. The second parameter is - `srcRect:Rectangle`, which is target rectangle on Stage3D. The third parameter is - `destPoint:Point`, which is the coordinate on the destination bitmap. The - parameters `srcRect` and `destPoint` are optional and default to - `(0,0,bitmapWidth,bitmapHeight)` and `(0,0)`, respectively. - - When the image is drawn, it is not scaled to fit the bitmap. Instead, the - contents are clipped to the size of the destination bitmap. - - OpenFL BitmapData objects store colors already multiplied by the alpha component. - For example, if the "pure" rgb color components of a pixel are (0x0A, 0x12, 0xBB) - and the alpha component is 0x7F (.5), then the pixel is stored in the - BitmapData object with the rgba values: (0x05, 0x09, 0x5D, 0x7F). You can set the - blend factors so that the colors rendered to the buffer are multiplied by alpha - or perform the operation in the fragment shader. The rendering context does not - validate that the colors are stored in premultiplied format. - - @param destination The target BitmapData for this drawing operation - @param srcRect The source rectangle in the current Stage3D context - @param destPoint A destination point to write to in the target BitmapData - @throws Error Object Disposed: if this Context3D object has been disposed by - a calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error 3768: The Stage3D API may not be used during background execution. - @throws Error 3802: If either one of the parameters `destPoint:Point` or - `srcRect:Rectangle` is outside the bitmap/stage3D coordinate bound, or if - non-numeric(NaN) values are passed as input. - - - - - - - - - { numTriangles : -1, firstIndex : 0 } - Render the specified triangles using the current buffers and state of this - Context3D object. - - For each triangle, the triangle vertices are processed by the vertex shader - program and the triangle surface is processed by the pixel shader program. The - output color from the pixel program for each pixel is drawn to the render - target depending on the stencil operations, depth test, source and destination - alpha, and the current blend mode. The render destination can be the main render - buffer or a texture. - - If culling is enabled, (with the `setCulling()` method), then triangles can be - discarded from the scene before the pixel program is run. If stencil and depth - testing are enabled, then output pixels from the pixel program can be discarded - without updating the render destination. In addition, the pixel program can - decide not to output a color for a pixel. - - The rendered triangles are not displayed in the viewport until you call the - `present()` method. After each `present()` call, the `clear()` method must be - called before the first `drawTriangles()` call or rendering fails. - - When `enableErrorChecking` is `false`, this function returns immediately, does - not wait for results, and throws exceptions only if this Context3D instance has - been disposed or there are too many draw calls. If the rendering context state - is invalid rendering fails silently. When the `enableErrorChecking` property is - `true`, this function returns after the triangles are drawn and throws exceptions - for any drawing errors or invalid context state. - - @param indexBuffer:IndexBuffer3D — a set of vertex indices referencing the - vertices to render. - @param firstIndex:int (default = 0) — the index of the first vertex index - selected to render. Default 0. - @param numTriangles:int (default = -1) — the number of triangles to render. - Each triangle consumes three indices. Pass -1 to draw all triangles in the index - buffer. Default -1. - @throws Error — Object Disposed: if this Context3D object has been disposed by - a calling `dispose()` or because the underlying rendering hardware has been lost. - @throws Error — If this method is called too many times between calls to - `present()`. The maximum number of calls is 32,768. - - The following errors are only thrown when `enableErrorChecking` property is true: - @throws Error Need To Clear Before Draw: If the buffer has not been cleared - since the last `present()` call. - @throws Error If a valid Program3D object is not set. - @throws Error No Valid Index Buffer Set: If an IndexBuffer3D object is not set. - @throws Error Sanity Check On Parameters Failed: when the number of triangles - to be drawn or the `firstIndex` exceed allowed values. - @throws RangeError — Not Enough Indices In This Buffer: when there aren't enough - indices in the buffer to define the number of triangles to be drawn. - @throws Error — Sample Binds Texture Also Bound To Render: when the render target - is a texture and that texture assigned to a texture input of the current fragment - program. - @throws Error — Sample Binds Invalid Texture: an invalid texture is specified as - the input to the current fragment program. - @throws Error — Sampler Format Does Not Match Texture Format: when the texture - assigned as the input to the current fragment program has a different format than - that specified for the sampler register. For example, a 2D texture is assigned to - a cube texture sampler. - @throws Error — Sample Binds Undefined Texture: The current fragment program - accesses a texture register that has not been set (using `setTextureAt()`). - @throws Error — Same Texture Needs Same Sampler Params: If a texture is used for - more than one sampler register, all of the samplers must have the same settings. - For example, you cannot set one sampler to clamp and another to wrap. - @throws Error — Texture Bound But Not Used: A texture is set as a shader input, - but it is not used. - @throws Error — Stream Is Not Used: A vertex buffer is assigned to a vertex - attribute input, but the vertex program does not reference the corresponding - register. - @throws Error — Stream Is Invalid: a VertexBuffer3D object assigned to a vertex - program input is not a valid object. - @throws RangeError — Stream Does Not Have Enough Vertices: A vertex buffer - supplying data for drawing the specified triangles does not have enough data. - @throws RangeError — Stream Vertex Offset Out Of Bounds: The offset specified in - a `setVertexBufferAt()` call is negative or past the end of the buffer. - @throws Error — Stream Read But Not Set: A vertex attribute used by the current - vertex program is not set (using `setVertexBufferAt()`). - - - - Displays the back rendering buffer. - - Calling the `present()` method makes the results of all rendering operations - since the last `present()` call visible and starts a new rendering cycle. - After calling `present`, you must call `clear()` before making another - `drawTriangles()` call. Otherwise, this function will alternately clear the - render buffer to yellow and green or, if `enableErrorChecking` has been set to - `true`, an exception is thrown. - - Calling `present()` also resets the render target, just like calling - `setRenderToBackBuffer()`. - - @throws Error Need To Clear Before Draw: If the `clear()` has not been called - since the previous call to `present()`. (Two consecutive `present()` calls are - not allowed without calling `clear()` in between.) - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - Specifies the factors used to blend the output color of a drawing operation with - the existing color. - - The output (source) color of the pixel shader program is combined with the - existing (destination) color at that pixel according to the following formula: - - `result color = (source color * sourceFactor) + (destination color * destinationFactor)` - - The destination color is the current color in the render buffer for that pixel. - Thus it is the result of the most recent `clear()` call and any intervening - `drawTriangles()` calls. - - Use `setBlendFactors()` to set the factors used to multiply the source and - destination colors before they are added together. The default blend factors - are, `sourceFactor = Context3DBlendFactor.ONE`, and - `destinationFactor = Context3DBlendFactor.ZERO`, which results in the source - color overwriting the destination color (in other words, no blending of the - two colors occurs). For normal alpha blending, use - `sourceFactor = Context3DBlendFactor.SOURCE_ALPHA` and - `destinationFactor = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA`. - - Use the constants defined in the Context3DBlendFactor class to set the - parameters of this function. - - @param sourceFactor The factor with which to multiply the source color. - Defaults to `Context3DBlendFactor.ONE`. - @param destinationFactor The factor with which to multiply the destination - color. Defaults to `Context3DBlendFactor.ZERO`. - @throws Error — Invalid Enum: when `sourceFactor` or `destinationFactor` is - not one of the recognized values, which are defined in the - Context3DBlendFactor class. - - - - - - - - - - - hide - - - - - - - - - - - - Sets the mask used when writing colors to the render buffer. - - Only color components for which the corresponding color mask parameter is `true` - are updated when a color is written to the render buffer. For example, if - you call: `setColorMask(true, false, false, false)`, only the red component - of a color is written to the buffer until you change the color mask again. The - color mask does not affect the behavior of the `clear()` method. - - @param red set false to block changes to the red channel. - @param green set false to block changes to the green channel. - @param blue set false to block changes to the blue channel. - @param alpha set false to block changes to the alpha channel. - - - - - - - Sets triangle culling mode. - - Triangles may be excluded from the scene early in the rendering pipeline based - on their orientation relative to the view plane. Specify vertex order - consistently (clockwise or counter-clockwise) as seen from the outside of the - model to cull correctly. - - @param triangleFaceToCull the culling mode. Use one of the constants defined - in the Context3DTriangleFace class. - @throws Error Invalid Enum Error: when triangleFaceToCull is not one of the - values defined in the Context3DTriangleFace class. - - - - - - - - Sets type of comparison used for depth testing. - - The depth of the source pixel output from the pixel shader program is compared - to the current value in the depth buffer. If the comparison evaluates as `false`, - then the source pixel is discarded. If `true`, then the source pixel is processed - by the next step in the rendering pipeline, the stencil test. In addition, the - depth buffer is updated with the depth of the source pixel, as long as the - `depthMask` parameter is set to `true`. - - Sets the test used to compare depth values for source and destination pixels. - The source pixel is composited with the destination pixel when the comparison is - `true`. The comparison operator is applied as an infix operator between the - source and destination pixel values, in that order. - - @param depthMask the destination depth value will be updated from the source - pixel when `true`. - @param passCompareMode the depth comparison test operation. One of the values - of Context3DCompareMode. - - - - - - - Sets vertex and fragment shader programs to use for subsequent rendering. - - @param program the Program3D object representing the vertex and fragment - programs to use. - - - - - - - - - - - Set constants for use by shader programs using values stored in a ByteArray. - - Sets constants that can be accessed from the vertex or fragment program. - - @param programType one of Context3DProgramType. - @param firstRegister the index of the first shader program constant to set. - @param numRegisters the number of registers to set. Every register is read - as four float values. - @param data the source ByteArray object - @param byteArrayOffset an offset into the ByteArray for reading - @throws TypeError kNullPointerError when data is null. - @throws RangeError kConstantRegisterOutOfBounds when attempting to set more than - the maximum number of shader constants. - @throws RangeError kBadInputSize if `byteArrayOffset` is greater than or equal to - the length of data or no. of elements in `data - byteArrayOffset` is less than - `numRegisters*16` - - - - - - - - - - { transposedMatrix : false } - Sets constants for use by shader programs using values stored in a Matrix3D. - - Use this function to pass a matrix to a shader program. The function sets 4 - constant registers used by the vertex or fragment program. The matrix is - assigned to registers row by row. The first constant register is assigned the - top row of the matrix. You can set 128 registers for a vertex program and 28 - for a fragment program. - - @param programType The type of shader program, either - `Context3DProgramType.VERTEX` or `Context3DProgramType.FRAGMENT`. - @param firstRegister the index of the first constant register to set. Since - a Matrix3D has 16 values, four registers are set. - @param matrix the matrix containing the constant values. - @param transposedMatrix if `true` the matrix entries are copied to registers - in transposed order. The default value is `false`. - @throws TypeError Null Pointer Error: when matrix is `null`. - @throws RangeError Constant Register Out Of Bounds: when attempting to set more - than the maximum number of shader constant registers. - - - - - - - - - - { numRegisters : -1 } - Sets the constant inputs for the shader programs. - - Sets an array of constants to be accessed by a vertex or fragment shader - program. Constants set in Program3D are accessed within the shader programs as - constant registers. Each constant register is comprised of 4 floating point - values (x, y, z, w). Therefore every register requires 4 entries in the data - Vector. The number of registers that you can set for vertex program and - fragment program depends on the Context3DProfile. - - @param programType The type of shader program, either - `Context3DProgramType.VERTEX` or `Context3DProgramType.FRAGMENT`. - @param firstRegister the index of the first constant register to set. - @param data the floating point constant values. There must be at least - `numRegisters` 4 elements in data. - @param numRegisters the number of constants to set. Specify -1, the default - value, to set enough registers to use all of the available data. - @throws TypeError Null Pointer Error: when data is `null`. - @throws RangeError Constant Register Out Of Bounds: when attempting to set more - than the maximum number of shader constant registers. - @throws RangeError Bad Input Size: When the number of elements in data is less - than `numRegisters*4` - - - - Sets the back rendering buffer as the render target. Subsequent calls to - `drawTriangles()` and `clear()` methods result in updates to the back buffer. - Use this method to resume normal rendering after using the - `setRenderToTexture()` method. - - - - - - - - - - { surfaceSelector : 0, antiAlias : 0, enableDepthAndStencil : false } - Sets the specified texture as the rendering target. - - Subsequent calls to `drawTriangles()` and `clear()` methods update the - specified texture instead of the back buffer. Mip maps are created - automatically. Use the `setRenderToBackBuffer()` to resume normal rendering to - the back buffer. - - No clear is needed before drawing. If there is no clear operation, the render - content will be retained. depth buffer and stencil buffer will also not be - cleared. But it is forced to clear when first drawing. Calling `present()` - resets the target to the back buffer. - - @param texture the target texture to render into. Set to `null` to resume - rendering to the back buffer (`setRenderToBackBuffer()` and `present` also reset - the target to the back buffer). - @param enableDepthAndStencil if `true`, depth and stencil testing are - available. If `false`, all depth and stencil state is ignored for subsequent - drawing operations. - @param antiAlias the antialiasing quality. Use 0 to disable antialiasing; - higher values improve antialiasing quality, but require more calculations. The - value is currently ignored by mobile platform and software rendering context. - @param surfaceSelector specifies which element of the texture to update. - Texture objects have one surface, so you must specify 0, the default value. - CubeTexture objects have six surfaces, so you can specify an integer from 0 - through 5. - @param colorOutputIndex The output color register. Must be 0 for constrained - or baseline mode. Otherwise specifies the output color register. - @throws ArgumentError for a mismatched surfaceSelector parameter. The value - must be 0 for 2D textures and 0..5 for cube maps. - @throws ArgumentError texture is not derived from the TextureBase class - (either Texture or CubeTexture classes). - @throws ArgumentError colorOutputIndex must be an integer is from 0 through 3. - @throws ArgumentError this call requires a Context3D that is created with the - standard profile or above. - - - - - - - - - - Manually override texture sampler state. - - Texture sampling state is typically set at the time setProgram is called. - However, you can override texture sampler state with this function. If you do not - want the program to change sampler state, set the `ignoresamnpler` bit in AGAL - and use this function. - - @param sampler sampler The sampler register to use. Maps to the sampler register - in AGAL. - @param wrap Wrapping mode. Defined in Context3DWrapMode. The default is repeat. - @param filter Texture filtering mode. Defined in Context3DTextureFilter. The - default is nearest. - @param mipfilter Mip map filter. Defined in Context3DMipFilter. The default - is none. - @throws Error sampler out of range - @throws Error wrap, filter, mipfilter bad enum - @throws Error Object Disposed: if this Context3D object has been disposed by a - calling `dispose()` or because the underlying rendering hardware has been lost. - - - - - - - Sets a scissor rectangle, which is type of drawing mask. The renderer only draws - to the area inside the scissor rectangle. Scissoring does not affect clear - operations. - - Pass `null` to turn off scissoring. - - @param rectangle The rectangle in which to draw. Specify the rectangle - position and dimensions in pixels. The coordinate system origin is the top left - corner of the viewport, with positive values increasing down and to the right - (the same as the normal OpenFL display coordinate system). - - - - - - - - - - - { actionOnDepthPassStencilFail : KEEP, actionOnDepthFail : KEEP, actionOnBothPass : KEEP, compareMode : ALWAYS, triangleFace : FRONT_AND_BACK } - Sets stencil mode and operation. - - An 8-bit stencil reference value can be associated with each draw call. During - rendering, the reference value can be tested against values stored previously - in the frame buffer. The result of the test can control the draw action and - whether or how the stored stencil value is updated. In addition, depth testing - controls whether stencil testing is performed. A failed depth test can also be - used to control the action taken on the stencil buffer. - - In the pixel processing pipeline, depth testing is performed first. If the depth - test fails, a stencil buffer update action can be taken, but no further evaluation - of the stencil buffer value can be made. If the depth test passes, then the - stencil test is performed. Alternate actions can be taken depending on the outcome - of the stencil test. - - The stencil reference value is set using `setStencilReferenceValue()`. - - @param triangleFace the triangle orientations allowed to contribute to the - stencil operation. One of Context3DTriangleFace. - @param compareMode the test operator used to compare the current stencil - reference value and the destination pixel stencil value. Destination pixel color - and depth update is performed when the comparison is true. The stencil actions - are performed as requested in the following action parameters. The comparison - operator is applied as an infix operator between the current and destination - reference values, in that order (in pseudocode: - `if stencilReference OPERATOR stencilBuffer then pass`). Use one of the constants - defined in the Context3DCompareMode class. - @param actionOnBothPass action to be taken when both depth and stencil - comparisons pass. Use one of the constants defined in the Context3DStencilAction - class. - @param actionOnDepthFail action to be taken when depth comparison fails. Use - one of the constants defined in the Context3DStencilAction class. - @param actionOnDepthPassStencilFail action to be taken when depth comparison - passes and the stencil comparison fails. Use one of the constants defined in the - Context3DStencilAction class. - @throws Error Invalid Enum Error: when `triangleFace` is not one of the values - defined in the Context3DTriangleFace class. - @throws Error Invalid Enum Error: when `compareMode` is not one of the values - defined in the Context3DCompareMode class. - @throws Error Invalid Enum Error: when `actionOnBothPass`, `actionOnDepthFail`, - or `actionOnDepthPassStencilFail` is not one of the values defined in the - Context3DStencilAction class. - - - - - - - - - { writeMask : 0xFF, readMask : 0xFF } - Sets the stencil comparison value used for stencil tests. - - Only the lower 8 bits of the reference value are used. The stencil buffer value - is also 8 bits in length. Use the `readMask` and `writeMask` to use the stencil - buffer as a bit field. - - @param referenceValue an 8-bit reference value used in reference value - comparison tests. - @param readMask an 8-bit mask for applied to both the current stencil - buffer value and the reference value before the comparison. - @param writeMask an 8-bit mask applied to the reference value before updating - the stencil buffer. - - - - - - - - Specifies the texture to use for a texture input register of a fragment program. - - A fragment program can read information from up to eight texture objects. Use - this function to assign a Texture or CubeTexture object to one of the sampler - registers used by the fragment program. - - **Note:** if you change the active fragment program (with setProgram) to a - shader that uses fewer textures, set the unused registers to `null`: - - ``haxe - setTextureAt(7, null); - ``` - - @param sampler the sampler register index, a value from 0 through 7. - @param texture the texture object to make available, either a Texture or a - CubeTexture instance. - - - - - - - - - - { format : FLOAT_4, bufferOffset : 0 } - Specifies which vertex data components correspond to a single vertex shader - program input. - - Use the setVertexBufferAt method to identify which components of the data - defined for each vertex in a VertexBuffer3D buffer belong to which inputs to the - vertex program. The developer of the vertex program determines how much data is - needed per vertex. That data is mapped from 1 or more VertexBuffer3D stream(s) to - the attribute registers of the vertex shader program. - - The smallest unit of data consumed by the vertex shader is a 32-bit data. - Offsets into the vertex stream are specified in multiples of 32-bits. - - As an example, a programmer might define each vertex with the following data: - - ``` - position: x float32 - y float32 - z float32 - color: r unsigned byte - g unsigned byte - b unsigned byte - a unsigned byte - ``` - - Assuming the vertex was defined in a VertexBuffer3D object named buffer, it - would be assigned to a vertex shader with the following code: - - ```haxe - setVertexBufferAt(0, buffer, 0, Context3DVertexBufferFormat.FLOAT_3); // attribute #0 will contain the position information - setVertexBufferAt(1, buffer, 3, Context3DVertexBufferFormat.BYTES_4); // attribute #1 will contain the color information - ``` - - @param index the index of the attribute register in the vertex shader (0 - through 7). - @param buffer the buffer that contains the source vertex data to be fed to the - vertex shader. - @param bufferOffset an offset from the start of the data for a single vertex - at which to start reading this attribute. In the example above, the position data - has an offset of 0 because it is the first attribute; color has an offset of 3 - because the color attribute follows the three 32-bit position values. The offset - is specified in units of 32 bits. - @param format a value from the Context3DVertexBufferFormat class specifying - the data type of this attribute. - @throws Error Invalid Enum: when format is not one of the values defined in - the Context3DVertexBufferFormat class. - @throws RangeError Attribute Register Out Of Bounds: when the index parameter - is outside the range from 0 through 7. (A maximum of eight vertex attribute - registers can be used by a shader.) - - <__bindGLArrayBuffer set="method" line="1905"> - - - - - - - <__bindGLElementArrayBuffer set="method" line="1914"> - - - - - - - <__bindGLFramebuffer set="method" line="1923"> - - - - - - - <__bindGLTexture2D set="method" line="1932"> - - - - - - - <__bindGLTextureCubeMap set="method" line="1944"> - - - - - - - <__dispose set="method" line="1956"> - - - - <__drawTriangles set="method" line="1980"> - - - - - - - { firstIndex : 0 } - - - - <__flushGL set="method" line="2008"> - - - - <__flushGLBlend set="method" line="2023"> - - - - <__flushGLColor get="inline" set="null" line="2050"> - - - - <__flushGLCulling set="method" line="2065"> - - - - <__flushGLDepth set="method" line="2095"> - - - - <__flushGLFramebuffer set="method" line="2134"> - - - - <__flushGLProgram set="method" line="2181"> - - - - <__flushGLScissor set="method" line="2225"> - - - - <__flushGLStencil set="method" line="2262"> - - - - <__flushGLTextures set="method" line="2295"> - - - - <__flushGLViewport set="method" line="2379"> - - - - <__getGLBlend set="method" line="2424"> - - - - - - - <__getGLCompareMode set="method" line="2455"> - - - - - - - <__getGLStencilAction set="method" line="2471"> - - - - - - - <__getGLTriangleFace set="method" line="2487"> - - - - - - - <__renderStage3D set="method" line="2499"> - - - - - - - <__setGLBlend set="method" line="2546"> - - - - - - - <__setGLBlendEquation set="method" line="2562"> - - - - - - - <__setGLCullFace set="method" line="2571"> - - - - - - - <__setGLDepthTest set="method" line="2587"> - - - - - - - <__setGLFrontFace set="method" line="2603"> - - - - - - - <__setGLScissorTest set="method" line="2612"> - - - - - - - <__setGLStencilTest set="method" line="2628"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { stage3D : null, contextState : null } - - - - The Context3D class provides a context for rendering geometrically defined graphics. - A rendering context includes a drawing surface and its associated resources and - state. When possible, the rendering context uses the hardware graphics processing - unit (GPU). Otherwise, the rendering context uses software. (If rendering through - Context3D is not supported on a platform, the stage3Ds property of the Stage object - contains an empty list.) - - The Context3D rendering context is a programmable pipeline that is very similar to - OpenGL ES 2, but is abstracted so that it is compatible with a range of hardware and - GPU interfaces. Although designed for 3D graphics, the rendering pipeline does not - mandate that the rendering is three dimensional. Thus, you can create a 2D renderer - by supplying the appropriate vertex and pixel fragment programs. In both the 3D and - 2D cases, the only geometric primitive supported is the triangle. - - Get an instance of the Context3D class by calling the requestContext3D() method of a - Stage3D object. A limited number of Context3D objects can exist per stage; one for - each Stage3D in the Stage.stage3Ds list. When the context is created, the Stage3D - object dispatches a context3DCreate event. A rendering context can be destroyed and - recreated at any time, such as when another application that uses the GPU gains - focus. Your code should anticipate receiving multiple context3DCreate events. - Position the rendering area on the stage using the x and y properties of the - associated Stage3D instance. - - To render and display a scene (after getting a Context3D object), the following steps - are typical: - - 1. Configure the main display buffer attributes by calling `configureBackBuffer()`. - 2. Create and initialize your rendering resources, including: - * Vertex and index buffers defining the scene geometry - * Vertex and pixel programs (shaders) for rendering the scene - * Textures - 3. Render a frame: - * Set the render state as appropriate for an object or collection of objects in - the scene. - * Call the `drawTriangles()` method to render a set of triangles. - * Change the rendering state for the next group of objects. - * Call `drawTriangles()` to draw the triangles defining the objects. - * Repeat until the scene is entirely rendered. - * Call the `present()` method to display the rendered scene on the stage. - - The following limits apply to rendering: - - Resource limits: - - | Resource | Number allowed | Total memory | - | --- | --- | --- | - | Vertex buffers | 4096 | 256 MB | - | Index buffers | 4096 | 128 MB | - | Programs | 4096 | 16 MB | - | Textures | 4096 | 128 MB | - | Cube textures | 4096 | 256 MB | - - AGAL limits: 200 opcodes per program. - - Draw call limits: 32,768 `drawTriangles()` calls for each `present()` call. - - The following limits apply to textures: - - Texture limits for AIR 32 bit: - - | Texture | Maximum size | Total GPU memory | - | --- | --- | --- | - | Normal Texture (below Baseline extended) | 2048x2048 | 512 MB | - | Normal Texture (Baseline extended and above) | 4096x4096 | 512 MB | - | Rectangular Texture (below Baseline extended) | 2048x2048 | 512 MB | - | Rectangular Texture (Baseline extended and above) | 4096x4096 | 512 MB | - | Cube Texture | 1024x1024 | 256 MB | - - Texture limits for AIR 64 bit (Desktop): - - | Texture | Maximum size | Total GPU memory | - | --- | --- | --- | - | Normal Texture (below Baseline extended) | 2048x2048 | 512 MB | - | Normal Texture (Baseline extended to Standard) | 4096x4096 | 512 MB | - | Normal Texture (Standard extended and above) | 4096x4096 | 2048 MB | - | Rectangular Texture (below Baseline extended) | 2048x2048 | 512 MB | - | Rectangular Texture (Baseline extended to Standard) | 4096x4096 | 512 MB | - | Rectangular Texture (Standard extended and above) | 4096x4096 | 2048 MB | - | Cube Texture | 1024x1024 | 256 MB | - - 512 MB is the absolute limit for textures, including the texture memory required - for mipmaps. However, for Cube Textures, the memory limit is 256 MB. - - You cannot create Context3D objects with the Context3D constructor. It is - constructed and available as a property of a Stage3D instance. The Context3D class - can be used on both desktop and mobile platforms, both when running in Flash Player - and AIR. - - - "tags=\"haxe,release\"" - - openfl.display3D._internal.Context3DState - openfl.display3D.textures.CubeTexture - openfl.display3D.textures.RectangleTexture - openfl.display3D.textures.TextureBase - openfl.display3D.textures.Texture - openfl.display3D.textures.VideoTexture - openfl.display3D.IndexBuffer3D - openfl.display3D.Program3D - openfl.display3D.VertexBuffer3D - openfl.display.BitmapData - openfl.display.Bitmap - openfl.display.DisplayObjectRenderer - openfl.display.Shader - openfl.display.Stage - openfl.display.Stage3D - openfl.geom.Point - openfl.geom.Rectangle - - - - - - - - Defines the values to use for specifying the source and destination blend factors. - - A blend factor represents a particular four-value vector that is multiplied with the - source or destination color in the blending formula. The blending formula is: - - ``` - result = source * sourceFactor + destination * destinationFactor - ``` - - In the formula, the source color is the output color of the pixel shader program. - The destination color is the color that currently exists in the color buffer, as set - by previous clear and draw operations. - - For example, if the source color is (.6, .6, .6, .4) and the source blend factor is - `Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA`, then the source part of the blending - equation is calculated as: - - ``` - (.6, .6, .6, .4) * (1-0.4, 1-0.4, 1-0.4, 1-0.4) = (.36, .36, .36, .24) - ``` - - The final calculation is clamped to the range [0,1]. - - **Examples** - - The following examples demonstrate the blending math using - `source color = (.6,.4,.2,.4)`, `destination color = (.8,.8,.8,.5)`, and various blend - factors. - - | Purpose | Source factor | Destination factor | Blend formula | Result | - | --- | --- | --- | --- | --- | - | No blending | ONE | ZERO | (.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * ( 0, 0, 0, 0) | ( .6, .4, .2, .4) | - | Alpha | SOURCE_ALPHA | ONE_MINUS_SOURCE_ALPHA | (.6,.4,.2,.4) * (.4,.4,.4,.4) + (.8,.8,.8,.5) * (.6,.6,.6,.6) | (.72,.64,.56,.46) | - | Additive | ONE | ONE | (.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * ( 1, 1, 1, 1) ( 1, 1, 1, .9) | - | Multiply | DESTINATION_COLOR | ZERO | (.6,.4,.2,.4) * (.8,.8,.8,.5) + (.8,.8,.8,.5) * ( 0, 0, 0, 0) | (.48,.32,.16, .2) | - | Screen | ONE | ONE_MINUS_SOURCE_COLOR | (.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * (.4,.6,.8,.6) | (.92,.88,.68, .7) | - - Note that not all combinations of blend factors are useful and that you can sometimes achieve the same effect in different ways. - - - - - - cast 0 - - - - a,Da,Da,Da), - where Da is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 1 - - - - r,Dg,Db,Da), - where Dr/g/b/a is the corresponding component of the current color - in the color buffer.]]> - - - - - cast 2 - - - - The blend factor is (1,1,1,1). - - - - - cast 3 - - - - a,1-Da,1-Da,1-Da), - where Da is the alpha component of the current color in the color buffer.]]> - - - - - cast 4 - - - - r,1-Dg,1-Db,1-Da), - where Dr/g/b/a is the corresponding component of the current color in - the color buffer.]]> - - - - - cast 5 - - - - a,1-Sa,1-Sa,1-Sa), - where Sa is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 6 - - - - r,1-Sg,1-Sb,1-Sa), - where Sr/g/b/a is the corresponding component of the fragment color - computed by the pixel program.]]> - - - - - cast 7 - - - - a,Sa,Sa,Sa), - where Sa is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 8 - - - - r,Sg,Sb,Sa), - where Sr/g/b/a is the corresponding component of the fragment color - computed by the pixel program.]]> - - - - - cast 9 - - - - The blend factor is (0,0,0,0). - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - a,Da,Da,Da), - where Da is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 1 - - - - r,Dg,Db,Da), - where Dr/g/b/a is the corresponding component of the current color - in the color buffer.]]> - - - - - cast 2 - - - - The blend factor is (1,1,1,1). - - - - - cast 3 - - - - a,1-Da,1-Da,1-Da), - where Da is the alpha component of the current color in the color buffer.]]> - - - - - cast 4 - - - - r,1-Dg,1-Db,1-Da), - where Dr/g/b/a is the corresponding component of the current color in - the color buffer.]]> - - - - - cast 5 - - - - a,1-Sa,1-Sa,1-Sa), - where Sa is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 6 - - - - r,1-Sg,1-Sb,1-Sa), - where Sr/g/b/a is the corresponding component of the fragment color - computed by the pixel program.]]> - - - - - cast 7 - - - - a,Sa,Sa,Sa), - where Sa is the alpha component of the fragment color computed by the - pixel program.]]> - - - - - cast 8 - - - - r,Sg,Sb,Sa), - where Sr/g/b/a is the corresponding component of the fragment color - computed by the pixel program.]]> - - - - - cast 9 - - - - The blend factor is (0,0,0,0). - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying the buffer usage type. - - - - - - cast 0 - - - - Indicates the buffer will be used for drawing and be updated frequently - - - - - cast 1 - - - - Indicates the buffer will be used for drawing and be updated once - - This type is the default value for buffers in `Stage3D`. - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Indicates the buffer will be used for drawing and be updated frequently - - - - - cast 1 - - - - Indicates the buffer will be used for drawing and be updated once - - This type is the default value for buffers in `Stage3D`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying Context3D clear masks. - - - - - - cast 0x07 - - - - Clear all buffers. - - - - - cast 0x01 - - - - Clear only the color buffer. - - - - - cast 0x02 - - - - Clear only the depth buffer. - - - - - cast 0x04 - - - - Clear only the stencil buffer. - - - - - - - - - cast 0x07 - - - - Clear all buffers. - - - - - cast 0x01 - - - - Clear only the color buffer. - - - - - cast 0x02 - - - - Clear only the depth buffer. - - - - - cast 0x04 - - - - Clear only the stencil buffer. - - - - - - - - Defines the values to use for specifying 3D buffer comparisons in the - `setDepthTest()` and `setStencilAction()` methods of a Context3D instance. - - - - - - cast 0 - - - - The comparison always evaluates as true. - - - - - cast 1 - - - - Equal (==). - - - - - cast 2 - - - - ).]]> - - - - - cast 3 - - - - =).]]> - - - - - cast 4 - - - - - - - - - cast 5 - - - - - - - - - cast 6 - - - - The comparison never evaluates as true. - - - - - cast 7 - - - - Not equal (!=). - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - The comparison always evaluates as true. - - - - - cast 1 - - - - Equal (==). - - - - - cast 2 - - - - ).]]> - - - - - cast 3 - - - - =).]]> - - - - - cast 4 - - - - - - - - - cast 5 - - - - - - - - - cast 6 - - - - The comparison never evaluates as true. - - - - - cast 7 - - - - Not equal (!=). - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for sampler mipmap filter mode - - - - - - cast 0 - - - - Select the two closest MIP levels and linearly blend between them (the highest - quality mode, but has some performance cost). - - - - - cast 1 - - - - Use the nearest neighbor metric to select MIP levels (the fastest rendering method). - - - - - cast 2 - - - - Always use the top level texture (has a performance penalty when downscaling). - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Select the two closest MIP levels and linearly blend between them (the highest - quality mode, but has some performance cost). - - - - - cast 1 - - - - Use the nearest neighbor metric to select MIP levels (the fastest rendering method). - - - - - cast 2 - - - - Always use the top level texture (has a performance penalty when downscaling). - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying the Context3D profile. - - - - - - cast 0 - - - - Use the default feature support profile. - - This profile most closely resembles Stage3D support used in previous releases. - - - - - cast 1 - - - - Use a constrained feature support profile to target older GPUs - - This profile is primarily targeted at devices that only support PS_2.0 level - shaders like the Intel GMA 9xx series. In addition, this mode tries to improve - memory bandwidth usage by rendering directly into the back buffer. There are - several side effects: - - * You are limited to 64 ALU and 32 texture instructions per shader. - * Only four texture read instructions per shader. - * No support for predicate register. This affects sln/sge/seq/sne, which you - replace with compound mov/cmp instructions, available with ps_2_0. - * The Context3D back buffer must always be within the bounds of the stage. - * Only one instance of a Context3D running in Constrained profile is allowed - within a Flash Player instance. - * Standard display list list rendering is driven by `Context3D.present()` instead of - being based on the SWF frame rate. That is, if a Context3D object is active and - visible you must call `Context3D.present()` to render the standard display list. - * Reading back from the back buffer through `Context3D.drawToBitmapData()` might - include parts of the display list content. Alpha information will be lost. - - - - - cast 2 - - - - Use an extended feature support profile to target newer GPUs which support larger - textures - - This profile increases the maximum 2D Texture and RectangleTexture size to 4096x4096 - - - - - cast 3 - - - - Use an standard profile to target GPUs which support MRT, AGAL2 and float textures. - - This profile supports 4 render targets. Increase AGAL commands and register count. - Add float textures. - - - - - cast 4 - - - - Use an standard profile to target GPUs which support AGAL2 and float textures. - - This profile is an alternative to standard profile, which removes MRT and a few - features in AGAL2 but can reach more GPUs. - - - - - cast 5 - - - - Use standard extended profile to target GPUs which support AGAL3 and instanced - drawing feature. - - This profile extends the standard profile. - - This profile is enabled on mobile platforms from AIR 17.0 and on Windows and Mac - from AIR 18.0. - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Use the default feature support profile. - - This profile most closely resembles Stage3D support used in previous releases. - - - - - cast 1 - - - - Use a constrained feature support profile to target older GPUs - - This profile is primarily targeted at devices that only support PS_2.0 level - shaders like the Intel GMA 9xx series. In addition, this mode tries to improve - memory bandwidth usage by rendering directly into the back buffer. There are - several side effects: - - * You are limited to 64 ALU and 32 texture instructions per shader. - * Only four texture read instructions per shader. - * No support for predicate register. This affects sln/sge/seq/sne, which you - replace with compound mov/cmp instructions, available with ps_2_0. - * The Context3D back buffer must always be within the bounds of the stage. - * Only one instance of a Context3D running in Constrained profile is allowed - within a Flash Player instance. - * Standard display list list rendering is driven by `Context3D.present()` instead of - being based on the SWF frame rate. That is, if a Context3D object is active and - visible you must call `Context3D.present()` to render the standard display list. - * Reading back from the back buffer through `Context3D.drawToBitmapData()` might - include parts of the display list content. Alpha information will be lost. - - - - - cast 2 - - - - Use an extended feature support profile to target newer GPUs which support larger - textures - - This profile increases the maximum 2D Texture and RectangleTexture size to 4096x4096 - - - - - cast 3 - - - - Use an standard profile to target GPUs which support MRT, AGAL2 and float textures. - - This profile supports 4 render targets. Increase AGAL commands and register count. - Add float textures. - - - - - cast 4 - - - - Use an standard profile to target GPUs which support AGAL2 and float textures. - - This profile is an alternative to standard profile, which removes MRT and a few - features in AGAL2 but can reach more GPUs. - - - - - cast 5 - - - - Use standard extended profile to target GPUs which support AGAL3 and instanced - drawing feature. - - This profile extends the standard profile. - - This profile is enabled on mobile platforms from AIR 17.0 and on Windows and Mac - from AIR 18.0. - - - - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying a Program3D source format. - - - - - - cast 0 - - - - The program will use the AGAL (Adobe Graphics Assembly Language) format - - - - - cast 1 - - - - The program will use the GLSL (GL Shader Language) format - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - The program will use the AGAL (Adobe Graphics Assembly Language) format - - - - - cast 1 - - - - The program will use the GLSL (GL Shader Language) format - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying whether a shader program is a fragment - or a vertex program. - - - - - - cast 0 - - - - A fragment (or pixel) program. - - - - - cast 1 - - - - A vertex program. - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - A fragment (or pixel) program. - - - - - cast 1 - - - - A vertex program. - - - - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying the Context3D render mode. - - - - - - cast 0 - - - - Automatically choose rendering engine. - - A hardware-accelerated rendering engine is used if available on the current - device. Availability of hardware acceleration is influenced by the device - capabilites, the wmode when running under Flash Player, and the render mode when - running under AIR. - - - - - cast 1 - - - - Use software 3D rendering. - - Software rendering is not available on mobile devices. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Automatically choose rendering engine. - - A hardware-accelerated rendering engine is used if available on the current - device. Availability of hardware acceleration is influenced by the device - capabilites, the wmode when running under Flash Player, and the render mode when - running under AIR. - - - - - cast 1 - - - - Use software 3D rendering. - - Software rendering is not available on mobile devices. - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying stencil actions. - - A stencil action specifies how the values in the stencil buffer should be changed. - - - - - - cast 0 - - - - Decrement the stencil buffer value, clamping at 0, the minimum value. - - - - - cast 1 - - - - Decrement the stencil buffer value. If the result is less than 0, the minimum - value, then the buffer value is "wrapped around" to 255. - - - - - cast 2 - - - - Increment the stencil buffer value, clamping at 255, the maximum value. - - - - - cast 3 - - - - Increment the stencil buffer value. If the result exceeds 255, the maximum - value, then the buffer value is "wrapped around" to 0. - - - - - cast 4 - - - - Invert the stencil buffer value, bitwise. - - For example, if the 8-bit binary number in the stencil buffer is: 11110000, then - the value is changed to: 00001111. - - - - - cast 5 - - - - Keep the current stencil buffer value. - - - - - cast 6 - - - - Replace the stencil buffer value with the reference value. - - - - - cast 7 - - - - Set the stencil buffer value to 0. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Decrement the stencil buffer value, clamping at 0, the minimum value. - - - - - cast 1 - - - - Decrement the stencil buffer value. If the result is less than 0, the minimum - value, then the buffer value is "wrapped around" to 255. - - - - - cast 2 - - - - Increment the stencil buffer value, clamping at 255, the maximum value. - - - - - cast 3 - - - - Increment the stencil buffer value. If the result exceeds 255, the maximum - value, then the buffer value is "wrapped around" to 0. - - - - - cast 4 - - - - Invert the stencil buffer value, bitwise. - - For example, if the 8-bit binary number in the stencil buffer is: 11110000, then - the value is changed to: 00001111. - - - - - cast 5 - - - - Keep the current stencil buffer value. - - - - - cast 6 - - - - Replace the stencil buffer value with the reference value. - - - - - cast 7 - - - - Set the stencil buffer value to 0. - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for sampler filter mode. - - - - - - cast 0 - - - - Use anisotropic filter with radio 16 when upsampling textures - - - - - cast 1 - - - - Use anisotropic filter with radio 2 when upsampling textures - - - - - cast 2 - - - - Use anisotropic filter with radio 4 when upsampling textures - - - - - cast 3 - - - - Use anisotropic filter with radio 8 when upsampling textures - - - - - cast 4 - - - - Use linear interpolation when upsampling textures (gives a smooth, blurry look). - - - - - cast 5 - - - - Use nearest neighbor sampling when upsampling textures (gives a pixelated, - sharp mosaic look). - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Use anisotropic filter with radio 16 when upsampling textures - - - - - cast 1 - - - - Use anisotropic filter with radio 2 when upsampling textures - - - - - cast 2 - - - - Use anisotropic filter with radio 4 when upsampling textures - - - - - cast 3 - - - - Use anisotropic filter with radio 8 when upsampling textures - - - - - cast 4 - - - - Use linear interpolation when upsampling textures (gives a smooth, blurry look). - - - - - cast 5 - - - - Use nearest neighbor sampling when upsampling textures (gives a pixelated, - sharp mosaic look). - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying a texture format. - - - - - - cast 0 - - - - 16 bit, bgr packed as 5:6:5 - - - - - cast 1 - - - - 32 bit - - - - - cast 2 - - - - 16 bit, bgra packed as 4:4:4:4 - - - - - cast 3 - - - - ATF (Adobe Texture Format) - - - - - cast 4 - - - - ATF (Adobe Texture Format), with alpha - - - - - cast 5 - - - - 64 bit, rgba as 16:16:16:16 - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - 16 bit, bgr packed as 5:6:5 - - - - - cast 1 - - - - 32 bit - - - - - cast 2 - - - - 16 bit, bgra packed as 4:4:4:4 - - - - - cast 3 - - - - ATF (Adobe Texture Format) - - - - - cast 4 - - - - ATF (Adobe Texture Format), with alpha - - - - - cast 5 - - - - 64 bit, rgba as 16:16:16:16 - - - - - - - - - - - - - - - - - - - - - - - - - Constants to specify the orientation of a triangle relative to the view point. - - "checkstyle:FieldDocComment" - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for specifying vertex buffers. - - "checkstyle:FieldDocComment" - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - - - - - - - - - - - - - - - - - - Defines the values to use for sampler wrap mode - - - - - - cast 0 - - - - Clamp texture coordinates outside the 0..1 range. - - The function is x = max(min(x,0),1) - - - - - cast 1 - - - - Clamp in U axis but Repeat in V axis. - - - - - cast 2 - - - - - - - - - cast 3 - - - - Repeat in U axis but Clamp in V axis. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Clamp texture coordinates outside the 0..1 range. - - The function is x = max(min(x,0),1) - - - - - cast 1 - - - - Clamp in U axis but Repeat in V axis. - - - - - cast 2 - - - - - - - - - cast 3 - - - - Repeat in U axis but Clamp in V axis. - - - - - - - - - - - - - - - - - - - <__context> - - - - <__id> - - - - <__memoryUsage> - - - - <__numIndices> - - - - <__tempUInt16Array> - - - - <__usage> - - - - - - Free all native GPU resources associated with this object. No `upload()` calls - on this object will work and using the object in rendering will also fail. - - - - - - - - - - Store in the graphics subsystem vertex indices. - - @param data a ByteArray containing index data. Each index is represented by - 16-bits (two bytes) in the array. The number of bytes in data should be - `byteArrayOffset` plus two times count. - @param byteArrayOffset offset, in bytes, into the data ByteArray from where to - start reading. - @param startOffset The index in this IndexBuffer3D object of the first index to - be loaded in this IndexBuffer3D object. A value for `startIndex` not equal to zero - may be used to load a sub-region of the index data. - @param count The number of indices represented by data. - @throws TypeError kNullPointerError when data is null. - @throws RangeError kBadInputSize when any of `count`, `byteArrayOffset`, or - `startOffset` is less than 0, or if `byteArrayOffset` is greater than or equal - to the length of data, or if two times count plus `byteArrayOffset` is greater - than the length of data, or if `startOffset + count` is greater than `numIndices` - given in `context3D.createIndexBuffer()`. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - { byteLength : -1 } - Store in the graphics subsystem vertex indices. - - @param data an ArrayBufferView containing index data. Each index is represented by - 16-bits (two bytes) in the array. - @param byteLength The number of bytes to read. - - - - - - - - - Store in the graphics subsystem vertex indices. - - @param data a vector of vertex indices. Only the low 16 bits of each index - value are used. The length of the vector must be greater than or equal to count. - @param startOffset The index in this IndexBuffer3D object of the first index to - be loaded. A value for startOffset not equal to zero may be used to load a - sub-region of the index data. - @param count The number of indices in `data`. - @throws TypeError kNullPointerError when `data` is `null`. - @throws RangeError kBadInputSize when `count is less than 0 or greater than the - length of `data`, or when `startOffset + count` is greater than `numIndices` - given in `context3D.createIndexBuffer()`. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - - - - IndexBuffer3D is used to represent lists of vertex indices comprising graphic elements - retained by the graphics subsystem. - - Indices managed by an IndexBuffer3D object may be used to select vertices from a - vertex stream. Indices are 16-bit unsigned integers. The maximum allowable index - value is 65535 (0xffff). The graphics subsystem does not retain a reference to - vertices provided to this object. Data uploaded to this object may be modified or - discarded without affecting the stored values. - - IndexBuffer3D cannot be instantiated directly. Create instances by using - `context3D.createIndexBuffer()` - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - - - - - <__agalAlphaSamplerEnabled> - - - - <__agalAlphaSamplerUniforms> - - - - <__agalFragmentUniformMap> - - - - <__agalPositionScale> - - - - <__agalSamplerUniforms> - - - - <__agalSamplerUsageMask> - - - - <__agalUniforms> - - - - <__agalVertexUniformMap> - - - - <__context> - - - - <__format> - - - - <__glFragmentShader> - - - - <__glFragmentSource> - - - - <__glProgram> - - - - <__glslAttribNames> - - - - <__glslAttribTypes> - - - - <__glslSamplerNames> - - - - <__glslUniformLocations> - - - - <__glslUniformNames> - - - - <__glslUniformTypes> - - - - <__glVertexShader> - - - - <__glVertexSource> - - - - <__samplerStates> - - - - - - Frees all resources associated with this object. After disposing a - Program3D object, calling `upload()` and rendering using this object will fail. - - - - - - - **BETA** - - Get the index for the specified shader attribute. - - @returns The index, or -1 if the attribute is not bound or - was not found in the shader sources - - - - - - - **BETA** - - Get the index for the specified shader constant. - - @returns The index, or -1 if the constant is not bound or - was not found in the shader sources - - - - - - - - Uploads a pair of rendering programs expressed in AGAL (Adobe Graphics Assembly - Language) bytecode. - - Program bytecode can be created using the Pixel Bender 3D offline tools. It can - also be created dynamically. The AGALMiniAssembler class is a utility class - that compiles AGAL assembly language programs to AGAL bytecode. The class is not - part of the runtime. When you upload the shader programs, the bytecode is - compiled into the native shader language for the current device (for example, - OpenGL or Direct3D). The runtime validates the bytecode on upload. - - The programs run whenever the Context3D `drawTriangles()` method is invoked. The - vertex program is executed once for each vertex in the list of triangles to be - drawn. The fragment program is executed once for each pixel on a triangle surface. - - The "variables" used by a shader program are called registers. The following - registers are defined: - - | Name | Number per Fragment program | Number per Vertex program | Purpose | - | --- | --- | --- | --- | - | Attribute | n/a | 8 | Vertex shader input; read from a vertex buffer specified using `Context3D.setVertexBufferAt()`. | - | Constant | 28 | 128 | Shader input; set using the `Context3D.setProgramConstants()` family of functions. | - | Temporary | 8 | 8 | Temporary register for computation, not accessible outside program. | - | Output | 1 | 1 | Shader output: in a vertex program, the output is the clipspace position; in a fragment program, the output is a color. | - | Varying | 8 | 8 | Transfer interpolated data between vertex and fragment shaders. The varying registers from the vertex program are applied as input to the fragment program. Values are interpolated according to the distance from the triangle vertices. | - | Sampler | 8 | n/a | Fragment shader input; read from a texture specified using `Context3D.setTextureAt()` | - - A vertex program receives input from two sources: vertex buffers and constant - registers. Specify which vertex data to use for a particular vertex attribute - register using the Context3D `setVertexBufferAt()` method. You can define up to - eight input registers for vertex attributes. The vertex attribute values are read - from the vertex buffer for each vertex in the triangle list and placed in the - attribute register. Specify constant registers using the Context3D - `setProgramConstantsFromMatrix()` or `setProgramConstantsFromVector()` - methods. Constant registers retain the same value for every vertex in the - triangle list. (You can only modify the constant values between calls to - `drawTriangles().`) - - The vertex program is responsible for projecting the triangle vertices into - clip space (the canonical viewing area within ±1 on the x and y axes and 0-1 on - the z axis) and placing the transformed coordinates in its output register. - (Typically, the appropriate projection matrix is provided to the shader in a set - of constant registers.) The vertex program must also copy any vertex attributes - or computed values needed by the fragment program to a special set of variables - called varying registers. When a fragment shader runs, the value supplied in a - varying register is linearly interpolated according to the distance of the - current fragment from each triangle vertex. - - A fragment program receives input from the varying registers and from a separate - set of constant registers (set with `setProgramConstantsFromMatrix()` or - `setProgramConstantsFromVector()`). You can also read texture data from textures - uploaded to the rendering context using sampler registers. Specify which texture - to access with a particular sampler register using the Context3D `setTextureAt()` - method. The fragment program is responsible for setting its output register to a - color value. - - @param vertexProgram AGAL bytecode for the Vertex program. The ByteArray object - must use the little endian format. - @param fragmentProgram AGAL bytecode for the Fragment program. The ByteArray - object must use the little endian format. - @throws TypeError Null Pointer Error: if vertexProgram or fragmentProgram is - `null`. - @throws Error Object Disposed: if the Program3D object was disposed either - directly by a call to `dispose()`, or indirectly by calling the Context3D - `dispose()` or because the rendering context was disposed because of device loss. - @throws ArgumentError Agal Program Too Small: when either program code array - is smaller than 31 bytes length. This is the size of the shader bytecode of a - one-instruction program. - @throws ArgumentError Program Must Be Little Endian: if either of the program - byte code arrays is not little endian. - @throws Error Native Shader Compilation Failed: if the output of the AGAL - translator is not a compilable native shader language program. This error is only - thrown in release players. - @throws Error Native Shader Compilation Failed OpenGL: if the output of the - AGAL translator is not a compilable OpengGL shader language program, and - includes compilation diagnostics. This error is only thrown in debug players. - @throws Error Native Shader Compilation Failed D3D9: if the output of the AGAL - translator is not a compilable Direct3D shader language program, and includes - compilation diagnostics. This error is only thrown in debug players. - - The following errors are thrown when the AGAL bytecode validation fails: - - @throws Error Not An Agal Program: if the header "magic byte" is wrong. The - first byte of the bytecode must be 0xa0. This error can indicate that the byte - array is set to the wrong endian order. - @throws Error Bad Agal Version: if the AGAL version is not supported by the - current SWF version. The AGAL version must be set to 1 for SWF version 13. - @throws Error Bad Agal Program Type: if the AGAL program type identifier is - not valid. The third byte in the byte code must be 0xa1. This error can indicates - that the byte array is set to the wrong endian order. - @throws Error Bad Agal Shader Type: if the shader type code is not either - fragment or vertex (1 or 0). - @throws Error Invalid Agal Opcode Out Of Range: if an invalid opcode is - encountered in the token stream. - @throws Error Invalid Agal Opcode Not Implemented: if an invalid opcode is - encountered in the token stream. - @throws Error Agal Opcode Only Allowed In Fragment Program: if an opcode is - encountered in the token stream of the vertex program that is only allowed in fragment programs, such as KIL or TEX. - @throws Error Bad Agal Source Operands: if both source operands are constant - registers. You must compute the result outside the shader program and pass it - in using a single constant register. - @throws Error Both Operands Are Indirect Reads: if both operands are indirect - reads. - @throws Error Opcode Destination Must Be All Zero: if a token with an opcode - (such as KIL) that has no destination sets a non-zero value for the destination - register. - @throws Error Opcode Destination Must Use Mask: if an opcode that produces - only a 3 component result is used without masking. - @throws Error Too Many Tokens: if there are too many tokens (more than 200) in - an AGAL program. - @throws Error Fragment Shader Type: if the fragment program type (byte 6 of - fragmentProgram parameter) is not set to 1. - @throws Error Vertex Shader Type: if the vertex program type (byte 6 of - vertexProgram parameter) is not set to 0. - @throws Error Varying Read But Not Written To: if the fragment shader reads a - varying register that was never written to by the vertex shader. - @throws Error Varying Partial Write: if a varying register is only partially - written to. All components of a varying register must be written to. - @throws Error Fragment Write All Components: if a fragment color output is only - partially written to. All four components of the color output must be written to. - @throws Error Vertex Write All Components: if a vertex clip space output is only - partially written to. All components of the vertex clip space output must be - written to. - @throws Error Unused Operand: if an unused operand in a token is not set to all - zero. - @throws Error Sampler Register Only In Fragment: if a texture sampler register - is used in a vertex program. - @throws Error Sampler Register Second Operand: if a sampler register is used - as a destination or first operand of an AGAL token. - @throws Error Indirect Only Allowed In Vertex: if indirect addressing is used - in a fragment program. - @throws Error Indirect Only Into Constant Registers: if indirect addressing - is used on a non-constant register. - @throws Error Indirect Source Type: if the indirect source type is not - attribute, constant or temporary register. - @throws Error Indirect Addressing Fields Must Be Zero: if not all indirect - addressing fields are zero for direct addressing. - @throws Error Varying Registers Only Read In Fragment: if a varying register is - read in a vertex program. Varying registers can only be written in vertex - programs and read in fragment programs. - @throws Error Attribute Registers Only Read In Vertex: if an attribute - registers is read in a fragment program. Attribute registers can only be read - in vertex programs. - @throws Error Can Not Read Output Register: if an output (position or color) - register is read. Output registers can only be written to, not read. - @throws Error Temp Register Read Without Write: if a temporary register is read - without being written to earlier. - @throws Error Temp Register Component Read Without Write: if a specific - temporary register component is read without being written to earlier. - @throws Error Sampler Register Cannot Be Written To: if a sampler register is - written to. Sampler registers can only be read, not written to. - @throws Error Varying Registers Write: if a varying register is written to in - a fragment program. Varying registers can only be written in vertex programs and - read in fragment programs. - @throws Error Attribute Register Cannot Be Written To: if an attribute - register is written to. Attribute registers are read-only. - @throws Error Constant Register Cannot Be Written To: if a constant register - is written to inside a shader program. - @throws Error Destination Writemask Is Zero: if a destination writemask is - zero. All components of an output register must be set. - @throws Error AGAL Reserved Bits Should Be Zero: if any reserved bits in a - token are not zero. This indicates an error in creating the bytecode (or - malformed bytecode). - @throws Error Unknown Register Type: if an invalid register type index is used. - @throws Error Sampler Register Out Of Bounds: if an invalid sampler register - index is used. - @throws Error Varying Register Out Of Bounds: if an invalid varying register - index is used. - @throws Error Attribute Register Out Of Bounds: if an invalid attribute - register index is used. - @throws Error Constant Register Out Of Bounds: if an invalid constant - register index is used. - @throws Error Output Register Out Of Bounds: if an invalid output register - index is used. - @throws Error Temporary Register Out Of Bounds: if an invalid temporary - register index is used. - @throws Error Cube Map Sampler Must Use Clamp: if a cube map sampler does not - set the wrap mode to clamp. - @throws Error Unknown Sampler Dimension: if a sample uses an unknown sampler - dimension. (Only 2D and cube textures are supported.) - @throws Error Unknown Filter Mode: if a sampler uses an unknown filter mode. - (Only nearest neighbor and linear filtering are supported.) - @throws Error Unknown Mipmap Mode: if a sampler uses an unknown mipmap mode. - (Only none, nearest neighbor, and linear mipmap modes are supported.) - @throws Error Unknown Wrapping Mode if a sampler uses an unknown wrapping mode. - (Only clamp and repeat wrapping modes are supported.) - @throws Error Unknown Special Flag: if a sampler uses an unknown special flag. - @throws Error Output Color Not Maskable: You cannot mask the color output - register in a fragment program. All components of the color register must be set. - @throws Error Second Operand Must Be Sampler Register: The AGAL tex opcode must - have a sampler as the second source operand. - @throws Error Indirect Not Allowed: indirect addressing used where not allowed. - @throws Error Swizzle Must Be Scalar: swizzling error. - @throws Error Cant Swizzle 2nd Source: swizzling error. - @throws Error Second Use Of Sampler Must Have Same Params: all samplers that - access the same texture must use the same dimension, wrap, filter, special, and - mipmap settings. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - **BETA** - - Uploads a pair of rendering programs expressed in GLSL (GL Shader Language). - - <__buildAGALUniformList set="method" line="481"> - - - - <__deleteShaders set="method" line="587"> - - - - <__disable set="method" line="609"> - - - - <__enable set="method" line="651"> - - - - <__flush set="method" line="706"> - - - - <__getSamplerState set="method" line="747"> - - - - - - - <__markDirty set="method" line="752"> - - - - - - - - - <__processGLSLData set="method" line="766"> - - - - - - - - <__setPositionScale set="method" line="838"> - - - - - - - <__setSamplerState set="method" line="849"> - - - - - - - - <__uploadFromGLSL set="method" line="854"> - - - - - - - - - - - - - - - - The Program3D class represents a pair of rendering programs (also called "shaders") - uploaded to the rendering context. - - Programs managed by a Program3D object control the entire rendering of triangles - during a Context3D drawTriangles() call. Upload the binary bytecode to the rendering - context using the upload method. (Once uploaded, the program in the original byte - array is no longer referenced; changing or discarding the source byte array does - not change the program.) - - Programs always consist of two linked parts: A vertex and a fragment program. - - 1. The vertex program operates on data defined in VertexBuffer3D objects and is - responsible for projecting vertices into clip space and passing any required vertex - data, such as color, to the fragment shader. - 2. The fragment shader operates on the attributes passed to it by the vertex program - and produces a color for every rasterized fragment of a triangle, resulting in pixel - colors. Note that fragment programs have several names in 3D programming literature, - including fragment shader and pixel shader. - - Designate which program pair to use for subsequent rendering operations by passing the - corresponding Program3D instance to the Context3D `setProgram()` method. - - You cannot create a Program3D object directly; use the Context3D `createProgram()` - method instead. - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.ShaderInput - openfl.display.ShaderParameter - openfl.display.Stage - - - - - - - - - - - - - - - - <__getUniformRegisters get="inline" set="null" line="1013"> - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - "checkstyle:FieldDocComment" - hide - - - - - <__allDirty> - - - - <__anyDirty> - - - - <__registerLookup> - - - - <__uniforms> - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - <__context> - - - - <__data> - - - - <__id> - - - - <__memoryUsage> - - - - <__numVertices> - - - - <__stride> - - - - <__tempFloat32Array> - - - - <__usage> - - - - <__vertexSize> - - - - - - Frees all resources associated with this object. After disposing a vertex - buffer, calling `upload()` and rendering using this object will fail. - - - - - - - - - - Uploads the data for a set of points to the rendering context from a byte array. - - @param data a byte array containing the vertex data. Each data value is four - bytes long. The number of values in a vertex is specified at buffer creation - using the data32PerVertex parameter to the Context3D `createVertexBuffer3D()` - method. The length of the data in bytes must be `byteArrayOffset` plus four times - the number of values per vertex times the number of vertices. The ByteArray object - must use the little endian format. - @param byteArrayOffset number of bytes to skip from the beginning of data - @param startVertex The index of the first vertex to be loaded. A value for - startVertex not equal to zero may be used to load a sub-region of the vertex data. - @param numVertices The number of vertices to be loaded from data. - @throws TypeError Null Pointer Error: when data is `null`. - @throws RangeError Bad Input Size: if `byteArrayOffset` is less than 0, or if - `byteArrayOffset` is greater than or equal to the length of data, or if no. of - elements in data - `byteArrayOffset` is less than `numVertices*data32pervertex*4` - given in Context3D `createVertexBuffer()`. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - { byteLength : -1 } - Uploads the data for a set of points to the rendering context from a typed array. - - @param data a typed array of 32-bit values. A single vertex is comprised of a - number of values stored sequentially in the vector. The number of values in a - vertex is specified at buffer creation using the `data32PerVertex` parameter to the - Context3D `createVertexBuffer3D()` method. - @param byteLength The number of bytes to read. - - - - - - - - - Uploads the data for a set of points to the rendering context from a vector array. - - @param data a vector of 32-bit values. A single vertex is comprised of a - number of values stored sequentially in the vector. The number of values in a - vertex is specified at buffer creation using the data32PerVertex parameter to the - Context3D `createVertexBuffer3D()` method. The length of the vector must be the - number of values per vertex times the number of vertexes. - @param startVertex The index of the first vertex to be loaded. A value for - `startVertex` not equal to zero may be used to load a sub-region of the vertex data. - @param numVertices The number of vertices represented by data. - @throws TypeError Null Pointer Error: when `data` is `null`. - @throws RangeError Bad Input Size: when number of elements in data is less than - `numVertices * data32PerVertex` given in Context3D `createVertexBuffer()`, or - when `startVertex + numVertices` is greater than `numVertices` given in Context3D - `createVertexBuffer()`. - - - - - - - - - - - - The VertexBuffer3D class represents a set of vertex data uploaded to a rendering context. - - Use a VertexBuffer3D object to define the data associated with each point in a set - of vertexes. You can upload the vertex data either from a Vector array or a ByteArray. - (Once uploaded, the data in the original array is no longer referenced; changing or - discarding the source array does not change the vertex data.) - - The data associated with each vertex is in an application-defined format and is used - as the input for the vertex shader program. Identify which values belong to which - vertex program input using the Context3D `setVertexBufferAt()` function. A vertex - program can use up to eight inputs (also known as vertex attribute registers). Each - input can require between one and four 32-bit values. For example, the [x,y,z] - position coordinates of a vertex can be passed to a vertex program as a vector - containing three 32 bit values. The Context3DVertexBufferFormat class defines - constants for the supported formats for shader inputs. You can supply up to - sixty-four 32-bit values (256 bytes) of data for each point (but a single vertex - shader cannot use all of the data in this case). - - The `setVertexBufferAt()` function also identifies which vertex buffer to use for - rendering any subsequent `drawTriangles()` calls. To render data from a different - vertex buffer, call setVertexBufferAt() again with the appropriate arguments. (You - can store data for the same point in multiple vertex buffers, say position data in - one buffer and texture coordinates in another, but typically rendering is more - efficient if all the data for a point comes from a single buffer.) - - The Index3DBuffer object passed to the Context3D `drawTriangles()` method organizes - the vertex data into triangles. Each value in the index buffer is the index to a - vertex in the vertex buffer. A set of three indexes, in sequence, defines a triangle. - - You cannot create a VertexBuffer3D object directly. Use the Context3D - `createVertexBuffer()` method instead. - - To free the render context resources associated with a vertex buffer, call the object's - `dispose()` method. - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - { useMask : true } - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - new Array() - - - - - - - - - - - - - - - - - - - - - - - - - - { offset : 0 } - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - - - - - { offset : 0, emitSwizzle : true } - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - cast 2 - - - - - - - - cast 3 - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - <__readUInt24 set="method" line="145"> - - - - <__readUInt32 set="method" line="154"> - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - cast 0 - - - - - - - - cast 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__currentGLArrayBuffer> - <__currentGLElementArrayBuffer> - <__currentGLFramebuffer> - <__currentGLTexture2D> - <__currentGLTextureCubeMap> - <__enableGLBlend> - <__enableGLCullFace> - <__enableGLDepthTest> - <__enableGLScissorTest> - <__enableGLStencilTest> - <__frontFaceGLCCW> - <__glBlendEquation> - <__primaryGLFramebuffer> - <__rttDepthGLRenderbuffer> - <__rttGLFramebuffer> - <__rttGLRenderbuffer> - <__rttStencilGLRenderbuffer> - - - - "checkstyle:FieldDocComment" - - - - - - - - - - - - <__compressedFormats static="1"> - - - - - - - <__compressedFormatsAlpha static="1"> - - - - - - - <__supportsBGRA expr="null" line="37" static="1"> - - - null - - - - <__textureFormat static="1"> - - - - <__textureInternalFormat static="1"> - - - - <__alphaTexture> - - - - <__context> - - - - <__format> - - - - <__glDepthRenderbuffer> - - - - <__glFramebuffer> - - - - <__glStencilRenderbuffer> - - - - <__height> - - - - <__internalFormat> - - - - <__optimizeForRenderToTexture> - - - - <__samplerState> - - - - <__streamingLevels> - - - - <__textureContext> - - - "checkstyle:Dynamic" - - - - <__textureID> - - - - <__textureTarget> - - - - <__width> - - - - - - Frees all GPU resources associated with this texture. After disposal, calling - `upload()` or rendering with this object fails. - - <__getGLFramebuffer set="method" line="186"> - - - - - - - - "checkstyle:Dynamic" - - - - <__getImage set="method" line="251"> - - - - - - - <__getTexture set="method" line="304"> - - - - <__setSamplerState set="method" line="309"> - - - - - - - <__uploadFromImage set="method" line="382"> - - - - - - - - - - - - - - The TextureBase class is the base class for Context3D texture objects. - - **Note:** You cannot create your own texture classes using TextureBase. To add - functionality to a texture class, extend either Texture or CubeTexture instead. - - - "tags=\"haxe,release\"" - - openfl.display._internal.SamplerState - openfl.display3D.Context3D - openfl.display.BitmapData - openfl.display.Stage - - - - - <__framebufferSurface> - - - - <__size> - - - - <__uploadedSides> - - - - - - - - - - - { async : false } - Uploads a cube texture in Adobe Texture Format (ATF) from a byte array. - - The byte array must contain all faces and mipmaps for the texture. - - @param data a byte array that containing a compressed cube texture including - mipmaps. The ByteArray object must use the little endian format. - @param byteArrayOffset an optional offset at which to start reading the texture - data. - @param async If `true`, this function returns immediately. Any draw method which - attempts to use the texture will fail until the upload completes successfully. Upon - successful upload, this Texture object dispatches `Event.TEXTURE_READY`. Default - value: `false`. - @throws TypeError Null Pointer Error: when `data` is `null`. - @throws ArgumentError Texture Decoding Failed: when the compression format of - this object cannot be derived from the format of the compressed data in data. - @throws ArgumentError Texture Needs To Be Square: when the decompressed texture - does not have equal `width` and `height`. - @throws ArgumentError Texture Size Does Not Match: when the width and height of - the decompressed texture do not equal the length of the texture's edge. - @throws ArgumentError Miplevel Too Large: if the mip level of the decompressed - texture is greater than that implied by the length of the texture's edge. - @throws ArgumentError Texture Format Mismatch: if the decoded ATF bytes don't - contain a texture compatible with this texture's format or is not a cube texture. - @throws Error 3768: The Stage3D API may not be used during background execution. - @throws RangeError Bad Input Size: when there is integer overflow of - `byteArrayOffset` or if `byteArrayOffset` + 6 is greater than the length of `data`, - or if the number of bytes available from `byteArrayOffset` to the end of the data - byte array is less than the amount of data required for ATF texture. - - - - - - - - - - { generateMipmap : false, miplevel : 0 } - Uploads a component of a cube map texture from a BitmapData object. - - This function uploads one mip level of one side of the cube map. Call - `uploadFromBitmapData()` as necessary to upload each mip level and face of the - cube map. - - @param source a bitmap. - @param side A code indicating which side of the cube to upload: - positive X : 0 - negative X : 1 - positive Y : 2 - negative Y : 3 - positive Z : 4 - negative Z : 5 - @param miplevel the mip level to be loaded, level zero being the top-level - full-resolution image. The default value is zero. - @throws TypeError Null Pointer Error: if source is `null`. - @throws ArgumentError Miplevel Too Large: if the specified mip level is greater - than that implied by the the texture's dimensions. - @throws ArgumentError Invalid Cube Side: if side is greater than 5. - @throws ArgumentError Invalid BitmapData Error: if source if the BitmapData - object does not contain a valid cube texture face. The image must be square, with - sides equal to a power of two, and the correct size for the miplevel specified. - @throws ArgumentError Texture Format Mismatch: if the texture format is - `Context3DTextureFormat.COMPRESSED` or `Context3DTextureFormat.COMPRESSED_ALPHA` - and the code is executing on a mobile platform where runtime texture compression - is not supported. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - - - { miplevel : 0 } - Uploads a component of a cube map texture from a ByteArray object. - - This function uploads one mip level of one side of the cube map. Call - `uploadFromByteArray()` as neccessary to upload each mip level and face of the - cube map. - - @param data a byte array containing the image in the format specified when - this CubeTexture object was created. The ByteArray object must use the little - endian format. - @param byteArrayOffset reading of the byte array starts there. - @param side A code indicating which side of the cube to upload: - positive X : 0 - negative X : 1 - positive Y : 2 - negative Y : 3 - positive Z : 4 - negative Z : 5 - @param miplevel the mip level to be loaded, level zero is the top-level, - full-resolution image. - @throws TypeError Null Pointer Error: when data is null. - @throws ArgumentError Miplevel Too Large: if the specified mip level is greater than that implied by the Texture's dimensions. - @throws RangeError Bad Input Size: if the number of bytes available from byteArrayOffset to the end of the data byte array is less than the amount of data required for a texture of this mip level or if byteArrayOffset is greater than or equal to the length of data. - @throws ArgumentError Texture Format Mismatch: if the texture format is Context3DTextureFormat.COMPRESSED or Context3DTextureFormat.COMPRESSED_ALPHA and the code is executing on a mobile platform where runtime texture compression is not supported. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - - { miplevel : 0 } - Uploads a component of a cube map texture from an ArrayBufferView object. - - This function uploads one mip level of one side of the cube map. Call - `uploadFromTypedArray()` as necessary to upload each mip level and face of the - cube map. - - @param data a typed array containing the image in the format specified when - this CubeTexture object was created. - @param side A code indicating which side of the cube to upload: - positive X : 0 - negative X : 1 - positive Y : 2 - negative Y : 3 - positive Z : 4 - negative Z : 5 - @param miplevel the mip level to be loaded, level zero is the top-level, - full-resolution image. - - <__getGLFramebuffer set="method" line="257" override="1"> - - - - - - - - - <__setSamplerState set="method" line="288" override="1"> - - - - - - - <__sideToTarget set="method" line="325"> - - - - - - - <__uploadCompressedTextureFromByteArray set="method" line="341"> - - - - - - - - - - - - - - - - - - - The CubeTexture class represents a cube texture uploaded to a rendering context. - - Defines a cube map texture for use during rendering. Cube mapping is used for many - rendering techniques, such as environment maps, skyboxes, and skylight illumination. - - You cannot create a CubeTexture object directly; use the Context3D - `createCubeTexture()` instead. - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - openfl.events.Event - - - - - - - - - - - Uploads a texture from a BitmapData object. - - @param source a bitmap. - @throws TypeError Null Pointer Error: when `source` is `null`. - @throws ArgumentError Invalid BitmapData Error: when `source` does not contain a - valid texture. The maximum allowed size in any dimension is 4096 or the size of the - backbuffer, whichever is greater. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - Uploads a texture from a ByteArray. - - @param data a byte array that is contains enough bytes in the textures internal - format to fill the texture. rgba textures are read as bytes per texel component (1 - or 4). float textures are read as floats per texel component (1 or 4). The - ByteArray object must use the little endian format. - @param byteArrayOffset the position in the byte array object at which to start - reading the texture data. - @throws TypeError Null Pointer Error: when `data` is `null`. - @throws RangeError Bad Input Size: if the number of bytes available from - `byteArrayOffset` to the end of data byte array is less than the amount of data - required for a texture, or if `byteArrayOffset` is greater than or equal to the - length of data. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - Uploads a texture from an ArrayBufferView. - - @param data a typed array that contains enough bytes in the textures internal - format to fill the texture. rgba textures are read as bytes per texel component (1 - or 4). float textures are read as floats per texel component (1 or 4). - - <__setSamplerState set="method" line="124" override="1"> - - - - - - - - - - - - - - - - - - The Rectangle Texture class represents a 2-dimensional texture uploaded to a rendering - context. - - Defines a 2D texture for use during rendering. - - Texture cannot be instantiated directly. Create instances by using Context3D - `createRectangleTexture()` method. - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - - - - - - <__lowMemoryMode expr="false" line="31" static="1"> - - - false - - - - - - - - - - - { async : false } - Uploads a compressed texture in Adobe Texture Format (ATF) from a ByteArray - object. ATF file version 2 requires SWF version 21 or newer and ATF file version 3 - requires SWF version 29 or newer. For ATF files created with png image without - alpha the format string given during Context3DObject `createTexture` should be - `"COMPRESSED"` and for ATF files created with png image with alpha the format - string given during Context3DObject `createTexture` should be `"COMPRESSED_ALPHA"`. - - @param data a byte array that contains a compressed texture including mipmaps. - The ByteArray object must use the little endian format. - @param byteArrayOffset the position in the byte array at which to start reading - the texture data. - @param async If true, this function returns immediately. Any draw method which - attempts to use the texture will fail until the upload completes successfully. - Upon successful upload, this CubeTexture object dispatches `Event.TEXTURE_READY`. - Default value: `false`. - @throws TypeError Null Pointer Error: when `data` is `null`. - @throws ArgumentError Texture Decoding Failed: when the compression format of - this object cannot be derived from the format of the compressed data in data or - when the SWF version is incompatible with the ATF file version. - @throws ArgumentError Texture Size Does Not Match: when the width and height of - the decompressed texture do not equal the dimensions of this Texture object. - @throws ArgumentError Miplevel Too Large: if the mip level of the decompressed - texture is greater than that implied by the size of the texture. - @throws ArgumentError Texture Format Mismatch: if the decoded ATF bytes don't - contain a texture compatible with this texture's format. - @throws Error 3768: The Stage3D API may not be used during background execution. - @throws RangeError Bad Input Size: when there is integer overflow of - `byteArrayOffset` or if `byteArrayOffset` + 6 is greater than the length of `data`, - or if the number of bytes available from `byteArrayOffset` to the end of the `data` - byte array is less than the amount of data required for ATF texture. - - - - - - - - - { generateMipmap : false, miplevel : 0 } - Uploads a texture from a BitmapData object. - - @param source a bitmap. - @param miplevel the mip level to be loaded, level zero being the top-level - full-resolution image. - @throws TypeError Null Pointer Error: when `source` is `null`. - @throws ArgumentError Miplevel Too Large: if the specified mip level is greater - than that implied by the larger of the Texture's dimensions. - @throws ArgumentError Invalid BitmapData Error: if `source` if the BitmapData - object does not contain a valid cube texture face. The image must have sides equal - to a power of two, and the correct size for the miplevel specified. - @throws ArgumentError Texture Format Mismatch: if the texture format is - Context3DTextureFormat.COMPRESSED or Context3DTextureFormat.COMPRESSED_ALPHA and - the code is executing on a mobile platform where runtime texture compression is - not supported. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - - { miplevel : 0 } - Uploads a texture from a ByteArray. - - @param data a byte array that is contains enough bytes in the textures - internal format to fill the texture. rgba textures are read as bytes per texel - component (1 or 4). float textures are read as floats per texel component (1 or 4). - The ByteArray object must use the little endian format. - @param byteArrayOffset the position in the byte array object at which to start - reading the texture data. - @param miplevel the mip level to be loaded, level zero is the top-level, - full-resolution image. - @throws TypeError Null Pointer Error: when `data` is `null`. - @throws ArgumentError Miplevel Too Large: if the specified mip level is greater - than that implied by the larger of the Texture's dimensions. - @throws RangeError Bad Input Size: if the number of bytes available from - `byteArrayOffset` to the end of the data byte array is less than the amount of data - required for a texture of this mip level or if `byteArrayOffset` is greater than or - equal to the length of data. - @throws ArgumentError Texture Format Mismatch: if the texture format is - Context3DTextureFormat.COMPRESSED or Context3DTextureFormat.COMPRESSED_ALPHA and - the code is executing on a mobile platform where runtime texture compression is not - supported. - @throws Error 3768: The Stage3D API may not be used during background execution. - - - - - - - - { miplevel : 0 } - Uploads a texture from an ArrayBufferView. - - @param data a typed array that contains enough bytes in the textures - internal format to fill the texture. rgba textures are read as bytes per texel - component (1 or 4). float textures are read as floats per texel component (1 or 4). - @param miplevel the mip level to be loaded, level zero is the top-level, - full-resolution image. - - <__setSamplerState set="method" line="263" override="1"> - - - - - - - <__uploadCompressedTextureFromByteArray set="method" line="300"> - - - - - - - - - - - - - - - - - - - - The Texture class represents a 2-dimensional texture uploaded to a rendering context. - - Defines a 2D texture for use during rendering. - - Texture cannot be instantiated directly. Create instances by using Context3D - `createTexture()` method. - - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - openfl.events.Event - - - - - - - - An integer specifying the height of the video stream, in pixels. - - For a live stream, this value is the same as the Camera.height property of the - Camera object that is capturing the video stream. For a recorded video file, this - value is the height of the video. The `NetStream.Video.DimensionChange` event is - dispatched in the case of recorded videos when this value changes. - - - - An integer specifying the width of the video stream, in pixels. - - For a live stream, this value is the same as the Camera.width property of the - Camera object that is capturing the video stream. For a recorded video file, this - value is the width of the video. The `NetStream.Video.DimensionChange` event is - dispatched in the case of recorded videos when this value changes. - - <__cacheTime> - - - - <__netStream> - - - - - - - - - Specifies a video stream to be rendered within the texture of the VideoTexture - object. - - A video file can be stored on the local file system or on Flash Media Server. If - the value of the netStream argument is `null`, the video is no longer played in the - VideoTexture object. - - @param netStream - - - <__getTexture set="method" line="150" override="1"> - - - - <__textureReady set="method" line="166"> - - - - - - - - - - - RGB - conversion) and so the standard shaders with static images can be used without change. - The image used by the rendering pipeline is the latest up-to-date frame at the time the - rendering occurs using this texture. There is no tearing in a video frame, however if - the same texture is used several times, some of the instances may be from different - timestamps.]]> - - "tags=\"haxe,release\"" - - openfl.display3D.Context3D - openfl.display.Stage - openfl.net.NetStream - openfl.events.Event - - - - - - <_pools expr="[]" line="9" static="1"> - - - - - [] - - - - - - - - - - - * Recycle or create new FlxRect. - * Be sure to put() them back into the pool after you're done with them! - - - - - - - * Recycle or create a new FlxRect which will automatically be released - * to the pool when passed into a flixel function. - - <_weak expr="false"> - - false - - <_inPool expr="false"> - - false - - - - - - - * Add this FlxRect to the recycling pool. - - - - * Add this FlxPoint to the recycling pool if it's a weak reference (allocated via weak()). - - - - - - - * Does nothing - - - - * Necessary for IFlxDestroyable. - - - - - - - - - - - - - - - - - - { message : "" } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - { message : "" } - Creates a new IOError object. - - @param message A string associated with the error object. - - The IOError exception is thrown when some type of input or output failure - occurs. For example, an IOError exception is thrown if a read/write - operation is attempted on a socket that has not connected or that has - become disconnected. - - "tags=\"haxe,release\"" - - - - - - - - - - - - { id : 0, message : null } - Creates a new EOFError object. - - @param message A string associated with the error object. - - An EOFError exception is thrown when you attempt to read past the end of - the available data. For example, an EOFError is thrown when one of the read - methods in the IDataInput interface is called and there is insufficient - data to satisfy the read request. - - - "tags=\"haxe,release\"" - - - - - - - - - - - { message : "" } - Creates a new IllegalOperationError object. - - @param message A string associated with the error object. - - The IllegalOperationError exception is thrown when a method is not - implemented or the implementation doesn't cover the current usage. - - Examples of illegal operation error exceptions include: - - * A base class, such as DisplayObjectContainer, provides more - functionality than a Stage can support(such as masks) - * Certain accessibility methods are called when the player is compiled - without accessibility support - * The mms.cfg setting prohibits a FileReference action - * ActionScript tries to run a `FileReference.browse()` call - when a browse dialog box is already open - * ActionScript tries to use an unsupported protocol for a FileReference - object(such as FTP) - * Authoring-only features are invoked from a run-time - player - * An attempt is made to set the name of a Timeline-placed - object - - - "tags=\"haxe,release\"" - - - - - - - - - - - { message : "" } - - - - "tags=\"haxe,release\"" - - - - - - - - - - - { message : "" } - - - - "tags=\"haxe,release\"" - - - - - - - - "activity" - The `ActivityEvent.ACTIVITY` constant defines the value of the `type` - property of an `activity` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `activating` | `true` if the device is activating or `false` if it is deactivating. | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object beginning or ending a session, such as a Camera or Microphone object. | - - - - Indicates whether the device is activating (`true`) or deactivating - (`false`). - - - - <__init set="method" line="84" override="1"> - - - - - - - - - - - - { activating : false, cancelable : false, bubbles : false } - Creates an event object that contains information about activity - events. Event objects are passed as parameters to Event listeners. - - @param type The type of the event. Event listeners can access - this information through the inherited `type` - property. There is only one type of activity event: - `ActivityEvent.ACTIVITY`. - @param bubbles Determines whether the Event object participates in - the bubbling phase of the event flow. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through - the inherited `cancelable` property. - @param activating Indicates whether the device is activating (`true`) - or deactivating (`false`). Event listeners can - access this information through the `activating` - property. - - A Camera or Microphone object dispatches an ActivityEvent object whenever - a camera or microphone reports that it has become active or inactive. - There is only one type of activity event: `ActivityEvent.ACTIVITY`. - - "tags=\"haxe,release\"" - - - - - - - - "link" - Defines the value of the `type` property of a `link` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The text field containing the hyperlink that has been clicked. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `text` | The remainder of the URL after "event:" | - - - - "textInput" - Defines the value of the `type` property of a `textInput` event - object. - **Note:** This event is not dispatched for the Delete or Backspace - keys. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true`; call the `preventDefault()` method to cancel default behavior. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The text field into which characters are being entered. The target is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - |`text` | The character or sequence of characters entered by the user. | - - - - ` tag.]]> - - - - <__init set="method" line="103" override="1"> - - - - - - - - - - - - { text : "", cancelable : false, bubbles : false } - Creates an Event object that contains information about text events. Event - objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. Possible values are: - `TextEvent.LINK` and - `TextEvent.TEXT_INPUT`. - @param bubbles Determines whether the Event object participates in the - bubbling phase of the event flow. Event listeners can - access this information through the inherited - `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - @param text One or more characters of text entered by the user. - Event listeners can access this information through the - `text` property. - - An object dispatches a TextEvent object when a user enters text in a text - field or clicks a hyperlink in an HTML-enabled text field. There are two - types of text events: `TextEvent.LINK` and - `TextEvent.TEXT_INPUT`. - - - "tags=\"haxe,release\"" - - - - - - - - "error" - Defines the value of the `type` property of an `error` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object experiencing a network operation failure. | - | `text` | Text to be displayed as an error message. | - - - - Contains the reference number associated with the specific error. For a - custom ErrorEvent object, this number is the value from the - `id` parameter supplied in the constructor. - - - - <__init set="method" line="96" override="1"> - - - - - - - - - - - - - { id : 0, text : "", cancelable : false, bubbles : false } - Creates an Event object that contains information about error events. - Event objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. There is only one type of error event: - `ErrorEvent.ERROR`. - @param bubbles Determines whether the Event object bubbles. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - @param text Text to be displayed as an error message. Event - listeners can access this information through the - `text` property. - @param id A reference number to associate with the specific error - (supported in Adobe AIR only). - - An object dispatches an ErrorEvent object when an error causes an - asynchronous operation to fail. - - The ErrorEvent class defines only one type of `error` event: - `ErrorEvent.ERROR`. The ErrorEvent class also serves as the base - class for several other error event classes, including the AsyncErrorEvent, - IOErrorEvent, SecurityErrorEvent, SQLErrorEvent, and UncaughtErrorEvent - classes. - - You can check for `error` events that do not have any - listeners by registering a listener for the `uncaughtError` - (UncaughtErrorEvent.UNCAUGHT_ERROR) event. - - An uncaught error also causes an error dialog box displaying the error - event to appear when content is running in the debugger version of Flash - Player or the AIR Debug Launcher(ADL) application. - - - "tags=\"haxe,release\"" - - - - - - - - "asyncError" - The `AsyncErrorEvent.ASYNC_ERROR` constant defines the value of the - `type` property of an `asyncError` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object dispatching the event. | - | `error` | The error that triggered the event. | - - - - The exception that was thrown. - - - - <__init set="method" line="89" override="1"> - - - - - - - - - - - - - { error : null, text : "", cancelable : false, bubbles : false } - Creates an AsyncErrorEvent object that contains information about - asyncError events. AsyncErrorEvent objects are passed as parameters to - event listeners. - - @param type The type of the event. Event listeners can access - this information through the inherited `type` - property. There is only one type of error event: - `ErrorEvent.ERROR`. - @param bubbles Determines whether the Event object bubbles. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through - the inherited `cancelable` property. - @param text Text to be displayed as an error message. Event - listeners can access this information through the - `text` property. - @param error The exception that occurred. If error is non-null, - the event's `errorId` property is set from the - error's `errorId` property. - - An object dispatches an AsyncErrorEvent when an exception is thrown from - native asynchronous code, which could be from, for example, - LocalConnection, NetConnection, SharedObject, or NetStream. There is only - one type of asynchronous error event: `AsyncErrorEvent.ASYNC_ERROR`. - - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - The EventPhase class provides values for the `eventPhase` - property of the Event class. - - - - - - cast 2 - - - - The target phase, which is the second phase of the event flow. - - - - - cast 3 - - - - The bubbling phase, which is the third phase of the event flow. - - - - - cast 1 - - - - The capturing phase, which is the first phase of the event flow. - - - - - - - - - cast 2 - - - - The target phase, which is the second phase of the event flow. - - - - - cast 3 - - - - The bubbling phase, which is the third phase of the event flow. - - - - - cast 1 - - - - The capturing phase, which is the first phase of the event flow. - - - - - - - - The EventType abstract type provides type safety when - matching dispatch events with the correct type of listener - - For example, the following code has the wrong type in the - event listener, it should be a MouseEvent: - - ```haxe - addEventListener(MouseEvent.CLICK, function(event:TouchEvent) {}); - ``` - - OpenFL uses the EventType abstract for standard event types - to turn these logical errors into a compile-time errors. - - - - - - - - A == B - - - - - - - - A != B - - - - - - - - - - - A == B - - - - - - - - A != B - - - - - - - "focusIn" - Defines the value of the `type` property of a `focusIn` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `keyCode` | 0; applies only to `keyFocusChange` events. | - | `relatedObject` | The complementary InteractiveObject instance that is affected by the change in focus. | - | `shiftKey` | `false`; applies only to `keyFocusChange` events. | - | `target` | The InteractiveObject instance that has just received focus. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `direction` | The direction from which focus was assigned. This property reports the value of the `direction` parameter of the `assignFocus()` method of the stage. If the focus changed through some other means, the value will always be `FocusDirection.NONE`. Applies only to `focusIn` events. For all other focus events the value will be `FocusDirection.NONE`. | - - - - "focusOut" - Defines the value of the `type` property of a `focusOut` event object. - - This event has the following properties: - - |Property | Value || --- | --- || `bubbles` | `true` || `cancelable` | `false`; - there is no default behavior to - cancel. || `currentTarget` | The - object that is actively processing the Event object with an event - listener. || `keyCode` | 0; applies - only to `keyFocusChange` - events. || `relatedObject` | The - complementary InteractiveObject instance that is affected by the - change in - focus. || `shiftKey` | `false`; - applies only to `keyFocusChange` - events. || `target` | The - InteractiveObject instance that has just lost focus. The `target` is - not always the object in the display list that registered the event - listener. Use the `currentTarget` property to access the object in the - display list that is currently processing the event. - | - - - - "keyFocusChange" - Defines the value of the `type` property of a `keyFocusChange` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true`; call the `preventDefault()` method to cancel default behavior. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `keyCode` | The key code value of the key pressed to trigger a `keyFocusChange` event. | - | `relatedObject` | The complementary InteractiveObject instance that is affected by the change in focus. | - | `shiftKey` | `true` if the Shift key modifier is activated; `false` otherwise. | - | `target` | The InteractiveObject instance that currently has focus. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseFocusChange" - Defines the value of the `type` property of a `mouseFocusChange` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true`; call the `preventDefault()` method to cancel default behavior. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `keyCode` | 0; applies only to `keyFocusChange` events. | - | `relatedObject` | The complementary InteractiveObject instance that is affected by the change in focus. | - | `shiftKey` | `false`; applies only to `keyFocusChange` events. | - | `target` | The InteractiveObject instance that currently has focus. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - The key code value of the key pressed to trigger a - `keyFocusChange` event. - - - - A reference to the complementary InteractiveObject instance that is - affected by the change in focus. For example, when a `focusOut` - event occurs, the `relatedObject` represents the - InteractiveObject instance that has gained focus. - - The value of this property can be `null` in two - circumstances: if there no related object, or there is a related object, - but it is in a security sandbox to which you don't have access. Use the - `isRelatedObjectInaccessible()` property to determine which of - these reasons applies. - - - - Indicates whether the Shift key modifier is activated, in which case the - value is `true`. Otherwise, the value is `false`. - This property is used only if the FocusEvent is of type - `keyFocusChange`. - - - - <__init set="method" line="191" override="1"> - - - - - - - - - - - - - - { keyCode : 0, shiftKey : false, relatedObject : null, cancelable : false, bubbles : false } - Creates an Event object with specific information relevant to focus - events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values are: - `FocusEvent.FOCUS_IN`, - `FocusEvent.FOCUS_OUT`, - `FocusEvent.KEY_FOCUS_CHANGE`, and - `FocusEvent.MOUSE_FOCUS_CHANGE`. - @param bubbles Determines whether the Event object participates in - the bubbling stage of the event flow. - @param cancelable Determines whether the Event object can be canceled. - @param relatedObject Indicates the complementary InteractiveObject - instance that is affected by the change in focus. For - example, when a `focusIn` event occurs, - `relatedObject` represents the - InteractiveObject that has lost focus. - @param shiftKey Indicates whether the Shift key modifier is - activated. - @param keyCode Indicates the code of the key pressed to trigger a - `keyFocusChange` event. - - An object dispatches a FocusEvent object when the user changes the focus - from one object in the display list to another. There are four types of - focus events: - - * `FocusEvent.FOCUS_IN` - * `FocusEvent.FOCUS_OUT` - * `FocusEvent.KEY_FOCUS_CHANGE` - * `FocusEvent.MOUSE_FOCUS_CHANGE` - - - "tags=\"haxe,release\"" - - - - - - - - "fullScreen" - The `FullScreenEvent.FULL_SCREEN` constant defines the value of the - `type` property of a `fullScreen` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `fullScreen` | `true` if the display state is full screen or `false` if it is normal. | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Stage object. | - - - - "fullScreenInteractiveAccepted" - The `FULL_SCREEN_INTERACTIVE_ACCEPTED:String` constant defines the value of the - type property of a `fullScreenInteractiveAccepted` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `fullScreen` | `true` if the display state is full screen or `false` if it is normal. | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Stage object. | - - - - Indicates whether the Stage object is in full-screen mode (`true`) or - not (`false`). - - - - Indicates whether the Stage object is in full-screen interactive mode (`true`) or - not (`false`). - - - - <__init set="method" line="109" override="1"> - - - - - - - - - - - - - { interactive : false, fullScreen : false, cancelable : false, bubbles : false } - Creates an event object that contains information about `fullScreen` - events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access - this information through the inherited `type` - property. There is only one type of `fullScreen` - event: `FullScreenEvent.FULL_SCREEN`. - @param bubbles Determines whether the Event object participates in - the bubbling phase of the event flow. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through - the inherited `cancelable` property. - @param fullScreen Indicates whether the device is activating (`true`) - or deactivating (`false`). Event listeners can - access this information through the `activating` - property. - - The Stage object dispatches a FullScreenEvent object whenever the Stage - enters or leaves full-screen display mode. There is only one type of - `fullScreen` event: `FullScreenEvent.FULL_SCREEN`. - - - "tags=\"haxe,release\"" - - - - - - - - "deviceAdded" - Indicates that a compatible device has been connected or turned on. - - - - "deviceRemoved" - Indicates that one of the enumerated devices has been disconnected or turned off. - - - - "deviceUnusable" - Dispatched when a game input device is connected but is not usable. - - - - Returns a reference to the device that was added or removed. When a device is added, use this property to get a reference to the new device, instead of enumerating all of the devices to find the new one. - - - - <__init set="method" line="61" override="1"> - - - - - - - - - - - - { device : null, cancelable : false, bubbles : true } - - The GameInputEvent class represents an event that is dispatched when a game input device has either been added or removed from the application platform. A game input device also dispatches events when it is turned on or off. - - - "tags=\"haxe,release\"" - - - - - - - - - "httpResponseStatus" - Unlike the `httpStatus` event, the `httpResponseStatus` event is - delivered before any response data. Also, the `httpResponseStatus` - event includes values for the `responseHeaders` and `responseURL` - properties (which are undefined for an `httpStatus` event. Note that - the `httpResponseStatus` event (if any) will be sent before (and in - addition to) any `complete` or `error` event. - The `HTTPStatusEvent.HTTP_RESPONSE_STATUS` constant defines the value - of the `type` property of a `httpResponseStatus` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `responseURL` | The URL from which the response was returned. | - | `responseHeaders` | The response headers that the response returned, as an array of URLRequestHeader objects. | - | `status` | The HTTP status code returned by the server. | - | `target` | The network object receiving an HTTP status code. | - - - - "httpStatus" - The `HTTPStatusEvent.HTTP_STATUS` constant defines the value of the - `type` property of a `httpStatus` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `status` | The HTTP status code returned by the server. | - | `target` | The network object receiving an HTTP status code. | - - - - Indicates whether the request was redirected. - - - - The response headers that the response returned, as an array of - URLRequestHeader objects. - - - - The URL that the response was returned from. In the case of redirects, - this will be different from the request URL. - - - - The HTTP status code returned by the server. For example, a value of 404 - indicates that the server has not found a match for the requested URI. - HTTP status codes can be found in sections 10.4 and 10.5 of the HTTP - specification at [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). - - - If Flash Player or AIR cannot get a status code from the server, or if - it cannot communicate with the server, the default value of 0 is passed to - your code. A value of 0 can be generated in any player(for example, if a - malformed URL is requested), and a value of 0 is always generated by the - Flash Player plug-in when it is run in the following browsers, which do - not pass HTTP status codes to the player: Netscape, Mozilla, Safari, - Opera, and Internet Explorer for the Macintosh. - - - - <__init set="method" line="148" override="1"> - - - - - - - - - - - - - { redirected : false, status : 0, cancelable : false, bubbles : false } - Creates an Event object that contains specific information about HTTP - status events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. There is only one type of HTTPStatus event: - `HTTPStatusEvent.HTTP_STATUS`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. Event listeners can - access this information through the inherited - `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - @param status Numeric status. Event listeners can access this - information through the `status` property. - - The application dispatches HTTPStatusEvent objects when a network request - returns an HTTP status code. - - HTTPStatusEvent objects are always sent before error or completion - events. An HTTPStatusEvent object does not necessarily indicate an error - condition; it simply reflects the HTTP status code(if any) that is - provided by the networking stack. Some Flash Player environments may be - unable to detect HTTP status codes; a status code of 0 is always reported - in these cases. - - In Flash Player, there is only one type of HTTPStatus event: - `httpStatus`. In the AIR runtime, a FileReference, URLLoader, or - URLStream can register to listen for an `httpResponseStatus`, - which includes `responseURL` and `responseHeaders` - properties. These properties are undefined in a `httpStatus` - event. - - - "tags=\"haxe,release\"" - - - - - - - - "ioError" - Defines the value of the `type` property of an `ioError` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `errorID` | A reference number associated with the specific error (AIR only). | - | `target` | The network object experiencing the input/output error. | - | `text` | Text to be displayed as an error message. | - - - - "standardOutputIoError" - The `standardOutputIoError` event is dispatched when an error occurs - while reading data from the `standardOutput` stream of a NativeProcess - object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event. | - | `errorID` | The reference number associated with the specific error. | - | `target` | The object on which the error occurred. | - | `text` | Text to be displayed as an error message. | - - - - "standardErrorIoError" - The `standardErrorIoError` event is dispatched when an error occurs - while reading data from the `standardError` stream of a NativeProcess - object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event. | - | `errorID` | The reference number associated with the specific error. | - | `target` | The object on which the error occurred. | - | `text` | Text to be displayed as an error message. | - - - - - - - - - - - - - { id : 0, text : "", cancelable : false, bubbles : true } - Creates an Event object that contains specific information about - `ioError` events. Event objects are passed as parameters to - Event listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. There is only one type of input/output error - event: `IOErrorEvent.IO_ERROR`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. Event listeners can - access this information through the inherited - `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - @param text Text to be displayed as an error message. Event - listeners can access this information through the - `text` property. - @param id A reference number to associate with the specific error - (supported in Adobe AIR only). - - An IOErrorEvent object is dispatched when an error causes input or output - operations to fail. - - You can check for error events that do not have any listeners by using - the debugger version of Flash Player or the AIR Debug Launcher(ADL). The - string defined by the `text` parameter of the IOErrorEvent - constructor is displayed. - - - "tags=\"haxe,release\"" - - - - - - - - "keyDown" - The `KeyboardEvent.KEY_DOWN` constant defines the value of the `type` - property of a `keyDown` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` in AIR, `false` in Flash Player; in AIR, canceling this event prevents the character from being entered into a text field. | - | `charCode` | The character code value of the key pressed or released. | - | `commandKey` | `true` on Mac if the Command key is active. Otherwise, `false` | - | `controlKey` | `true` on Windows and Linux if the Ctrl key is active. `true` on Mac if either the Control key is active. Otherwise, `false` | - | `ctrlKey` | `true` on Windows and Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `keyCode` | The key code value of the key pressed or released. | - | `keyLocation` | The location of the key on the keyboard. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `target` | The InteractiveObject instance with focus. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "keyUp" - The `KeyboardEvent.KEY_UP` constant defines the value of the `type` - property of a `keyUp` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `charCode` | Contains the character code value of the key pressed or released. | - | `commandKey` | `true` on Mac if the Command key is active. Otherwise, `false` | - | `controlKey` | `true` on Windows and Linux if the Ctrl key is active. `true` on Mac if either the Control key is active. Otherwise, `false` | - | `ctrlKey` | `true` on Windows if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `keyCode` | The key code value of the key pressed or released. | - | `keyLocation` | The location of the key on the keyboard. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `target` | The InteractiveObject instance with focus. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - Indicates whether the Alt key is active(`true`) or inactive - (`false`) on Windows; indicates whether the Option key is - active on Mac OS. - - - - Contains the character code value of the key pressed or released. The - character code values are English keyboard values. For example, if you - press Shift+3, `charCode` is # on a Japanese keyboard, just as - it is on an English keyboard. - - **Note: **When an input method editor(IME) is running, - `charCode` does not report accurate character codes. - - - - Indicates whether the Command key is active (`true`) or inactive - (`false`). Supported for Mac OS only. On Mac OS, the `commandKey` - property has the same value as the `ctrlKey` property. - - - - Indicates whether the Control key is active (`true`) or inactive - (`false`). On Windows and Linux, this is also true when the Ctrl key - is active. - - - - On Windows and Linux, indicates whether the Ctrl key is active - (`true`) or inactive(`false`); On Mac OS, indicates - whether either the Ctrl key or the Command key is active. - - - - The key code value of the key pressed or released. - - **Note: **When an input method editor(IME) is running, - `keyCode` does not report accurate key codes. - - - - Indicates the location of the key on the keyboard. This is useful for - differentiating keys that appear more than once on a keyboard. For - example, you can differentiate between the left and right Shift keys by - the value of this property: `KeyLocation.LEFT` for the left and - `KeyLocation.RIGHT` for the right. Another example is - differentiating between number keys pressed on the standard keyboard - (`KeyLocation.STANDARD`) versus the numeric keypad - (`KeyLocation.NUM_PAD`). - - - - Indicates whether the Shift key modifier is active(`true`) or - inactive(`false`). - - - - <__init set="method" line="212" override="1"> - - - - - - - - - - - - - - - - - - - { commandKeyValue : false, controlKeyValue : false, shiftKeyValue : false, altKeyValue : false, ctrlKeyValue : false, keyLocationValue : null, keyCodeValue : 0, charCodeValue : 0, cancelable : false, bubbles : false } - Creates an Event object that contains specific information about keyboard - events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values are: - `KeyboardEvent.KEY_DOWN` and - `KeyboardEvent.KEY_UP` - @param bubbles Determines whether the Event object participates - in the bubbling stage of the event flow. - @param cancelable Determines whether the Event object can be - canceled. - @param charCodeValue The character code value of the key pressed or - released. The character code values returned are - English keyboard values. For example, if you press - Shift+3, the `Keyboard.charCode()` - property returns # on a Japanese keyboard, just as - it does on an English keyboard. - @param keyCodeValue The key code value of the key pressed or released. - @param keyLocationValue The location of the key on the keyboard. - @param ctrlKeyValue On Windows, indicates whether the Ctrl key is - activated. On Mac, indicates whether either the - Ctrl key or the Command key is activated. - @param altKeyValue Indicates whether the Alt key modifier is - activated(Windows only). - @param shiftKeyValue Indicates whether the Shift key modifier is - activated. - @param commandKeyValue Indicates whether the Command key modifier is - activated. - - A KeyboardEvent object id dispatched in response to user input through a - keyboard. There are two types of keyboard events: - `KeyboardEvent.KEY_DOWN` and `KeyboardEvent.KEY_UP` - - Because mappings between keys and specific characters vary by device and - operating system, use the TextEvent event type for processing character - input. - - To listen globally for key events, listen on the Stage for the capture - and target or bubble phase. - - - "tags=\"haxe,release\"" - - - - - - - - "click" - Defines the value of the `type` property of a `click` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | For click events, this value is always `false`. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "doubleClick" - Defines the value of the `type` property of a `doubleClick` event - object. The `doubleClickEnabled` property must be `true` for an object - to generate the `doubleClick` event. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | For double-click events, this value is always `false`. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "middleClick" - Defines the value of the `type` property of a `middleClick` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | For middle-click events, this property is always `false`. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "middleMouseDown" - Defines the value of the `type` property of a `middleMouseDown` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the middle mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "middleMouseUp" - Defines the value of the `type` property of a `middleMouseUp` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the middle mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseDown" - Defines the value of the `type` property of a `mouseDown` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows and Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseMove" - Defines the value of the `type` property of a `mouseMove` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseOut" - Defines the value of the `type` property of a `mouseOut` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `relatedObject` | The display list object to which the pointing device now points. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseOver" - Defines the value of the `type` property of a `mouseOver` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `relatedObject` | The display list object to which the pointing device was pointing. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseUp" - Defines the value of the `type` property of a `mouseUp` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "mouseWheel" - Defines the value of the `type` property of a `mouseWheel` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `delta` | The number of lines that that each notch on the mouse wheel represents. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "releaseOutside" - Defines the value of the `type` property of a - `releaseOutside` event object. - - This event has the following properties: - - - - "rightClick" - Defines the value of the `type` property of a `rightClick` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | For right-click events, this property is always `false`. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "rightMouseDown" - Defines the value of the `type` property of a `rightMouseDown` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | For right-click events, this property is always `true`. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "rightMouseUp" - Defines the value of the `type` property of a `rightMouseUp` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `true` | - | `buttonDown` | `true` if the right mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; the default behavior cannot be canceled. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `clickCount` | Count of the number of mouse clicks to indicate whether the event is part of a multi-click sequence. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "rollOut" - Defines the value of the `type` property of a `rollOut` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `false` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `relatedObject` | The display list object to which the pointing device now points. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - - - "rollOver" - Defines the value of the `type` property of a `rollOver` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows). | - | `bubbles` | `false` | - | `buttonDown` | `true` if the primary mouse button is pressed; `false` otherwise. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `relatedObject` | The display list object to which the pointing device was pointing. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the pointing device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - - <__altKey static="1"> - - - - <__buttonDown static="1"> - - - - <__commandKey static="1"> - - - - <__ctrlKey static="1"> - - - - <__shiftKey static="1"> - - - - <__create set="method" line="680" static="1"> - - - - - - - - - - - - { delta : 0 } - - - - - - Indicates whether the Alt key is active(`true`) or inactive - (`false`). Supported for Windows only. On other operating - systems, this property is always set to `false`. - - - - Indicates whether the primary mouse button is pressed(`true`) - or not(`false`). - - - - Indicates whether the command key is activated (Mac only.) - - The value of property `commandKey` will have the same value as property `ctrlKey` - on the Mac. Always `false` on Windows or Linux. - - - - Indicates whether or not the mouse down event is part of a multi-click sequence. - This parameter will be zero for all mouse events other than `MouseEvent.mouseDown`, - `MouseEvent.mouseUp`, `MouseEvent.middleMouseDown`, `MouseEvent.middleMouseUp`, - `MouseEvent.rightMouseDown`, and `MouseEvent.rightMouseUp`. Listening for single - clicks, double clicks, or any multi-click sequence is possible with the - `clickCount` parameter. For example, an initial `MouseEvent.mouseDown` and - `MouseEvent.mouseUp` will have a `clickCount` of 1, and the second - `MouseEvent.mouseDown` and `MouseEvent.mouseUp` in a double-click sequence will - have a `clickCount` of 2. If the mouse moves sufficiently or the multi-click - sequence is interrupted for some reason, then the next `MouseEvent.mouseDown` - will have a `clickCount` of 1. The `doubleClick` event will continue to fire as - expected. - - - - On Windows or Linux, indicates whether the Ctrl key is active - (`true`) or inactive(`false`). On Macintosh, - indicates whether either the Control key or the Command key is activated. - - - - Indicates how many lines should be scrolled for each unit the user rotates - the mouse wheel. A positive delta value indicates an upward scroll; a - negative value indicates a downward scroll. Typical values are 1 to 3, but - faster rotation may produce larger values. This setting depends on the - device and operating system and is usually configurable by the user. This - property applies only to the `MouseEvent.mouseWheel` event. - - - - If `true`, the `relatedObject` property is set to `null` for reasons related to - security sandboxes. If the nominal value of `relatedObject` is a reference to a - DisplayObject in another sandbox, `relatedObject` is set to `null` unless there is - permission in both directions across this sandbox boundary. Permission is - established by calling `Security.allowDomain()` from a SWF file, or by providing a - policy file from the server of an image file, and setting the - `LoaderContext.checkPolicyFile` property when loading the image. - - - - The horizontal coordinate at which the event occurred relative to the - containing sprite. - - - - The vertical coordinate at which the event occurred relative to the - containing sprite. - - - - A reference to a display list object that is related to the event. For - example, when a `mouseOut` event occurs, - `relatedObject` represents the display list object to which the - pointing device now points. This property applies to the - `mouseOut`, `mouseOver`, `rollOut`, and - `rollOver` events. - - The value of this property can be `null` in two - circumstances: if there no related object, or there is a related object, - but it is in a security sandbox to which you don't have access. Use the - `isRelatedObjectInaccessible()` property to determine which of - these reasons applies. - - - - Indicates whether the Shift key is active(`true`) or inactive - (`false`). - - - - The horizontal coordinate at which the event occurred in global Stage - coordinates. This property is calculated when the `localX` - property is set. - - - - The vertical coordinate at which the event occurred in global Stage - coordinates. This property is calculated when the `localY` - property is set. - - - - - - Instructs Flash Player or Adobe AIR to render after processing of this - event completes, if the display list has been modified. - - <__init set="method" line="690" override="1"> - - - - - - - - - - - - - - - - - - - - - { clickCount : 0, commandKey : false, delta : 0, buttonDown : false, shiftKey : false, altKey : false, ctrlKey : false, relatedObject : null, localY : 0, localX : 0, cancelable : false, bubbles : true } - Creates an Event object that contains information about mouse events. - Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values are: - `MouseEvent.CLICK`, - `MouseEvent.DOUBLE_CLICK`, - `MouseEvent.MOUSE_DOWN`, - `MouseEvent.MOUSE_MOVE`, - `MouseEvent.MOUSE_OUT`, - `MouseEvent.MOUSE_OVER`, - `MouseEvent.MOUSE_UP`, - `MouseEvent.MIDDLE_CLICK`, - `MouseEvent.MIDDLE_MOUSE_DOWN`, - `MouseEvent.MIDDLE_MOUSE_UP`, - `MouseEvent.RIGHT_CLICK`, - `MouseEvent.RIGHT_MOUSE_DOWN`, - `MouseEvent.RIGHT_MOUSE_UP`, - `MouseEvent.MOUSE_WHEEL`, - `MouseEvent.ROLL_OUT`, and - `MouseEvent.ROLL_OVER`. - @param bubbles Determines whether the Event object participates in - the bubbling phase of the event flow. - @param cancelable Determines whether the Event object can be canceled. - @param localX The horizontal coordinate at which the event occurred - relative to the containing sprite. - @param localY The vertical coordinate at which the event occurred - relative to the containing sprite. - @param relatedObject The complementary InteractiveObject instance that is - affected by the event. For example, when a - `mouseOut` event occurs, - `relatedObject` represents the display - list object to which the pointing device now points. - @param ctrlKey On Windows or Linux, indicates whether the Ctrl key - is activated. On Mac, indicates whether either the - Ctrl key or the Command key is activated. - @param altKey Indicates whether the Alt key is activated(Windows - or Linux only). - @param shiftKey Indicates whether the Shift key is activated. - @param buttonDown Indicates whether the primary mouse button is - pressed. - @param delta Indicates how many lines should be scrolled for each - unit the user rotates the mouse wheel. A positive - delta value indicates an upward scroll; a negative - value indicates a downward scroll. Typical values are - 1 to 3, but faster rotation may produce larger - values. This parameter is used only for the - `MouseEvent.mouseWheel` event. - - A MouseEvent object is dispatched into the event flow whenever mouse events - occur. A mouse event is usually generated by a user input device, such as a - mouse or a trackball, that uses a pointer. - - When nested nodes are involved, mouse events target the deepest possible - nested node that is visible in the display list. This node is called the - _target node_. To have a target node's ancestor receive notification - of a mouse event, use `EventDispatcher.addEventListener()` on - the ancestor node with the `type` parameter set to the specific - mouse event you want to detect. - - - "tags=\"haxe,release\"" - - - - - - - - "netStatus" - Defines the value of the `type` property of a `netStatus` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `info` | An object with properties that describe the object's status or error condition. | - | `target` | The NetConnection or NetStream object reporting its status. | - - - - `. On Flash Media Server, `` is disabled by default. When enabled, the default timeout value is 3600 seconds (1 hour). For more information, see [Close idle connections](http://help.adobe.com/en_US/flashmediaserver/configadmin/WS5b3ccc516d4fbf351e63e3d119f2925e64-7ff0.html#WS5b3ccc516d4fbf351e63e3d119f2925e64-7fe9). | - | `"NetConnection.Connect.InvalidApp"` | `"error"` | The application name specified in the call to `NetConnection.connect()` is invalid. | - | `"NetConnection.Connect.NetworkChange"` | `"status"` | Flash Player has detected a network change, for example, a dropped wireless connection, a successful wireless connection,or a network cable loss.
      Use this event to check for a network interface change. Don't use this event to implement your NetConnection reconnect logic. Use `"NetConnection.Connect.Closed"` to implement your NetConnection reconnect logic. | - | `"NetConnection.Connect.Rejected"` | `"error"` | The connection attempt did not have permission to access the application. | - | `"NetConnection.Connect.Success"` | `"status"` | The connection attempt succeeded. | - | `"NetGroup.Connect.Failed"` | `"error"` | The NetGroup connection attempt failed. The `info.group` property indicates which NetGroup failed. | - | `"NetGroup.Connect.Rejected"` | `"error"` | The NetGroup is not authorized to function. The `info.group` property indicates which NetGroup was denied. | - | `"NetGroup.Connect.Succcess"` | `"status"` | The NetGroup is successfully constructed and authorized to function. The `info.group` property indicates which NetGroup has succeeded. | - | `"NetGroup.LocalCoverage.Notify"` | `"status"` | Sent when a portion of the group address space for which this node is responsible changes. | - | `"NetGroup.MulticastStream.PublishNotify"` | `"status"` | Sent when a new named stream is detected in NetGroup's Group. The `info.name:String` property is the name of the detected stream. | - | `"NetGroup.MulticastStream.UnpublishNotify"` | `"status"` | Sent when a named stream is no longer available in the Group. The `info.name:String` property is name of the stream which has disappeared. | - | `"NetGroup.Neighbor.Connect"` | `"status"` | Sent when a neighbor connects to this node. The `info.neighbor:String` property is the group address of the neighbor. The `info.peerID:String` property is the peer ID of the neighbor. | - | `"NetGroup.Neighbor.Disconnect"` | `"status"` | Sent when a neighbor disconnects from this node. The `info.neighbor:String` property is the group address of the neighbor. The `info.peerID:String` property is the peer ID of the neighbor. | - | `"NetGroup.Posting.Notify"` | `"status"` | Sent when a new Group Posting is received. The `info.message:Object` property is the message. The `info.messageID:String` property is this message's messageID. | - | `"NetGroup.Replication.Fetch.Failed"` | `"status"` | Sent when a fetch request for an object (previously announced with NetGroup.Replication.Fetch.SendNotify) fails or is denied. A new attempt for the object will be made if it is still wanted. The `info.index:Number` property is the index of the object that had been requested. | - | `"NetGroup.Replication.Fetch.Result"` | `"status"` | Sent when a fetch request was satisfied by a neighbor. The `info.index:Number` property is the object index of this result. The `info.object:Object` property is the value of this object. This index will automatically be removed from the Want set. If the object is invalid, this index can be re-added to the Want set with `NetGroup.addWantObjects()`. | - | `"NetGroup.Replication.Fetch.SendNotify"` | `"status"` | Sent when the Object Replication system is about to send a request for an object to a neighbor.The `info.index:Number` property is the index of the object that is being requested. | - | `"NetGroup.Replication.Request"` | `"status"` | Sent when a neighbor has requested an object that this node has announced with `NetGroup.addHaveObjects()`. This request **must** eventually be answered with either `NetGroup.writeRequestedObject()` or `NetGroup.denyRequestedObject()`. Note that the answer may be asynchronous. The `info.index:Number` property is the index of the object that has been requested. The `info.requestID:int` property is the ID of this request, to be used by `NetGroup.writeRequestedObject()` or `NetGroup.denyRequestedObject()`. | - | `"NetGroup.SendTo.Notify"` | `"status"` | Sent when a message directed to this node is received. The `info.message:Object` property is the message. The `info.from:String` property is the groupAddress from which the message was received. The `info.fromLocal:Boolean` property is `TRUE` if the message was sent by this node (meaning the local node is the nearest to the destination group address), and `FALSE` if the message was received from a different node. To implement recursive routing, the message must be resent with `NetGroup.sendToNearest()` if `info.fromLocal` is `FALSE`. | - | `"NetStream.Buffer.Empty"` | `"status"` | Flash Player is not receiving data quickly enough to fill the buffer. Data flow is interrupted until the buffer refills, at which time a `NetStream.Buffer.Full` message is sent and the stream begins playing again. | - | `"NetStream.Buffer.Flush"` | `"status"` | Data has finished streaming, and the remaining buffer is emptied. | - | `"NetStream.Buffer.Full"` | `"status"` | The buffer is full and the stream begins playing. | - | `"NetStream.Connect.Closed"` | `"status"` | The P2P connection was closed successfully. The `info.stream` property indicates which stream has closed. | - | `"NetStream.Connect.Failed"` | `"error"` | The P2P connection attempt failed. The `info.stream` property indicates which stream has failed. | - | `"NetStream.Connect.Rejected"` | `"error"` | The P2P connection attempt did not have permission to access the other peer. The `info.stream` property indicates which stream was rejected. | - | `"NetStream.Connect.Success"` | `"status"` | The P2P connection attempt succeeded. The `info.stream` property indicates which stream has succeeded. | - | `"NetStream.DRM.UpdateNeeded"` | `"status"` | A NetStream object is attempting to play protected content, but the required Flash Access module is either not present, not permitted by the effective content policy, or not compatible with the current player. To update the module or player, use the `update()` method of flash.system.SystemUpdater. | - | `"NetStream.Failed"` | `"error"` | (Flash Media Server) An error has occurred for a reason other than those listed in other event codes. | - | `"NetStream.MulticastStream.Reset"` | `"status"` | A multicast subscription has changed focus to a different stream published with the same name in the same group. Local overrides of multicast stream parameters are lost. Reapply the local overrides or the new stream's default parameters will be used. | - | `"NetStream.Pause.Notify"` | `"status"` | The stream is paused. | - | `"NetStream.Play.Failed"` | `"error"` | An error has occurred in playback for a reason other than those listed elsewhere in this table, such as the subscriber not having read access. | - | `"NetStream.Play.FileStructureInvalid"` | `"error"` | (AIR and Flash Player 9.0.115.0) The application detects an invalid file structure and will not try to play this type of file. | - | `"NetStream.Play.InsufficientBW"` | `"warning"` | (Flash Media Server) The client does not have sufficient bandwidth to play the data at normal speed. | - | `"NetStream.Play.NoSupportedTrackFound"` | `"error"` | (AIR and Flash Player 9.0.115.0) The application does not detect any supported tracks (video, audio or data) and will not try to play the file. | - | `"NetStream.Play.PublishNotify"` | `"status"` | The initial publish to a stream is sent to all subscribers. | - | `"NetStream.Play.Reset"` | `"status"` | Caused by a play list reset. | - | `"NetStream.Play.Start"` | `"status"` | Playback has started. | - | `"NetStream.Play.Stop"` | `"status"` | Playback has stopped. | - | `"NetStream.Play.StreamNotFound"` | `"error"` | The file passed to the `NetStream.play()` method can't be found. | - | `"NetStream.Play.Transition"` | `"status"` | (Flash Media Server 3.5) The server received the command to transition to another stream as a result of bitrate stream switching. This code indicates a success status event for the `NetStream.play2()` call to initiate a stream switch. If the switch does not succeed, the server sends a `NetStream.Play.Failed` event instead. When the stream switch occurs, an `onPlayStatus` event with a code of "NetStream.Play.TransitionComplete" is dispatched. For Flash Player 10 and later. | - | `"NetStream.Play.UnpublishNotify"` | `"status"` | An unpublish from a stream is sent to all subscribers. | - | `"NetStream.Publish.BadName"` | `"error"` | Attempt to publish a stream which is already being published by someone else. | - | `"NetStream.Publish.Idle"` | `"status"` | The publisher of the stream is idle and not transmitting data. | - | `"NetStream.Publish.Start"` | `"status"` | Publish was successful. | - | `"NetStream.Record.AlreadyExists"` | `"status"` | The stream being recorded maps to a file that is already being recorded to by another stream. This can happen due to misconfigured virtual directories. | - | `"NetStream.Record.Failed"` | `"error"` | An attempt to record a stream failed. | - | `"NetStream.Record.NoAccess"` | `"error"` | Attempt to record a stream that is still playing or the client has no access right. | - | `"NetStream.Record.Start"` | `"status"` | Recording has started. | - | `"NetStream.Record.Stop"` | `"status"` | Recording stopped. | - | `"NetStream.Seek.Failed"` | `"error"` | The seek fails, which happens if the stream is not seekable. | - | `"NetStream.Seek.InvalidTime"` | `"error"` | For video downloaded progressively, the user has tried to seek or play past the end of the video data that has downloaded thus far, or past the end of the video once the entire file has downloaded. The `info.details` property of the event object contains a time code that indicates the last valid position to which the user can seek. | - | `"NetStream.Seek.Notify"` | `"status"` | The seek operation is complete.
      Sent when `NetStream.seek()` is called on a stream in AS3 NetStream Data Generation Mode. The info object is extended to include `info.seekPoint` which is the same value passed to `NetStream.seek()`. | - | `"NetStream.Step.Notify"` | `"status"` | The step operation is complete. | - | `"NetStream.Unpause.Notify"` | `"status"` | The stream is resumed. | - | `"NetStream.Unpublish.Success"` | `"status"` | The unpublish operation was successfuul. | - | `"SharedObject.BadPersistence"` | `"error"` | A request was made for a shared object with persistence flags, but the request cannot be granted because the object has already been created with different flags. | - | `"SharedObject.Flush.Failed"` | `"error"` | The "pending" status is resolved, but the `SharedObject.flush()` failed. | - | `"SharedObject.Flush.Success"` | `"status"` | The "pending" status is resolved and the `SharedObject.flush()` call succeeded. | - | `"SharedObject.UriMismatch"` | `"error"` | An attempt was made to connect to a NetConnection object that has a different URI (URL) than the shared object. | - - If you consistently see errors regarding the buffer, try changing the - buffer using the `NetStream.bufferTime` property.]]>
      -
      - - - <__init set="method" line="171" override="1"> - - - - - - - - - - - - { info : null, cancelable : false, bubbles : false } - Creates an Event object that contains information about `netStatus` - events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access - this information through the inherited `type` - property. There is only one type of status event: - `NetStatusEvent.NET_STATUS`. - @param bubbles Determines whether the Event object participates in - the bubbling stage of the event flow. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through - the inherited `cancelable` property. - @param info An object containing properties that describe the - object's status. Event listeners can access this - object through the `info` property. - - A NetConnection, NetStream, or SharedObject object dispatches - NetStatusEvent objects when a it reports its status. There is only one - type of status event: `NetStatusEvent.NET_STATUS`. - - - "tags=\"haxe,release\"" - - -
      - - - - - "progress" - Defines the value of the `type` property of a `progress` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `bytesLoaded` | The number of items or bytes loaded at the time the listener processes the event. | - | `bytesTotal` | The total number of items or bytes that ultimately will be loaded if the loading process succeeds. | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The object reporting progress. | - - - - "socketData" - Defines the value of the `type` property of a `socketData` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event. | - | `bytesLoaded` | The number of items or bytes loaded at the time the listener processes the event. | - | `bytesTotal` | 0; this property is not used by `socketData` event objects. | - | `target` | The socket reporting progress. | - - - - "standardOutputData" - Defines the value of the `type` property of a `standardOutputData` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event. | - | `bytesLoaded` | The number of bytes of output data buffered by the NativeProcessObject.standardOutput due to this event. | - | `bytesTotal` | 0; this property is not used by `standardOutputData` event objects. | - | `target` | The NativeProcess object reporting output data. | - - - - "standardErrorData" - Defines the value of the `type` property of a `standardErrorData` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event. | - | `bytesLoaded` | The number of bytes of output data buffered by the NativeProcessObject.standardError due to this event. | - | `bytesTotal` | 0; this property is not used by `standardErrorData` event objects. | - | `target` | The NativeProcess object reporting output data. | - - - - The number of items or bytes loaded when the listener processes the event. - - - - The total number of items or bytes that will be loaded if the loading - process succeeds. If the progress event is dispatched/attached to a Socket - object, the bytesTotal will always be 0 unless a value is specified in the - bytesTotal parameter of the constructor. The actual number of bytes sent - back or forth is not set and is up to the application developer. - - - - <__init set="method" line="145" override="1"> - - - - - - - - - - - - - { bytesTotal : 0, bytesLoaded : 0, cancelable : false, bubbles : false } - Creates an Event object that contains information about progress events. - Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values - are:`ProgressEvent.PROGRESS`, - `ProgressEvent.SOCKET_DATA`, - `ProgressEvent.STANDARD_ERROR_DATA`, - `ProgressEvent.STANDARD_INPUT_PROGRESS`, and - `ProgressEvent.STANDARD_OUTPUT_DATA`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. - @param cancelable Determines whether the Event object can be canceled. - @param bytesLoaded The number of items or bytes loaded at the time the - listener processes the event. - @param bytesTotal The total number of items or bytes that will be loaded - if the loading process succeeds. - - A ProgressEvent object is dispatched when a load operation has begun or a - socket has received data. These events are usually generated when SWF - files, images or data are loaded into an application. There are two types - of progress events: `ProgressEvent.PROGRESS` and - `ProgressEvent.SOCKET_DATA`. Additionally, in AIR ProgressEvent - objects are dispatched when a data is sent to or from a child process using - the NativeProcess class. - - - "tags=\"haxe,release\"" - - - - - - - - "clearDOM" - The `RenderEvent.CLEAR_DOM` constant defines the value of the `type` property - of an `renderEvent` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `renderer` | A reference to the active display object renderer. | - | `target` | The display object that is going to be rendered. | - - - - "renderCairo" - The `RenderEvent.RENDER_CAIRO` constant defines the value of the `type` property - of an `renderEvent` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `renderer` | A reference to the active display object renderer. | - | `target` | The display object that is going to be rendered. | - - - - "renderCanvas" - The `RenderEvent.RENDER_CANVAS` constant defines the value of the `type` property - of an `renderEvent` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `renderer` | A reference to the active display object renderer. | - | `target` | The display object that is going to be rendered. | - - - - "renderDOM" - The `RenderEvent.RENDER_DOM` constant defines the value of the `type` property - of an `renderEvent` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `renderer` | A reference to the active display object renderer. | - | `target` | The display object that is going to be rendered. | - - - - "renderOpenGL" - The `RenderEvent.RENDER_OPENGL` constant defines the value of the `type` property - of an `renderEvent` event object. - - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true` | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `renderer` | A reference to the active display object renderer. | - | `target` | The display object that is going to be rendered. | - - - - Whether the current render should allow smoothing. - - - - The concatenated color transform for the display object being rendered. - - - - The concatenated matrix for the display object being rendered. - - - - The display object renderer being used for this render. - - - - <__init set="method" line="181" override="1"> - - - - - - - - - - - - - - { allowSmoothing : true, objectColorTransform : null, objectMatrix : null, cancelable : false, bubbles : false } - Creates an Event object that contains information about render events. - Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values - are: `RenderEvent.CLEAR_DOM`, - `RenderEvent.RENDER_CAIRO`, - `RenderEvent.RENDER_CANVAS`, - `RenderEvent.RENDER_DOM`, and - `RenderEvent.RENDER_OPENGL`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. - @param cancelable Determines whether the Event object can be canceled. - @param objectMatrix Sets the concatenated matrix for the display object being rendered. - @param objectTransform Sets the concatenated color transform for the display object being - rendered. - @param allowSmoothing Determines whether the current render should allow smoothing. - - **BETA** - - RenderEvent is dispatched (optionally) once a listener is added to a - DisplayObject. When the internal Stage renderer is ready to draw the specified - object, a RenderEvent will be dispatched. - - Caching a RenderEvent to access at a later time will not work properly. Also, - since the RenderEvent is more of an internal API, there may be additional - concerns to order to ensure that all objects and features work as-intended. - - The type of RenderEvent dispatched will match the type of rendering being used. - This renderer type will match the default Stage render, but also can depend on - whether an off-screen render (such as DisplayObject `cacheAsBitmap` or BitmapData - `draw`) is being used. - - - "tags=\"haxe,release\"" - - openfl.geom.ColorTransform - - - - - - - - "securityError" - The `SecurityErrorEvent.SECURITY_ERROR` constant defines the value of - the `type` property of a `securityError` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The network object reporting the security error. | - | `text` | Text to be displayed as an error message. | - - - - - - - - - - - - - { id : 0, text : "", cancelable : false, bubbles : false } - Creates an Event object that contains information about security error - events. Event objects are passed as parameters to event listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. There is only one type of error event: - `SecurityErrorEvent.SECURITY_ERROR`. - @param bubbles Determines whether the Event object participates in the - bubbling stage of the event flow. Event listeners can - access this information through the inherited - `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - @param text Text to be displayed as an error message. Event - listeners can access this information through the - `text` property. - @param id A reference number to associate with the specific error. - - An object dispatches a SecurityErrorEvent object to report the occurrence - of a security error. Security errors reported through this class are - generally from asynchronous operations, such as loading data, in which - security violations may not manifest immediately. Your event listener can - access the object's `text` property to determine what operation - was attempted and any URLs that were involved. If there are no event - listeners, the debugger version of Flash Player or the AIR Debug Launcher - (ADL) application automatically displays an error message that contains the - contents of the `text` property. There is one type of security - error event: `SecurityErrorEvent.SECURITY_ERROR`. - - Security error events are the final events dispatched for any target - object. This means that any other events, including generic error events, - are not dispatched for a target object that experiences a security - error. - - - "tags=\"haxe,release\"" - - - - - - - - "timer" - Defines the value of the `type` property of a `timer` event object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Timer object that has reached its interval. | - - - - "timerComplete" - Defines the value of the `type` property of a `timerComplete` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `false` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `target` | The Timer object that has completed its requests. | - - - - - - Instructs Flash Player or the AIR runtime to render after processing of - this event completes, if the display list has been modified. - - - - - - - - - { cancelable : false, bubbles : false } - Creates an Event object with specific information relevant to - `timer` events. Event objects are passed as parameters to event - listeners. - - @param type The type of the event. Event listeners can access this - information through the inherited `type` - property. - @param bubbles Determines whether the Event object bubbles. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through the - inherited `cancelable` property. - - A Timer object dispatches a TimerEvent objects whenever the Timer object - reaches the interval specified by the `Timer.delay` property. - - - "tags=\"haxe,release\"" - - - - - - - - "touchBegin" - Defines the value of the `type` property of a `TOUCH_BEGIN` touch - event object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchEnd" - Defines the value of the `type` property of a `TOUCH_END` touch event - object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchMove" - Defines the value of the `type` property of a `TOUCH_MOVE` touch event - object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchOut" - Defines the value of the `type` property of a `TOUCH_OUT` touch event - object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchOver" - Defines the value of the `type` property of a `TOUCH_OVER` touch event - object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchRollOut" - Defines the value of the `type` property of a `TOUCH_ROLL_OUT` touch - event object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchRollOver" - Defines the value of the `type` property of a `TOUCH_ROLL_OVER` touch - event object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - - - "touchTap" - Defines the value of the `type` property of a `TOUCH_TAP` touch event - object. - The dispatched TouchEvent object has the following properties: - - | Property | Value | - | --- | --- | - | `altKey` | `true` if the Alt key is active (Windows or Linux). | - | `bubbles` | `true` | - | `cancelable` | `false`; there is no default behavior to cancel. | - | `commandKey` | `true` on the Mac if the Command key is active; `false` if it is inactive. Always `false` on Windows. | - | `controlKey` | `true` if the Ctrl or Control key is active; `false` if it is inactive. | - | `ctrlKey` | `true` on Windows or Linux if the Ctrl key is active. `true` on Mac if either the Ctrl key or the Command key is active. Otherwise, `false`. | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `eventPhase` | The current phase in the event flow. | - | `isRelatedObjectInaccessible` | `true` if the relatedObject property is set to `null` because of security sandbox rules. | - | `localX` | The horizontal coordinate at which the event occurred relative to the containing sprite. | - | `localY` | The vertical coordinate at which the event occurred relative to the containing sprite. | - | `pressure` | A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`. | - | `relatedObject` | A reference to a display list object related to the event. | - | `shiftKey` | `true` if the Shift key is active; `false` if it is inactive. | - | `sizeX` | Width of the contact area. | - | `sizeY` | Height of the contact area. | - | `stageX` | The horizontal coordinate at which the event occurred in global stage coordinates. | - | `stageY` | The vertical coordinate at which the event occurred in global stage coordinates. | - | `target` | The InteractiveObject instance under the touching device. The `target` is not always the object in the display list that registered the event listener. Use the `currentTarget` property to access the object in the display list that is currently processing the event. | - | `touchPointID` | A unique identification number (as an int) assigned to the touch point. | - - <__create set="method" line="501" static="1"> - - - - - - - - - - - - - - Indicates whether the Alt key is active(`true`) or inactive - (`false`). Supported for Windows and Linux operating systems - only. - - - - Indicates whether the command key is activated (Mac only). - - On a Mac OS, the value of the `commandKey` property is the same value as the - `ctrlKey` property. This property is always `false` on Windows or Linux. - - - - Indicates whether the Control key is activated on Mac and whether the Ctrl key is - activated on Windows or Linux. - - - - On Windows or Linux, indicates whether the Ctrl key is active - (`true`) or inactive(`false`). On Macintosh, - indicates whether either the Control key or the Command key is activated. - - - - - "checkstyle:FieldDocComment" - - hide - - - - - Indicates whether the first point of contact is mapped to mouse events. - - - - The horizontal coordinate at which the event occurred relative to the - containing sprite. - - - - The vertical coordinate at which the event occurred relative to the - containing sprite. - - - - A value between `0.0` and `1.0` indicating force of - the contact with the device. If the device does not support detecting the - pressure, the value is `1.0`. - - - - A reference to a display list object that is related to the event. For - example, when a `touchOut` event occurs, - `relatedObject` represents the display list object to which the - pointing device now points. This property applies to the - `touchOut`, `touchOver`, `touchRollOut`, - and `touchRollOver` events. - - The value of this property can be `null` in two - circumstances: if there is no related object, or there is a related - object, but it is in a security sandbox to which you don't have access. - Use the `isRelatedObjectInaccessible()` property to determine - which of these reasons applies. - - - - Indicates whether the Shift key is active(`true`) or inactive - (`false`). - - - - Width of the contact area. - Only supported on Android(C++ target), in the range of 0-1. - - - - Height of the contact area. - Only supported on Android(C++ target), in the range of 0-1. - - - - The horizontal coordinate at which the event occurred in global Stage - coordinates. This property is calculated when the `localX` - property is set. - - - - The vertical coordinate at which the event occurred in global Stage - coordinates. This property is calculated when the `localY` - property is set. - - - - A unique identification number(as an int) assigned to the touch point. - - - - - - Instructs Flash Player or Adobe AIR to render after processing of this - event completes, if the display list has been modified. - - <__init set="method" line="511" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { isTouchPointCanceled : false, samples : null, touchIntent : null, timestamp : 0, controlKey : false, commandKey : false, shiftKey : false, altKey : false, ctrlKey : false, relatedObject : null, pressure : 0, sizeY : 0, sizeX : 0, localY : 0, localX : 0, isPrimaryTouchPoint : false, touchPointID : 0, cancelable : false, bubbles : true } - Creates an Event object that contains information about touch events. - Event objects are passed as parameters to event listeners. - - @param type The type of the event. Possible values are: - `TouchEvent.TOUCH_BEGIN`, - `TouchEvent.TOUCH_END`, - `TouchEvent.TOUCH_MOVE`, - `TouchEvent.TOUCH_OUT`, - `TouchEvent.TOUCH_OVER`, - `TouchEvent.TOUCH_ROLL_OUT`, - `TouchEvent.TOUCH_ROLL_OVER`, and - `TouchEvent.TOUCH_TAP`. - @param bubbles Determines whether the Event object - participates in the bubbling phase of the event - flow. - @param cancelable Determines whether the Event object can be - canceled. - @param touchPointID A unique identification number(as an int) - assigned to the touch point. - @param isPrimaryTouchPoint Indicates whether the first point of contact is - mapped to mouse events. - @param relatedObject The complementary InteractiveObject instance - that is affected by the event. For example, - when a `touchOut` event occurs, - `relatedObject` represents the - display list object to which the pointing - device now points. - @param ctrlKey On Windows or Linux, indicates whether the Ctrl - key is activated. On Mac, indicates whether - either the Ctrl key or the Command key is - activated. - @param altKey Indicates whether the Alt key is activated - (Windows or Linux only). - @param shiftKey Indicates whether the Shift key is activated. - - The TouchEvent class lets you handle events on devices that detect user - contact with the device(such as a finger on a touch screen). When a user - interacts with a device such as a mobile phone or tablet with a touch - screen, the user typically touches the screen with his or her fingers or a - pointing device. You can develop applications that respond to basic touch - events(such as a single finger tap) with the TouchEvent class. Create - event listeners using the event types defined in this class. For user - interaction with multiple points of contact(such as several fingers moving - across a touch screen at the same time) use the related GestureEvent, - PressAndTapGestureEvent, and TransformGestureEvent classes. And, use the - properties and methods of these classes to construct event handlers that - respond to the user touching the device. - - Use the Multitouch class to determine the current environment's support - for touch interaction, and to manage the support of touch interaction if - the current environment supports it. - - **Note:** When objects are nested on the display list, touch events - target the deepest possible nested object that is visible in the display - list. This object is called the target node. To have a target node's - ancestor(an object containing the target node in the display list) receive - notification of a touch event, use - `EventDispatcher.addEventListener()` on the ancestor node with - the type parameter set to the specific touch event you want to detect. - - - "tags=\"haxe,release\"" - - - - - - - - "uncaughtError" - Defines the value of the `type` property of an `uncaughtError` event - object. - This event has the following properties: - - | Property | Value | - | --- | --- | - | `bubbles` | `true` | - | `cancelable` | `true`; cancelling the event prevents the uncaught error dialog from appearing in debugger runtime versions | - | `currentTarget` | The object that is actively processing the Event object with an event listener. | - | `error` | The uncaught error. | - | `target` | The LoaderInfo object associated with the SWF where the error happened. | - | `text` | Text error message. | - - - - The error object associated with the uncaught error. Typically, this - object's data type is one of the following: - * An Error instance (or one of its subclasses), if the uncaught error - is a synchronous error created by a `throw` statement, such as an - error that could have been caught using a `try..catch` block - * An ErrorEvent instance (or one of its subclasses), if the uncaught - error is an asynchronous error that dispatches an error event when the - error happens - - However, the `error` property can potentially be an object of any data - type. ActionScript does not require a `throw` statement to be used - only with Error objects. For example, the following code is legal both - at compile time and run time: - - ```haxe - throw new Sprite(); - ``` - - If that `throw` statement is not caught by a `try..catch` block, the - `throw` statement triggers an `uncaughtError` event. In that case, the - `error` property of the UncaughtErrorEvent object that's dispatched is - the Sprite object that's constructed in the `throw` statement. - - Consequently, in your `uncaughtError` listener, you should check the - data type of the `error` property. The following example demonstrates - this check: - - ```haxe - function uncaughtErrorHandler(event:UncaughtErrorEvent):Void { - var message:String; - if (Std.isOfType(event.error, Error)) { - message = cast(event.error, Error).message; - } else if (Std.isOfType(event.error, ErrorEvent)) { - message = cast(event.error, ErrorEvent).text; - } else { - message = Std.string(event.error); - } - } - ``` - - If the `error` property contains an Error instance (or Error - subclass), the available error information varies depending on the - version of the runtime in which the content is running. The following - functionality is only available when content is running in a debugger - version of the runtime, such as the debugger version of Flash Player - or the AIR Debug Launcher (ADL): - - * `Error.getStackTrace()` to get the call stack that led to the error. - In non-debugger runtime versions, this method returns `null`. Note - that call stack information is never available when the `error` - property is an ErrorEvent instance. - * Complete `Error.message` text. In non-debugger runtime versions, - this property contains a short version of the error message, which is - often a combination of the `Error.errorID` and `Error.name` - properties. - - All other properties and methods of the Error class are available in - all runtime versions. - - - - <__init set="method" line="200" override="1"> - - - - - - - - - - - - { error : null, cancelable : true, bubbles : true } - Creates an UncaughtErrorEvent object that contains information about - an `uncaughtError` event. - - @param type The type of the event. - @param bubbles Determines whether the Event object participates in - the bubbling stage of the event flow. Event - listeners can access this information through the - inherited `bubbles` property. - @param cancelable Determines whether the Event object can be canceled. - Event listeners can access this information through - the inherited `cancelable` property. - @param error_in The object associated with the error that was not - caught or handled (an Error or ErrorEvent object - under normal circumstances). - - An UncaughtErrorEvent object is dispatched by an instance of the - UncaughtErrorEvents class when an uncaught error occurs. An uncaught error - happens when an error is thrown outside of any `try..catch` blocks or when - an ErrorEvent object is dispatched with no registered listeners. The - uncaught error event functionality is often described as a "global error - handler." - The UncaughtErrorEvents object that dispatches the event is associated - with either a LoaderInfo object or a Loader object. Use the following - properties to access an UncaughtErrorEvents instance: - - * `LoaderInfo.uncaughtErrorEvents`: to detect uncaught errors in code - defined in the same SWF. - * `Loader.uncaughtErrorEvents`: to detect uncaught errors in code defined - in the SWF loaded by a Loader object. - - When an `uncaughtError` event happens, even if the event is handled, - execution does not continue in the call stack that caused the error. If - the error is a synchronous error, any code remaining in the function where - the error happened is not executed. Consequently, it is likely that when - an uncaught error event happens, your application is in an unstable state. - Since there can be many causes for an uncaught error, it is impossible to - predict what functionality is available. For example, your application may - be able to execute network operations or file operations. However, those - operations aren't necessarily available. - - When one SWF loads another, `uncaughtError` events bubble down and up - again through the LoaderInfo heirarchy. For example, suppose A.swf loads - B.swf using a Loader instance. If an uncaught error occurs in B.swf, an - `uncaughtError` event is dispatched to LoaderInfo and Loader objects in - the following sequence: - - 1. (Capture phase) A.swf's LoaderInfo - 2. (Capture phase) Loader in A.swf - 3. (Target phase) B.swf's LoaderInfo - 4. (Bubble phase) Loader in A.swf - 5. (Bubble phase) A.swf's LoaderInfo - - A Loader object's `uncaughtErrorEvents` property never dispatches an - `uncaughtErrorEvent` in the target phase. It only dispatches the event in - the capture and bubbling phases. - - As with other event bubbling, calling `stopPropagation()` or - `stopImmediatePropagation()` stops the event from being dispatched to any - other listeners, with one important difference. A Loader object's - UncaughtErrorEvents object is treated as a pair with the loaded SWF's - `LoaderInfo.uncaughtErrorEvents` object for event propagation purposes. If - a listener registered with one of those objects calls the - `stopPropagation()` method, events are still dispatched to other listeners - registered with that UncaughtErrorEvents object _and_ to listeners - registered with its partner UncaughtErrorEvents object before event - propagation ends. The `stopImmediatePropagation()` method still prevents - events from being dispatched to all additional listeners. - - When content is running in a debugger version of the runtime, such as the - debugger version of Flash Player or the AIR Debug Launcher (ADL), an - uncaught error dialog appears when an uncaught error happens. For those - runtime versions, the error dialog appears even when a listener is - registered for the `uncaughtError` event. To prevent the dialog from - appearing in that situation, call the UncaughtErrorEvent object's - `preventDefault()` method. - - If the content loaded by a Loader object is an AVM1 (ActionScript 2) SWF - file, uncaught errors in the AVM1 SWF file do not result in an - `uncaughtError` event. In addition, JavaScript errors in HTML content - loaded in an HTMLLoader object (including a Flex HTML control) do not - result in an `uncaughtError` event. - - - "tags=\"haxe,release\"" - - - - - - <__enabled> - - - - - - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { useCapture : false } - - - - Creates an UncaughtErrorEvents instance. Developer code shouldn't - create UncaughtErrorEvents instances directly. To access an - UncaughtErrorEvents object, use one of the following properties: - * `LoaderInfo.uncaughtErrorEvents`: to detect uncaught errors in code - defined in the same SWF. - * `Loader.uncaughtErrorEvents`: to detect uncaught errors in code - defined in the SWF loaded by a Loader object. - - try..catch` block to - isolate code that potentially throws a synchronous error - * When performing an operation that dispatches an event when an error - occurs, register a listener for that error event - - If the content loaded by a Loader object is an AVM1 (ActionScript 2) SWF - file, uncaught errors in the AVM1 SWF file do not result in an - `uncaughtError` event. In addition, JavaScript errors in HTML content - loaded in an HTMLLoader object (including a Flex HTML control) do not - result in an `uncaughtError` event. - - @event uncaughtError Dispatched when an error occurs and developer code - doesn't detect and handle the error.]]> - - - "tags=\"haxe,release\"" - - - - - <__bottomExtension> - - - - <__leftExtension> - - - - <__needSecondBitmapData> - - - - <__numShaderPasses> - - - - <__preserveObject> - - - - <__renderDirty> - - - - <__rightExtension> - - - - <__shaderBlendMode> - - - - <__smooth> - - - - <__topExtension> - - - - - - Returns a BitmapFilter object that is an exact copy of the original - BitmapFilter object. - - @return A BitmapFilter object. - - <__applyFilter set="method" line="63"> - - - - - - - - - - <__initShader set="method" line="68"> - - - - - - - - - - The BitmapFilter class is the base class for all image filter effects. - - The BevelFilter, BlurFilter, ColorMatrixFilter, ConvolutionFilter, - DisplacementMapFilter, DropShadowFilter, GlowFilter, GradientBevelFilter, - and GradientGlowFilter classes all extend the BitmapFilter class. You can - apply these filter effects to any display object. - - You can neither directly instantiate nor extend BitmapFilter. - - "tags=\"haxe,release\"" - - - - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - hide - - openfl.display._internal - - - - - - - - - { code : null } - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\n\t\tvarying vec2 openfl_TextureCoordv;\n\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;" - "openfl_TextureCoordv = openfl_TextureCoord;\n\n\t\tgl_Position = openfl_Matrix * openfl_Position;" - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - "varying vec2 openfl_TextureCoordv;\n\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform vec2 openfl_TextureSize;" - "gl_FragColor = texture2D (openfl_Texture, openfl_TextureCoordv);" - "#pragma header\n\n\t\tvoid main(void) {\n\n\t\t\t#pragma body\n\n\t\t}" - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - <__update set="method" line="328" override="1"> - - - - - - - - - - - - - - - "uniform sampler2D openfl_Texture;\n\n\t\tvarying vec2 vBlurCoords[7];\n\n\t\tvoid main(void) {\n\n\t\t\tvec4 sum = vec4(0.0);\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[0]) * 0.00443;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[1]) * 0.05399;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[2]) * 0.24197;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[3]) * 0.39894;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[4]) * 0.24197;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[5]) * 0.05399;\n\t\t\tsum += texture2D(openfl_Texture, vBlurCoords[6]) * 0.00443;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\n\t\tuniform mat4 openfl_Matrix;\n\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vBlurCoords[7];\n\t\tuniform vec2 uTextureSize;\n\n\t\tvoid main(void) {\n\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\n\t\t\tvec2 r = uRadius / uTextureSize;\n\t\t\tvBlurCoords[0] = openfl_TextureCoord - r;\n\t\t\tvBlurCoords[1] = openfl_TextureCoord - r * 0.75;\n\t\t\tvBlurCoords[2] = openfl_TextureCoord - r * 0.5;\n\t\t\tvBlurCoords[3] = openfl_TextureCoord;\n\t\t\tvBlurCoords[4] = openfl_TextureCoord + r * 0.5;\n\t\t\tvBlurCoords[5] = openfl_TextureCoord + r * 0.75;\n\t\t\tvBlurCoords[6] = openfl_TextureCoord + r;\n\n\t\t}" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - <__blurShader expr="new BlurShader()" line="73" static="1"> - - - new BlurShader() - - - - - - The amount of horizontal blur. Valid values are from 0 to 255(floating - point). The default value is 4. Values that are a power of 2(such as 2, - 4, 8, 16 and 32) are optimized to render more quickly than other values. - - - - The amount of vertical blur. Valid values are from 0 to 255(floating - point). The default value is 4. Values that are a power of 2(such as 2, - 4, 8, 16 and 32) are optimized to render more quickly than other values. - - - - The number of times to perform the blur. The default value is - `BitmapFilterQuality.LOW`, which is equivalent to applying the - filter once. The value `BitmapFilterQuality.MEDIUM` applies the - filter twice; the value `BitmapFilterQuality.HIGH` applies it - three times and approximates a Gaussian blur. Filters with lower values - are rendered more quickly. - - For most applications, a `quality` value of low, medium, or - high is sufficient. Although you can use additional numeric values up to - 15 to increase the number of times the blur is applied, higher values are - rendered more slowly. Instead of increasing the value of - `quality`, you can often get a similar effect, and with faster - rendering, by simply increasing the values of the `blurX` and - `blurY` properties. - - You can use the following BitmapFilterQuality constants to specify - values of the `quality` property: - - * `BitmapFilterQuality.LOW` - * `BitmapFilterQuality.MEDIUM` - * `BitmapFilterQuality.HIGH` - - <__blurX> - - - - <__blurY> - - - - <__horizontalPasses> - - - - <__quality> - - - - <__verticalPasses> - - - - - <__applyFilter set="method" line="185" override="1"> - - - - - - - - - - <__initShader set="method" line="198" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { quality : 1, blurY : 4, blurX : 4 } - Initializes the filter with the specified parameters. The default values - create a soft, unfocused image. - - @param blurX The amount to blur horizontally. Valid values are from 0 to - 255.0(floating-point value). - @param blurY The amount to blur vertically. Valid values are from 0 to - 255.0(floating-point value). - @param quality The number of times to apply the filter. You can specify - the quality using the BitmapFilterQuality constants: - - - * `openfl.filters.BitmapFilterQuality.LOW` - - * `openfl.filters.BitmapFilterQuality.MEDIUM` - - * `openfl.filters.BitmapFilterQuality.HIGH` - - - High quality approximates a Gaussian blur. For most - applications, these three values are sufficient. Although - you can use additional numeric values up to 15 to achieve - different effects, be aware that higher values are rendered - more slowly. - - The BlurFilter class lets you apply a blur visual effect to display - objects. A blur effect softens the details of an image. You can produce - blurs that range from a softly unfocused look to a Gaussian blur, a hazy - appearance like viewing an image through semi-opaque glass. When the - `quality` property of this filter is set to low, the result is a - softly unfocused look. When the `quality` property is set to - high, it approximates a Gaussian blur filter. You can apply the filter to - any display object(that is, objects that inherit from the DisplayObject - class), such as MovieClip, SimpleButton, TextField, and Video objects, as - well as to BitmapData objects. - - To create a new filter, use the constructor `new - BlurFilter()`. The use of filters depends on the object to which you - apply the filter: - - - * To apply filters to movie clips, text fields, buttons, and video, use - the `filters` property(inherited from DisplayObject). Setting - the `filters` property of an object does not modify the object, - and you can remove the filter by clearing the `filters` - property. - * To apply filters to BitmapData objects, use the - `BitmapData.applyFilter()` method. Calling - `applyFilter()` on a BitmapData object takes the source - BitmapData object and the filter object and generates a filtered image as a - result. - - - If you apply a filter to a display object, the - `cacheAsBitmap` property of the display object is set to - `true`. If you remove all filters, the original value of - `cacheAsBitmap` is restored. - - This filter supports Stage scaling. However, it does not support general - scaling, rotation, and skewing. If the object itself is scaled - (`scaleX` and `scaleY` are not set to 100%), the - filter effect is not scaled. It is scaled only when the user zooms in on - the Stage. - - A filter is not applied if the resulting image exceeds the maximum - dimensions. In AIR 1.5 and Flash Player 10, the maximum is 8,191 pixels in - width or height, and the total number of pixels cannot exceed 16,777,215 - pixels.(So, if an image is 8,191 pixels wide, it can only be 2,048 pixels - high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the - limitation is 2,880 pixels in height and 2,880 pixels in width. If, for - example, you zoom in on a large movie clip with a filter applied, the - filter is turned off if the resulting image exceeds the maximum - dimensions. - - - "tags=\"haxe,release\"" - - openfl.geom.Point - openfl.geom.Rectangle - - - - - - - - - - - - - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform vec4 uColor;\n\t\tuniform float uStrength;\n\t\tvarying vec2 vTexCoord;\n\t\tvarying vec2 vBlurCoords[6];\n\n\t\tvoid main(void)\n\t\t{\n vec4 texel = texture2D(openfl_Texture, vTexCoord);\n\n vec3 contributions = vec3(0.00443, 0.05399, 0.24197);\n vec3 top = vec3(\n texture2D(openfl_Texture, vBlurCoords[0]).a,\n texture2D(openfl_Texture, vBlurCoords[1]).a,\n texture2D(openfl_Texture, vBlurCoords[2]).a\n );\n vec3 bottom = vec3(\n texture2D(openfl_Texture, vBlurCoords[3]).a,\n texture2D(openfl_Texture, vBlurCoords[4]).a,\n texture2D(openfl_Texture, vBlurCoords[5]).a\n );\n\n float a = texel.a * 0.39894;\n\t\t\ta += dot(top, contributions.xyz);\n a += dot(bottom, contributions.zyx);\n\n\t\t\tgl_FragColor = uColor * clamp(a * uStrength, 0.0, 1.0);\n\t\t}\n\t" - "\n\t\tattribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;\n\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vTexCoord;\n\t\tvarying vec2 vBlurCoords[6];\n\n\t\tvoid main(void) {\n\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\tvTexCoord = openfl_TextureCoord;\n\n\t\t\tvec3 offset = vec3(0.5, 0.75, 1.0);\n\t\t\tvec2 r = uRadius / openfl_TextureSize;\n\t\t\tvBlurCoords[0] = openfl_TextureCoord - r * offset.z;\n\t\t\tvBlurCoords[1] = openfl_TextureCoord - r * offset.y;\n\t\t\tvBlurCoords[2] = openfl_TextureCoord - r * offset.x;\n\t\t\tvBlurCoords[3] = openfl_TextureCoord + r * offset.x;\n\t\t\tvBlurCoords[4] = openfl_TextureCoord + r * offset.y;\n\t\t\tvBlurCoords[5] = openfl_TextureCoord + r * offset.z;\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform sampler2D sourceBitmap;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tvec4 src = texture2D(sourceBitmap, textureCoords.xy);\n\t\t\tvec4 glow = texture2D(openfl_Texture, textureCoords.zw);\n\n\t\t\tgl_FragColor = glow * (1.0 - src.a);\n\t\t}\n\t" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;\n\t\tuniform vec2 offset;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\ttextureCoords = vec4(openfl_TextureCoord, openfl_TextureCoord - offset / openfl_TextureSize);\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform sampler2D sourceBitmap;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tvec4 src = texture2D(sourceBitmap, textureCoords.xy);\n\t\t\tvec4 glow = texture2D(openfl_Texture, textureCoords.zw);\n\n\t\t\tgl_FragColor = src + glow * (1.0 - src.a);\n\t\t}\n\t" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;\n\t\tuniform vec2 offset;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\ttextureCoords = vec4(openfl_TextureCoord, openfl_TextureCoord - offset / openfl_TextureSize);\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform sampler2D sourceBitmap;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tvec4 src = texture2D(sourceBitmap, textureCoords.xy);\n\t\t\tvec4 glow = texture2D(openfl_Texture, textureCoords.zw);\n\n\t\t\tgl_FragColor = glow * src.a;\n\t\t}\n\t" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;\n\t\tuniform vec2 offset;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\ttextureCoords = vec4(openfl_TextureCoord, openfl_TextureCoord - offset / openfl_TextureSize);\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tuniform sampler2D sourceBitmap;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tvec4 src = texture2D(sourceBitmap, textureCoords.xy);\n\t\t\tvec4 glow = texture2D(openfl_Texture, textureCoords.zw);\n\n\t\t\tgl_FragColor = vec4((src.rgb * (1.0 - glow.a)) + (glow.rgb * src.a), src.a);\n\t\t}\n\t" - "attribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tuniform mat4 openfl_Matrix;\n\t\tuniform vec2 openfl_TextureSize;\n\t\tuniform vec2 offset;\n\t\tvarying vec4 textureCoords;\n\n\t\tvoid main(void) {\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\ttextureCoords = vec4(openfl_TextureCoord, openfl_TextureCoord - offset / openfl_TextureSize);\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - - - - "\n\t\tuniform sampler2D openfl_Texture;\n\t\tvarying vec2 vTexCoord;\n\n\t\tvoid main(void) {\n\t\t\tvec4 texel = texture2D(openfl_Texture, vTexCoord);\n\t\t\tgl_FragColor = vec4(texel.rgb, 1.0 - texel.a);\n\t\t}\n\t" - "\n\t\tattribute vec4 openfl_Position;\n\t\tattribute vec2 openfl_TextureCoord;\n\t\tuniform mat4 openfl_Matrix;\n\t\tvarying vec2 vTexCoord;\n\n\t\tvoid main(void) {\n\t\t\tgl_Position = openfl_Matrix * openfl_Position;\n\t\t\tvTexCoord = openfl_TextureCoord;\n\t\t}\n\t" - - - - - openfl.utils._internal.ShaderMacro.build() - openfl.utils._internal.ShaderMacro.build() - "tags=\"haxe,release\"" - - - - - - <__invertAlphaShader expr="new InvertAlphaShader()" line="70" static="1"> - - - new InvertAlphaShader() - - - - <__blurAlphaShader expr="new BlurAlphaShader()" line="71" static="1"> - - - new BlurAlphaShader() - - - - <__combineShader expr="new CombineShader()" line="72" static="1"> - - - new CombineShader() - - - - <__innerCombineShader expr="new InnerCombineShader()" line="73" static="1"> - - - new InnerCombineShader() - - - - <__combineKnockoutShader expr="new CombineKnockoutShader()" line="74" static="1"> - - - new CombineKnockoutShader() - - - - <__innerCombineKnockoutShader expr="new InnerCombineKnockoutShader()" line="75" static="1"> - - - new InnerCombineKnockoutShader() - - - - - - The alpha transparency value for the color. Valid values are 0 to 1. For - example, .25 sets a transparency value of 25%. The default value is 1. - - - - The amount of horizontal blur. Valid values are 0 to 255(floating point). - The default value is 6. Values that are a power of 2(such as 2, 4, 8, 16, - and 32) are optimized to render more quickly than other values. - - - - The amount of vertical blur. Valid values are 0 to 255(floating point). - The default value is 6. Values that are a power of 2(such as 2, 4, 8, 16, - and 32) are optimized to render more quickly than other values. - - - - The color of the glow. Valid values are in the hexadecimal format - 0x_RRGGBB_. The default value is 0xFF0000. - - - - Specifies whether the glow is an inner glow. The value `true` - indicates an inner glow. The default is `false`, an outer glow - (a glow around the outer edges of the object). - - - - Specifies whether the object has a knockout effect. A value of - `true` makes the object's fill transparent and reveals the - background color of the document. The default value is `false` - (no knockout effect). - - - - The number of times to apply the filter. The default value is - `BitmapFilterQuality.LOW`, which is equivalent to applying the - filter once. The value `BitmapFilterQuality.MEDIUM` applies the - filter twice; the value `BitmapFilterQuality.HIGH` applies it - three times. Filters with lower values are rendered more quickly. - - For most applications, a `quality` value of low, medium, or - high is sufficient. Although you can use additional numeric values up to - 15 to achieve different effects, higher values are rendered more slowly. - Instead of increasing the value of `quality`, you can often get - a similar effect, and with faster rendering, by simply increasing the - values of the `blurX` and `blurY` properties. - - - - The strength of the imprint or spread. The higher the value, the more - color is imprinted and the stronger the contrast between the glow and the - background. Valid values are 0 to 255. The default is 2. - - <__alpha> - - - - <__blurX> - - - - <__blurY> - - - - <__color> - - - - <__horizontalPasses> - - - - <__inner> - - - - <__knockout> - - - - <__quality> - - - - <__strength> - - - - <__verticalPasses> - - - - - <__applyFilter set="method" line="259" override="1"> - - - - - - - - - - <__initShader set="method" line="277" override="1"> - - - - - - - - - <__updateSize set="method" line="348"> - - - - <__calculateNumShaderPasses set="method" line="357"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { knockout : false, inner : false, quality : 1, strength : 2, blurY : 6, blurX : 6, alpha : 1, color : 0xFF0000 } - Initializes a new GlowFilter instance with the specified parameters. - - @param color The color of the glow, in the hexadecimal format - 0x_RRGGBB_. The default value is 0xFF0000. - @param alpha The alpha transparency value for the color. Valid values - are 0 to 1. For example, .25 sets a transparency value of - 25%. - @param blurX The amount of horizontal blur. Valid values are 0 to 255 - (floating point). Values that are a power of 2(such as 2, - 4, 8, 16 and 32) are optimized to render more quickly than - other values. - @param blurY The amount of vertical blur. Valid values are 0 to 255 - (floating point). Values that are a power of 2(such as 2, - 4, 8, 16 and 32) are optimized to render more quickly than - other values. - @param strength The strength of the imprint or spread. The higher the - value, the more color is imprinted and the stronger the - contrast between the glow and the background. Valid values - are 0 to 255. - @param quality The number of times to apply the filter. Use the - BitmapFilterQuality constants: - - * `BitmapFilterQuality.LOW` - * `BitmapFilterQuality.MEDIUM` - * `BitmapFilterQuality.HIGH` - - - For more information, see the description of the - `quality` property. - @param inner Specifies whether the glow is an inner glow. The value - ` true` specifies an inner glow. The value - `false` specifies an outer glow(a glow around - the outer edges of the object). - @param knockout Specifies whether the object has a knockout effect. The - value `true` makes the object's fill - transparent and reveals the background color of the - document. - - The GlowFilter class lets you apply a glow effect to display objects. You - have several options for the style of the glow, including inner or outer - glow and knockout mode. The glow filter is similar to the drop shadow - filter with the `distance` and `angle` properties of - the drop shadow filter set to 0. You can apply the filter to any display - object(that is, objects that inherit from the DisplayObject class), such - as MovieClip, SimpleButton, TextField, and Video objects, as well as to - BitmapData objects. - - The use of filters depends on the object to which you apply the - filter: - - - * To apply filters to display objects, use the `filters` - property(inherited from DisplayObject). Setting the `filters` - property of an object does not modify the object, and you can remove the - filter by clearing the `filters` property. - * To apply filters to BitmapData objects, use the - `BitmapData.applyFilter()` method. Calling - `applyFilter()` on a BitmapData object takes the source - BitmapData object and the filter object and generates a filtered image as a - result. - - - If you apply a filter to a display object, the - `cacheAsBitmap` property of the display object is set to - `true`. If you clear all filters, the original value of - `cacheAsBitmap` is restored. - - This filter supports Stage scaling. However, it does not support general - scaling, rotation, and skewing. If the object itself is scaled(if - `scaleX` and `scaleY` are set to a value other than - 1.0), the filter is not scaled. It is scaled only when the user zooms in on - the Stage. - - A filter is not applied if the resulting image exceeds the maximum - dimensions. In AIR 1.5 and Flash Player 10, the maximum is 8,191 pixels in - width or height, and the total number of pixels cannot exceed 16,777,215 - pixels.(So, if an image is 8,191 pixels wide, it can only be 2,048 pixels - high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the - limitation is 2,880 pixels in height and 2,880 pixels in width. For - example, if you zoom in on a large movie clip with a filter applied, the - filter is turned off if the resulting image exceeds the maximum - dimensions. - - - "tags=\"haxe,release\"" - - openfl.geom.ColorTransform - openfl.geom.Point - openfl.geom.Rectangle - - - - - - - - - hide - - - "checkstyle:FieldDocComment" - - - - - The growth in pixels on the bottom side of the target object. - The growth is the area beyond the bounds of the target object that is - passed to the shader during execution. At execution time Flash Player - or AIR computes the normal bounds of a movie clip and extends the - bounds based on the `leftExtension`, `rightExtension`, `topExtension`, - and `bottomExtension` values. - - @default 0 - - - - The growth in pixels on the left side of the target object. - The growth is the area beyond the bounds of the target object that is - passed to the shader during execution. At execution time Flash Player - or AIR computes the normal bounds of a movie clip and extends the - bounds based on the `leftExtension`, `rightExtension`, `topExtension`, - and `bottomExtension` values. - - @default 0 - - - - The growth in pixels on the right side of the target object. - The growth is the area beyond the bounds of the target object that is - passed to the shader during execution. At execution time Flash Player - or AIR computes the normal bounds of a movie clip and extends the - bounds based on the `leftExtension`, `rightExtension`, `topExtension`, - and `bottomExtension` values. - - @default 0 - - - - The shader to use for this filter. - The Shader assigned to the `shader` property must specify at least one - `image4` input. The input **does not** need to be specified in code - using the associated ShaderInput object's `input` property. Instead, - the object to which the filter is applied is automatically used as the - first input (the input with `index` 0). A shader used as a filter can - specify more than one input, in which case any additional input must - be specified by setting its ShaderInput instance's `input` property. - - When you assign a Shader instance to this property the shader is - copied internally and the filter operation uses that internal copy, - not a reference to the original shader. Any changes made to the - shader, such as changing a parameter value, input, or bytecode, are - not applied to the copied shader that's used for the filter. To make - it so that shader changes are taken into account in the filter output, - you must reassign the Shader instance to the `shader` property. As - with all filters, you must also reassign the ShaderFilter instance to - the display object's `filters` property in order to apply filter - changes. - - - - The growth in pixels on the top side of the target object. - The growth is the area beyond the bounds of the target object that is - passed to the shader during execution. At execution time Flash Player - or AIR computes the normal bounds of a movie clip and extends the - bounds based on the `leftExtension`, `rightExtension`, `topExtension`, - and `bottomExtension` values. - - @default 0 - - - - <__initShader set="method" line="164" override="1"> - - - - - - - - - - - - - - Creates a new shader filter. - - @param shader The Shader to use for this filter. For details and - limitations that the shader must conform to, see the - description for the `shader` property. - - The ShaderFilter class applies a filter by executing a shader on the - object being filtered. The filtered object is used as an input to the - shader, and the shader output becomes the filter result. - To create a new filter, use the constructor `new ShaderFilter()`. The use - of filters depends on the object to which you apply the filter: - - * To apply filters to movie clips, text fields, buttons, and video, use - the `filters` property (inherited from DisplayObject). Setting the - `filters` property of an object does not modify the object, and you can - remove the filter by clearing the `filters` property. - * To apply filters to BitmapData objects, use the - `BitmapData.applyFilter()` method. Calling `applyFilter()` on a BitmapData - object takes the source BitmapData object and the filter object and - generates a filtered image as a result. - - If you apply a filter to a display object, the value of the - `cacheAsBitmap` property of the object is set to true. If you remove all - filters, the original value of `cacheAsBitmap` is restored. - - This filter supports stage scaling. However, it does not support general - scaling, rotation, and skewing. If the object itself is scaled (if the - `scaleX` and `scaleY` properties are not set to 100%), the filter is not - scaled. It is scaled only when the user zooms in on the stage. - - A filter is not applied if the resulting image exceeds the maximum - dimensions. In AIR 1.5 and Flash Player 10, the maximum is 8,191 pixels in - width or height, and the total number of pixels cannot exceed 16,777,215 - pixels. (So, if an image is 8,191 pixels wide, it can only be 2,048 pixels - high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the - limitation is 2,880 pixels in height and 2,880 pixels in width. If, for - example, you zoom in on a large movie clip with a filter applied, the - filter is turned off if the resulting image exceeds the maximum - dimensions. - - To specify the Shader instance to use with the filter, pass the Shader - instance as an argument to the `ShaderFilter()` constructor, or set it as - the value of the `shader` property. - - To allow the shader output to extend beyond the bounds of the filtered - object, use the `leftExtension`, `rightExtension`, `topExtension`, and - `bottomExtension` properties. - - - "tags=\"haxe,release\"" - - - - - - - - The Orientation3D class is an enumeration of constant - values for representing the orientation style of a Matrix3D object. - The three types of orientation are Euler angles, axis angle, and quaternion. - The `decompose` and `recompose` methods of the Matrix3D object take one of these - enumerated types to identify the rotational components of the Matrix. - - - - - - cast 0 - - - - The axis angle orientation uses a combination of an axis and an angle to determine - the orientation. A line or vector from the center of a three-dimensional globe to - the surface is an example of an axis. The axis around which the object is rotated - is a unit vector that represents any possible direction in the three-dimensional - space. The angle represents the magnitude of the rotation about the vector. The - direction determines where a display object is facing and the roll angle - determines which way is up. You can use Vector3D and the Matrix3D objects to - determine the various matrix transformations as well as to determine important - three-dimensional programming values such as the distance to the intersection of - two objects that can be used to detect simple collision between three-dimensional - objects. - - The Matrix3D `appendRotation()` and Matrix3D `prependRotation()` methods use the - axis angle orientation. - - - - - cast 1 - - - - Euler angles, the default orientation for `decompose()` and `recompose()` methods, - defines the orientation with three separate angles of rotation for each axis. - Usually, a rotation around the x axis is followed by a rotation around the y axis, - which is followed by a rotation around the z axis. - - Euler angles can sometimes lead to animation errors because of problems such as - singularities when rotating around the x axis or gimbal lock. For example, since - with Euler angles each axis is handled independently, gimbal lock can occur during - the rotation around two or more axes. The axes can become aligned, leading to - unexpected results. - - The axis rotation properties of the display object perform Euler angles rotation. - - - - - cast 2 - - - - The quaternion orientation uses complex numbers. An orientation in quaternion is - by the three axes of rotation (x,y,z) and an angle of rotation (w). Quaternion - guarantees the shortest, most efficient path for the rotation. It also produces a - smooth, gimbal-lock-free rotation. A gimbal lock can occur when during the - rotation around two or more axes the axes are aligned, leading to unexpected - results. - - The Matrix3D `interpolate()` method uses quaternion. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - The axis angle orientation uses a combination of an axis and an angle to determine - the orientation. A line or vector from the center of a three-dimensional globe to - the surface is an example of an axis. The axis around which the object is rotated - is a unit vector that represents any possible direction in the three-dimensional - space. The angle represents the magnitude of the rotation about the vector. The - direction determines where a display object is facing and the roll angle - determines which way is up. You can use Vector3D and the Matrix3D objects to - determine the various matrix transformations as well as to determine important - three-dimensional programming values such as the distance to the intersection of - two objects that can be used to detect simple collision between three-dimensional - objects. - - The Matrix3D `appendRotation()` and Matrix3D `prependRotation()` methods use the - axis angle orientation. - - - - - cast 1 - - - - Euler angles, the default orientation for `decompose()` and `recompose()` methods, - defines the orientation with three separate angles of rotation for each axis. - Usually, a rotation around the x axis is followed by a rotation around the y axis, - which is followed by a rotation around the z axis. - - Euler angles can sometimes lead to animation errors because of problems such as - singularities when rotating around the x axis or gimbal lock. For example, since - with Euler angles each axis is handled independently, gimbal lock can occur during - the rotation around two or more axes. The axes can become aligned, leading to - unexpected results. - - The axis rotation properties of the display object perform Euler angles rotation. - - - - - cast 2 - - - - The quaternion orientation uses complex numbers. An orientation in quaternion is - by the three axes of rotation (x,y,z) and an angle of rotation (w). Quaternion - guarantees the shortest, most efficient path for the rotation. It also produces a - smooth, gimbal-lock-free rotation. A gimbal lock can occur when during the - rotation around two or more axes the axes are aligned, leading to unexpected - results. - - The Matrix3D `interpolate()` method uses quaternion. - - - - - - - - - - - - - - - - - - - - - A ColorTransform object containing values that universally adjust the - colors in the display object. - - @throws TypeError The colorTransform is null when being set - - - - A ColorTransform object representing the combined color transformations - applied to the display object and all of its parent objects, back to the - root level. If different color transformations have been applied at - different levels, all of those transformations are concatenated into one - ColorTransform object for this property. - - - - A Matrix object representing the combined transformation matrixes of the - display object and all of its parent objects, back to the root level. If - different transformation matrixes have been applied at different levels, - all of those matrixes are concatenated into one matrix for this property. - Also, for resizeable SWF content running in the browser, this property - factors in the difference between stage coordinates and window coordinates - due to window resizing. Thus, the property converts local coordinates to - window coordinates, which may not be the same coordinate space as that of - the Stage. - - - - A Matrix object containing values that alter the scaling, rotation, and - translation of the display object. - - If the `matrix` property is set to a value (not - `null`), the `matrix3D` property is - `null`. And if the `matrix3D` property is set to a - value(not `null`), the `matrix` property is - `null`. - - @throws TypeError The matrix is null when being set - - - - Provides access to the Matrix3D object of a three-dimensional display - object. The Matrix3D object represents a transformation matrix that - determines the display object's position and orientation. A Matrix3D - object can also perform perspective projection. - - If the `matrix` property is set to a value(not - `null`), the `matrix3D` property is - `null`. And if the `matrix3D` property is set to a - value(not `null`), the `matrix` property is - `null`. - - - - A Rectangle object that defines the bounding rectangle of the display - object on the stage. - - <__colorTransform> - - - - <__displayObject> - - - - <__hasMatrix> - - - - <__hasMatrix3D> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__setTransform set="method" line="287"> - - - - - - - - - - - - - - - - The Transform class provides access to color adjustment properties and two- - or three-dimensional transformation objects that can be applied to a - display object. During the transformation, the color or the orientation and - position of a display object is adjusted(offset) from the current values - or coordinates to new values or coordinates. The Transform class also - collects data about color and two-dimensional matrix transformations that - are applied to a display object and all of its parent objects. You can - access these combined transformations through the - `concatenatedColorTransform` and `concatenatedMatrix` - properties. - - To apply color transformations: create a ColorTransform object, set the - color adjustments using the object's methods and properties, and then - assign the `colorTransformation` property of the - `transform` property of the display object to the new - ColorTransformation object. - - To apply two-dimensional transformations: create a Matrix object, set - the matrix's two-dimensional transformation, and then assign the - `transform.matrix` property of the display object to the new - Matrix object. - - To apply three-dimensional transformations: start with a - three-dimensional display object. A three-dimensional display object has a - `z` property value other than zero. You do not need to create - the Matrix3D object. For all three-dimensional objects, a Matrix3D object - is created automatically when you assign a `z` value to a - display object. You can access the display object's Matrix3D object through - the display object's `transform` property. Using the methods of - the Matrix3D class, you can add to or modify the existing transformation - settings. Also, you can create a custom Matrix3D object, set the custom - Matrix3D object's transformation elements, and then assign the new Matrix3D - object to the display object using the `transform.matrix` - property. - - To modify a perspective projection of the stage or root object: use the - `transform.matrix` property of the root display object to gain - access to the PerspectiveProjection object. Or, apply different perspective - projection properties to a display object by setting the perspective - projection properties of the display object's parent. The child display - object inherits the new properties. Specifically, create a - PerspectiveProjection object and set its properties, then assign the - PerspectiveProjection object to the `perspectiveProjection` - property of the parent display object's `transform` property. - The specified projection transformation then applies to all the display - object's three-dimensional children. - - Since both PerspectiveProjection and Matrix3D objects perform - perspective transformations, do not assign both to a display object at the - same time. Use the PerspectiveProjection object for focal length and - projection center changes. For more control over the perspective - transformation, create a perspective projection Matrix3D object. - - - "tags=\"haxe,release\"" - - openfl.display.DisplayObject - openfl.geom.ColorTransform - - - - - - The name of the album; corresponds to the ID3 2.0 tag TALB. - - - - The name of the artist; corresponds to the ID3 2.0 tag TPE1. - - - - A comment about the recording; corresponds to the ID3 2.0 tag COMM. - - - - The genre of the song; corresponds to the ID3 2.0 tag TCON. - - - - The name of the song; corresponds to the ID3 2.0 tag TIT2. - - - - The track number; corresponds to the ID3 2.0 tag TRCK. - - - - The year of the recording; corresponds to the ID3 2.0 tag TYER. - - - The ID3Info class contains properties that reflect ID3 metadata. You can get - additional metadata for MP3 files by accessing the `id3` property of the Sound - class; for example, `mySound.id3.TIME`. For more information, see the entry for - `Sound.id3` and the ID3 tag definitions at http://www.id3.org. - - - "tags=\"haxe,release\"" - - - - - - - - - The current amplitude(volume) of the left channel, from 0(silent) to 1 - (full amplitude). - - - - When the sound is playing, the `position` property indicates in - milliseconds the current point that is being played in the sound file. - When the sound is stopped or paused, the `position` property - indicates the last point that was played in the sound file. - - A common use case is to save the value of the `position` - property when the sound is stopped. You can resume the sound later by - restarting it from that saved position. - - If the sound is looped, `position` is reset to 0 at the - beginning of each loop. - - - - The current amplitude(volume) of the right channel, from 0(silent) to 1 - (full amplitude). - - - - The SoundTransform object assigned to the sound channel. A SoundTransform - object includes properties for setting volume, panning, left speaker - assignment, and right speaker assignment. - - - <__isValid> - - - - <__soundTransform> - - - - <__source> - - - - - - Stops the sound playing in the channel. - - <__dispose set="method" line="131"> - - - - <__updateTransform set="method" line="143"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { soundTransform : null, source : null } - - - - The SoundChannel class controls a sound in an application. Every sound is - assigned to a sound channel, and the application can have multiple sound - channels that are mixed together. The SoundChannel class contains a - `stop()` method, properties for monitoring the amplitude - (volume) of the channel, and a property for assigning a SoundTransform - object to the channel. - - @event soundComplete Dispatched when a sound has finished playing. - - - "tags=\"haxe,release\"" - - openfl.media.SoundMixer - - - - - - - - The number of milliseconds to preload a streaming sound into a buffer - before the sound starts to stream. - - Note that you cannot override the value of - `SoundLoaderContext.bufferTime` by setting the global - `SoundMixer.bufferTime` property. The - `SoundMixer.bufferTime` property affects the buffer time for - embedded streaming sounds in a SWF file and is independent of dynamically - created Sound objects(that is, Sound objects created in - ActionScript). - - - - ` tags. - - If you set `checkPolicyFile` to `true`, Flash Player or AIR waits - until the policy file is verified before loading the sound. You should - wait to perform any low-level operations on the sound data, such as - calling `Sound.id3` or `SoundMixer.computeSpectrum()`, until - `progress` and `complete` events are dispatched from the Sound object. - - - If you set `checkPolicyFile` to `true` but no appropriate policy file - is found, you will not receive an error until you perform an operation - that requires a policy file, and then Flash Player or AIR throws a - `SecurityError` exception. After you receive a `complete` event, you - can test whether a relevant policy file was found by getting the value - of `Sound.id3` within a `try` block and seeing if a `SecurityError` is - thrown. - - Be careful with `checkPolicyFile` if you are downloading sound from a - URL that uses server-side HTTP redirects. Flash Player or AIR tries to - retrieve policy files that correspond to the `url` property of the - URLRequest object passed to `Sound.load()`. If the final sound file - comes from a different URL because of HTTP redirects, then the - initially downloaded policy files might not be applicable to the - sound's final URL, which is the URL that matters in security - decisions. - - If you find yourself in this situation, here is one possible solution. - After you receive a `progress` or `complete` event, you can examine - the value of the `Sound.url` property, which contains the sound's - final URL. Then call the `Security.loadPolicyFile()` method with a - policy file URL that you calculate based on the sound's final URL. - Finally, poll the value of `Sound.id3` until no exception is thrown. - - This does not apply to content in the AIR application sandbox. Content - in the application sandbox always has programatic access to sound - content, regardless of its origin. - - For more information related to security, see the Flash Player - Developer Center Topic: Security.]]> - - - - - - - - { checkPolicyFile : false, bufferTime : 1000 } - Creates a new sound loader context object. - - @param bufferTime The number of seconds to preload a streaming sound - into a buffer before the sound starts to stream. - @param checkPolicyFile Specifies whether the existence of a URL policy - file should be checked upon loading the object - (`true`) or not. - - The SoundLoaderContext class provides security checks for files that load - sound. SoundLoaderContext objects are passed as an argument to the - constructor and the `load()` method of the Sound class. - - When you use this class, consider the following security model: - - - * Loading and playing a sound is not allowed if the calling file is in - a network sandbox and the sound file to be loaded is local. - * By default, loading and playing a sound is not allowed if the calling - is local and tries to load and play a remote sound. A user must grant - explicit permission to allow this. - * Certain operations dealing with sound are restricted. The data in a - loaded sound cannot be accessed by a file in a different domain unless you - implement a URL policy file. Sound-related APIs that fall under this - restriction are the `Sound.id3` property and the - `SoundMixer.computeSpectrum()`, - `SoundMixer.bufferTime`, and `SoundTransform()` - methods. - - - However, in Adobe AIR, content in the `application` security - sandbox(content installed with the AIR application) are not restricted by - these security limitations. - - For more information related to security, see the Flash Player Developer - Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - "tags=\"haxe,release\"" - - - - - - - A value, from 0(none) to 1(all), specifying how much of the left input - is played in the left speaker. - - - - A value, from 0(none) to 1(all), specifying how much of the left input - is played in the right speaker. - - - - The left-to-right panning of the sound, ranging from -1(full pan left) to - 1(full pan right). A value of 0 represents no panning(balanced center - between right and left). - - - - A value, from 0(none) to 1(all), specifying how much of the right input - is played in the left speaker. - - - - A value, from 0(none) to 1(all), specifying how much of the right input - is played in the right speaker. - - - - The volume, ranging from 0(silent) to 1(full volume). - - - - - "checkstyle:FieldDocComment" - - hide - - - - - - - - - { panning : 0, vol : 1 } - Creates a SoundTransform object. - - @param vol The volume, ranging from 0(silent) to 1(full volume). - @param panning The left-to-right panning of the sound, ranging from -1 - (full pan left) to 1(full pan right). A value of 0 - represents no panning(center). - - The SoundTransform class contains properties for volume and panning. - - - "tags=\"haxe,release\"" - - - - - - - - - 32 - - - - - - The number of seconds to preload an embedded streaming sound into a - buffer before it starts to stream. The data in a loaded sound, - including its buffer time, cannot be accessed by a SWF file that is in - a different domain unless you implement a cross-domain policy file. - For more information about security and sound, see the Sound class - description. The data in a loaded sound, including its buffer time, - cannot be accessed by code in a file that is in a different domain - unless you implement a cross-domain policy file. However, in the - application sandbox in an AIR application, code can access data in - sound files from any source. For more information about security and - sound, see the Sound class description. - The `SoundMixer.bufferTime` property only affects the buffer time for - embedded streaming sounds in a SWF and is independent of dynamically - created Sound objects (that is, Sound objects created in - ActionScript). The value of `SoundMixer.bufferTime` cannot override or - set the default of the buffer time specified in the SoundLoaderContext - object that is passed to the `Sound.load()` method. - - - - The SoundTransform object that controls global sound properties. A - SoundTransform object includes properties for setting volume, panning, - left speaker assignment, and right speaker assignment. The - SoundTransform object used in this property provides final sound - settings that are applied to all sounds after any individual sound - settings are applied. - - <__soundChannels expr="new Array()" line="51" static="1"> - - - new Array() - - - - <__soundTransform expr="new SoundTransform()" line="52" static="1"> - - - new SoundTransform() - - - - - - Determines whether any sounds are not accessible due to security - restrictions. For example, a sound loaded from a domain other than - that of the content calling this method is not accessible if the - server for the sound has no URL policy file that grants access to the - domain of that domain. The sound can still be loaded and played, but - low-level operations, such as getting ID3 metadata for the sound, - cannot be performed on inaccessible sounds. - For AIR application content in the application security sandbox, - calling this method always returns `false`. All sounds, including - those loaded from other domains, are accessible to content in the - application security sandbox. - - @return The string representation of the boolean. - - - - In Flash Professional, this method does not stop the playhead. Sounds - set to stream will resume playing as the playhead moves over the - frames in which they are located. - - When using this property, consider the following security model: - - * By default, calling the `SoundMixer.stopAll()` method stops only - sounds in the same security sandbox as the object that is calling the - method. Any sounds whose playback was not started from the same - sandbox as the calling object are not stopped. - * When you load the sound, using the `load()` method of the Sound - class, you can specify a `context` parameter, which is a - SoundLoaderContext object. If you set the `checkPolicyFile` property - of the SoundLoaderContext object to `true`, Flash Player or Adobe AIR - checks for a cross-domain policy file on the server from which the - sound is loaded. If the server has a cross-domain policy file, and the - file permits the domain of the calling content, then the file can stop - the loaded sound by using the `SoundMixer.stopAll()` method; otherwise - it cannot. - - However, in Adobe AIR, content in the `application` security sandbox - (content installed with the AIR application) are not restricted by - these security limitations. - - For more information related to security, see the Flash Player - Developer Center Topic: Security.]]> - - <__registerSoundChannel set="method" line="180" static="1"> - - - - - - - <__unregisterSoundChannel set="method" line="185" static="1"> - - - - - - - - - - - - - - - - - - The SoundMixer class contains static properties and methods for global - sound control in the application. The SoundMixer class controls embedded - and streaming sounds in the application. it does not control dynamically - created sounds (that is, sounds generated in response to a Sound object - dispatching a `sampleData` event). - - - "tags=\"haxe,release\"" - - openfl.media.SoundChannel - - - - - - - - - 5 - - - - - - Indicates the type of filter applied to decoded video as part of - post-processing. The default value is 0, which lets the video - compressor apply a deblocking filter as needed. - Compression of video can result in undesired artifacts. You can use - the `deblocking` property to set filters that reduce blocking and, for - video compressed using the On2 codec, ringing. - - _Blocking_ refers to visible imperfections between the boundaries of - the blocks that compose each video frame. _Ringing_ refers to - distorted edges around elements within a video image. - - Two deblocking filters are available: one in the Sorenson codec and - one in the On2 VP6 codec. In addition, a deringing filter is available - when you use the On2 VP6 codec. To set a filter, use one of the - following values: - - * 0—Lets the video compressor apply the deblocking filter as needed. - * 1—Does not use a deblocking filter. - * 2—Uses the Sorenson deblocking filter. - * 3—For On2 video only, uses the On2 deblocking filter but no - deringing filter. - * 4—For On2 video only, uses the On2 deblocking and deringing - filter. - * 5—For On2 video only, uses the On2 deblocking and a - higher-performance On2 deringing filter. - - If a value greater than 2 is selected for video when you are using the - Sorenson codec, the Sorenson decoder defaults to 2. - - Using a deblocking filter has an effect on overall playback - performance, and it is usually not necessary for high-bandwidth video. - If a user's system is not powerful enough, the user may experience - difficulties playing back video with a deblocking filter enabled. - - - - Specifies whether the video should be smoothed (interpolated) when it - is scaled. For smoothing to work, the runtime must be in high-quality - mode (the default). The default value is `false` (no smoothing). - For video playback using Flash Player 9.0.115.0 and later versions, - set this property to `true` to take advantage of mipmapping image - optimization. - - - - An integer specifying the height of the video stream, in pixels. For - live streams, this value is the same as the `Camera.height` property - of the Camera object that is capturing the video stream. For recorded - video files, this value is the height of the video. - You may want to use this property, for example, to ensure that the - user is seeing the video at the same size at which it was captured, - regardless of the actual size of the Video object on the Stage. - - - - An integer specifying the width of the video stream, in pixels. For - live streams, this value is the same as the `Camera.width` property of - the Camera object that is capturing the video stream. For recorded - video files, this value is the width of the video. - You may want to use this property, for example, to ensure that the - user is seeing the video at the same size at which it was captured, - regardless of the actual size of the Video object on the Stage. - - <__active> - - - - <__buffer> - - - - <__bufferAlpha> - - - - <__bufferColorTransform> - - - - <__bufferContext> - - - - <__bufferData> - - - - <__dirty> - - - - <__height> - - - - <__indexBuffer> - - - - <__indexBufferContext> - - - - <__indexBufferData> - - - - <__stream> - - - - <__texture> - - - - <__textureTime> - - - - <__uvRect> - - - - <__vertexBuffer> - - - - <__vertexBufferContext> - - - - <__vertexBufferData> - - - - <__width> - - - - - - - - - Specifies a video stream from a camera to be displayed within the - boundaries of the Video object in the application. - Use this method to attach live video captured by the user to the Video - object. You can play the live video locally on the same computer or - device on which it is being captured, or you can send it to Flash - Media Server and use the server to stream it to other users. - - **Note:** In an iOS AIR application, camera video cannot be displayed - when the application uses GPU rendering mode. - - @param camera A Camera object that is capturing video data. To drop - the connection to the Video object, pass `null`. - - - - Clears the image currently displayed in the Video object (not the - video stream). This method is useful for handling the current image. - For example, you can clear the last image or display standby - information without hiding the Video object. - - <__enterFrame set="method" line="274" override="1"> - - - - - - - <__getBounds set="method" line="284" override="1"> - - - - - - - - <__getIndexBuffer set="method" line="295"> - - - - - - - <__getTexture set="method" line="321"> - - - - - - - <__getVertexBuffer set="method" line="349"> - - - - - - - <__hitTest set="method" line="398" override="1"> - - - - - - - - - - - - <__hitTestMask set="method" line="421" override="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { height : 240, width : 320 } - Creates a new Video instance. If no values for the `width` and - `height` parameters are supplied, the default values are used. You can - also set the width and height properties of the Video object after the - initial construction, using `Video.width` and `Video.height`. When a - new Video object is created, values of zero for width or height are - not allowed; if you pass zero, the defaults will be applied. - After creating the Video, call the `DisplayObjectContainer.addChild()` - or `DisplayObjectContainer.addChildAt()` method to add the Video - object to a parent DisplayObjectContainer object. - - @param width The width of the video, in pixels. - @param height The height of the video, in pixels. - - Library to display - it. - 2. Add an embedded Video object to the library by clicking the Options menu - on the right side of the Library panel title bar and selecting New Video. - 3. In the Video Properties dialog box, name the embedded Video object for - use in the library and click OK. - 4. Drag the Video object to the Stage and use the Property Inspector to - give it a unique instance name, such as `my_video`. (Do not name it - Video.) - - In AIR applications on the desktop, playing video in fullscreen mode - disables any power and screen saving features (when allowed by the - operating system). - - **Note:** The Video class is not a subclass of the InteractiveObject - class, so it cannot dispatch mouse events. However, you can call the - `addEventListener()` method on the display object container that contains - the Video object.]]> - - - "tags=\"haxe,release\"" - - openfl.display3D.textures.TextureBase - openfl.display3D.Context3D - openfl.geom.ColorTransform - openfl.geom.Matrix - openfl.geom.Point - openfl.geom.Rectangle - openfl.net.NetStream - - - - - - The description string for the filter. The description is visible to - the user in the dialog box that opens when `FileReference.browse()` or - `FileReferenceList.browse()` is called. The description string - contains a string, such as `"Images (*.gif, *.jpg, *.png)"`, that - can help instruct the user on what file types can be uploaded or - downloaded. Note that the actual file types that are supported by this - FileReference object are stored in the `extension` property. - - - - A list of file extensions. This list indicates the types of files that - you want to show in the file-browsing dialog box. (The list is not - visible to the user; the user sees only the value of the `description` - property.) The `extension` property contains a semicolon-delimited - list of file extensions, with a wildcard (*) preceding each - extension, as shown in the following string: `"*.jpg;*.gif;*.png"`. - - - - A list of Macintosh file types. This list indicates the types of files - that you want to show in the file-browsing dialog box. (This list - itself is not visible to the user; the user sees only the value of the - `description` property.) The `macType` property contains a - semicolon-delimited list of Macintosh file types, as shown in the - following string: `"JPEG;jp2_;GIFF"`. - - - - - - - - - { macType : null } - Creates a new FileFilter instance. - - @param description The description string that is visible to users - when they select files for uploading. - @param extension A list of file extensions that indicate which file - formats are visible to users when they select files - for uploading. - @param macType A list of Macintosh file types that indicate which - file types are visible to users when they select - files for uploading. If no value is passed, this - parameter is set to `null`. - - ®.) On the - Macintosh, if you supply a list of Macintosh file types, that list is used - to filter the files. If not, the list of file extensions is used.]]> - - "tags=\"haxe,release\"" - - - - - - - - - The creation date of the file on the local disk. If the object is was - not populated, a call to get the value of this property returns - `null`. - - @throws IOError If the file information cannot be - accessed, an exception is thrown with a - message indicating a file I/O error. - @throws IllegalOperationError If the `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. In this case, the value of - the `creationDate` property is `null`. - - - - The Macintosh creator type of the file, which is only used in Mac OS - versions prior to Mac OS X. In Windows or Linux, this property is - `null`. If the FileReference object was not populated, a call to get - the value of this property returns `null`. - - @throws IllegalOperationError On Macintosh, if the - `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. In this case, the value of - the `creator` property is `null`. - - - - The ByteArray object representing the data from the loaded file after - a successful call to the `load()` method. - - @throws IOError If the file cannot be opened or read, or - if a similar error is encountered in - accessing the file, an exception is - thrown with a message indicating a file - I/O error. In this case, the value of - the `data` property is `null`. - @throws IllegalOperationError If the `load()` method was not called - successfully, an exception is thrown - with a message indicating that functions - were called in the incorrect sequence or - an earlier call was unsuccessful. In - this case, the value of the `data` - property is `null`. - - - - The date that the file on the local disk was last modified. If the - FileReference object was not populated, a call to get the value of - this property returns `null`. - - @throws IOError If the file information cannot be - accessed, an exception is thrown with a - message indicating a file I/O error. - @throws IllegalOperationError If the `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. In this case, the value of - the `modificationDate` property is - `null`. - - - - The name of the file on the local disk. If the FileReference object - was not populated (by a valid call to `FileReference.download()` or ` - FileReference.browse()`), Flash Player throws an error when you try to - get the value of this property. - All the properties of a FileReference object are populated by calling - the `browse()` method. Unlike other FileReference properties, if you - call the `download()` method, the `name` property is populated when - the `select` event is dispatched. - - @throws IllegalOperationError If the `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. - - - - The size of the file on the local disk in bytes. If `size` is 0, an - exception is thrown. - _Note:_ In the initial version of ActionScript 3.0, the `size` - property was defined as a uint object, which supported files with - sizes up to about 4 GB. It is now implemented as a Number object to - support larger files. - - @throws IOError If the file cannot be opened or read, or - if a similar error is encountered in - accessing the file, an exception is - thrown with a message indicating a file - I/O error. - @throws IllegalOperationError If the `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. - - - - The file type. - In Windows or Linux, this property is the file extension. On the - Macintosh, this property is the four-character file type, which is - only used in Mac OS versions prior to Mac OS X. If the FileReference - object was not populated, a call to get the value of this property - returns `null`. - - For Windows, Linux, and Mac OS X, the file extension ?the portion - of the `name` property that follows the last occurrence of the dot (.) - character ?identifies the file type. - - @throws IllegalOperationError If the `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method was - not called successfully, an exception is - thrown with a message indicating that - functions were called in the incorrect - sequence or an earlier call was - unsuccessful. In this case, the value of - the `type` property is `null`. - - - - The filename extension. - - A file's extension is the part of the name following (and not including) - the final dot ("."). If there is no dot in the filename, the extension - is `null`. - - Note: You should use the `extension` property to determine a file's - type; do not use the `creator` or `type` properties. You should consider - the `creator` and `type` properties to be considered deprecated. They - apply to older versions of Mac OS. - - @throws IllegalOperationError If the reference is not initialized - - <__data> - - - - <__path> - - - - <__urlLoader> - - - - - - - - - { typeFilter : null } - FileFilter - class. - @throws Error If the method is not called in response - to a user action, such as a mouse event - or keypress event. - @throws IllegalOperationError Thrown in the following situations: 1) - Another FileReference or - FileReferenceList browse session is in - progress; only one file browsing session - may be performed at a time. 2) A setting - in the user's mms.cfg file prohibits - this operation. - @event cancel Dispatched when the user cancels the file upload Browse - window. - @event select Dispatched when the user successfully selects an item - from the Browse file chooser.]]> - - - - Cancels any ongoing upload or download operation on this FileReference - object. Calling this method does not dispatch the `cancel` event; that - event is dispatched only when the user cancels the operation by - dismissing the file upload or download dialog box. - - - - - - - - { defaultFileName : null } - Security. - - When you download a file using this method, it is flagged as - downloaded on operating systems that flag downloaded files: - - * Windows XP service pack 2 and later, and on Windows Vista - * Mac OS 10.5 and later - - Some operating systems, such as Linux, do not flag downloaded files. - - Note that because of new functionality added to the Flash Player, when - publishing to Flash Player 10, you can have only one of the following - operations active at one time: `FileReference.browse()`, - `FileReference.upload()`, `FileReference.download()`, - `FileReference.load()`, `FileReference.save()`. Otherwise, Flash - Player throws a runtime error (code 2174). Use - `FileReference.cancel()` to stop an operation in progress. This - restriction applies only to Flash Player 10. Previous versions of - Flash Player are unaffected by this restriction on simultaneous - multiple operations. - - In Adobe AIR, the download dialog is not always displayed in front of - windows that are "owned" by another window (windows that have a - non-null `owner` property). To avoid window ordering issues, hide - owned windows before calling this method. - - @param request The URLRequest object. The `url` property of - the URLRequest object should contain the URL of - the file to download to the local computer. If - this parameter is `null`, an exception is - thrown. The `requestHeaders` property of the - URLRequest object is ignored; custom HTTP - request headers are not supported in uploads or - downloads. To send `POST` or GET parameters to - the server, set the value of `URLRequest.data` - to your parameters, and set `URLRequest.method` - to either `URLRequestMethod.POST` or - `URLRequestMethod.GET`. - On some browsers, URL strings are limited in - length. Lengths greater than 256 characters may - fail on some browsers or servers. - @param defaultFileName The default filename displayed in the dialog - box for the file to be downloaded. This string - must not contain the following characters: `/ \ : * ? " < > | %` - If you omit this parameter, the filename of the - remote URL is parsed and used as the default. - @throws ArgumentError If `url.data` is of type ByteArray, an - exception is thrown. For use with the - `FileReference.upload()` and - `FileReference.download()` methods, - `url.data` can only be of type - URLVariables or String. - @throws Error If the method is not called in response - to a user action, such as a mouse event - or keypress event. - @throws IllegalOperationError Thrown in the following situations: 1) - Another browse session is in progress; - only one file browsing session can be - performed at a time. 2) The value passed - to `request` does not contain a valid - path or protocol. 3) The filename to - download contains prohibited characters. - 4) A setting in the user's mms.cfg file - prohibits this operation. - @throws MemoryError This error can occur for the following - reasons: 1) Flash Player cannot convert - the `URLRequest.data` parameter from - UTF8 to MBCS. This error is applicable - if the URLRequest object passed to the - `FileReference.download()` method is set - to perform a GET operation and if - `System.useCodePage` is set to `true`. - 2) Flash Player cannot allocate memory - for the `POST` data. This error is - applicable if the URLRequest object - passed to the `FileReference.download()` - method is set to perform a `POST` - operation. - @throws SecurityError Local untrusted content may not - communicate with the Internet. To avoid - this situation, reclassify this SWF file - as local-with-networking or trusted. - This exception is thrown with a message - indicating the filename and the URL that - may not be accessed because of local - file security restrictions. - @throws SecurityError You cannot connect to commonly reserved - ports. For a complete list of blocked - ports, see "Restricting Networking APIs" - in the _ActionScript 3.0 Developer's - Guide_. - @event cancel Dispatched when the user dismisses the dialog - box. - @event complete Dispatched when the file download operation - successfully completes. - @event ioError Dispatched for any of the following reasons: - * An input/output error occurs while the file is - being read or transmitted. - * SWF content running in the stand-alone or - external versions of Flash Player tries to - download a file from a server that requires - authentication. During download, the standalone - and external players do not provide a means for - users to enter passwords. If a SWF file in these - players tries to download a file from a server - that requires authentication, the download fails. - File download can succeed only in the ActiveX - control and browser plug-in players. - @event open Dispatched when a download operation starts. - @event progress Dispatched periodically during the file download - operation. - @event securityError Dispatched when a download fails because of a - security error. - @event select Dispatched when the user selects a file for - download from the dialog box.]]> - - - - Starts the load of a local file selected by a user. Although Flash - Player has no restriction on the size of files you can upload, - download, load or save, it officially supports sizes of up to 100 MB. - For content running in Flash Player, you must call the - `FileReference.browse()` or `FileReferenceList.browse()` method before - you call the `load()` method. However, content running in AIR in the - application sandbox can call the `load()` method of a File object - without first calling the `browse()` method. (The AIR File class - extends the FileReference class.) - Listeners receive events to indicate the progress, success, or failure - of the load. Although you can use the FileReferenceList object to let - users select multiple files to load, you must load the files one by - one. To load the files one by one, iterate through the - `FileReferenceList.fileList` array of FileReference objects. - - Adobe AIR also includes the FileStream class which provides more - options for reading files. - - The `FileReference.upload()`, `FileReference.download()`, - `FileReference.load()` and `FileReference.save()` functions are - nonblocking. These functions return after they are called, before the - file transmission is complete. In addition, if the FileReference - object goes out of scope, any transaction that is not yet completed on - that object is canceled upon leaving the scope. Be sure that your - FileReference object remains in scope for as long as the upload, - download, load or save is expected to continue. - - If the file finishes loading successfully, its contents are stored as - a byte array in the `data` property of the FileReference object. - - The following security considerations apply: - - * Loading operations are not allowed if the calling SWF file is in an - untrusted local sandbox. - * The default behavior is to deny access between sandboxes. A website - can enable access to a resource by adding a cross-domain policy file. - * You can prevent a file from using this method by setting the - `allowNetworking` parameter of the the `object` and `embed` tags in - the HTML page that contains the SWF content. - - However, these considerations do not apply to AIR content in the - application sandbox. - - Note that when publishing to Flash Player 10 or AIR 1.5, you can have - only one of the following operations active at one time: - `FileReference.browse()`, `FileReference.upload()`, - `FileReference.download()`, `FileReference.load()`, - `FileReference.save()`. Otherwise, the application throws a runtime - error (code 2174). Use `FileReference.cancel()` to stop an operation - in progress. This restriction applies only to Flash Player 10 and AIR - 1.5. Previous versions of Flash Player or AIR are unaffected by this - restriction on simultaneous multiple operations. - - In Adobe AIR, the file-browsing dialog is not always displayed in - front of windows that are "owned" by another window (windows that have - a non-null `owner` property). To avoid window ordering issues, hide - owned windows before calling this method. - - @throws IllegalOperationError Thrown in the following situations: 1) - Another FileReference or - FileReferenceList browse session is in - progress; only one file browsing session - may be performed at a time. 2) A setting - in the user's mms.cfg file prohibits - this operation. - @throws MemoryError This error can occur if the application - cannot allocate memory for the file. The - file may be too large or available - memory may be too low. - @event complete Dispatched when the file load operation completes - successfully. - @event ioError Invoked if the load fails because of an input/output - error while the application is reading or writing the - file. - @event open Dispatched when an load operation starts. - @event progress Dispatched periodically during the file load - operation. - - - - - - - - { defaultFileName : null } - | %` - If a File object calls this method, the - filename will be that of the file the File - object references. (The AIR File class extends - the FileReference class.) - @throws ArgumentError If `data` is not of type ByteArray, and - it does not have a `toString()` method, - an exception is thrown. If `data` is not - of type XML, and it does not have a - `toXMLString()` method, an exception is - thrown. - @throws Error If the method is not called in response - to a user action, such as a mouse event - or keypress event. - @throws IllegalOperationError Thrown in the following situations: 1) - Another browse session is in progress; - only one file browsing session can be - performed at a time. 2) The filename to - download contains prohibited characters. - 3) A setting in the user's mms.cfg file - prohibits this operation. - @throws MemoryError This error can occur if Flash Player - cannot allocate memory for the file. The - file may be too large or available - memory may be too low. - @event cancel Dispatched when the user dismisses the dialog box. - @event complete Dispatched when the file download operation - successfully completes. - @event ioError Dispatched if an input/output error occurs while the - file is being read or transmitted. - @event open Dispatched when a download operation starts. - @event progress Dispatched periodically during the file download - operation. - @event select Dispatched when the user selects a file for download - from the dialog box.]]> - - - - - - - - - { testUpload : false, uploadDataFieldName : "Filedata" } - Security. - - Note that because of new functionality added to the Flash Player, when - publishing to Flash Player 10, you can have only one of the following - operations active at one time: `FileReference.browse()`, - `FileReference.upload()`, `FileReference.download()`, - `FileReference.load()`, `FileReference.save()`. Otherwise, Flash - Player throws a runtime error (code 2174). Use - `FileReference.cancel()` to stop an operation in progress. This - restriction applies only to Flash Player 10. Previous versions of - Flash Player are unaffected by this restriction on simultaneous - multiple operations. - - @param request The URLRequest object; the `url` property - of the URLRequest object should contain the - URL of the server script configured to - handle upload through HTTP `POST` calls. On - some browsers, URL strings are limited in - length. Lengths greater than 256 characters - may fail on some browsers or servers. If - this parameter is `null`, an exception is - thrown. The `requestHeaders` property of - the URLRequest object is ignored; custom - HTTP request headers are not supported in - uploads or downloads. - The URL can be HTTP or, for secure uploads, - HTTPS. To use HTTPS, use an HTTPS url in - the `url` parameter. If you do not specify - a port number in the `url` parameter, port - 80 is used for HTTP and port 443 us used - for HTTPS, by default. - - To send `POST` or `GET` parameters to the - server, set the `data` property of the - URLRequest object to your parameters, and - set the `method` property to either - `URLRequestMethod.POST` or - `URLRequestMethod.GET`. - @param uploadDataFieldName The field name that precedes the file data - in the upload `POST` operation. The - `uploadDataFieldName` value must be - non-null and a non-empty String. By - default, the value of `uploadDataFieldName` - is `"Filedata"`, as shown in the following - sample `POST` request:
       Content-Type:
      -								   multipart/form-data; boundary=AaB03x
      -								   --AaB03x Content-Disposition: form-data;
      -								   name="Filedata"; filename="example.jpg"
      -								   Content-Type: application/octet-stream ...
      -								   contents of example.jpg ... --AaB03x--
      -								   
      - @param testUpload A setting to request a test file upload. If - `testUpload` is `true`, for files larger - than 10 KB, Flash Player attempts a test - file upload `POST` with a Content-Length of - 0. The test upload checks whether the - actual file upload will be successful and - that server authentication, if required, - will succeed. A test upload is only - available for Windows players. - @throws ArgumentError Thrown in the following situations: 1) - The `uploadDataFieldName` parameter is - an empty string. 2) `url.data` is of - type ByteArray. For use with the - `FileReference.upload()` and - `FileReference.download()` methods, - `url.data` may only be of type - URLVariables or String. 3) In the AIR - runtime (in the application security - sandbox), the method of the URLRequest - is not GET or POST (use - `uploadEncoded()` instead). - @throws IllegalOperationError Thrown in the following situations: 1) - Another FileReference or - FileReferenceList browse session is in - progress; only one file browsing session - may be performed at a time. 2) The URL - parameter is not a valid path or - protocol. File upload must use HTTP, and - file download must use FTP or HTTP. 3) - The `uploadDataFieldName` parameter is - set to `null`. 4) A setting in the - user's mms.cfg file prohibits this - operation. - @throws MemoryError This error can occur for the following - reasons: 1) Flash Player cannot convert - the `URLRequest.data` parameter from - UTF8 to MBCS. This error is applicable - if the URLRequest object passed to - `FileReference.upload()` is set to - perform a GET operation and if - `System.useCodePage` is set to `true`. - 2) Flash Player cannot allocate memory - for the `POST` data. This error is - applicable if the URLRequest object - passed to `FileReference.upload()` is - set to perform a `POST` operation. - @throws SecurityError Local untrusted SWF files may not - communicate with the Internet. To avoid - this situation, reclassify this SWF file - as local-with-networking or trusted. - This exception is thrown with a message - indicating the name of the local file - and the URL that may not be accessed. - @throws SecurityError You cannot connect to commonly reserved - ports. For a complete list of blocked - ports, see "Restricting Networking APIs" - in the _ActionScript 3.0 Developer's - Guide_. - @event complete Dispatched when the file upload operation - completes successfully. - @event httpResponseStatus The upload operation completes successfully - and the server returns a response URL and - response headers. - @event httpStatus Dispatched when an upload fails because of - an HTTP error. - @event ioError Invoked in any of the following situations: - * The upload fails because of an - input/output error while Flash Player or - Adobe AIR is reading, writing, or - transmitting the file. - * The upload fails because an attempt to - upload a file to a server that requires - authentication (such as a user name and - password). During upload, no mean is - provided for users to enter passwords. - * The upload fails because the `url` - parameter contains an invalid protocol. - `FileReference.upload()` must use HTTP or - HTTPS. - @event open Dispatched when an upload operation starts. - @event progress Dispatched periodically during the file - upload operation. - @event securityError Dispatched when an upload fails because of a - security violation. - @event uploadCompleteData Dispatched when data has been received from - the server after a successful file upload.]]>
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a new FileReference object. When populated, a FileReference - object represents a file on the user's local disk. - - ® Player browser plug-in, but - uploading (on all players) and downloading (on the stand-alone or external - player) fails. Listen for FileReference events to determine whether - operations complete successfully and to handle errors. - - For content running in Flash Player or for content running in Adobe AIR - outside of the application security sandbox, uploading and downloading - operations can access files only within its own domain and within any - domains that a URL policy file specifies. Put a policy file on the file - server if the content initiating the upload or download doesn't come from - the same domain as the file server. - - Note that because of new functionality added to the Flash Player, when - publishing to Flash Player 10, you can have only one of the following - operations active at one time: `FileReference.browse()`, - `FileReference.upload()`, `FileReference.download()`, - `FileReference.load()`, `FileReference.save()`. Otherwise, Flash Player - throws a runtime error (code 2174). Use `FileReference.cancel()` to stop - an operation in progress. This restriction applies only to Flash Player - 10. Previous versions of Flash Player are unaffected by this restriction - on simultaneous multiple operations. - - While calls to the `FileReference.browse()`, `FileReferenceList.browse()`, - or `FileReference.download()` methods are executing, SWF file playback - pauses in stand-alone and external versions of Flash Player and in AIR for - Linux and Mac OS X 10.1 and earlier - - The following sample HTTP `POST` request is sent from Flash Player to a - server-side script if no parameters are specified: - - ``` - POST /handler.cfm HTTP/1.1 - Accept: text/* - Content-Type: multipart/form-data; - boundary=----------Ij5ae0ae0KM7GI3KM7 - User-Agent: Shockwave Flash - Host: www.example.com - Content-Length: 421 - Connection: Keep-Alive - Cache-Control: no-cache - - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Filename" - - MyFile.jpg - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg" - Content-Type: application/octet-stream - - FileDataHere - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Upload" - - Submit Query - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7-- - ``` - - Flash Player sends the following HTTP `POST` request if the user specifies - the parameters `"api_sig"`, `"api_key"`, and `"auth_token"`: - - ``` - POST /handler.cfm HTTP/1.1 - Accept: text/* - Content-Type: multipart/form-data; - boundary=----------Ij5ae0ae0KM7GI3KM7 - User-Agent: Shockwave Flash - Host: www.example.com - Content-Length: 421 - Connection: Keep-Alive - Cache-Control: no-cache - - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Filename" - - MyFile.jpg - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="api_sig" - - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="api_key" - - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="auth_token" - - XXXXXXXXXXXXXXXXXXXXXX - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg" - Content-Type: application/octet-stream - - FileDataHere - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 - Content-Disposition: form-data; name="Upload" - - Submit Query - ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7-- - ``` - - @event cancel Dispatched when a file upload or download is - canceled through the file-browsing dialog box by - the user. Flash Player does not dispatch this - event if the user cancels an upload or download - through other means (closing the browser or - stopping the current application). - @event complete Dispatched when download is complete or when - upload generates an HTTP status code of 200. For - file download, this event is dispatched when - Flash Player or Adobe AIR finishes downloading - the entire file to disk. For file upload, this - event is dispatched after the Flash Player or - Adobe AIR receives an HTTP status code of 200 - from the server receiving the transmission. - @event httpResponseStatus Dispatched if a call to the `upload()` or - `uploadUnencoded()` method attempts to access - data over HTTP and Adobe AIR is able to detect - and return the status code for the request. - @event httpStatus Dispatched when an upload fails and an HTTP - status code is available to describe the - failure. The `httpStatus` event is dispatched, - followed by an `ioError` event. - The `httpStatus` event is dispatched only for - upload failures. For content running in Flash - Player this event is not applicable for download - failures. If a download fails because of an HTTP - error, the error is reported as an I/O error. - @event ioError Dispatched when the upload or download fails. A - file transfer can fail for one of the following - reasons: - * An input/output error occurs while the player - is reading, writing, or transmitting the file. - * The SWF file tries to upload a file to a - server that requires authentication (such as a - user name and password). During upload, Flash - Player or Adobe AIR does not provide a means for - users to enter passwords. If a SWF file tries to - upload a file to a server that requires - authentication, the upload fails. - * The SWF file tries to download a file from a - server that requires authentication, within the - stand-alone or external player. During download, - the stand-alone and external players do not - provide a means for users to enter passwords. If - a SWF file in these players tries to download a - file from a server that requires authentication, - the download fails. File download can succeed - only in the ActiveX control, browser plug-in - players, and the Adobe AIR runtime. - * The value passed to the `url` parameter in the - `upload()` method contains an invalid protocol. - Valid protocols are HTTP and HTTPS. - - **Important:** Only applications running in a - browser ?that is, using the browser plug-in - or ActiveX control ?and content running in - Adobe AIR can provide a dialog box to prompt the - user to enter a user name and password for - authentication, and then only for downloads. For - uploads using the plug-in or ActiveX control - version of Flash Player, or for upload or - download using either the stand-alone or the - external player, the file transfer fails. - @event open Dispatched when an upload or download operation - starts. - @event progress Dispatched periodically during the file upload - or download operation. The `progress` event is - dispatched while Flash Player transmits bytes to - a server, and it is periodically dispatched - during the transmission, even if the - transmission is ultimately not successful. To - determine if and when the file transmission is - actually successful and complete, listen for the - `complete` event. - In some cases, `progress` events are not - received. For example, when the file being - transmitted is very small or the upload or - download happens very quickly a `progress` event - might not be dispatched. - - File upload progress cannot be determined on - Macintosh platforms earlier than OS X 10.3. The - `progress` event is called during the upload - operation, but the value of the `bytesLoaded` - property of the progress event is -1, indicating - that the progress cannot be determined. - @event securityError Dispatched when a call to the - `FileReference.upload()` or - `FileReference.download()` method tries to - upload a file to a server or get a file from a - server that is outside the caller's security - sandbox. The value of the text property that - describes the specific error that occurred is - normally `"securitySandboxError"`. The calling - SWF file may have tried to access a SWF file - outside its domain and does not have permission - to do so. You can try to remedy this error by - using a URL policy file. - In Adobe AIR, these security restrictions do not - apply to content in the application security - sandbox. - - In Adobe AIR, these security restrictions do not - apply to content in the application security - sandbox. - @event select Dispatched when the user selects a file for - upload or download from the file-browsing dialog - box. (This dialog box opens when you call the - `FileReference.browse()`, - `FileReferenceList.browse()`, or - `FileReference.download()` method.) When the - user selects a file and confirms the operation - (for example, by clicking OK), the properties of - the FileReference object are populated. - For content running in Flash Player or outside - of the application security sandbox in the Adobe - AIR runtime, the `select` event acts slightly - differently depending on what method invokes it. - When the `select` event is dispatched after a - `browse()` call, Flash Player or the AIR - application can read all the FileReference - object's properties, because the file selected - by the user is on the local file system. When - the `select` event occurs after a `download()` - call, Flash Player or the AIR application can - read only the `name` property, because the file - hasn't yet been downloaded to the local file - system at the moment the `select` event is - dispatched. When the file is downloaded and the - `complete` event dispatched, Flash Player or the - AIR application can read all other properties of - the FileReference object. - @event uploadCompleteData Dispatched after data is received from the - server after a successful upload. This event is - not dispatched if data is not returned from the - server.]]> - - "tags=\"haxe,release\"" - - -
      - - - - - - - - Adds a dynamic property to the binary output of a serialized object. - When the object is subsequently read (using a method such as - `readObject`), it contains the new property. You can use this method to - exclude properties of dynamic objects from serialization; to write - values to properties of dynamic objects; or to create new properties for - dynamic objects. - - @param name The name of the property. You can use this parameter either - to specify the name of an existing property of the dynamic object or - to create a new property. - @param value The value to write to the specified property. - - This interface controls the serialization of dynamic properties of dynamic - objects. You use this interface with the `IDynamicPropertyWriter` interface - and the `ObjectEncoding.dynamicPropertyWriter` property. - - - - - - - - - Writes the name and value of an `IDynamicPropertyOutput` object to an - object with dynamic properties. If - `ObjectEncoding.dynamicPropertyWriter` is set, this method is invoked - for each object with dynamic properties. - - @param obj The object to write to. - @param output The `IDynamicPropertyOutput` object that contains the name - and value to dynamically write to the object. - - This interface is used with the `IDynamicPropertyOutput` interface to - control the serialization of dynamic properties of dynamic objects. To use - this interface, assign an object that implements the - `IDynamicPropertyWriter` interface to the - `ObjectEncoding.dynamicPropertyWriter` property. - - - - - - - "NetConnection.Connect.Success" - "checkstyle:FieldDocComment" - - hide - - - - - - - - - - - - - { p5 : null, p4 : null, p3 : null, p2 : null, p1 : null } - Flash Remoting documentation. - * Pass an "rtmp/e/s" URL to connect to a Flash Media Server - application. - * Pass an "rtmfp" URL to create a two-way network endpoint for RTMFP - client-server, peer-to-peer, and IP multicast communication. - * Pass the string "rtmfp:" to create a serverless two-way network - endpoint for RTMFP IP multicast communication. - - Consider the following security model: - - * By default, Flash Player or AIR denies access between sandboxes. A - website can enable access to a resource by using a URL policy file. - * Your application can deny access to a resource on the server. In a - Flash Media Server application, use Server-Side ActionScript code to - deny access. See the Flash Media Server documentation. - * You cannot call `NetConnection.connect()` if the calling file is in - the local-with-file-system sandbox. - * You cannot connect to commonly reserved ports. For a complete list - of blocked ports, see "Restricting Networking APIs" in the - _ActionScript 3.0 Developer's Guide_. - * To prevent a SWF file from calling this method, set the - `allowNetworking` parameter of the the `object` and `embed` tags in - the HTML page that contains the SWF content. - - However, in Adobe AIR, content in the `application` security sandbox - (content installed with the AIR application) are not restricted by - these security limitations. - - For more information about security, see the Adobe Flash Player - Developer Center: Security. - - @param command Use one of the following values for the `command` - parameter: - * To play video and mp3 files from a local file system - or from a web server, pass `null`. - * To connect to an application server running Flash - Remoting, pass a URL that uses the `http` protocol. - * (Flash Player 10.1 or AIR 2 or later) To create a - serverless network endpoint for RTMFP IP multicast - communication, pass the string `"rtmfp:"`. Use this - connection type to receive an IP multicast stream from - a publisher without using a server. You can also use - this connection type to use IP multicast to discover - peers on the same local area network (LAN). - This connection type has the following limitations: - Only peers on the same LAN can discover each other. - Using IP multicast, Flash Player can receive streams, - it cannot send them. - Flash Player and AIR can send and receive streams in a - peer-to-peer group, but the peers must be discovered on - the same LAN using IP multicast. - This technique cannot be used for one-to-one - communication. -

      - * To connect to Flash Media Server, pass the URI of the - application on the server. Use the following syntax - (items in brackets are optional): - `protocol:[//host][:port]/appname[/instanceName]` - - Use one of the following protocols: `rtmp`, `rtmpe`, - `rtmps`, `rtmpt`, `rtmpte`, or `rtmfp`. If the - connection is successful, a `netStatus` event with a - `code` property of `NetConnection.Connect.Success` is - returned. See the `NetStatusEvent.info` property for a - list of all event codes returned in response to calling - `connect()`. - - If the file is served from the same host where the - server is installed, you can omit the `//host` - parameter. If you omit the `/instanceName` parameter, - Flash Player or AIR connects to the application's - default instance. - - (Flash Player 10.1 or AIR 2 or later)To create - peer-to-peer applications, use the `rtmfp` protocol. - @throws ArgumentError The URI passed to the `command` parameter is - improperly formatted. - @throws IOError The connection failed. This can happen if you - call `connect()` from within a `netStatus` event - handler, which is not allowed. - @throws SecurityError Local-with-filesystem SWF files cannot - communicate with the Internet. You can avoid - this problem by reclassifying the SWF file as - local-with-networking or trusted. - @throws SecurityError You cannot connect to commonly reserved ports. - For a complete list of blocked ports, see - "Restricting Networking APIs" in the - _ActionScript 3.0 Developer's Guide_.]]> - - - - Creates a NetConnection object. Call the `connect()` method to make a - connection. - If an application needs to communicate with servers released prior to - Flash Player 9, set the NetConnection object's `objectEncoding` - property. - - The following code creates a NetConnection object: - - ```haxe - var nc = new NetConnection(); - ``` - - Adobe - Stratus service. Call `NetConnection.connect()` to establish the - connection. Use the NetStream class to send streams of media and data over - the connection. - For security information about loading content and data into Flash Player - and AIR, see the following: - - * To load content and data into Flash Player from a web server or from a - local location, see Flash Player Developer Center: Security. - * To load content and data into Flash Player and AIR from Flash Media - Server, see the Flash Media Server documentation. - * To load content and data into AIR, see the Adobe AIR - Developer Center. - - To write callback methods for this class, extend the class and define the - callback methods in the subclass, or assign the `client` property to an - object and define the callback methods on that object. - - @event asyncError Dispatched when an exception is thrown asynchronously - נthat is, from native asynchronous code. - @event ioError Dispatched when an input or output error occurs that - causes a network operation to fail. - @event netStatus Dispatched when a NetConnection object is reporting - its status or error condition. The `netStatus` event - contains an `info` property, which is an information - object that contains specific information about the - event, such as whether a connection attempt succeeded - or failed. - @event securityError Dispatched if a call to NetConnection.call() attempts - to connect to a server outside the caller's security - sandbox.]]> - - - "tags=\"haxe,release\"" - - - - - - - - - hide - - "checkstyle:FieldDocComment" - - - - - The number of seconds of data currently in the buffer. You can use - this property with the `bufferTime` property to estimate how close the - buffer is to being full נfor example, to display feedback to a user - who is waiting for data to be loaded into the buffer. - - - - http://www.adobe.com/go/learn_fms_smartpause_en. - - **Flash Media Server**. The buffer behavior depends on whether the - buffer time is set on a publishing stream or a subscribing stream. For - a publishing stream, `bufferTime` specifies how long the outgoing - buffer can grow before the application starts dropping frames. On a - high-speed connection, buffer time is not a concern; data is sent - almost as quickly as the application can buffer it. On a slow - connection, however, there can be a significant difference between how - fast the application buffers the data and how fast it is sent to the - client. - - For a subscribing stream, `bufferTime` specifies how long to buffer - incoming data before starting to display the stream. - - When a recorded stream is played, if `bufferTime` is 0, Flash sets it - to a small value (approximately 10 milliseconds). If live streams are - later played (for example, from a playlist), this buffer time - persists. That is, `bufferTime` remains nonzero for the stream.]]> - - - - The number of bytes of data that have been loaded into the - application. You can use this property with the `bytesTotal` property - to estimate how close the buffer is to being full נfor example, to - display feedback to a user who is waiting for data to be loaded into - the buffer. - - - - The total size in bytes of the file being loaded into the application. - - - - ` tags. - - If you set `checkPolicyFile` to `true`, the application waits until - the policy file is verified before downloading the video. Wait to - perform any pixel-level operations on the video data, such as calling - `BitmapData.draw()`, until you receive `onMetaData` or `NetStatus` - events from your NetStream object. - - If you set `checkPolicyFile` to `true` but no relevant policy file is - found, you won't receive an error until you perform an operation that - requires a policy file, and then the application throws a - SecurityError exception. - - Be careful with `checkPolicyFile` if you are downloading a file from a - URL that uses server-side HTTP redirects. The application tries to - retrieve policy files that correspond to the initial URL that you - specify in `NetStream.play()`. If the final file comes from a - different URL because of HTTP redirects, the initially downloaded - policy files might not be applicable to the file's final URL, which is - the URL that matters in security decisions. - - For more information on policy files, see "Website controls (policy - files)" in the _ActionScript 3.0 Developer's Guide_ and the Flash - Player Developer Center Topic: Security.]]> - - - - Specifies the object on which callback methods are invoked to handle - streaming or F4V/FLV file data. The default object is `this`, the - NetStream object being created. If you set the `client` property to - another object, callback methods are invoked on that other object. The - `NetStream.client ` object can call the following functions and - receive an associated data object: `onCuePoint()`, `onImageData()`, - `onMetaData()`, `onPlayStatus()`, `onSeekPoint()`, `onTextData()`, and - `onXMPData()`. - **To associate the `client` property with an event handler:** - - 1. Create an object and assign it to the `client` property of the - NetStream object: - ```as3 - var customClient = new Object(); - my_netstream.client = customClient; - ``` - 2. Assign a handler function for the desired data event as a property - of the client object: - ```haxe - customClient.onImageData = onImageDataHandler; - ``` - 3. Write the handler function to receive the data event object, such - as: - ```as3 - public function onImageDataHandler(imageData:Object):void { - trace("imageData length: " + imageData.data.length); - } - ``` - - When data is passed through the stream or during playback, the data - event object (in this case the `imageData` object) is populated with - the data. See the `onImageData` description, which includes a full - example of an object assigned to the `client` property. - - **To associate the `client` property with a subclass:** - - 1. Create a subclass with a handler function to receive the data event - object: - ```as3 - class CustomClient { - public function onMetaData(info:Object):void { - trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); - } - ``` - 2. Assign an instance of the subclass to the `client` property of the - NetStream object: - ```as3 - my_netstream.client = new CustomClient(); - ``` - - When data is passed through the stream or during playback, the data - event object (in this case the `info` object) is populated with the - data. See the class example at the end of the NetStream class, which - shows the assignment of a subclass instance to the `client` property. - - @throws TypeError The `client` property must be set to a non-null - object. - - - - The number of frames per second being displayed. If you are exporting - video files to be played back on a number of systems, you can check - this value during testing to help you determine how much compression - to apply when exporting the file. - - - - - hide - - "checkstyle:FieldDocComment" - - - - - The number of seconds of data in the subscribing stream's buffer in - live (unbuffered) mode. This property specifies the current network - transmission delay (lag time). - This property is intended primarily for use with a server such as - Flash Media Server; for more information, see the class description. - - You can get the value of this property to roughly gauge the - transmission quality of the stream and communicate it to the user. - - - - The object encoding (AMF version) for this NetStream object. The - NetStream object inherits its `objectEncoding` value from the - associated NetConnection object. It's important to understand this - property if your ActionScript 3.0 SWF file needs to communicate with - servers released prior to Flash Player 9. For more information, see - the `objectEncoding` property description in the NetConnection class. - The value of this property depends on whether the stream is local or - remote. Local streams, where `null` was passed to the - `NetConnection.connect()` method, return the value of - `NetConnection.defaultObjectEncoding`. Remote streams, where you are - connecting to a server, return the object encoding of the connection - to the server. - - If you try to read this property when not connected, or if you try to - change this property, the application throws an exception. - - - - Controls sound in this NetStream object. For more information, see the - SoundTransform class. - - - - - hide - - "checkstyle:FieldDocComment" - - - - - <__closed> - - - - <__connection> - - - - <__soundTransform> - - - - <__timer> - - - - - - Stops playing all data on the stream, sets the `time` property to 0, - and makes the stream available for another use. This method also - deletes the local copy of a video file that was downloaded through - HTTP. Although the application deletes the local copy of the file that - it creates, a copy might persist in the cache directory. If you must - completely prevent caching or local storage of the video file, use - Flash Media Server. - When using Flash Media Server, this method is invoked implicitly when - you call `NetStream.play()` from a publishing stream or - `NetStream.publish()` from a subscribing stream. Please note that: - - * If `close()` is called from a publishing stream, the stream stops - publishing and the publisher can now use the stream for another - purpose. Subscribers no longer receive anything that was being - published on the stream, because the stream has stopped publishing. - * If `close()` is called from a subscribing stream, the stream stops - playing for the subscriber, and the subscriber can use the stream for - another purpose. Other subscribers are not affected. - * You can stop a subscribing stream from playing, without closing the - stream or changing the stream type by using - `openfl.net.NetStream.play(false)`. - - - - Releases all the resources held by the NetStream object. - - The `dispose()` method is similar to the `close` method. The main difference - between the two methods is that `dispose()` releases the memory used to display - the current video frame. If that frame is currently displayed on screen, the - display will go blank. The `close()` method does not blank the display because it - does not release this memory. - - - - Pauses playback of a video stream. Calling this method does nothing if - the video is already paused. To resume play after pausing a video, - call `resume()`. To toggle between pause and play (first pausing the - video, then resuming), call `togglePause()`. - Starting with Flash Player 9.0.115.0, Flash Player no longer clears - the buffer when `NetStream.pause()` is called. This behavior is called - "smart pause". Before Flash Player 9.0.115.0, Flash Player waited for - the buffer to fill up before resuming playback, which often caused a - delay. - - **Note:** For backwards compatibility, the `"NetStream.Buffer.Flush"` - event (see the `NetStatusEvent.info` property) still fires, although - the server does not flush the buffer. - - For a single pause, the `NetStream.bufferLength` property has a limit - of either 60 seconds or twice the value of `NetStream.bufferTime`, - whichever value is higher. For example, if `bufferTime` is 20 seconds, - Flash Player buffers until `NetStream.bufferLength` is the higher - value of either 20~~2 (40), or 60, so in this case it buffers until - `bufferLength` is 60. If `bufferTime` is 40 seconds, Flash Player - buffers until `bufferLength` is the higher value of 40~~2 (80), or 60, - so in this case it buffers until `bufferLength` is 80 seconds. - - The `bufferLength` property also has an absolute limit. If any call to - `pause()` causes `bufferLength` to increase more than 600 seconds or - the value of `bufferTime` ~~ 2, whichever is higher, Flash Player - flushes the buffer and resets `bufferLength` to 0. For example, if - `bufferTime` is 120 seconds, Flash Player flushes the buffer if - `bufferLength` reaches 600 seconds; if `bufferTime` is 360 seconds, - Flash Player flushes the buffer if `bufferLength` reaches 720 seconds. - - **Tip**: You can use `NetStream.pause()` in code to buffer data while - viewers are watching a commercial, for example, and then unpause when - the main video starts. - - - - - - - - - - - - { p5 : null, p4 : null, p3 : null, p2 : null, p1 : null } - Flash Media Server documentation - * Exploring Flash Player support for high-definition - H.264 video and AAC audio - * FLV/F4V open specification documents - - **Workflow for playing a file or live stream** - - 1. Create a NetConnection object and call `NetConnection.connect()`. - To play a file from a local directory or web server, pass null. - - To play a recorded file or live stream from Flash Media Server, pass - the URI of a Flash Media Server application. - 2. Call `NetConnection.addEventListener(NetStatusEvent.NET_STATUS, - netStatusHandler)` to listen for NetStatusEvent events. - 3. On `"NetConnection.Connect.Success"`, create a NetStream object and - pass the NetConnection object to the constructor. - 4. Create a Video object and call `Video.attachNetStream()` and pass - the NetStream object. - 5. Call `NetStream.play()`. - To play a live stream, pass the stream name passed to the - `NetStream.publish()` method. - - To play a recorded file, pass the file name. - 6. Call `addChild()` and pass the Video object to display the video. - - **Note:**To see sample code, scroll to the example at the bottom of - this page. - - **Enable Data Generation Mode** - - Call `play(null)` to enable "Data Generation Mode". In this mode, call - the `appendBytes()` method to deliver data to the NetStream. Use Data - Generation Mode to stream content over HTTP from the Adobe HTTP - Dynamic Streaming Origin Module on an Apache HTTP Server. HTTP Dynamic - Streaming lets clients seek quickly to any point in a file. The Open - Source Media Framework (OSMF) supports HTTP Dynamic Streaming for vod - and live streams. For examples of how to use NetStream Data Generation - Mode, download the OSMF source. For more information about HTTP - Dynamic Streaming, see HTTP - Dynamic Streaming. - - When you use this method without Flash Media Server, there are - security considerations. A file in the local-trusted or - local-with-networking sandbox can load and play a video file from the - remote sandbox, but cannot access the remote file's data without - explicit permission in the form of a URL policy file. Also, you can - prevent a SWF file running in Flash Player from using this method by - setting the `allowNetworking` parameter of the the `object` and - `embed` tags in the HTML page that contains the SWF content. For more - information related to security, see the Flash Player Developer Center - Topic: Security. - - @throws ArgumentError At least one parameter must be specified. - @throws Error The NetStream Object is invalid. This may be due - to a failed NetConnection. - @throws SecurityError Local untrusted SWF files cannot communicate - with the Internet. You can work around this - restriction by reclassifying this SWF file as - local-with-networking or trusted. - @event status Dispatched when attempting to play content encrypted - with digital rights management (DRM). The value of the - `code` property is `"DRM.encryptedFLV"`.]]> - - - - - hide - - "checkstyle:FieldDocComment" - - - - - Resumes playback of a video stream that is paused. If the video is - already playing, calling this method does nothing. - - - - - - - ` - is set to `true` in the Application.xml configuration - file (which it is by default), the server generates a - keyframe at `offset`. - * To return to the beginning of the stream, pass 0 for - `offset`. - * To seek forward from the beginning of the stream, pass - the number of seconds to advance. For example, to - position the playhead at 15 seconds from the beginning - (or the keyframe before 15 seconds), use - `myStream.seek(15)`. - * To seek relative to the current position, pass - `NetStream.time + n` or `NetStream.time - n` to seek `n` - seconds forward or backward, respectively, from the - current position. For example, to rewind 20 seconds from - the current position, use `NetStream.seek(NetStream.time - - 20).`]]> - - - - Pauses or resumes playback of a stream. The first time you call this - method, it pauses play; the next time, it resumes play. You could use - this method to let users pause or resume playback by pressing a single - button. - - <__dispatchStatus set="method" line="2122"> - - - - - - - <__playStatus set="method" line="2129"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { peerID : null } - Creates a stream that you can use to play media files and send data - over a NetConnection object. - - @param connection A NetConnection object. - @param peerID This optional parameter is available in Flash Player - 10 and later, for use with RTMFP connections. (If - the value of the `NetConnection.protocol` property - is not `"rtmfp"`, this parameter is ignored.) Use - one of the following values: - * To connect to Flash Media Server, specify - `NetStream.CONNECT_TO_FMS`. - * To publish directly to peers, specify - `NetStream.DIRECT_CONNECTIONS`. - * To play directly from a specific peer, specify - that peer's identity (see `NetConnection.nearID` and - `NetStream.farID`). - * (Flash Player 10.1 or AIR 2 or later) To publish - or play a stream in a peer-to-peer multicast group, - specify a `groupspec` string (see the GroupSpecifier - class). - - In most cases, a `groupspec` has the potential to - use the network uplink on the local system. In this - case, the user is asked for permission to use the - computer's network resources. If the user allows - this use, a `NetStream.Connect.Success` - NetStatusEvent is sent to the NetConnection's event - listener. If the user denies permission, a - `NetStream.Connect.Rejected` event is sent. When - specifying a `groupspec`, until a - `NetStream.Connect.Success` event is received, it is - an error to use any method of the NetStream object, - and an exception is raised. - - If you include this parameter in your constructor - statement but pass a value of `null`, the value is - set to `"connectToFMS"`. - @throws ArgumentError The NetConnection instance is not connected. - - Flash Media Server documentation - * Exploring Flash Player support for high-definition H.264 - video and AAC audio - * FLV/F4V open specification documents - - **Receiving data from a Flash Media Server stream, progressive F4V file, - or progressive FLV file** - - Flash Media Server, F4V files, and FLV files can send event objects - containing data at specific data points during streaming or playback. You - can handle data from a stream or FLV file during playback in two ways: - - * Associate a client property with an event handler to receive the data - object. Use the `NetStream.client` property to assign an object to call - specific data handling functions. The object assigned to the - `NetStream.client` property can listen for the following data points: - `onCuePoint()`, `onImageData()`, `onMetaData()`, `onPlayStatus()`, - `onSeekPoint()`, `onTextData()`, and `onXMPData()`. Write procedures - within those functions to handle the data object returned from the stream - during playback. See the `NetStream.client` property for more information. - - * Associate a client property with a subclass of the NetStream class, - then write an event handler to receive the data object. NetStream is a - sealed class, which means that properties or methods cannot be added to a - NetStream object at runtime. However, you can create a subclass of - NetStream and define your event handler in the subclass. You can also make - the subclass dynamic and add the event handler to an instance of the - subclass. - - Wait to receive a `NetGroup.Neighbor.Connect` event before you use the - object replication, direct routing, or posting APIs. - - **Note:** To send data through an audio file, like an mp3 file, use the - Sound class to associate the audio file with a Sound object. Then, use the - `Sound.id3` property to read metadata from the sound file. - - @event asyncError Dispatched when an exception is thrown - asynchronously נthat is, from native - asynchronous code. This event is dispatched when a - server calls a method on the client that is not - defined. - @event drmAuthenticate Dispatched when a NetStream object tries to play a - digital rights management (DRM) encrypted content - that requires a user credential for authentication - before playing. - Use the ` setDRMAuthenticationCredentials()` - method of the NetStream object to authenticate the - user. If user authentication failed, the - application retries authentication and dispatches - a new DRMAuthenticateEvent event for the NetStream - object. - @event drmError Dispatched when a NetStream object, trying to play - a digital rights management (DRM) encrypted file, - encounters a DRM-related error. For example, a - DRMErrorEvent object is dispatched when the user - authorization fails. This may be because the user - has not purchased the rights to view the content - or because the content provider does not support - the viewing application. - @event drmStatus Dispatched when the digital rights management - (DRM) encrypted content begins playing (when the - user is authenticated and authorized to play the - content). - DRMStatusEvent object contains information related - to the voucher, such as whether the content is - available offline or when the voucher expires and - users can no longer view the content. - @event ioError Dispatched when an input or output error occurs - that causes a network operation to fail. - @event mediaTypeData Dispatched when playing video content and certain - type of messages are processed. - A NetDataEvent is dispatched for the following - messages: - - * onCuePoint - * onImageData - * onMetaData - * onPlayStatus (for code NetStream.Play.Complete) - * onTextData - * onXMPData - - **Note:** This event is not dispatched by content - running in Flash Player in the browser on Android - or Blackberry Tablet OS or by content running in - AIR on iOS. - @event netStatus Dispatched when a NetStream object is reporting - its status or error condition. The `netStatus` - event contains an `info` property, which is an - information object that contains specific - information about the event, such as if a - connection attempt succeeded or failed. - @event onCuePoint Establishes a listener to respond when an embedded - cue point is reached while playing a video file. - You can use the listener to trigger actions in - your code when the video reaches a specific cue - point, which lets you synchronize other actions in - your application with video playback events. For - information about video file formats supported by - Flash Media Server, see the www.adobe.com/go/learn_fms_fileformats_en. - - `onCuePoint` is actually a property of the - `NetStream.client` object. IThe property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description. You cannot use the - `addEventListener()` method, or any other - EventDispatcher methods, to listen for, or process - `onCuePoint` as an event. Define a callback - function and attach it to one of the following - objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. Create a subclass of NetStream and define - your event handler in the subclass. You can also - make the subclass dynamic and add the event - handler function to an instance of the subclass. - - The associated event listener is triggered after a - call to the `NetStream.play()` method, but before - the video playhead has advanced. - - You can embed the following types of cue points in - a video file: - - * A navigation cue point specifies a keyframe - within the video file and the cue point's `time` - property corresponds to that exact keyframe. - Navigation cue points are often used as bookmarks - or entry points to let users navigate through the - video file. - * An event cue point specifies a time. The time - may or may not correspond to a specific keyframe. - An event cue point usually represents a time in - the video when something happens that could be - used to trigger other application events. - - The `onCuePoint` event object has the following - properties: - - | Property | Description | - | --- | --- | - | `name` | The name given to the cue point when it was embedded in the video file. | - |`parameters` | An associative array of name and value pair strings specified for this cue point. Any valid string can be used for the parameter name or value. | - |`time` | The time in seconds at which the cue point occurred in the video file during playback. | - |`type` | The type of cue point that was reached, either navigation or event. | - - You can define cue points in a video file when you - first encode the file, or when you import a video - clip in the Flash authoring tool by using the - Video Import wizard. - - The `onMetaData` event also retrieves information - about the cue points in a video file. However the - `onMetaData` event gets information about all of - the cue points before the video begins playing. - The `onCuePoint` event receives information about - a single cue point at the time specified for that - cue point during playback. - - Generally, to have your code respond to a specific - cue point at the time it occurs, use the - `onCuePoint` event to trigger some action in your - code. - - You can use the list of cue points provided to the - `onMetaData` event to let the user start playing - the video at predefined points along the video - stream. Pass the value of the cue point's `time` - property to the `NetStream.seek()` method to play - the video from that cue point. - @event onDRMContentData Establishes a listener to respond when AIR - extracts DRM content metadata embedded in a media - file. - A DRMContentData object contains the information - needed to obtain a voucher required to play a - DRM-protected media file. Use the DRMManager class - to download the voucher with this information. - - `onDRMContentData` is a property of the - `NetStream.client` object. This property is listed - in the Events section because it responds to a - data event when preloading embedded data from a - local media file. For more information, see the - NetStream class description. You cannot use the - `addEventListener()` method, or any other - EventDispatcher methods, to listen for, or process - `onDRMContentData` as an event. Rather, you must - define a single callback function and attach it - directly to one of the following objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. However, you can create a subclass of - NetStream and define your event handler in the - subclass or make the subclass dynamic and add the - event handler function to an instance of the - subclass. - @event onImageData Establishes a listener to respond when Flash - Player receives image data as a byte array - embedded in a media file that is playing. The - image data can produce either JPEG, PNG, or GIF - content. Use the - `openfl.display.Loader.loadBytes()` method to load - the byte array into a display object. - `onImageData` is actually a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description. You cannot use the - `addEventListener()` method, or any other - EventDispatcher methods, to listen for, or process - `onImageData` as an event. Define a single - callback function and attach it to one of the - following objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. Create a subclass of NetStream and define - your event handler in the subclass. You can also - make the subclass dynamic and add the event - handler function to an instance of the subclass. - - The associated event listener is triggered after a - call to the `NetStream.play()` method, but before - the video playhead has advanced. - - The onImageData event object contains the image - data as a byte array sent through an AMF0 data - channel. - @event onMetaData Establishes a listener to respond when Flash - Player receives descriptive information embedded - in the video being played. For information about - video file formats supported by Flash Media - Server, see the www.adobe.com/go/learn_fms_fileformats_en. - - `onMetaData` is actually a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description and the `NetStream.client` property. - You cannot use the `addEventListener()` method, or - any other EventDispatcher methods, to listen for - or process `onMetaData` as an event. Define a - single callback function and attach it to one of - the following objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. You can create a subclass of NetStream - and define your event handler in the subclass. You - can also make the subclass dynamic and add the - event handler function to an instance of the - subclass. - - The Flash Video Exporter utility (version 1.1 or - later) embeds a video's duration, creation date, - data rates, and other information into the video - file itself. Different video encoders embed - different sets of meta data. - - The associated event listener is triggered after a - call to the `NetStream.play()` method, but before - the video playhead has advanced. - - In many cases, the duration value embedded in - stream metadata approximates the actual duration - but is not exact. In other words, it does not - always match the value of the `NetStream.time` - property when the playhead is at the end of the - video stream. - - The event object passed to the onMetaData event - handler contains one property for each piece of - data. - @event onPlayStatus Establishes a listener to respond when a NetStream - object has completely played a stream. The - associated event object provides information in - addition to what's returned by the `netStatus` - event. You can use this property to trigger - actions in your code when a NetStream object has - switched from one stream to another stream in a - playlist (as indicated by the information object - `NetStream.Play.Switch`) or when a NetStream - object has played to the end (as indicated by the - information object `NetStream.Play.Complete`). - `onPlayStaus` is actually a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description. You cannot use the - `addEventListener()` method, or any other - EventDispatcher methods, to listen for, or process - `onPlayStatus` as an event. Define a callback - function and attach it to one of the following - objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. Create a subclass of NetStream and define - your event handler in the subclass. You can also - make the subclass dynamic and add the event - handler function to an instance of the subclass. - - This event can return an information object with - the following properties: - - | Code property | Level property | Meaning | - | --- | --- | --- | - | `NetStream.Play.Switch` | `"status"` | The subscriber is switching from one stream to another in a playlist. | - | `NetStream.Play.Complete` | `"status"` | Playback has completed. | - | `NetStream.Play.TransitionComplete` | `"status"` | The subscriber is switching to a new stream as a result of stream bit-rate switching | - @event onSeekPoint Called synchronously from `appendBytes()` when the - append bytes parser encounters a point that it - believes is a seekable point (for example, a video - key frame). Use this event to construct a seek - point table. The `byteCount` corresponds to the - `byteCount` at the first byte of the parseable - message for that seek point, and is reset to zero - as described above. To seek, at the event - `NetStream.Seek.Notify`, find the bytes that start - at a seekable point and call `appendBytes(bytes)`. - If the `bytes` argument is a `ByteArray` - consisting of bytes starting at the seekable - point, the video plays at that seek point. - **Note:** Calls to `appendBytes()` from within - this callback are ignored. - - The `onSeekPoint` property is a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to data - coming into the `appendBytes()` method. For more - information, see the NetStream class description - and the `NetStream.client` property. You cannot - use the `addEventListener()` method, or any other - EventDispatcher methods, to listen for or process - `onSeekPoint` as an event. To use `onSeekPoint`, - define a callback function and attach it to one of - the following objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. However, you can create a subclass of - NetStream and define your event handler in the - subclass. You can also make the subclass dynamic - and add the event handler function to an instance - of the subclass. - @event onTextData Establishes a listener to respond when Flash - Player receives text data embedded in a media file - that is playing. The text data is in UTF-8 format - and can contain information about formatting based - on the 3GP timed text specification. - `onTextData` is actually a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description. You cannot use the - `addEventListener()` method, or any other - EventDispatcher methods, to listen for, or process - `onTextData` as an event. Define a callback - function and attach it to one of the following - objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. Create a subclass of NetStream and define - your event handler in the subclass. You can also - make the subclass dynamic and add the event - handler function to an instance of the subclass. - - The associated event listener is triggered after a - call to the `NetStream.play()` method, but before - the video playhead has advanced. - - The onTextData event object contains one property - for each piece of text data. - @event onXMPData Establishes a listener to respond when Flash - Player receives information specific to Adobe - Extensible Metadata Platform (XMP) embedded in the - video being played. For information about video - file formats supported by Flash Media Server, see - the www.adobe.com/go/learn_fms_fileformats_en. - - `onXMPData` is actually a property of the - `NetStream.client` object. The property is listed - in the Events section because it responds to a - data event, either when streaming media using - Flash Media Server or during FLV file playback. - For more information, see the NetStream class - description and the `NetStream.client` property. - You cannot use the `addEventListener()` method, or - any other EventDispatcher methods, to listen for - or process `onMetaData` as an event. Define a - callback function and attach it to one of the - following objects: - - * The object that the `client` property of a - NetStream instance references. - * An instance of a NetStream subclass. NetStream - is a sealed class, which means that properties or - methods cannot be added to a NetStream object at - runtime. However, you can create a subclass of - NetStream and define your event handler in the - subclass. You can also make the subclass dynamic - and add the event handler function to an instance - of the subclass. - - The associated event listener is triggered after a - call to the `NetStream.play()` method, but before - the video playhead has advanced. - - The object passed to the `onXMPData()` event - handling function has one `data` property, which - is a string. The string is generated from a - top-level UUID box. (The 128-bit UUID of the top - level box is - `BE7ACFCB-97A9-42E8-9C71-999491E3AFAC`.) This - top-level UUID box contains exactly one XML - document represented as a null-terminated UTF-8 - string. - @event status Dispatched when the application attempts to play - content encrypted with digital rights management - (DRM), by invoking the `NetStream.play()` method. - The value of the status code property will be - `"DRM.encryptedFLV"`.]]> - - - openfl.media.SoundMixer - "tags=\"haxe,release\"" - - - - - - - - - - - - - - ` in an OpenFL project XML file._ - - Adobe AIR and Flash Player 9 can serialize in two different formats: - AMF3 and AMF0. AMF3, the default serialization developed for - ActionScript 3.0, provides various advantages over AMF0, which is used - for ActionScript 1.0 and 2.0. AMF3 sends data over the network more - efficiently than AMF0. AMF3 supports sending `int` and `uint` objects as - integers and supports data types that are available only in - ActionScript 3.0, such as ByteArray, XML, and IExternalizable. It is - available only in ActionScript 3.0 and with servers that use AMF3 - encoding, such as Flex 2. - - The ByteArray, FileStream, NetConnection, NetStream, SharedObject, - Socket, and URLStream classes contain an `objectEncoding` property that is - assigned a constant from the ObjectEncoding class. The behavior of the - `objectEncoding` property differs depending on the object; each class's - `objectEncoding` property description explains the behavior more - thoroughly.]]> - - - - - Allows greater control over the serialization of dynamic properties of - dynamic objects. When this property is set to `null`, the default value, - dynamic properties are serialized using native code, which writes all - dynamic properties excluding those whose value is a function. - - This value is called only for properties of a dynamic object (objects - declared within a dynamic class) or for objects declared using the - `new` operator. - - You can use this property to exclude properties of dynamic objects from - serialization; to write values to properties of dynamic objects; or to - create new properties for dynamic objects. To do so, set this property - to an object that implements the `IDynamicPropertyWriter` interface. For - more information, see the `IDynamicPropertyWriter` interface. - - - - - cast 0 - - - - Specifies that objects are serialized using the - Action Message Format for ActionScript 1.0 and 2.0. - - - - - cast 3 - - - - Specifies that objects are serialized using the - Action Message Format for ActionScript 3.0. - - - - - cast 10 - - - - Specifies that objects are serialized using the - Haxe Serialization Format. - - - - - cast 12 - - - - Specifies that objects are serialized using - JavaScript Object Notation. - - - - - cast 10 - - - - Specifies the default format for the current target and runtime. - - Currently, the default on the Flash and AIR targets is AMF3, and - the default on other targets is HXSF. If, in the future, a newer - version of OpenFL introduces support for a new object encoding - format, this may change. You can use this constant only if you're - not concerned about interoperability with previous versions. - - - - - - - - Allows greater control over the serialization of dynamic properties of - dynamic objects. When this property is set to `null`, the default value, - dynamic properties are serialized using native code, which writes all - dynamic properties excluding those whose value is a function. - - This value is called only for properties of a dynamic object (objects - declared within a dynamic class) or for objects declared using the - `new` operator. - - You can use this property to exclude properties of dynamic objects from - serialization; to write values to properties of dynamic objects; or to - create new properties for dynamic objects. To do so, set this property - to an object that implements the `IDynamicPropertyWriter` interface. For - more information, see the `IDynamicPropertyWriter` interface. - - - - - cast 0 - - - - Specifies that objects are serialized using the - Action Message Format for ActionScript 1.0 and 2.0. - - - - - cast 3 - - - - Specifies that objects are serialized using the - Action Message Format for ActionScript 3.0. - - - - - cast 10 - - - - Specifies that objects are serialized using the - Haxe Serialization Format. - - - - - cast 12 - - - - Specifies that objects are serialized using - JavaScript Object Notation. - - - - - cast 10 - - - - Specifies the default format for the current target and runtime. - - Currently, the default on the Flash and AIR targets is AMF3, and - the default on other targets is HXSF. If, in the future, a newer - version of OpenFL introduces support for a new object encoding - format, this may change. You can use this constant only if you're - not concerned about interoperability with previous versions. - - - - - - - - The SharedObjectFlushStatus class provides values for the code returned - from a call to the `SharedObject.flush()` method. - - - - - - cast 0 - - - - Indicates that the flush completed successfully. - - - - - cast 1 - - - - Indicates that the user is being prompted to increase disk space for the - shared object before the flush can occur. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Indicates that the flush completed successfully. - - - - - cast 1 - - - - Indicates that the user is being prompted to increase disk space for the - shared object before the flush can occur. - - - - - - - - - - - - - - - - - - - - - - Indicates the number of bytes that have been loaded thus far during the - load operation. - - - - Indicates the total number of bytes in the downloaded data. This property - contains 0 while the load operation is in progress and is populated when - the operation is complete. Also, a missing Content-Length header will - result in bytesTotal being indeterminate. - - - - The data received from the load operation. This property is populated only - when the load operation is complete. The format of the data depends on the - setting of the `dataFormat` property: - - If the `dataFormat` property is - `URLLoaderDataFormat.TEXT`, the received data is a string - containing the text of the loaded file. - - If the `dataFormat` property is - `URLLoaderDataFormat.BINARY`, the received data is a ByteArray - object containing the raw binary data. - - If the `dataFormat` property is - `URLLoaderDataFormat.VARIABLES`, the received data is a - URLVariables object containing the URL-encoded variables. - - - - Controls whether the downloaded data is received as text - (`URLLoaderDataFormat.TEXT`), raw binary data - (`URLLoaderDataFormat.BINARY`), or URL-encoded variables - (`URLLoaderDataFormat.VARIABLES`). - - If the value of the `dataFormat` property is - `URLLoaderDataFormat.TEXT`, the received data is a string - containing the text of the loaded file. - - If the value of the `dataFormat` property is - `URLLoaderDataFormat.BINARY`, the received data is a ByteArray - object containing the raw binary data. - - If the value of the `dataFormat` property is - `URLLoaderDataFormat.VARIABLES`, the received data is a - URLVariables object containing the URL-encoded variables. - - @default URLLoaderDataFormat.TEXT - - <__httpRequest> - - - - - - Closes the load operation in progress. Any load operation in progress is - immediately terminated. If no URL is currently being streamed, an invalid - stream error is thrown. - - - - - - - Sends and loads data from the specified URL. The data can be received as - text, raw binary data, or URL-encoded variables, depending on the value - you set for the `dataFormat` property. Note that the default - value of the `dataFormat` property is text. If you want to send - data to the specified URL, you can set the `data` property in - the URLRequest object. - - **Note:** If a file being loaded contains non-ASCII characters(as - found in many non-English languages), it is recommended that you save the - file with UTF-8 or UTF-16 encoding as opposed to a non-Unicode format like - ASCII. - - A SWF file in the local-with-filesystem sandbox may not load data - from, or provide data to, a resource that is in the network sandbox. - - By default, the calling SWF file and the URL you load must be in - exactly the same domain. For example, a SWF file at www.adobe.com can load - data only from sources that are also at www.adobe.com. To load data from a - different domain, place a URL policy file on the server hosting the - data. - - You cannot connect to commonly reserved ports. For a complete list of - blocked ports, see "Restricting Networking APIs" in the _ActionScript - 3.0 Developer's Guide_. - - In Flash Player 10 and later, if you use a multipart Content-Type(for - example "multipart/form-data") that contains an upload(indicated by a - "filename" parameter in a "content-disposition" header within the POST - body), the POST operation is subject to the security rules applied to - uploads: - - * The POST operation must be performed in response to a user-initiated - action, such as a mouse click or key press. - * If the POST operation is cross-domain(the POST target is not on the - same server as the SWF file that is sending the POST request), the target - server must provide a URL policy file that permits cross-domain - access. - - Also, for any multipart Content-Type, the syntax must be valid - (according to the RFC2046 standards). If the syntax appears to be invalid, - the POST operation is subject to the security rules applied to - uploads. - - For more information related to security, see the Flash Player - Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @param request A URLRequest object specifying the URL to download. - @throws ArgumentError `URLRequest.requestHeader` objects may - not contain certain prohibited HTTP request headers. - For more information, see the URLRequestHeader class - description. - @throws MemoryError This error can occur for the following reasons: 1) - Flash Player or AIR cannot convert the - `URLRequest.data` parameter from UTF8 to - MBCS. This error is applicable if the URLRequest - object passed to `load()` is set to - perform a `GET` operation and if - `System.useCodePage` is set to - `true`. 2) Flash Player or AIR cannot - allocate memory for the `POST` data. This - error is applicable if the URLRequest object passed - to `load` is set to perform a - `POST` operation. - @throws SecurityError Local untrusted files may not communicate with the - Internet. This may be worked around by reclassifying - this file as local-with-networking or trusted. - @throws SecurityError You are trying to connect to a commonly reserved - port. For a complete list of blocked ports, see - "Restricting Networking APIs" in the _ActionScript - 3.0 Developer's Guide_. - @throws TypeError The value of the request parameter or the - `URLRequest.url` property of the - URLRequest object passed are `null`. - @event complete Dispatched after data has loaded successfully. - @event httpResponseStatus Dispatched if a call to the `load()` - method attempts to access data over HTTP and - Adobe AIR is able to detect and return the - status code for the request. - @event httpStatus If access is over HTTP, and the current Flash - Player environment supports obtaining status - codes, you may receive these events in addition - to any `complete` or - `error` event. - @event ioError The load operation could not be completed. - @event open Dispatched when a load operation commences. - @event progress Dispatched when data is received as the download - operation progresses. - @event securityError A load operation attempted to retrieve data from - a server outside the caller's security sandbox. - This may be worked around using a policy file on - the server. - @event securityError A load operation attempted to load a SWZ file(a - Adobe platform component), but the certificate - is invalid or the digest does not match the - component. - - <__dispatchStatus set="method" line="329"> - - - - <__prepareRequest set="method" line="351"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - { request : null } - Creates a URLLoader object. - - @param request A URLRequest object specifying the URL to download. If this - parameter is omitted, no load operation begins. If - specified, the load operation begins immediately(see the - `load` entry for more information). - - The URLLoader class downloads data from a URL as text, binary data, or - URL-encoded variables. It is useful for downloading text files, XML, or - other information to be used in a dynamic, data-driven application. - - A URLLoader object downloads all of the data from a URL before making it - available to code in the applications. It sends out notifications about the - progress of the download, which you can monitor through the - `bytesLoaded` and `bytesTotal` properties, as well as - through dispatched events. - - When loading very large video files, such as FLV's, out-of-memory errors - may occur. - - When you use this class in Flash Player and in AIR application content - in security sandboxes other than then application security sandbox, - consider the following security model: - - - * A SWF file in the local-with-filesystem sandbox may not load data - from, or provide data to, a resource that is in the network sandbox. - * By default, the calling SWF file and the URL you load must be in - exactly the same domain. For example, a SWF file at www.adobe.com can load - data only from sources that are also at www.adobe.com. To load data from a - different domain, place a URL policy file on the server hosting the - data. - - - For more information related to security, see the Flash Player Developer - Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - @event complete Dispatched after all the received data is decoded - and placed in the data property of the URLLoader - object. The received data may be accessed once - this event has been dispatched. - @event httpResponseStatus Dispatched if a call to the load() method - attempts to access data over HTTP, and Adobe AIR - is able to detect and return the status code for - the request. - @event httpStatus Dispatched if a call to URLLoader.load() attempts - to access data over HTTP. For content running in - Flash Player, this event is only dispatched if - the current Flash Player environment is able to - detect and return the status code for the - request.(Some browser environments may not be - able to provide this information.) Note that the - `httpStatus` event(if any) is sent - before(and in addition to) any - `complete` or `error` - event. - @event ioError Dispatched if a call to URLLoader.load() results - in a fatal error that terminates the download. - @event open Dispatched when the download operation commences - following a call to the - `URLLoader.load()` method. - @event progress Dispatched when data is received as the download - operation progresses. - - Note that with a URLLoader object, it is not - possible to access the data until it has been - received completely. So, the progress event only - serves as a notification of how far the download - has progressed. To access the data before it's - entirely downloaded, use a URLStream object. - @event securityError Dispatched if a call to URLLoader.load() attempts - to load data from a server outside the security - sandbox. Also dispatched if a call to - `URLLoader.load()` attempts to load a - SWZ file and the certificate is invalid or the - digest string does not match the component. - - - "tags=\"haxe,release\"" - - - - - - - - The URLLoaderDataFormat class provides values that specify how downloaded - data is received. - - - - - - cast 0 - - - - Specifies that downloaded data is received as raw binary data. - - - - - cast 1 - - - - Specifies that downloaded data is received as text. - - - - - cast 2 - - - - Specifies that downloaded data is received as URL-encoded variables. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that downloaded data is received as raw binary data. - - - - - cast 1 - - - - Specifies that downloaded data is received as text. - - - - - cast 2 - - - - Specifies that downloaded data is received as URL-encoded variables. - - - - - - - - - - - - - - - - - - - - - The MIME content type of the content in the the `data` - property. - - The default value is - `application/x-www-form-urlencoded`. - - **Note**:The `FileReference.upload()`, - `FileReference.download()`, and `HTMLLoader.load()` - methods do not support the `URLRequest.contentType` - property. - - When sending a POST request, the values of the `contentType` - and `data` properties must correspond properly. The value of - the `contentType` property instructs servers on how to - interpret the value of the `data` property. - - * If the value of the `data` property is a URLVariables - object, the value of `contentType` must be - `application/x-www-form-urlencoded`. - * If the value of the `data` property is any other type, - the value of `contentType` should indicate the type of the POST - data that will be sent(which is the binary or string data contained in - the value of the `data` property). - * For `FileReference.upload()`, the Content-Type of the - request is set automatically to `multipart/form-data`, and the - value of the `contentType` property is ignored. - - In Flash Player 10 and later, if you use a multipart Content-Type(for - example "multipart/form-data") that contains an upload(indicated by a - "filename" parameter in a "content-disposition" header within the POST - body), the POST operation is subject to the security rules applied to - uploads: - - * The POST operation must be performed in response to a user-initiated - action, such as a mouse click or key press. - * If the POST operation is cross-domain(the POST target is not on the - same server as the SWF file that is sending the POST request), the target - server must provide a URL policy file that permits cross-domain - access. - - Also, for any multipart Content-Type, the syntax must be valid - (according to the RFC2046 standards). If the syntax appears to be invalid, - the POST operation is subject to the security rules applied to - uploads. - - - - An object containing data to be transmitted with the URL request. - - This property is used in conjunction with the `method` - property. When the value of `method` is `GET`, the - value of `data` is appended to the value of - `URLRequest.url`, using HTTP query-string syntax. When the - `method` value is `POST`(or any value other than - `GET`), the value of `data` is transmitted in the - body of the HTTP request. - - The URLRequest API offers binary `POST` support and support - for URL-encoded variables, as well as support for strings. The data object - can be a ByteArray, URLVariables, or String object. - - The way in which the data is used depends on the type of object - used: - - * If the object is a ByteArray object, the binary data of the - ByteArray object is used as `POST` data. For `GET`, - data of ByteArray type is not supported. Also, data of ByteArray type is - not supported for `FileReference.upload()` and - `FileReference.download()`. - * If the object is a URLVariables object and the method is - `POST`, the variables are encoded using - _x-www-form-urlencoded_ format and the resulting string is used as - `POST` data. An exception is a call to - `FileReference.upload()`, in which the variables are sent as - separate fields in a `multipart/form-data` post. - * If the object is a URLVariables object and the method is - `GET`, the URLVariables object defines variables to be sent - with the URLRequest object. - * Otherwise, the object is converted to a string, and the string is - used as the `POST` or `GET` data. - - This data is not sent until a method, such as - `navigateToURL()` or `FileReference.upload()`, uses - the URLRequest object. - - **Note**: The value of `contentType` must correspond to - the type of data in the `data` property. See the note in the - description of the `contentType` property. - - - - Specifies whether redirects are to be followed (`true`) or not (`false`). - - **Note:** The `FileReference.upload()`, `FileReference.download()`, and - `HTMLLoader.load()` methods do not support the `URLRequest.followRedirects` property. - - The default value is `true`. - - - - Specifies the idle timeout value (in milliseconds) for this request. - - The idle timeout is the amount of time the client waits for a response from the - server, after the connection is established, before abandoning the request. - - **Note:** The `HTMLLoader.load()` method does not support the - `URLRequest.idleTimeout` property. The HTMLLoader class defines its own - `idleTimeout` property. - - The default value is initialized from the `URLRequestDefaults.idleTimeout` property. - - - - Preferences, and click the Security panel. - 3. Click the Show Cookies button. - 4. Click the Reomove All button. - - To clear cookies on Windows: - - 1. Open the Internet Properties control panel, and click the General tab. - 2. Click the Delete Cookies button. - - The default value is `true`.]]> - - - - Controls the HTTP form submission method. - - For SWF content running in Flash Player(in the browser), this property - is limited to GET or POST operations, and valid values are - `URLRequestMethod.GET` or - `URLRequestMethod.POST`. - - For content running in Adobe AIR, you can use any string value if the - content is in the application security sandbox. Otherwise, as with content - running in Flash Player, you are restricted to using GET or POST - operations. - - For content running in Adobe AIR, when using the - `navigateToURL()` function, the runtime treats a URLRequest - that uses the POST method(one that has its `method` property - set to `URLRequestMethod.POST`) as using the GET method. - - **Note:** If running in Flash Player and the referenced form has no - body, Flash Player automatically uses a GET operation, even if the method - is set to `URLRequestMethod.POST`. For this reason, it is - recommended to always include a "dummy" body to ensure that the correct - method is used. - - @default URLRequestMethod.GET - @throws ArgumentError If the `value` parameter is not - `URLRequestMethod.GET` or - `URLRequestMethod.POST`. - - - - The array of HTTP request headers to be appended to the HTTP request. The - array is composed of URLRequestHeader objects. Each object in the array - must be a URLRequestHeader object that contains a name string and a value - string, as follows: - - Flash Player and the AIR runtime impose certain restrictions on request - headers; for more information, see the URLRequestHeader class - description. - - Not all methods that accept URLRequest parameters support the - `requestHeaders` property, consult the documentation for the - method you are calling. For example, the - `FileReference.upload()` and - `FileReference.download()` methods do not support the - `URLRequest.requestHeaders` property. - - Due to browser limitations, custom HTTP request headers are only - supported for `POST` requests, not for `GET` - requests. - - - - - - - - Specifies the user-agent string to be used in the HTTP request. - - The default value is the same user agent string that is used by OpenFL on native - targets, by the web browser or by Flash Player (depending upon the target). - - **Note:** This property does not affect the user agent string when the - URLRequest object is used with the `load()` method of an HTMLLoader object. To set - the user agent string for an HTMLLoader object, set the `userAgent` property of the - HTMLLoader object or set the static `URLRequestDefaults.userAgent` property. - - - - - - - { url : null } - Creates a URLRequest object. If `System.useCodePage` is - `true`, the request is encoded using the system code page, - rather than Unicode. If `System.useCodePage` is - `false`, the request is encoded using Unicode, rather than the - system code page. - - @param url The URL to be requested. You can set the URL later by using the - `url` property. - - The URLRequest class captures all of the information in a single HTTP - request. URLRequest objects are passed to the `load()` methods - of the Loader, URLStream, and URLLoader classes, and to other loading - operations, to initiate URL downloads. They are also passed to the - `upload()` and `download()` methods of the - FileReference class. - - A SWF file in the local-with-filesystem sandbox may not load data from, - or provide data to, a resource that is in the network sandbox. - - By default, the calling SWF file and the URL you load must be in the - same domain. For example, a SWF file at www.adobe.com can load data only - from sources that are also at www.adobe.com. To load data from a different - domain, place a URL policy file on the server hosting the data. - - However, in Adobe AIR, content in the application security sandbox - (content installed with the AIR application) is not restricted by these - security limitations. For content running in Adobe AIR, files in the - application security sandbox can access URLs using any of the following URL - schemes: - - - * `http` and `https` - * `file` - * `app-storage` - * `app` - - - Content running in Adobe AIR that is not in the application security - sandbox observes the same restrictions as content running in the browser - (in Flash Player), and loading is governed by the content's domain and any - permissions granted in URL policy files. - - For more information related to security, see the Flash Player Developer - Center Topic: [Security](http://www.adobe.com/go/devnet_security_en). - - - "tags=\"haxe,release\"" - - - - - - - - true - The default setting for the `followRedirects` property of URLRequest objects. - Setting the `followRedirects` property in a URLRequest object overrides this - default setting. This setting does not apply to URLRequest objects used in file - upload or RTMP requests. - - The default value is `true`. - - - - 0 - The default setting for the `idleTimeout` property of URLRequest objects and - HTMLLoader objects. - - The idle timeout is the amount of time (in milliseconds) that the client waits for - a response from the server, after the connection is established, before abandoning - the request. - - This defines the default idle timeout used by the URLRequest or HTMLLoader object. - Setting the `idleTimeout` property in a URLRequest object or an HTMLLoader object - overrides this default setting. - - When this property is set to 0 (the default), the runtime uses the default idle - timeout value defined by the operating system. The default idle timeout value - varies between operating systems (such as Mac OS, Linux, or Windows) and between - operating system versions. - - This setting does not apply to URLRequest objects used in file upload or RTMP - requests. - - The default value is 0. - - - - true - The default setting for the manageCookies property of URLRequest objects. Setting - the manageCookies property in a URLRequest object overrides this default setting. - - **Note:** This setting does not apply to URLRequest objects used in file upload - or RTMP requests. - - The default value is `true`. - - - - The default setting for the `userAgent` property of URLRequest objects. Setting the - `userAgent` property in a URLRequest object overrides this default setting. - - This is also the default user agent string for all HTMLLoader objects (used when - you call the `load()` method of the HTMLLoader object). Setting the `userAgent` - property of the HTMLLoader object overrides the `URLRequestDefaults.userAgent` - setting. - - This default value varies depending on the runtime operating system (such as Mac OS, - Linux or Windows), the runtime language, and the runtime version, as in the - following examples: - - * `"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"` - * `"Mozilla/5.0 (Windows; U; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"` - * `"Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"` - - The URLRequestDefaults class includes static properties that you can set to define - default values for the properties of the URLRequest class. It also includes a static - method, `URLRequestDefaults.setLoginCredentialsForHost()`, which lets you define - default authentication credentials for requests. The URLRequest class defines the - information to use in an HTTP request. - - Any properties set in a URLRequest object override those static properties set for the - URLRequestDefaults class. - - URLRequestDefault settings only apply to content in the caller's application domain, - with one exception: settings made by calling - `URLRequestDefaults.setLoginCredentialsForHost()` apply to all application domains in - the currently running application. - - Only Adobe® AIR® content running in the application security sandbox can use the - URLRequestDefaults class. Other content will result in a SecurityError being thrown - when accessing the members or properties of this class. - - - "tags=\"haxe,release\"" - - - - - - - An HTTP request header name(such as `Content-Type` or - `SOAPAction`). - - - - The value associated with the `name` property(such as - `text/plain`). - - - - - - - - { value : "", name : "" } - Creates a new URLRequestHeader object that encapsulates a single HTTP - request header. URLRequestHeader objects are used in the - `requestHeaders` property of the URLRequest class. - - @param name An HTTP request header name(such as - `Content-Type` or `SOAPAction`). - @param value The value associated with the `name` property - (such as `text/plain`). - - ® AIR®, content in the application - security sandbox(such as content installed with the AIR application) can - use any request headers, without error. However, for content running in - Adobe AIR that is in a different security sandbox, or for content running - in Flash® Player, using following request headers cause a - runtime error to be thrown, and the restricted terms are not case-sensitive - (for example, `Get`, `get`, and `GET` are - each not allowed): - - In Flash Player and in Adobe AIR content outside of the application - security sandbox, the following request headers cannot be used, and the - restricted terms are not case-sensitive(for example, `Get`, - `get`, and `GET` are all not allowed). Also, - hyphenated terms apply if an underscore character is used(for example, - both `Content-Length` and `Content_Length` are not - allowed): - - `Accept-Charset`, `Accept-Encoding`, - `Accept-Ranges`, `Age`, `Allow`, - `Allowed`, `Authorization`, `Charge-To`, - `Connect`, `Connection`, `Content-Length`, - `Content-Location`, `Content-Range`, - `Cookie`, `Date`, `Delete`, - `ETag`, `Expect`, `Get`, - `Head`, `Host`, `If-Modified-Since`, - `Keep-Alive`, `Last-Modified`, `Location`, - `Max-Forwards`, `Options`, `Origin`, - `Post`, `Proxy-Authenticate`, - `Proxy-Authorization`, `Proxy-Connection`, - `Public`, `Put`, `Range`, - `Referer`, `Request-Range`, `Retry-After`, - `Server`, `TE`, `Trace`, - `Trailer`, `Transfer-Encoding`, `Upgrade`, - `URI`, `User-Agent`, `Vary`, - `Via`, `Warning`, `WWW-Authenticate`, - `x-flash-version`. - - URLRequestHeader objects are restricted in length. If the cumulative - length of a URLRequestHeader object(the length of the `name` - property plus the `value` property) or an array of - URLRequestHeader objects used in the `URLRequest.requestHeaders` - property exceeds the acceptable length, an exception is thrown. - - Content running in Adobe AIR sets the `ACCEPT` header to the - following, unless you specify a setting for the `ACCEPT` header - in the `requestHeaders` property of the URLRequest class: - - ``` - text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, * /*;q=0.5 - ``` - - Not all methods that accept URLRequest parameters support the - `requestHeaders` property, consult the documentation for the - method you are calling. For example, the - `FileReference.upload()` and - `FileReference.download()` methods do not support the - `URLRequest.requestHeaders` property. - - Due to browser limitations, custom HTTP request headers are only - supported for `POST` requests, not for `GET` - requests.]]> - - - "tags=\"haxe,release\"" - - - - - - - - - The URLRequestMethod class provides values that specify whether the - URLRequest object should use the `POST` method or the - `GET` method when sending data to a server. - - - - - - cast "DELETE" - - - - Specifies that the URLRequest object is a `DELETE`. - - - - - cast "GET" - - - - Specifies that the URLRequest object is a `GET`. - - - - - cast "HEAD" - - - - Specifies that the URLRequest object is a `HEAD`. - - - - - cast "OPTIONS" - - - - Specifies that the URLRequest object is `OPTIONS`. - - - - - cast "POST" - - - - Specifies that the URLRequest object is a `POST`. - - _Note:_ For content running in Adobe AIR, when using the - `navigateToURL()` function, the runtime treats a URLRequest - that uses the POST method(one that has its `method` property - set to `URLRequestMethod.POST`) as using the GET method. - - - - - cast "PUT" - - - - Specifies that the URLRequest object is a `PUT`. - - - - - - - - - cast "DELETE" - - - - Specifies that the URLRequest object is a `DELETE`. - - - - - cast "GET" - - - - Specifies that the URLRequest object is a `GET`. - - - - - cast "HEAD" - - - - Specifies that the URLRequest object is a `HEAD`. - - - - - cast "OPTIONS" - - - - Specifies that the URLRequest object is `OPTIONS`. - - - - - cast "POST" - - - - Specifies that the URLRequest object is a `POST`. - - _Note:_ For content running in Adobe AIR, when using the - `navigateToURL()` function, the runtime treats a URLRequest - that uses the POST method(one that has its `method` property - set to `URLRequestMethod.POST`) as using the GET method. - - - - - cast "PUT" - - - - Specifies that the URLRequest object is a `PUT`. - - - - - - - new ApplicationDomain(null) - Gets the current application domain in which your code is executing. - - - - Gets the parent domain of this application domain. - - - - - - - Gets a public definition from the specified application domain. The - definition can be that of a class, a namespace, or a function. - - @param name The name of the definition. - @return The object associated with the definition. - @throws ReferenceError No public definition exists with the specified - name. - - - - - - - Checks to see if a public definition exists within the specified - application domain. The definition can be that of a class, a - namespace, or a function. - - @param name The name of the definition. - @return A value of `true` if the specified definition exists; - otherwise, `false`. - - - - - - - { parentDomain : null } - Creates a new application domain. - - @param parentDomain If no parent domain is passed in, this application - domain takes the system domain as its parent. - - The ApplicationDomain class is a container for discrete groups of class - definitions. Application domains are used to partition classes that are in - the same security domain. They allow multiple definitions of the same - class to exist and allow children to reuse parent definitions. - Application domains are used when an external SWF file is loaded through - the Loader class. All ActionScript 3.0 definitions in the loaded SWF file - are stored in the application domain, which is specified by the - `applicationDomain` property of the LoaderContext object that you pass as - a `context` parameter of the Loader object's `load()` or `loadBytes()` - method. The LoaderInfo object also contains an `applicationDomain` - property, which is read-only. - - All code in a SWF file is defined to exist in an application domain. The - current application domain is where your main application runs. The system - domain contains all application domains, including the current domain, - which means that it contains all Flash Player classes. - - Every application domain, except the system domain, has an associated - parent domain. The parent domain of your main application's application - domain is the system domain. Loaded classes are defined only when their - parent doesn't already define them. You cannot override a loaded class - definition with a newer definition. - - For usage examples of application domains, see the _ActionScript 3.0 - Developer's Guide_. - - The `ApplicationDomain()` constructor function allows you to create an - ApplicationDomain object. - - - "tags=\"haxe,release\"" - - - - - - - - true - Specifies whether access to the user's camera and microphone has been - administratively prohibited(`true`) or allowed - (`false`). The server string is `AVD`. - - For content in Adobe AIR™, this property applies only to content in - security sandboxes other than the application security sandbox. Content in - the application security sandbox can always access the user's camera and - microphone. - - - - Specifies the current CPU architecture. The `cpuArchitecture` - property can return the following strings: "`PowerPC`", - "`x86`", "`SPARC`", and "`ARM`". The - server string is `ARCH`. - - - - false - Specifies whether the system supports(`true`) or does not - support(`false`) communication with accessibility aids. The - server string is `ACC`. - - - - true - Specifies whether the system has audio capabilities. This property is - always `true`. The server string is `A`. - - - - false - Specifies whether the system can(`true`) or cannot - (`false`) encode an audio stream, such as that coming from a - microphone. The server string is `AE`. - - - - false - Specifies whether the system supports(`true`) or does not - support(`false`) embedded video. The server string is - `EV`. - - - - false - Specifies whether the system does(`true`) or does not - (`false`) have an input method editor(IME) installed. The - server string is `IME`. - - - - false - Specifies whether the system does(`true`) or does not - (`false`) have an MP3 decoder. The server string is - `MP3`. - - - - false - Specifies whether the system does(`true`) or does not - (`false`) support printing. The server string is - `PR`. - - - - false - Specifies whether the system does(`true`) or does not - (`false`) support the development of screen broadcast - applications to be run through Flash Media Server. The server string is - `SB`. - - - - false - Specifies whether the system does(`true`) or does not - (`false`) support the playback of screen broadcast applications - that are being run through Flash Media Server. The server string is - `SP`. - - - - false - Specifies whether the system can(`true`) or cannot - (`false`) play streaming audio. The server string is - `SA`. - - - - false - Specifies whether the system can(`true`) or cannot - (`false`) play streaming video. The server string is - `SV`. - - - - true - Specifies whether the system supports native SSL sockets through - NetConnection(`true`) or does not(`false`). The - server string is `TLS`. - - - - false - Specifies whether the system can(`true`) or cannot - (`false`) encode a video stream, such as that coming from a web - camera. The server string is `VE`. - - - - false - Specifies whether the system is a special debugging version - (`true`) or an officially released version - (`false`). The server string is `DEB`. This property - is set to `true` when running in the debug version of Flash - Player or the AIR Debug Launcher(ADL). - - - - false - Specifies whether the Flash runtime is embedded in a PDF file that is open - in Acrobat 9.0 or higher(`true`) or not(`false`). - - - - Specifies the language code of the system on which the content is - running. The language is specified as a lowercase two-letter language - code from ISO 639-1. For Chinese, an additional uppercase two-letter - country code from ISO 3166 distinguishes between Simplified and - Traditional Chinese. The languages codes are based on the English - names of the language: for example, `hu` specifies Hungarian. - On English systems, this property returns only the language code - (`en`), not the country code. On Microsoft Windows systems, this - property returns the user interface (UI) language, which refers to the - language used for all menus, dialog boxes, error messages, and help - files. The following table lists the possible values: - - | Language | Value | - | --- | --- | - | Czech | `cs` | - | Danish | `da` | - | Dutch | `nl` | - | English | `en` | - | Finnish | `fi` | - | French | `fr` | - | German | `de` | - | Hungarian | `hu` | - | Italian | `it` | - | Japanese | `ja` | - | Korean | `ko` | - | Norwegian | `no` | - | Other/unknown | `xu` | - | Polish | `pl` | - | Portuguese | `pt` | - | Russian | `ru` | - | Simplified Chinese | `zh-CN` | - | Spanish | `es` | - | Swedish | `sv` | - | Traditional Chinese | `zh-TW` | - | Turkish | `tr` | - - _Note:_ The value of `Capabilities.language` property is limited to - the possible values on this list. Because of this limitation, Adobe - AIR applications should use the first element in the - `Capabilities.languages` array to determine the primary user interface - language for the system. - - The server string is `L`. - - - - false - Specifies whether read access to the user's hard disk has been - administratively prohibited(`true`) or allowed - (`false`). For content in Adobe AIR, this property applies only - to content in security sandboxes other than the application security - sandbox.(Content in the application security sandbox can always read from - the file system.) If this property is `true`, Flash Player - cannot read files(including the first file that Flash Player launches - with) from the user's hard disk. If this property is `true`, - AIR content outside of the application security sandbox cannot read files - from the user's hard disk. For example, attempts to read a file on the - user's hard disk using load methods will fail if this property is set to - `true`. - - Reading runtime shared libraries is also blocked if this property is - set to `true`, but reading local shared objects is allowed - without regard to the value of this property. - - The server string is `LFD`. - - - - Specifies the manufacturer of the running version of Flash Player or the - AIR runtime, in the format `"Adobe` - `_OSName_"`. The value for `_OSName_` - could be `"Windows"`, `"Macintosh"`, - `"Linux"`, or another operating system name. The server string - is `M`. - - Do _not_ use `Capabilities.manufacturer` to determine a - capability based on the operating system if a more specific capability - property exists. Basing a capability on the operating system is a bad - idea, since it can lead to problems if an application does not consider - all potential target operating systems. Instead, use the property - corresponding to the capability for which you are testing. For more - information, see the Capabilities class description. - - - - 0 - Retrieves the highest H.264 Level IDC that the client hardware supports. - Media run at this level are guaranteed to run; however, media run at the - highest level might not run with the highest quality. This property is - useful for servers trying to target a client's capabilities. Using this - property, a server can determine the level of video to send to the client. - - - The server string is `ML`. - - - - Specifies the current operating system. The `os` property can return - the following strings: - - |Operating system | Value | - | --- | --- | - | Windows 7 | `"Windows 7"` | - | Windows Vista | `"Windows Vista"` | - | Windows Server 2008 R2 | `"Windows Server 2008 R2"` | - | Windows Server 2008 | `"Windows Server 2008"` | - | Windows Home Server | `"Windows Home Server"` | - | Windows Server 2003 R2 | `"Windows Server 2003 R2"` | - | Windows Server 2003 | `"Windows Server 2003"` | - | Windows XP 64 | `"Windows Server XP 64"` | - | Windows XP | `"Windows XP"` | - | Windows 98 | `"Windows 98"` | - | Windows 95 | `"Windows 95"` | - | Windows NT | `"Windows NT"` | - | Windows 2000 | `"Windows 2000"` | - | Windows ME | `"Windows ME"` | - | Windows CE | `"Windows CE"` | - | Windows SmartPhone | `"Windows SmartPhone"` | - | Windows PocketPC | `"Windows PocketPC"` | - | Windows CEPC | `"Windows CEPC"` | - | Windows Mobile | `"Windows Mobile"` | - | Mac OS | `"Mac OS X.Y.Z"` (where X.Y.Z is the version number, for example: `"Mac OS 10.5.2"`) | - | Linux | `"Linux"` (Flash Player attaches the Linux version, such as `"Linux 2.6.15-1.2054_FC5smp"` | - | iPhone OS 4.1 | `"iPhone3,1"` | - - The server string is `OS`. - - Do _not_ use `Capabilities.os` to determine a capability based on the - operating system if a more specific capability property exists. Basing - a capability on the operating system is a bad idea, since it can lead - to problems if an application does not consider all potential target - operating systems. Instead, use the property corresponding to the - capability for which you are testing. For more information, see the - Capabilities class description. - - - - Specifies the pixel aspect ratio of the screen. The server string is - `AR`. - - - - "StandAlone" - or in test mode - * `"PlugIn"` for the Flash Player browser plug-in(and for - SWF content loaded by an HTML page in an AIR application) - * `"StandAlone"` for the stand-alone Flash Player - - The server string is `PT`.]]> - - - - "color" - Specifies the screen color. This property can have the value - `"color"`, `"gray"`(for grayscale), or - `"bw"`(for black and white). The server string is - `COL`. - - - - Specifies the dots-per-inch(dpi) resolution of the screen, in pixels. The - server string is `DP`. - - - - Specifies the maximum horizontal resolution of the screen. The server - string is `R`(which returns both the width and height of the - screen). This property does not update with a user's screen resolution and - instead only indicates the resolution at the time Flash Player or an Adobe - AIR application started. Also, the value only specifies the primary - screen. - - - - Specifies the maximum vertical resolution of the screen. The server string - is `R`(which returns both the width and height of the screen). - This property does not update with a user's screen resolution and instead - only indicates the resolution at the time Flash Player or an Adobe AIR - application started. Also, the value only specifies the primary screen. - - - - "" - - - - - true - Specifies whether the system supports running 32-bit processes. The server - string is `PR32`. - - - - true - Specifies whether the system supports running 64-bit processes. The server - string is `PR64`. - - - - TouchscreenType.FINGER - Specifies the type of touchscreen supported, if any. Values are defined in - the openfl.system.TouchscreenType class. - - - - ® AIR® platform - and version information. The format of the version number is: _platform - majorVersion,minorVersion,buildNumber,internalBuildNumber_. Possible - values for _platform_ are `"WIN"`, ` `"MAC"`, - `"LNX"`, and `"AND"`. Here are some examples of - version information: `WIN 9,0,0,0 // Flash - Player 9 for Windows MAC 7,0,25,0 // Flash Player 7 for Macintosh LNX - 9,0,115,0 // Flash Player 9 for Linux AND 10,2,150,0 // Flash Player 10 - for Android` - - Do _not_ use `Capabilities.version` to determine a - capability based on the operating system if a more specific capability - property exists. Basing a capability on the operating system is a bad - idea, since it can lead to problems if an application does not consider - all potential target operating systems. Instead, use the property - corresponding to the capability for which you are testing. For more - information, see the Capabilities class description. - - The server string is `V`.]]> - - <__standardDensities expr="[120, 160, 240, 320, 480, 640, 800, 960]" line="476" static="1"> - - - [120, 160, 240, 320, 480, 640, 800, 960] - - - - - - - - - Specifies whether the system supports multichannel audio of a specific type. The - class flash.media.AudioDecoder enumerates the possible types. - - _AIR profile support:_ Multichannel audio is supported only on AIR for TV devices. - On all other devices, this method always returns `false`. See AIR Profile Support - for more information regarding API support across multiple profiles. - - **Note:** When using one of the DTS audio codecs, scenarios exist in which - `hasMultiChannelAudio()` returns `true` but the DTS audio is not played. For - example, consider a Blu-ray player with an S/PDIF output, connected to an old - amplifier. The old amplifier does not support DTS, but S/PDIF has no protocol to - notify the Blu-ray player. If the Blu-ray player sends the DTS stream to the old - amplifier, the user hears nothing. Therefore, as a best practice when using DTS, - provide a user interface so that the user can indicate if no sound is playing. - Then, your application can revert to a different codec. - - The following table shows the server string for each multichannel audio type: - - | Multichannel audio type | Server string | - | --- | --- | - | AudioDecoder.DOLBY_DIGITAL | DD | - | AudioDecoder.DOLBY_DIGITAL_PLUS | DDP | - | AudioDecoder.DTS | DTS | - | AudioDecoder.DTS_EXPRESS | DTE | - | AudioDecoder.DTS_HD_HIGH_RESOLUTION_AUDIO | DTH | - | AudioDecoder.DTS_HD_MASTER_AUDIO | DTM | - - @param type A String value representing a multichannel audio type. The valid - values are the constants defined in flash.media.AudioDecoder. - @returns The Boolean value `true` if the system supports the multichannel audio - type passed in the `type` parameter. Otherwise, the return value is `false`. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t& - SB=f&DEB=t&V=WIN%209%2C0%2C0%2C0&M=Adobe%20Windows& - R=1600x1200&DP=72&COL=color&AR=1.0&OS=Windows%20XP& - L=en&PT=External&AVD=f&LFD=f&WD=f&IME=t - The following table lists the properties of the Capabilities class and - corresponding server strings: Capabilities class - propertyServer - string | - |`avHardwareDisable` | `AVD` | - |`hasAccessibility` | `ACC` | - |`hasAudio` | `A` | - |`hasAudioEncoder` | `AE` | - |`hasEmbeddedVideo` | `EV` | - |`hasIME` | `IME` | - |`hasMP3` | `MP3` | - |`hasPrinting` | `PR` | - |`hasScreenBroadcast` | `SB` | - |`hasScreenPlayback` | `SP` | - |`hasStreamingAudio` | `SA` | - |`hasStreamingVideo` | `SV` | - |`hasTLS` | `TLS` | - |`hasVideoEncoder` | `VE` | - |`isDebugger` | `DEB` | - |`language` | `L` | - |`localFileReadDisable` | `LFD` | - |`manufacturer` | `M` | - |`maxLevelIDC` | `ML` | - |`os` | `OS` | - |`pixelAspectRatio` | `AR` | - |`playerType` | `PT` | - |`screenColor` | `COL` | - |`screenDPI` | `DP` | - |`screenResolutionX` | `R` | - |`screenResolutionY` | `R` | - |`version` | `V` | - - - There is also a `WD` server string that specifies whether windowless mode - is disabled. Windowless mode can be disabled in Flash Player due to - incompatibility with the web browser or to a user setting in the mms.cfg - file. There is no corresponding Capabilities property. - - All properties of the Capabilities class are read-only.]]> - - - "tags=\"haxe,release\"" - - - - - - - - Specifies whether you can use a `Loader` object to import content with - executable code, such as a SWF file, into the caller's security - sandbox. There are two affected importing operations: the - `Loader.loadBytes()` method, and the `Loader.load()` method with - `LoaderContext.securityDomain = SecurityDomain.currentDomain`. (The - latter operation is not supported in the AIR application sandbox.) - With the `allowCodeImport` property set to `false`, these importing - operations are restricted to safe operations, such as loading images. - Normal, non-importing SWF file loading with the `Loader.load()` method - is not affected by the value of this property. - This property is useful when you want to import image content into - your sandbox - for example, when you want to replicate or process an - image from a different domain - but you don't want to take the - security risk of receiving a SWF file when you expected only an image - file. Since SWF files may contain ActionScript code, importing a SWF - file is a much riskier operation than importing an image file. - - In AIR content in the application sandbox, the default value is - `false`. In non-application content (which includes all content in - Flash Player), the default value is `true`. - - The `allowCodeImport` property was added in Flash Player 10.1 and AIR - 2.0. However, this property is made available to SWF files and AIR - applications of all versions when the Flash Runtime supports it. - - - - Legacy property, replaced by `allowCodeImport`, but still supported - for compatibility. Previously, the only operation affected by - `allowLoadBytesCodeExecution` was the `Loader.loadBytes()` method, but - as of Flash Player 10.1 and AIR 2.0, the import-loading operation of - `Loader.load()` with `LoaderContext.securityDomain = - SecurityDomain.currentDomain` is affected as well. (The latter - operation is not supported in the AIR application sandbox.) This dual - effect made the property name `allowLoadBytesCodeExecution` overly - specific, so now `allowCodeImport` is the preferred property name. - Setting either of `allowCodeImport` or `allowLoadBytesCodeExecution` - will affect the value of both. - Specifies whether you can use a `Loader` object to import content with - executable code, such as a SWF file, into the caller's security - sandbox. With this property set to `false`, these importing operations - are restricted to safe operations, such as loading images. - - In AIR content in the application sandbox, the default value is - `false`. In non-application content, the default value is `true`. - - - - Specifies the application domain to use for the `Loader.load()` or - `Loader.loadBytes()` method. Use this property only when loading a SWF - file written in ActionScript 3.0 (not an image or a SWF file written - in ActionScript 1.0 or ActionScript 2.0). - Every security domain is divided into one or more application domains, - represented by ApplicationDomain objects. Application domains are not - for security purposes; they are for managing cooperating units of - ActionScript code. If you are loading a SWF file from another domain, - and allowing it to be placed in a separate security domain, then you - cannot control the choice of application domain into which the loaded - SWF file is placed; and if you have specified a choice of application - domain, it will be ignored. However, if you are loading a SWF file - into your own security domain � either because the SWF file comes - from your own domain, or because you are importing it into your - security domain � then you can control the choice of application - domain for the loaded SWF file. - - You can pass an application domain only from your own security domain - in `LoaderContext.applicationDomain`. Attempting to pass an - application domain from any other security domain results in a - `SecurityError` exception. - - You have four choices for what kind of `ApplicationDomain` property to - use: - - * **Child of loader's ApplicationDomain.** The default. You can - explicitly represent this choice with the syntax `new - ApplicationDomain(ApplicationDomain.currentDomain)`. This allows the - loaded SWF file to use the parent's classes directly, for example by - writing `new MyClassDefinedInParent()`. The parent, however, cannot - use this syntax; if the parent wishes to use the child's classes, it - must call `ApplicationDomain.getDefinition()` to retrieve them. The - advantage of this choice is that, if the child defines a class with - the same name as a class already defined by the parent, no error - results; the child simply inherits the parent's definition of that - class, and the child's conflicting definition goes unused unless - either child or parent calls the `ApplicationDomain.getDefinition()` - method to retrieve it. - * **Loader's own ApplicationDomain.** You use this application domain - when using `ApplicationDomain.currentDomain`. When the load is - complete, parent and child can use each other's classes directly. If - the child attempts to define a class with the same name as a class - already defined by the parent, the parent class is used and the child - class is ignored. - * **Child of the system ApplicationDomain.** You use this application - domain when using `new ApplicationDomain(null)`. This separates loader - and loadee entirely, allowing them to define separate versions of - classes with the same name without conflict or overshadowing. The only - way either side sees the other's classes is by calling the - `ApplicationDomain.getDefinition()` method. - * **Child of some other ApplicationDomain.** Occasionally you may have - a more complex ApplicationDomain hierarchy. You can load a SWF file - into any ApplicationDomain from your own SecurityDomain. For example, - `new - ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain)` - loads a SWF file into a new child of the current domain's parent's - parent. - - When a load is complete, either side (loading or loaded) may need to - find its own ApplicationDomain, or the other side's ApplicationDomain, - for the purpose of calling `ApplicationDomain.getDefinition()`. Either - side can retrieve a reference to its own application domain by using - `ApplicationDomain.currentDomain`. The loading SWF file can retrieve a - reference to the loaded SWF file's ApplicationDomain via - `Loader.contentLoaderInfo.applicationDomain`. If the loaded SWF file - knows how it was loaded, it can find its way to the loading SWF file's - ApplicationDomain object. For example, if the child was loaded in the - default way, it can find the loading SWF file's application domain by - using `ApplicationDomain.currentDomain.parentDomain`. - - For more information, see the "ApplicationDomain class" section of the - "Client System Environment" chapter of the _ActionScript 3.0 - Developer's Guide_. - - - - ` tags. - - If you set `checkPolicyFile` to `true`, the main download that - specified in the `Loader.load()` method does not load until the policy - file has been completely processed. Therefore, as long as the policy - file that you need exists, as soon as you have received any - `ProgressEvent.PROGRESS` or `Event.COMPLETE` events from the - `contentLoaderInfo` property of your Loader object, the policy file - download is complete, and you can safely begin performing operations - that require the policy file. - - If you set `checkPolicyFile` to `true`, and no relevant policy file is - found, you will not receive any error indication until you attempt an - operation that throws a `SecurityError` exception. However, once the - LoaderInfo object dispatches a `ProgressEvent.PROGRESS` or - `Event.COMPLETE` event, you can test whether a relevant policy file - was found by checking the value of the `LoaderInfo.childAllowsParent` - property. - - If you will not need pixel-level access to the image that you are - loading, you should not set the `checkPolicyFile` property to `true`. - Checking for a policy file in this case is wasteful, because it may - delay the start of your download, and it may consume network bandwidth - unnecessarily. - - Also try to avoid setting `checkPolicyFile` to `true` if you are using - the `Loader.load()` method to download a SWF file. This is because - SWF-to-SWF permissions are not controlled by policy files, but rather - by the `Security.allowDomain()` method, and thus `checkPolicyFile` has - no effect when you load a SWF file. Checking for a policy file in this - case is wasteful, because it may delay the download of the SWF file, - and it may consume network bandwidth unnecessarily. (Flash Player or - AIR cannot tell whether your main download will be a SWF file or an - image, because the policy file download occurs before the main - download.) - - Be careful with `checkPolicyFile` if you are downloading an object - from a URL that may use server-side HTTP redirects. Policy files are - always retrieved from the corresponding initial URL that you specify - in `URLRequest.url`. If the final object comes from a different URL - because of HTTP redirects, then the initially downloaded policy files - might not be applicable to the object's final URL, which is the URL - that matters in security decisions. If you find yourself in this - situation, you can examine the value of `LoaderInfo.url` after you - have received a `ProgressEvent.PROGRESS` or `Event.COMPLETE` event, - which tells you the object's final URL. Then call the - `Security.loadPolicyFile()` method with a policy file URL based on the - object's final URL. Then poll the value of - `LoaderInfo.childAllowsParent` until it becomes `true`. - - You do not need to set this property for AIR content running in the - application sandbox. Content in the AIR application sandbox can call - the `BitmapData.draw()` method using any loaded image content as the - source.]]> - - - - Specifies the security domain to use for a `Loader.load()` operation. - Use this property only when loading a SWF file (not an image). - The choice of security domain is meaningful only if you are loading a - SWF file that might come from a different domain (a different server) - than the loading SWF file. When you load a SWF file from your own - domain, it is always placed into your security domain. But when you - load a SWF file from a different domain, you have two options. You can - allow the loaded SWF file to be placed in its "natural" security - domain, which is different from that of the loading SWF file; this is - the default. The other option is to specify that you want to place the - loaded SWF file placed into the same security domain as the loading - SWF file, by setting `myLoaderContext.securityDomain` to be equal to - `SecurityDomain.currentDomain`. This is called _import loading_, and - it is equivalent, for security purposes, to copying the loaded SWF - file to your own server and loading it from there. In order for import - loading to succeed, the loaded SWF file's server must have a policy - file trusting the domain of the loading SWF file. - - You can pass your own security domain only in - `LoaderContext.securityDomain`. Attempting to pass any other security - domain results in a `SecurityError` exception. - - Content in the AIR application security sandbox cannot load content - from other sandboxes into its SecurityDomain. - - For more information, see the "Security" chapter in the _ActionScript - 3.0 Developer's Guide_. - - - - - - - - - { securityDomain : null, applicationDomain : null, checkPolicyFile : false } - Creates a new LoaderContext object, with the specified settings. For - complete details on these settings, see the descriptions of the - properties of this class. - - @param checkPolicyFile Specifies whether a check should be made for - the existence of a URL policy file before - loading the object. - @param applicationDomain Specifies the ApplicationDomain object to use - for a Loader object. - @param securityDomain Specifies the SecurityDomain object to use - for a Loader object. - _Note:_ Content in the air application - security sandbox cannot load content from - other sandboxes into its SecurityDomain. - - The LoaderContext class provides options for loading SWF files and other - media by using the Loader class. The LoaderContext class is used as the - `context` parameter in the `load()` and `loadBytes()` methods of the - Loader class. - When loading SWF files with the `Loader.load()` method, you have two - decisions to make: into which security domain the loaded SWF file should - be placed, and into which application domain within that security domain? - For more details on these choices, see the `applicationDomain` and - `securityDomain` properties. - - When loading a SWF file with the `Loader.loadBytes()` method, you have the - same application domain choice to make as for `Loader.load()`, but it's - not necessary to specify a security domain, because `Loader.loadBytes()` - always places its loaded SWF file into the security domain of the loading - SWF file. - - When loading images (JPEG, GIF, or PNG) instead of SWF files, there is no - need to specify a SecurityDomain or an application domain, because those - concepts are meaningful only for SWF files. Instead, you have only one - decision to make: do you need programmatic access to the pixels of the - loaded image? If so, see the `checkPolicyFile` property. If you want to - apply deblocking when loading an image, use the JPEGLoaderContext class - instead of the LoaderContext class. - - "tags=\"haxe,release\"" - - - - - - - new SecurityDomain() - Gets the current security domain. - - - - - - The SecurityDomain class represents the current security "sandbox," also - known as a security domain. By passing an instance of this class to - `Loader.load()`, you can request that loaded media be placed in a - particular sandbox. - - "tags=\"haxe,release\"" - - "checkstyle:UnnecessaryConstructor" - - - - - - The amount of memory(in bytes) currently in use that has been directly - allocated by Flash Player or AIR. - - This property does not return _all_ memory used by an Adobe AIR - application or by the application(such as a browser) containing Flash - Player content. The browser or operating system may consume other memory. - The `System.privateMemory` property reflects _all_ memory - used by an application. - - If the amount of memory allocated is greater than the maximum value for - a uint object(`uint.MAX_VALUE`, or 4,294,967,295), then this - property is set to 0. The `System.totalMemoryNumber` property - allows larger values. - - - - false - A Boolean value that determines which code page to use to interpret - external text files. When the property is set to `false`, - external text files are interpretted as Unicode.(These files must be - encoded as Unicode when you save them.) When the property is set to - `true`, external text files are interpretted using the - traditional code page of the operating system running the application. The - default value of `useCodePage` is `false`. - - Text that you load as an external file(using - `Loader.load()`, the URLLoader class or URLStream) must have - been saved as Unicode in order for the application to recognize it as - Unicode. To encode external files as Unicode, save the files in an - application that supports Unicode, such as Notepad on Windows. - - If you load external text files that are not Unicode-encoded, set - `useCodePage` to `true`. Add the following as the - first line of code of the file that is loading the data(for Flash - Professional, add it to the first frame): - `System.useCodePage = true;` - - When this code is present, the application interprets external text - using the traditional code page of the operating system. For example, this - is generally CP1252 for an English Windows operating system and Shift-JIS - for a Japanese operating system. - - If you set `useCodePage` to `true`, Flash Player - 6 and later treat text as Flash Player 5 does.(Flash Player 5 treated all - text as if it were in the traditional code page of the operating system - running the player.) - - If you set `useCodePage` to `true`, remember that - the traditional code page of the operating system running the application - must include the characters used in your external text file in order to - display your text. For example, if you load an external text file that - contains Chinese characters, those characters cannot display on a system - that uses the CP1252 code page because that code page does not include - Chinese characters. - - To ensure that users on all platforms can view external text files used - in your application, you should encode all external text files as Unicode - and leave `useCodePage` set to `false`. This way, - the application(Flash Player 6 and later, or AIR) interprets the text as - Unicode. - - - - - - hide - - Undocumented property - - - - - - - - - hide - - Makes the specified XML object immediately available for garbage - collection. This method will remove parent and child connections - between all the nodes for the specified XML node. - - @param node XML reference that should be made available for garbage - collection. - - - - - - - Closes Flash Player. - - _For the standalone Flash Player debugger version only._ - - AIR applications should call the `NativeApplication.exit()` - method to exit the application. - - @param code A value to pass to the operating system. Typically, if the - process exits normally, the value is 0. - - - - Forces the garbage collection process. - - _For the Flash Player debugger version and AIR applications only._ - In an AIR application, the `System.gc()` method is only enabled - in content running in the AIR Debug Launcher(ADL) or, in an installed - application, in content in the application security sandbox. - - - - Pauses Flash Player or the AIR Debug Launcher(ADL). After calling this - method, nothing in the application continues except the delivery of Socket - events. - - _For the Flash Player debugger version or the AIR Debug Launcher - (ADL) only._ - - - - Resumes the application after calling `System.pause()`. - - _For the Flash Player debugger version or the AIR Debug Launcher - (ADL) only._ - - - - - - - Replaces the contents of the Clipboard with a specified text string. This - method works from any security context when called as a result of a user - event(such as a keyboard or input device event handler). - - This method is provided for SWF content running in Flash Player 9. It - allows only adding String content to the Clipboard. - - Flash Player 10 content and content in the application security sandbox - in an AIR application can call the `Clipboard.setData()` - method. - - @param string A plain-text string of characters to put on the system - Clipboard, replacing its current contents(if any). - - - - - - - - - - - - - The System class contains properties related to local settings and - operations. Among these are settings for camers and microphones, operations - with shared objects and the use of the Clipboard. - - Additional properties and methods are in other classes within the - openfl.system package: the Capabilities class, the IME class, and the - Security class. - - This class contains only static methods and properties. You cannot - create new instances of the System class. - - - "tags=\"haxe,release\"" - - - - - - - - - The TouchscreenType class is an enumeration class that provides values for - the different types of touch screens. - Use the values defined by the TouchscreenType class with the - `Capabilities.touchscreenType` property. - - - - - - cast 0 - - - - A touchscreen designed to respond to finger touches. - - - - - cast 1 - - - - The computer or device does not have a supported touchscreen. - - - - - cast 2 - - - - A touchscreen designed for use with a stylus. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - A touchscreen designed to respond to finger touches. - - - - - cast 1 - - - - The computer or device does not have a supported touchscreen. - - - - - cast 2 - - - - A touchscreen designed for use with a stylus. - - - - - - - - - - - - - - - - - - - - - - The AntiAliasType class provides values for anti-aliasing in the - openfl.text.TextField class. - - - - - - cast 0 - - - - Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing - allows font faces to be rendered at very high quality at small sizes. It - is best used with applications that have a lot of small text. Advanced - anti-aliasing is not recommended for very large fonts(larger than 48 - points). This constant is used for the `antiAliasType` property - in the TextField class. Use the syntax - `AntiAliasType.ADVANCED`. - - - - - cast 1 - - - - Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and - earlier. This setting is recommended for applications that do not have a - lot of text. This constant is used for the `antiAliasType` - property in the TextField class. Use the syntax - `AntiAliasType.NORMAL`. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing - allows font faces to be rendered at very high quality at small sizes. It - is best used with applications that have a lot of small text. Advanced - anti-aliasing is not recommended for very large fonts(larger than 48 - points). This constant is used for the `antiAliasType` property - in the TextField class. Use the syntax - `AntiAliasType.ADVANCED`. - - - - - cast 1 - - - - Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and - earlier. This setting is recommended for applications that do not have a - lot of text. This constant is used for the `antiAliasType` - property in the TextField class. Use the syntax - `AntiAliasType.NORMAL`. - - - - - - - - - - - - - - - - - - - - - - The FontStyle class provides values for the TextRenderer class. - - - - - - cast 0 - - - - Defines the bold style of a font for the `fontStyle` parameter - in the `setAdvancedAntiAliasingTable()` method. Use the syntax - `FontStyle.BOLD`. - - - - - cast 1 - - - - Defines the italic style of a font for the `fontStyle` - parameter in the `setAdvancedAntiAliasingTable()` method. Use - the syntax `FontStyle.ITALIC`. - - - - - cast 2 - - - - Defines the italic style of a font for the `fontStyle` - parameter in the `setAdvancedAntiAliasingTable()` method. Use - the syntax `FontStyle.ITALIC`. - - - - - cast 3 - - - - Defines the plain style of a font for the `fontStyle` parameter - in the `setAdvancedAntiAliasingTable()` method. Use the syntax - `FontStyle.REGULAR`. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Defines the bold style of a font for the `fontStyle` parameter - in the `setAdvancedAntiAliasingTable()` method. Use the syntax - `FontStyle.BOLD`. - - - - - cast 1 - - - - Defines the italic style of a font for the `fontStyle` - parameter in the `setAdvancedAntiAliasingTable()` method. Use - the syntax `FontStyle.ITALIC`. - - - - - cast 2 - - - - Defines the italic style of a font for the `fontStyle` - parameter in the `setAdvancedAntiAliasingTable()` method. Use - the syntax `FontStyle.ITALIC`. - - - - - cast 3 - - - - Defines the plain style of a font for the `fontStyle` parameter - in the `setAdvancedAntiAliasingTable()` method. Use the syntax - `FontStyle.REGULAR`. - - - - - - - - - - - - - - - - - - - - - - The FontType class contains the enumerated constants - `"embedded"` and `"device"` for the - `fontType` property of the Font class. - - - - - - cast 0 - - - - Indicates that this is a device font. The SWF file renders fonts with - those installed on the system. - - Using device fonts results in a smaller movie size, because font data - is not included in the file. Device fonts are often a good choice for - displaying text at small point sizes, because anti-aliased text can be - blurry at small sizes. Device fonts are also a good choice for large - blocks of text, such as scrolling text. - - Text fields that use device fonts may not be displayed the same across - different systems and platforms, because they are rendered with fonts - installed on the system. For the same reason, device fonts are not - anti-aliased and may appear jagged at large point sizes. - - - - - cast 1 - - - - Indicates that this is an embedded font. Font outlines are embedded in the - published SWF file. - - Text fields that use embedded fonts are always displayed in the chosen - font, whether or not that font is installed on the playback system. Also, - text fields that use embedded fonts are always anti-aliased(smoothed). - You can select the amount of anti-aliasing you want by using the - `TextField.antiAliasType property`. - - One drawback to embedded fonts is that they increase the size of the - SWF file. - - Fonts of type `EMBEDDED` can only be used by TextField. If - flash.text.engine classes are directed to use such a font they will fall - back to device fonts. - - - - - cast 2 - - - - Indicates that this is an embedded CFF font. Font outlines and a subset of - OpenType tables are embedded in the published SWF file. - - Text that uses embedded CFF fonts is always displayed in the chosen font, whether - or not that font is installed on the playback system. Also, text that uses - embedded CFF fonts is always anti-aliased (smoothed) by Flash Player. You can - select the rendering mode and hinting for an embedded CFF font using the - `flash.text.engine.FontDescription.renderingMode` and - `flash.text.engine.FontDescription.cffHinting` properties. - - One drawback to embedded CFF fonts is that they increase the size of the SWF file. - However, embedded CFF fonts are typically 20% to 30% smaller than regular - embedded fonts. - - Fonts of type EMBEDDED_CFF can only be used by the `flash.text.engine` classes. A - TextField directed to use such a font will fail to render. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Indicates that this is a device font. The SWF file renders fonts with - those installed on the system. - - Using device fonts results in a smaller movie size, because font data - is not included in the file. Device fonts are often a good choice for - displaying text at small point sizes, because anti-aliased text can be - blurry at small sizes. Device fonts are also a good choice for large - blocks of text, such as scrolling text. - - Text fields that use device fonts may not be displayed the same across - different systems and platforms, because they are rendered with fonts - installed on the system. For the same reason, device fonts are not - anti-aliased and may appear jagged at large point sizes. - - - - - cast 1 - - - - Indicates that this is an embedded font. Font outlines are embedded in the - published SWF file. - - Text fields that use embedded fonts are always displayed in the chosen - font, whether or not that font is installed on the playback system. Also, - text fields that use embedded fonts are always anti-aliased(smoothed). - You can select the amount of anti-aliasing you want by using the - `TextField.antiAliasType property`. - - One drawback to embedded fonts is that they increase the size of the - SWF file. - - Fonts of type `EMBEDDED` can only be used by TextField. If - flash.text.engine classes are directed to use such a font they will fall - back to device fonts. - - - - - cast 2 - - - - Indicates that this is an embedded CFF font. Font outlines and a subset of - OpenType tables are embedded in the published SWF file. - - Text that uses embedded CFF fonts is always displayed in the chosen font, whether - or not that font is installed on the playback system. Also, text that uses - embedded CFF fonts is always anti-aliased (smoothed) by Flash Player. You can - select the rendering mode and hinting for an embedded CFF font using the - `flash.text.engine.FontDescription.renderingMode` and - `flash.text.engine.FontDescription.cffHinting` properties. - - One drawback to embedded CFF fonts is that they increase the size of the SWF file. - However, embedded CFF fonts are typically 20% to 30% smaller than regular - embedded fonts. - - Fonts of type EMBEDDED_CFF can only be used by the `flash.text.engine` classes. A - TextField directed to use such a font will fail to render. - - - - - - - - - - - - - - - - - - - - - - The GridFitType class defines values for grid fitting in the TextField - class. - - - - - - cast 0 - - - - Doesn't set grid fitting. Horizontal and vertical lines in the glyphs - are not forced to the pixel grid. This constant is used in setting the - `gridFitType` property of the TextField class. This is often a good - setting for animation or for large font sizes. Use the syntax - `GridFitType.NONE`. - - - - - cast 1 - - - - Fits strong horizontal and vertical lines to the pixel grid. This - constant is used in setting the `gridFitType` property of the - TextField class. This setting only works for left-justified text - fields and acts like the `GridFitType.SUBPIXEL` constant in static - text. This setting generally provides the best readability for - left-aligned text. Use the syntax `GridFitType.PIXEL`. - - - - - cast 2 - - - - Fits strong horizontal and vertical lines to the sub-pixel grid on LCD - monitors. (Red, green, and blue are actual pixels on an LCD screen.) - This is often a good setting for right-aligned or center-aligned - dynamic text, and it is sometimes a useful tradeoff for animation vs. - text quality. This constant is used in setting the `gridFitType` - property of the TextField class. Use the syntax - `GridFitType.SUBPIXEL`. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Doesn't set grid fitting. Horizontal and vertical lines in the glyphs - are not forced to the pixel grid. This constant is used in setting the - `gridFitType` property of the TextField class. This is often a good - setting for animation or for large font sizes. Use the syntax - `GridFitType.NONE`. - - - - - cast 1 - - - - Fits strong horizontal and vertical lines to the pixel grid. This - constant is used in setting the `gridFitType` property of the - TextField class. This setting only works for left-justified text - fields and acts like the `GridFitType.SUBPIXEL` constant in static - text. This setting generally provides the best readability for - left-aligned text. Use the syntax `GridFitType.PIXEL`. - - - - - cast 2 - - - - Fits strong horizontal and vertical lines to the sub-pixel grid on LCD - monitors. (Red, green, and blue are actual pixels on an LCD screen.) - This is often a good setting for right-aligned or center-aligned - dynamic text, and it is sometimes a useful tradeoff for animation vs. - text quality. This constant is used in setting the `gridFitType` - property of the TextField class. Use the syntax - `GridFitType.SUBPIXEL`. - - - - - - - - - - - - - - - - - - - - <__supportedStyles expr="["color", "display", "font-family", "font-size", "font-style", "font-weight", "kerning", "leading", "letter-spacing", "margin-left", "margin-right", "text-align", "text-decoration", "text-indent"]" line="54" static="1"> - - - ["color", "display", "font-family", "font-size", "font-style", "font-weight", "kerning", "leading", "letter-spacing", "margin-left", "margin-right", "text-align", "text-decoration", "text-indent"] - - - - - - An array that contains the names (as strings) of all of the styles registered in this style sheet. - - <__styleNames> - - - - <__styleNamesDirty> - - - - <__styles> - - - - - - - - - Removes all styles from the style sheet object. - - - - - - - Returns a copy of the style object associated with the style named `styleName`. - If there is no style object associated with `styleName`, `null` is returned. - - @param styleName A string that specifies the name of the style to retrieve. - @return An object. - - - - - - - Parses the CSS in `CSSText` and loads the style sheet with it. If a style - in `CSSText` is already in `styleSheet`, the properties in `styleSheet` are - retained, and only the ones in `CSSText` are added or changed in `styleSheet`. - - To extend the native CSS parsing capability, you can override this method - by creating a subclass of the StyleSheet class. - - @param CSSText The CSS text to parse (a string). - - - - - - - - Adds a new style with the specified name to the style sheet object. If - the named style does not already exist in the style sheet, it is added. - If the named style already exists in the style sheet, it is replaced. - If the styleObject parameter is null, the named style is removed. - - Flash Player creates a copy of the style object that you pass to this method. - - For a list of supported styles, see the table in the description for the - StyleSheet class. - - @param styleName A string that specifies the name of the style to add to the style sheet. - @param styleObject An object that describes the style, or `null`. - - - - - - - Extends the CSS parsing capability. Advanced developers can override this - method by extending the StyleSheet class. - - @param formatObject An object that describes the style, containing style rules as properties of the object, or `null`. - @return A TextFormat object containing the result of the mapping of CSS rules to text format properties. - - <__applyStyle set="method" line="222"> - - - - - - - - <__applyStyleObject set="method" line="232"> - - - - - - - - <__parseFont set="method" line="334"> - - - - - - - - - - - - - Creates a new StyleSheet object. - - The StyleSheet class lets you create a StyleSheet object that contains text formatting rules - for font size, color, and other styles. You can then apply styles defined by a style sheet to - a TextField object that contains HTML- or XML-formatted text. The text in the TextField object - is automatically formatted according to the tag styles defined by the StyleSheet object. You - can use text styles to define new formatting tags, redefine built-in HTML tags, or create style - classes that you can apply to certain HTML tags. - - To apply styles to a TextField object, assign the StyleSheet object to a TextField object's - `styleSheet` property. - - *Note:* A text field with a style sheet is not editable. In other words, a text field with the - type property set to TextFieldType.INPUT applies the StyleSheet to the default text for the text - field, but the content will no longer be editable by the user. Consider using the TextFormat - class to assign styles to input text fields. - - Flash Player supports a subset of properties in the original CSS1 specification - ([https://www.w3.org/TR/REC-CSS1](www.w3.org/TR/REC-CSS1)). The following table shows the - supported Cascading Style Sheet (CSS) properties and values, as well as their corresponding - Haxe property names. (Each Haxe property name is derived from the corresponding - CSS property name; if the name contains a hyphen, the hyphen is omitted and the subsequent - character is capitalized.) - - | CSS property | Haxe property | Usage and supported values | - | --- | --- | --- | - | `color` | `color` | Only hexadecimal color values are supported. Named colors (such as blue) are not supported. Colors are written in the following format: `#FF0000`. | - | `display` | `display` | Supported values are `inline`, `block`, and `none`. | - | `font-family` | `fontFamily` | A comma-separated list of fonts to use, in descending order of desirability. Any font family name can be used. If you specify a generic font name, it is converted to an appropriate device font. The following font conversions are available: `mono` is converted to `_typewriter`, `sans-serif` is converted to `_sans`, and `serif` is converted to `_serif`. | - | `font-size` | `fontSize` | Only the numeric part of the value is used. Units (px, pt) are not parsed; pixels and points are equivalent. | - | `font-style` | `fontStyle` | Recognized values are `normal` and `italic`. | - | `font-weight` | `fontWeight` | Recognized values are `normal` and `bold`. | - | `kerning` | `kerning` | Recognized values are `true` and `false`. Kerning is supported for embedded fonts only. Certain fonts, such as Courier New, do not support kerning. The kerning property is only supported in SWF files created in Windows, not in SWF files created on the Macintosh. However, these SWF files can be played in non-Windows versions of Flash Player and the kerning still applies. | - | `leading` | `leading` | The amount of space that is uniformly distributed between lines. The value specifies the number of pixels that are added after each line. A negative value condenses the space between lines. Only the numeric part of the value is used. Units (px, pt) are not parsed; pixels and points are equivalent. | - | `letter-spacing` | `letterSpacing` | The amount of space that is uniformly distributed between characters. The value specifies the number of pixels that are added after each character. A negative value condenses the space between characters. Only the numeric part of the value is used. Units (px, pt) are not parsed; pixels and points are equivalent. | - | `margin-left` | `marginLeft` | Only the numeric part of the value is used. Units (px, pt) are not parsed; pixels and points are equivalent. | - | `text-align` | `textAlign` | Recognized values are `left`, `center`, `right`, and `justify`. | - | `text-decoration` | `textDecoration` | Recognized values are `none` and `underline`. | - | `text-indent` | `textIndent` | Only the numeric part of the value is used. Units (px, pt) are not parsed; pixels and points are equivalent. | - - - - - - The TextFieldAutoSize class is an enumeration of constant values used in - setting the `autoSize` property of the TextField class. - - -

      - - - cast 0 - - - - Specifies that the text is to be treated as center-justified text. Any - resizing of a single line of a text field is equally distributed to both - the right and left sides. -
      - - - - cast 1 - - - - Specifies that the text is to be treated as left-justified text, meaning - that the left side of the text field remains fixed and any resizing of a - single line is on the right side. - - - - - cast 2 - - - - Specifies that no resizing is to occur. - - - - - cast 3 - - - - Specifies that the text is to be treated as right-justified text, meaning - that the right side of the text field remains fixed and any resizing of a - single line is on the left side. - - - - - - - - - - - - - - - - -
      - - -
      - - - cast 0 - - - - Specifies that the text is to be treated as center-justified text. Any - resizing of a single line of a text field is equally distributed to both - the right and left sides. -
      - - - - cast 1 - - - - Specifies that the text is to be treated as left-justified text, meaning - that the left side of the text field remains fixed and any resizing of a - single line is on the right side. - - - - - cast 2 - - - - Specifies that no resizing is to occur. - - - - - cast 3 - - - - Specifies that the text is to be treated as right-justified text, meaning - that the right side of the text field remains fixed and any resizing of a - single line is on the left side. - - - - - - - - - - - - - - - - -
      - - - - - The TextFieldType class is an enumeration of constant values used in - setting the `type` property of the TextField class. - - - - - - cast 0 - - - - Used to specify a `dynamic` TextField. - - - - - cast 1 - - - - Used to specify an `input` TextField. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Used to specify a `dynamic` TextField. - - - - - cast 1 - - - - Used to specify an `input` TextField. - - - - - - - - - - - - - - - - - - - - - Indicates the alignment of the paragraph. Valid values are TextFormatAlign - constants. - - @default TextFormatAlign.LEFT - @throws ArgumentError The `align` specified is not a member of - openfl.text.TextFormatAlign. - - - - Indicates the block indentation in pixels. Block indentation is applied to - an entire block of text; that is, to all lines of the text. In contrast, - normal indentation(`TextFormat.indent`) affects only the first - line of each paragraph. If this property is `null`, the - TextFormat object does not specify block indentation(block indentation is - 0). - - - - Specifies whether the text is boldface. The default value is - `null`, which means no boldface is used. If the value is - `true`, then the text is boldface. - - - - Indicates that the text is part of a bulleted list. In a bulleted list, - each paragraph of text is indented. To the left of the first line of each - paragraph, a bullet symbol is displayed. The default value is - `null`, which means no bulleted list is used. - - - - Indicates the color of the text. A number containing three 8-bit RGB - components; for example, 0xFF0000 is red, and 0x00FF00 is green. The - default value is `null`, which means that Flash Player uses the - color black(0x000000). - - - - The name of the font for text in this text format, as a string. The - default value is `null`, which means that Flash Player uses - Times New Roman font for the text. - - - - Indicates the indentation from the left margin to the first character in - the paragraph. The default value is `null`, which indicates - that no indentation is used. - - - - Indicates whether text in this text format is italicized. The default - value is `null`, which means no italics are used. - - - - A Boolean value that indicates whether kerning is enabled - (`true`) or disabled(`false`). Kerning adjusts the - pixels between certain character pairs to improve readability, and should - be used only when necessary, such as with headings in large fonts. Kerning - is supported for embedded fonts only. - - Certain fonts such as Verdana and monospaced fonts, such as Courier - New, do not support kerning. - - The default value is `null`, which means that kerning is not - enabled. - - - - An integer representing the amount of vertical space(called - _leading_) between lines. The default value is `null`, - which indicates that the amount of leading used is 0. - - - - The left margin of the paragraph, in pixels. The default value is - `null`, which indicates that the left margin is 0 pixels. - - - - A number representing the amount of space that is uniformly distributed - between all characters. The value specifies the number of pixels that are - added to the advance after each character. The default value is - `null`, which means that 0 pixels of letter spacing is used. - You can use decimal values such as `1.75`. - - - - The right margin of the paragraph, in pixels. The default value is - `null`, which indicates that the right margin is 0 pixels. - - - - The size in pixels of text in this text format. The default value is - `null`, which means that a size of 12 is used. - - - - Specifies custom tab stops as an array of non-negative integers. Each tab - stop is specified in pixels. If custom tab stops are not specified - (`null`), the default tab stop is 4(average character width). - - - - Indicates the target window where the hyperlink is displayed. If the - target window is an empty string, the text is displayed in the default - target window `_self`. You can choose a custom name or one of - the following four names: `_self` specifies the current frame - in the current window, `_blank` specifies a new window, - `_parent` specifies the parent of the current frame, and - `_top` specifies the top-level frame in the current window. If - the `TextFormat.url` property is an empty string or - `null`, you can get or set this property, but the property will - have no effect. - - - - ` tag, but the latter is - not true underlining, because it does not skip descenders correctly. The - default value is `null`, which indicates that underlining is - not used.]]> - - - - Indicates the target URL for the text in this text format. If the - `url` property is an empty string, the text does not have a - hyperlink. The default value is `null`, which indicates that - the text does not have a hyperlink. - - **Note:** The text with the assigned text format must be set with - the `htmlText` property for the hyperlink to work. - - <__ascent> - - - - <__descent> - - - - <__cacheKey> - - - - - - - "checkstyle:FieldDocComment" - hide - - - - <__merge set="method" line="300"> - - - - - - - <__toCacheKey set="method" line="327"> - - - - - - - - - - - - - - - - - - - - - { leading : null, indent : null, rightMargin : null, leftMargin : null, align : null, target : null, url : null, underline : null, italic : null, bold : null, color : null, size : null, font : null } - Creates a TextFormat object with the specified properties. You can then - change the properties of the TextFormat object to change the formatting of - text fields. - - Any parameter may be set to `null` to indicate that it is - not defined. All of the parameters are optional; any omitted parameters - are treated as `null`. - - @param font The name of a font for text as a string. - @param size An integer that indicates the size in pixels. - @param color The color of text using this text format. A number - containing three 8-bit RGB components; for example, - 0xFF0000 is red, and 0x00FF00 is green. - @param bold A Boolean value that indicates whether the text is - boldface. - @param italic A Boolean value that indicates whether the text is - italicized. - @param underline A Boolean value that indicates whether the text is - underlined. - @param url The URL to which the text in this text format - hyperlinks. If `url` is an empty string, the - text does not have a hyperlink. - @param target The target window where the hyperlink is displayed. If - the target window is an empty string, the text is - displayed in the default target window - `_self`. If the `url` parameter - is set to an empty string or to the value - `null`, you can get or set this property, - but the property will have no effect. - @param align The alignment of the paragraph, as a TextFormatAlign - value. - @param leftMargin Indicates the left margin of the paragraph, in pixels. - @param rightMargin Indicates the right margin of the paragraph, in pixels. - @param indent An integer that indicates the indentation from the left - margin to the first character in the paragraph. - @param leading A number that indicates the amount of leading vertical - space between lines. - - The TextFormat class represents character formatting information. Use the - TextFormat class to create specific text formatting for text fields. You - can apply text formatting to both static and dynamic text fields. The - properties of the TextFormat class apply to device and embedded fonts. - However, for embedded fonts, bold and italic text actually require - specific fonts. If you want to display bold or italic text with an - embedded font, you need to embed the bold and italic variations of that - font. - - You must use the constructor `new TextFormat()` to create a TextFormat - object before setting its properties. When you apply a TextFormat object - to a text field using the `TextField.defaultTextFormat` property or the - `TextField.setTextFormat()` method, only its defined properties are - applied. Use the `TextField.defaultTextFormat` property to apply - formatting BEFORE you add text to the `TextField`, and the - `setTextFormat()` method to add formatting AFTER you add text to the - `TextField`. The TextFormat properties are `null` by default because if - you don't provide values for the properties, Flash Player uses its own - default formatting. The default formatting that Flash Player uses for each - property (if property's value is `null`) is as follows: - - | | | - | --- | --- | - | align = "left" | | - | blockIndent = 0 | | - | bold = false | | - | bullet = false | | - | color = 0x000000 | | - | font = "Times New Roman" (default font is Times on Mac OS X) | | - | indent = 0 | | - | italic = false | | - | kerning = false | | - | leading = 0 | | - | leftMargin = 0 | | - | letterSpacing = 0 | | - | rightMargin = 0 | | - | size = 12 | | - | tabStops = [] (empty array) | | - | target = "" (empty string) | | - | underline = false | | - | url = "" (empty string) | | - - The default formatting for each property is also described in each - property description. - - - "tags=\"haxe,release\"" - - - - - - - - The TextFormatAlign class provides values for text alignment in the - TextFormat class. - - -
      - - - cast 0 - - - - Constant; centers the text in the text field. Use the syntax - `TextFormatAlign.CENTER`. -
      - - - - cast 1 - - - - Constant; aligns text to the end edge of a line. Same as right for left-to-right - languages and same as left for right-to-left languages. - - The `END` constant may only be used with the StageText class. - - - - - cast 2 - - - - Constant; justifies text within the text field. Use the syntax - `TextFormatAlign.JUSTIFY`. - - - - - cast 3 - - - - Constant; aligns text to the left within the text field. Use the syntax - `TextFormatAlign.LEFT`. - - - - - cast 4 - - - - Constant; aligns text to the right within the text field. Use the syntax - `TextFormatAlign.RIGHT`. - - - - - cast 5 - - - - Constant; aligns text to the start edge of a line. Same as left for left-to-right - languages and same as right for right-to-left languages. - - The `START` constant may only be used with the StageText class. - - - - - - - - - - - - - - - - - - - -
      -
      - -
      - - - cast 0 - - - - Constant; centers the text in the text field. Use the syntax - `TextFormatAlign.CENTER`. -
      - - - - cast 1 - - - - Constant; aligns text to the end edge of a line. Same as right for left-to-right - languages and same as left for right-to-left languages. - - The `END` constant may only be used with the StageText class. - - - - - cast 2 - - - - Constant; justifies text within the text field. Use the syntax - `TextFormatAlign.JUSTIFY`. - - - - - cast 3 - - - - Constant; aligns text to the left within the text field. Use the syntax - `TextFormatAlign.LEFT`. - - - - - cast 4 - - - - Constant; aligns text to the right within the text field. Use the syntax - `TextFormatAlign.RIGHT`. - - - - - cast 5 - - - - Constant; aligns text to the start edge of a line. Same as left for left-to-right - languages and same as right for right-to-left languages. - - The `START` constant may only be used with the StageText class. - - - - - - - - - - - - - - - - - - - -
      - - - - The ascent value of the text is the length from the baseline to the - top of the line height in pixels. See the "Ascent" measurement in the - overview diagram for this class. - - - - The descent value of the text is the length from the baseline to the - bottom depth of the line in pixels. See the "Descent" measurement in - the overview diagram for this class. - - - - The height value of the text of the selected lines (not necessarily - the complete text) in pixels. The height of the text line does not - include the gutter height. See the "Line height" measurement in the - overview diagram for this class. - - - - The leading value is the measurement of the vertical distance between - the lines of text. See the "Leading" measurement in the overview - diagram for this class. - - - - The width value is the width of the text of the selected lines (not - necessarily the complete text) in pixels. The width of the text line - is not the same as the width of the text field. The width of the text - line is relative to the text field width, minus the gutter width of 4 - pixels (2 pixels on each side). See the "Text Line width" measurement - in the overview diagram for this class. - - - - The x value is the left position of the first character in pixels. - This value includes the margin, indent (if any), and gutter widths. - See the "Text Line x-position" in the overview diagram for this class. - - - - - - - - - - - - Creates a TextLineMetrics object. The TextLineMetrics object contains - information about the text metrics of a line of text in a text field. - Objects of this class are returned by the - openfl.text.TextField.getLineMetrics() method. - - @param x The left position of the first character in pixels. - @param width The width of the text of the selected lines (not - necessarily the complete text) in pixels. - @param height The height of the text of the selected lines (not - necessarily the complete text) in pixels. - @param ascent The length from the baseline to the top of the line - height in pixels. - @param descent The length from the baseline to the bottom depth of - the line in pixels. - @param leading The measurement of the vertical distance between the - lines of text. - - The TextLineMetrics class contains information about the text position and - measurements of a _line of text_ within a text field. All measurements are - in pixels. Objects of this class are returned by the - `openfl.text.TextField.getLineMetrics()` method. - For measurements related to the text field containing the line of text - (for example, the "Text Field height" measurement in the diagram), see - openfl.text.TextField. - - The following diagram indicates the points and measurements of a text - field and the line of text the field contains: - - ![An image illustrating text metrics](/images/text-metrics.jpg) - - - "tags=\"haxe,release\"" - - - - - - - - - [] - - - - [] - - - - new EReg("([\\s\\S]*?){([\\s\\S]*?)*}", "ig") - - - - "((@media [\\s\\S]*?){([\\s\\S]*?}\\s*?)})" - - - - "((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})" - - - - "((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)*?})" - - - - "(\\/\\*[\\s\\S]*?\\*\\/)" - - - - new EReg("@import .*?;", "ig") - - - - - - - - - - - - - - - - - { value : null } - - - - - - - - - { contains : false } - - - - - - - - - - - - - - - - - - - - - - - { reverse : false } - - - - - - - - - { reverse : false } - - - - - - - - - - - * Get Imports - * - - - - - - - - - - - - - { index : 0 } - - - - - - * ... - * @author Damilare Akinlaja - - - - <__collisions> - <__wordMap> - - - - - - - - - - - <__addCollision set="method" line="42"> - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - { offset : null } - - - - "tags=\"haxe,release\"" - - ["checkstyle:FieldDocComment", "checkstyle:Dynamic"] - - - - <__regexAlign expr="~/align\s?=\s?("([^"]+)"|'([^']+)')/" line="16" static="1"> - - ~/align\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexBreakTag expr="~/<br\s*/?>/" line="17" static="1"> - - /]]> - - <__regexBlockIndent expr="~/blockindent\s?=\s?("([^"]+)"|'([^']+)')/" line="18" static="1"> - - ~/blockindent\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexClass expr="~/class\s?=\s?("([^"]+)"|'([^']+)')/" line="19" static="1"> - - ~/class\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexColor expr="~/color\s?=\s?("#([^"]+)"|'#([^']+)')/" line="20" static="1"> - - ~/color\s?=\s?("#([^"]+)"|'#([^']+)')/ - - <__regexEntities expr="[~/&quot;/, ~/&apos;/, ~/&amp;/, ~/&lt;/, ~/&gt;/, ~/&nbsp;/]" line="21" static="1"> - - - - <__regexCharEntity expr="~/&#(?:([0-9]+)|(x[0-9a-fA-F]+));/" line="22" static="1"> - - - - <__regexFace expr="~/face\s?=\s?("([^"]+)"|'([^']+)')/" line="23" static="1"> - - ~/face\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexHTMLTag expr="~/<.*?>/" line="24" static="1"> - - /]]> - - <__regexHref expr="~/href\s?=\s?("([^"]+)"|'([^']+)')/" line="25" static="1"> - - ~/href\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexIndent expr="~/ indent\s?=\s?("([^"]+)"|'([^']+)')/" line="26" static="1"> - - ~/ indent\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexLeading expr="~/leading\s?=\s?("([^"]+)"|'([^']+)')/" line="27" static="1"> - - ~/leading\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexLeftMargin expr="~/leftmargin\s?=\s?("([^"]+)"|'([^']+)')/" line="28" static="1"> - - ~/leftmargin\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexRightMargin expr="~/rightmargin\s?=\s?("([^"]+)"|'([^']+)')/" line="29" static="1"> - - ~/rightmargin\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexSize expr="~/size\s?=\s?("([^"]+)"|'([^']+)')/" line="30" static="1"> - - ~/size\s?=\s?("([^"]+)"|'([^']+)')/ - - <__regexTabStops expr="~/tabstops\s?=\s?("([^"]+)"|'([^']+)')/" line="31" static="1"> - - ~/tabstops\s?=\s?("([^"]+)"|'([^']+)')/ - - - - - - - - - - <__getAttributeMatch set="method" line="308" static="1"> - - - - - - "tags=\"haxe,release\"" - - openfl.text.StyleSheet - "checkstyle:FieldDocComment" - - - - - - - - <__shortWordMap> - <__longWordMap> - - - - - - <__cacheShortWord set="method" line="53"> - - - - - - <__cacheLongWord set="method" line="76"> - - - - - - - - - "tags=\"haxe,release\"" - - openfl.text.TextFormat - "checkstyle:FieldDocComment" - - - - - - 2 - - - - 9 - - - - 10 - - - - 32 - - - - 0x2D - - <__defaultFonts static="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__cursorTimer> - - - - <__hasFocus> - - - - <__isKeyDown> - - - - <__measuredHeight> - - - - <__measuredWidth> - - - - <__restrictRegexp> - - - - <__selectionStart> - - - - <__shapeCache> - - - - <__showCursor> - - - - <__textFormat> - - - - <__textLayout> - - - - <__texture> - - - - <__useIntAdvances> - <__cairoFont public="1"> - - - "checkstyle:Dynamic" - - hide - - - <__font public="1"> - - - - hide - - - - - - - - - - - - - - - - - - { startIndex : 0 } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.text.Font - openfl.text.TextField - openfl.text.TextFormat - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - - { boldItalic : null, italic : null, bold : null } - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - 0 - - - - 1 - - - - 2 - - - - 4 - - - - 8 - - - - 16 - - - - 32 - - - - 64 - - - - 128 - - - - 256 - - - - 512 - - - - 1024 - - - - 2048 - - - - 4096 - - - - 8192 - - - - 16384 - - - - 32768 - - - - 65536 - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - 0 - - - - - - - - - <__buffer> - <__direction> - <__dirty> - <__handle> - - "checkstyle:Dynamic" - - <__language> - <__script> - <__font> - <__hbBuffer> - - "checkstyle:Dynamic" - - <__hbFont> - - "checkstyle:Dynamic" - - <__create set="method" line="89"> - - - - - - <__position set="method" line="101"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:Dynamic" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { language : "en", script : COMMON, direction : LEFT_TO_RIGHT, size : 12, font : null, text : "" } - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - "checkstyle:FieldDocComment" - - - - - - - cast 0 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - - - - - cast 4 - - - - - - - - cast 5 - - - - - - - - cast 6 - - - - - - - - cast 7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - - - - - - - cast "Zyyy" - - - - - - - - cast "Zinh" - - - - - - - - cast "Zzzz" - - - - - - - - cast "Arab" - - - - - - - - cast "Armn" - - - - - - - - cast "Beng" - - - - - - - - cast "Cyrl" - - - - - - - - cast "Deva" - - - - - - - - cast "Geor" - - - - - - - - cast "Grek" - - - - - - - - cast "Gujr" - - - - - - - - cast "Guru" - - - - - - - - cast "Hang" - - - - - - - - cast "Hani" - - - - - - - - cast "Hebr" - - - - - - - - cast "Hira" - - - - - - - - cast "Knda" - - - - - - - - cast "Kana" - - - - - - - - cast "Laoo" - - - - - - - - cast "Latn" - - - - - - - - cast "Mlym" - - - - - - - - cast "Orya" - - - - - - - - cast "Taml" - - - - - - - - cast "Telu" - - - - - - - - cast "Thai" - - - - - - - - cast "Tibt" - - - - - - - - cast "Bopo" - - - - - - - - cast "Brai" - - - - - - - - cast "Cans" - - - - - - - - cast "Cher" - - - - - - - - cast "Ethi" - - - - - - - - cast "Khmr" - - - - - - - - cast "Mong" - - - - - - - - cast "Mymr" - - - - - - - - cast "Ogam" - - - - - - - - cast "Runr" - - - - - - - - cast "Sinh" - - - - - - - - cast "Syrc" - - - - - - - - cast "Thaa" - - - - - - - - cast "Yiii" - - - - - - - - cast "Dsrt" - - - - - - - - cast "Goth" - - - - - - - - cast "Ital" - - - - - - - - cast "Buhd" - - - - - - - - cast "Hano" - - - - - - - - cast "Tglg" - - - - - - - - cast "Tagb" - - - - - - - - cast "Cprt" - - - - - - - - cast "Limb" - - - - - - - - cast "Linb" - - - - - - - - cast "Osma" - - - - - - - - cast "Shaw" - - - - - - - - cast "Tale" - - - - - - - - cast "Ugar" - - - - - - - - cast "Bugi" - - - - - - - - cast "Copt" - - - - - - - - cast "Glag" - - - - - - - - cast "Khar" - - - - - - - - cast "Talu" - - - - - - - - cast "Xpeo" - - - - - - - - cast "Sylo" - - - - - - - - cast "Tfng" - - - - - - - - cast "Bali" - - - - - - - - cast "Xsux" - - - - - - - - cast "Nkoo" - - - - - - - - cast "Phag" - - - - - - - - cast "Phnx" - - - - - - - - cast "Cari" - - - - - - - - cast "Cham" - - - - - - - - cast "Kali" - - - - - - - - cast "Lepc" - - - - - - - - cast "Lyci" - - - - - - - - cast "Lydi" - - - - - - - - cast "Olck" - - - - - - - - cast "Rjng" - - - - - - - - cast "Saur" - - - - - - - - cast "Sund" - - - - - - - - cast "Vaii" - - - - - - - - cast "Avst" - - - - - - - - cast "Bamu" - - - - - - - - cast "Egyp" - - - - - - - - cast "Armi" - - - - - - - - cast "Phli" - - - - - - - - cast "Prti" - - - - - - - - cast "Java" - - - - - - - - cast "Kthi" - - - - - - - - cast "Lisu" - - - - - - - - cast "Mtei" - - - - - - - - cast "Sarb" - - - - - - - - cast "Orkh" - - - - - - - - cast "Samr" - - - - - - - - cast "Lana" - - - - - - - - cast "Tavt" - - - - - - - - cast "Batk" - - - - - - - - cast "Brah" - - - - - - - - cast "Mand" - - - - - - - - cast "Cakm" - - - - - - - - cast "Merc" - - - - - - - - cast "Mero" - - - - - - - - cast "Plrd" - - - - - - - - cast "Shrd" - - - - - - - - cast "Sora" - - - - - - - - cast "Takr" - - - - - - - - cast "Bass" - - - - - - - - cast "Aghb" - - - - - - - - cast "Dupl" - - - - - - - - cast "Elba" - - - - - - - - cast "Gran" - - - - - - - - cast "Khoj" - - - - - - - - cast "Sind" - - - - - - - - cast "Lina" - - - - - - - - cast "Mahj" - - - - - - - - cast "Mani" - - - - - - - - cast "Mend" - - - - - - - - cast "Modi" - - - - - - - - cast "Mroo" - - - - - - - - cast "Nbat" - - - - - - - - cast "Narb" - - - - - - - - cast "Perm" - - - - - - - - cast "Hmng" - - - - - - - - cast "Palm" - - - - - - - - cast "Pauc" - - - - - - - - cast "Phlp" - - - - - - - - cast "Sidd" - - - - - - - - cast "Tirh" - - - - - - - - cast "Wara" - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "Zyyy" - - - - - - - - cast "Zinh" - - - - - - - - cast "Zzzz" - - - - - - - - cast "Arab" - - - - - - - - cast "Armn" - - - - - - - - cast "Beng" - - - - - - - - cast "Cyrl" - - - - - - - - cast "Deva" - - - - - - - - cast "Geor" - - - - - - - - cast "Grek" - - - - - - - - cast "Gujr" - - - - - - - - cast "Guru" - - - - - - - - cast "Hang" - - - - - - - - cast "Hani" - - - - - - - - cast "Hebr" - - - - - - - - cast "Hira" - - - - - - - - cast "Knda" - - - - - - - - cast "Kana" - - - - - - - - cast "Laoo" - - - - - - - - cast "Latn" - - - - - - - - cast "Mlym" - - - - - - - - cast "Orya" - - - - - - - - cast "Taml" - - - - - - - - cast "Telu" - - - - - - - - cast "Thai" - - - - - - - - cast "Tibt" - - - - - - - - cast "Bopo" - - - - - - - - cast "Brai" - - - - - - - - cast "Cans" - - - - - - - - cast "Cher" - - - - - - - - cast "Ethi" - - - - - - - - cast "Khmr" - - - - - - - - cast "Mong" - - - - - - - - cast "Mymr" - - - - - - - - cast "Ogam" - - - - - - - - cast "Runr" - - - - - - - - cast "Sinh" - - - - - - - - cast "Syrc" - - - - - - - - cast "Thaa" - - - - - - - - cast "Yiii" - - - - - - - - cast "Dsrt" - - - - - - - - cast "Goth" - - - - - - - - cast "Ital" - - - - - - - - cast "Buhd" - - - - - - - - cast "Hano" - - - - - - - - cast "Tglg" - - - - - - - - cast "Tagb" - - - - - - - - cast "Cprt" - - - - - - - - cast "Limb" - - - - - - - - cast "Linb" - - - - - - - - cast "Osma" - - - - - - - - cast "Shaw" - - - - - - - - cast "Tale" - - - - - - - - cast "Ugar" - - - - - - - - cast "Bugi" - - - - - - - - cast "Copt" - - - - - - - - cast "Glag" - - - - - - - - cast "Khar" - - - - - - - - cast "Talu" - - - - - - - - cast "Xpeo" - - - - - - - - cast "Sylo" - - - - - - - - cast "Tfng" - - - - - - - - cast "Bali" - - - - - - - - cast "Xsux" - - - - - - - - cast "Nkoo" - - - - - - - - cast "Phag" - - - - - - - - cast "Phnx" - - - - - - - - cast "Cari" - - - - - - - - cast "Cham" - - - - - - - - cast "Kali" - - - - - - - - cast "Lepc" - - - - - - - - cast "Lyci" - - - - - - - - cast "Lydi" - - - - - - - - cast "Olck" - - - - - - - - cast "Rjng" - - - - - - - - cast "Saur" - - - - - - - - cast "Sund" - - - - - - - - cast "Vaii" - - - - - - - - cast "Avst" - - - - - - - - cast "Bamu" - - - - - - - - cast "Egyp" - - - - - - - - cast "Armi" - - - - - - - - cast "Phli" - - - - - - - - cast "Prti" - - - - - - - - cast "Java" - - - - - - - - cast "Kthi" - - - - - - - - cast "Lisu" - - - - - - - - cast "Mtei" - - - - - - - - cast "Sarb" - - - - - - - - cast "Orkh" - - - - - - - - cast "Samr" - - - - - - - - cast "Lana" - - - - - - - - cast "Tavt" - - - - - - - - cast "Batk" - - - - - - - - cast "Brah" - - - - - - - - cast "Mand" - - - - - - - - cast "Cakm" - - - - - - - - cast "Merc" - - - - - - - - cast "Mero" - - - - - - - - cast "Plrd" - - - - - - - - cast "Shrd" - - - - - - - - cast "Sora" - - - - - - - - cast "Takr" - - - - - - - - cast "Bass" - - - - - - - - cast "Aghb" - - - - - - - - cast "Dupl" - - - - - - - - cast "Elba" - - - - - - - - cast "Gran" - - - - - - - - cast "Khoj" - - - - - - - - cast "Sind" - - - - - - - - cast "Lina" - - - - - - - - cast "Mahj" - - - - - - - - cast "Mani" - - - - - - - - cast "Mend" - - - - - - - - cast "Modi" - - - - - - - - cast "Mroo" - - - - - - - - cast "Nbat" - - - - - - - - cast "Narb" - - - - - - - - cast "Perm" - - - - - - - - cast "Hmng" - - - - - - - - cast "Palm" - - - - - - - - cast "Pauc" - - - - - - - - cast "Phlp" - - - - - - - - cast "Sidd" - - - - - - - - cast "Tirh" - - - - - - - - cast "Wara" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - Returns the GameInputDevice object that contains this control. - - - - Returns the id of this control. - - - - Returns the maximum value for this control. - - - - Returns the minimum value for this control. - - - - Returns the value for this control. - - - - - - - - - - - - { value : 0 } - - - - - - "tags=\"haxe,release\"" - - - - - - - 32000 - Specifies the maximum size for the buffer used to cache sampled control values. - If `startCachingSamples` returns samples that require more memory than you specify, - it throws a memory error. - - - - Enables or disables this device. - - - - Returns the ID of this device. - - - - Returns the name of this device. - - - - Returns the number of controls on this device. - - - - Specifies the rate (in milliseconds) at which to retrieve control values. - - <__axis expr="new Map()"> - - - - - - new Map() - - - - <__button expr="new Map()"> - - - - - - new Map() - - - - <__controls expr="new Array()"> - - - new Array() - - - - <__gamepad> - - - - - - - - - - { append : false } - Writes cached sample values to the ByteArray. - @param data - @param append - @return - - - - - - - Retrieves a specific control from a device. - @param i - @return - - - - - - - - Requests this device to start keeping a cache of sampled values. - @param numSamples - @param controls - - - - Stops sample caching. - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - openfl.ui.GameInputControl - - - - - - - - - - - - - - The KeyLocation class contains constants that indicate the location of a - key pressed on the keyboard or keyboard-like input device. - The KeyLocation constants are used in the `KeyboardEvent.keyLocation` - property. - - - - - - cast 1 - - - - Indicates the key activated is in the left key location (there is more - than one possible location for this key). Example: The left Shift key - on a PC 101 Key US keyboard. - - - - - cast 3 - - - - Indicates the key activation originated on the numeric keypad or with a virtual - key corresponding to the numeric keypad. Example: The 1 key on a PC 101 Key US - keyboard located on the numeric pad. - - - - - cast 2 - - - - Indicates the key activated is in the right key location (there is - more than one possible location for this key). Example: The right - Shift key on a PC 101 Key US keyboard. - - - - - cast 0 - - - - Indicates the key activation is not distinguished as the left or right - version of the key, and did not originate on the numeric keypad (or - did not originate with a virtual key corresponding to the numeric - keypad). Example: The Q key on a PC 101 Key US keyboard. - - - - - - - - - cast 1 - - - - Indicates the key activated is in the left key location (there is more - than one possible location for this key). Example: The left Shift key - on a PC 101 Key US keyboard. - - - - - cast 3 - - - - Indicates the key activation originated on the numeric keypad or with a virtual - key corresponding to the numeric keypad. Example: The 1 key on a PC 101 Key US - keyboard located on the numeric pad. - - - - - cast 2 - - - - Indicates the key activated is in the right key location (there is - more than one possible location for this key). Example: The right - Shift key on a PC 101 Key US keyboard. - - - - - cast 0 - - - - Indicates the key activation is not distinguished as the left or right - version of the key, and did not originate on the numeric keypad (or - did not originate with a virtual key corresponding to the numeric - keypad). Example: The Q key on a PC 101 Key US keyboard. - - - - - - - 48 - Constant associated with the key code value for the 0 key(48). - - - - 49 - Constant associated with the key code value for the 1 key(49). - - - - 50 - Constant associated with the key code value for the 2 key(50). - - - - 51 - Constant associated with the key code value for the 3 key(51). - - - - 52 - Constant associated with the key code value for the 4 key(52). - - - - 53 - Constant associated with the key code value for the 5 key(53). - - - - 54 - Constant associated with the key code value for the 6 key(54). - - - - 55 - Constant associated with the key code value for the 7 key(55). - - - - 56 - Constant associated with the key code value for the 8 key(56). - - - - 57 - Constant associated with the key code value for the 9 key(57). - - - - 65 - Constant associated with the key code value for the A key(65). - - - - 66 - Constant associated with the key code value for the B key(66). - - - - 67 - Constant associated with the key code value for the C key(67). - - - - 68 - Constant associated with the key code value for the D key(68). - - - - 69 - Constant associated with the key code value for the E key(69). - - - - 70 - Constant associated with the key code value for the F key(70). - - - - 71 - Constant associated with the key code value for the G key(71). - - - - 72 - Constant associated with the key code value for the H key(72). - - - - 73 - Constant associated with the key code value for the I key(73). - - - - 74 - Constant associated with the key code value for the J key(74). - - - - 75 - Constant associated with the key code value for the K key(75). - - - - 76 - Constant associated with the key code value for the L key(76). - - - - 77 - Constant associated with the key code value for the M key(77). - - - - 78 - Constant associated with the key code value for the N key(78). - - - - 79 - Constant associated with the key code value for the O key(79). - -

      - - 80 - Constant associated with the key code value for the P key(80). -

      - - - 81 - Constant associated with the key code value for the Q key(81). - - - - 82 - Constant associated with the key code value for the R key(82). - - - - 83 - Constant associated with the key code value for the S key(83). - - - - 84 - Constant associated with the key code value for the T key(84). - - - - 85 - Constant associated with the key code value for the U key(85). - - - - 86 - Constant associated with the key code value for the V key(85). - - - - 87 - Constant associated with the key code value for the W key(87). - - - - 88 - Constant associated with the key code value for the X key(88). - - - - 89 - Constant associated with the key code value for the Y key(89). - - - - 90 - Constant associated with the key code value for the Z key(90). - - - - 96 - Constant associated with the key code value for the number 0 key on the - number pad(96). - - - - 97 - Constant associated with the key code value for the number 1 key on the - number pad(97). - - - - 98 - Constant associated with the key code value for the number 2 key on the - number pad(98). - - - - 99 - Constant associated with the key code value for the number 3 key on the - number pad(99). - - - - 100 - Constant associated with the key code value for the number 4 key on the - number pad(100). - - - - 101 - Constant associated with the key code value for the number 5 key on the - number pad(101). - - - - 102 - Constant associated with the key code value for the number 6 key on the - number pad(102). - - - - 103 - Constant associated with the key code value for the number 7 key on the - number pad(103). - - - - 104 - Constant associated with the key code value for the number 8 key on the - number pad(104). - - - - 105 - Constant associated with the key code value for the number 9 key on the - number pad(105). - - - - 106 - Constant associated with the key code value for the multiplication key on - the number pad(106). - - - - 107 - Constant associated with the key code value for the addition key on the - number pad(107). - - - - 108 - Constant associated with the key code value for the Enter key on the - number pad(108). - - - - 109 - Constant associated with the key code value for the subtraction key on the - number pad(109). - - - - 110 - Constant associated with the key code value for the decimal key on the - number pad(110). - - - - 111 - Constant associated with the key code value for the division key on the - number pad(111). - - - - 112 - Constant associated with the key code value for the F1 key(112). - - - - 113 - Constant associated with the key code value for the F2 key(113). - - - - 114 - Constant associated with the key code value for the F3 key(114). - - - - 115 - Constant associated with the key code value for the F4 key(115). - - - - 116 - Constant associated with the key code value for the F5 key(116). - - - - 117 - Constant associated with the key code value for the F6 key(117). - - - - 118 - Constant associated with the key code value for the F7 key(118). - - - - 119 - Constant associated with the key code value for the F8 key(119). - - - - 120 - Constant associated with the key code value for the F9 key(120). - - - - 121 - Constant associated with the key code value for the F10 key(121). - - - - 122 - Constant associated with the key code value for the F11 key(122). - - - - 123 - Constant associated with the key code value for the F12 key(123). - - - - 124 - Constant associated with the key code value for the F13 key(124). - - - - 125 - Constant associated with the key code value for the F14 key(125). - - - - 126 - Constant associated with the key code value for the F15 key(126). - - - - 8 - Constant associated with the key code value for the Backspace key(8). - - - - 9 - Constant associated with the key code value for the Tab key(9). - - - - 18 - Constant associated with the key code value for the Alternate(Option) key - (18). - - - - 13 - Constant associated with the key code value for the Enter key(13). - - - - 15 - Constant associated with the Mac command key(15). This constant is - currently only used for setting menu key equivalents. - - - - 16 - Constant associated with the key code value for the Shift key(16). - - - - 17 - Constant associated with the key code value for the Control key(17). - - - - - 19 - "checkstyle:FieldDocComment" - - hide - - - - - 20 - Constant associated with the key code value for the Caps Lock key(20). - - - - 21 - Constant associated with the pseudo-key code for the the number pad(21). - Use to set numpad modifier on key equivalents - - - - 27 - Constant associated with the key code value for the Escape key(27). - - - - 32 - Constant associated with the key code value for the Spacebar(32). - - - - 33 - Constant associated with the key code value for the Page Up key(33). - - - - 34 - Constant associated with the key code value for the Page Down key(34). - - - - 35 - Constant associated with the key code value for the End key(35). - - - - 36 - Constant associated with the key code value for the Home key(36). - - - - 37 - Constant associated with the key code value for the Left Arrow key(37). - - - - 39 - Constant associated with the key code value for the Right Arrow key(39). - - - - 38 - Constant associated with the key code value for the Up Arrow key(38). - - - - 40 - Constant associated with the key code value for the Down Arrow key(40). - - - - 45 - Constant associated with the key code value for the Insert key(45). - - - - 46 - Constant associated with the key code value for the Delete key(46). - - - - - 144 - "checkstyle:FieldDocComment" - - hide - - - - - 186 - Constant associated with the key code value for the ; key(186). - - - - 187 - Constant associated with the key code value for the:Int = key(187). - - - - 188 - Constant associated with the key code value for the , key(188). - - - - 189 - Constant associated with the key code value for the - key(189). - - - - 190 - Constant associated with the key code value for the . key(190). - - - - 191 - Constant associated with the key code value for the / key(191). - - - - 192 - Constant associated with the key code value for the ` key(192). - - - - 219 - Constant associated with the key code value for the [ key(219). - - - - 220 - Constant associated with the key code value for the \ key(220). - - - - 221 - Constant associated with the key code value for the ] key(221). - - - - 222 - Constant associated with the key code value for the ' key(222). - - - - Specifies whether the Caps Lock key is activated(`true`) or - not(`false`). - - - - Specifies whether the Num Lock key is activated(`true`) or not - (`false`). - - - - Specifies whether the last key pressed is accessible by other SWF files. - By default, security restrictions prevent code from a SWF file in one - domain from accessing a keystroke generated from a SWF file in another - domain. - - @return The value `true` if the last key pressed can be - accessed. If access is not permitted, this method returns - `false`. - - <__convertKeyCode get="inline" set="null" line="571" static="1"> - - - - - - - <__getCharCode set="method" line="815" static="1"> - - - - - - - { shift : false } - - - - <__getKeyLocation get="inline" set="null" line="948" static="1"> - - - - - - - The Keyboard class is used to build an interface that can be controlled by - a user with a standard keyboard. You can use the methods and properties of - the Keyboard class without using a constructor. The properties of the - Keyboard class are constants representing the keys that are most commonly - used to control games. - - - "tags=\"haxe,release\"" - - - -
      - - - - Sets or returns the type of cursor, or, for a native cursor, the - cursor name. - The default value is `openfl.ui.MouseCursor.AUTO`. - - To set values for this property, use the following string values: - - | String value | Description | - | --- | --- | - | `openfl.ui.MouseCursor.AUTO` | Mouse cursor will change automatically based on the object under the mouse. | - | `openfl.ui.MouseCursor.ARROW` | Mouse cursor will be an arrow. | - | `openfl.ui.MouseCursor.BUTTON` | Mouse cursor will be a button clicking hand. | - | `openfl.ui.MouseCursor.HAND` | Mouse cursor will be a dragging hand. | - | `openfl.ui.MouseCursor.IBEAM` | Mouse cursor will be an I-beam. | - - **Note:** For Flash Player 10.2 or AIR 2.6 and later versions, this - property sets or gets the cursor name when you are using a native - cursor. A native cursor name defined using `Mouse.registerCursor()` - overwrites currently predefined cursor types (such as - `openfl.ui.MouseCursor.IBEAM`). - - @throws ArgumentError If set to any value which is not a member of - `openfl.ui.MouseCursor`, or is not a string - specified using the `Mouse.registerCursor()` - method. - - - - true - Indicates whether the computer or device displays a persistent cursor. - - The `supportsCursor` property is `true` on most desktop computers and - `false` on most mobile devices. - - **Note:** Mouse events can be dispatched whether or not this property - is `true`. However, mouse events may behave differently depending on - the physical characteristics of the pointing device. - - - - true - Indicates whether the current configuration supports native cursors. - - <__cursor expr="MouseCursor.AUTO" line="68" static="1"> - - - MouseCursor.AUTO - - - - <__hidden static="1"> - - - - - - Hides the pointer. The pointer is visible by default. - - **Note:** You need to call `Mouse.hide()` only once, - regardless of the number of previous calls to - `Mouse.show()`. - - - - Displays the pointer. The pointer is visible by default. - - **Note:** You need to call `Mouse.show()` only once, - regardless of the number of previous calls to - `Mouse.hide()`. - - - - - - - - - - - - - The pointer is visible by default, - but you can hide it and implement a custom pointer.]]> - - - "tags=\"haxe,release\"" - - openfl.display.Stage - - - - - - - - - - - - - - The MouseCursor class is an enumeration of constant values used in setting - the `cursor` property of the Mouse class. - - - - - - cast "arrow" - - - - Used to specify that the arrow cursor should be used. - - - - - cast "auto" - - - - Used to specify that the cursor should be selected automatically based - on the object under the mouse. - - - - - - cast "hand" - - - - Used to specify that the dragging hand cursor should be used. - - - - - cast "ibeam" - - - - Used to specify that the I-beam cursor should be used. - - <__CROSSHAIR get="inline" set="null" expr="cast "crosshair"" line="40" static="1"> - - - cast "crosshair" - - - - - - <__CUSTOM get="inline" set="null" expr="cast "custom"" line="41" static="1"> - - - cast "custom" - - - - - - <__MOVE get="inline" set="null" expr="cast "move"" line="42" static="1"> - - - cast "move" - - - - - - <__RESIZE_NESW get="inline" set="null" expr="cast "resize_nesw"" line="43" static="1"> - - - cast "resize_nesw" - - - - - - <__RESIZE_NS get="inline" set="null" expr="cast "resize_ns"" line="44" static="1"> - - - cast "resize_ns" - - - - - - <__RESIZE_NWSE get="inline" set="null" expr="cast "resize_nwse"" line="45" static="1"> - - - cast "resize_nwse" - - - - - - <__RESIZE_WE get="inline" set="null" expr="cast "resize_we"" line="46" static="1"> - - - cast "resize_we" - - - - - - <__WAIT get="inline" set="null" expr="cast "wait"" line="47" static="1"> - - - cast "wait" - - - - - - <__WAIT_ARROW get="inline" set="null" expr="cast "waitarrow"" line="48" static="1"> - - - cast "waitarrow" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "arrow" - - - - Used to specify that the arrow cursor should be used. - - - - - cast "auto" - - - - Used to specify that the cursor should be selected automatically based - on the object under the mouse. - - - - - - cast "hand" - - - - Used to specify that the dragging hand cursor should be used. - - - - - cast "ibeam" - - - - Used to specify that the I-beam cursor should be used. - - <__CROSSHAIR get="inline" set="null" expr="cast "crosshair"" line="40" static="1"> - - - cast "crosshair" - - - - - - <__CUSTOM get="inline" set="null" expr="cast "custom"" line="41" static="1"> - - - cast "custom" - - - - - - <__MOVE get="inline" set="null" expr="cast "move"" line="42" static="1"> - - - cast "move" - - - - - - <__RESIZE_NESW get="inline" set="null" expr="cast "resize_nesw"" line="43" static="1"> - - - cast "resize_nesw" - - - - - - <__RESIZE_NS get="inline" set="null" expr="cast "resize_ns"" line="44" static="1"> - - - cast "resize_ns" - - - - - - <__RESIZE_NWSE get="inline" set="null" expr="cast "resize_nwse"" line="45" static="1"> - - - cast "resize_nwse" - - - - - - <__RESIZE_WE get="inline" set="null" expr="cast "resize_we"" line="46" static="1"> - - - cast "resize_we" - - - - - - <__WAIT get="inline" set="null" expr="cast "wait"" line="47" static="1"> - - - cast "wait" - - - - - - <__WAIT_ARROW get="inline" set="null" expr="cast "waitarrow"" line="48" static="1"> - - - cast "waitarrow" - - - - - - - - - - - - - - - - - - - - - - - - - - - - Identifies the multi-touch mode for touch and gesture event handling. Use - this property to manage whether or not events are dispatched as touch - events with multiple points of contact and specific events for different - gestures(such as rotation and pan), or only a single point of contact - (such as tap), or none at all(contact is handled as a mouse event). To - set this property, use values from the openfl.ui.MultitouchInputMode class. - - @default gesture - - - - The maximum number of concurrent touch points supported by the current - environment. - - - - A Vector array(a typed array of string values) of multi-touch contact - types supported in the current environment. The array of strings can be - used as event types to register event listeners. Possible values are - constants from the GestureEvent, PressAndTapGestureEvent, and - TransformGestureEvent classes(such as `GESTURE_PAN`). - - If the Flash runtime is in an environment that does not support any - multi-touch gestures, the value is `null`. - - **Note:** For Mac OS 10.5.3 and later, - `Multitouch.supportedGestures` returns non-null values - (possibly indicating incorrectly that gesture events are supported) even - if the current hardware does not support gesture input. - - Use this property to test for multi-touch gesture support. Then, use - event handlers for the available multi-touch gestures. For those gestures - that are not supported in the current evironment, you'll need to create - alternative event handling. - - - - Indicates whether the current environment supports gesture input, such as - rotating two fingers around a touch screen. Gesture events are listed in - the TransformGestureEvent, PressAndTapGestureEvent, and GestureEvent - classes. - - **Note:** For Mac OS 10.5.3 and later, this value is always - `true`. `Multitouch.supportsGestureEvent` returns - `true` even if the hardware does not support gesture - events. - - - - Indicates whether the current environment supports basic touch input, such - as a single finger tap. Touch events are listed in the TouchEvent class. - - - - - - The Multitouch class manages and provides information about the current - environment's support for handling contact from user input devices, - including contact that has two or more touch points(such as a user's - fingers on a touch screen). When a user interacts with a device such as a - mobile phone or tablet with a touch screen, the user typically touches the - screen with his or her fingers or a pointing device. While there is a broad - range of pointing devices, such as a mouse or a stylus, many of these - devices only have a single point of contact with an application. For - pointing devices with a single point of contact, user interaction events - can be handled as a mouse event, or using a basic set of touch events - (called "touch point" events). However, for pointing devices that have - several points of contact and perform complex movement, such as the human - hand, Flash runtimes support an additional set of event handling API called - gesture events. The API for handling user interaction with these gesture - events includes the following classes: - - - - * openfl.events.TouchEvent - * openfl.events.GestureEvent - * openfl.events.GesturePhase - * openfl.events.TransformGestureEvent - * openfl.events.PressAndTapGestureEvent - - - - Use the listed classes to write code that handles touch events. Use the - Multitouch class to determine the current environment's support for touch - interaction, and to manage the support of touch interaction if the current - environment supports touch input. - - You cannot create a Multitouch object directly from ActionScript code. - If you call `new Multitouch()`, an exception is thrown. - - **Note:** The Multitouch feature is not supported for SWF files - embedded in HTML running on Mac OS. - - - "tags=\"haxe,release\"" - - - - - - - - - The MultitouchInputMode class provides values for the - `inputMode` property in the openfl.ui.Multitouch class. These - values set the type of touch events the Flash runtime dispatches when the - user interacts with a touch-enabled device. - - - - - - cast 0 - - - - Specifies that TransformGestureEvent, PressAndTapGestureEvent, and - GestureEvent events are dispatched for the related user interaction - supported by the current environment, and other touch events(such as a - simple tap) are interpreted as mouse events. - - - - - cast 1 - - - - Specifies that all user contact with a touch-enabled device is interpreted as a - type of mouse event. - - - - - cast 2 - - - - Specifies that all user contact with a touch-enabled device is interpreted - as a type of mouse event. - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Specifies that TransformGestureEvent, PressAndTapGestureEvent, and - GestureEvent events are dispatched for the related user interaction - supported by the current environment, and other touch events(such as a - simple tap) are interpreted as mouse events. - - - - - cast 1 - - - - Specifies that all user contact with a touch-enabled device is interpreted as a - type of mouse event. - - - - - cast 2 - - - - Specifies that all user contact with a touch-enabled device is interpreted - as a type of mouse event. - - - - - - - - - - - - - - - - - - - - - - - - - new Map() - - - - - - - - - - new Map() - - - - - - - - - - new Map() - - - - - - - 4 - - - - - - - 4096 - - - - - - - "fragment" - - - - - - - "vertex" - - - - - - - 8 - - - - - - - 12 - - - - - - - 16 - - - - - - - 20 - - - - - - - 24 - - - - - - - 28 - - - - - - - 0x1 - - - - - - - 0x2 - - - - - - - 0x20 - - - - - - - 0x40 - - - - - - - 0x1 - - - - - - - 0x8 - - - - - - - 0x10 - - - - - - - 0x20 - - - - - - - 0x40 - - - - - - - 0x80 - - - - - - - 0x100 - - - - - - - 0x200 - - - - - - - 0x400 - - - - - - - "mov" - - - - - - - "add" - - - - - - - "sub" - - - - - - - "mul" - - - -
      - - - "div" - - -
      - - - - "rcp" - - - - - - - "min" - - - - - - - "max" - - - - - - - "frc" - - - - - - - "sqt" - - - - - - - "rsq" - - - - - - - "pow" - - - - - - - "log" - - - - - - - "exp" - - - - - - - "nrm" - - - - - - - "sin" - - - - - - - "cos" - - - - - - - "crs" - - - - - - - "dp3" - - - - - - - "dp4" - - - - - - - "abs" - - - - - - - "neg" - - - - - - - "sat" - - - - - - - "m33" - - - - - - - "m44" - - - - - - - "m34" - - - - - - - "ddx" - - - - - - - "ddy" - - - - - - - "ife" - - - - - - - "ine" - - - - - - - "ifg" - - - - - - - "ifl" - - - - - - - "ieg" - - - - - - - "iel" - - - - - - - "els" - - - - - - - "eif" - - - - - - - "ted" - - - - - - - "kil" - - - - - - - "tex" - - - - - - - "sge" - - - - - - - "slt" - - - - - - - "sgn" - - - - - - - "seq" - - - - - - - "sne" - - - - - - - "va" - - - - - - - "vc" - - - - - - - "vt" - - - - - - - "vo" - - - - - - - "vi" - - - - - - - "fc" - - - - - - - "ft" - - - - - - - "fs" - - - - - - - "fo" - - - - - - - "fd" - - - - - - - "iid" - - - - - - - "2d" - - - - - - - "3d" - - - - - - - "cube" - - - - - - - "mipnearest" - - - - - - - "miplinear" - - - - - - - "mipnone" - - - - - - - "nomip" - - - - - - - "nearest" - - - - - - - "linear" - - - - - - - "anisotropic2x" - - - - - - - "anisotropic4x" - - - - - - - "anisotropic8x" - - - - - - - "anisotropic16x" - - - - - - - "centroid" - - - - - - - "single" - - - - - - - "ignoresampler" - - - - - - - "repeat" - - - - - - - "wrap" - - - - - - - "clamp" - - - - - - - "repeat_u_clamp_v" - - - - - - - "clamp_u_repeat_v" - - - - - - - "rgba" - - - - - - - "compressed" - - - - - - - "compressedalpha" - - - - - - - "dxt1" - - - - - - - "dxt5" - - - - - - - - false - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - { ignoreLimits : false, version : 1 } - - - - - - - - - - - - - - - - - - - - - - - { debugging : false } - - - - "tags=\"haxe,release\"" - - ["checkstyle:ConstantName", "checkstyle:FieldDocComment"] - -
      - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - <__proxy> - - - - - - - - - - { instance : null } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - - - - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - - - - - - - { rootPath : null } - - <__fromLimeManifest set="method" line="131" static="1"> - - - - - - - - - - - - - { id : null } - - - - - - - - { id : null } - - - - - - - - { id : null } - - - - - - - - { id : null } - - - - - - - - { id : null } - - - - - "tags=\"haxe,release\"" - - - - - - The AssetType enum lists the core set of available - asset types from the OpenFL command-line tools. - - - - - - cast "BINARY" - - - - Binary assets (data that is not readable as text) - - - - - cast "FONT" - - - - Font assets, such as *.ttf or *.otf files - - - - - cast "IMAGE" - - - - Image assets, such as *.png or *.jpg files - - - - - cast "MOVIE_CLIP" - - - - MovieClip assets, such as from a *.swf file - - - - - cast "MUSIC" - - - - Audio assets, such as *.ogg or *.wav files - - In previous versions of OpenFL, `AssetType.MUSIC` was recommended - for long background music, but in current versions, both - `AssetType.MUSIC` and `AssetType.SOUND` behave similarly. - - A future version may implement optimizations specific to each audio type - again. - - - - - cast "SOUND" - - - - Audio assets, such as *.ogg or *.wav files - - In previous versions of OpenFL, `AssetType.SOUND` was recommended - for short or repetitively used sounds, but in current versions, both - `AssetType.MUSIC` and `AssetType.SOUND` behave similarly. - - A future version may implement optimizations specific to each audio type - again. - - - - - - cast "TEXT" - - - - Text assets - - - - - - - - - cast "BINARY" - - - - Binary assets (data that is not readable as text) - - - - - cast "FONT" - - - - Font assets, such as *.ttf or *.otf files - - - - - cast "IMAGE" - - - - Image assets, such as *.png or *.jpg files - - - - - cast "MOVIE_CLIP" - - - - MovieClip assets, such as from a *.swf file - - - - - cast "MUSIC" - - - - Audio assets, such as *.ogg or *.wav files - - In previous versions of OpenFL, `AssetType.MUSIC` was recommended - for long background music, but in current versions, both - `AssetType.MUSIC` and `AssetType.SOUND` behave similarly. - - A future version may implement optimizations specific to each audio type - again. - - - - - cast "SOUND" - - - - Audio assets, such as *.ogg or *.wav files - - In previous versions of OpenFL, `AssetType.SOUND` was recommended - for short or repetitively used sounds, but in current versions, both - `AssetType.MUSIC` and `AssetType.SOUND` behave similarly. - - A future version may implement optimizations specific to each audio type - again. - - - - - - cast "TEXT" - - - - Text assets - - - - - - - new AssetCache() - - - - - new EventDispatcher() - - - - - - - - - new Map() - - - - - - - - - - - { useWeakReference : false, priority : 0, useCapture : false } - - - - - - - - - - - - { type : null } - Returns whether a specific asset exists - @param id The ID or asset path for the asset - @param type The asset type to match, or null to match any type - @return Whether the requested asset ID and type exists - - - - - - - - { useCache : true } - Gets an instance of an embedded bitmap - @usage var bitmap = new Bitmap (Assets.getBitmapData ("image.png")); - @param id The ID or asset path for the bitmap - @param useCache (Optional) Whether to allow use of the asset cache (Default: true) - @return A new BitmapData object - - - - - - - Gets an instance of an embedded binary asset - @usage var bytes = Assets.getBytes ("file.zip"); - @param id The ID or asset path for the asset - @return A new ByteArray object - - - - - - - - { useCache : true } - Gets an instance of an embedded font - @usage var fontName = Assets.getFont ("font.ttf").fontName; - @param id The ID or asset path for the font - @param useCache (Optional) Whether to allow use of the asset cache (Default: true) - @return A new Font object - - - - - - - - - - - Gets an instance of an included MovieClip - @usage var movieClip = Assets.getMovieClip ("library:BouncingBall"); - @param id The ID for the MovieClip - @return A new MovieClip object - - - - - - - - { useCache : true } - - - - - - - Gets the file path (if available) for an asset - @usage var path = Assets.getPath ("file.txt"); - @param id The ID or asset path for the asset - @return The path to the asset, or null if it does not exist - - - - - - - - { useCache : true } - Gets an instance of an embedded sound - @usage var sound = Assets.getSound ("sound.wav"); - @param id The ID or asset path for the sound - @param useCache (Optional) Whether to allow use of the asset cache (Default: true) - @return A new Sound object - - - - - - - Gets an instance of an embedded text asset - @usage var text = Assets.getText ("text.txt"); - @param id The ID or asset path for the asset - @return A new String object - - - - - - - - - - - - - - - - { instance : null } - Connects a user-defined class to a related asset class. - - This method call is added to the beginning of user-defined class constructors when - the `@:bind` meta-data is used. This allows insertion of related asset resources in - compatible super classes, such as `openfl.display.MovieClip`. - @param className The registered class name of the asset constructor - @param instance The current class instance to be bound (default is null) - @return Whether asset binding was successful - - - - - - - - - { useCache : true, type : null } - Returns whether an asset is "local", and therefore can be loaded synchronously - @param id The ID or asset path for the asset - @param type The asset type to match, or null to match any type - @param useCache (Optional) Whether to allow use of the asset cache (Default: true) - @return Whether the asset is local - - - - - - - ignore - - - - - - - - - - - - - - { type : null } - Returns a list of all embedded assets (by type) - @param type The asset type to match, or null to match any type - @return An array of asset ID values - - - - - - - - { useCache : true } - ]]> - - - - - - - ]]> - - - - - - - - { useCache : true } - ]]> - - - - - - - ]]> - - - - - - - - { useCache : true } - ]]> - - - - - - - ]]> - - - - - - - - { useCache : true } - ]]> - - - - - - - ]]> - - - - - - - - Registers an AssetLibrary binding for use with @:bind or Assets.bind - @param className The class name to use for the binding - @param method The AssetLibrary responsible for the binding - - - - - - - - Registers a new AssetLibrary with the Assets class - @param name The name (prefix) to use for the library - @param library An AssetLibrary instance to register - - - - - - - - - { capture : false } - - - - - - - - - - - - - - - - - - - - - - - - - - Unregisters an AssetLibrary binding for use with @:bind or Assets.bind - @param className The class name to use for the binding - @param method The AssetLibrary responsible for the binding - - - - - - - in the project file.]]> - - - "tags=\"haxe,release\"" - - openfl.display.BitmapData - openfl.display.Sprite - openfl.text.Font - openfl.utils.AssetLibrary - - - - - - - - - - - - - - - - - - - - - The ByteArray class provides methods and properties to optimize reading, - writing, and working with binary data. - - _Note:_ The ByteArray class is for advanced developers who need to - access data on the byte level. - - In-memory data is a packed array (the most compact representation for - the data type) of bytes, but an instance of the ByteArray class can be - manipulated with the standard `[]`(array access) operators. It - also can be read and written to as an in-memory file, using methods similar - to those in the URLStream and Socket classes. - - On the Flash and AIR targets, the ByteArray type is a real class, but on - other platforms, ByteArray is a Haxe abstract over a hidden `ByteArrayData` - type. To check if an object is a ByteArray at runtime, import the ByteArray - type, then compare with ByteArrayData, such as `Std.is (ba, ByteArrayData)`. - - In addition, all platforms support zlib compression and decompression, as - well as additional formats for object serialization. - - Possible uses of the ByteArray class include the following: - - * Creating a custom protocol to connect to a server. - * Writing your own URLEncoder/URLDecoder. - * Writing your own AMF/Remoting packet. - * Optimizing the size of your data by using data types. - * Working with binary data loaded from a local file. - * Supporting new binary file formats. - - haxe.io.Bytes - openfl.utils.ByteArrayData - - endian - objectEncoding - - - - - - - Denotes the default endianness for the ByteArray class to use for a - new ByteArray instance. When you create a new ByteArray instance, the - endian value on that instance starts with the value of - `defaultEndian`. The `defaultEndian` - property is initialized to the default system endianness. This will - most likely be `Endian.LITTLE_ENDIAN` on the majority platforms - except for the Flash runtime. - - On Flash and AIR targets, this property cannot be changed and will - always be set to `Endian.BIG_ENDIAN`. - - - - Denotes the default object encoding for the ByteArray class to use for a - new ByteArray instance. When you create a new ByteArray instance, the - encoding on that instance starts with the value of - `defaultObjectEncoding`. The `defaultObjectEncoding` - property is initialized to `ObjectEncoding.DEFAULT`. This value varies - between platforms. - - When an object is written to or read from binary data, the - `objectEncoding` value is used to determine whether the - Haxe, JavaScript, ActionScript 3.0, ActionScript 2.0 or ActionScript 1.0 - format should be used. The value is a constant from the ObjectEncoding - class. - - <__bytePointer expr="new BytePointer()" line="103" static="1"> - - - new BytePointer() - - - - - - The number of bytes of data available for reading from the current - position in the byte array to the end of the array. - - Use the `bytesAvailable` property in conjunction with the - read methods each time you access a ByteArray object to ensure that you - are reading valid data. - - - - The length of the ByteArray object, in bytes. - - If the length is set to a value that is larger than the current length, - the right side of the byte array is filled with zeros. - - If the length is set to a value that is smaller than the current - length, the byte array is truncated. - - - - Moves, or returns the current position, in bytes, of the file pointer into - the ByteArray object. This is the point at which the next call to a read - method starts reading or a write method starts writing. - - <_new public="1" get="inline" set="null" line="170" static="1"> - - - - - - { length : 0 } - - - Creates a ByteArray instance representing a packed array of bytes, so that - you can use the methods and properties in this class to optimize your data - storage and stream. - - - - - - - Clears the contents of the byte array and resets the `length` - and `position` properties to 0. Calling this method explicitly - frees up the memory used by the ByteArray instance. - - - - - - - - { algorithm : null } - air.CompressionAlgorithm.DEFLATE)` on the - original ByteArray. However, the result from `compress(air.CompressionAlgorithm.ZLIB)` includes - the extra metadata, while the - `compress(CompressionAlgorithm.DEFLATE)` result includes only - the compressed version of the original ByteArray data and nothing - else. - - In order to use the deflate format to compress a ByteArray instance's - data in a specific format such as gzip or zip, you cannot simply call - `compress(CompressionAlgorithm.DEFLATE)`. You must create a - ByteArray structured according to the compression format's specification, - including the appropriate metadata as well as the compressed data obtained - using the deflate format. Likewise, in order to decode data compressed in - a format such as gzip or zip, you can't simply call - `uncompress(CompressionAlgorithm.DEFLATE)` on that data. First, - you must separate the metadata from the compressed data, and you can then - use the deflate format to decompress the compressed data.]]> - - - - - - - Compresses the byte array using the deflate compression algorithm. The - entire byte array is compressed. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to the - end of the byte array. - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to use the deflate format to compress a ByteArray instance's - data in a specific format such as gzip or zip, you cannot simply call - `deflate()`. You must create a ByteArray structured according - to the compression format's specification, including the appropriate - metadata as well as the compressed data obtained using the deflate format. - Likewise, in order to decode data compressed in a format such as gzip or - zip, you can't simply call `inflate()` on that data. First, you - must separate the metadata from the compressed data, and you can then use - the deflate format to decompress the compressed data. - - - - - - - - Converts an ArrayBuffer into a ByteArray. - - @param buffer An ArrayBuffer instance - @returns A new ByteArray - - - - - - - - Converts a Bytes object into a ByteArray. - - @param buffer A Bytes instance - @returns A new ByteArray - - - - - - - - - - - Converts a BytesData object into a ByteArray. - - @param buffer A BytesData instance - @returns A new ByteArray - - - - - - - Creates a new ByteArray from a file path synchronously. This means that the - ByteArray will be returned immediately (if supported). - - HTML5 and Flash do not support loading files synchronously, so these targets - always return `null`. - - In order to load files from a remote web address, use the `loadFromFile` method, - which supports asynchronous loading. - - @param path A local file path - @returns A new ByteArray if successful, or `null` if unsuccessful - - - - - - - - - - - Converts a Lime Bytes object into a ByteArray. - - @param buffer A Lime Bytes instance - @returns A new ByteArray - - - - - - - - - - - - - - - - - - Decompresses the byte array using the deflate compression algorithm. The - byte array must have been compressed using the same algorithm. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to 0. - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to decode data compressed in a format that uses the deflate - compression algorithm, such as data in gzip or zip format, it will not - work to simply call `inflate()` on a ByteArray containing the - compression formation data. First, you must separate the metadata that is - included as part of the compressed data format from the actual compressed - data. For more information, see the `compress()` method - description. - - @throws IOError The data is not valid compressed data; it was not - compressed with the same compression algorithm used to - compress. - - - - - - - Creates a new ByteArray from haxe.io.Bytes. Progress, completion and error - callbacks will be dispatched using callbacks attached to a returned Future - object. - - @param bytes A haxe.io.Bytes instance - @returns A Future ByteArray - - - - - - - Creates a new ByteArray from a file path or web address asynchronously. The file - load will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A local file path or web address - @returns A Future ByteArray - - - - - - - Reads a Boolean value from the byte stream. A single byte is read, and - `true` is returned if the byte is nonzero, `false` - otherwise. - - @return Returns `true` if the byte is nonzero, - `false` otherwise. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed byte from the byte stream. - - The returned value is in the range -128 to 127. - - @return An integer between -128 and 127. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - - { length : 0, offset : 0 } - Reads the number of data bytes, specified by the `length` - parameter, from the byte stream. The bytes are read into the ByteArray - object specified by the `bytes` parameter, and the bytes are - written into the destination ByteArray starting at the position specified - by `offset`. - - @param bytes The ByteArray object to read data into. - @param offset The offset(position) in `bytes` at which the - read data should be written. - @param length The number of bytes to read. The default value of 0 causes - all available data to be read. - @throws EOFError There is not sufficient data available to read. - @throws RangeError The value of the supplied offset and length, combined, - is greater than the maximum for a uint. - - - - - - - Reads an IEEE 754 double-precision(64-bit) floating-point number from the - byte stream. - - @return A double-precision(64-bit) floating-point number. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an IEEE 754 single-precision(32-bit) floating-point number from the - byte stream. - - @return A single-precision(32-bit) floating-point number. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed 32-bit integer from the byte stream. - - The returned value is in the range -2147483648 to 2147483647. - - @return A 32-bit signed integer between -2147483648 and 2147483647. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - Supported Character - Sets. - - **Note:** If the value for the `charSet` - parameter is not recognized by the current system, the - application uses the system's default code page as the - character set. For example, a value for the - `charSet` parameter, as in - `myTest.readMultiByte(22, "iso-8859-01")` that - uses `01` instead of `1` might work - on your development system, but not on another system. On - the other system, the application will use the system's - default code page. - @return UTF-8 encoded string. - @throws EOFError There is not sufficient data available to read.]]> - - - - - - - Reads an object from the byte array, encoded in AMF serialized format. - - @return The deserialized object. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed 16-bit integer from the byte stream. - - The returned value is in the range -32768 to 32767. - - @return A 16-bit signed integer between -32768 and 32767. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a UTF-8 string from the byte stream. The string is assumed to be - prefixed with an unsigned short indicating the length in bytes. - - @return UTF-8 encoded string. - @throws EOFError There is not sufficient data available to read. - - - - - - - - Reads a sequence of UTF-8 bytes specified by the `length` - parameter from the byte stream and returns a string. - - @param length An unsigned short indicating the length of the UTF-8 bytes. - @return A string composed of the UTF-8 bytes of the specified length. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned byte from the byte stream. - - The returned value is in the range 0 to 255. - - @return A 32-bit unsigned integer between 0 and 255. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned 32-bit integer from the byte stream. - - The returned value is in the range 0 to 4294967295. - - @return A 32-bit unsigned integer between 0 and 4294967295. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned 16-bit integer from the byte stream. - - The returned value is in the range 0 to 65535. - - @return A 16-bit unsigned integer between 0 and 65535. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - - - - - - - - - - - - - - - Converts a ByteArray into an ArrayBuffer. - - @param buffer A ByteArray instance - @returns A new ArrayBuffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Converts the byte array to a string. If the data in the array begins with - a Unicode byte order mark, the application will honor that mark when - converting to a string. If `System.useCodePage` is set to - `true`, the application will treat the data in the array as - being in the current system code page when converting. - - @return The string representation of the byte array. - - - - - - - - { algorithm : null } - Decompresses the byte array. For content running in Adobe AIR, you can - specify a compression algorithm by passing a value(defined in the - CompressionAlgorithm class) as the `algorithm` parameter. The - byte array must have been compressed using the same algorithm. Flash - Player supports only the default algorithm, zlib. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to 0. - - The zlib compressed data format is described at - [http://www.ietf.org/rfc/rfc1950.txt](http://www.ietf.org/rfc/rfc1950.txt). - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to decode data compressed in a format that uses the deflate - compression algorithm, such as data in gzip or zip format, it will not - work to call `uncompress(CompressionAlgorithm.DEFLATE)` on a - ByteArray containing the compression formation data. First, you must - separate the metadata that is included as part of the compressed data - format from the actual compressed data. For more information, see the - `compress()` method description. - - @throws IOError The data is not valid compressed data; it was not - compressed with the same compression algorithm used to - compress. - - - - - - - - Writes a Boolean value. A single byte is written according to the - `value` parameter, either 1 if `true` or 0 if - `false`. - - @param value A Boolean value determining which byte is written. If the - parameter is `true`, the method writes a 1; if - `false`, the method writes a 0. - - - - - - - - Writes a byte to the byte stream. - - The low 8 bits of the parameter are used. The high 24 bits are ignored. - - - @param value A 32-bit integer. The low 8 bits are written to the byte - stream. - - - - - - - - - - { length : 0, offset : 0 } - Writes a sequence of `length` bytes from the specified byte - array, `bytes`, starting `offset`(zero-based index) - bytes into the byte stream. - - If the `length` parameter is omitted, the default length of - 0 is used; the method writes the entire buffer starting at - `offset`. If the `offset` parameter is also omitted, - the entire buffer is written. - - If `offset` or `length` is out of range, they are - clamped to the beginning and end of the `bytes` array. - - @param bytes The ByteArray object. - @param offset A zero-based index indicating the position into the array to - begin writing. - @param length An unsigned integer indicating how far into the buffer to - write. - - - - - - - - Writes an IEEE 754 double-precision(64-bit) floating-point number to the - byte stream. - - @param value A double-precision(64-bit) floating-point number. - - - - - - - - Writes an IEEE 754 single-precision(32-bit) floating-point number to the - byte stream. - - @param value A single-precision(32-bit) floating-point number. - - - - - - - - Writes a 32-bit signed integer to the byte stream. - - @param value An integer to write to the byte stream. - - - - - - - - - Supported Character - Sets.]]> - - - - - - - - Writes an object into the byte array in AMF serialized format. - - @param object The object to serialize. - - - - - - - - Writes a 16-bit integer to the byte stream. The low 16 bits of the - parameter are used. The high 16 bits are ignored. - - @param value 32-bit integer, whose low 16 bits are written to the byte - stream. - - - - - - - - Writes a UTF-8 string to the byte stream. The length of the UTF-8 string - in bytes is written first, as a 16-bit integer, followed by the bytes - representing the characters of the string. - - @param value The string value to be written. - @throws RangeError If the length is larger than 65535. - - - - - - - - Writes a UTF-8 string to the byte stream. Similar to the - `writeUTF()` method, but `writeUTFBytes()` does not - prefix the string with a 16-bit length word. - - @param value The string value to be written. - - - - - - - - Writes a 32-bit unsigned integer to the byte stream. - - @param value An unsigned integer to write to the byte stream. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils.ByteArrayData - haxe.io.Bytes - - - - - - - Denotes the default endianness for the ByteArray class to use for a - new ByteArray instance. When you create a new ByteArray instance, the - endian value on that instance starts with the value of - `defaultEndian`. The `defaultEndian` - property is initialized to the default system endianness. This will - most likely be `Endian.LITTLE_ENDIAN` on the majority platforms - except for the Flash runtime. - - On Flash and AIR targets, this property cannot be changed and will - always be set to `Endian.BIG_ENDIAN`. - - - - Denotes the default object encoding for the ByteArray class to use for a - new ByteArray instance. When you create a new ByteArray instance, the - encoding on that instance starts with the value of - `defaultObjectEncoding`. The `defaultObjectEncoding` - property is initialized to `ObjectEncoding.DEFAULT`. This value varies - between platforms. - - When an object is written to or read from binary data, the - `objectEncoding` value is used to determine whether the - Haxe, JavaScript, ActionScript 3.0, ActionScript 2.0 or ActionScript 1.0 - format should be used. The value is a constant from the ObjectEncoding - class. - - <__bytePointer expr="new BytePointer()" line="103" static="1"> - - - new BytePointer() - - - - - - The number of bytes of data available for reading from the current - position in the byte array to the end of the array. - - Use the `bytesAvailable` property in conjunction with the - read methods each time you access a ByteArray object to ensure that you - are reading valid data. - - - - The length of the ByteArray object, in bytes. - - If the length is set to a value that is larger than the current length, - the right side of the byte array is filled with zeros. - - If the length is set to a value that is smaller than the current - length, the byte array is truncated. - - - - Moves, or returns the current position, in bytes, of the file pointer into - the ByteArray object. This is the point at which the next call to a read - method starts reading or a write method starts writing. - - <_new public="1" get="inline" set="null" line="170" static="1"> - - - - - - { length : 0 } - - - Creates a ByteArray instance representing a packed array of bytes, so that - you can use the methods and properties in this class to optimize your data - storage and stream. - - - - - - - Clears the contents of the byte array and resets the `length` - and `position` properties to 0. Calling this method explicitly - frees up the memory used by the ByteArray instance. - - - - - - - - { algorithm : null } - air.CompressionAlgorithm.DEFLATE)` on the - original ByteArray. However, the result from `compress(air.CompressionAlgorithm.ZLIB)` includes - the extra metadata, while the - `compress(CompressionAlgorithm.DEFLATE)` result includes only - the compressed version of the original ByteArray data and nothing - else. - - In order to use the deflate format to compress a ByteArray instance's - data in a specific format such as gzip or zip, you cannot simply call - `compress(CompressionAlgorithm.DEFLATE)`. You must create a - ByteArray structured according to the compression format's specification, - including the appropriate metadata as well as the compressed data obtained - using the deflate format. Likewise, in order to decode data compressed in - a format such as gzip or zip, you can't simply call - `uncompress(CompressionAlgorithm.DEFLATE)` on that data. First, - you must separate the metadata from the compressed data, and you can then - use the deflate format to decompress the compressed data.]]> - - - - - - - Compresses the byte array using the deflate compression algorithm. The - entire byte array is compressed. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to the - end of the byte array. - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to use the deflate format to compress a ByteArray instance's - data in a specific format such as gzip or zip, you cannot simply call - `deflate()`. You must create a ByteArray structured according - to the compression format's specification, including the appropriate - metadata as well as the compressed data obtained using the deflate format. - Likewise, in order to decode data compressed in a format such as gzip or - zip, you can't simply call `inflate()` on that data. First, you - must separate the metadata from the compressed data, and you can then use - the deflate format to decompress the compressed data. - - - - - - - - Converts an ArrayBuffer into a ByteArray. - - @param buffer An ArrayBuffer instance - @returns A new ByteArray - - - - - - - - Converts a Bytes object into a ByteArray. - - @param buffer A Bytes instance - @returns A new ByteArray - - - - - - - - - - - Converts a BytesData object into a ByteArray. - - @param buffer A BytesData instance - @returns A new ByteArray - - - - - - - Creates a new ByteArray from a file path synchronously. This means that the - ByteArray will be returned immediately (if supported). - - HTML5 and Flash do not support loading files synchronously, so these targets - always return `null`. - - In order to load files from a remote web address, use the `loadFromFile` method, - which supports asynchronous loading. - - @param path A local file path - @returns A new ByteArray if successful, or `null` if unsuccessful - - - - - - - - - - - Converts a Lime Bytes object into a ByteArray. - - @param buffer A Lime Bytes instance - @returns A new ByteArray - - - - - - - - - - - - - - - - - - Decompresses the byte array using the deflate compression algorithm. The - byte array must have been compressed using the same algorithm. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to 0. - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to decode data compressed in a format that uses the deflate - compression algorithm, such as data in gzip or zip format, it will not - work to simply call `inflate()` on a ByteArray containing the - compression formation data. First, you must separate the metadata that is - included as part of the compressed data format from the actual compressed - data. For more information, see the `compress()` method - description. - - @throws IOError The data is not valid compressed data; it was not - compressed with the same compression algorithm used to - compress. - - - - - - - Creates a new ByteArray from haxe.io.Bytes. Progress, completion and error - callbacks will be dispatched using callbacks attached to a returned Future - object. - - @param bytes A haxe.io.Bytes instance - @returns A Future ByteArray - - - - - - - Creates a new ByteArray from a file path or web address asynchronously. The file - load will occur in the background. - Progress, completion and error callbacks will be dispatched in the current - thread using callbacks attached to a returned Future object. - - @param path A local file path or web address - @returns A Future ByteArray - - - - - - - Reads a Boolean value from the byte stream. A single byte is read, and - `true` is returned if the byte is nonzero, `false` - otherwise. - - @return Returns `true` if the byte is nonzero, - `false` otherwise. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed byte from the byte stream. - - The returned value is in the range -128 to 127. - - @return An integer between -128 and 127. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - - { length : 0, offset : 0 } - Reads the number of data bytes, specified by the `length` - parameter, from the byte stream. The bytes are read into the ByteArray - object specified by the `bytes` parameter, and the bytes are - written into the destination ByteArray starting at the position specified - by `offset`. - - @param bytes The ByteArray object to read data into. - @param offset The offset(position) in `bytes` at which the - read data should be written. - @param length The number of bytes to read. The default value of 0 causes - all available data to be read. - @throws EOFError There is not sufficient data available to read. - @throws RangeError The value of the supplied offset and length, combined, - is greater than the maximum for a uint. - - - - - - - Reads an IEEE 754 double-precision(64-bit) floating-point number from the - byte stream. - - @return A double-precision(64-bit) floating-point number. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an IEEE 754 single-precision(32-bit) floating-point number from the - byte stream. - - @return A single-precision(32-bit) floating-point number. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed 32-bit integer from the byte stream. - - The returned value is in the range -2147483648 to 2147483647. - - @return A 32-bit signed integer between -2147483648 and 2147483647. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - Supported Character - Sets. - - **Note:** If the value for the `charSet` - parameter is not recognized by the current system, the - application uses the system's default code page as the - character set. For example, a value for the - `charSet` parameter, as in - `myTest.readMultiByte(22, "iso-8859-01")` that - uses `01` instead of `1` might work - on your development system, but not on another system. On - the other system, the application will use the system's - default code page. - @return UTF-8 encoded string. - @throws EOFError There is not sufficient data available to read.]]> - - - - - - - Reads an object from the byte array, encoded in AMF serialized format. - - @return The deserialized object. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a signed 16-bit integer from the byte stream. - - The returned value is in the range -32768 to 32767. - - @return A 16-bit signed integer between -32768 and 32767. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads a UTF-8 string from the byte stream. The string is assumed to be - prefixed with an unsigned short indicating the length in bytes. - - @return UTF-8 encoded string. - @throws EOFError There is not sufficient data available to read. - - - - - - - - Reads a sequence of UTF-8 bytes specified by the `length` - parameter from the byte stream and returns a string. - - @param length An unsigned short indicating the length of the UTF-8 bytes. - @return A string composed of the UTF-8 bytes of the specified length. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned byte from the byte stream. - - The returned value is in the range 0 to 255. - - @return A 32-bit unsigned integer between 0 and 255. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned 32-bit integer from the byte stream. - - The returned value is in the range 0 to 4294967295. - - @return A 32-bit unsigned integer between 0 and 4294967295. - @throws EOFError There is not sufficient data available to read. - - - - - - - Reads an unsigned 16-bit integer from the byte stream. - - The returned value is in the range 0 to 65535. - - @return A 16-bit unsigned integer between 0 and 65535. - @throws EOFError There is not sufficient data available to read. - - - - - - - - - - - - - - - - - - - - - - - Converts a ByteArray into an ArrayBuffer. - - @param buffer A ByteArray instance - @returns A new ArrayBuffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Converts the byte array to a string. If the data in the array begins with - a Unicode byte order mark, the application will honor that mark when - converting to a string. If `System.useCodePage` is set to - `true`, the application will treat the data in the array as - being in the current system code page when converting. - - @return The string representation of the byte array. - - - - - - - - { algorithm : null } - Decompresses the byte array. For content running in Adobe AIR, you can - specify a compression algorithm by passing a value(defined in the - CompressionAlgorithm class) as the `algorithm` parameter. The - byte array must have been compressed using the same algorithm. Flash - Player supports only the default algorithm, zlib. - - After the call, the `length` property of the ByteArray is - set to the new length. The `position` property is set to 0. - - The zlib compressed data format is described at - [http://www.ietf.org/rfc/rfc1950.txt](http://www.ietf.org/rfc/rfc1950.txt). - - The deflate compression algorithm is described at - [http://www.ietf.org/rfc/rfc1951.txt](http://www.ietf.org/rfc/rfc1951.txt). - - In order to decode data compressed in a format that uses the deflate - compression algorithm, such as data in gzip or zip format, it will not - work to call `uncompress(CompressionAlgorithm.DEFLATE)` on a - ByteArray containing the compression formation data. First, you must - separate the metadata that is included as part of the compressed data - format from the actual compressed data. For more information, see the - `compress()` method description. - - @throws IOError The data is not valid compressed data; it was not - compressed with the same compression algorithm used to - compress. - - - - - - - - Writes a Boolean value. A single byte is written according to the - `value` parameter, either 1 if `true` or 0 if - `false`. - - @param value A Boolean value determining which byte is written. If the - parameter is `true`, the method writes a 1; if - `false`, the method writes a 0. - - - - - - - - Writes a byte to the byte stream. - - The low 8 bits of the parameter are used. The high 24 bits are ignored. - - - @param value A 32-bit integer. The low 8 bits are written to the byte - stream. - - - - - - - - - - { length : 0, offset : 0 } - Writes a sequence of `length` bytes from the specified byte - array, `bytes`, starting `offset`(zero-based index) - bytes into the byte stream. - - If the `length` parameter is omitted, the default length of - 0 is used; the method writes the entire buffer starting at - `offset`. If the `offset` parameter is also omitted, - the entire buffer is written. - - If `offset` or `length` is out of range, they are - clamped to the beginning and end of the `bytes` array. - - @param bytes The ByteArray object. - @param offset A zero-based index indicating the position into the array to - begin writing. - @param length An unsigned integer indicating how far into the buffer to - write. - - - - - - - - Writes an IEEE 754 double-precision(64-bit) floating-point number to the - byte stream. - - @param value A double-precision(64-bit) floating-point number. - - - - - - - - Writes an IEEE 754 single-precision(32-bit) floating-point number to the - byte stream. - - @param value A single-precision(32-bit) floating-point number. - - - - - - - - Writes a 32-bit signed integer to the byte stream. - - @param value An integer to write to the byte stream. - - - - - - - - - Supported Character - Sets.]]> - - - - - - - - Writes an object into the byte array in AMF serialized format. - - @param object The object to serialize. - - - - - - - - Writes a 16-bit integer to the byte stream. The low 16 bits of the - parameter are used. The high 16 bits are ignored. - - @param value 32-bit integer, whose low 16 bits are written to the byte - stream. - - - - - - - - Writes a UTF-8 string to the byte stream. The length of the UTF-8 string - in bytes is written first, as a 16-bit integer, followed by the bytes - representing the characters of the string. - - @param value The string value to be written. - @throws RangeError If the length is larger than 65535. - - - - - - - - Writes a UTF-8 string to the byte stream. Similar to the - `writeUTF()` method, but `writeUTFBytes()` does not - prefix the string with a 16-bit length word. - - @param value The string value to be written. - - - - - - - - Writes a 32-bit unsigned integer to the byte stream. - - @param value An unsigned integer to write to the byte stream. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openfl.utils.ByteArrayData - haxe.io.Bytes - - - - - - - The CompressionAlgorithm class defines string constants for the names of - compress and uncompress options. These constants are used as values of the - `algorithm` parameter of the `ByteArray.compress()` and - `ByteArray.uncompress()` methods. - - - - - - cast 0 - - - - Defines the string to use for the deflate compression algorithm. - - - - - cast 1 - - - - - - - - cast 2 - - - - Defines the string to use for the zlib compression algorithm. - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Defines the string to use for the deflate compression algorithm. - - - - - cast 1 - - - - - - - - cast 2 - - - - Defines the string to use for the zlib compression algorithm. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Dictionary class lets you create a dynamic collection of properties, - which uses strict equality (`===`) for key comparison. When an object is - used as a key, the object's identity is used to look up the object, and - not the value returned from calling `toString()` on it. - The following statements show the relationship between a Dictionary object - and a key object: - - ```as3 - var dict = new Dictionary(); - var obj = new Object(); - var key:Object = new Object(); - key.toString = function() { return "key" } - - dict[key] = "Letters"; - obj["key"] = "Letters"; - - dict[key] == "Letters"; // true - obj["key"] == "Letters"; // true - obj[key] == "Letters"; // true because key == "key" is true b/c key.toString == "key" - dict["key"] == "Letters"; // false because "key" === key is false - delete dict[key]; //removes the key - ``` - K - - - - - - - - - - - Returns `true` if `key` has a mapping, `false` otherwise. - - If key is `null`, the result is unspecified. - - - - - - - - - - - - Returns the current mapping of `key`. - - If no such mapping exists, `null` is returned. - - Note that a check like `dict.get(key) == null` can hold for two reasons: - - 1. The Dictionary has no mapping for `key` - 2. The Dictionary has a mapping with a value of `null` - - If it is important to distinguish these cases, `exists()` should be used. - - If `key` is null, the result is unspecified. - - - - - - - - - - - - - Returns an Iterator over the keys and values of this Dictionary. - - The order of values is undefined. - - - - - - - - - - - Removes the mapping of `key` and returns `true` if such a mapping existed, `false` otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - - - Maps `key` to `value`. - - If `key` already has a mapping, the previous value disappears. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - Returns an Iterator over the keys of this Dictionary. - - The order of values is undefined. - - - - - - - - - - Returns an Iterator over each of the values of this Dictionary. - - The order of values is undefined. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns `true` if `key` has a mapping, `false` otherwise. - - If key is `null`, the result is unspecified. - - - - - - - - - - - - Returns the current mapping of `key`. - - If no such mapping exists, `null` is returned. - - Note that a check like `dict.get(key) == null` can hold for two reasons: - - 1. The Dictionary has no mapping for `key` - 2. The Dictionary has a mapping with a value of `null` - - If it is important to distinguish these cases, `exists()` should be used. - - If `key` is null, the result is unspecified. - - - - - - - - - - - - - Returns an Iterator over the keys and values of this Dictionary. - - The order of values is undefined. - - - - - - - - - - - Removes the mapping of `key` and returns `true` if such a mapping existed, `false` otherwise. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - - - - Maps `key` to `value`. - - If `key` already has a mapping, the previous value disappears. - - If `key` is `null`, the result is unspecified. - - - - - - - - - - Returns an Iterator over the keys of this Dictionary. - - The order of values is undefined. - - - - - - - - - - Returns an Iterator over each of the values of this Dictionary. - - The order of values is undefined. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Binary search through floatKeys array, which is sorted, to find an index of a given key. If the array - doesn't contain such key -1 is returned. - - - - - - - - - Insert the key at a proper index in the array and return the index. The array must will remain sorted. - The keys are unique so if the key already existis in the array it isn't added but it's index is returned. - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - hide - - - - - - - - - - - - - The Endian class contains values that denote the byte order used to - represent multibyte numbers. The byte order is either bigEndian (most - significant byte first) or littleEndian (least significant byte first). - - OpenFL content can interface with a server by using the binary protocol of - that server, directly. Some servers use the bigEndian byte order and some - servers use the littleEndian byte order. Most servers on the Internet use - the bigEndian byte order because "network byte order" is bigEndian. The - littleEndian byte order is popular because the Intel x86 architecture uses - it. Use the endian byte order that matches the protocol of the server that - is sending or receiving data. - - - - - - cast 0 - - - - Indicates the most significant byte of the multibyte number - appears first in the sequence of bytes. - - The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal - digits per byte). The most significant byte is 0x12. The - least significant byte is 0x78. (For the equivalent decimal - number, 305419896, the most significant digit is 3, and the - least significant digit is 6). - - A stream using the bigEndian byte order (the most significant - byte first) writes: - - ``` - 12 34 56 78 - ``` - - - - - cast 1 - - - - Indicates the least significant byte of the multibyte number - appears first in the sequence of bytes. - - The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal - digits per byte). The most significant byte is 0x12. The - least significant byte is 0x78. (For the equivalent decimal - number, 305419896, the most significant digit is 3, and the - least significant digit is 6). - - A stream using the littleEndian byte order (the most - significant byte first) writes: - - ``` - 78 56 34 12 - ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast 0 - - - - Indicates the most significant byte of the multibyte number - appears first in the sequence of bytes. - - The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal - digits per byte). The most significant byte is 0x12. The - least significant byte is 0x78. (For the equivalent decimal - number, 305419896, the most significant digit is 3, and the - least significant digit is 6). - - A stream using the bigEndian byte order (the most significant - byte first) writes: - - ``` - 12 34 56 78 - ``` - - - - - cast 1 - - - - Indicates the least significant byte of the multibyte number - appears first in the sequence of bytes. - - The hexadecimal number 0x12345678 has 4 bytes (2 hexadecimal - digits per byte). The most significant byte is 0x12. The - least significant byte is 0x78. (For the equivalent decimal - number, 305419896, the most significant digit is 3, and the - least significant digit is 6). - - A stream using the littleEndian byte order (the most - significant byte first) writes: - - ``` - 78 56 34 12 - ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="13" static="1"> - - - - - - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - - hide - - - - - - - - - - - - - - - - - - - - - - - <__fieldRead get="inline" set="null" line="92" static="1"> - - - - - - a.b - - <__fieldWrite get="inline" set="null" line="99" static="1"> - - - - - - - a.b - - <__get public="1" set="method" line="106" static="1"> - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__set public="1" get="inline" set="null" line="124" static="1"> - - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__getArray public="1" set="method" line="135" static="1"> - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__setArray public="1" set="method" line="143" static="1"> - - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__negate get="inline" set="null" line="189" static="1"> - - - - - -A - - <__preIncrement get="inline" set="null" line="195" static="1"> - - - - - ++A - - <__postIncrement get="inline" set="null" line="201" static="1"> - - - - - A++ - - <__preDecrement get="inline" set="null" line="207" static="1"> - - - - - --A - - <__postDecrement get="inline" set="null" line="213" static="1"> - - - - - A-- - - <__add get="inline" set="null" line="219" static="1"> - - - - - - A + B - - <__addString get="inline" set="null" line="234" static="1"> - - - - - - - A + B - - - - <__addInt get="inline" set="null" line="240" static="1"> - - - - - - - A + B - - - - <__addFloat set="method" line="246" static="1"> - - - - - - - A + B - - - - <__sub get="inline" set="null" line="252" static="1"> - - - - - - A - B - - <__subInt get="inline" set="null" line="259" static="1"> - - - - - - A - B - - <__intSub get="inline" set="null" line="265" static="1"> - - - - - - A - B - - <__subFloat set="method" line="271" static="1"> - - - - - - A - B - - <__floatSub set="method" line="277" static="1"> - - - - - - A - B - - <__mul set="method" line="283" static="1"> - - - - - - A * B - - <__mulInt get="inline" set="null" line="290" static="1"> - - - - - - - A * B - - - - <__mulFloat set="method" line="296" static="1"> - - - - - - - A * B - - - - <__div set="method" line="302" static="1"> - - - - - - A / B - - <__divInt set="method" line="309" static="1"> - - - - - - A / B - - <__intDiv set="method" line="315" static="1"> - - - - - - A / B - - <__divFloat set="method" line="321" static="1"> - - - - - - A / B - - <__floatDiv set="method" line="327" static="1"> - - - - - - A / B - - <__mod set="method" line="333" static="1"> - - - - - - A % B - - <__modInt set="method" line="340" static="1"> - - - - - - A % B - - <__intMod set="method" line="346" static="1"> - - - - - - A % B - - <__modFloat set="method" line="352" static="1"> - - - - - - A % B - - <__floatMod set="method" line="358" static="1"> - - - - - - A % B - - <__eq set="method" line="364" static="1"> - - - - - - A == B - - <__eqDynamic set="method" line="371" static="1"> - - - - - - - A == B - - - - <__neq set="method" line="377" static="1"> - - - - - - A != B - - <__neqDynamic set="method" line="384" static="1"> - - - - - - - A != B - - - - <__lt set="method" line="390" static="1"> - - - - - - - - <__ltInt set="method" line="397" static="1"> - - - - - - - - <__intLt set="method" line="403" static="1"> - - - - - - - - <__ltFloat set="method" line="409" static="1"> - - - - - - - - <__floatLt set="method" line="415" static="1"> - - - - - - - - <__lte set="method" line="421" static="1"> - - - - - - - - <__lteInt set="method" line="428" static="1"> - - - - - - - - <__intLte set="method" line="434" static="1"> - - - - - - - - <__lteFloat set="method" line="440" static="1"> - - - - - - - - <__floatLte set="method" line="446" static="1"> - - - - - - - - <__gt set="method" line="452" static="1"> - - - - - - B]]> - - <__gtInt set="method" line="459" static="1"> - - - - - - B]]> - - <__intGt set="method" line="465" static="1"> - - - - - - B]]> - - <__gtFloat set="method" line="471" static="1"> - - - - - - B]]> - - <__floatGt set="method" line="477" static="1"> - - - - - - B]]> - - <__gte set="method" line="483" static="1"> - - - - - - = B]]> - - <__gteInt set="method" line="490" static="1"> - - - - - - = B]]> - - <__intGte set="method" line="496" static="1"> - - - - - - = B]]> - - <__gteFloat set="method" line="502" static="1"> - - - - - - = B]]> - - <__floatGte set="method" line="508" static="1"> - - - - - - = B]]> - - <__complement set="method" line="514" static="1"> - - - - - ~A - - <__and set="method" line="520" static="1"> - - - - - - - - <__andInt set="method" line="527" static="1"> - - - - - - - - - - - <__or set="method" line="533" static="1"> - - - - - - A | B - - <__orInt set="method" line="540" static="1"> - - - - - - - A | B - - - - <__xor set="method" line="546" static="1"> - - - - - - A ^ B - - <__xorInt set="method" line="553" static="1"> - - - - - - - A ^ B - - - - <__shr set="method" line="559" static="1"> - - - - - - > B]]> - - <__shrInt set="method" line="566" static="1"> - - - - - - > B]]> - - <__intShr set="method" line="572" static="1"> - - - - - - > B]]> - - <__ushr set="method" line="578" static="1"> - - - - - - >> B]]> - - <__ushrInt set="method" line="585" static="1"> - - - - - - >> B]]> - - <__intUshr set="method" line="591" static="1"> - - - - - - >> B]]> - - <__shl set="method" line="597" static="1"> - - - - - - - - <__shlInt set="method" line="604" static="1"> - - - - - - - - <__intShl set="method" line="610" static="1"> - - - - - - - - - - - - <_new public="1" get="inline" set="null" line="13" static="1"> - - - - - - - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - - hide - - - - - - - - - - - - - - - - - - - - - - - <__fieldRead get="inline" set="null" line="92" static="1"> - - - - - - a.b - - <__fieldWrite get="inline" set="null" line="99" static="1"> - - - - - - - a.b - - <__get public="1" set="method" line="106" static="1"> - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__set public="1" get="inline" set="null" line="124" static="1"> - - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__getArray public="1" set="method" line="135" static="1"> - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - <__setArray public="1" set="method" line="143" static="1"> - - - - - - - - "checkstyle:FieldDocComment" - - - hide - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <__negate get="inline" set="null" line="189" static="1"> - - - - - -A - - <__preIncrement get="inline" set="null" line="195" static="1"> - - - - - ++A - - <__postIncrement get="inline" set="null" line="201" static="1"> - - - - - A++ - - <__preDecrement get="inline" set="null" line="207" static="1"> - - - - - --A - - <__postDecrement get="inline" set="null" line="213" static="1"> - - - - - A-- - - <__add get="inline" set="null" line="219" static="1"> - - - - - - A + B - - <__addString get="inline" set="null" line="234" static="1"> - - - - - - - A + B - - - - <__addInt get="inline" set="null" line="240" static="1"> - - - - - - - A + B - - - - <__addFloat set="method" line="246" static="1"> - - - - - - - A + B - - - - <__sub get="inline" set="null" line="252" static="1"> - - - - - - A - B - - <__subInt get="inline" set="null" line="259" static="1"> - - - - - - A - B - - <__intSub get="inline" set="null" line="265" static="1"> - - - - - - A - B - - <__subFloat set="method" line="271" static="1"> - - - - - - A - B - - <__floatSub set="method" line="277" static="1"> - - - - - - A - B - - <__mul set="method" line="283" static="1"> - - - - - - A * B - - <__mulInt get="inline" set="null" line="290" static="1"> - - - - - - - A * B - - - - <__mulFloat set="method" line="296" static="1"> - - - - - - - A * B - - - - <__div set="method" line="302" static="1"> - - - - - - A / B - - <__divInt set="method" line="309" static="1"> - - - - - - A / B - - <__intDiv set="method" line="315" static="1"> - - - - - - A / B - - <__divFloat set="method" line="321" static="1"> - - - - - - A / B - - <__floatDiv set="method" line="327" static="1"> - - - - - - A / B - - <__mod set="method" line="333" static="1"> - - - - - - A % B - - <__modInt set="method" line="340" static="1"> - - - - - - A % B - - <__intMod set="method" line="346" static="1"> - - - - - - A % B - - <__modFloat set="method" line="352" static="1"> - - - - - - A % B - - <__floatMod set="method" line="358" static="1"> - - - - - - A % B - - <__eq set="method" line="364" static="1"> - - - - - - A == B - - <__eqDynamic set="method" line="371" static="1"> - - - - - - - A == B - - - - <__neq set="method" line="377" static="1"> - - - - - - A != B - - <__neqDynamic set="method" line="384" static="1"> - - - - - - - A != B - - - - <__lt set="method" line="390" static="1"> - - - - - - - - <__ltInt set="method" line="397" static="1"> - - - - - - - - <__intLt set="method" line="403" static="1"> - - - - - - - - <__ltFloat set="method" line="409" static="1"> - - - - - - - - <__floatLt set="method" line="415" static="1"> - - - - - - - - <__lte set="method" line="421" static="1"> - - - - - - - - <__lteInt set="method" line="428" static="1"> - - - - - - - - <__intLte set="method" line="434" static="1"> - - - - - - - - <__lteFloat set="method" line="440" static="1"> - - - - - - - - <__floatLte set="method" line="446" static="1"> - - - - - - - - <__gt set="method" line="452" static="1"> - - - - - - B]]> - - <__gtInt set="method" line="459" static="1"> - - - - - - B]]> - - <__intGt set="method" line="465" static="1"> - - - - - - B]]> - - <__gtFloat set="method" line="471" static="1"> - - - - - - B]]> - - <__floatGt set="method" line="477" static="1"> - - - - - - B]]> - - <__gte set="method" line="483" static="1"> - - - - - - = B]]> - - <__gteInt set="method" line="490" static="1"> - - - - - - = B]]> - - <__intGte set="method" line="496" static="1"> - - - - - - = B]]> - - <__gteFloat set="method" line="502" static="1"> - - - - - - = B]]> - - <__floatGte set="method" line="508" static="1"> - - - - - - = B]]> - - <__complement set="method" line="514" static="1"> - - - - - ~A - - <__and set="method" line="520" static="1"> - - - - - - - - <__andInt set="method" line="527" static="1"> - - - - - - - - - - - <__or set="method" line="533" static="1"> - - - - - - A | B - - <__orInt set="method" line="540" static="1"> - - - - - - - A | B - - - - <__xor set="method" line="546" static="1"> - - - - - - A ^ B - - <__xorInt set="method" line="553" static="1"> - - - - - - - A ^ B - - - - <__shr set="method" line="559" static="1"> - - - - - - > B]]> - - <__shrInt set="method" line="566" static="1"> - - - - - - > B]]> - - <__intShr set="method" line="572" static="1"> - - - - - - > B]]> - - <__ushr set="method" line="578" static="1"> - - - - - - >> B]]> - - <__ushrInt set="method" line="585" static="1"> - - - - - - >> B]]> - - <__intUshr set="method" line="591" static="1"> - - - - - - >> B]]> - - <__shl set="method" line="597" static="1"> - - - - - - - - <__shlInt set="method" line="604" static="1"> - - - - - - - - <__intShl set="method" line="610" static="1"> - - - - - - - - - - - - - - "checkstyle:FieldDocComment" - - "haxe.lang.Iterator" - - - - - - - "checkstyle:FieldDocComment" - - "haxe.lang.Iterable" - - - - - - hide - - - - - - - - - The total number of times the timer has fired since it started at zero. If - the timer has been reset, only the fires since the reset are counted. - - - - The delay, in milliseconds, between timer events. If you set the delay - interval while the timer is running, the timer will restart at the same - `repeatCount` iteration. - - **Note:** A `delay` lower than 20 milliseconds is not - recommended. Timer frequency is limited to 60 frames per second, meaning a - delay lower than 16.6 milliseconds causes runtime problems. - - @throws Error Throws an exception if the delay specified is negative or - not a finite number. - - - - The total number of times the timer is set to run. If the repeat count is - set to 0, the timer continues forever or until the `stop()` - method is invoked or the program stops. If the repeat count is nonzero, - the timer runs the specified number of times. If `repeatCount` - is set to a total that is the same or less then `currentCount` - the timer stops and will not fire again. - - - - The timer's current state; `true` if the timer is running, - otherwise `false`. - - <__delay> - - - - <__repeatCount> - - - - <__timer> - - - - <__timerID> - - - - - - Stops the timer, if it is running, and sets the `currentCount` - property back to 0, like the reset button of a stopwatch. Then, when - `start()` is called, the timer instance runs for the specified - number of repetitions, as set by the `repeatCount` value. - - - - Starts the timer, if it is not already running. - - - - Stops the timer. When `start()` is called after - `stop()`, the timer instance runs for the _remaining_ - number of repetitions, as set by the `repeatCount` property. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { repeatCount : 0 } - Constructs a new Timer object with the specified `delay` and - `repeatCount` states. - - The timer does not start automatically; you must call the - `start()` method to start it. - - @param delay The delay between timer events, in milliseconds. A - `delay` lower than 20 milliseconds is not - recommended. Timer frequency is limited to 60 frames - per second, meaning a delay lower than 16.6 - milliseconds causes runtime problems. - @param repeatCount Specifies the number of repetitions. If zero, the timer - repeats infinitely. If nonzero, the timer runs the - specified number of times and then stops. - @throws Error if the delay specified is negative or not a finite number - - The Timer class is the interface to timers, which let you run code on a - specified time sequence. Use the `start()` method to start a - timer. Add an event listener for the `timer` event to set up - code to be run on the timer interval. - - You can create Timer objects to run once or repeat at specified - intervals to execute code on a schedule. Depending on the SWF file's - framerate or the runtime environment(available memory and other factors), - the runtime may dispatch events at slightly offset intervals. For example, - if a SWF file is set to play at 10 frames per second(fps), which is 100 - millisecond intervals, but your timer is set to fire an event at 80 - milliseconds, the event will be dispatched close to the 100 millisecond - interval. Memory-intensive scripts may also offset the events. - - @event timer Dispatched whenever a Timer object reaches an interval - specified according to the `Timer.delay` - property. - @event timerComplete Dispatched whenever it has completed the number of - requests set by `Timer.repeatCount`. - - - "tags=\"haxe,release\"" - - - - - - - - - <__sentWarnings expr="new Map()" line="19" static="1"> - - - - - - new Map() - - - - - - - - - "checkstyle:NullableParameter" - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - <__pool public="1" expr="new ObjectPool<TouchData>(function() return new TouchData(), function(data) data.reset())" line="16" static="1"> - - (function() return new TouchData(), function(data) data.reset())]]> - - - - - "checkstyle:Dynamic" - - - - - - - - "tags=\"haxe,release\"" - - "checkstyle:FieldDocComment" - - - - - - - - * Triggered after the characters XML has been loaded. - - - - * Triggered after the character has been entirely loaded. - - - - - - - * Triggered every frame. - - - - - - - * Triggered everytime the character will dance (play its idle animation). - - - - - - - * Triggered every beat - - - - - - - * Triggered every step - - - - - - - * Triggered everytime the game tries to play an animation on your character. - - - - - - - * Triggered everytime the game tries to get your player's camera position. - * This event cannot be cancelled. - - - - - - - * Triggered everytime the game tries to play a sing, alt sing or miss animation. - - * Contains all callbacks you can add in a Character script. - * - * To add a Character script, create a file here: `data/characters/my-char.hx` - - - - - * Called whenever the game gains focus. - - - - * Called whenever the game loses focus. - - - - - - - - * Called whenever the game loses focus. - * @param width Width of the game - * @param height Height of the game - - - - * Called after the screen has been drawn. - - - - * Called after the game has been reset. - - - - * Called after the game has been started. - - - - * Called after the state has been switched. - - - - - - - * Called after the game has been updated. - * - * Aliases: `postUpdate` - * - * @param elapsed Time elapsed since last frame - - - - * Called before the game draws on screen. - - - - * Called before the game resets. - - - - * Called before the game starts. - - - - - - - * Called before the state creates. - - - - * Called before the state switches. - - - - - - - * Called before the game updates. - * - * Aliases: `preUpdate` - - * A global script is a special kind of script that runs on everywhere on your mod: menus, game, etc... - * - * To create one, go to data and create a script named "global", then press F5 in game to hot reload. - * - * All flixel signals are automatically binded, as shown below. - - - - - * Triggered after the characters has been created, during PlayState's creation. - - - - * Triggered at the very end of PlayState's creation - - - - - - - * Triggered every frame. - * @param elapsed Time elapsed since last frame. - - - - - - - * Triggered at the end of every frame. - * @param elapsed Time elapsed since last frame. - - - - - - - * Triggered every step - * @param curStep Current step. - - - - - - - * Triggered every beat. - * @param curBeat Current beat. - - - - - - - * Triggered every countdown. - * @param event Countdown event. - - - - - - - * Triggered after every countdown. - * @param event Countdown event. - - - - - - - * Triggered whenever the player hits a note. - * @param note Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour. - - - - - - - * Triggered whenever the opponent hits a note. - * @param note Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour. - - - - - - - * Triggered whenever the input system updates. - * @param note Event object with the pressed notes, which allows you to alter which notes are being pressed during this frame, or simply cancel the input update. - - - - - - - * Triggered after the input system updates. - * @param note Event object with the pressed, justPressed and justReleased notes. - - - - - - - * Triggered on each note creation - * @param event Event object containing information about the note. - - - - - - - * Triggered on each strum creation - * @param event Event object containing information about the strum. - - - - - - - * Triggered on substate open. - * @param event Event object containing the substate, which is cancellable. - - - - - - - * Triggered on substate close. - * @param event Event object containing the substate, which is cancellable. - - * Contains all callbacks you can add in modcharts and stage scripts. - * - * - * - * NOTE: In case you're scripting a stage, all sprites of that stage are directly accessible via their name. - * - * Ex: If you added a `superCoolBG` element in your stage XML, you'll be able to access it via scripts by using `superCoolBG`. - - - - - - The user id for the file owner. - - - - The size of the file, in bytes. - - - - The device type on which stat resides (special files only). - - - - The number of hard links to stat. - - - - The last modification time for the file. - - - - The permission bits of stat. The meaning of the bits is platform dependent. - - - - The inode number for stat. - - - - The user group id for the file owner. - - - - The device on which stat resides. - - - - The creation time for the file (not all file systems support this). - - - - The last access time for the file (when enabled by the file system). - - - File information, as given by `sys.FileSystem.stat`. - - - - - - - - Returns `true` if the file or directory specified by `path` exists. - - - - - - - - Renames/moves the file or directory specified by `path` to `newPath`. - - If `path` is not a valid file system entry, or if it is not accessible, - or if `newPath` is not accessible, an exception is thrown. - - - - - - - - Returns `FileStat` information for the file or directory specified by - `path`. - - - - - - - Returns the full path of the file or directory specified by `relPath`, - which is relative to the current working directory. Symlinks will be - followed and the path will be normalized. - - - - - - - Returns the full path of the file or directory specified by `relPath`, - which is relative to the current working directory. The path doesn't - have to exist. - - - - - - - - - - - Returns `true` if the file or directory specified by `path` is a directory. - - If `path` is not a valid file system entry or if its destination is not - accessible, an exception is thrown. - - - - - - - Creates a directory specified by `path`. - - This method is recursive: The parent directories don't have to exist. - - If the directory cannot be created, an exception is thrown. - - - - - - - Deletes the file specified by `path`. - - If `path` does not denote a valid file, or if that file cannot be - deleted, an exception is thrown. - - - - - - - Deletes the directory specified by `path`. Only empty directories can - be deleted. - - If `path` does not denote a valid directory, or if that directory cannot - be deleted, an exception is thrown. - - - - - - - Returns the names of all files and directories in the directory specified - by `path`. `"."` and `".."` are not included in the output. - - If `path` does not denote a valid directory, an exception is thrown. - - - - - - This class provides information about files and directories. - - If `null` is passed as a file path to any function in this class, the - result is unspecified, and may differ from target to target. - - See `sys.io.File` for the complementary file API. - - - "]]> - - - - - - - - - - - - - - - null - - - - - - - Makes a synchronous request to `url`. - - This creates a new Http instance and makes a GET request by calling its - `request(false)` method. - - If `url` is null, the result is unspecified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { mimeType : "application/octet-stream" } - - "Use fileTransfer instead" - - - - - - - - - - - - { mimeType : "application/octet-stream" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Get amount of rows left in this set. - Depending on a database management system accessing this field may cause - all rows to be fetched internally. However, it does not affect `next` calls. - - - - Amount of columns in a row. - Depending on a database management system may return `0` if the query - did not match any rows. - - - - Tells whether there is a row to be fetched. - - - - Fetch next row. - - - - Fetch all the rows not fetched yet. - - - - - - - Get the value of `n`-th column of the current row. - Throws an exception if the re - - - - - - - Get the value of `n`-th column of the current row as an integer value. - - - - - - - Get the value of `n`-th column of the current row as a float value. - - - - Get the list of column names. - Depending on a database management system may return `null` if there's no - more rows to fetch. - - - - - - - <__r> - - - - - - - - - - - - - - - - - - - - - - - - - - - <__use_date expr="Date" line="197" static="1"> - - Date - - <__c> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Opens a new SQLite connection on the specified path. - - (cs) You will need a SQLite ADO.NET Provider - (see http://www.mono-project.com/docs/database-access/providers/sqlite/). - Also note that this will try to open an assembly named `Mono.Data.Sqlite` - if it wasn't loaded yet. - - (java) You will need a SQLite JDBC driver (e.g. - https://github.com/xerial/sqlite-jdbc/releases). - - - "]]> - - - - - - - - - - Retrieves the content of the file specified by `path` as a String. - - If the file does not exist or can not be read, an exception is thrown. - - `sys.FileSystem.exists` can be used to check for existence. - - If `path` is null, the result is unspecified. - - - - - - - Retrieves the binary content of the file specified by `path`. - - If the file does not exist or can not be read, an exception is thrown. - - `sys.FileSystem.exists` can be used to check for existence. - - If `path` is null, the result is unspecified. - - - - - - - - Stores `content` in the file specified by `path`. - - If the file cannot be written to, an exception is thrown. - - If `path` or `content` are null, the result is unspecified. - - - - - - - - Stores `bytes` in the file specified by `path` in binary mode. - - If the file cannot be written to, an exception is thrown. - - If `path` or `bytes` are null, the result is unspecified. - - - - - - - - - - { binary : true } - - Returns an `FileInput` handle to the file specified by `path`. - - If `binary` is true, the file is opened in binary mode. Otherwise it is - opened in non-binary mode. - - If the file does not exist or can not be read, an exception is thrown. - - Operations on the returned `FileInput` handle read on the opened file. - - File handles should be closed via `FileInput.close` once the operation - is complete. - - If `path` is null, the result is unspecified. - - - - - - - - - - { binary : true } - - Returns an `FileOutput` handle to the file specified by `path`. - - If `binary` is true, the file is opened in binary mode. Otherwise it is - opened in non-binary mode. - - If the file cannot be written to, an exception is thrown. - - Operations on the returned `FileOutput` handle write to the opened file. - If the file existed, its previous content is overwritten. - - File handles should be closed via `FileOutput.close` once the operation - is complete. - - If `path` is null, the result is unspecified. - - - - - - - - - - { binary : true } - - Similar to `sys.io.File.write`, but appends to the file if it exists - instead of overwriting its contents. - - - - - - - - - - { binary : true } - - Similar to `sys.io.File.append`. While `append` can only seek or write - starting from the end of the file's previous contents, `update` can - seek to any position, so the file's previous contents can be - selectively overwritten. - - - - - - - - Copies the contents of the file specified by `srcPath` to the file - specified by `dstPath`. - - If the `srcPath` does not exist or cannot be read, or if the `dstPath` - file cannot be written to, an exception is thrown. - - If the file at `dstPath` exists, its contents are overwritten. - - If `srcPath` or `dstPath` are null, the result is unspecified. - - API for reading and writing files. - - See `sys.FileSystem` for the complementary file system API. - - - - - - - - <__f> - - - - - - - - - - - - - - - - - - - - - - - - - - Use `sys.io.File.read` to create a `FileInput`. - - - - - - - - <__f> - - - - - - - - - - - - - - - - - - - - - - - Use `sys.io.File.write` to create a `FileOutput`. - - - - - - - - - - - - - -

      - - - - - - - - - - - - - - - - - -
      - - -

      - - - - - - - - - - - - - - - -
      - -

      - - - Standard output. The output stream where a process writes its output data. - - - - Standard error. The output stream to output error messages or diagnostics. - - - - Standard input. The stream data going into a process. - - - - Return the process ID. - - - - - - - { block : true } - Query the exit code of the process. - If `block` is true or not specified, it will block until the process terminates. - If `block` is false, it will return either the process exit code if it's already terminated or null if it's still running. - If the process has already exited, return the exit code immediately. - - - - Close the process handle and release the associated resources. - All `Process` fields should not be used after `close()` is called. - - - - Kill the process. - - - - - - - - - Construct a `Process` object, which run the given command immediately. - - Command arguments can be passed in two ways: 1. using `args`, 2. appending to `cmd` and leaving `args` as `null`. - - 1. When using `args` to pass command arguments, each argument will be automatically quoted, and shell meta-characters will be escaped if needed. - `cmd` should be an executable name that can be located in the `PATH` environment variable, or a path to an executable. - - 2. When `args` is not given or is `null`, command arguments can be appended to `cmd`. No automatic quoting/escaping will be performed. `cmd` should be formatted exactly as it would be when typed at the command line. - It can run executables, as well as shell commands that are not executables (e.g. on Windows: `dir`, `cd`, `echo` etc). - - `detached` allows the created process to be standalone. You cannot communicate with it but you can look at its exit code. Not supported on php. - - `close()` should be called when the `Process` is no longer used. - - - - - -
      - - - - - - - - - - - - - - An address is used to represent a port on a given host ip. - It is used by `sys.net.UdpSocket`. - - - - - Returns the local computer host name - - - - The provided host string. - - - - The actual IP corresponding to the host. - - - - - Returns the IP representation of the host - - - - Perform a reverse-DNS query to resolve a host name from an IP. - - - - - - - Creates a new Host : the name can be an IP in the form "127.0.0.1" or an host name such as "google.com", in which case - the corresponding IP address is resolved using DNS. An exception occur if the host name could not be found. - - A given IP host name. - - - - - - - - <__s> - - - - - - - - - - - - - - - - - <__s> - - - - - - - - - - - - - - - - - - - - <__s> - <__timeout expr="0.0"> - - 0.0 - - <__blocking expr="true"> - - true - - <__fastSend expr="false"> - - false - - - - The stream on which you can read available data. By default the stream is blocking until the requested data is available, - use `setBlocking(false)` or `setTimeout` to prevent infinite waiting. - - - - The stream on which you can send data. Please note that in case the output buffer you will block while writing the data, use `setBlocking(false)` or `setTimeout` to prevent that. - - - - A custom value that can be associated with the socket. Can be used to retrieve your custom infos after a `select`. - * - - - - - - Closes the socket : make sure to properly close all your sockets or you will crash when you run out of file descriptors. - - - - Read the whole data available on the socket. - - *Note*: this is **not** meant to be used together with `setBlocking(false)`, - as it will always throw `haxe.io.Error.Blocked`. `input` methods should be used directly instead. - - - - - - - Write the whole data to the socket output. - - *Note*: this is **not** meant to be used together with `setBlocking(false)`, as - `haxe.io.Error.Blocked` may be thrown mid-write with no indication of how many bytes have been written. - `output.writeBytes()` should be used instead as it returns this information. - - - - - - - - Connect to the given server host/port. Throw an exception in case we couldn't successfully connect. - - - - - - - Allow the socket to listen for incoming questions. The parameter tells how many pending connections we can have until they get refused. Use `accept()` to accept incoming connections. - - - - - - - - Shutdown the socket, either for reading or writing. - - - - - - - - Bind the socket to the given host/port so it can afterwards listen for connections there. - - - - Accept a new connected client. This will return a connected socket on which you can read/write some data. - - - - - - - - Return the information about the other side of a connected socket. - - - - - - - - Return the information about our side of a connected socket. - - - - - - - Gives a timeout (in seconds) after which blocking socket operations (such as reading and writing) will abort and throw an exception. - - - - Block until some data is available for read on the socket. - - - - - - - Change the blocking mode of the socket. A blocking socket is the default behavior. A non-blocking socket will abort blocking operations immediately by throwing a haxe.io.Error.Blocked value. - - - - - - - Allows the socket to immediately send the data when written to its output : this will cause less ping but might increase the number of packets / data size, especially when doing a lot of small writes. - - - - Creates a new unconnected socket. - - A TCP socket class : allow you to both connect to a given server and exchange messages or start your own server and wait for connections. - - - - - - - - - - - - - - - - - Sends data to the specified target host/port address. - - - - - - - - - - Reads data from any incoming address and store the receiver address into the address parameter. - - - - - - - Allows the socket to send to broadcast addresses. - - - A UDP socket class - - - - - - - - - - - - - - - - - <__h> - <__x> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sys.ssl.Socket - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cast "MD5" - - - - - - - - cast "SHA1" - - - - - - - - cast "SHA224" - - - - - - - - cast "SHA256" - - - - - - - - cast "SHA384" - - - - - - - - cast "SHA512" - - - - - - - - cast "RIPEMD160" - - - - - - - - - - - - cast "MD5" - - - - - - - - cast "SHA1" - - - - - - - - cast "SHA224" - - - - - - - - cast "SHA256" - - - - - - - - cast "SHA384" - - - - - - - - cast "SHA512" - - - - - - - - cast "RIPEMD160" - - - - - - - - - - - - - - - - - - - - - - - - - - <__k> - - - - - - - - - - - - <__s> - - sys.ssl.Socket - - - - - - - - - - - - - - - - - - <__s> - - sys.ssl.Socket - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - Define if peer certificate is verified during SSL handshake. - - - - - - - - - - - - - - - - - - - - - - - - Perform the SSL handshake. - - - - - - - Configure the certificate chain for peer certificate verification. - - - - - - - Configure the hostname for Server Name Indication TLS extension. - - - - - - - - Configure own certificate and private key. - - - - - - - - - - - - - - - - - - Configure additionals certificates and private keys for Server Name Indication extension. - The callback may be called during handshake to determine the certificate to use. - - - - - - - - - - Return the certificate received from the other side of a connection. - - - - - - - A TLS socket class : allow you to both connect to a given server and exchange messages or start your own server and wait for connections. - - - - - - - - - - - - - - Adds an element at the end of `this` Deque. - - (Java,Jvm): throws `java.lang.NullPointerException` if `i` is `null`. - - - - - - - - Adds an element at the front of `this` Deque. - - (Java,Jvm): throws `java.lang.NullPointerException` if `i` is `null`. - - - - - - - - Tries to retrieve an element from the front of `this` Deque. - - If an element is available, it is removed from the queue and returned. - - If no element is available and `block` is `false`, `null` is returned. - - Otherwise, execution blocks until an element is available and returns it. - - - - - Create a new Deque instance which is initially empty. - - A Deque is a double-ended queue with a `pop` method that can block until - an element is available. It is commonly used to synchronize threads. - - - - - - - - - - - - - - - - - - - - - - - Amount of alive threads in this pool. - - - - Indicates if `shutdown` method of this pool has been called. - - - - - - - Submit a task to run in a thread. - - Throws an exception if the pool is shut down. - - - - Initiates a shutdown. - All previousely submitted tasks will be executed, but no new tasks will - be accepted. - - Multiple calls to this method have no effect. - - A thread pool interface. - - - - - - - - Indicates if `shutdown` method of this pool has been called. - - <_isShutdown expr="false"> - - false - - - - - [] - - - - Void>()]]> - - - - new Mutex() - - - - - - - - Submit a task to run in a thread. - - Throws an exception if the pool is shut down. - - - - Initiates a shutdown. - All previousely submitted tasks will be executed, but no new tasks will - be accepted. - - Multiple calls to this method have no effect. - - - - - - - - - { threadTimeout : 60 } - Create a new thread pool with `threadsCount` threads. - - If a worker thread does not receive a task for `threadTimeout` seconds it - is terminated. - - Thread pool with a varying amount of threads. - - A new thread is spawned every time a task is submitted while all existing - threads are busy. - - - - - - - false - - - - new Mutex() - - - - new Lock() - - - - - - - false - - - - - - - - - - - - - - - - There's already an event waiting to be executed - No new events are expected. - - - An event is expected to arrive at any time. - If `time` is specified, then the event will be ready at that time for sure. - - - - An event is expected to be ready for execution at `time`. - - When an event loop has an available event to execute. - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - Indicates if `shutdown` method of this pool has been called. - - <_isShutdown expr="false"> - - false - - - - - - new Mutex() - - - - Void>()]]> - - - - - - - Submit a task to run in a thread. - - Throws an exception if the pool is shut down. - - - - Initiates a shutdown. - All previousely submitted tasks will be executed, but no new tasks will - be accepted. - - Multiple calls to this method have no effect. - - - - - - - Create a new thread pool with `threadsCount` threads. - - Thread pool with a constant amount of threads. - Threads in the pool will exist until the pool is explicitly shut down. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { timeout : -1 } - - Waits for the lock to be released, or `timeout` (in seconds) - to expire. Returns `true` if the lock is released and `false` - if a time-out occurs. - - - - - Releases the lock once. - - The thread does not need to own the lock in order to release - it. Each call to `release` allows exactly one call to `wait` - to execute. - - - - - Creates a new Lock which is initially locked. - - A Lock allows blocking execution until it has been unlocked. It keeps track - of how often `release` has been called, and blocks exactly as many `wait` - calls. - - The order of the `release` and `wait` calls is irrelevant. That is, a Lock - can be released before anyone waits for it. In that case, the `wait` call - will execute immediately. - - Usage example: - - ```haxe - var lock = new Lock(); - var elements = [1, 2, 3]; - for (element in elements) { - // Create one thread per element - new Thread(function() { - trace(element); - Sys.sleep(1); - // Release once per thread = 3 times - lock.release(); - }); - } - for (_ in elements) { - // Wait 3 times - lock.wait(); - } - trace("All threads finished"); - ``` - - - - - - - - - - - - - - { msg : "Event loop is not available. Refer to sys.thread.Thread.runWithEventLoop." } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - Creates thread local storage. This is placeholder that can store - a value that will be different depending on the local thread. - Set the tls value to `null` before exiting the thread - or the memory will never be collected. - - Creates thread local storage. - - (hl) Warning: At the moment `Tls` does not protect the value from being - garbage collected. Keep the value reachable to avoid crashes. - - - - - - - - - 0 - - - - - - - 1 - - - - - - false - - - - - - - - - - - - - - - - - <_width> - <_height> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { autoScale : true, height : 240, width : 320 } - - * ... - * @author Tommy S - - - "#include \"LibVLC.cpp\"" - - - - - - "LibVLC::create" - - - - - - - "setPath" - - - - - - - "openMedia" - - - - - - - "play" - - - "play" - - - - - - - - "playInWindow" - - - "playInWindow" - - - - - "stop" - - - - "pause" - - - - "resume" - - - - "togglePause" - - - - - - - "fullscreen" - - - - - - - "showMainWindow" - - - - "getLength" - - - - "getDuration" - - - - "getWidth" - - - - "getHeight" - - - - - - - "getMeta" - - - - "isPlaying" - - - - "isSeekable" - - - - - - - "setVolume" - - - - "getVolume" - - - - "getTime" - - - - - - - "setTime" - - - - "getPosition" - - - - - - - "setPosition" - - - - - - - "useHWacceleration" - - - - "getLastError" - - - - "getRepeat" - - - - - - - - { repeat : 1 } - "setRepeat" - - - - - "getPixelData" - - - - "getFPS" - - - - "flags" - - - * ... - * @author Tommy S - - - "]]> - "LibVLC.h" - - - "LibVLC*" - - - \ No newline at end of file diff --git a/pages/funkin/away3d/Flx3DView.html b/pages/funkin/away3d/Flx3DView.html deleted file mode 100644 index e5def168..00000000 --- a/pages/funkin/away3d/Flx3DView.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.away3d.Flx3DView

      Static methods

      staticinit():Void

      Constructor

      @:value({ height : 0, width : 0 })new(x:Float, y:Float, width:Int = 0, height:Int = 0)

      Variables

      @:value([])meshes:Array<Mesh> = []

      view3d:View3D

      Methods

      addMesh(mesh:Mesh):Void

      assetComplete(event:Asset3DEvent):Void

      loadMesh(asset:String, callback:Mesh ‑> Void):Void

      \ No newline at end of file diff --git a/pages/funkin/away3d/index.html b/pages/funkin/away3d/index.html deleted file mode 100644 index d5a573bb..00000000 --- a/pages/funkin/away3d/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.away3d

      funkin.away3d

      ..
      Flx3DView

      \ No newline at end of file diff --git a/pages/funkin/menus/FreeplayJSON.html b/pages/funkin/backend/FlxAnimate.html similarity index 63% rename from pages/funkin/menus/FreeplayJSON.html rename to pages/funkin/backend/FlxAnimate.html index 34e7f03c..7227ee8b 100644 --- a/pages/funkin/menus/FreeplayJSON.html +++ b/pages/funkin/backend/FlxAnimate.html @@ -1,10 +1,10 @@ -funkin.menus.FreeplayJSON

      Fields

      addOGSongs:Null<Bool>

      \ No newline at end of file +

      Constructor

      new(?X:Float, ?Y:Float, ?Path:String, ?Settings:Null<Settings>)

      \ No newline at end of file diff --git a/pages/funkin/backend/FunkinSprite.html b/pages/funkin/backend/FunkinSprite.html new file mode 100644 index 00000000..63a286ac --- /dev/null +++ b/pages/funkin/backend/FunkinSprite.html @@ -0,0 +1,10 @@ + + + +funkin.backend.FunkinSprite

      Static methods

      Constructor

      @:value({ Y : 0, X : 0 })new(X:Float = 0, Y:Float = 0, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value([])animDatas:Map<String, AnimData> = []

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(false)debugMode:Bool = false

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Methods

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinegetNameList():Array<String>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      onPropertySet(property:String, value:Dynamic):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      inlineremoveAnimation(name:String):Void

      stepHit(curBeat:Int):Void

      inlinestopAnimation():Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/interfaces/IOffsetCompatible.html b/pages/funkin/backend/FunkinText.html similarity index 54% rename from pages/funkin/interfaces/IOffsetCompatible.html rename to pages/funkin/backend/FunkinText.html index 956b2701..3c5865d6 100644 --- a/pages/funkin/interfaces/IOffsetCompatible.html +++ b/pages/funkin/backend/FunkinText.html @@ -1,10 +1,10 @@ -funkin.interfaces.IOffsetCompatible

      Methods

      @:value({ y : 0, x : 0 })addOffset(anim:String, x:Float = 0, y:Float = 0):Void

      \ No newline at end of file +

      Constructor

      @:value({ Border : true, Size : 16, FieldWidth : 0, Y : 0, X : 0 })new(X:Float = 0, Y:Float = 0, FieldWidth:Float = 0, ?Text:String, Size:Int = 16, Border:Bool = true)

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubException.html b/pages/funkin/backend/MusicBeatGroup.html similarity index 52% rename from pages/funkin/github/GitHubException.html rename to pages/funkin/backend/MusicBeatGroup.html index c75dc7bf..ed857717 100644 --- a/pages/funkin/github/GitHubException.html +++ b/pages/funkin/backend/MusicBeatGroup.html @@ -1,10 +1,10 @@ -funkin.github.GitHubException

      Constructor

      new(apiMessage:String, documentationUrl:String)

      Variables

      \ No newline at end of file +

      Constructor

      new(?X:Float, ?Y:Float, ?MaxSize:Int)

      Methods

      beatHit(curBeat:Int):Void

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/MusicBeatState.html b/pages/funkin/backend/MusicBeatState.html new file mode 100644 index 00000000..0d6e8336 --- /dev/null +++ b/pages/funkin/backend/MusicBeatState.html @@ -0,0 +1,10 @@ + + + +funkin.backend.MusicBeatState

      Static variables

      @:value(false)staticskipTransIn:Bool = false

      @:value(false)staticskipTransOut:Bool = false

      Constructor

      @:value({ scriptsAllowed : true })new(scriptsAllowed:Bool = true, ?scriptName:String)

      Variables

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Methods

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/backend/MusicBeatSubstate.html b/pages/funkin/backend/MusicBeatSubstate.html new file mode 100644 index 00000000..c088a72f --- /dev/null +++ b/pages/funkin/backend/MusicBeatSubstate.html @@ -0,0 +1,10 @@ + + + +funkin.backend.MusicBeatSubstate

      Constructor

      @:value({ scriptsAllowed : true })new(scriptsAllowed:Bool = true, ?scriptName:String)

      Variables

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Methods

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/backend/MusicBeatTransition.html b/pages/funkin/backend/MusicBeatTransition.html new file mode 100644 index 00000000..e4e048c8 --- /dev/null +++ b/pages/funkin/backend/MusicBeatTransition.html @@ -0,0 +1,10 @@ + + + +funkin.backend.MusicBeatTransition

      Constructor

      new(?newState:FlxState)

      Variables

      newState:FlxState

      @:value(null)transitionTween:FlxTween = null

      Methods

      finish():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/backend/XMLAnimType.html b/pages/funkin/backend/XMLAnimType.html new file mode 100644 index 00000000..584a4028 --- /dev/null +++ b/pages/funkin/backend/XMLAnimType.html @@ -0,0 +1,10 @@ + + + +funkin.backend.XMLAnimType

      Static methods

      @:value({ def : NONE })staticfromString(str:String, def:XMLAnimType = NONE):XMLAnimType

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyBEAT:XMLAnimType = 1

      @:value(cast 2)@:impl@:enuminlineread onlyLOOP:XMLAnimType = 2

      @:value(cast 0)@:impl@:enuminlineread onlyNONE:XMLAnimType = 0

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/AssetSource.html b/pages/funkin/backend/assets/AssetSource.html new file mode 100644 index 00000000..04957554 --- /dev/null +++ b/pages/funkin/backend/assets/AssetSource.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.AssetSource

      Variables

      @:value(cast null)@:impl@:enuminlineread onlyBOTH:AssetSource = null

      @:value(cast false)@:impl@:enuminlineread onlyMODS:AssetSource = false

      @:value(cast true)@:impl@:enuminlineread onlySOURCE:AssetSource = true

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/AssetsLibraryList.html b/pages/funkin/backend/assets/AssetsLibraryList.html new file mode 100644 index 00000000..36d29e61 --- /dev/null +++ b/pages/funkin/backend/assets/AssetsLibraryList.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.AssetsLibraryList

      Constructor

      new(?base:AssetLibrary)

      Variables

      base:AssetLibrary

      @:value([])libraries:Array<AssetLibrary> = []

      Methods

      addLibrary(lib:AssetLibrary):AssetLibrary

      @:value({ source : BOTH })existsSpecific(id:String, type:String, source:AssetSource = BOTH):Bool

      @:value({ source : BOTH })getFiles(folder:String, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH })getFolders(folder:String, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH })getSpecificAsset(id:String, type:String, source:AssetSource = BOTH):Dynamic

      @:value({ source : BOTH })getSpecificPath(id:String, source:AssetSource = BOTH):String

      removeLibrary(lib:AssetLibrary):AssetLibrary

      reset():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/LimeLibrarySymbol.html b/pages/funkin/backend/assets/LimeLibrarySymbol.html new file mode 100644 index 00000000..6b056012 --- /dev/null +++ b/pages/funkin/backend/assets/LimeLibrarySymbol.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.LimeLibrarySymbol

      COPIED DIRECTLY FROM LIME SOURCE CAUSE LIME IS SO FUCKING DUMB!!

      Constructor

      inlinenew(id:String)

      Variables

      library:AssetLibrary

      symbolName:String

      Methods

      inlineexists(?type:String):Bool

      inlineisLocal(?type:String):Bool

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/ModsAssetLibrary.html b/pages/funkin/backend/assets/ModsAssetLibrary.html new file mode 100644 index 00000000..63cb672f --- /dev/null +++ b/pages/funkin/backend/assets/ModsAssetLibrary.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.ModsAssetLibrary

      Variables

      libName:String

      prefix:String

      Methods

      getFiles(folder:String):Array<String>

      getFolders(folder:String):Array<String>

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/ModsFolder.html b/pages/funkin/backend/assets/ModsFolder.html new file mode 100644 index 00000000..67d8f9e1 --- /dev/null +++ b/pages/funkin/backend/assets/ModsFolder.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.ModsFolder

      Static variables

      @:value("./addons/")staticaddonsPath:String = "./addons/"

      Path to the addons folder.

      @:value(null)staticcurrentModFolder:String = null

      Current mod folder. Will affect Paths.

      @:value("./mods/")staticmodsPath:String = "./mods/"

      Path to the mods folder.

      Static methods

      staticinit():Void

      Initialises mods folder by adding callbacks and such.

      @:value({ force : false })staticloadLibraryFromFolder(libName:String, folder:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticloadLibraryFromZip(libName:String, zipPath:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticloadModLib(path:String, force:Bool = false):AssetLibrary

      Loads a mod library from the specified path. Supports folders and zips.

      Parameters:

      modName

      Name of the mod

      force

      Whenever the mod should be reloaded if it has already been loaded

      @:value({ force : false })staticprepareLibrary(libName:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticprepareModLibrary(libName:String, lib:ModsAssetLibrary, force:Bool = false):AssetLibrary

      staticregisterFont(font:Font):Font

      staticreloadMods():Void

      staticswitchMod(mod:String):Void

      Switches mod - unloads all the other mods, then load this one.

      Parameters:

      null

      libName

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/ModsFolderLibrary.html b/pages/funkin/backend/assets/ModsFolderLibrary.html new file mode 100644 index 00000000..7557dc2f --- /dev/null +++ b/pages/funkin/backend/assets/ModsFolderLibrary.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.ModsFolderLibrary

      Constructor

      new(folderPath:String, libName:String)

      Variables

      @:value(null)_parsedAsset:String = null

      folderPath:String

      libName:String

      @:value("assets/")prefix:String = "assets/"

      @:value(true)useImageCache:Bool = true

      Methods

      @:value({ folders : false })__getFiles(folder:String, folders:Bool = false):Array<String>

      getEditedTime(asset:String):Null<Float>

      inlinegetFiles(folder:String):Array<String>

      inlinegetFolders(folder:String):Array<String>

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/Paths.html b/pages/funkin/backend/assets/Paths.html new file mode 100644 index 00000000..0cf5b677 --- /dev/null +++ b/pages/funkin/backend/assets/Paths.html @@ -0,0 +1,11 @@ + + + +funkin.backend.assets.Paths

      Static variables

      @:value("ogg")staticfinalinlineread onlySOUND_EXT:String = "ogg"

      Preferred sound extension for the game's audio files. +Currently is set to mp3 for web targets, and ogg for other targets.

      @:value([])statictempFramesCache:Map<String, FlxFramesCollection> = []

      Static methods

      staticinlineawd(key:String):String

      staticcharacter(character:String):String

      @:value({ difficulty : "normal" })staticchart(song:String, difficulty:String = "normal"):String

      staticinlinedae(key:String):String

      staticinlinefile(file:String, ?library:String):String

      staticinlinefont(key:String):String

      staticinlinefragShader(key:String, ?library:String):String

      @:value({ source : BOTH, addPath : false })staticgetFolderContent(key:String, addPath:Bool = false, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH, addPath : false })staticgetFolderDirectories(key:String, addPath:Bool = false, source:AssetSource = BOTH):Array<String>

      @:value({ assetsPath : false })staticgetFrames(key:String, assetsPath:Bool = false, ?library:String):Null<FlxFramesCollection>

      Gets frames at specified path.

      Parameters:

      key

      Path to the frames

      library

      (Additional) library to load the frames from.

      staticinlinegetPackerAtlas(key:String, ?library:String):FlxAtlasFrames

      staticinlinegetPackerAtlasAlt(key:String):FlxAtlasFrames

      staticinlinegetPath(file:String, ?library:String):String

      staticinlinegetSparrowAtlas(key:String, ?library:String):FlxAtlasFrames

      staticinlinegetSparrowAtlasAlt(key:String):FlxAtlasFrames

      @:value({ checkForAtlas : false })staticimage(key:String, ?library:String, checkForAtlas:Bool = false):String

      staticinlineini(key:String, ?library:String):String

      staticinit():Void

      @:value({ difficulty : "normal" })staticinlineinst(song:String, difficulty:String = "normal"):String

      staticinlinejson(key:String, ?library:String):String

      staticinlinemd2(key:String):String

      staticinlinemd5(key:String):String

      staticinlinemusic(key:String, ?library:String):String

      staticinlinendll(key:String):String

      staticinlineobj(key:String):String

      staticinlineps1(key:String, ?library:String):String

      @:value({ isAssetsPath : false })staticinlinescript(key:String, ?library:String, isAssetsPath:Bool = false):String

      staticsound(key:String, ?library:String):String

      staticinlinesoundRandom(key:String, min:Int, max:Int, ?library:String):String

      staticinlinetxt(key:String, ?library:String):String

      staticinlinevertShader(key:String, ?library:String):String

      staticinlinevideo(key:String):String

      @:value({ difficulty : "normal" })staticinlinevoices(song:String, difficulty:String = "normal"):String

      staticinlinexml(key:String, ?library:String):String

      \ No newline at end of file diff --git a/pages/funkin/backend/assets/ZipFolderLibrary.html b/pages/funkin/backend/assets/ZipFolderLibrary.html new file mode 100644 index 00000000..39cfe29e --- /dev/null +++ b/pages/funkin/backend/assets/ZipFolderLibrary.html @@ -0,0 +1,10 @@ + + + +funkin.backend.assets.ZipFolderLibrary

      Constructor

      new(zipPath:String, libName:String)

      Variables

      @:value([])assets:Map<String, SysZipEntry> = []

      libName:String

      @:value("assets/")prefix:String = "assets/"

      @:value(false)useImageCache:Bool = false

      zipPath:String

      Methods

      @:value({ isLocal : false })__isCacheValid(cache:Map<String, Dynamic>, asset:String, isLocal:Bool = false):Bool

      __parseAsset(asset:String):Bool

      getFiles(folder:String):Array<String>

      getFolders(folder:String):Array<String>

      inlineunzip(f:SysZipEntry):Null<Bytes>

      \ No newline at end of file diff --git a/pages/funkin/system/modules/index.html b/pages/funkin/backend/assets/index.html similarity index 56% rename from pages/funkin/system/modules/index.html rename to pages/funkin/backend/assets/index.html index 79f572e3..d75db2a8 100644 --- a/pages/funkin/system/modules/index.html +++ b/pages/funkin/backend/assets/index.html @@ -1,10 +1,10 @@ -funkin.system.modules
      \ No newline at end of file +

      funkin.backend.assets

      ..
      AssetSource

      AssetsLibraryList

      LimeLibrarySymbol

      COPIED DIRECTLY FROM LIME SOURCE CAUSE LIME IS SO FUCKING DUMB!!

      ModsAssetLibrary

      ModsFolder

      ModsFolderLibrary

      Paths

      ZipFolderLibrary

      \ No newline at end of file diff --git a/pages/funkin/system/modules/CrashHandler.html b/pages/funkin/backend/chart/BaseGameParser.html similarity index 65% rename from pages/funkin/system/modules/CrashHandler.html rename to pages/funkin/backend/chart/BaseGameParser.html index d2b17f90..398e0223 100644 --- a/pages/funkin/system/modules/CrashHandler.html +++ b/pages/funkin/backend/chart/BaseGameParser.html @@ -1,10 +1,10 @@ -funkin.system.modules.CrashHandler

      Static methods

      staticinit():Void

      staticonError(e:UncaughtErrorEvent):Void

      \ No newline at end of file +

      Static methods

      staticparse(data:Dynamic, result:ChartData):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/Chart.html b/pages/funkin/backend/chart/Chart.html new file mode 100644 index 00000000..bf440ba6 --- /dev/null +++ b/pages/funkin/backend/chart/Chart.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.Chart

      Static variables

      @:value(0xFF9271FD)staticinlineread onlydefaultColor:FlxColor = 0xFF9271FD

      Default background colors for songs without bg color

      Static methods

      staticaddNoteType(chart:ChartData, noteTypeName:String):Int

      staticfilterChartForSaving(chart:ChartData, ?saveMetaInChart:Bool):ChartData

      @:value({ fromMods : true, difficulty : "normal" })staticloadChartMeta(songName:String, difficulty:String = "normal", fromMods:Bool = true):ChartMetaData

      @:value({ difficulty : "normal" })staticparse(songName:String, difficulty:String = "normal"):ChartData

      @:value({ difficulty : "normal" })staticsave(songFolderPath:String, chart:ChartData, difficulty:String = "normal", ?saveSettings:ChartSaveSettings):ChartData

      Saves the chart to the specific song folder path.

      Parameters:

      songFolderPath

      Path to the song folder (ex: mods/your mod/songs/song/)

      chart

      Chart to save

      difficulty

      Name of the difficulty

      saveSettings

      Returns:

      Filtered chart used for saving.

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartData.html b/pages/funkin/backend/chart/ChartData.html new file mode 100644 index 00000000..004a6e64 --- /dev/null +++ b/pages/funkin/backend/chart/ChartData.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartData

      Fields

      stage:String

      noteTypes:Array<String>

      @:optionaloptionalfromMods:Null<Bool>

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartEvent.html b/pages/funkin/backend/chart/ChartEvent.html new file mode 100644 index 00000000..dadeffb4 --- /dev/null +++ b/pages/funkin/backend/chart/ChartEvent.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartEvent

      Fields

      time:Float

      params:Array<Dynamic>

      name:String

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartMetaData.html b/pages/funkin/backend/chart/ChartMetaData.html new file mode 100644 index 00000000..b4b35d32 --- /dev/null +++ b/pages/funkin/backend/chart/ChartMetaData.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartMetaData

      Fields

      @:optionaloptionalstepsPerBeat:Null<Float>

      @:optionaloptionalparsedColor:Null<FlxColor>

      @:optionaloptionalopponentModeAllowed:Null<Bool>

      @:optionaloptionalneedsVoices:Null<Bool>

      name:String

      @:optionaloptionalicon:Null<String>

      @:optionaloptionaldisplayName:Null<String>

      @:optionaloptionaldifficulties:Null<Array<String>>

      @:optionaloptionalcoopAllowed:Null<Bool>

      @:optionaloptionalcolor:Null<Dynamic>

      @:optionaloptionalbpm:Null<Float>

      @:optionaloptionalbeatsPerMesure:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartNote.html b/pages/funkin/backend/chart/ChartNote.html new file mode 100644 index 00000000..4a0350c7 --- /dev/null +++ b/pages/funkin/backend/chart/ChartNote.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartNote

      Fields

      type:Int

      time:Float

      sLen:Float

      id:Int

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartSaveSettings.html b/pages/funkin/backend/chart/ChartSaveSettings.html new file mode 100644 index 00000000..9465dc7a --- /dev/null +++ b/pages/funkin/backend/chart/ChartSaveSettings.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartSaveSettings

      Fields

      @:optionaloptionalsaveMetaInChart:Null<Bool>

      @:optionaloptionalprettyPrint:Null<Bool>

      @:optionaloptionaloverrideExistingMeta:Null<Bool>

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartStrumLine.html b/pages/funkin/backend/chart/ChartStrumLine.html new file mode 100644 index 00000000..90efb7c0 --- /dev/null +++ b/pages/funkin/backend/chart/ChartStrumLine.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartStrumLine

      Fields

      @:optionaloptionalvisible:Null<Bool>

      @:optionaloptionalstrumScale:Null<Float>

      @:optionaloptionalstrumPos:Null<Array<Float>>

      @:optionaloptionalstrumLinePos:Null<Float>

      @:optionaloptionalscrollSpeed:Null<Float>

      position:String

      characters:Array<String>

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/ChartStrumLineType.html b/pages/funkin/backend/chart/ChartStrumLineType.html new file mode 100644 index 00000000..c843b888 --- /dev/null +++ b/pages/funkin/backend/chart/ChartStrumLineType.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.ChartStrumLineType

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyADDITIONAL:ChartStrumLineType = 2

      STRUMLINE IS MARKED AS ADDITIONAL - WILL BE PLAYED AS CPU EVEN IF OPPONENT MODE IS ENABLED

      @:value(cast 0)@:impl@:enuminlineread onlyOPPONENT:ChartStrumLineType = 0

      STRUMLINE IS MARKED AS OPPONENT - WILL BE PLAYED BY CPU, OR PLAYED BY PLAYER IF OPPONENT MODE IS ON

      @:value(cast 1)@:impl@:enuminlineread onlyPLAYER:ChartStrumLineType = 1

      STRUMLINE IS MARKED AS PLAYER - WILL BE PLAYED AS PLAYER, OR PLAYED AS CPU IF OPPONENT MODE IS ON

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/SwagSection.html b/pages/funkin/backend/chart/SwagSection.html new file mode 100644 index 00000000..2b117410 --- /dev/null +++ b/pages/funkin/backend/chart/SwagSection.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.SwagSection

      Fields

      sectionNotes:Array<Dynamic>

      @:optionaloptionalcamTarget:Null<Float>

      bpm:Float

      altAnim:Bool

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/SwagSong.html b/pages/funkin/backend/chart/SwagSong.html new file mode 100644 index 00000000..491f5b48 --- /dev/null +++ b/pages/funkin/backend/chart/SwagSong.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart.SwagSong

      Fields

      @:optionaloptionalstepsPerBeat:Null<Float>

      stage:String

      speed:Float

      song:String

      player2:String

      player1:String

      noteTypes:Array<String>

      @:optionaloptionalmaxHealth:Null<Float>

      gfVersion:String

      gf:String

      bpm:Float

      @:optionaloptionalbeatsPerMesure:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/backend/chart/index.html b/pages/funkin/backend/chart/index.html new file mode 100644 index 00000000..5d473414 --- /dev/null +++ b/pages/funkin/backend/chart/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.chart
      \ No newline at end of file diff --git a/pages/funkin/desktop/index.html b/pages/funkin/backend/index.html similarity index 51% rename from pages/funkin/desktop/index.html rename to pages/funkin/backend/index.html index b4767d33..c97f97f7 100644 --- a/pages/funkin/desktop/index.html +++ b/pages/funkin/backend/index.html @@ -1,10 +1,10 @@ -funkin.desktop
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/DummyScript.html b/pages/funkin/backend/scripting/DummyScript.html new file mode 100644 index 00000000..d7eba55f --- /dev/null +++ b/pages/funkin/backend/scripting/DummyScript.html @@ -0,0 +1,11 @@ + + + +funkin.backend.scripting.DummyScript

      Simple class for empty scripts or scripts whose language isn't imported yet.

      Constructor

      new(path:String)

      Variables

      @:value([])variables:Map<String, Dynamic> = []

      Methods

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      load():Void

      Loads the script

      onCreate(path:String):Void

      onDestroy():Void

      onLoad():Void

      reload():Void

      Hot-reloads the script, if possible

      setParent(variable:Dynamic):Void

      Sets a script's parent object so that its properties can be accessed easily. Ex: Passing PlayState.instance will allow boyfriend to be typed instead of PlayState.instance.boyfriend.

      Parameters:

      variable

      Parent variable.

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW +Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/EventManager.html b/pages/funkin/backend/scripting/EventManager.html new file mode 100644 index 00000000..b57f0962 --- /dev/null +++ b/pages/funkin/backend/scripting/EventManager.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.EventManager

      Static variables

      @:value([])staticeventKeys:Array<Class<CancellableEvent>> = []

      @:value([])staticeventValues:Array<CancellableEvent> = []

      Static methods

      staticget<T>(cl:Class<T>):T

      staticinit():Void

      staticreset():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/GlobalScript.html b/pages/funkin/backend/scripting/GlobalScript.html new file mode 100644 index 00000000..387c1214 --- /dev/null +++ b/pages/funkin/backend/scripting/GlobalScript.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.GlobalScript

      Class for THE Global Script, aka script that runs in the background at all times.

      Static variables

      Static methods

      staticbeatHit(curBeat:Int):Void

      staticcall(name:String, ?args:Array<Dynamic>):Void

      staticevent<T>(name:String, event:T):T

      staticinit():Void

      staticonModSwitch(newMod:String):Void

      staticstepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/HScript.html b/pages/funkin/backend/scripting/HScript.html new file mode 100644 index 00000000..1589e66e --- /dev/null +++ b/pages/funkin/backend/scripting/HScript.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.HScript

      Static methods

      staticinitParser():Parser

      Constructor

      new(path:String)

      Variables

      code:String

      @:value(null)decls:Array<ModuleDecl> = null

      expr:Expr

      interp:Interp

      parser:Parser

      Methods

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      load():Void

      Loads the script

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/ModState.html b/pages/funkin/backend/scripting/ModState.html new file mode 100644 index 00000000..8393e0b3 --- /dev/null +++ b/pages/funkin/backend/scripting/ModState.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.ModState

      Static variables

      @:value(null)staticlastName:String = null

      Constructor

      new(stateName:String)

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/ModSubState.html b/pages/funkin/backend/scripting/ModSubState.html new file mode 100644 index 00000000..fe512151 --- /dev/null +++ b/pages/funkin/backend/scripting/ModSubState.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.ModSubState

      Static variables

      @:value(null)staticlastName:String = null

      Constructor

      new(stateName:String)

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/MultiThreadedScript.html b/pages/funkin/backend/scripting/MultiThreadedScript.html new file mode 100644 index 00000000..5c7054eb --- /dev/null +++ b/pages/funkin/backend/scripting/MultiThreadedScript.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.MultiThreadedScript

      Constructor

      new(path:String, ?parentScript:Script)

      Variables

      @:value(true)callEnded:Bool = true

      Whenever the current call has ended.

      @:value(null)returnValue:Dynamic = null

      Return value of the last call.

      script:Script

      Script being ran.

      Methods

      call(func:String, args:Array<Dynamic>):Void

      destroy():Void

      hget(name:String):Dynamic

      hset(name:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/Script.html b/pages/funkin/backend/scripting/Script.html new file mode 100644 index 00000000..b88b973f --- /dev/null +++ b/pages/funkin/backend/scripting/Script.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.Script

      Static variables

      @:value(null)staticcurScript:Script = null

      Currently executing script.

      @:value(["hx", "hscript", "hsc", "hxs", "lua"])staticscriptExtensions:Array<String> = ["hx", "hscript", "hsc", "hxs", "lua"]

      All available script extensions

      @:value([])staticstaticVariables:Map<String, Dynamic> = []

      Use "static var thing = true;" in hscript to use those!! +are reset every mod switch so once you're done with them make sure to make them null!!

      Static methods

      staticcreate(path:String):Script

      Creates a script from the specified asset path. The language is automatically determined.

      Parameters:

      path

      Path in assets

      staticgetDefaultPreprocessors():Map<String, Dynamic>

      staticgetDefaultVariables(?script:Script):Map<String, Dynamic>

      Constructor

      new(path:String)

      Creates a new instance of the script class.

      Parameters:

      null

      path

      Variables

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Methods

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      get(variable:String):Dynamic

      Gets the variable variable from the script's variables.

      Parameters:

      variable

      Name of the variable.

      Returns:

      Variable (or null if it doesn't exists)

      load():Void

      Loads the script

      onCreate(path:String):Void

      onDestroy():Void

      onLoad():Void

      reload():Void

      Hot-reloads the script, if possible

      set(variable:String, value:Dynamic):Void

      Gets the variable variable from the script's variables.

      Parameters:

      variable

      Name of the variable.

      Returns:

      Variable (or null if it doesn't exists)

      setParent(variable:Dynamic):Void

      Sets a script's parent object so that its properties can be accessed easily. Ex: Passing PlayState.instance will allow boyfriend to be typed instead of PlayState.instance.boyfriend.

      Parameters:

      variable

      Parent variable.

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW +Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/ScriptPack.html b/pages/funkin/backend/scripting/ScriptPack.html new file mode 100644 index 00000000..13cc35cb --- /dev/null +++ b/pages/funkin/backend/scripting/ScriptPack.html @@ -0,0 +1,11 @@ + + + +funkin.backend.scripting.ScriptPack

      Constructor

      new(name:String)

      Variables

      @:value([])additionalDefaultVariables:Map<String, Dynamic> = []

      @:value(null)parent:Dynamic = null

      @:value([])publicVariables:Map<String, Dynamic> = []

      @:value([])scripts:Array<Script> = []

      Methods

      add(script:Script):Void

      contains(path:String):Bool

      inlineevent<T>(func:String, event:T):T

      Sends an event to every single script, and returns the event.

      Parameters:

      func

      Function to call

      event

      Event (will be the first parameter of the function)

      Returns:

      (modified by scripts)

      getByName(name:String):Script

      getByPath(name:String):Script

      importScript(path:String):Script

      insert(pos:Int, script:Script):Void

      remove(script:Script):Void

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      onLoad():Void

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW +Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/AmountEvent.html b/pages/funkin/backend/scripting/events/AmountEvent.html new file mode 100644 index 00000000..b6602976 --- /dev/null +++ b/pages/funkin/backend/scripting/events/AmountEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.AmountEvent

      Constructor

      new()

      Variables

      amount:Int

      Amount

      Methods

      recycle(amount:Int):AmountEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/CamMoveEvent.html b/pages/funkin/backend/scripting/events/CamMoveEvent.html new file mode 100644 index 00000000..a82a5e77 --- /dev/null +++ b/pages/funkin/backend/scripting/events/CamMoveEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.CamMoveEvent

      Constructor

      new()

      Variables

      focusedCharacters:Int

      Number of focused characters

      position:FlxPoint

      Final camera position.

      strumLine:StrumLine

      Currently focused strumline.

      Methods

      recycle(position:FlxPoint, strumLine:StrumLine, focusedCharacters:Int):CamMoveEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/CancellableEvent.html b/pages/funkin/backend/scripting/events/CancellableEvent.html new file mode 100644 index 00000000..407a93f8 --- /dev/null +++ b/pages/funkin/backend/scripting/events/CancellableEvent.html @@ -0,0 +1,13 @@ + + + +funkin.backend.scripting.events.CancellableEvent

      Constructor

      new()

      Creates a new cancellable event. +This allows scripts to call cancel() to cancel the event.

      Variables

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Methods

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/CountdownEvent.html b/pages/funkin/backend/scripting/events/CountdownEvent.html new file mode 100644 index 00000000..a73e2df8 --- /dev/null +++ b/pages/funkin/backend/scripting/events/CountdownEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.CountdownEvent

      Constructor

      new()

      Variables

      antialiasing:Bool

      Whenever antialiasing is enabled or not.

      scale:Float

      Scale of the sprite.

      sound:FlxSound

      Created sound, only available in onPostCountdown

      soundPath:String

      Path of the intro sound that'll be played.

      sprite:FlxSprite

      Created sprite, only available in onPostCountdown

      spritePath:String

      Path to the sprite path that'll be shown.

      spriteTween:FlxTween

      Created tween for the sprite, only available in onPostCountdown

      swagCounter:Int

      At which count the countdown is. Normally goes 0-1-2-3-4 unless PlayState.instance.introLength is changed.

      volume:Float

      Volume at which the intro countdown sound will play.

      Methods

      recycle(swagCounter:Int, volume:Float, soundPath:String, spritePath:String, scale:Float, antialiasing:Bool, sprite:FlxSprite, spriteTween:FlxTween, sound:FlxSound):CountdownEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/DanceEvent.html b/pages/funkin/backend/scripting/events/DanceEvent.html new file mode 100644 index 00000000..ed409abc --- /dev/null +++ b/pages/funkin/backend/scripting/events/DanceEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.DanceEvent

      Constructor

      new()

      Variables

      danced:Bool

      Methods

      recycle(danced:Bool):DanceEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/DirectionAnimEvent.html b/pages/funkin/backend/scripting/events/DirectionAnimEvent.html new file mode 100644 index 00000000..6db4d582 --- /dev/null +++ b/pages/funkin/backend/scripting/events/DirectionAnimEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.DirectionAnimEvent

      Constructor

      new()

      Variables

      animName:String

      Default animation that will be played

      context:PlayAnimContext

      Context of the animation. Is either equal to SING or MISS.

      direction:Int

      In which direction the animation will be played

      @:value(true)force:Bool = true

      Whenever the animation will play reversed or not.

      frame:Int

      At what frame the animation will start playing

      reversed:Bool

      Whenever the animation will play reversed or not.

      suffix:String

      The suffix of the animation (ex: "-alt") - Defaults to ""

      Methods

      @:value({ force : true })recycle(animName:String, direction:Int, suffix:String, context:PlayAnimContext, reversed:Bool, frame:Int, force:Bool = true):DirectionAnimEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/DiscordPresenceUpdateEvent.html b/pages/funkin/backend/scripting/events/DiscordPresenceUpdateEvent.html new file mode 100644 index 00000000..be0ff9aa --- /dev/null +++ b/pages/funkin/backend/scripting/events/DiscordPresenceUpdateEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.DiscordPresenceUpdateEvent

      Constructor

      new()

      Variables

      presenceData:DiscordPresenceOptions

      Object containing all of the data for the presence. Can be altered.

      Methods

      recycle(presenceData:DiscordPresenceOptions):DiscordPresenceUpdateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/DrawEvent.html b/pages/funkin/backend/scripting/events/DrawEvent.html new file mode 100644 index 00000000..b0f71814 --- /dev/null +++ b/pages/funkin/backend/scripting/events/DrawEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.DrawEvent

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/EventGameEvent.html b/pages/funkin/backend/scripting/events/EventGameEvent.html new file mode 100644 index 00000000..2a54f910 --- /dev/null +++ b/pages/funkin/backend/scripting/events/EventGameEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.EventGameEvent

      Constructor

      new()

      Variables

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/FreeplayAlphaUpdateEvent.html b/pages/funkin/backend/scripting/events/FreeplayAlphaUpdateEvent.html new file mode 100644 index 00000000..89660693 --- /dev/null +++ b/pages/funkin/backend/scripting/events/FreeplayAlphaUpdateEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.FreeplayAlphaUpdateEvent

      Constructor

      new()

      Variables

      idleAlpha:Float

      The alpha when nothing is playing and isnt selected

      idlePlayingAlpha:Float

      The alpha when something is playing and isnt selected

      lerp:Float

      The lerp of the alpha

      selectedAlpha:Float

      The alpha when nothing is playing and selected

      selectedPlayingAlpha:Float

      The alpha when something is playing and selected

      Methods

      recycle(idleAlpha:Float, idlePlayingAlpha:Float, selectedAlpha:Float, selectedPlayingAlpha:Float, lerp:Float):FreeplayAlphaUpdateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/FreeplaySongSelectEvent.html b/pages/funkin/backend/scripting/events/FreeplaySongSelectEvent.html new file mode 100644 index 00000000..7399431a --- /dev/null +++ b/pages/funkin/backend/scripting/events/FreeplaySongSelectEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.FreeplaySongSelectEvent

      Constructor

      new()

      Variables

      coopMode:Bool

      Whenever coop mode is enabled.

      difficulty:String

      Difficulty name

      opponentMode:Bool

      Whenever opponent mode is enabled or not.

      song:String

      Song name that is about to be played

      Methods

      recycle(song:String, difficulty:String, opponentMode:Bool, coopMode:Bool):FreeplaySongSelectEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/InputSystemEvent.html b/pages/funkin/backend/scripting/events/InputSystemEvent.html new file mode 100644 index 00000000..26a9e6b9 --- /dev/null +++ b/pages/funkin/backend/scripting/events/InputSystemEvent.html @@ -0,0 +1,15 @@ + + + +funkin.backend.scripting.events.InputSystemEvent

      Constructor

      new()

      Variables

      justPressed:Array<Bool>

      Array containing whenever a specific control was pressed (not hold) this frame or not. +For example, justPressed[0] will return whenever the left strum was just pressed.

      justReleased:Array<Bool>

      Array containing whenever a specific control was released this frame or not. +For example, justReleased[0] will return whenever the left strum was just released.

      pressed:Array<Bool>

      Array containing whenever a specific control is pressed or not. +For example, pressed[0] will return whenever the left strum was pressed.

      strumLine:StrumLine

      Strumline which input is being processed.

      strumLineID:Int

      ID of the Strumline.

      Methods

      recycle(pressed:Array<Bool>, justPressed:Array<Bool>, justReleased:Array<Bool>, strumLine:StrumLine, strumLineID:Int):InputSystemEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/MenuChangeEvent.html b/pages/funkin/backend/scripting/events/MenuChangeEvent.html new file mode 100644 index 00000000..da816f14 --- /dev/null +++ b/pages/funkin/backend/scripting/events/MenuChangeEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.MenuChangeEvent

      Constructor

      new()

      Variables

      change:Int

      Amount of change

      oldValue:Int

      Value before the change

      @:value(true)playMenuSFX:Bool = true

      Whenever the menu SFX should be played.

      value:Int

      Value after the change

      Methods

      @:value({ playMenuSFX : true })recycle(oldValue:Int, value:Int, change:Int, playMenuSFX:Bool = true):MenuChangeEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/NameEvent.html b/pages/funkin/backend/scripting/events/NameEvent.html new file mode 100644 index 00000000..6024242f --- /dev/null +++ b/pages/funkin/backend/scripting/events/NameEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.NameEvent

      Constructor

      new()

      Variables

      name:String

      Name

      Methods

      recycle(name:String):NameEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/NoteCreationEvent.html b/pages/funkin/backend/scripting/events/NoteCreationEvent.html new file mode 100644 index 00000000..ae54f6c5 --- /dev/null +++ b/pages/funkin/backend/scripting/events/NoteCreationEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.NoteCreationEvent

      Constructor

      new()

      Variables

      animSuffix:String

      Sing animation suffix. "-alt" for alt anim or "" for normal notes.

      mustHit:Bool

      Whenever the note will need to be hit by the player

      note:Note

      Note that is being created

      noteScale:Float

      Note scale, if you only want to replace the scale.

      noteSprite:String

      Note sprite, if you only want to replace the sprite.

      noteType:String

      Note Type (ex: "My Super Cool Note", or "Mine")

      noteTypeID:Int

      ID of the note type.

      strumID:Int

      ID of the strum (from 0 to 3)

      strumLineID:Int

      ID of the player.

      Methods

      recycle(note:Note, strumID:Int, noteType:String, noteTypeID:Int, strumLineID:Int, mustHit:Bool, noteSprite:String, noteScale:Float, animSuffix:String):NoteCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/NoteHitEvent.html b/pages/funkin/backend/scripting/events/NoteHitEvent.html new file mode 100644 index 00000000..bd1bae6f --- /dev/null +++ b/pages/funkin/backend/scripting/events/NoteHitEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.NoteHitEvent

      Constructor

      new()

      Variables

      accuracy:Null<Float>

      Accuracy gained from pressing this note. From 0 to 1. null means no accuracy is gained.

      animSuffix:String

      Suffix of the animation. "-alt" for alt notes, "" for normal ones.

      character:Character

      Character that pressed the note.

      characters:Array<Character>

      Characters that pressed the note.

      @:value(true)countAsCombo:Bool = true

      Whether this hit increases combo.

      @:value(true)countScore:Bool = true

      Whether this hit increases the score

      direction:Int

      Direction of the press (0 = Left, 1 = Down, 2 = Up, 3 = Right)

      @:value(true)forceAnim:Bool = true

      Whenever the animation should be forced to play.

      healthGain:Float

      The amount of health that'll be gained from pressing that note. If called from onPlayerMiss, the value will be negative.

      @:value(true)misses:Bool = true

      Whenever a miss should be added.

      note:Note

      Note that has been pressed

      noteType:String

      Note Type name (null if default note)

      @:value(true)numAntialiasing:Bool = true

      Whenever antialiasing should be enabled on combo number.

      @:value(0.5)numScale:Float = 0.5

      Scale of combo numbers.

      player:Bool

      Whenever the Character is a player

      @:value("sick")rating:String = "sick"

      Rating name. Defaults to "sick", "good", "bad" and "shit". Customisable.

      @:value(true)ratingAntialiasing:Bool = true

      Whenever antialiasing should be enabled on ratings.

      ratingPrefix:String

      Prefix of the rating sprite path. Defaults to "game/score/"

      @:value(0.7)ratingScale:Float = 0.7

      Scale of ratings.

      ratingSuffix:String

      Suffix of the rating sprite path.

      score:Int

      Score gained after note press.

      @:value(null)showRating:Null<Bool> = null

      Whenever ratings should be shown or not.

      @:value(false)showSplash:Bool = false

      Whenever a splash should be shown when the note is hit.

      Methods

      preventAnim():Void

      Prevents the default sing animation from being played.

      preventCamZooming():Void

      Prevents the camera zoom every 4 beats from enabling.

      preventDeletion():Void

      Prevents the note from being deleted.

      preventLastSustainHit():Void

      Prevents the sustain tail (the last one) from being automatically hit when the sustain before it is hit.

      preventStrumGlow():Void

      Prevents the strum from glowing after this note has been pressed.

      preventVocalsMute():Void

      Prevents the vocals volume from being muted in case its a parameter of onPlayerMiss

      preventVocalsUnmute():Void

      Prevents the vocals volume from being set to 1 after pressing the note.

      @:value({ forceAnim : true, ratingAntialiasing : true, ratingScale : 0.7, numAntialiasing : true, numScale : 0.5, showSplash : false, rating : "sick", showRating : null, countScore : true, countAsCombo : true, misses : true })recycle(misses:Bool = true, countAsCombo:Bool = true, countScore:Bool = true, ?showRating:Bool, note:Note, characters:Array<Character>, player:Bool, noteType:String, animSuffix:String, ratingPrefix:String, ratingSuffix:String, direction:Int, score:Int, accuracy:Null<Float>, healthGain:Float, rating:String = "sick", showSplash:Bool = false, numScale:Float = 0.5, numAntialiasing:Bool = true, ratingScale:Float = 0.7, ratingAntialiasing:Bool = true, forceAnim:Bool = true):NoteHitEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/NoteMissEvent.html b/pages/funkin/backend/scripting/events/NoteMissEvent.html new file mode 100644 index 00000000..d245366c --- /dev/null +++ b/pages/funkin/backend/scripting/events/NoteMissEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.NoteMissEvent

      Constructor

      new()

      Variables

      accuracy:Null<Float>

      Accuracy gained from pressing this note. From 0 to 1. null means no accuracy is gained.

      animSuffix:String

      Suffix of the animation. "miss" for miss notes, "-alt" for alt notes, "" for normal ones.

      character:Character

      Character that pressed the note.

      characters:Array<Character>

      Characters that pressed the note.

      direction:Int

      Direction of the press (0 = Left, 1 = Down, 2 = Up, 3 = Right)

      forceAnim:Bool

      Whenever the animation should be forced to play.

      gfSad:Bool

      gfSadAnim:String

      healthGain:Float

      The amount of health that'll be gained from missing that note. If called from onPlayerMiss, the value will be negative.

      missSound:String

      misses:Int

      note:Note

      Note that has been missed

      noteType:String

      Note Type name (null if default note)

      playerID:Int

      Whenever the Character is a player

      score:Int

      Methods

      preventAnim():Void

      Prevents the default sing animation from being played.

      preventDeletion():Void

      Prevents the note from being deleted.

      preventMissSound():Void

      Prevents the miss sound from played.

      preventResetCombo():Void

      Prevents the combo from being reset.

      preventStunned():Void

      Prevents the default sing animation from being played.

      preventVocalsMute():Void

      Prevents the vocals volume from being muted in case its a parameter of onPlayerMiss

      preventVocalsUnmute():Void

      Prevents the vocals volume from being set to 1 after pressing the note.

      recycle(note:Note, score:Int, misses:Int, muteVocals:Bool, healthGain:Float, missSound:String, missVolume:Float, ghostMiss:Bool, gfSad:Bool, gfSadAnim:String, forceGfAnim:Bool, forceAnim:Bool, animSuffix:String, characters:Array<Character>, playerID:Int, noteType:String, direction:Int, accuracy:Null<Float>):NoteMissEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/NoteUpdateEvent.html b/pages/funkin/backend/scripting/events/NoteUpdateEvent.html new file mode 100644 index 00000000..b0410c69 --- /dev/null +++ b/pages/funkin/backend/scripting/events/NoteUpdateEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.NoteUpdateEvent

      Constructor

      new()

      Variables

      elapsed:Null<Float>

      Time elapsed since last frame

      note:Note

      Note that is being updated

      strum:Strum

      Note's strum (can be changed)

      Methods

      cancelAutoCPUHit():Void

      Cancels the automatic CPU hit.

      cancelPositionUpdate():Void

      Cancels the note position update (note will freeze).

      cancelWindowUpdate():Void

      Cancels the hit window update.

      recycle(note:Note, elapsed:Null<Float>, strum:Strum):NoteUpdateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/PauseCreationEvent.html b/pages/funkin/backend/scripting/events/PauseCreationEvent.html new file mode 100644 index 00000000..78a60ee7 --- /dev/null +++ b/pages/funkin/backend/scripting/events/PauseCreationEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.PauseCreationEvent

      CANCEL this event to prevent default behaviour!

      Constructor

      new()

      Variables

      music:String

      Music that is going to be played

      options:Array<String>

      All option names

      Methods

      recycle(music:String, options:Array<String>):PauseCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/PlayAnimContext.html b/pages/funkin/backend/scripting/events/PlayAnimContext.html new file mode 100644 index 00000000..2fb60019 --- /dev/null +++ b/pages/funkin/backend/scripting/events/PlayAnimContext.html @@ -0,0 +1,15 @@ + + + +funkin.backend.scripting.events.PlayAnimContext

      Contains all contexts possible for PlayAnimEvent.

      Variables

      @:value(cast "DANCE")@:impl@:enuminlineread onlyDANCE:PlayAnimContext = "DANCE"

      Whenever a dance animation is played. +The character's dancing wont be blocked.

      @:value(cast "LOCK")@:impl@:enuminlineread onlyLOCK:PlayAnimContext = "LOCK"

      Locks the character's animation. +Prevents the character from dancing, even if the animation ended.

      @:value(cast "MISS")@:impl@:enuminlineread onlyMISS:PlayAnimContext = "MISS"

      Whenever a note is missed and a miss animation will be played. +Only for scripting, since it has the same effects as SING.

      @:value(cast null)@:impl@:enuminlineread onlyNONE:PlayAnimContext = null

      No context was given for the animation. +The character won't dance until the animation is finished

      @:value(cast "SING")@:impl@:enuminlineread onlySING:PlayAnimContext = "SING"

      Whenever a note is hit and a sing animation will be played. +The character will only dance after their holdTime is reached.

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/PlayAnimEvent.html b/pages/funkin/backend/scripting/events/PlayAnimEvent.html new file mode 100644 index 00000000..2373e188 --- /dev/null +++ b/pages/funkin/backend/scripting/events/PlayAnimEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.PlayAnimEvent

      Constructor

      new()

      Variables

      animName:String

      Name of the animation that's going to be played.

      context:PlayAnimContext

      Context of the animation

      force:Bool

      Whenever the animation will be forced or not.

      reverse:Bool

      Whenever the animation will play in reverse or not

      @:value(0)startingFrame:Int = 0

      The frame at which the animation will start playing

      Methods

      @:value({ startingFrame : 0 })recycle(animName:String, force:Bool, reverse:Bool, startingFrame:Int = 0, context:PlayAnimContext):PlayAnimEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/PointEvent.html b/pages/funkin/backend/scripting/events/PointEvent.html new file mode 100644 index 00000000..8fcabef2 --- /dev/null +++ b/pages/funkin/backend/scripting/events/PointEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.PointEvent

      Constructor

      new()

      Variables

      x:Float

      X position

      y:Float

      Y position

      Methods

      recycle(x:Float, y:Float):PointEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/RatingUpdateEvent.html b/pages/funkin/backend/scripting/events/RatingUpdateEvent.html new file mode 100644 index 00000000..2b1b8225 --- /dev/null +++ b/pages/funkin/backend/scripting/events/RatingUpdateEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.RatingUpdateEvent

      Constructor

      new()

      Variables

      oldRating:ComboRating

      Old combo (may be null)

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/ResizeEvent.html b/pages/funkin/backend/scripting/events/ResizeEvent.html new file mode 100644 index 00000000..fa0186c4 --- /dev/null +++ b/pages/funkin/backend/scripting/events/ResizeEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.ResizeEvent

      Constructor

      new()

      Variables

      height:Int

      New height

      oldHeight:Null<Int>

      Old height (may be null)

      oldWidth:Null<Int>

      Old width (may be null)

      width:Int

      New width

      Methods

      recycle(width:Int, height:Int, oldWidth:Null<Int>, oldHeight:Null<Int>):ResizeEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/SimpleNoteEvent.html b/pages/funkin/backend/scripting/events/SimpleNoteEvent.html new file mode 100644 index 00000000..f7e8d1b7 --- /dev/null +++ b/pages/funkin/backend/scripting/events/SimpleNoteEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.SimpleNoteEvent

      Constructor

      new()

      Variables

      note:Note

      Note that is affected.

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/StageNodeEvent.html b/pages/funkin/backend/scripting/events/StageNodeEvent.html new file mode 100644 index 00000000..24918853 --- /dev/null +++ b/pages/funkin/backend/scripting/events/StageNodeEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.StageNodeEvent

      Constructor

      new()

      Variables

      name:String

      The name of the node, quicker access than e.node.name

      node:Access

      The node which is currently being parsed

      sprite:Dynamic

      The sprite which was parsed

      stage:Stage

      The stage instance

      Methods

      recycle(stage:Stage, node:Access, sprite:Dynamic, name:String):StageNodeEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/StageXMLEvent.html b/pages/funkin/backend/scripting/events/StageXMLEvent.html new file mode 100644 index 00000000..aa0353f0 --- /dev/null +++ b/pages/funkin/backend/scripting/events/StageXMLEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.StageXMLEvent

      Constructor

      new()

      Variables

      elems:Array<Access>

      The object which was parsed

      stage:Stage

      The stage instance

      xml:Access

      The xml

      Methods

      recycle(stage:Stage, xml:Access, elems:Array<Access>):StageXMLEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/StateEvent.html b/pages/funkin/backend/scripting/events/StateEvent.html new file mode 100644 index 00000000..95b4d8b9 --- /dev/null +++ b/pages/funkin/backend/scripting/events/StateEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.StateEvent

      Constructor

      new()

      Variables

      substate:FlxState

      Substate that is about to be opened/closed

      Methods

      recycle(substate:FlxState):StateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/StrumCreationEvent.html b/pages/funkin/backend/scripting/events/StrumCreationEvent.html new file mode 100644 index 00000000..4c7a5982 --- /dev/null +++ b/pages/funkin/backend/scripting/events/StrumCreationEvent.html @@ -0,0 +1,13 @@ + + + +funkin.backend.scripting.events.StrumCreationEvent

      Constructor

      new()

      Variables

      animPrefix:String

      Animation prefix (left = arrowLEFT, left press, left confirm).

      player:Int

      s +Player ID

      @:value("game/notes/default")sprite:String = "game/notes/default"

      Sprite path, in case you only want to change the sprite.

      strum:Strum

      The strum that is being created

      strumID:Int

      Strum ID, for the sprite.

      Methods

      cancelAnimation():Void

      Cancels the animation that makes the strum "land" in the strumline.

      @:value({ sprite : "game/notes/default" })recycle(strum:Strum, player:Int, strumID:Int, animPrefix:String, sprite:String = "game/notes/default"):StrumCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/WeekSelectEvent.html b/pages/funkin/backend/scripting/events/WeekSelectEvent.html new file mode 100644 index 00000000..9cbe68e6 --- /dev/null +++ b/pages/funkin/backend/scripting/events/WeekSelectEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.scripting.events.WeekSelectEvent

      Constructor

      new()

      Variables

      difficulty:String

      The difficulty that has been selected

      difficultyID:Int

      At which emplacement the difficulty is. Goes from 0 to the number of weeks - 1.

      week:WeekData

      Week that is going to be selected

      weekID:Int

      At which emplacement the week is. Goes from 0 to the number of weeks - 1.

      Methods

      recycle(week:WeekData, difficulty:String, weekID:Int, difficultyID:Int):WeekSelectEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: +[CancellableEvent] +[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/events/index.html b/pages/funkin/backend/scripting/events/index.html new file mode 100644 index 00000000..b1ded225 --- /dev/null +++ b/pages/funkin/backend/scripting/events/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting.events
      \ No newline at end of file diff --git a/pages/funkin/backend/scripting/index.html b/pages/funkin/backend/scripting/index.html new file mode 100644 index 00000000..99af99c6 --- /dev/null +++ b/pages/funkin/backend/scripting/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.scripting

      funkin.backend.scripting

      ..
      events
      DummyScript

      Simple class for empty scripts or scripts whose language isn't imported yet.

      EventManager

      GlobalScript

      Class for THE Global Script, aka script that runs in the background at all times.

      HScript

      ModState

      ModSubState

      MultiThreadedScript

      Script

      ScriptPack

      \ No newline at end of file diff --git a/pages/funkin/backend/shaders/CustomShader.html b/pages/funkin/backend/shaders/CustomShader.html new file mode 100644 index 00000000..3f195bce --- /dev/null +++ b/pages/funkin/backend/shaders/CustomShader.html @@ -0,0 +1,13 @@ + + + +funkin.backend.shaders.CustomShader

      Class for custom shaders.

      +

      To create one, create a shaders folder in your assets/mod folder, then add a file named my-shader.frag or/and my-shader.vert.

      +

      Non-existent shaders will only load the default one, and throw a warning in the console.

      +

      To access the shader's uniform variables, use shader.variable

      Constructor

      @:value({ glslVersion : "120" })new(name:String, glslVersion:String = "120")

      Creates a new custom shader

      Parameters:

      name

      Name of the frag and vert files.

      glslVersion

      GLSL version to use. Defaults to 120.

      Variables

      @:value("")path:String = ""

      Inherited Variables

      Defined by FunkinShader

      @:value("120")glslVer:String = "120"

      Inherited Methods

      Defined by FunkinShader

      hget(name:String):Dynamic

      hset(name:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/backend/shaders/FunkinShader.html b/pages/funkin/backend/shaders/FunkinShader.html new file mode 100644 index 00000000..fa8e924d --- /dev/null +++ b/pages/funkin/backend/shaders/FunkinShader.html @@ -0,0 +1,11 @@ + + + +funkin.backend.shaders.FunkinShader

      Constructor

      @:value({ glslVer : "120" })new(frag:String, vert:String, glslVer:String = "120")

      Creates a new shader from the specified fragment and vertex source. +Accepts #pragma header.

      Parameters:

      frag

      Fragment source (pass null to use default)

      vert

      Vertex source (pass null to use default)

      glslVer

      Version of GLSL to use (defaults to 120)

      Variables

      @:value("120")glslVer:String = "120"

      Methods

      hget(name:String):Dynamic

      hset(name:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/backend/shaders/ShaderTemplates.html b/pages/funkin/backend/shaders/ShaderTemplates.html new file mode 100644 index 00000000..ddaf1305 --- /dev/null +++ b/pages/funkin/backend/shaders/ShaderTemplates.html @@ -0,0 +1,10 @@ + + + +funkin.backend.shaders.ShaderTemplates

      Static variables

      @:value("#pragma header\r\n\r\nvoid main(void)\r\n{\r\n\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n}")staticfinalread onlydefaultFragmentSource:String = "#pragma header\r\n\r\nvoid main(void)\r\n{\r\n\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n}"

      @:value("#pragma header\r\n\r\nattribute float alpha;\r\nattribute vec4 colorMultiplier;\r\nattribute vec4 colorOffset;\r\nuniform bool hasColorTransform;\r\n\r\nvoid main(void)\r\n{\r\n\t#pragma body\r\n\r\n\topenfl_Alphav = openfl_Alpha * alpha;\r\n\r\n\tif (hasColorTransform)\r\n\t{\r\n\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t}\r\n}")staticfinalread onlydefaultVertexSource:String = "#pragma header\r\n\r\nattribute float alpha;\r\nattribute vec4 colorMultiplier;\r\nattribute vec4 colorOffset;\r\nuniform bool hasColorTransform;\r\n\r\nvoid main(void)\r\n{\r\n\t#pragma body\r\n\r\n\topenfl_Alphav = openfl_Alpha * alpha;\r\n\r\n\tif (hasColorTransform)\r\n\t{\r\n\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t}\r\n}"

      @:value("vec4 color = texture2D (bitmap, openfl_TextureCoordv);\r\n\r\nif (color.a == 0.0) {\r\n\r\n\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n} else if (openfl_HasColorTransform) {\r\n\r\n\tcolor = vec4 (color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4 (0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0) {\r\n\r\n\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\r\n\t} else {\r\n\r\n\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n\t}\r\n\r\n} else {\r\n\r\n\tgl_FragColor = color * openfl_Alphav;\r\n\r\n}")staticfinalread onlyfragBody:String = "vec4 color = texture2D (bitmap, openfl_TextureCoordv);\r\n\r\nif (color.a == 0.0) {\r\n\r\n\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n} else if (openfl_HasColorTransform) {\r\n\r\n\tcolor = vec4 (color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4 (0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0) {\r\n\r\n\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\r\n\t} else {\r\n\r\n\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n\t}\r\n\r\n} else {\r\n\r\n\tgl_FragColor = color * openfl_Alphav;\r\n\r\n}"

      @:value("varying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;\r\nuniform sampler2D bitmap;\r\n\r\nuniform bool hasTransform;\r\nuniform bool hasColorTransform;\r\n\r\nvec4 flixel_texture2D(sampler2D bitmap, vec2 coord)\r\n{\r\n\tvec4 color = texture2D(bitmap, coord);\r\n\tif (!hasTransform)\r\n\t{\r\n\t\treturn color;\r\n\t}\r\n\r\n\tif (color.a == 0.0)\r\n\t{\r\n\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n\t}\r\n\r\n\tif (!hasColorTransform)\r\n\t{\r\n\t\treturn color * openfl_Alphav;\r\n\t}\r\n\r\n\tcolor = vec4(color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4(0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0)\r\n\t{\r\n\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t}\r\n\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n}\r\n\r\nuniform vec4 _camSize;\r\n\r\nfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\treturn min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n}\r\n\r\nvec2 getCamPos(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n}\r\nvec2 camToOg(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n}\r\nvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n}")staticfinalread onlyfragHeader:String = "varying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;\r\nuniform sampler2D bitmap;\r\n\r\nuniform bool hasTransform;\r\nuniform bool hasColorTransform;\r\n\r\nvec4 flixel_texture2D(sampler2D bitmap, vec2 coord)\r\n{\r\n\tvec4 color = texture2D(bitmap, coord);\r\n\tif (!hasTransform)\r\n\t{\r\n\t\treturn color;\r\n\t}\r\n\r\n\tif (color.a == 0.0)\r\n\t{\r\n\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n\t}\r\n\r\n\tif (!hasColorTransform)\r\n\t{\r\n\t\treturn color * openfl_Alphav;\r\n\t}\r\n\r\n\tcolor = vec4(color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4(0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0)\r\n\t{\r\n\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t}\r\n\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n}\r\n\r\nuniform vec4 _camSize;\r\n\r\nfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\treturn min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n}\r\n\r\nvec2 getCamPos(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n}\r\nvec2 camToOg(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n}\r\nvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n}"

      @:value("openfl_Alphav = openfl_Alpha;\r\nopenfl_TextureCoordv = openfl_TextureCoord;\r\n\r\nif (openfl_HasColorTransform) {\r\n\r\n\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\r\n\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\r\n\r\n}\r\n\r\ngl_Position = openfl_Matrix * openfl_Position;")staticfinalread onlyvertBody:String = "openfl_Alphav = openfl_Alpha;\r\nopenfl_TextureCoordv = openfl_TextureCoord;\r\n\r\nif (openfl_HasColorTransform) {\r\n\r\n\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\r\n\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\r\n\r\n}\r\n\r\ngl_Position = openfl_Matrix * openfl_Position;"

      @:value("attribute float openfl_Alpha;\r\nattribute vec4 openfl_ColorMultiplier;\r\nattribute vec4 openfl_ColorOffset;\r\nattribute vec4 openfl_Position;\r\nattribute vec2 openfl_TextureCoord;\r\n\r\nvarying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform mat4 openfl_Matrix;\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;")staticfinalread onlyvertHeader:String = "attribute float openfl_Alpha;\r\nattribute vec4 openfl_ColorMultiplier;\r\nattribute vec4 openfl_ColorOffset;\r\nattribute vec4 openfl_Position;\r\nattribute vec2 openfl_TextureCoord;\r\n\r\nvarying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform mat4 openfl_Matrix;\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;"

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/CodenameBuildField.html b/pages/funkin/backend/shaders/ShaderTypeException.html similarity index 63% rename from pages/funkin/system/framerate/CodenameBuildField.html rename to pages/funkin/backend/shaders/ShaderTypeException.html index c539db15..4c6792e8 100644 --- a/pages/funkin/system/framerate/CodenameBuildField.html +++ b/pages/funkin/backend/shaders/ShaderTypeException.html @@ -1,10 +1,10 @@ -funkin.system.framerate.CodenameBuildField

      Constructor

      new()

      \ No newline at end of file +

      Constructor

      new(name:String, has:Class<Dynamic>, want:Dynamic)

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/index.html b/pages/funkin/backend/shaders/index.html similarity index 62% rename from pages/funkin/desktop/editors/index.html rename to pages/funkin/backend/shaders/index.html index 2cfad82f..e2872336 100644 --- a/pages/funkin/desktop/editors/index.html +++ b/pages/funkin/backend/shaders/index.html @@ -1,10 +1,10 @@ -funkin.desktop.editors
      \ No newline at end of file +

      funkin.backend.shaders

      ..
      CustomShader

      Class for custom shaders.

      FunkinShader

      ShaderTemplates

      ShaderTypeException

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Action.html b/pages/funkin/backend/system/Action.html new file mode 100644 index 00000000..88f843e0 --- /dev/null +++ b/pages/funkin/backend/system/Action.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.Action

      Variables

      @:value(cast "accept")@:impl@:enuminlineread onlyACCEPT:Action = "accept"

      @:value(cast "back")@:impl@:enuminlineread onlyBACK:Action = "back"

      @:value(cast "cheat")@:impl@:enuminlineread onlyCHEAT:Action = "cheat"

      @:value(cast "down")@:impl@:enuminlineread onlyDOWN:Action = "down"

      @:value(cast "down-press")@:impl@:enuminlineread onlyDOWN_P:Action = "down-press"

      @:value(cast "down-release")@:impl@:enuminlineread onlyDOWN_R:Action = "down-release"

      @:value(cast "left")@:impl@:enuminlineread onlyLEFT:Action = "left"

      @:value(cast "left-press")@:impl@:enuminlineread onlyLEFT_P:Action = "left-press"

      @:value(cast "left-release")@:impl@:enuminlineread onlyLEFT_R:Action = "left-release"

      @:value(cast "note-down")@:impl@:enuminlineread onlyNOTE_DOWN:Action = "note-down"

      @:value(cast "note-down-press")@:impl@:enuminlineread onlyNOTE_DOWN_P:Action = "note-down-press"

      @:value(cast "note-down-release")@:impl@:enuminlineread onlyNOTE_DOWN_R:Action = "note-down-release"

      @:value(cast "note-left")@:impl@:enuminlineread onlyNOTE_LEFT:Action = "note-left"

      @:value(cast "note-left-press")@:impl@:enuminlineread onlyNOTE_LEFT_P:Action = "note-left-press"

      @:value(cast "note-left-release")@:impl@:enuminlineread onlyNOTE_LEFT_R:Action = "note-left-release"

      @:value(cast "note-right")@:impl@:enuminlineread onlyNOTE_RIGHT:Action = "note-right"

      @:value(cast "note-right-press")@:impl@:enuminlineread onlyNOTE_RIGHT_P:Action = "note-right-press"

      @:value(cast "note-right-release")@:impl@:enuminlineread onlyNOTE_RIGHT_R:Action = "note-right-release"

      @:value(cast "note-up")@:impl@:enuminlineread onlyNOTE_UP:Action = "note-up"

      @:value(cast "note-up-press")@:impl@:enuminlineread onlyNOTE_UP_P:Action = "note-up-press"

      @:value(cast "note-up-release")@:impl@:enuminlineread onlyNOTE_UP_R:Action = "note-up-release"

      @:value(cast "pause")@:impl@:enuminlineread onlyPAUSE:Action = "pause"

      @:value(cast "reset")@:impl@:enuminlineread onlyRESET:Action = "reset"

      @:value(cast "right")@:impl@:enuminlineread onlyRIGHT:Action = "right"

      @:value(cast "right-press")@:impl@:enuminlineread onlyRIGHT_P:Action = "right-press"

      @:value(cast "right-release")@:impl@:enuminlineread onlyRIGHT_R:Action = "right-release"

      @:value(cast "switchmod")@:impl@:enuminlineread onlySWITCHMOD:Action = "switchmod"

      @:value(cast "up")@:impl@:enuminlineread onlyUP:Action = "up"

      @:value(cast "up-press")@:impl@:enuminlineread onlyUP_P:Action = "up-press"

      @:value(cast "up-release")@:impl@:enuminlineread onlyUP_R:Action = "up-release"

      \ No newline at end of file diff --git a/pages/funkin/backend/system/BPMChangeEvent.html b/pages/funkin/backend/system/BPMChangeEvent.html new file mode 100644 index 00000000..597f1e6c --- /dev/null +++ b/pages/funkin/backend/system/BPMChangeEvent.html @@ -0,0 +1,12 @@ + + + +funkin.backend.system.BPMChangeEvent

      ... +@author

      Fields

      stepTime:Float

      songTime:Float

      bpm:Float

      \ No newline at end of file diff --git a/pages/funkin/utils/native/Stdin.html b/pages/funkin/backend/system/CommandLineHandler.html similarity index 55% rename from pages/funkin/utils/native/Stdin.html rename to pages/funkin/backend/system/CommandLineHandler.html index edae92fb..f18372a9 100644 --- a/pages/funkin/utils/native/Stdin.html +++ b/pages/funkin/backend/system/CommandLineHandler.html @@ -1,10 +1,10 @@ -funkin.utils.native.Stdin

      Constructor

      new(p:Dynamic)

      Methods

      \ No newline at end of file +

      Static methods

      staticparseCommandLine(cmd:Array<String>):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Conductor.html b/pages/funkin/backend/system/Conductor.html new file mode 100644 index 00000000..d9b78f45 --- /dev/null +++ b/pages/funkin/backend/system/Conductor.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.Conductor

      Static variables

      @:value(4)staticbeatsPerMesure:Float = 4

      Number of beats per mesure (top number in time signature). Defaults to 4.

      @:value(100)staticbpm:Float = 100

      Current BPM

      @:value([])staticbpmChangeMap:Array<BPMChangeEvent> = []

      Array of all BPM changes that have been mapped.

      @:value(((60 / bpm) * 1000))staticcrochet:Float = ((60 / bpm) * 1000)

      Current Crochet (time per beat), in milliseconds.

      @:value(0)staticcurBeat:Int = 0

      Current beat

      @:value(0)staticcurBeatFloat:Float = 0

      Current beat, as a Float (ex: 1.24, instead of 1)

      @:value(0)staticcurMeasure:Int = 0

      Current measure

      @:value(0)staticcurMeasureFloat:Float = 0

      Current measure, as a Float (ex: 1.24, instead of 1)

      @:value(0)staticcurStep:Int = 0

      Current step

      @:value(0)staticcurStepFloat:Float = 0

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new FlxTypedSignal())staticonBPMChange:FlxTypedSignal<Float ‑> Void> = new FlxTypedSignal()

      @:value(new FlxTypedSignal())staticonBeatHit:FlxTypedSignal<Int ‑> Void> = new FlxTypedSignal()

      @:value(new FlxTypedSignal())staticonMeasureHit:FlxTypedSignal<Int ‑> Void> = new FlxTypedSignal()

      FlxSignals

      @:value(new FlxTypedSignal())staticonStepHit:FlxTypedSignal<Int ‑> Void> = new FlxTypedSignal()

      staticsongPosition:Float

      Current position of the song, in milliseconds.

      @:value(crochet / 4)staticstepCrochet:Float = crochet / 4

      Current StepCrochet (time per step), in milliseconds.

      @:value(4)staticstepsPerBeat:Float = 4

      Number of steps per beat (bottom number in time signature). Defaults to 4.

      Static methods

      @:value({ stepsPerBeat : 4, beatsPerMesure : 4 })staticchangeBPM(newBpm:Float, beatsPerMesure:Float = 4, stepsPerBeat:Float = 4):Void

      staticgetStepForTime(time:Float):Float

      staticgetTimeForStep(step:Float):Float

      staticinit():Void

      staticmapBPMChanges(song:ChartData):Void

      Maps BPM changes from a song.

      Parameters:

      song

      Song to map BPM changes from.

      staticreset():Void

      staticsetupSong(SONG:ChartData):Void

      \ No newline at end of file diff --git a/pages/funkin/system/Control.html b/pages/funkin/backend/system/Control.html similarity index 53% rename from pages/funkin/system/Control.html rename to pages/funkin/backend/system/Control.html index 63793315..034f4d93 100644 --- a/pages/funkin/system/Control.html +++ b/pages/funkin/backend/system/Control.html @@ -1,7 +1,7 @@ -funkin.system.Controlfunkin.backend.system.Control

      Since, in many cases multiple actions should use similar keys, we don't want the +

      Since, in many cases multiple actions should use similar keys, we don't want the rebinding UI to list every action. ActionBinders are what the user perceives as -an input so, for instance, they can't set jump-press and jump-release to different keys.

      Values

      \ No newline at end of file +an input so, for instance, they can't set jump-press and jump-release to different keys.

      Values

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Controls.html b/pages/funkin/backend/system/Controls.html new file mode 100644 index 00000000..f881e5b9 --- /dev/null +++ b/pages/funkin/backend/system/Controls.html @@ -0,0 +1,16 @@ + + + +funkin.backend.system.Controls

      A list of actions that a player would invoke via some input device. +Uses FlxActions to funnel various inputs to a single action.

      Constructor

      @:value({ scheme : None })new(name:String, scheme:KeyboardScheme = None)

      Variables

      read onlyACCEPT:Bool

      read onlyBACK:Bool

      read onlyCHEAT:Bool

      read onlyDOWN:Bool

      read onlyDOWN_P:Bool

      read onlyDOWN_R:Bool

      read onlyLEFT:Bool

      read onlyLEFT_P:Bool

      read onlyLEFT_R:Bool

      read onlyNOTE_DOWN:Bool

      read onlyNOTE_DOWN_P:Bool

      read onlyNOTE_DOWN_R:Bool

      read onlyNOTE_LEFT:Bool

      read onlyNOTE_LEFT_P:Bool

      read onlyNOTE_LEFT_R:Bool

      read onlyNOTE_RIGHT:Bool

      read onlyNOTE_RIGHT_P:Bool

      read onlyNOTE_RIGHT_R:Bool

      read onlyNOTE_UP:Bool

      read onlyNOTE_UP_P:Bool

      read onlyNOTE_UP_R:Bool

      read onlyPAUSE:Bool

      read onlyRESET:Bool

      read onlyRIGHT:Bool

      read onlyRIGHT_P:Bool

      read onlyRIGHT_R:Bool

      read onlySWITCHMOD:Bool

      read onlyUP:Bool

      read onlyUP_P:Bool

      read onlyUP_R:Bool

      @:value([])gamepadsAdded:Array<Int> = []

      @:value(KeyboardScheme.None)keyboardScheme:KeyboardScheme = KeyboardScheme.None

      Methods

      addDefaultGamepad(id:Int):Void

      addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void

      bindButtons(control:Control, id:Int, buttons:Array<FlxGamepadInputID>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. +If binder is a literal you can inline this

      bindKeys(control:Control, keys:Array<FlxKey>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. +If binder is a literal you can inline this

      checkByName(name:Action):Bool

      copyFrom(controls:Controls, ?device:Device):Void

      inlinecopyTo(controls:Controls, ?device:Device):Void

      getDialogueName(action:FlxActionDigital):String

      getDialogueNameFromToken(token:String):String

      getInputsFor(control:Control, device:Device, ?list:Array<Int>):Array<Int>

      removeDevice(device:Device):Void

      @:value({ deviceID : FlxInputDeviceID.ALL })removeGamepad(deviceID:Int = FlxInputDeviceID.ALL):Void

      replaceBinding(control:Control, device:Device, ?toAdd:Int, ?toRemove:Int):Void

      @:value({ reset : true })setKeyboardScheme(scheme:KeyboardScheme, reset:Bool = true):Void

      unbindButtons(control:Control, gamepadID:Int, buttons:Array<FlxGamepadInputID>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. +If binder is a literal you can inline this

      unbindKeys(control:Control, keys:Array<FlxKey>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. +If binder is a literal you can inline this

      \ No newline at end of file diff --git a/pages/funkin/utils/native/index.html b/pages/funkin/backend/system/Device.html similarity index 56% rename from pages/funkin/utils/native/index.html rename to pages/funkin/backend/system/Device.html index 849ead72..7edf85b2 100644 --- a/pages/funkin/utils/native/index.html +++ b/pages/funkin/backend/system/Device.html @@ -1,10 +1,10 @@ -funkin.utils.native

      funkin.utils.native

      ..
      HiddenProcess

      Stdin

      Stdout

      \ No newline at end of file +

      Values

      Gamepad(id:Int)

      \ No newline at end of file diff --git a/pages/funkin/backend/system/ErrorCode.html b/pages/funkin/backend/system/ErrorCode.html new file mode 100644 index 00000000..e44980e6 --- /dev/null +++ b/pages/funkin/backend/system/ErrorCode.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.ErrorCode

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyFAILED:ErrorCode = 1

      @:value(cast 2)@:impl@:enuminlineread onlyMISSING_PROPERTY:ErrorCode = 2

      @:value(cast 0)@:impl@:enuminlineread onlyOK:ErrorCode = 0

      @:value(cast 5)@:impl@:enuminlineread onlyREFLECT_ERROR:ErrorCode = 5

      @:value(cast 3)@:impl@:enuminlineread onlyTYPE_INCORRECT:ErrorCode = 3

      @:value(cast 4)@:impl@:enuminlineread onlyVALUE_NULL:ErrorCode = 4

      \ No newline at end of file diff --git a/pages/funkin/backend/system/FunkinGame.html b/pages/funkin/backend/system/FunkinGame.html new file mode 100644 index 00000000..2c9a2a9e --- /dev/null +++ b/pages/funkin/backend/system/FunkinGame.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.FunkinGame

      Constructor

      new(?gameWidth:Int, ?gameHeight:Int, ?initialState:Class<FlxState>, ?updateFramerate:Int, ?drawFramerate:Int, ?skipSplash:Bool, ?startFullscreen:Bool)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/FunkinRatioScaleMode.html b/pages/funkin/backend/system/FunkinRatioScaleMode.html new file mode 100644 index 00000000..b6abc2c9 --- /dev/null +++ b/pages/funkin/backend/system/FunkinRatioScaleMode.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.FunkinRatioScaleMode

      Constructor

      new(?fillScreen:Bool)

      Variables

      @:value(null)@:isVarheight:Null<Int> = null

      @:value(null)@:isVarwidth:Null<Int> = null

      Methods

      resetSize():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/GraphicCacheSprite.html b/pages/funkin/backend/system/GraphicCacheSprite.html new file mode 100644 index 00000000..1380e55c --- /dev/null +++ b/pages/funkin/backend/system/GraphicCacheSprite.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.GraphicCacheSprite

      Dummy FlxSprite that allows you to cache FlxGraphics, and immediatly send them to GPU memory.

      Constructor

      new()

      Variables

      @:value([])cachedGraphics:Array<FlxGraphic> = []

      Array containing all of the graphics cached by this sprite.

      @:value([])nonRenderedCachedGraphics:Array<FlxGraphic> = []

      Array containing all of the non rendered (not sent to GPU) cached graphics.

      Methods

      cache(path:String):Void

      Caches a graphic at specified path.

      Parameters:

      path

      Path to the graphic.

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/dialogue/CharPosDef.html b/pages/funkin/backend/system/KeyboardScheme.html similarity index 60% rename from pages/funkin/cutscenes/dialogue/CharPosDef.html rename to pages/funkin/backend/system/KeyboardScheme.html index 0cc17d4c..f38a00cd 100644 --- a/pages/funkin/cutscenes/dialogue/CharPosDef.html +++ b/pages/funkin/backend/system/KeyboardScheme.html @@ -1,10 +1,10 @@ -funkin.cutscenes.dialogue.CharPosDef

      Fields

      y:Float

      x:Float

      \ No newline at end of file +

      Values

      Duo(first:Bool)

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Level.html b/pages/funkin/backend/system/Level.html new file mode 100644 index 00000000..464c7bf3 --- /dev/null +++ b/pages/funkin/backend/system/Level.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.Level

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyERROR:Level = 2

      @:value(cast 0)@:impl@:enuminlineread onlyINFO:Level = 0

      @:value(cast 3)@:impl@:enuminlineread onlyTRACE:Level = 3

      @:value(cast 4)@:impl@:enuminlineread onlyVERBOSE:Level = 4

      @:value(cast 1)@:impl@:enuminlineread onlyWARNING:Level = 1

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/Butt.html b/pages/funkin/backend/system/LogText.html similarity index 56% rename from pages/funkin/desktop/editors/Butt.html rename to pages/funkin/backend/system/LogText.html index 1e03646e..08334d99 100644 --- a/pages/funkin/desktop/editors/Butt.html +++ b/pages/funkin/backend/system/LogText.html @@ -1,10 +1,10 @@ -funkin.desktop.editors.Butt

      Fields

      label:String

      @:optionaloptionalcallback:Null<() ‑> Void>

      \ No newline at end of file +

      Fields

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Logs.html b/pages/funkin/backend/system/Logs.html new file mode 100644 index 00000000..20b00d88 --- /dev/null +++ b/pages/funkin/backend/system/Logs.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.Logs

      Static variables

      @:value(Log.trace)staticnativeTrace:(v:Dynamic, infos:PosInfos) ‑> Void = Log.trace

      Static methods

      static__showInConsole(text:Array<LogText>):Void

      staticinit():Void

      @:value({ color : LIGHTGRAY })staticlogText(text:String, color:ConsoleColor = LIGHTGRAY):LogText

      @:value({ level : INFO })staticprepareColoredTrace(text:Array<LogText>, level:Level = INFO):Array<LogText>

      @:value({ color : LIGHTGRAY, level : INFO })statictrace(text:String, level:Level = INFO, color:ConsoleColor = LIGHTGRAY):Void

      @:value({ level : INFO })statictraceColored(text:Array<LogText>, level:Level = INFO):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/Main.html b/pages/funkin/backend/system/Main.html new file mode 100644 index 00000000..c4d40691 --- /dev/null +++ b/pages/funkin/backend/system/Main.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.Main

      Static variables

      @:value(0)@:keepstaticchangeID:Int = 0

      @:value(false)@:keepstaticforceGPUOnlyBitmapsOff:Bool = false

      @:keepstaticgame:FunkinGame

      @:value([])@:keepstaticgameThreads:Array<Thread> = []

      @:keepstaticinstance:Main

      @:value(null)@:keepstaticmodToLoad:String = null

      @:value("../../../../")@:keepstaticpathBack:String = "../../../../"

      @:value(false)@:keepstaticstartedFromSource:Bool = false

      @:value(0)@:keepstatictime:Int = 0

      Static methods

      @:keepstaticexecAsync(func:() ‑> Void):Void

      @:keepstaticinitTransition():Void

      @:keepstaticloadGameSettings():Void

      @:keepstaticrefreshAssets():Void

      Constructor

      @:keepnew()

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/WindowCaptionButton.html b/pages/funkin/backend/system/MainState.html similarity index 51% rename from pages/funkin/desktop/windows/WindowCaptionButton.html rename to pages/funkin/backend/system/MainState.html index 9bb4ce2d..d4b0ab97 100644 --- a/pages/funkin/desktop/windows/WindowCaptionButton.html +++ b/pages/funkin/backend/system/MainState.html @@ -1,10 +1,10 @@ -funkin.desktop.windows.WindowCaptionButton

      Static variables

      @:value(["close", "maximize", "minimize", "help", "restore"])staticanims:Array<String> = ["close", "maximize", "minimize", "help", "restore"]

      Constructor

      new(window:Window, i:Int)

      Variables

      icon:FlxSprite

      Methods

      \ No newline at end of file +

      Simple state used for loading the game

      Static variables

      @:value(false)staticbetaWarningShown:Bool = false

      @:value(false)staticinitiated:Bool = false

      Constructor

      new(?MaxSize:Int)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/OptimizedBitmapData.html b/pages/funkin/backend/system/OptimizedBitmapData.html new file mode 100644 index 00000000..2890f120 --- /dev/null +++ b/pages/funkin/backend/system/OptimizedBitmapData.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.OptimizedBitmapData

      Constructor

      new(width:Int, height:Int, ?transparent:Bool, ?fillColor:UInt)

      \ No newline at end of file diff --git a/pages/funkin/backend/system/RotatingSpriteGroup.html b/pages/funkin/backend/system/RotatingSpriteGroup.html new file mode 100644 index 00000000..afb6e14e --- /dev/null +++ b/pages/funkin/backend/system/RotatingSpriteGroup.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.RotatingSpriteGroup

      Constructor

      new(?X:Float, ?Y:Float, ?MaxSize:Int)

      Methods

      @:value({ Revive : true, Force : false })recycleLoop(?ObjectClass:Class<FlxSprite>, ?ObjectFactory:() ‑> FlxSprite, Force:Bool = false, Revive:Bool = true):FlxSprite

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/AssetTreeInfo.html b/pages/funkin/backend/system/framerate/AssetTreeInfo.html new file mode 100644 index 00000000..d44f87d3 --- /dev/null +++ b/pages/funkin/backend/system/framerate/AssetTreeInfo.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.AssetTreeInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/CodenameBuildField.html b/pages/funkin/backend/system/framerate/CodenameBuildField.html new file mode 100644 index 00000000..9011f0f4 --- /dev/null +++ b/pages/funkin/backend/system/framerate/CodenameBuildField.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.CodenameBuildField

      Constructor

      new()

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/ConductorInfo.html b/pages/funkin/backend/system/framerate/ConductorInfo.html new file mode 100644 index 00000000..e1634066 --- /dev/null +++ b/pages/funkin/backend/system/framerate/ConductorInfo.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.ConductorInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/FlixelInfo.html b/pages/funkin/backend/system/framerate/FlixelInfo.html new file mode 100644 index 00000000..0702b39a --- /dev/null +++ b/pages/funkin/backend/system/framerate/FlixelInfo.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.FlixelInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/Framerate.html b/pages/funkin/backend/system/framerate/Framerate.html new file mode 100644 index 00000000..b0f7110d --- /dev/null +++ b/pages/funkin/backend/system/framerate/Framerate.html @@ -0,0 +1,12 @@ + + + +funkin.backend.system.framerate.Framerate

      Static variables

      @:value(null)@:isVarstaticread only__bitmap:BitmapData = null

      @:value(1)staticdebugMode:Int = 1

      0: FPS INVISIBLE +1: FPS VISIBLE +2: FPS & DEBUG INFO VISIBLE

      @:value("${Sys.getEnv(\"windir\")}\\Fonts\\consola.ttf")staticfontName:String = "${Sys.getEnv(\"windir\")}\\Fonts\\consola.ttf"

      @:value(new FlxPoint())staticoffset:FlxPoint = new FlxPoint()

      statictextFormat:TextFormat

      Constructor

      new()

      Variables

      bgSprite:Bitmap

      @:value([])categories:Array<FramerateCategory> = []

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/FramerateCategory.html b/pages/funkin/backend/system/framerate/FramerateCategory.html new file mode 100644 index 00000000..9ede833d --- /dev/null +++ b/pages/funkin/backend/system/framerate/FramerateCategory.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.FramerateCategory

      Constructor

      @:value({ text : "" })new(title:String, text:String = "")

      Variables

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/FramerateCounter.html b/pages/funkin/backend/system/framerate/FramerateCounter.html new file mode 100644 index 00000000..8726c227 --- /dev/null +++ b/pages/funkin/backend/system/framerate/FramerateCounter.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.FramerateCounter

      Constructor

      new()

      Variables

      fpsLabel:TextField

      fpsNum:TextField

      @:value(0)lastFPS:Float = 0

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/MemoryCounter.html b/pages/funkin/backend/system/framerate/MemoryCounter.html new file mode 100644 index 00000000..cd1949b1 --- /dev/null +++ b/pages/funkin/backend/system/framerate/MemoryCounter.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.MemoryCounter

      Constructor

      new()

      Variables

      @:value(0)memory:Float = 0

      @:value(0)memoryPeak:Float = 0

      memoryPeakText:TextField

      memoryText:TextField

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/SystemInfo.html b/pages/funkin/backend/system/framerate/SystemInfo.html new file mode 100644 index 00000000..30fcf581 --- /dev/null +++ b/pages/funkin/backend/system/framerate/SystemInfo.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate.SystemInfo

      Static variables

      @:value("Unknown")staticcpuName:String = "Unknown"

      @:value("Unknown")staticgpuMaxSize:String = "Unknown"

      @:value("Unknown")staticgpuName:String = "Unknown"

      @:value("Unknown")staticmemType:String = "Unknown"

      @:value("Unknown")staticosInfo:String = "Unknown"

      @:value("Unknown")statictotalMem:String = "Unknown"

      @:value("Unknown")staticvRAM:String = "Unknown"

      Static methods

      staticinlineinit():Void

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/system/framerate/index.html b/pages/funkin/backend/system/framerate/index.html new file mode 100644 index 00000000..6b32e7d3 --- /dev/null +++ b/pages/funkin/backend/system/framerate/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.framerate
      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHub.html b/pages/funkin/backend/system/github/GitHub.html new file mode 100644 index 00000000..62fbef42 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHub.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHub

      Static methods

      static__requestBytesOnGitHubServers(url:String):Bytes

      static__requestOnGitHubServers(url:String):String

      @:value({ keepDrafts : false, keepPrereleases : true })staticinlinefilterReleases(releases:Array<GitHubRelease>, keepPrereleases:Bool = true, keepDrafts:Bool = false):Array<GitHubRelease>

      Filters all releases gotten by getReleases

      Parameters:

      releases

      Releases

      keepPrereleases

      Whenever to keep Pre-Releases.

      keepDrafts

      Whenever to keep Drafts.

      Returns:

      Filtered releases.

      staticgetContributors(user:String, repository:String, ?onError:Exception ‑> Void):Array<GitHubContributor>

      staticgetReleases(user:String, repository:String, ?onError:Exception ‑> Void):Array<GitHubRelease>

      Gets all the releases from a specific GitHub repository using the GitHub API.

      Parameters:

      user
      repository

      Returns:

      Releases

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubAsset.html b/pages/funkin/backend/system/github/GitHubAsset.html new file mode 100644 index 00000000..be2fdedd --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubAsset.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubAsset

      Fields

      url:String

      updated_at:String

      state:String

      size:UInt

      node_id:String

      name:String

      label:String

      id:Int

      created_at:String

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubContributor.html b/pages/funkin/backend/system/github/GitHubContributor.html new file mode 100644 index 00000000..a230f09f --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubContributor.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubContributor

      Fields

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubException.html b/pages/funkin/backend/system/github/GitHubException.html new file mode 100644 index 00000000..c9c14a40 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubException.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubException

      Constructor

      new(apiMessage:String, documentationUrl:String)

      Variables

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubReactions.html b/pages/funkin/backend/system/github/GitHubReactions.html new file mode 100644 index 00000000..b89a3fd2 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubReactions.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubReactions

      Fields

      url:String

      rocket:Int

      laugh:Int

      hooray:Int

      heart:Int

      eyes:Int

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubRelease.html b/pages/funkin/backend/system/github/GitHubRelease.html new file mode 100644 index 00000000..3c5ab096 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubRelease.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubRelease

      Fields

      url:String

      Url of the release (GitHub API)

      upload_url:String

      Template URL for asset download link.

      tag_name:String

      node_id:String

      name:String

      id:Int

      ID of the release.

      html_url:String

      Link to the release on the GitHub website.

      draft:Bool

      created_at:String

      body:String

      Body of the GitHub request (Markdown)

      author:GitHubUser

      Author of the release

      assets_url:String

      Url for the assets JSON. Also accessible via GitHubRelease.assets

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubUser.html b/pages/funkin/backend/system/github/GitHubUser.html new file mode 100644 index 00000000..121df4e5 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubUser.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubUser

      Fields

      url:String

      URL to the user on GitHub's servers.

      updated_at:String

      Date of last account update.

      type:GitHubUserType

      Type of the user.

      twitter_username:String

      Twitter username of the user. Can be null.

      starred_url:String

      URL on GitHub's API to access this user's starred repositories.

      site_admin:Bool

      Whenever the user is a GitHub administrator.

      public_repos:Int

      Number of public repos this user own.

      public_gists:Int

      Number of public gists this user own.

      node_id:String

      ID of the current node on the GitHub database.

      name:String

      Name of the user.

      login:String

      Username of the user.

      location:String

      id:Int

      ID of the user.

      html_url:String

      URL to the user on GitHub's website.

      hireable:Null<Bool>

      gravatar_id:String

      Unknown

      gists_url:String

      URL on GitHub's API to access this user's gists.

      following_url:String

      URL on GitHub's API to access the accounts this user is following.

      following:Int

      Number of accounts this user follows.

      followers_url:String

      URL on GitHub's API to access this user's followers.

      followers:Int

      Number of followers this user have

      email:String

      created_at:String

      Date of creation of the account

      company:String

      The company this user belongs to. Can be null.

      blog:String

      bio:String

      avatar_url:String

      Link to the avatar (profile picture).

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/GitHubUserType.html b/pages/funkin/backend/system/github/GitHubUserType.html new file mode 100644 index 00000000..1dcf5a51 --- /dev/null +++ b/pages/funkin/backend/system/github/GitHubUserType.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github.GitHubUserType

      Variables

      @:value(cast "Organization")@:impl@:enuminlineread onlyORGANIZATION:GitHubUserType = "Organization"

      @:value(cast "User")@:impl@:enuminlineread onlyUSER:GitHubUserType = "User"

      \ No newline at end of file diff --git a/pages/funkin/backend/system/github/index.html b/pages/funkin/backend/system/github/index.html new file mode 100644 index 00000000..5e805567 --- /dev/null +++ b/pages/funkin/backend/system/github/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.github
      \ No newline at end of file diff --git a/pages/funkin/backend/system/index.html b/pages/funkin/backend/system/index.html new file mode 100644 index 00000000..ae0b65b9 --- /dev/null +++ b/pages/funkin/backend/system/index.html @@ -0,0 +1,14 @@ + + + +funkin.backend.system

      funkin.backend.system

      ..
      framerate
      github
      interfaces
      macros
      modules
      net
      Action

      BPMChangeEvent

      ... +@author

      CommandLineHandler

      Conductor

      Control

      Since, in many cases multiple actions should use similar keys, we don't want the +rebinding UI to list every action. ActionBinders are what the user perceives as +an input so, for instance, they can't set jump-press and jump-release to different keys.

      Controls

      A list of actions that a player would invoke via some input device. +Uses FlxActions to funnel various inputs to a single action.

      Device

      ErrorCode

      FunkinGame

      FunkinRatioScaleMode

      GraphicCacheSprite

      Dummy FlxSprite that allows you to cache FlxGraphics, and immediatly send them to GPU memory.

      KeyboardScheme

      Level

      LogText

      Logs

      Main

      MainState

      Simple state used for loading the game

      OptimizedBitmapData

      RotatingSpriteGroup

      \ No newline at end of file diff --git a/pages/funkin/backend/system/interfaces/IBeatReceiver.html b/pages/funkin/backend/system/interfaces/IBeatReceiver.html new file mode 100644 index 00000000..80803619 --- /dev/null +++ b/pages/funkin/backend/system/interfaces/IBeatReceiver.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.interfaces.IBeatReceiver

      Methods

      beatHit(curBeat:Int):Void

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/interfaces/IOffsetCompatible.html b/pages/funkin/backend/system/interfaces/IOffsetCompatible.html new file mode 100644 index 00000000..806fed18 --- /dev/null +++ b/pages/funkin/backend/system/interfaces/IOffsetCompatible.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.interfaces.IOffsetCompatible

      Methods

      @:value({ y : 0, x : 0 })addOffset(anim:String, x:Float = 0, y:Float = 0):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/interfaces/index.html b/pages/funkin/backend/system/interfaces/index.html new file mode 100644 index 00000000..780d672b --- /dev/null +++ b/pages/funkin/backend/system/interfaces/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.interfaces

      funkin.backend.system.interfaces

      ..
      IBeatReceiver

      IOffsetCompatible

      \ No newline at end of file diff --git a/pages/funkin/backend/system/macros/DefinesMacro.html b/pages/funkin/backend/system/macros/DefinesMacro.html new file mode 100644 index 00000000..8163a0ec --- /dev/null +++ b/pages/funkin/backend/system/macros/DefinesMacro.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.macros.DefinesMacro

      Static variables

      staticread onlydefines:Map<String, Dynamic>

      Returns the defined values

      \ No newline at end of file diff --git a/pages/funkin/backend/system/macros/GitCommitMacro.html b/pages/funkin/backend/system/macros/GitCommitMacro.html new file mode 100644 index 00000000..bc7408f9 --- /dev/null +++ b/pages/funkin/backend/system/macros/GitCommitMacro.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.macros.GitCommitMacro

      Static variables

      staticread onlycommitHash:String

      Returns the current commit hash

      staticread onlycommitNumber:Int

      Returns the current commit number

      \ No newline at end of file diff --git a/pages/funkin/backend/system/macros/index.html b/pages/funkin/backend/system/macros/index.html new file mode 100644 index 00000000..36e2f907 --- /dev/null +++ b/pages/funkin/backend/system/macros/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.macros

      funkin.backend.system.macros

      ..
      DefinesMacro

      GitCommitMacro

      \ No newline at end of file diff --git a/pages/funkin/backend/system/modules/CrashHandler.html b/pages/funkin/backend/system/modules/CrashHandler.html new file mode 100644 index 00000000..c0b87833 --- /dev/null +++ b/pages/funkin/backend/system/modules/CrashHandler.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.modules.CrashHandler

      Static methods

      staticinit():Void

      staticonError(e:UncaughtErrorEvent):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/system/modules/FunkinCache.html b/pages/funkin/backend/system/modules/FunkinCache.html new file mode 100644 index 00000000..831bd109 --- /dev/null +++ b/pages/funkin/backend/system/modules/FunkinCache.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.modules.FunkinCache

      Static variables

      Static methods

      staticinit():Void

      Constructor

      new()

      Methods

      getBitmapData(id:String):BitmapData

      Retrieves a cached BitmapData.

      Parameters:

      id

      The ID of the cached BitmapData

      Returns:

      The cached BitmapData instance

      getFont(id:String):Font

      Retrieves a cached Font.

      Parameters:

      id

      The ID of the cached Font

      Returns:

      The cached Font instance

      getSound(id:String):Sound

      Retrieves a cached Sound.

      Parameters:

      id

      The ID of the cached Sound

      Returns:

      The cached Sound instance

      hasBitmapData(id:String):Bool

      Checks whether a BitmapData asset is cached.

      Parameters:

      id

      The ID of a BitmapData asset

      Returns:

      Whether the object has been cached

      hasFont(id:String):Bool

      Checks whether a Font asset is cached.

      Parameters:

      id

      The ID of a Font asset

      Returns:

      Whether the object has been cached

      hasSound(id:String):Bool

      Checks whether a Sound asset is cached.

      Parameters:

      id

      The ID of a Sound asset

      Returns:

      Whether the object has been cached

      removeBitmapData(id:String):Bool

      Removes a BitmapData from the cache.

      Parameters:

      id

      The ID of a BitmapData asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      removeFont(id:String):Bool

      Removes a Font from the cache.

      Parameters:

      id

      The ID of a Font asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      removeSound(id:String):Bool

      Removes a Sound from the cache.

      Parameters:

      id

      The ID of a Sound asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      \ No newline at end of file diff --git a/pages/funkin/backend/system/modules/PlayingSound.html b/pages/funkin/backend/system/modules/PlayingSound.html new file mode 100644 index 00000000..cc0f37a5 --- /dev/null +++ b/pages/funkin/backend/system/modules/PlayingSound.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.modules.PlayingSound

      Fields

      time:Float

      sound:FlxSound

      \ No newline at end of file diff --git a/pages/funkin/backend/system/modules/index.html b/pages/funkin/backend/system/modules/index.html new file mode 100644 index 00000000..66e0d68f --- /dev/null +++ b/pages/funkin/backend/system/modules/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.modules

      funkin.backend.system.modules

      ..
      CrashHandler

      FunkinCache

      PlayingSound

      \ No newline at end of file diff --git a/pages/funkin/backend/system/net/Socket.html b/pages/funkin/backend/system/net/Socket.html new file mode 100644 index 00000000..489222b4 --- /dev/null +++ b/pages/funkin/backend/system/net/Socket.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.net.Socket

      Constructor

      new(?socket:SysSocket)

      Variables

      socket:SysSocket

      Methods

      connect(host:Host, port:Int):Void

      destroy():Void

      @:value({ nbConnections : 1 })host(host:Host, port:Int, nbConnections:Int = 1):Void

      hostAndWait(h:Host, port:Int):Socket

      read():String

      write(str:String):Bool

      \ No newline at end of file diff --git a/pages/funkin/backend/system/net/index.html b/pages/funkin/backend/system/net/index.html new file mode 100644 index 00000000..a9fa48b3 --- /dev/null +++ b/pages/funkin/backend/system/net/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.system.net

      funkin.backend.system.net

      ..
      Socket

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/AnimData.html b/pages/funkin/backend/utils/AnimData.html new file mode 100644 index 00000000..70fdfd02 --- /dev/null +++ b/pages/funkin/backend/utils/AnimData.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.AnimData

      Fields

      y:Float

      x:Float

      name:String

      loop:Bool

      indices:Array<Int>

      fps:Float

      anim:String

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/BitmapUtil.html b/pages/funkin/backend/utils/BitmapUtil.html new file mode 100644 index 00000000..1b950861 --- /dev/null +++ b/pages/funkin/backend/utils/BitmapUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.BitmapUtil

      Static methods

      staticgetMostPresentColor(bmap:BitmapData):FlxColor

      Returns the most present color in a Bitmap.

      Parameters:

      bmap

      Bitmap

      Returns:

      FlxColor Color that is the most present.

      staticgetMostPresentSaturatedColor(bmap:BitmapData):FlxColor

      Returns the most present saturated color in a Bitmap.

      Parameters:

      bmap

      Bitmap

      Returns:

      FlxColor Color that is the most present.

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/ConsoleColor.html b/pages/funkin/backend/utils/ConsoleColor.html new file mode 100644 index 00000000..4ba3366c --- /dev/null +++ b/pages/funkin/backend/utils/ConsoleColor.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.ConsoleColor

      Variables

      @:value(cast 0)@:impl@:enuminlineread onlyBLACK:ConsoleColor = 0

      @:value(cast 9)@:impl@:enuminlineread onlyBLUE:ConsoleColor = 9

      @:value(cast 11)@:impl@:enuminlineread onlyCYAN:ConsoleColor = 11

      @:value(cast 1)@:impl@:enuminlineread onlyDARKBLUE:ConsoleColor = 1

      @:value(cast 3)@:impl@:enuminlineread onlyDARKCYAN:ConsoleColor = 3

      @:value(cast 2)@:impl@:enuminlineread onlyDARKGREEN:ConsoleColor = 2

      @:value(cast 5)@:impl@:enuminlineread onlyDARKMAGENTA:ConsoleColor = 5

      @:value(cast 4)@:impl@:enuminlineread onlyDARKRED:ConsoleColor = 4

      @:value(cast 6)@:impl@:enuminlineread onlyDARKYELLOW:ConsoleColor = 6

      @:value(cast 8)@:impl@:enuminlineread onlyGRAY:ConsoleColor = 8

      @:value(cast 10)@:impl@:enuminlineread onlyGREEN:ConsoleColor = 10

      @:value(cast 7)@:impl@:enuminlineread onlyLIGHTGRAY:ConsoleColor = 7

      @:value(cast 13)@:impl@:enuminlineread onlyMAGENTA:ConsoleColor = 13

      @:value(cast 12)@:impl@:enuminlineread onlyRED:ConsoleColor = 12

      @:value(cast 15)@:impl@:enuminlineread onlyWHITE:ConsoleColor = 15

      @:value(cast 14)@:impl@:enuminlineread onlyYELLOW:ConsoleColor = 14

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/CoolSfx.html b/pages/funkin/backend/utils/CoolSfx.html new file mode 100644 index 00000000..635ca21d --- /dev/null +++ b/pages/funkin/backend/utils/CoolSfx.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.CoolSfx

      SFXs to play using playMenuSFX.

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyCANCEL:CoolSfx = 2

      @:value(cast 3)@:impl@:enuminlineread onlyCHECKED:CoolSfx = 3

      @:value(cast 1)@:impl@:enuminlineread onlyCONFIRM:CoolSfx = 1

      @:value(cast 0)@:impl@:enuminlineread onlySCROLL:CoolSfx = 0

      @:value(cast 4)@:impl@:enuminlineread onlyUNCHECKED:CoolSfx = 4

      @:value(cast 5)@:impl@:enuminlineread onlyWARNING:CoolSfx = 5

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/CoolUtil.html b/pages/funkin/backend/utils/CoolUtil.html new file mode 100644 index 00000000..bbba2e66 --- /dev/null +++ b/pages/funkin/backend/utils/CoolUtil.html @@ -0,0 +1,17 @@ + + + +funkin.backend.utils.CoolUtil

      Static methods

      staticinlineaddEndZeros(str:String, num:Int):String

      Add several zeros at the end of a string, so that 2 becomes 20, useful for ms.

      Parameters:

      str

      String to add zeros

      num

      The length required

      staticinlineaddZeros(str:String, num:Int):String

      Add several zeros at the beginning of a string, so that 2 becomes 02.

      Parameters:

      str

      String to add zeros

      num

      The length required

      @:value({ axes : XY })staticinlinecameraCenter(obj:FlxObject, cam:FlxCamera, axes:FlxAxes = XY):Void

      Centers an object in a camera's field, basically screenCenter() but camera.width and camera.height are used instead of FlxG.width and FlxG.height.

      Parameters:

      obj

      Sprite to center

      cam

      Camera

      axes

      Axes (XY)

      staticinlineclear<T>(array:Array<T>):Array<T>

      Clears the content of an array

      staticcoolTextFile(path:String):Array<String>

      Allows you to split a text file from a path, into a "cool text file", AKA a list. Allows for comments. For example, +# comment +test1 + +test2 +will return ["test1", "test2"]

      Parameters:

      path

      Returns:

      Array

      staticinlinecopyColorTransform(color1:ColorTransform, color2:ColorTransform):Void

      Copies a color transform from color1 to color2

      Parameters:

      color1

      Color transform to copy to

      color2

      Color transform to copy from

      staticdeleteFolder(delete:String):Void

      Deletes a folder recursively

      Parameters:

      delete

      Path to the folder.

      staticinlinefloorInt(e:Float):Int

      Equivalent of Math.floor, except doesn't require a Int -> Float -> Int conversion.

      Parameters:

      e

      Value to get the floor of.

      staticinlinefpsLerp(v1:Float, v2:Float, ratio:Float):Float

      Alternative linear interpolation function for each frame use, without worrying about framerate changes.

      Parameters:

      v1

      Begin value

      v2

      End value

      ratio

      Ratio

      Returns:

      Float Final value

      staticinlinegetAtt(xml:Access, name:String):String

      Gets an XML attribute from an Access abstract, without throwing an exception if invalid. +Example: xml.getAtt("test").getDefault("Hello, World!");

      Parameters:

      xml

      XML to get the attribute from

      name

      Name of the attribute

      staticgetColorFromDynamic(c:Dynamic):Null<FlxColor>

      Tries to get a color from a Dynamic variable.

      Parameters:

      c

      Dynamic color.

      Returns:

      The result color, or null if invalid.

      staticinlinegetDefault<T>(v:Null<T>, defaultValue:T):T

      staticinlinegetFPSRatio(ratio:Float):Float

      Modifies a lerp ratio based on current FPS to keep a stable speed on higher framerate.

      Parameters:

      ratio

      Ratio

      Returns:

      FPS-Modified Ratio

      staticgetLastExceptionStack():String

      staticinlinegetMacroAbstractClass(className:String):Class<Dynamic>

      Gets the macro class created by hscript-improved for an abstract / enum

      staticgetSizeString(size:Float):String

      Returns a string representation of a size, following this format: 1.02 GB, 134.00 MB

      Parameters:

      size

      Size to convert ot string

      Returns:

      String Result string representation

      staticinlineindexOfFromLast<T>(array:Array<T>, element:T):Int

      Basically indexOf, but starts from the end.

      Parameters:

      array

      Array to scan

      element

      Element

      Returns:

      Index, or -1 if unsuccessful.

      staticinlineisNaN(v:Dynamic):Bool

      Whenever a value is NaN or not.

      Parameters:

      v

      Value

      staticinlinekeyToString(key:Null<FlxKey>):String

      Returns a simple string representation of a FlxKey. Used in Controls options.

      Parameters:

      key

      Key

      Returns:

      Simple representation

      staticinlinelast<T>(array:Array<T>):T

      Returns the last of an Array

      Parameters:

      array

      Array

      Returns:

      T Last element

      @:value({ fpsSensitive : false })staticinlinelerpColor(color1:FlxColor, color2:FlxColor, ratio:Float, fpsSensitive:Bool = false):FlxColor

      Lerps from color1 into color2 (Shortcut to FlxColor.interpolate)

      Parameters:

      color1

      Color 1

      color2

      Color 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should be fps sensitive (adapted when game is running at 120 instead of 60)

      staticloadAnimatedGraphic(spr:FlxSprite, path:String):FlxSprite

      Loads an animated graphic, and automatically animates it.

      Parameters:

      spr

      Sprite to load the graphic for

      path

      Path to the graphic

      staticinlinemaxInt(p1:Int, p2:Int):Int

      Equivalent of Math.max, except doesn't require a Int -> Float -> Int conversion.

      Parameters:

      p1
      p2

      Returns:

      return p1 < p2 ? p2 : p1

      @:value({ min : 0 })staticinlinenumberArray(max:Int, min:Int = 0):Array<Int>

      Returns an array of number from min to max. Equivalent of [for (i in min...max) i].

      Parameters:

      max

      Max value

      min

      Minimal value (0)

      Returns:

      Array Final array

      staticinlineopenURL(url:String):Void

      Opens an URL in the browser.

      Parameters:

      null

      url

      staticparseJson(assetPath:String):Unknown

      Shortcut to parse JSON from an Asset path

      Parameters:

      assetPath

      Path to the JSON asset.

      staticinlineparseJsonString(str:String):Unknown

      Shortcut to parse a JSON string

      Parameters:

      str

      Path to the JSON string

      Returns:

      Parsed JSON

      @:value({ volume : 1, menuSFX : SCROLL })staticinlineplayMenuSFX(menuSFX:CoolSfx = SCROLL, volume:Float = 1):Void

      Plays a specified Menu SFX.

      Parameters:

      menuSFX

      Menu SFX to play

      volume

      At which volume it should play

      @:value({ fadeIn : false })staticplayMenuSong(fadeIn:Bool = false):Void

      Plays the main menu theme.

      Parameters:

      null

      fadeIn

      @:value({ DefaultBPM : 102, Looped : true, Volume : 1, Persist : false })staticplayMusic(path:String, Persist:Bool = false, Volume:Int = 1, Looped:Bool = true, DefaultBPM:Int = 102, ?Group:FlxSoundGroup):Void

      Plays music, while resetting the Conductor, and taking info from INI in count.

      Parameters:

      path

      Path to the music

      Persist

      Whenever the music should persist while switching states

      DefaultBPM

      Default BPM of the music (102)

      Volume

      Volume of the music (1)

      Looped

      Whenever the music loops (true)

      Group

      A group that this music belongs to (default)

      staticpreloadCharacter(name:String, ?spriteName:String):Void

      Preloads a character.

      Parameters:

      name

      Character name

      spriteName

      (Optional) sprite name.

      staticinlinepushGroup<T>(array:Array<T>, args:Rest<T>):Array<T>

      Push an entire group into an array.

      Parameters:

      array

      Array to push the group into

      ...args

      Group entries

      Returns:

      Array

      staticinlinereplay(sound:FlxSound):Void

      Stops a sound, set its time to 0 then play it again.

      Parameters:

      sound

      Sound to replay.

      staticresetSprite(spr:FlxSprite, x:Float, y:Float):Void

      Resets an FlxSprite

      Parameters:

      spr

      Sprite to reset

      x

      New X position

      y

      New Y position

      staticsetFieldDefault<T>(v:Dynamic, name:String, defaultValue:T):T

      Sets a field's default value, and returns it. In case it already exists, returns the existing one.

      Parameters:

      v

      Dynamic to set the default value to

      name

      Name of the value

      defaultValue

      Default value

      Returns:

      T New/old value.

      staticinlinesetMusic(frontEnd:SoundFrontEnd, music:FlxSound):Void

      Sets a SoundFrontEnd's music to a FlxSound. +Example: FlxG.sound.setMusic(music);

      Parameters:

      frontEnd

      SoundFrontEnd to set the music of

      music

      Music

      staticinlinesetSpriteSize(sprite:FlxSprite, width:Float, height:Float):Void

      Equivalent of setGraphicSize, except that it can accept floats and automatically updates the hitbox.

      Parameters:

      sprite

      Sprite to set the size of

      width

      Width

      height

      Height

      @:value({ maxScale : 0, fill : true })staticinlinesetUnstretchedGraphicSize(sprite:FlxSprite, width:Int, height:Int, fill:Bool = true, maxScale:Float = 0):Void

      Allows you to set a graphic size (ex: 150x150), with proper hitbox without a stretched sprite.

      Parameters:

      sprite

      Sprite to apply the new graphic size to

      width

      Width

      height

      Height

      fill

      Whenever the sprite should fill instead of shrinking (true)

      maxScale

      Maximum scale (0 / none)

      staticswitchAnimFrames(anim1:FlxAnimation, anim2:FlxAnimation):Void

      Switches frames from 2 FlxAnimations.

      Parameters:

      anim1

      First animation

      anim2

      Second animation

      staticinlinetimeToStr(time:Float):String

      Converts a timestamp to a readable format such as 01:22 (mm:ss)

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/index.html b/pages/funkin/backend/utils/DiscordJson.html similarity index 51% rename from pages/funkin/desktop/windows/index.html rename to pages/funkin/backend/utils/DiscordJson.html index 93cf4b33..5654c95e 100644 --- a/pages/funkin/desktop/windows/index.html +++ b/pages/funkin/backend/utils/DiscordJson.html @@ -1,10 +1,10 @@ -funkin.desktop.windows
      \ No newline at end of file +

      Fields

      @:optionaloptionallogoText:Null<String>

      @:optionaloptionallogoKey:Null<String>

      @:optionaloptionalclientID:Null<String>

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/DiscordUtil.html b/pages/funkin/backend/utils/DiscordUtil.html new file mode 100644 index 00000000..1f58d263 --- /dev/null +++ b/pages/funkin/backend/utils/DiscordUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.DiscordUtil

      Static variables

      @:value(null)staticcurrentID:String = null

      @:value(null)staticdata:DiscordJson = null

      @:value(null)staticdiscordThread:Thread = null

      @:value(false)staticready:Bool = false

      Static methods

      staticchangeClientID(id:String):Void

      staticchangePresence(details:String, state:String, ?smallImageKey:String):Void

      staticchangePresenceAdvanced(data:DiscordPresenceOptions):Void

      staticchangeSongPresence(details:String, state:String, audio:FlxSound, ?smallImageKey:String):Void

      staticinit():Void

      staticreloadJsonData():Void

      staticshutdown():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/EngineUtil.html b/pages/funkin/backend/utils/EngineUtil.html new file mode 100644 index 00000000..53270ba6 --- /dev/null +++ b/pages/funkin/backend/utils/EngineUtil.html @@ -0,0 +1,11 @@ + + + +funkin.backend.utils.EngineUtil

      Static methods

      staticstartMultithreadedScript(path:String):MultiThreadedScript

      Starts a new multithreaded script. +This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict.

      Parameters:

      null

      path

      \ No newline at end of file diff --git a/pages/funkin/utils/FlxInterpolateColor.html b/pages/funkin/backend/utils/FlxInterpolateColor.html similarity index 61% rename from pages/funkin/utils/FlxInterpolateColor.html rename to pages/funkin/backend/utils/FlxInterpolateColor.html index 99feb6c1..82a8f70e 100644 --- a/pages/funkin/utils/FlxInterpolateColor.html +++ b/pages/funkin/backend/utils/FlxInterpolateColor.html @@ -1,12 +1,12 @@ -funkin.utils.FlxInterpolateColorfunkin.backend.utils.FlxInterpolateColor

      Additional class for FlxColor lerping. -Gets rid of precision issues with FlxColor.interpolate

      Constructor

      new(color:FlxColor)

      Variables

      @:value(0)alpha:Float = 0

      @:value(0)blue:Float = 0

      color:FlxColor

      @:value(0)green:Float = 0

      @:value(0)red:Float = 0

      Methods

      inlinefpsLerpTo(color:FlxColor, ratio:Float):Void

      lerpTo(color:FlxColor, ratio:Float):Void

      inlinetoString():String

      \ No newline at end of file +

      Additional class for FlxColor lerping. +Gets rid of precision issues with FlxColor.interpolate

      Constructor

      new(color:FlxColor)

      Variables

      @:value(0)alpha:Float = 0

      @:value(0)blue:Float = 0

      color:FlxColor

      @:value(0)green:Float = 0

      @:value(0)red:Float = 0

      Methods

      inlinefpsLerpTo(color:FlxColor, ratio:Float):Void

      lerpTo(color:FlxColor, ratio:Float):Void

      inlinetoString():String

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/FunkinParentDisabler.html b/pages/funkin/backend/utils/FunkinParentDisabler.html new file mode 100644 index 00000000..ddba71b0 --- /dev/null +++ b/pages/funkin/backend/utils/FunkinParentDisabler.html @@ -0,0 +1,19 @@ + + + +funkin.backend.utils.FunkinParentDisabler

      FlxBasic allowing you to disable those elements from the parent state while this substate is opened +- Tweens +- Camera Movement +- Timers +- Sounds

      +

      To use, add add(new FunkinParentDisabler()); after super.create(); in your create function.

      Constructor

      @:value({ replaceUponDestroy : false })new(replaceUponDestroy:Bool = false)

      Methods

      reset():Void

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/dialogue/index.html b/pages/funkin/backend/utils/IXMLEvents.html similarity index 51% rename from pages/funkin/cutscenes/dialogue/index.html rename to pages/funkin/backend/utils/IXMLEvents.html index 2f84e6c5..de17254c 100644 --- a/pages/funkin/cutscenes/dialogue/index.html +++ b/pages/funkin/backend/utils/IXMLEvents.html @@ -1,10 +1,10 @@ -funkin.cutscenes.dialogue
      \ No newline at end of file +

      Methods

      onPropertySet(property:String, value:Dynamic):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/IniUtil.html b/pages/funkin/backend/utils/IniUtil.html new file mode 100644 index 00000000..d8b2a1ec --- /dev/null +++ b/pages/funkin/backend/utils/IniUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.IniUtil

      DOESNT SUPPORT CATEGORIES YET!!

      Static methods

      staticinlineparseAsset(assetPath:String, ?defaultVariables:Map<String, String>):Map<String, String>

      staticparseString(data:String, ?defaultVariables:Map<String, String>):Map<String, String>

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/MarkdownUtil.html b/pages/funkin/backend/utils/MarkdownUtil.html new file mode 100644 index 00000000..f3018fef --- /dev/null +++ b/pages/funkin/backend/utils/MarkdownUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.MarkdownUtil

      Static methods

      staticapplyMarkdownText(text:FlxText, str:String):Void

      @:value({ underline : false, italic : false, bold : false })staticcreateAdvancedMarkerPair(marker:String, color:FlxColor, size:Null<Float>, bold:Bool = false, italic:Bool = false, underline:Bool = false, ?blockIndent:Int, ?bullet:Bool):FlxTextFormatMarkerPair

      @:value({ emoteEnd : "\n" })staticparseEmote(text:String, emote:String, beginning:String, end:String, emoteEnd:String = "\n"):String

      staticparseWarnings(text:String):String

      staticprepareMarkdown(text:String):String

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/MemoryUtil.html b/pages/funkin/backend/utils/MemoryUtil.html new file mode 100644 index 00000000..61cb51c5 --- /dev/null +++ b/pages/funkin/backend/utils/MemoryUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.MemoryUtil

      Static variables

      @:value(0)staticdisableCount:Int = 0

      Static methods

      staticaskDisable():Void

      staticaskEnable():Void

      staticclearMajor():Void

      staticclearMinor():Void

      staticinlinecurrentMemUsage():Float

      staticdisable():Void

      staticenable():Void

      staticgetMemType():String

      staticgetTotalMem():Float

      staticinit():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/MessageBoxIcon.html b/pages/funkin/backend/utils/MessageBoxIcon.html new file mode 100644 index 00000000..a0a695ea --- /dev/null +++ b/pages/funkin/backend/utils/MessageBoxIcon.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.MessageBoxIcon

      Variables

      @:value(cast 0x00000010)@:impl@:enuminlineread onlyMSG_ERROR:MessageBoxIcon = 0x00000010

      @:value(cast 0x00000040)@:impl@:enuminlineread onlyMSG_INFORMATION:MessageBoxIcon = 0x00000040

      @:value(cast 0x00000020)@:impl@:enuminlineread onlyMSG_QUESTION:MessageBoxIcon = 0x00000020

      @:value(cast 0x00000030)@:impl@:enuminlineread onlyMSG_WARNING:MessageBoxIcon = 0x00000030

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/NativeAPI.html b/pages/funkin/backend/utils/NativeAPI.html new file mode 100644 index 00000000..6121cc43 --- /dev/null +++ b/pages/funkin/backend/utils/NativeAPI.html @@ -0,0 +1,12 @@ + + + +funkin.backend.utils.NativeAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. +Does not have any effect on other platforms.

      Static methods

      staticallocConsole():Void

      Allocates a new console. The console will automatically be opened

      @:value({ backgroundColor : BLACK, foregroundColor : LIGHTGRAY })staticsetConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, backgroundColor:ConsoleColor = BLACK):Void

      Sets the console colors

      staticsetDarkMode(title:String, enable:Bool):Void

      @:value({ icon : MSG_WARNING })staticshowMessageBox(caption:String, message:String, icon:MessageBoxIcon = MSG_WARNING):Void

      Shows a message box

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/ContextOption.html b/pages/funkin/backend/utils/ShaderResizeFix.html similarity index 57% rename from pages/funkin/desktop/windows/ContextOption.html rename to pages/funkin/backend/utils/ShaderResizeFix.html index b74dec04..85a6abb7 100644 --- a/pages/funkin/desktop/windows/ContextOption.html +++ b/pages/funkin/backend/utils/ShaderResizeFix.html @@ -1,10 +1,10 @@ -funkin.desktop.windows.ContextOption

      Fields

      name:String

      @:optionaloptionaliconPath:Null<String>

      @:optionaloptionaliconId:Null<Int>

      @:optionaloptionalcallback:Null<() ‑> Void>

      \ No newline at end of file +

      Static variables

      @:value(true)staticdoResizeFix:Bool = true

      Static methods

      staticinlinefixSpriteShaderSize(sprite:Sprite):Void

      staticinlinefixSpritesShadersSizes():Void

      staticinit():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/SortedArrayUtil.html b/pages/funkin/backend/utils/SortedArrayUtil.html new file mode 100644 index 00000000..0246f47e --- /dev/null +++ b/pages/funkin/backend/utils/SortedArrayUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.SortedArrayUtil

      All types of utils only usable in a sorted array.

      Static methods

      staticinlineaddSorted<T>(array:Array<T>, val:T, getVal:T ‑> Float):Void

      Adds to a sorted array, using binary search.

      Parameters:

      array

      Array to add to

      val

      Value to add

      getVal

      Function that returns the value that needs to be sorted

      staticinlinebinarySearch<T>(array:Array<T>, val:Float, getVal:T ‑> Float):Int

      Gets the index of a possible new element of an Array of T using an efficient algorithm.

      Parameters:

      array

      Array of T to check in

      getVal

      Function that returns the position value of T

      Returns:

      Index

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/WindowText.html b/pages/funkin/backend/utils/StrNameLabel.html similarity index 57% rename from pages/funkin/desktop/sprites/WindowText.html rename to pages/funkin/backend/utils/StrNameLabel.html index ee7e262a..ceed06ee 100644 --- a/pages/funkin/desktop/sprites/WindowText.html +++ b/pages/funkin/backend/utils/StrNameLabel.html @@ -1,10 +1,10 @@ -funkin.desktop.sprites.WindowText

      Constructor

      new(x:Float, y:Float, w:Float, t:String)

      Methods

      \ No newline at end of file +

      Constructor

      new(name:String, label:String)

      Variables

      label:String

      name:String

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/SysZip.html b/pages/funkin/backend/utils/SysZip.html new file mode 100644 index 00000000..ef26d276 --- /dev/null +++ b/pages/funkin/backend/utils/SysZip.html @@ -0,0 +1,13 @@ + + + +funkin.backend.utils.SysZip

      Class that extends Reader allowing you to load ZIP entries without blowing your RAM up!! +Half of the code is taken from haxe libraries btw

      Static methods

      staticopenFromFile(path:String):SysZip

      Opens a zip from a specified path.

      Parameters:

      path

      Path to the zip file.

      Constructor

      new(input:FileInput)

      Creates a new SysZip from a specified file input.

      Parameters:

      input

      File input.

      Variables

      Methods

      dispose():Void

      readEntryData(e:SysZipEntry):Bytes

      Reads all the data present in a specified entry. +NOTE: If the entry is compressed, the data won't be decompressed. For decompression, use unzipEntry.

      Parameters:

      e

      Entry

      unzipEntry(f:SysZipEntry):Bytes

      Unzips and returns all of the data present in an entry.

      Parameters:

      f

      Entry to read from.

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/SysZipEntry.html b/pages/funkin/backend/utils/SysZipEntry.html new file mode 100644 index 00000000..2b22665f --- /dev/null +++ b/pages/funkin/backend/utils/SysZipEntry.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.SysZipEntry

      Fields

      fileName:String

      @:optionaloptionalextraFields:Null<List<ExtraField>>

      data:Null<Bytes>

      crc32:Null<Int>

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/XMLUtil.html b/pages/funkin/backend/utils/XMLUtil.html new file mode 100644 index 00000000..a73759f5 --- /dev/null +++ b/pages/funkin/backend/utils/XMLUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.XMLUtil

      Class made to make XML parsing easier.

      Static methods

      staticaddAnimToSprite(sprite:FlxSprite, animData:AnimData):ErrorCode

      @:value({ loop : false })staticaddXMLAnimation(sprite:FlxSprite, anim:Access, loop:Bool = false):ErrorCode

      Adds an XML animation to sprite.

      Parameters:

      sprite

      Destination sprite

      anim

      Animation (Must be a anim XML node)

      staticapplyXMLProperty(object:Dynamic, property:Access):ErrorCode

      Applies a property XML node to an object.

      Parameters:

      object

      Object to which the xml property will be applied

      property

      property node.

      @:value({ defaultAnimType : BEAT, parentFolder : "" })staticcreateSpriteFromXML(node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT, ?cl:Class<FunkinSprite>):FunkinSprite

      Creates a new sprite based on a XML node.

      @:value({ loop : false, animType : NONE })staticextractAnimFromXML(anim:Access, animType:XMLAnimType = NONE, loop:Bool = false):AnimData

      staticinlinefixXMLText(text:String):String

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/ZipProgress.html b/pages/funkin/backend/utils/ZipProgress.html new file mode 100644 index 00000000..cb6d6624 --- /dev/null +++ b/pages/funkin/backend/utils/ZipProgress.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.ZipProgress

      Constructor

      new()

      Variables

      @:value(0)curFile:Int = 0

      @:value(false)done:Bool = false

      @:value(null)error:Exception = null

      @:value(0)fileCount:Int = 0

      read onlypercentage:Float

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/ZipReader.html b/pages/funkin/backend/utils/ZipReader.html new file mode 100644 index 00000000..5a55289b --- /dev/null +++ b/pages/funkin/backend/utils/ZipReader.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.ZipReader

      Constructor

      new(i:Input)

      Variables

      files:List<Entry>

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/ZipUtil.html b/pages/funkin/backend/utils/ZipUtil.html new file mode 100644 index 00000000..65ed2421 --- /dev/null +++ b/pages/funkin/backend/utils/ZipUtil.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.ZipUtil

      Static variables

      @:value([".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"])staticbannedNames:Array<String> = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"]

      Static methods

      staticarrayToList(array:Array<Entry>):List<Entry>

      [Description] Converts an Array<Entry> to a List<Entry>.

      Parameters:

      array

      Returns:

      List

      staticcreateZipFile(path:String):ZipWriter

      [Description] Creates a ZIP file at the specified location and returns the Writer.

      Parameters:

      path

      Returns:

      Writer

      staticopenZip(zipPath:String):Reader

      [Description] Returns a zip.Reader instance from path.

      Parameters:

      zipPath

      Returns:

      Reader

      staticuncompressZip(zip:Reader, destFolder:String, ?prefix:String, ?prog:ZipProgress):ZipProgress

      [Description] Uncompresses zip into the destFolder folder

      Parameters:

      zip
      null

      destFolder

      staticuncompressZipAsync(zip:Reader, destFolder:String, ?prog:ZipProgress, ?prefix:String):ZipProgress

      staticunzip(f:Entry):Null<Bytes>

      [Description] Copy of haxe's Zip unzip function cause lime replaced it.

      Parameters:

      f

      Zip entry

      staticwriteFolderToZip(zip:ZipWriter, path:String, ?prefix:String, ?prog:ZipProgress, ?whitelist:Array<String>):ZipProgress

      [Description] Writes the entirety of a folder to a zip file.

      Parameters:

      zip

      ZIP file to write to

      path

      Folder path

      prefix

      (Additional) allows you to set a prefix in the zip itself.

      staticwriteFolderToZipAsync(zip:ZipWriter, path:String, ?prefix:String):ZipProgress

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/ZipWriter.html b/pages/funkin/backend/utils/ZipWriter.html new file mode 100644 index 00000000..7a51db78 --- /dev/null +++ b/pages/funkin/backend/utils/ZipWriter.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.ZipWriter

      Constructor

      new(o:Output)

      Methods

      close():Void

      flush():Void

      writeFile(entry:Entry):Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/index.html b/pages/funkin/backend/utils/index.html new file mode 100644 index 00000000..74f45cb6 --- /dev/null +++ b/pages/funkin/backend/utils/index.html @@ -0,0 +1,17 @@ + + + +funkin.backend.utils

      funkin.backend.utils

      ..
      native
      AnimData

      BitmapUtil

      ConsoleColor

      CoolSfx

      SFXs to play using playMenuSFX.

      CoolUtil

      DiscordJson

      DiscordUtil

      EngineUtil

      FlxInterpolateColor

      Additional class for FlxColor lerping. +Gets rid of precision issues with FlxColor.interpolate

      FunkinParentDisabler

      FlxBasic allowing you to disable those elements from the parent state while this substate is opened +- Tweens +- Camera Movement +- Timers +- Sounds

      IXMLEvents

      IniUtil

      DOESNT SUPPORT CATEGORIES YET!!

      MarkdownUtil

      MemoryUtil

      MessageBoxIcon

      NativeAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. +Does not have any effect on other platforms.

      ShaderResizeFix

      SortedArrayUtil

      All types of utils only usable in a sorted array.

      StrNameLabel

      SysZip

      Class that extends Reader allowing you to load ZIP entries without blowing your RAM up!! +Half of the code is taken from haxe libraries btw

      SysZipEntry

      XMLUtil

      Class made to make XML parsing easier.

      ZipProgress

      ZipReader

      ZipUtil

      ZipWriter

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/native/HiddenProcess.html b/pages/funkin/backend/utils/native/HiddenProcess.html new file mode 100644 index 00000000..05e575e0 --- /dev/null +++ b/pages/funkin/backend/utils/native/HiddenProcess.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.native.HiddenProcess

      Constructor

      new(cmd:String, ?args:Array<String>, ?detached:Bool)

      Variables

      read onlystderr:Input

      read onlystdin:Output

      read onlystdout:Input

      Methods

      close():Void

      @:value({ block : true })exitCode(block:Bool = true):Null<Int>

      getPid():Int

      kill():Void

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/native/Stdin.html b/pages/funkin/backend/utils/native/Stdin.html new file mode 100644 index 00000000..8f51db34 --- /dev/null +++ b/pages/funkin/backend/utils/native/Stdin.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.native.Stdin

      Constructor

      new(p:Dynamic)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/native/Stdout.html b/pages/funkin/backend/utils/native/Stdout.html new file mode 100644 index 00000000..f2c439ea --- /dev/null +++ b/pages/funkin/backend/utils/native/Stdout.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.native.Stdout

      Constructor

      new(p:Dynamic, out:Bool)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/backend/utils/native/index.html b/pages/funkin/backend/utils/native/index.html new file mode 100644 index 00000000..a9eb42a9 --- /dev/null +++ b/pages/funkin/backend/utils/native/index.html @@ -0,0 +1,10 @@ + + + +funkin.backend.utils.native

      funkin.backend.utils.native

      ..
      HiddenProcess

      Stdin

      Stdout

      \ No newline at end of file diff --git a/pages/funkin/chart/BaseGameParser.html b/pages/funkin/chart/BaseGameParser.html deleted file mode 100644 index 06f97f81..00000000 --- a/pages/funkin/chart/BaseGameParser.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.BaseGameParser

      Static methods

      staticparse(data:Dynamic, result:ChartData):Void

      \ No newline at end of file diff --git a/pages/funkin/chart/Chart.html b/pages/funkin/chart/Chart.html deleted file mode 100644 index a5fab091..00000000 --- a/pages/funkin/chart/Chart.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.Chart

      Static variables

      @:value(0xFF9271FD)staticinlineread onlydefaultColor:FlxColor = 0xFF9271FD

      Default background colors for songs without bg color

      Static methods

      staticaddNoteType(chart:ChartData, noteTypeName:String):Int

      staticfilterChartForSaving(chart:ChartData, ?saveMetaInChart:Bool):ChartData

      @:value({ fromMods : true, difficulty : "normal" })staticloadChartMeta(songName:String, difficulty:String = "normal", fromMods:Bool = true):ChartMetaData

      @:value({ difficulty : "normal" })staticparse(songName:String, difficulty:String = "normal"):ChartData

      @:value({ difficulty : "normal" })staticsave(songFolderPath:String, chart:ChartData, difficulty:String = "normal", ?saveSettings:ChartSaveSettings):ChartData

      Saves the chart to the specific song folder path.

      Parameters:

      songFolderPath

      Path to the song folder (ex: mods/your mod/songs/song/)

      chart

      Chart to save

      difficulty

      Name of the difficulty

      saveSettings

      Returns:

      Filtered chart used for saving.

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartData.html b/pages/funkin/chart/ChartData.html deleted file mode 100644 index 1ec13022..00000000 --- a/pages/funkin/chart/ChartData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartData

      Fields

      stage:String

      noteTypes:Array<String>

      @:optionaloptionalfromMods:Null<Bool>

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartEvent.html b/pages/funkin/chart/ChartEvent.html deleted file mode 100644 index 3cfa60ad..00000000 --- a/pages/funkin/chart/ChartEvent.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartEvent

      Fields

      time:Float

      params:Array<Dynamic>

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartEventType.html b/pages/funkin/chart/ChartEventType.html deleted file mode 100644 index 01743ab9..00000000 --- a/pages/funkin/chart/ChartEventType.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -funkin.chart.ChartEventType

      Variables

      @:value(cast 3)@:impl@:enuminlineread onlyALT_ANIM_TOGGLE:ChartEventType = 3

      ALT ANIM TOGGLE -Params: -- Strum Line which is going to be toggled (Int) -- Whenever its going to be toggled or not (Bool)

      @:value(cast 2)@:impl@:enuminlineread onlyBPM_CHANGE:ChartEventType = 2

      BPM CHANGE EVENT -Params: -- Target BPM (Float)

      @:value(cast 1)@:impl@:enuminlineread onlyCAM_MOVEMENT:ChartEventType = 1

      CAMERA MOVEMENT EVENT -Params: -- Target Strumline ID (Int)

      @:value(cast -1)@:impl@:enuminlineread onlyCUSTOM:ChartEventType = -1

      CUSTOM EVENT -Params: -- Function Name (String) -- Function Parameters...

      @:value(cast 0)@:impl@:enuminlineread onlyNONE:ChartEventType = 0

      NO EVENT, MADE FOR UNKNOWN EVENTS / EVENTS THAT CANNOT BE PARSED

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartMetaData.html b/pages/funkin/chart/ChartMetaData.html deleted file mode 100644 index e479e18b..00000000 --- a/pages/funkin/chart/ChartMetaData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartMetaData

      Fields

      @:optionaloptionalstepsPerBeat:Null<Float>

      @:optionaloptionalparsedColor:Null<FlxColor>

      @:optionaloptionalopponentModeAllowed:Null<Bool>

      @:optionaloptionalneedsVoices:Null<Bool>

      name:String

      @:optionaloptionalicon:Null<String>

      @:optionaloptionaldisplayName:Null<String>

      @:optionaloptionaldifficulties:Null<Array<String>>

      @:optionaloptionalcoopAllowed:Null<Bool>

      @:optionaloptionalcolor:Null<Dynamic>

      @:optionaloptionalbpm:Null<Float>

      @:optionaloptionalbeatsPerMesure:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartNote.html b/pages/funkin/chart/ChartNote.html deleted file mode 100644 index b4f731da..00000000 --- a/pages/funkin/chart/ChartNote.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartNote

      Fields

      type:Int

      time:Float

      sLen:Float

      id:Int

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartSaveSettings.html b/pages/funkin/chart/ChartSaveSettings.html deleted file mode 100644 index 4dfcc2cf..00000000 --- a/pages/funkin/chart/ChartSaveSettings.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartSaveSettings

      Fields

      @:optionaloptionalsaveMetaInChart:Null<Bool>

      @:optionaloptionalprettyPrint:Null<Bool>

      @:optionaloptionaloverrideExistingMeta:Null<Bool>

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartStrumLine.html b/pages/funkin/chart/ChartStrumLine.html deleted file mode 100644 index 84b269bf..00000000 --- a/pages/funkin/chart/ChartStrumLine.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartStrumLine

      Fields

      @:optionaloptionalvisible:Null<Bool>

      @:optionaloptionalstrumLinePos:Null<Float>

      position:String

      characters:Array<String>

      \ No newline at end of file diff --git a/pages/funkin/chart/ChartStrumLineType.html b/pages/funkin/chart/ChartStrumLineType.html deleted file mode 100644 index bf95bc13..00000000 --- a/pages/funkin/chart/ChartStrumLineType.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.ChartStrumLineType

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyADDITIONAL:ChartStrumLineType = 2

      STRUMLINE IS MARKED AS ADDITIONAL - WILL BE PLAYED AS CPU EVEN IF OPPONENT MODE IS ENABLED

      @:value(cast 0)@:impl@:enuminlineread onlyOPPONENT:ChartStrumLineType = 0

      STRUMLINE IS MARKED AS OPPONENT - WILL BE PLAYED BY CPU, OR PLAYED BY PLAYER IF OPPONENT MODE IS ON

      @:value(cast 1)@:impl@:enuminlineread onlyPLAYER:ChartStrumLineType = 1

      STRUMLINE IS MARKED AS PLAYER - WILL BE PLAYED AS PLAYER, OR PLAYED AS CPU IF OPPONENT MODE IS ON

      \ No newline at end of file diff --git a/pages/funkin/chart/SwagSection.html b/pages/funkin/chart/SwagSection.html deleted file mode 100644 index 75619220..00000000 --- a/pages/funkin/chart/SwagSection.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.SwagSection

      Fields

      sectionNotes:Array<Dynamic>

      @:optionaloptionalcamTarget:Null<Float>

      bpm:Float

      altAnim:Bool

      \ No newline at end of file diff --git a/pages/funkin/chart/SwagSong.html b/pages/funkin/chart/SwagSong.html deleted file mode 100644 index 7abbe3d6..00000000 --- a/pages/funkin/chart/SwagSong.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart.SwagSong

      Fields

      @:optionaloptionalstepsPerBeat:Null<Float>

      stage:String

      speed:Float

      song:String

      player2:String

      player1:String

      noteTypes:Array<String>

      @:optionaloptionalmaxHealth:Null<Float>

      gf:String

      bpm:Float

      @:optionaloptionalbeatsPerMesure:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/chart/index.html b/pages/funkin/chart/index.html deleted file mode 100644 index 393b48db..00000000 --- a/pages/funkin/chart/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.chart
      \ No newline at end of file diff --git a/pages/funkin/cutscenes/Cutscene.html b/pages/funkin/cutscenes/Cutscene.html deleted file mode 100644 index e4b2be40..00000000 --- a/pages/funkin/cutscenes/Cutscene.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.Cutscene

      Substate made for cutscenes.

      Constructor

      new(callback:() ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/DialogueCutscene.html b/pages/funkin/cutscenes/DialogueCutscene.html deleted file mode 100644 index 26f2a101..00000000 --- a/pages/funkin/cutscenes/DialogueCutscene.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.DialogueCutscene

      Substate made for dialogue cutscenes. To use it in a scripted cutscene, call startDialogue.

      Constructor

      new(dialoguePath:String, callback:() ‑> Void)

      Variables

      @:value([])charMap:Map<String, DialogueCharacter> = []

      @:value(null)curLine:DialogueLine = null

      dialogueCamera:FlxCamera

      @:value([])dialogueLines:Array<DialogueLine> = []

      nextSFX:FlxSound

      Methods

      next():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/DialogueLine.html b/pages/funkin/cutscenes/DialogueLine.html deleted file mode 100644 index a02f1398..00000000 --- a/pages/funkin/cutscenes/DialogueLine.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.DialogueLine

      Fields

      text:String

      speed:Float

      char:String

      callback:String

      bubble:String

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/MP4Handler.html b/pages/funkin/cutscenes/MP4Handler.html deleted file mode 100644 index 21e19578..00000000 --- a/pages/funkin/cutscenes/MP4Handler.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.MP4Handler

      Constructor

      new()

      Variables

      bitmap:VlcBitmap

      @:value(null)canvasHeight:Null<Int> = null

      @:value(null)canvasWidth:Null<Int> = null

      @:value(true)skippable:Bool = true

      sprite:FlxSprite

      stateCallback:FlxState

      finishCallback:() ‑> Void

      Methods

      kill():Void

      @:value({ midSong : false, isFullscreen : false, isWindow : false, outputTo : null, repeat : false })playMP4(path:String, repeat:Bool = false, ?outputTo:FlxSprite, isWindow:Bool = false, isFullscreen:Bool = false, midSong:Bool = false):Void

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/ScriptedCutscene.html b/pages/funkin/cutscenes/ScriptedCutscene.html deleted file mode 100644 index 4aef7ab3..00000000 --- a/pages/funkin/cutscenes/ScriptedCutscene.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.cutscenes.ScriptedCutscene

      Substate made for scripted cutscenes. -To add cutscenes to your songs, add a cutscene.hx file in your song's directory (ex: songs/song/cutscene.hx)

      Constructor

      new(scriptPath:String, callback:() ‑> Void)

      Variables

      read onlyisDialoguePlaying:Bool

      read onlyisVideoPlaying:Bool

      Methods

      startDialogue(path:String, ?callback:() ‑> Void):Void

      startVideo(path:String, ?callback:() ‑> Void):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/VideoCutscene.html b/pages/funkin/cutscenes/VideoCutscene.html deleted file mode 100644 index 1534a529..00000000 --- a/pages/funkin/cutscenes/VideoCutscene.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.VideoCutscene

      Substate made for video cutscenes. To use it in a scripted cutscene, call startVideo.

      Constructor

      new(path:String, callback:() ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/dialogue/DialogueBox.html b/pages/funkin/cutscenes/dialogue/DialogueBox.html deleted file mode 100644 index 44b0c44d..00000000 --- a/pages/funkin/cutscenes/dialogue/DialogueBox.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.dialogue.DialogueBox

      Constructor

      new(name:String)

      Variables

      @:value(Paths.sound("dialogue/next"))nextSFX:String = Paths.sound("dialogue/next")

      @:value([])positions:Map<String, CharPosDef> = []

      text:FlxTypeText

      @:value(Paths.sound("dialogue/text"))textTypeSFX:String = Paths.sound("dialogue/text")

      Methods

      @:value({ speed : 0.05 })playBubbleAnim(bubble:String, text:String, speed:Float = 0.05):Void

      @:value({ speed : 0.02 })setText(text:String, speed:Float = 0.02):Void

      Inherited Variables

      Defined by FunkinSprite

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      stepHit(curBeat:Int):Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/dialogue/DialogueCharTweenContext.html b/pages/funkin/cutscenes/dialogue/DialogueCharTweenContext.html deleted file mode 100644 index 286df250..00000000 --- a/pages/funkin/cutscenes/dialogue/DialogueCharTweenContext.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.dialogue.DialogueCharTweenContext

      Variables

      @:value(cast -1)@:impl@:enuminlineread onlyNONE:DialogueCharTweenContext = -1

      @:value(cast 0)@:impl@:enuminlineread onlyPOPIN:DialogueCharTweenContext = 0

      @:value(cast 1)@:impl@:enuminlineread onlyPOPOUT:DialogueCharTweenContext = 1

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/dialogue/DialogueCharacter.html b/pages/funkin/cutscenes/dialogue/DialogueCharacter.html deleted file mode 100644 index 0a30edca..00000000 --- a/pages/funkin/cutscenes/dialogue/DialogueCharacter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.cutscenes.dialogue.DialogueCharacter

      Constructor

      new(name:String, position:String)

      Variables

      Methods

      hide():Void

      show(x:Float, y:Float):Void

      Inherited Variables

      Defined by FunkinSprite

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      stepHit(curBeat:Int):Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/cutscenes/index.html b/pages/funkin/cutscenes/index.html deleted file mode 100644 index cf689143..00000000 --- a/pages/funkin/cutscenes/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.cutscenes

      funkin.cutscenes

      ..
      dialogue
      Cutscene

      Substate made for cutscenes.

      DialogueCutscene

      Substate made for dialogue cutscenes. To use it in a scripted cutscene, call startDialogue.

      DialogueLine

      MP4Handler

      ScriptedCutscene

      Substate made for scripted cutscenes. -To add cutscenes to your songs, add a cutscene.hx file in your song's directory (ex: songs/song/cutscene.hx)

      VideoCutscene

      Substate made for video cutscenes. To use it in a scripted cutscene, call startVideo.

      \ No newline at end of file diff --git a/pages/funkin/data/FreeplayJSON.html b/pages/funkin/data/FreeplayJSON.html deleted file mode 100644 index c0aedead..00000000 --- a/pages/funkin/data/FreeplayJSON.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.data.FreeplayJSON

      Fields

      addOGSongs:Null<Bool>

      \ No newline at end of file diff --git a/pages/funkin/data/FreeplaySong.html b/pages/funkin/data/FreeplaySong.html deleted file mode 100644 index 3915b4ce..00000000 --- a/pages/funkin/data/FreeplaySong.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.data.FreeplaySong

      Fields

      name:String

      icon:String

      color:Dynamic

      \ No newline at end of file diff --git a/pages/funkin/data/FreeplaySonglist.html b/pages/funkin/data/FreeplaySonglist.html deleted file mode 100644 index 5d800b13..00000000 --- a/pages/funkin/data/FreeplaySonglist.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.data.FreeplaySonglist

      Static methods

      Constructor

      new()

      Variables

      @:value(false)addOGSongs:Bool = false

      @:value([])songs:Array<SongMetadata> = []

      \ No newline at end of file diff --git a/pages/funkin/data/SongMetadata.html b/pages/funkin/data/SongMetadata.html deleted file mode 100644 index 0ad7f650..00000000 --- a/pages/funkin/data/SongMetadata.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.data.SongMetadata

      Constructor

      new(song:String, songCharacter:String, color:FlxColor)

      Variables

      @:value(FreeplayState.defaultColor)color:FlxColor = FreeplayState.defaultColor

      @:value("")songCharacter:String = ""

      @:value("")songName:String = ""

      \ No newline at end of file diff --git a/pages/funkin/data/index.html b/pages/funkin/data/index.html deleted file mode 100644 index f8c99aed..00000000 --- a/pages/funkin/data/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.data
      \ No newline at end of file diff --git a/pages/funkin/debug/AnimationDebug.html b/pages/funkin/debug/AnimationDebug.html deleted file mode 100644 index 59d8ecde..00000000 --- a/pages/funkin/debug/AnimationDebug.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.debug.AnimationDebug

      DEBUG MODE

      Constructor

      @:value({ daAnim : "spooky" })new(daAnim:String = "spooky")

      Methods

      \ No newline at end of file diff --git a/pages/funkin/desktop/DesktopMain.html b/pages/funkin/desktop/DesktopMain.html deleted file mode 100644 index 91f06fa3..00000000 --- a/pages/funkin/desktop/DesktopMain.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.DesktopMain

      Static variables

      @:value(null)staticcontextMenu:ContextMenu = null

      @:value(null)statictheme:Theme = null

      Static methods

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/desktop/DesktopScreen.html b/pages/funkin/desktop/DesktopScreen.html deleted file mode 100644 index 48250fb3..00000000 --- a/pages/funkin/desktop/DesktopScreen.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.DesktopScreen

      Constructor

      new()

      Variables

      @:value([])cameras:Array<FlxCamera> = []

      window:Window

      Methods

      addCamera(cam:FlxCamera):Void

      destroy():Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/DesktopUtils.html b/pages/funkin/desktop/DesktopUtils.html deleted file mode 100644 index 697e3b68..00000000 --- a/pages/funkin/desktop/DesktopUtils.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.DesktopUtils

      Static methods

      staticinlinecopyProperties(spr1:FlxObject, spr2:FlxObject):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/IDesktopFocusableObject.html b/pages/funkin/desktop/IDesktopFocusableObject.html deleted file mode 100644 index 2d287518..00000000 --- a/pages/funkin/desktop/IDesktopFocusableObject.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.IDesktopFocusableObject

      Methods

      onFocus():Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/IDesktopInputObject.html b/pages/funkin/desktop/IDesktopInputObject.html deleted file mode 100644 index 8eba1451..00000000 --- a/pages/funkin/desktop/IDesktopInputObject.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.IDesktopInputObject

      \ No newline at end of file diff --git a/pages/funkin/desktop/MouseInput.html b/pages/funkin/desktop/MouseInput.html deleted file mode 100644 index 597dd69a..00000000 --- a/pages/funkin/desktop/MouseInput.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.MouseInput

      Constructor

      new()

      Variables

      @:value(false)justPressed:Bool = false

      @:value(false)justPressedRight:Bool = false

      @:value(false)justReleased:Bool = false

      @:value(false)justReleasedRight:Bool = false

      @:value(false)pressed:Bool = false

      @:value(false)pressedRight:Bool = false

      @:value(null)screenPos:FlxPoint = null

      Methods

      cancel():Void

      overlaps(spr:FlxObject, ?camera:FlxCamera):Bool

      overlapsRect(spr:FlxBasic, rect:FlxRect, ?camera:FlxCamera):Bool

      set(pressed:Bool, justPressed:Bool, justReleased:Bool, pressedRight:Bool, justPressedRight:Bool, justReleasedRight:Bool):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/CharacterEditor.html b/pages/funkin/desktop/editors/CharacterEditor.html deleted file mode 100644 index 52e7a87c..00000000 --- a/pages/funkin/desktop/editors/CharacterEditor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.editors.CharacterEditor

      Constructor

      new(curCharacter:String)

      Variables

      Methods

      addAnimTab():Void

      addCharTab():Void

      changeAnim(id:Int):Void

      resetCamPos():Void

      =========== CONTEXT MENU OPTIONS ===========

      toggleSilBF():Void

      Silhouettes

      @:value({ updateListAsWell : false })updateCurAnim(?oldName:String, updateListAsWell:Bool = false):Void

      Inherited Variables

      Defined by WindowContent

      @:value(0)height:Int = 0

      @:value("flixel/images/logo/default.png")icon:String = "flixel/images/logo/default.png"

      @:value(null)parent:Window = null

      @:value("Window")title:String = "Window"

      @:value(0)width:Int = 0

      @:value(0)winX:Float = 0

      @:value(0)winY:Float = 0

      @:value(null)windowCamera:FlxCamera = null

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowContent

      onDesktopSizeChange(width:Int, height:Int):Void

      setSize(width:Int, height:Int):Void

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/EditorPlayState.html b/pages/funkin/desktop/editors/EditorPlayState.html deleted file mode 100644 index 84302e9d..00000000 --- a/pages/funkin/desktop/editors/EditorPlayState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.editors.EditorPlayState

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by WindowContent

      @:value(0)height:Int = 0

      @:value("flixel/images/logo/default.png")icon:String = "flixel/images/logo/default.png"

      @:value(null)parent:Window = null

      @:value("Window")title:String = "Window"

      @:value(0)width:Int = 0

      @:value(0)winX:Float = 0

      @:value(0)winY:Float = 0

      @:value(null)windowCamera:FlxCamera = null

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowContent

      onDesktopSizeChange(width:Int, height:Int):Void

      onWindowResize(width:Int, height:Int):Void

      setSize(width:Int, height:Int):Void

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/HelloWorld.html b/pages/funkin/desktop/editors/HelloWorld.html deleted file mode 100644 index 03491aed..00000000 --- a/pages/funkin/desktop/editors/HelloWorld.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.editors.HelloWorld

      Constructor

      new()

      Variables

      @:value(false)coolAssMode:Bool = false

      @:value(0)time:Float = 0

      Methods

      Inherited Variables

      Defined by WindowContent

      @:value(0)height:Int = 0

      @:value("flixel/images/logo/default.png")icon:String = "flixel/images/logo/default.png"

      @:value(null)parent:Window = null

      @:value("Window")title:String = "Window"

      @:value(0)width:Int = 0

      @:value(0)winX:Float = 0

      @:value(0)winY:Float = 0

      @:value(null)windowCamera:FlxCamera = null

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowContent

      onDesktopSizeChange(width:Int, height:Int):Void

      onWindowResize(width:Int, height:Int):Void

      setSize(width:Int, height:Int):Void

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/MessageBox.html b/pages/funkin/desktop/editors/MessageBox.html deleted file mode 100644 index d73f4e45..00000000 --- a/pages/funkin/desktop/editors/MessageBox.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.editors.MessageBox

      Constructor

      new(caption:String, message:String, icon:MessageBoxIcon, ?buttons:Array<OneOfTwo<String, Butt>>, ?callback:Int ‑> Void)

      Variables

      caption:String

      message:String

      @:value(null)callback:Int ‑> Void = null

      Methods

      Inherited Variables

      Defined by WindowContent

      @:value(0)height:Int = 0

      @:value("flixel/images/logo/default.png")icon:String = "flixel/images/logo/default.png"

      @:value(null)parent:Window = null

      @:value("Window")title:String = "Window"

      @:value(0)width:Int = 0

      @:value(0)winX:Float = 0

      @:value(0)winY:Float = 0

      @:value(null)windowCamera:FlxCamera = null

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowContent

      onDesktopSizeChange(width:Int, height:Int):Void

      onWindowResize(width:Int, height:Int):Void

      setSize(width:Int, height:Int):Void

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/editors/MessageBoxIcon.html b/pages/funkin/desktop/editors/MessageBoxIcon.html deleted file mode 100644 index b3d4c6b8..00000000 --- a/pages/funkin/desktop/editors/MessageBoxIcon.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.editors.MessageBoxIcon

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyALERT:MessageBoxIcon = 1

      @:value(cast 0)@:impl@:enuminlineread onlyERROR:MessageBoxIcon = 0

      @:value(cast 2)@:impl@:enuminlineread onlyINFORMATION:MessageBoxIcon = 2

      @:value(cast 3)@:impl@:enuminlineread onlyQUESTION:MessageBoxIcon = 3

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/Button.html b/pages/funkin/desktop/sprites/Button.html deleted file mode 100644 index b3fd0dc2..00000000 --- a/pages/funkin/desktop/sprites/Button.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.Button

      Constructor

      @:value({ text : "" })new(x:Float, y:Float, text:String = "", callback:() ‑> Void, ?normalButton:ThemeData, ?hoverButton:ThemeData, ?pressedButton:ThemeData, ?disabledButton:ThemeData)

      Variables

      Methods

      onFocus():Void

      resize(width:Float, height:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/CheckState.html b/pages/funkin/desktop/sprites/CheckState.html deleted file mode 100644 index 90f469d5..00000000 --- a/pages/funkin/desktop/sprites/CheckState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.CheckState

      Variables

      @:value(cast null)@:impl@:enuminlineread onlyBOTH:CheckState = null

      @:value(cast true)@:impl@:enuminlineread onlyCHECKED:CheckState = true

      @:value(cast false)@:impl@:enuminlineread onlyUNCHECKED:CheckState = false

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/Checkbox.html b/pages/funkin/desktop/sprites/Checkbox.html deleted file mode 100644 index e4cbdbef..00000000 --- a/pages/funkin/desktop/sprites/Checkbox.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.Checkbox

      Constructor

      @:value({ checked : UNCHECKED })new(x:Float, y:Float, w:Float, t:String, checked:CheckState = UNCHECKED)

      Variables

      checkboxSprite:FlxSprite

      @:value(UNCHECKED)checked:CheckState = UNCHECKED

      @:value(false)disabled:Bool = false

      Methods

      setChecked(checked:Bool):Void

      Inherited Variables

      Inherited Methods

      Defined by WindowText

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/DropDown.html b/pages/funkin/desktop/sprites/DropDown.html deleted file mode 100644 index 7f8c723f..00000000 --- a/pages/funkin/desktop/sprites/DropDown.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.DropDown

      Constructor

      @:value({ curId : 0 })new(x:Float, y:Float, w:Float, options:Array<String>, onChange:Int ‑> Void, curId:Int = 0, ?normalButton:ThemeData, ?hoverButton:ThemeData, ?pressedButton:ThemeData, ?disabledButton:ThemeData)

      Variables

      options:Array<String>

      @:value(-1)selectedIndex:Int = -1

      onChange:Int ‑> Void

      Methods

      onClick():Void

      onSelectionChange(id:Int):Void

      Inherited Variables

      Inherited Methods

      Defined by Button

      onFocus():Void

      resize(width:Float, height:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/InputBox.html b/pages/funkin/desktop/sprites/InputBox.html deleted file mode 100644 index fdbe8600..00000000 --- a/pages/funkin/desktop/sprites/InputBox.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.InputBox

      Static variables

      @:value(false)staticinsertMode:Bool = false

      Constructor

      new(x:Float, y:Float, w:Float, t:String, ?onChange:() ‑> Void)

      Variables

      @:value(0)index:Int = 0

      text:String

      onChange:() ‑> Void

      onConfirm:() ‑> Void

      Methods

      inlinechangeIndex(change:Int):Void

      inlinesetIndex(index:Int):Void

      Inherited Variables

      Inherited Methods

      Defined by Button

      onFocus():Void

      resize(width:Float, height:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/MenuBar.html b/pages/funkin/desktop/sprites/MenuBar.html deleted file mode 100644 index 0c9cfa35..00000000 --- a/pages/funkin/desktop/sprites/MenuBar.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.MenuBar

      Constructor

      new(trees:Array<TopMenuTree>)

      Variables

      @:value([])buttons:Array<Button> = []

      spr:FlxSprite

      Methods

      Inherited Variables

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/NumericStepper.html b/pages/funkin/desktop/sprites/NumericStepper.html deleted file mode 100644 index 664e8767..00000000 --- a/pages/funkin/desktop/sprites/NumericStepper.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.NumericStepper

      Constructor

      new(x:Float, y:Float, w:Float, v:Float, ?onValueChange:() ‑> Void)

      Variables

      @:value(0)decimals:Int = 0

      @:value(1)increment:Float = 1

      @:value(0)@:isVarvalue:Float = 0

      onValueChange:() ‑> Void

      Methods

      Inherited Variables

      Defined by InputBox

      @:value(0)index:Int = 0

      onChange:() ‑> Void

      onConfirm:() ‑> Void

      text:String

      Defined by Button

      Inherited Methods

      Defined by InputBox

      inlinechangeIndex(change:Int):Void

      inlinesetIndex(index:Int):Void

      Defined by Button

      onFocus():Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/SpliceSprite.html b/pages/funkin/desktop/sprites/SpliceSprite.html deleted file mode 100644 index ff8abd01..00000000 --- a/pages/funkin/desktop/sprites/SpliceSprite.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.SpliceSprite

      Constructor

      @:value({ right : 5, bottom : 5, top : 5, left : 5 })new(spr:FlxGraphicAsset, x:Float, y:Float, width:Float, height:Float, left:Float = 5, top:Float = 5, bottom:Float = 5, right:Float = 5)

      Variables

      @:value(new FlxSprite())bottom:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())bottomLeft:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())bottomRight:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())left:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())middle:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())right:FlxSprite = new FlxSprite()

      @:value([0, 0, 0, 0])slice:Array<Int> = [0, 0, 0, 0]

      @:value(new FlxSprite())top:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())topLeft:FlxSprite = new FlxSprite()

      @:value(new FlxSprite())topRight:FlxSprite = new FlxSprite()

      Methods

      resize(width:Float, height:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/TabView.html b/pages/funkin/desktop/sprites/TabView.html deleted file mode 100644 index 56b0999f..00000000 --- a/pages/funkin/desktop/sprites/TabView.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites.TabView

      Constructor

      new(x:Float, y:Float, width:Float, height:Float, tabs:Array<String>)

      Variables

      height:Float

      @:value(0)selectedTab:Int = 0

      @:value([])tabButtons:Array<Button> = []

      @:value([])tabs:Array<WindowGroup<FlxBasic>> = []

      width:Float

      Methods

      resize(width:Float, height:Float):Void

      switchTab(id:Int):Void

      updateBG():Void

      Inherited Variables

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/index.html b/pages/funkin/desktop/sprites/index.html deleted file mode 100644 index 3f3e08d1..00000000 --- a/pages/funkin/desktop/sprites/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.sprites
      \ No newline at end of file diff --git a/pages/funkin/desktop/theme/Theme.html b/pages/funkin/desktop/theme/Theme.html deleted file mode 100644 index 2db7a0db..00000000 --- a/pages/funkin/desktop/theme/Theme.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.theme.Theme

      Static methods

      staticload(content:String):Theme

      staticloadFromAssets(path:String):Theme

      staticloadFromPath(path:String):Theme

      Constructor

      new(content:String)

      Variables

      @:value(new ThemeData())captionActive:ThemeData = new ThemeData()

      @:value(new ThemeData())captionButtons:ThemeData = new ThemeData()

      @:value(new ThemeData())captionInactive:ThemeData = new ThemeData()

      @:value(new ThemeData())checkbox:ThemeData = new ThemeData()

      CHECKBOX

      @:value(new ThemeData())contextBackground:ThemeData = new ThemeData()

      CONTEXT MENU

      @:value(new ThemeData())contextOption:ThemeData = new ThemeData()

      @:value(new ThemeData())disabledButton:ThemeData = new ThemeData()

      @:value(new ThemeData())hoverButton:ThemeData = new ThemeData()

      @:value(new ThemeData())menuBar:ThemeData = new ThemeData()

      MENU BAR

      @:value(new ThemeData())normalButton:ThemeData = new ThemeData()

      BUTTON

      @:value(new ThemeData())pressedButton:ThemeData = new ThemeData()

      @:value(new ThemeData())tabBackground:ThemeData = new ThemeData()

      TABS

      @:value(new ThemeData())tabButtonHover:ThemeData = new ThemeData()

      @:value(new ThemeData())tabButtonPressed:ThemeData = new ThemeData()

      @:value(new ThemeData())tabButtonSelected:ThemeData = new ThemeData()

      @:value(new ThemeData())tabButtonUnselected:ThemeData = new ThemeData()

      @:value(new ThemeData())textbox:ThemeData = new ThemeData()

      THEME

      @:value(new ThemeData())textboxFocused:ThemeData = new ThemeData()

      @:value(new ThemeData())textboxHover:ThemeData = new ThemeData()

      @:value(new ThemeData())textboxPressed:ThemeData = new ThemeData()

      @:value(new ThemeData())window:ThemeData = new ThemeData()

      CAPTION & WINDOW

      \ No newline at end of file diff --git a/pages/funkin/desktop/theme/ThemeData.html b/pages/funkin/desktop/theme/ThemeData.html deleted file mode 100644 index 060fa07d..00000000 --- a/pages/funkin/desktop/theme/ThemeData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.theme.ThemeData

      Constructor

      new()

      Variables

      @:value(4)bottom:Float = 4

      @:value(FlxColor.WHITE)color:FlxColor = FlxColor.WHITE

      @:value(null)font:String = null

      @:value(null)fontSize:Null<Float> = null

      @:value(4)height:Float = 4

      @:value(4)left:Float = 4

      @:value(FlxPoint.get(0, 0))margin:FlxPoint = FlxPoint.get(0, 0)

      @:value(FlxPoint.get(5, 5))offset:FlxPoint = FlxPoint.get(5, 5)

      @:value(4)right:Float = 4

      @:value(FlxPoint.get(20, 20))size:FlxPoint = FlxPoint.get(20, 20)

      @:value("")sprite:String = ""

      @:value(null)textColor:Null<FlxColor> = null

      @:value(4)top:Float = 4

      @:value(4)width:Float = 4

      Methods

      destroy():Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/ContextMenu.html b/pages/funkin/desktop/windows/ContextMenu.html deleted file mode 100644 index 74922f07..00000000 --- a/pages/funkin/desktop/windows/ContextMenu.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.windows.ContextMenu

      Static methods

      staticopen(x:Float, y:Float, options:Array<ContextOption>, callback:Int ‑> Void):Void

      Constructor

      new(x:Float, y:Float, options:Array<ContextOption>, callback:Int ‑> Void)

      Variables

      contextCamera:FlxCamera

      @:value([])contextOptions:Array<ContextOption> = []

      @:value([])selectionBGs:Array<FlxSprite> = []

      @:value([])texts:Array<WindowText> = []

      callback:Int ‑> Void

      Methods

      Inherited Variables

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/Window.html b/pages/funkin/desktop/windows/Window.html deleted file mode 100644 index d856d26b..00000000 --- a/pages/funkin/desktop/windows/Window.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.windows.Window

      Constructor

      Variables

      @:value(true)canClose:Bool = true

      @:value(false)canHelp:Bool = false

      @:value(true)canMinimize:Bool = true

      captionButtons:FlxTypedSpriteGroup<WindowCaptionButton>

      @:value(null)curDialog:Window = null

      read onlyfocused:Bool

      icon:FlxSprite

      @:value(false)maximized:Bool = false

      @:value(true)moveable:Bool = true

      @:value(true)resizeable:Bool = true

      @:value([])windowCameras:Array<WindowCam> = []

      @:value(0)windowHeight:Int = 0

      @:value(0)windowWidth:Int = 0

      Methods

      @:value({ useResizeTechnique : true })addCamera(camera:FlxCamera, useResizeTechnique:Bool = true):Void

      changeCaption(text:String):Void

      close():Void

      loadIcon(path:String):Void

      maximize():Void

      minimize():Void

      move(x:Float, y:Float):Void

      onDesktopSizeChange(width:Int, height:Int):Void

      openDialog(window:Window):Void

      @:value({ popout : false })popupCamera(cam:FlxCamera, popout:Bool = false, ?onFinish:FlxTween ‑> Void):Void

      resize(width:Int, height:Int):Void

      restore():Void

      showMessage(caption:String, message:String, icon:MessageBoxIcon):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/WindowContent.html b/pages/funkin/desktop/windows/WindowContent.html deleted file mode 100644 index ec54f335..00000000 --- a/pages/funkin/desktop/windows/WindowContent.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.windows.WindowContent

      Constructor

      new(caption:String, x:Float, y:Float, width:Int, height:Int)

      Variables

      @:value(0)height:Int = 0

      @:value("flixel/images/logo/default.png")icon:String = "flixel/images/logo/default.png"

      @:value(null)parent:Window = null

      @:value("Window")title:String = "Window"

      @:value(0)width:Int = 0

      @:value(0)winX:Float = 0

      @:value(0)winY:Float = 0

      @:value(null)windowCamera:FlxCamera = null

      Methods

      create():Void

      onDesktopSizeChange(width:Int, height:Int):Void

      onWindowResize(width:Int, height:Int):Void

      setSize(width:Int, height:Int):Void

      Inherited Variables

      Defined by WindowGroup

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Inherited Methods

      Defined by WindowGroup

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/WindowDragHitbox.html b/pages/funkin/desktop/windows/WindowDragHitbox.html deleted file mode 100644 index a7d83285..00000000 --- a/pages/funkin/desktop/windows/WindowDragHitbox.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.windows.WindowDragHitbox

      Constructor

      new(left:Float, top:Float, right:Float, height:Float)

      Variables

      @:value(false)dragging:Bool = false

      left:Float

      offset:FlxPoint

      right:Float

      top:Float

      Methods

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/WindowGroup.html b/pages/funkin/desktop/windows/WindowGroup.html deleted file mode 100644 index d61e1a6d..00000000 --- a/pages/funkin/desktop/windows/WindowGroup.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.desktop.windows.WindowGroup

      Constructor

      new(?MaxSize:Int)

      Variables

      @:value(FlxPoint.get(0, 0))scrollFactor:FlxPoint = FlxPoint.get(0, 0)

      @:value(true)updateScrolls:Bool = true

      @:value(0)x:Float = 0

      @:value(0)y:Float = 0

      Methods

      updateAnchor(x:Float, y:Float, ?cameras:Array<FlxCamera>):Void

      \ No newline at end of file diff --git a/pages/funkin/editors/CharacterEditor.html b/pages/funkin/editors/CharacterEditor.html deleted file mode 100644 index deb79f1b..00000000 --- a/pages/funkin/editors/CharacterEditor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.editors.CharacterEditor

      Constructor

      new(char:String)

      Variables

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/ChartingState.html b/pages/funkin/editors/ChartingState.html deleted file mode 100644 index 625e7b1d..00000000 --- a/pages/funkin/editors/ChartingState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.editors.ChartingState

      Static variables

      @:value(0)staticlastSection:Int = 0

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/DebugOptions.html b/pages/funkin/editors/DebugOptions.html index bc958653..976f89e7 100644 --- a/pages/funkin/editors/DebugOptions.html +++ b/pages/funkin/editors/DebugOptions.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      exit():Void

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/DebugOptionsScreen.html b/pages/funkin/editors/DebugOptionsScreen.html index b8eb5997..789d67d9 100644 --- a/pages/funkin/editors/DebugOptionsScreen.html +++ b/pages/funkin/editors/DebugOptionsScreen.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(sel:Int):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      \ No newline at end of file +

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/editors/Editor.html b/pages/funkin/editors/Editor.html index f886a050..17148057 100644 --- a/pages/funkin/editors/Editor.html +++ b/pages/funkin/editors/Editor.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Fields

      \ No newline at end of file +

      Fields

      \ No newline at end of file diff --git a/pages/funkin/editors/EditorPicker.html b/pages/funkin/editors/EditorPicker.html index ddc734bc..39f6a186 100644 --- a/pages/funkin/editors/EditorPicker.html +++ b/pages/funkin/editors/EditorPicker.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      bg:FlxSprite

      @:value(0)camVelocity:Float = 0

      @:value(FlxPoint.get())curMousePos:FlxPoint = FlxPoint.get()

      @:value(0)curSelected:Int = 0

      @:value(FlxPoint.get())oldMousePos:FlxPoint = FlxPoint.get()

      @:value(0)optionHeight:Float = 0

      @:value([{ name : "Chart Editor", iconID : 0, state : funkin.editors.charter.CharterSelection }, { name : "Character Editor", iconID : 1, state : null }, { name : "Stage Editor", iconID : 2, state : null }, { name : "UI Debug State", iconID : 3, state : UIDebugState }, { name : "Debug Options", iconID : 4, state : DebugOptions }])options:Array<Editor> = [{ name : "Chart Editor", iconID : 0, state : funkin.editors.charter.CharterSelection }, { name : "Character Editor", iconID : 1, state : null }, { name : "Stage Editor", iconID : 2, state : null }, { name : "UI Debug State", iconID : 3, state : UIDebugState }, { name : "Debug Options", iconID : 4, state : DebugOptions }]

      @:value(false)selected:Bool = false

      @:value([])sprites:Array<EditorPickerOption> = []

      Methods

      changeSelection(change:Int):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      bg:FlxSprite

      @:value(0)camVelocity:Float = 0

      @:value(FlxPoint.get())curMousePos:FlxPoint = FlxPoint.get()

      @:value(0)curSelected:Int = 0

      @:value(FlxPoint.get())oldMousePos:FlxPoint = FlxPoint.get()

      @:value(0)optionHeight:Float = 0

      @:value([{ name : "Chart Editor", iconID : 0, state : funkin.editors.charter.CharterSelection }, { name : "Character Editor", iconID : 1, state : funkin.editors.character.CharacterSelection }, { name : "Stage Editor", iconID : 2, state : null }, { name : "UI Debug State", iconID : 3, state : UIDebugState }, { name : "Debug Options", iconID : 4, state : DebugOptions }])options:Array<Editor> = [{ name : "Chart Editor", iconID : 0, state : funkin.editors.charter.CharterSelection }, { name : "Character Editor", iconID : 1, state : funkin.editors.character.CharacterSelection }, { name : "Stage Editor", iconID : 2, state : null }, { name : "UI Debug State", iconID : 3, state : UIDebugState }, { name : "Debug Options", iconID : 4, state : DebugOptions }]

      @:value(false)selected:Bool = false

      @:value([])sprites:Array<EditorPickerOption> = []

      Methods

      changeSelection(change:Int):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/EditorPickerOption.html b/pages/funkin/editors/EditorPickerOption.html index 42ebd54d..f8751d1d 100644 --- a/pages/funkin/editors/EditorPickerOption.html +++ b/pages/funkin/editors/EditorPickerOption.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(name:String, iconID:Int, height:Float)

      Variables

      @:value(0)iconRotationCycle:Float = 0

      iconSpr:FlxSprite

      @:value(false)selected:Bool = false

      selectionBG:FlxSprite

      @:value(0)selectionLerp:Float = 0

      Methods

      flicker(callback:() ‑> Void):Void

      \ No newline at end of file +

      Constructor

      new(name:String, iconID:Int, height:Float)

      Variables

      @:value(0)iconRotationCycle:Float = 0

      iconSpr:FlxSprite

      @:value(false)selected:Bool = false

      selectionBG:FlxSprite

      @:value(0)selectionLerp:Float = 0

      Methods

      flicker(callback:() ‑> Void):Void

      \ No newline at end of file diff --git a/pages/funkin/editors/EditorTreeMenu.html b/pages/funkin/editors/EditorTreeMenu.html index 4f48d80d..580a2bf3 100644 --- a/pages/funkin/editors/EditorTreeMenu.html +++ b/pages/funkin/editors/EditorTreeMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Variables

      bg:FlxBackdrop

      @:value("default")bgType:String = "default"

      Methods

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Variables

      bg:FlxBackdrop

      @:value("default")bgType:String = "default"

      Methods

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/SaveSubstate.html b/pages/funkin/editors/SaveSubstate.html new file mode 100644 index 00000000..dffb9a78 --- /dev/null +++ b/pages/funkin/editors/SaveSubstate.html @@ -0,0 +1,10 @@ + + + +funkin.editors.SaveSubstate

      Constructor

      new(data:String, ?options:SaveSubstateData, ?saveOptions:Map<String, Bool>)

      Variables

      cam:FlxCamera

      data:String

      saveOptions:Map<String, Bool>

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/shaders/WiggleEffectType.html b/pages/funkin/editors/SaveSubstateData.html similarity index 59% rename from pages/funkin/shaders/WiggleEffectType.html rename to pages/funkin/editors/SaveSubstateData.html index 77ce7840..6e86529c 100644 --- a/pages/funkin/shaders/WiggleEffectType.html +++ b/pages/funkin/editors/SaveSubstateData.html @@ -1,10 +1,10 @@ -funkin.shaders.WiggleEffectType
      \ No newline at end of file +

      Fields

      @:optionaloptionalsaveExt:Null<String>

      @:optionaloptionaldefaultSaveFile:Null<String>

      \ No newline at end of file diff --git a/pages/funkin/editors/UIDebugState.html b/pages/funkin/editors/UIDebugState.html index cd803f06..404193ff 100644 --- a/pages/funkin/editors/UIDebugState.html +++ b/pages/funkin/editors/UIDebugState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by UIState

      @:value(null)buttonHandler:() ‑> Void = null

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(null)hoveredSprite:UISprite = null

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by UIState

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:UIContextMenuCallback, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by UIState

      @:value(null)buttonHandler:() ‑> Void = null

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(ARROW)currentCursor:MouseCursor = ARROW

      @:value(null)currentFocus:IUIFocusable = null

      @:value(null)hoveredSprite:UISprite = null

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by UIState

      isOverlapping(spr:UISprite, rect:FlxRect):Bool

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:Null<UIContextMenuCallback>, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterAnimButtons.html b/pages/funkin/editors/character/CharacterAnimButtons.html new file mode 100644 index 00000000..71564001 --- /dev/null +++ b/pages/funkin/editors/character/CharacterAnimButtons.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterAnimButtons

      Constructor

      new(x:Float, y:Float, anim:String, offset:FlxPoint)

      Variables

      Methods

      updateInfo(anim:String, offset:FlxPoint, ghost:Bool):Void

      inlineupdatePos(x:Float, y:Float):Void

      Inherited Variables

      Defined by UIButton

      @:value(null)callback:() ‑> Void = null

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UIButton

      Defined by UISliceSprite

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterAnimScreen.html b/pages/funkin/editors/character/CharacterAnimScreen.html new file mode 100644 index 00000000..f25801c4 --- /dev/null +++ b/pages/funkin/editors/character/CharacterAnimScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterAnimScreen

      Constructor

      new(animData:AnimData, ?onSave:(animData:AnimData) ‑> Void)

      Variables

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterAnimsWindow.html b/pages/funkin/editors/character/CharacterAnimsWindow.html new file mode 100644 index 00000000..8c54e34a --- /dev/null +++ b/pages/funkin/editors/character/CharacterAnimsWindow.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterAnimsWindow

      Constructor

      new(character:Character)

      Variables

      addIcon:FlxSprite

      @:value([])animButtons:Map<String, CharacterAnimButtons> = []

      @:value(new FlxGroup())buttons:FlxGroup = new FlxGroup()

      Methods

      inlinechangeCurAnim(anim:String):Void

      @:value({ updatePos : true, id : -1, ghost : false })createNewButton(anim:String, offset:FlxPoint, ghost:Bool = false, id:Int = -1, updatePos:Bool = true):Void

      removeButton(anim:String):Void

      Inherited Variables

      Defined by UIWindow

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterChange.html b/pages/funkin/editors/character/CharacterChange.html new file mode 100644 index 00000000..bff54800 --- /dev/null +++ b/pages/funkin/editors/character/CharacterChange.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterChange

      Values

      CEditInfo(oldInfo:Xml, newInfo:Xml)

      CCreateAnim(animID:Int, animData:AnimData)

      CEditAnim(name:String, oldData:AnimData, animData:AnimData)

      CDeleteAnim(animID:Int, animData:AnimData)

      CChangeOffset(name:String, change:FlxPoint)

      CResetOffsets(oldOffsets:Map<String, FlxPoint>)

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterEditor.html b/pages/funkin/editors/character/CharacterEditor.html new file mode 100644 index 00000000..b3bab5db --- /dev/null +++ b/pages/funkin/editors/character/CharacterEditor.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterEditor

      Static variables

      staticread onlyinstance:CharacterEditor

      Constructor

      new(character:String)

      Variables

      animsCamera:FlxCamera

      charCamera:FlxCamera

      characterBG:FunkinSprite

      CHARACTER UI STUFF

      @:value([])redoList:Array<CharacterChange> = []

      uiCamera:FlxCamera

      @:value(new FlxTypedGroup<FlxSprite>())uiGroup:FlxTypedGroup<FlxSprite> = new FlxTypedGroup<FlxSprite>()

      @:value([])undoList:Array<CharacterChange> = []

      Methods

      @:value({ addtoUndo : true, animID : -1 })createAnim(animData:AnimData, animID:Int = -1, addtoUndo:Bool = true):Void

      @:value({ addtoUndo : true })deleteAnim(name:String, addtoUndo:Bool = true):Void

      @:value({ addtoUndo : true })editAnim(name:String, animData:AnimData, addtoUndo:Bool = true):Void

      editAnimWithUI(name:String):Void

      @:value({ addtoUndo : true })editInfo(newInfo:Xml, addtoUndo:Bool = true):Void

      ghostAnim(anim:String):Void

      playAnimation(anim:String):Void

      Inherited Variables

      Defined by UIState

      @:value(null)buttonHandler:() ‑> Void = null

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(ARROW)currentCursor:MouseCursor = ARROW

      @:value(null)currentFocus:IUIFocusable = null

      @:value(null)hoveredSprite:UISprite = null

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by UIState

      isOverlapping(spr:UISprite, rect:FlxRect):Bool

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:Null<UIContextMenuCallback>, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterGhostsHandler.html b/pages/funkin/editors/character/CharacterGhostsHandler.html new file mode 100644 index 00000000..e96824f3 --- /dev/null +++ b/pages/funkin/editors/character/CharacterGhostsHandler.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterGhostsHandler

      Constructor

      new(character:Character)

      Variables

      @:value([])animGhosts:Map<String, Character> = []

      Methods

      createGhost(anim:String):Void

      removeGhost(anim:String):Void

      setOffsets(anim:String, offset:FlxPoint):Void

      updateInfos(xml:Xml):Void

      updateOffsets(anim:String, change:FlxPoint):Void

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterInfoScreen.html b/pages/funkin/editors/character/CharacterInfoScreen.html new file mode 100644 index 00000000..26af60f8 --- /dev/null +++ b/pages/funkin/editors/character/CharacterInfoScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterInfoScreen

      Constructor

      new(character:Character, ?onSave:(xml:Xml) ‑> Void)

      Variables

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterPropertiesWindow.html b/pages/funkin/editors/character/CharacterPropertiesWindow.html new file mode 100644 index 00000000..803512de --- /dev/null +++ b/pages/funkin/editors/character/CharacterPropertiesWindow.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterPropertiesWindow

      Constructor

      new()

      Variables

      Methods

      Inherited Variables

      Defined by UIWindow

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/character/CharacterSelection.html b/pages/funkin/editors/character/CharacterSelection.html new file mode 100644 index 00000000..a7c227a1 --- /dev/null +++ b/pages/funkin/editors/character/CharacterSelection.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character.CharacterSelection

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by EditorTreeMenu

      bg:FlxBackdrop

      @:value("default")bgType:String = "default"

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by EditorTreeMenu

      Defined by TreeMenu

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/character/index.html b/pages/funkin/editors/character/index.html new file mode 100644 index 00000000..8713b593 --- /dev/null +++ b/pages/funkin/editors/character/index.html @@ -0,0 +1,10 @@ + + + +funkin.editors.character
      \ No newline at end of file diff --git a/pages/funkin/editors/charter/ChartDataScreen.html b/pages/funkin/editors/charter/ChartDataScreen.html new file mode 100644 index 00000000..7321e9fc --- /dev/null +++ b/pages/funkin/editors/charter/ChartDataScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.ChartDataScreen

      Constructor

      Variables

      Methods

      onSave():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/Charter.html b/pages/funkin/editors/charter/Charter.html index d60540ce..940d2cea 100644 --- a/pages/funkin/editors/charter/Charter.html +++ b/pages/funkin/editors/charter/Charter.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      staticread onlyinstance:Charter

      Constructor

      new(song:String, diff:String)

      Variables

      charterCamera:FlxCamera

      CAMERAS

      hitsound:FlxSound

      metronome:FlxSound

      @:value(new CharterNoteGroup())notesGroup:CharterNoteGroup = new CharterNoteGroup()

      @:value([])redoList:Array<CharterChange> = []

      @:value([])selection:Array<CharterNote> = []

      @:value([])strumLines:Array<CharterStrumline> = []

      ACTUAL CHART DATA

      uiCamera:FlxCamera

      @:value(new FlxTypedGroup<FlxSprite>())uiGroup:FlxTypedGroup<FlxSprite> = new FlxTypedGroup<FlxSprite>()

      CONFIG & UI (might make this customizable later)

      @:value([])undoList:Array<CharterChange> = []

      vocals:FlxSound

      Methods

      inlineaddToUndo(c:CharterChange):Void

      deleteNotes(notes:Array<CharterNote>):Array<CharterNote>

      inlinehitsoundsEnabled(id:Int):Bool

      loadSong():Void

      inlinesortNotes():Void

      updateNoteLogic(elapsed:Float):Void

      Inherited Variables

      Defined by UIState

      @:value(null)buttonHandler:() ‑> Void = null

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(null)hoveredSprite:UISprite = null

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by UIState

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:UIContextMenuCallback, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      staticread onlyinstance:Charter

      @:value(false)staticstartHere:Bool = false

      @:value(0)staticstartTime:Float = 0

      Constructor

      @:value({ reload : true })new(song:String, diff:String, reload:Bool = true)

      Variables

      beatSeparator:FlxBackdrop

      charterBG:FunkinSprite

      CONFIG & UI (might make this customizable later)

      charterCamera:FlxCamera

      CAMERAS

      @:value([])clipboard:Array<CharterCopyboardObject> = []

      eventsBackdrop:FlxBackdrop

      @:value(new CharterEventGroup())eventsGroup:CharterEventGroup = new CharterEventGroup()

      hitsound:FlxSound

      metronome:FlxSound

      @:value(new CharterNoteGroup())notesGroup:CharterNoteGroup = new CharterNoteGroup()

      @:value([])redoList:Array<CharterChange> = []

      sectionSeparator:FlxBackdrop

      @:value([])selection:Array<CharterNote> = []

      @:value(new FlxTypedGroup<CharterStrumline>())strumLines:FlxTypedGroup<CharterStrumline> = new FlxTypedGroup<CharterStrumline>()

      ACTUAL CHART DATA

      strumlineInfoBG:FlxSprite

      topLimit:FlxSprite

      uiCamera:FlxCamera

      @:value(new FlxTypedGroup<FlxSprite>())uiGroup:FlxTypedGroup<FlxSprite> = new FlxTypedGroup<FlxSprite>()

      @:value([])undoList:Array<CharterChange> = []

      vocals:FlxSound

      Methods

      inlineaddToUndo(c:CharterChange):Void

      buildChart():Void

      @:value({ addToUndo : true })createStrumline(strumLineID:Int, strL:ChartStrumLine, addToUndo:Bool = true):Void

      @:value({ addToUndo : true })deleteNote(note:CharterNote, addToUndo:Bool = true):CharterNote

      @:value({ addToUndo : true })deleteNotes(notes:Array<CharterNote>, addToUndo:Bool = true):Array<CharterNote>

      @:value({ addToUndo : true })deleteStrumline(strumLineID:Int, addToUndo:Bool = true):Void

      inlineeditStrumline(strL:ChartStrumLine):Void

      inlinehitsoundsEnabled(id:Int):Bool

      loadSong():Void

      @:value({ here : false, opponentMode : false, time : 0 })playtestChart(time:Float = 0, opponentMode:Bool = false, here:Bool = false):Void

      inlineremoveStrumlineFromSelection(strumLineID:Int):Void

      inlinesortNotes():Void

      updateNoteLogic(elapsed:Float):Void

      Inherited Variables

      Defined by UIState

      @:value(null)buttonHandler:() ‑> Void = null

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(ARROW)currentCursor:MouseCursor = ARROW

      @:value(null)currentFocus:IUIFocusable = null

      @:value(null)hoveredSprite:UISprite = null

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by UIState

      isOverlapping(spr:UISprite, rect:FlxRect):Bool

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:Null<UIContextMenuCallback>, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterBackdropDummy.html b/pages/funkin/editors/charter/CharterBackdropDummy.html index 4763eae8..a7503243 100644 --- a/pages/funkin/editors/charter/CharterBackdropDummy.html +++ b/pages/funkin/editors/charter/CharterBackdropDummy.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      Methods

      Inherited Variables

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file +

      Constructor

      Methods

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterChange.html b/pages/funkin/editors/charter/CharterChange.html index 652da3e0..c87e742f 100644 --- a/pages/funkin/editors/charter/CharterChange.html +++ b/pages/funkin/editors/charter/CharterChange.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +

      Values

      CNoteDrag(notes:Array<NoteDragChange>, deletes:Array<CharterNote>)

      CCreateStrumLine(strumLineID:Int, strumLine:ChartStrumLine)

      CDeleteStrumLine(strumLineID:Int, strumLine:ChartStrumLine)

      \ No newline at end of file diff --git a/pages/funkin/system/modules/PlayingSound.html b/pages/funkin/editors/charter/CharterCopyboardObject.html similarity index 54% rename from pages/funkin/system/modules/PlayingSound.html rename to pages/funkin/editors/charter/CharterCopyboardObject.html index 223d1ad9..aba1fd76 100644 --- a/pages/funkin/system/modules/PlayingSound.html +++ b/pages/funkin/editors/charter/CharterCopyboardObject.html @@ -1,10 +1,10 @@ -funkin.system.modules.PlayingSound

      Fields

      time:Float

      sound:FlxSound

      \ No newline at end of file +

      Values

      CNote(step:Float, id:Int, susLength:Float, type:Int)

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterEvent.html b/pages/funkin/editors/charter/CharterEvent.html new file mode 100644 index 00000000..97fa2e0e --- /dev/null +++ b/pages/funkin/editors/charter/CharterEvent.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterEvent

      Static methods

      staticgenerateEventIcon(event:ChartEvent):FlxSprite

      Constructor

      new(step:Float, ?events:Array<ChartEvent>)

      Variables

      @:value([])icons:Array<FlxSprite> = []

      step:Float

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterEventAdd.html b/pages/funkin/editors/charter/CharterEventAdd.html new file mode 100644 index 00000000..6e4ed79c --- /dev/null +++ b/pages/funkin/editors/charter/CharterEventAdd.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterEventAdd

      Constructor

      new()

      Variables

      @:value(null)curCharterEvent:CharterEvent = null

      @:value(0)sprAlpha:Float = 0

      @:value(0)step:Float = 0

      Methods

      updatePos(y:Float):Void

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterEventGroup.html b/pages/funkin/editors/charter/CharterEventGroup.html new file mode 100644 index 00000000..6f30e6ab --- /dev/null +++ b/pages/funkin/editors/charter/CharterEventGroup.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterEventGroup

      Constructor

      new(?MaxSize:Int)

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterEventScreen.html b/pages/funkin/editors/charter/CharterEventScreen.html new file mode 100644 index 00000000..321a4d2d --- /dev/null +++ b/pages/funkin/editors/charter/CharterEventScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterEventScreen

      Constructor

      new(chartEvent:CharterEvent)

      Variables

      Methods

      @:value({ save : true })changeTab(id:Int, save:Bool = true):Void

      saveCurTab():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterEventTypeSelection.html b/pages/funkin/editors/charter/CharterEventTypeSelection.html new file mode 100644 index 00000000..2079b4b7 --- /dev/null +++ b/pages/funkin/editors/charter/CharterEventTypeSelection.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterEventTypeSelection

      Constructor

      new(callback:String ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterGridActionType.html b/pages/funkin/editors/charter/CharterGridActionType.html new file mode 100644 index 00000000..fc744b7b --- /dev/null +++ b/pages/funkin/editors/charter/CharterGridActionType.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterGridActionType

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyBOX:CharterGridActionType = 1

      @:value(cast 2)@:impl@:enuminlineread onlyDRAG:CharterGridActionType = 2

      @:value(cast 3)@:impl@:enuminlineread onlyINVALID_DRAG:CharterGridActionType = 3

      @:value(cast 0)@:impl@:enuminlineread onlyNONE:CharterGridActionType = 0

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterNote.html b/pages/funkin/editors/charter/CharterNote.html index dbdcbdd6..a4d630f4 100644 --- a/pages/funkin/editors/charter/CharterNote.html +++ b/pages/funkin/editors/charter/CharterNote.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Variables

      id:Int

      @:value(false)selected:Bool = false

      step:Float

      susLength:Float

      type:Int

      Methods

      @:value({ type : 0, susLength : 0 })updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0):Void

      Inherited Variables

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file +

      Constructor

      new()

      Variables

      id:Int

      @:value(false)selected:Bool = false

      step:Float

      susLength:Float

      sustainSpr:FlxSprite

      type:Int

      Methods

      @:value({ type : 0, susLength : 0 })updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0):Void

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterSelection.html b/pages/funkin/editors/charter/CharterSelection.html index 630a8d7a..c4ba4df8 100644 --- a/pages/funkin/editors/charter/CharterSelection.html +++ b/pages/funkin/editors/charter/CharterSelection.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Variables

      Methods

      Inherited Variables

      Defined by EditorTreeMenu

      bg:FlxBackdrop

      @:value("default")bgType:String = "default"

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by EditorTreeMenu

      Defined by TreeMenu

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Variables

      Methods

      Inherited Variables

      Defined by EditorTreeMenu

      bg:FlxBackdrop

      @:value("default")bgType:String = "default"

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by EditorTreeMenu

      Defined by TreeMenu

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterStrumline.html b/pages/funkin/editors/charter/CharterStrumline.html index a6c4d78b..eb6ee79e 100644 --- a/pages/funkin/editors/charter/CharterStrumline.html +++ b/pages/funkin/editors/charter/CharterStrumline.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +

      Constructor

      new(strumLine:ChartStrumLine)

      Variables

      Methods

      updateInfo():Void

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterStrumlineButton.html b/pages/funkin/editors/charter/CharterStrumlineButton.html new file mode 100644 index 00000000..f3b01329 --- /dev/null +++ b/pages/funkin/editors/charter/CharterStrumlineButton.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterStrumlineButton

      Constructor

      Methods

      Inherited Variables

      Defined by UITopMenuButton

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UITopMenuButton

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterStrumlineExtraButton.html b/pages/funkin/editors/charter/CharterStrumlineExtraButton.html new file mode 100644 index 00000000..40033c6d --- /dev/null +++ b/pages/funkin/editors/charter/CharterStrumlineExtraButton.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterStrumlineExtraButton

      Constructor

      new(imagePath:String, text:String)

      Variables

      Methods

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/CharterStrumlineScreen.html b/pages/funkin/editors/charter/CharterStrumlineScreen.html new file mode 100644 index 00000000..4067529d --- /dev/null +++ b/pages/funkin/editors/charter/CharterStrumlineScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.CharterStrumlineScreen

      Constructor

      new(strumLineID:Int, strumLine:ChartStrumLine, ?onSave:ChartStrumLine ‑> Void)

      Variables

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/desktop/windows/WindowCam.html b/pages/funkin/editors/charter/EventInfo.html similarity index 62% rename from pages/funkin/desktop/windows/WindowCam.html rename to pages/funkin/editors/charter/EventInfo.html index 7e40e4cb..9d649214 100644 --- a/pages/funkin/desktop/windows/WindowCam.html +++ b/pages/funkin/editors/charter/EventInfo.html @@ -1,10 +1,10 @@ -funkin.desktop.windows.WindowCam

      Fields

      width:Int

      height:Int

      camera:FlxCamera

      \ No newline at end of file +

      Fields

      paramValues:Array<Dynamic>

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/EventParamInfo.html b/pages/funkin/editors/charter/EventParamInfo.html new file mode 100644 index 00000000..f9268af4 --- /dev/null +++ b/pages/funkin/editors/charter/EventParamInfo.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.EventParamInfo

      Fields

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/EventParamType.html b/pages/funkin/editors/charter/EventParamType.html new file mode 100644 index 00000000..ec4c086e --- /dev/null +++ b/pages/funkin/editors/charter/EventParamType.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.EventParamType

      Values

      TInt(min:Int, max:Int, step:Float)

      TFloat(min:Int, max:Int, step:Float, precision:Int)

      TDropDown(options:Array<String>)

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/EventsData.html b/pages/funkin/editors/charter/EventsData.html new file mode 100644 index 00000000..c6b50834 --- /dev/null +++ b/pages/funkin/editors/charter/EventsData.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.EventsData

      Static variables

      @:value(["HScript Call", "Camera Movement", "BPM Change", "Alt Animation Toggle"])staticdefaultEventsList:Array<String> = ["HScript Call", "Camera Movement", "BPM Change", "Alt Animation Toggle"]

      @:value(["HScript Call" => [{ name : "Function Name", type : TString, defValue : "myFunc" }, { name : "Function Parameters (String split with commas)", type : TString, defValue : "" }], "Camera Movement" => [{ name : "Camera Target", type : TStrumLine, defValue : 0 }], "BPM Change" => [{ name : "Target BPM", type : TFloat(1), defValue : 100 }], "Alt Animation Toggle" => [{ name : "Strumline", type : TStrumLine, defValue : 0 }, { name : "Enable", type : TBool, defValue : true }]])staticdefaultEventsParams:Map<String, Array<EventParamInfo>> = ["HScript Call" => [{ name : "Function Name", type : TString, defValue : "myFunc" }, { name : "Function Parameters (String split with commas)", type : TString, defValue : "" }], "Camera Movement" => [{ name : "Camera Target", type : TStrumLine, defValue : 0 }], "BPM Change" => [{ name : "Target BPM", type : TFloat(1), defValue : 100 }], "Alt Animation Toggle" => [{ name : "Strumline", type : TStrumLine, defValue : 0 }, { name : "Enable", type : TBool, defValue : true }]]

      @:value(defaultEventsList.copy())staticeventsList:Array<String> = defaultEventsList.copy()

      @:value(defaultEventsParams.copy())staticeventsParams:Map<String, Array<EventParamInfo>> = defaultEventsParams.copy()

      Static methods

      staticgetEventParams(name:String):Array<EventParamInfo>

      staticreloadEvents():Void

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/MetaDataScreen.html b/pages/funkin/editors/charter/MetaDataScreen.html new file mode 100644 index 00000000..e205dd9e --- /dev/null +++ b/pages/funkin/editors/charter/MetaDataScreen.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.MetaDataScreen

      Constructor

      new(metadata:ChartMetaData)

      Variables

      Methods

      saveMeta():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by UISubstateWindow

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/NoteDragChange.html b/pages/funkin/editors/charter/NoteDragChange.html new file mode 100644 index 00000000..035fa70d --- /dev/null +++ b/pages/funkin/editors/charter/NoteDragChange.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.NoteDragChange

      Fields

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/NoteSustainChange.html b/pages/funkin/editors/charter/NoteSustainChange.html new file mode 100644 index 00000000..8ca73444 --- /dev/null +++ b/pages/funkin/editors/charter/NoteSustainChange.html @@ -0,0 +1,10 @@ + + + +funkin.editors.charter.NoteSustainChange

      Fields

      \ No newline at end of file diff --git a/pages/funkin/editors/charter/index.html b/pages/funkin/editors/charter/index.html index f72ae62a..6866ea12 100644 --- a/pages/funkin/editors/charter/index.html +++ b/pages/funkin/editors/charter/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/editors/index.html b/pages/funkin/editors/index.html index f43c5b03..61d75c3d 100644 --- a/pages/funkin/editors/index.html +++ b/pages/funkin/editors/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/editors/ui/IUIFocusable.html b/pages/funkin/editors/ui/IUIFocusable.html new file mode 100644 index 00000000..859f7392 --- /dev/null +++ b/pages/funkin/editors/ui/IUIFocusable.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.IUIFocusable

      Methods

      onKeyDown(e:KeyCode, modifier:KeyModifier):Void

      onKeyUp(e:KeyCode, modifier:KeyModifier):Void

      onTextInput(text:String):Void

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIButton.html b/pages/funkin/editors/ui/UIButton.html index 60687335..fbc4f1d8 100644 --- a/pages/funkin/editors/ui/UIButton.html +++ b/pages/funkin/editors/ui/UIButton.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ h : 32, w : 120 })new(x:Float, y:Float, text:String, callback:() ‑> Void, w:Int = 120, h:Int = 32)

      Variables

      @:value(null)callback:() ‑> Void = null

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISliceSprite

      Defined by UISprite

      drawSuper():Void

      \ No newline at end of file +

      Constructor

      @:value({ h : 32, w : 120 })new(x:Float, y:Float, text:String, callback:() ‑> Void, w:Int = 120, h:Int = 32)

      Variables

      @:value(null)callback:() ‑> Void = null

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UICheckbox.html b/pages/funkin/editors/ui/UICheckbox.html index 92f4d2d6..8a1f1ce1 100644 --- a/pages/funkin/editors/ui/UICheckbox.html +++ b/pages/funkin/editors/ui/UICheckbox.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ w : 0, checked : false })new(x:Float, y:Float, text:String, checked:Bool = false, w:Int = 0)

      Variables

      check:FlxSprite

      @:value(false)checked:Bool = false

      @:value(null)onChecked:Bool ‑> Void = null

      Methods

      inlineupdatePositions():Void

      Inherited Variables

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      \ No newline at end of file +

      Constructor

      @:value({ w : 0, checked : false })new(x:Float, y:Float, text:String, checked:Bool = false, w:Int = 0)

      Variables

      check:FlxSprite

      @:value(false)checked:Bool = false

      @:value(null)onChecked:Bool ‑> Void = null

      Methods

      inlineupdatePositions():Void

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIColorWheelSelector.html b/pages/funkin/editors/ui/UIColorWheelSelector.html new file mode 100644 index 00000000..585e90c5 --- /dev/null +++ b/pages/funkin/editors/ui/UIColorWheelSelector.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UIColorWheelSelector

      Constructor

      new(x:Float, y:Float, ?color:Int)

      Variables

      colorCircle:FlxSprite

      @:value(FlxColor.WHITE)curColor:FlxColor = FlxColor.WHITE

      selector:FlxSprite

      Methods

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIColorwheel.html b/pages/funkin/editors/ui/UIColorwheel.html new file mode 100644 index 00000000..6e22494e --- /dev/null +++ b/pages/funkin/editors/ui/UIColorwheel.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UIColorwheel

      Constructor

      new(x:Float, y:Float, ?color:Int)

      Variables

      @:value(FlxColor.WHITE)curColor:Null<FlxColor> = FlxColor.WHITE

      @:value("#FFFFFF")curColorString:String = "#FFFFFF"

      hue:Float

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIContextMenu.html b/pages/funkin/editors/ui/UIContextMenu.html index f0f63f76..a7fc86b5 100644 --- a/pages/funkin/editors/ui/UIContextMenu.html +++ b/pages/funkin/editors/ui/UIContextMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(options:Array<UIContextMenuOption>, callback:UIContextMenuCallback, x:Float, y:Float)

      Variables

      @:value([])separators:Array<FlxSprite> = []

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(options:Array<UIContextMenuOption>, callback:UIContextMenuCallback, x:Float, y:Float)

      Variables

      @:value([])separators:Array<FlxSprite> = []

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIContextMenuOptionSpr.html b/pages/funkin/editors/ui/UIContextMenuOptionSpr.html index 12f4fa85..dc816876 100644 --- a/pages/funkin/editors/ui/UIContextMenuOptionSpr.html +++ b/pages/funkin/editors/ui/UIContextMenuOptionSpr.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(x:Float, y:Float, option:UIContextMenuOption, parent:UIContextMenu)

      Variables

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      \ No newline at end of file +

      Constructor

      new(x:Float, y:Float, option:UIContextMenuOption, parent:UIContextMenu)

      Variables

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIDropDown.html b/pages/funkin/editors/ui/UIDropDown.html new file mode 100644 index 00000000..72ed5173 --- /dev/null +++ b/pages/funkin/editors/ui/UIDropDown.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UIDropDown

      Constructor

      @:value({ index : 0, height : 32, width : 320 })new(x:Float, y:Float, width:Int = 320, height:Int = 32, options:Array<String>, index:Int = 0)

      Variables

      @:value(0)index:Int = 0

      options:Array<String>

      onChange:Int ‑> Void

      Methods

      setOption(newIndex:Int):Void

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UINumericStepper.html b/pages/funkin/editors/ui/UINumericStepper.html new file mode 100644 index 00000000..93c1105c --- /dev/null +++ b/pages/funkin/editors/ui/UINumericStepper.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UINumericStepper

      Constructor

      @:value({ h : 32, w : 180, precision : 0, step : 1, value : 0 })new(x:Float, y:Float, value:Float = 0, step:Float = 1, precision:Int = 0, ?min:Float, ?max:Float, w:Int = 180, h:Int = 32)

      Variables

      @:value(null)max:Null<Float> = null

      @:value(null)min:Null<Float> = null

      @:value(0)precision:Int = 0

      @:value(1)step:Float = 1

      value:Float

      Inherited Variables

      Defined by UITextBox

      caretSpr:FlxSprite

      @:value(false)multiline:Bool = false

      onChange:String ‑> Void

      @:value(0)position:Int = 0

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UITextBox

      changeSelection(change:Int):Void

      onKeyDown(e:KeyCode, modifier:KeyModifier):Void

      onKeyUp(e:KeyCode, modifier:KeyModifier):Void

      onTextInput(text:String):Void

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIScrollBar.html b/pages/funkin/editors/ui/UIScrollBar.html new file mode 100644 index 00000000..52cf37cb --- /dev/null +++ b/pages/funkin/editors/ui/UIScrollBar.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UIScrollBar

      Constructor

      @:value({ w : 20 })new(x:Float, y:Float, length:Float, start:Float, size:Float, w:Int = 20, ?h:Int)

      Variables

      length:Float

      size:Float

      start:Float

      thumbIcon:FlxSprite

      value:Float

      onChange:Float ‑> Void

      Methods

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UISliceSprite.html b/pages/funkin/editors/ui/UISliceSprite.html index 4f4635bc..e904ec18 100644 --- a/pages/funkin/editors/ui/UISliceSprite.html +++ b/pages/funkin/editors/ui/UISliceSprite.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(x:Float, y:Float, w:Int, h:Int, path:String)

      Variables

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Methods

      resize(w:Int, h:Int):Void

      Inherited Variables

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file +

      Constructor

      new(x:Float, y:Float, w:Int, h:Int, path:String)

      Variables

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Methods

      resize(w:Int, h:Int):Void

      Inherited Variables

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UISprite.html b/pages/funkin/editors/ui/UISprite.html index 35536e63..62d1c752 100644 --- a/pages/funkin/editors/ui/UISprite.html +++ b/pages/funkin/editors/ui/UISprite.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(null)hoverCallback:() ‑> Void = null

      Methods

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file +

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      @:value(null)hoverCallback:() ‑> Void = null

      Methods

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIState.html b/pages/funkin/editors/ui/UIState.html index b2c914d9..b5052db5 100644 --- a/pages/funkin/editors/ui/UIState.html +++ b/pages/funkin/editors/ui/UIState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      staticread onlystate:UIState

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(null)hoveredSprite:UISprite = null

      @:value(null)buttonHandler:() ‑> Void = null

      Methods

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:UIContextMenuCallback, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      staticread onlystate:UIState

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(null)curContextMenu:UIContextMenu = null

      @:value(ARROW)currentCursor:MouseCursor = ARROW

      @:value(null)currentFocus:IUIFocusable = null

      @:value(null)hoveredSprite:UISprite = null

      @:value(null)buttonHandler:() ‑> Void = null

      Methods

      isOverlapping(spr:UISprite, rect:FlxRect):Bool

      openContextMenu(options:Array<UIContextMenuOption>, ?callback:Null<UIContextMenuCallback>, ?x:Float, ?y:Float):UIContextMenu

      updateButtonHandler(spr:UISprite, buttonHandler:() ‑> Void):Void

      updateRectButtonHandler(spr:UISprite, rect:FlxRect, buttonHandler:() ‑> Void):Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UISubstateWindow.html b/pages/funkin/editors/ui/UISubstateWindow.html new file mode 100644 index 00000000..cc000b03 --- /dev/null +++ b/pages/funkin/editors/ui/UISubstateWindow.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UISubstateWindow

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIText.html b/pages/funkin/editors/ui/UIText.html index 6c7d2520..e57482ce 100644 --- a/pages/funkin/editors/ui/UIText.html +++ b/pages/funkin/editors/ui/UIText.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ color : 0xFFFFFFFF, size : 15 })new(x:Float, y:Float, w:Float, text:Null<String>, size:Int = 15, color:FlxColor = 0xFFFFFFFF)

      Inherited Variables

      Inherited Methods

      \ No newline at end of file +

      Constructor

      @:value({ color : 0xFFFFFFFF, size : 15 })new(x:Float, y:Float, w:Float, text:Null<String>, size:Int = 15, color:FlxColor = 0xFFFFFFFF)

      Inherited Variables

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UITextBox.html b/pages/funkin/editors/ui/UITextBox.html new file mode 100644 index 00000000..2ff9b6a6 --- /dev/null +++ b/pages/funkin/editors/ui/UITextBox.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UITextBox

      Constructor

      @:value({ multiline : false, height : 32, width : 320, text : "" })new(x:Float, y:Float, text:String = "", width:Int = 320, height:Int = 32, multiline:Bool = false)

      Variables

      caretSpr:FlxSprite

      @:value(false)multiline:Bool = false

      @:value(0)position:Int = 0

      onChange:String ‑> Void

      Methods

      changeSelection(change:Int):Void

      onKeyDown(e:KeyCode, modifier:KeyModifier):Void

      onKeyUp(e:KeyCode, modifier:KeyModifier):Void

      onTextInput(text:String):Void

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UITopMenu.html b/pages/funkin/editors/ui/UITopMenu.html index d66b0b82..4ebe8ee4 100644 --- a/pages/funkin/editors/ui/UITopMenu.html +++ b/pages/funkin/editors/ui/UITopMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(options:Array<UIContextMenuOption>)

      Variables

      @:value(false)anyMenuOpened:Bool = false

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file +

      Constructor

      new(options:Array<UIContextMenuOption>)

      Variables

      @:value(false)anyMenuOpened:Bool = false

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UITopMenuButton.html b/pages/funkin/editors/ui/UITopMenuButton.html index b409ccfe..b0bf1732 100644 --- a/pages/funkin/editors/ui/UITopMenuButton.html +++ b/pages/funkin/editors/ui/UITopMenuButton.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(x:Float, y:Float, parent:UITopMenu, label:String, contextMenu:Array<UIContextMenuOption>)

      Variables

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(ARROW)cursor:MouseCursor = ARROW

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      \ No newline at end of file +

      Constructor

      new(x:Float, y:Float, parent:UITopMenu, label:String, contextMenu:Array<UIContextMenuOption>)

      Variables

      Methods

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIWarningSubstate.html b/pages/funkin/editors/ui/UIWarningSubstate.html index c263d1e0..005b231f 100644 --- a/pages/funkin/editors/ui/UIWarningSubstate.html +++ b/pages/funkin/editors/ui/UIWarningSubstate.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(title:String, message:String, buttons:Array<WarningButton>)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(title:String, message:String, buttons:Array<WarningButton>)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/UIWindow.html b/pages/funkin/editors/ui/UIWindow.html new file mode 100644 index 00000000..a038c40f --- /dev/null +++ b/pages/funkin/editors/ui/UIWindow.html @@ -0,0 +1,10 @@ + + + +funkin.editors.ui.UIWindow

      Constructor

      new(x:Float, y:Float, w:Int, h:Int, title:String)

      Variables

      Inherited Variables

      Defined by UISliceSprite

      @:value(20)bHeight:Int = 20

      @:value(120)bWidth:Int = 120

      @:value(0)framesOffset:Int = 0

      @:value(false)incorporeal:Bool = false

      Defined by UISprite

      @:value(true)canBeHovered:Bool = true

      @:value(ARROW)cursor:MouseCursor = ARROW

      focused:Bool

      @:value(null)hoverCallback:() ‑> Void = null

      @:value(false)hovered:Bool = false

      @:value(false)hoveredByChild:Bool = false

      @:value([])members:Array<FlxBasic> = []

      @:value(false)pressed:Bool = false

      @:value(true)selectable:Bool = true

      Inherited Methods

      Defined by UISliceSprite

      resize(w:Int, h:Int):Void

      Defined by UISprite

      drawSuper():Void

      onHovered():Void

      Called whenever the sprite is being hovered by the mouse.

      \ No newline at end of file diff --git a/pages/funkin/editors/ui/index.html b/pages/funkin/editors/ui/index.html index 1b012026..20483fde 100644 --- a/pages/funkin/editors/ui/index.html +++ b/pages/funkin/editors/ui/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/game/Character.html b/pages/funkin/game/Character.html index d2d82a66..112fa8ab 100644 --- a/pages/funkin/game/Character.html +++ b/pages/funkin/game/Character.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ switchAnims : true, isPlayer : false, character : "bf" })new(x:Float, y:Float, character:String = "bf", isPlayer:Bool = false, switchAnims:Bool = true)

      Variables

      @:value(new FlxPoint(0, 0))cameraOffset:FlxPoint = new FlxPoint(0, 0)

      @:value("bf")curCharacter:String = "bf"

      @:value(1)danceInterval:Int = 1

      Interval at which the character will dance (higher number = slower dance)

      @:value(true)danceOnBeat:Bool = true

      Whenever the character should dance on beat or not. Set to false for gf, since the dance animation is automatically handled by PlayState.

      @:value(false)debugMode:Bool = false

      @:value("bf-dead")gameOverCharacter:String = "bf-dead"

      @:value(new FlxPoint(0, 0))globalOffset:FlxPoint = new FlxPoint(0, 0)

      @:value(4)holdTime:Float = 4

      @:value(null)icon:String = null

      @:value(false)isGF:Bool = false

      @:value(false)isPlayer:Bool = false

      @:value(Math.NEGATIVE_INFINITY)lastHit:Float = Math.NEGATIVE_INFINITY

      @:value(false)playerOffsets:Bool = false

      @:value(false)stunned:Bool = false

      xml:Access

      Methods

      dance():Void

      FOR GF DANCING SHIT

      inlinegetCameraPosition():FlxPoint

      inlinegetIcon():String

      @:value({ Frame : 0, Reversed : false, Force : true, Context : SING, suffix : "" })playSingAnim(direction:Int, suffix:String = "", Context:PlayAnimContext = SING, Force:Bool = true, Reversed:Bool = false, Frame:Int = 0):Void

      tryDance():Void

      Inherited Variables

      Defined by FunkinSprite

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file +

      Static methods

      staticgetIconFromCharName(?curCharacter:String):String

      @:value({ mods : false })staticgetList(mods:Bool = false):Array<String>

      Constructor

      @:value({ switchAnims : true, isPlayer : false, character : "bf" })new(x:Float, y:Float, character:String = "bf", isPlayer:Bool = false, switchAnims:Bool = true)

      Variables

      @:value(new FlxPoint(0, 0))cameraOffset:FlxPoint = new FlxPoint(0, 0)

      @:value("bf")curCharacter:String = "bf"

      @:value(1)danceInterval:Int = 1

      Interval at which the character will dance (higher number = slower dance)

      @:value(true)danceOnBeat:Bool = true

      Whenever the character should dance on beat or not. Set to false for gf, since the dance animation is automatically handled by PlayState.

      @:value([])extra:Map<String, Dynamic> = []

      @:value("bf-dead")gameOverCharacter:String = "bf-dead"

      @:value(new FlxPoint(0, 0))globalOffset:FlxPoint = new FlxPoint(0, 0)

      @:value(4)holdTime:Float = 4

      @:value(null)icon:String = null

      @:value(false)isGF:Bool = false

      @:value(false)isPlayer:Bool = false

      @:value(Math.NEGATIVE_INFINITY)lastHit:Float = Math.NEGATIVE_INFINITY

      @:value(false)playerOffsets:Bool = false

      @:value("bf")sprite:String = "bf"

      @:value(false)stunned:Bool = false

      xml:Access

      Methods

      applyXML(xml:Access):Void

      buildXML():Xml

      dance():Void

      FOR GF DANCING SHIT

      @:value({ switchAnims : false })fixChar(switchAnims:Bool = false):Void

      inlinegetCameraPosition():FlxPoint

      inlinegetIcon():String

      @:value({ Frame : 0, Reversed : false, Force : true, Context : SING, suffix : "" })playSingAnim(direction:Int, suffix:String = "", Context:PlayAnimContext = SING, Force:Bool = true, Reversed:Bool = false, Frame:Int = 0):Void

      tryDance():Void

      Inherited Variables

      Defined by FunkinSprite

      @:value([])animDatas:Map<String, AnimData> = []

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(false)debugMode:Bool = false

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinegetNameList():Array<String>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      onPropertySet(property:String, value:Dynamic):Void

      inlineremoveAnimation(name:String):Void

      inlinestopAnimation():Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/game/GameOverSubstate.html b/pages/funkin/game/GameOverSubstate.html index c79f2b2f..a2f0420b 100644 --- a/pages/funkin/game/GameOverSubstate.html +++ b/pages/funkin/game/GameOverSubstate.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ retrySFX : "gameOverEnd", lossSFX : "gameOverSFX", gameOverSong : "gameOver", player : true, character : "bf-dead" })new(x:Float, y:Float, character:String = "bf-dead", player:Bool = true, gameOverSong:String = "gameOver", lossSFX:String = "gameOverSFX", retrySFX:String = "gameOverEnd")

      Variables

      lossSFX:FlxSound

      player:Bool

      retrySFX:String

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      @:value({ retrySFX : "gameOverEnd", lossSFX : "gameOverSFX", gameOverSong : "gameOver", player : true, character : "bf-dead" })new(x:Float, y:Float, character:String = "bf-dead", player:Bool = true, gameOverSong:String = "gameOver", lossSFX:String = "gameOverSFX", retrySFX:String = "gameOverEnd")

      Variables

      lossSFX:FlxSound

      player:Bool

      retrySFX:String

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/game/Highscore.html b/pages/funkin/game/Highscore.html deleted file mode 100644 index 0168d4a7..00000000 --- a/pages/funkin/game/Highscore.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.game.Highscore

      Static variables

      @:value(new Map())staticsongScores:Map<String, SongScore> = new Map()

      @:value(new Map())staticweekScores:Map<String, SongScore> = new Map()

      Static methods

      staticformatSong(song:String, diff:String):String

      staticgetScore(song:String, diff:String):SongScore

      staticgetWeekScore(week:String, diff:String):SongScore

      staticload():Void

      staticsave():Void

      @:value({ diff : "normal" })staticsaveScore(song:String, score:SongScore, diff:String = "normal"):Void

      @:value({ diff : "normal" })staticsaveWeekScore(weekName:String, score:SongScore, diff:String = "normal"):Void

      \ No newline at end of file diff --git a/pages/funkin/game/Note.html b/pages/funkin/game/Note.html index f3712953..73fa6253 100644 --- a/pages/funkin/game/Note.html +++ b/pages/funkin/game/Note.html @@ -7,5 +7,5 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value(160 * 0.7)staticswagWidth:Float = 160 * 0.7

      Constructor

      @:value({ sustainOffset : 0, sustainLength : 0, sustain : false })new(strumLine:StrumLine, noteData:ChartNote, sustain:Bool = false, sustainLength:Float = 0, sustainOffset:Float = 0)

      Variables

      @:value(true)angleOffsets:Bool = true

      @:value("")animSuffix:String = ""

      @:value(false)avoid:Bool = false

      Whenever that note should be avoided by Botplay.

      @:value(false)canBeHit:Bool = false

      @:value(0.5)earlyPressWindow:Float = 0.5

      @:value(true)flipSustain:Bool = true

      @:value(false)isSustainNote:Bool = false

      @:value(null)lastScrollSpeed:Null<Float> = null

      @:value(1)latePressWindow:Float = 1

      read onlymustPress:Bool

      nextNote:Note

      The note that comes after this one (sustain and not)

      nextSustain:Note

      The next sustain after this one

      @:value(null)noteAngle:Null<Float> = null

      @:value(0)noteData:Int = 0

      read onlynoteType:String

      @:value(0)noteTypeID:Int = 0

      prevNote:Note

      The note that comes before this one (sustain and not)

      @:value(null)scrollSpeed:Null<Float> = null

      @:value("default")splash:String = "default"

      Name of the splash.

      read onlystrumID:Int

      @:value(true)strumRelativePos:Bool = true

      Whenever the position of the note should be relative to the strum position or not. +

      Static variables

      @:value(160 * 0.7)staticswagWidth:Float = 160 * 0.7

      Constructor

      @:value({ sustainOffset : 0, sustainLength : 0, sustain : false })new(strumLine:StrumLine, noteData:ChartNote, sustain:Bool = false, sustainLength:Float = 0, sustainOffset:Float = 0)

      Variables

      @:value(true)angleOffsets:Bool = true

      @:value(null)animSuffix:String = null

      @:value(false)avoid:Bool = false

      Whenever that note should be avoided by Botplay.

      @:value(false)canBeHit:Bool = false

      @:value(0.5)earlyPressWindow:Float = 0.5

      @:value([])extra:Map<String, Dynamic> = []

      @:value(true)flipSustain:Bool = true

      @:value(false)isSustainNote:Bool = false

      @:value(null)lastScrollSpeed:Null<Float> = null

      @:value(1)latePressWindow:Float = 1

      read onlymustPress:Bool

      nextNote:Note

      The note that comes after this one (sustain and not)

      nextSustain:Note

      The next sustain after this one

      @:value(null)noteAngle:Null<Float> = null

      @:value(0)noteData:Int = 0

      read onlynoteType:String

      @:value(0)noteTypeID:Int = 0

      prevNote:Note

      The note that comes before this one (sustain and not)

      @:value(null)scrollSpeed:Null<Float> = null

      @:value("default")splash:String = "default"

      Name of the splash.

      read onlystrumID:Int

      @:value(true)strumRelativePos:Bool = true

      Whenever the position of the note should be relative to the strum position or not. For example, if this is true, a note at the position 0; 0 will be on the strum, instead of at the top left of the screen.

      @:value(0)strumTime:Float = 0

      @:value(0)sustainLength:Float = 0

      @:value(false)tooLate:Bool = false

      @:value(false)useAntialiasingFix:Bool = false

      @:value(false)wasGoodHit:Bool = false

      Methods

      setClipRect(rect:FlxRect):Void

      updateSustain(strum:Strum):Void

      \ No newline at end of file diff --git a/pages/funkin/game/NoteGroup.html b/pages/funkin/game/NoteGroup.html index c733a5d8..be6213b0 100644 --- a/pages/funkin/game/NoteGroup.html +++ b/pages/funkin/game/NoteGroup.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?MaxSize:Int)

      Methods

      addNotes(notes:Array<Note>):Void

      sortNotes():Void

      \ No newline at end of file +

      Constructor

      new(?MaxSize:Int)

      Methods

      inlineaddNotes(notes:Array<Note>):Void

      inlinesortNotes():Void

      \ No newline at end of file diff --git a/pages/funkin/game/PlayState.html b/pages/funkin/game/PlayState.html index 0f68b75b..4d45c81a 100644 --- a/pages/funkin/game/PlayState.html +++ b/pages/funkin/game/PlayState.html @@ -7,8 +7,8 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      staticSONG:ChartData

      SONG DATA (Chart, Metadata)

      @:value(0)staticcampaignScore:Int = 0

      Score for the current week.

      @:value(false)staticcoopMode:Bool = false

      // * Whenever the song has been started with co-op mode on.

      @:value(6)staticdaPixelZoom:Float = 6

      Zoom for the pixel assets.

      @:value("normal")staticdifficulty:String = "normal"

      The selected difficulty name

      @:value(false)staticfromMods:Bool = false

      Whenever the week is coming from the mods folder or not.

      @:value(null)staticinstance:PlayState = null

      Current PlayState instance.

      @:value(false)staticisStoryMode:Bool = false

      Whenever the song is being played in Story Mode.

      @:value(false)staticopponentMode:Bool = false

      Whenever the song has been started with opponent mode on.

      @:value([])staticstoryPlaylist:Array<String> = []

      The remaining songs in the Story Mode playlist.

      @:value(null)staticstoryWeek:WeekData = null

      The week data of the current week

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(new FlxTextFormat(0xFF888888, false, false, 0))accFormat:FlxTextFormat = new FlxTextFormat(0xFF888888, false, false, 0)

      Format for the accuracy rating.

      accuracy:Float

      The player's accuracy (shortcut to accuracyPressedNotes / totalAccuracyAmount).

      @:value(0)accuracyPressedNotes:Float = 0

      The number of pressed notes.

      accuracyTxt:FunkinText

      FunkinText that shows your accuracy.

      boyfriend:Character

      Boyfriend character

      camFollow:FlxObject

      Object defining the camera follow target.

      camGame:FlxCamera

      Camera for the game (stages, characters)

      camHUD:HudCamera

      Camera for the HUD (notes, misses).

      @:value(false)camZooming:Bool = false

      Whenever cam zooming is enabled, enables on a note hit if not cancelled.

      @:value(4)camZoomingInterval:Int = 4

      Interval of cam zooming (beats). -For example: if set to 4, the camera will zoom every 4 beats.

      @:value(1)camZoomingStrength:Float = 1

      How strong the cam zooms should be (defaults to 1)

      @:value(true)canAccessDebugMenus:Bool = true

      Whenever the player can press 7, 8 or 9 to access the debug menus.

      @:value(opponentMode && !coopMode)canDadDie:Bool = opponentMode && !coopMode

      Whenever the opponent can die.

      @:value(!opponentMode && !coopMode)canDie:Bool = !opponentMode && !coopMode

      Whenever the player can die.

      @:value(true)canPause:Bool = true

      Whenever the game can be paused or not.

      @:value(0)combo:Int = 0

      Current combo.

      @:value(!Options.ghostTapping)comboBreaks:Bool = !Options.ghostTapping

      Whenever the misses should show "Combo Breaks" instead of "Misses"

      comboGroup:FlxSpriteGroup

      Group containing all of the combo sprites.

      @:value([new ComboRating(0, "F", 0xFFFF4444), new ComboRating(0.5, "E", 0xFFFF8844), new ComboRating(0.7, "D", 0xFFFFAA44), new ComboRating(0.8, "C", 0xFFFFFF44), new ComboRating(0.85, "B", 0xFFAAFF44), new ComboRating(0.9, "A", 0xFF88FF44), new ComboRating(0.95, "S", 0xFF44FFFF), new ComboRating(1, "S++", 0xFF44FFFF)])comboRatings:Array<ComboRating> = [new ComboRating(0, "F", 0xFFFF4444), new ComboRating(0.5, "E", 0xFFFF8844), new ComboRating(0.7, "D", 0xFFFFAA44), new ComboRating(0.8, "C", 0xFFFFFF44), new ComboRating(0.85, "B", 0xFFAAFF44), new ComboRating(0.9, "A", 0xFF88FF44), new ComboRating(0.95, "S", 0xFF44FFFF), new ComboRating(1, "S++", 0xFF44FFFF)]

      All combo ratings.

      cpu:StrumLine

      Shortcut to cpuStrums.

      read onlycpuStrums:StrumLine

      CPU strums.

      @:value(0)curCameraTarget:Int = 0

      Current camera target. -1 means no automatic camera targetting.

      curRating:ComboRating

      Last rating (may be null)

      @:value("")curSong:String = ""

      Current song name (lowercase)

      @:value("")curStage:String = ""

      Current stage name

      @:value(null)cutscene:String = null

      Cutscene script path.

      dad:Character

      Dad character

      @:value(1.05)defaultCamZoom:Float = 1.05

      Camera zoom at which the game lerps to.

      @:value("")detailsPausedText:String = ""

      @:value("")detailsText:String = ""

      downscroll:Bool

      Whenever the game is in downscroll or not. (Can be set)

      @:value(null)endCutscene:String = null

      End cutscene script path.

      @:value(false)endingSong:Bool = false

      Whenever the song is ending or not.

      @:value([])events:Array<ChartEvent> = []

      Remaining events

      @:value("gameOver")gameOverSong:String = "gameOver"

      Game Over Song. (assets/music/gameOver.ogg)

      @:value(false)generatedMusic:Bool = false

      Whenever the music has been generated.

      gf:Character

      Girlfriend character

      gfSpeed:Int

      Interval at which Girlfriend dances.

      @:value(Options.ghostTapping)ghostTapping:Bool = Options.ghostTapping

      Whenever Ghost Tapping is enabled.

      @:value(1)health:Float = 1

      Current health. Goes from 0 to maxHealth (defaults to 2)

      healthBar:FlxBar

      Health bar.

      healthBarBG:FlxSprite

      Health bar background.

      @:value(Options.hitWindow)hitWindow:Float = Options.hitWindow

      Hit window, in milliseconds. Defaults to 250ms unless changed in options. -Base game hit window is 175ms.

      iconP1:HealthIcon

      Player's icon

      iconP2:HealthIcon

      Opponent's icon

      @:value(false)inCutscene:Bool = false

      Whenever the game is currently in a cutscene or not.

      inst:FlxSound

      Instrumental sound (Inst.ogg).

      @:value(5)introLength:Int = 5

      Length of the intro countdown.

      @:value(["intro3", "intro2", "intro1", "introGo"])introSounds:Array<String> = ["intro3", "intro2", "intro1", "introGo"]

      Array of sounds for the intro.

      @:value([null, "game/ready", "game/set", "game/go"])introSprites:Array<String> = [null, "game/ready", "game/set", "game/go"]

      Array of sprites for the intro.

      @:value("gameOverSFX")lossSFX:String = "gameOverSFX"

      Game Over Song. (assets/sounds/gameOverSFX.ogg)

      @:value(1.35)maxCamZoom:Float = 1.35

      Maximum amount of zoom for the camera.

      @:value(2)@:isVarmaxHealth:Float = 2

      Maximum health the player can have. Defaults to 2.

      @:value(0)misses:Int = 0

      The player's amount of misses.

      missesTxt:FunkinText

      FunkinText that shows your amount of misses.

      @:value(true)muteVocalsOnMiss:Bool = true

      Whenever the vocals should be muted when a note is missed.

      @:value([null])noteTypesArray:Array<String> = [null]

      Array containing all of the note types names.

      @:value(false)paused:Bool = false

      Whenever the game is paused or not.

      @:value(isStoryMode)playCutscenes:Bool = isStoryMode

      Whenever the game should play the cutscenes. Defaults to whenever the game is currently in Story Mode or not.

      player:StrumLine

      Shortcut to playerStrums.

      read onlyplayerStrums:StrumLine

      Player strums.

      @:value(0)ratingNum:Int = 0

      Number of ratings.

      @:value("gameOverEnd")retrySFX:String = "gameOverEnd"

      Game Over End SFX, used when retrying. (assets/sounds/gameOverEnd.ogg)

      scoreTxt:FunkinText

      FunkinText that shows your score.

      scripts:ScriptPack

      Script Pack of all the scripts being ran.

      @:value(0)scrollSpeed:Float = 0

      Current scroll speed for all strums. -To set a scroll speed for a specific strum, use strum.scrollSpeed.

      @:value(0)songScore:Int = 0

      The player's current score.

      splashHandler:SplashHandler

      Note splashes container

      stage:Stage

      Current Stage.

      startTimer:FlxTimer

      Timer for the start countdown

      @:value(false)startedCountdown:Bool = false

      Whenever the countdown has started or not.

      @:value(false)startingSong:Bool = false

      Whenever the song is currently being started.

      strumLine:FlxObject

      Strum line position

      @:value([])strumLines:Array<StrumLine> = []

      Array of all the players in the stage.

      @:value(0)totalAccuracyAmount:Float = 0

      The total accuracy amount.

      @:value(true)validScore:Bool = true

      Whenever the score will save when you beat the song.

      vocals:FlxSound

      Vocals sound (Vocals.ogg).

      Methods

      countdown(swagCounter:Int):Void

      Creates a fake countdown.

      inlinedeleteNote(note:Note):Void

      endSong():Void

      Ends the song.

      gameOver(?character:Character, ?deathCharID:String, ?gameOverSong:String, ?lossSFX:String, ?retrySFX:String):Void

      Forces a game over.

      Parameters:

      character

      Character which died. Default to boyfriend.

      deathCharID

      Character ID (name) for game over. Default to whatever is specified in the character's XML.

      gameOverSong

      Song for the game over screen. Default to this.gameOverSong (gameOver)

      lossSFX

      SFX at the beginning of the game over (Mic drop). Default to this.lossSFX (gameOverSFX)

      retrySFX

      SFX played whenever the player retries. Defaults to retrySFX (gameOverEnd)

      inlinegetIconRPC():String

      Returns the Discord RPC icon.

      goodNoteHit(strumLine:StrumLine, note:Note):Void

      Hits a note

      Parameters:

      note

      Note to hit.

      nextSong():Void

      Immediately switches to the next song, or goes back to the Story/Freeplay menu.

      noteMiss(strumLine:StrumLine, note:Note, ?direction:Int, ?player:Int):Void

      Misses a note

      Parameters:

      note

      Note to miss.

      direction

      Specify a custom direction in case note is null.

      player

      Specify a custom player in case note is null.

      pauseGame():Void

      Pauses the game.

      @:value({ prefix : "" })startCutscene(prefix:String = "", ?cutsceneScriptPath:String, ?callback:() ‑> Void):Void

      Starts a cutscene.

      Parameters:

      prefix

      Custom prefix. Using midsong- will require you to for example rename your video cutscene to songs/song/midsong-cutscene.mp4 instead of songs/song/cutscene.mp4

      cutsceneScriptPath

      Optional: Custom script path.

      callback

      Callback called after the cutscene ended. If equals to null, startCountdown will be called.

      dynamicupdateDiscordPresence():Void

      Function used to update Discord Presence. -This function is dynamic, which means you can do updateDiscordPresence = function() {} in scripts.

      updateRating():Void

      Updates the rating.

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      staticSONG:ChartData

      SONG DATA (Chart, Metadata)

      staticread onlycampaignAccuracy:Float

      Accuracy for the current week

      @:value(0)staticcampaignAccuracyCount:Float = 0

      @:value(0)staticcampaignAccuracyTotal:Float = 0

      @:value(0)staticcampaignMisses:Int = 0

      Misses for the current week.

      @:value(0)staticcampaignScore:Int = 0

      Score for the current week.

      @:value(false)staticchartingMode:Bool = false

      Whenever Charting Mode has been enabled for this song.

      @:value(false)staticcoopMode:Bool = false

      // * Whenever the song has been started with co-op mode on.

      @:value(6)staticdaPixelZoom:Float = 6

      Zoom for the pixel assets.

      @:value("normal")staticdifficulty:String = "normal"

      The selected difficulty name

      @:value(false)staticfromMods:Bool = false

      Whenever the week is coming from the mods folder or not.

      @:value(null)staticinstance:PlayState = null

      Current PlayState instance.

      @:value(false)staticisStoryMode:Bool = false

      Whenever the song is being played in Story Mode.

      @:value(false)staticopponentMode:Bool = false

      Whenever the song has been started with opponent mode on.

      @:value([])staticstoryPlaylist:Array<String> = []

      The remaining songs in the Story Mode playlist.

      @:value(null)staticstoryWeek:WeekData = null

      The week data of the current week

      Static methods

      static__loadSong(name:String, difficulty:String):Void

      (INTERNAL) Loads a song without resetting story mode/opponent mode/coop mode values.

      Parameters:

      name

      Song name

      difficulty

      Song difficulty

      @:value({ coopMode : false, opponentMode : false, difficulty : "normal" })staticloadSong(name:String, difficulty:String = "normal", opponentMode:Bool = false, coopMode:Bool = false):Void

      Loads a song into PlayState

      Parameters:

      name

      Song name

      difficulty

      Chart difficulty (if invalid, will load an empty chart)

      opponentMode

      Whenever opponent mode is on

      coopMode

      Whenever co-op mode is on.

      @:value({ difficulty : "normal" })staticloadWeek(weekData:WeekData, difficulty:String = "normal"):Void

      Load a week into PlayState.

      Parameters:

      weekData

      Week Data

      difficulty

      Week Difficulty

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(new FlxTextFormat(0xFF888888, false, false, 0))accFormat:FlxTextFormat = new FlxTextFormat(0xFF888888, false, false, 0)

      Format for the accuracy rating.

      accuracy:Float

      The player's accuracy (shortcut to accuracyPressedNotes / totalAccuracyAmount).

      @:value(0)accuracyPressedNotes:Float = 0

      The number of pressed notes.

      accuracyTxt:FunkinText

      FunkinText that shows your accuracy.

      boyfriend:Character

      Boyfriend character

      camFollow:FlxObject

      Object defining the camera follow target.

      camGame:FlxCamera

      Camera for the game (stages, characters)

      camHUD:HudCamera

      Camera for the HUD (notes, misses).

      @:value(false)camZooming:Bool = false

      Whenever cam zooming is enabled, enables on a note hit if not cancelled.

      @:value(4)camZoomingInterval:Int = 4

      Interval of cam zooming (beats). +For example: if set to 4, the camera will zoom every 4 beats.

      @:value(1)camZoomingStrength:Float = 1

      How strong the cam zooms should be (defaults to 1)

      @:value(true)canAccessDebugMenus:Bool = true

      Whenever the player can press 7, 8 or 9 to access the debug menus.

      @:value(opponentMode && !coopMode)canDadDie:Bool = opponentMode && !coopMode

      Whenever the opponent can die.

      @:value(!opponentMode && !coopMode)canDie:Bool = !opponentMode && !coopMode

      Whenever the player can die.

      @:value(true)canPause:Bool = true

      Whenever the game can be paused or not.

      @:value(0)combo:Int = 0

      Current combo.

      @:value(!Options.ghostTapping)comboBreaks:Bool = !Options.ghostTapping

      Whenever the misses should show "Combo Breaks" instead of "Misses"

      comboGroup:RotatingSpriteGroup

      Group containing all of the combo sprites.

      @:value([new ComboRating(0, "F", 0xFFFF4444), new ComboRating(0.5, "E", 0xFFFF8844), new ComboRating(0.7, "D", 0xFFFFAA44), new ComboRating(0.8, "C", 0xFFFFFF44), new ComboRating(0.85, "B", 0xFFAAFF44), new ComboRating(0.9, "A", 0xFF88FF44), new ComboRating(0.95, "S", 0xFF44FFFF), new ComboRating(1, "S++", 0xFF44FFFF)])comboRatings:Array<ComboRating> = [new ComboRating(0, "F", 0xFFFF4444), new ComboRating(0.5, "E", 0xFFFF8844), new ComboRating(0.7, "D", 0xFFFFAA44), new ComboRating(0.8, "C", 0xFFFFFF44), new ComboRating(0.85, "B", 0xFFAAFF44), new ComboRating(0.9, "A", 0xFF88FF44), new ComboRating(0.95, "S", 0xFF44FFFF), new ComboRating(1, "S++", 0xFF44FFFF)]

      All combo ratings.

      cpu:StrumLine

      Shortcut to cpuStrums.

      read onlycpuStrums:StrumLine

      CPU strums.

      @:value(0)curCameraTarget:Int = 0

      Current camera target. -1 means no automatic camera targetting.

      curRating:ComboRating

      Last rating (may be null)

      @:value("")curSong:String = ""

      Current song name (lowercase)

      @:value("")curStage:String = ""

      Current stage name

      @:value(null)cutscene:String = null

      Cutscene script path.

      dad:Character

      Dad character

      @:value(1.05)defaultCamZoom:Float = 1.05

      Camera zoom at which the game lerps to.

      @:value(1.0)defaultHudZoom:Float = 1.0

      Camera zoom at which the hud lerps to.

      @:value("")detailsPausedText:String = ""

      @:value("")detailsText:String = ""

      downscroll:Bool

      Whenever the game is in downscroll or not. (Can be set)

      @:value(null)endCutscene:String = null

      End cutscene script path.

      @:value(false)endingSong:Bool = false

      Whenever the song is ending or not.

      @:value([])events:Array<ChartEvent> = []

      Remaining events

      @:value("gameOver")gameOverSong:String = "gameOver"

      Game Over Song. (assets/music/gameOver.ogg)

      @:value(false)generatedMusic:Bool = false

      Whenever the music has been generated.

      gf:Character

      Girlfriend character

      gfSpeed:Int

      Interval at which Girlfriend dances.

      @:value(Options.ghostTapping)ghostTapping:Bool = Options.ghostTapping

      Whenever Ghost Tapping is enabled.

      @:value(1)health:Float = 1

      Current health. Goes from 0 to maxHealth (defaults to 2)

      healthBar:FlxBar

      Health bar.

      healthBarBG:FlxSprite

      Health bar background.

      @:value(Options.hitWindow)hitWindow:Float = Options.hitWindow

      Hit window, in milliseconds. Defaults to 250ms unless changed in options. +Base game hit window is 175ms.

      iconP1:HealthIcon

      Player's icon

      iconP2:HealthIcon

      Opponent's icon

      @:value(false)inCutscene:Bool = false

      Whenever the game is currently in a cutscene or not.

      inst:FlxSound

      Instrumental sound (Inst.ogg).

      @:value(5)introLength:Int = 5

      Length of the intro countdown.

      @:value(["intro3", "intro2", "intro1", "introGo"])introSounds:Array<String> = ["intro3", "intro2", "intro1", "introGo"]

      Array of sounds for the intro.

      @:value([null, "game/ready", "game/set", "game/go"])introSprites:Array<String> = [null, "game/ready", "game/set", "game/go"]

      Array of sprites for the intro.

      @:value("gameOverSFX")lossSFX:String = "gameOverSFX"

      Game Over Song. (assets/sounds/gameOverSFX.ogg)

      @:value(1.35)maxCamZoom:Float = 1.35

      Maximum amount of zoom for the camera.

      @:value(2)@:isVarmaxHealth:Float = 2

      Maximum health the player can have. Defaults to 2.

      @:value(0)misses:Int = 0

      The player's amount of misses.

      missesTxt:FunkinText

      FunkinText that shows your amount of misses.

      @:value(true)muteVocalsOnMiss:Bool = true

      Whenever the vocals should be muted when a note is missed.

      @:value([null])noteTypesArray:Array<String> = [null]

      Array containing all of the note types names.

      @:value(false)paused:Bool = false

      Whenever the game is paused or not.

      @:value(isStoryMode)playCutscenes:Bool = isStoryMode

      Whenever the game should play the cutscenes. Defaults to whenever the game is currently in Story Mode or not.

      player:StrumLine

      Shortcut to playerStrums.

      read onlyplayerStrums:StrumLine

      Player strums.

      @:value(0)ratingNum:Int = 0

      Number of ratings.

      @:value("gameOverEnd")retrySFX:String = "gameOverEnd"

      Game Over End SFX, used when retrying. (assets/sounds/gameOverEnd.ogg)

      scoreTxt:FunkinText

      FunkinText that shows your score.

      scripts:ScriptPack

      Script Pack of all the scripts being ran.

      @:value(0)scrollSpeed:Float = 0

      Current scroll speed for all strums. +To set a scroll speed for a specific strum, use strum.scrollSpeed.

      @:value(0)songScore:Int = 0

      The player's current score.

      splashHandler:SplashHandler

      Note splashes container

      stage:Stage

      Current Stage.

      startTimer:FlxTimer

      Timer for the start countdown

      @:value(false)startedCountdown:Bool = false

      Whenever the countdown has started or not.

      @:value(false)startingSong:Bool = false

      Whenever the song is currently being started.

      strumLine:FlxObject

      Strum line position

      @:value(new FlxTypedGroup<StrumLine>())strumLines:FlxTypedGroup<StrumLine> = new FlxTypedGroup<StrumLine>()

      Array of all the players in the stage.

      @:value(0)totalAccuracyAmount:Float = 0

      The total accuracy amount.

      @:value(true)validScore:Bool = true

      Whenever the score will save when you beat the song.

      vocals:FlxSound

      Vocals sound (Vocals.ogg).

      Methods

      addScript(file:String):Void

      countdown(swagCounter:Int):Void

      Creates a fake countdown.

      inlinedeleteNote(note:Note):Void

      @:value({ evt : null })displayCombo(?evt:NoteHitEvent):Void

      @:value({ evt : null })displayRating(myRating:String, ?evt:NoteHitEvent):Void

      endSong():Void

      Ends the song.

      gameOver(?character:Character, ?deathCharID:String, ?gameOverSong:String, ?lossSFX:String, ?retrySFX:String):Void

      Forces a game over.

      Parameters:

      character

      Character which died. Default to boyfriend.

      deathCharID

      Character ID (name) for game over. Default to whatever is specified in the character's XML.

      gameOverSong

      Song for the game over screen. Default to this.gameOverSong (gameOver)

      lossSFX

      SFX at the beginning of the game over (Mic drop). Default to this.lossSFX (gameOverSFX)

      retrySFX

      SFX played whenever the player retries. Defaults to retrySFX (gameOverEnd)

      inlinegetIconRPC():String

      Returns the Discord RPC icon.

      goodNoteHit(strumLine:StrumLine, note:Note):Void

      Hits a note

      Parameters:

      note

      Note to hit.

      nextSong():Void

      Immediately switches to the next song, or goes back to the Story/Freeplay menu.

      noteMiss(strumLine:StrumLine, note:Note, ?direction:Int, ?player:Int):Void

      Misses a note

      Parameters:

      strumLine

      The strumline the miss happened on.

      note

      Note to miss.

      direction

      Specify a custom direction in case note is null.

      player

      Specify a custom player in case note is null.

      pauseGame():Void

      Pauses the game.

      @:value({ prefix : "" })startCutscene(prefix:String = "", ?cutsceneScriptPath:String, ?callback:() ‑> Void):Void

      Starts a cutscene.

      Parameters:

      prefix

      Custom prefix. Using midsong- will require you to for example rename your video cutscene to songs/song/midsong-cutscene.mp4 instead of songs/song/cutscene.mp4

      cutsceneScriptPath

      Optional: Custom script path.

      callback

      Callback called after the cutscene ended. If equals to null, startCountdown will be called.

      dynamicupdateDiscordPresence():Void

      Function used to update Discord Presence. +This function is dynamic, which means you can do updateDiscordPresence = function() {} in scripts.

      updateRating():Void

      Updates the rating.

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/game/SongScore.html b/pages/funkin/game/SongScore.html deleted file mode 100644 index 9a31068f..00000000 --- a/pages/funkin/game/SongScore.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.game.SongScore

      Fields

      @:optionaloptionalscore:Null<Int>

      @:optionaloptionalmisses:Null<Int>

      @:optionaloptionalhits:Null<Map<String, Int>>

      @:optionaloptionalaccuracy:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/game/SplashGroup.html b/pages/funkin/game/SplashGroup.html index 5d309552..559b96da 100644 --- a/pages/funkin/game/SplashGroup.html +++ b/pages/funkin/game/SplashGroup.html @@ -8,4 +8,4 @@ text-shadow: 0 0 0 transparent; }

      Constructor

      new(path:String)

      Creates a new Splash group

      Parameters:

      path

      Path to the splash data (xml)

      Variables

      @:value([])animationNames:Array<Array<String>> = []

      Animation names sorted by strum IDs. -Use getSplashAnim to get one.

      @:value(true)valid:Bool = true

      Whenever the splash group has successfully loaded or not.

      xml:Access

      XML data for the note splashes.

      Methods

      \ No newline at end of file +Use getSplashAnim to get one.

      @:value(true)valid:Bool = true

      Whenever the splash group has successfully loaded or not.

      xml:Access

      XML data for the note splashes.

      Methods

      \ No newline at end of file diff --git a/pages/funkin/game/SplashHandler.html b/pages/funkin/game/SplashHandler.html index 65937b67..2035c654 100644 --- a/pages/funkin/game/SplashHandler.html +++ b/pages/funkin/game/SplashHandler.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Variables

      @:value([])grpMap:Map<String, SplashGroup> = []

      Map containing all of the splashes group.

      Methods

      getSplashGroup(name:String):Null<SplashGroup>

      Returns a group of splashes, and creates it if it doesn't exist.

      Parameters:

      path

      Path to the splashes XML (Paths.xml('splashes/splash'))

      showSplash(name:String, strum:Strum):Void

      \ No newline at end of file +

      Constructor

      new()

      Variables

      @:value([])grpMap:Map<String, SplashGroup> = []

      Map containing all of the splashes group.

      Methods

      getSplashGroup(name:String):Null<SplashGroup>

      Returns a group of splashes, and creates it if it doesn't exist.

      Parameters:

      path

      Path to the splashes XML (Paths.xml('splashes/splash'))

      showSplash(name:String, strum:Strum):Void

      \ No newline at end of file diff --git a/pages/funkin/game/Stage.html b/pages/funkin/game/Stage.html index c7b49f88..ed53700d 100644 --- a/pages/funkin/game/Stage.html +++ b/pages/funkin/game/Stage.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(stage:String, ?state:FlxState)

      Variables

      @:value([])characterPoses:Map<String, StageCharPos> = []

      stagePath:String

      @:value([])stageSprites:Map<String, FlxSprite> = []

      stageXML:Access

      state:FlxState

      Methods

      addCharPos(name:String, node:Access, ?nonXMLInfo:StageCharPosInfo):Void

      applyCharStuff(char:Character, posName:String):Void

      beatHit(curBeat:Int):Void

      getSprite(name:String):Null<FlxSprite>

      @:value({ def : false })isCharFlipped(posName:String, def:Bool = false):Bool

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file +

      Constructor

      new(stage:String, ?state:FlxState)

      Variables

      @:value([])characterPoses:Map<String, StageCharPos> = []

      stagePath:String

      @:value([])stageSprites:Map<String, FlxSprite> = []

      stageXML:Access

      state:FlxState

      Methods

      addCharPos(name:String, node:Access, ?nonXMLInfo:StageCharPosInfo):StageCharPos

      @:value({ id : 0 })applyCharStuff(char:Character, posName:String, id:Float = 0):Void

      beatHit(curBeat:Int):Void

      getSprite(name:String):Null<FlxSprite>

      @:value({ def : false })inlineisCharFlipped(posName:String, def:Bool = false):Bool

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/game/StageCharPos.html b/pages/funkin/game/StageCharPos.html index 9b60605e..817f1fee 100644 --- a/pages/funkin/game/StageCharPos.html +++ b/pages/funkin/game/StageCharPos.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Fields

      @:optionaloptionalnonXMLInfo:Null<StageCharPosInfo>

      node:Access

      \ No newline at end of file +

      Constructor

      new()

      Variables

      @:value(1)alpha:Float = 1

      @:value(0)camxoffset:Float = 0

      @:value(0)camyoffset:Float = 0

      @:value(20)charSpacingX:Float = 20

      @:value(0)charSpacingY:Float = 0

      @:value(false)flipX:Bool = false

      @:value(FlxPoint.get(1, 1))scale:FlxPoint = FlxPoint.get(1, 1)

      @:value(0)skewX:Float = 0

      @:value(0)skewY:Float = 0

      Methods

      @:value({ id : 0 })prepareCharacter(char:Character, id:Float = 0):Void

      \ No newline at end of file diff --git a/pages/funkin/game/StageCharPosInfo.html b/pages/funkin/game/StageCharPosInfo.html index 4c083f42..735b0285 100644 --- a/pages/funkin/game/StageCharPosInfo.html +++ b/pages/funkin/game/StageCharPosInfo.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Fields

      y:Float

      x:Float

      flip:Bool

      \ No newline at end of file +

      Fields

      y:Float

      x:Float

      scroll:Float

      flip:Bool

      \ No newline at end of file diff --git a/pages/funkin/game/StageSprite.html b/pages/funkin/game/StageSprite.html deleted file mode 100644 index 16e652c7..00000000 --- a/pages/funkin/game/StageSprite.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.game.StageSprite

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value([])beatAnims:Array<String> = []

      Methods

      beatHit(curBeat:Int):Void

      stepHit(curBeat:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/game/Strum.html b/pages/funkin/game/Strum.html index 4b72e362..867a317c 100644 --- a/pages/funkin/game/Strum.html +++ b/pages/funkin/game/Strum.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value(false)cpu:Bool = false

      @:value([])read onlylastDrawCameras:Array<FlxCamera> = []

      @:value(-5000)lastHit:Float = -5000

      @:value(null)noteAngle:Null<Float> = null

      @:value(null)scrollSpeed:Null<Float> = null

      Methods

      getAnim():Null<String>

      inlinegetNotesAngle(?note:Note):Float

      inlinegetScrollSpeed(?note:Note):Float

      @:value({ force : true })playAnim(anim:String, force:Bool = true):Void

      press(time:Float):Void

      updatePlayerInput(pressed:Bool, justPressed:Bool, justReleased:Bool):Void

      updateSustain(daNote:Note):Void

      \ No newline at end of file +

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value(false)cpu:Bool = false

      @:value([])extra:Map<String, Dynamic> = []

      @:value([])read onlylastDrawCameras:Array<FlxCamera> = []

      @:value(-5000)lastHit:Float = -5000

      @:value(null)noteAngle:Null<Float> = null

      @:value(null)scrollSpeed:Null<Float> = null

      @:value(null)getJustPressed:StrumLine ‑> Bool = null

      @:value(null)getJustReleased:StrumLine ‑> Bool = null

      @:value(null)getPressed:StrumLine ‑> Bool = null

      Methods

      inline__getJustPressed(strumLine:StrumLine):Bool

      inline__getJustReleased(strumLine:StrumLine):Bool

      inline__getPressed(strumLine:StrumLine):Bool

      getAnim():Null<String>

      inlinegetNotesAngle(?note:Note):Float

      inlinegetScrollSpeed(?note:Note):Float

      @:value({ force : true })playAnim(anim:String, force:Bool = true):Void

      inlinepress(time:Float):Void

      updatePlayerInput(pressed:Bool, justPressed:Bool, justReleased:Bool):Void

      inlineupdateSustain(daNote:Note):Void

      \ No newline at end of file diff --git a/pages/funkin/game/StrumLine.html b/pages/funkin/game/StrumLine.html index 87dbfea5..0352c70c 100644 --- a/pages/funkin/game/StrumLine.html +++ b/pages/funkin/game/StrumLine.html @@ -7,10 +7,12 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      @:value({ opponentSide : true, cpu : false, strumOffset : 0.25 })new(characters:Array<Character>, strumOffset:Float = 0.25, cpu:Bool = false, opponentSide:Bool = true, ?controls:Controls)

      Variables

      characters:Array<Character>

      Array containing all of the characters "attached" to those strums.

      @:value(null)controls:Controls = null

      Controls assigned to this strumline.

      @:value(false)cpu:Bool = false

      Whenever this strumline is controlled by cpu or not.

      @:value(null)data:ChartStrumLine = null

      Chart JSON data assigned to this StrumLine (Codename format)

      @:value(null)@:isVarghostTapping:Null<Bool> = null

      Whenever Ghost Tapping is enabled.

      notes:NoteGroup

      Group of all of the notes in this strumline. Using forEach on this group will only loop through the first notes for performance reasons.

      @:value(new FlxTypedSignal<NoteHitEvent>())onHit:FlxTypedSignal<NoteHitEvent ‑> Void> = new FlxTypedSignal<NoteHitEvent>()

      Signal that triggers whenever a note is hit. Similar to onPlayerHit and onDadHit, except strumline specific. +

      Constructor

      @:value({ opponentSide : true, cpu : false })new(characters:Array<Character>, startingPos:FlxPoint, strumScale:Float, cpu:Bool = false, opponentSide:Bool = true, ?controls:Controls)

      Variables

      @:value(false)altAnim:Bool = false

      Whenever alt animation is enabled on this strumline.

      characters:Array<Character>

      Array containing all of the characters "attached" to those strums.

      @:value(null)controls:Controls = null

      Controls assigned to this strumline.

      @:value(false)cpu:Bool = false

      Whenever this strumline is controlled by cpu or not.

      @:value(null)data:ChartStrumLine = null

      Chart JSON data assigned to this StrumLine (Codename format)

      @:value([])extra:Map<String, Dynamic> = []

      @:value(null)@:isVarghostTapping:Null<Bool> = null

      Whenever Ghost Tapping is enabled.

      notes:NoteGroup

      Group of all of the notes in this strumline. Using forEach on this group will only loop through the first notes for performance reasons.

      @:value(new FlxTypedSignal<NoteHitEvent>())onHit:FlxTypedSignal<NoteHitEvent ‑> Void> = new FlxTypedSignal<NoteHitEvent>()

      Signal that triggers whenever a note is hit. Similar to onPlayerHit and onDadHit, except strumline specific. To add a listener, do -strumLine.onHit.add(function(e:NoteHitEvent) {});

      @:value(new FlxTypedSignal<NoteHitEvent>())onMiss:FlxTypedSignal<NoteHitEvent ‑> Void> = new FlxTypedSignal<NoteHitEvent>()

      Signal that triggers whenever a note is missed. Similar to onPlayerMiss and onDadMiss, except strumline specific. +strumLine.onHit.add(function(e:NoteHitEvent) {});

      @:value(new FlxTypedSignal<NoteMissEvent>())onMiss:FlxTypedSignal<NoteMissEvent ‑> Void> = new FlxTypedSignal<NoteMissEvent>()

      Signal that triggers whenever a note is missed. Similar to onPlayerMiss, except strumline specific. To add a listener, do -strumLine.onMiss.add(function(e:NoteHitEvent) {});

      @:value(new FlxTypedSignal<NoteUpdateEvent>())onNoteUpdate:FlxTypedSignal<NoteUpdateEvent ‑> Void> = new FlxTypedSignal<NoteUpdateEvent>()

      Signal that triggers whenever a note is being updated. Similar to onNoteUpdate, except strumline specific. +strumLine.onMiss.add(function(e:NoteMissEvent) {});

      @:value(new FlxTypedSignal<SimpleNoteEvent>())onNoteDelete:FlxTypedSignal<SimpleNoteEvent ‑> Void> = new FlxTypedSignal<SimpleNoteEvent>()

      Signal that triggers whenever a note is being updated. Similar to onNoteUpdate, except strumline specific. To add a listener, do -strumLine.onNoteUpdate.add(function(e:NoteUpdateEvent) {});

      @:value(false)opponentSide:Bool = false

      Whenever this strumline is from the opponent side or the player side.

      Methods

      inlineaddHealth(health:Float):Void

      deleteNote(note:Note):Void

      Deletes a note from this strumline.

      Parameters:

      note

      Note to delete

      generate(strumLine:ChartStrumLine):Void

      @:value({ amount : 4 })generateStrums(amount:Int = 4):Void

      updateNote(daNote:Note):Void

      \ No newline at end of file +strumLine.onNoteUpdate.add(function(e:NoteUpdateEvent) {});

      @:value(new FlxTypedSignal<NoteUpdateEvent>())onNoteUpdate:FlxTypedSignal<NoteUpdateEvent ‑> Void> = new FlxTypedSignal<NoteUpdateEvent>()

      Signal that triggers whenever a note is being updated. Similar to onNoteUpdate, except strumline specific. +To add a listener, do +strumLine.onNoteUpdate.add(function(e:NoteUpdateEvent) {});

      @:value(false)opponentSide:Bool = false

      Whenever this strumline is from the opponent side or the player side.

      @:value(["left", "down", "up", "right"])strumAnimPrefix:Array<String> = ["left", "down", "up", "right"]

      TODO: Write documention about this being a variable that can help when making multi key

      Methods

      inlineaddHealth(health:Float):Void

      createStrum(i:Int, ?animPrefix:String):Strum

      Creates a strum and returns the created strum (needs to be added manually).

      Parameters:

      i

      Index of the strum

      animPrefix

      (Optional) Animation prefix (left = arrowLEFT, left press, left confirm).

      deleteNote(note:Note):Void

      Deletes a note from this strumline.

      Parameters:

      note

      Note to delete

      generate(strumLine:ChartStrumLine, ?startTime:Float):Void

      @:value({ amount : 4 })inlinegenerateStrums(amount:Int = 4):Void

      @:value({ id : 0 })updateInput(id:Int = 0):Void

      updateNote(daNote:Note):Void

      inlineupdateNotes():Void

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/Cutscene.html b/pages/funkin/game/cutscenes/Cutscene.html new file mode 100644 index 00000000..db36bfc0 --- /dev/null +++ b/pages/funkin/game/cutscenes/Cutscene.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.Cutscene

      Substate made for cutscenes.

      Constructor

      new(callback:() ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/utils/native/Stdout.html b/pages/funkin/game/cutscenes/CutsceneSubtitle.html similarity index 54% rename from pages/funkin/utils/native/Stdout.html rename to pages/funkin/game/cutscenes/CutsceneSubtitle.html index 07e61f0d..1def9a32 100644 --- a/pages/funkin/utils/native/Stdout.html +++ b/pages/funkin/game/cutscenes/CutsceneSubtitle.html @@ -1,10 +1,10 @@ -funkin.utils.native.Stdout

      Constructor

      new(p:Dynamic, out:Bool)

      Methods

      \ No newline at end of file +

      Fields

      time:Float

      subtitle:String

      color:FlxColor

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/DialogueCutscene.html b/pages/funkin/game/cutscenes/DialogueCutscene.html new file mode 100644 index 00000000..ccaac877 --- /dev/null +++ b/pages/funkin/game/cutscenes/DialogueCutscene.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.DialogueCutscene

      Substate made for dialogue cutscenes. To use it in a scripted cutscene, call startDialogue.

      Constructor

      new(dialoguePath:String, callback:() ‑> Void)

      Variables

      @:value([])charMap:Map<String, DialogueCharacter> = []

      @:value(null)curLine:DialogueLine = null

      dialogueCamera:FlxCamera

      @:value([])dialogueLines:Array<DialogueLine> = []

      nextSFX:FlxSound

      Methods

      next():Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/desktop/sprites/TopMenuTree.html b/pages/funkin/game/cutscenes/DialogueLine.html similarity index 58% rename from pages/funkin/desktop/sprites/TopMenuTree.html rename to pages/funkin/game/cutscenes/DialogueLine.html index dc99bbe8..d95a86ec 100644 --- a/pages/funkin/desktop/sprites/TopMenuTree.html +++ b/pages/funkin/game/cutscenes/DialogueLine.html @@ -1,10 +1,10 @@ -funkin.desktop.sprites.TopMenuTree

      Fields

      \ No newline at end of file +

      Fields

      text:String

      speed:Float

      char:String

      callback:String

      bubble:String

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/ScriptedCutscene.html b/pages/funkin/game/cutscenes/ScriptedCutscene.html new file mode 100644 index 00000000..89dcf148 --- /dev/null +++ b/pages/funkin/game/cutscenes/ScriptedCutscene.html @@ -0,0 +1,12 @@ + + + +funkin.game.cutscenes.ScriptedCutscene

      Substate made for scripted cutscenes. +To add cutscenes to your songs, add a cutscene.hx file in your song's directory (ex: songs/song/cutscene.hx)

      Constructor

      new(scriptPath:String, callback:() ‑> Void)

      Variables

      read onlyisDialoguePlaying:Bool

      read onlyisVideoPlaying:Bool

      Methods

      startDialogue(path:String, ?callback:() ‑> Void):Void

      startVideo(path:String, ?callback:() ‑> Void):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/VideoCutscene.html b/pages/funkin/game/cutscenes/VideoCutscene.html new file mode 100644 index 00000000..9ca06b7c --- /dev/null +++ b/pages/funkin/game/cutscenes/VideoCutscene.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.VideoCutscene

      Substate made for video cutscenes. To use it in a scripted cutscene, call startVideo.

      Static methods

      staticsplitTime(str:String):Float

      Constructor

      new(path:String, callback:() ‑> Void)

      Variables

      @:value(true)skippable:Bool = true

      @:value([])subtitles:Array<CutsceneSubtitle> = []

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by Cutscene

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/dialogue/CharPosDef.html b/pages/funkin/game/cutscenes/dialogue/CharPosDef.html new file mode 100644 index 00000000..18f4e3cd --- /dev/null +++ b/pages/funkin/game/cutscenes/dialogue/CharPosDef.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.dialogue.CharPosDef

      Fields

      y:Float

      x:Float

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/dialogue/DialogueBox.html b/pages/funkin/game/cutscenes/dialogue/DialogueBox.html new file mode 100644 index 00000000..54d60ed3 --- /dev/null +++ b/pages/funkin/game/cutscenes/dialogue/DialogueBox.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.dialogue.DialogueBox

      Constructor

      new(name:String)

      Variables

      @:value(Paths.sound("dialogue/next"))nextSFX:String = Paths.sound("dialogue/next")

      @:value([])positions:Map<String, CharPosDef> = []

      text:FlxTypeText

      @:value(Paths.sound("dialogue/text"))textTypeSFX:String = Paths.sound("dialogue/text")

      Methods

      @:value({ speed : 0.05 })playBubbleAnim(bubble:String, text:String, speed:Float = 0.05):Void

      @:value({ speed : 0.02 })setText(text:String, speed:Float = 0.02):Void

      Inherited Variables

      Defined by FunkinSprite

      @:value([])animDatas:Map<String, AnimData> = []

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(false)debugMode:Bool = false

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinegetNameList():Array<String>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      onPropertySet(property:String, value:Dynamic):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      inlineremoveAnimation(name:String):Void

      stepHit(curBeat:Int):Void

      inlinestopAnimation():Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/dialogue/DialogueCharTweenContext.html b/pages/funkin/game/cutscenes/dialogue/DialogueCharTweenContext.html new file mode 100644 index 00000000..5fa196a5 --- /dev/null +++ b/pages/funkin/game/cutscenes/dialogue/DialogueCharTweenContext.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.dialogue.DialogueCharTweenContext

      Variables

      @:value(cast -1)@:impl@:enuminlineread onlyNONE:DialogueCharTweenContext = -1

      @:value(cast 0)@:impl@:enuminlineread onlyPOPIN:DialogueCharTweenContext = 0

      @:value(cast 1)@:impl@:enuminlineread onlyPOPOUT:DialogueCharTweenContext = 1

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/dialogue/DialogueCharacter.html b/pages/funkin/game/cutscenes/dialogue/DialogueCharacter.html new file mode 100644 index 00000000..a09e7ed4 --- /dev/null +++ b/pages/funkin/game/cutscenes/dialogue/DialogueCharacter.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.dialogue.DialogueCharacter

      Constructor

      new(name:String, position:String)

      Variables

      Methods

      hide():Void

      show(x:Float, y:Float):Void

      Inherited Variables

      Defined by FunkinSprite

      @:value([])animDatas:Map<String, AnimData> = []

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(false)debugMode:Bool = false

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Inherited Methods

      Defined by FunkinSprite

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinegetNameList():Array<String>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      onPropertySet(property:String, value:Dynamic):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      inlineremoveAnimation(name:String):Void

      stepHit(curBeat:Int):Void

      inlinestopAnimation():Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/dialogue/index.html b/pages/funkin/game/cutscenes/dialogue/index.html new file mode 100644 index 00000000..6c9012d1 --- /dev/null +++ b/pages/funkin/game/cutscenes/dialogue/index.html @@ -0,0 +1,10 @@ + + + +funkin.game.cutscenes.dialogue
      \ No newline at end of file diff --git a/pages/funkin/game/cutscenes/index.html b/pages/funkin/game/cutscenes/index.html new file mode 100644 index 00000000..5786f44c --- /dev/null +++ b/pages/funkin/game/cutscenes/index.html @@ -0,0 +1,11 @@ + + + +funkin.game.cutscenes

      funkin.game.cutscenes

      ..
      dialogue
      Cutscene

      Substate made for cutscenes.

      CutsceneSubtitle

      DialogueCutscene

      Substate made for dialogue cutscenes. To use it in a scripted cutscene, call startDialogue.

      DialogueLine

      ScriptedCutscene

      Substate made for scripted cutscenes. +To add cutscenes to your songs, add a cutscene.hx file in your song's directory (ex: songs/song/cutscene.hx)

      VideoCutscene

      Substate made for video cutscenes. To use it in a scripted cutscene, call startVideo.

      \ No newline at end of file diff --git a/pages/funkin/game/index.html b/pages/funkin/game/index.html index f934082f..842be7fd 100644 --- a/pages/funkin/game/index.html +++ b/pages/funkin/game/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/github/GitHub.html b/pages/funkin/github/GitHub.html deleted file mode 100644 index c54b8344..00000000 --- a/pages/funkin/github/GitHub.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHub

      Static methods

      static__requestBytesOnGitHubServers(url:String):Bytes

      static__requestOnGitHubServers(url:String):String

      @:value({ keepDrafts : false, keepPrereleases : true })staticinlinefilterReleases(releases:Array<GitHubRelease>, keepPrereleases:Bool = true, keepDrafts:Bool = false):Array<GitHubRelease>

      Filters all releases gotten by getReleases

      Parameters:

      releases

      Releases

      keepPrereleases

      Whenever to keep Pre-Releases.

      keepDrafts

      Whenever to keep Drafts.

      Returns:

      Filtered releases.

      staticgetContributors(user:String, repository:String, ?onError:Exception ‑> Void):Array<GitHubContributor>

      staticgetReleases(user:String, repository:String, ?onError:Exception ‑> Void):Array<GitHubRelease>

      Gets all the releases from a specific GitHub repository using the GitHub API.

      Parameters:

      user
      repository

      Returns:

      Releases

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubAsset.html b/pages/funkin/github/GitHubAsset.html deleted file mode 100644 index ac033cb6..00000000 --- a/pages/funkin/github/GitHubAsset.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubAsset

      Fields

      url:String

      updated_at:String

      state:String

      size:UInt

      node_id:String

      name:String

      label:String

      id:Int

      created_at:String

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubContributor.html b/pages/funkin/github/GitHubContributor.html deleted file mode 100644 index 68cd1906..00000000 --- a/pages/funkin/github/GitHubContributor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubContributor

      Fields

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubReactions.html b/pages/funkin/github/GitHubReactions.html deleted file mode 100644 index 0874e227..00000000 --- a/pages/funkin/github/GitHubReactions.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubReactions

      Fields

      url:String

      rocket:Int

      laugh:Int

      hooray:Int

      heart:Int

      eyes:Int

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubRelease.html b/pages/funkin/github/GitHubRelease.html deleted file mode 100644 index 63dfa76d..00000000 --- a/pages/funkin/github/GitHubRelease.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubRelease

      Fields

      url:String

      Url of the release (GitHub API)

      upload_url:String

      Template URL for asset download link.

      tag_name:String

      node_id:String

      name:String

      id:Int

      ID of the release.

      html_url:String

      Link to the release on the GitHub website.

      draft:Bool

      created_at:String

      body:String

      Body of the GitHub request (Markdown)

      author:GitHubUser

      Author of the release

      assets_url:String

      Url for the assets JSON. Also accessible via GitHubRelease.assets

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubUser.html b/pages/funkin/github/GitHubUser.html deleted file mode 100644 index c2c39a0f..00000000 --- a/pages/funkin/github/GitHubUser.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubUser

      Fields

      url:String

      URL to the user on GitHub's servers.

      updated_at:String

      Date of last account update.

      type:GitHubUserType

      Type of the user.

      twitter_username:String

      Twitter username of the user. Can be null.

      starred_url:String

      URL on GitHub's API to access this user's starred repositories.

      site_admin:Bool

      Whenever the user is a GitHub administrator.

      public_repos:Int

      Number of public repos this user own.

      public_gists:Int

      Number of public gists this user own.

      node_id:String

      ID of the current node on the GitHub database.

      name:String

      Name of the user.

      login:String

      Username of the user.

      location:String

      id:Int

      ID of the user.

      html_url:String

      URL to the user on GitHub's website.

      hireable:Null<Bool>

      gravatar_id:String

      Unknown

      gists_url:String

      URL on GitHub's API to access this user's gists.

      following_url:String

      URL on GitHub's API to access the accounts this user is following.

      following:Int

      Number of accounts this user follows.

      followers_url:String

      URL on GitHub's API to access this user's followers.

      followers:Int

      Number of followers this user have

      email:String

      created_at:String

      Date of creation of the account

      company:String

      The company this user belongs to. Can be null.

      blog:String

      bio:String

      avatar_url:String

      Link to the avatar (profile picture).

      \ No newline at end of file diff --git a/pages/funkin/github/GitHubUserType.html b/pages/funkin/github/GitHubUserType.html deleted file mode 100644 index 078fe8c6..00000000 --- a/pages/funkin/github/GitHubUserType.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github.GitHubUserType

      Variables

      @:value(cast "Organization")@:impl@:enuminlineread onlyORGANIZATION:GitHubUserType = "Organization"

      @:value(cast "User")@:impl@:enuminlineread onlyUSER:GitHubUserType = "User"

      \ No newline at end of file diff --git a/pages/funkin/github/index.html b/pages/funkin/github/index.html deleted file mode 100644 index 8b987d97..00000000 --- a/pages/funkin/github/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.github
      \ No newline at end of file diff --git a/pages/funkin/index.html b/pages/funkin/index.html index 19673371..31da0e14 100644 --- a/pages/funkin/index.html +++ b/pages/funkin/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/interfaces/IBeatReceiver.html b/pages/funkin/interfaces/IBeatReceiver.html deleted file mode 100644 index 0c3f3076..00000000 --- a/pages/funkin/interfaces/IBeatReceiver.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.interfaces.IBeatReceiver

      Methods

      beatHit(curBeat:Int):Void

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/interfaces/index.html b/pages/funkin/interfaces/index.html deleted file mode 100644 index a764b11b..00000000 --- a/pages/funkin/interfaces/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.interfaces
      \ No newline at end of file diff --git a/pages/funkin/macros/BuildCounterMacro.html b/pages/funkin/macros/BuildCounterMacro.html deleted file mode 100644 index bdee2e92..00000000 --- a/pages/funkin/macros/BuildCounterMacro.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.macros.BuildCounterMacro

      Macro that loads the current build number from buildnumber.txt, then make it available as an integer.

      -

      buildnumber.txt is automatically incremented when the engine is launched with lime test windows.

      \ No newline at end of file diff --git a/pages/funkin/macros/DefinesMacro.html b/pages/funkin/macros/DefinesMacro.html deleted file mode 100644 index f6879d6f..00000000 --- a/pages/funkin/macros/DefinesMacro.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.macros.DefinesMacro

      Static variables

      staticread onlydefines:Map<String, Dynamic>

      Returns the defined values

      \ No newline at end of file diff --git a/pages/funkin/macros/GitCommitMacro.html b/pages/funkin/macros/GitCommitMacro.html deleted file mode 100644 index 4b57a145..00000000 --- a/pages/funkin/macros/GitCommitMacro.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.macros.GitCommitMacro

      Static variables

      staticread onlycommitHash:String

      Returns the current commit hash

      staticread onlycommitNumber:Int

      Returns the current commit number

      \ No newline at end of file diff --git a/pages/funkin/macros/index.html b/pages/funkin/macros/index.html deleted file mode 100644 index b1466795..00000000 --- a/pages/funkin/macros/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.macros
      \ No newline at end of file diff --git a/pages/funkin/menus/BetaWarningState.html b/pages/funkin/menus/BetaWarningState.html index 53680334..62bf8d9c 100644 --- a/pages/funkin/menus/BetaWarningState.html +++ b/pages/funkin/menus/BetaWarningState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/FreeplaySong.html b/pages/funkin/menus/FreeplaySong.html deleted file mode 100644 index 637a134b..00000000 --- a/pages/funkin/menus/FreeplaySong.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.menus.FreeplaySong

      Fields

      @:optionaloptionalopponentModeAllowed:Null<Bool>

      name:String

      @:optionaloptionalicon:Null<String>

      @:optionaloptionaldifficulties:Null<Array<String>>

      @:optionaloptionalcoopAllowed:Null<Bool>

      @:optionaloptionalcolor:Null<Dynamic>

      \ No newline at end of file diff --git a/pages/funkin/menus/FreeplaySonglist.html b/pages/funkin/menus/FreeplaySonglist.html index a12e6707..32b01f39 100644 --- a/pages/funkin/menus/FreeplaySonglist.html +++ b/pages/funkin/menus/FreeplaySonglist.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static methods

      @:value({ useTxt : true })staticget(useTxt:Bool = true):FreeplaySonglist

      Constructor

      new()

      Variables

      @:value([])songs:Array<ChartMetaData> = []

      Methods

      @:value({ useTxt : true })getSongsFromSource(source:AssetSource, useTxt:Bool = true):Bool

      \ No newline at end of file +

      Static methods

      @:value({ useTxt : true })staticget(useTxt:Bool = true):FreeplaySonglist

      Constructor

      new()

      Variables

      @:value([])songs:Array<ChartMetaData> = []

      Methods

      @:value({ useTxt : true })getSongsFromSource(source:AssetSource, useTxt:Bool = true):Bool

      \ No newline at end of file diff --git a/pages/funkin/menus/FreeplayState.html b/pages/funkin/menus/FreeplayState.html index e8c52f74..02d28407 100644 --- a/pages/funkin/menus/FreeplayState.html +++ b/pages/funkin/menus/FreeplayState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value(1)staticinlineread onlytimeUntilAutoplay:Float = 1

      How much time a song stays selected until it autoplays.

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(0)autoplayElapsed:Float = 0

      Time elapsed since last autoplay. If this time exceeds timeUntilAutoplay, the currently selected song will play.

      bg:FlxSprite

      Background.

      @:value(true)canSelect:Bool = true

      Whenever the player can navigate and select

      @:value(["[TAB] Solo", "[TAB] Opponent Mode", "[TAB] Co-Op Mode", "[TAB] Co-Op Mode (Switched)"])coopLabels:Array<String> = ["[TAB] Solo", "[TAB] Opponent Mode", "[TAB] Co-Op Mode", "[TAB] Co-Op Mode (Switched)"]

      Array containing all labels for Co-Op / Opponent modes.

      coopText:FlxText

      Text containing the current coop/opponent mode ([TAB] Co-Op mode)

      @:value(0)curCoopMode:Int = 0

      Currently selected coop/opponent mode

      @:value(1)curDifficulty:Int = 1

      Currently selected difficulty

      @:value(false)curPlaying:Bool = false

      Whenever the currently selected song is playing.

      @:value(null)curPlayingInst:String = null

      Path to the currently playing song instrumental.

      @:value(0)curSelected:Int = 0

      Currently selected song

      diffText:FlxText

      Text containing the current difficulty (< HARD >)

      grpSongs:FlxTypedGroup<Alphabet>

      Group containing all of the alphabets

      @:value([])iconArray:Array<HealthIcon> = []

      Array containing all of the icons.

      @:value(0)intendedScore:Int = 0

      Destination for the currently lerped score.

      interpColor:FlxInterpolateColor

      FlxInterpolateColor object for smooth transition between Freeplay colors.

      @:value(0)lerpScore:Int = 0

      Currently lerped score. Is updated to go towards intendedScore.

      scoreBG:FlxSprite

      Black background around the score, the difficulty text and the co-op text.

      scoreText:FlxText

      Text containing the score info (PERSONAL BEST: 0)

      @:value(true)songInstPlaying:Bool = true

      Whenever the currently selected song instrumental is playing.

      songList:FreeplaySonglist

      Assigned FreeplaySonglist item.

      @:value([])songs:Array<ChartMetaData> = []

      Array containing all of the songs metadatas

      Methods

      @:value({ force : false, change : 0 })changeCoopMode(change:Int = 0, force:Bool = false):Void

      Change the current coop mode context.

      Parameters:

      change

      How much to change

      force

      Force the change, even if change is equal to 0.

      @:value({ force : false, change : 0 })changeDiff(change:Int = 0, force:Bool = false):Void

      Changes the current difficulty

      Parameters:

      change

      How much to change.

      force

      Force the change if change is equal to 0

      @:value({ force : false, change : 0 })changeSelection(change:Int = 0, force:Bool = false):Void

      Change the current selection.

      Parameters:

      change

      How much to change

      force

      Force the change, even if change is equal to 0.

      select():Void

      Selects the current song.

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(0)autoplayElapsed:Float = 0

      Time elapsed since last autoplay. If this time exceeds timeUntilAutoplay, the currently selected song will play.

      bg:FlxSprite

      Background.

      @:value(true)canSelect:Bool = true

      Whenever the player can navigate and select

      @:value(["[TAB] Solo", "[TAB] Opponent Mode", "[TAB] Co-Op Mode", "[TAB] Co-Op Mode (Switched)"])coopLabels:Array<String> = ["[TAB] Solo", "[TAB] Opponent Mode", "[TAB] Co-Op Mode", "[TAB] Co-Op Mode (Switched)"]

      Array containing all labels for Co-Op / Opponent modes.

      coopText:FlxText

      Text containing the current coop/opponent mode ([TAB] Co-Op mode)

      @:value(0)curCoopMode:Int = 0

      Currently selected coop/opponent mode

      @:value(1)curDifficulty:Int = 1

      Currently selected difficulty

      @:value(false)curPlaying:Bool = false

      Whenever the currently selected song is playing.

      @:value(null)curPlayingInst:String = null

      Path to the currently playing song instrumental.

      @:value(0)curSelected:Int = 0

      Currently selected song

      diffText:FlxText

      Text containing the current difficulty (< HARD >)

      @:value(false)disableAsyncLoading:Bool = false

      Whenever the autoplayed song gets async loaded.

      @:value(false)disableAutoPlay:Bool = false

      Whenever the song autoplays when hovered over.

      grpSongs:FlxTypedGroup<Alphabet>

      Group containing all of the alphabets

      @:value([])iconArray:Array<HealthIcon> = []

      Array containing all of the icons.

      @:value(0)intendedScore:Int = 0

      Destination for the currently lerped score.

      interpColor:FlxInterpolateColor

      FlxInterpolateColor object for smooth transition between Freeplay colors.

      @:value(0)lerpScore:Int = 0

      Currently lerped score. Is updated to go towards intendedScore.

      scoreBG:FlxSprite

      Black background around the score, the difficulty text and the co-op text.

      scoreText:FlxText

      Text containing the score info (PERSONAL BEST: 0)

      @:value(true)songInstPlaying:Bool = true

      Whenever the currently selected song instrumental is playing.

      songList:FreeplaySonglist

      Assigned FreeplaySonglist item.

      @:value([])songs:Array<ChartMetaData> = []

      Array containing all of the songs metadatas

      @:value(1)timeUntilAutoplay:Float = 1

      How much time a song stays selected until it autoplays.

      Methods

      @:value({ force : false, change : 0 })changeCoopMode(change:Int = 0, force:Bool = false):Void

      Change the current coop mode context.

      Parameters:

      change

      How much to change

      force

      Force the change, even if change is equal to 0.

      @:value({ force : false, change : 0 })changeDiff(change:Int = 0, force:Bool = false):Void

      Changes the current difficulty

      Parameters:

      change

      How much to change.

      force

      Force the change if change is equal to 0

      @:value({ force : false, change : 0 })changeSelection(change:Int = 0, force:Bool = false):Void

      Change the current selection.

      Parameters:

      change

      How much to change

      force

      Force the change, even if change is equal to 0.

      select():Void

      Selects the current song.

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/GitarooPause.html b/pages/funkin/menus/GitarooPause.html index 72649b59..0e7eb4b8 100644 --- a/pages/funkin/menus/GitarooPause.html +++ b/pages/funkin/menus/GitarooPause.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/MainMenuState.html b/pages/funkin/menus/MainMenuState.html index b9e8465c..50d87f18 100644 --- a/pages/funkin/menus/MainMenuState.html +++ b/pages/funkin/menus/MainMenuState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(true)canAccessDebugMenus:Bool = true

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(true)canAccessDebugMenus:Bool = true

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/ModSwitchMenu.html b/pages/funkin/menus/ModSwitchMenu.html index 904915ae..d54b09fa 100644 --- a/pages/funkin/menus/ModSwitchMenu.html +++ b/pages/funkin/menus/ModSwitchMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      @:value({ force : false })changeSelection(change:Int, force:Bool = false):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Methods

      @:value({ force : false })changeSelection(change:Int, force:Bool = false):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/PauseSubState.html b/pages/funkin/menus/PauseSubState.html index 9641a43b..819cd27e 100644 --- a/pages/funkin/menus/PauseSubState.html +++ b/pages/funkin/menus/PauseSubState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value("")staticscript:String = ""

      Constructor

      @:value({ y : 0, x : 0 })new(x:Float = 0, y:Float = 0)

      Variables

      @:value(PlayState.instance)game:PlayState = PlayState.instance

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      @:value("")staticscript:String = ""

      Constructor

      @:value({ y : 0, x : 0 })new(x:Float = 0, y:Float = 0)

      Variables

      @:value(PlayState.instance)game:PlayState = PlayState.instance

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/SongMetadata.html b/pages/funkin/menus/SongMetadata.html deleted file mode 100644 index 34d1a58c..00000000 --- a/pages/funkin/menus/SongMetadata.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.menus.SongMetadata

      Constructor

      @:value({ fromSource : false })new(song:String, songCharacter:String, color:FlxColor, ?difficulties:Array<String>, fromSource:Bool = false)

      Variables

      @:value(FreeplayState.defaultColor)color:FlxColor = FreeplayState.defaultColor

      @:value(false)coopAllowed:Bool = false

      @:value(["EASY", "NORMAL", "HARD"])difficulties:Array<String> = ["EASY", "NORMAL", "HARD"]

      @:value(false)opponentModeAllowed:Bool = false

      @:value("")songCharacter:String = ""

      @:value("")songName:String = ""

      \ No newline at end of file diff --git a/pages/funkin/menus/StoryMenuState.html b/pages/funkin/menus/StoryMenuState.html index 8b69026e..9360d6cf 100644 --- a/pages/funkin/menus/StoryMenuState.html +++ b/pages/funkin/menus/StoryMenuState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      blackBar:FlxSprite

      @:value(true)canSelect:Bool = true

      @:value([])charFrames:Map<String, FlxFramesCollection> = []

      @:value([])characters:Map<String, MenuCharacter> = []

      @:value(0)curDifficulty:Int = 0

      @:value(0)curWeek:Int = 0

      @:value([])difficultySprites:Map<String, FlxSprite> = []

      @:value(0)intendedScore:Int = 0

      leftArrow:FlxSprite

      @:value(0)lerpScore:Float = 0

      rightArrow:FlxSprite

      scoreText:FlxText

      tracklist:FlxText

      weekBG:FlxSprite

      weekSprites:FlxTypedGroup<MenuItem>

      weekTitle:FlxText

      @:value([])weeks:Array<WeekData> = []

      Methods

      addCharacter(charName:String):Void

      @:value({ force : false })changeDifficulty(change:Int, force:Bool = false):Void

      @:value({ force : false })changeWeek(change:Int, force:Bool = false):Void

      getWeeksFromSource(weeks:Array<String>, source:AssetSource):Bool

      goBack():Void

      loadXMLs():Void

      selectWeek():Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      blackBar:FlxSprite

      @:value(true)canSelect:Bool = true

      @:value([])charFrames:Map<String, FlxFramesCollection> = []

      @:value([])characters:Map<String, MenuCharacter> = []

      @:value(0)curDifficulty:Int = 0

      @:value(0)curWeek:Int = 0

      @:value([])difficultySprites:Map<String, FlxSprite> = []

      @:value(0)intendedScore:Int = 0

      leftArrow:FlxSprite

      @:value(0)lerpScore:Float = 0

      rightArrow:FlxSprite

      scoreText:FlxText

      tracklist:FlxText

      weekBG:FlxSprite

      weekSprites:FlxTypedGroup<MenuItem>

      weekTitle:FlxText

      @:value([])weeks:Array<WeekData> = []

      Methods

      addCharacter(charName:String):Void

      @:value({ force : false })changeDifficulty(change:Int, force:Bool = false):Void

      @:value({ force : false })changeWeek(change:Int, force:Bool = false):Void

      getWeeksFromSource(weeks:Array<String>, source:AssetSource):Bool

      goBack():Void

      loadXMLs():Void

      selectWeek():Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/TitleState.html b/pages/funkin/menus/TitleState.html index a5fb63fc..6d3ff5a4 100644 --- a/pages/funkin/menus/TitleState.html +++ b/pages/funkin/menus/TitleState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      blackScreen:FlxSprite

      @:value([])curWacky:Array<String> = []

      ngSpr:FlxSprite

      textGroup:FlxGroup

      @:value(16)titleLength:Int = 16

      @:value([1 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er"]), 3 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er", "present"]), 4 => new IntroText(), 5 => new IntroText(["In association", "with"]), 7 => new IntroText(["In association", "with", "newgrounds", { name : "newgroundsLogo", path : "menus/titlescreen/newgrounds_logo", scale : 0.8 }]), 8 => new IntroText(), 9 => new IntroText(["{introText1}"]), 11 => new IntroText(["{introText1}", "{introText2}"]), 12 => new IntroText(), 13 => new IntroText(["Friday"]), 14 => new IntroText(["Friday", "Night"]), 15 => new IntroText(["Friday", "Night", "Funkin'"])])titleLines:Map<Int, IntroText> = [1 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er"]), 3 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er", "present"]), 4 => new IntroText(), 5 => new IntroText(["In association", "with"]), 7 => new IntroText(["In association", "with", "newgrounds", { name : "newgroundsLogo", path : "menus/titlescreen/newgrounds_logo", scale : 0.8 }]), 8 => new IntroText(), 9 => new IntroText(["{introText1}"]), 11 => new IntroText(["{introText1}", "{introText2}"]), 12 => new IntroText(), 13 => new IntroText(["Friday"]), 14 => new IntroText(["Friday", "Night"]), 15 => new IntroText(["Friday", "Night", "Funkin'"])]

      wackyImage:FlxSprite

      xml:Access

      Methods

      addMoreText(text:String):Void

      createCoolText(textArray:Array<String>):Void

      getIntroTextShit():Array<Array<String>>

      loadXML():Void

      pressEnter():Void

      skipIntro():Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      blackScreen:FlxSprite

      @:value([])curWacky:Array<String> = []

      ngSpr:FlxSprite

      textGroup:FlxGroup

      @:value(16)titleLength:Int = 16

      @:value([1 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er"]), 3 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er", "present"]), 4 => new IntroText(), 5 => new IntroText(["In association", "with"]), 7 => new IntroText(["In association", "with", "newgrounds", { name : "newgroundsLogo", path : "menus/titlescreen/newgrounds_logo", scale : 0.8 }]), 8 => new IntroText(), 9 => new IntroText(["{introText1}"]), 11 => new IntroText(["{introText1}", "{introText2}"]), 12 => new IntroText(), 13 => new IntroText(["Friday"]), 14 => new IntroText(["Friday", "Night"]), 15 => new IntroText(["Friday", "Night", "Funkin'"])])titleLines:Map<Int, IntroText> = [1 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er"]), 3 => new IntroText(["ninjamuffin99", "phantomArcade", "kawaisprite", "evilsk8er", "present"]), 4 => new IntroText(), 5 => new IntroText(["In association", "with"]), 7 => new IntroText(["In association", "with", "newgrounds", { name : "newgroundsLogo", path : "menus/titlescreen/newgrounds_logo", scale : 0.8 }]), 8 => new IntroText(), 9 => new IntroText(["{introText1}"]), 11 => new IntroText(["{introText1}", "{introText2}"]), 12 => new IntroText(), 13 => new IntroText(["Friday"]), 14 => new IntroText(["Friday", "Night"]), 15 => new IntroText(["Friday", "Night", "Funkin'"])]

      wackyImage:FlxSprite

      xml:Access

      Methods

      addMoreText(text:String):Void

      createCoolText(textArray:Array<String>):Void

      getIntroTextShit():Array<Array<String>>

      loadXML():Void

      pressEnter():Void

      skipIntro():Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/credits/CreditsCodename.html b/pages/funkin/menus/credits/CreditsCodename.html index 7ef21790..fe3b49c9 100644 --- a/pages/funkin/menus/credits/CreditsCodename.html +++ b/pages/funkin/menus/credits/CreditsCodename.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      @:value(0)avatarLoadListId:Int = 0

      @:value([])contributorsAvatars:Array<FlxGraphic> = []

      @:value([])contributorsSprites:Array<FlxSprite> = []

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/menus/credits/CreditsMain.html b/pages/funkin/menus/credits/CreditsMain.html index 64d8ab3a..99416fec 100644 --- a/pages/funkin/menus/credits/CreditsMain.html +++ b/pages/funkin/menus/credits/CreditsMain.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by OptionsScreen

      bg:FlxSprite

      @:value(-1)curSelected:Int = -1

      descBG:FlxSprite

      descDrop:FlxBackdrop

      @:value(35)descSpeed:Float = 35

      @:value([])options:Array<OptionType> = []

      @:value(FlxPoint.get(0, 0))scrollDest:FlxPoint = FlxPoint.get(0, 0)

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(change:Int):Void

      exit():Void

      updateDesc():Void

      updateDescText(text:String):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new()

      Methods

      parseCreditsFromXML(xml:Access, source:Bool):Array<OptionType>

      XML STUFF

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      exit():Void

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/menus/index.html b/pages/funkin/menus/index.html index 35bcea1f..0e0c8855 100644 --- a/pages/funkin/menus/index.html +++ b/pages/funkin/menus/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/menus/ui/AlphaCharacter.html b/pages/funkin/menus/ui/AlphaCharacter.html new file mode 100644 index 00000000..a9b29c6f --- /dev/null +++ b/pages/funkin/menus/ui/AlphaCharacter.html @@ -0,0 +1,10 @@ + + + +funkin.menus.ui.AlphaCharacter

      Static variables

      staticboldAlphabetPath:String

      @:value([])staticboldAnims:Map<String, String> = []

      staticletterAlphabetPath:String

      @:value([])staticletterAnims:Map<String, String> = []

      Constructor

      new(x:Float, y:Float)

      Variables

      @:value(0)row:Int = 0

      Methods

      createBold(letter:String):Void

      createLetter(letter:String):Void

      setColor(c:FlxColor, isBold:Bool):Void

      \ No newline at end of file diff --git a/pages/funkin/menus/ui/Alphabet.html b/pages/funkin/menus/ui/Alphabet.html new file mode 100644 index 00000000..ab9e718d --- /dev/null +++ b/pages/funkin/menus/ui/Alphabet.html @@ -0,0 +1,10 @@ + + + +funkin.menus.ui.Alphabet

      Loosely based on FlxTypeText lolol

      Constructor

      @:value({ typed : false, bold : false, text : "" })new(x:Float, y:Float, text:String = "", bold:Bool = false, typed:Bool = false)

      Variables

      @:value(0.05)delay:Float = 0.05

      @:value(false)isMenuItem:Bool = false

      @:value(false)paused:Bool = false

      @:value("gf")personTalking:String = "gf"

      @:value(0)targetY:Float = 0

      @:value("")text:String = ""

      @:value(FlxG.width)widthOfWords:Float = FlxG.width

      Methods

      addText():Void

      refreshAlphabetXML(path:String):Void

      \ No newline at end of file diff --git a/pages/funkin/desktop/theme/index.html b/pages/funkin/menus/ui/index.html similarity index 60% rename from pages/funkin/desktop/theme/index.html rename to pages/funkin/menus/ui/index.html index f3c859c8..069064be 100644 --- a/pages/funkin/desktop/theme/index.html +++ b/pages/funkin/menus/ui/index.html @@ -1,10 +1,10 @@ -funkin.desktop.theme

      funkin.desktop.theme

      ..
      Theme

      ThemeData

      \ No newline at end of file +

      funkin.menus.ui

      ..
      AlphaCharacter

      Alphabet

      Loosely based on FlxTypeText lolol

      \ No newline at end of file diff --git a/pages/funkin/mods/LimeLibrarySymbol.html b/pages/funkin/mods/LimeLibrarySymbol.html deleted file mode 100644 index 6faaf4d4..00000000 --- a/pages/funkin/mods/LimeLibrarySymbol.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods.LimeLibrarySymbol

      COPIED DIRECTLY FROM LIME SOURCE CAUSE LIME IS SO FUCKING DUMB!!

      Constructor

      inlinenew(id:String)

      Variables

      library:AssetLibrary

      symbolName:String

      Methods

      inlineexists(?type:String):Bool

      inlineisLocal(?type:String):Bool

      \ No newline at end of file diff --git a/pages/funkin/mods/ModsAssetLibrary.html b/pages/funkin/mods/ModsAssetLibrary.html deleted file mode 100644 index 89f41302..00000000 --- a/pages/funkin/mods/ModsAssetLibrary.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods.ModsAssetLibrary

      Variables

      libName:String

      prefix:String

      Methods

      getFiles(folder:String):Array<String>

      getFolders(folder:String):Array<String>

      \ No newline at end of file diff --git a/pages/funkin/mods/ModsFolder.html b/pages/funkin/mods/ModsFolder.html deleted file mode 100644 index 29fd1409..00000000 --- a/pages/funkin/mods/ModsFolder.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods.ModsFolder

      Static variables

      @:value("./addons/")staticaddonsPath:String = "./addons/"

      Path to the addons folder.

      @:value(null)staticcurrentModFolder:String = null

      Current mod folder. Will affect Paths.

      @:value("./mods/")staticmodsPath:String = "./mods/"

      Path to the mods folder.

      Static methods

      staticinit():Void

      Initialises mods folder by adding callbacks and such.

      @:value({ force : false })staticloadLibraryFromFolder(libName:String, folder:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticloadLibraryFromZip(libName:String, zipPath:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticloadModLib(path:String, force:Bool = false):AssetLibrary

      Loads a mod library from the specified path. Supports folders and zips.

      Parameters:

      modName

      Name of the mod

      force

      Whenever the mod should be reloaded if it has already been loaded

      @:value({ force : false })staticprepareLibrary(libName:String, force:Bool = false):AssetLibrary

      @:value({ force : false })staticprepareModLibrary(libName:String, lib:ModsAssetLibrary, force:Bool = false):AssetLibrary

      staticreloadMods():Void

      staticswitchMod(mod:String):Void

      Switches mod - unloads all the other mods, then load this one.

      Parameters:

      null

      libName

      \ No newline at end of file diff --git a/pages/funkin/mods/ModsFolderLibrary.html b/pages/funkin/mods/ModsFolderLibrary.html deleted file mode 100644 index f28f969e..00000000 --- a/pages/funkin/mods/ModsFolderLibrary.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods.ModsFolderLibrary

      Constructor

      new(folderPath:String, libName:String)

      Variables

      @:value(null)_parsedAsset:String = null

      folderPath:String

      libName:String

      @:value("assets/")prefix:String = "assets/"

      @:value(true)useImageCache:Bool = true

      Methods

      @:value({ folders : false })__getFiles(folder:String, folders:Bool = false):Array<String>

      getEditedTime(asset:String):Null<Float>

      inlinegetFiles(folder:String):Array<String>

      inlinegetFolders(folder:String):Array<String>

      \ No newline at end of file diff --git a/pages/funkin/mods/ZipFolderLibrary.html b/pages/funkin/mods/ZipFolderLibrary.html deleted file mode 100644 index 6995d0db..00000000 --- a/pages/funkin/mods/ZipFolderLibrary.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods.ZipFolderLibrary

      Static methods

      staticunzip(f:Entry):Null<Bytes>

      Constructor

      new(zipPath:String, libName:String)

      Variables

      @:value([])assets:Map<String, Entry> = []

      libName:String

      @:value("assets/")prefix:String = "assets/"

      @:value(false)useImageCache:Bool = false

      zip:Reader

      zipPath:String

      Methods

      @:value({ isLocal : false })__isCacheValid(cache:Map<String, Dynamic>, asset:String, isLocal:Bool = false):Bool

      __parseAsset(asset:String):Bool

      getFiles(folder:String):Array<String>

      getFolders(folder:String):Array<String>

      \ No newline at end of file diff --git a/pages/funkin/mods/index.html b/pages/funkin/mods/index.html deleted file mode 100644 index ecb5cecb..00000000 --- a/pages/funkin/mods/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.mods

      funkin.mods

      ..
      LimeLibrarySymbol

      COPIED DIRECTLY FROM LIME SOURCE CAUSE LIME IS SO FUCKING DUMB!!

      ModsAssetLibrary

      ModsFolder

      ModsFolderLibrary

      ZipFolderLibrary

      \ No newline at end of file diff --git a/pages/funkin/multitasking/MultiTaskingHandler.html b/pages/funkin/multitasking/MultiTaskingHandler.html deleted file mode 100644 index 1fa89fa2..00000000 --- a/pages/funkin/multitasking/MultiTaskingHandler.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.multitasking.MultiTaskingHandler

      Static variables

      @:value([])staticopenedWindows:Array<StateWindow> = []

      Static methods

      staticcloseWindow(window:StateWindow):Void

      staticdraw():Void

      staticinit():Void

      staticopenWindow(name:String, state:MusicBeatState):Void

      staticupdate():Void

      \ No newline at end of file diff --git a/pages/funkin/multitasking/StateWindow.html b/pages/funkin/multitasking/StateWindow.html deleted file mode 100644 index 9087f919..00000000 --- a/pages/funkin/multitasking/StateWindow.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.multitasking.StateWindow

      Constructor

      new(windowName:String, state:MusicBeatState)

      Variables

      @:value(new BitmapFrontEnd())bmapFrontEnd:BitmapFrontEnd = new BitmapFrontEnd()

      camera:FlxCamera

      cameras:Array<FlxCamera>

      camerasDefault:Array<FlxCamera>

      window:Window

      Methods

      draw():Void

      update(elapsed:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/multitasking/index.html b/pages/funkin/multitasking/index.html deleted file mode 100644 index 3ce5e601..00000000 --- a/pages/funkin/multitasking/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.multitasking
      \ No newline at end of file diff --git a/pages/funkin/options/OptionCategory.html b/pages/funkin/options/OptionCategory.html index cb6e6d3d..3c04ea7b 100644 --- a/pages/funkin/options/OptionCategory.html +++ b/pages/funkin/options/OptionCategory.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Fields

      @:optionaloptionalsubstate:Null<OneOfTwo<MusicBeatSubstate, Class<MusicBeatSubstate>>>

      name:String

      desc:String

      \ No newline at end of file +

      Fields

      @:optionaloptionalsubstate:Null<OneOfTwo<MusicBeatSubstate, Class<MusicBeatSubstate>>>

      name:String

      desc:String

      \ No newline at end of file diff --git a/pages/funkin/options/Options.html b/pages/funkin/options/Options.html index 2ffe7ca0..5881c9df 100644 --- a/pages/funkin/options/Options.html +++ b/pages/funkin/options/Options.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value([ENTER])staticP1_ACCEPT:Array<FlxKey> = [ENTER]

      @:value([BACKSPACE])staticP1_BACK:Array<FlxKey> = [BACKSPACE]

      @:value([S])staticP1_DOWN:Array<FlxKey> = [S]

      @:value([A])staticP1_LEFT:Array<FlxKey> = [A]

      @:value([S])staticP1_NOTE_DOWN:Array<FlxKey> = [S]

      @:value([A])staticP1_NOTE_LEFT:Array<FlxKey> = [A]

      PLAYER 1 CONTROLS

      @:value([D])staticP1_NOTE_RIGHT:Array<FlxKey> = [D]

      @:value([W])staticP1_NOTE_UP:Array<FlxKey> = [W]

      @:value([ENTER])staticP1_PAUSE:Array<FlxKey> = [ENTER]

      @:value([R])staticP1_RESET:Array<FlxKey> = [R]

      @:value([D])staticP1_RIGHT:Array<FlxKey> = [D]

      @:value([TAB])staticP1_SWITCHMOD:Array<FlxKey> = [TAB]

      @:value([W])staticP1_UP:Array<FlxKey> = [W]

      @:value([SPACE])staticP2_ACCEPT:Array<FlxKey> = [SPACE]

      @:value([ESCAPE])staticP2_BACK:Array<FlxKey> = [ESCAPE]

      @:value([DOWN])staticP2_DOWN:Array<FlxKey> = [DOWN]

      @:value([LEFT])staticP2_LEFT:Array<FlxKey> = [LEFT]

      @:value([DOWN])staticP2_NOTE_DOWN:Array<FlxKey> = [DOWN]

      @:value([LEFT])staticP2_NOTE_LEFT:Array<FlxKey> = [LEFT]

      PLAYER 2 CONTROLS (ALT)

      @:value([RIGHT])staticP2_NOTE_RIGHT:Array<FlxKey> = [RIGHT]

      @:value([UP])staticP2_NOTE_UP:Array<FlxKey> = [UP]

      @:value([ESCAPE])staticP2_PAUSE:Array<FlxKey> = [ESCAPE]

      @:value([])staticP2_RESET:Array<FlxKey> = []

      @:value([RIGHT])staticP2_RIGHT:Array<FlxKey> = [RIGHT]

      @:value([])staticP2_SWITCHMOD:Array<FlxKey> = []

      @:value([UP])staticP2_UP:Array<FlxKey> = [UP]

      staticread onlySOLO_ACCEPT:Array<FlxKey>

      staticread onlySOLO_BACK:Array<FlxKey>

      staticread onlySOLO_DOWN:Array<FlxKey>

      staticread onlySOLO_LEFT:Array<FlxKey>

      staticread onlySOLO_NOTE_DOWN:Array<FlxKey>

      staticread onlySOLO_NOTE_LEFT:Array<FlxKey>

      SOLO GETTERS

      staticread onlySOLO_NOTE_RIGHT:Array<FlxKey>

      staticread onlySOLO_NOTE_UP:Array<FlxKey>

      staticread onlySOLO_PAUSE:Array<FlxKey>

      staticread onlySOLO_RESET:Array<FlxKey>

      staticread onlySOLO_RIGHT:Array<FlxKey>

      staticread onlySOLO_SWITCHMOD:Array<FlxKey>

      staticread onlySOLO_UP:Array<FlxKey>

      @:value(true)staticantialiasing:Bool = true

      @:value(true)staticautoPause:Bool = true

      @:value(false)staticbetaUpdates:Bool = false

      @:value(true)staticcamZoomOnBeat:Bool = true

      @:value(false)staticcharterMetronomeEnabled:Bool = false

      @:value(false)staticdownscroll:Bool = false

      @:value(true)staticeditorSFX:Bool = true

      EDITORS SETTINGS

      @:value(true)staticflashingMenu:Bool = true

      @:value(true)staticfpsCounter:Bool = true

      @:value(120)staticframerate:Int = 120

      @:value("normal")staticfreeplayLastDifficulty:String = "normal"

      @:value(null)staticfreeplayLastSong:String = null

      QOL FEATURES

      @:value(true)staticghostTapping:Bool = true

      @:value(true)staticgpuOnlyBitmaps:Bool = true

      @:value(250)statichitWindow:Float = 250

      @:value(null)staticlastLoadedMod:String = null

      @:value(false)staticlowMemoryMode:Bool = false

      @:value(120)staticmaxUndos:Int = 120

      @:value(true)staticnaughtyness:Bool = true

      SETTINGS

      @:value(true)staticresizableEditors:Bool = true

      @:value(true)staticsplashesEnabled:Bool = true

      @:value(1)staticvolume:Float = 1

      @:value(true)staticweek6PixelPerfect:Bool = true

      Static methods

      static__flush():Void

      static__load():Void

      staticapplyKeybinds():Void

      staticapplySettings():Void

      staticload():Void

      staticsave():Void

      \ No newline at end of file +

      Static variables

      @:value([ENTER])staticP1_ACCEPT:Array<FlxKey> = [ENTER]

      @:value([BACKSPACE])staticP1_BACK:Array<FlxKey> = [BACKSPACE]

      @:value([S])staticP1_DOWN:Array<FlxKey> = [S]

      @:value([A])staticP1_LEFT:Array<FlxKey> = [A]

      @:value([S])staticP1_NOTE_DOWN:Array<FlxKey> = [S]

      @:value([A])staticP1_NOTE_LEFT:Array<FlxKey> = [A]

      PLAYER 1 CONTROLS

      @:value([D])staticP1_NOTE_RIGHT:Array<FlxKey> = [D]

      @:value([W])staticP1_NOTE_UP:Array<FlxKey> = [W]

      @:value([ENTER])staticP1_PAUSE:Array<FlxKey> = [ENTER]

      @:value([R])staticP1_RESET:Array<FlxKey> = [R]

      @:value([D])staticP1_RIGHT:Array<FlxKey> = [D]

      @:value([TAB])staticP1_SWITCHMOD:Array<FlxKey> = [TAB]

      @:value([W])staticP1_UP:Array<FlxKey> = [W]

      @:value([SPACE])staticP2_ACCEPT:Array<FlxKey> = [SPACE]

      @:value([ESCAPE])staticP2_BACK:Array<FlxKey> = [ESCAPE]

      @:value([DOWN])staticP2_DOWN:Array<FlxKey> = [DOWN]

      @:value([LEFT])staticP2_LEFT:Array<FlxKey> = [LEFT]

      @:value([DOWN])staticP2_NOTE_DOWN:Array<FlxKey> = [DOWN]

      @:value([LEFT])staticP2_NOTE_LEFT:Array<FlxKey> = [LEFT]

      PLAYER 2 CONTROLS (ALT)

      @:value([RIGHT])staticP2_NOTE_RIGHT:Array<FlxKey> = [RIGHT]

      @:value([UP])staticP2_NOTE_UP:Array<FlxKey> = [UP]

      @:value([ESCAPE])staticP2_PAUSE:Array<FlxKey> = [ESCAPE]

      @:value([])staticP2_RESET:Array<FlxKey> = []

      @:value([RIGHT])staticP2_RIGHT:Array<FlxKey> = [RIGHT]

      @:value([])staticP2_SWITCHMOD:Array<FlxKey> = []

      @:value([UP])staticP2_UP:Array<FlxKey> = [UP]

      staticread onlySOLO_ACCEPT:Array<FlxKey>

      staticread onlySOLO_BACK:Array<FlxKey>

      staticread onlySOLO_DOWN:Array<FlxKey>

      staticread onlySOLO_LEFT:Array<FlxKey>

      staticread onlySOLO_NOTE_DOWN:Array<FlxKey>

      staticread onlySOLO_NOTE_LEFT:Array<FlxKey>

      SOLO GETTERS

      staticread onlySOLO_NOTE_RIGHT:Array<FlxKey>

      staticread onlySOLO_NOTE_UP:Array<FlxKey>

      staticread onlySOLO_PAUSE:Array<FlxKey>

      staticread onlySOLO_RESET:Array<FlxKey>

      staticread onlySOLO_RIGHT:Array<FlxKey>

      staticread onlySOLO_SWITCHMOD:Array<FlxKey>

      staticread onlySOLO_UP:Array<FlxKey>

      @:value(true)staticantialiasing:Bool = true

      @:value(true)staticautoPause:Bool = true

      @:value(false)staticbetaUpdates:Bool = false

      @:value(true)staticcamZoomOnBeat:Bool = true

      @:value(true)staticcharterEnablePlaytestScripts:Bool = true

      @:value(false)staticcharterMetronomeEnabled:Bool = false

      @:value(true)staticcharterShowBeats:Bool = true

      @:value(true)staticcharterShowSections:Bool = true

      @:value([])staticcontributors:Array<GitHubContributor> = []

      @:value(false)staticdownscroll:Bool = false

      @:value(true)staticeditorSFX:Bool = true

      @:value(true)staticflashingMenu:Bool = true

      @:value(true)staticfpsCounter:Bool = true

      @:value(120)staticframerate:Int = 120

      @:value("normal")staticfreeplayLastDifficulty:String = "normal"

      @:value(null)staticfreeplayLastSong:String = null

      QOL FEATURES

      @:value(true)staticghostTapping:Bool = true

      @:value(true)staticgpuOnlyBitmaps:Bool = true

      @:value(250)statichitWindow:Float = 250

      @:value(true)staticintensiveBlur:Bool = true

      EDITORS SETTINGS

      @:value(null)staticlastLoadedMod:String = null

      staticlastUpdated:Null<Float>

      @:value(false)staticlowMemoryMode:Bool = false

      @:value(120)staticmaxUndos:Int = 120

      @:value(true)staticnaughtyness:Bool = true

      SETTINGS

      @:value(true)staticresizableEditors:Bool = true

      @:value(true)staticsplashesEnabled:Bool = true

      @:value(1)staticvolume:Float = 1

      @:value(true)staticweek6PixelPerfect:Bool = true

      Static methods

      static__flush():Void

      static__load():Void

      staticapplyKeybinds():Void

      staticapplySettings():Void

      staticload():Void

      staticsave():Void

      \ No newline at end of file diff --git a/pages/funkin/options/OptionsMenu.html b/pages/funkin/options/OptionsMenu.html index 3d169990..c4ee367c 100644 --- a/pages/funkin/options/OptionsMenu.html +++ b/pages/funkin/options/OptionsMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value([{ name : "Controls", desc : "Change Controls for Player 1 and Player 2!", state : null, substate : funkin.options.keybinds.KeybindsOptions }, { name : "Gameplay >", desc : "Change Gameplay options such as Downscroll, Scroll Speed, Naughtyness...", state : GameplayOptions }, { name : "Appearance >", desc : "Change Appearance options such as Flashing menus...", state : AppearanceOptions }, { name : "Miscellaneous >", desc : "Use this menu to reset save data or engine settings.", state : MiscOptions }])staticmainOptions:Array<OptionCategory> = [{ name : "Controls", desc : "Change Controls for Player 1 and Player 2!", state : null, substate : funkin.options.keybinds.KeybindsOptions }, { name : "Gameplay >", desc : "Change Gameplay options such as Downscroll, Scroll Speed, Naughtyness...", state : GameplayOptions }, { name : "Appearance >", desc : "Change Appearance options such as Flashing menus...", state : AppearanceOptions }, { name : "Miscellaneous >", desc : "Use this menu to reset save data or engine settings.", state : MiscOptions }]

      Constructor

      new()

      Methods

      parseOptionsFromXML(xml:Access):Array<OptionType>

      XML STUFF

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      @:value([{ name : "Controls", desc : "Change Controls for Player 1 and Player 2!", state : null, substate : funkin.options.keybinds.KeybindsOptions }, { name : "Gameplay >", desc : "Change Gameplay options such as Downscroll, Scroll Speed, Naughtyness...", state : GameplayOptions }, { name : "Appearance >", desc : "Change Appearance options such as Flashing menus...", state : AppearanceOptions }, { name : "Miscellaneous >", desc : "Use this menu to reset save data or engine settings.", state : MiscOptions }])staticmainOptions:Array<OptionCategory> = [{ name : "Controls", desc : "Change Controls for Player 1 and Player 2!", state : null, substate : funkin.options.keybinds.KeybindsOptions }, { name : "Gameplay >", desc : "Change Gameplay options such as Downscroll, Scroll Speed, Naughtyness...", state : GameplayOptions }, { name : "Appearance >", desc : "Change Appearance options such as Flashing menus...", state : AppearanceOptions }, { name : "Miscellaneous >", desc : "Use this menu to reset save data or engine settings.", state : MiscOptions }]

      Constructor

      new()

      Methods

      parseOptionsFromXML(xml:Access):Array<OptionType>

      XML STUFF

      Inherited Variables

      Defined by TreeMenu

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by TreeMenu

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/OptionsScreen.html b/pages/funkin/options/OptionsScreen.html index f9550946..c0b7b1a7 100644 --- a/pages/funkin/options/OptionsScreen.html +++ b/pages/funkin/options/OptionsScreen.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value(120)staticoptionHeight:Float = 120

      Constructor

      new(name:String, desc:String, ?options:Array<OptionType>)

      Variables

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Methods

      changeSelection(sel:Int):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      \ No newline at end of file +

      Static variables

      @:value(120)staticoptionHeight:Float = 120

      Constructor

      new(name:String, desc:String, ?options:Array<OptionType>)

      Variables

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Methods

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/options/OptionsTree.html b/pages/funkin/options/OptionsTree.html index cd6579c7..05e961f1 100644 --- a/pages/funkin/options/OptionsTree.html +++ b/pages/funkin/options/OptionsTree.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Variables

      Methods

      dynamiconMenuChange():Void

      dynamiconMenuClose(m:OptionsScreen):Void

      \ No newline at end of file +

      Constructor

      new()

      Variables

      Methods

      dynamiconMenuChange():Void

      dynamiconMenuClose(m:OptionsScreen):Void

      \ No newline at end of file diff --git a/pages/funkin/options/PlayerSettings.html b/pages/funkin/options/PlayerSettings.html index 9ebe954b..9340153b 100644 --- a/pages/funkin/options/PlayerSettings.html +++ b/pages/funkin/options/PlayerSettings.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      @:value(0)staticread onlynumAvatars:Int = 0

      @:value(0)staticread onlynumPlayers:Int = 0

      @:value(new FlxTypedSignal<PlayerSettings>())staticfinalread onlyonAvatarAdd:FlxTypedSignal<PlayerSettings ‑> Void> = new FlxTypedSignal<PlayerSettings>()

      @:value(new FlxTypedSignal<PlayerSettings>())staticfinalread onlyonAvatarRemove:FlxTypedSignal<PlayerSettings ‑> Void> = new FlxTypedSignal<PlayerSettings>()

      staticread onlyplayer1:PlayerSettings

      staticread onlyplayer2:PlayerSettings

      staticread onlysolo:PlayerSettings

      Static methods

      staticinit():Void

      staticreset():Void

      Variables

      read onlyid:Int

      Methods

      \ No newline at end of file +

      Static variables

      @:value(0)staticread onlynumAvatars:Int = 0

      @:value(0)staticread onlynumPlayers:Int = 0

      @:value(new FlxTypedSignal<PlayerSettings>())staticfinalread onlyonAvatarAdd:FlxTypedSignal<PlayerSettings ‑> Void> = new FlxTypedSignal<PlayerSettings>()

      @:value(new FlxTypedSignal<PlayerSettings>())staticfinalread onlyonAvatarRemove:FlxTypedSignal<PlayerSettings ‑> Void> = new FlxTypedSignal<PlayerSettings>()

      staticread onlyplayer1:PlayerSettings

      staticread onlyplayer2:PlayerSettings

      staticread onlysolo:PlayerSettings

      Static methods

      staticinit():Void

      staticreset():Void

      Variables

      read onlyid:Int

      Methods

      \ No newline at end of file diff --git a/pages/funkin/options/TreeMenu.html b/pages/funkin/options/TreeMenu.html index 06af0237..ab3a95f0 100644 --- a/pages/funkin/options/TreeMenu.html +++ b/pages/funkin/options/TreeMenu.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static methods

      staticinlinemenuTransitionEase(e:Float):Float

      Constructor

      new()

      Variables

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static methods

      staticinlinemenuTransitionEase(e:Float):Float

      Constructor

      new()

      Variables

      @:value(Type.getClass(FlxG.state))lastState:Class<FlxState> = Type.getClass(FlxG.state)

      pathBG:FlxSprite

      Methods

      exit():Void

      @:value({ moreTxt : "" })updateDesc(moreTxt:String = ""):Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/categories/AppearanceOptions.html b/pages/funkin/options/categories/AppearanceOptions.html index c1638696..03b7342c 100644 --- a/pages/funkin/options/categories/AppearanceOptions.html +++ b/pages/funkin/options/categories/AppearanceOptions.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(sel:Int):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      \ No newline at end of file +

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/options/categories/BehaviourOptions.html b/pages/funkin/options/categories/BehaviourOptions.html deleted file mode 100644 index 79728221..00000000 --- a/pages/funkin/options/categories/BehaviourOptions.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.options.categories.BehaviourOptions

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by OptionsScreen

      bg:FlxSprite

      @:value(-1)curSelected:Int = -1

      descBG:FlxSprite

      descDrop:FlxBackdrop

      @:value(35)descSpeed:Float = 35

      @:value([])options:Array<OptionType> = []

      @:value(FlxPoint.get(0, 0))scrollDest:FlxPoint = FlxPoint.get(0, 0)

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(change:Int):Void

      exit():Void

      updateDesc():Void

      updateDescText(text:String):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/categories/DebugOptions.html b/pages/funkin/options/categories/DebugOptions.html deleted file mode 100644 index d4eb93fd..00000000 --- a/pages/funkin/options/categories/DebugOptions.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.options.categories.DebugOptions

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by OptionsScreen

      bg:FlxSprite

      @:value(-1)curSelected:Int = -1

      descBG:FlxSprite

      descDrop:FlxBackdrop

      @:value(35)descSpeed:Float = 35

      @:value([])options:Array<OptionType> = []

      @:value(FlxPoint.get(0, 0))scrollDest:FlxPoint = FlxPoint.get(0, 0)

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(change:Int):Void

      exit():Void

      updateDesc():Void

      updateDescText(text:String):Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/categories/GameplayOptions.html b/pages/funkin/options/categories/GameplayOptions.html index 987b7f02..1bcb8534 100644 --- a/pages/funkin/options/categories/GameplayOptions.html +++ b/pages/funkin/options/categories/GameplayOptions.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(sel:Int):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      \ No newline at end of file +

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/options/categories/MiscOptions.html b/pages/funkin/options/categories/MiscOptions.html index 6bc78999..0dff7bf3 100644 --- a/pages/funkin/options/categories/MiscOptions.html +++ b/pages/funkin/options/categories/MiscOptions.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(sel:Int):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      \ No newline at end of file +

      Constructor

      new()

      Inherited Variables

      Defined by OptionsScreen

      @:value(0)curSelected:Int = 0

      desc:String

      @:value(0)id:Int = 0

      name:String

      Inherited Methods

      Defined by OptionsScreen

      @:value({ force : false })changeSelection(sel:Int, force:Bool = false):Void

      close():Void

      dynamiconClose(o:OptionsScreen):Void

      updateMenuDesc(?customTxt:String):Void

      \ No newline at end of file diff --git a/pages/funkin/options/categories/SaveDataOptions.html b/pages/funkin/options/categories/SaveDataOptions.html deleted file mode 100644 index 7a8c00b5..00000000 --- a/pages/funkin/options/categories/SaveDataOptions.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.options.categories.SaveDataOptions

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by OptionsScreen

      bg:FlxSprite

      @:value(-1)curSelected:Int = -1

      descBG:FlxSprite

      descDrop:FlxBackdrop

      @:value(35)descSpeed:Float = 35

      @:value([])options:Array<OptionType> = []

      @:value(FlxPoint.get(0, 0))scrollDest:FlxPoint = FlxPoint.get(0, 0)

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls.

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "scripts/stateName" (ex: "scripts/")

      Inherited Methods

      Defined by OptionsScreen

      changeSelection(change:Int):Void

      exit():Void

      updateDesc():Void

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independant of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/keybinds/ChangeKeybindSubState.html b/pages/funkin/options/keybinds/ChangeKeybindSubState.html index 52613f45..c2e7b88f 100644 --- a/pages/funkin/options/keybinds/ChangeKeybindSubState.html +++ b/pages/funkin/options/keybinds/ChangeKeybindSubState.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(callback:FlxKey ‑> Void, cancelCallback:() ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Constructor

      new(callback:FlxKey ‑> Void, cancelCallback:() ‑> Void)

      Methods

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/keybinds/KeybindSetting.html b/pages/funkin/options/keybinds/KeybindSetting.html index 25d6e4b6..ca4319fa 100644 --- a/pages/funkin/options/keybinds/KeybindSetting.html +++ b/pages/funkin/options/keybinds/KeybindSetting.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(x:Float, y:Float, name:String, value:String, ?sparrowIcon:String, ?sparrowAnim:String)

      Variables

      @:value(-1)changingKeybind:Int = -1

      icon:FlxSprite

      option1:Null<FlxKey>

      option2:Null<FlxKey>

      @:value(false)p2Selected:Bool = false

      value:String

      Methods

      @:value({ p2 : false })changeKeybind(callback:() ‑> Void, cancelCallback:() ‑> Void, p2:Bool = false):Void

      updateText():Void

      \ No newline at end of file +

      Constructor

      new(x:Float, y:Float, name:String, value:String, ?sparrowIcon:String, ?sparrowAnim:String)

      Variables

      @:value(-1)changingKeybind:Int = -1

      icon:FlxSprite

      option1:Null<FlxKey>

      option2:Null<FlxKey>

      @:value(false)p2Selected:Bool = false

      value:String

      Methods

      @:value({ p2 : false })changeKeybind(callback:() ‑> Void, cancelCallback:() ‑> Void, p2:Bool = false):Void

      updateText():Void

      \ No newline at end of file diff --git a/pages/funkin/options/keybinds/KeybindsOptions.html b/pages/funkin/options/keybinds/KeybindsOptions.html index 684b8f2f..a89411a7 100644 --- a/pages/funkin/options/keybinds/KeybindsOptions.html +++ b/pages/funkin/options/keybinds/KeybindsOptions.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Static variables

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      alphabets:FlxTypedGroup<KeybindSetting>

      bg:FlxSprite

      @:value(new FlxObject(0, 0, 2, 2))camFollow:FlxObject = new FlxObject(0, 0, 2, 2)

      @:value(true)canSelect:Bool = true

      @:value([{ name : "Notes", settings : [{ name : "{noteLeft}", control : "NOTE_LEFT" }, { name : "{noteDown}", control : "NOTE_DOWN" }, { name : "{noteUp}", control : "NOTE_UP" }, { name : "{noteRight}", control : "NOTE_RIGHT" }] }, { name : "UI", settings : [{ name : "Left", control : "LEFT" }, { name : "Down", control : "DOWN" }, { name : "Up", control : "UP" }, { name : "Right", control : "RIGHT" }, { name : "Accept", control : "ACCEPT" }, { name : "Back", control : "BACK" }, { name : "Reset", control : "RESET" }, { name : "Pause", control : "PAUSE" }] }, { name : "Engine", settings : [{ name : "Switch Mod", control : "SWITCHMOD" }] }])categories:Array<{settings:Array<{name:String, control:String}>, name:String}> = [{ name : "Notes", settings : [{ name : "{noteLeft}", control : "NOTE_LEFT" }, { name : "{noteDown}", control : "NOTE_DOWN" }, { name : "{noteUp}", control : "NOTE_UP" }, { name : "{noteRight}", control : "NOTE_RIGHT" }] }, { name : "UI", settings : [{ name : "Left", control : "LEFT" }, { name : "Down", control : "DOWN" }, { name : "Up", control : "UP" }, { name : "Right", control : "RIGHT" }, { name : "Accept", control : "ACCEPT" }, { name : "Back", control : "BACK" }, { name : "Reset", control : "RESET" }, { name : "Pause", control : "PAUSE" }] }, { name : "Engine", settings : [{ name : "Switch Mod", control : "SWITCHMOD" }] }]

      coloredBG:FlxSprite

      @:value(0)curSelected:Int = 0

      @:value([0xFFC24B99, 0xFF00FFFF, 0xFF12FA05, 0xFFF9393F])noteColors:Array<FlxColor> = [0xFFC24B99, 0xFF00FFFF, 0xFF12FA05, 0xFFF9393F]

      @:value(false)p2Selected:Bool = false

      settingCam:FlxCamera

      Methods

      changeSelection(change:Int):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file +

      Static variables

      Constructor

      new(?scriptsAllowed:Bool, ?scriptName:String)

      Variables

      alphabets:FlxTypedGroup<KeybindSetting>

      bg:FlxSprite

      @:value(new FlxObject(0, 0, 2, 2))camFollow:FlxObject = new FlxObject(0, 0, 2, 2)

      @:value(true)canSelect:Bool = true

      @:value([{ name : "Notes", settings : [{ name : "{noteLeft}", control : "NOTE_LEFT" }, { name : "{noteDown}", control : "NOTE_DOWN" }, { name : "{noteUp}", control : "NOTE_UP" }, { name : "{noteRight}", control : "NOTE_RIGHT" }] }, { name : "UI", settings : [{ name : "Left", control : "LEFT" }, { name : "Down", control : "DOWN" }, { name : "Up", control : "UP" }, { name : "Right", control : "RIGHT" }, { name : "Accept", control : "ACCEPT" }, { name : "Back", control : "BACK" }, { name : "Reset", control : "RESET" }, { name : "Pause", control : "PAUSE" }] }, { name : "Engine", settings : [{ name : "Switch Mod", control : "SWITCHMOD" }] }])categories:Array<{settings:Array<{name:String, control:String}>, name:String}> = [{ name : "Notes", settings : [{ name : "{noteLeft}", control : "NOTE_LEFT" }, { name : "{noteDown}", control : "NOTE_DOWN" }, { name : "{noteUp}", control : "NOTE_UP" }, { name : "{noteRight}", control : "NOTE_RIGHT" }] }, { name : "UI", settings : [{ name : "Left", control : "LEFT" }, { name : "Down", control : "DOWN" }, { name : "Up", control : "UP" }, { name : "Right", control : "RIGHT" }, { name : "Accept", control : "ACCEPT" }, { name : "Back", control : "BACK" }, { name : "Reset", control : "RESET" }, { name : "Pause", control : "PAUSE" }] }, { name : "Engine", settings : [{ name : "Switch Mod", control : "SWITCHMOD" }] }]

      coloredBG:FlxSprite

      @:value(0)curSelected:Int = 0

      @:value([0xFFC24B99, 0xFF00FFFF, 0xFF12FA05, 0xFFF9393F])noteColors:Array<FlxColor> = [0xFFC24B99, 0xFF00FFFF, 0xFF12FA05, 0xFFF9393F]

      @:value(false)p2Selected:Bool = false

      settingCam:FlxCamera

      Methods

      changeSelection(change:Int):Void

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/options/type/Checkbox.html b/pages/funkin/options/type/Checkbox.html index 8f1d9f4e..09edb3df 100644 --- a/pages/funkin/options/type/Checkbox.html +++ b/pages/funkin/options/type/Checkbox.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(text:String, desc:String, optionName:String, ?parent:Dynamic)

      Variables

      checkbox:FlxSprite

      checked:Bool

      optionName:String

      parent:Dynamic

      Methods

      Inherited Variables

      Defined by TextOption

      selectCallback:() ‑> Void

      text:String

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by TextOption

      \ No newline at end of file +

      Constructor

      new(text:String, desc:String, optionName:String, ?parent:Dynamic)

      Variables

      checkbox:FlxSprite

      checked:Bool

      optionName:String

      parent:Dynamic

      Methods

      Inherited Variables

      Defined by TextOption

      selectCallback:() ‑> Void

      text:String

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by TextOption

      Defined by OptionType

      onChangeSelection(change:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/IconOption.html b/pages/funkin/options/type/IconOption.html index 16c5b62a..9287dc6a 100644 --- a/pages/funkin/options/type/IconOption.html +++ b/pages/funkin/options/type/IconOption.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(name:String, desc:String, icon:String, callback:() ‑> Void)

      Variables

      Inherited Variables

      Defined by TextOption

      selectCallback:() ‑> Void

      text:String

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by TextOption

      Defined by OptionType

      \ No newline at end of file +

      Constructor

      new(name:String, desc:String, icon:String, callback:() ‑> Void)

      Variables

      Inherited Variables

      Defined by TextOption

      selectCallback:() ‑> Void

      text:String

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by TextOption

      Defined by OptionType

      onChangeSelection(change:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/NumOption.html b/pages/funkin/options/type/NumOption.html new file mode 100644 index 00000000..460865ca --- /dev/null +++ b/pages/funkin/options/type/NumOption.html @@ -0,0 +1,10 @@ + + + +funkin.options.type.NumOption

      Constructor

      @:value({ selectCallback : null })new(text:String, desc:String, min:Float, max:Float, changeVal:Float, optionName:String, ?selectCallback:Float ‑> Void, ?parent:Dynamic)

      Variables

      changeVal:Float

      max:Float

      min:Float

      parent:Dynamic

      text:String

      selectCallback:Float ‑> Void

      Methods

      Inherited Variables

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by OptionType

      onSelect():Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/OptionType.html b/pages/funkin/options/type/OptionType.html index e3216be3..b5457d12 100644 --- a/pages/funkin/options/type/OptionType.html +++ b/pages/funkin/options/type/OptionType.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(desc:String)

      Variables

      desc:String

      @:value(false)selected:Bool = false

      Methods

      onSelect():Void

      \ No newline at end of file +

      Constructor

      new(desc:String)

      Variables

      desc:String

      @:value(false)selected:Bool = false

      Methods

      onChangeSelection(change:Float):Void

      onSelect():Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/PortraitOption.html b/pages/funkin/options/type/PortraitOption.html new file mode 100644 index 00000000..cd99e109 --- /dev/null +++ b/pages/funkin/options/type/PortraitOption.html @@ -0,0 +1,10 @@ + + + +funkin.options.type.PortraitOption

      Constructor

      @:value({ size : 96 })new(name:String, desc:String, callback:() ‑> Void, ?graphic:FlxGraphic, size:Int = 96)

      Variables

      @:value(null)portrait:FlxSprite = null

      Methods

      @:value({ size : 96 })addPortrait(graphic:FlxGraphic, size:Int = 96):Void

      @:value({ size : 96 })loadFromGithub(user:GitHubContributor, size:Int = 96):Void

      Inherited Variables

      Defined by TextOption

      selectCallback:() ‑> Void

      text:String

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by TextOption

      Defined by OptionType

      onChangeSelection(change:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/TextOption.html b/pages/funkin/options/type/TextOption.html index d92c8e7c..c2d7fc4d 100644 --- a/pages/funkin/options/type/TextOption.html +++ b/pages/funkin/options/type/TextOption.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -

      Constructor

      new(text:String, desc:String, selectCallback:() ‑> Void)

      Variables

      text:String

      selectCallback:() ‑> Void

      Methods

      Inherited Variables

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by OptionType

      \ No newline at end of file +

      Constructor

      new(text:String, desc:String, selectCallback:() ‑> Void)

      Variables

      text:String

      selectCallback:() ‑> Void

      Methods

      Inherited Variables

      Defined by OptionType

      desc:String

      @:value(false)selected:Bool = false

      Inherited Methods

      Defined by OptionType

      onChangeSelection(change:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/options/type/index.html b/pages/funkin/options/type/index.html index cc3f7e68..5c8d8e1e 100644 --- a/pages/funkin/options/type/index.html +++ b/pages/funkin/options/type/index.html @@ -7,4 +7,4 @@ float: none; text-shadow: 0 0 0 transparent; } -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/savedata/FunkinSave.html b/pages/funkin/savedata/FunkinSave.html new file mode 100644 index 00000000..3448ce6a --- /dev/null +++ b/pages/funkin/savedata/FunkinSave.html @@ -0,0 +1,14 @@ + + + +funkin.savedata.FunkinSave

      Class used for saves WITHOUT going through the struggle of type checks +Just add your save variables the way you would do in the Options.hx file. +The macro will automatically generate the flush and load functions.

      Static variables

      @:value([])statichighscores:Map<HighscoreEntry, SongScore> = []

      @:doNotSavestaticsave:FlxSave

      Static methods

      staticflush():Void

      staticinlinegetSongHighscore(name:String, diff:String, ?changes:Array<HighscoreChange>):SongScore

      Returns the high-score for a song.

      Parameters:

      name

      Song name

      diff

      Song difficulty

      changes

      Changes made to that song in freeplay.

      staticinlinegetWeekHighscore(name:String, diff:String):SongScore

      staticinit():Void

      staticload():Void

      staticinlinesetSongHighscore(name:String, diff:String, highscore:SongScore, ?changes:Array<HighscoreChange>):Bool

      staticinlinesetWeekHighscore(name:String, diff:String, highscore:SongScore):Bool

      \ No newline at end of file diff --git a/pages/funkin/system/CommandLineHandler.html b/pages/funkin/savedata/HighscoreChange.html similarity index 61% rename from pages/funkin/system/CommandLineHandler.html rename to pages/funkin/savedata/HighscoreChange.html index 3dfa32a6..de34ed95 100644 --- a/pages/funkin/system/CommandLineHandler.html +++ b/pages/funkin/savedata/HighscoreChange.html @@ -1,10 +1,10 @@ -funkin.system.CommandLineHandler

      Static methods

      staticparseCommandLine(cmd:Array<String>):Void

      \ No newline at end of file +
      \ No newline at end of file diff --git a/pages/funkin/debug/index.html b/pages/funkin/savedata/HighscoreEntry.html similarity index 57% rename from pages/funkin/debug/index.html rename to pages/funkin/savedata/HighscoreEntry.html index 63aaa1c5..f49f4856 100644 --- a/pages/funkin/debug/index.html +++ b/pages/funkin/savedata/HighscoreEntry.html @@ -1,10 +1,10 @@ -funkin.debug

      funkin.debug

      ..
      AnimationDebug

      DEBUG MODE

      \ No newline at end of file +

      Values

      HWeekEntry(weekName:String, difficulty:String)

      HSongEntry(songName:String, difficulty:String, changes:Array<HighscoreChange>)

      \ No newline at end of file diff --git a/pages/funkin/utils/StrNameLabel.html b/pages/funkin/savedata/SongScore.html similarity index 59% rename from pages/funkin/utils/StrNameLabel.html rename to pages/funkin/savedata/SongScore.html index f28a2374..9ac51fe7 100644 --- a/pages/funkin/utils/StrNameLabel.html +++ b/pages/funkin/savedata/SongScore.html @@ -1,10 +1,10 @@ -funkin.utils.StrNameLabel

      Constructor

      new(name:String, label:String)

      Variables

      label:String

      name:String

      \ No newline at end of file +

      Fields

      score:Int

      misses:Int

      hits:Map<String, Int>

      date:String

      accuracy:Float

      \ No newline at end of file diff --git a/pages/funkin/updating/index.html b/pages/funkin/savedata/index.html similarity index 63% rename from pages/funkin/updating/index.html rename to pages/funkin/savedata/index.html index 039425ad..c70d304a 100644 --- a/pages/funkin/updating/index.html +++ b/pages/funkin/savedata/index.html @@ -1,10 +1,12 @@ -funkin.updating
      \ No newline at end of file +

      funkin.savedata

      ..
      FunkinSave

      Class used for saves WITHOUT going through the struggle of type checks +Just add your save variables the way you would do in the Options.hx file. +The macro will automatically generate the flush and load functions.

      HighscoreChange

      HighscoreEntry

      SongScore

      \ No newline at end of file diff --git a/pages/funkin/saves/FunkinSave.html b/pages/funkin/saves/FunkinSave.html deleted file mode 100644 index 672121fc..00000000 --- a/pages/funkin/saves/FunkinSave.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -funkin.saves.FunkinSave

      Class used for saves WITHOUT going through the struggle of type checks -Just add your save variables the way you would do in the Options.hx file. -The macro will automatically generate the flush and load functions.

      Static variables

      @:value(0)staticcoins:Int = 0

      @:value("penis")staticcoolColor:String = "penis"

      staticread onlysave:FlxSave

      @:value(0)statictotalPlayedGames:Int = 0

      @:value("")staticvariableOne:String = ""

      Static methods

      staticflush():Void

      staticinit():Void

      staticload():Void

      \ No newline at end of file diff --git a/pages/funkin/saves/index.html b/pages/funkin/saves/index.html deleted file mode 100644 index 80358dcf..00000000 --- a/pages/funkin/saves/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.saves

      funkin.saves

      ..
      FunkinSave

      Class used for saves WITHOUT going through the struggle of type checks -Just add your save variables the way you would do in the Options.hx file. -The macro will automatically generate the flush and load functions.

      \ No newline at end of file diff --git a/pages/funkin/scripting/DummyScript.html b/pages/funkin/scripting/DummyScript.html deleted file mode 100644 index 35e7e658..00000000 --- a/pages/funkin/scripting/DummyScript.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.scripting.DummyScript

      Simple class for empty scripts or scripts whose language isn't imported yet.

      Constructor

      new(path:String)

      Variables

      @:value([])variables:Map<String, Dynamic> = []

      Methods

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      load():Void

      Loads the script

      onCreate(path:String):Void

      onDestroy():Void

      onLoad():Void

      reload():Void

      Hot-reloads the script, if possible

      setParent(variable:Dynamic):Void

      Sets a script's parent object so that its properties can be accessed easily. Ex: Passing PlayState.instance will allow boyfriend to be typed instead of PlayState.instance.boyfriend.

      Parameters:

      variable

      Parent variable.

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW -Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/scripting/EventManager.html b/pages/funkin/scripting/EventManager.html deleted file mode 100644 index 970d86c7..00000000 --- a/pages/funkin/scripting/EventManager.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.EventManager

      Static variables

      @:value([])staticeventKeys:Array<Class<CancellableEvent>> = []

      @:value([])staticeventValues:Array<CancellableEvent> = []

      Static methods

      staticget<T>(cl:Class<T>):T

      staticinit():Void

      staticreset():Void

      \ No newline at end of file diff --git a/pages/funkin/scripting/GlobalScript.html b/pages/funkin/scripting/GlobalScript.html deleted file mode 100644 index c9e08bc4..00000000 --- a/pages/funkin/scripting/GlobalScript.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.GlobalScript

      Class for THE Global Script, aka script that runs in the background at all times.

      Static variables

      Static methods

      staticbeatHit(curBeat:Int):Void

      staticcall(name:String, ?args:Array<Dynamic>):Void

      staticevent<T>(name:String, event:T):T

      staticinit():Void

      staticonModSwitch(newMod:String):Void

      staticstepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/scripting/HScript.html b/pages/funkin/scripting/HScript.html deleted file mode 100644 index ee032821..00000000 --- a/pages/funkin/scripting/HScript.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.HScript

      Static methods

      staticinitParser():Parser

      Constructor

      new(path:String)

      Variables

      code:String

      @:value(null)decls:Array<ModuleDecl> = null

      expr:Expr

      interp:Interp

      parser:Parser

      Methods

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      load():Void

      Loads the script

      \ No newline at end of file diff --git a/pages/funkin/scripting/ModState.html b/pages/funkin/scripting/ModState.html deleted file mode 100644 index e1d109e7..00000000 --- a/pages/funkin/scripting/ModState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.ModState

      Constructor

      new(stateName:String)

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/scripting/ModSubState.html b/pages/funkin/scripting/ModSubState.html deleted file mode 100644 index 2a1650ce..00000000 --- a/pages/funkin/scripting/ModSubState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.ModSubState

      Constructor

      new(scriptName:String)

      Inherited Variables

      Defined by MusicBeatSubstate

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Inherited Methods

      Defined by MusicBeatSubstate

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/scripting/MultiThreadedScript.html b/pages/funkin/scripting/MultiThreadedScript.html deleted file mode 100644 index ce82c0a7..00000000 --- a/pages/funkin/scripting/MultiThreadedScript.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.MultiThreadedScript

      Constructor

      new(path:String, ?parentScript:Script)

      Variables

      @:value(true)callEnded:Bool = true

      Whenever the current call has ended.

      @:value(null)returnValue:Dynamic = null

      Return value of the last call.

      script:Script

      Script being ran.

      Methods

      call(func:String, args:Array<Dynamic>):Void

      destroy():Void

      inlinehget(name:String):Dynamic

      inlinehset(name:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/scripting/Script.html b/pages/funkin/scripting/Script.html deleted file mode 100644 index af0b676a..00000000 --- a/pages/funkin/scripting/Script.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.Script

      Class used for scripting.

      Static variables

      @:value(null)staticcurScript:Script = null

      Currently executing script.

      @:value(["hx", "hscript", "hsc", "hxs", "lua"])staticscriptExtensions:Array<String> = ["hx", "hscript", "hsc", "hxs", "lua"]

      All available script extensions

      @:value([])staticstaticVariables:Map<String, Dynamic> = []

      Use "static var thing = true;" in hscript to use those!! -are reset every mod switch so once you're done with them make sure to make them null!!

      Static methods

      staticcreate(path:String):Script

      Creates a script from the specified asset path. The language is automatically determined.

      Parameters:

      path

      Path in assets

      staticgetDefaultPreprocessors():Map<String, Dynamic>

      staticgetDefaultVariables(?script:Script):Map<String, Dynamic>

      Constructor

      new(path:String)

      Creates a new instance of the script class.

      Parameters:

      null

      path

      Variables

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Methods

      call(func:String, ?parameters:Array<Dynamic>):Dynamic

      Calls the function func defined in the script.

      Parameters:

      func

      Name of the function

      parameters

      (Optional) Parameters of the function.

      Returns:

      Result (if void, then null)

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      get(variable:String):Dynamic

      Gets the variable variable from the script's variables.

      Parameters:

      variable

      Name of the variable.

      Returns:

      Variable (or null if it doesn't exists)

      load():Void

      Loads the script

      onCreate(path:String):Void

      onDestroy():Void

      onLoad():Void

      reload():Void

      Hot-reloads the script, if possible

      set(variable:String, value:Dynamic):Void

      Gets the variable variable from the script's variables.

      Parameters:

      variable

      Name of the variable.

      Returns:

      Variable (or null if it doesn't exists)

      setParent(variable:Dynamic):Void

      Sets a script's parent object so that its properties can be accessed easily. Ex: Passing PlayState.instance will allow boyfriend to be typed instead of PlayState.instance.boyfriend.

      Parameters:

      variable

      Parent variable.

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW -Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/scripting/ScriptPack.html b/pages/funkin/scripting/ScriptPack.html deleted file mode 100644 index 0c3c03c6..00000000 --- a/pages/funkin/scripting/ScriptPack.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.scripting.ScriptPack

      Constructor

      new(name:String)

      Variables

      @:value([])additionalDefaultVariables:Map<String, Dynamic> = []

      @:value(null)parent:Dynamic = null

      @:value([])publicVariables:Map<String, Dynamic> = []

      @:value([])scripts:Array<Script> = []

      Methods

      add(script:Script):Void

      contains(path:String):Bool

      event<T>(func:String, event:T):T

      Sends an event to every single script, and returns the event.

      Parameters:

      func

      Function to call

      event

      Event (will be the first parameter of the function)

      Returns:

      (modified by scripts)

      getByName(name:String):Script

      getByPath(name:String):Script

      importScript(path:String):Script

      insert(pos:Int, script:Script):Void

      remove(script:Script):Void

      Inherited Variables

      Defined by Script

      fileName:String

      Script name (with extension)

      @:value(null)path:String = null

      Path to the script.

      Inherited Methods

      Defined by Script

      error(text:String, ?additionalInfo:Dynamic):Void

      Shows an error from this script.

      Parameters:

      text

      Text of the error (ex: Null Object Reference).

      additionalInfo

      Additional information you could provide.

      onLoad():Void

      setPublicMap(map:Map<String, Dynamic>):Void

      HSCRIPT ONLY FOR NOW -Sets the "public" variables map for ScriptPack

      trace(v:Dynamic):Void

      Traces something as this script.

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/CamMoveEvent.html b/pages/funkin/scripting/events/CamMoveEvent.html deleted file mode 100644 index fbb4d0cc..00000000 --- a/pages/funkin/scripting/events/CamMoveEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.CamMoveEvent

      Constructor

      new()

      Variables

      focusedCharacters:Int

      Number of focused characters

      position:FlxPoint

      Final camera position.

      strumLine:StrumLine

      Currently focused strumline.

      Methods

      recycle(position:FlxPoint, strumLine:StrumLine, focusedCharacters:Int):CamMoveEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/CancellableEvent.html b/pages/funkin/scripting/events/CancellableEvent.html deleted file mode 100644 index fdac02a2..00000000 --- a/pages/funkin/scripting/events/CancellableEvent.html +++ /dev/null @@ -1,13 +0,0 @@ - - - -funkin.scripting.events.CancellableEvent

      Constructor

      new()

      Creates a new cancellable event. -This allows scripts to call cancel() to cancel the event.

      Variables

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Methods

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/CountdownEvent.html b/pages/funkin/scripting/events/CountdownEvent.html deleted file mode 100644 index f509ff82..00000000 --- a/pages/funkin/scripting/events/CountdownEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.CountdownEvent

      Constructor

      new()

      Variables

      antialiasing:Bool

      Whenever antialiasing is enabled or not.

      scale:Float

      Scale of the sprite.

      sound:FlxSound

      Created sound, only available in onPostCountdown

      soundPath:String

      Path of the intro sound that'll be played.

      sprite:FlxSprite

      Created sprite, only available in onPostCountdown

      spritePath:String

      Path to the sprite path that'll be shown.

      spriteTween:FlxTween

      Created tween for the sprite, only available in onPostCountdown

      swagCounter:Int

      At which count the countdown is. Normally goes 0-1-2-3-4 unless PlayState.instance.introLength is changed.

      volume:Float

      Volume at which the intro countdown sound will play.

      Methods

      recycle(swagCounter:Int, volume:Float, soundPath:String, spritePath:String, scale:Float, antialiasing:Bool, sprite:FlxSprite, spriteTween:FlxTween, sound:FlxSound):CountdownEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/DanceEvent.html b/pages/funkin/scripting/events/DanceEvent.html deleted file mode 100644 index 67530422..00000000 --- a/pages/funkin/scripting/events/DanceEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.DanceEvent

      Constructor

      new()

      Variables

      danced:Bool

      Methods

      recycle(danced:Bool):DanceEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/DirectionAnimEvent.html b/pages/funkin/scripting/events/DirectionAnimEvent.html deleted file mode 100644 index e2eaf6c9..00000000 --- a/pages/funkin/scripting/events/DirectionAnimEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.DirectionAnimEvent

      Constructor

      new()

      Variables

      animName:String

      Default animation that will be played

      context:PlayAnimContext

      Context of the animation. Is either equal to SING or MISS.

      direction:Int

      In which direction the animation will be played

      @:value(true)force:Bool = true

      Whenever the animation will play reversed or not.

      frame:Int

      At what frame the animation will start playing

      reversed:Bool

      Whenever the animation will play reversed or not.

      suffix:String

      The suffix of the animation (ex: "-alt") - Defaults to ""

      Methods

      @:value({ force : true })recycle(animName:String, direction:Int, suffix:String, context:PlayAnimContext, reversed:Bool, frame:Int, force:Bool = true):DirectionAnimEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/DiscordPresenceUpdateEvent.html b/pages/funkin/scripting/events/DiscordPresenceUpdateEvent.html deleted file mode 100644 index f2a225f9..00000000 --- a/pages/funkin/scripting/events/DiscordPresenceUpdateEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.DiscordPresenceUpdateEvent

      Constructor

      new()

      Variables

      presenceData:DiscordPresenceOptions

      Object containing all of the data for the presence. Can be altered.

      Methods

      recycle(presenceData:DiscordPresenceOptions):DiscordPresenceUpdateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/FreeplaySongSelectEvent.html b/pages/funkin/scripting/events/FreeplaySongSelectEvent.html deleted file mode 100644 index 6b03ff8e..00000000 --- a/pages/funkin/scripting/events/FreeplaySongSelectEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.FreeplaySongSelectEvent

      Constructor

      new()

      Variables

      coopMode:Bool

      Whenever coop mode is enabled.

      difficulty:String

      Difficulty name

      opponentMode:Bool

      Whenever opponent mode is enabled or not.

      song:String

      Song name that is about to be played

      Methods

      recycle(song:String, difficulty:String, opponentMode:Bool, coopMode:Bool):FreeplaySongSelectEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/InputSystemEvent.html b/pages/funkin/scripting/events/InputSystemEvent.html deleted file mode 100644 index 25b0a277..00000000 --- a/pages/funkin/scripting/events/InputSystemEvent.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -funkin.scripting.events.InputSystemEvent

      Constructor

      new()

      Variables

      justPressed:Array<Bool>

      Array containing whenever a specific control was pressed (not hold) this frame or not. -For example, justPressed[0] will return whenever the left strum was just pressed.

      justReleased:Array<Bool>

      Array containing whenever a specific control was released this frame or not. -For example, justReleased[0] will return whenever the left strum was just released.

      pressed:Array<Bool>

      Array containing whenever a specific control is pressed or not. -For example, pressed[0] will return whenever the left strum was pressed.

      strumLine:StrumLine

      Strumline which input is being processed.

      strumLineID:Int

      ID of the Strumline.

      Methods

      recycle(pressed:Array<Bool>, justPressed:Array<Bool>, justReleased:Array<Bool>, strumLine:StrumLine, strumLineID:Int):InputSystemEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/MenuChangeEvent.html b/pages/funkin/scripting/events/MenuChangeEvent.html deleted file mode 100644 index d4d4f1e8..00000000 --- a/pages/funkin/scripting/events/MenuChangeEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.MenuChangeEvent

      Constructor

      new()

      Variables

      change:Int

      Amount of change

      oldValue:Int

      Value before the change

      @:value(true)playMenuSFX:Bool = true

      Whenever the menu SFX should be played.

      value:Int

      Value after the change

      Methods

      @:value({ playMenuSFX : true })recycle(oldValue:Int, value:Int, change:Int, playMenuSFX:Bool = true):MenuChangeEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/NameEvent.html b/pages/funkin/scripting/events/NameEvent.html deleted file mode 100644 index 8569360a..00000000 --- a/pages/funkin/scripting/events/NameEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.NameEvent

      Constructor

      new()

      Variables

      name:String

      Name

      Methods

      recycle(name:String):NameEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/NoteCreationEvent.html b/pages/funkin/scripting/events/NoteCreationEvent.html deleted file mode 100644 index af7771c7..00000000 --- a/pages/funkin/scripting/events/NoteCreationEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.NoteCreationEvent

      Constructor

      new()

      Variables

      animSuffix:String

      Sing animation suffix. "-alt" for alt anim or "" for normal notes.

      mustHit:Bool

      Whenever the note will need to be hit by the player

      note:Note

      Note that is being created

      noteScale:Float

      Note scale, if you only want to replace the scale.

      noteSprite:String

      Note sprite, if you only want to replace the sprite.

      noteType:String

      Note Type (ex: "My Super Cool Note", or "Mine")

      noteTypeID:Int

      ID of the note type.

      strumID:Int

      ID of the strum (from 0 to 3)

      strumLineID:Int

      ID of the player.

      Methods

      recycle(note:Note, strumID:Int, noteType:String, noteTypeID:Int, strumLineID:Int, mustHit:Bool, noteSprite:String, noteScale:Float, animSuffix:String):NoteCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/NoteHitEvent.html b/pages/funkin/scripting/events/NoteHitEvent.html deleted file mode 100644 index 7f8e187b..00000000 --- a/pages/funkin/scripting/events/NoteHitEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.NoteHitEvent

      Constructor

      new()

      Variables

      accuracy:Null<Float>

      Accuracy gained from pressing this note. From 0 to 1. null means no accuracy is gained.

      animSuffix:String

      Suffix of the animation. "-alt" for alt notes, "" for normal ones.

      character:Character

      Character that pressed the note.

      characters:Array<Character>

      Characters that pressed the note.

      @:value(true)countAsCombo:Bool = true

      Whenever a miss should be added.

      direction:Int

      Direction of the press (0 = Left, 1 = Down, 2 = Up, 3 = Right)

      @:value(true)forceAnim:Bool = true

      Whenever the animation should be forced to play.

      healthGain:Float

      The amount of health that'll be gained from pressing that note. If called from onPlayerMiss, the value will be negative.

      @:value(true)misses:Bool = true

      Whenever a miss should be added.

      note:Note

      Note that has been pressed

      noteType:String

      Note Type name (null if default note)

      @:value(true)numAntialiasing:Bool = true

      Whenever antialiasing should be enabled on combo number.

      @:value(0.5)numScale:Float = 0.5

      Scale of combo numbers.

      player:Bool

      Whenever the Character is a player

      @:value("sick")rating:String = "sick"

      Rating name. Defaults to "sick", "good", "bad" and "shit". Customisable.

      @:value(true)ratingAntialiasing:Bool = true

      Whenever antialiasing should be enabled on ratings.

      ratingPrefix:String

      Prefix of the rating sprite path. Defaults to "game/score/"

      @:value(0.7)ratingScale:Float = 0.7

      Scale of ratings.

      ratingSuffix:String

      Suffix of the rating sprite path.

      score:Int

      Score gained after note press.

      @:value(null)showRating:Null<Bool> = null

      Whenever ratings should be shown or not.

      @:value(false)showSplash:Bool = false

      Whenever a splash should be shown when the note is hit.

      Methods

      preventAnim():Void

      Prevents the default sing animation from being played.

      preventCamZooming():Void

      Prevents the camera zoom every 4 beats from enabling.

      preventDeletion():Void

      Prevents the note from being deleted.

      preventLastSustainHit():Void

      Prevents the sustain tail (the last one) from being automatically hit when the sustain before it is hit.

      preventStrumGlow():Void

      Prevents the strum from glowing after this note has been pressed.

      preventVocalsMute():Void

      Prevents the vocals volume from being muted in case its a parameter of onPlayerMiss

      preventVocalsUnmute():Void

      Prevents the vocals volume from being set to 1 after pressing the note.

      @:value({ forceAnim : true, ratingAntialiasing : true, ratingScale : 0.7, numAntialiasing : true, numScale : 0.5, showSplash : false, rating : "sick", showRating : null, countAsCombo : true, misses : true })recycle(misses:Bool = true, countAsCombo:Bool = true, ?showRating:Bool, note:Note, characters:Array<Character>, player:Bool, noteType:String, animSuffix:String, ratingPrefix:String, ratingSuffix:String, direction:Int, score:Int, accuracy:Null<Float>, healthGain:Float, rating:String = "sick", showSplash:Bool = false, numScale:Float = 0.5, numAntialiasing:Bool = true, ratingScale:Float = 0.7, ratingAntialiasing:Bool = true, forceAnim:Bool = true):NoteHitEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/NoteUpdateEvent.html b/pages/funkin/scripting/events/NoteUpdateEvent.html deleted file mode 100644 index db254f44..00000000 --- a/pages/funkin/scripting/events/NoteUpdateEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.NoteUpdateEvent

      Constructor

      new()

      Variables

      elapsed:Null<Float>

      Time elapsed since last frame

      note:Note

      Note that is being updated

      strum:Strum

      Note's strum (can be changed)

      Methods

      cancelAutoCPUHit():Void

      Cancels the automatic CPU hit.

      cancelPositionUpdate():Void

      Cancels the note position update (note will freeze).

      cancelWindowUpdate():Void

      Cancels the hit window update.

      recycle(note:Note, elapsed:Null<Float>, strum:Strum):NoteUpdateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/PauseCreationEvent.html b/pages/funkin/scripting/events/PauseCreationEvent.html deleted file mode 100644 index 142b0b72..00000000 --- a/pages/funkin/scripting/events/PauseCreationEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.PauseCreationEvent

      CANCEL this event to prevent default behaviour!

      Constructor

      new()

      Variables

      music:String

      Music that is going to be played

      options:Array<String>

      All option names

      Methods

      recycle(music:String, options:Array<String>):PauseCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/PlayAnimContext.html b/pages/funkin/scripting/events/PlayAnimContext.html deleted file mode 100644 index db367161..00000000 --- a/pages/funkin/scripting/events/PlayAnimContext.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -funkin.scripting.events.PlayAnimContext

      Contains all contexts possible for PlayAnimEvent.

      Variables

      @:value(cast "DANCE")@:impl@:enuminlineread onlyDANCE:PlayAnimContext = "DANCE"

      Whenever a dance animation is played. -The character's dancing wont be blocked.

      @:value(cast "LOCK")@:impl@:enuminlineread onlyLOCK:PlayAnimContext = "LOCK"

      Locks the character's animation. -Prevents the character from dancing, even if the animation ended.

      @:value(cast "MISS")@:impl@:enuminlineread onlyMISS:PlayAnimContext = "MISS"

      Whenever a note is missed and a miss animation will be played. -Only for scripting, since it has the same effects as SING.

      @:value(cast null)@:impl@:enuminlineread onlyNONE:PlayAnimContext = null

      No context was given for the animation. -The character won't dance until the animation is finished

      @:value(cast "SING")@:impl@:enuminlineread onlySING:PlayAnimContext = "SING"

      Whenever a note is hit and a sing animation will be played. -The character will only dance after their holdTime is reached.

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/PlayAnimEvent.html b/pages/funkin/scripting/events/PlayAnimEvent.html deleted file mode 100644 index 951d7b48..00000000 --- a/pages/funkin/scripting/events/PlayAnimEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.PlayAnimEvent

      Constructor

      new()

      Variables

      animName:String

      Name of the animation that's going to be played.

      context:PlayAnimContext

      Context of the animation

      force:Bool

      Whenever the animation will be forced or not.

      reverse:Bool

      Whenever the animation will play in reverse or not

      @:value(0)startingFrame:Int = 0

      The frame at which the animation will start playing

      Methods

      @:value({ startingFrame : 0 })recycle(animName:String, force:Bool, reverse:Bool, startingFrame:Int = 0, context:PlayAnimContext):PlayAnimEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/PointEvent.html b/pages/funkin/scripting/events/PointEvent.html deleted file mode 100644 index 442e4634..00000000 --- a/pages/funkin/scripting/events/PointEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.PointEvent

      Constructor

      new()

      Variables

      x:Float

      X position

      y:Float

      Y position

      Methods

      recycle(x:Float, y:Float):PointEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/RatingUpdateEvent.html b/pages/funkin/scripting/events/RatingUpdateEvent.html deleted file mode 100644 index 90590879..00000000 --- a/pages/funkin/scripting/events/RatingUpdateEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.RatingUpdateEvent

      Constructor

      new()

      Variables

      oldRating:ComboRating

      Old combo (may be null)

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/ResizeEvent.html b/pages/funkin/scripting/events/ResizeEvent.html deleted file mode 100644 index b8acb55e..00000000 --- a/pages/funkin/scripting/events/ResizeEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.ResizeEvent

      Constructor

      new()

      Variables

      height:Int

      New height

      oldHeight:Null<Int>

      Old height (may be null)

      oldWidth:Null<Int>

      Old width (may be null)

      width:Int

      New width

      Methods

      recycle(width:Int, height:Int, oldWidth:Null<Int>, oldHeight:Null<Int>):ResizeEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/SimpleNoteEvent.html b/pages/funkin/scripting/events/SimpleNoteEvent.html deleted file mode 100644 index 8787beb5..00000000 --- a/pages/funkin/scripting/events/SimpleNoteEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.SimpleNoteEvent

      Constructor

      new()

      Variables

      note:Note

      Note that is affected.

      Methods

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/StateEvent.html b/pages/funkin/scripting/events/StateEvent.html deleted file mode 100644 index bb543f7f..00000000 --- a/pages/funkin/scripting/events/StateEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.StateEvent

      Constructor

      new()

      Variables

      substate:FlxState

      Substate that is about to be opened/closed

      Methods

      recycle(substate:FlxState):StateEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/StrumCreationEvent.html b/pages/funkin/scripting/events/StrumCreationEvent.html deleted file mode 100644 index 952c8d41..00000000 --- a/pages/funkin/scripting/events/StrumCreationEvent.html +++ /dev/null @@ -1,13 +0,0 @@ - - - -funkin.scripting.events.StrumCreationEvent

      Constructor

      new()

      Variables

      player:Int

      s -Player ID

      @:value("game/notes/default")sprite:String = "game/notes/default"

      Sprite path, in case you only want to change the sprite.

      strum:Strum

      The strum that is being created

      strumID:Int

      Strum ID, for the sprite.

      Methods

      cancelAnimation():Void

      Cancels the animation that makes the strum "land" in the strumline.

      @:value({ sprite : "game/notes/default" })recycle(strum:Strum, player:Int, strumID:Int, sprite:String = "game/notes/default"):StrumCreationEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/SubstateEvent.html b/pages/funkin/scripting/events/SubstateEvent.html deleted file mode 100644 index 9e88c22d..00000000 --- a/pages/funkin/scripting/events/SubstateEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.SubstateEvent

      Constructor

      new(substate:FlxSubState)

      Variables

      substate:FlxSubState

      Substate that is about to be opened/closed

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      @:value({ c : true })preventDefault(c:Bool = true):Void

      Prevents default action from occuring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/WeekSelectEvent.html b/pages/funkin/scripting/events/WeekSelectEvent.html deleted file mode 100644 index 623774ea..00000000 --- a/pages/funkin/scripting/events/WeekSelectEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.scripting.events.WeekSelectEvent

      Constructor

      new()

      Variables

      difficulty:String

      The difficulty that has been selected

      difficultyID:Int

      At which emplacement the difficulty is. Goes from 0 to the number of weeks - 1.

      week:WeekData

      Week that is going to be selected

      weekID:Int

      At which emplacement the week is. Goes from 0 to the number of weeks - 1.

      Methods

      recycle(week:WeekData, difficulty:String, weekID:Int, difficultyID:Int):WeekSelectEvent

      Inherited Variables

      Defined by CancellableEvent

      @:value({ })data:Dynamic = { }

      Additional data if used in scripts

      Inherited Methods

      Defined by CancellableEvent

      destroy():Void

      @:value({ c : false })preventDefault(c:Bool = false):Void

      Prevents default action from occurring.

      Parameters:

      c

      Whenever the scripts following this one should be called or not. (Defaults to true)

      toString():String

      Returns a string representation of the event, in this format: -[CancellableEvent] -[CancellableEvent (Cancelled)]

      Returns:

      String

      \ No newline at end of file diff --git a/pages/funkin/scripting/events/index.html b/pages/funkin/scripting/events/index.html deleted file mode 100644 index fb2dafed..00000000 --- a/pages/funkin/scripting/events/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting.events
      \ No newline at end of file diff --git a/pages/funkin/scripting/index.html b/pages/funkin/scripting/index.html deleted file mode 100644 index 4dd64707..00000000 --- a/pages/funkin/scripting/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.scripting

      funkin.scripting

      ..
      events
      DummyScript

      Simple class for empty scripts or scripts whose language isn't imported yet.

      EventManager

      GlobalScript

      Class for THE Global Script, aka script that runs in the background at all times.

      HScript

      ModState

      ModSubState

      MultiThreadedScript

      Script

      Class used for scripting.

      ScriptPack

      \ No newline at end of file diff --git a/pages/funkin/shaders/CustomShader.html b/pages/funkin/shaders/CustomShader.html deleted file mode 100644 index b540dde5..00000000 --- a/pages/funkin/shaders/CustomShader.html +++ /dev/null @@ -1,13 +0,0 @@ - - - -funkin.shaders.CustomShader

      Class for custom shaders.

      -

      To create one, create a shaders folder in your assets/mod folder, then add a file named my-shader.frag or/and my-shader.vert.

      -

      Non-existent shaders will only load the default one, and throw a warning in the console.

      -

      To access the shader's uniform variables, use shader.variable

      Constructor

      @:value({ glslVersion : "120" })new(name:String, glslVersion:String = "120")

      Creates a new custom shader

      Parameters:

      name

      Name of the frag and vert files.

      glslVersion

      GLSL version to use. Defaults to 120.

      Inherited Variables

      Defined by FunkinShader

      @:value("120")glslVer:String = "120"

      Inherited Methods

      Defined by FunkinShader

      hget(v:String):Dynamic

      hset(v:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/shaders/FunkinShader.html b/pages/funkin/shaders/FunkinShader.html deleted file mode 100644 index 7abe7524..00000000 --- a/pages/funkin/shaders/FunkinShader.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.shaders.FunkinShader

      Constructor

      @:value({ glslVer : "120" })new(frag:String, vert:String, glslVer:String = "120")

      Creates a new shader from the specified fragment and vertex source. -Accepts #pragma header.

      Parameters:

      frag

      Fragment source (pass null to use default)

      vert

      Vertex source (pass null to use default)

      glslVer

      Version of GLSL to use (defaults to 120)

      Variables

      @:value("120")glslVer:String = "120"

      Methods

      hget(v:String):Dynamic

      hset(v:String, val:Dynamic):Dynamic

      \ No newline at end of file diff --git a/pages/funkin/shaders/ShaderTemplates.html b/pages/funkin/shaders/ShaderTemplates.html deleted file mode 100644 index f7ac5a3c..00000000 --- a/pages/funkin/shaders/ShaderTemplates.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.shaders.ShaderTemplates

      Static variables

      @:value("#pragma header\r\n\r\nvoid main(void)\r\n{\r\n\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n}")staticfinalread onlydefaultFragmentSource:String = "#pragma header\r\n\r\nvoid main(void)\r\n{\r\n\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\r\n}"

      @:value("#pragma header\r\n\r\nattribute float alpha;\r\nattribute vec4 colorMultiplier;\r\nattribute vec4 colorOffset;\r\nuniform bool hasColorTransform;\r\n\r\nvoid main(void)\r\n{\r\n\t#pragma body\r\n\r\n\topenfl_Alphav = openfl_Alpha * alpha;\r\n\r\n\tif (hasColorTransform)\r\n\t{\r\n\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t}\r\n}")staticfinalread onlydefaultVertexSource:String = "#pragma header\r\n\r\nattribute float alpha;\r\nattribute vec4 colorMultiplier;\r\nattribute vec4 colorOffset;\r\nuniform bool hasColorTransform;\r\n\r\nvoid main(void)\r\n{\r\n\t#pragma body\r\n\r\n\topenfl_Alphav = openfl_Alpha * alpha;\r\n\r\n\tif (hasColorTransform)\r\n\t{\r\n\t\topenfl_ColorOffsetv = colorOffset / 255.0;\r\n\t\topenfl_ColorMultiplierv = colorMultiplier;\r\n\t}\r\n}"

      @:value("vec4 color = texture2D (bitmap, openfl_TextureCoordv);\r\n\r\nif (color.a == 0.0) {\r\n\r\n\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n} else if (openfl_HasColorTransform) {\r\n\r\n\tcolor = vec4 (color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4 (0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0) {\r\n\r\n\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\r\n\t} else {\r\n\r\n\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n\t}\r\n\r\n} else {\r\n\r\n\tgl_FragColor = color * openfl_Alphav;\r\n\r\n}")staticfinalread onlyfragBody:String = "vec4 color = texture2D (bitmap, openfl_TextureCoordv);\r\n\r\nif (color.a == 0.0) {\r\n\r\n\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n} else if (openfl_HasColorTransform) {\r\n\r\n\tcolor = vec4 (color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4 (0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0) {\r\n\r\n\t\tgl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\r\n\t} else {\r\n\r\n\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\r\n\r\n\t}\r\n\r\n} else {\r\n\r\n\tgl_FragColor = color * openfl_Alphav;\r\n\r\n}"

      @:value("varying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;\r\nuniform sampler2D bitmap;\r\n\r\nuniform bool hasTransform;\r\nuniform bool hasColorTransform;\r\n\r\nvec4 flixel_texture2D(sampler2D bitmap, vec2 coord)\r\n{\r\n\tvec4 color = texture2D(bitmap, coord);\r\n\tif (!hasTransform)\r\n\t{\r\n\t\treturn color;\r\n\t}\r\n\r\n\tif (color.a == 0.0)\r\n\t{\r\n\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n\t}\r\n\r\n\tif (!hasColorTransform)\r\n\t{\r\n\t\treturn color * openfl_Alphav;\r\n\t}\r\n\r\n\tcolor = vec4(color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4(0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0)\r\n\t{\r\n\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t}\r\n\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n}\r\n\r\nuniform vec4 _camSize;\r\n\r\nfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\treturn min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n}\r\n\r\nvec2 getCamPos(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n}\r\nvec2 camToOg(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n}\r\nvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n}")staticfinalread onlyfragHeader:String = "varying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;\r\nuniform sampler2D bitmap;\r\n\r\nuniform bool hasTransform;\r\nuniform bool hasColorTransform;\r\n\r\nvec4 flixel_texture2D(sampler2D bitmap, vec2 coord)\r\n{\r\n\tvec4 color = texture2D(bitmap, coord);\r\n\tif (!hasTransform)\r\n\t{\r\n\t\treturn color;\r\n\t}\r\n\r\n\tif (color.a == 0.0)\r\n\t{\r\n\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n\t}\r\n\r\n\tif (!hasColorTransform)\r\n\t{\r\n\t\treturn color * openfl_Alphav;\r\n\t}\r\n\r\n\tcolor = vec4(color.rgb / color.a, color.a);\r\n\r\n\tmat4 colorMultiplier = mat4(0);\r\n\tcolorMultiplier[0][0] = openfl_ColorMultiplierv.x;\r\n\tcolorMultiplier[1][1] = openfl_ColorMultiplierv.y;\r\n\tcolorMultiplier[2][2] = openfl_ColorMultiplierv.z;\r\n\tcolorMultiplier[3][3] = openfl_ColorMultiplierv.w;\r\n\r\n\tcolor = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);\r\n\r\n\tif (color.a > 0.0)\r\n\t{\r\n\t\treturn vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\r\n\t}\r\n\treturn vec4(0.0, 0.0, 0.0, 0.0);\r\n}\r\n\r\nuniform vec4 _camSize;\r\n\r\nfloat map(float value, float min1, float max1, float min2, float max2) {\r\n\treturn min2 + (value - min1) * (max2 - min2) / (max1 - min1);\r\n}\r\n\r\nvec2 getCamPos(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0));\r\n}\r\nvec2 camToOg(vec2 pos) {\r\n\tvec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize);\r\n\treturn vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w));\r\n}\r\nvec4 textureCam(sampler2D bitmap, vec2 pos) {\r\n\treturn flixel_texture2D(bitmap, camToOg(pos));\r\n}"

      @:value("openfl_Alphav = openfl_Alpha;\r\nopenfl_TextureCoordv = openfl_TextureCoord;\r\n\r\nif (openfl_HasColorTransform) {\r\n\r\n\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\r\n\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\r\n\r\n}\r\n\r\ngl_Position = openfl_Matrix * openfl_Position;")staticfinalread onlyvertBody:String = "openfl_Alphav = openfl_Alpha;\r\nopenfl_TextureCoordv = openfl_TextureCoord;\r\n\r\nif (openfl_HasColorTransform) {\r\n\r\n\topenfl_ColorMultiplierv = openfl_ColorMultiplier;\r\n\topenfl_ColorOffsetv = openfl_ColorOffset / 255.0;\r\n\r\n}\r\n\r\ngl_Position = openfl_Matrix * openfl_Position;"

      @:value("attribute float openfl_Alpha;\r\nattribute vec4 openfl_ColorMultiplier;\r\nattribute vec4 openfl_ColorOffset;\r\nattribute vec4 openfl_Position;\r\nattribute vec2 openfl_TextureCoord;\r\n\r\nvarying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform mat4 openfl_Matrix;\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;")staticfinalread onlyvertHeader:String = "attribute float openfl_Alpha;\r\nattribute vec4 openfl_ColorMultiplier;\r\nattribute vec4 openfl_ColorOffset;\r\nattribute vec4 openfl_Position;\r\nattribute vec2 openfl_TextureCoord;\r\n\r\nvarying float openfl_Alphav;\r\nvarying vec4 openfl_ColorMultiplierv;\r\nvarying vec4 openfl_ColorOffsetv;\r\nvarying vec2 openfl_TextureCoordv;\r\n\r\nuniform mat4 openfl_Matrix;\r\nuniform bool openfl_HasColorTransform;\r\nuniform vec2 openfl_TextureSize;"

      \ No newline at end of file diff --git a/pages/funkin/shaders/ShaderTypeException.html b/pages/funkin/shaders/ShaderTypeException.html deleted file mode 100644 index 4da57f32..00000000 --- a/pages/funkin/shaders/ShaderTypeException.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.shaders.ShaderTypeException

      Constructor

      new(name:String, has:Class<Dynamic>, want:Dynamic)

      \ No newline at end of file diff --git a/pages/funkin/shaders/WiggleEffect.html b/pages/funkin/shaders/WiggleEffect.html deleted file mode 100644 index 1ff93130..00000000 --- a/pages/funkin/shaders/WiggleEffect.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.shaders.WiggleEffect

      Constructor

      new()

      Variables

      @:value(DREAMY)effectType:WiggleEffectType = DREAMY

      @:value(new WiggleShader())read onlyshader:WiggleShader = new WiggleShader()

      @:value(0)waveAmplitude:Float = 0

      @:value(0)waveFrequency:Float = 0

      @:value(0)waveSpeed:Float = 0

      Methods

      update(elapsed:Float):Void

      \ No newline at end of file diff --git a/pages/funkin/shaders/WiggleShader.html b/pages/funkin/shaders/WiggleShader.html deleted file mode 100644 index 1f3062b3..00000000 --- a/pages/funkin/shaders/WiggleShader.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.shaders.WiggleShader

      Constructor

      @:glFragmentSource("\n\t\t#pragma header\n\t\t//uniform float tx, ty; // x,y waves phase\n\t\tuniform float uTime;\n\t\t\n\t\tconst int EFFECT_TYPE_DREAMY = 0;\n\t\tconst int EFFECT_TYPE_WAVY = 1;\n\t\tconst int EFFECT_TYPE_HEAT_WAVE_HORIZONTAL = 2;\n\t\tconst int EFFECT_TYPE_HEAT_WAVE_VERTICAL = 3;\n\t\tconst int EFFECT_TYPE_FLAG = 4;\n\t\t\n\t\tuniform int effectType;\n\t\t\n\t\t/**\n\t\t * How fast the waves move over time\n\t\t */\n\t\tuniform float uSpeed;\n\t\t\n\t\t/**\n\t\t * Number of waves over time\n\t\t */\n\t\tuniform float uFrequency;\n\t\t\n\t\t/**\n\t\t * How much the pixels are going to stretch over the waves\n\t\t */\n\t\tuniform float uWaveAmplitude;\n\n\t\tvec2 sineWave(vec2 pt)\n\t\t{\n\t\t\tfloat x = 0.0;\n\t\t\tfloat y = 0.0;\n\t\t\t\n\t\t\tif (effectType == EFFECT_TYPE_DREAMY) \n\t\t\t{\n\t\t\t\tfloat offsetX = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude;\n pt.x += offsetX; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving\n\t\t\t}\n\t\t\telse if (effectType == EFFECT_TYPE_WAVY) \n\t\t\t{\n\t\t\t\tfloat offsetY = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude;\n\t\t\t\tpt.y += offsetY; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving\n\t\t\t}\n\t\t\telse if (effectType == EFFECT_TYPE_HEAT_WAVE_HORIZONTAL)\n\t\t\t{\n\t\t\t\tx = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude;\n\t\t\t}\n\t\t\telse if (effectType == EFFECT_TYPE_HEAT_WAVE_VERTICAL)\n\t\t\t{\n\t\t\t\ty = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude;\n\t\t\t}\n\t\t\telse if (effectType == EFFECT_TYPE_FLAG)\n\t\t\t{\n\t\t\t\ty = sin(pt.y * uFrequency + 10.0 * pt.x + uTime * uSpeed) * uWaveAmplitude;\n\t\t\t\tx = sin(pt.x * uFrequency + 5.0 * pt.y + uTime * uSpeed) * uWaveAmplitude;\n\t\t\t}\n\t\t\t\n\t\t\treturn vec2(pt.x + x, pt.y + y);\n\t\t}\n\n\t\tvoid main()\n\t\t{\n\t\t\tvec2 uv = sineWave(openfl_TextureCoordv);\n\t\t\tgl_FragColor = texture2D(bitmap, uv);\n\t\t}")new()

      Variables

      @:keepeffectType:ShaderParameter_Int

      @:keeptx:ShaderParameter_Float

      @:keepuFrequency:ShaderParameter_Float

      @:keepuSpeed:ShaderParameter_Float

      @:keepuTime:ShaderParameter_Float

      @:keepuWaveAmplitude:ShaderParameter_Float

      \ No newline at end of file diff --git a/pages/funkin/shaders/index.html b/pages/funkin/shaders/index.html deleted file mode 100644 index 9016c665..00000000 --- a/pages/funkin/shaders/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.shaders

      funkin.shaders

      ..
      CustomShader

      Class for custom shaders.

      FunkinShader

      ShaderTemplates

      ShaderTypeException

      \ No newline at end of file diff --git a/pages/funkin/system/Action.html b/pages/funkin/system/Action.html deleted file mode 100644 index b5482edb..00000000 --- a/pages/funkin/system/Action.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Action

      Variables

      @:value(cast "accept")@:impl@:enuminlineread onlyACCEPT:Action = "accept"

      @:value(cast "back")@:impl@:enuminlineread onlyBACK:Action = "back"

      @:value(cast "cheat")@:impl@:enuminlineread onlyCHEAT:Action = "cheat"

      @:value(cast "down")@:impl@:enuminlineread onlyDOWN:Action = "down"

      @:value(cast "down-press")@:impl@:enuminlineread onlyDOWN_P:Action = "down-press"

      @:value(cast "down-release")@:impl@:enuminlineread onlyDOWN_R:Action = "down-release"

      @:value(cast "left")@:impl@:enuminlineread onlyLEFT:Action = "left"

      @:value(cast "left-press")@:impl@:enuminlineread onlyLEFT_P:Action = "left-press"

      @:value(cast "left-release")@:impl@:enuminlineread onlyLEFT_R:Action = "left-release"

      @:value(cast "note-down")@:impl@:enuminlineread onlyNOTE_DOWN:Action = "note-down"

      @:value(cast "note-down-press")@:impl@:enuminlineread onlyNOTE_DOWN_P:Action = "note-down-press"

      @:value(cast "note-down-release")@:impl@:enuminlineread onlyNOTE_DOWN_R:Action = "note-down-release"

      @:value(cast "note-left")@:impl@:enuminlineread onlyNOTE_LEFT:Action = "note-left"

      @:value(cast "note-left-press")@:impl@:enuminlineread onlyNOTE_LEFT_P:Action = "note-left-press"

      @:value(cast "note-left-release")@:impl@:enuminlineread onlyNOTE_LEFT_R:Action = "note-left-release"

      @:value(cast "note-right")@:impl@:enuminlineread onlyNOTE_RIGHT:Action = "note-right"

      @:value(cast "note-right-press")@:impl@:enuminlineread onlyNOTE_RIGHT_P:Action = "note-right-press"

      @:value(cast "note-right-release")@:impl@:enuminlineread onlyNOTE_RIGHT_R:Action = "note-right-release"

      @:value(cast "note-up")@:impl@:enuminlineread onlyNOTE_UP:Action = "note-up"

      @:value(cast "note-up-press")@:impl@:enuminlineread onlyNOTE_UP_P:Action = "note-up-press"

      @:value(cast "note-up-release")@:impl@:enuminlineread onlyNOTE_UP_R:Action = "note-up-release"

      @:value(cast "pause")@:impl@:enuminlineread onlyPAUSE:Action = "pause"

      @:value(cast "reset")@:impl@:enuminlineread onlyRESET:Action = "reset"

      @:value(cast "right")@:impl@:enuminlineread onlyRIGHT:Action = "right"

      @:value(cast "right-press")@:impl@:enuminlineread onlyRIGHT_P:Action = "right-press"

      @:value(cast "right-release")@:impl@:enuminlineread onlyRIGHT_R:Action = "right-release"

      @:value(cast "switchmod")@:impl@:enuminlineread onlySWITCHMOD:Action = "switchmod"

      @:value(cast "up")@:impl@:enuminlineread onlyUP:Action = "up"

      @:value(cast "up-press")@:impl@:enuminlineread onlyUP_P:Action = "up-press"

      @:value(cast "up-release")@:impl@:enuminlineread onlyUP_R:Action = "up-release"

      \ No newline at end of file diff --git a/pages/funkin/system/AnimData.html b/pages/funkin/system/AnimData.html deleted file mode 100644 index 442341c1..00000000 --- a/pages/funkin/system/AnimData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.AnimData

      Fields

      y:Float

      x:Float

      name:String

      loop:Bool

      indices:Array<Int>

      fps:Int

      anim:String

      \ No newline at end of file diff --git a/pages/funkin/system/AssetSource.html b/pages/funkin/system/AssetSource.html deleted file mode 100644 index af632040..00000000 --- a/pages/funkin/system/AssetSource.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.AssetSource

      Variables

      @:value(cast null)@:impl@:enuminlineread onlyBOTH:AssetSource = null

      @:value(cast false)@:impl@:enuminlineread onlyMODS:AssetSource = false

      @:value(cast true)@:impl@:enuminlineread onlySOURCE:AssetSource = true

      \ No newline at end of file diff --git a/pages/funkin/system/AssetsLibraryList.html b/pages/funkin/system/AssetsLibraryList.html deleted file mode 100644 index f49954f9..00000000 --- a/pages/funkin/system/AssetsLibraryList.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.AssetsLibraryList

      Constructor

      new(?base:AssetLibrary)

      Variables

      base:AssetLibrary

      @:value([])libraries:Array<AssetLibrary> = []

      Methods

      addLibrary(lib:AssetLibrary):AssetLibrary

      @:value({ source : BOTH })existsSpecific(id:String, type:String, source:AssetSource = BOTH):Bool

      @:value({ source : BOTH })getFiles(folder:String, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH })getFolders(folder:String, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH })getSpecificAsset(id:String, type:String, source:AssetSource = BOTH):Dynamic

      @:value({ source : BOTH })getSpecificPath(id:String, source:AssetSource = BOTH):String

      removeLibrary(lib:AssetLibrary):AssetLibrary

      reset():Void

      \ No newline at end of file diff --git a/pages/funkin/system/BPMChangeEvent.html b/pages/funkin/system/BPMChangeEvent.html deleted file mode 100644 index 12ffa083..00000000 --- a/pages/funkin/system/BPMChangeEvent.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.system.BPMChangeEvent

      ... -@author

      Fields

      stepTime:Float

      songTime:Float

      bpm:Float

      \ No newline at end of file diff --git a/pages/funkin/system/Conductor.html b/pages/funkin/system/Conductor.html deleted file mode 100644 index d1bdef68..00000000 --- a/pages/funkin/system/Conductor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Conductor

      Static variables

      @:value(4)staticbeatsPerMesure:Float = 4

      Number of beats per mesure (top number in time signature). Defaults to 4.

      @:value(100)staticbpm:Float = 100

      Current BPM

      @:value([])staticbpmChangeMap:Array<BPMChangeEvent> = []

      Array of all BPM changes that have been mapped.

      @:value(((60 / bpm) * 1000))staticcrochet:Float = ((60 / bpm) * 1000)

      Current Crochet (time per beat), in milliseconds.

      @:value(0)staticcurBeat:Int = 0

      Current beat

      @:value(0)staticcurBeatFloat:Float = 0

      Current beat, as a Float (ex: 1.24, instead of 1)

      @:value(0)staticcurMeasure:Int = 0

      Current measure

      @:value(0)staticcurMeasureFloat:Float = 0

      Current measure, as a Float (ex: 1.24, instead of 1)

      @:value(0)staticcurStep:Int = 0

      Current step

      @:value(0)staticcurStepFloat:Float = 0

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new FlxTypedSignal())staticonBPMChange:FlxTypedSignal<Float ‑> Void> = new FlxTypedSignal()

      @:value(new FlxTypedSignal())staticonBeatHit:FlxTypedSignal<Int ‑> Void> = new FlxTypedSignal()

      FlxSignals

      @:value(new FlxTypedSignal())staticonStepHit:FlxTypedSignal<Int ‑> Void> = new FlxTypedSignal()

      staticsongPosition:Float

      Current position of the song, in milliseconds.

      @:value(crochet / 4)staticstepCrochet:Float = crochet / 4

      Current StepCrochet (time per step), in milliseconds.

      @:value(4)staticstepsPerBeat:Float = 4

      Number of steps per beat (bottom number in time signature). Defaults to 4.

      Static methods

      @:value({ stepsPerBeat : 4, beatsPerMesure : 4 })staticchangeBPM(newBpm:Float, beatsPerMesure:Float = 4, stepsPerBeat:Float = 4):Void

      staticgetStepForTime(time:Float):Float

      staticgetTimeForStep(step:Float):Float

      staticinit():Void

      staticmapBPMChanges(song:ChartData):Void

      Maps BPM changes from a song.

      Parameters:

      song

      Song to map BPM changes from.

      staticreset():Void

      staticsetupSong(SONG:ChartData):Void

      \ No newline at end of file diff --git a/pages/funkin/system/Controls.html b/pages/funkin/system/Controls.html deleted file mode 100644 index 79d7586f..00000000 --- a/pages/funkin/system/Controls.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -funkin.system.Controls

      A list of actions that a player would invoke via some input device. -Uses FlxActions to funnel various inputs to a single action.

      Constructor

      @:value({ scheme : None })new(name:String, scheme:KeyboardScheme = None)

      Variables

      read onlyACCEPT:Bool

      read onlyBACK:Bool

      read onlyCHEAT:Bool

      read onlyDOWN:Bool

      read onlyDOWN_P:Bool

      read onlyDOWN_R:Bool

      read onlyLEFT:Bool

      read onlyLEFT_P:Bool

      read onlyLEFT_R:Bool

      read onlyNOTE_DOWN:Bool

      read onlyNOTE_DOWN_P:Bool

      read onlyNOTE_DOWN_R:Bool

      read onlyNOTE_LEFT:Bool

      read onlyNOTE_LEFT_P:Bool

      read onlyNOTE_LEFT_R:Bool

      read onlyNOTE_RIGHT:Bool

      read onlyNOTE_RIGHT_P:Bool

      read onlyNOTE_RIGHT_R:Bool

      read onlyNOTE_UP:Bool

      read onlyNOTE_UP_P:Bool

      read onlyNOTE_UP_R:Bool

      read onlyPAUSE:Bool

      read onlyRESET:Bool

      read onlyRIGHT:Bool

      read onlyRIGHT_P:Bool

      read onlyRIGHT_R:Bool

      read onlySWITCHMOD:Bool

      read onlyUP:Bool

      read onlyUP_P:Bool

      read onlyUP_R:Bool

      @:value([])gamepadsAdded:Array<Int> = []

      @:value(KeyboardScheme.None)keyboardScheme:KeyboardScheme = KeyboardScheme.None

      Methods

      addDefaultGamepad(id:Int):Void

      addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void

      bindButtons(control:Control, id:Int, buttons:Array<FlxGamepadInputID>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. -If binder is a literal you can inline this

      bindKeys(control:Control, keys:Array<FlxKey>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. -If binder is a literal you can inline this

      checkByName(name:Action):Bool

      copyFrom(controls:Controls, ?device:Device):Void

      inlinecopyTo(controls:Controls, ?device:Device):Void

      getDialogueName(action:FlxActionDigital):String

      getDialogueNameFromToken(token:String):String

      getInputsFor(control:Control, device:Device, ?list:Array<Int>):Array<Int>

      removeDevice(device:Device):Void

      @:value({ deviceID : FlxInputDeviceID.ALL })removeGamepad(deviceID:Int = FlxInputDeviceID.ALL):Void

      replaceBinding(control:Control, device:Device, ?toAdd:Int, ?toRemove:Int):Void

      @:value({ reset : true })setKeyboardScheme(scheme:KeyboardScheme, reset:Bool = true):Void

      unbindButtons(control:Control, gamepadID:Int, buttons:Array<FlxGamepadInputID>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. -If binder is a literal you can inline this

      unbindKeys(control:Control, keys:Array<FlxKey>):Void

      Sets all actions that pertain to the binder to trigger when the supplied keys are used. -If binder is a literal you can inline this

      \ No newline at end of file diff --git a/pages/funkin/system/CoolUtil.html b/pages/funkin/system/CoolUtil.html deleted file mode 100644 index 440bf597..00000000 --- a/pages/funkin/system/CoolUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.CoolUtil

      Static methods

      static__loadSong(name:String, difficulty:String):Void

      staticaddZeros(str:String, num:Int):String

      @:value({ axes : XY })staticcameraCenter(obj:FlxObject, cam:FlxCamera, axes:FlxAxes = XY):Void

      staticcoolTextFile(path:String):Array<String>

      staticfpsLerp(v1:Float, v2:Float, ratio:Float):Float

      staticgetAtt(xml:Access, name:String):String

      staticgetColorFromDynamic(c:Dynamic):Null<FlxColor>

      Tries to get a color from a Dynamic variable.

      Parameters:

      c

      Dynamic color.

      Returns:

      The result color, or null if invalid.

      staticgetDefault<T>(v:T, defaultValue:T):T

      staticgetFPSRatio(ratio:Float):Float

      Modifies a lerp ratio based on current FPS to keep a stable speed on higher framerate.

      Parameters:

      ratio

      Ratio

      Returns:

      FPS-Modified Ratio

      staticgetSizeString(size:Float):String

      staticisNaN(v:Dynamic):Bool

      statickeyToString(key:Null<FlxKey>):String

      staticlast<T>(array:Array<T>):T

      @:value({ fpsSensitive : false })staticlerpColor(color1:FlxColor, color2:FlxColor, ratio:Float, fpsSensitive:Bool = false):FlxColor

      Lerps from color1 into color2 (Shortcut to FlxColor.interpolate)

      Parameters:

      color1

      Color 1

      color2

      Color 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should be case sentivive (adapted when game is running at 120 instead of 60)

      staticloadAnimatedGraphic(spr:FlxSprite, path:String):FlxSprite

      @:value({ Key : null, Unique : false })staticloadFrames(path:String, Unique:Bool = false, ?Key:String):FlxFramesCollection

      @:value({ difficulty : "normal" })staticloadSong(name:String, difficulty:String = "normal"):Void

      @:value({ difficulty : "normal" })staticloadWeek(weekData:WeekData, difficulty:String = "normal"):Void

      @:value({ min : 0 })staticnumberArray(max:Int, min:Int = 0):Array<Int>

      staticparseJson(assetPath:String):Unknown

      staticinlineparseJsonString(str:String):Unknown

      @:value({ volume : 1, menuSFX : 0 })staticplayMenuSFX(menuSFX:Int = 0, volume:Float = 1):Void

      Plays a specified Menu SFX.

      Parameters:

      menuSFX

      Menu SFX to play

      volume

      At which volume it should play

      @:value({ fadeIn : false })staticplayMenuSong(fadeIn:Bool = false):Void

      @:value({ Looped : true, Volume : 1, DefaultBPM : 102 })staticplayMusic(path:String, DefaultBPM:Int = 102, Volume:Int = 1, Looped:Bool = true, ?Group:FlxSoundGroup):Void

      staticsetFieldDefault<T>(v:Dynamic, name:String, defaultValue:T):T

      staticsetSpriteSize(sprite:FlxSprite, width:Float, height:Float):Void

      @:value({ maxScale : 0, fill : true })staticsetUnstretchedGraphicSize(sprite:FlxSprite, width:Int, height:Int, fill:Bool = true, maxScale:Float = 0):Void

      staticswitchAnimFrames(anim1:FlxAnimation, anim2:FlxAnimation):Void

      \ No newline at end of file diff --git a/pages/funkin/system/CrashHandler.html b/pages/funkin/system/CrashHandler.html deleted file mode 100644 index 13eecb2d..00000000 --- a/pages/funkin/system/CrashHandler.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.CrashHandler

      Static methods

      staticinit():Void

      staticonError(e:UncaughtErrorEvent):Void

      \ No newline at end of file diff --git a/pages/funkin/system/Device.html b/pages/funkin/system/Device.html deleted file mode 100644 index 5ca29900..00000000 --- a/pages/funkin/system/Device.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Device

      Values

      Gamepad(id:Int)

      \ No newline at end of file diff --git a/pages/funkin/system/DiscordClient.html b/pages/funkin/system/DiscordClient.html deleted file mode 100644 index 3ea7177a..00000000 --- a/pages/funkin/system/DiscordClient.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.DiscordClient

      Static methods

      staticchangePresence(details:String, state:Null<String>, ?smallImageKey:String, ?hasStartTimestamp:Bool, ?endTimestamp:Float):Void

      staticinitialize():Void

      staticshutdown():Void

      Constructor

      new()

      \ No newline at end of file diff --git a/pages/funkin/system/ErrorCode.html b/pages/funkin/system/ErrorCode.html deleted file mode 100644 index d92f7b4a..00000000 --- a/pages/funkin/system/ErrorCode.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.ErrorCode

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyFAILED:ErrorCode = 1

      @:value(cast 2)@:impl@:enuminlineread onlyMISSING_PROPERTY:ErrorCode = 2

      @:value(cast 0)@:impl@:enuminlineread onlyOK:ErrorCode = 0

      @:value(cast 5)@:impl@:enuminlineread onlyREFLECT_ERROR:ErrorCode = 5

      @:value(cast 3)@:impl@:enuminlineread onlyTYPE_INCORRECT:ErrorCode = 3

      @:value(cast 4)@:impl@:enuminlineread onlyVALUE_NULL:ErrorCode = 4

      \ No newline at end of file diff --git a/pages/funkin/system/FlxAnimate.html b/pages/funkin/system/FlxAnimate.html deleted file mode 100644 index 6e5a2799..00000000 --- a/pages/funkin/system/FlxAnimate.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.FlxAnimate

      Constructor

      new(?X:Float, ?Y:Float, ?Path:String, ?Settings:Null<Settings>)

      \ No newline at end of file diff --git a/pages/funkin/system/FramerateField.html b/pages/funkin/system/FramerateField.html deleted file mode 100644 index 7eed8b5c..00000000 --- a/pages/funkin/system/FramerateField.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.FramerateField

      Constructor

      @:value({ color : 0x000000, y : 10, x : 10 })new(x:Float = 10, y:Float = 10, color:Int = 0x000000)

      Variables

      @:value(false)debugMode:Bool = false

      Press F3 to enable

      @:value(0)lastFPS:Float = 0

      @:value(0)peak:Float = 0

      @:value(true)showFPS:Bool = true

      @:value(true)showMemory:Bool = true

      @:value(true)showMemoryPeak:Bool = true

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/FunkinGame.html b/pages/funkin/system/FunkinGame.html deleted file mode 100644 index ab688488..00000000 --- a/pages/funkin/system/FunkinGame.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.FunkinGame

      Constructor

      new(?GameWidth:Int, ?GameHeight:Int, ?InitialState:Class<FlxState>, ?Zoom:Float, ?UpdateFramerate:Int, ?DrawFramerate:Int, ?SkipSplash:Bool, ?StartFullscreen:Bool)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/FunkinRatioScaleMode.html b/pages/funkin/system/FunkinRatioScaleMode.html deleted file mode 100644 index f16d5a86..00000000 --- a/pages/funkin/system/FunkinRatioScaleMode.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.FunkinRatioScaleMode

      Constructor

      new(?fillScreen:Bool)

      Variables

      @:value(null)@:isVarheight:Null<Int> = null

      @:value(null)@:isVarwidth:Null<Int> = null

      Methods

      resetSize():Void

      \ No newline at end of file diff --git a/pages/funkin/system/FunkinSprite.html b/pages/funkin/system/FunkinSprite.html deleted file mode 100644 index 309c44b3..00000000 --- a/pages/funkin/system/FunkinSprite.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.FunkinSprite

      Static methods

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value(new Map<String,FlxPoint>())animOffsets:Map<String, FlxPoint> = new Map<String,FlxPoint>()

      @:value([])beatAnims:Array<String> = []

      @:value(1)initialZoom:Float = 1

      @:value(DANCE)lastAnimContext:PlayAnimContext = DANCE

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Methods

      @:value({ y : 0, x : 0 })addOffset(name:String, x:Float = 0, y:Float = 0):Void

      beatHit(curBeat:Int):Void

      inlinegetAnimName():String

      inlinegetAnimOffset(name:String):Null<FlxPoint>

      inlinehasAnimation(AnimName:String):Bool

      inlineisAnimFinished():Bool

      @:value({ Key : null, Unique : false })loadSprite(path:String, Unique:Bool = false, ?Key:String):Void

      measureHit(curMeasure:Int):Void

      @:value({ Frame : 0, Reversed : false, Context : NONE, Force : false })playAnim(AnimName:String, Force:Bool = false, Context:PlayAnimContext = NONE, Reversed:Bool = false, Frame:Int = 0):Void

      stepHit(curBeat:Int):Void

      switchOffset(anim1:String, anim2:String):Void

      \ No newline at end of file diff --git a/pages/funkin/system/GraphicCacheSprite.html b/pages/funkin/system/GraphicCacheSprite.html deleted file mode 100644 index c17b48ac..00000000 --- a/pages/funkin/system/GraphicCacheSprite.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.GraphicCacheSprite

      Dummy FlxSprite that allows you to cache FlxGraphics, and immediatly send them to GPU memory.

      Constructor

      new()

      Variables

      @:value([])cachedGraphics:Array<FlxGraphic> = []

      Array containing all of the graphics cached by this sprite.

      @:value([])nonRenderedCachedGraphics:Array<FlxGraphic> = []

      Array containing all of the non rendered (not sent to GPU) cached graphics.

      Methods

      cache(path:String):Void

      Caches a graphic at specified path.

      Parameters:

      path

      Path to the graphic.

      \ No newline at end of file diff --git a/pages/funkin/system/IniUtils.html b/pages/funkin/system/IniUtils.html deleted file mode 100644 index 07688bbf..00000000 --- a/pages/funkin/system/IniUtils.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.IniUtils

      DOESNT SUPPORT CATEGORIES YET!!

      Static methods

      staticinlineparseAsset(assetPath:String, ?defaultVariables:Map<String, String>):Map<String, String>

      staticparseString(data:String, ?defaultVariables:Map<String, String>):Map<String, String>

      \ No newline at end of file diff --git a/pages/funkin/system/KeyboardScheme.html b/pages/funkin/system/KeyboardScheme.html deleted file mode 100644 index 21bbc676..00000000 --- a/pages/funkin/system/KeyboardScheme.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.KeyboardScheme

      Values

      Duo(first:Bool)

      \ No newline at end of file diff --git a/pages/funkin/system/Level.html b/pages/funkin/system/Level.html deleted file mode 100644 index c9291517..00000000 --- a/pages/funkin/system/Level.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Level

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyERROR:Level = 2

      @:value(cast 0)@:impl@:enuminlineread onlyINFO:Level = 0

      @:value(cast 3)@:impl@:enuminlineread onlyTRACE:Level = 3

      @:value(cast 4)@:impl@:enuminlineread onlyVERBOSE:Level = 4

      @:value(cast 1)@:impl@:enuminlineread onlyWARNING:Level = 1

      \ No newline at end of file diff --git a/pages/funkin/system/LogText.html b/pages/funkin/system/LogText.html deleted file mode 100644 index 792bc8c1..00000000 --- a/pages/funkin/system/LogText.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.LogText

      Fields

      \ No newline at end of file diff --git a/pages/funkin/system/Logs.html b/pages/funkin/system/Logs.html deleted file mode 100644 index 640747c4..00000000 --- a/pages/funkin/system/Logs.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Logs

      Static variables

      @:value(Log.trace)staticnativeTrace:(v:Dynamic, infos:PosInfos) ‑> Void = Log.trace

      Static methods

      static__showInConsole(text:Array<LogText>):Void

      staticinit():Void

      @:value({ color : LIGHTGRAY })staticlogText(text:String, color:ConsoleColor = LIGHTGRAY):LogText

      @:value({ level : INFO })staticprepareColoredTrace(text:Array<LogText>, level:Level = INFO):Array<LogText>

      @:value({ color : LIGHTGRAY, level : INFO })statictrace(text:String, level:Level = INFO, color:ConsoleColor = LIGHTGRAY):Void

      @:value({ level : INFO })statictraceColored(text:Array<LogText>, level:Level = INFO):Void

      \ No newline at end of file diff --git a/pages/funkin/system/Main.html b/pages/funkin/system/Main.html deleted file mode 100644 index c60fb9b5..00000000 --- a/pages/funkin/system/Main.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Main

      Static variables

      @:value(0)@:keepstaticchangeID:Int = 0

      @:value(false)@:keepstaticforceGPUOnlyBitmapsOff:Bool = false

      @:value([])@:keepstaticgameThreads:Array<Thread> = []

      @:keepstaticinstance:Main

      @:value(null)@:keepstaticmodToLoad:String = null

      @:value("../../../../")@:keepstaticpathBack:String = "../../../../"

      @:value(false)@:keepstaticstartedFromSource:Bool = false

      @:value(0)@:keepstatictime:Int = 0

      Static methods

      @:keepstaticexecAsync(func:() ‑> Void):Void

      @:keepstaticinitTransition():Void

      @:keepstaticloadGameSettings():Void

      @:keepstaticmain():Void

      @:keepstaticrefreshAssets():Void

      Constructor

      @:keepnew()

      \ No newline at end of file diff --git a/pages/funkin/system/MainState.html b/pages/funkin/system/MainState.html deleted file mode 100644 index 60698e29..00000000 --- a/pages/funkin/system/MainState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.MainState

      Simple state used for loading the game

      Static variables

      @:value(false)staticbetaWarningShown:Bool = false

      @:value(false)staticinitiated:Bool = false

      Constructor

      new(?MaxSize:Int)

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/MarkdownUtil.html b/pages/funkin/system/MarkdownUtil.html deleted file mode 100644 index 327b7b16..00000000 --- a/pages/funkin/system/MarkdownUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.MarkdownUtil

      Static methods

      staticapplyMarkdownText(text:FlxText, str:String):Void

      @:value({ underline : false, italic : false, bold : false })staticcreateAdvancedMarkerPair(marker:String, color:FlxColor, size:Null<Float>, bold:Bool = false, italic:Bool = false, underline:Bool = false, ?blockIndent:Int, ?bullet:Bool):FlxTextFormatMarkerPair

      @:value({ emoteEnd : "\n" })staticparseEmote(text:String, emote:String, beginning:String, end:String, emoteEnd:String = "\n"):String

      staticparseWarnings(text:String):String

      staticprepareMarkdown(text:String):String

      \ No newline at end of file diff --git a/pages/funkin/system/MusicBeatGroup.html b/pages/funkin/system/MusicBeatGroup.html deleted file mode 100644 index 68f2cdf4..00000000 --- a/pages/funkin/system/MusicBeatGroup.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.MusicBeatGroup

      Constructor

      new(?X:Float, ?Y:Float, ?MaxSize:Int)

      Methods

      beatHit(curBeat:Int):Void

      measureHit(curMeasure:Int):Void

      stepHit(curStep:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/system/MusicBeatState.html b/pages/funkin/system/MusicBeatState.html deleted file mode 100644 index 2bab1400..00000000 --- a/pages/funkin/system/MusicBeatState.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.MusicBeatState

      Constructor

      @:value({ scriptsAllowed : true })new(scriptsAllowed:Bool = true, ?scriptName:String)

      Variables

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(new GraphicCacheSprite())graphicCache:GraphicCacheSprite = new GraphicCacheSprite()

      Dummy sprite used to cache graphics to GPU.

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Methods

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/system/MusicBeatSubstate.html b/pages/funkin/system/MusicBeatSubstate.html deleted file mode 100644 index 4698412e..00000000 --- a/pages/funkin/system/MusicBeatSubstate.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.MusicBeatSubstate

      Constructor

      @:value({ scriptsAllowed : true })new(scriptsAllowed:Bool = true, ?scriptName:String)

      Variables

      read onlycontrols:Controls

      Game Controls. (All players / Solo)

      read onlycontrolsP1:Controls

      Game Controls (Player 1 only)

      read onlycontrolsP2:Controls

      Game Controls (Player 2 only)

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurMeasure:Int

      Current beat

      read onlycurMeasureFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      parent:FlxState

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")

      Methods

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independent of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/system/OptimizedBitmapData.html b/pages/funkin/system/OptimizedBitmapData.html deleted file mode 100644 index 04377e39..00000000 --- a/pages/funkin/system/OptimizedBitmapData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.OptimizedBitmapData

      Constructor

      new(width:Int, height:Int, ?transparent:Bool, ?fillColor:UInt)

      \ No newline at end of file diff --git a/pages/funkin/system/Paths.html b/pages/funkin/system/Paths.html deleted file mode 100644 index 085f64ff..00000000 --- a/pages/funkin/system/Paths.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.system.Paths

      Static variables

      @:value("ogg")staticinlineread onlySOUND_EXT:String = "ogg"

      Preferred sound extension for the game's audio files. -Currently is set to mp3 for web targets, and ogg for other targets.

      @:value([])statictempFramesCache:Map<String, FlxFramesCollection> = []

      Static methods

      staticinlineawd(key:String):String

      @:value({ difficulty : "normal" })staticchart(song:String, difficulty:String = "normal"):String

      staticinlinedae(key:String):String

      @:value({ type : TEXT })staticinlinefile(file:String, type:AssetType = TEXT, ?library:String):String

      staticinlinefont(key:String):String

      staticinlinefragShader(key:String, ?library:String):String

      @:value({ source : BOTH, addPath : false })staticgetFolderContent(key:String, addPath:Bool = false, source:AssetSource = BOTH):Array<String>

      @:value({ source : BOTH, addPath : false })staticgetFolderDirectories(key:String, addPath:Bool = false, source:AssetSource = BOTH):Array<String>

      staticgetFrames(key:String, ?library:String):Null<FlxFramesCollection>

      @:value({ library : "default" })staticgetLibraryPath(file:String, library:String = "default"):String

      staticinlinegetPackerAtlas(key:String, ?library:String):FlxAtlasFrames

      staticinlinegetPackerAtlasAlt(key:String):FlxAtlasFrames

      @:value({ skipModsVerification : false })staticgetPath(file:String, type:AssetType, library:Null<String>, skipModsVerification:Bool = false):String

      staticinlinegetSparrowAtlas(key:String, ?library:String):FlxAtlasFrames

      staticinlinegetSparrowAtlasAlt(key:String):FlxAtlasFrames

      @:value({ checkForAtlas : false })staticinlineimage(key:String, ?library:String, checkForAtlas:Bool = false):String

      staticinlineini(key:String, ?library:String):String

      staticinit():Void

      @:value({ difficulty : "normal" })staticinlineinst(song:String, difficulty:String = "normal"):String

      staticinlinejson(key:String, ?library:String):String

      staticinlinemd2(key:String):String

      staticinlinemd5(key:String):String

      staticinlinemusic(key:String, ?library:String):String

      staticndll(key:String):String

      staticinlineobj(key:String):String

      staticinlineps1(key:String, ?library:String):String

      @:value({ isAssetsPath : false })staticinlinescript(key:String, ?library:String, isAssetsPath:Bool = false):String

      staticsound(key:String, ?library:String):String

      staticinlinesoundRandom(key:String, min:Int, max:Int, ?library:String):String

      staticinlinetxt(key:String, ?library:String):String

      staticinlinevertShader(key:String, ?library:String):String

      staticvideo(key:String):String

      @:value({ difficulty : "normal" })staticinlinevoices(song:String, difficulty:String = "normal"):String

      staticinlinexml(key:String, ?library:String):String

      \ No newline at end of file diff --git a/pages/funkin/system/PlayingSound.html b/pages/funkin/system/PlayingSound.html deleted file mode 100644 index bc2a530b..00000000 --- a/pages/funkin/system/PlayingSound.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.PlayingSound

      Fields

      time:Float

      sound:FlxSound

      \ No newline at end of file diff --git a/pages/funkin/system/Section.html b/pages/funkin/system/Section.html deleted file mode 100644 index e04d7e43..00000000 --- a/pages/funkin/system/Section.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Section

      Static variables

      @:value(0)staticCOPYCAT:Int = 0

      Copies the first section into the second section!

      Constructor

      @:value({ lengthInSteps : 16 })new(lengthInSteps:Int = 16)

      Variables

      @:value(16)lengthInSteps:Int = 16

      @:value(true)mustHitSection:Bool = true

      @:value([])sectionNotes:Array<Dynamic> = []

      @:value(0)typeOfSection:Int = 0

      \ No newline at end of file diff --git a/pages/funkin/system/Song.html b/pages/funkin/system/Song.html deleted file mode 100644 index 9119e476..00000000 --- a/pages/funkin/system/Song.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.Song

      Static methods

      @:value({ difficulty : "normal" })staticloadFromJson(songName:String, difficulty:String = "normal"):SwagSong

      staticparseJSONshit(rawJson:String):SwagSong

      \ No newline at end of file diff --git a/pages/funkin/system/StrNameLabel.html b/pages/funkin/system/StrNameLabel.html deleted file mode 100644 index 735ce083..00000000 --- a/pages/funkin/system/StrNameLabel.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.StrNameLabel

      Constructor

      new(name:String, label:String)

      Variables

      label:String

      name:String

      \ No newline at end of file diff --git a/pages/funkin/system/SwagSection.html b/pages/funkin/system/SwagSection.html deleted file mode 100644 index 727174f6..00000000 --- a/pages/funkin/system/SwagSection.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.SwagSection

      Fields

      sectionNotes:Array<Dynamic>

      @:optionaloptionalcamTarget:Null<Float>

      bpm:Float

      altAnim:Bool

      \ No newline at end of file diff --git a/pages/funkin/system/SwagSong.html b/pages/funkin/system/SwagSong.html deleted file mode 100644 index 0eae3f82..00000000 --- a/pages/funkin/system/SwagSong.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.SwagSong

      Fields

      @:optionaloptionalstepsPerBeat:Null<Float>

      stage:String

      speed:Float

      song:String

      player2:String

      player1:String

      noteTypes:Array<String>

      @:optionaloptionalmaxHealth:Null<Float>

      gf:String

      bpm:Float

      @:optionaloptionalbeatsPerMesure:Null<Float>

      \ No newline at end of file diff --git a/pages/funkin/system/XMLAnimType.html b/pages/funkin/system/XMLAnimType.html deleted file mode 100644 index 18283127..00000000 --- a/pages/funkin/system/XMLAnimType.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.XMLAnimType

      Static methods

      @:value({ def : NONE })staticfromString(str:String, def:XMLAnimType = NONE):XMLAnimType

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyBEAT:XMLAnimType = 1

      @:value(cast 2)@:impl@:enuminlineread onlyLOOP:XMLAnimType = 2

      @:value(cast 0)@:impl@:enuminlineread onlyNONE:XMLAnimType = 0

      \ No newline at end of file diff --git a/pages/funkin/system/XMLSprite.html b/pages/funkin/system/XMLSprite.html deleted file mode 100644 index 271e0ec3..00000000 --- a/pages/funkin/system/XMLSprite.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.XMLSprite

      Constructor

      new(?X:Float, ?Y:Float, ?SimpleGraphic:Null<FlxGraphicAsset>)

      Variables

      @:value([])beatAnims:Array<String> = []

      @:value(1)initialZoom:Float = 1

      name:String

      @:value(NONE)spriteAnimType:XMLAnimType = NONE

      @:value(1)zoomFactor:Float = 1

      Methods

      beatHit(curBeat:Int):Void

      stepHit(curBeat:Int):Void

      \ No newline at end of file diff --git a/pages/funkin/system/XMLUtil.html b/pages/funkin/system/XMLUtil.html deleted file mode 100644 index a46b7aec..00000000 --- a/pages/funkin/system/XMLUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.XMLUtil

      Class made to make XML parsing easier.

      Static methods

      @:value({ loop : false })staticaddXMLAnimation(sprite:FlxSprite, anim:Access, loop:Bool = false):ErrorCode

      Adds an XML animation to sprite.

      Parameters:

      sprite

      Destination sprite

      anim

      Animation (Must be a anim XML node)

      staticapplyXMLProperty(object:Dynamic, property:Access):ErrorCode

      Applies a property XML node to an object.

      Parameters:

      object

      Object to which the xml property will be applied

      property

      property node.

      @:value({ defaultAnimType : BEAT, parentFolder : "" })staticcreateSpriteFromXML(node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT, ?cl:Class<XMLSprite>):XMLSprite

      Creates a new sprite based on a XML node.

      \ No newline at end of file diff --git a/pages/funkin/system/ZipProgress.html b/pages/funkin/system/ZipProgress.html deleted file mode 100644 index 6970cdae..00000000 --- a/pages/funkin/system/ZipProgress.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.ZipProgress

      Constructor

      new()

      Variables

      @:value(0)curFile:Int = 0

      @:value(false)done:Bool = false

      @:value(null)error:Exception = null

      @:value(0)fileCount:Int = 0

      read onlypercentage:Float

      \ No newline at end of file diff --git a/pages/funkin/system/ZipReader.html b/pages/funkin/system/ZipReader.html deleted file mode 100644 index dc0a2e31..00000000 --- a/pages/funkin/system/ZipReader.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.ZipReader

      Constructor

      new(i:Input)

      Variables

      files:List<Entry>

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/ZipUtils.html b/pages/funkin/system/ZipUtils.html deleted file mode 100644 index 932685ac..00000000 --- a/pages/funkin/system/ZipUtils.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.ZipUtils

      Static variables

      @:value([".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"])staticbannedNames:Array<String> = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"]

      Static methods

      staticarrayToList(array:Array<Entry>):List<Entry>

      [Description] Converts an Array<Entry> to a List<Entry>.

      Parameters:

      array

      Returns:

      List

      staticcreateZipFile(path:String):ZipWriter

      [Description] Creates a ZIP file at the specified location and returns the Writer.

      Parameters:

      path

      Returns:

      Writer

      staticopenZip(zipPath:String):Reader

      [Description] Returns a zip.Reader instance from path.

      Parameters:

      zipPath

      Returns:

      Reader

      staticuncompressZip(zip:Reader, destFolder:String, ?prefix:String, ?prog:ZipProgress):ZipProgress

      [Description] Uncompresses zip into the destFolder folder

      Parameters:

      zip
      null

      destFolder

      staticuncompressZipAsync(zip:Reader, destFolder:String, ?prog:ZipProgress, ?prefix:String):ZipProgress

      staticunzip(f:Entry):Null<Bytes>

      [Description] Copy of haxe's Zip unzip function cause lime replaced it.

      Parameters:

      f

      Zip entry

      staticwriteFolderToZip(zip:ZipWriter, path:String, ?prefix:String, ?prog:ZipProgress, ?whitelist:Array<String>):ZipProgress

      [Description] Writes the entirety of a folder to a zip file.

      Parameters:

      zip

      ZIP file to write to

      path

      Folder path

      prefix

      (Additional) allows you to set a prefix in the zip itself.

      staticwriteFolderToZipAsync(zip:ZipWriter, path:String, ?prefix:String):ZipProgress

      \ No newline at end of file diff --git a/pages/funkin/system/ZipWriter.html b/pages/funkin/system/ZipWriter.html deleted file mode 100644 index 003503e0..00000000 --- a/pages/funkin/system/ZipWriter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.ZipWriter

      Constructor

      new(o:Output)

      Methods

      close():Void

      flush():Void

      writeFile(entry:Entry):Void

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/AssetTreeInfo.html b/pages/funkin/system/framerate/AssetTreeInfo.html deleted file mode 100644 index a53a67d8..00000000 --- a/pages/funkin/system/framerate/AssetTreeInfo.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.AssetTreeInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/ConductorInfo.html b/pages/funkin/system/framerate/ConductorInfo.html deleted file mode 100644 index 4b4fce64..00000000 --- a/pages/funkin/system/framerate/ConductorInfo.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.ConductorInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/FlixelInfo.html b/pages/funkin/system/framerate/FlixelInfo.html deleted file mode 100644 index dc99d98d..00000000 --- a/pages/funkin/system/framerate/FlixelInfo.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.FlixelInfo

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/Framerate.html b/pages/funkin/system/framerate/Framerate.html deleted file mode 100644 index 8eb428ba..00000000 --- a/pages/funkin/system/framerate/Framerate.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.Framerate

      Static variables

      @:value(null)@:isVarstaticread only__bitmap:BitmapData = null

      @:value(false)staticdebugMode:Bool = false

      @:value("${Sys.getEnv(\"windir\")}\\Fonts\\consola.ttf")staticfontName:String = "${Sys.getEnv(\"windir\")}\\Fonts\\consola.ttf"

      @:value(new FlxPoint())staticoffset:FlxPoint = new FlxPoint()

      statictextFormat:TextFormat

      Constructor

      new()

      Variables

      bgSprite:Bitmap

      @:value([])categories:Array<FramerateCategory> = []

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/FramerateCategory.html b/pages/funkin/system/framerate/FramerateCategory.html deleted file mode 100644 index e3252cc8..00000000 --- a/pages/funkin/system/framerate/FramerateCategory.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.FramerateCategory

      Constructor

      @:value({ text : "" })new(title:String, text:String = "")

      Variables

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/FramerateCounter.html b/pages/funkin/system/framerate/FramerateCounter.html deleted file mode 100644 index 7c860a64..00000000 --- a/pages/funkin/system/framerate/FramerateCounter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.FramerateCounter

      Constructor

      new()

      Variables

      fpsLabel:TextField

      fpsNum:TextField

      @:value(0)lastFPS:Float = 0

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/MemoryCounter.html b/pages/funkin/system/framerate/MemoryCounter.html deleted file mode 100644 index 1d304f41..00000000 --- a/pages/funkin/system/framerate/MemoryCounter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.MemoryCounter

      Constructor

      new()

      Variables

      @:value(0)memory:Float = 0

      @:value(0)memoryPeak:Float = 0

      memoryPeakText:TextField

      memoryText:TextField

      Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/SystemInfo.html b/pages/funkin/system/framerate/SystemInfo.html deleted file mode 100644 index ba54d92a..00000000 --- a/pages/funkin/system/framerate/SystemInfo.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate.SystemInfo

      Static variables

      @:value("Unknown")staticcpuName:String = "Unknown"

      @:value("Unknown")staticgpuName:String = "Unknown"

      @:value("Unknown")staticmemType:String = "Unknown"

      @:value("Unknown")staticosInfo:String = "Unknown"

      @:value("Unknown")statictotalMem:String = "Unknown"

      @:value("Unknown")staticvRAM:String = "Unknown"

      Static methods

      staticinlineinit():Void

      Constructor

      new()

      Methods

      Inherited Variables

      Defined by FramerateCategory

      bgSprite:Bitmap

      text:TextField

      title:TextField

      Inherited Methods

      \ No newline at end of file diff --git a/pages/funkin/system/framerate/index.html b/pages/funkin/system/framerate/index.html deleted file mode 100644 index 7ace2927..00000000 --- a/pages/funkin/system/framerate/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.framerate
      \ No newline at end of file diff --git a/pages/funkin/system/index.html b/pages/funkin/system/index.html deleted file mode 100644 index dcedf613..00000000 --- a/pages/funkin/system/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -funkin.system

      funkin.system

      ..
      framerate
      modules
      Action

      AssetSource

      AssetsLibraryList

      BPMChangeEvent

      ... -@author

      CommandLineHandler

      Conductor

      Control

      Since, in many cases multiple actions should use similar keys, we don't want the -rebinding UI to list every action. ActionBinders are what the user perceives as -an input so, for instance, they can't set jump-press and jump-release to different keys.

      Controls

      A list of actions that a player would invoke via some input device. -Uses FlxActions to funnel various inputs to a single action.

      Device

      ErrorCode

      FlxAnimate

      FunkinGame

      FunkinRatioScaleMode

      FunkinSprite

      GraphicCacheSprite

      Dummy FlxSprite that allows you to cache FlxGraphics, and immediatly send them to GPU memory.

      KeyboardScheme

      Level

      LogText

      Logs

      Main

      MainState

      Simple state used for loading the game

      MusicBeatGroup

      MusicBeatState

      MusicBeatSubstate

      OptimizedBitmapData

      Paths

      XMLAnimType

      \ No newline at end of file diff --git a/pages/funkin/system/modules/FunkinCache.html b/pages/funkin/system/modules/FunkinCache.html deleted file mode 100644 index fad858ae..00000000 --- a/pages/funkin/system/modules/FunkinCache.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.system.modules.FunkinCache

      Static variables

      Static methods

      staticinit():Void

      Constructor

      new()

      Methods

      getBitmapData(id:String):BitmapData

      Retrieves a cached BitmapData.

      Parameters:

      id

      The ID of the cached BitmapData

      Returns:

      The cached BitmapData instance

      getFont(id:String):Font

      Retrieves a cached Font.

      Parameters:

      id

      The ID of the cached Font

      Returns:

      The cached Font instance

      getSound(id:String):Sound

      Retrieves a cached Sound.

      Parameters:

      id

      The ID of the cached Sound

      Returns:

      The cached Sound instance

      hasBitmapData(id:String):Bool

      Checks whether a BitmapData asset is cached.

      Parameters:

      id

      The ID of a BitmapData asset

      Returns:

      Whether the object has been cached

      hasFont(id:String):Bool

      Checks whether a Font asset is cached.

      Parameters:

      id

      The ID of a Font asset

      Returns:

      Whether the object has been cached

      hasSound(id:String):Bool

      Checks whether a Sound asset is cached.

      Parameters:

      id

      The ID of a Sound asset

      Returns:

      Whether the object has been cached

      removeBitmapData(id:String):Bool

      Removes a BitmapData from the cache.

      Parameters:

      id

      The ID of a BitmapData asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      removeFont(id:String):Bool

      Removes a Font from the cache.

      Parameters:

      id

      The ID of a Font asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      removeSound(id:String):Bool

      Removes a Sound from the cache.

      Parameters:

      id

      The ID of a Sound asset

      Returns:

      true if the asset was removed, false if it was not in the cache

      \ No newline at end of file diff --git a/pages/funkin/ui/AlphaCharacter.html b/pages/funkin/ui/AlphaCharacter.html deleted file mode 100644 index d7856e01..00000000 --- a/pages/funkin/ui/AlphaCharacter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.ui.AlphaCharacter

      Static variables

      staticboldAlphabetPath:String

      @:value([])staticboldAnims:Map<String, String> = []

      staticletterAlphabetPath:String

      @:value([])staticletterAnims:Map<String, String> = []

      Constructor

      new(x:Float, y:Float)

      Variables

      @:value(0)row:Int = 0

      Methods

      createBold(letter:String):Void

      createLetter(letter:String):Void

      setColor(c:FlxColor, isBold:Bool):Void

      \ No newline at end of file diff --git a/pages/funkin/ui/Alphabet.html b/pages/funkin/ui/Alphabet.html deleted file mode 100644 index 09c11618..00000000 --- a/pages/funkin/ui/Alphabet.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.ui.Alphabet

      Loosely based on FlxTypeText lolol

      Constructor

      @:value({ typed : false, bold : false, text : "" })new(x:Float, y:Float, text:String = "", bold:Bool = false, typed:Bool = false)

      Variables

      @:value(0.05)delay:Float = 0.05

      @:value(false)isMenuItem:Bool = false

      @:value(false)paused:Bool = false

      @:value("gf")personTalking:String = "gf"

      @:value(0)targetY:Float = 0

      @:value("")text:String = ""

      @:value(FlxG.width)widthOfWords:Float = FlxG.width

      Methods

      addText():Void

      refreshAlphabetXML(path:String):Void

      \ No newline at end of file diff --git a/pages/funkin/ui/FunkinText.html b/pages/funkin/ui/FunkinText.html deleted file mode 100644 index 51973b10..00000000 --- a/pages/funkin/ui/FunkinText.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.ui.FunkinText

      Constructor

      @:value({ Border : true, Size : 16, FieldWidth : 0, Y : 0, X : 0 })new(X:Float = 0, Y:Float = 0, FieldWidth:Float = 0, ?Text:String, Size:Int = 16, Border:Bool = true)

      \ No newline at end of file diff --git a/pages/funkin/ui/index.html b/pages/funkin/ui/index.html deleted file mode 100644 index 96809e52..00000000 --- a/pages/funkin/ui/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.ui

      funkin.ui

      ..
      AlphaCharacter

      Alphabet

      Loosely based on FlxTypeText lolol

      FunkinText

      \ No newline at end of file diff --git a/pages/funkin/updating/AsyncUpdater.html b/pages/funkin/updating/AsyncUpdater.html deleted file mode 100644 index 3d04f9b3..00000000 --- a/pages/funkin/updating/AsyncUpdater.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.AsyncUpdater

      Static variables

      @:value("update-windows.exe")staticexecutableGitHubName:String = "update-windows.exe"

      @:value("CodenameEngine.exe")staticexecutableName:String = "CodenameEngine.exe"

      Constructor

      new(releases:Array<GitHubRelease>)

      Variables

      downloadStream:URLLoader

      @:value(false)executableReplaced:Bool = false

      @:value(0)lastTime:Float = 0

      @:value(0)oldBytesLoaded:Float = 0

      path:String

      @:value(new UpdaterProgress())progress:UpdaterProgress = new UpdaterProgress()

      Methods

      doFile(files:Array<String>, fileNames:Array<String>, onFinish:() ‑> Void):Void

      execute():Void

      installFiles(files:Array<String>):Void

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdateAvailableScreen.html b/pages/funkin/updating/UpdateAvailableScreen.html deleted file mode 100644 index 311b3754..00000000 --- a/pages/funkin/updating/UpdateAvailableScreen.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdateAvailableScreen

      Constructor

      Variables

      Methods

      select():Void

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls.

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independant of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdateCheckCallback.html b/pages/funkin/updating/UpdateCheckCallback.html deleted file mode 100644 index c4d102ed..00000000 --- a/pages/funkin/updating/UpdateCheckCallback.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdateCheckCallback

      Fields

      @:optionaloptionalupdates:Null<Array<GitHubRelease>>

      success:Bool

      @:optionaloptionalnewVersionTag:Null<String>

      @:optionaloptionalcurrentVersionTag:Null<String>

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdateScreen.html b/pages/funkin/updating/UpdateScreen.html deleted file mode 100644 index 17b3dc4c..00000000 --- a/pages/funkin/updating/UpdateScreen.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdateScreen

      Constructor

      Variables

      bf:FlxSprite

      @:value(false)done:Bool = false

      @:value(0)elapsedTime:Float = 0

      @:value(0)lerpSpeed:Float = 0

      overSound:FlxSound

      Methods

      Inherited Variables

      Defined by MusicBeatState

      @:value(false)cancelConductorUpdate:Bool = false

      Whenever the Conductor auto update should be enabled or not.

      read onlycontrols:Controls

      Game Controls.

      read onlycurBeat:Int

      Current beat

      read onlycurBeatFloat:Float

      Current beat, as a Float (ex: 1.24, instead of 1)

      read onlycurStep:Int

      Current step

      read onlycurStepFloat:Float

      Current step, as a Float (ex: 4.94, instead of 4)

      @:value(null)scriptName:String = null

      @:value(true)scriptsAllowed:Bool = true

      read onlysongPos:Float

      Current song position (in milliseconds).

      stateScript:Script

      Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: data/states/FreeplayState)

      Inherited Methods

      Defined by MusicBeatState

      call(name:String, ?args:Array<Dynamic>, ?defaultVal:Dynamic):Dynamic

      event<T>(name:String, event:T):T

      @:value({ fpsSensitive : false })lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false):Float

      Shortcut to FlxMath.lerp or CoolUtil.lerp, depending on fpsSensitive

      Parameters:

      v1

      Value 1

      v2

      Value 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should not be adjusted to run at the same speed independant of framerate.

      openSubState(subState:FlxSubState):Void

      SCRIPTING STUFF

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdateUtil.html b/pages/funkin/updating/UpdateUtil.html deleted file mode 100644 index cbeb36a5..00000000 --- a/pages/funkin/updating/UpdateUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdateUtil

      Static variables

      @:value("CodenameTestRepo")staticfinalread onlyrepoName:String = "CodenameTestRepo"

      @:value("YoshiCrafter29")staticfinalread onlyrepoOwner:String = "YoshiCrafter29"

      Static methods

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdaterProgress.html b/pages/funkin/updating/UpdaterProgress.html deleted file mode 100644 index ae608349..00000000 --- a/pages/funkin/updating/UpdaterProgress.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdaterProgress

      Constructor

      new()

      Variables

      @:value(0)bytesLoaded:Float = 0

      @:value(0)bytesTotal:Float = 0

      @:value(0)curFile:Int = 0

      @:value("")curFileName:String = ""

      @:value(new ZipProgress())curZipProgress:ZipProgress = new ZipProgress()

      @:value(false)done:Bool = false

      @:value(0)downloadSpeed:Float = 0

      @:value(0)files:Int = 0

      @:value(PREPARING)step:UpdaterStep = PREPARING

      \ No newline at end of file diff --git a/pages/funkin/updating/UpdaterStep.html b/pages/funkin/updating/UpdaterStep.html deleted file mode 100644 index c6d51db7..00000000 --- a/pages/funkin/updating/UpdaterStep.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.updating.UpdaterStep

      Variables

      @:value(cast 1)@:impl@:enuminlineread onlyDOWNLOADING_ASSETS:UpdaterStep = 1

      @:value(cast 2)@:impl@:enuminlineread onlyDOWNLOADING_EXECUTABLE:UpdaterStep = 2

      @:value(cast 3)@:impl@:enuminlineread onlyINSTALLING:UpdaterStep = 3

      @:value(cast 0)@:impl@:enuminlineread onlyPREPARING:UpdaterStep = 0

      \ No newline at end of file diff --git a/pages/funkin/utils/AnimData.html b/pages/funkin/utils/AnimData.html deleted file mode 100644 index 82b22105..00000000 --- a/pages/funkin/utils/AnimData.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.AnimData

      Fields

      y:Float

      x:Float

      name:String

      loop:Bool

      indices:Array<Int>

      fps:Int

      anim:String

      \ No newline at end of file diff --git a/pages/funkin/utils/BitmapUtil.html b/pages/funkin/utils/BitmapUtil.html deleted file mode 100644 index a3f79d4d..00000000 --- a/pages/funkin/utils/BitmapUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.BitmapUtil

      Static methods

      staticgetMostPresentColor(bmap:BitmapData):FlxColor

      Returns the most present color in a Bitmap.

      Parameters:

      bmap

      Bitmap

      Returns:

      FlxColor Color that is the most present.

      staticgetMostPresentSaturatedColor(bmap:BitmapData):FlxColor

      Returns the most present saturated color in a Bitmap.

      Parameters:

      bmap

      Bitmap

      Returns:

      FlxColor Color that is the most present.

      \ No newline at end of file diff --git a/pages/funkin/utils/ConsoleColor.html b/pages/funkin/utils/ConsoleColor.html deleted file mode 100644 index 50d20024..00000000 --- a/pages/funkin/utils/ConsoleColor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ConsoleColor

      Variables

      @:value(cast 0)@:impl@:enuminlineread onlyBLACK:ConsoleColor = 0

      @:value(cast 9)@:impl@:enuminlineread onlyBLUE:ConsoleColor = 9

      @:value(cast 11)@:impl@:enuminlineread onlyCYAN:ConsoleColor = 11

      @:value(cast 1)@:impl@:enuminlineread onlyDARKBLUE:ConsoleColor = 1

      @:value(cast 3)@:impl@:enuminlineread onlyDARKCYAN:ConsoleColor = 3

      @:value(cast 2)@:impl@:enuminlineread onlyDARKGREEN:ConsoleColor = 2

      @:value(cast 5)@:impl@:enuminlineread onlyDARKMAGENTA:ConsoleColor = 5

      @:value(cast 4)@:impl@:enuminlineread onlyDARKRED:ConsoleColor = 4

      @:value(cast 6)@:impl@:enuminlineread onlyDARKYELLOW:ConsoleColor = 6

      @:value(cast 8)@:impl@:enuminlineread onlyGRAY:ConsoleColor = 8

      @:value(cast 10)@:impl@:enuminlineread onlyGREEN:ConsoleColor = 10

      @:value(cast 7)@:impl@:enuminlineread onlyLIGHTGRAY:ConsoleColor = 7

      @:value(cast 13)@:impl@:enuminlineread onlyMAGENTA:ConsoleColor = 13

      @:value(cast 12)@:impl@:enuminlineread onlyRED:ConsoleColor = 12

      @:value(cast 15)@:impl@:enuminlineread onlyWHITE:ConsoleColor = 15

      @:value(cast 14)@:impl@:enuminlineread onlyYELLOW:ConsoleColor = 14

      \ No newline at end of file diff --git a/pages/funkin/utils/CoolSfx.html b/pages/funkin/utils/CoolSfx.html deleted file mode 100644 index 236c2a29..00000000 --- a/pages/funkin/utils/CoolSfx.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.CoolSfx

      SFXs to play using playMenuSFX.

      Variables

      @:value(cast 2)@:impl@:enuminlineread onlyCANCEL:CoolSfx = 2

      @:value(cast 3)@:impl@:enuminlineread onlyCHECKED:CoolSfx = 3

      @:value(cast 1)@:impl@:enuminlineread onlyCONFIRM:CoolSfx = 1

      @:value(cast 0)@:impl@:enuminlineread onlySCROLL:CoolSfx = 0

      @:value(cast 4)@:impl@:enuminlineread onlyUNCHECKED:CoolSfx = 4

      @:value(cast 5)@:impl@:enuminlineread onlyWARNING:CoolSfx = 5

      \ No newline at end of file diff --git a/pages/funkin/utils/CoolUtil.html b/pages/funkin/utils/CoolUtil.html deleted file mode 100644 index 35507287..00000000 --- a/pages/funkin/utils/CoolUtil.html +++ /dev/null @@ -1,17 +0,0 @@ - - - -funkin.utils.CoolUtil

      Static methods

      static__loadSong(name:String, difficulty:String):Void

      (INTERNAL) Loads a song without resetting story mode/opponent mode/coop mode values.

      Parameters:

      name

      Song name

      difficulty

      Song difficulty

      staticinlineaddZeros(str:String, num:Int):String

      Add several zeros at the beginning of a string, so that 2 becomes 02.

      Parameters:

      str

      String to add zeros

      num

      The length required

      @:value({ axes : XY })staticcameraCenter(obj:FlxObject, cam:FlxCamera, axes:FlxAxes = XY):Void

      Centers an object in a camera's field, basically screenCenter() but camera.width and camera.height are used instead of FlxG.width and FlxG.height.

      Parameters:

      obj

      Sprite to center

      cam

      Camera

      axes

      Axes (XY)

      staticclear<T>(array:Array<T>):Array<T>

      Clears the content of an array

      staticcoolTextFile(path:String):Array<String>

      Allows you to split a text file from a path, into a "cool text file", AKA a list. Allows for comments. For example, -# comment -test1 - -test2 -will return ["test1", "test2"]

      Parameters:

      path

      Returns:

      Array

      staticinlinecopyColorTransform(color1:ColorTransform, color2:ColorTransform):Void

      Copies a color transform from color1 to color2

      Parameters:

      color1

      Color transform to copy to

      color2

      Color transform to copy from

      staticinlinefloorInt(e:Float):Int

      Equivalent of Math.floor, except doesn't require a Int -> Float -> Int conversion.

      Parameters:

      e

      Value to get the floor of.

      staticinlinefpsLerp(v1:Float, v2:Float, ratio:Float):Float

      Alternative linear interpolation function for each frame use, without worrying about framerate changes.

      Parameters:

      v1

      Begin value

      v2

      End value

      ratio

      Ratio

      Returns:

      Float Final value

      staticinlinegetAtt(xml:Access, name:String):String

      Gets an XML attribute from an Access abstract, without throwing an exception if invalid. -Example: xml.getAtt("test").getDefault("Hello, World!");

      Parameters:

      xml

      XML to get the attribute from

      name

      Name of the attribute

      staticgetColorFromDynamic(c:Dynamic):Null<FlxColor>

      Tries to get a color from a Dynamic variable.

      Parameters:

      c

      Dynamic color.

      Returns:

      The result color, or null if invalid.

      staticinlinegetDefault<T>(v:Null<T>, defaultValue:T):Null<T>

      staticinlinegetFPSRatio(ratio:Float):Float

      Modifies a lerp ratio based on current FPS to keep a stable speed on higher framerate.

      Parameters:

      ratio

      Ratio

      Returns:

      FPS-Modified Ratio

      staticgetLastExceptionStack():String

      staticgetMacroAbstractClass(className:String):Class<Dynamic>

      Gets the macro class created by hscript-improved for an abstract / enum

      staticgetSizeString(size:Float):String

      Returns a string representation of a size, following this format: 1.02 GB, 134.00 MB

      Parameters:

      size

      Size to convert ot string

      Returns:

      String Result string representation

      staticinlineisNaN(v:Dynamic):Bool

      Whenever a value is NaN or not.

      Parameters:

      v

      Value

      staticinlinekeyToString(key:Null<FlxKey>):String

      Returns a simple string representation of a FlxKey. Used in Controls options.

      Parameters:

      key

      Key

      Returns:

      Simple representation

      staticinlinelast<T>(array:Array<T>):T

      Returns the last of an Array

      Parameters:

      array

      Array

      Returns:

      T Last element

      @:value({ fpsSensitive : false })staticinlinelerpColor(color1:FlxColor, color2:FlxColor, ratio:Float, fpsSensitive:Bool = false):FlxColor

      Lerps from color1 into color2 (Shortcut to FlxColor.interpolate)

      Parameters:

      color1

      Color 1

      color2

      Color 2

      ratio

      Ratio

      fpsSensitive

      Whenever the ratio should be fps sensitive (adapted when game is running at 120 instead of 60)

      staticloadAnimatedGraphic(spr:FlxSprite, path:String):FlxSprite

      Loads an animated graphic, and automatically animates it.

      Parameters:

      spr

      Sprite to load the graphic for

      path

      Path to the graphic

      @:value({ SkipAtlasCheck : false, Key : null, Unique : false })staticloadFrames(path:String, Unique:Bool = false, ?Key:String, SkipAtlasCheck:Bool = false):FlxFramesCollection

      Loads frames from a specific image path. Supports Sparrow Atlases, Packer Atlases, and multiple spritesheets.

      Parameters:

      path

      Path to the image

      Unique

      Whenever the image should be unique in the cache

      Key

      Key to the image in the cache

      SkipAtlasCheck

      Whenever the atlas check should be skipped.

      Returns:

      FlxFramesCollection Frames

      @:value({ coopMode : false, opponentMode : false, difficulty : "normal" })staticloadSong(name:String, difficulty:String = "normal", opponentMode:Bool = false, coopMode:Bool = false):Void

      Loads a song into PlayState

      Parameters:

      name

      Song name

      difficulty

      Chart difficulty (if invalid, will load an empty chart)

      opponentMode

      Whenever opponent mode is on

      coopMode

      Whenever co-op mode is on.

      @:value({ difficulty : "normal" })staticloadWeek(weekData:WeekData, difficulty:String = "normal"):Void

      Load a week into PlayState.

      Parameters:

      weekData

      Week Data

      difficulty

      Week Difficulty

      staticinlinemaxInt(p1:Int, p2:Int):Int

      Equivalent of Math.max, except doesn't require a Int -> Float -> Int conversion.

      Parameters:

      p1
      p2

      Returns:

      return p1 < p2 ? p2 : p1

      @:value({ min : 0 })staticinlinenumberArray(max:Int, min:Int = 0):Array<Int>

      Returns an array of number from min to max. Equivalent of [for (i in min...max) i].

      Parameters:

      max

      Max value

      min

      Minimal value (0)

      Returns:

      Array Final array

      staticopenURL(url:String):Void

      Opens an URL in the browser.

      Parameters:

      null

      url

      staticparseJson(assetPath:String):Unknown

      Shortcut to parse JSON from an Asset path

      Parameters:

      assetPath

      Path to the JSON asset.

      staticinlineparseJsonString(str:String):Unknown

      Shortcut to parse a JSON string

      Parameters:

      str

      Path to the JSON string

      Returns:

      Parsed JSON

      @:value({ volume : 1, menuSFX : SCROLL })staticplayMenuSFX(menuSFX:CoolSfx = SCROLL, volume:Float = 1):Void

      Plays a specified Menu SFX.

      Parameters:

      menuSFX

      Menu SFX to play

      volume

      At which volume it should play

      @:value({ fadeIn : false })staticplayMenuSong(fadeIn:Bool = false):Void

      Plays the main menu theme.

      Parameters:

      null

      fadeIn

      @:value({ DefaultBPM : 102, Looped : true, Volume : 1, Persist : false })staticplayMusic(path:String, Persist:Bool = false, Volume:Int = 1, Looped:Bool = true, DefaultBPM:Int = 102, ?Group:FlxSoundGroup):Void

      Plays music, while resetting the Conductor, and taking info from INI in count.

      Parameters:

      path

      Path to the music

      Persist

      Whenever the music should persist while switching states

      DefaultBPM

      Default BPM of the music (102)

      Volume

      Volume of the music (1)

      Looped

      Whenever the music loops (true)

      Group

      A group that this music belongs to (default)

      staticpreloadCharacter(name:String, ?spriteName:String):Void

      Preloads a character.

      Parameters:

      name

      Character name

      spriteName

      (Optional) sprite name.

      staticpushGroup<T>(array:Array<T>, args:Rest<T>):Array<T>

      Push an entire group into an array.

      Parameters:

      array

      Array to push the group into

      ...args

      Group entries

      Returns:

      Array

      staticreplay(sound:FlxSound):Void

      Stops a sound, set its time to 0 then play it again.

      Parameters:

      sound

      Sound to replay.

      staticresetSprite(spr:FlxSprite, x:Float, y:Float):Void

      Resets an FlxSprite

      Parameters:

      spr

      Sprite to reset

      x

      New X position

      y

      New Y position

      staticsetFieldDefault<T>(v:Dynamic, name:String, defaultValue:T):T

      Sets a field's default value, and returns it. In case it already exists, returns the existing one.

      Parameters:

      v

      Dynamic to set the default value to

      name

      Name of the value

      defaultValue

      Default value

      Returns:

      T New/old value.

      staticsetMusic(frontEnd:SoundFrontEnd, music:FlxSound):Void

      Sets a SoundFrontEnd's music to a FlxSound. -Example: FlxG.sound.setMusic(music);

      Parameters:

      frontEnd

      SoundFrontEnd to set the music of

      music

      Music

      staticsetSpriteSize(sprite:FlxSprite, width:Float, height:Float):Void

      Equivalent of setGraphicSize, except that it can accept floats and automatically updates the hitbox.

      Parameters:

      sprite

      Sprite to set the size of

      width

      Width

      height

      Height

      @:value({ maxScale : 0, fill : true })staticsetUnstretchedGraphicSize(sprite:FlxSprite, width:Int, height:Int, fill:Bool = true, maxScale:Float = 0):Void

      Allows you to set a graphic size (ex: 150x150), with proper hitbox without a stretched sprite.

      Parameters:

      sprite

      Sprite to apply the new graphic size to

      width

      Width

      height

      Height

      fill

      Whenever the sprite should fill instead of shrinking (true)

      maxScale

      Maximum scale (0 / none)

      staticswitchAnimFrames(anim1:FlxAnimation, anim2:FlxAnimation):Void

      Switches frames from 2 FlxAnimations.

      Parameters:

      anim1

      First animation

      anim2

      Second animation

      \ No newline at end of file diff --git a/pages/funkin/utils/DiscordJson.html b/pages/funkin/utils/DiscordJson.html deleted file mode 100644 index 3fead098..00000000 --- a/pages/funkin/utils/DiscordJson.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.DiscordJson

      Fields

      @:optionaloptionallogoText:Null<String>

      @:optionaloptionallogoKey:Null<String>

      @:optionaloptionalclientID:Null<String>

      \ No newline at end of file diff --git a/pages/funkin/utils/DiscordUtil.html b/pages/funkin/utils/DiscordUtil.html deleted file mode 100644 index 821f9fae..00000000 --- a/pages/funkin/utils/DiscordUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.DiscordUtil

      Static variables

      @:value(null)staticcurrentID:String = null

      @:value(null)staticdata:DiscordJson = null

      @:value(null)staticdiscordThread:Thread = null

      @:value(false)staticready:Bool = false

      Static methods

      staticchangeClientID(id:String):Void

      staticchangePresence(details:String, state:String, ?smallImageKey:String):Void

      staticchangePresenceAdvanced(data:DiscordPresenceOptions):Void

      staticchangeSongPresence(details:String, state:String, audio:FlxSound, ?smallImageKey:String):Void

      staticinit():Void

      staticreloadJsonData():Void

      staticshutdown():Void

      \ No newline at end of file diff --git a/pages/funkin/utils/EngineUtil.html b/pages/funkin/utils/EngineUtil.html deleted file mode 100644 index e31cd4f1..00000000 --- a/pages/funkin/utils/EngineUtil.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.utils.EngineUtil

      Static methods

      staticstartMultithreadedScript(path:String):MultiThreadedScript

      Starts a new multithreaded script. -This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict.

      Parameters:

      null

      path

      \ No newline at end of file diff --git a/pages/funkin/utils/IniUtil.html b/pages/funkin/utils/IniUtil.html deleted file mode 100644 index a06d1256..00000000 --- a/pages/funkin/utils/IniUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.IniUtil

      DOESNT SUPPORT CATEGORIES YET!!

      Static methods

      staticinlineparseAsset(assetPath:String, ?defaultVariables:Map<String, String>):Map<String, String>

      staticparseString(data:String, ?defaultVariables:Map<String, String>):Map<String, String>

      \ No newline at end of file diff --git a/pages/funkin/utils/MarkdownUtil.html b/pages/funkin/utils/MarkdownUtil.html deleted file mode 100644 index 3a77b388..00000000 --- a/pages/funkin/utils/MarkdownUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.MarkdownUtil

      Static methods

      staticapplyMarkdownText(text:FlxText, str:String):Void

      @:value({ underline : false, italic : false, bold : false })staticcreateAdvancedMarkerPair(marker:String, color:FlxColor, size:Null<Float>, bold:Bool = false, italic:Bool = false, underline:Bool = false, ?blockIndent:Int, ?bullet:Bool):FlxTextFormatMarkerPair

      @:value({ emoteEnd : "\n" })staticparseEmote(text:String, emote:String, beginning:String, end:String, emoteEnd:String = "\n"):String

      staticparseWarnings(text:String):String

      staticprepareMarkdown(text:String):String

      \ No newline at end of file diff --git a/pages/funkin/utils/MemoryUtil.html b/pages/funkin/utils/MemoryUtil.html deleted file mode 100644 index 43e4e16f..00000000 --- a/pages/funkin/utils/MemoryUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.MemoryUtil

      Static variables

      @:value(0)staticdisableCount:Int = 0

      Static methods

      staticaskDisable():Void

      staticaskEnable():Void

      staticclearMajor():Void

      staticclearMinor():Void

      staticinlinecurrentMemUsage():Float

      staticdisable():Void

      staticenable():Void

      staticgetMemType():String

      staticgetTotalMem():Float

      staticinit():Void

      \ No newline at end of file diff --git a/pages/funkin/utils/MessageBoxIcon.html b/pages/funkin/utils/MessageBoxIcon.html deleted file mode 100644 index 713535ac..00000000 --- a/pages/funkin/utils/MessageBoxIcon.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.MessageBoxIcon

      Variables

      @:value(cast 0x00000010)@:impl@:enuminlineread onlyMSG_ERROR:MessageBoxIcon = 0x00000010

      @:value(cast 0x00000040)@:impl@:enuminlineread onlyMSG_INFORMATION:MessageBoxIcon = 0x00000040

      @:value(cast 0x00000020)@:impl@:enuminlineread onlyMSG_QUESTION:MessageBoxIcon = 0x00000020

      @:value(cast 0x00000030)@:impl@:enuminlineread onlyMSG_WARNING:MessageBoxIcon = 0x00000030

      \ No newline at end of file diff --git a/pages/funkin/utils/NativeAPI.html b/pages/funkin/utils/NativeAPI.html deleted file mode 100644 index 38fa75e4..00000000 --- a/pages/funkin/utils/NativeAPI.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.utils.NativeAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. -Does not have any effect on other platforms.

      Static methods

      staticallocConsole():Void

      Allocates a new console. The console will automatically be opened

      @:value({ backgroundColor : BLACK, foregroundColor : LIGHTGRAY })staticsetConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, backgroundColor:ConsoleColor = BLACK):Void

      Sets the console colors

      staticsetDarkMode(enable:Bool):Void

      Sets the window titlebar to dark mode (Windows 10 only)

      @:value({ icon : MSG_WARNING })staticshowMessageBox(caption:String, message:String, icon:MessageBoxIcon = MSG_WARNING):Void

      Shows a message box

      \ No newline at end of file diff --git a/pages/funkin/utils/ThreadUtil.html b/pages/funkin/utils/ThreadUtil.html deleted file mode 100644 index a2d1e57a..00000000 --- a/pages/funkin/utils/ThreadUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ThreadUtil

      Static methods

      @:value({ autoRestart : false })staticcreateSafe(func:() ‑> Void, autoRestart:Bool = false):Thread

      Creates a new Thread with an error handler.

      Parameters:

      func

      Function to execute

      autoRestart

      Whenever the thread should auto restart itself after crashing.

      \ No newline at end of file diff --git a/pages/funkin/utils/XMLUtil.html b/pages/funkin/utils/XMLUtil.html deleted file mode 100644 index 3de02e37..00000000 --- a/pages/funkin/utils/XMLUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.XMLUtil

      Class made to make XML parsing easier.

      Static methods

      staticaddAnimToSprite(sprite:FlxSprite, animData:AnimData):ErrorCode

      @:value({ loop : false })staticaddXMLAnimation(sprite:FlxSprite, anim:Access, loop:Bool = false):ErrorCode

      Adds an XML animation to sprite.

      Parameters:

      sprite

      Destination sprite

      anim

      Animation (Must be a anim XML node)

      staticapplyXMLProperty(object:Dynamic, property:Access):ErrorCode

      Applies a property XML node to an object.

      Parameters:

      object

      Object to which the xml property will be applied

      property

      property node.

      @:value({ defaultAnimType : BEAT, parentFolder : "" })staticcreateSpriteFromXML(node:Access, parentFolder:String = "", defaultAnimType:XMLAnimType = BEAT, ?cl:Class<FunkinSprite>):FunkinSprite

      Creates a new sprite based on a XML node.

      @:value({ loop : false, animType : NONE })staticextractAnimFromXML(anim:Access, animType:XMLAnimType = NONE, loop:Bool = false):AnimData

      staticinlinefixXMLText(text:String):String

      \ No newline at end of file diff --git a/pages/funkin/utils/ZipProgress.html b/pages/funkin/utils/ZipProgress.html deleted file mode 100644 index ae42a994..00000000 --- a/pages/funkin/utils/ZipProgress.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ZipProgress

      Constructor

      new()

      Variables

      @:value(0)curFile:Int = 0

      @:value(false)done:Bool = false

      @:value(null)error:Exception = null

      @:value(0)fileCount:Int = 0

      read onlypercentage:Float

      \ No newline at end of file diff --git a/pages/funkin/utils/ZipReader.html b/pages/funkin/utils/ZipReader.html deleted file mode 100644 index 57232d14..00000000 --- a/pages/funkin/utils/ZipReader.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ZipReader

      Constructor

      new(i:Input)

      Variables

      files:List<Entry>

      Methods

      \ No newline at end of file diff --git a/pages/funkin/utils/ZipUtil.html b/pages/funkin/utils/ZipUtil.html deleted file mode 100644 index bb5f95a0..00000000 --- a/pages/funkin/utils/ZipUtil.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ZipUtil

      Static variables

      @:value([".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"])staticbannedNames:Array<String> = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"]

      Static methods

      staticarrayToList(array:Array<Entry>):List<Entry>

      [Description] Converts an Array<Entry> to a List<Entry>.

      Parameters:

      array

      Returns:

      List

      staticcreateZipFile(path:String):ZipWriter

      [Description] Creates a ZIP file at the specified location and returns the Writer.

      Parameters:

      path

      Returns:

      Writer

      staticopenZip(zipPath:String):Reader

      [Description] Returns a zip.Reader instance from path.

      Parameters:

      zipPath

      Returns:

      Reader

      staticuncompressZip(zip:Reader, destFolder:String, ?prefix:String, ?prog:ZipProgress):ZipProgress

      [Description] Uncompresses zip into the destFolder folder

      Parameters:

      zip
      null

      destFolder

      staticuncompressZipAsync(zip:Reader, destFolder:String, ?prog:ZipProgress, ?prefix:String):ZipProgress

      staticunzip(f:Entry):Null<Bytes>

      [Description] Copy of haxe's Zip unzip function cause lime replaced it.

      Parameters:

      f

      Zip entry

      staticwriteFolderToZip(zip:ZipWriter, path:String, ?prefix:String, ?prog:ZipProgress, ?whitelist:Array<String>):ZipProgress

      [Description] Writes the entirety of a folder to a zip file.

      Parameters:

      zip

      ZIP file to write to

      path

      Folder path

      prefix

      (Additional) allows you to set a prefix in the zip itself.

      staticwriteFolderToZipAsync(zip:ZipWriter, path:String, ?prefix:String):ZipProgress

      \ No newline at end of file diff --git a/pages/funkin/utils/ZipWriter.html b/pages/funkin/utils/ZipWriter.html deleted file mode 100644 index e46a9fc4..00000000 --- a/pages/funkin/utils/ZipWriter.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.ZipWriter

      Constructor

      new(o:Output)

      Methods

      close():Void

      flush():Void

      writeFile(entry:Entry):Void

      \ No newline at end of file diff --git a/pages/funkin/utils/index.html b/pages/funkin/utils/index.html deleted file mode 100644 index 26c43709..00000000 --- a/pages/funkin/utils/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.utils

      funkin.utils

      ..
      native
      AnimData

      BitmapUtil

      ConsoleColor

      CoolSfx

      SFXs to play using playMenuSFX.

      CoolUtil

      DiscordJson

      DiscordUtil

      EngineUtil

      FlxInterpolateColor

      Additional class for FlxColor lerping. -Gets rid of precision issues with FlxColor.interpolate

      IniUtil

      DOESNT SUPPORT CATEGORIES YET!!

      MarkdownUtil

      MemoryUtil

      MessageBoxIcon

      NativeAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. -Does not have any effect on other platforms.

      StrNameLabel

      XMLUtil

      Class made to make XML parsing easier.

      ZipProgress

      ZipReader

      ZipUtil

      ZipWriter

      \ No newline at end of file diff --git a/pages/funkin/utils/native/HiddenProcess.html b/pages/funkin/utils/native/HiddenProcess.html deleted file mode 100644 index e7ea403a..00000000 --- a/pages/funkin/utils/native/HiddenProcess.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.utils.native.HiddenProcess

      Constructor

      new(cmd:String, ?args:Array<String>, ?detached:Bool)

      Variables

      read onlystderr:Input

      read onlystdin:Output

      read onlystdout:Input

      Methods

      close():Void

      @:value({ block : true })exitCode(block:Bool = true):Null<Int>

      getPid():Int

      kill():Void

      \ No newline at end of file diff --git a/pages/funkin/windows/ConsoleColor.html b/pages/funkin/windows/ConsoleColor.html deleted file mode 100644 index 7704e8e5..00000000 --- a/pages/funkin/windows/ConsoleColor.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.windows.ConsoleColor

      Variables

      @:value(cast 0)@:impl@:enuminlineread onlyBLACK:ConsoleColor = 0

      @:value(cast 9)@:impl@:enuminlineread onlyBLUE:ConsoleColor = 9

      @:value(cast 11)@:impl@:enuminlineread onlyCYAN:ConsoleColor = 11

      @:value(cast 1)@:impl@:enuminlineread onlyDARKBLUE:ConsoleColor = 1

      @:value(cast 3)@:impl@:enuminlineread onlyDARKCYAN:ConsoleColor = 3

      @:value(cast 2)@:impl@:enuminlineread onlyDARKGREEN:ConsoleColor = 2

      @:value(cast 5)@:impl@:enuminlineread onlyDARKMAGENTA:ConsoleColor = 5

      @:value(cast 4)@:impl@:enuminlineread onlyDARKRED:ConsoleColor = 4

      @:value(cast 6)@:impl@:enuminlineread onlyDARKYELLOW:ConsoleColor = 6

      @:value(cast 8)@:impl@:enuminlineread onlyGRAY:ConsoleColor = 8

      @:value(cast 10)@:impl@:enuminlineread onlyGREEN:ConsoleColor = 10

      @:value(cast 7)@:impl@:enuminlineread onlyLIGHTGRAY:ConsoleColor = 7

      @:value(cast 13)@:impl@:enuminlineread onlyMAGENTA:ConsoleColor = 13

      @:value(cast 12)@:impl@:enuminlineread onlyRED:ConsoleColor = 12

      @:value(cast 15)@:impl@:enuminlineread onlyWHITE:ConsoleColor = 15

      @:value(cast 14)@:impl@:enuminlineread onlyYELLOW:ConsoleColor = 14

      \ No newline at end of file diff --git a/pages/funkin/windows/MessageBoxIcon.html b/pages/funkin/windows/MessageBoxIcon.html deleted file mode 100644 index 78dfb5ab..00000000 --- a/pages/funkin/windows/MessageBoxIcon.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -funkin.windows.MessageBoxIcon

      Variables

      @:value(cast 0x00000010)@:impl@:enuminlineread onlyMSG_ERROR:MessageBoxIcon = 0x00000010

      @:value(cast 0x00000040)@:impl@:enuminlineread onlyMSG_INFORMATION:MessageBoxIcon = 0x00000040

      @:value(cast 0x00000020)@:impl@:enuminlineread onlyMSG_QUESTION:MessageBoxIcon = 0x00000020

      @:value(cast 0x00000030)@:impl@:enuminlineread onlyMSG_WARNING:MessageBoxIcon = 0x00000030

      \ No newline at end of file diff --git a/pages/funkin/windows/WindowsAPI.html b/pages/funkin/windows/WindowsAPI.html deleted file mode 100644 index 6dfbce21..00000000 --- a/pages/funkin/windows/WindowsAPI.html +++ /dev/null @@ -1,12 +0,0 @@ - - - -funkin.windows.WindowsAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. -Does not have any effect on other platforms.

      Static methods

      staticallocConsole():Void

      Allocates a new console. The console will automatically be opened

      @:value({ backgroundColor : BLACK, foregroundColor : LIGHTGRAY })staticsetConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, backgroundColor:ConsoleColor = BLACK):Void

      Sets the console colors

      staticsetDarkMode(enable:Bool):Void

      Sets the window titlebar to dark mode (Windows 10 only)

      @:value({ icon : MSG_WARNING })staticshowMessageBox(caption:String, message:String, icon:MessageBoxIcon = MSG_WARNING):Void

      Shows a message box

      \ No newline at end of file diff --git a/pages/funkin/windows/index.html b/pages/funkin/windows/index.html deleted file mode 100644 index 77235f9b..00000000 --- a/pages/funkin/windows/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -funkin.windows

      funkin.windows

      ..
      ConsoleColor

      MessageBoxIcon

      WindowsAPI

      Class for Windows-only functions, such as transparent windows, message boxes, and more. -Does not have any effect on other platforms.

      \ No newline at end of file diff --git a/pages/nav.js b/pages/nav.js index 92312c1f..557e6e59 100644 --- a/pages/nav.js +++ b/pages/nav.js @@ -1 +1 @@ -var navContent=''; \ No newline at end of file +var navContent=''; \ No newline at end of file diff --git a/pages/scripting/CharacterScript.html b/pages/scripting/CharacterScript.html index 7fbdf6bc..123aa8e2 100644 --- a/pages/scripting/CharacterScript.html +++ b/pages/scripting/CharacterScript.html @@ -8,5 +8,5 @@ text-shadow: 0 0 0 transparent; }

      Contains all callbacks you can add in a Character script.

      -

      To add a Character script, create a file here: data/characters/my-char.hx

      Methods

      beatHit(curBeat:Int):Void

      Triggered every beat

      create():Void

      Triggered after the characters XML has been loaded.

      onDance(event:DanceEvent):Void

      Triggered everytime the character will dance (play its idle animation).

      onGetCamPos(event:PointEvent):Void

      Triggered everytime the game tries to get your player's camera position. -This event cannot be cancelled.

      onPlayAnim(event:PlayAnimEvent):Void

      Triggered everytime the game tries to play an animation on your character.

      onPlaySingAnim(event:DirectionAnimEvent):Void

      Triggered everytime the game tries to play a sing, alt sing or miss animation.

      postCreate():Void

      Triggered after the character has been entirely loaded.

      stepHit(curStep:Int):Void

      Triggered every step

      update(elapsed:Float):Void

      Triggered every frame.

      \ No newline at end of file +

      To add a Character script, create a file here: data/characters/my-char.hx

      Methods

      beatHit(curBeat:Int):Void

      Triggered every beat

      create():Void

      Triggered after the characters XML has been loaded.

      onDance(event:DanceEvent):Void

      Triggered everytime the character will dance (play its idle animation).

      onGetCamPos(event:PointEvent):Void

      Triggered everytime the game tries to get your player's camera position. +This event cannot be cancelled.

      onPlayAnim(event:PlayAnimEvent):Void

      Triggered everytime the game tries to play an animation on your character.

      onPlaySingAnim(event:DirectionAnimEvent):Void

      Triggered everytime the game tries to play a sing, alt sing or miss animation.

      postCreate():Void

      Triggered after the character has been entirely loaded.

      stepHit(curStep:Int):Void

      Triggered every step

      update(elapsed:Float):Void

      Triggered every frame.

      \ No newline at end of file diff --git a/pages/scripting/PlayStateScript.html b/pages/scripting/PlayStateScript.html index dd265b55..4b23849a 100644 --- a/pages/scripting/PlayStateScript.html +++ b/pages/scripting/PlayStateScript.html @@ -9,4 +9,4 @@ }

      Contains all callbacks you can add in modcharts and stage scripts.

      NOTE: In case you're scripting a stage, all sprites of that stage are directly accessible via their name.

      -

      Ex: If you added a superCoolBG element in your stage XML, you'll be able to access it via scripts by using superCoolBG.

      Methods

      beatHit(curBeat:Int):Void

      Triggered every beat.

      Parameters:

      curBeat

      Current beat.

      create():Void

      Triggered after the characters has been created, during PlayState's creation.

      inputPostUpdate(event:InputSystemEvent):Void

      Triggered after the input system updates.

      Parameters:

      note

      Event object with the pressed, justPressed and justReleased notes.

      inputUpdate(event:InputSystemEvent):Void

      Triggered whenever the input system updates.

      Parameters:

      note

      Event object with the pressed notes, which allows you to alter which notes are being pressed during this frame, or simply cancel the input update.

      onCountdown(event:CountdownEvent):Void

      Triggered every countdown.

      Parameters:

      event

      Countdown event.

      onDadHit(event:NoteHitEvent):Void

      Triggered whenever the opponent hits a note.

      Parameters:

      note

      Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour.

      onNoteCreation(event:NoteCreationEvent):Void

      Triggered on each note creation

      Parameters:

      event

      Event object containing information about the note.

      onPlayerHit(event:NoteHitEvent):Void

      Triggered whenever the player hits a note.

      Parameters:

      note

      Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour.

      onPostCountdown(event:CountdownEvent):Void

      Triggered after every countdown.

      Parameters:

      event

      Countdown event.

      onStrumCreation(event:StrumCreationEvent):Void

      Triggered on each strum creation

      Parameters:

      event

      Event object containing information about the strum.

      onSubstateClose(event:StateEvent):Void

      Triggered on substate close.

      Parameters:

      event

      Event object containing the substate, which is cancellable.

      onSubstateOpen(event:StateEvent):Void

      Triggered on substate open.

      Parameters:

      event

      Event object containing the substate, which is cancellable.

      postCreate():Void

      Triggered at the very end of PlayState's creation

      postUpdate(elapsed:Float):Void

      Triggered at the end of every frame.

      Parameters:

      elapsed

      Time elapsed since last frame.

      stepHit(curStep:Int):Void

      Triggered every step

      Parameters:

      curStep

      Current step.

      update(elapsed:Float):Void

      Triggered every frame.

      Parameters:

      elapsed

      Time elapsed since last frame.

      \ No newline at end of file +

      Ex: If you added a superCoolBG element in your stage XML, you'll be able to access it via scripts by using superCoolBG.

      Methods

      beatHit(curBeat:Int):Void

      Triggered every beat.

      Parameters:

      curBeat

      Current beat.

      create():Void

      Triggered after the characters has been created, during PlayState's creation.

      inputPostUpdate(event:InputSystemEvent):Void

      Triggered after the input system updates.

      Parameters:

      note

      Event object with the pressed, justPressed and justReleased notes.

      inputUpdate(event:InputSystemEvent):Void

      Triggered whenever the input system updates.

      Parameters:

      note

      Event object with the pressed notes, which allows you to alter which notes are being pressed during this frame, or simply cancel the input update.

      onCountdown(event:CountdownEvent):Void

      Triggered every countdown.

      Parameters:

      event

      Countdown event.

      onDadHit(event:NoteHitEvent):Void

      Triggered whenever the opponent hits a note.

      Parameters:

      note

      Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour.

      onNoteCreation(event:NoteCreationEvent):Void

      Triggered on each note creation

      Parameters:

      event

      Event object containing information about the note.

      onPlayerHit(event:NoteHitEvent):Void

      Triggered whenever the player hits a note.

      Parameters:

      note

      Event object with the note being pressed, the character who pressed it, and functions to alter or cancel the default behaviour.

      onPostCountdown(event:CountdownEvent):Void

      Triggered after every countdown.

      Parameters:

      event

      Countdown event.

      onStrumCreation(event:StrumCreationEvent):Void

      Triggered on each strum creation

      Parameters:

      event

      Event object containing information about the strum.

      onSubstateClose(event:StateEvent):Void

      Triggered on substate close.

      Parameters:

      event

      Event object containing the substate, which is cancellable.

      onSubstateOpen(event:StateEvent):Void

      Triggered on substate open.

      Parameters:

      event

      Event object containing the substate, which is cancellable.

      postCreate():Void

      Triggered at the very end of PlayState's creation

      postUpdate(elapsed:Float):Void

      Triggered at the end of every frame.

      Parameters:

      elapsed

      Time elapsed since last frame.

      stepHit(curStep:Int):Void

      Triggered every step

      Parameters:

      curStep

      Current step.

      update(elapsed:Float):Void

      Triggered every frame.

      Parameters:

      elapsed

      Time elapsed since last frame.

      \ No newline at end of file diff --git a/source/funkin/backend/system/MainState.hx b/source/funkin/backend/system/MainState.hx index 00f69f49..99964c35 100644 --- a/source/funkin/backend/system/MainState.hx +++ b/source/funkin/backend/system/MainState.hx @@ -55,6 +55,7 @@ class MainState extends FlxState { #if sys sys.FileSystem.createDirectory('./.temp/'); + #if windows Sys.command("attrib +h .temp"); #end #end } } \ No newline at end of file diff --git a/source/funkin/menus/FreeplayState.hx b/source/funkin/menus/FreeplayState.hx index d76fb97d..83f0ddec 100644 --- a/source/funkin/menus/FreeplayState.hx +++ b/source/funkin/menus/FreeplayState.hx @@ -18,16 +18,6 @@ using StringTools; class FreeplayState extends MusicBeatState { - - /** - * How much time a song stays selected until it autoplays. - */ - public var timeUntilAutoplay:Float = 1; - /** - * Whenever the song autoplays when hovered over. - */ - public var disableAutoPlay:Bool = false; - /** * Array containing all of the songs metadatas */ @@ -186,6 +176,18 @@ class FreeplayState extends MusicBeatState } #if PRELOAD_ALL + /** + * How much time a song stays selected until it autoplays. + */ + public var timeUntilAutoplay:Float = 1; + /** + * Whenever the song autoplays when hovered over. + */ + public var disableAutoPlay:Bool = false; + /** + * Whenever the autoplayed song gets async loaded. + */ + public var disableAsyncLoading:Bool = #if desktop false #else true #end; /** * Time elapsed since last autoplay. If this time exceeds `timeUntilAutoplay`, the currently selected song will play. */ @@ -233,15 +235,17 @@ class FreeplayState extends MusicBeatState interpColor.fpsLerpTo(songs[curSelected].parsedColor, 0.0625); bg.color = interpColor.color; - - var dontPlaySongThisFrame = false; #if PRELOAD_ALL + var dontPlaySongThisFrame = false; autoplayElapsed += elapsed; if (!disableAutoPlay && !songInstPlaying && (autoplayElapsed > timeUntilAutoplay || FlxG.keys.justPressed.SPACE)) { - if (curPlayingInst != (curPlayingInst = Paths.inst(songs[curSelected].name, songs[curSelected].difficulties[curDifficulty]))) - FlxG.sound.playMusic(curPlayingInst, 0); + if (curPlayingInst != (curPlayingInst = Paths.inst(songs[curSelected].name, songs[curSelected].difficulties[curDifficulty]))) { + var huh:Void->Void = function() FlxG.sound.playMusic(curPlayingInst, 0); + if(!disableAsyncLoading) Main.execAsync(huh); + else huh(); + } songInstPlaying = true; - dontPlaySongThisFrame = true; + if(disableAsyncLoading) dontPlaySongThisFrame = true; } #end @@ -257,7 +261,7 @@ class FreeplayState extends MusicBeatState convertChart(); #end - if (controls.ACCEPT && !dontPlaySongThisFrame) + if (controls.ACCEPT #if PRELOAD_ALL && !dontPlaySongThisFrame #end) select(); } diff --git a/source/funkin/menus/credits/CreditsMain.hx b/source/funkin/menus/credits/CreditsMain.hx index 84fe4a6e..775593c9 100644 --- a/source/funkin/menus/credits/CreditsMain.hx +++ b/source/funkin/menus/credits/CreditsMain.hx @@ -1,16 +1,15 @@ package funkin.menus.credits; -import flixel.addons.transition.FlxTransitionableState; import funkin.options.OptionsScreen; import funkin.options.type.*; import funkin.options.TreeMenu; +import haxe.xml.Access; class CreditsMain extends TreeMenu { - var editable:Array = []; var bg:FlxSprite; public override function create() { - bg = new FlxSprite(-80).loadAnimatedGraphic(Paths.image('menus/menuBGBlue')); + bg = new FlxSprite(-80).loadGraphic(Paths.image('menus/menuBGBlue')); // bg.scrollFactor.set(); bg.scale.set(1.15, 1.15); bg.updateHitbox(); @@ -20,10 +19,21 @@ class CreditsMain extends TreeMenu { add(bg); var selectables:Array = []; - for (s in editable) selectables.push(new TextOption(s.name, s.desc, function() { - // TODO: Custom Credits - })); - selectables.push(new TextOption("Codename Engine", "Select this to see all the contributors of the engine!", function() { + for(source in [funkin.backend.assets.AssetsLibraryList.AssetSource.SOURCE, funkin.backend.assets.AssetsLibraryList.AssetSource.MODS]) { + if (Paths.assetsTree.existsSpecific(Paths.xml('config/credits'), "TEXT", source)) { + var access:Access = null; + try { + access = new Access(Xml.parse(Paths.assetsTree.getSpecificAsset(Paths.xml('config/credits'), "TEXT", source))); + } catch(e) { + Logs.trace('Error while parsing credits.xml: ${Std.string(e)}', ERROR); + } + + if (access != null) + for(c in parseCreditsFromXML(access, source)) + selectables.push(c); + } + } + selectables.push(new TextOption("Codename Engine >", "Select this to see all the contributors of the engine!", function() { optionsTree.add(Type.createInstance(CreditsCodename, [])); })); selectables.push(new TextOption("Friday Night Funkin'", "Select this to open the itch.io page of the original game to donate!", function() { @@ -33,4 +43,35 @@ class CreditsMain extends TreeMenu { main = new OptionsScreen('Credits', 'The people who made this possible!', selectables); super.create(); } + + /** + * XML STUFF + */ + public function parseCreditsFromXML(xml:Access, source:Bool):Array { + var credsMenus:Array = []; + + for(node in xml.elements) { + if (!node.has.name) { + Logs.trace("A credit node requires a name attribute.", WARNING); + continue; + } + var name = node.getAtt("name"); + var desc = node.getAtt("desc").getDefault("No Description"); + + switch(node.name) { + case "credit": + credsMenus.push(new PortraitOption(name, desc, function() if(node.has.url) CoolUtil.openURL(node.att.url), + node.has.icon && Paths.assetsTree.existsSpecific(Paths.image('credits/${node.att.icon}'), "IMAGE", source) ? + FlxG.bitmap.add(Paths.image('credits/${node.att.icon}')) : null, node.has.size ? Std.parseInt(node.att.size) : 96 + )); + + case "menu": + credsMenus.push(new TextOption(name + " >", desc, function() { + optionsTree.add(new OptionsScreen(name, desc, parseCreditsFromXML(node, source))); + })); + } + } + + return credsMenus; + } } \ No newline at end of file
  • v{dvR_WUeHC7X!V8&N^|obJ*Lh2;-qt%KUW?Z|y(=pse+_!- z?jJoAjR~le;j)`Ms`5jreAA?pl9B+CmEYQA?;DnIY^te4V3=I_sR|YUObeN>_c&+m zInfI-UV(=myrt>r5mkPc_gh`>j;tVEiDpsoenH+Bxf0_RF=~2{&adxXAr)ZjS0XIE zDzJJFTjjAc%UM$VN0TT^8&5;|l{PUxNabs;_45HSQ9c((z#%L3?8n3k-(mKHa||U( zzWn2y-(nhr5->)>EhM%>A40|_vmdIz={5G_o@@J_Od@53H~;0m60z5*H&_H`KQOEO z;%3v&vCh#7=o03g2o7$hyTe7@Wl4cwJ~eFlT5o;m+CreRYdYQ6{49o%`G(Dnx>#goN_5yv*jAG zx8OcdSVHek3|L5<`C3(kQ_m?DzBjxyibw7@@Z8l&o&DEi(I)eC5cT0!Pm@H7gN+1``Xeu+yiX44r7g0LEzTf}YpE{He&ij&FB)5<#H+3ewOF|roVhZV^ zp$=b4QGsUdssF60xKm7#Wyar_)g=j!h}9IjJB<_# z$9lCslLtLV_kCa?32;K%SjX&S21qj}sxqvKG8Filu*1p3vmG&tat%N=7JcHqHB~j) zZMQ-rT>FdbI-P_eyhQ;q+Ut9+d72}XXSJpZ_B0N z?T6#J+zO+FZ=~v#@UG%^-1@nz*d>@mhw3zGV`*eW5ma{l!Cgrd(ImAFPH#B>LQ+)o zNlcwP`kqFe1!|hGa%XS*)2NB8KD;c8cvIo#hc#8L5OD9*BR4_pt%)Noq6l736rDSi zr^kO<1pS-BDoPxHF~}1X>r4DyrGl!ya7^^lSQp`yRx{)tw$}$v5G{r`*i{X2F)!rt zbD`?dB8^7`s_~)FHzosDku+?6jgNFH;?4ZbCk@ILXOWXP7k5w*bXM(jn7im_`*ymp zthF)MS7B{2I_XF{#YKDj#PcH|kqaFyi64-1T4>21@k<7#t6)fX%(EA@1fOQ|G~*jp z(w#~Krrx_Pmix$bcI%1jnAc5@N0$|-KV2lyh#^1FAE5y~{N88ME9#;o1FYcYS8(%OZT$fx==OOjuUw+S^O+(@< z(_ag%`=n=WgDp&v;fNpE7TwAPNcE&2Iu;K0CsKo5P;`6{y&VNsu!9g=46-QEYtZRJ zQMR0$%8=X-4kQ7+1P&u^_z$)|0&d)U7SNv3kUy3`w|WmdonfgYzas@IHOiuu$jU@f z%OLENlsM$B**Jn^KjCUu(2;v@3&6O)m~{L-;U4$932uF;^Xo)fd)enDK~cBLoP+vn z{Qrcb!~Ry@2kRyH5jkYlPCOuC);f}O5!KXrL46gIV?8GgMGKr+-+Os~7O7J;-*>M1 zU$OW#blY6id8Rdz96d_~ed&j;X4v>Z^a`Gj-5b~vRv(0)<6h{9wD!+{kwo$eJbMMClR|zKrSh>5N@V5(C z_#RCfy?V)g)>~u$`8*{BmOF8*3m7h#)F6D{T5?MR_bD0*nK6epa*tGL$|n0LT7sTD zG+JGs_U&7ucnPnomPsz|i^O{d{p%ObjR=9wmgnv+YPaC-tmbY8Cl92pg&C25g-7sC zqeM=t2=#UMj@m|9h&CBc$cX18C7&bR+-2!N)OpsDM~QXb;g^;_jx&@4|4yhD($%vF z?qlzp1JYh@$ve=0{V(WgLY&nTzT+AE{_nZU4<8uf4%oNAe&s)s-9)vxzf0)H`dYOR}{zvpU&1Lbk|OL)2YBxRlav3BNJ@ zN$a`Ly=a=7M9pp|<%uS<<@olY)Jw3F0a*2?1ltiXh2~`^WWu{({IMK5b{Yi@aV8m7 z3?*^c^UM(e9HN#?g`SbbZ_=X*-ryPk#d;QSem1LK=4B75z3Lhi0e$2$^T!hPe0$) zR2`-TSDMJn1g>X-46ENo!O^6F3N6v(-5g0%7jJR)_fmU&s15QnE_Q@;%%DTLd_Nhx zL#~;KFg_Y@@SLVA)= zGIBg(1qZ9pt=zw;@$!Gs)X2v_#L?(X+VrZN5T<>@l2mONiH|DWff_`!&D5}}uWVZA zw{4xeh+=TM`n3N>M`KRaSWHfoWi$3Zh~FY$PphwFw8M$zV`1=k`3o7-Iy& zI@;YidJ`+^t6C;p#a++AM_?&jg*`I}A*%?yQ7V5CZ1K%M?$@}&pKm7}3OM)7%$E~- zP9L~yQmbB=%>SRjhas(Sc&$Cd_!oU9tjWVik)i#0&));+VemcWE2^`8DNQYINv2A2 zt`Kc*d6WX78D;9G#10E?S{6sm+*+2;J|{KjsC?fkT0{hNh=h~;rH2ukIJMMRgwGZA zd&Vq&-(C}&pq3pCTYm9n#n-+JP}X#JVAQJ-P9aYD9LIbz_yB)5W6)NhMV5Xe9Cp>Q=Z#NdiHyD+J_aW^O2KA%>U<;nqvPOlJUDjuaYIzqG1U%Z)$8{=k~ zMM+!7*<*zY|-SC4Ip^(z?BVGOEg}YA#a@rYJI;vbmoZRP!G0S(h4R+)EV)E=4DbvE` zvRPNMQmxZ5J_qD7k+W%E(o}~n3n4MgZ1UW8gh1vw_CBx`Y7+x40Kj&$9HcrLD@^We zc5IPM+Fpro5HDMjm_0Ne6?x+W(q0-0$x=coFa z7JKZx`1iyCxvIfrSp}Gf2_&V!%0ZbOVH^1VU-uRtu)H46`gMw4mX=d79t6+-0YoX7R zf|G7PwSR{o==rIwM<50=WV|H4$8pUiBOz}EH%(~tko^9t$i&QamDZrwa3aLT#W6y> zep|HSaBOq3QZKIR5w?+Omg{2;M*M$v0A$p3$>n0$*$`QQhWF~QHqQYC&GYA zZDN4Dkczzh%}>Uhw%eTQ=ZAHU5qhn4@$P+^9YAN6x8{xT$2Mb+EXJEl*-BCD<5bOa z-<{g>EcbJ#MDo`O5%Ug>3z=@OQ@Cs6HVaK#1qqSsKI7ZTVp4`Yxw-W5o}T_IEVx8i z)}uD-a~9?M)eOMoD^HSSZGXst^)}FNOc3WvKX#r}{7KsCx1?7k2_+BSdvUJ9V!3z= zf`ydV@xYS-gbc`}%rYIg&#K@WDGuTabX03WcYBv0U&e{7{5eOgjiO3y@NQc?f7{HI zE6JC#-`C#3YS!k?3VBEkGO-gSi7Bq!!-h++wwYa6D!JUg6K-E!8l__HlZ+eTopX=j z90IL*oc?ngQkN8DDZdZHJQx4`c;COB*%g86e$4KE6d~LC_<5cRx#OvPIH@g!>=89) z@AG_nlAF%GsZZ0CJ;vn>l-n`*|G4@Jwz#@w=_I%ZcbDMq8iED4;0{3tcPF?z1RvaW zaDqdC;F`f*26xwQ&UwEp=l+Ae`{}j1y1Huh{~DxS;f0&j0f(^rw8E}0+Im=mfBD{) zZGJL0K{J-`Gbo!h;la6Zr|Gj!ox12GZ`MGi=AEBI)vda4`F8b1z~Kh`DedM4#?;x6 zlWOim^uSVnBv%3z>Z*MAg4o-MSjghAFkkV|WCoi}wk$@P^%8w9#=G1H6QaT~I%)oK zbWUSA-FPW4J9*2*FpplD9)wk0s7iKR$F>65Od~~}=8QO+XPCfg5!>0^#Nhg4RKQ5F zloe0vfPyh-2`k^4Wu9ns4JYvl{id}*(3)>iY}3Ae$=;!isdzCZ~VZZQcr$EEg@Wku z?mWV2=^u7?`pOOd2w)@WDor@WN1-p==6;GgbE zOj81=nGwlG)5Ay#cOe2-*H(7plbniI z!uMHJgC_Fu7Yq|#9d7Br6Ln>5)L)bsC|0@21?AM;-;V6K-ARoP%OQ#1Mn_o#98E(; z4ezMB9{F;2o^oH5t7Jiuy+xV>ogCakTq_N`8rh(OT7Jv%UE$MXzVoJB{eVlOWngPX zeNx)3@@gqWc=6)p6vVUm%KRIA{X3)CP?K!CWTH3tF4y{Oo9%G+)2@SWg-HD$pGqFT zzDWWb$-!tKE%Mw^`gmI;0n5V)y`TA-gp!Ia`qSDIb=|b;Qi|UqrAz z)i%zn&HYWYKtoBH{~e2GoybtRDIn(ZKE3{nn9AwHG|K$sEqg!=+#~9BID8;X8Dg{e zz%5pzb$ws&2meo8ayv+uyKA?1b}1@_9jiNA0!WWb*M+EH=~^ujj_aYY8`T{ZSbZc$ zYL%0|Q^8ivh2fwhQ}t4XlV7fOQ3nLJ1@P7e4jd)HPGQ^{FzpjS_?GUw(QNPCLPAl$ zzxDF#*S}G$=6>E^`iSMzF&OlBPrja~+dl;ry_I_XC7W~7F^`FFbYEXjb5hB+QHqlt zFO%i}tGRHvgizgGt}bNFj2Hj*E`GeH{p{ay#K!c=V$tc9o`D>OTOR-E87p@K6g%TBLG-T5jc5a|17udcJ^;?ZN=TB*M*q7ivr z@;$`3h%ysqG{!18P{y>6mp1waFM0oL_>g~4_c2K{n;#dc5f8v};-2;GS7t32d{*X| zuRFUACh8wpGQXtvKPohrqR`LNAVx7KzE6(VFbbf;(ZcXy!{j386#F*F@q1a>Z#lajNq-G zu(EDM6enV+Yv9)x@1K0Z3#-mHh5NgtXp21}^Dq2_vc#r#jQMR%bqC~by@%(l6Zo3n8*FcFY?Z+0 zyFckQ&r=HlF58E*QcSUEABX%SsIjz#7RV`3PI_y#q zZ|^O^m|Q_We`HfS#XGy${LF8jeLdDyE!zs3VZ#ch1N2%_o8}xU%^RT?mx%EP#JfR> zioSpg_uCSlD!wYhY)P~;v~1p_=*jGuI$8Ghcf1ASMu&?orm_3DgY5PR#0haH@{g|*&EpJ3{oDD?T(-6N# z(I^2{2CdGt=PAn;nzU6*8W>p73MK}VkbUo!*U$_-$BIWo6M(l_lkkBUP-d>zLkVFX z1y9K7pZZRib#{gVz2=@6-I*2tY>G;y446ua?-Fgnn9H(Gd=lCEu@)Q)Gn(X*@v}OH zC}QCKp)o5Z;<85vLwc_?UW1K-I}UJBM14TQ7N`HgiZ79$OL0JceiK)&U z)8c2!z-@Eh_ir17waj~=kzJ}leX`AheE4;Pl@XR|y9fd`d~JCJ3wjl9=|dF#R#y~DQ<&|BtrdwrDv4PPjHmWHf*{&(?wny*s~|_iT8ajlr;AuE6Z5I; zbP(Oy;wMKHQ;Hjc!iRFZ<+T($0L}G@k6(uZZ0#rLsWeATi-yZo&}PSOasqiULnQo^ z8f;)n#vWcO`B@0f#xw=01%X+H5udR#hr1~B%}{L#kiKy9 z;yA)Yo1|DO>@={GBt)W0!%KQO5=MvNgXtLQ5FID>6J5f?@sb+Mhb=LLE(FN;I6KLN z#4Sm3g6;qKAdRG_*@YxBu5ec_XMJ-qEX38eDo3em^?ggajjui=Ho@%|mIR+y8cbpw zwzpREjFPUd7FkElqzr9;ZGSX$f=afGu?mHMR(z(QvQf%9T%Ys8%~CZJsfBOSWbc){ z4S2a&#x%a#Ro1!XH1NN1d4GRI{E8Yp>(TIezRi4@j0lSJ_5L%&MbcN?lnT;Hwfa*; z=Iu;^BxM{U^e94V>GVj^4BxO4SIaRSxZaC$h)@NJI;N|asH`FTnNIIeO=w6D%1N9` zpe{G-%b4047aD)2bHcm&(*|0db)me&^&b2Z_ggwRwk#F%Fl9^1=c2Gpy7g6@;cDtt zBU_csESoW_VtYg>kP^g;$i)=z*TOTZIBrMsH7n!bB=gd$%U~>8YA{OS6D*gGgoPl$ zcHajho_1$Xf2V=scEu*lHyt)PHjeD9gTuUZY+C_+Z{DiL?E*D z^u@XF56L4*c9F_31bNB^UjyR|VVMB)^6 z?e4LK%FuHQSJ~iJ)O!!bA4c+i^k_YjK!)lkPH73L40LoH$MSC#1;5$Vi{E=G9H*Ir zHfdvwcd`KOl4Tgqzval-Jbx>fU{}xzkBm*aXpXT>Y!LT^sE(@BMZOSSndJL0Px@Kg z{qe+}l90;f!GNQxSS{M^HU<;zVYb+{vF=9`(nu*nUtrs_l8I|OAmpi#nluk`tiR!< zP%s|+cI8mvVZp`Kpba2pH)kc$9>}nW!7XOA)ExYPA1a)htWpRYvne#LV_)T9PH7j~ z_TEI%oF+XU$(97&tI{z>p-#tHG@6c>z?|^F1jL`b0QjRSlmJ;x!ul99F+r*&Jz7v& z$>yvriM-svnrQ^f#hE#ty$KJ0Q`!ZKg2Fgu8(h|)-Rc{RtQla&J4WIyGHeBR+v28o z=HqN*Qx7WP?906T82=q@(g|`|{m2SEdJu%M?Hp=F(usR!1UgN}twuiPowDDasnkpd zW7VJdHrOLCb*O$#2q*^)2yBYfdU1Vtp21btgN7fBQVYA$Io~bu^cS|{20AhB`DbDr zGk$jmhokyCG7Obn_8+=W6*IMaV=0dz4)Q?T%F6&;nlvQuTrEwzS*`GrOeTsB@+CZq=~9tNT|du*s9zdasy(cj`(_jr&d$oWfT zUgZ!KegW&=(%%%pnSFnJCnz-X>+&PM)_jnQZv)5p9nqC<3s<}>+C)WuRsW`ngbw6y ziY9x6(`R<7{_Sj{(Vy(lE5j%WdCmJbl9Di0&{dpA=N>%lW?C+E0~+wE4?=0^d6%{J z^Dn(Yujwc5|4jR>E&V{fD=4XBVxVCKcLQ#(?2D>rkI$R}s$-qPPsoR~eWNUMP(ZWR z)2x!R3eVQscfwb;V67BjKw`)-_QgXR5Y~B16Mt$gm|g&`=9*g{?2TnB=*YHxIV~Rc zv-hT}O^yQdnFZ)p3^EP7}5CXSnA#b6iM@bUHl-JEfl&c>tB}x_nBp z`x9QS!O{p{7T2O5Ro^e?V?qf_hJig>+K|N`J?>692PU;NI|KC}tF1pUhjgT~lura; zwbrtY*?j>5u1?QIzB}1daH`$w1qKhC1GN`0h$n-Zh;J@PTWr=lk=j^MY)L}bPlMxE zU{Fq0=BkQFjaPZ8Iz(nA7LHwArQ>6@-xeD8a&Hg2J<$vHC?^_| zF4Q4cuu^2tM5D8yJ5T43eqgqT_)Tdz9t@WMe zS#dv7?qND>`)~2wf7en^D5rDW_5u6h*I7*HuK1=5Za$no>T{WeRa)rPk1YAV(9hJE zx=f*6Qu*egFg?0Vs5%@wJaQ83mT0+geJgVFUnPo8RmA;_8Zm^Y0}bd94Lez z$kM{FoSuNs1ZR{VetjK1pvAN|f64b%Sxjf6F5z|-B7B^K(y?!BDi`2B*|&0Q%uIY+ ztvenatFZ}id3c@Z|0=r(RiUMW1kDbFOEqQqn>fd|bw?{ri+j^?q7H8Za0fOj{O*ilevzckQrW9749 zf(s1ADytlg;jVc?GI6(K`2RS|->f&1$#963}dJ9WqX^#d2nR^ZM$=Jh$)%LM(B{ zZ+I`~@-zN#OWjb5D_$=maWZB#Zl-qO*qEQUckiDJ1~6)a-ImeRPUZ!N!)~BZS8b;b z-SkR2T8SbC;k;V{q|emga*gVuEnbc9FOk*pg>I8lz@A5MoR9b8gfOaZP9aHUpW@Yb z!=${&W&}Z#oU=Cg-FmcPcH$XIRzhv)_NCNE?sc29y{u}1b9e{UK~59a8P6CbFOCaD zGOTzP@7!{i4VFkxb2g;xuz6LuT!8NLFw-E}> ze(GU{gd02(_(3OWm$4rHQJ1eFy@wRdSTQ^iB?LA_`FoZ>e{1s$*Wod~s3j*^|y1@ww35aTW!XJ8-cggiYEF{vf~u_UN*6QhiVI?{jsZzQczp{ zX_J-6e-}zW>>4*H0*`W^Fo-369Sfa8QBAPL6=8uLQzx zSXV{~VnYJW|0Hb$QRGighrq*iIM0t=BXDz^((;L3^+DMXc=)g|bPxEFkMMPaNuJTT@JG zDQI`Ged%n!JUVEPpYU-=%u@;YLGeuDzXh0GZ>W~&)X&`XqQvK94u>FMvG=pDhlKu$ z!l8r5LNJgwMFp2Y9~phDLEn19*+vDs9>_(dxPI-LJ*mHW^NlVq1rCkK*lD{TK*YB3 z3D^0D#k!6~w9OW}xIGkFp6_SQr}-GS>Y%JmHYSMVp3tNL6QrMTP43tKW}*L=&uKyO z8cI0m>k?W9SCd%OzWLkA#*Za}*APCO-^t#i-QD3r;fXSFvg8BNcz8w;i&-ZzYQLk9 z99r1EBHJ~)_GHv^;zt@7TH(0Z1Y^_LFCVq+xgAPRNm<0qhZt{GLO)*gq>Zd(- zfKoq1+LAYF4HiZhU`xksg=k^fOHjS8sjW_AsrZJh#87Kdw?rOhQ-v->JbSee1Y&jt z99P(xl{b7=t0w>uC~59rMTYXw5(w(z_aGrhb58k@;s(k?sdaRpKK6vG^HCT9qrYnD zXFb(u`}|)e)T#=$Ci?&4qAok}wsN(Vx(l`A?^$KgZH3k#Hmch-V5Y3*OgNYFA|sc4 z)$*z&9wHyf<|;W%B{y$8|c6*C089BX^F#sU8&)qduYWh{U@B3aV484p#Uvqt4~F_Ox9hH zi}4+HWsb?h4Rs4YYq+Bd zGux^fi!u_Ov7J2&@R#|W5_9l*a;Q(b{p99=bu1Ss<~H_-cd+jvd~!3Vj$Qnt;Csz= znH3K!+lns$lCD;x&<_K>OQN1z1dU&~cH`h}Yx|q&7AQ`$t+uWIqSxE!<+}M*W>}9o zEzgJ?1IRz?S6nHSOUT7>zgH9gg-)q@#X+ns-w4hT+<8pRPdtd>O(e3!=oMrPcWk;us{~p2~{3d(<*q_n7{Xe z$4%iz6T^$UZ!_5HEWKHeo}w%WBb!E?B8SH;3O)116)opeWIX$(th4{}4T}%f5AHiQ z@@y0gOKpJYO}Ehq`tt~Pl5pd95TZRAib2tdGghqoz7w)FMkk*lXkgTflYMHarE){% zwfYZ5Tb)|=2K=>yqcwZVVK(U8R4f@nCvC%D6nXL$(Ncmqi297p6J*jREjl>I0$5k1 z3zsLPXgWX9N~!hIKDNl`P@nKqjED8>Z}{SNVXA#9EdnE1lrZqrEr zfR@;c!*R|k>DbJ-gp#yj1@=z%L1XOb8$lT3YLgN4EBSt6fzn3Ch!IKbg&y6=;kMB* za&qqnsqw+E<9Et>4_~`9y0eyv+X-qzOstt4*IJ{7BZd`u6ej&hyk4IcOuI4QiFCBncLx$?{R?q*EVsHJzx@PT3nm@eq>1c#^67KRoI z_BEK3X@r$du9{4X#zoLqP2%{xGZ=42WmK*I#7@)HTXD0Z^!?b{OyXf*LNHo@tB#AB z7xu*!c89ao2|1uOuU&*cuBc3)=*{adH5P$j)a*X@GBoqtIc?9JjJe`{gAuH&Y#}>1 zJc4w}#AFWts*yn4BV60~n%dG~?8`pzQCuzj%0@10DW%(gTWCQ&+5Xz#9+)I@E>C0L_>GZ6Le-cl&D=3stW}b!a7nMYc$z4b^ZQ%pB9@$g)xl#$C+) z<27?wc_^mXiS>x^IS!4K5Zdp@DZAYrx8|7qioUFS_&&E>X6Q)F;Mg$p9k1%b2!VhD z^<2xzvFyF>s@_&#F^NCDp+}9=W7Ha(pWo9Rzr(*)bX0xAIU4B?4F6(}iX>3oBLmwX zqcZ6W&0aEIUt}Yrl@Y$oWp*Y02Ej<)_(En2<_v2)3vbLTvrS=M@aN$x`^3=#Pm`)x zX*1n$@R!2GCF??{9}G53(kmQz;)6CZV)|D=bJ5CkWNl{>Aukiiz~Q z_@BXzt|?FYzScH0s%-b4J-nL`*gJfRJ6KnPS|tCmj#WW#S4@ns1<5rw-du2qSNi@n zQiHh(s#ThKD@+qZf}iI1PHe$QWAT{}DU!vp!rPqPhV<~k*xYAfpAyKGuU;!z;26y~9sD+0igQ?FLFXxUb1q6H_Oq#5 zlzLLWN&xCg3WxSRL+JC*zdqiQZ@Oe0t#NED_Pdp_cG?`-dQjv|xigRyJpSD$0~Osu z1ar5H2J9D1naQ^(z$I=aew19?V?-S0B5t{pkS2d=q?)3WJwalz9ICHH6k{r6;3)sg zFF=gOoZs;?Au`5p0=3T;5kYMaerXf>0gJFNt+4%~IQ4H;TUH?sSf}o9ol(3^&>=fyU zSb1sSCk=D|r}r5IHHfpcCUtNC`7bP(VSx{l-xrWbnW%8hK4^V!lKG>^Top1G{k~MX zX7S4KQeW$sHrfj`)$ZV<$eC>%tHCY!A=>XEIoHe|QgyqncQQKPVL&04nDDdSTO`n> zfN+RWeHZhuhH#BT)Xgp>Cpd~3FFG{LS3uZ9^-Y)cP%M;oyg9(=3U`66llfejZ`r{UI6N&arTW2EKq;4>I^nF-Spdd0lkbSITvtPk1 z>QaYcj-Ht1>mA&7y(;}(@2S_md$5VLF-RWVn z-k~>IIZ8(*zN-`TOHPgYNvr*Q8{H9vmU#ZPnY*ZbwnLLW#KrSul}~BtOUKZHRmWzd z5vn-{`51o+`3-dSI>ey1J+Li@OZcp~yXpAl8qn=VE8j#Ea8=XY7j4-Ey0d!A`|6 zSMDPxEp<(QT?h=`@?(0F!cE>x;2@mzl6r#S4 zjlJu?n*0&44CleT&rux+mN1xY|h>y4V zs(eXgL^HD2O}*2ABq+1T`;5cX5ewBu^@@wl(9cehJ$k^LEp)AZ1A7u*?7_>zWBlAQ z;O*7?tds}pB0C}X#pu4v#;gXcNPi#f=Wi-nBPE<94|;68vRkly=&ksU*{5)L^Cl<)5OG3&sI zD0cav*|MQcMnq}h)sSdW?CoNbU5pEV4~e_fJiC`>Q6qHCZEH^aitZ7D1ZIfglY4l(s;Sx_INVH5VQy{DH_G2dLi5uz!HC! zyEQcK_xv)GV{6SuZ`RhMO?Uni*S8|9o(>JZVKab=?2J|zS+};pn}8tRg^bw0`-W$p ztKB6NzvI~BXJ@Yei&Xcpsa@jR&BPt$AXj%|z#?yWH1r7kiJjWL%~(9g|{AUAug&Mn=S~83;7%B)og=yGMCXq4by)vb{ z-7kFJLF!VWT-VV1VJ`zn0)QplJ~pqzRpaRdbf4rDW`{{vAownXKv$I-ATxszc}6Vu zpJX6#Q0MtxzMHMmyd%I;j9j-Pm?bBag4Xn7DUaNl@Stb5=Pt)KChCL$7ACEbQ^YJV zfMpw=(p~v>N3Qc?_BUheil<1B((z5}YIv>!V=$!rkfjs~A zh_TD87e!E^lMm0#)H`r6^_{&`yWg&SoxF<9iDPbhk`!DGz7<)S&tE&EcM6r_v zFdQ%#DI9r;fYGlX6;+9Y-5)*`*HR@@khp}m_cxI?2zijs*cYxU^GE77`x3@(60eW6 zIu}SKE{LyZ$?P5`JA!?uqz&mUzVj|F`KaRTb$#7sBFC^9p)yVo^^*V6) z9|0xE9=G4_a8nq~Q?##yPT-X)rqD%fxE*%2!~!@A)rZ0!Scl!N$X7o(T6aOxkJ)DP zZ<4`tn9G`JoccQHM_=y;1`!eZz?jR*x)R~{g`jEe^uTo(1G!KL`I*_Dl!LEUlh;+p zSs957jdL$&-IbNe{qN|At3zEDC~xt(2xv(500gP*9Jkb&)dmqD@y%Ap&q%vV`HGd@ zcZ;=ybSVC<4VpxD+)a7WJU7V))o7peReGFbMEARX@F<+PwU~eA1KZAXDNn5as#c8Cw#D@6 z2|;sCV58VUbQW+Hlo3s%P8&_caNbb>`X*32IK#I6$VQs7+dQ3oOYanG^;?rLa++bs ze_c~ot*?vrvU6jB?8emxj!5X&GLcq_>7&;I7$sau^}qVTx@njoNigzRK3L7|DJBc; zc@3SF2rVJBf1^7*6nu*~JG=j?B)TS(z%V;KWmU*v)__Lnz-`_!of2uGUbL9R4aX2E zjbXu(TbrxA1z_wi^2GVtftyn2uzoZA@k^3;u%)5nDReDT$>68^W1kvDqFP#>&nh!? zjcY4oJl~?F83ukHB9j@3MKV22?oM|uFX)pLsGWy3oR(xKN^bz8;fu?6eHQ2Zi1dB} zr3Ci-BJ$M^-RLZdz!NV4r)2>T+bN${QGiSTbBvb7OYqYSdRC9&m{#KkZYD{d*0WZ4GVgEuY) z6ZGhD1XKTom=KD|Yhxw!ssecwm;x4A}5Uj5bY zq*?dH;+s<4z;nDbJG)>zWXik3#DMn*(#~2mt*R zL7gH6#K5)>tVZY(xWtf|B{C1=6_&j2rAaT5f6{ZN|wV>{uAxTkyfh5`kz&;22G>Y z2Tcj1S)>W0&As_;&c>>aSKC{Xhl$3O@Tg5d=`FBAd4#6wTyL4q7KXrHNgZ_TU7KE& z<8`0lSi3e8F2R`yJTj-(2lp2*V+Uv7pvjKyehwdoVoc0CpA+pdsH=@|Qde_UxPbGw zhDd2WsBR9Zy0gHv#{&04yRZZoPxJ#)8_YD{J3HS~E}xg#fNFwcH6Ga%>xzGrf^6R2 z`HF=T=e$+7%kQ*7&$a%=RT@A0Tg$vdfY2};v2C#GVo$?-&nR!d#*wiiOF7&ut7w>o zfjONa|Q&zf?#xH>OIL#W~kD(m!r2DO+Qz$i`E8vLKq#t~$E@^Ry0bw+$lR5KG(1K|SNV_Dw@D%P=Vf@eQboNp=IXbtc)UKq4 zUK>G}Z=9NbGNU%Sd}dxUaboqbjDU1B+Kj$kTJzo0-FgBlIZoub>7@V4!-Zo{Fpq#} z?|R3!#06B4;TqL~Gx$a)pHz7XYH*PY?kI!c@Iun)+IXsyJk!;g9D4CxW<9b;m1a#U9(9cq*YQfx(Cq~PQpzS$}k!%vY=Hl^(L_HJJdrkLJ+fS>=) z+|2*KqjU={`CcSIOC7_$l%041j(PXZJurqS@h7HvABR|Lm?uA%Q*4?gyBNvf9;s{? z&(r&$L9`mxsFx@Eh@;bO{X(_umxU`cuDE}Ps&wrlpT>}?=1q}7%VEbkm9^IVD!Cch zZRIT74q&Q15eok_&s!&4CPe4Lyyub>2RUjTRC@>>aU-DlYgis9Z(KlIHa@uyoEbVfpf^JNutzRGd1Ns$>p69*T`ir#; zl$t8zc%wwHp?PQhzaknuW?Q|j6%bHKPu&v;PKmi|p1XIXn8{2WNr;^1Vz*G_fh{QO zr|*XlNG*He$}u!PiR06h>f>c2_&vHVne77&TFB_%zd)>ZXYXR74B4@~qsf@Y|w~BG3x9ckZdF%bLo&+o9 zWt`%!(ns6ih0;=t2gTUhl_%O0oB%37rWD)3EO07>Ghb#e(<7Oqb#lL%x5=wL$fnLs z$?x0rWhVlbY{B)3d6EqQ>u4bHj9l4#$&0cf!wr5w4c*}2!|!FWgdNIRuHTL0GS;Bc zXLjo+A$$5t61FOb-D>&C&C5f0&D}$!()-6}et3(oTgHq!Lr#A~Q{9BSA+C}*FTjD6 zKo${qp*7fkw)w$b$zYuIwm?F`0pr0R6SN&Tunhh#%q1&;(VS_WgocLJ4?`Ms^TQ&* ze%A@7)Pt3h_!lW;B0H;4b`Cq8sul!fI1f>AXQfh>rZzp&1;1zCm9FMr=$1GAw3VC1 zS(^h#cG*=e`&%L6Q7&lx52A)^ZbT4`F!rUqR412y?m%?43#FX7P;2vTQ|Y0jk__n4 z)C+qdBd~)czVyqyM%BKI#$LU0c`cy;6`>i8HPCesGZ5Fvi8rck%Q2$OJS!oi2buJ2 z8Yx%;yGq!2nb0RB?uFD*C4eqU3gEe86w1OXxSJAYsT5hFtj4asWoyk%s4%;V#EuYV z36!XHMGakKNKQO|5N8f|{Rjc;*j;Fj}=V#s;+h%|h#cOTsA8b<8-q(~Y=j$;I`aLuo{G>@Dx&CI|r zB082X%2>)*!h3Cuq~z+aUJ1EGI8N{ zruf^VrRcS6*W&~6-izf$48Cxqm) zlc?IFZxN*0l~q;JDjYk8v{j%SzrTLrGL;EkhYkMxcD{q521Z@5oI2_%(J8*T$ijf& zThRj0Xz=NAVsFx0dHecOZRFPv5yE*`eq~Y4nlnz>ocR&`9I=DNiAQ}lCYKu;t=95S zkus6ne3M$QAV{Wu=7pMnWF;|P>kBhZi`rE7zk$h85utOuL3&~W!hO-=BeiDnTd~(eteHy+PClFab zw^&bx!T&ax{0gkqZL)SY*HeM3{~S}A*R<86FlZ{H3x!O~%>>Zf`k=Qc;sL%u5Z*^t zgP*0TRRd?@gZ(g4Ltq`;0w!YCy9`a7CYAJ$(xte5y3jf=zyhmFzn21zVQ|_j2Ue!! z?x$>3qt~c`*CW0iGXYUbwp!DTO7zKhz2e)ahz7~1SZ{ktmzD;)wySC6>St~9m@ z4Y-t(nCsV`rpp&Eu;vV1cNEOtiTAPJabp3GYUxI2-Hf)s>s zGXg=X=>*{hLhl0q66dQa@7nt5+ad|O@C)4L#xD<59yM#e4FmK~UZp*MbM7;Xk8BU`=jfYYS4%QrZ=k3B;VGmx6B zyY-m{!*hL`)#i9-TldpvQ1JiBW>mq5UUYALx5? za{xjJS$3K}E2*O4v>|QUQ}QT6vyN!POIv%{cM-M zT_@m5ug1WRAz<}MJQkpG)F@Zuq-no1I&y*@I8FtIt% z6kEkIC+JNrba?Bhm^LY&IU)F3stLYWTAQ6NARO_ay=YJrk*$(H3cgH45Q#flnDvrR zK98D2@E+uRzao-V#kFxXpzvw*KtHP8_e3w@cb9^Vm=lZMyI4YkMT|m(4WN*1oO6Gq z%Gs&D5lOTGM>fgb``uWAcV(@gML_ zAtSCOZkzi>0RwJTh>HtSOAsGh7+W7R&I_BTS?R>?A0bJanmKbpp=1BHBGIVb zMZcft!dU#rLHRm6&#RGpM)UZb94s!q;mcZ!T8$<|BzO7sNb8!}sBhBYUUdC!PHQVn zrx?r3BeX!jtfBE&VCv{ZN$uHpxf^lUnjl7;eS*0yi^|_&Hv)mq?;l5+H|O6l&AGo_ zMz;B_f2n!JRPnAG(>J;>t9@@=>|?9e659ix2lZd@%9tutsvqtB2nzHjeM}QCUwRla zHU4ORoM%}*Eua;#0kb@k2ZPIJNobc~@!O94iS^F^C}2+mW?A8(?DWjD0uWfzg#jBYeM0@KQw#5@oZR)b zP&MmL@l3GbNg$gjHm6ZHoUPvLQrVN-jMN8;g5%cG8v$!&m@yNI%~ZauSeup24+tKK}U%tjiy})_`G$WyZB0(@@eJSM9gVuwwu! zfvz=1(;L<9e|&F@%f4gp_qoNVdPt-;F@5gI&b1w4tkajZMsCL=>*?grE#iMUl=7*K zH$3Sb-0=;m<54?VQ92Kg3Rhhf@-EfRRi5*$#jzrSfHR}A62eXp$%8LCHZ1I5!t8rG zhbk|-3CDS{mk5#dr<0Cwm&4hK?TcFPJrm^%8iTEhKK*yEvVbIIQgeGB`U9wywPuXG zQq1sF@5&D-qpL+`N}dZ`9Sy8=o4Y&vJMS^fu{=KwW+;8OTD}ksgXUN&T^37*O%trK zl>J##v{x1 zGrI;sRqU3F!wb7u>xG^RdegV+^TT)piMC2Pv-jQcki9s=naBJxCKUO--(h4{f;e2H z3kbq{hbGGg+#O^(IML=~Lj!)-s*3{H^*?rB@(p39Z4_=!7jk~=v|+JT`y z$Csfb;kcwtzNev@Gw!eI>>cJXY5HCQRGhV{PwSmm)MFD0%Ypo&7=#!#vS^&Hp%t%p zzV!Q>v@ekJkVm{Ql$X5UJb#La3SR0&rd7DXG;VHa@FO+sbA0pkn)BfLHV92cs5j@= zv#;p}Bua{WjyhkRgNNiRozJfg%YI4cc3$ncYvOJmz?}DqxB9|mYq!`Ex6u@Hezf8R zgI&buGp=FX`0@rJl!}~x2y;DnWw#aAc()1cG8Bm|%ko!Mvc5H>YxdRXo$hqjdaib? zSC@7@+f4Y3U|U--yZ=u8Z}`GVOXR>i@Mc;)MNR4iqIc#oE?STm3>RkN>w)jhEPS|0 z9oLE@se{U)*sQnBk9h5OW-4<-)uM(k+M3V;p5ib#LBn7!UrYHufWgNUS&*8B zc)$L5uAs_v-}l-%ug4nwP59oz^9Ua3e1jV| zus6sm>Ng&qPMF(_YLO&dWS69f)^jl`*}!Q8(ePXLQuBiupg1FPH!zuD=yY_78hD+T zZuLdWo_8=amEc*J`#WsfWv$CV_P3pd@SXafwk3Z%GcAz2qL%tU{XqH@}nIMNbCzC7RiMpSsa`k=O zy^LqY`-zH*!>7Q`bFUMUm`E%L=twbL-HR2z@zTnRF?F_OjehydL;l^udC3{5cCjID zo+3|P;+!%_WXe#zkZ`mc|JdvzZSB>kCQW-|BHiyuI-&moI!@854i{U6hpIvXe1puJ zlAqN2uenE~JF^W5>2jGC?w&RWohD{6%8`;x0{vB7jpNgF?%KOQx)KB0e68Mnnv36u zbWtGvY-y~&sB&`y@c{3Hu&EkIV*hpSz(*^Vu}rk!6IxJP~vjz3-cJ=@-* zI`c4>@YxJ4q{+{A%Vg5tDpvMzz!Wcf{_a7+hfR)M_iB2+J2lQU!pZBOCzH2LI&&jNB~j@`hbO zmYL&UhLId^1o_MP2%jyvE0O)O4M^$8TXpay82Y)=e5hw+MJF))l!)y@w(bw}dj0(! z^EIJM)6LL`Wk#&|8F+e>)LI@&*6w#-!xrq|M=r~9XE(#qys1|#zN1-5wQUBA+YmHF zyLEaNR=;INB=v?KY=!^_{2eM|`G7N7M5uNSq58n+U%VIDK)Y{ll!Qe4N9T&AiDAw+ z-`BorM$#dExXX|iF8uP;nl1;A>VH1DHput3JLy6b*Lq9*4RVDf~Mb-Mliz|X1PEd zRSV~+#Q4cylT13~K=z~3z>5w`YDDa-x`m@P3;jZW7OS0gi7@*iLsz_yd+nVWvvUanywZuhsUv9#NuUUR z_hirKiHp?r=6Iur_p^+3N1k+7G5j1bX6p9jtZzg`>9z*=9p9;OTz(FGNG1roe@fNx z>|+FY-i|dnIy+#oxvuCkOo_}AAj zJwEV(Wb5^1{?l_2OT67mePpTF+hVh!Es$il$-$>PHo81zxXMZT?A2?>B`t22Y5?rZ z=5V??Q7Ffh^qkJe%N3WaIsgC2dds+|+pcREDW$thK#)%9Zb2G^pptK2<9wUn@jqhiwbxqP^nnKo)U9czylG3`NNDa$Ju)*$ zFsDZW0u1(d!0;9KSame_5ZlOWFwZW&9xx)j#)hU&PE;;y*p;h|k{PANIRLOE6P;!fJ&0NEsq z_UN^KD;epkw+v|XcqQ;J@jsNq-v3_gry=`t9s7oUHU*#J|GwAMUk+7AC(^dVRL+EJB}p(CJ6X+f{o3{q=b4$~_j%#Mn&t+a>Md)#{3!q~+N~s%b;lCh(S43-u^C z>&%C8F;E65c(m6Ty?JZ$pun_i4X*KfmJhfH$zv2t&fWUBQ>cwk!8?*qC--^B$Jn1f zaHc+vp|x%Y)k*Nkm%tZ&?#J`;EAL%$??Ef5dCdwc=aT6Id%IS+kVtgP8-A~B$T6HJ|d^5 z(7&r9X6YHI{EpecRcPTM)~53=D(2qL!tf~Ud;93D9YcMWChvRo*yHxzaet4;cZszw zP{!Qr;JreNXYmo7j{6nm1U0kljrKHc72LLve!r?j{6WQg@nsRiQpDVs#u)s>17tdew> z9%w?@kG{Ep7i3N)k!%l33XKq*S2W%G{cxv4$%>IATLL+NlLL&~H!$*!eNyAsmr(=(1xBNea^G3a| zUH+jNT$D#=L&+Sh`%5zo?M0$S#S&gPA_?a^cE|kg-R39mjXxjpiT}aL%U_+96RB8{ z*!&+aA5f22WK0Z({)peg^&WFOto^H&YhS12>>DpTGh0<|#FPg0*Qc}6d3DzhLhM{s zHa2E?X}wDB4hkm4IyoLdjp%+q!_kS_$*7H@38TMXz#&^eiYCWR^dTU@)hLPY3w)^B z%z(Bb4e<*j&5TI;s6Z`jCGBjd6ArxGeT4WY_5{&VXLPY>2?h*YFemy`TpC_cGI zE9Sey#yQyBv!cn(nd9an+RQ1M=QECO>Wc5!jrF{z8$UQQ4E9~s-*QbUp^WuaRi536 zX=;2>1K2(=<+U;%6wRO&rG<#$JU@tyDX1J8kEN6yx*OR^HKJz zAKn!nqZ@JssQrJGhHivHilh1bMRng7(r)XVw-kvl6rKYT@3 zZK9dze=epd5iwE>fBAhOi5=ZC4K9pcKGLw8bTggT5hT!`x9POLT_b2>tddG~I*tmB z$@3R7P?PXjHP0o_lPn-z6YHz#ddx!}?BN@3GcD8kLzKp|(4ML3l;`k{o6(khPI6!M z?Ov|0c~j4d{jDG&jL>kJiywmpk)Ge13SlU^+Zy~r!Ub?!ejPjqtXX3}ZAG;D%HTb* zDf<96Y2eQ}Ab-)@CY-UyB{rJ~h}3V=FvMU2*V7nbDYh>%+Q|^g<4V25E5Jt6*jLAk zvYICe=siAFM9uTL%#S)m{HYD(DiUt-EJoblHDE66QPX7P5LuG{&M_`PZA5iXc~$(P`+c)^CU`p&Fn0+x z4~fIImzT$XmzR5w73W-rp|7NH)%e@>SL-i{jteV@XM*}~xdw_iD-L$qi@xNIO9=3x z#|iDXh(};9eZzr47E`^7sGVs3G+uoG_2r`{TS^x(&OrAFvadr{k96SpWzXBRiBm>1 z7-QNQU67@m4N*am<+=`rJMzgJ+X?*8`X5n94TYt=A9Ow%&^k!Drlt44-Hs1@q~(2h z5Ac|Zf{Suvtqr{wWKJ|A#LER#PS<}M3K$&*-Svu|yQ^46<~5Yw+4>%~Q1zb?JtPbV z80#JH#njVZMfC{gP@1I>{cvSg`*-|fuCAXsdA;$NjNin6+(2PC3AtE;Oyx0g?WPx2r`A^{Y+ zF54vmc&3uIQQN>)dvhJn+FtlZt3mN*p=`L_+y`?@vNk0yZ*?wf{?I(-o`kXjOAL~R z-+#QEN>&_O%z_Y+Znw@341!wkhwpcg(uIyA?j$FRT)B!jb{R+Izex-<)7GpPCv~o@ ze9am%^XiB6HApgHrbQfZe_9an=QNvPjF!GpJt?7TLPN7vV87vmWR$#;ZIA)ya-i?_ z<w8TD1L^(B~O#d%?R)k-O*O&Q0_gSnqI z<|!g}p3_llwt(8j2wZ;xXCkiRMg#Zh$V6p{d5BV%&Vxa0oV zcPt7(n;!z+hD7(Z(RjMl^YJE)L%jG;Ud1=9L4hL6z3F}v4i+Y0ylZ(r|4(gQ{ za|n+jIsv_diu%K+xk`H#tV5rD=B3^Vh|63~@_Eja^L*vb>yiU@Hu_6gG+`wh+uwRq zFXW(wcNfwhf-DnWqsOpwpFdLH9fpqOt)}Y`ot*Sh-))dCcTDU=qS$D0dbk9MCmXy! zE1q)1m3LqyPmXOavk_PdmC8E!(VM%dAuD5mrU5IBhBTqDIm+p{C92u_Oyf;oV)x!l;_~u6_hovG*s-nkzZlhs5FJDjk`_ml3=p3=ves*b z-jpqFydkFHPcB>W#3E3JS#>dCJ3Y*>G1k`kImgwWx*a6kzQBMh5m5K}vbV4A>EdAb z%AE&{avNwn!ep?w1yD{IP!Y1s+3Pzbr`Diymq|{2TB#vgKW1ohX-=t+`<-Y%!<*6B7X_DZ+OAoEU?=kl$Mkh)EK2toA>4F0YUI#bI6_Y@=)cdWnWJB zyqPoCKGd@oPGe;Mw=dW)RS`smVc3kQ+(=PK2VSjXCL~BD&0CzO^vxWH*lLX9sxaRI zNU2(*n1q=)O2am=vH(r42qj@JcaUbGqp2LWo0TK@Rn!MQQyCo{!1+TI_9o@s(AHtU zXdTa+mgRToZI`wFQG8#1y>@H`K$z!EJt5D}tcp9lL@9h7?gW0Psx2P)(kk$}L&rb^ ze5MyGFTEgu(T}m-g6jAquIJL!Q02g@=(l=Bgde6a=j`WzV=3hch)XsJllD&B4kOl&rmJ*+y z8)aytrPXoe6RTM1qvtWu?guDV!w?cWw!u_oV5{jbxsRKBmy79sPjGALzx#XG`mdM8 zCtPibN{WtmjhQ(4c=)U~?flVj;)52m^JO_yOQ_Q2&?2IaVzlLDNDCUcJlC!IoPTq8 zg%rM;b6ELRM+BuM?0ShibDlHDCx-b?aCEtKT5?x4t~4+F<(jb2&rXcc`1pexd>pUt^fJEA*W)I?Nra%@?KiF*nR<*zW(1=p$&%8klm zd5*`s!H(ZFj~}~v1mihKBZI~JXqgD{XdTd`(98(+*Vfb{-@S`oFLLsJ|0dh(U`s^R z;biw(bcbPL$Bpv|V#X=+Z%u&UzPgYS^G@h@3Ssy_RBl9vg`Mbb!(*xYI~~&2py9N! zM^h=f&5f^;h9;bdo66(z3XZ`xEc~$AH}5K8AU$Q~!P~A22kMJ`RpR#hzcr9u+qv2~ zEZUj0eo##*Z*al~27>eA-{c%jIKlzyXx3Odrdm{U+GcvgWDXzu)RaJ-fP6ELS96}d zfeHOsUNF*B9Z(G>%)w3(^)U<>ld<_&YA!MnJmMgN-}0;qFbJDYf0ym{LyETEG4d_& z2zFZYM>GNU?n=}!dpZ|GF&9kK#u?P@)PMPt%Jb<8&wg$S1akw0@#m6;r}^6Umr^e* zqwHbzker6X-cwC0;G$)rL+|<-#EwDnttSey9121zA?*}f%RKFQ2Kw}}4h2;xw9@*t z8iaa`$=}rF_*3L?O+VOZ^$Mc;6q7GbYi)|u7zTiE&y_|F^CjfP1~{#NxH_x+2& z{PRtxLN}voShAk!_9kRm1J}dOcwttWC5US-wB#*4gxu+vkIqP6_B(p5XbF36RFg~Y zA3t;nf>8;bL|h^M%aA-5HUWN5H|rB|&(3QD%9w(?)%or*p#&jL@y8XfvrPk&J0;PV z;Dw%k*Emn!*A3=!QK5C{-mX6E3CviGqT5^AAw(1;6hHNwxUs`UYwm^Xl7jer>>0rx zh}CXv#ApdWtNTwr96)0!1H-B_#&H^M40o>z^w;ywLivcYc;)o?qqTYLp>7&Kj@e#Y z9($(gp5$9ifbh!ojDGUo5CfZG(Mb#0#96PAZ4~lB#uIhv1~pV|{t7qZWyfuy@p;k! zj9 z?>!%{0L}0=LHFkU@?G5-8HBaXLhBXvf+o@vPxZyDnxZN9ScNo!%CeCr^# zubq-s3Q9_gj5BL(NoQRm(KeJJ=FK#JcX1C@SBFp(F3!s+pPf5z+04(nIJ{FrtE}z`C$FsT zljJUcuf>tK-&+DSby%GfcAyTS@RaU{_`}ahyLbA#aPsv#jG@5zr^1j;bJ_EfoZ6qr z*6fWBnk`%OQ91VjqxzjMxX3ywRYD4F;_T0FAK9@i_;o@hswQVOY=`ugI;*84Bs5&@ zBTh5ow!~;C`saQbby7du4^SHr>Xl;Ar{g%bi%;Y7-vG4M6gWbTJQv#hCmd7;6-xr1 z>DI>LcLhV^2kF{t%5`Ey`ZWT?+`hh8b+hl0Selza<{}l}hMq)D&c}qMkrgpX(@_v$ zd>-&Mz9mMW_Fa^tdJ&y-So}rQeT&$2c}YU`|N8)3EObgwZ=LV}JOcfVeQ{-@v~w9@&t!u9sx)80L~qzaOrA`d}CG;pG_i zFh^q@*l1F|ETuI*ik!pIZNx|#R7tAuQ{o=$YknwetzmEZr}gRPej}~7(rOm_<=QKM z7esUTUD$J0(qa-Iu~pSttZWL)xQ22ltqAu%XpSP z37P)#Y0{u!`Topz9q!9HNh)F~e24O^JHdZy7tcFux8Tq~>w4B*#5bOM^Fd%@wcny$ zku;n?j$B@rMOsmoR8AIn&-z4Jf`CqT6ZXqZR zyl3z~rLf-)-`@Oe+mkE!+>nr$NFtB4@opWP{?DuWYV2cUa}{grM)gVQ8hplv$=M{= zdL%%B4*j& z1oXIkPb1`Q-Lu3>4bBm3vZbu{YJAWbkV`dduTF?*%|$dkW0G$@3Ho%%ScBobC06?r zGXe1Z?*}Shx#G*8Kznd(Ognpx=@`((N5#w7_$n@kPy8m#Kg1PWHM#dr%cX9TTN`bZeONjI-+(+G`LYNCtU~|8$AI2e z^7h3Nqc+y!FxeJhkd85<_ZTx&qTVpKj|VU)vrH`wxV;xO(9_n4S}We;8lt800HRlF z74H;-!C8@g!|@)-W?N`kq<~h+k}#*hYpZepWt5BZlO=F6oN@fb5s(($Ifz**ESe&V z_8HAv$C58y`?Z#k=#XBBr9peQ@F4KpK(!x;t;S3RJG{*lDrgv(o@4(r^pk%l>E;)v zYbkCpVY;p2+%>qB!fRnm&`q%}&_tIQXunH;+cMjP5eq>5%^1}jB@rGuUi0xUENMiG z{IxS4N5HQ6$K1ibcSDOAQF|~*_U`Tv9zea&NM2k^YfFnmNhUTIE$G;@@d1iY9Ak~B zkZlZr_@@7Hji?}@uR9Kn&cMui^z_Wm6Og}?GY{peYXoW#wl-8RU@N(dhE?q(eErzo zQ4-D+>kZ56Kzo&Y*YHW0Vcn9kpraKV-=#0K{*cN%_ zD+e&dr!)vJiP0*~LGu9G{}DU`Ux2JmkT8gOq0)fb@-e z^NeC^;fTVFB3Iv$;#Ct9{9lq%A(cuQCMP7eL?{jfn9%9^;Nh9|eftQL7_gCn_H;R| zL5^oW9Od0c3Pos{tU|R`@BGB?U!R!*L5QT zHh#H#D4$m)IxEcoF&QA49YsV-R18x#3KOptt2X^E@7<(9T!# zTOapJ&&JzV4lWcO{m!hD-U>t~v)V7rc_D7Ia3GvSBc>tk0RvyoY91#(e#93Y-$KXA zkT?kZK=`^p=wV~aWz;>;N@afKM5mIzZm%A(%Vg=&kxAWM1o!QT42Amy{){q#SQA01 zypfoLMOKN2?D+N@c)*|EL3&0t9g=lT*52DwgNVOzt5zeDR=ZuKaN0n(oxk4fC1KAp zyr``uuJ-1 z0)f~Gt(*NqC`i?SX>7cKvFK0HuQ^(d>C&o6O`&9EwYRzONKOjz3ojRf1kLefWmXab zx7#2AF|BN4^6le8uKTxV=mIM}yB$FU?Pdlvl@;%g8N~sf-!9R|D|?&JACHii34(2c z4Ku&8*R1 z39l99<e zE$5Gnja|gU=VPu8!igA#O5DxghPT=N-YRM@;da*z^mTbf3*87YwH4CXRHCa1_1S{CB^TO|lSz)+S$BQd^t_s`U1Z;S(a+LBx7RM&$-5q(fdCfL12iqXl(55fspoSz(9 z{QLZa5a=;=BaVBrngm4cVForT6OgRrSOLcSgmT!z)Pfo;Q2xZ?xzHimRZ1D}U964b z$KqoeG!duPklT*U#>eN^tFqRUxt zVQ%q$BkmW&*Zxhrqsm?4Q2YzuF*;5+bx-6%_;$2tEdW&TTaW<9@-_)B+j_!Xc4R1Y0tQw#Ly-^eX}hS*@mJ?zU_8- zXJp##X{RqV2-YT#8SyfYgE`HUm}gl;JjCsR|KZKUSpI3ptFiYJUrcb?dJLioMh)ET zenE9p-aYE@^Cv|FW}`WLA2aj=xgVE?_P>kD5xXf@11?6tQWbsDzM)JhdR$fzKLI-Y zf4c6h)S^g=*~fK$Vz7s1*nmnb4!PBY|rOUot2 z8K2gZXz$Kn7Ssz}AXZFFt2o3*(BAQf`2K+Rv zH$-|4g$<1wA@%cXC=XUr%_r&uAA=e;1<6kMIh;q-!RZBl0@i6d7hzK-uCQbA!bu3Q zpUM5o*Rbbv#Ema`6CRP2h;)NIuJ|*_8RB|kx@gnZd7#gH72F-c@E>=CG`#It8d3J; zz#UST6bvTN`ukO+wtykYudw(IihWt1rHE5|al}+qDfOMVmz1KtJf!zs9R!@vc??Xe zB3&;&DFef|Nc^Q6&AmH5k_;{ljT>V_?oTyVSqC2Ab|gUkT^G{QYyF6Qa2r28tX zd4PkHFy9*OgOwR*rY_4x=9Sol!$Dn#^OLGIwi!Pzp8`|pprlnPQS(VkL(fh)pj7We&P=&k~dwtX={*~zbZfB%7L&oAh&%w@9;RU z&}cd3u=#MpC#Ug-FC@&EA}iLgUKS?4nqo475~|!x?q|Nq-^J@vCWcF-@5HasQ1p!p znLRkv@eR-*@?FC(%Egw2A!B%}YrW&WMAufsv+s}tTzxOX@;`Qx0JFfkp1x2J|1mN% z`6qx+J~Xm{rEto{U(8ga-zCM8TVO`0Z*IDMNS}2e^V5RVD7pq0yv!c@X6;fVaav9? z-R=4{d3RVN;D$a=KB^9;JRj%7@8)5SkEYMce@LBcu%_&!-cVWv88mFV?zxBNmm#c< zjxzlsG95-3RqoyY2-Msin`j8GT1lgDTvh~`?mk@4&n@>@7W6Oki%|;yk+&NWKV$B5 zDqXKc@dIo*Oa|@5d{*#|%)zN2mV$0}&_yvj6;}pT>7=FWd^WRW;1-IJev{pbn%K!$ zX!-^HyUIR`Ffm04=d!K+Z7SjtVG1zrKt*{j637VC2aIg>@hL~BJbN7LIDYTMn2oow zw+9l3IpP9I=?bfu9eCZXC{Byq57u!yPswpNfck|P`)(3YP=1o&mS=kzy z2B$y^HSZ;cKQ)x5FnU$f+dx`pc#m3hQPe!Ldwy`eWS`BloHia z;quqx26lR*^IvJznfmI8(gtr%6lYH>-jz1B!pQBHTc&xU1VTR}R@jew6FpGV4~zHK z#UxBHr_-FU_OnkrH@R^0v(@-q@ko#iAZW3}LU7SAKPS!mi3RH0mR{EQ^v8R*+6#^% zv6Ilu@TZex*~n@DOQn#78?L=n?DwNXYwOUTh#uNnq$W=$bDWTO>f++!5@6ERxk*%r zPZdbc{YG3XuJVlz(em7E0qX`Spn577pcz^yp4RVe2pDz;+0KcKdSgJVlwTFb6kWLp zBBaH~vt<*B5zDJ3GQ(YcX=|23hQD6}@z9&Bc3xr;{r|C7u^jO3c9sVVcvtqB-&pU4 z<-Mvv+(@r?4##7pis5TeckbS0XHX`Y5{gr1sAv9a(WPr+ZYIuH`gr`g#IQW|9V(au zo8NQ2G-X&17<~~6RlS}M_3vxJ_hlmW{lB+IR2b( z9uogmPFxVxK?5Cyxur|7JNYQK?zU@^{e5lr1@Y#r?nq&rOS+wOe%IK>u4RK7NPvk4 zRk-lOJoqqouDo|kW9B1Iv0u?smFyf(OE$Ngp{xm$JO*h~Ex`5ixW&655AlzLLU)(< zvfav3qWfbMrVG2ez#_eiFcTs!NuT~c=RlWVdcdRvVRdJZs@{DyGp;oPHzS2lcA z7ss<43ipE|W=$t8oW(z)D+Pp_6Sx|k1oha1Tz_fLY{n!vU(A+MFGA~5j`gSw z4*Z5v#N~{RFT(?2hcC67^2U2cc0@1ANv;IWUSx+B{jN>A23CD<2d+(RLmC9t4%%4d z@`0|Roo#7w`QKluldqDx<8v`NzcH8u5PElTbTRc9+mD*lDEu6!x;YRh43PqTMUHb- zHg#7kJw4*EPw~@9h?4f68*xbu(d)hX;>iG7VA$k4*m-{)U2_5&0+RjDw^DT~9?lv| zQfgvu8>d_RNJFAZ@7YSUC{e5PX55I=8l_3-W0v{H550D+p8ZG0k?j@K*`&+S<4|Ky zoA)jw1AL#lYmox{-)?k&1S=i#4=GyQo;0;H9|kdPw$=risGRK;ZFK{^1jCp_)EG1q zt9Z3=!*jbq&%ccW3Ql6(yPxklk2;(Ak57m2tdhBByohI8GIGVhL$liwFUV$PMSpM4FNwhd@u~CD+v73URE4$CBX-kN0TG9GTygs~FmcVjol!6+?9?Vq;@=hOG8)nq*% zHg8IdOoAljU+xDk8nvZ){K-$WDMyC}-noiKY_XBR@SD3lYwo?%tvLwvkd{9a&5IoP zj5?TL&K!E`{Q4zsGqxl|Jz?2qITtfU+KQ=p~Ru*C65uJzwkOGh3Ytr*sdoQpIkCOR1#xLUe8Gq zkBC-0fpn-_kcrsS8FSQ!JaLy7?C1J6wWy(D;d$h}4>2r2xczi-(WNi&={W&L`6J=$ z{S)nlU)`UJoQ$L0&qi5#u5hzMD@TBsp7J=G#q=83i6b>@1y z$a=9vl9w&F#e?B$JTFD-M<{QGX)}SDx#1xCAFqBV>>hgMIw}dy^go?FaDU--(3r-T z(`ht%gLr%aYkCG6FZ7Ro*?wX=go!EE_g{P+%r#l+VoT_=irnv|4G4Bu+dB}Sb}S^s zb%^D@O{WcB3N5t5ZZvPw4C61qo)l%fh$W+s6fWTZ5#Bu-P0h_T8QC!#uxKBaP<~81 zDm@GJlr3Jq!+VvL6KmMnRDu=(oq-?=^gXUjti`RBt1umq`N;@4QZ>C}tNwIE3aJ=3IRlw@~q5zsQ#?(UdZ) z%=?8KpheDM60gqf59vmL53xrY>Yz^hf!-5ZW&3q z<_8rt@@pBgcD^Y9bJjZS) zzoaV9wyq{z5lV#qaBJigGHb@8?0iy+W#~7%6NwLxcGv^m#+=;~#$}QsJQG zB>7frK&!`Cf-o)i5$yZTuv(Ji4HpELDFiPBn-5~+ct6wacIy?e0)}~YKdeNEHB_9^ zOMX#&{^&PMZG5O1zT#izrs8v+arR(7+vr|yew(nLIv5bH?YKJsY_l0}?n#M56eatA zB0r=!QHtmV1~J2-LYzk2J#)OOC~TX@pRlSk$@A9B*6stWdy$&FY58H21xq*2h1Fw* zlZ`=s915b@r52T7NJUdmayW=rWgp1CignwSqI-VFG85;oX0Uk6Y?&2HQc(xnnL(Vt zZ5?a`Q2W##rQnN};WX(OCO5f+RX_8(%=0-dNY23`-2bTf8sA{Sf z&$mW{sYC-Z2wA?BWwnejv>UWuyQB?p?iV2OUw|neWIV@9XwQ^j&TEIq-;5XPqaUNyj+mkI73XV#HH0LU6bnq5IXmJtc;n(C-}!vw=grm^?;^T8IGgDjlICN z)0GR)GI%h@g;y5|&Va^9rrjN7iDy3wJqc@t(+2n&i%^*(DxHW=)D9sakk?SuW{m4x z-caaGv}yFh*BF6W!H*Op=NYSly2SNJ53~8Bm(nz92STYahwtGseVddqEtWW)B_3T+`0Y#m?W&n; z&h^UeUe}ph>FFqFp4e7b-(y%MiCu$%ObgTl`HIEZ8;Z;2gBad1|Ec<@fU!X`lGz6{ z)HD|tk#U$p+ARtz9*ouWiiFE_i;iSbXI=>gJs!=zO<42KbFC+79 zI{vEt^Rmze*8lT&y*JANOV1(}oZrrC!JYCmCMFI$;k?4Y5ogQ95ujotTtO#qkY&5) zQNm}z%M4YTi#!eB}Aj}ZQ$f2XfRa-sm z8oYxtA^9NsEMcP z+%hcE>$5he&Lw$^xCG+F|J4Hga1nE|(^pH*OaIHoP-)rFdxZtL<;q37hnn{NnzeTWKv#(s?Fo6mQ-T!-w&}Kps>>2lubOKb zkf^BOZswXl`OTz*5JNvLGV&+Uz~6Pb5)R@yjLH3^aon0XrE!qyrZf|nUkNx5XJC23 zCL!?oj^u7}RwDO`nURfOf`Kiqb^(-H3n-M;sZO=|rNzR4> z5>1P_NZQz~b+9)?03!RijSyS<=y%O?8lmi6M=sj4U{pCw&LW9@+7?d^1JXA%$P^%Fb~tBEX*OFlIQJ(3 zXXdRzhHS~v3!~n1`>|y;XC~j8T=MkxB~>oHKh;kP4+VpBwA>5=`Ca#R{?br|+H$rr zLo0HFq>(=Y%w#8pAq@p|4q^5-dA0YgpiOJyo&*X^x5FO0j;# zlV-dap)-jTq+Y0#JK(Uj{&|Ss^#r`v)PbL_DKHS;?e&z9cF7Z%snA zqubhQud6g~Ys`=Hv9=#0$x`6?UUD_|NX$@TM`t%(olVL5sV?TlwM$f+yiZB^-mb2W zM?*VGdnx{vskK!x7+(TnrM4(7uj0CJ0?@x37wVGyA21OKo0A^RXpn?gba*mkL?zdoZ}R)Fi96>ztLQH8$^Y{jZQo{J)OR zAH&3ItCZ?eqA^K&O%iP99^IddO!87Cv2?HR*YE(8kmUz{MOw-zuYo( zwZ9ki8uS^K8mzX~W@$MXDzgrD*f*4pW_1xMAetlmmm_#mj7gNhwW#s0UfEX?;m-wD~ zk2d>lcn@9`K4zWu76Sh)4+d#^5-Ou@0G`E9#@{I#0H#x`}&K5L`XK6Eg) zT|T#Jqj~;=G1TeIO?V6?uHsJeh*76RzfUl|$w$e&*jSlWO`Jl0cbv?jcun(D*$&Ce zU*6@rr=#7+_T<`y$CO$?AF%#&A22G{=ulgk|CfLV1Lti{PiN0leyN|_qE69>Xww(lO5|ncV5!=6 z`Yuo>JRN)idMU=A+;VT6;MYdeLF{*S$tyU{BaUMW>Xc+fYha zgF3=IsAM{#wH*gU0GJX!$tUthqe_;1Fqc$h9ns&g4=YQ(b3FLFkRIid9z6=73(+Hj zRBx_@$sje$Qp%^;i#{|0MR(Fp7V$E3R_;QMj+*e!a%O_C?ZX?UvQum~w8kieMCL=@ zDK^f;<*l%TGp6+|^%R;jve?DYRDG!%Jd}*#*<$Vv5OLv$8KsebG1nV) zfZZ1QhjEKYZ1OlXs~vlgtX&@&=6c9$}CbdxE)(m+jXQn{~H=!0~QN zI6_c^BLp^n1Ne)vuUF81{3O$3{*h{d!?X|5l}0)!W%`?m{KQ|LRX?^6M5X*h8uE%o zUC9=z&p}*THrVZM^I9Z1703;)H3lsyM~{aYRl?qdN1_j|8nyRpk&}_{?g^}tbLSjI z$^2zW)wx`;-vXwm&0S8VT{k@NbCfo2Gp#i$9S(ly!ACmMM}(?{Bn$L?zn)YNj;9{h z_2dYK@Rwf*2>%Szx84Gd{PGl|z_33rTF8XPw9WTX7RS(%!5LCLYyW4rFCEOW+&;B6 zbWmLZX=^C}Gf_;r5H$wbXo90!3Vj;7+t&cG8ZrrC)DuPjPV1{mvvIER2>vNsP~CJ+ z#TL`aqR(5~gD60qA@CbU+s^lD$F!v<_MB^vzo(rW<_`DD0jNHlV+I(k_w8wM+1ZZ0 zSIQY#Gr#tF@~7bG8MCJp?9e#>$3>iH_W8iu??NwM{=HizEKnl&ty6v;R^42L^;jrf z&_RtHZn~y)Q$TE$G#N9|l{yx&KwKLzcP(|*zHYR9)p_c&XjN<-UZpoXK%Iub?I~{K z>if^FT4(W!sidNYGq0y_IWcX3Gk`Ml&1vi&Q$*`^c%D2P@ljFs#j?$+fqwscefAh; zcD9|v!SSP@xypfd;+x(>Ea%@>W+!CoHlfvnlg&Dt0_;@ZqA#+4_W?Txf8?$WI=FVN z=*D($Ha^9V8D>`&ykTuGT4LpF>e^fMxdPuUtwwivc@Vhs$%2S#d~ZRRtVG>p3*vEu zq6CAT4V||t1GXHwdqZiy-0|+mL^rXJ_?3a`pu8kK+DuV410+^8yty$8)2frA<=Ttua4u7hcn8oZy4Ss>BDtb3J)3{!ngo%z90>kv$ z1@8ZWYg6{U?bD1>qwvKVi3g~0lvRHQ4ZA+kxXLl925K#L!?2k(t}zO&(cKq}J}qdg zV7ccP%hKwo3v;;=kcR18zw&UH(fa%O&)HHx)%?mkltL*&(>3+|t?Z__l;3jqTM94< zgx~t8wB2t6NdO5Mvz*9Qe_a(W@#te1i=zg|Vus6q5qfl$n)8`V||OqVrANk$c%nqh+KtH;7?mx6`?&%r#XnNSx&b!-NZD5k>yfs zIzzx4C(`5s-Fxnqp_X4esA%2BIKz?nlt8`U_UpRz2K%g$hY<3Z(cN6gvmOmu(7gk8#9mjIc71I z;eLOeQ1^{OQLa3xd!j#kj9)b+fdR){ z82(~>s)cKnH>7`>XB09~%oTLL=)ZQyoUrC<(gHmTe0fmw{aBWbR$2Vj1y2rye8mEZUe@jeNXq->ul$_{q)uPjr~hR)D$-}GFD+B zQprHA%%;tEM$Vx;ey8nX5Xq&SgVPEMch<^pS`?%JC3J$Ph7Twedg0mA=={Y+rN$0r zz3yYY7Gfk!)Y9-QK+0P%2{Y!ijP_Iy^pmq0>o#bkES`w2(ms4A?q+Wb9p54cHF+!c zx6-(+v6_6@Q3QEwP*RZmd?Di(2M~8GyWxF;nt!H=@l~=A)n&K{_JGM&^%A_efuHZ+-fGJyEQse~={KLAvct&^d&FQcnVDTT=pU@l9i_3$Mm;a!P*+AnC)i~{Vt2)g&Fhhg>n;@Qn#Y$ zDDY87A$1hOW47ML6e&C!U3z5p?!bL0`+8v$ zFCfc+l+T7at|}{#3#lZ+Gsj^_-59$I3T}XC)?|SqF)8{W!UQGY!&LCHt5*7JER;NH;)s+NG`p< zNlW2s^ysoRY@xyuU0@-4SHI(|ne42?f)R(2Zy4Uww>3aI^K(jQ#!kITk@`28C@E3q z7YBDA4T2S(tH?NJx*HgVDEcGuT~4PM!uUdH$W50$HjERgTT)r``P+7^ZDW#@m9&6^q%YUHPp`Kdd}@rnyA(_i~n!9A)h=@ppTMQ4&(Ku2!YR zTcqQky-h5SZHTwpJ2ww3DM&v4J=m`dKSZ2?T@eIOxO^~S0i`53lctTxf{oOs9-r6vYV92vZIs!6VkE#=Eu#6Ppqn`kXbH5=z9-=rKI+U#e* zf{>pNZ?THs2sz$wB<#9>hXXN_{{perw_=%jQ-6QB1~gP|GB4q7=}A8PsO^ejTHALG zH=`2ovsn6Q{6=!#-AKGnpQ=EIA`S?gdwbI86bCrI=Un_}yWFqj^Z^Bou8SfEW2;`^ zcFN`3nhQ*y)XfmMY|Xfum;AA;5mTzmhWmq6=$O8+1;ErzWE)$Y(Bfb|8G!7D3YgAm8OxC?TxW${O~C%0 z>4;x}{c-X(4gj4uP)JvaMTN!bnp#kzq85mvw6ZmPfbv00P3_+s)*-r<|3IBsF{wpX zwFg5O+Qw~)M6@=I94Nev0vI6hfq!|g8LokI`^vs;90~_|o)2Z+&ukL+8`o}anEzfa zz4Bozxso4D^Sl{L$(k&Cte+EmCs@o0izJt{Fm1VWsz^&3Ey0qrL+zmKXmb2Lo@?$} zZ?Safdz}h;|P*0$4xSg@x;KLHUZ9*kp+7&Sp`)+1c?Gz}t>gBq%9B|W&)#DJto322=E?a%_VLY0DHHxNU z+I4xyzzv5=q`L*Jrip?)D>R69p__*BeV7}Jh1oj&)dZqP~(g%Yb}E-7PlCTbdV8Fvqm&1S)mY4Uu&=C*ZPlQq4g3;;dDZyz)8 zB8wSVcEYZ)m~hN?qdF`Xh@icwg&Cw|u%!nQt<+#G-Db40+%i;B@KGY6$+GezuG3v! zALY@-jYW%T6}Edg3nq=}TxTm^d8vY%ZmX^RKpkBiumLL~WPBXvj1PG>D+4j)$I2K2 zXC5AG3I}AFWNqH9GjTf@qogb_b^M~gC@Yigm~FlTvZG%0#FhUfU9Qz-T+-EJ4l%8M zAa+9~QIc|laNJg9hS8A42o+(h-C&(IqmmsNgz@@&Y4s^Po>r=XGJ_3n`yC#N_8_|s zjqyzo9Gk8&o+{BSFwxLQQm^+fH?vghy_E)86ij9{aEQ0Gd3JAJ=QH7 zzGyL2tpB~gtRv9T$&tB;>Es&{?xUGaz%&30tjW4QGmFZ_;}nhUpd^jsI<{Tg!CD>K z5WO2$zCZf5+9@V?v)3gRs z+^$~3gr^&v#ijC(fEETkMt(nR#T*KxG7}d+@7;bJ>ztcZ|C(ARWnVTEzZ0XL8_QwB z!hR2hQ&4)S6{?9#-0AO+SfgDWmMxlC(~8`84L8P$!~+lHgrIYNV$cD-caElW5)2a} z6sBfDU)&b&%)0{?ov{LHG5)e9E@qx7Q0}yFZvO;OWz!f8<%E#`rjMygBLiJ z9-(A#`{;P=Oyn$kv(U&3{9OCpJOzrBtyRK#sG9#rI($+ja$s>YgH|Z zD^(SenJHa`H$Q85qjCz{V?21C?c|y~qkp9dd=ZBHFS6b;EY59N7sZ|6Zb=9PcXuba zySp^r1b2cqk_3XgySsZ6+-ck;!QJ8Zoa^rM>~+qs=I>XGQB~uWs&HA!bu_^JPAzw( z9UJ{?*B(X_kNXmT1rJYC9s&_d5?>-ujSDK1AgX|Gu4l_oDLr(oSD95bmvXuZ()1Sd@or}i?FQJp$ zfR;v4bC!*&^fbc7=*6Zm+Pb*$?J?_kFv(!qpC=x*=Nj!$_?H@+&q9ybF&LwbCx7rL z$CiB9iHLwhT^Gy#(BB8M^aG;|=8GRmm>rEZxE3}?f|Ro?$&SE8mZZOKt0P0dMecf4 zTwgq^GiO;1p_G8m|Dgl~K738+?8bs12_ZEsK^6Aa#tV*U3T@)Q_p8_cnF%Ltwt z^6-c`NH^R_dUCXnwMU5Y1{>!Z3=8(E*jS44yp=DW3oPnuJT?aGClj}0*$I6wMw{wv zz)k@#qwTOQufA{N_YmFTfC~$h9VeOT&BA-XD;eXTXNlxF>33}%bPrWUF-%9Np?k$* zcer%qd9P))(lLL1lls$cY8;qTH1TZ=Z1l!zL)oW(RoiejS9wPArIKAwEwjaTzx%P{ zUeVOebazx-n?kfhX8~y0zEXDW@M@qOri9z9JK& z;!n-F^6oe+b7gDm$20YT8DN zIhemwPqSf%QY}0P1`lB_k#I*3x`*^!+39UrOX%(7V1n=4UUBxoh*GiJ8SAMz z_{*Ca)&o9t-2Q&y=Q`yZH$ULz`4NSR<1I+maRsE5W}Ip6TS?BcV$2A9fUvNPf2C}E z5g{vV6v4djy%33m#;Aid%8(qYY8C{H=M<3+kL}or+cU=_W34+Nzu=~2(HHVvHC7jN zwkL4gR9L)C2!BoQc+GyptK=G|1*fMkCQQ?(KR1US3Cy_2;cL=b9c9&a>5F;Q|0N=x_kKZkcZ3GROoYy>-h7;1Ahf`=|=-~X(W3B z9?EA&ifVGX%yj#0z+j=Q)k?%HVRsJ^*puqAQ6)zBcar91Yiea;o@;-&pn~Vx*T)Y< zVxQ!pj1+#n^9`0E0SC!4j}h76GUr0r(RGy};pGY*mPlWt$y>94MSYtDiox|%D#PV| z(T$~In+VVC_B+T7B7OSq1kd|SnWQb06gng?vv19dK9=;TCAAfb|QH6t;MG;9cYTt zNu0#Z)n;Y#;E%=BMPZsIs3q#IbAs z%(LpR0%P}33{AEt%;dzo?=dH^uA3?@?3(qh3$pMWUckCnN)m1}1VtoVaGnQK! zuMY1Yo9c$DOr%x6j(BRdJUne!91XrR6udPmKCi}ICJK$E6o_1LH5Tu5yIX2aS_qiR zFNG@LL_V>&fPIe%QKx zewlogo&Ky;uf8tHJ0%M73!fX+PmH+qeuhtrix$=S3hB&QJ0hnDx8xp`JLNIKK*5~D zUX|Nm)ZJx_`S&ONzB>K+)aOV3E^k2?;Z07Ib_x51h4TmqtGrzr0U12&f9XqXpSVyg zUDPXOf{-Xw^M@uJ<1Ze%@87>oCX0GQ`W1DLQyI-_zYSXFLn|3gTIV*msacGItRLc+ zi4wwEowu%XtIqd4Q?yeV4Ij*F2N{!=QivP^H_f`<<{9%p@C^<2yF)rEf9=Qk@e<+d z$dZSLOJmNsq^qpRkW$U?6AQd&ub+;NjkhDN{%zW>|NerZu<%a-p_u$OqghAUZvVE> zG2N&~h?m(cIai)3>-kx2Gug)^tsY@9qCRuXFG}+cH+(7Y$!l(jsv{7ek&2Sz#y3uad9 z5W1F>6O=sYau_iM*B}3{|QClU~^xQ4)5X69&PN;wzt?n zEbF?4)H3z@qf{?~(3_IF+BXA%>HJjwY06sw&;61D3BM zS{VEysi~!^l>^_J#hpx5rAJua3m=*!P2lH=+%Z!J*+)Eof^D(lJtj}MW020z-g$<) z*8I;Y-zmr9*!E2tCbXZI$xd_t7n}w|O&TwN%?RjcukTH}Cr_Fr`<@ng7X1 z4U~8ykJwK-KH2B5)E!kt7ftkY4ip%%;O62;=8WECWwmOU5?LL&jBc zo&&}!nxS+b+iJJ)#0=01m6r8Z{UTI^>_#C((_x^2%Zm~88>UPHx7dN9w^!WTUk%={ z4XMft8)+0LdEFJ;xEb4chKAe&8~_ovK6Ex^BTmVb`Zq;zRjqPdFn-(dsc zK`BITTl_W#f55OITFuvc?j9+_{a0AC^&dgD-*Z3-c7ws4I$$IWf%+I9!XqG4cnu`b z|7K)ZvwvMv2{qwEXfDwM;<~zSzk~)h5;_y8(-zj@&v&n+gWsDyTd-coX0}a8Sn#1! zQ|~7kwTLOgd-j<+@h$77RvC(n#1WO9Lszi+a+q-!8AvO1H0n$MLm(of>Qo}*-dBca zFePzWpDnY1Q(;aH)bf^85Vqup)po$fW)8+*6-EWUc>6JA$uM}pM{OZOLLL}$a`o%| z>@A|`Qs@*`Yo}l+C~5%JpD+Z;HiZG3Ew z>3MjsziUx$P~5i$nO8`w3Bh#=ofzZ>nhd4VkV*e{Q0m?OZWI>I+gl zH8=MLggyJpWbKzZp7a=$L9$fXT^y7cl;6TXHZ+JA!byhWQYqNH&kS*(Ty8hDg<-HF zBNBw^*IJ5KTTtx>xn-5uZUS>0G9qnX!(|qhL=iUv$YsjFbW_-f{$ExN7UWMK-35-{@OYP$gRx z;xZlM?9|&62%x$A(Qny?B~D3n1R#21^n{^r5g466eQ2?uI;L#yBti=zwc)w`$w}YE z??uIcqN`3^Hd8nGw(ajkb6-^tzfAUtGMZ{E7o20Vu zU{)@5zx^HlzHllJ7%#nOfs|R1nRW(Zc7QO~Nv&Y^(Lpcp5!-R{7%OWH~aF6qFWBi>2&@3;g~< zV3yPMJVv~7-2@9(T>)<%z}GO{W_gL!mgN}-ry1oIeajEIAG!6j*YdVd1(_R_F$l?+ zo^fm1*I`yN<=c5rp4ZgqD4;VLqpeVd*(0{0pPx3KHzGsJ3F5uyJ2X&d2RbEb$jV(` zmTT!zwH*7h!d2(4W^^^ynoWEzZKF8?k2R@k<-)E@C=3CD8M=%rX3KMbHY~yU%+)0S zv9o%g`J~~$m>StX}POCU`?wP19orW;^3VvV__+RZl&%8{QW!Juu$Q<9)8Z2T&2&V7-4Q{`z`Q( z*rsopg90>aSIC@=n$X#0hFU$z8nvx%dpOcpP9*NB?3Gt)6r+;u_2rQPq{PPl&LZEO zBYi?%cxgE3TuXp4W1;nnTjJ9l8nB}PuWH$D$FXW+1CwTu622}&tceDFm(TAhux`Pn z-*}h`+k+!%3GQk6ckI+Gj7IRTZZdx5Qu10-9CDSpTaW9w6LGotMDufmbfy@eBBC2Q z+#iyXaConi&dSDWxGt;r2E43y9)u|%@lyT7jf1cn@{XKXPyFwBXK4)x7j!=`g)}o`i zV80{5gyYvP44bv*W)Et)h!BNCd^_6+*sSSRLInu}|AUl36%l!Oy3@%Ql464zLO<2r zKMd86(0LF`b8;NK2jG+Be*r{=@jvvLdg-&jD~MeX8F3|~BfG4=edes7X~PgLDF3*mA?ie55|f`23cNd;&fjNNI20Ut)- z^EL;eG%X~ps_=7vZ|C__dv2wMS4AK%etK>_@`#nUzdafUe<=YYcmE7`&4C;-8FW}) z0C9!X*xs1B5ha$RFzC8rIl$MU6u$)Rn7RK~eE(FU1M4nhPD+SInyD7*BO|V-fqvan zoogvu_M!D6?hTd$)i1-p(IEo}q3;(=Oo5S3Ny#9`dGdiJ@`4>MuM&4o4`~Rfgy+Ri<3GcthmzOC(*ZFm3;h;=f-NGV^%1~ z^1p8bf+~|MzONsui-mmcyoSRSzGKffH71xWu4wJ|#RLgXhr-{dqhIu=VK7KyvHHy9 zU8ig>R;J~V>4<#YgcH;3zCO%$#vNO1#}wfszcVztTODj(a2602>fI~X$!TO8Z`u$Y z;O)M?(VZ+n<7bZPq?gV%*%dCFXL4oQcl(x3^kqCnonzMg&+n;jK}^LwV@{`Swevkq&Ex9#;1o zv|!p8@3#iri1YCgupb%0pFf73*D1FI(k;lA_Is05vs_Q*X!yBai|~u+q*EbybTMjb zDOsPc=nv_?XRi$k8WlNjrrU(_=JRHO7r6i3ALCM}j04s6@}#b24>hG@wJgoYiL?Xv zqFXx_37Ecxe*eX6%+}OWUv#(;*!bMLkA#V&K6ieq67c1(x~zmOp8=CE-U;A9N~kwcdq^zy{^MLHWeVZ?dz*Zgi3T-wS?{13&bh(Vru?=SMl?=L zXHk)+&|p2k^|){05oZFlPyEa33=p4=_z!A%Hep;ClpXxLY+%%rwakh}rCGGY4FZ1m zSj_m#_Utt|?I*)IcMg)1QT^bTkH%W~J2N&TMiKm{-x0agVD4>4ZwJ{TQn@G5Za&Dg z+wJ-k2gz;9ee2Z^);Os&HSsL+p)4S4|4p!bA&iBEg-7hSXBH#w8!p)WydmV?U!8S} z&GUrVL>}J0dep3l2~@G#-@uBpE|xjD$Sx$14OzN-brIFU%6PYliB_7X{3}J(M7=BCoy^ zLU91CQ6dDqGmOB8c8R`mD}mT%$>H9V8?~Chd(xK&g0zJ40u0-N>7>HctkYC%XPDBf`6MJ1Le^|=FM6OSNv$SL*TljY7!V1Mu0ZR{oj$-BwQ)J)yIrAuX9`@ypmK zY0cq#QW#@T5GLHBt%pcUW_8C|LWFR~x52m=s8F~R`a-uox)2GHic%(?k0f=?FyyQn zOmxYKjTOJfGB$D!D8heGm!ts6nZyr3Jqut_@b10Wu<6&gGTZ|`>Xkvnu=&fi$`jA) zQNb;hB=Pn5`xvpb%*I-!37%J6-TJy{iZ~)tD+na{M4=Qt_s04}6*|~=h5XF~N-IYj zG3wmyR+&6Ep+|LAX7=BD!gV)-SGk)d)9b^t%<6bl-8v^vf)Tx2v%0Km$!_~vC`dcY zP}l1e!}+Y0?(3Z<6Ypn}IEVk@52btuZ-+B|$Zx$*iA|-)-?+bj+X`+E@ckEw7>2%> zQss3W!kZ}1;J+juV#&;>_EOpuY~4%Q5riiuYJac^>+EaN-k3k7I_#z;MR7!i;lW40 zt}LtGo6_gx;TX{oz15=~qG8!jY9}uwi>YT{8I)E6I8xXBc%C0^+hkVwa3o7h^h=+M ze5!uX1j-AW^jhjIu#@_YejVb_A0+kU7t#OO9CPsd@#Igd(aLX_(~_kj8x^;btRGK3 zpq3e1vsx~f8SJ6^D`-(S0c>MqU@5d!;($H*Vg_?Ke%2;kkH|>+oMVgyNPempLO`Z1*jx>Be{v>0q z7I4uM49E-S<~h@~Wt!n-W+@ULKRicyyRMz&5aG}^IkMPYw~hMBbQx{9+>&*gNa0aI zfIoY_U-)zKk_q%cdAtF?lV7(EL4hLrcdr9{$199QHoxfEvoq5|e#;S)5O@q*(JV%V zYv><;w>HR5;${mq#L5@^Y$o4tY&!NX?AFmx#hWd6YZ2DaC>RGGpz%FzPk99PxsGAw zuZYYBKZ_&TnX4GO1*va2jD?jqeR4v!f|4W)GyfMI#v)81e$LOb&~wV zRuZlACVd8ijaZ-~7*;Sl2I!CL=<38{*rP}AgChhN@sW|MDt9<5X;_-v1weLYwSmuv zHY8LO<>hy3;+oynzluH^?XspX)=x3Ytj;Im5UwnXr^wEU9Iw-d!o(5+mwI8%nlIQP zjgn)Ww6p_$9)1!S+(=k(u=vrNHlN~}s<=tFk4e6)^rB~3L_tjVi_>I)E7+P`$0dCw zNx|V+vbwC?Wm{Ep_Y-Uw06rS5KYDRZsTiA0a!b~CTDi!VzZqb>US`Nig9#a_v=@ovX*~zYMfB82g6Z#9T}=rs!jZRhYvVT2$lJ9n@Cy* zTdh9k&J$_ht@^FV%JmAv2A@nM{-&%otrq^N`p230sJlLZ6b&({N<=fx?Hg<0H3u#2 zP`_^aE%yj0MvyCQUGv9XV}*@c8S&n2+RV>3>*u=^m=mGQ{pgZsvsOpo5c5=22dPqQf5%7fLAacEBr|ud%nKaH~vt-x2a0O z;Pg_+cO6MRseTneoRSgJE577mQQuJ%OI(||2mm(TK6@(ncox?}9)z2^CciBPYIK3# z*6QT!2Zgqn7iCF?2DdwZRaN80-g22do?AVi#+gvv{`|z`VVPJ1QG_xrk_Pd2u%G1J zE$6s6QyZz1Hc4yl`XetY(tS6FR`CZ96)CQ{=p`)bz5EmzQ~zM|{zg$^HJr3ydZpPX zUCe=}NS$tL(Ty2gy@ir}EzkMM>>?tx&xPjR@~k5|w~vUgo})fKGl*iSXAK2gDh`H< zdW2X0kVd0>c{}36h~O98Zc>Vn6Rh4-u$hDI7E_(f0RaMRK$55o&ZsB$dswXMlj!uFDRSpTcAI=3_QdVuwauP#qhkF zbL{+E1LMRq-L0eWds}N_(tV!IQHvo(r%mf`U2P6p4=RxV!>ysxajlK>&d$^Z>yx7$ zfwpGSpkdsMQU7N!jclrlTr4EJ`rG2rw)yRChyxLo-8%75PYj1y)(oA7&ZKCkhY92O z9@R5O_ls4ZIanU5p3sCI&i}unPbwlJE=9JU!s$aL>HAbUn`sToceNVboGp;&(oTh0%QaS1-riPj4%JQcHJUZ@whi<;w`uIS-KRw#wNlN`?pR~j&Q^-(OdgW|R&o%oF@Bx@XDD5=6i z2_Wn^78GO}97qA87>g&+x*)M0O5_2#PpiD~9NYbKxbK5?N*1z~(8muV{i`=UKVIxU z5H~V->EJLDFRVPsHx0aC9W_s(TRil^CI_{3MV)tWANv{FU!c+0+D7W0Afo3~Y@|w)5k{r9Waa|dr)l4*jEWSr>=UQ zS;Truhh~5uP>k(=XM*QnT3-j(+Jodu`)vqZVEz&Rs#!Wva#$(ZjLK{oAYFZ;l`-YQ zGfkXfh@1~l0(~7+vOMa#GJjA2+aqHclLb(<3DirJ_SD(&%ZHh}dwrV>JUk<&q5wf> zzTP^vxUAlZ#K?ATx+{%*Vzd*nX%zs{@{E@<(ceepx9Fo{A9zHxRppUO zyoAQabuj_AMi>sH39VKat9j{mxs}-k@3_Jwg7;>jvq@zlWLu9zv&|hWxkh}Icf<<` z`~!kjxT-9oOt1+hP(enk$OeSN&kTjVS6j8n-+CLuU)oJK@WkG?j`*H^iwI=I;1NNC z_cgoo@Y)rDg7MQFwho9)pjN*U5C24g=wE+`1Nm5h)r{0n9k(A+Ih%mwGUYd}pB*io zk}YbtNFD5(uV#u|6QkMZG-^|J7`RV_m!;TQn=$XwKsx+GZYwUFtK`5^yMqdhCRl1h zqWWq~tS^+rIrXvuwE8RLg(pAUg&qe|=1vbZYN|+B^jL1pmpQ6`I65=CyXsvH37on$ zJ~=r>^V~d~cy(RYVfjb<26*3@1w!p~f*k)HT>0zOc_zjyJQ^RL@xgrotQaM&zM#k4 zp(3Gqx?e8Cu}zFi`}S}p2>lrGt09;8BRX3(y|)v}mxFL8Mnk*!GImpuYZd!Yr~4uA+>va;59g)* z&h5>JLv=TKaXpeWeVZco=gMW)w3V!3 z{g87fw2WZN_8&tW#ke&?Rd@$hh^;f`97Xi@a~F!1A>sQr$!|d~@yC86Ym-S->yC@< zg+g45oQn9frN&v+1dnv|K&d8A*S25CX(~JY4`H&FzLQd&kEMaZ8@zQd#FW3ISS{wZ z|MLNK>I~5-rDE*-tqB(w$oWu_tqY_m*{L)z+vx3YwSPJVmI!Uf{!(7JSU66ZSTx0g zRlAqctUU*V^svo=dvA6nc0ST#4c_}uTLy7W)slTwjZAq`)3UnMnrT0lHsmc-u%6lR z_u=D;aD0Yi$*~ci{hAj?k0;7L23ZBGO;1@{0~+}1didbgp8XdMmtqQ*-Ehe+3&f0d zmLrIHL}K!`);JlR5C0>_iG%&&&fXw*M^0@#5y9i368Ah70+yz&e0k#bhKLXUPJh0N zuUD~`%Cviyt?{G2tKD!7l)FROn%lXqU;W8Yx5PT8D?+S^M+u@w`6=;DDrMt63A zv}ET&?vsfg<;LIuMDkng;@>Hz@NseDo5_v+-w{-p=&Ea*%{9Gn=ZHq z?Yz8`{Y*R$c3Y?WO#4Hz=kh+vT4AXQVy6|(kP0|#O54#*g#H-{GJ$}(KT-lEAGhO? zu|<5>$(uyOxJDTF!O_5J3vLJjd8%V)2SpN>6y^f)eYWt={I8=;`jT5iigO4B80ElB z2l|Sf-;+R}stD*_Cok`Qv?jtw-Q=UZ-i}={mGMxNR9?7FzXXuYGJnzrg@Ddw5JgJ(~%-LF8Z&hrXP8lZalqI8~w&xp(J>9 zi{&5i8k^1dak|}C#C_?1{CDWpfh1$viOiCT6A?O7GRAVvf_Im8y=5CRHcv-^Hcx2f zkPvBPSHjZ_y8mSUSct0RyYp4$s~dRwYl>qW+)6NVkO_F5H+j{1iE?F2p-4&);Iem5 z?!l%M$1hImYCH>1%wBYZsYo9MLQG0s6G*N|+!B;04db94KawwYk#7Q_rz>w|R;J${ zh9sX~Alg9H4;p;Jv(ljCa=_1bq6+#KvGH&47IKEiDNxbk7gW$ZlwX&MdRO_q+x}bs z)4-TfRs_GSU;(W$)qYBa;rigffFvI^C)j*4@XvnglScHJ@db01-(fA=K99dk>_S@X z63hBrgACF%U)*E;9>*@tgdWT5URsh-%wRyW2FNu91WtiG0eC+DX|Z!PMmnJ1y~*Y0 z5fFjZJPByPtpe@2OUl&JMZvXU)sL%fvTurPzRUAkG1NPDwM@BoxVA)m-LtbV*k(GK zpcf-Xw?ZaZ&Q=gXtk%PaF6PCwLiEIxQrdq=#HjWL%MaggO>!kD1J!ouD@NTfz~jZ2 zr%ADXZC6Ypv)+Wx%$Z|Dh6CnXJqn}u%eGJuLL?jdywL75|A9+b4yBT#aP=DDnRCiG zV8ECz@2)_>(Jf3OhfD7;3+yed8tI_3OwP>R+zc8p(`Wr&8(LBt3>mt72Y(5*p47S! zN2#Ojqzm9RN(cNz+Frz=fe}oE{K^@BT>>U#Gd+pWtN0ZRo5c9uo!$HMy zAXb?_Q7YSzasKw!J->p0XVh1i$dFE3e1+YhtTxb^ke zVi8!+zUmJXgVDcRkW%Q4B%fM>{C;XGEf#Y@avd+;PHC|-zos2Yd`vYo#jN~N?CHnS zARJYeXoMLduS#DKZWcf|x_^eY%;jXAj_PkI@j;t`156{wWmYiGuyxKF>7=#HOc>#*mKJN2z| zF`Fi{22^Cxz&+|@c7f;Xs3j=!Q2`x+3guxsq1@!P;rFrvf>Cj;XIrNf&Xr-<%AD|u zr6F-Pdc2_~a$qav@RX3GbPQqjsE$;B<|s6!Fgc@lzmbDG&nxVhip0pq1EIHya^qIl zsIsw~1h{f0N8oKTE8u1<@8+*>Kxjbk%ATLEpD#Z@)MWUUNhaiAPD@PdvzA(7KF&J? z?ok=7Q>W!1)IdtB@53J0paM1L<_S^sIES0c>Ji?1l+=Mj!@@0+eha}<&_jfPB3m4^ zm;a*$nAZ3kj>CsN?7Q;f9iW~i;ZzlYoLFuyvya4sY-~BCW&;CtPW-0lV}p4hcXyXU za`u<@l1|=iG0UxndM?)rthqO^$ z!@MdNP38xz26qT<6XDpN=hScv>ZrU}<{xPxWc+3OVDFYQ<^#=@CrQgaT_8cyyDK7L2x!wy^0C$E9QBZIBA@~sC)oRx=g=_TBQ{U=*ae&eL0t!D|U z1K#V4WeKYEdLyn9+f#tiOIK{Y@oR236i6b5=I#GU-=9nVvGC$0X`7v`i9p@ET(BBE zNJ;F`X73&GDa7&#H5#I|ErUa}cYm3OM1~o@=u{|+P8e;CUnI?JG3iutg~IbLrsr;% zTg=)IC2kY(u8qVlKJ%Fi+HjHaYF=@jF;!Uut7aFv0mH=X8N$V6msyw%dU3>Ljf%Mr z;~jhKj)3l%FdUuc>R;!xo3QLTmD(RNllI2{L@tqX)^%|v-6#&YSG|tKGcWddQl$<# zv%i+_P>$ME{|S>Jdjnn_emyQSAH7xT`RZ%gZS)Y?Xh@OVYYb0>cb&KMRmLJ^_;?J| z@_Dx|(f_Pd^8EaZe+PR-GiNPuZu-(l(A15*%{QkMYV2-@dN6GA?h821X9FZ=8~o5- z{b&qZbgR0XK38))I~z)d$^m_fG8eh8UB%7liSU!%%xdGiH09h97W@{x)B@B2t`=W|GCyp&9{ z%>3X|q8gJN!F_ts&2B7JEredlT(zy`!w8l=qJ~vTVkK&2IY7PdQ&qfLd1Uvhz&wXg zmr{%!(AzsuBW>z_4#KBrukSFPIwMf!CZd!TZX$%b65&8jKO{9G=p|PLLP|h8(6Pmvk7?CiIuNKVgKI|7Ly*k zA+BK_GL6+&V~du{w?#@5miu%%AI)R1spWB}ucjVdXTed3(qJu5U-%2nCgcMDuGU~! zUVeU$>7SgM0ny$tDJ5VHSc1m55P#$Oa?$(xHKPA)O7g-q+hh|j_Gs8QX;9V09aXtw(x8YNq4KEqLRvlFrI`IelP8KbijDFEP%>P1hS5WiL%1e)H5@0`s_mpJU-SvzNkHXDdy=f zWZd$0oc_w4Hu&eGGu?G<&*;V9a7q@2>x-dqnvT-kc<7j8x|GCS>K%T03uk%Y60!&s zANj9VhDIPuAetgRDr?1Fst7Fn>mAl-&a(H%FoG0V-;d}vg=xnG$LQ%KdZXDe$-terP+@!h>oO}`9)Xz zrYO{3Ol2~b!|TxE(aCM$u|)3UE)k1ke1s=+(xcZie%o4mXSKW2hCz(r@xI8ZY4LaJ zfK`2^d!y6tZwgV_#SvTHhN3cd?s4kHx9}0mU!0=u;%iRM9WTX+02NW}x&n-Y!nC-l zC=pM0yQa`luqP+6X8c|5TxkIYkRe6`7n?s-?aEX_>)@Ys(^0ep@bRy~<$1YNX)dN$|3^X0 zvHFjKc>L|sh6lA%7W7RXs_j_|A z%#KT!$_uRTKA%Sb*Zf@lc>nS40?WKsL&_(SGLxOGo!e4<8S+=vDYy4a%>pz?tb9-Y zyc);2JC#LU%_uoQb>cD3aol6 zgwLNuGy2nEFr7y|i8%_?k^mD)aR=9;aOdYW@n@C@;Y-N=$EX*bwKk%)VwLPu^x8l# z?N8L?qF!InyQPs(5fd6?S1LIlk`}oAO0ER9cMl|xM4C`}nvR-=#i(&gNO(tUo>(*i z$BiV31QX5ly6QVjll&93NvkG;U_Wltp)Qpi%*jNnQu7#1H*P*&vQD-MhmA7QMvCY`_XsYzl65~ ziOh2p8+8NMnu6QwX+*ev?>qF4B))1)_1P@*8o917WjdP7INeP3*_~G37IYhwoE#+? z7(*_$L4tRNe;NzqZ<2Hl9gU@u1|7C~Ti9hk`5kxb517OIN0taPz1yZ%!v+)LuRzfvStK$2enj93kz98EF(N?!!C2DYU!mevSTsCm>!8pwa4&>Y1+&4kZK* z>m>f{L!oM2+&;Y|-R zBK`N9Q*=hmOVydHA!oKb`I+Mi5>ftfK_V=JoXJ;mLx>2>5hQB+51G;)wd=tFF~o7F zzM(OwY!igm=sPVRJJyPZ&)glI89sr}9P5~PiV;Hw;j|2iha|M|;-e;EBOU78K6QD; zd;!*q1g&RGl3?c>*5P8Jk=I^%Z1FF!C&5(b^Kgpm9rJTJt!3Kt69S*sGBO!;7rS#j z8o!tdyPW9_u}Gbddmr*4gJ`NpUr({~7V&eU=D8C?7aMxl{LimzUddrZDI-?2=|R%B z&Oucjbr2h@l9!lB%rGaO-D6BQrtq!sBoU|K>hRmh9rRftzSiVvd%eK7kCBln#QfvD z**;!N3Sab&XXvchs}l!1)Cm=S$H zVB@}NsFd4IA4(fO7tFrzF9P0STvPvWIlhrp8bpnSSj32blq}!9Uz_oWUdlMArC4*> zc<+kG8N(`n;9vsDqvI1yVN_2T{vDG(6D`UT<7d_p>p1Wn5xm9Vpet^w9f3Z?Tf=i6 zps|RJ8Lalij~k2Vi#e$!N2ZSulf!{(O@SO1p;POYNQ%HaGP4;>*EZkuky$}R_pY?E$-_mLj}QK^^gS&|FwfD_&<3HL zI<5_LGLy~ok}MZ!M!m;)SUcChWr?|*c}5W}$@o+k0Q?xtX6bj&6)$|nI%;hF-&dww zU3O}Y6*K_K* z@-d;Nki^kzq2{(O7uU5`6hWq}=EKoT=z+Q~l7!&fBe|<_3FJLHUXP2dqdA-gT=m?q z9~nPAMl?QTG}Lf7#H!-bo&M6sp1fU!>rjhO4mLux6$RItkU_7us!C<-9+N@%kE;9+ zBQhj8I1=8l`d2k&ctf-|5*{~wKR7xBDmP3dH&I8;tFS#i)j$S1k`TdMo*JZ%Vn@6) zJBm7<+Ali;5{*BErwZ1|{|R1mCutZb1_ehJ z&Vp91HGjoBcVaV2I?~);62xDbmFR}Yx_MJ>yWYPMXyc}{vjU1*H-RMq;0=QT^G^7e zNEF#yDti{R%uS(~DSNkP@q@1o2u%+*uWjIcs*BP{E=jRfP>TyXGr1d2qkGFi7H$OO92fTPX7(BhFU$Cfl z_WIi~mN=?dxkAX5(uaDO)D|Pkp4WDqvDqr#NdayMuP*fy%pctGx#Hb&VOf=Q$x_bC z3&)@Bk7UBi+Z4Q137`7ew!>O+jCG0keE0AOkG_>m_aKDNf@SY7IX4V%)ins)x#ac6 z82`Ps>Yc(3))xsT^YCL<^Y9Di=`Q$ixtNv6`ZE5e6f!CB_8%Lfz7Wds&;psP@rN5c zQp6pNx52^j>+FaiNfN+s$}=&XO(y)j4Yx1=@-)mSXM>J_{Q9=4H!P{d7_>RME^;IsmM7b&n_Pi zxBwA!fA5xZg;e%9mHInc^=>LSzZ+sj?Hl9y%C*tRIM>&CFF$kN{CD;BQwvCd$E^Xm z%%?bGKEq(0;^+IbxE?B}>770lZKBQ2BQ9gd$(8`*kI(vG>wrrCgz@Z{V+GN`j3ciA zr*8+0`9engsBk}|OeH>r%zl=ASnl=*EUo;kgA}Tbm>d6F7L)#-u~mY1jX=V zo**bA_Yw9Gn-P|fO71>^Sq<@H;CIa9A`G2q=b(f-6I-aJIQ`?T|I*`@Z zzMVZyAs?Eo7-Hu-=VVJl$?S~48Dun4&!+a4@HJ+DkmnwJ%f`?dxHW6LbHM3y=| zW;=nkzdd4zxBR8Scz)Mz(m7qeW^vhBS*MeAjy>bk#Fk%bTw}~l<1a?2ep$<#dxy{3 zfjFhI*D@AjeRphUYc!zsQ4B%j>$pxzS-&P`(GidJyF3uT0^It9mRx ze+9=6i6 za_DF8e7>R<(&r!f;usf+lCCe280B^SV@}q)^;g|LMHm|HLZ5ntY|0?dKIZCqdw2_t zoQy`83hq9xDL_N7LpO>ZwW9tZ9UMZq1ZG|j3_@(rN}C~N!NtROT&^b^BHoCvPenyp zw_p;gr<x0c5>g=m3;@J zxG0Hc(Oz421)5u>7`-IUn$qz}R=9jEx;?xDwgui);sn8ym+Y7Ntq$aspdm)RNt zWY4>jc#eU3B}+$>4Z_YTLO&t)skrae zIC3AUY2TOC$(nf-4Y6#TW$6^y%V0GbPKjc=cq{2c?!FY1U=$J*w_Xy5LeO`}(4P5Y zy7_T}tL4xm9i9hg^9$DN@s3jROt%MSh|75+e2TPTvSnS<`_b%X6IlSQ0y&^DA6YMLKoPLt$C|do z#ircd?g_fu1!^m@cG|S!hdzYsW^6LxDnG)_5e5BGQ-9Lns(u^#<5Hvzb?DF_@`CcO zQO0;-9~k5GkXNDACHND)NiFe$Y*#;mUY)r9>kegNs6VD8drH>{4?u*zc7Q^-4;5*) z`IsJ(dhKxU4XyZYPF2(q-?p4#06J12Ku-d$_&Vs0g@uL}mlax()u!o3@k~tR$-9HX zNGdJahpj%k4f^c4M7_IgshAA%{b?$puH(1R|Etd|Z2Q@UqNSlx=z}-hGdD16kAOw9 zPWy57D)$cl)R}PWI!dF0@(_75;_dO%$G)m0?$!A^V_9jQ!}^q96RMCS9Xs*1AkYSW z69se4!CyY!<0FYiKCISYXWJu9nd)L|aCO632Vmrb;W}+Ak)%vbygf(MgTevl7K}Z~Vrk z0!ra;kfz}HNphjP&CwDS!Y5V(;4-p8daK9tSU_oZn(&y8K$CGI(2s4S(*d~B3?hv^ zq}(La@u4VH@BEeMAjbGHCVOGC-4ZrqVF8z{ndXgo#{bun-s^+&8`WuUeB+V_RRO(B zC~~t0BnT!gdofuZ)`nxYFmaqcjw~|_bi0VR!fCtnWTJWMSA~7`>o|WM^*UE+9-(sx zg}FjkK86uy5x&1?a_Y&v$MWjBdaV$#nrH-j|3*3~D~`OJ^S2yf=5odct7h@<^Ik)u zc+JoEtIu|?ZOo3luONHbqF)rL+9Gy>hr&jg`>AQZ-a8jc;^^(b6CqVy|3Sz%@Z5Yn(snqDlMR(45QKD>$Fh7<;}y@~H&-YY3*YU4 z3Z5?4R+G>6fmiuLT%v6S39m%+CJhyPtOkol*WRpB{~uRh85d;~>`g8p4br8w(%m5l zh=9`F4ZCzpcPt^@jdXW+cP|an-JS1x<9F|Szw8ITah{nu=N~h3NAT;uWcY&SPDnfb zn|DR4>SKjkv2syNSV*jG8Z}iw+>L{=1|ybr>x(S@5z)Sx?U8BZnYTE2exWJ+=_lIi zm*^-*YdYpp?a@vt9!t2Z4CzLs_ASsCk(^}rm{G0>T74Q+{ASP9w2sJJ=RYvK2HwJ2TZ@@6D!wXEZlOsTO<#>i z(1DogJJb0k=gJ&>y06u%ssB%JPk6MtZb;NU!b#;{+`g{MBtWpUiB=;QePvr?7>nF< zT-z1ZSM2anIa_;E(9ljEqqD_-URiR`BC1k+C4X!bkZ(9{w}noCiod_W$_T{n`YLu4 z(QumQvLTC4veX=CgoMF`*T$B-n_qKgwYm+y3H4olsmw-i_twM(zr93o8!XtX>u-&a zrt*=<=pRE7I2nOs7Y|rHjZ&r3q1nw0UjSnwo7B>QKXpE;;s$shR;08nLpQ?$Qp@Lghdx#^4=$TB3cn-#miKseU@^Ar(S z?yGwL!gN0Al@!%l#`-$0t%S*Gw?qi2K6!2^vDteg_0BN5AzI#JG;S4)tzN)`@&wQe znhSb?C>NFHMc=%~DfS$}14d?g5*e=NE_8d!Ato_-2WHo_pH5{@yV&?>eiRy~55;9nZ=lvJ9d*vpa9^Smx0MNuubfiEIYhEf2NZn$!U< zDX<=6m!U5cKH+}V3_+*iU53%9=Ef%v!3F6jd(Hd_08#6ivbx6e0%?6Q`LN+SoR>** zl}KR;=7op)=tUXWb7bL;UvrWU*WBL0y!PTas$ajoeEIOBpa@DwE%6~blOOuz`nx+D zRf?Tfh9CP`mdY%H_9It{>dj)L$Sb^9DBe-cPM0)lI&`PfPpDao2 zKa4zF6!O@i{@$O0n%D{<)M}izzHu^30Ut~fAIQHR(PGW#-}ejYk!Yzt5PAZAh{$sK zFR|sYWrS;U{DVtk0#%-tTEX0W0{lo(m_3==K-3Xldg(_RofYggZ=!)j=^U7Br^hDB zv1q3EGs#Nj4sK~+w|#Bm!OqMyDuOeZb8&CCR%4c)#p6vD|6PyqK5IxlUg;5y4-73L z2ImI1FG<2h*K2EWgtdDjTWgaO;2tWF>E!}uDMKvf2gRyj9Il#g?VAp4fEr@n9QR^Ur33;24yk1K?M_N&6QC9he*K%w zlt;QeH=Ag&VD~isM*{?{1N;uuu_PGtlg#9%|4~kyySx20|ATo?rNRM2;M}?=OcZmErivqj00N{W8SR?^?yzb zNh(%Hr{IGjd%MvJMxe=t@;}LTb322pBtH^Hiv05- za>xbBe_;d()iYF_+4XRam<+Me+O-O(8AI4-0dGAwW^dzO{HW{XGkjtj2Sn*3RUt~h zSqF(`0XuOKwHk{Lhe$KST)9rJCV;iJch*POUXoq&0F;eDJ6<-VBTdG{r4$^%`t~Rn z4=!hBG`+QKzH=qO(Xq4GIw@)L=rO*o(x!j8ZlCDO`G0!>B-3g z2o7$)tE?DjvrDsDqSjqT^SItq7CsAW^fmnzRwvkYl&bO+y;gm6JX!q<()>#)VYsGtT3sw3L?>@MLoZ*_)y)NW-f}K&1OUw+1dHw8nZJSe%KVg zY^m~e2W7qVc>M=ZFw3Zl-p?2RKDO-qPmir72D|eq;6A_Ml$h#QHB+ky;r3}av9Lf* z6dl7re4kI~<@>GpxW4iLMSLinDwX~RV8Ng1KwlhY{+YzKh_Yd>3ID#Iv^vpsqf(wC z7YLd3zrFhekaRd;{7@T4Z>ph{WW-AKP3NexpH!04OE%4FltYs+{$`=`YH6(DB<~Ha zWr3L6YPmZ*lVbM1nx3sdDC66`{_+R$#h9DrPXoHQ8W@N5*m)Tb?kZggT`t*tH4!+)BVIo_9UhE~eb^=5u0xJ7KnJU$Y+%7GF^ zez*5}8bW63#%!_Y;5CY@r!_KHpr_|koR-UyD6*Cm18YjIDNN`%V41uUG1@!FyOr&t)3}&>ESsR z?Or}%g)Gy9H#CG3p+q-SteDS>>r-sgppmg|BR7Cu$i$vswsM$XbY{nzC&}(Z=5Ss{ zlYfV%!AV~FS&UjtH9!|TNMaDoiitp}*uc2!5k22Q@A^dGx}IH=7`j7*;;2QKFtJgm zW!(|a1y(QhJ|V6LEf05jK82pxMZReZ5}$X?-+)FFT6KUx=@(UI-Q%C-RTqZi!FwKo zn;QKW2}bqw(f)gp7KYp{6*U`CF0VfaTq6%QufC+!9PBPB`*k!9WpW5h8IG<=yKeK^ zF}~tb-KWV(mvXoL^E*x@!DJ=EH zs1jj80Cs@kFqbnyC|z%=%7F0kNpky&7@JTC@rL*sO>~`~*Gaiz&l6~{UYZH4efMN` z^F-5SNTH3{CUHOhX(Y*DQ@8PI$${8FEjv-?f&6sr=87W!PSJW61?8j9;`hK%Xe@{P zPb`0rKMXTRRJetr9BF93&V>X>EL&6H;LWzC|9pA9PQbd>?nuaml2Y(#e+!0m)#dk# zyRLzn0eXklQY4EQRb@S*uopViTJQa=odX=2QHDqA3FL9rDc;rp?P{VB{42obb;+Mw zRVUOGzwE9o|HlUZv&-Q-&NI32A=ri-34+*l%-d5J@&-E>E$*N`9@?Kh=(u_d9KILm{siZF(=TxzuSv}Z^BJHIk2vAyD zX?i1}A~M`fBv`?0RWdKxzFhT%f*#U5fzXRcMU^Pnam~qt$i!et@7>_pFU%=2oZa8; zMv-{5pcpm|^PZ_O_B-Uz+D{!NVXOegY{ftEQK|jaH zP1#FX9KIH#PQeF~lb@}O16O&j2$+D2`pmQY$N%J6=pQ;P{IEn%RPXlGSenkVAEvJF zhL0xWbw!JnZKV00<5nHR^0*-Wu=J1Dr`X_d1rZ5>%EY)<0)_;>q>manU28_h<5o z$gVHRTiz4X5iL-7iWS&H*??}1rq|+2hieD3Yhu)CG5xtf##c2j12zBpj-8Ld5AV6$^)QuqfU?=% z%SA>xfeMm_`a87h=%IL_3|hMJweq0Z_>Vxb*x~KO!;$UxY3X$`A}ZlRZMgf@9wT~^?t5`3IHY@~ z1?-T4f01z2M{RWxV=BH@%1w)Dyd0qL7KT;_TM#*FQNZ$Tp#|yf5qrK z6`yv|-Vb(iSU3^m$GPe`2vIbblw0|=^@C$jGEgosS+2iVcqDHan#k$Ip{RVRqC|{d zJde$7`X`2xSxHm8AB}3w<*;1w9RlOG)Y*_=b0%!j!kIgbSEHP~*l-5=13|}8)|qU! z+c>=|){-ZNgr;`0|ovJSgY zvwRpOr=;?Snn5+BtNt@+c*zw(rhCHC9 zTnW{BfLkGy&l+fehv}$I@Wvd9T*vxe&% ze5GIgO)1(`JZ(KGyf5lbs&{M*E#=M}su~{@Y|)zF+^-DwK~tXnmwoTV$vtZN0Nc6% z7`_*zj9mN4AKP{Fy-QDoo<;M`AVVw;?GK^(7V}YVj*$zl zJBQ5Aa2BvIppl+PzjB%_4~K-hYF~Dxd238Y0TWzOQ#fu7<`4lHWt}c& zv+Mhu6x|Lp=jkYIBH~OL9ckViRF(v(r8JwZ$1hrTp%wGo^R%64jM;B!EVEx+Y=^h)w1q~9Y;oyHtfsSC^XKd1j zF*B*TZy)~^>0u&c~BoK$vfZ@Ei}D&X?7R3?zNekOixu>NzqiVPny6j>P8S0?3Vj;B+#+FgL8CgmH4DZ3swKX2UGAV-!!6W&JwyrMu7$NCDkL(%lV=zEAV&91CqM(64TnRX6y7ui z=-oFqsohf}-)b|3tTglUlV0F`qxVH`>})m!bAKh;jHL>_Mmx7gtER+a%(UzTwb8R~ zo@Ie27qku1j!Y$uYU1cG4Y=%!ekT_(MC#vHWpclj9x<>8iEJ{8uu)DewZIF#n`i>m zS!a&m*$Nt1MZJf=Z_7q-N66^Xe*VS%?Oqr6Y&;hSJ7r;WQa$79n zH72#YAtPmwpI!CqMPed!sCACY;k9||@qNEu1DowLvNAzd&4|O1(90Mam-gJQnRF`Q ze9-MvYBtkW>e9(^kd6?m^5umG5w5pLSu&~jQdN4y;%(!rmr%rN$N!&ch=WuS;5)dJ zRF0r|3q4@Krz{9EN9SiMN8)V6r1#mh-K4*8x>Z9``QK^%gi;VT2i-KPV ztnH55futl=#>cP6ql~!&!Ks9duM=EZ5dkgW7yJmcZTK=ent3Urzc1jBJ=R2r-ymKF zxZEpNYhY-zXJleb`xvj}D0@mx8(HzaLjd?Wt-PpgtN9xapRdLs-iK6w5bbTQZ|693 zBb5TrNMA(Xh4pw)ygvSb-niOgvOe;jNca_Q0Pou*A)&@M?TYlX7OM06%IY$s!Utq8 zLF=tcG!XrR6E8^~+q{&;iD6_c{+@!YT=zNK{_*Wy!*U;(rakj4;?YArvBGz%*|6p5 zdL_D02h;#27@0B7t%W#>XQ%#jwy~+6;3gi~>&jo8VEvD88xMy%`}!dMl2a1(>Un|+v- zL1bSHON*7|;en|xhfFl#=#L3j`@^`2A=%M`@lTX1T9s_eFm6Ubl8{}6<~`xiMECMw zlyUns$LZ>%-x~!8Kt5-?<=ETmLGxDiIQ=Br^}LI-@gKM-#_Yc*#DOT6O!9-iL$0ce zQ&vYHA_^W8oQh6+t?BUu2kuV;hTL94W~~vdMjmJ?>}HO}T@*(k^>s2|8%!;VKXvg; zU(Z(p9{p&1B4{QgrBmmO#~$fVgj}3^crm9tw|Uce(N={rYy`@p*l&-Bq5ctCi!*oq zIF+;GtF7isTQv%8pa!EwNA3DRM4fkuQH!=G3HMQT!=sFtFTrmS0?V&%!p(-*hVAB)pNV3h&=l312yE6Z%p$orN*Q+< zY3gPq*T?S_R4T;{VTNls2G*xe>^L9zrl`}yD=nVpIU*nW&4eeOWdqTC0Swe(+ux{b zzeQ?QhtisPLf`TvM6TP^AnQBCAHJ9wzC@6r*%3bgeAWC){(WQLPqbd;D- zRg6a1gADA4;J*JD4^6MtIJQ#0AG|&ycwUjMYYp-f^j>U^{0A|i+TKsK9~ZVxensXF z`q6pZNu(5`E?1%kH>vaEwNx|R;xe;7nPJ2pzfNaUKih78Kj6&ZG^2am@bKYgmd2u$_I5%|W$b04)MuxGYk$HSW$4dhtSUqK62I}}jP(~UYzwT(k$?1e#p_9Uhc@*8RhnP)(S}nDBYd?b88njrPW|svRz;T2}uq+89&o4_aJK znibH}FIuqY3rD7zf$2Ei&H})UkTn|LQw#Y0{;PT}BR(OoV8KwUzg0#HWfeL(V`BV~ z=0-W7RS>ZP%JHT6o}7%aX_;L;5#S0$*6H0>Tn@#Yr3LLnXFm5I{YHY^VW=yS1S<_!3JvHmBoKL^v^VF zXP454V`>C~-#7bB)3TP1)Gu%A0iT+!>K^GaRpP3+6FjnU6TguXFJET^Vm~qloDaWm z)t$Ff@ddVcVEA0UNxUwlY=_l;1*q!fG-d(i@oRt~-FznDAA-M)J1DW6g2>h|>TvK$ z>duH-BbdZaOtw08L0y(0LstMlais+jhLC1(&(%4J20gX+?Tv?(@9C&c7ao=-joROR&Wjd`JW~WP%N{F|bQV8m_cXv>u*k zCqk&Z5k_hZp=6^Pl+tAcK!2L~X>MA1%VQ*SkpCh~ez?W%2W|ETg~ClR(~4Zmad?QM zak?nV9_Qx4rZ%J#vE0rfb?9r1_M*?k$bo2Z%7OZT54mb95h!i-$@zJ`dOWvFO!6NX4++o3h1)X|IMs%ZU_<`pfRjEnsTkmJDakL zc{=uTPMd~BTX+Gg*_In|F2hEcD|D-gx$?nTi1sWccgvrdeDq00m6^D+*8oF2^y~KW z0qwsH#=5PkrrrESMf|x(7X(Zk_#{ZYza~VByLaIn-kk0SouM<(Ipfz7Iucq6YWxAv zeYRcb2Ol6D(_dcz|HuilJ50`VKoRX&&VL7pPM@X3ivpfLMxIXUI9wHzj6jBlcOC<> zxyBG7?i2miefc0cf#tCm6uS1~FY0{OJF;&s+*@zuULGsfo?80z zHFH(RjS1jtshb+z3~jta=S^@#^eSKkd!E%kGF6=TL|Mze$K)IfgxL}sbQLYUVJ%V zZ0W<6dXxO3wG@FMN9oZC^JlPxsCw{s9gX7%BG<>b4BmH5eCdKuw zL7kb5CT!oJ7Auv!Pfx;NVX7A2ci*J4BFyM+U}>D5tRvWfvAL-{r4o(d0sI<_u!aF`gpd_wdq#=fkf;KewDVNe+##pJ_XpH=vKy6Fos#BF<9>w!O99)9*sBf2 zg&nBs%d6VxKgPSViFWGv^~Id=-5(Akq;t<-}WSE7AfvsKk-7j*MR2!D0;_uguRSuqO@~ckJ_l$F^3x%5N+a(7KFbElu*fsof@vK%@ zm!U?pkKSn^nIhJcCVO_7I!2X|X(GX39*2mDP19O0l)W++$4;3mO9J4+RnzW=$V7xy zq{pjbm>~OM1#t#?TDwkeNXSvxVl(!{SZ7qhjRWCfYc$t%9fIxC=NprG;zJ|Ogyh>F zU9)f=wmwOz;ab!_bzqf}%1W3f!CCxkQkR>aHR+>NF56*l18}%raLYz&b9|o|)Dvmb z5wX}HJp7lBmlypf=D@&e%GnN&7SH7bhYc2v!T4n#)P&*&ZP*w#{QXZ;&X$}aJVlws zTr}{`s5_oB2`DzdS~Qpns<{$1Mk^B?H=kLYd>{{9{ASeEnm)QXoW{hkhA|p{_c2?) zI-vqCdv@x_x~TVzz4!fWP3z_J2!CSZ7EOIIkKCsQ`8L2CinNNp&{Jef})U%JjAd=t?}W-1Oqx zFvm0i7YJj0m_ZpRl%70H9B)Z&Os*i5%UUA&+=DX`^VE>$dM!`rO^5yoFHF; zoGI1F&vNOK5PKUo)Ei`3bI+n%a__%b&j(!c!-s5uh*byi9Qg_Zd$=Xgl_o6zyF+)6 zp?MRR`YPZuQ&ixsSCIVRXQ{K~$-33nck=|$@6#2kaT71hfkwx0`xJVgsd~0OA?f|C zNw+Vp?{{+b!VXkn`UL(0buz4N7Hg%dWjbY9RiELCHYkh}bBL`WbBLCyEvOOZrDxqU;d|5c zN>)Pev*bd?Ne&Oa<}&(uxo`vlNk;G#Vwqi4QdgSih~0v*3dynvM{$)AG?}SLQaw|~ z%Xb#KdDqh|Ok2veHw95>9h$tyeegEiawiRs*o~hxseo4&3!B(2Pk-rRz1m%wFq(TO z&OG9w9_s!}2$zf?cvDc4z}K}S++{4c`A{SEf1RkGrn<3m(>yYszHUG< z_B?U6egKie>*vtP&teQd$S=;%mGodfC&C_9bK*RUY6T*KI~w80l1~Zi7wXWt9UYYu zXEjC*+AgN#J9}>x6N(w1c-Ztt{i2t)tp}Z^QZ1(7zjErfFjQ21$wk%7{5t*q}s-TLQ+xByfajbV7m)&wpL@oKk^2KL8{SaGp-(zBbQ^)_AO(Y?>S<9>oFo& zCUzN1vP$Jkx?1H@T-7LAIW3YuMF(fmsjdInFq)(E_07>m?VOK^7-)E^xg}*wd{?V3 zvO7Un7BxK&wv|qq_}O{2HUDE5hsO%Thz;JQv>rn6@TgCDK4X!T6#O**pw8AX&-&M_ zbX3$tb8Vx3!vgb#Xs=??Vma6^IW{rQXA`>mZBUw&sRc`mqM?8 zl5U#!sh+rx8le^Th(k6bw1%Lh62)Ha-cARTn%PqxrZ5N^Z5^vQf{| z;8i#FL<+RK9jfWG+{wh@-Er%;cr|{J>w)|oQqIQxCoDtWGUbEj=7>>ct zl$P55eK?e?4at_l!u0VMeao>EH=oL&n*_pO_2>_%0>GZ~%tsVW4~WPF>ak4KOzRjT zX?|yKxUy~b^ClkEjrRdX%wNU7WK=kUcA^R}|4CjWUauG^1Oiv2umV2thcmStVBaF&(m2v{n3cz0PMnSgIv1{Nk`KNngrVC z4DgR$v$T2vxA7eFU76oN!h98iRao6!?^+cVq}mW{)%G6rb)PTzK%Lj0 z2Jub+zF9C2ITSMyOTTea$7LKkQQ|c0JJE(U#((T3LFK=v&pb6AJ&W&biCu{rodSa;mtCMp0JXR_?i`*B-fDG4`_Fx+xt48+k;;EJ zs9aQzfsQW~NuF`0^Wbauqg1|vR(*8Ip87Y9#_?iDv{!dFVHM|Wq(aoT996v1?~OUJIfv;DvfIFH*bbVKx}?1hm8 zdxCW`_rI+PP~*6f2#h~=^^E6?^vG`*~~ zq(lllKf-3*Pxm0;^oEM!yo;F;3oO4l-Ze~YaKnRJSS-toQa!GL-1ib=GbO~}B^CC( zxyWmLXK&xAA#7|JU~1>1aQhT7ABsAKu=`BBqE`r*+Kj?x<$$XT(ag00JVy}Pfs@4dAC$Yk93C2)g*6p<_gZBU)qW?%`M;cISSx8lY z;_$Zru-KYfadJrA&77o;(8gqMb^ArO#eAn$;~}nTN71CVt4h^5v#tk|{W^h(^1d)w z|JJjV4qbjaf)>OS+1FdhV!!vj%Yp2BQhhb?^UMEtE(LT4S7+`QYx^Vu>uUVT$#dw7lbyy~L zw-}DYEzZ6_2KpcTjwZ0pJX&GblYKEA)0!s6h++ooDmM}*#Pm=}Ef&slU~NW=qS!@G z^q8fLyfq#eK<55IJFb4OAqi9*N`680Tfl;^B(BlM6#v&2s&(Uvsl41nQw9wm2oTIp9ryf^f!ucT1l9cJ9DZFEKFwB%@C$O6CN^pv}-FFG#u zRFG{z2hakD6e#`}PcZ6IAp<%7?9v(wG{gE*;jKdLZxQs`rRvn0jORe9IkjXI&=+%{ zxC3HV)iHi33mPuLTFn_Qm!2#?)_&{Prk{MAYPRo@vjty1M;xNj4jSZ%{{9rhf_|tD zUkdMB>465ZFV1lbWq!2++(&-^+TgzT%~Z|uR5ZE(A*-cnZG>qC ze^eG9G>$8f%|lE_THZJhx7s(T{h(m8=7ofAPMB_!Z(!6XWE|D2IpY+f{&B2N)Bz=_D9z1$AsmStcpGtzybW~SBV zIf#!b%N-T5I6`k`(Z(B^n#D!TkrZxH)mfGHH_|;-<9HH?bU!cR>Hh)uJ|_UZ%ed5Y zlv`RWk!dk!xW6Vzox()FwlV$cXR|53;fbN1C;Sh!my2@A{vcJ)ah`Lu-7px*1;f$X zD@PTA)jI-Lr@$WqYM_ER0jMsNF0tY!RIN%+7 zLXVh9fh6yYGMZ)-Ppc6dxXsJQ`=!7}AMPj?!OA))N(dJlfO^u47)s@v+H(EUc%y(1 zulKyLIR3SE>KGDv;IO)o-7FD5>m#e9ZI2WlJ)hNl+-J*lE;CC5Hu&rGeRuLxb12CkFRp|M=QCKs8JMv_-Q>PxqR=@V6CUw0+aNU>jaq(=Jn`-N$&z%4>0`PTX>=mm# zj2KA|#b@Zd`$mSA9g}PCj;r}|q^ZWAsZpQvDX>QfY2s$Vvb9bxG+EHc#-RB$i+8IiQ zn=xT?xfA*$&jLBjIR7BJ4hW4^J=wH6``CD0kPu#=Tg67q$`%SXd{m+=xA*|CJ{0qe zt9MnOdPLjm*S~d$>HF#dN=62OY95mBcZmR-k|gB`{#kOgc`Vq||ak&U*^(D0Hmg%)s%i%n7bJzg|U(D4>SEGch;8y%- z1bh|+#9~PBrJklWdkDW&q@C2nF~}2qAHpqgG+3m=Sp6K(b{38P9u?7a7`jcitQb-~ zywry==BjsHN~tUmBSZB z(f=o5ZLIK4#219a)%F6&^?9-87XY<$qO}){tOfz3P=hZe7EvA8Ddaco?$^OD{exBV z#_2|k1pa561x8wG)2Db2$$iPTlAhu9cBNgFZb$f!I8M4|W~L8M9j`54IXJgYEDSdv z^J$F;Ij!0O$Ggt->K)sE!>YwTo_k3miA8t*?5|C3lRoAF@H;FqGJTDTDjgep;3rFL zdLBARiMl%bd~X+Wqr*@8!2l@3s!903TVInsGtcd62M9L+S;y?<--#iVT&^N_&rh3v z{~`@hV?FP(R(FAYi+nRyJQLRf^aF_-@H9d|Sx0ywBnhD=*Vhlv z2dZOLA*rQ{ZmaiAh~{V1V)K9I*#-olzO}D`SQgE=U+&p3L4{H5zu-h`lM*4nbHVG)9Bo@F!$UxDFU0_u% zUyz?pL!k0-F~lqYD%Bdlt4*eat`Qgb4!MVR%hTNN%&pnDa--B+x0|QUk0||O5nvx? zfIa-#t0QHe%>Fl^wN1+ECyrZ3mJz#={>1y*oxkNOp&2j(e~6ZifNI({o%7^ zLcxFVEDLl0c=5KrJj`1G>?QYZ4y4yRG+BEFqQ+X}c9JsiMY`Ix(RlJWt zv@6k)L9W%Qi^PFez3I7RTP`|7e23CFeU9TjNuzwXj-7e|g1K7W^Fy!p*T9Mon^r)% ztL01{Q<+5zitPO5J?<2fk@LFFT(UimZXpao;FF7)zB=t&<_>J-p)6deO z9xvrOLc|Vd9?8+GXUDqk`Psntri<0B zKi{4H#5p7WxJgh_a^N5_=i_^bdu79464_)IJ6qxctvJhFRYh0s9Z=XCz8QFRxC<~f zF+L82`GR05*0TD?CMbfQ=6m>;S7jO<-x|JczKC7rPT)KKuGJvXC%54&hcR+atunfT z4(E6bu4gFUn>SZ~cp)6%#`^N6UXd$d_uY)ov^P>@Vrh&)5t~pH{oU!=yv4OwsU{~k z(lh%x{jZ5?+KYke3-8|&w=P2q6NJ26J&TS?`8S)o5S8+YTAO?$?w&Vc7cUe=0&y~& zbJsnm<3_RdozMm{@5B?bR~nkvT$fg<8{@yxqs#r*H_@8lyZWm)+i-k1L^MZiIF zV^)P47ptPNRd>Q_jhXyIeP1a-XR~_;>MHA6?7h;>V7>wXX%C%{lqlG>2IGWmd?U9fn{&28}=}genhx?uI^`8*aMwa!q?e>}j zTXm=x21|Rme4$A3PqX%;zf%<1)9dz)2s(;&<0PM?<0S^BYV2`_?o_PBIk!VduR1q;D|7~SVXGl?kA z(po)axp?&DB0Y9bc~uK?W5qe?sr$96xSGADy4so}^KnJ%VE6fYKPGsxSVx+VxWk}Ea*Htqzj`|Dl?!P%BH@J2)hC)XWp zl=j(HNZ7BM{q^J5)1iTiWABf-m6rGp58uoL-T!v0T{nS4@#0GOn^U}NJWm|-EG=Oy z*(GHV(2mQlwdUD1!<$wyT!cAFJgS%RUBbphcC-^Z6QiK6S4J=%^!nH2yszhaAKMmg zwNf=vvGa2RwziW89@;tWHJ!2x7l@jKVfM@;r}%kYGoDf?t@uT(R! zsWtaK^@O-C;luZz ztGrLMSt&c7(r#B6057u=9*9r8!*7=H183`X9SExd#CPJ4YRR^=IQIVWr4vwvQ@4)1 z&1aW-J&=7?VlaPPTu~y1IU>+0OK?7_evP~n$XHC1T2gdv-5A8J^P}I)whT@m1_#$4Xb*aMgc|z$UOOf{ zKTSxbjAA&BBgC4g^(6l};quJr3*z@sx|CjKY-^ZFG1y3rFCpVjFu8st=a%pWwdg+e z0L-@3H1hOD5ymD;GdSj{21I>6&FP!YQz-WJU!n~g9x=)BhxaF~MN}`iC1vslvvIxK zv5xR|%2|P+uE05#$+NnYmZM#R-CS+pe=VWSu-(5R_(!OPVjT1FSvW-ehM>K3_W3Yu zBt;84#&vx%omd(tGGhZM<)&e)nPJ1X2M4|BE?xi{ zAeKnBD<#9kYgz02iqyl7WvQdb7`Wy3u(jnD2&;O*2BC#7e%V z7!F)!<*KV6AzO)a8>40Gp6JVINK@^Suu9Ca`LQ2R^EA>8|3C(U5qLY7(9K{oqM|+V24Ur^fiuS(C!`F@F1X(szuoj+o`&G{<;o90DUB54jP7|7c4@@&~8zM?< z>f+ZD*yyEh!X6;KwF6kdNy8sXq6>z<2(ODA-|flDtvm_w!u-_ro8n`Y&xH<|I^8M3 zm1=yyWoTn5f#34*UW4(_^mkFB1Zu4oCwdHVHXZi6WLBii1?P)v7nbXn9N#962@caP zc@enRVZSe?WmU;pJ-grM z)wdd%5A5;&ZsgXaqO{^n^Kp~zR#Q?^I*KJ z4=TGgcGLZW7Dm37CN*a?jBqw)o{Y}){uaIs%WGj~#NiVexyt)lhL*z2D(?wdD?8wx z)CldJ?S4#LOjLCGT5}1OER!0U9v!7ueM?v(=Djer6vvAIM_YO>q>Z@|k7zL8-ESt5 zYf;+T@)Guv_4f64`um^H(lqAm5_2hSy9nG~#t$Vn339X-&%D<-ex$En7%LbwRN(Q? zQyBFZQ&k@j6mgC98r2ua+jxb`7}=C*ezNjM zLOY!T0ciredvbiM5L8T1{n64*MBC5vpgU&fUG>qEoIB#`1zR{O%{<-j#iL1V#0P>k zi-J%-!y8M*7YQdqr%YvHv?s1p;Ik+|By($X6q)NFFJYm{D%7NE3~@m(utm-MLmO+s z#XzQ>pZhPzps$usAN#6fNzhi!MdvH^l6MOKeom`>7?3QMq)0Z8@Un#0jVb;V!ja>? z&gzBLz!d{j_i~41_4oDfejF>Lq4BD4z|_kS9Nr(jbm)U_qSB%G@6ZZTX#33X^KnwQ z^8uNW+OG)c3gVFG5Yq{e&Vu-T4<4jA&fvQ$gS6;c8dvL$ta^HU@7<$ZW$(O9;NbQL z6TIc_aaB3#8{$_jsIAJPju1R}Sqc7FJ_uN5@NE8Ks4o@FwG8*;$I*>v;dg86gw$xO z>7yniHUc$V5(4)DQ=NoOIgU<9)FM?kvY_+Y>ALV4gGTvp4=y3~JMyD9;ziY<87J1D zcPjbDeh;9?zz05VC(OqQHH0;tv6mo7UZz}^D*)4(f#k(FhGWL;;Is2&yt36;pD4WFKvr6qk#g7Z|bP<)r{Qsjiawy53_KlgHYje-)Oq$0QTq_d|BcA<05} zG~_JZG0=1(>M>(pkBoM2pK(wn=7Dr4-i=iZiAH#>E|?{fB9!r#R_(v)l{N2)TmZqz z*27nI80VatlHCYa%O>F0+28eWvSIS9V$u(#CA0Tku5I^pDVcdg9;4L#BG#Ln69|;H z&?~x4x-2ku{B)NON93{pu94M#%^o^JO%UnxqnCgj9T{S3_z1%7-TqdzM$!Znlw3Id zmF#@4|D=1r+vhV=d69wOUB=(;#Z$laVE5G< z*ZS*h=Av{JPCB~TcXer=Qb$H{vZ3XM4eJx0I+dPe0BIv9=x(90UvD6!=U|9W_#SPf zeU?LJS#rbBr0-|6#Emw1V$4wxE1S$qD+)Vdl~CCXk)Q{;aH|AlXu>4_NC19uq@I3U zh@$xOPp;#q@ueh9coLGDk%8U0I5h<86Tj>fq5N5|4rhuvzg^Z2yYK4)WA|lCKgg5$ z2KGV5RXjD6;8l+>#{b9ESNKKMHhpJJm%r|C+<~()&jU@p($rOnYsOsKlJ}SV{$nTl8 z%BbLc2@u!;_XJv(VU!PZxa29ERoOJ9?U61fWpy|-^7Fc?G(xjTfX?#TKj-3Xt!LD_ z5VZ}(-Vb9Bs5SU-GSt^g4(m`Z-p!yKYBA&E#i{(chcG~srB-T`$qVNu`cFE9xk2Mo z0+Il>Tnf10AKU_rMVB=4v!`MvnIF3g;rOcu%M7_42Cc~VcWK(J%@2IuBkjmNxaOf- z({An12bTVdOtk){e(nxv@PqFWJ5`Xh3n-F0gakD}s?92b12G2~jZwL_$D0)98S-it zdPQrV3;zB^*U(-f*a|7Wzw<;Ik72{m(cZQiz-tl8-@76=X>yE!-4TlJ*Fh)tq+atn z+FrF90zk>2-u!<^pia?Mey*`{_fPoYzT+52OrJRTd&?jkNBP67p8FfFgNcIT%a0XY zivFjj@K@inT5qA;u(zD6{{_fjCO{DNaN$Bil2P(HSGk-_Wap6h8RW3 zD|vT=yKxB%KJe`D$B0rY@}HWmy87&j_{l|Ki~YEV<%gW1 z-c0zxCcXBn)(&gOOXj#X-#MgyyKkAb%?EEW9C6oQMg(kXBW>K&c}0QHP}_*mtiC{7 z8m1i^+Q7~+Nt*uo^ftP5B%>P)F3F2{HD(QJxDQgtXi+`+@qR4=J zaW58vHBfgtfq$noUsAJVXv&o={Pn5L!C&tinr3sdNI735>SzD%^O^`(f%(r-*$cOZK zU%!F5J?a8K&TL<6G%)B;IBC45x=q@__AVM?b{lkAwJ$usM?QpH{XVD+M%AFmw;~3L z69T&geT43vt6n}^tT8{bK?9EpE~ll845`94D@S>rXZzr@W|if@gENbd-qx9@SZw(( z@qBb{Q4L8J(!z+29IIt zwH8B43B}^=gWL<7b>NdRmj37d!Lb+3Qoa*-L*!sL-w{m(eddyR)4Q14KA6hA_eI|* zkLt?18@skV7Nd5{9pVOBI!%+1<4TJx@gUFsi*vv~uf1>mS(V?-o`0FDSZd#5a5i-s zr-zcctn}sHwTM>*>`ZaUmbNKH4wCbU;`Y0>sW0+U@G9#O6N{(BZVB z)Y8uA6ns*L3@l^4c>m!c%zRMdo@(-G$h@AP*((a^oA7PC(cU9ez+BtISdUSo@0IuL zEJ?oMEYtww5J#RYkVLF_rKwMzc3<9%37LkJ6$di#vfCN@)L?FUUG@5Pum1Cf&(Lkz z($jKkoviF#ehrq-AG@jWgu2!D^y^y-R~D~~{_6#}e$NcC@N{x)k4m&9l^61UJ}6u` zSE>D8yd~&hDl#T3cf)3%hufhpzP1q6^A)f0P@eR+O|zt@8&WXf&<;=sWW6qDb&D9m zCxZ_H%WK7UU&dh%ke5+}S;SvEx&Z>u;t5hlb*dF>oO=cor#Q8PJ`%{wlYD#6E`bo1 zO!dRA-uUJ0{obQ(5Q2%ieno5;x5B{akUw!GgFd_R#l2Zsow0zpn$f9ytpbib;jQ>F z%j}ht6!Q=*u&b|-{w>ej$prNHoXTCILH87J$PSZ+sB98gkc@rmAU^Cnfy_m3$(Mysi^R!zRqe*?@#0X91=63R9IIP$m)`=`2$Jj zve=iq>}tQX(vT#(flmrZ?e7bl^1e=enZ|lwKg2L@-RR9r$w?cy87ngLEaIL>b_Z_) zcR~vPCXj?@ckyTR_nct}moKm`F-*M|&|A z-GXg7{+QfLOYYk^4c697Cq2ndL?=Bwp8ADTboQfeG90W+uQ2mz+7eGoSD;xVU=~h^ zst$((jWP#vuTLoHY&wOUm&R>f=>E*rCnV78(twh*7ggs9`8+%((3pDS!eC?l!&(YY zS=}J`u8W<|_S)Y!Gz}0adzdQhSz}{3?m+$Od9e)v*E>1<5A8uP2lvI5Jx@$u=2q;5 zC^9*$uP;gU`5hBI6ppP@1`dI?G+7htFTe2IZV)NoFa?AGx1QJC(WN%T^O%C9)QkLf z4N5%Q=zIqlR@xSf+OU={?KCu);@ar4Hd6Ii2k9X37N)<-(Fgm#_qNhVG!DgBWAnw0 ze|+7RrH^`)r$c{|E~(hKxUa9C+tKGtBA1L7A(2>T8f@u z2u4mHC)^<{tT$~2Nqm@xHbHXn$#$eLKqI^o`}I>U16iML(kuP2kldc5=WZyXeW|QI zA+b73%&QpOQJgjGb$`xK_6EwK3^B%Kv_(Z+P`vsDp=o*~V(_kKz(!v@3LsT&7{%OC zP@!gY=;QOK9#*w2A5RBSrHS*8pf+;yLu2`N`WN5A5w#4t{r*bQ33T;@5-;PzV^ znY-qUjb=Rsy#6*c8gs3E7ROif7nVh;n&d8f%kIAUG^S|wDT-px*v&!^0Q2){r%MwW zgc7RjHjwI&Iod&s^2#e8=xt6J9txcM_nmF))N*UBh+XpmkBdxX1|11xh*s`zWZs>Z z(5P{I8{-~WXKt;EVW*A`( z1wU#S!!G~yJv7qZAFy1_ii?d2isq?FT=FSHr-X*AGZ@O-j@Tk^Q68PVSm*5_PC94p zuttNjblJ%%dF{f;tRtgqBrC0hezh*q3%nZ8Ftw1)@@HP@)P8RzKv~ z&uM-7^VUcoepMY$({fHSkBG?+Gfpw8qB1&JAj==z4;|-)YO!uY8TX| zKJ+UQAslv;cZTv0GPdzJR8!;@tfjtyk(FRvo;wER+x8@WA3n6ErDf-@*%L)anI%pY z8WVFggXTg2X5P{Kq`t!owPHhy{EVYk#Dz@a)J`H#+XMUXn)HaJZ8@I z>>jGb3nQPmnyjxih_mKl^+7x+V|d)%{y#%^PIYb;;%d8kA3Ea9j5lS8*#8rH?T;vfGF`SUWH#=zt(9IG zrcQRk>V{v!=NU6*jI32#D{KU8^+%Cs&8c|KnMEC;GV{h zEnM>>)~FC4iQDClb^U;i`{0nubog0vEc`{%f_&^X721xdP>R|w-{cP4$r6UWJ&3~$D@I+tsAEMF}|!8xZKt2*utD7(kqU+RT+T=coF9oX>Z zv%Fu+189T;U5n3BW|Jv?!uQ4BV9^5B5owm%v`kF1@;E}C zv`!jmbjXapLh{=rpI+9ZNbI`_7}e=xERk{#clKuQhj81P(BjioA{*p!WkKbx`m>w8M;!%9?|*Z2tJfGCrN8WWK_MDpR9iD7NOwSyd^Q_xIcD3Q;#EtWN{9rp~Z!pPra>dm2 zZnR?!(Y2z|W0WlKtCbz2sKkDDdjM>%H`X;J)_0CF^`R4SJk-qyZE`UQn;I$h+f%g4 z033_$)s#S;7rF{vNDk0wuB5$D`M2TRdP6dY_&yj9|6wue069^}o4hiQqAM(1jm^vr zZrg2pLgKu<)VN<i0XKtOPeXqvu+xqw4S)WzO@+(_%pj_I|+Co&}#r|z5gjtphXLxhu4&XzSf(g@=nx|kGlw7hU(ifdGI}Eyd5Ql7-RUBU_M+wAAjl6EQBAp zi_=!F*4xv_M|Hr8rT=L;p!3=cP{y~}dokhxs=rb!h=BSWI2(IE%R$Ug)(B?K#l#v{ z$$v1vXWf60_1Ytq{wh)Ws($l7M;#?f0GRRH12$fpKi{*qi9l1kV?Z(<*C`mrR@CMf zJGP5lQ4oc09%9Cw}7NWQc+ zB|F2d_o_8p(d8xTmQGeA*7c>tadMn7lf%ULurOUW*2>+a1i`X&eoMTFa)95y#&Sy% zFO63f)qje|SYxBdgPeL6@dqJ7!caUhXTYL-P(NjI4-CH0dmVXtEh>@iQyw1)e!{J=&3% z1|$}q*byIAxanA=xka9Eg+Noc6y|v+{b3BG&V7f=B+O<@pJw$TNmUBvx|yy}9duf% z{`PNn*Hs@Dd%SGyBC!MIa*c(Y;%YWoiHN8Lb&kQA@ms|3JtDp2A6Zzu%a)y6o>Thl?aEbYp62X z&0>pVUe&Kqt%E$w?7+Q~|N3NZI~^iKg9m~1UaI{ueSQ(d6!%mbT;GLp2CB6uknXT* zu@wq%x*K39Ui@3{qLJzUuXoW0yg+Va;~elwNH-9q4E=oRja33n+7h!=C1Dp*uQ!C4 zx$HEE$&97FkS1vFwj>o3wroL^M^EJOA(LUj(rUCdfRo>{9h7ew^Dq%a|- zWI3@P5jZRIc{tV;eEED)5jKpu0moq^r-M%-1>_QHJx#RtB2)PKu<&vLs z%W*qTtV4Oua%)Bhp>l5XH$seQ<;|kH(lo?P@4AGQ9g}i9aX?$e_-E;a^A(Jf?BHGeTS@Mcz*`r3ncb$ z^z2G9Wr9<}j3gx|2j)+`_AfxBR~Ph9muC*Y-9^!@T$4I1%R$7m?V|i2xE5gbR%&&` z8II7&|NU?!8u#YD&1U4jf1DSVg|(+zwlp6-$#59{+8ntJ2saWJ#N9+O9elBRoC0Nt z+?3U@Ho)nXP0)VRfl~4S8&XkPuJW$5-mU956ju6rClQ%G-g{oYp1tIR{L79$ zE}wDZO=!w!vhevHAmRt_ohDS8M+ZEE{RvC-SDG>Z7;OCF@^yBon_5)0%MGkn)8%$T zcBp|`o>39Mw=fWEoW?hNnM^O+h>=ASxNren)y4VbP>^igrVc%5eoul)NNShIOq@z6 zD?tQZYJ0uC*MHmZ_jna$CmmU@_hkcDAgWSKt6}XDDu9c}$SEShP>cMqvmYjx zGip6Y;H*|2_c6HOKn@$M9zSr``OKE$oW;nuLK|{goY^)!Uz+ znyyowzi%Kkws--?bClb4MkWIAaXnlsUqTveSrA2Mnytu6aqZ$Zr%GVr>1epb@(;sO z6MRE@L4RG=`M1GxIP&!`O?hAIf5l8Pp>fRL7kd}EsqfYYSJY2As82Pqi99OJF?G`W zBuwps?3R#V;i9eR@(w~uN5v&btS=`E8ipo$BI{);z7XXM@V670jY`XK$F(>oFvs52 zi%iiO`X-Vm^?`WCYe}GWHZ@qQjs5h$q*b%*ds-mt3EDa|GU6L+KEbPl1BaoB=65FL z&;5=LAl9^zZ5PUXXwdS1|HJAHHy_!TRwJzb7(rJ7Qy2JcxL5%$_)wd{YP#Cy)$3QU z#l(Mo^kyGb8%)n0I5iGn^BWQ48ej0Qll8Hux3_ZyJ)IWF_3O=A1Pp@G0~Ab93hNrJ zdX3)Q4gqXKW;Nd@bi=y&fj!@dCv_d*pF0A?pt~L!{LS0H0UKx1g1=O`unURss(d%D>dgo<2apyxZO?k z-b=6}IkV8(ie?ps%j!h<4ZlRq#K_4%amtVqw~w-tmslYW(&G|=%to!wc6f+|(E-U7 zKMyLM{D5LUWRys?xpYUX8Fz+Ah;&TpK1B z-^4a!nnIC{@g^qs`PWVAm*wQPZaH2mZCZ1Lw=TRDzLKKSy!?GVI8n}*k5}D%SjAR; zY`M1L2R5&IcYfWK0sx_8y`ejya!Ixz_(vNPsU7A z;K(@iZesbFlMq-x-?~ew){;SR$>b@9X0)-zou>8kHKC&Oq-V#Klt?C=k^b0t$xndI z9m+Len_jV|&QD5ET$!1MxySg|%wyJmT6{XkU2VCYmF}#i1wZCuBYEderB3gnnDF9| zV=$pDa8zN#H1DQo1~=<|HwSdyo90Is#KB-_T0{~i^!!5U>1TTL%*Y4NzWN3JpaXMe z_U7`*3HaA4+U4bqHIB+QA70z=p=ZapoY!edwsi=#JD_*N(CMvfkIhCvYnBQ8_s3_( z9S;dl)G`WAM%gHHp>TM6)p`+3$y6~ z^;FpPs^q|}Mk;h8;Q8m$pofYNVQ^NRGds3lR1SM$Ndn?xy;V`{!v4pDwiUma{8<<; z?vTC>Vl8=ojWGcQ+d*kIuUig&-SX29KG=CZBuO@m-((&5#}E?Hg(eo#e3q9a$Xg&~ zU4htv?=Z5U@1hrTL_-$ya%3q&K04RRqsjb&RT;mw2l@NX<^;2npnrxPyj=A*x9?F` zaft_vZl4&7R^IqcCHa*KjGKQBF+c+h^*!yDkjr<^5@@RdtO)1>bG`~m;6L+{Nz`Q@$9IuQ>Z`+Q-4 zf;~%yg;l!OtY#_tOl=b7eAi2~aQ@Sl23qm0pwaCro*F7@YA=0GP3NzxFLp>fkrDV= zb8Vi0pR_EksPAn;YQiT`^cglH>*w|!fC}osz9njnk{vgAt~KcCZ+!px3njFo@`hta z>_M%kzen9J+m21F{%3uzRnE8}fi>O=5*C8FKrR~!%*ro&4upk??Sq(nSy+pHu6E;9 zo}XIB)9`)7YsYfQbnY?G>dnASNCV(8c$b|G%VwwddM7XT#ZeKd1l@IMwvW^3%etR@ zYj%AY8U0P(MOB*f8gV_jqwaX?rYq4wM$@s>g$5aGf-C_%+?o?7$RH9l#)~zTub)aE zXLMC0ezSItoZ$678UHMt<~T@}AiJ-qL`biWhbr#oCg@HQ zJ26^-2`%mYty+qo#WkT#3T0(YTpue-2JH=q0Z*#5x%6>0=g0%sgEUcXo-RMLGGj!^ zDLs{orZyzIgnlZjDIEshfe^gkV93KqkAr7P0gI$w*ev-L!v$;}y4g7M#Y z^R>{19#C_xfM|?dX5UW+c5@khQX5Cy=!*8dpL2x4*PobwI_KNbYmnUD*0WY}Vu6~; zDjQ7l)~1m3Xg-VbAes?PtGB1d^3MI`xe7mg8MD~de!(jJ+mKtLtcm0sAUU_x>HehG z0=?uc4gozv494ryl^RPKh~nwOyu3Hx zA+%QKA+45@B2J1IBL~XMlWRkJ8bHSqn{M9VW*JcH9cBd*>Ib23{R_5^3`{iW*=GKzkR65GA{=>R15br4;^)>qsNpy6f?wzHF%j zsKD|$y83Kx?XFNuTUk|y*bll%)f>)w>3yub_*+=%SLjlWdOxz_(mhM~s>_QNQq?Hc z&VE7U2=-uUSV-3NYY-k&C2#&Yz@IIb=bF`EsC;P?uR8}Kfn%vy8)>}Sw00R@Q4};4 zkbu8g7%#-ef|0_VXNlVP&`+vSkmusWQ5Rs2wjYRSH8Bi?6PRjOWQ%Y=4N8ItUE$8xqfCEe2qxyx5 z_w0%y>o8u~S*$MvfoGzone(?UE>1LCf-7n39$D9yz$0c0U|~tOg)A8maDZq*Wj64p zF8Vix_k7Rc5EA_EUVkTd)y>-9_YNI|kZ2#u0X4b=jQUVIq2Qt-Rf%0SwwlP0`#wy| zu@lpwc8Xb$VoTMQz;De4Vko(3ln0@r{G%JYcHc{W`*x-vM?q$~Gclnm&Z^x{;1Wk$I;3dbPOg=zefD<^K$HqY{)5{^>>0*!S_No(DMdEuUdwbw`967&^ zEL|Ue+^;5*2@I?HKufdkxzdnM(f$_fbg-aVHMyOkg3~@HMAnYpd&zKXPM&gbfjF0? z(G+~;WMB#Sig#(HQDNl@1g>{9hdq_mUXv`s<4j~VC^`pg7x`jdn@*=mS(=MnGtYn712FLRMUc%~j@GT)u*m%kRMkMdS^o@3c1Y^ZB*m4j#F4v?{ZG$WB zjxqT@=JMEaxm9cFi~wT>J{#4*=|Zk0yKO~Gmj1A&g-o&gsN3~0Z{X#=HN?wrSf`h% z-BkG-{EoT3Fc4vF?P9@E3dR(|A_fVHl$SL8(rWFmPrus?bnXn=bo}27;^PhxVtjkM zIo3nQwvPi>X{8ce6cu#+WS;`2;SD)o2M4i-{`f4ZuT41zl^Ciyy)7_-e$&QI@O9akdIBeo5VDCuYII%A3|ni8x+b8S)Rm9sN-^ZzLsVI+Jvw05tY*`uU6>#!0es$O3Ucg;@)r zWG*N5cS#_)lMRUlC~9n0hELjue-I}yl8-vVxU3@d+AI=Fijta{^Z#6;e~`_lE%C%Ojoc3q2ZqkL;uEr{~)H9?!C;V`flCMe-*25W*S zvgQ2YwOzY2kYDJt20|8fvH1^eEe!XjnfWW8j|$ol2Vc9{o_Lqr)|p`%z-*8Mr;Z^Q zm>E?Fa@xG~cNbqR?}i}#X?$@(sCPZqAEE$*#+v?+I>d1N1u@ky>SZ)Bm}zH8Gh})j zI|*-xN6aroe5LQMok;+z7$-Q0_;$+t{OjAWvxX-+TD;3K=uz2u9A0BD#X&-Em99?; zK=Q6TbJsWa2_{i%uDLZ%i$0t!cRB+@jA#iva&y#r!S*wxRZ>_>9!eWF71s_)&5>8j zShyU=5n)Eh5wz#mFyOCGKDOQ5SZ%-nZSF}U{uoCvGo$8-ks!uONpZ2??K~w8l|7YI z%k#s06B(e6%`!Sh2%E#E^S%ALdbB@{sy&(8-V(r6z)LJtHBn;a6UzrCu(D@|0ex-8 z9s4t5aYdgBg^@MU4~Rd;-BVFm_D}hTyxJ-YtUU>W%U7T%5Ll-WyN~(XhG}{f4@LHJ z+{;0&{_m9{a1K0iEHXM*R4H&?9|*pj9|omNL%qSbE5cN?RK z?##vE@?(kI|5Dx6Y4J-j)#`pvOTl2{1ph_{7ikh^*cI zJ+?2i!Vbe9flFYoG+tSMK`FWO&PG#5SFnE}xXyWYqTF16U8Lz^MoK~MgnNjwf-zhy zv-$o>N8O9B3IFkl@i+kBwicF_ewAV@7h|R5jx*W?1N*#!xxW_De3eCjlH$w9t4>Iov1@GoMwLP=z~qHQLGv7YnAmE>uP0B2UYDze5HK5S1#(_D?q5viOLgneE+p7q$EQ=B;z8kX$t~q$x+1>aj=I*24$r~v&s<%i~ zgU1?!<@L>i^=@bZ0x-{PYBbVuMmr@njLIIZeFP(#;l2w3dGeJtrC}pZz9P+wOP|T2 zLD?_tZ15P=ZCaSC5t*M?7?XFuFbugJ?L_2?;U%+F_se$e2&ynnt4$h?_xGqq83%`T zvGy=u1zH&hP*H-Vo|`y!{VLBYHbQUmFuix@^XN7v$6&?q#z5)tn^X-lxQ(8EK(Df_ z8B3D)BkWRmoIbY1n7T5ET>T?1q~ncEAYxm~C+7Ht{dRk7%{74FUs#}`qT<|mS|EC5 zEEvxZ-L&TN%XWl1w}?7FjFsj=8Ecd&$!s)OXwR^7nSn7$VPN^d?y#$L1e$I{eG6PZ*Y$INKhO zK6#FA3CkAE%PtgGV4T(D9v18)u4?DWjSWJNX7t94#KPdCA}=%tov>!KxscuVYJDfg zA}TC)f-&>e{H_3gHoL6n?P7EEUlPffyWa5KyIKF|N^FjH(y8QGb%S(L>PGxoIr2Z4 zQkP7NdU9oq4fo3tcgXbw;6Jd+4|)=xbprRtwr8}oP$i3<87;+xKK_s4@Voj5^-xtA z7RHQ-5XqxWl|iz`HxXDRe(PBxf_1CE|Io-e`k1{k8qa8)yU91aIM>e-haX_rGI1#3 zYgMbz>dVb96CbNFABQo(jKd>xCL3aJ9BJbMHey}N4*8X;@=3(Zqg`_%{Z*6ODh*iz zY)28i1BwH4%N#MMh9M(^lb*{*d3LPB@&BoYdAYeAjGD}sooligaX1YD9{aZ8O5yBf zmv8^*Ny&iX1J@JE=!bHb(OmL2&_Z!i(y+^=cW}V8lb7|2^``a4mt@KrUaa!Q?fcUg z>A4rT7x%pb$kGhfM|5)&c{x*7kgwNP6YTmfc82_@0nxydXYmpXkK}BRB1>8g>!d%Y ze^r2A@P&?5d?J(K#vQ|Yr(zhuw^VUBScdOX(HDJFP*YYTRpJ@p-9sMb z$$J4SW3^t;5C5S#2`P1`bf5YqrY?A^x*jQX>T8cRD;<6w&rl<&McGeo5mNnsh5z59 zzR@gdns=!Vt3nC!-*2COi9zrWXp+ux_`Ht+PWZ+E49CA@4`BGW?~n(O!Y9j?{)bzC1h0#sMU9szNV61q>)1(1(t#& zYxp6@NdmW96Y6jya%aXFssV0SM1l8B2{v_V&R>4u1XfxiK(>EAH0z5}v!WLmXr}2K zS;pA|>ZD{X#6u@4vXNU|`)n5h3;GcXE2Q0Z1N95FtkU4&GB)3R`I!x#U_XmD(b{o# zd4p*dGrcnf*R>tYEWd2aZ5zmBMCa?4QZsGE?mGOhX06bSuHkIc-wMAhOD9c-GEvC# zDTQ>HP!S%JNZHB$Ckl9IH~}uj-bEC!s+OH3+%V&x(3aulrB{~TH-;=o4*(#}aDTTS ztpLUW-Y7vn%Db@LpU-2l`4|AHxN)^Q@zA@bomUw}3EtMar~0wDpIf3U@QNW5k8~p) z2|QU4?)?q5Si82qs|ND7-BVDd>RQ$$s<4OEQ~3?KM_GNuS36Er>cNUY^a1iDjCz%^oRm8`|5H#$1M;ydDdu6>eXkuB@SwN&7M!XcMG zTk~Sn;DD-ebmx-5ais3UT`6WBfc7ugWLvp1&>}h zwnq>vPUV;UAkT?(%{~N`?zMbd>XoL@g#WUZ648Bwiv^-~ zzW3|u%ZVn%IYq&i&L%v8kK?l9;ss~o^3C}7P71JY!c}|MjplsBBzX3uwhpPL^gimpXrG_j1`puezabxjXP+s0#S}FW>YR-^mp@_D-dfW8E+Onf4+AWkD5*I=G#@mX#f z9LNpX(>Y`E8#8NzRj-^&i+W55+kSW3tlV~Ii!cbrOoO6~0}KRGZF7fAVd}?qH6&um zciKbFvYcl%gkA85W6r>PI@8RVOM)bhraEyaUOokF{xy1D$A$CmAl0=Fz`Di$=%xWm zx>=ui(^_WEo?YjSrNP8dwxv+CRKxtYm#!`i7Fs)-CjJ{Dt`SLVSS_CRiS-?`9_Dt? zVt)SAI!XSEfq7#RU_{Wi)Z32yj`<@FP~Om>e!_9G$iam5Uzzm(2Y_~~t(uR(P$RZ+ zJjF&zI^nNSOfRuj<}XA2KR6rSPqpnFq8I)WOv|{eI?QBsFzo86Z*2fdl0>UGp6z#l zrTD$Cb`hukSJ}HCG{CrZrJMTVhqHa}e`9&|{L}AtQYq(1-|3n!B|$H2N(X!z(J*s- z$+7Q2i|8AI)RW{kON~xRWp)1yE(u-iK`59g6)Qe< zmCg9E^@a}fNaOGUNYfVQiaQh8zAnk+VxM(?FM`7N7B<%Sw`cc1UxTi$tGtA zx{llU#5NKBRHSVRzc%`t<~W0Q5b$w}x!2NND|AgOx#vwsBE`ZHo{UW#+C%(!2`?|C z71kvwItz}GNDcC|3h&MV*XC+dG`(f!^gO;k3}V{tPJ((JY!?;Fqv>IqDjzgq4|QC= zGKU5yI<@CLOt!^gM<%|wxPnh|@EkBZ-aEiyKS+VDsb-JWdKI-a!k zJ!#s^LzWAE?xva%n`Cb^l1-EGmM4;QrOINW2iNP8_5MiuhT8pSfMfTSG_*TUx~brZ z`h0G_G<8ELl(J&04yu*A@VVb_tZZsH(c(Yd8|Zl{_6(#6(R>W!OgkKF!DYLCE@c~d zsvLZS4C~RU*;zA4=MnQz$^cMAkQs$#lz0(I%DQu0h)K&Y9z|c@r>I{i?uGQ81ZTe> zRYrb&mslq@odU*kCDgw1twsQJjuk)?gZ|J+x%_= zt^B={P3xUUY_vL-*!#(ir!n_SlvyNb6-|8LGHwiDT>7{zZ&0;-Rvee+oMM{XDbi%d zlLThGqI2VsUOxtN<{cRJ%d_PE8LXr8?P2-ZW^^@$>nQCg#oJ`+ozE)YNG%_fwMI4- zWv?@{Q5dF2@wmUBF8Oa7$@(vAFJ@QXY58_0KO-il^i2bo>(>uHV*VpT{;+=o0>s$9C?XP~@Dp*3r^h&KH zv;}{{OXGa%0CM;m3udcPr;}uvM!Y=%KCTP9Etc+q<4M&_1=Dgmo(pp+OoocR~ z&|h{p{mOH}CaQk^652c5Sw%r2eVz~|+o`Z&3McP5M7emZ zEVu`q0vP|L{J0&ci5xzkhKbUzzGFLa6O<}<7Xl9dgJ3X`Jmh$|QhrXMVVxO89lIm^ z1ZuEHIcAeMX5J$9QARq@e3}cWJZ8;W&pWr$XU*UIOZwwg8{yS0eY!X4uX5HuympZK zL{`bO1zCeC;K{jWOCfJF^V*Erq1jTIb(70?7DnECO^hw@``5^+wOP(+PES{>VTsBs$X19`=~DJTpxPS!x}pCwn-&O+86i7 znUiKqsJT48Fvs-GmMIWLadeg?kbZR$ zw_AaLeBr5}6@k$H*!c1O`B|J`m!eDV>HX7F=^oddIn3~ak&H2ewO>W&)-m-o8DX(^ z0qNP3UQv!W#@3Re-m#Q3e?PyZe?Px0^Wsh5LAeTP>!UYCL4w*~^YbU1MM9 z>qEbY^TyFLZWUFQNX^XXmkkix@s>(! zy&`0}TX+Yk8+g!&=FLM0+jQ~JHAQQ>tq>-+IE#c398vfgF7`J=YybO7CE7KL%Cdjy zJ}T#Uxx!AR?jX-YiV7slDR_^SOush26K`v>z%y>puKpb(Ssyw%%r2)+-#h#pi7HyV zDL6C;H@*{Hulca*b|UDLATM7Gjb0|X8x3tFllgHR%t(vm^6QU#f|o`f;jQ`zee#F1 z^tlHFz%H@>iG&y^soNXiY%!|mZ%xK;v?^n1nH&c8x2Dw3uMn?1YI-zR<($ueLGNU? z{e;-(eszjCq>)m-iP+nxXBo9Y*|8p$`gEATrQ@B`(MX)23!}8ilw`@wJi76)?Q;D1 zq(P=#HZCS8IeS3${2Kn_P=takAqW2R&(h-Gs$KP82CaP~C6$H)2fBosI}xvXAqP@4 ztJpo0Ef`a8&n_?lfRe6}7ao#A1yZAeQK=Rj*m9>itXG|-HbSUYXXkbi2FmqMV$#cc zgx2rBh&-mBrJbePUw?9&)={+95Ba4R zR(Y`W-fl z%8(JkYC3JR`*wY0<@f^9$?hEB)uEu^Xw~_vjDp3aWU$f8sglFoQay|t%5wz~2}^_5N1LP)w9eQv8x zs_?~kO=CiW6ktpEm!5sB`_rxI$u@JM3$DHa)-kQ=C`h+E5d<%)!Kz&*KCUhOM_gQj z`7C-+oe19}vV`1?pX1+}vgx0o|BJzY{|o=Iau!q495jbR(WgFcs=jGWn(nfwjcY41 zDJ>M*{`!7_J1MBiUm+@K1tc3MHnAiT=f00xyE@d%Bdc|<74>Br42Ox`U47>VHKF(= zc21*>@Q6XRO;|^Zm41!6dg?2*n2xwk=lix-Frjq9y#ZK&Tu1)o_iz zv@lJHBeifdJzrnCyw~cb zMpZ&wGi>YRf{ln~_dDBoE?9@YRMBFSC8(kG_Tc~O?S<88bAqH|+zy-Xg+LFI$?p}w zs|OtHxc~s1AoBSL@detBA}y0O7qFj2?tZXkQ2jNxpu_kp)$SgbeQLMvG)b`lf znR*YttNuQ|5tZ~I(EAhzpQuTqY4J88A5B>6e+#2dFka){`|pIMxRB!{bR(_Y2@&}@ zdiPNxnxfiM{g7!KN=}u&Wcj%^`M|H#mundoSU`%e#+3*aCeKGA(YG*shMo@OY8u zq*0reaoT+Nub*|j5vSlIgRNj2sxtl%I|~okuU?@)F724}uC2k)UiYiPUWh>C`>j*S zbID`NMln=X4-t6d`1T$egvww_gt+p!;cXY`A$}K*Cro0=AL1ZwI-3|gK4p%rcaZY! z@zOb8we{DJYIAISYlAUG_~Tix%S9MVF4yKP+eg5hBr6<~JL9To;_q`h;Tq2Ke~mtaVr)Yq(zWP#atD@|ExtY`W?o=e<{oO1VS{w;j_HubuTrTAaPI}6{H^HvF`O$`y z*47B?(P=@bij^CZ<}es>H&Fu&9=3$oy1Xv<6vg;Efm)R}PO9kUKXL&q_R;&g z8`jcHu8`KNFy5CAzGqyYBWeFhD`MV5yM@KneA!ZYP=#Szkfzgxz1{ZzsQSvVHrr+E z;>F#qK#LRHwUokJv_Ojn3r=u~yF;(3%ge4a0^Dtbva5b?kNGzLYIk%*&EjoU zlP~~aFHMuYd%WS>d?~_pwf>6J~6qSBLX&N)eLZ5)%8ZVlrxy$9ydJ=UbXy3-pwYs z^ZGV7ht2FnUdG)P{9(L5bq+9PKH@|A6k!oa?}>2Q%2uzwob!(68lmOQc+|+!jwB~CEcNVr4J1n_J8&v+#49MPa|QEG*`_?!{fCqH{l?-71tH)86Y+~r z^bflHUkkr(ZRsc)y?TFDFzU0ny4X<_Io`Utu^)Jn@1wudwRW*}%}+|7i&n*913vq3 zLex@Q>3Z~<2T;}yJT^BWZ>EH*hCTY@Vhef@Jol8WijSph7vYqA)+bD|z|`9#LtZ!0 z;aKfTKun}0;z9re``=Hc2J=i-m`A4o{5klK+rDL&BqQzA0CQ~blb);L@?zcM&Bn^E zMOfh?AOkT*ms#Gj|8z3u@`Ge^v|Ypgs|6ULd~4(OnM&O+?YK6cZKy!A_@8`zr@2i1 ziqFGySI!iha*YoNTHi5Rp3&WQw6B;b#)^agIl+$p{)vUFk6&1?*UHjca+Ao5sq!AU!{9kwd$haY7rFtOmT}+B zG#(iYqC&QgJ}svBvK)lyuLR2k4JtiLp=An+uObZj!;+ufddjCna2qKaU{{`$D65po zz)Vmz`>BroEnX+1+c^&CBmE9#o5_IsBX7ug0#I-x^Lb;1(=hRr%|n&S+Rxp{e^y2o zQf!GyorHG0fqeSBo0fsSVBr_}UNuI^`;42bMgZ`2}jEWa#?yYxqpUPhL9ts7fh zCm6NEkG^#dxNn(N!h?Q6@i1uuQf10q3mA~gYhb^Y*7|;{d3E?;t+Vi(3X-PdZ{}28 zg!@OQpQDo0xP1$gzKOr{ZKg@JY*`|LrCMIb)|{Ivgp%ownXYCgieslGFS0ygO7`Pi zs;#XzioL`7$sZKPgQ&AzfA#}J$s9Q}xX9%VNifGKWWdK-73>uE(W;+$v5EZ_W4k9s z@QRc(LP}!jRoUzxhx4JTJPQgAnb<8x2m9ni6NB6Q-JCvc`<>_SkKsYxh;#mF@Py1j z{cB;!&ex#zTdrC*LgTfAIUXCVoZzA!&oM7i;|s;_IPon@CSxs@OF4!<=z@{CCZ*X- zcD6R6wC3#9I$ZiZv@2=Z^3}y-G(e+;j2qp^O+ylGA%CO8TU%f#*!P;ptS0}TQx|A< z-|Btzt);nYvKozLy)3N__#$Gki4K@5CL+tc7a6<^y(^#SPn2bEeKmY|@iReEdkXF? zYO8Sc)u_6{r#Dpi?J%=P^=8X+03C!f0a&fbNuLy84uWb;;kHL*ohwL@OZ_BjY>)VA zko;usCD#j@Xcf|SqF;kSiyW8V|0scLTKl$mnunpYLx=i@U=(Pf10s3;e`CD^PrD*F()Gwd3Y(mx*9=x!UF`F7FXU8A@1q@sAizvL6Ak8qwkp zBJ1{DfDh&_p7e92qc5`+b@7(1+o(!?BxU4qj17WE1IQKDN6kEr;<9R#`aO@x*6y2~ z9N+YP#9vhzP_d#ACISD!Yp8~pQ7IC#utY3;_0W*X%Jv?T3v}q~81OXO0O5l(Pg3as z+!RXZk(2?hS>pI!JABqzRrU->>=#qVs{V?5U+OTyz!jI19-KBb$hm5STrEYW)?h6f zz04#&VYs z4B>}dW``BJLy?~ZghZAl_dz;DK~iE;Mm&zgbLO6HK;Zqy6lK26l&Qy=nIKZ{*VMI{ zH$H@$)9Jqrwl2(r=Xn#)>MZ1U%$N3mHvqm1Axdc8e+_RFQCVEXJJyT?P3 zOiM36;Er70%qKlfHL#JSJ6v-(b?6WEyFHe@JjBh&Jy-A;?Y-bed892!<#}7A_Q%kd zTHNT$y$QnVmc&ZeoqiLptkAUL-W^O4W)Kx+qpe?RJWBP z9=sCYaCd?OnY#VHAzs0QP?0vw)JxmHpIPO_dg%25r(Fc|3tDA|5$dP&JZ@lWVA`=8 zeZ=%>W|Bqi(yjkRZ@>J(vA;*;PT7P0J4@q^A_nGo;=0yppJ5sIchNMp{8wFxZ|l}H z>z6eH-V-qmf84+$Zx@JMQS>}#Y0EZg(VNWttvq6ZJ7b+3N$>VL=9goLp^e6?0i&bid6?~PzZDdN-)_LrO( zjW#;|6y7Mz7COh6+q=3!*J<-H>b;V{kEKb^QkU@M2JzK@ zAbrg$M6LttLM+)5NwmGX^`Ug*Phv$wVe%{8RPi3-^}p6?#fN077uUWprk^nTc%a{e z=9Z+$rb=yJdLQs#Xm<@ca%Oed9}nI^T*Jcd0^{P@Co+409qpfw21lH)g5DgI#ft8t z9WFRHLE`l#GN&ocY~}!Vt0s3ly;Z`!tD{imya~qKNZJv~_f9purLQNZT;QioQ4Js% zM>tn@-|pbKF5@NE9kK@}gb8eY4!8)EMnApz#9c4iWNaK*Yr2jw5p}$pZYO{WAvMC( zc~p$Ec9?2#s^_A`FE6dINj$8V1bQ1`olz2y<4KKR6q$y?j>U1U-;(=Y{F;K(a}H|P z(WZ5G%@0Uq){9T3tx>9vTM}9(h=|x0{mc>WA+?UqQ^k50t~+}&utkIQ7(gBvq1I{5%C-u;wqkg>s~ z&8)X571A;$d|f?fHl?e4k+f`A2u9t3I`!{GMr^JpCKbuCaXUCZAmzcIF~qHrk)Xna zjcrbENUF?#UPK_r$`m;I1KdmV*82>~tc8jxkW5Za*&+)@4K*?nP@gsl(mAjwPY-*G zufHkzvDY);I#xKT^F04csSh^e%PMoJW`pJ&?vRcjF)5K335v6_2&|6d}@e9%9Q#bd?&?r1xu3AqXA8>kB zm5lh-BfVFuA|dzqCF_P|O>}K!enLG-`$r}&#u?z(eraLz-n?2|wl)0w02VfunBqsM zz+iHPW?K9Vc9Prlc1a;~zFn9WOn?8;1C=2=V>~(Q{8$RF+!xsDI*hsm z9lL}=9f+{dgsshz-v>yO$b2@QNAD}-dz5p}VEL}|!2Bbq3X^VYtcwbMY}%YKnq4_( z4pt!pN*Lhod!Lk=-aphk{v9arj`aL0)Twm~G)rSy$RVDtQ~z11sHdNZ5;f<~*OP|r zu<}j-1tP$w|-}xxxwdSo@xQUb2u+#deLu6 z(hYp!NdCyUiCEQ{7o?xotvKQ;LF*mG#QVWo0Ah_-@~wS!tT95*d4|eSKPB=>A0BvD zFb1?>g`2j&5MQTJR5layAtz*_%&SG{4pDs6t>eVPY! zHO{v;LCUfxu5<3=6k`PwO}x*Fs=vuEP#)NtN|rj7{t5$5OWWvESK)U zp`@IrO^Gt-O8ktV?YpoA_qE#UeE%8%*d8vtAd%`$2lo%kH5{kf6dDAWV1G@hp-;c~ zIvwjWrhj*dCUG+c2x(GiEi9@Q2;OYTP|qQ#xoZ?sID=Iu;*h)#BBSE_QcxjE%dmDJKf-W{hfU zgUs6*FXH*u2u>2>w%$?-163 z)a^he6Ae?*6N|_drX?v}clGo-F`u3s`O8bfYmBWk3ho1K7kxgCzO&rWwW-#=q)jFM zhWAkK;r5d`8t=wmOd%tKgKvqHWQckWH$dhc3gI1&NhuQ~^r5RKKVwpoV!dQH$Da}l zi^EiLy2G%#Z`vip24S^qmmSwE6TK%?C{gu}oliD9ask;*LK8oE=1m;qYp^G?~XaHPtI#WJKC;S0W|oIn|a{H(#Nuz)Dm)3GfA;Kq?@)odP~lM<1MWo zk2am-TMo;pF^mE9FLl7B>)}Vh$;s)i(@A?E#>FYt#8jC0NT=%8!ZE$&d6dkHN7{xj z(ZtV;svSOW>x>5x8!a1S7afFAI6T#_zS?)u@4Nr!y{K4LeVMff_B7bZ=ZQ!_$!m03 zT{IHxEa`4u^WHoGGj9z%64d6-w`);zT-{5=+H!{{@UEw2R;AXW5S&14A_{+u)Jv8s zEFkRW(Y@rI?FV6$_@`qd}=cJ#a@oZI8=54=#CbER8sG~-EG zSI(mVHUeVBz1{74Ga=L1^1W#V(Nq3#ldgtZAC1m4w8|9E%kOUrS>=_U7mH-qTpye) zULh|pl`V|d{{Fv!-`r!8j=h?tTuF1y@V@cF09Mb>l7O5-#xZ{IFh};3q!?DOmhKmi zV)wL;SAztwxy0PaBl)OS@=K3;uM$57Sgth`GWysg{q0Amhf)#75$sro$UO#F-eMeb z7&PuYgx~D(kRN%cmFyOh7%I)AjHlb~GO5;k$hpi;G5PFvLB&xUyGPDFw%MMdRUe?f z+l|w=^17FCB5pX2u++iP27}ZE>+pY8~fI7mp#jkVf50ecD>*pJM1lK)@Q+3z$E)KgGkJSamgMg>)0clueU#QoMbFJE^1; z@i^cTp^_u?ecg@Goy?qH-ClHVWS#M+Vql0?uSUG9KCg+*Cx00fBTc6V&rMB%ZkquI zzC*=8m@pNhi^%(AG}8iZ+SlN*gHlKscD+0RDc zhtl6cwO;2x@+{v?UYeL>A|#9i30U(H&}>BMTl(a^m^rM~IBONMz*M^NBHm~HuvF|2 z2YCf(fQot?8{Ux)I#O{xzQBJ1#gduSm00K4P8`6(3?`<`efO>0US+oZWuMQt7-nYr z>nVj!eg8F9JaW?Bu&j8tqvq)Ey-It*EqyyjQ7bqtC5v7n8Jp(rZR_4~+`hi?iMNm6 z8VLObAA$Htr^wbdrG6f2{Vpgn6w? z=&<^ZX6269H+0s)uov@d*l4o#Xu)leK_i7!@D0LO2&wC>5-S}R1*l&}KaE`T$glGHaG$0_Jb`R^PP#;IR zOf7_SqNs=1?}A{W|5$>BM+;cPpi*L!MVwmxgdbxP9gY8*1oA6;g6HNBQ4nAg1c-ka zru_x|NicP5bUecwSY3+mY8N8m-`-fh+Qb5uJOhIM0y>fT?7`$@`jU}@N7(*PS+q$U zUsF7j7bAR4%C&;7B0zP?4{3|3B`nCG`f8(S8EF7jft`MMTsY5rY^!Rd}Eqv0!rW zfgtX-9FLmM8qx+3n$r`4Z)2OhA>ur%L)+qw3z+sLY|*6$EcC>enG6NF z)|TGyE6+IxIO_$k`4K&0>7;JYbHF;7(=dx8rJLSPJlz|{@Kd*%GRBX-PV(joud1e* zCCoDN{+g-tRSSX}pKU*`XUSu4QuR0EM0!(8oMWk9WV<9tHyHAB0JdtMEZ=wdA|DVr zy3Z+I=W`GXXDPO+7d;OvdiS&#pUvA#6yr>{So9s?4BhJ_i zE?Q?Wg%pqvhW^v|cYpx;C)=Dc`k{0jmwG>HUib&j#^g(xbi8{}CTvZwbvhxqXy0Vd zvh|DF!6-?tN@a`32I#}CC>c$rB z-PY;-VUb}S;d)qy%qPc_*KvaMOSB9pEztvmyS09LS8J4|LDeg1NZ{Yg!@pxXb5xdj z<}<}JEIDvd+}1B&`L^)Rw$7-J&OHj!7ue2nN2DVUXp-?IZ9NJDR!)Vcspx%VYm=)e zbBh>92!z`&;}}MABiJ!cAc#PU>7?u!Rpwdp_iN4XpKJInC5d^rQCfTUJY~^)mL{FOzYaBW4}l{5nJXW0ja82yr| z%g8II167~BKorj;c>Ui*vht|?*ha>h2%0c^Sq(z`h&3QN!*u39Lo9)bdSi#y^v@qj@yN(8eSc9iU<>Ou7yfuK{AxqW;3y`%Tsmb(&lxtx zgrz}M_!wB}?0Rb;8T+2?@|wWy_QSwv%sr#@S^+FxUD5c3WXPE-1p(C^NP+yl5^G)* zX2DQc$RNBUC}RuM<0t=y9>_9u*7%8qpwH@}w1HiGG54M%Yim(kD?CP?@6*h~fQ-mn zoR;_X-L=jq7XsBdBLNIQKn|wiQP;u~TB(W(&X}|_w%V}*-%5tGEe6LA1vxsa>u-C@QJOUF4~i7u8^dEc}JSWbXe1g_n83-x3n`uxse|wb7gV^vb`T+>5H{ zdA#wNb4))nObowL+f0snAGTEX&Y3Zv`SbdC2bh$#4w}|W-}~0RkpW_f!)>x)oj?01 z+1bNQwkLa>D6=vJNC%puR7E9gFPDGYy{BrvV<2C$?5q01&3!%UBj5+cENu=w3;iP0iWeZcMA;}=zU zc4`Ac(b!`?%nPeScV35~m%YpFMz$%$DS={2er>xSMpEOQhY~+_T2NY=Q?id9a>RH zHRXS`SH_xs6BDUnDpKPaML|Y?uyM!&guZ=GamSN!A1z5hkU8 z=824_-;@44lt{P>T6ct{t+eTj6v8yj)qMPDQSXJIy$@Gr|1%e0*QUqvj{qWfy(B}x z?;)r%tLhW2mE6LW-k*17N>2XulZ}s$+VRp6lwerTPjgGjQ1}-G$>0tA-`i!q>ccY{ zYRlh;PEzDVLY~#XSHP{9O^_jJM=h)BoqaO1Qv-IV zems4Zryk|q)B_gaQ`Li~uBaMxuaBU|!)q!}5_u5|8`-sf*sY+HEY44arJ?xcj492g zsrWE*=Mm>94)e^RceXfsM^eBwhZob;JMd^9jFKx_##`z*IL!h}4Kt5%Cyv=9CE^bs z&z0@irqik%mm2;pi7H`AqDdI?lXET!J2N~Mr=nS0P=J^1{*o*kx`Glqjffa{ z3v~+Kg#WnUrMel&nNiG#KpM?O!%0&9;r=@;5$|%GMnUGmy&bN4CZ!a<%sZ2(j~KHJ zdYOg+vGfr;kY*blYk9QH+?y8GKPzE;g-K(=Yt6L9kv+!VdUKiX=8BdzedH^RGq5fk zw2g7rlQSE=WYaR`F@Ww$lPt8t)7L)M5KAz}* z^||wxD~HIY$Xzy~D1&+=+fEUwh4{_K58N$Ed)FLLZNHAp*WzupH+~P; z`{xRqqdg%aWv#fZ7PR>h{@gI0&%?~5C^!nU{h$n$Gva4y(}tvutkA#;up3BQVAwr( zqh(dbxlT^P5}wwXth{BgZ_BO{xcEjusa zM2i;|`jPplY8R9qfAy9a`m+2KIC_LEwn{Bwv=tfl{Hk=&TJS!kG=K7#FLuWm)I!VT zok(Fd)FW2x;D+Jx%TZGW=qve}g`B1wXaKRUU|pq<2Go&w|ESSTnsjsqwPoK_-y=!B zW>IfOtmC!`3NI%n^JQRIV1B4O;@D#7?f0=FXOJ_xrmR&U(sLswBw5F~NID~!k2wtw zNMehZrz}=@ud6^M(?`;bQXvFvKM}~Nq1G}KNu?fZ>+6i#(DDfB*?jVsBr3sB%I26a z$L9!BX;$1>)BcTNj_j@=W zQW2Y!SX`a$oG_J>J-KKgzR4Sf!fX=WA=aB%^7nQ!;>hQh5HlZ`dIK9wmVQB9dv5k^ zdyH)buc&7wSB7Eh#7|LBtm1jUMRa|~#A$~Csbyzo+WkL=uYOKjSw_|Asf^8L9sP<6 zm%%?;(ljSgaqv!(zgWiig1A_-d|nRyDfGh!_TB%$sA+Y6@}=(X_5e(+P|FbNg-*82 zjVqxJTfym{tA5;zm|{zZW=C>JXL63pkNB&8Qs5JT6~2Ob$I>5QACj?LnuLCsPJYZH|%5K&go z%1H)E@g<@*RSE%O9j9kxjuJP6vS9A(wH3mirfDlJ$KMTt-D5of{+~?#) zGy|3P5_yzYgPKa{;JIUrE#r6!Xm0DiJ>ObFjjMGD|SZuysy2)^HFlm>kKGID|rIF zqImD=md5h6!lU;Eb}RrX zBXMQ#w%_&ctmZmy*+d5HG%66XkEBr$|CM#b+Q39tc|QLn#KcxMH&Sqd&ybP2YWZxo z%8$i~n*8@qp};{Og`ooADcUt8-D`Oe`$-nEx+t_2N^i#V!hGjmxZM|?wn z8=FD1IYu-z1qDa++5@tuxU2ZCO-p{*3Y71dgDl{u1=U+B+9V?tXS7-0>2}-z~B$v@l6~9@Pe}b+FhuE$+kV2_h?0a@_U3Ikk zv=LldM~RMm?-?8S#nZ(==i#}e7kL+?y&CWnNTY`TRd9E+K#z`h&I0|g4*0dX_*}&z zW}v$zLbJ1@LYY*(=DXq*swP zd~+e2t5^)$%RXA4*61?t#*c1v5r#^0E8Q{|K8o`6HNmn%r?Ct3#)0~jtzzBK(X<+2 z*YZs}AB5&{ z`d_@CI6E{8Ly!fuD~-`_udcr_TY_0WUmm>#_3YS|ez$4wI1OhGZx!>hxWugR*7G^u zI6A&LC2zj%JQ+?0c3uX%-G_P5C8K`-RdjG-kH>+=#Ytt9mK^GgyjwIspNFgv3Er>Z zsv94FXXEie1~CeZA_+rHRzKDEEgbddy1Y4gC4W?AVE5>h`D26puQE=f6{g@0wru=v zyc>%9Y(L&h`Pg&pxT9YL*t!6U?uvY9BN?bN7JH^`PHNic%t4WM25W+Xy<*w}tWlb_Y;&LC4hjuVOL2{qoc?OXrG_oTQKxmq?C zSpCukL1^dsRy}7F5Mi8wuTm)aY4;aNt~1$9pi6K(J@R@tx(Js$W^;!f+WtXwd>HT+ z7BWPPeBjI&kuE$XWVz=9pmjh&%lP$ECUHu)@ zOV&E(Va-6DE+;zXb(?jZCh1ICZ4`b9E<#5ba_{2#{${=KwdJ2&k-WY%0rWwH;n7}X z+R@Nad3|&`8-w2nz%eB|pOD?~9k-w5lb3IB0yE5|mzof?G^Gxh!L@&}_rIUkh%C_* zi#JQ$Kt1r88LjK|Wwx;Zm2p)OG;R2ZheZcn<|!JzrLaa!((t$}y_t2?(bg%2+KmwZ zK8l`In>1vTDkNx`NkNcagZOw=iRazs(D!5b_v<6C+po5PNL!PsZCz-b_}7O@hE+e; z44@Hpl+iaPk$bT@+&7X9FyzlB72XO!m|ODq!Ab2A zdtdHYM@wPek*5vW1$Tt_TmY~aQE#gxkK&(vU;z%&ZP53EG_DW2{oX|s00;sznIj1rmjf_&%7cf4E=zPz#NpxE`Y?%HQULd<6oqYZ~LQnVpK zm^4pG`Doqd1J~%Fjve#UkZODFq7U~E@WZE?;$lIHAVGo;ooLqY7l8zuv~Xj7dr=K9CPxl0u4-MBmo?CP~YK+x5N*(U0I}8D64h z&zsMq2wIW1+C=PYL_K08=EMaTJqdOTyWE^kO=^ofVvNx{AT2BfJJv4|DUP%~tK|uF$RYYe@QH4q zM>AzVn*o!J{%f)+d{eh^s-;B^md5P*YBCde2T)LLbUIn;E*jFNR*e)1rOt-yZ6{*To!7LWqe5g-oxGT)c`FF7$nl^=6O%GB*!?>GF@q=?kzSV z6bGr5Xnm%HK&B?!|59Zq#!TQa4I!D-0SEb&iE22ATz{wOlr7pZty$KBW{O_1d>-ik z(ycXWmuAt3xcPG+V$u{u7<}H>eJdhH#ARD=>uBv-=jICb7v4WS6>TwK4Kr)l(SAbk zHPq^ytS=I)!(C7LX4?Y2PF9yVHEbn3-@pJY(Z6uBu;gJ+N6vv8yNfDYe1ES)OOF+J zlZx7I`_@gIn6ktdNCQ0R(j+qL?hdP3{ItQ~+VhL^{(tIr%=>BvALz<7&ft~-#<{0Q z1IA#Je%U^s+2K%RcJWLyhG##e{P)p3Zs~t|vS^6&=6shjdO_->k~?`TBF+C7U6_3c zFllCoj-GL{rKRr494c)JK4+asS(E*}(0w#G?8zBuHZHtJi%d*HWo*MrZe5QGO}Js# zH`wikr6fw0cG$G!e;BoN7!mCc`^mu4Ikw#+X8Zc$sr1at0;%Vt|`_Hmq7Q=-_-H|M;PjGZ?-j}+Pvc_{AM6qGwNJ$TI5A#n1Y zKs)nP4=w-c-J({CYtR320latNOLX5lRDUz|M+H-ow)rZ;1)1`An2czvx8+q_PTY)7 zM*0%HAxwegJgIfD$90}JCF0H#0cIn3_7L$_J$TRZIDTt2iAU2mZ(2Kxy^}Y4cU38y z;-(r_-AnEs!F+AFzEb;0E&B?oe>e4E7*Fz1r2JuAuTY`mL;An}i9Z95a(nL1E3=K~ z`1pTNiSi24fiA)!=MiK2E%5!Ad+k>+Czq5s5Af%WlecA0)VGv${DmJ&Gi=*^;A+Mmd3elyn$ z&0c0l{XS7#5yK@;O?r_k*1T3>(CGUPz57>z9rQo`K}iWQg|cOSprn*0!E8WzAYX5m zEMXRn3O~(S8?K{>l%d>JlyuyoM9ElpuHC~w^i5N&nDoDmH#OsJqXj+Ueojlpd)Sv- z=(jo6oZH(rKY?9zUM`c$n@(p-3(-^aQ+Da~2Y zje}H-($&iQdJ4{>HwGvtVyC3^s`@1D+~VVJLHVz;f6D&1JYbRHv0Q}oPZ1F}7fTXd z0hvvH-k74-hE^1i1@1FxY{E=%(}_;B=!Yywy3pU*mDAB< zM2Yof?gDS?szTf>RrHE+1V&vvqaAX;%73YWA!*mK*PZ3`Akf(N@5A4@6^ZioyzZVn zM>eDH41S3ScVEglj^F43+kXeMUR2Esd;R);bi7+twDr-r@W<|Kxp8Q1N}R#=pBp`9 z%3~?@wvha*s~zd4v2PAZDksL{eG8w4n_olKa_or>=uy^KN^@=mZ>#YwkPON2)A;jn z)!Vxx7<~0lM9oOkn&&mQiXxP}vAQVfW8`T-iS*$2?bf~LgqIv>W7wAUZ73{#geCYB zrpGS>0q`;uT~uiUJw!)M@Q07ep-u9TCVzqHVPVkw>0e@8E1d48A+`SW&jfxP^;mSn z-v7xBr_;db{i2*k2H#wVnisz`t>zL}#3Y-$bw;Qrl3?kI0PbDZHS;bp6W7Jg%XBZ`L zLPA1{x)X(YEt_N5d7$~~6JJpK81dw6+7>C;LWdFQ4Ex5Nd-}>ZeP3+?cn*PR(dvE6 zpVNdR8hV+L7v0Hu?=Bju=V68=p7-C67FrnetdW#4WpOVsRq+~RN=iIqrc@p+G&`?$ zV)1T75@;G~O#f8daqI5PO(jnYwZ(MPU-*6LFNUmPy3?@(W? zq+h9F+7EYjNzw;$X$0`(j*lU}|Le(pIYK_hO3s?BzTzvg4m-zdt=chl%kyr&;mAt& zGefmy%kPM1p_(>9StDT&-f*`^(YI6Tr@OvuGUthQv%fXGUSD-Fi9`~Q)m;4K#oI6i`5*0P<{nv@_T#iLcS|UrSGIg z3oBRI*DY69M&t}AYkaVJRs9XvZxJ!_6<|{nja-oX+s1+k6eenF1Kuw!&ST4|*y~Q1 zqn-2S%}PT)T%CwonRoq2T%PfgEg|9d`Yg$rz1h-bS>(`e>XlC<02J59A^`#)QP=c( z2|TwR_*B4{6&Lle0LqYw7O6p5Et4LxMFH?`EzXxyW|HcMB*7=xa|D0Z0gjKW450@8 zNB3mN92lD`*NOnIH5I_9h==FlCHy2FkW`cxvBrq(#=?8ep^ECOlw)Zlx&P%Wqol!& z9dIOq5qK@F;jS^yXIU-3-@HMUk)ZsA^k3#;e+!(Dl1h$$ihbcF9Ah%VRwVH`O97aQ8}Np3-!B7l}X0_O1Ok!`^MGW`xn{OAmZWSmbNl3 zT0F`cA5aJJfE0>bT8}Xvd`u#Bs#nMR69%2Z>hN@D!bqXUi>vd$;vJ z`YB8tSN+P}n!LZtko*lhxQ9{Pbm3TDQYaj0k}7oeAKTNVO+Tc()6H(*U*elR7$${U z{59L3f154tv%RZ%8^%^`wn}rHP9@(S#W8Ub6%fkq(OEi>@a#?l!LK@HPNxV*1`TY- zn7pqLkJP#Q#)=u$cs*I(0>Y2o!BT50IPx0BCNWom6?6ONYEP}wn9D1Ra~3x*&iX8H zq?DaWfF=KPljL$wT z$vknRSKe6}FD6BIm4g}d>JYp0ogpA?8b0bhj-n}2h6jYEjzre~Q`!AS!R_N;^+Xru zgL8xKS*z4&Tj122_U*C*%Pk+71Kf}s9OjPU@6u4H9%bFV>+`+2 z9kc-JF$Qzz zeLnHO=3muyT9h6swf=|%ziPIjGx@gH9^bj`1lH8Jv4{2SMfvA`+n}z0DLa01LtN-c zIWYS$%|>4*djQrn)g3nK7F?<{xYe|=cB;WGCO!uQ3XUo|w7uZ?h($2sGKihZAv@g5 z0o}2foF+B~n1{wl#HwPoxW%h(Y`UuV_bNeyVMP}ol9D8&eF*gg>8vLn-1OCtN&E4w z9if?+DtF%1T2^C9=-E@~4eeBd*5|vzqSycQlVch0W?nBTYl9)+;`{f6`9ke$BZJFegVSO6&KI$V zH1ifu{)ezhN(dO~@6qwYxyJs?_3XaNZAeeqlDR28?p1EMp*@RMJdgig#-<4sxsTZe zF>#$Jk6GQ@WUJa7?#jnFIPINuDf*0Hh z>u6bWvl#Yax%z@d{!NA*2p;{AB-!OD1Z6|WHs=x5Ipfb4>Ky0);xQhQ;a}X$of9;Dh{yP!E&i5RfL7z30&VZN5AI@?|q z9U6#nn(%o_v&DVg_QU|Y38er$ePtabe_RZ?2%Mx|xwZjln{24Se7yE~;sQt1|H8FJ`uB!?cl zVI+s{xZ`)ebMLup@z<=yTEBO{v7f#7^X&a}bt0+5blrWhA02nMJkOr%^}m&Dm4V;NVm9?@a;9{*qba4x~#R{<-{wKsCT||o> zM*lAtK!8&aelxaIdOtM#9I|#DMf@qvWEs0E-(*x3_C@sAaN^nUL+L?JzqbzIFj1a7 z>hw;Yx_k`O+YK)O&t(!hYmm3L_i=w_(C4|3a(l@&$6CO(kO^}Pu|Bud!Mla-S5l>p z$|nLJ$8RQ%%7>Z0TPY2tmQf*((urrUv&Pm$MY%(RhgUo=-?^USvL=Li<;Vrr^B+!9 z1CfYJwI5xe*Wv>imTbd1bKHm@_v6B^)3Ox_U6AayfHY`lopt}{287`Y~H0Zmj3lB$ZT4*5i)V{BJw{BU?2*$jDjM_%xwyO$>l(l#eFRX?1?yM`+T0wIqf&sQ$SQE%jMSL|oEd=&S2I%_MADl$92 zRao@Hg0~Z?{zTIRv+ZXrV5K)owMB&h+dSVb6AYkpMlQCrzE{!g3AgxS0$=?wyd_Lce(dl! zC7@vSLu~DrUz=v=_M?wY=%STD`*9O3_cBS_be|D$9%46D_y;|h7~LVkFT7#ZZ2 zzJHWTiEw0C(n9tlZp1g6<6_=Qb#6x!pjnAPHif--9m3;PF8xd8SFc208BZW70g-P7 z(qFjmfmmairZdOgkqyZQ()T0oUj(;_>kyAyFOD@?JUSk!J3d)#SdlGxu!gFurROG4 z;YAPo>PBLrYL3M!3m%Fi<#$XVs%?pfK1T1I8UsYd9a0pj>DOwL@d9Ot935l=hGrz7 zEeO#FC##Rc2$J=R@D2_k)Jnyd5v}@{pK%Vk zjNI=y+z?Q{a)r+ey=h7F;W*~~5N24#=(El~;tIZ#CHbB>ZC8@@f;_#Nu5W^rr_k*( z_}bs?*Qxevn*UY{RGKI!lag7tZ1Hu#=bhrlQYBWhc<3ax#z4hW;k?f1{+G$bLMETz zQvZ({?d5^jln+<3`zur~SzVc#Q+O9u^7nYux)0}}Q^J+$;oJHTp$|)oKk`RLc(;&5 z2*Oauy@Pu>s-fmCx)h^AKsDFTED;VJg|;YJ+t!;jft3PnrM=i{LndAXwi!qnZ&^Hn z_-DN+aalJqIOZ?pKb@$f7p zg&mv77hosh9zp$`Uy*sq?A*cC1};fFuBw?h!Q_B3K-KsEB0>9C`2SIr2%sn9@5BGV z5{Jk61WCDdhe>8N6iT%~61)p9QR6~Fq>k(~Tj(f<7EXN=4JzwAE3K80n+}B_bH=_^ zu2X$~Y?YyY8SG;3mAHDHKTu>kDbb|SUZ-DXz%h${j6;HkBh;a1?QfILmS_^{q{`819)QPPAnjCR?s6I<_s2Z2XW_ z-Yqlg_6cO7>tzIC%Pe}XJGr7K6Q@ZSWZ%V9|pT9O-dliq!4ABN%V>CyaY_@4^xUjjf@sP&(wd5+7_fxL(^g4KQ*8WtS{ z?47kCSQDP}F%c1}m&*wyvESB_&mWs5Pj{V0wHDX`RBGf{wIM?3^rpj(Mat`vnaAsk z42lDVc|S}=IBAWY7;f{N(i*=sO0l&AFh!g*dBcYNfMyDWn0B^KVNBfoQM(5#n7Wm7 zX>$j-hC-NRV?8%+0)j$fXa*PoV(c?jkO5nR7gxUYd|y3W*z+BZM##w#kw;-8GJ?th zbeY%j&*Pw$SqT4!U-6((K0xkgoG|$(=ON=rZZ5ql5h6Li#G05gg?9C$(vvHIl^j*? zYn%l*{c2WdWmd?r1>GIxVKs(ZzW8H$_$FtVAI*W6kJc0+CXRRdh?m#mT+#H;(dolB z*VU>2q)7gcne^xZ-@m&!gY-IRgK7CmD?*%aB7K4?5{jRNFqX#d9HIB2BR_9k`n zIZo-Ona4W!>5*gXAlgYvRfMs3Qt$L6alL&=j$>NRm$KCLAqGPsoB`v|^dB>db8Q2; z@(c4Y_=495U@`oZy3cxe!1f5SduR|qt-Sy9$k^(_*&0uh%>vH-`OI?rS4R$rF{m<} ztf7|`;>`3?M#O!>g%5y7Fw4vnt_zGG88E5b5aYoKB?w5xNz(1U`X&E z*cQ$OHBQ5*K-PlJG$)cUT|LH%f z(L_3g@ay$qR=6|4k)xU`_DY9Yf zgl%0U_z^lk4t3xd(~B!sO2JI_4Tv4vyNTrr$@@r3LM+_zHNEnSS5%A zEO)=@CfEBjSR0Y|=I>sFoh~~;X6uXM)nHxY>U(et)g?{s=7|OwqFWCSkRPyeGTJ0& z_5CafXmWaFnhV8k$X`xF6~tewqu>GJ=L@Un99P#PReCr4FMDUUvP>7{T9)!fG5g)B zr-9PHO>0G=FotKg?rM?DhJtfUcUHoRQMrXV#sL@9)aftccq=@E;+>=$foY4>yCEEm z#sVD@VA;frsE|X^Je^Ar?-&$wsbcg=uuSIvZ?0D^`y0NCpX6i!QL6S&U4pZ|_D%k+ zhqvFwH|OuWm&68)y(y|T#;|3ze;rXWPw$Vs>ZD>((g_%E2o?kZ36}Keko1PbXA3?K z#KGcQ$}G55{l39~^w(2wSGJ5^!#{nN7`|2qQ}WyYl35V2Uop&%Wq+LpF_7OTU?9JI> z`*=zkfrZ1soEwQkih0@$zF5?y&{Ix06#P@Y<0;jkqrt8>2&{ChaYp*s?(|lrm|ud| z?Mtzxsw)!bPhHqNR{19XFe-kph3Q}I1jt09@DD*x;xRGzp-U3R6~JvAh@B=5duqJf zMz3VPhH&+cMA5Doa^NPyu6Q~1#XFjv%zmp zr`_&@rZ`WnrZ`=zjcTX}!Cj(r=I(#!&N0lhb-y^;gGWp@Ie7ulM2&@k?YaM3); z@<_kl-d``+`ZfV*S@4gG4G>129jhG1YXl(f4>FkU-(m}Qsl8Ti5N>@hc$v0K(}`fQ zWR3!62W)SDi9a^9Jg#9<_4PUW!GZgZn@vML?R*#1K|Bv{jngIi!z~AKMwMZIqV5Io z_zHOVsg?X_PVi5;%Z7&!IQf&Kr+_}KJ6D3q6iN;&u1xEy#j|t9!MW&%AF~{+qaJd@ zJs$d~d;40yd|3V+B3ao9HoBc#=_LinU0r*V>xDRMO8n?KI;=)@PvR9Uv-Y;Zu=~^! z_bB=gdn47FBmdf6eZ9Ok_I#Xy3{}~36eZQ<_A1A2)cYM7K6Vxw^~G6cmnxr$CPI(p zb>mM4ke03xIK=GK(WE0H%Ex#mjD@aNE2_^@n`O3&U=5DQ z;lbXARCM=U3n_rdL6BWSHEq> ze(|x0F*hx0fhE_=A0jaN%bpW*U@xH3iz4{ zg?VOFoyn%HMlmC(GIi4m*}M4p2v5SzDNhhDrlD(tLii z;)LrTk^%kir{haijPTVWU5V2@ImnV16if0J(PsKo7a#5Oo${4^igTok$aH$+&-%mG zm9(9p_IunX%MHK##X*Eisqp?LkaxzP8o;+qXu2VD7Z8?cQ3PQnPL3_p`mI)O0MUKr zq`=RY;Z1~j>QX0)d5@jHzQlvdhM8@By2f+ArbR@FXU$idQdy&x{cO3`j5k#yO%GF2 zWOgKalze&K{qh4*d)>F!hTcvE(L@!q%4i8OAx^-s!J1_bs7gI!_h1bF+#l~7LfF#G zcB9ACz{FURID9FXup1d>2q2q9`21r@Owc|(v~Yapz)%47BJFv517tgFC#YwB;~DC-CdBj1w&NW$%uORK;YfhHub}5{^~uYR0I*zbP^jZ4VYHj9Wpwd(QouARU(j8OxMkD28c@O>G^U%)F8aFE{24U{fq~{ zlVaB5$~b30CVZq;8m<26_Sd%cTZ}Z3c1D!o1^)Ij7)2TSJ{qN@N`A{?lqg0M)Qw7% zgBy8?V&89>{p%gLXDm!Ys+>?d5ZTjYzaq>uC;n|Po< zOvvXm=jN<3WaHz<*)-(|`Xw>i(SC~CA$$XD7rFs*OvCT}0-JZt3`;8s?25WXk@^in z9L1^E90lwIY^0|3=6#uPver2_-tb9WEju-q_r{g{7uFGm01r7j)>dw-_%gf9C!zi_=bm=b#i1AD=Tm zfitCO)7Bn~x*l+2d1^1^XuF}c5l%*52E+YDPiKhf*U*OhWEzEuhzQ!VYAT8cR&pb@ zBw}GQ+`S7AUo$cO=MW&Z@fw0jlo58F{!`=0ly0A?nlwsXoZ)_l?#! z(L@3B4AWSbN*rPoH*6Xj*3Hc9Q(QP5KqjAUu0DBc7D5~{2_EB0H@?z1zs_0hFR1kB!yp#S*z{m0_0nZu>tFZ1C^_ejPI@9qq1zYKh6?UJhJ zNa#5i!Sd8$72HD3RVJR8#*_eLAN`|F&B36+-i}N`J*DwI+Q$U6_kcRi685W$9JihI zEJRMCwmy{_!~4IF6cp(`SBz12WlvYx2++IoaH~hxMVc3n`ZVw_9`pj^?axD%1PMR# zazIOjwkYjJpwexmdZXlepTEcDcxQ z7x3jN@1ENtmsjx?D`{0}_&0vD-3?ZTF&dd`g{;5swqfEt#QYOquN7PQPBtPUmn91F zvTB^0j@mv)`50xok`C8V4e0||tf~zw)%EqxRg;UtRi2n*rkVduW+?@o=xKWhGqP^P0Gn#_;*5Qkf;B&Dj z&vnfE#T&$#@jGZ_=C64S6K)aqZr_>WN6uuxDVS=rh;UNTX$qfTA#aWaAzY zTY%F;#1Frc5Jisxy-9{yTOk3Neh5#I)b$=)s%bN=Lji%;1(%+?WEGb#fj?k)gnz9C zIn8zJGh;Q}a{VutK2Zx`6$(v_Xy##BJ9cU0*-z1IbR!OO$83tHVnte}B`>S*3(`~< zlo}n@c~dSXC90-Vi}!wupXGw-?RE%I3;Cxag7NR25T)Yf#2jA6{dIkXXi8h$AII9_ z6)bPAa|)04hE3O<8LdWqSG)Cy%o1lUPlkE3wF84rBK`f>@9tG`Bu&K1BdmN&XH>j<~+GTw4$Qch0UE`L|k^><0{2V7gC@0ad8Ra&3qdsko0F5nZh`_lt@1wF8owk z%ygqST67oq^KZ(cvGac42t5cL91c%ezMrld*Ejtg5N;3davwcOI<9_muJJ=R;^(8{ ztov*uM%8SD3;t~9gqaYAY58=gHwkSz?mkXO-+@KGhgpB}zN9h1{*cIOmJ9b#S`Wiz zS|4vLh+8{5}6-O{wL zyl>YwwB$`)2u|(e2=DPjWJ3cTag?um2F+fEU;8pJQ}YFaff62 zlrC5lntFclBihX@?GWtRRQDdkm`FSAcf^Bb4C~!Y4#Yk!_r`6ZI&I69;;?b&uiEj= zh8@3pcqFVU4d}K+apudU-Q6qU*{Vh`@Oovo!P1vPxjs>5m<6W+U-qtkqCVfFDyL7w zS^%lyxI0u_ZnD!FGi&mc7LG>W2Bfg*R_vGV&-jY!ay$z>TszYR%2a9j+Ar7UH_#w% zBz(rSU+9#K6aecS$kueRW3WTn3S3YcEwR=p0e@D>VQ+2Re>(>?(k}Fi$h*k?Wc)rw zm|=IIb=siuiY!5o&E`|JXLi5#krTbg3uQL*pv43B`ZC*1%2tb@A7pGhw8l8-z*s7wH;4%1{P&E&NqdvHhvZC7xI4bPHiubPliVCF+L>!^qc;wMMnSDDEe97-LxsTQmDryHA|$l? zTI8_9a(Tbb>*R~16&xEFS9j4?K~VR~BygjraD_@k%`AdRZ9gBJZ{9gOZ(EI$6aP zckgE>irAs#KzmO2iL&Hj*F*F*+Cl3>HjMM-+`FA$yqyQ6`zzwOPs0=CSKMmB zI~ni?bC$Q>wiciY$pm|K8J5Yr=)1YfdZS0px+tm?Nmrn;!&a;fFkj0zN%ZL29C{9S z50$hTX{C(3{H@4pty@8*El3!xZ>O(hr{wiXX#il!4tA%!Y7mgK9SG+dVRX20_?s(a zCv4g^*0pK;D@IE66*LNFMOW+L?uJZ*%BQHs_1OF)@0N3?+Pve~AaQd_Uu==w&q(J1 zi~aBWm~02aW4i6ju9(uKb{>77O^Y0)krJ$IFEGj^V6Q40>Q$xWshhqBj`-y|rv?zB z{hRs1983WQVTIZ;!aq(8+lkT)xCn*FM1~BU8IZeThKSBJ4ze}+%D9)H5S#q924)`?sBNTC&>4xkaJ>_>jT}dZKn(PLsVaUI126kgdh*` z>+fz3C|r7$?Tc2l%>k&biGUQRxRDNffRJwQC-MkvFX;94R#cwal5QKHC3G zyxl#&m7Tb`n)xopavRdUAlN>q6iK{fxqK(Lrw98p(wI8IT0Toyv^-RFQWB9|M*ghT zZ2b#XxJ}H}k2r^#djbuiAUvtnhS&rW)0DJR8C2SI1bchpdz}#qL;848@o0s7NF8l4 zQl%RDnO}+1gF4zL`!nt8@$oCxV8RW9cZiOv$^m`DRT93<>eY816&qa=^Bw@Qep!AY@^ocD+x&Ku2$F>Rw0M`AWauorvJ-=0fUt` z9UY`}xm>`JV_iEaG}0@PO6(p-p_Gwoi5~f2Wy8l5YrgqwI2(VOEe|VVB9AH@R=bEk~{BH)|3)^FV5!@dx-f^+%i#(?eSk#i{?-5Jj-} ziy0qa3!eqYJGo6b=ei`8F%~*W1Ou!)vxbF61R3^Aec@;2fb;1Sk{}#`9l=4?9-)3h z$6?peq(1UZ%AE9Z6Z$h~0Y&KvbZP06s!tL3h)ph5G?Z;XTZ*vi6_Yc+|n5mrrt#=8aYVf+;IY)R#B3j%%H5d@F zV|Aun;!Uc!ru7fI2}Zb*;{1E0M)QQP&Z(_2j+-W}s(qHO+n$4VDTiqdr{>i+DeZBu zy(;s*h?DKfyv&)flh(p|!#>PO?{j(N()2uj_ht0RFL9zDmTL}2MJiv?x9_Ki8_vv0HBRyevpCxRzlsVV#+SQK2_i0$@Bd=;&5 zubSfEzCLSuUDv}!dZVTxsiaY}vv91zzZk)v!8XdqXK>*hL%`XkTKOwte9D5{2~FTf zR&!5JTn9k?j6aB7wX#z>l_q-7BRccC!oj}Y2`!G=)q^R<1;BJA+d7yMAz$<>t;Rm` zWo7MbA2Y~U>2$1M0^E0F*06##e6}7bv>N=0`RqU?xmci;;U7rjM?y9vU~6&|q3N5c zKw+_k{k9+1TX)UDrsE$xsc$P}0u)mSm{#g-;;o76jURjz?RkP=lgi+Q*VM(Myu zX4k&1XG^Ub;DYgK*#qYNAj>?>#^$lM2x)WCvs?R9B}!ViL#Yo{CNK&n(|PcKb>T9K zSepJ0dER)TBji1_j$i}nnA>i?Gu@IJ|Il~;vupLTG_EnWUK1zD68q|UWo zzE_*julChIlpyK$ft9j#;hWNDYql*{6r5s2aQD7gS^heeW*3`c*!Hix@Lm=Ij9jHLMInP5@@*Qg zuKOfOuTB4ITg>$a&26M}T_*o;d@1wuZs>%HNp;{rSV%f$7P}wqBzb<*l2O5eLj?J@?!fwB-^C;F?FgYu$uTKL zjuEb~gKJxD1byE{dmc5^jqN!3Yac^A$BvlkZ>^q*{NsogpkwyTu~9B3sh`b{7EWrK zyY$)INbchb>Ej&fkd|Ie#d{poaFnb@GRuLUr*}AbbR8Ik!=*$0=#NMs^8dN+ArJ97 z1=(oBCL_PwHKzdcWxnK+gLuJ0;AyRfm}fypMLk&ke&*>em5QU;*kRe^+#~#r3PT?r9Im|R<{%%`2%lw7Wi=QbV1pZn z=Qp`nl#4k32Y|wU-STJCQc!J^t)9h6C|1IxlOcnX~% z%7~0DL-UTcYbWA4>}aF(_5*+4bF?+e$|uj8`=T9>!2+?R_KYJYs(s<*wZyt8;PTGJ zc%$Q4)R1fhY3^3fcIvhB4dW3|xKDf-dW!s2V)b+DQAh|fK3J(c6(gum^(|VJbWb~L zXw8O^)ZY!v&+L|?`az&>Zb4F|=PXw%cW~n9w*G6+FD#h&{;%)uClxysAx$l~4XyWh zMMV;jvc;t$B!)`f$Cz;y+-UR3HGQK@Q9~&%!0@qsazSzJ8;5~ltz^vEy1-;&AQeqV znw_k`~$h%``CxywT z%fJIaN^5w6$|mMK>hafbxaYcDA?3zaYLu_4TWq*a6T+7H$6F_wIWX$6@3N%7`LM;1 z&e_on+y|^VKT+@YVE;G2?=c&njI_OXd>ra>f8Bvde{9;huXs%PJ(Cz<9NXUnTpSRX zDPAayA|o)DZKRYJ`kgL#L#qqS~uV-OP`s(%ix%Z3W|5Je93bUb(eQN&~^r zHmgLRGSYUdpG1U)Ef@M4*^@>AuQCO?2;$7}uSJdn3_){ejnDNj0vFNS(OchFGBYAF zPv#b#tLM*zazr6r5&~14`sA?~x`PiH%Inc2EKd2~GrT=D*3^#b=*CqS7(-jpylsUI z>ZW&tI{&?;w8&RM6X|zcf%zM9)#3{P*hg&C+vg$z)p>d8#O3NtcCByv+`y;9?-XSl zx=nUdIC-eah~sb;&v7SbOobi%BE=Ps^zRoc@C~?1{gl1(ng@sSI|DN9%RuV}3nXGH z%L0q#7R}AF5Z~v7#$SE(djvIv9O_~I^{81Wk6l4fYypT%J7sV|{rwC0JW$zsH(Qom z%k(FtYO6`)-g@+mkrFKeeZ`MB4i7Wuh)iCYxYi(W(FiL0)SJ0PhKwDM;6e$xkfA!% za!`d3Mw+*~f_ciJ4?Xe$J(W5*fid0MB#Jiu^-#W3M(gA1npfO}{nWMIu zuT0V1fcqUt>w1VOHbASCYN2ko$9R@XwPzyJ-yS9i13#UiolTO++kK;_lbs+Fe#l zURXs03O~f7rbw3}Qg*elTGmjDGq#l{olG#Fgn-@go7`R#^g|bwRX3@|Ipa*l{O&!| z&V(9@6V;0MV@-t9bile)1Hu)AQOnB^KjPRK0->aJ z?2cb(d(0Ey$hD(imUt0KVrbu`tFyMvlmv?*NxI_<{KfYxnL8KJiheXlg?;hy-aGHP zaUO5x8Nwm;{|yvVGd@DMa+m_)pvq7=vj=bqM(|uJvAnkfD zl&xZsATAsgzQ?ub9Qc_UGYRI5f}mc!egqU9Uoj3Ci>zu)^;&Or~%}3M`(x}cA7`eHgMmnXNJ04ioW}87T z7Ot;7MVN*u&8(?5 z645-P11ddEZ;bl|$&hnTMN+4a{3_SXqydXTyY}??@a1oO?b?UFIh$t-zCW58X zIc2|Yi*Hta9RL%XlNyh9p8ob*<=v`hUGg;N>SeLo;{u-TD~hS5^tmi?(kyw$z&~KN z`-X#EKL2i-OzR`>xtZMMYD@0kB)LA5y>==)&c-&h?@=m#@+=lTo?*O}8Z768y*R|y zXrcPck<6FN-oJQy<+N>yAlv>hhcT^Z~8l& zN$hVx^+*{}{n_vmFNQ3IH^qrAHLSOL#3HEjo=4Tk7`Ic8ga6+Z+WhYUY8Lh&ZbYy7 zu|42&vk^VP!`A5HVX@RGid9MiF5G?g>2!aymE(p$QB`xk9k7#XTxQRvUJ<|c4p}Z3ON=B+m7O&{f7p3_YP-JQ|5wL=ET)a@@ zNKDj@(OH`KzER8YtJ;X?I34bPAn8^w2bFm{?QtX|DR%67v^+2z_=^>x=#mxRyRUTC z+@_AlNv>yk46Qr0?3Vd4O=_@=)4~xPH$`SPLKOi~k{Ih6RAWzL;?Bdbv)G&ZAy$f2 zd-{O(q7(8c4fF*Eaw?C-hiz#NISRpe$m~sIZpT(5&*iKZ@j$E9bf3p|T7l2kCkM-` zfK!W9dFID?&33FTr(Un>nILC7qz|ZwMEc$&WGI^{6Jt%!7G^2Z5e=7w$t8Pr%z0Q`m<@X1AscNv?uUA&nOdsv+K_bVlC^|cK{|a zPv58!w?rnpZp-EAlfLR-tCjc%EIBLmi4_y+R$V8zfabDv>roz<-tkmyS>A;)XAdgT zak!1QF9{Q++EGL_`_<3V^$E7)PIO}&bG(kDt3e8Vz+r5>H`}Y?T2Z| z#}3s}O$iC2-Vt<;Cs0Y>OyuH#Nd@`+ya{s*;*LTtz<-1E{771D0KIRw2Z~~;2wwZ^ zvNy?D)fhJ6S+ND?s_hBv79){0kO28m{flucwb7f?`)APGO4y|rc($ZUaF=#cSt*B~ zQ<0ZPfw&atob(i_YEr`*8J>)2Ljp5;S*yoHd(a4!Z8bjz>OSQY2w%I5@FK5x7r2)P zl2+*S!LLaZuYJ~#-ka%EELB%W^3BG##%kNyEs4*%{@m+?6ckGyYtR{DxSOXch8M}g*3C`8h8(My(CKRuN?}Wd}vCd~SsP>>{(b1I72@9g!Yjhl!Yjc@-X3-T%vN z(Iv}L6AGLVK&A;?6scMvLMlF`$Rfp1GKT4ad9R5+O*Mb(xKqZpxyw|{Ls^<9BWmk73qR{h>xp3z|xy1cWJ8C(qmBH@uQY8KbCSs$k{Kp`MfT;2EH_mkE-%iP^zI(r+l55O z0#H;m07|ms7eu{yM=gxOaC{`~d{@=cKOwOb5K}XMxcxUKmAzH?o4VzNpjc30Acfuf zfvVKq=Ssr-q?2d;uI*D#x%dC~)FGjpVA}_F61VN#9O{6m#s_P>#vSVtbNzWVf2Pg6~&M7g7+8kK~D!yMi_Pae$x)S zc#=Vg`qY4GNN?&Vt7|epC-_=tU<3|5HN{fF+R7-h7#K6%k^OI{>2s{v3D@tD^mR)wh0-4;5cTEZMLUrkM+UGEGba6bQw;1YkZnm@0Z@o)9d zQH{^}>o@W&{0mzcKmP?q?aDnOmPq0I6PK$f^N-_r`T3%Ig#gQ`)w5(aV>9~$8fu~A z5QnVgqdyD((%;P!45Q+|o40c}XZbDp8{Y?gNTUr3D)c~uZ+{JdJ#p98iFB$uN40Cb zUkv5|zW30GWLswC@-ywFk|Tw)Y6tst#8r*Ftb(fAy_{2V^-#vfMN@U+U5-|is6a`5 z5a2{X^fNZv%U`W!Y^kj4Y3PCN*5xt2k*?Izyj(15=S>Z0oij4yK75KCkaN^;4K4O1&*$|khNLzZ@xhwC)Mydsw|S!t*zTbtIg^7P{XBZ*`! zBG%vDnvK`f?qTJ4-9EG0wl1;2COKa|C{klrJ!AB2zE!fsXzQNcsbepoei5Ri91!7p zQ_Y?#?y@22a(ygc>1({0T(>vP)}CnC6gXR0pO$-VuDNPGe2dbm|D$w7mo%xHDdiJP zI=p5)MXFiASbH}Sibh))>6`_XrL$H~-Ie;vkr)zArSa#qrQquXg{nZD+8UHmA!2J9qi zl-XkIJnQ5{>8KiYV|#aPfjU)}X zYw6pO@i;TmBm65{|Ig0WRlGO3%woW;+1*ss{}m#xp)`)fs=G=A;CCXD7qWDr0{5nfqw8v>stLqiGFb43l5a4mr4 zN4p)HSEXJs)A!jVd5pSSa3z8lKduj|@w@S`S0~&dE2$;OmHvy}Kc}75N4A zk@{Ctrjz*?&flI0kmQZynSiDA!#@$mR41?`eMM%Rp|yGUYBRh!l~w zd3A7#MOvjX;DYP0{-R+&N;xDM^fUd`wvMq#wqqbj@GW9vh}#Bmz$Cl;)X#qnpGY+> zxe_IZ*KlG$H0#*!rHORV-Vv9pMEP1_p(jyo;*t)`Wmc0PPZ8%t;qQ1qk5h!;k~E&$ z?`@XMBH5pH{m%vjO@F^Z??~#L0(y^i;y5(gJzL@3!j^K9@4>pCeRZ9AQ=*puFO?@V zEySa18>P#{3tbN2Z3DALI%mZ;Dm@3{EmzQS#j~YdpKHusd;a=Y7s+P(pRMJRLJqi*$~_d2qGu^3j1S3K z$8PjzD$9b0g{QcV4r$P|mcZh>Z+?qnBzA6NP}3~2uY`7*u1n#Ztx%n(78K82{w2k{&Evk_;~DW-bIOd1 zTxlU#@p^r2x50M1%>DN&AAGhc;Y%%HfOX@)VW%>^hLgIs+LrUu?h=!^l?gA5B&2U^ z&BCwSVa>mOs?h#>t`1y(6qNM;o*BCabBqN6g*&vL7-B5tC{fi1+_POT^k}g8K2BIB zZMn@Ska4akNzo3>!gT6OWXj_~C?D-7o6Ww27reau{-+iVM4cM~;x7!y(qN@*-pn1H zC7B}XAJ1t@l59kY%f}w_VUDtTcVn+bjH(%uO}L#g_c>~Jy^R9>LIjtfDS$EO`4MG^ z8zW+wg}kzJ{mpoILM7v3isB?xAk(%-@YDFoz_0aBpbX36h<7Y|hdha8oX+re!KUqG zS0h-GU%Oj2bmQ)@gOKLX(c)CLj}G#x)k!0PC-SHn>K5jaD3(Dx4)0w0vLjtKk3{+{H!tvS zcIo@gaK63$zP*;acv_MIZx+j^Z~t@8vHo@@x3A{y7^PBILV|ftDmMo$R^zo53aRuD zmetCkgt@Sy3-n+jL&pT}qcrR&5a(eu14}NMY}bu7cJ34cUib*qr;ARa=B4ZDy`|=* z&Sb>?WPxnb>D~Fxd$Yvuck;Ud5h9XC2O)2P>q81e1LF`-QyP)>C5p*E;MHC~O|f#C zqq6$GmU`5$1&*`RQ=C?p)y$r7RXio{M&EYYdTlLd_fE|4@=dYTafayOTRD~(d~@;D z8fqUYI?$RiO(Z5~Q~w)d8m~pa)mM#(7wJJHf8485Bvx^* z=CMz&i>RXf7(`dWxtu!>{7(nOlI(9>5IUwY2t-~|yyiRNxWpKKKBWQ4tK?z4p$&bB z%fDBlKSIy$EnM2uPQgq8Z?FS_AnCD=%M-=K#w`DQLzT%>9wc+3pYXc+*;Pzu_-|;G zDs}X-2ys8kpXv}l)nA(=oXqN6^TCzMx0Y_$S|N(D3VY2eW+WsA>q@(_f$M9TC~W*7 z(lU%n*N;s_%s75VyccqEIpVOQ-4PhsyeO zE!Jq8#}eTIjepFV|MdsIYh#AFB{7KW3cr?N@tXrM2^CTMe!7g>U=qU2ET6&t+AA-s zl~H>s;HM>Gp9}yHm|%^Sx30qq2NUNEj1~r-f$9C+3EhGvB#7Z(NpHIlJt8}rLnmo9 z-#!yo>n+}~DI9MuNqML2`4rtDuyg5;0=T1eKadyyBtp=!HrQ|IJ9uEp$-iM05>OOa-7#MOl zy(rAZw==66%qAfqtd9e?WT&S3VzyD?(S%;8lH?@&_09$dS^df1fe+yMAt*wExG|vR z-J5QX>GZPKqq%PIxDLz{@_}ERVxEf*T%zb+l-|RELT!{A!$XaRHIc>Ch<2MKuu&G@ z@3XljqDrNEuiSyZl(4$3x6KU$q&2I|Lp23=S5AMBfs!0D>4St7O#%tbQE_D-{qKU! z@O6jxsEK@zuwpc8?e&C(9rb^(t!B z^7Yw~#=f_rH6OH9V$}eA>ovjnmiyZq5&!a?xQ77wCB@nACq$Ec zo=_w571VH1CaG zgav2Y%~J5p*b@p}<~hKWhDBKC>_lvkD3QEqBBCJS+=Bb7t;rwAv?b&o1Z(C_RN#ZU zu*TCMk!?u#&crwCnnO zCpZd%NOGbpLwTP;D-urB)SEzRLw)p|FyzQhb!Du3IAR+U-D#k1!PPUzfD1-8!xiPNRL>TrH%#$Eb`2~hN6iRDCVKAx)vy*axC z1EA(8N&tmF1yu?UBqJZrLp5ZY_CG{ABuz=quLxQCcm-@a71V7zDpV=;>V`43m9|Dr z??42#Ldu*LM1mD__`^cj56hNjE%$zqbkoP>v&}w)_|NP;YkxGo99ZYLq*~NsHyq!g z=)Pe!+&Hxi!lbddd-~KLG|sGh2g34wTAM36qeJL4S#1+<-X>p5Z8cN4KOMiiEIWKq zy)2HUK(f}1*6Eu~wHJK98#XyQ;=McTzL-PIj}fkx@>awgMf z>aZZy2P?y?2+yO5UK|#kX9u40pHBXkHTNLxfWi(iY@@3u()M5@HcYp>?V=tB1z+o3l@;}b)qWq- z1{WV%Z7=80%OmV_7@GShM>CKFz66w({O{7d+1N@_z;P;!S?S zve(TCEj%;r^mrl&1nv4FT3WAg zqq2Q~PvCABU~hc~43|X4@2XV1Vw3vYCyvPjE!zJA`hO)yne7c|4Z=lwuUaKsRg1&b z{)Qn)t!+Ay>$r5Gx8h(EBpoSm-p^rlPmGERYCZCJiuz#6mnmT?GQWyW(4gyC+Yuh# zu|AR>@4$xj+{8=|zzzRjF2F{-u*V)MfL**M|6yw=dH>cn@G<%*l$dOZf!e$dFLvBt ziW+u3LQtUcH6yPHqxRHDAg2SHbZ1ZE&2(c(1Nvt4__a+Gt`K*Kv=P?wH^o+^x<%u= zcb?~F*sF){4MLT>3dpC5n*Ax4C#(;RmOaz=l9_h}EXT`h6fKpPPybE_AZ`)EtRwnq zS9l+5!z=pcNJk5;xXLp?1BbnOPMCo!oS7S#Hi%3ig5%Z5= zJ1zp&A#ldQ0vbHy>^~Sc_l*)N^Y)lR4V77ajz<55hLz|SeEBnu<74;9oFYZvf{UM? z(Ll}mJHS*X4n)yiCWMI&15A@&d)i`n$StZ)opoNt_r=nfcUDZqeXmuz0vFUd{aM3- zQ{XIHzmKPjKE(H=BHI!$KJT-=l2}~6ku9gZmct^LN@sFQX_aWo#U* zBzjci8u;kefCFL8I_MnaxUa>5-d_3Ef)x}N3#)R=m3kXcE3XD!fOwp?*JfnDMNP&Q zG1u##d#T14dIja?Tmc9P`cZ-;e|5=BrqP2q#r)&}7{`f>x`vYk2RDH?+lO>;fn>dv7P`XiT{VHuZn6j3f3)BC{Bw@p%gFf?!_I7I}{D>PVqvJQrw{wD_-1P z0|XE55InfcP0zWto6c-m?TdEUhgO_5gv3z!mH$CpS zCY#dM^;bCX=O9LDZRj{fzcvnebocmkL7jx!kQRwMFpHX8%kLuFJQ{Z}wi#*pC(9)nTwr}p;bn^vm+(CI7(YL zI;Q;QMUL6=b?#`i3B_*FEu}gQzqf`Lf0|>m^`mnJGgH=e_JaM2*2*^JVKZ9_;Nkxl zMaC{G=rQZ)sGfE8MmS0=rVILY^_;s(<}uov67O~uLtkhK`yY=|d(YFw8Uk+|?-)*q zU9<;mN^kn>Zo1oK>HHybLSM%ySs`t*@6M9hwRJY*6Cjo!b8uPZL>fJwgwL$Q>N#KJ zq$>6^3gz2W08JMBx8^cZV^V29E$xSNQgJiefH_s&Yb=rl7`8<23hkQaEv_6uRl5Sc zakVNUh!lsyg#kGxlC3-VG<4a>Rd@6ezUqyZm3UPQ~v_y2&NT zuPe?@5u%$(s<^;bl}%44s;gZsFtT)THe6?5AJ`pROvpAWhc{KP5w;v~OakoE*Hhv= zAB*8(O&txY^jP{D9y%xj?8nmV$HOa95HZw^iuWn{(e{_Qa=(}aObFP@(Uz(|xb68J z+>+|-h3o%3Uq-cG?Uz2Wqs1T;@S~8OUEI%pBtFd{UjG4t`lo*f zedwd;U+WQxfI>TtZb!Twxp;vl10#>@hfnNadp-Ym(_87ou6jpP#0RDE>YElxKfS&} z+A?oxvv$(+sXuHlNXUw&F=zS?B+M60sxb=W4w4S)Y4;xYZq!z%UFU|!(s&bbY3^E( zczcp`xGwZ#w4>^rqPe_hr+1`5;Q?&-d9k^=ve2Cgy1#D_Av^XltihZ7H`RyOA+$AA^|3 zaWorJ7rvHTk{2BPR{PXFVM>gXr-#x?&vvX|>VbAWdy|R_OE&<8;&Rw7PEh z>yGejorIl63{RbVrmT*tYm0wQD%qBM%dzq5(NF^mGq-8m0cll5T|rachNMGAbHmMS zQiLa8^hR{#9@vBgQgT$8;QXGD^t9K9k~+rZnVd|Exbs!4Ai2P9!_8`MCE8!O#nNp~ zve!?K?lx;crUqoQFlumdkzAdb%WDt`)#0i->K*}+@n*N{?=X8_{1?$6{*-7`6#Uu1 zQIVzb)|S=~Cw=K#Tur&I;`>xeLI80eszsL@v3M-I%+wT@wnmY}I^#yk-2$5=Rdr?` z=R>xFHW#y1b%{%bJzt#SfT*6bm!!SR@`L%Ao6s)185>^B4<0I6<~V76@Vm|7H(qa2 z^^llA?ELeG4lAPMcl>nc{T~TIanfz<$8N)qZJLUwJBn&I^N)4r!-PX*d1m5dr3_ z5WKfm^&9#INU7l7M@-D);F z0QqxUA_1f5>6#@sC(AGT=SJ~(@mA%ipQGCfavnL(#tEyM9*db}L0#|tdb}(Rv())z z=0AHgT6BNM@aQv-#f7v@{W%3|4Vu$=KsNgCF@swDe-{5qO|z}K9H8G?d_Oj0lnEke zGQ@(W*y*?Q-jqRmed=3Qy`ueDJ`#$EBERf@p6}o}ozDUhO#`aZ#d0y&x<-*PVc`L& zNQqptw7q8r89PNX`BDtuNH>|2uG7mbk1_bIC2D4BrPTf>A?)9nd@@l zb~saj%e1BI)6s!AXIDVz!~HlDVSE)p@ZoI4XW&YE#mQ0OebXxH4<;Q}T?L5qLK|$a zrB!q{wwQA~^kg0VtpfEDU57UXtDHJj^}?*et;*Xrn2w_7n02U7F^e53V%$Q*1KZWB z!|}t>!5h_1 z_S1D5$X?=o*1J%fyw5b@CJURh52}>+{Vd?K-~ca|mx&E5sF$EymA;$Hw?z82J4n^y zI9#zq;New!m{Wo5LnEI?B1I>>^lX_i)Di8t*&bN2Yzq)1^%86>Hza8>_zUcbOA-k3 zm-h7x3$G>TV&KzStjdd7gv-tJ-brij{Z7+P_uOY@WNay$G&)8XDrU5`$Z+2$nYxpm zEF`K~A+T@Vil%GXIEfSa#j*IRL9>@t1n6Mcb0DK@MZotRz=ehAM7_<3|3UHdYGrhn z>^Gs)BU<@96l@1-fZOrYDEj>8jPl-T&;o?sj%aUwC7=VT&BN3o4F~;sEz{Za0FU0xg%A|2~EHadm)BbdXvb*6Nw*{>-XO*<@M3R{ffv zu2ru`AMD*$&vxj7aQcQZUMVWZ|I z^_3N5pPzC}TAiNIqdkyZ%002Hf>%F+ONU9P7W*!AsT73$o5@jJY_>8ie$$Z(lVSa2 zyrt>W>Cq(9bo@~_X{w<+AKYALzfP%tnuxt%3fRgp{h|$?;Na0XBpK~&X_2XLj~JO! zWndGQXcY{1OkU1Ao*|k@C?eB1`hovNq17|t;0Vusk=DKVq%v}VKwwe9shdEOlfUYu zA=~8BD$kov<1hq9wXH-EoEx+c=zffnm|7^iH0L2lMGDigRZ3s6Y?z9M;}27-HpTgL z#?ATST?r52zzcpRIu?ud$?nb5t#=$SN$Ltb#`r`rl&(&2+8WmgB_&9G_yF_pxfROX z-h+G_X?x{i-K4Xg#NPmrw$05k?Z{wq4O}%{WfVEG!?wbbgrSD{p8%5Ar#O8bguZ(PY@)rbq6p1N@>D&(|I;rGQa0 zjq0iI+9=koAE#S1tu1%(ch2?1*6G6g9mrv*@8&77-2aj;3L!5AHG}T}PblK@l^K1X z2)@Qn{QdQLGS9~1y&qr;<&Y+@*@`Gf_jK9e4tl_kVe0`Q5r$vWvI4*>_`ipH5M?~6 z%*N}fxzH>_K0pGR#OkrDqf)CYn0n{L?A{YGz^JlSr3V0ha2CGqLhSUJiS=Qh zbFxrI$nZ98i9IRAFHYF4)%eO@ukIot);Sk03tjQD@M-f*_jy@bR{odN;YsTm4n%Y+ zbyPg_;?pN5=df>OY)WfTzdW?A3ox5yJG~B@|J5+wAy=k;!PU6j8WbP`%$LN}@ULu| zl$kTsCdLv|^$WrTxi^xdgOl{t6B0{q75-!w|0F0sqlodgEWL^AGkBY;L~2*g@_|^@ zsZL5sqnJI#`(?NmY)`!%SJ>p8v+YpPpX!Pp)QI^~x5?il=&8`k!djK{tH9tloky&7 zD`TljX+w%GgVFl=CRdh;e@OF)-oY`gpzT-%n{es?o7WLjEXg>Vn0!3}Pr1=DiVy`; z59&?pA@i7LWa8D9&<>=Kr!F>AG>@DwU@wh{ro_QUvRKLHGn2IQCJI?kr;C&U(8R<% zi`UyK^^fy70hiqYtBJmV)U>;s2{R;OM6bN_pF|9}vBY?vI=iB<^6;(UC~7zU_V+D1 z`IloDT4X*suvy=MH87P!f3uV9=EXskBJJ(@NAp+kZB?P>giI!WD(t9o=M40HHcN~3) zR&3dkAx3AG$|~yAfq^sDO^s1`n`d2Ix3GD%X}f3({8C)GZ-1a$zHDgK;-65fNH5TS zN=>H-E#XeJ^*Y$__IQCL-(waN<^G;AytcPB?dHq*;gYmzA$^4`Ac)!N!p)w*srDtG zp*~id(8|sm?5aAsbN@0>aatJ~oL%2}vgwBwgl3)2KoMolb6h;AJkD*FyXE0sv#DFY zv{R*>TWssKr|AgqOI{KF?|>0~vAGgN;QZWCQE_}Qv983unK{lI+it0PY-(V@>g z#iQBim2G22Y!vrmI?a>rC{Mw$gI$V`eUJ5L<%w#&$0>$EJI(Aresln&LMtanT|?pK z;$hwG-ml6u!eX>FvRlp4O`|d~v`dEPSUq9=*R;VK<(^}@JFVP$ic&{!kCizcOiPhW za=vxuUMmZbcX|l1^&!Qc*8yZ!@H0?70ZGv48l1+z_TC%9f0soVF#%P##xERaYE?+ zD_Do5N$$*rm6il0#dEy%mdmea@cdD5QFDU{u$vx0Y; z67-gxrEWh0D9jN3qT=bsD1S0|GQ#wGAKSKwZJS*3aBFfS?*3#_Li6M`YnsqxG6Yi| z&!unge*@KhRrcMN9=-3l9i}}oBb+>oc!0;2<65kziOGqNrYEv(O};rh1L(1y1vhOw zP03lgR=+rUy{d$V{Vk&GF}Dmws!L-mCl;aRcNStFnXN){wZ8sefudLw>mK z6-T5LM2GRqv9E`9_dP^+46df%numV}*>j74-qywSvwnG{*z10~d~m_NXBDJ#l=2Vk z!i}Fn|M+`|mG5NFub^t~UZkRl8ghgu}k&_ka_V(Cp~L5!tsjk&Vh^Zf%f%^$-$X6_cYN(=q|y!dOOa|J@5= z2N!ggK4mb|?NQS$dPVzx*8&G+dpLez(<;T@y56oI4dfSjGiM)oBFfZr^c5#{uMv^v zG~!9ev3*s`vGB{=Evv@OlU&-XM{hWTySI}w>{4pkK%F-bm_g9HN&avAlxqiSgC9Xe zz>Eni=7J;5S;PBoB9AdxJ`DPT^3W<%jq;|6}8SgF}&~`Mt{;Xno{$BhE zn(kDgrbyQ9Wsr#j4JfM})9d(qiLd#y)d}9vSgGY6^Y=M{>UKTB+1TjVt}$b8QEoh~ z512|s9{*k#F&yD`ox^)D*x7;hMyX@aWq1^nw9Rvv2_AT?-_5ZwYeRt=NrklRp9ksW z6gyrlKN*t29W(!#LMh-t#o5b_WG>}4_rw-QPNTNgf|{OVtRs1$H5)VWPFrOfXnAX*M(aHjqEfMQSPnd7~m(ICWV{lj|l=b+J}M+1cpte)KE7{a=v+K2NMAYYZU^}hsVH`Zo+Y#n}1^<_S#Z0eGv{Z5B?mOJS#gdh5 zly^K;rWZlMqdX^?+_Jl7)?-}PuLc{MpWjsf4Sm8w3WWr&JH02~$Pc(V-8fgwWW9l_ zUMlzzx9wPYf)H@Ssu=%VBUXd8O~q7HOA41wkm;o}=>-)hOqBalLaYjhS@}jbnB7Z|;V985qPU z@zlg??1qlLrN0LA*iR7@&*L-V{~J z$wCiM^V$TzSe(H*QI}A8_H{Pxt*}-oo`q?0W(1q_&+iN8pSr@qZljkprxb>qCo(NI z>kBh3DKw(KbW<$~?e6H7JiPTKpYxZQ@zDjJ%kfJ_xMzyhU%$3X`(2Hyg*&6cuw%^Y zU@=`}A|EVIvR9{OH&1YD&~*m3%Ah@6JQiw~GcM>_=_+JEpsIIXlG(NX9kyO5aeCG# z%v`^be|F?`6*{6f&I|1kuQi$p2!#xw1GE}4RA=c0vU$Bt*Nj?Qjtvj5;9BQkix!1# z6}wr(q#+7_0=|#w+I6!PQ+tqed1Sx&*uRM(YfmKDl+O&=BYVQqOhAGw+t zV509E78NDdQM5%)`2t>c1Lxk@do_NI5vV^T8%sW~V~&IvZFIr^!Xbr23c)VtIrN415l_ z)lmjcjUGc?(NGY{YgH2Or99QFqk=!di4NWZSIjcpYV&{fMHOr7zxDr0g0k=EVcu2d zsTF7nZizAxGgDkHX{xC)9FEZy${FmuazSaSAc*cABp(@NAWw4mMLM2&(VW-z{Hba- z6L@M5ioHvf0DECpnWzM+)`v%7wha%G@K^w~{>Q2ZSjo8>fVW zemJLFGuc}uE53L2_b&^67azu^%Gxe&I&MG#r2+c~2Y)2(JQTm_BMu`X7re%8u>KK4 z@`enNW1eC{4EI?oI_-PZ8FA!$4#hl|7-^*srsNS;69*FROle&|)fzu9E$Xk#Dr$Ln z=;&BFG_$RBtUTo0ZDqj^la`*}bzp8>%qXn&VXW#<^e)RS$66LEFhK0F{~hz?x4bMn z9gRJs8e`H>?vY+0_{vKTY#2>G@p&AQkVzT{wU`YP;#2#4G79zaGw)avua zuv{`+2j#)89Z#`0y)9L)ZM~0xicD981F3Xj!X0z5y4x;ttGBb^HBoJ_4Xhp86r*YV zjr=PYZ&;E>zq5KV%<|_(=wMWVCeU!STM|`}QHgG(F)P%RygRBgRCjDj;-LKZj_GI9 zy(AN#=~-O(kW~`#pXN)qN-+A7X(ba4)gGm0Qbg;FiKXHCNNh}^`_l?SLkfK8*W!*< zBh%8rh7#$&dPGRX*r~SeDH5i3?nKnX{1){j1Btc+c3d>|`YuoWbBjcJ`#Iqs_)|+3 z{(3DIG-UO3kX^ohS!eKXFC@2}>kei@A@~@N*iKaQ0&>Ktr9LGaTn7@FcB4>o1}}V$ ztPdcMAjCrQlo=mE31J0N(zs4%G%+LJZZ`XW_jRluC>SF;b_zX~?uVb~lBW5wf=zRR zPi>g6` zR;H1&ca^@@wkxZ5-@;k@fh8xt_Wt|@Z)m+}`L!uTw=`;m!1qUA!7p%t)1vMsdd^Q2 zxtJgy#%pR?>{MhqWv9c`NVM3pK zmAy9x>uqP1*DgPY?m83WZZph*XS0xlo{%d^|o;{zE=^REE0Ly-MYUPH$Rlz zDQCdjzcBDJ{OEvgF0`w(8u!`qlR7%sC0Gs0bZW3}=|A)jJ)FKfL{4IhDsC zU4eYBfZ0Cx`Lf>y)l&#W?A(m_h1Cxtp$8co{!1sVT}xJ4;E`CeSRC4G!3ap@jG2`N z@Q+zZcdZ`!n$aW@e-bdk)Dk8=c;ic3gMbUQp{+-ih z5U3)5)4a;zi{a5Od?_h9fg@glgBgFm>fd|uuU4Obo8W1`%TI|iP$AzECuO#o>wtv( zpg9qD@IG)QMujoEYd41=&oa>Dfy%FmI0GgaP27B7^K6gzvpfnD_ZA;(C`Wf6?G2nn zzOr(4aL^ZR@leWuDCIoxte0pwSnu-x|00b0_q>w+@{pONlyrG0>EE5 ztP^g&FTnbj0?3+e(MwGNqyl!=xc;Q_6WjfN8#pIEi?dn)o6Gd!*4 z`DSnz7dYmf5b9b(+28cw4#s^bFId!#wzIq*66DX$Zds;+d_G^bJ_N<@Pzh^GxeLT5 zGque-%$fhTRd(7% zk%=bfE*52LWA4$`X%qshSaLBu>E$5C_Wpf_Ur~+}CH40k-*Ne_ognqb>&OD>OzqY& zV0N?rojqrNOs+Xisa~#0#MhqYRpH~hGCj+8NqA^~;iUIvHN{ldQ28wm8sZ zWY5+NL}8b^0M%+p_>wAKCu)}8nYj}xc-(%lZaA>_sEAS zg{ed3Hgel*eGcG5P=6%yPk($jU7kfP*QF?V8r*lM@j`reZn78x4Boy-@TU6UBj(F4 zGAi9ZqM{B0wy0V!PE1wz;=~?JTx0+~@i73*)iS~{r74^7$`o5dWRvf-%M}Ma7%GUY zpYBDNh*Ron1E?1}Q=;w6f_x~RTlu=Tzh4P22;Awy+?^{if;`X;^f-im*l?V?TPHYq zu!#7J?-X0n^EfphQ7mX#W0 zLMATa^1u5ugNzch+UD7fX|;o)U;i^kZdIETnM?DneMye1Ek}XH4*JgA2jJTotY|gn67;um~%&|l&OuWtx<2N zDHb36(zXVYXm<=SX=ugYF;@%_*>&^qHh;ZpD_B_THc5rNQkmIf0Xl834}mOfK06Nu zE%T2@)VYjXk@nTW4;uf)D;I9bNNasJ;pq${oPx>$RTXNafN;#_Y)6f!RE6)?cM))wMCF3X#_EQ>P!9~AnzL@M z*)22Gg2uzsAHQGiWIliVm2>J7HDYItuw(mjn`^(*$|gNF6#VtmH=k*rEc>~kUvz{X zA5sMf4F~I3i@|F=nFTRV1~sV6F49iwS&=dA_j38UueU7H=ia!95(b!AfDO03Vm;0! z?G52`ol;_f*)fLpjTH10LJ;Syas20FPJio)w0(RLsBy-*^`UA_PW`OgnoxFpbp{K+ z|0Zs5?8NSwN+!$;d^kuwGtbA_zq-h6VGJnviPDFr>H#gqY4s7yJ^!?&0wr~J|FbS> zS@oSkV_@}Zo~?mPoz;^z2>4|4(fM4S-yajc0izH}jLh!_5^b?;VaR-7QbU*yFv)Ln zdKc}n`9gbkQKx>eLUgNi$joM?75lem_P=YZFW&8&v5BV!8(KgPG4BRSnU_^iz;e!S z|Mq}5Cr{S(Y$%`S6aP)j(NwsbgZE+VRFkm`&31?f#Q}%w3JbpFS|-5kHK4NY$^knw z!$Al+qs!rI-nMSBO{JV7v|f5#Iu6w3XnHPqxQy9wu5*M)^v%!F{K4Rf_$Z9N^P#Vv z=pplsK37|id&+y(eAWdI$irtq+)eDL>k$eqcf4+Onf=w5ZZnO&JaYl1xBvv7Ue^Bl#z~Va zMO+OOKEkRs^~}uxYOc(X3Cg3YWp=f|)>HUztNMW+?{7O&cf1=zwrn$T9J1P|h}z!^ zCwtsB-^+^%Hl(g)ijJrR9ZvO)WvyYSo`x?xc)#pj6LL7dhLspSIW44fQ9`p}{$VvW zQb%hqOw23+yDblLKhqB@FW}#GyrX!Y9L;PFI!>PbEzN%uog*HOUgee~OKU!qjxwh3 z_H!ma4D}ade#Z&uN3uj{d!o=p_fIEZ$JzORP}RCp-t>eq-q;cQG#nkO*< zAa0e{IApw(+&qoz3g>+kWBaqv@Wy1pJACyD4x8_5;o08`3xYIOBf4n0g01^J1c9V+E== zS{Z_;jiM~tdT)fdK=<5f1b?^zIB>`*@}H3NEu!2naGlM0dH!piJ;Txu^jtD(g;!Gkrs-Dfd{6U z&X~V`jUu=Kw-p= zB%yo6=WVm~`B`AaaVsMl*nX|%QnMuWuYmNnrIP>T_yc`ff@U}@y{}(SkYlTz2@rL# zVAVF7<0cV;lFJnDXLj+t_=KRs;o6W3Cy&Ig6QOXs9hn1y;Co=1!U5gE9=WQLN zOX6Z_Ftd*B$y*qTZR#1KgVpjqYw>!BPKVryws{a@>xoq`&0fFz5~N8)X>@|OL&&4P zay+K_2mHDi)WMBf%(o7O1xLMIQ56e?8aU@8(HjiBE|B(+osZIuNLnZW*OIcI@~Zp0iWzL}`pLOh<%QF~rUY@WA4VsP_5s@9mj*#83t$*NKu zS8AzGO}KfJ5+D`%T%T^WM%cbK!*gDfYs^;Em4gFGd`o%qlI@%}(lyrx`~BT~lpyoX zdWT*U;Ahra6AjD_+&f{O7QuJSeBk7i^QCud)V-N)tlN$3G@+NYnghQgL3Azb!pOT) z3)$uK%Gm1`&UNn#y+zwH_P?GgQfo1W%_Uq$J6BjFB%x;U9$V)8jp;&5PHN<%jchKE zJ%k-0Rr{{|DDxc7sZ?egF+IOG;L1eQ?`@XRWmw44hu@=~$g$FvjOID8jvI^*d>g++ zBA?_`tKl$2PikELyqkJ1ICCq7W4)2?4sVq^M_kb*;bE_b3kB%N>k|if&28)lztxW6 zIGo_qGRf~bB2IF$E`+=kwCOIIA$Rzr{N6Z>Mw~Frb2F{JIB#0;SFIYB3#m7i49Z6x z5R|-vjh;Uspn|kew^MgWQWTF^a)Q%Pjdi163QO`UkRyzF&n2}Mn@KOSJupQ0(yXB< zLkklV*xx?XZR++z#&P|K8`Gj0$0;)$32$4(+QkR6qlBar6eA_@3PZ?mn#Rzvj3O+u zGi&;EA;=k-&aNfU=?z;Q9En#JK917*va)_t-1{xkp(!T8RW~#0!{Cb+r3u?G5sZbwOEP7VsBNucYUZ^D-ejGsubg@VDQq7kR2 zPxxyG<3z%Bf7ClR{^wj$sOSdU851vQ;g|gkE{Q@U6%~42zIem9X3si$;p=63HRQ~ELwX(-W)>FI9c}u<>IogAqlw>k0H3vV2ckBk z##z?v#tGCz`BpE|-PH1ieI=r@UNB`u>06`X7VLY{)P}0(y|f)zF%R@d%ZdU-1`>DVs^nH$#nmSvQ_h{ z%%rN$2_;4!pGTq!x=C7SAUeV`Y*(HFz_Kk8y9DPj{?~=cQ0?)`q1Jn7`E^WD56Sww z10&INw1@VI9*$5~b_6TwH~hX`b#H9d#3pA#tWn34r7SHVKku2EvWN&as{b^~F=Xd& zWhi|9@okW*Mtk3VZ57dimcYpIVUYU+>`M@Juyq8$pPhUHdf679pYqVpYirh#rg^!V zb5@AALfo@o?99#(Jmf^!!iL^ye-@dhg&cD_0DG0Kxb?9R>Kn} z9KViIs`}N$$g(@+w$m>U@7C;cC%a5qQ8hFJKNsgFq-vHoi%nw_uBb!ih7RW-$N*i=pVzlw}mA+x4c|9 zNST>Rs!|#Xo7=#v8@h5r%vMI&O)g!ftPO6TeU!)16#V~;wtke4xkw!Ejfyz`)i|n8 zETa3T(uG{;EexZ54ADGlZq+G6LuF5??{4Zf|LjCyjmz{=OA*j$uggt&`o~8vIHwmd z0c9ft|IMhM1r_YR2^H74SQH~dwzMV`C%Z^}#ktoKQ+epdSpLpDC=FS1f&@c?>$`NA zbw=v#Mh#L+XtDPC(2DQNN3XMiVj3HMtFQ~pb<;ijPP14pR!K>dVWC%=SlRHl|UJ8xqDn6jU^L1JsKy6qvD~D5? z@IvwEU&co#Xy~eaGpJBSAHu$6lmqj^cg^9!HEVR^RvQCYf5XDT6W0mL=_;9{LD(U% zP^l;-_kjhLOA8*(#$Rzng6gZ6g+7RyRGppTalo{f=F;=<$|-j2T-N5QoOm>15(QjF zafFz|SW!uI;%aT4%%jd&yS+8Hkz9DYo6;I{IIKMep&8XS?GKSfF-uKtYk%hHuH&0G zb-NE@Zj=vw`i?1D@|Jff$+cc|p?UOwBBfb*liF}ppafyDfw^Fw95Y6DXO(u5q|6Zh z;wydBpL#6wHdZsNLR1#4m;8LX^{b+9Y=^Em$eZKtzCOHzWzAQ0*3xTlM_r*K*LF zdpm*JV5svWOANoLwg2y}@A}j)2^ZXG>+3Rv5E3-U-i{WVz4km|Mk$|3Qs3MN{0L5j z9Zm{|dpWhh)CDkK=uo@9O|Qc8^UmkC%GMt8?QA47 zK-<@w8!o@h+AE{O!JJQ)Ht1KjOl4rdJ(!}C1Scc~cTXWLAkr|1O6v}vVR2aT-` zW?#G+ldJW2tu0|1md&-!VKV4z2eQKY641TpRfpR(%|cjCuU znPKOc^()!1`pf7(Co7dRD)9%4d>j+UD7G!Q$MP(Pf5+QL>h%Obos5S%gBBGI2b&{o zATl1Edp=EDb55FZAl~gz5@d>|1T~uI?Qap*`7*6<$15A10Fw`~(QbOVkq-c2Zrx56$1`!xVM=hvKJAtR zCCQ4%*hO>}=K4hb+UDhcJi?#GK#Tc#*GxETaR(-1^>$Y#SAlt%c;_J&$ooh&VLwZh9#BaA)**wBXJAZXmrQ<7CN{WthvrBWSY0AYQ zH;+E1N%`Tin_nBwNVn(TmYLabqP|0IV0r}>UQOdY16;@vBUPi!a!BL$o=e_eERaz!W&7?k+6M*1nZes6zHb51!60CCiK% z>mQ`~on{8aJ!;-6P*LQwGsR&2hU%ZzD+-cZJ_s-A?Us>&?U4Q=&$VE&LYUww3$DC1 zp#De7+8K<2IowmWm%Hq2)Jh11&!B5|@ngEQn=+yebpHG-ke(`xKj!0P_Pz^u`AyU4 zYGMeIplN06z+{b)K4q3ucY-`dI|I&on%pjXZ-&~X)U17WGq%5jyp;9JGnF@36hi@+ zxM-!sb=lAUJ#UcZqMigt&yG!awD`1H^l{=hDY-BA{FV9ITn)lLaWudKayO1qUeC73 zUnegiC|eOIU=^~*`SAYs2id|aAN~wt`WP80Zw%=78@as6j=sLp7~{bkztb*{15XeM zGiF5tqw}p5FyFwm)Vf!Gz=$63nr|%fPl#<~QSNI4I*C~7X&Yyo`^^H3(?$&OJTda~ z@OpaNNYQRo?N%~oZb!q$7A<(DnT?MII^g^V5?4emz3SsYk~f(#Q{za)CT$+D+#qFj zksf0|XVJmbgtnxmUl}PeSvojUm*WP)*kBS!tfiyH>C6_+xrL9DGK^vA&RTnJg5knb9Eu zjt=&0abE6mRKtUwP@?r z;>N!}{GQGNBv;{Vnwfh&DelZWnTO4md8fG=CLp%U}qW6+G7F44Ko(p?!JOe zk41dPn_KiCBrSti17U8pU_NfI&30t+%cbu_Se=KX(c&ZS@dDI>=6AzF1H=U zUX)hZ!OQd)bG%i-0z>%;QvFT0z=AA=Xi>(P7vXvYRmg^<4&)Gfy|R@N6Gf43lJIYt zU@Xg^9z$8AqVkU!N#SyAAG`PC+#Bn^&l{7?x-VRj$cMrE<~PDnU+9~kJ6Cd7uI_hc z*>1E!?Pb7HRtU0%Uvf?>X0&2FhK}IH(ffsh2Z5CkoRe>8)2*8h@t05yN)*PsSKTXk z+udZg>9Vggnd-01apeiW@F}r}=4!ONe0KL)7+Q$3Gci`kNOR#PiX{FVYd7Aw&c>Ez ztGpg{BD@AOrmKC`e&v{5Xw~1p`u%@mheJd1T}bTUyt$6?(uEf-=5>C2BF%TQ(Da&e zR;*#`_XSjrZxCShL91I=trta6rKPn}0%{Co=PBS`UvDRL`~Th%@Jpc9YhduGlO2-~ z(}0s@JjtSIojGXK#caYfo@^S(zZTXwrgnKqCL5JSj{-oJrHDyD1lxC=2^yXpwC`b> zt) zb6{gsH7bClNyT4}E3rRabq1Z;Pb9jGud<~`JAwRz&;qsCM#lMtjK8s8O?4p3L4#I3PF%Y>3{K9^$~ z6Qk*4)#i3L)A`?hbg!#9YR&fPSjvW^YPf zgAzX8nh+OW|MmhK1xu0%UHH`<2XNcm=A^WpndG_kHy`u5jZLQdPwMpzj4yy!0$b|p zI3qCymR&B>{kwuAWi3*-%~B1OF6Dm-QIY$rH+VR^BJF03^rIjU zqU!g?h}ftTfnGrcR)oN%<315ov?OOu!M#4+^sH>NwjvW7p(I8R8X~D78ED%Z?>W9u zyZ$w;-v(vV#>K#<@7JSvZr3S@>&**(!X(QwVB$_TzC@(>WPd}1q*<8kjOMS$PXc&n zwq6<5krs~q;EZr#LdQ<|?pjSu-pF`4+JLA2>`{q^lgUbVT5%%$Qs^e|(#EsMqHRD1 zc@Bc|!oj(Y*eBKok$*ZadgH4#f}XIgli&#obhbGDeajvr@tlm zLk&ggpquWk-h|a}w`fk4+)*!B^4hr&Z$WwfLyu@={jMj^Dud+!ZVb zcBQo+u>4fZ6GU~vy6oAd=azKo>$La${s8lO^ zRbk-?$U8qLL1V&fgo_7MZ?CHS1~42(!X-g)J4H<2S?c+$LKavNJ0v8M)ozF+xbv9#RM&d-uPS1NL}b0^|Gfml@epB+sLqO%+VMy* zQuGJAxTr702!i4k$OED5q+xMhG00{Fga41JcMOa)*t)jkWa3P0+qOONBoo`VZEM1b zZQJH#V%tf_9UE_-=Y7tHfBn1e-Bo+7y7nrlGwjs->}r(Qs6@W8&`1{!ig8=Se-M7A zV-4G?Sr7RXbG4&FR6Pmy`uPe2=N-kx%~cFgfIZ$ik=y(b+8aoG z;-|AVYDnlgdDoSy;pHZU;4TwmDam%T<{btWd3lRIUcQ+A*2G!ISgfBZ-?Hs6Ry=2T zyk@m7wxWFzqgmE>??aL)X3x)hIyPxt!1)i&)Qx2c9%DaqwtM7drPkO$lD?f=O zEh9(+X8C045mC{!Ke+H$+N?Sl|9?AzSp2ggoB2GZK8_oKTv$-g%6Mo|R6RmJzf=ed zi*u7|O5PI0GZY@#BpB#%5Qu2+(20x4MUy|(E@4Ee0UnY)^h^nY#@nwW6w4L0-EikX zl!0UFkejOVOPPW@&vO*j&w_J_+DGHQfgn>ghp{!RP2r*$_d7{wc)@>X-pe8-2H>8h zwVkVyciah`e_Sdz+9jScU{^R+ibkPn_EaxM30+Y#>uNlJe; zU0a|3=yV4Op6pc)V~K4_NS^7ELD<>#Y2W>JVK^als=!W|Fr{uv6X87lX929x$TVy%z$Pd7F(?6`^3xw&X73?I`oiZGS#cyx>SK?tAzmMDd z+*c;}S46#x9=FKRw&V2f8dG!c`rnw-n)056V^wvtVvQuI^G9?@QyG;fp*g}Bvv?p9o<45&rkbs}& zaOiov@dn~DTQ_zPVLdeP$XNlU6&RZQ7&DpDw0jz`cnxF`hI?Qnsj2L~ji)?NB zG!2A{4KA6kLA#M1lWVvh9wxSrc;UYB2FR)Z1-dnUh&-d!DF`lLwz@GkQGO>-_+`(& zW2B?pY;0|}uIly%V^G|h`XB`LPH9~Sh-^UPo)ebmjX2+k7X1KnL-!u9Njg%P& z-Zn5T{8_{99CEh-UcK&Q(XqbzYR;;&u7Q{vXC9)LKm9PYXnoSMjo4|qFva;FdCuKY z1d*35G{Fsnlsi#NjHr_yn^%>0*hY=qxIjsu#J_mS{vl##tpmA5Z!63tHX$AYx_z&^ zyEY^YWS;B|ONhPfJ@ET_ectxXGXvd-CYLHa0>3c1xQNy;_};Rn*t56q$lLrT{lC~i zaxKaGV-CO8=l-P66u6DD^VmSAR_+K`)w2=k;@b2YdwU5Bc&*Z5h9il>(4{Mvq1T6R z%9gM!)w{|Rkz5Q55_&R_{rn}hHvFu}BJwgANcK*i?@Mvp{l|>7by~ohk0Z=EDb(h! zj&1mn`lMbRa#d$NK>hWlBwT!^!vX*`(z1=**M(K964`;a&CQ0OyFQBE!6~q+bL>Hd z?99-ic=GpO(LwQVd(BAw!S=~;TpX~kh{x~e^ z-`7=t+LM|ZvDR@1xoFM4>9JGB>-TDs^{k1Tocz?#`Ffr9Z`%Ww;LDG^sqGiTDpO?r z2f7;wDjmI^3D|9-_CKijdXbtK{f~M-13Je z!u6EVcK@F_v)OG!<69A<`Xp|}^}oY|-c+F+C0o5BRc_#xx@z8U)?UL2b68?s=tf0fLS; zZ6|bxQ#oA4>@LZN>ubEWh`Y>8B2BR8g8N`f^q03QRS63?tu3S+OEU`|OxgMA$gP`4 zbNq+AK>UogM~h`$oa=(PWM4DDMx}Y^#;}yki<(DJz(R)~(}%Fa_Eg^=zV0{+H%=kG zUSQ@FLsgZ*@%3JUYSk1A`yJEc#fz7^MjxW1xKMZFElbG2J7>CZqWrDTf;4x}Q=HL3 z_|rKkRO@a?_?@L?ebQ~EO1WS#=ODm$A;9;MSnxx569bzbPvEiz`merR%%49Qbgp$c zqedaiqGfI}#c+9U<{Y5An%%`+p1hhHacAW$L=$CkEPQUe*&%a7XCzA#F#HN+-Y2Nu zHe^627ez9SM#n1SH2-p}?`j*REpGoF3h1`>G6 z(c|)pkXe7imux|xv#Y+;yK)#raZ0BL*I9YO>OT<~b3SY;U4xgTehm%Uy@$2SfbJ)(8b%v!{I_Ka^k!XB0T#ttkX ze&K)k?@YAO%>B2nx~lv4yRJNe8=G`wZpX>vZn}j}riLI>SqkoyZ%l^|e|HzFU$i4R zClaCV*4cA01qQwml^Nl2m0xxv1H+BRA%CF*Is`1QL1UVjarzugSPCy>JB{8%oa!6GxP+FSSjefxarJeg9ALWA4P}>VTjlb@ked1HOBe12k*e@t9E0 zJIj!W4-bP6ax~hD*p&i1of;PKS$3d_S8-Zj_D9+88%aeWg8GxOmFDU|Wd;A=vND&c zq30Whxxk5TR&`P(nl>ABrE2bZUk-AiCf3L+b;;PeWH@S)na=!}9+A)Ix3jh>dc0R~ckR2tlWx(_HyzZF zlc;_D!Hcj27jQEJixe3rkICb8N}BDq#Xr(?@%ir2nq_MrnYL zAaG-QR-$vowk(WPvPBHxMLJ;t*lkazsg@)Dr;4#J2{4D^jD3_ zw8Xo5$)X`~y@jcRB(lF(1+Id~fduQ5N>Ug%1<`hL_t+LeacS?A6N#xozq`*m_qbu& z>yB0J1)eg1; zBT$?Z$?^$#1=%DLf{a{tBTthfOn28ucaD_>*(Jvv0-6BSuIAb`g*{vC&?)2BKTSrG zK&`7~-lYr^Mw{L2p&|ptW(#2#@Q8mtPepZk;b7?`CB(-6a$UT7G%xT{=HTu^ps$Dp zM@`u(_iFNl5&Ar#Miq7^ILi^$`CkPQv{eZjUX8Tp>u+C;1zkdTjT87 zEF{`unvfbw36zDXO5Adgm?k;*I>OJ4w^DGy4n9U zVAs(m)uhc&-;;7FJd1fzyl_V6lJvgBmG3nkPR{6FrpiG=(f9A{xN~-#q%2VZ+c2Dfoo=I(r z$5B8rcmzMUnLm&ae>n%Zb2+b!kxbs1Jo9XDn8XjzJ`**_7YYQ{3>YV5lj`hV_7ur?s36&XTxdO) zfGCVTTEsu%fe%cGv3CSG5p(0|Kip)fC#LQZ#}zUcFgkmJW0u}93aAS=nIw>QT9}s&b{#sg;RYZKv#&SjwP3VBx>p8dCHxP{b9&PS(dTnn zT7A&p(?70k+DSD@rI^NM#NhPvU#Mu{FQBOss4!L(#skBwE?7b4-brUCL_bEKlf@AS=*GR}4M7EJ-mbJHEo z13Q1Kr7zapo~^1>Mz^b-6__3ynD3imI(}QPUKp;TTI`O^y}Q*>x$6i8Fc< ziA?~f-zqHg2mZNjS^dJ~)!_vr2PiQRO zTT7naPdRhwS^Qrzj_=;x0Kv7^d285d$2jJcGrQkG#PTc1r~SW(S%_JXAEnUpluc4> zF$CwBq9F%d5pJ{8y+!v+32XsYXo1KXfvTuXPZ9Ybjy%O4KcSN_z6GV;{_QS|_${4Je8wRqTlH75-+6Y77a4ly;o#Q_hQw%X?mbV?uvd zB{Y#%tKM0jL6VTL-tAIA*7eq}!fg=oW7muHByWSFwoT#Stw|?UA|Y;SlD8%X`)SJr zaMJs$iQ z{notX8f-7qG_2ww)wE;&*SIN6@sG>{E7vmT0APN#;`1^ta3Q<9o$(Wi6{Fj>r|O*^ zorg_-k>Q~8<_^tZY@3yN7HDP1Xbh`rcA1v)Z10(LnF<{z@7gnPKB0k-ZU-D!P4r*WPUK!`YL=zBt!azs! zojQ7_d(~;DpXM>PHqRtEvrt*gC0UHU!%c9RrX7l*WCl3bu?Dga!3d)ydfRPk8y9rQ))gAS<*sfzQjw`Bx@%}&EM4Pj999CNa| z?gdiV|DJJ|B2gidJyo+kSI|V@$dJMi42532(m{Vo?t^Eq<5djRLVKO+f?O^*Zs>TV z=?0ZUodD%g%ktHdivFNvFro-zur&7ypBgC1~u#RKRiP zWv&UZ$>E(YS?>aVcO-k>b+MZpdjV(Bx6b?CmvK**{_Dz&n1W&aUvQ@>?)5R0BXXd0@U8+NogJ|kmAb2;px`rKmwZAO?r4)ZI=SU?fHwQe_SJLr z|LxL1I2+s&dh4Lg_n4S~-pe;#yw)GEG$rk0v#&NdhusY2Dj1^&9Vu_v_Lz{n6nw6P zeFCpz_vM5|u+4MEQj0Ex+SfP*a5aQ2E9ADHErvE`J?3L$f6O*r`Vdm!NUH^j=}y)$kGq6zcO&T*{A0HUo=~XZ#hRS)P?yR zoLsWxH2XSdO@Nj-3I#C%?W(9XU*zX?cII0*}Y%CZogM=iFMl z#AdG+2!t5ezLjI@-$wioEYR$98(w(sevp1%_VSh7~xFdGNGbvvTc3x>%jTb8WOh2h#);Nq4NE3%jat7oRMQh zmLF&R(0MjGwdP30QLBM%LuO8nn@6S5On47G(p_HB8EYQ<$!I+m0m%baC=vT9om*pJ zKS2TfI$a7HqVgiKq>cPZ`1WG?aJQ?x5MPIXklQ@MuMgn`8YaR9*lMb)@`w-aboU}$ zDE*sW$Uv@*S3Xy&a2E(k={|)COo#{i$hNPmYDE~>XCKq^2RLp#eRz-MJ*K@#*j%-G z9YFr22oQLq+E(e3I@#ee28{}Apu@H;DuAnN5Fhsk89=9a*x3p+Qc`z)2Lb=OE^Cl~ z57QKwfW$dRARFm6YI!rwn?xk71;n$6Uv&TuxCJ8c3+8)4!*Hxppe!b;mZ!8GbhINd ztlA)xg+TkoE{bu^IGgQ<&!^iAC4W4C04dTlNb``ZHkr#Vf{n#6PdX;89#lXsDseO4 zJ(X?4^JwCOrWyz`DTH}vsT9%dAZow^ULiPapGUKT$0||R7AB_!5R7ynO`M%gKBmk;d=Egm2zyk-uY{jy$#LxV z({EYIAHX}(U#|hR;w!|Ull4Cwm_9Sk&E7CedtT%^#y4o#5MM*;m0E^px!_ZsA{}9{ zosXcWTR`4B$4`1IBeGY%xdF6@HqpI7@##G~Fdh-dNfg`NAs-$sjjf7f+mj)f26O~G zIVe6_-!d@* z?au@YLLsvp@nr4^}N1gO`-J3qfDU{ z#qOEP+FaSO0mmB)Lcn0fsH#lE?OM<>=ppR!`&Wg3bS)x>BNx<1ce_n8NU!vK{#UkW zhb+SE|Mcm9Q@f60!KmnPBpdqjtX3HTcyXBjJCB*33=tow5&OOv>xt0)1_?YGQ2GSV zH$s`iVL??xaYhE_Agdjap!-5VX@qWC3?7L>!mXRQS`Q84`dXD|kYSLE!&(#f!sX-- z&DVU#j@iS<7X-chxOZY?g-az5t+9^)76lXf0OLJbaPW8Zj(}iiY@p%;BUikYv1A4J z9>(w38=!f?q=^Go z4e6Y5sI3ft&Smr-Pv9mYJbNL?rg0ry-AGNi#b=$YX3`;2S1Q6vONvN`4my?a(&F%n z59hiODx=gt4i2~0y&6=lnq?VKS&Re}#G&6err_}4>z2DVaO3>9vT70=YG-j*@@)Km zQ$*_ExJi5keS7OgmkExg+B;O0h#jL^9nWF~(*TdOYyL*LC!&WgnOjR8QLv+|eXF;LZow zg8k1KQcnHUGv1{LJ3Or{Ko{UNoM@Z>JNt%HyMV=%T!-AYuQ$$ra{;P#e}^`vtHh75 zKzNx)vPTc0X3fVx!A&pET(=TF(F47l;83Qm0)cxKgB)l<2UV50Ka?Sl$IFb{rHBym zU({$?;~v&4LC&wTmk_uz~RyP&7{d!^g4uMJ>UcG7Q|!o`01Y(gd!9C}!f z_F-36pRczqN+AI^36IV>=A|Byyp7Qzwv+%ji1)cW$ps(81u*BPu9vji(CT}kS`v-{ z%(2M51{=WxT8IdBsoNSYA5cvgDiYjDLnW?UCm5zgOK+_gw#puU&}9ny`S;peD*DvY-T)vj zMgfZ|fGLDpT_iTNMpdiw9_jBj%(AG%5NN~nJGa~C zGT9GNVW`)NAsz3W^PK+sWnc84*8wjn&U95ZW=R#H-vQ7)J;b(-)Ax+u%Ga8BdRO%J zi4}?Fj%@t=reR6*-so3oLzrC~v}L(t_L?J?=drZSwFzwee^#=N8nTfz0^9={>iZ zwiT?_koTQ~Fe6~8Q(502!;yA=VX!7yt+sym`!>TdeQm<-pwe?=OZZt_cD(u|kCmx` z%F}DC3%{zPDs)6UXa*g9-RKEXYV**gy%P)GO6tr88fQ7PRH2)CvV$znz|g(q|98C@ z4wHTKVLC`$EjR=MHYoA~h@s5xR{k^D5%6Do!t18GABA^x<)J{w1|j5|G#jdVprE)B z0Lqo!DBX{jzQ07&5^B#L2q$W)YdFU{DuLr-pW;}_{3$3xluLP|h5OHES&sNz#2CD6 zV9>H{&?n&7?|tCwH2`l(MQAtMo4Fl_59^0pdo~^}O2hhIn~&W4?V`%jkB8n|`Qzvp zaq5v+Q=}7^=b{BJpOctd{YmC;$XM&z5k(jhY3GV6(oOigm!1!~-gK+B<|`%dBd<;J z6y)y*dMNd(RIYk}>i7!r3^}Waqw1-)4S-cxuQRKY%>K=^&7a7JN-qK-mH6Yi4)79p zZ~Lq(HwGZ@gY|+}4A}{T49gZxqU^3u9J{aMqtKCx#o2Y)%+L%$AbIkHi!Ih~YK@ki zf8Q?fNm26L8klII1E&1MErgOCp2 z{X}^SlA>_*&1LK19*3?3zX;@dS0|$1s|O_-Wu%4^tYV4THnyFxzwvpW)g7XUiMOh> zReKC9*&0T11Y1xU(S#cFjha-L>F*dC+yEPno`s7=30B%t$c0?0F75)bJNltlv+>E- zJ=2s#_Bngx{M&;{3WThBlRVj{CW5&2e_Fk)>&KgV%#!Z}WT(U|oH`!MNt=!DCC*#; z&Xp}=DhZ9ul&fehFbEhB&StP6NdG8O4K7^Dy|11axl=4RJ-jqse>FXo4y0{qqyiki zW(cVI*xc11TjL0w+u!=p<|fG-hVUZGqEMUFPpihD@Fs_{?w zT3Tv^!opi3s*&OzfKN2qhEQw$)NcBz-m4bRd^a_eGyMYmtbh8-eyjGa@Xe^0v!Ko0 z@q5aB(FbUGT=uNIQv2*lyAN2FKQA`8X`ZPIK6GUX0Z^+tjn5Wf7Y>Ja4B{LgGok~I zWQFgJzZRL(tkWv6GR~58@=KkzA7W39dzy2ded|XZ82tWCduf_%L4ve`RSTgWA|j#Ui)cP9=*wZR8ti~Wq-l{VnbsroJSU0fr@tr zWzNMqe8cnApLeG;?)^rpE~TRl3K=q|bL%RC+NIv{r~caW@ZV|8*!a*v4Zfp(@aZg9 zyEJIEs55~;>s`+QU{lq$`FuE|&`dfM9#ZPp$@6K=yp3E?ynB>CYmz#8Z*{;Rfn z!@X*v;7A`5pl>q9PwtR{5Eo`~Zb{`j3t$+9X<5AhSii*zoh%!A-Q9#9OIpgF*ZvaM zyX5MG2@Amp`}JF=i1y@0J`8&qVEJS&L#BDI)yHE-+}94*EUO#s3i^Qqd+_&LDx@+z zb@scRWNbpLyLQ?QIVWE1M^>OdXHp}cy@B01y+3n{^n+tTi<}zq-$h0<`xR&6cQhI< zQX32QFHlE|6)%-5jd%h2QObW z*X{5Qb3huSCziPbS;zR(i4DRP{`n;NSAyp091sD^_`|rOPq*dlZeF=2`JE|Ac;x4d zb;_J|V%A9DSNl8a!Te!BrXQpa+f%;6c9Xwh*(-iF9oO^wD8avb)Rr|Br)k=ZnGz~y zly9SP80S@TWv9J0WJ?d^dTJs)=>lSx5FiV1aOi0E_AGR zOs9Q$ymyrVuM>I@Qc)TLkeNwA_51&pF&-xqY`RBToyvjN@KjNmu+P_e4S#2qek|Pk z$p%OkH)e(#=d*^>dk)iEtUBD=PM+c}dQQ@79veuHimEU|HH7)9L zE;&br9kK6<hcKIpeVCB|Ci+B?SUywV4!~yz zqA__#|K?+S$bDk6)N=06)Ipf^Zf6ST@n|1!F#6^Uekl@EMqmnkPxmR9%im9=)pRfG zzWNEr;$dw6PxT*bA4AaFR?QkfaHgevb8g@)@U(TQColI{ZR2ybnU_-NQN;Rpiu+4QN#LexM!RoIsQI!L zU<_=G;bG>CH08vuQZXsJJ_g^US6YH~V-D_#K*o9ciNLi`2ydg&0^vn7SxKYEe?p0zRg9mUPUd2BT2zn3hVCo)e$)`u(28EqGD9O{3`n#u2UVnY ztlmu(D5neo4)Z|C#CGjsc!7JhB8)LXgDJDZm2BfSPpL@mNc@)Iko6GTl^I&dx zvqo>Fv!E~0P8ws!emoam!wKDr@ZFYX0}s389vTW|R~ez~kA3`_s6aa$?7BE7j{`hI zF!Z$4F1CI6oRg1#g~J}I39djR#FK8IKZ{9PP}XGoZzEip-yE5)+QHB^zHW0JqWO`$ zW9q#l`6pyZJPo&rH;mPFDr&QXFm@9#!MGE_AY-qJ30Wv)_DQ zHWje51`=jGQxS*ddLR8qQF*)W36YgJaqXsXp3cCY0LyN8ru0vAU%l{fB6}gz_C%gW z%3*7zeAf2}*gY>C6hru5U5t(&<%~^r&=y>lzZ-CW_G`TgEQ2=u_{_BE5Wwc)miCjLzESL|MF0@@%Yj?$MVw;ja5wkQVv6!|5a#(*J2BOG-O{{k#D@& z!^0$s0(dHQPq|WkGp}s4X(mt>ZQm&Sa{AP6!CZ{lr+YzD=?EFoWQmfCPlk2!N2 z#?L80_=#j{BAst`f!$@9Bjbd&_~x)@mGOWKyAN{M46A9Dq`2o2c7F}a>7TtK%)okW zhOALe`KgI~w8#$F7!gc9xlA4Bc<7Q(%v-~|9siv09sVG;b_K!B%gJ?B`MAj>*@fDN z0KH&`nn9bfe+QC5=!EQ=7`u)?M!MvO3y2+u@GGg!byB}6&ch`SC|nQZ4A%MV>md+& zUN-k|KjlJ`Jyi?IO20|O{o1wN{A~K8?9z}fY|Ug|-k}+X$LwHfl8-U<<64G8D#H6T zBqc$zc%CqL2}3nNv%*Oa>J6E&JeU_^NyL%-KTnAf#!b3POsx6Mt#T2YS6`;)g# z%iasqg}ny2#cyj%yqc@8E^0%H2>l)JN~!FaD7Av7$gIIgE1Nhl$cnREt@@A1{vN>O zHC0p4+0i!DSQj<#9Pfx*kNAbv49oKMYXxlbk=B4O5Ta+*tfS9ZwCl&;zDnJsiRv*$ zaXBWK>As(RU8S7CGkni4WiN1j_VfKA4tCNmRZ6TInI)u13uT}FM7=FgbxKylwe&)l zNVd?9ejCfnRWHwH9J+4oz>_46{NQCR~wF2+VFA8x$>!3q7G%|7U-TCb0;H!Y` z;Wf2OYn*-aIwg;R%7HFYY%*!_EGNfcn9%#_w@CdN^6QeN2(2Zg6WRdIFU(Rrlh_Cq zF;oikQ27(fg!o4|Wqm|UV+XXb)lRg>Re|9G;W1rHg_g6c{BAH#yFd#v?I=8w&In%6;l5a>vMB8 zw{=AnJpX)I^km>mjriNkZ@uf|wdkFX+NEIPtEnQQ3L9Q)cSKHXpQEB<<8V-iR(>-d z#>M}`1IF(Dmjyd!=Adf7QGOnMm&i)d53FBf@Ts|)Hk!@r?H4u7|q(n5Q!^ z78;%9A>ZPNBhKqW?rgAnTfAYG->%E1NBE}E`=8a>!qjQsYH-SDU?tA6-wqB&cZS;m z7TCn*6`In{&(AM)EIDy(l;ojO=2AgghT=Z9^W3$#!8gsOWH_M=C}|N`aYeE$Q!J7F z`PKzWoH8#&-j~LubBrs@1!sFPe>IhMPvep=CPq67T6U&SC;5Dhmxfs9v$Sv$jPxa0-Pd0|l6UPYuovUPekK$t z_s?w$prK^A^{|9>>A{26^yU9q)9?M`RwXM~QrIai1#6ck`9+YJ_|YM2V!V)(VBb^C zQK<^k+{zd#W!13?(MD{d(cp+`bF~O%f|rheCTJEKZkSHvVbjYO|6YtC{>iBLgWLj5 zluT%h`UGs8!BR|uM@Z9*{1I14U-*f+|FWxX@n~XqRo-rSH{eayb1BZz9*OU~{u#0Q zK>?dSa7qT(*?>#0qZg~t#w;q~8w1L&FkziJ#IJUnBO|Okw?>@j04CosT&WDJ*zet= zbXud@b7sjx-$PN^?&6q2NlLS#;OPcJJR#X+beG=lV=N=E721+XbE@v$)U(Gtg>%m( zqM<*?P!W!z-f`V6Og87&9RQBrV0oGi=V{niC1`E8g*T*3SpPgW+jaR8L94rrkBFOd z6!!FDl;(V}9fin-m6aP_CAeFI3;k|6SxedAWb(X3u$ld^+S-tnj4 z*qGD0d-geh&?f?Crf{$rmG1`uCh{Z3`k<2`l}2fxe?c`^O?flR=Wl8D`w6tsp2S6J zDg!XKI^oX8RPSVtholbT)$2{|#Kn~dTLK>ESsnrsEn_}?uNcj#X-EUP_&p)aWhJvZ z!6hA|q7&BK7TXL5gL)s=lr#U_V6%lyfWy|ex=!5bn!#hbNn&n=YeqT?RS>iG})uSsi+MCs0}QS?T6Jk8(Wfl8P%|G(RU*a2Et z+Y6!R*7#6ZulXLJM}7C>SL(JZnX+?pQ4X|!bHl%@ zHx!0`r7Jh0G#+%t$Kb88uPpLw1YooG>MdWkAoSF)=R5T4$x^49sa`9S;$BbTS`4-< zBLecaZKht|fyc`p{jp9tU-L_x4y^Zw^@GipPpCEyb5_OF4j38%)oO1$R_JUaeWE!Y zt^TtNm7<3^$*crKEfMFH@95la`nuEF!_oXcfV_wLw*blJm%)=BEl}t@iLmg4x0IMU zaIME;H+R8yu5+HjWZ!IIo1IFw?dL-Kk2>T^zG5jFzF%7^CY;=~tDMZ?XZg_)r^u(a zQ8txga=Qjwy8$M5=mxoftgO4`CX}W3V&!w=9oYYtvOoZ;>9}NJ_c;XNk)|9EL~+ug zcEN=+WVv71JS5y8&+Jb#StE2KI=U+GM=-r#o&6G_;WW6lMVi9tJMdonGmfnk?`WA`|F&D#um&MOz~a2U z`0i#Yf;Z2BB<#8`?~Sgj3C-QCh-eWX?z?8ZU|Nd>=Z^}WUsPIu8`O%c+oIqyyh&>Q zOjC*`?vuTmoF(I}%7^lO(T2Yh7J9b^(d=yVjJU<#jQ;*`?=6G5ZZL75FVqhh;n9d+ z@+o8U*?xnLl61>Sa#t5LLg~Vvo+^fKR3NZ#0`|PAxs4A4lAi3e^)aqi&DJ#sf&Q>+ zFWMH{LUOemm6lrSJs8$ZkGIlOBcM~RO634L$eDUjP=s6~o`VjeDJ}Mj-N>U^`%orO zb^CcSy8gSNZfH=Y***^%o)cNho1RVnk86LHSoD;>Uq6UhW$$NOB5=sb_L81@#ifyb z@-hh1kl>!B=9!scOT9!?Xj^hk9j;9SQd9jC{z@g2h;;`9IleKZ@)V1^@rR)W1w5%b zZZJB!W2$THEqcVk`rcX{*k?&Dk*C6GGL4D{<0M3iKTNcMznAf@xI*2IOKT9D_x6dx z1?}*B{dydy@yR5I`gY7sS}&1Ta^jMrnKO5md_`YM5~g=oTx5mz4T;vvN#9>TO?2ul!kk;r^Ih7fXyV{3Ag@^Ez0P+kE z^3!eElW5RX+>fUpf`(BvZm_e8RVRtLQY|RWXM1wG3_W9gZ>V4fms1W)uzo~swJN>0 zDlV+zQzO=kkS*!71 z>}I?`PnvG@n-?Z|9~mk5m;lzfLU_lxPtU_78v*>Rek%rFcM-GM74T&YiZ(lIFuV0$ ztUxygOZVY``SdjKUp#hf)o1}i`&0dzs~5q-E00G$=}z6a%ZH6Y+=%r@ay#+Y)?a=^ z2)$DuPpS4mV;O_PTGs9L?9S2+ow;Cx9iD-Z7xNFwbLjq5U)e6wW{@^iSh>JqdN4b` zKNa3j)A7#}^x2l|3kYYo06oYs^H;i63zp;`6%Kw^&HLM6SXTzfgQ()0J{S`ouW9?- zOS=@xQ#N~nUQ+>e@J>9~I^d-qjoVlSPWZVTT)g&D+_bK(1xNWxFPfJvW&C%WyhZBW z_B0Gw%tBvyqsldYW8)Q`y2J;@=l$O?4SwiaJUeAN;NAexnHgD_D0@LE7(kV%zmNfT zt7!>@YaTXr&-}=JUS^LgETEhFl%GSU zwfvn-QQEji4N^WJeG7d)E1{06Mx^;HygYo;tgNoj&s{dR4AyVBwiDxSJ{v-2dUj(1 z+qlYd-4y@*Gcf-84AA-%kcP#w389D~Y($D=GKVD0xEYmo8{&?zhx*8FR z$K%vjoMnU#s0=!j+mv2{)u!YY&o2L=OlgkhR79YHaDj?Rj5-M8foFc=+uJvxW-^Qi z%CiplAh>5iq$8y9D8vY?NDE6<@Ts>tz5Xd;P_yPlU3@mjB(N(ksB(IQ&rnN5PNhPx z7csBwNu#DNY9eu`=BQy4sDOmJuRt`{#(F*AJP>O=PiwxNF;|Ajmwdkp8#4j3#n5@v zqy~8yW>+ze%@eR^GdbNG4^uRIA0C6MYa-`R&TVEHLQghqgGNMe$k`?}FR<(6lZkJn2EJ@rXnkWBKjU;0lak}(W9$!YOeXu=kJfaN<*4_#)0?IVw zc|jimrRa*|=H-gG8bAPKw%UsM|q5X)u6VOrBHrx}kRCPST9g5Y*?F0$5 z2YO$H)v<1GZI3jYVhcuug()>T?98Nlt658V?nfE;EjOa0d(7Gs8+*Ov#yGPFJ|z&X zwth3h>Em?|^{5u`o?B_%cvK`UYV+BL#1}%z=(mz1qH5lJWbT;^!E~zizUg5 zCc*2L?xK!UjqE?f z;lP^(iaN|iI2VSQQm|o zrcAibC}30af*tASxdBOJyT9jKg-}hmP7a5=mj7g;SBV{a+3lEGf~o>WlY~el`mxXj z9tYA;WA%<~SLm#AIuX*!BV+P^ZFcD45us?1X8Kt`#(P|3M!*RI2B^7=+`Uh<`MKlK zB7cd~*`vn6dST4LdfIm2XLf0x)oDPQG#ncf?cNbirR*AQ0|%%QdG+ zCT$yjj@YXmh<8+q_YFOIh>W!3pb?8T>}MUW_UtIYQEIM+<08_D2IIrS6XH6S_6>^W zH2U1HOb-bQ+rG=HicUxHDI>&xEOCoAnZcrwGcfcg%Uxee?%1;kQE{yzJ_km7mRF0g zYo27l3$!B|@EwfdpIW9nFm6htA&6lp9#Qk6E3O^0b>;6v4p=3QTDZ>+Dxj+Xa>f1z zBk0T&cmKd9SHob1z76M~i2q~DFQEeNP~NdRt>V&v$7ziy-W2phBULIK%O3vEr`)T?zTUu@u;@sL z#bqycqhTp&diz)ED5te4S-9r03FRdHyStti z|MkJROCV-jq!9FVL~S@MdtDXuUlsuWJZ4ZHintF9h3VH`BP77siihtm$Oz4V%83SG z{FKerl#R2BbN{>__D0hvBf`_`l!Tt6>JMiOxxiM;0&i*z6Z|({s`Wmj>+|S5MVH~P zPKCo{N4)1&3xTo6$3LFr{DD!hpPnpqh~r+Kr{MN^FMF=2^*DQSg49tB`zl@>)9a5m ziTX4{#(G0|T*itCA;>pXn>KaR9l6?J_|jDa=cWQDEo0Us_#2;ULx?#Gk5___mA1pV zSz6kJ-83dMy(?RQTab5?0}^@sp!Ndf`w2-cYec7QHJ3S?Rg+d@PROYBD3@cYW6-~y znv}RzAogIzrc1<0#F>)Phgh|RRPGRN)z2Wt^z`D!PUO6^?U|Fdw#h7QreiGIrQBv?O_puKnK_MG4zA!eI-0F6W#5PBu-AwJA^J4gGXv2 z@@gPzQW8Xp@k6Pr_lXOdt8%Ns-Lg<@X-6IDa#o8q&C5 zwHFk+bj~|CjRSFL{#7MKdHswiNULn_HuRl8l~wcfd|+kU6>(Wn_DlTH6}|d`Z9OU^ zy-w78PC)x$OW9;T-*T6?XEq;1g~E0Nb_-b?s@|DXSP0PF`kBm$UKD&h^{ysYc$$qE1PNjjXH2NGWNDLlj8udWO zzOal&Qr|P66CW2L`=sXjtTiHwP%m`D;=>;pCage zvhW@Zg_470HfuW@C_zeQ|J{;6!MQ7KKmk$`7oG^$yGrhE$jC~8?yi4c0<|!rceH%7 z?U`oH^-#v8%_cgE+iOa>(5Y%Tq82|$piZCqlKa6?#fiJnKn{3BzZk;Vyx(QPZDbuh zKPJ|)?@})ABVRSCkdrHcA4HViH8LSjp_tL; ziQa!W=2A>wtF7T#B}n7DpVCg?$AK(SjeK@=!c{K3Kru?pnkxAu)I zE|R$w7AG z+gbR1lj-~reF-dY{kfVo|k3G-Q-0|Js|?%p8V*(MMGc!aO4_|8pvE( zUf95Hd#%0zmNyzcPmGDxHKC@{{F|ObBCBH_I)|3QGK9pn zaDVNAqnl^(R|#PaV9oFQ55W>dtw0(q2Ad$f?L1YCP}J-yyMV74eG-ILYnS(2^1ysMhq&c_Q>?5sz9<|IuG=-jA&Mpz^B$@bN8aLsL`ythWD*hZ<- zaJ{I65>QS-DHymnX2;)DqNUNDBQkxW}FnB1N}pBqc9Q8|KaKz1MBRTwqrJE8r!y=Mok*qPGj3@ ztR`t}+qSJ8XUDc}eET`)y!!s%zt%l#*35+&;+Kx{ABaFOYNKs@dNlFy)|La z>2a$B+)xP9%t#E;w=>CAw;VvGQnf&$FQ^AMVTM`YoLjRby)Wi6WW9YU%AT+n(fr9= z+9xY}0JrM*Z{F5sG6QYg-uo!|zZpF7%ay(hR7tzhg z36wSSs6&YRFMV(PUcs|{Z?kxc$6|$FZHDXxXy;OEl*H8PQH@my5HdNUzqAuX0*T+7 zQbih6D&(n-f305EVowf}!Y#g{SoH6+;ug-1%sTnTU||%H;Nw-a4UyKMZ9n1aaCNCN zjTMwto(sXjYB38!zoyv_mv7;3|^v5kD@Wl*Hy;~kY%CI6P0WG@$?z{WI3swnk7XppwT zRoW`!)`-uCqAgqVYvkBruNezMHVgl{_CeKtsK?_#Wz?_eN*!zIsU(kR`(IyR2zj+F z%?nUOkIN5simQtg^>7eBuYEGsD@;kpO}u@CifO%*r0}E?R$b}_; z=-JcE|L<2^51^rZk%E44N*A3aB5jV6;3}#)5meu^EfOb#9WKSR6m5ZTh?*GiEy+cd zQVd(s1PQwqPrd9mfu#P}_26+#@@|9i(C8vD2H45Cz)0{;NLPwQ_pB+*gJ`aY`EwSn zAZNY>>h)E_E^$@DG%8!51+F^1l%4dEh2auNdUXQHyc$vqkG+l}-M&@Dx`Y%b*G=bq(MC%>s#J_bDn+V?$s&RC8&^T z6rIu;yDPi&P`7ROgnlm33UK?@{o<|IMeu`1m%)~$0TwbJ#fz7)3Iij>>V(Av+l`g$ zqFHDyl$-@NGzZyUzXlEoGQ7mQZj&%!ZRun4HGG38=zRTJ54M3U1IX*Sc#!NPA z7Vs9TWDk=qGPwpuT{}0tig|oke`apA{-4*~-9i*qwV{92>Tn#QsZ5l>()c z32VK{kAL(ac;nL6KlWuP@nPgj>tMHew^B=FV5r|r6T@T6XVn%+A=J#I1wk{@IOmlL zpe|9GO_Vb&yatZ6(y4b~-nH?0q_Y$kN(Nr1(5uy9xRa_K+9y(+@3$bfk>*5)aY7ot z0Y_~4z`RzN1;O)Q4IHrEl9|#elcYH$G$oIXLvFK_$ee_{cxNmV5H0>FJ*@(0x|UfO zF*ErlLy-U|oU!yCS}JSOza1E9qT)k-)R@dOiooUWnU?)VF4!Zcr1?3j8oG(AI#-lO z`?nYen43YCiQs6CAqC%hkSRF$cHX&$cq+FHH7hh(tu+A zP-NiY2e9TxbTS7mL$o%)3=J4cCZ|q( z4M??;sF=a*%a{Bd>3!0(W8W9$+2D?Q(o(=~sS>N%jGl!%6m}(XumaM^~j1<5Hu;IHUrWtC6|t~d0_|){ zX8m}$3AV4n`FV5Ldn^o)S`-c6Si@W{fDO5X*lTX0eddsYsk69HLxqzO)=P(F*|;K1 zA46Rvc)O6hq0jgCJO@UfH&chuLsadD`Zv*V!;ysl2ux6T&6r+ZW{l$VGbeBEKRxci zh_LxOjH7AJ4=*-$IJ~CN)Z3FhfpXUYwf(Cn*~>;yQb;s z^49IykGcnkM>dr-8^Dcz&;?<%dZrVO%3bWToOef-F-_0b1{C|gdd*YjS}#Hj4hc*B31tD`%My8m*_TpS(XS`*>k`PrRV*ixB-h5EdPGT_D{p z-$8arv*<_~P6cw?q?9NBmx-8kYD#6J>+PKgE)BNg`$k@rz`v2H-3?9^zsG7=^4THk z5NS|ICfLhndQ8)2ewfkjij|P{(s+TLx`;SBAy5rf{*Cgv?se`3jR|EJH<~ zS^P;1sOOAo@Hw)c9IOJhKdvtSYJE00r%feHn6=b`*zroHjg)w^wZnFWhNiFTw0T}T zCj+GmSxaZoEr}PHF9xsTg>GHD-j10x{L`pUa`A)3MuY|4#!EtxQWTy(@_wgS+|312 zAahb$=NyDnxDSIL8bYKk+y8{Zo%!fuM#;|~ni`@saK&`)UHhW!E_Nqk5LK1WdS+;}G(s|q z5l^Trk5KPKN2XN9GUx2POy-pTOa>&CvhxD+J8*cO)OrXx)ijX@DHq?gse90c`Bl4KV-c4^tL4nT zT;*>o6#od2M^&W3sli6Yuu*MypjrYUy=GSi^5n$ZCf6$xvBS zHny3oxb07_4lCX$#^gzDOM^n899ZqHAh>7Y-{fhXVidi_V&?iReC1@;tWB<_eyVNR z1nlW1Awz<2u1x=(_vbCv%^3r20>=P0ndV5?jEpL3hUl}aE(#)2Zc7lO>tXvwFV^Kp z26TPM(Ms&orDT@omiqTt?1}jw1qnsOsAOxK0>hQj7Q2d6ixp}-3pa$1zjVlag;1{6 zhiP|Hb-lLR(sP!po`AuB@DMzanQ_HWY$q6!&-1#b{HfB9MHW zd!098VFgx*D339-In0@|!a)kZr$wBaqYcQ37u>O-U*0>0TOY~Z1H~nutKN+FeHt4)4da^HHj_QY?}yym0`fN`zEoPRBs zHibY046?4FdbVsN-{rzlwO=i>*%z7hk|UT!A_;ciq@+Sq&h4-L-h@zEM1`hT2>cRG z*sy&_7=dno;LY%@n8cPh?b`PYnSz0%Q8;msG{m%|Sn{ii8EjBoqdxzQ#`%d^Wg;k~a)B5ov7&;)#CPtxVwEg19)TJ)gJ2_uiiCV1Hv4( z9%k_RtDy-zj9_)OC4R=p`J^uXWpx7nLPIl~%4EJXdks}z2(3+u1#*{t72bwS&KF=9 zF1)4Bt?(c_Gg8*DrNC@l7-j-4aPaESrF7xY|WvhP<4NLN>!bB}c?!pwHsUrEXsu;wAA z$7+^SQs2ceV|8NbK?_ezUvN~kG-neh0DXOcJlZ@!H-euZ`aC3;kqYS8xuj7XhL1=# z=6NS1$;#QQNpF_6AgXOI>e7r3bk0JW-U*a+SuJ!+le8mr^zwDM2p^_z6#TlnAC5@Z zSkx$AQjKL zmt5$)kQ?7pOP|>tjz;NVpO0ptN4B-cM!O}S4CVyg{S8e?99}C_^7@a`Jw)2ptM6Ss zo@Z=daTneEKA~HD2Sy}kqh{5}dyaXyo%;0bIJcsOV5&Va&^KKLzG$3(&%i$6=zo1N zUMQ9i@?z{sKCJwq2}ZJOJdVPWUHz>?T{hC7EeU%{B)Hm7Ckel(t){ zNRPLS6@p7M;Ki?2YilV@r+%iBPgcux2UvUy__uetk{vvKKfqDw`?#zF#N>94Dpai6D=>m}+|4Anv23BC_ z9>JX=FWo!QJ+)mT(k<{BbP0I=I6}>@)C>DlQXdq9{!|%pL%<_j=Wn888f#O$FpY3kfsq*VKYh#8s8vq}%rlxh{ z_d~SkU8tZEd%H{gYCBoYRBPMBnpt7j#!f-3va{@l_17*%J=s4xu+`lJltbfM_|gQ^ z8I~bRv~o!=!yG-w$lfpP8RweWnjbS>U}F!Cu%(W`zby;h;g8U#n-0eP%}_VsQWv8 z_)Y6{(U&cmYy4$DpuZ-=nZ?hx6_Mp8>3}f{w*oi%8$(R#;$W8Fe-~|fYFFt}5+3d< zEfnguP@YJJLd;6k`8`UgKl1A!*3h=dMWhq=;oiYKQ~)s8q8br#%c#^U$1i%gie{_V zw`P1dm&Qa48*aD9LZ4P(K^jVgetoE=miDxTO@{L$o(&i4 z{KKb3l(L4Np3y@_u&K6+5n`iTBn$Z6_t6pB1YO9!N3PgJZkIl#Ak&L?l6({wc{gIg z30C_n`NSjfIC0;#QD96pzuXnh#Qb66o3^N7qb_L7>Nov4?Db~V>3|iTQvV=>PB+j4 z>oCO{$MEs`QQ)wHs_?i7ntx?FuMJ?Z%1X#f4NXRxj-ym5;|_P9)Z468i}OBGpy^AqjDln5UUkt)+V1o%EK2|E z@B52l8>UtK{g`G~rwY4P-;)o#M&K!8;D4nN5bw#vuh-#sZ#BOZfl)>5s}dTtXp?-+ zfE z$GIN?(}J$CUapEdu>8lbFf+iNn;v|Ugo$D% zUs1Zw=5El>Wxq7uI+ciW)9s1EcZ!Oq@KsZQR)z9oz#%U->6`xG4EaN`K4fC9?O^`; z)TX=Xy8^;KE6ck?l0%)X!<8|Yc)0%%2?0Wd-V6mFYGZ2a>gr4u5)&~5KdxhLuVef& z^j`|~cg*}A%vx^&d>&ISm)k?TTq4aV$xm|jJnq_75qKh}b%TqS7|NTAX*=)vuuqbQ z^dO{V(;@bK{hb2jA+eoU;S+o)AM{dh!cx+gJiAMycfA$w<+8r*%Hn&Z0xi>I zYUbyf7l@IX zK@3vV5RY>*Klw;($>+!)Nl&5_7h?h8hDB>zs6=7FT(}G_Sn3$^OJ8_z9?~Rx#u2`* zKi=^9R$ls6aK#H>KJLRpt_cDac=R^qkj-@T6%f(BPXDG{uB&(L1X2uU(SNJ?i|mhq zw5o8d!&ld;LL6y9l?Em-Rj#^g4`L#0`P=Ejg*+!-aIU@wa7w%1iNAEt19vzR{vi2M zk@fMb{1Bj(RMuGMw%|iBEn?_RBfaUxjjphOy>|x}n)iP&iCxWyd~zgufDqaU66jrA zJr%o7^}ToJ+xrr1#f^(J@@*<&pLxc8(Wq6UxtGkYX{qY#b|nbu0BJMYSKGm!riXs| zn%&MjWzQi-{V!t)(?c#l;yBBpXnJvz&G#i_zpaitNaIkC&!yf&oe$}ERbL;UKly`+ z*O8Ii&x`G@zd_EXebC2@V?2k4pFyIbz9!>N{TcMR3vG8U9V88|1BaVJu3H{fVhaCJ z*mx|vgQA!CY;2K8576vbyFINLtz}6wgZE%92@G{$>a}tuTC;N*nFtjNE6`zAgiBQk znFbGv63NFKfx`{neHSOAS0tv}>IFUV6KO)q%4P>5^7xoV^B1duS?N57qR~0QNJj}F zL%}vo5$}LN4i4XojLp{o`m3iQo}l}NMAC?;l>Lkw2CT$YN!>!T6J1#(XiN3N+W0&maZts^VjGS zsS!4;iMvJ(4qcqO-p!Y=?hPj7ulrJ+8Pb&k;DB4Omj!zvz^g;*IiSSv+W2A((+b4Q zho0ul7%xpZN~VY&9X$j!kaqH~gLM$w%IonHZcIz|vLxCeMaHGcsu|-?@ohZPJKD!C zjmC2L^z}Jx;x;wB&AO2)WXd8K5o*XO#l1zurr*u!o}+5h7!MA(uWv@oE@}a=G8%S=mT{bI%2&hg|4mRSuUOCs8{)KD~H64d1%@z*adFDl|lQ9XmN3 z@wiMf5B#mqLtv|)-VB4#?8<*M|=@FxWYF*TOPs~Qg53;=4Il6fQk=~(RUy9etcGlMr#5vv?NgVaxe=~G?JEfAKSw1UE=jZ zEJ1C{_=Y?`->%L2VkpbbwX@Sk22!ZKp02UnY8^@})!Z@UC*;-w!ZT<~Y386|Xs(K372XG)-og|Q_+yvZ(JUX3crE7>{!2V6R4%aK;?h& zGZCe2DSJirR6n10h@`S|I`A}a^YJ=uH`t@)f^t{46%ROYlv}^U-{Zm&SEk3a86YGC zPY20_+UH%{3mVBLsi%RWGXn90O@JCwSoAx2N@~tye>m(fNfNOjYRn80!W6u>CGo<7 z-{=6~7*|tU)o9R+_Rv^U*PT$B=bYG>-g5~^Iba14r5kq7*p-29=b{;F_5RARW#-l$ z3~zxW;pvQXky49`z97*esq(6SAVQ<52dgr(MKcQOvT_!_e(XP}M2wFqh zTVmQEjwfK^n)4+sU+5^2UacUJh$TO}2yt)_j(<1XWmiZD{isY)%o+8+|FD@Ya4 z+Qg|j3ea2;QCR)~PT{f-$Li|fUkD6KA8Y1J2eypV_Lm11zJ_N>5h-u|{2jN%q9S^# zT++QJI7K!LSt04RY=VU#a3GvgrIm#!wK&56p5do|J;BpFTTPM|k@uF2U8Z~mQDIo{ z^-zhg&BPJ!mgyw61Vh-b4bdc%fLQGw&57UDyWW#l<-PrO(zoABSBm#Yfjl$V1AizK zzc%g^UNf&j(4X+qd6q*`H*GGGrRufs{6=JhoL8X-WPIs$}CvDYN&^c=9+qA2@<#4^L@gw zI%zF*t)*j3_sx_kDIF+K9`FPe?JFR{4&=1xn-(m$|88DQ`|dE;lcsB8f#x{vT2+VW zyg;W;ChOd$08_RYiXOCH_FDHgQ!gI4)vH5-$a$&}miVC(9a@?e?vxfhL7yUMn=k%- z$4DwRqF?heKFLLx&7rBS5J9aEp~y)b%kQJhE5c8}qyCiHNark@plr;slyY#`s}#tH{HmAx8GLx^8ExwW94(n{pCcLm|e= zi#2C{KPo@j%XZ2(&xWTx_ z+isB-P#@YNpx*N1|AsO#`(lE39h#ILWCdiU&b@clM4)LftExui65$ohY1C+mHIy?y zt+>Ib`^QnLTs*4i@o<`jXm_+%xgy1h^8vw*9djjdiYoYcv< z2-G(R^zIGI`>l!*oo~0irfF>0A)huc$@yzBH8X@~E=?;TSDfyUm6#mk%6 zq2`yzZm*Fgebtj4smrFTP47#rYb@u$1s))?KCRDw-u=1X2^9XOy>10G8^h8jXh2|k z#}67nX*aNk3)!Lc9oQdmx_tx`h8>DeZqKO+#bg=!Yn7+u%gOW)W$-__Snm(WG6V}v z=#b=~U@*BfB&nY&dW4cd)>RpK-?5Nri+# zqxiv&{&d{eRu9v)s>2^apdFe+wNfa?CHfUcCl5uwyAa+s;A$@ie5{-h)wo`$;A(iMtlgmr< z3?rF_5N_|Y-geh7QQ)$LqI2}$Fo({(S$d2|VuzR(4QvTK^f9xS;U^<*0Ldkm=+^ZI zgks`m=DXqp`|40Lq2_O*hqJ&vVMD&6FA=f=j{?<-SsJ0?F!;9pGT$B=D>vGgLitST zY*>kA2hc)iNqk+`T^^h^fpkPs;&X!!Gj+FL8Ppr6Cu0&jn;|Fdcpf{M3|*Ax?dW>+cM|@`_e@pWI~>!kC!e@*%v_4Eu#xt&WSP>Do|gr-Xp?~ z&mn%{L=4;eoWHV}s3HV5U%%=5!fWNn%FkUR+<}&_znw{cKVIkSO?@#DK!uWX+pd=D zTgh4bn0tol1{tebLGbI2JWKO347{4v7o+>1qnUv}NUVa!%0+@?*nq7S5=^p5KM=}I zB2{>rRUNY@c)H=)yh^ou9`j4yRGT5(8Jaj0Pa8Y!7K zqJkesY^;q=2IdXs{XGR77L29mi>bede7F9i!@~xhUq#~-PjqS)mgjdcexj3|jjqRz zi&oGI`}akyO*5y2smh)v#x+hDWr8JvqWcZ;Q!MG)EXa{Yxmufop>_dxKKu@(u4ns& zOQu^$FjwtpCEN_bsZTv*1}v{@^VX$K!q*hPi>j?8EqSTCO?cY+h*C2t~s#1d3}7$jtpqgy~ZTy_U%31%tgQ@Jqds;$K^ zt2uu%q{H~o^KPQ?#1DA27!^9sfB8AoF^Jpa$X}h6Mc*yA(?*si0d3r`B zJ=eHs5us`fq2U0I)%whj@d(w3X&q27GVQB2h4m_&1z>9?2@ zC2wv)9`*yjJmGV5{S9H0KPg>5SE@T0*F`X^szATJi(on3jfCtW@LP@CnM%GpNBfUIcfYm3fy;)qH&~Q^a0Z6&xRc{RAlboHfNW z4FIH9>l=^N)3Y@$YxTGf+z+9DfT3#;7W9_Jb^AQ!mo?@0ar=hZJ=j!hv-Vm3nbj;$ z;H?~uN81?{3Jxq;uY}M2V4S`iCU^PyMu-q;u z`g(OAd18XA-R|p$1|&8U*AYfLZA~tLPZQF$@t6#HNamb45g4yd;7?Kk^uxd&{jm$1wY}kFenF%X@S}{(Lhd)?Z?|>iyH|a-i$nr`_tgNSs zwo@-VXAF)wrOnzorDq_{(2t_Ko<;n(Vb!NCjyFHhblVNiJ{xtCk?<9nX^y}19j#iS zP{Zo-WpM7C$xa8v`d3Z8e52tmwcT$* zo>%h3e7){@2&t2wj~2C=#(&BUfOpUFxvfVdtM_rLU*Ty#tUGs}dNQB$fdcx`WYa8) zj-E-VZ*OmX!6`o8t={jm+Ueo!a$z;acM9Xtp>y*%eK}_vpUQS+NV~xuLwH!_^faZT zhN^K#4>u{XH4z=tze)Irml{i2u76BY;YoypRgpl(%7+s>)BlJXfxwysXE?&%{r-zv z^d+o1HI~<u<{N<@?nD*@va8NmNfdW?Ei+U0!!rcn)Vk$h=&u()N98HJ}H` zw8#(WuOFXsFg;hXY09WDR1=$Yv(^y*3tHh-?78XkJtfPKiWjx;wLuiizUV6r)-9^b zcLCV6))F=i2#(Lb?Eyd_l2?0yKouj%%RZk|gK)qwy>C?IWw~4R_-A1Q&B5q<9Lj+e zqJ24shaUVY?-gCMiassUXJJ*STy#%?Mqu&Ml?(D|&9KK`K@@$ns3>7ORUT*7D$In) z!h|r_?istlq{vS91|4gsX~$Yj1}&Yhnh}!bm+|?yKQO+MV}FvO?3@rs6wuk%^7$^k z^b@1eAV_YAB41pM?$NQxnNo(h7aG!#2JbG}|Iu4ElP)eFC&&!tlKUHN%YN0nP~^Wn z!NVg7>E$;nV+C3vh@AL_-jwlNYK~gjlPuT2EzZ&N6*kyD&n>IpN z%*n(~yi_RecH`C(aDDu4q@l{q9NE`fT{jd1Z^WTVfXVcT%-)=^>x$o*pu<6`A5g?= zzly1Wbah9%RzC;hJRr!mo1faiDQeRhYSW&x8LDu?`VRKDrL(?rM=v!pe052yW8a90 zkO6BIzd@%$JQ6e6fE2DAscOH{H)%3mdAC-bflf1D{$f;~(Wd1&(5-~=Kr#OSJ0A(H z9K5~&PLI82fiBq*P`)hdh{43in_*UY#>U9=#f5N#I~O;G`$*D+vEFt|&7U>Ba?hS^ zm+Cz?4fTK-3Cn6H5F~a8xn#suhx~n5+IZ`2d{2YQ0p?8ZJ&>Dy~@_Drn6_@#-BRM5ot1i>V^|C&8=U~sbzHq^iQgN^0QaJHJ)zW$KzJ8tOu_SE!13lNnc@2j<7gY z;in{>mb8XME@VAkg!a+~bqO|O_D~?B$D5j#o(VwLqOOelVQDiy?94dUP703?YBfCd z{&ofq)QU454JsJWeUUPhkifp=<{=u4&dtr_Ng+;W!>Y=1OPH8h^Q_;3=orBW1R!^9 zhn5RwCFEHO>P0_vq%2F_XxXtr;@W|m3&L)YRt$ja>kACF57{ZcpH9=iP3X}Y(xd~; zg{Rz8Qy1Wwy$G>IqKdqDxNG5><&Rj!%dGMUwzd(k5^tMi_oWa61wRjW$e_@;kvwh{ zAvp?m*=s6JV~LqGD3uefX z&L?xts!mqr!*GfCI9!m?G-L(VgW_rN-A!ux#N4E~+>OAqbp2PGPW~8Knj2CcCFVI* zqhu|lPINnE1w>9z~M zBe2vPND9I_n24I`AEV)Ihi*K1ahrC=Z1|Hz&fsbW&#Kp|sGbMnqIU>O^nTyK4kzFALqzVW0kB zK8KxiI<1ok9u-st)2))_gfs^?bJ?C}UW`v+weqSYO>^ovG6>FUP*7P*h0EIw?C zkGVDA+OlwfFLn~U9F%4C^}O6~3*Q>j_W zm`r5rO~^xei;_yQu$umu5=NMXSAgkavgr7r9={f26OVbTMkHo6sSF{;OFLa7`JW1@ z;%cX>I(~H9W~`)uW8yo6VP<$Xy+H2YZZec{iPXIofh`X{rCrMC8=j{NVcb9S>~T@! zY6LS&kW4Rv^JF2by>?F<$kXqgEqCx657$E>4#@;Pyh&Qn9d_)0G;rJ?&|h<>O-B?OR-~ zbGGI*HkgN;df`kqfE|5ODi>+hx-=;^KFA5nfMqqallW%}KHiRHW_Vf?V+>;GrO)Zx zcN*(vAZ36px*FoJ*59=yM)J!3`*`MUT}@gn>BYz0PUsbFAL*#eJ=~I9#hL!H1RcCGrZCh+~vJ@fuu`4C{? zv#c4NTCia=YB}ODCUW=ui!E!WW!|5J&P4vT(vd+6&B-D7Tr-TXtK{&w$pMl6Cx`mj zhNH*E^+!GP@s>Jr&j!PNhrcxOT(ob!Mz$618lt5y40Drs>r&Rc{Y%ip`DzzvY-LqfE25W{PB-6R%4N%Za~q{5#`{XM zA)^UhymDM*%LQO6m)~c`ettwUyiR6M^cvS+0oKQ0jf_p~@JY0od?8F3sZsD`Upm~% z9^VQx7axC}9^}+NqkSBq>zpa4XYzhL?i=$nb5}Ns@2XZgYsI4%zZ*ax%cI3G;nVQU zeL82-4pi)h3yWGr;zuP};}LW|&VzbXA=TYVh{ZYeM{kO+I_RXOI~wo{8D+k1$zdc8 zwDhP>%xQD`Ok)v%^dGO&MEsD=1SM7pt;^lV+Xn<0y1~PT+rw@>cttr@7N8weUe<)f zoR$e52W*d5UY3HKym>@t0l?m8wpb|*JgrMVqh!48iVDr2$_dG~%yX-bwOBDpkv7O$ zjG%sp4%P+i9JJhbvHXH88u~{Fgzm7o0cx-Zelu9UBKB<`0`phHWyCo>GkBnV)bN1T zHvG>cUPEZ53#|Ha4XL`S3yt7p%DFnF^YY_mjYu%}_w)^gPR0Y5G9M+6-N{Gm&!n~T zi}LXsr6_NUeRiRC7a=IgP)4N=yBG$hM2ThIy)G~CEI#m3_1hYQccbde5)tj|t}Mhi zP#IpjKy6dCC4zrd+bUFCyrmuaqh@9NvxX`D#MVDC{ktC}H>&k5uhQ8yV zyKlt8+wt6RFs+sCb#?kp^*z@Ds^5c{6$be!rIG$klL@!TuyD zWF_KeNT5oZJz5zzO>4E??-o>L{<|P>AM9nM7YJbZGX=FR&{LorJ)BpQZ=V6vL~fYg z$qAKVVK7JP91sk(E2jZb9=9D6ORkW7(YkrAij;a zp|%Z8)dO5yjsD*~T(1DyRkd>oZCBBc_Y<6t_-mgP!H+|>s17&z^SM|abqw0g>A1gv zhw{X=5)m_cj?RA=wr!g?d~Q3dJtw*Z5d9phdav;h`(yn&uHdZ1qG*nV4!kZ0o>C;d zUVL_4>|RoC6OpM2N;mYYKr=DQYc_mKHgU~ct8YAmEf+=NzbNfPhniogR54hUsta+k z0Gj9ns0xZb)8PI#V14Y^C$5tbtXsrKil2D?GQW!o$hw6E^cAQxHu)i{zJJ}decr8n z89dXk{W%idLIIm^%sd;cZ5!~7D%N-Yk+f#m^O22QN;|(}^#21fy#57Z;0dx6yw-Cy z++c|OMCsTLU3NLu!(^OLfi}+lI=y|ScH|_TD^Zxlh-Apqr!s>r){6YaAMwb~gcETR zfae(+@%M#$;Dga-mFJE#-RRI1QP^*S;*}4!>S4MDNQ??8>2K(7TLYt64Iu!C`g%K= zrcS^~ZoA`$JUa54Fw}L!vUeET)6&U_c-H&S3jWgcQDSo|HLi!aSTbcSNToh{-a;D! zFNd^!d$_%K5)%2oa^rAuuD=HWs0niCtujGb zZ|*j&3VJUXw+OHK)pM?aZvNN!%*Ibf;27V;+va8ZfYbR( zh2!0n+ab+fJpVebQJ`L8_xi%}Shh@es=fxlr*7Ug7R;@;z4LISz=YM%c1>I9?_23; zP*%y`ZT9U(*-g6+h&x~7%Fut*sdjTFKpAg2Z~6?$m-uwOcPnOV-FB59>MbHXT!4Cz z?Rk&kzX1%Ucm50MXd(BF1@!BO(_cY+S8pBe!<)efBRpa*p1o#eEmD9d|k zy2BT`v(s|~WLk*mPQD(tI1e$#f4s-?yP9(hbs=%V&HqqgW*xL{&~Q8ljww)j$+fR# zST?FJ6yD*RT1xs7&fKGoEre)(q7ife2xs#|f#fqG%TUhIfjstwqBq1YUlfk~H>2;ANQ0{{Y;TV@}Nfq-vQPNuX>+8*`e7!@GB6aaVRsZw9 zs(uFY+v-19zY_Kauz$brMtSiV{}NePEj<5O^zL2@wi1muv~dGycaH7z@&>1&ob!%C z+$u9*B*pxZdq36pTU(r8m{bDhur*XWH|%PJzQc_u%B7x*RMjp~US+#Bl|GXfoD5f^ zOb3a(^9w9xVm-RtJ?o)C)4cGpS%rN5-Lyl7zV=>jAsJ>_Zu)&N4%~`wXDV}hUr0uj zZ3#I=v@a_QlJt~!p=+wzp$t|962|$tr0BQt!`ia&6XICp&X$NpYKca07c*X5-U1K^ z1KQjn%3o24QM4Xp>(>=zmk~;|Y>}2&?kpg{)l`SIv=E@*LBQdMN!u?BRfM?IE=@$W zYYgCa*P|q#6R}xWv?5JU`Tfkn@l~p=BS_<#sc}#yOgbY&z$^L_qe16P>z`I$;@_>j z2(E6T(Nb%{sziiRhD46&Nu4wMMbJ_F5ZK)CR$2VRJ4&e~{6^!TJQK$Sw7fB|S|xo`0-TDW7Obu*6?vA{$D zFGb|55Ix3s}~tWm0}Dd)?59o0FLa5F+wvd~HuHK}W@hwOGvPZK&k ztP8&_2o&H;lomg^Cuj^HE+x$P13y%m?CA-s<4$M_Gq&5o`BAI^n>m<(%EaGozn%8c z?hlGTy8n*9YTJQYk87FAUA@`kNJO$fdFZZM&!;k|T$*sf-=wqwmS(5!$*E*?kH19{ z{KS*5dbitLmX7zYn!Gl0-}&{T^-cu+B4@6us`P&phfD!Tf|Vi7Ss2j>V(yr(su&j8 z7NzaYVJ;d75Akge>KG3!=gbec29%l4drTnt44Pn@Z7j^iAtFVeb}YD;mGyuQvHXaJ ziC$QQ#tTU7zZT0C8<_B+gI`+3d}0XMY#xw_?hg>=z!CNFHp0@NAyoD8H6C^P*co>f zCZEMilgs6NI8R6Y)U`6oOTRT%mFAijx#cy^T7Q39I;lTfeNbDK`#nVv`gucqMpPah zP?JXL+7;L{bymf}7T)NZ6wD`KBdBrT@>6x(Br`m^WZ7UQVALXo2eMdwl*Ed3k;;_A zHvBtDhF(j{w%c_usPbvd-8V`HmFJD-*R%rzJn-7hQZt*BzW(u5smKuY;8uk-d=Y4f zv2th<+wOw!&0-`c_sbM!PJa}h<;8N8$7NT#66i14vDO&l)@j%7u|9vFV3L+msru~6 z0h@fOm;fa~dfJ`PvXY#Bm`@K^5SN6TT-1nOM}M4yZ@Jk*fr zrg_}$FwHTV@;EOC2hvY{7XOc`vkq#rZ~A>(w0LnSQd->I3B|RzySuwn+@ZL8ad&qs z4h4cc!Gc3@Il1rWyyv`6X0Dn1k<4WFy7JrI&wh8;qg!HO9z^Wy7_+I(JyCv$VPr_C zhqgSkyI_FoNJ6?WxEyAKS-Ndkh5@pk+Rh5Ghh6V!xjxKBm}|Z9kt*`75)t0isc*0A z0!2E5fZQed4F=l{Qi3hmO&h5(xlQ|2{PkW5tL<30CMjEQyzo8uB4b1KImriKg{#?k z?=5$YzW$mJ{U(X~;Nod{RbLsk4E99i$j_pKKXfrzMdNzX8fZXpQkruJz_I_9Kw|aQCk7=jw`O;&!W7Lqr}^gMM4a ze7pwHq7wnzqIerD_mya-9~{3kfjL?3DvYYtFwibG)Ifdr|3xr9~+HS9MAGW zi9~ChLPP1V7x+GhdGMqA#-m*ZkA_F5z8z)3ZTN(1<6nRXY65z1IY3B0#jKZ83G%A@ zKspxh6QL_miTwBpv3Pam`Q!n#O!que4@JfuoKSps4Lw4k#UBd%?71klG#6}v?F-yg zv=rfGS5_sYjsUhIW?VzsNLf+TO^qMIlE)^_+4=zq3Dm@>*;`pfDiB{P)Uf0D$!8=8QVe>RNSQjc zVYELi_51H1_ULLwZxjsQV8q#bizEwY{BlR6$7MjRN8sYAhxO_5CBn#74Y7)D<)g64 zl-T6>Mn?zWoMxU-W52EK^{`1?7Zs1)Q}bE|@A25Y!Pq}BbQ3}F2PmrBV(QFK>aLu z$@nfZRm>@0|4I=`uU^Jde--$2sT4BauEXSVtI;Sp!ef5QTb5CAvqL)_HE!r+6$xb| z5dP~u#U$!`8!RCxB*~pC7hE@nQ#`f&0QQu22vvjArn-k3E%a8ZH)oTE54{(n};lr(tWUtqqAqRs?quBgebbiiiD+Y=!ZL1S*{oAM`g_Zx|ftV zRn4Gt?XUXZPjW;nb?xf!0-Sspepnv^Q4Lr>eCj|4c!&}yL+~d9_P#7#?hd^mOS~>) zeoASqzF{lDC>`+Ce&H9ngL}-fD>aK--1n3$wv|y`*CS_Tfx^zDo@i>m+g9adM`FCD z@~qx~_xh*$TQAzTho+sWh;dVY+pIfCM8m;d56-kcw=cXdh{I$=;|9mz>AM=RXSUW})Bj2Z!Kj)VP* zNv<rKn|I_9Dnw+ctMzW6-TC-oNj5h2Iq7IU3#86J(h6Jb87M`MX&p~aVn49 z8|}&SC@s8IuIBEP!y+I#+`9N<30|R_&`fZKL3`I)Cp7ID2d}>>ByExY!jOs?fhh-7Q_GKz*1LqktB8KMXmeR(k^D_mgN+3_d)3kGBidY@bJT-(&G`^<{^E2E_@K7S5$kR z4PoPIbjE%HR^dT%W`?oH6Lh{J}Hl~V$rU&Cu>v{x=V z?uDUI>&id8>EEc;Vs@u!sHsS<#p2Q_Fk+89FOOAt8IkYq-0<~TjDsc`mtT8cbW@_l zs0xoUn1W)R$6~w8wAI_oH{ekkvG)TnIRKWPE-LoLxA6V#C+?8Qt|DTY`WGCHaM-3? zBeay57*MTo8r=TO9e4CfsTTZcG_g2xCWLeF^v3USqH+ZVqbo>A$&njjhEg3aO|>V- z*l$zLKRCtBu9-9T9K~T3XTy8CnRI4nY&a)=F_hvsG(OxxQAn@|Qy4s|I> zljqVZZxHkZBNa)BEr|HG7J9qBHY)0Q0V+@Uy6WWoJty*XewVE>EpMi8n&u>*U$;3? zFH(OVM?Fc&ogQX-5yjzrueOIr{K%-lxZjl_qdYIN)fQhbGx@3T)PKe!i^pO=w!!V0 z*b3126IXHACcChVqv#$_v*QDJk{4q@2 z{SvBx`K-697alZ34FyJ6?i0lAW{xi#eJHv6MZ3ni8eO+}8>ye`dwr{NC7{S;OgM6F zfuQHiRiFOsINEvh;;&GBNC?7G$6YE=fD7;n?{@aw+kQYvdDcyT$4gY*<8h&(v3}8{ z+X1NEw$2Q;KHsvN-9dPFzT$UyX+Etdg`dBppt_Wf^&8t{ki8zY*3~M3_(=utI^+?AmoOd>6;izwHTPYRhi~rx8y%*=&207kG&uwB=Uv;Hag= z0oN>kyiY*YO88P|2uu+5rf|+v=aBe~+PVYF)%Y_e(ry7237eBy*W$YDGdF7HuQi2DnLQ8R`vKUSGxc==e#_Q-cQA27 zO{rpJ59+D0mm%BF#hjM>xQngEw~A=kg`cfhm~cr6*CF*lyiEbtA$d0{rl(gZH|Y@# zJ9eSu@wmvn*h}o0xW6Y}xE5on+Xj%(_q=VAS~S(*GF0OT*1gn?L9qkK9B$q&ez^+^QA>)Il(g(lWCq#<@>wC*^!1gB1GNx=Vk}=cwqoB`8z&@ z;cd6&pz2!xs7d;h|4`DZFcpZWgpJyLNGQQdczCsCKQt6w!GoG(n{gV!HFX3_a2)07 z${Z_}7_|_@2kV<%?a0bjsdjFuo_U(2>dqiWdweiq!-B5aLGPA=`);SH4$`*4=HeT+ zzWWq|4WpkPa1C>Rl+D~6APM|+`(5@f$~8^X?#oc9`xVl{^#cGnSxD1&70B_V^(zcd zdbdZtvA}<-rwqV+wxrypt9dN>RPS=bUlTQh{SCC;pwBfR zEn`g7g!OmYC6vpK<0Si2I=yi6$K*c28r+}nIRs=&qMK@HA_xy7ehqFXDtJt{c$>GG zn=pBO>D?x{j~7T&Fn>%#J=QpF{2KvpO<1i+jvt;em#rPNI%4~U5M&^szSTW9OlISo z>S5;^`;HZz`qO2xCNc_)}b&hlnbw91kzs5neP()QzHH z>c>tiDkV$7QRLvpZ9l4F%H=kHbT;#8k@tYI^g2DS1|GdZinu%8Qep)WOBOcc_mO+| z!(#+~E+*(GUAKw?yvTy>+U`lw-XJfXee)1Yi6ER)zH=m$Kt^{vF%k1iAQx!sh@$lz zr2kT3O`3{l3mIo2buvYj8UJf>y=farJNW21@*}=l^<@nVR7ws|`+cfHO$B)HL zpknsLnIWRoH0}=Z)=FnDKg18Ss?NJB*Q8+QUqOCD&AB#RhsT5s%Eo=?jDiDw@w$&~ zya7zPfp&o{^5D&fYr9ZW?f~C!!!RPYYKh=jPek6&%O;F?C!)WOxAghM$H-hH@(z!^ zHHi+LOof%K@Odi;;v{!&`a>#SN*q2y0Sb#2quYNJOMc8>3h5FKciVS&qz`_x%`=v& z{=x`mnWuKQPRd>Ly}hKGk}IqHii;Sxm9_Yte)cD$RG`bvPO4JBXHAW6U#ppsRf2BI zDQKt68E8|)FGE2(7fNpVu7ZF9c}r#?chD2WLeee3Jw3FI)FCmP%tf3N#8+Y~A3
    EYwo>e4Kz(sa;IU;yY>-KWLOdNR_G)nC7)rC%2}Jf) z5y?oJH<{JWZoCM|V1!4WKh*je3g=g98bi3;Dm?kYS>8wFMM?Q^ttF*RBTqcO?K5ZU zFAiDy!-WM`)6!OL=`zj$H`nhPv`zb2l0@19BS-NsYrMQgI#yy^4HDZgPusS0yvkcj zUE4bTu4QQH6rb5ULPJx~fhlDvlV144)3B7327@RPxaO*O-z+!N5+pO9O8o_YQ)lV6 z-_9&YLz5}!wf-N06Di7XJNf5BL?yJL^_2xWJu1YK!d7jVo31~i*y`jDWiNQ7f>$?Q zjQh3BjI$edG+(AqG%HgW6OX%##|@!oU2i!7J*PJm-<48gRRL2cHxqs`RlY9zbP>|I z_&7TRKxvbJU)0%6oo1_ZW|v{<=aQL?n~9!3UB+l<8GpN(XYv|b?AbQMU^laZYV;b3 zt$Oe`pu<}O-drCXLot)1w!=R~_HSQ`&SJy}N42V!hK}qe6jIZN1Mz;BHud#C(7v10 zhVchZIS|eVSejOsdL~;lH&4`vik7K^=BQk~Gtwz!WXp-gK$cSU9-Nto@V>+W=a4B! zCle-w_S?71Cd4}c>iN3)+9ErBK5)p$^{49()=q`W9c)&Kp?RKP0Xi%tKes zFj?8Mih;bPew9)N8o>vTHhV%L`7YBgJd{)oL$Ci^^u#edY3;Qp{*JGkU=;2#tb2^| z+v7AmF)Z|}ySwX+Jx1`Q;+`ya3-O`2;a|R##OIstAu1AoGo961*aR8ukT8qIo65qU zQutmksxd`qTkS-Y(1XDltT&a*6V|d(OfK~!7EV`ikhgIvJ z9zCBxKO|0d1Ft+dgVrSWJ$j0-W6-dzJnEBUNQq=16H%Emzrx?>p&iEP6gebbj>7xHS8}vdhDn4ju(W3@4=u(wPcb&rg)9&%`u#Y;HngdJ$^f7T09oC632g&0V8ns)r0g)c{m>Zm7$SW3V_q znL$~z1e-J7HbuD>rc~XD@{GK-K6AfdGpG#2kNqaAAH{-0;-3{mqEUg75yPR@h8u;i z$fQyFNA2~J-2_+)^DdhnTUX2)%#%GCl4SK5)4Z#n3T4<*Bmo6XR!6L0cXABT#%b684X8IipR!yM+en=E|yOajZa3cJoom9WY2wUQB$)kug59jJI z3dNidWz->_nyO1rKc$4LTC<)Rc&G+qvv>B}W{_}DqmCT~9@x=dXNpa5+)4rjGT@y( zP?NieYwnUdz{kTp8^nC=Rnr~zsxRj?#k~pVH2&D>iFqbiQ8NkIUi#YUCj92-hSTjN z=ll7c%r8?{jE7CN*vsAvpUDab?t=)u2Rwy^ZxIUEqrw)~Yej{J9!im0*~bcU7uCJ) zjk)woxRb$C5r$$A9!D=+l9^A?DajiNkDOdbA7o2Z4AKo#&z?4N(WQadi->=Bv;oS z75Bgve$Iy>%gTqQXv`fS{n~nw#3cnv1!JIBCRB+FW!cih^;fm#KZAPxR2o_lQ37jg zcGKYD6*X>S%cyNm`>in50_-q9NaFPlWE>lxXXyDn|A~h5np;Z29taru9zA#+6jn51 z%j!E04Ref*+A5!PfN-a>c$=!5i(Ok}Qr(A(h|pMAD46cHw)jiN7wdcQMSfn*YVz8z zHdpH{GJ~uXU`slsgKwHYde}&{t>OFe z6jjqW8zS${`2m*j0rK5Q~YHcOEnNi{uZUioOCZwS=_ILR(mEygcXDpTY-PQhC<5gjIuX%3h-6@yu z#JzgnzGm{2sj7&jL(@bZYsPiz1DlhQr4M55H?Yx%gXy2-!KIrYKP5zo))AUEkH5q9 zTJ*PtYNYFYVLEovoH;s^)+Xuq*@uZ7`;u8N!qZx`1e+wVxYloM>*J4Aj0Z+97+ zoR&t-e=W77#oatCY8kUF(;G{EzTD=s*MV08ma#0q%ff&p{~>|9?b)M+q0x+Sgpsw) zG}^Sjb-rz58{5=*Y1V<%JnAv9>r}b!8Nch!m~y7n6YkR>XM(&kmnk&V{Ph{(n*fQ&TZYdJSnH1R=XH ztG^iL3KhB?l|pLy-_l)Y*WTiSPUpsk$ot#oyqJz_a^u*F+VAMW-ZC%AsMB-e|K;%h zr7lr1f1!yjh1hi%MxNkc??eulmc&O#BnWdjENWJ=$(>>*t~}%bY~(CkYq7ntuU$`; z^MRy!Rqyg3y8`yh$JKrM=PB$B1>Cb~ov# zvIWNtMz&_*Gr&VF0rEBdc({f%X^8$sOryzl)bR-8rX=*K59=E|fHt=b`ReTb#gw?~ z*C8s;x1B_O+#129YcGd$gV1T{kj{Bu8%k*7O~5v0u7(S{dcqyQ>;A`C`V%85 zRICCsK!K)DwshllvHU9L=XXi%ZPq=&L@zLTemmvJifV76jqr?^o9QJ$y8f8)gQpqX zhallzJE;rEGIP6)s;m-FeGz~%gtOM&O&z!8h=>jX;;xY7WQp+0E8ziqn`QSO`R$|x zoA>-Sji*2Q&F%L8>33)%LoRC5$PVJ%Qu4bMCh`~nmv86pVV2eQeUf$IP-H6-6+}x% z7XR%NNcB|f20GOT^(K>oz^@Pkc#Zshhff-20yX1V1)k$;)&@^!%f6N^Hd^=}{=9>S z(d9)F$Yi$st{`<^HK>Nkk{iRMxiHJGhs#J~r&gevah;+>o~+TKoy&XUJ`t z+%k;M2;;B|dws@0=fCKsJlPuBMGlG?I{!!Kz~Q*n4zpY08#eu8-4O!!*~7r&WwMGZ zFa*0A|HGTp@IOH2l-PdPfW>PPOoUeP{Jf*+XYz`8uJ4oJ-GknFS3L#t_o%Go7e-8t z+@6~|*Sx!f-e31+$T?J7@l|g#ZgTTT*PnUIj7dG-b5l^D+R4*ch4YP#8ik9_Zf{V> z|N06AZFU)&KmC5%>nRXZi_gslW@MsFZo$rFk_RST0BKNp$F*k91>kbIVc)Lrw!jC; ztH0l2QY+`4Pm*l^nIL=2mzR>F37`&8fEPwdDkD!)d_#+8g&R}A6#h~yshN^QgHdaG z;w$>W5TDvO4@GEEMyQ4KYtdo1^hel_upf$&9z9C^!~O!36BJS&mtxDJ1AcuVJM>ML z9%IGGA~pux;?syo9o@7k90R03R^A+Vx}EV2)}t3Wb}zhpyCdRX?xWn3_z!n_C|A|TZU1zi)A9C?WV<599ZXNp4jw5WkOZTrACxhk zEMG^RtUUxAx8YqirqTeeUjR^zklx4pvQv3_=-rSc>{sLv&Wy3LNlW=|ikU@^$k0Z& z7~=PO{v2b)tS%ZZCYs>XphEaouy4cyZzLUzEj7xWF5_bg(yZu9wqn1Yd3Yquj`mKz zrc-#)yU768X3 zId9Km0igg3*Z#b$6ctVYI-AL@T2PAk4-WQw4M_URomH*b^v5jS*%6w$5;nQ9H*(PR zXK2ZL5nA$I*ZH?cl?X=RFIqg+WMd(lOZk zY&;=vMI*W#;+O^zcFGa7(CVX(wZH5@^PSd-q2^IXuXbEM3ps zE6vI=fRz?6iUw0yiIK`pC%fNSpBmiC}2>NJzSZZzM+B@C^zkU~jS z+rNq*L5*MW3$7+oyf94!G}7-q7OUB!z5xIzD^dDz(^?ElUBXtn73GRr4k_5`(1Fkk zn{PN>W(7KQZSV+DRu-w`Y9bvU$+RZ_0>A$9pq+4T)OmNZ@^bN@B^ck>J(b+1j_Aq^ z^J#-sRnYG+kU_mao`=KyVZhwb7IBJOE852vLh!o2R*0f36G7ABl8Lv4rH;y$LGfxZ^lEI-a)M$@DEJxN}Xct4u@D(v9^Ic%E1PUn;UzojzhQ3Q`>XB4ySEauNqym>+bGSPgx zrf#RHZ)cl-LG;0Nzw;L56n$kMQWvOyTt_B^%V}yz68`>0e)(2OR0B!ElCff4JK_3j zg-Q=*V_aYh!Q_B0o3WT?wCq`;LhF0Gz+dyP26~du$oRgxoZ|Oz-4Ux9<^IBCfm4bs z=c1S^ChU}Ls`*aNoRkkqh8r^kmNw$z4{>J%OKVp=btVm<{&+&FBM+~}s>;C+0)D!- zHdX1yOSsKYB}|7sbuCn3gq9K@e-)I_fQ!^3k!xIU)Od@yHlYo{8yEn8Op>XCKZA3X z{!$(RlqsHRmgY3HJxz~a$$*9gER{9t(&ebF2)?Zj<-oxLVAjaYm(7WR1ajn?E@*R! z+si+RKa~1uHF~&yjb)G~tny5&OnYrA#OBdM3i@ILXZD>}3Li$TV6DN{&2qlTo>OF^ zplFn;WLq6m3>+p$OBzY-ssT*C$oIdnUf^_|WLf-H0k)`Cr#xMVD{^Eu2g9NgybKKO zHf>y;U{2JeQ>GlRq%PFazT$l5-(pZ6!_oN(-LoZ+K0t*w;O`Gh!fiaH34*oGpH5AQ zyR0!IHKe#{I`2ktn}}x}Z0DM=ic!oEcqsQojoC#RCnFQr-tf@z69DSaOY82=XOwIR zmvM}-9=wk~nW zeja$dHM-ray{0tGc2jlS!zTogM7U;XzWO+!YfAqze?<`BcCO!F6%qt9c$~5|dbuGT zMfN};-~Torsnz+SVD(Z<$*Rb{VLdwrUmGCC%RgMWCB^{U&Vs) zu@Vl*tMuumeY@tmndTa+XG&l$xZe6U%i7W^9<+sB^jImX6w7%-Rk9|$Mg|}6D6ahJ zi7T3t6NiVC3KyvtnT8sfb{@MgCZHj1!}!?1>k--g{3q1!;{r-FwS@4`m&Yux%MJ{LQbJ1(r%83#I+Fl?Mcc$CiDqB~$WfRXG~vuQ)Pu zTUQe%QUswW1HTN3Fs0XDnUh?*oJzq%_?0A9UjJxuy5b^XLJd~`_W1jsDazgLTLV@< z_xeuviI{(W(JOLXuZ&pstwug*ceGrizh2uvSg7RVe8^;a7w}4(#j9s+K~DW`cWUu@ z-D^lo*T(suv@+`7v=V9fYy>X09D{?G$|VKj*isTexc*mQv47bQxs z?~=l#hvaSMHl}SdKCMW@!nEfLCnH*(^^q#Bqx&z(7tphEn<$l7?3gHQkL0##%7Nm|KRlt z+^!5oC0cTn@3qf*m^!D|C2Q`O54Q%XUIVFMs1{ygC?_zhaH6Fj=A#!Kw0FtT=H{9h zPk%C9Ji_+;^~ZN8t7rUIT2cXken9pv$!Ef$Psmt)KczE zcV;k;0U0?`{Am0=mFi2p439dnCnJk~5f}XBVSIPdAAEkq`R!Qolk(7m(%{cNj0kI;T9`9TqWHwlw$c1Y)LYu z;e1aMb{9G@G2M9ntv@8JJ&W33x%&5Ye4UL$8UHtoz+=-QD~se5+^P{ljT*m1<$Wzn z=ouprJ2HUM)8ZiNsc~E4;U+b`SZNuLlI16;;9uA5?*G3Y!m*zfe|d8;T9>}?(e(>$b%+?|V-E+`BIBd> z6ChKpWZ!g0_wyLg)usj8N~OV#kq48v{_@-5aI6FW9l$xS2fVlvRnE$!Sc{~GNwwEA z-nIxn-_ZgV*36=tsDwa2394?flnk6R4Mp=SIi(PG_1GfPdhK>5&5Fgq?N&dJ4Vvoo^0RXBJMnT*Dn55jR$wr z9>h#Xl^QKyqJ}W_g}3CVcEVSz{7ZLBzv^3!7nacA6G$W^-|*!@$;y_6RN2Btutpz^ zZnIW_R-GsVPn;lZ;fiH}r0&h*kXqB}a0PE|$uB8tEff5bD$cY;`<8vp+19_vI3ARDyN@?%D?BF+3k7AZGX{>; zLWfU&Usg@vRGf0O>Fw+MkR$l9$#!8Z;*eMt4-X0Am7_ErQX?mj5qFU=;_DG zaj&LIHPvMlV@mrLKMYQOx;;QgrP(U% zxMTIy2Cba?**E1E-9Hir zleSSQUpw2=!_d{0Ly2`{X#W8XfV~}@k+Lqj_V(x7xsFen`wFyq1}7DH`j>@SP&Mu_ zSAXVNw@m6KZI%rCS%}IcBFpl%B6qWsc$l#mg0Uy7&7bS)?JXP<5bUIv&u?^{{plA^Yaob zOn4ChO@tbuy&HuL<;#uh$jkd1Tkc^_#mfO7n}@cj-b#U~)Ulsee<-ZZBD!)v3yJa^ z1wy+%S&;JuTn=Y&)ZcplxV@UJX5P;OSM9?kbmPK1sXt$bK*xm`thiTuzvV5q$3ev` zPr^Qi-2Ng@ZF*~~J%2`B3Q6g0oZ+BjS@x!OuJUiWkfCoo83Vk@;Qj$Vf~@|*PodY) zPmmJyKr-6K%yy)SF8V_RTld-~+E~RU?3W#05*;0MN9t$IdrZfP7n`y_2RIKUzYW+! zbs_jnd%EC23tiibthOJV_??&=FS&1~ZYQgS`&=yOcWLnkvD1iUNb{v1W|h$L7tDem zYKPs`<&-&y`CWv<#OnN-(||9_R??n8VH*yt{xKUceyYw zVy}76pM4j6@pQI~Ht_=aXsQz=rBh536O4ya7?c`+|Cy3CG0&k+C&!{lJ;+Y(SXAS5gd**H~w0*um}=%aYWSZ4sJi-v4!Rr~8b;d1c|rE2Z9jIrDy@+m&8g zJhTQwZ&WPDA?o;gw`f8 z98>}?ySaR>5%>TaSl3CW;^b#tjqu@=FbNzbMc3((Mf(lojih> z&ycB-LFg486b%$#Fwf1*GY{XC{NheY=a*nJXjW(lEcm-DtcXTk6p*Jho?!K*Bz)nW zt6^?tw4Jn`MQ&y$i_7187ksL%kLBPY>D^V<_Dqq)u;g)R6-LO+C*m}cX}Z^p=xngB zb$4ktf_=~wM{M#$^SHB$0y@Vm=r;3;M>hJ{4XY=%->7{&-4% zXx5<)9@USVOqZ=eN|_IDv{Uj-OiQwyV~W+S+L@{BrjFW7ba$^);8O4bYMzHsRbKq{ za`*x;yKd(#_8b6Kk8WE_ZgeG=bDzhvwRn*oMlzuQw9Mxy_ zlp|CXNTXk%PHfwx*R4chq;u)jRNAUsVE$;OrE%y?T+qB?Z1`jivoY3UgTK0L(A+|1 zv-)}`?$+SG<6!#z8wm+7%A0S`ZPk!bvtc1DYTWo&hm6xY%M1tK-4N}Bw-~DIyTy9 z%?Oznk9b~~_#}s$I1KakdG zBH94nEx1z1@~eglujY;h%M`G?bAcXgXjT@+l;w6-5O$ME_#Kt#* zi-Y4(o*L|YD7V%#z4fs(JSo|9XQBgE{mn43M6+#Av(z{86_h%_pjvPRPVD%g_&6UU zQbmqN+WTJS9kJK_Rr&4KB@gzT`%`@wg4*N|)0l(I;cPhVUL1P?rs|o_jRRD;{=rC^ zCeOiUH{gUg!Cg|gBauP(>-ecTHm@B3clGf}=W3(s{n9Ny! zC-KZ|xdu}_g?I*iz-X69mP8e{aSx^w>dr-G3#o44Gu>m z2izZcZ9PI336OO_MvAHidY49=reT++XE{~z7uM6!8m~55JN08VvHW}sv%f^bKiK7yD==8Iuhz6w^Y5rt zK;t%l`;zx7@TF3xVeI&qR$0=XX1v*!PE0OY(bTqbsl|LwWlanz$iZC6`;X6;=TRXO z${O8~#AYL2O{A$SHJQ~JWUx0KYSk3FlD-O}kM$1X+wNdeOuj_YpN`a@>!FiK80Vhd^Urq}1z`Pjyp6Z?An)L#69+7|vG_ZrsZr z48OYAdCW6Mps?!>d`o%KaTO@@;Tq;+dj?*Z<(#9a1L`-d-(GVyVpxxK^4(6x6_&KR zSdWbAhEqih8U4&h+{JztM0nttkPg7~H(t z;m0|+5Lc$)qVFwu)!(~#JA!7gg15iW$M#!bA4T@3U9r4tFA&wguEz-9Fryi=iXU7y zG#}09+jY^ci^BK-yX}-y>=?I%E_**#E)ewAfE^R9#l-#71-c`Q+xkH{+f> z+DEfLRc(vy48-<-2M^g(^gMv0FIKk|pz>)+(#OW>QAOXr$%fyT&0(~ybI5xTt$uZ z^f)~jd*!q$`PBx`ch^Ab2g9nf^bIWGyg$gVR#$KUj?ThjOHXdzkGUH#9bs0^iBkHN zkgbw-BVSF$T??hTspFStOKphe5_BkfTedc=&t3-b`O5uM*Q?%C@P9c-y>WcCzs??7 z=Zi}_%DrUYRI_=8Sgb^>C!3nX7}mOQu%^aDN&*~ z$FF~Q;_d(HTdCL6e1k6II`&sa)@<{`*y6lD9cCv}Q(IVZoYTB~ve(KU9y%t~l~xSB z%Hplcob*cSoyq5YGHdUuVRI6~;+~>5eo_H{9@ixF+-Jbs=2F9gb%C!g?_!z2S)U7a zwq~VcZfU?xnLA)oGlejt3S2cU*u@0_rsmgjphxmg(?n+VAMAPBP1{!Yf)DmWASKIB zJ~8%14?oxL^)ommAyZDd7txOdey$d52)y44#)cLDM+@L4i~OZmpCpv&BxqD_s7%_w zSp&>a;Yd@KojMq!T%#di!TB(}@H7S=o3fIw5vLuUU#=LcV8+G%YJ`W5iq~;t(W(&y zU&9eiH?s2nX0N|4_QHjcs3G+!@Ya7)G=I@!X_T5C7QPTj9Txa26Aj4FPYyMwaB#E5 zreCQeQ<)icVa=p6@Nw|?oCnYE3=hzIjA|VYu+$eu;p8JQYI<&LH@#wv+SkMo-pem5 zB>I?GbT@R7iiS~gy}bDBVv9ao4NmS6^A=%Re$?BQ-p@7EyXo_~5xIFD8vF#{zvuR6 zz9o9EJ58k@#T&+wlftj;n^8e8yD06YUfHT}oGIUsW@^itHf+WMZ;`1 za~;UpSqO+!B^$@SD-UC7JYpo$5y0Pkp1cvmW<>7g=edKyg<`v%I0xhGw@Fok(CTM_ zj4n&e_cqpB_<-+@YD*`00D|46Tmv5OBFNZn7hW&+>|Ja{g`h*Kxxu72RC3R=Q7Kir zPw0A$l^x!bQ7H>`Ea3eywdt(8qi?zmc*S z2J6?R{o-?aYIBP!)KgGV`m}39mp9&~^I4&{I1gBEtGlpM z{OA>TS#UQt<7(Zh>@sKjPe2mY-SKII{__dJX8WI}`@j9*`#G^iXZbr}z~7eQJ;gYB zFBo@si2l}87O6S1LQh9Uu6H|Lccrbr%j+Z0`8Av0m8maK=dvwbnd!*4rRnkh{+Vv6 z<0i((_womS-HjRm@P>4DcHFZk78C>B5V6wYCkM8JBtBmal5Mbd#?1lTOyQd zAi`pHk}BL+d8khSf2{CBh-DnR7{%|$z;qc;BlEy_WF{FyQ$hpl@xl-{Y~DuQ3=s+B zh{=lgnO?1x)14e5^MNK&A96!7EagfGg$qwx8V)@B?k5mC!Z_JDI4Vc@2+P(5-skcm zZ4w8hJ7a(bH(_^Ol+qD#OHidt0&?c_6w+`L*areWasxCuQ>6)~%1~XiKen_yG2Ul9 z%|3wJx_tM+AW*;YP+QGtDkdq(>hxhn;V)k(59$gQklFlm&eXXd=#r;S7}apA>1mxq zx;tN1(_MM$@3+4_<`3hsS$otsqQvHj*5|to26xn5YHR6Q%X) ziy55lkrV>biz3glvUJ5}d6J#+pv_$-dAt3?2^!%YKtA=P8IpY#bx7OFFF76uB04=a z4|$uA@=q$|hB*bLp((ydwUB)F!ZPmUbX3ag9_(Vn0743TWVj7DWd3VdJi56oY`|x0 z_^HwPVPT#~uf)=t4CAQ&23r%pr_h|Hi%)zxiESBt{$6+|O~bRX#O|rlO~ykNN~M~m zmo+NdMSwx$noowbmLhdKR;zNV2O2hc(CLIW96BdP`TsB24*PuBc%f;D^Ov$)!Krqz zL5IT!%RFRSoCAx#aC}Pt`*Xz8MpZFK8sq*~Oqhhxbl1AP_H=HJajD12vm>FLY=X+_ zZFB(oz^D#40dU^y_c2WSj-hEPyiF1>bkb`@A+^cA zR!2I&caL2Ui%~|X%L6Rzy^7P0jFEUQ)f93FDK4w6W@zgNUCZ1ugs*H2PGq4t z{gxV!ZlFO)zvD7yi(rcC;k=OVzH9ru!Tu3jZ2pB>Scn8mkXBl*kgP^)a~xTBButot zRzD<$f&|Z~Hs5;JO)-egYyr=AMq&B)XatZ3*{W$&t2Kj3MQ~jCkEWfM`i@74Q~R1a zM2Sg^0Hq*QplPKX_SMSca|e}P>HfRGu&SWpAzn^c-CW}E2Gs1tbZ5lxhTxELKcYfl zq;jn$fq`~~d@TBrTSR%wa&zim)mKhoBpV)N_y4vQByNe1@h=jGO^mDJx=@j^2)3nNkZ^kjZ4~OPq z?b=J}cr`?f;;#-yOr~rP5j6L}x@Ai0h;Q>h0%hi~(a&}C9BV7f?a}rVpBLtZUeA>` zLDvJT-0AYAQU(|QhpV>=Ycp!MwQ(pe#T`na#oZkW6p9vicXuyP+)8l>?(XiI;u3;8 z#oaZq({KHI{cG)mT)A@c9?Z;l%KeNn9hmJj$i@^UZ2mt)01KtOVDF>G0AoSCmZyvc+6qN#kH4f%N z$ixp0Wq9!>#?+W>HQC`+^eotbC;$8M0BV9_Y8+}RaTFGv+6-&5vYZX{CqI-?#M9fU znDZ*PTi2-46_kS(oJid%RF;n-l?3f@A zs{_CKF@g!?uX~rtXo)9~y4Y6g+V&nGswoz}1)>G_-OII>IqYgWD(Fs=0+$?Susjc934s6t@+v(#q_< zG*I&vWYyQ4?{96xlx34L3L1_keg$n>7#zf;Pnx%6NnUh7=a-dwLFN4+82($-SI@cH zwqOd5Ro6C01V?6B&zlOpj>Wr+oS=j<3D=HWm z6K(CKRm5MWsQ$grqDl9NTb`HFmRrIwiL44`UfyDh*qcjaA1xEiG@9*ehyVg#eMVW> zV{OvV9jt&h6A@({=Z!WRy80)K~-Ki|A?72S@jykblyC&yy##?7|AkL=bH7b6c zs)c4?!mU2{-CJjY@9nKZ~?Zu^}`eG+W%8#Jx=uw|w8^_rgtY#%{qpw<6B1Iah}J2q0# zfI-<3T9}o$PsfG`Zo#$VZnbpckD3(H?a)TRh0{x+H0eJF%zxRTreHMWSOPAeVL#2(5{> z{bo?{4rd*;eKZywA*9E;L<4pYIAS{PTd_-{s2qnunFhBZ>aMypzL0KO00ATB`|*Y* z^n`CBM0?N4KKG0@^ET^s=w%oUzLUR|LVd#MAQOBk&Sf+$BnM3Av7B?71q=R6os*yD zURZ~ttY0Ul6Hjs|s=cZa7P<4eN8t<9V;2_O8rm_5kME_yIfN1u;Y{EC_%EB*4g7`p z4P1EAN5=yC%S+f&{KF>5c84VY8w=Yal|+66fv+*d99i^sL&BK^VLWcX=rTJ)rHT}n>-}(u+f1tlTw68r~;8 zvV;w`wz6cUd%)WfXsnUX`>&WwQXL;Lk!)% z!OZCs9WK{)RXz{V^&8z+3v6d8K1-^n&hyWmV5Q{L!^={kalf0GN6a@9E6%Bj7+h2F z3&cL@C}GJ5WDi`dIB=`xEM;`LA?u-mdv&sxmd5c47PxK3)slO3aOkAV`7^8g$W@E+ zJ{v^w|KUy0+rFQdxmpA%R~qe{Y%R$$bpbk>_3D@A%?zsgUL)cTS$%+XL{+mVqkx z1p>)iTK0RavO@9(;6d30cXz8R*XSq`)g_uAKB!UXbN9_v@liLV9cnCuHFwWy^ja zKZTNUcCqz@VGda5ItH3<6wJx zc{}9D=g7VTeW*)By`j5h?acCW z+mns&L6l|bm08#0ZYr?tz%9<@;o{s5HsD<=t`>S{okt)~42<@tqsRIM4aUpJ+{T;zbGi{5jZfRlg3O*nGe!)bJ2lglh_YvdCJ zvHx!-HO$1VKOEr$W$3%=@h<5Ui1do_VIr^ygyd#Vd{GSXql5KrNr~1unazB+shyOHu(I3gu^-}8kANIBfPczA0n9YgIN}VO_|o_o#i9$iH_7nh){Q z^5p|%rodHw^ke*<=_;t}!rXqRXtT)1Fcl99gRU$5j|~%cTq9X7*x;cKb9>21vQQV#Sx+m>lCp+~)36^eSijKC6j$GGZV$ zS%3et`iNWvyY9Tv@i=?#uOYd7`uo!)HF2Y!d=VAl2p2SetK!LW4?6TNqe}JOS16u$ zRbZd>d9~4@`J2x&7tFiwzKZ20m+>TN&oGY{D%D9s_`Oj>t6Rn}9Q)L|upL z;C$@ZSdgBmRZ>AN?SYY|35UnxbR4K9dgJ_S#cJ7mCh8k*lk2oiyRdf(=ccN~t@f|6 z<&KC+q8MHej#GV2*IV80(;#Sa8BSf{CAIR0uBr8CVI_ApTMiA3YP6K<;Gh9E&LYYK z1WX01Zwt~$0(cg<6rZmzqoK6}D1UIt{a3T%Dm5)5^?x8@Oo}!i?hB?$Uo;12(-uoh z=?o{B9KS5|dUoGiKJ=Ho{y3n)B}?bC3W*MOB@UL%w^92oPLTCgfo0ny%vKOVChTIU zPWWYXw&P}5`2FS#Y^!6}A^k92%-9cS{2f+VB+)wb*W=Revl|}VkNn?bF72G7EThE% zhh}LXlOt(ewcD7`inHX3@8#NTtRrV5IqlJQxrxoI<`5O0U7Dxv4Cr^C0r1cgOC`5F zz8d+&f&7!hB)>X4`LM9c894v11_J(rULKGlXEKO(S5;QNC4KV1^Ggff6~K1Cise4R zQf5;$zTbDgj~mkdYz;rzYGthZXV&ynn`N7U!ZKZP7F{-r#R0m4q7FpE$gG&7i8@{9 zNZB8C>))YX3wl~W{#Qg6hlhC*izBGd_r2O0n7wWpM3u*ljejRQ#z*Xv9&5qIz|3t~ zJd8gXmg9Fmb+r+2-t#-Xx**kP*CTxld*4Z%o9bP{_(Mpw|}ARjQ0bZrdib2f{C zHPOo(-#2B?R`p43QVloJZQ#g85hLr(C`W|njN`q_-6M|2UdYL4cv8N3+80Z}m`#Ls z%2wwU>%ydy_$`-A7~XEe{|K;sp2)A4>Qc)f@p~sJ@YqMyiu~!ARxl!Ovv^${UujtwZYs7M(*q(= z9>!UA_Q9Fyvq*~15uo%={m8-{gBilIe+aqxnX%o9LSIs`{IRU0jsrin5-LkTgC0YL z{!>s9_50<);vmj@cMahA8gCrKt^{Ifm!ttq5Q0xlx>O(y@FxTxdQoq2PZswD1bU0wtU%;K&2W#HblXuF>MejF+WImQXYF-z2gNx1c z-1|jW(H3q8Ry2E$*2|k}|7sqx+|GavJe#v_RuYzdY1q8rs#_@p)bQT~1hkJo4Jai2 zF#0GT%i=Ku)h>*M{420rJcZ78W!j**7>Gpm<&h}!}qvl4v+tBuV| z@Y9^RrQY%>0UmTM3RCXOKO<5s+vuZTyxV& z>AQk#rOV}KLP;iX+l%3$3qO~OcV{_)%#Me;`Yu|2Y%I+%0d91ar%hSaVCvKRd>=#m z{n3oV)7Hx}RYEj4`uIL|#~YlNrffEt{e>jM(8^X9oL}$jH^I@FzlsR z2dG;14^_l@gs*N(;!azuN2)1IAw3F2d{yOFll^Kx)i!O#zB|Q|==#%-!tRrlLw!u} z*O>SSG3=^$Wpf{7p|^D3`{#`@%h#N@m{FEUrA5)1r}PMQC4PoCmuAuLyUmVDSw^-~ z*e#yS^Y{Me?^o-U+qACSWU~!RuB9yX6yOjZhHqdtu7Lb1ZhZKHn~l6N3deB>B^rj` z0iXH6=k+9-;O2(PZ8OygGYiEwixl%#>_7Dcc_@wbF;qcJ&2}m5(>B(z;HFzat8a7N zlBNDR=wIjQzF(IVyN4DM51CEcuQGkP)#Opc*XKCpnM`TqcrJ0u-VnJ(5bfC{Szm8i z_7nW^2`k4JvsxcUv>8|9R;MQIRC8M!YRR(qUhAoZh8isYhNX||YZ@NH&Ea<-Nk5g0 z5%1ZNK3P)wA8TXZG0G`>P$=DDgemzJ&#uv5zTwV4s%RUF`=QBvUkYm3P$|;l>dRZM z{{%(OBTF>~3JsSwNls_eq&^K4q4zNeQ|vi?@|!|F-|u+=B1b4fNIB?Px8+P$qKEC> zjKM3}J{8?-{F5L~+qN!U?w*H`M6(u_54yrNMurCIHbMA$Ar1n)tYc||~X(i6z zKns=(t)GKTCZCNGn9o24uVEQi$8hgJ=J(KZqVxPtysHYqt#~q>$(TF$yZjtUkpalv z?QHeuNj0TEW5q(1#pVV3u1By#=jU>Dx+)TBwH#zkAF;w$$eU1msuGimt{5R1$j~?F zk+Rd}F4LGtiOIi?3SEJQAm(-|yydrfT-9TQPo!M&lYa4&hEs8LTg+zg?U|s&*wf8W zIcw6S!x-0Kv3ldbDlcbXO z%wA9UdD4+AM8(NY&*rNs@!p0;OM&Wwy~j1q!KPWAf4kYe(+aYjUu&d!8*;(bPhHT% z@|p2Nrfs8RWs7-6sbMh;H zsVd5Cn0w<%?RmEs^*>HPo%6M7n;#i!wD2URgz`W;2cK^GJy3hmDwg}5jqu|V#kJ;K zVr24A`d?B^KcGf)c2UCrS&eddo6b{Q*vRjU`O4iue>?fXLjM|^dGq2M_{Q3qqx5=r zp1Zc+bpKt_ufe>2j??__cqC|@WB=j!1wqL(taa^as5qNX?%p2lP>0jegIuX6!+tEe z>+9=cp}_#W5CH4q_HYLf!4C|%JG1;wk~TKGYB@*Yx8hL=rjjI3m~t7EaOViOKx?cY z|4RWHGN}qUtV}hGnc8w7cKZ7rn zKfk_}_lGfNp&K>+QvwK&i0U~ppJ%j0{WhII`0F}Fv%uO5dHB3Ks?(#z;8~~9AXMeR zAMFXYNk0UTi=y(bp{U^%2E{n}eJ=C9tJY$4H&_)ghbmZEJouse7W8V=rL5^wreCGF z99q0l2jA+U(+ax?+F3-gyXi-8BGQU7g`q+L^?qSQy_F$Ch)M}zc;71k0|sh%0K+le z>#@FEdwuq8Rwb6BG8ac0iyfB|#`y_Cj3wOh4}6AynRE=uuY6w87<1HvWNI&1Yp$nC z%XbUA2bcJMX5o1aNgVHRr(Ua=K+ZFuWb9G~4U-Mc$iYDuuo@-G{e(kUq<(bz!U7+y zF`JNW=ifMkLX7#&OoVP0sx;L%WFbsugG}Z3T6>MGqGL{dTRM4vT_$~=LRwzguCJ!E z*)=EC1+J~XT^U3CKIo*BVpea{mQiTC?2)9#nQ(sv&3%}^;d%xa8E`oFYu&tn`sg2k zkcBHXf7=M^gU)TY-oP{MdeWyupXaaj+`{U0Zu4#C&6?5zWpu2Ggn|4&Of?DsU;C0b zE(oZHy;6QNm^k!{PK!u*Lr3XcOn{r zmY^_)KtF&p>Qru)MthPYAZ}@_7~hzSZ#;(GY3|Lvn2@y_GTC_z_WjuwJ{}JjUl3G{ z31Q{V-)fMy7p8QhJpMSF&MotW9VEm_%_0>-FEIzZiG5NRp8q4I2K{=u$|jQqBx-?L zVr)-+YZRr!yGR$whC?D_vMwu&Z#ZAV;p{}(D>_FV z*Xw1kG!B9@dM`X?LS&A>fqc6?(Oyd7I5jPauSVoVRjy#=nRY8#cYqw(H4tvuL(9& z*6P(wI8?MGHnUHw`-$Z|Z4-1{?xj4|?Kl=EPRRDIa4fCi+;9gL$94kI6kP=q}6v*AP*kLkx%nAitCVgLiG+f1^4MAN3$I%;3^RDc; z!hzXX*S&Mm{5xH1@(+;L3f5(BzqW^=^<6)1N|7B~sOE)zEOo zY%cA9lf70Kee4i0pxx5ra!Rs(vA41a`OBkMiP4e~077M!K>fh{gM~Ue8K&4zNs_Od zr#+LjJ#}W~OcnDAiq(78VXCWyN=~U3-BbveH^*8>URAhhCWInc0{+_Ari`=%(f`_gi;}}aZsa=o3qITri7*;mhE|Gy0m7s@nfuJ z!@+19B(OOx!{X!-Hq4XK%<3FA?2c^K-e+`EpD+d}KD0naqM(c56jzxgjxLb)H<+h5 zio16Y8l`I%RD#?M#7C>PIDNrrv@W8IvavGsg5|mE>$1)5>9F{k7-JFBQXB-ZTID7b zmNDO~yx1JTsxx0O;PJoCv|H*9nW?Me^z%Ki_jCo7Gd>>jb|z<6vjj(5>YW!ERpewO zerbj(aQ<|H{h-ns?XhzxhYR=7yx6*gSa$7ABF5vV8ZP{M?aU#aXhZ*CO}Eibg~oXs zHlPBBdMe%-3N4pvw^FCtV$H|a2L=bzn>HnDoM`(~m_7Y>@t-fC>wd_=L{y#4_mJP= zhfYzO^$~^Q)|#OlQmn0Zn0j_=B@l;BtbAa*N6hKS!SDY4_u)nq@wLNPW2wjMJ~u!A1RSKeT>`W?s> zLQzxG@g8$OF{r>aUFWA|!d^r<7b*MJ1%g*V%RBT^4bvbx8ffAV- z11>!~o`0;N&z4A^Q(^{JhdD1xzUJDrD51t$JknDdnOQErAY+^^5f6Ft-PGCYggft= z*L=KglLH3tnzx`JuOrmYL0pRvZhLIhEEUctLm;i&X{Q}#)tkZh!BxmG=CZ4-pws@9 zq^nTW9ra8L?s!iHX-0-IH~2_=yYWqqhAh2ag!SQU5QidTv80nuO)-tXoZ6gpbYw80 zO$#X*aes6+mxSk--Ib@y7CkH}X)E~9IuwJJj+SEo;4ljamCPlZYgU<_GB4DflrJsZ zHc;mPEDm~ckUWHdz0LbXP?RUyfH5o1Ed)rXU#8GbtC{DSf#9H3*b4#{obRmQC*k~j z?T~4Lj@vbg%>;MV3>T3X?g!$ll<~x$71bq>>3U|_VwX+Xn3*tC<-IE@UWQv1>-YJ2 z?AJz8n01NBgO4f$B$L2407SC zPGJfQig|^9&TxHaswx+WbhY3ibef%Y@=_5rN>Hc?V81$vThsHrZfjlCacJA|XoeWc z6N}_o_+pzVg9xCTq+Hvjwlz)G_)UZpRm{cWU!1cu-GV|(=w|EwuJVlYbSSw#`nPl` z$tyWo=G?0%awgOZuzR^bo{I!d(9tOv|D8@{bCViMvd?jyKHgEDO`kV6t*4xw*hChL z*u33>PffSatKVi=O!YErv?ykN-J2&**Ungc7G6lFAN?X8kf4TrCo`HAhx(waY$N#SswdgTLWNMyCg!s zeceeX*`O)^82(+48KXw+lC=}e%IS5X8(+7(1aG%ocMs63>;Ml97gcz#;I~Y#fxAn^ zEinjvZ}YcI8vf(aF@QjI0^3*3Fnm5)<9}(GjRH~=RahOk@HE8EwaD;G7KW27srS4S zZ#cr$^qDk1x~d>7*Lnh3szqgDU2dP6R(xJvO1XFDc3~_mrU>6FSQ=2b0E&+z2f!VS=d=YYJ>xfE%_6 zk%+~e!o;G)A|*<{8$r8t6uYOAw-T4S$Pvzfw`z?{jA%_4U_0r-kqsWyAExpT1%>|y zSq#7)9--Jfg*#WW{Jd2$8)Vc!bf2b_dJ4Hgs8ac2nT;m}DkZBcaxZyLkm)l7a3x5h zK3S@ZCY|gXny)kjo_enJrJOq=%?(qhlSFH6c+Jh`HyB(ikck(fyCH&pBZzP}hi~Zm zl=#bS=Fwh6YaU-m@R)x(1QAQ*UFGxfl=&YM3yHV_>>qO-NS(~+Vxjej=!63f0Pooc z0zaH@g06AcWZJrxB)Z!8%?SzC8|lQzpG(GUx~$6!ZkbPZhbg;4xEJjHmh-OvIkJUD zJFiYEC^-9VT$A}&U?Jx$K^qO<6*g3xi-LweyY{`eD(;kjO!NMoE9^(oo3O{3M2Ro{ z(77>Ln6sC4y`b4;NL=eHXqV$(k?%Pv0}eYNj?wNkK2?N zZ*9RbFO;L_hJ;!Xv8sJz9vI5av%d4$crkG3dSAPgCwwo2 z+Hpc=Wc8G@mWU};@3df5r^Fc%0N;R}lI+GcD&}K%(eum7?!VEca2tBaD zG0VUGvPz$})|SY@5W$nB;X>PByoH7pvrstE14-y%5zp?j_VDe2NVi#N;NWk1o0gz$ zU3uUq-m1>u9`o&`&6EFoiO`SG2lZ2IekBWcHO2*!u--J2@AR_&s-}uTFm@grvBG}h zpg(2kq8S}xB4Z3?Od{mlvDPkbh}-67Fc`CoTU+sT+2LHcB1rzy6Y`zwy9Mm6<~+f#ebU`3*~Nn{2}pku zsma}@>>wiTRC59`+gshwB43J)Em(B4bhs2hs)zC>5|~Zn?waZ#yRTm2Iqr{=)@)&T zt`En0u6wMTrq}L|oOafFigx5I51&n}q*LUSg2~8L;B<`RWJ~v0@=HZ);_wQA68!Z6-Ja*;F=Ok+J%=S-i$LCS;uUTr(e%_Zt&!ykQRu3v+&F z7c-#j?V8B?4LW(8k^Pi#w-n_JD@iI>Yqs*rKp6M1$S*}twFZ29p=@X6NJ$f=^Xap>q%;zu8)jk7Ft9}co zdfq!tmcnuF3UNvoFWHcj)fe;*9?^kG`WD=-2}6Vm>J|Q|CRc(=Sq2pLMW%v-lR_hR zh3mIesu&BzH)AtFTH}oSDP2c*8#?8B-}g)05+2Vc^@6DhboxxY>f+xh<)M0LHyhJi zc(02Nr3UF`yQh|(ffP#*4gqfe;qwg_;%MJz?H;EhmpV>}mjN{R^6p4_V94UXjCHta ziZ_z%8Ym$BxPV+%6q(Lx*!gBMTJbdNcU|c_X4u6Xz@tIn598bwnRbo^ki~a_t9-p) zh7rk_*)RIR)r1XPPVWSBmL|Wothvm083Ya?ojujHTs;^Do;Q9qt3t_m6@DhoRyloG zb3P@MCwh9q(Fi;!U$QMZ_TOWoS8d6n1d$Y>2=TZBO0L9@BMSh~KufMlm(O=T<+{T} zO<1DQ2*=dXxXyhz_G?TQ?FyAjOy8u;1auEigwY7@uA6h9V_qM)LB#Bc^MLKpAZax*R8k(hL#uH7*RVBfj4xgr$bwu%T`%pvwb zX#H(jMk!?p@uq&3X-fZi4hP;{?mu1tUSYBrv)`%di9T?V>Iw^K0QiM=cekOz29J=? z1-;+)hUid{!mo~wr>O^s%om=n1FR~KjvU6CmzI;|TT#%0r+-@~SjTC8%8TwFQj+@r zd?a17&ojAw6*$cOXxVowlQ$XKe4uh}1SuQ2$m1)g*?Ae#^<>Jq+OVI6nu#2s*z`~JIcLs zNr4~mwyR5T!&!E|N5)I<7^Jt|Mhf4F;ZVnuOzI${p|&%<#}3Yr2U?xu>>4AE66@xJ zM%mR0^3t0{&e$pDCvQZodnV^^F)cVaPp!oh^3DXAF}CbmsG8jZ+uPlU72_Q_Xx=9= zy2Gv=*tU`P%!PPg+PpP5`F5NK_b>m$2v{kr{qSn=4PFCK9wZ-KEjrbKKlMPEiN6lD zhd}cqCcQ=Xf(=jf`=F@KfCH0*(65PekaKH1M5$!wpEQT{uG&j3=Q>GosIX^L7X^>dddlFZXKo<>o4(O;(bF#|pLhqDM;439!^bhvI5ae=iInPw zO!H0>3!q(Ky{+|Z<-DFuWm?x`2lK#xph!U6akY?T5?~HN$V)!lmz_6>0n+~ ze`_j8z!dVr7V%OqBKB6v#w9b~9KIx@5V5P_j~hqd?rNDypZi1nnbx9akDsJ8DD1nG zeK0e8rwf&Q$Plz`7>X*BqOx5MIeE^ix;9e%sE zSQCfOQxAZWxRc#7THmR*b^FstLO(lEQP-=^{h>NA@9$qN->sD!a|B0W#qlTI= zxY6x^7UNRZA~sx#!uRis-bv2OaLq-0z!Q8qh>u*>WBc=fM4wk2l1^c5(*e15@wYS; zvP6yn%Gk5bbLMt+_naBBZXf8s#jRucPZ?gu()yM4DVo;F1{JXLlhTw%!4@T*mxX|P zahxCHjYwV`T{g(Q@Jt$0) zaVW41*pL@+l&{tU{$^Zo1`CsLaX6bq;0fM4n*akaMeDLm1Zr$j+c1j-8^z}z(RG?r z(;JLGTKXyU7=6(oev={s5L9nKT3f?6e8#=;hXx5#@`&dxxU55 z<5q-Ci`|kWJio1rZZpRFxhigS?YK6RuS_+YK2Nn73=Hl4ON4;(BWNN7k~>3mtw=4* zY&}rr#^;nNiMmuV89j^BS(b~%1GFS*3H!R_`0_dMtz^To_z$)O6MsAjzaGP0aa@{aQt1Kv+dTw~iuwYi+xA*saEr&rDw*POs$Fq9*$GCCQnJ z*nHG3Ros%?j!rfD$h25&Wg&g~nA0S>Eg<8e^{@9LF6m$ypZ(E}jx*S&`YBEP&XXj(z&SsR_-A5#k{RdAJyX8UjrzugBTX2Ytq zz6Cy;cVAU~bA5UxH>|yW5ci-E^_skep5;8DJK+@+VPKHFI7u$IZGwM?HK$IaTI^L8 zG^VFRQl7LJ4~+H8U<+R?Xl@OAfky1LnjD1J{HZCvJxO3@L&P>vK6Pfa+EDJTaNY-B>X?Ii05WH=q1& zM%C*-zn27rj{n|T4q{q#EeV-1`-Lb&kW7kekD{ZX*-&4Kw`(QEtOZ;I9?0svj3-Gn>YxurUB@+=bjD@7+FH<&b^{Fso+L*Zyk!b+p#Z zjC1y8+0(Dd1Gxos2U4JB3qQh5W&3Rbj=A;h&Y(1H7kWm6-kTw`cX3~%UzgUvr*WGd zS#GG#Zv57|*YAr%-v>9U_sHd02H!1P=0haKOURwKt=eJ^XyZj*zEz7V#a+U>~=W|ZqRLV)(wDO&v1ff>Sydm*;9M*b?u=~Wzh%KK|deB z*!1psd0~o!PXr^L64_Z{xOXQJ==L01*C`N)JNGM0!CesA?&w=y5V4Pf)J6y`QdJQy zl`WJpwp;wl-I%i8JjpobaoLGq8;KQtvd}PWxTMS4SV#1?YduBcS@n=?JDKL}@ZL%n zK6!iv0T%Cr?^e7EgiKbKZTi`5L=A|YQlw2}Mla?WEEo=w1^sv5EYBx){+3tUzMb>8 z_)u`szT+mrwi1(wkQ+C_Rm0|JrY1sW8}!%~!m7g)q};!6FzoeK1Pn^z;?c7Y5*VQ) z+0n8gQTL(`8;M28!A;n3H4SH%l>1Hw1fIB7l!u1daPtjT!ox?VE7MFQ z!|j-oj2E}1V&)m}uK8(6(#&bHKzO>-3Q`{s%<=nAa|~J|MxHlK-Zn(vgf+AL<<@Jb ze0x7olNv}`NW;@7@&5G5`N1AZn|oE1?9AxdT)h{z{I1>0KJzLlT@oIdVYbgtuT;(9 zG>owM2e+F55KUjVHjl*;#x~j1M9c)Q-WE@UCa> zN7rl}&^fOHB%8Q#wUqbt|MY*g0PLp#HU9d+UrYKb+PV|1c*SgIKR=D{N&1i&_-4A- z^i0%muoPRLcIYUj1h+L1QdXO8nix~?lu38+m3@P1bCG{(J!r4E5HwZq;DvnTZ1bzV zi^y9DUub3|eEp-s)_vP??$Aa@}NKYleLHlRA{wEv%E0kYULNwLL8e^W3Z2Q$DSL2_cKvw5jQn zhQ0!Kl`L*U6o3VuV$Xz zBP(od`F!@i$7S;;qYc!9-W#)l`FV~$7(9Tu63!kFg*o~yClPQ~Owug0g*}Lmv55VL}_^x#y z>=<#n*dB@b_aAj|-S%QlU+REPqoJ10vxt@)9#^lADjHz0(|9D%8T#qVF~I1J(%dk4WOS_m zn@*_RwV=SNsD(W#0z?6Xq1wRs)Y6uiXieg}xIH$YR25KGgF3diC^OqEhzc z-^3Em{bg?$E*8Uym72~z=x35qNhGJ{Te}nc&~t9+CqmH7q(rtvf0JBwywcHp?QD}1 zqjYAOnXJ2EADGA5B0WuMPtNt}0&Qz$6kv&W~h2@)rs4~1_p!G|oo8#m&$ zxT0>B%RL<|OXP#(F9Ad>Jw~V-I`WIFQ_4!ljgCHXUX7)6zmUiq2E-EPyf7c9)To{( z6jF|>PLD8*k9-tJ&o!HS?p^tCSq?^Xvpse>vo!>6pl9^Qj2nSx;OISTPQ?sX#2?j7 zM--|V|D-*3mI~`B6QWKX+_qok1pEn3-C#I;$nx@VYpE~jaQ}a{C_m*|g-t&Am76ek zmn>s;u@-FjfiaAbpm%k(Jf@|wq3bbuE7p>lO05ZZd_*K=EGZ46V1XY1jY1a|g7c7; zeU?A+M!#b^4tvbvCSlM5Z;5~tY26F7kEw4Dnv>Z9HbEiy>(qX{(r-mm5Z?vMO1G+) zR(Fh?QgSS@`(=-1!!>dJ{-Jyc$a_i(Ur7&FUVB!DKBB~PLe5C!FJ6?lHL^zqdGn=c zs9omspKGp`5q7)oF6dozTG@~{;gO>U{OB-u(18j$<4c4&z;xG1^KIuM^P7{Xj3=Gq zsf>{uZO*NR_LJC+p3zKJ)~!(KsrskWWS#q4=>YtE8?$Ujy4z7FXS$1zSrf`LUpw!f zH>G&*LA1?W(DF4stDjoG685t7Gp_E|Kt8D5^*!(=sMU@~?m#3z5j-SSk)aX7d7Y#Gm%TX6=L=eW`Af2%GuWAezKvg#P$ z?zNaA08{$(#VH)^<8-|xMT*fKw8Zs@bv_-YOiF^+RVvOE+(1F--Fe+8M|dp2%h7E| zgDqJTk_-ntFP1lUEJg77M6}S9Cxn)ZyeMuQLBB+g7zC9t2B zG3Tb_Ih6UR)do&)@vJY|vCK2A-MaJ)`Ay=t-Pm>fI#+zRTWoN2{p_Iw z`QER`_uNAC9VS9ax+Z%PG?=U*L!Qy*#9CDG&s^=~?UmEHV)jVWwOw_r#?p0ogA|h} z8UIpu6mcdGq!w#q8DG#t$nVE}DJ$UE==m<3SmY(@cMfR1o9_)gqmr@J2ivc($-OCV zBvQL+)a@Ph9zLkQxBgvha40a>XK{KfwIT0VT}mN4I&z7ZP|#%DiUsnZ&eXZTFEEa~ zVcMWiHDv-$gjFa5#R^7?N$(Weui#v=*6a*AW58&EGAr%OeO7-C z{?P+IJfx`pp59%B(4h~ppAtya@Ft~M&Wz+d-i3@IyZWuYFSnBxk2``Rs17fIHope; zKag}`$}Of}Zu$MZrctB>_Q&Qt!=X|5pZv&4?E83h?@Ho-ZmrhJ8 zhmlPC@O|Yd;83Az`yoIRuVvwUL(D($ayM=`U0Bp~A z-x@HMl5^ICliT8X9<~>bN^`fj#w0?>heZ_QQu>;UxU1{gSwk+Luni9r|93zG&0P+b zv{jo4o!p0?RKO6iZZx*?q>3vEh-3QYT4upuqUOAflKua%^_4+wwoTi`p%5sgxO;JT zD^d!DA_a=O1b2504lPpLDXzuc-Q9z0fZ#4)?q}Y2o|*T%f9&K>W-_zaxtrZX&TCUQ zH$ULJmCd}i6b3<^rUL)3UStNGsD?1U)~S{dpx}`}gIO7PJE@^t(#r5u*?_ujU_T0Z zf(T)aEOQaVu0A_|;!NSz%+aAtl3yCZxV(-cCXD^cx>lB3%mhcmbM}nBPYNVG! z!U9ZCNrs3H?h z?4YS5~({%#p2h z(D-j_6sv>Z$qPa*8p{Mh(HNoxV+2?Q@(AN)4MYjV*xlnwDnwVid7Vr)9~x7?4{i7( zxbqBW@*i1{IQKX_AF87=eVOTfjyXMrnl&D$iCfRl?9BCA7)E=N z0|oMs&MD0+29t|oyJ}>S-3%-ikms*$w{ssDxJ{1G>txxg+=-bnH;Gh^-ikO;At7|x zvp&dsV_P;+t=_$^cLx?`if-)F>>B-{-ZerYXTWD7WWbj@M*)O8O7I@&V-tNMDrTfZ zolh2RGwcD4n)(csmOK(fO6@rH-hh+=UpS%7RvPvTZ5n0sJU;AE;Q-N#VFwy>MdZN{ zN@KVz#1O;9qZapUA0BnJSoM?AYTc$qG|53R&FoJEfxI<;w8ugL&V&P{BHGSQ#8*vQ z{@MvO1X-<>-9(XqJ#K=~>mT=;A7;56N^&&O!Nv7v%me8z@bMGEDMP?aDbtfqj1FEB zu@ulYz0o#QaGPIeUaF*^tAVnQ?*eL*T?#qm#m)5?h1D#YRFE0zTunK>b@vPeDPCeYeVs zEjBXXNJ)P?S5-J&3az>RaGeO5QQqYTS!gEe`yjqdn& z%u)*S(IHXsG|t1sUBT=~#u(uHcZ;T%?YNSmdJ13mnQ~;mo^>_4>l66Q5>zxFDmFsD zxP|!A@C41zGY7ecR^#EzO_sbTq%AI`MftNlN19>9pJV-wJ^^cf7oD#&jFSMzU7{m%M>6SnYdA)srnGjUFb=X6)m(SJuP z!0Q2Nn4l`{_3n^JA=jXN^F!KJ6?y*^f-iJYg#2>X4{5yp z;#Oj7ng9$}5g8Rosszxn6+MmYkkbnQ`a7TM=Sb`z$(kG=jJw!YKP`oE9v>WakK?8A z$f@w1p4NGYaqSzY^Xn9SqoW%~4#kc(j7j zo#mS%yHnXq?;G0B8k6165-`xQ-U^>dcHiP=z2BL0u5-J1;9|Q-^CH_?ODsk2a_KKc z#)AibR>k6y-sg&=XfgRgtz?L3enGn0`iwhXPB1h#x6Myg!kliE)7iI&=TPm<`tt@k}sqv3N!y@>j02={A8Rj?_CCpm) zoK+%_Nt=G8Il=Ew8}Hwr4$)0Nkoe;aOj0JzfNwYru(A4SPVv14lB)qakB7vKkM;K@ zHaXAcvTKzDblx5jdyf$k{21&V#(;q@*P~^VM5YVf*RwGnsflnOwjzN-NUQU<%}~A4 zwyRIf9Mw)9?Leu=es9#UxlGqO!^uxIG>$)RJ45X?cY%g4Z-Sy{*LgUV+ZDl{J!Jy> z?2zuIbk9xA*;(kAz3VH-Vg8}KpoJjpD#$um`l{~uI*d2hItrhy1D+ebWs}PY09?>``lpl}SYzb4+PR8ZhDaS{{QN8;Ozh8UW%3gT zI%|b)b(LvDvkuAVD2-53aiTIc%^Ni1+fQ0rqwPCI)_>kxxL>`_qT5vI^ELCa)a)V) zq#`nl>-r4rbYHgjZo3Dxb4k4>joTjOKUV`VQr!|B$|aNyRi<7_qp#X$;;@*Vz&LVc zb-nreO`Q+E)ras zIlpq2iPnS7Cq%n4Rqaxj+u1xi)L;|c@2kkeTpCedeRBe@4}4EcS)8w8b`xw~c5iGn z+SB^(R~q8p`mQ#oZrg}(4Wk(Q?+x&N=WR{DP*%J5nWH}n(ow-$f$HH{=5Dn1^kK#; zv(kp$4A7<~`}0Y+O{80z;i13ZuD&PZjAb~m2nKTid(!{RbAHAE>N=7Eb-hJ_dd{qM z2>FrUgk0!m6f%a$Un_|Z&8_zP=rfJGp0cXV?%%eeFUWqJrEI%FHlneYn;V~nQt7Nr ziiP3x%F_Ea8FSz##_oWY&!Zw3(IEk+kMnUUs$X_jIg)j)5xe@vrs zkP)=~#W6kM>4^i(UT5Jl6pE0@wd&iNLAX~XN(pkdY5fEzYj%FLYz|>c@9~8!SCv<< zIz;V>&jNUBo(|G6Fy340r;9cL7mqwj+(|D=T*-#&5y3iq@Cx{^H zmh)GB<@$%lnS#c6Hr|fmK3wXic2D6vYg(i9n{%{Uk*b)###Y5Gxp3O6Em_%$#)jWR z=A&(&D!nw$hF|t~j?rLK94Q07(49<^#twt}j`%~paP%CF@NBG(o(ZVD&BLw6oo zwqR(KY{=CP(Z1RkTX$S!X8Vh6} z0&k6eh9|3w=I1A+!ggT~T*>>#ae#M6i$!Hu0YWs;$tLu;O+QxX{;?uD^!WJ}WkDTd z---u7o{VL7IUIU+C{m`~aB3DK_R_Zb_Y3Luf{$-S5r5qBa=aVy)v_b1pW7`Ww$^WE zfy1*WlPsz}L;tTUw^)ANLo~wE6l}Qf`+})lKVTe6X*6Bg#ANWg#8&$C{>n@7oW=la zKGA`_Nc3I_W4SOL0=dY5BCPnAX8Vl&3$ZBVK@(kePWIjmhz9toZ^}Q$4uS^oc4;Y# zqLK}4>9w>EA|z|_%*`!X?TZ)1rMvs#HL;Z4nGI71(4+#~2(Rv!ItLudJkuSk`9s~v zpd{}J`3(sQa*%}_-qnkvZHsE#co{D)0n&uBivg*EiKW*ByQ<)$UblG=D2iZ9rYST0 z%H0~7ky8mz(v476i=EKN4WSmY$w6X{P!c(=PphOh9CJzrnJ-`Ipg%w-(zT5cKEJER56kXwhAtt4qJR>8ovEE66kE7s6QGWDSk5YYV|5TIM<>Usz{dSsGPR9-Qq_n&h&>%s3n^NRJh6}j+i ze-p`Lf+PT2>m{#CRlXDz#G|^|)prt?hrC%%-|wrKbKdow^QNP+$a0)MXcv zN|S&K>*RmSDk%GB4Nap9c)t;u*j|g{{6_hQO5frVJ(ugvkh86o z*>2v%%-yPyBWWAuv3l&935!X$eO#Soc7`0Nlchf(yv#P1H!m#IW=+Wb?_+~}3E@QW zF!FF*zajPv6WEm(|Vf3qUf=Gl_SzwI)6 z$<*c9w+*pjLD9rj(WirdsB5}EbEy8@y5c#zRlT?omi&JnSJUn_%;cAd2adxYOAs9H((G9C%j0f9O1wmaX8!Q!wdkB?q zknUTQ00gn6B&xp0eg%UGIv1W@5sCW0Soo#kf-Ayt zKL&2BWB@rY;}gSVI2|>ey-Zf+0ug%8K#bv0I#-JQGTLk`2^h+B@5|xbO)&m&Tz96a zaX%|p=DA0k3f3t{p3kKVbyrCa;{<&aumkV>5yj3P{a`sYK513cI{C;uA~f%$bs{CL zj=?zl8F04es<8rJ1L}(EQo?iQCAVySCm0cu*5SqE_Vm;RCx8NL<^WhT=Y}=%j-QUz zAIK?=ecohOv}zCjAY_1G;~@SjDJoUl>aCz55ZFf~mlb6iCEm4!?drR0F6*7JlTs~P zzsM*0vZQ#~LZ4~&W#&h3NlqlLz072;GeNIL>E@NRWP^O!-qbu%s~hTX{n|=1$AV0T z#2`5I*iidu&^u?mQIiWF{WLF$Mi2@|*k!Ln)K~lAHhDz4!l%hSczkX$9JF~&z+)BO zHVJPYq|GV$o%ioT?s+9m?Y`>5tiftvdT&0L;?b+AcUDnRx!EvMA=hr;jK#{|pan9| zhz7q)_@(ho3A;3`Hj^#`;y^s2(agI3lGrv>5r^Mi^=-YfYJhY#uFS8*>Fu;XXS^0V zt6k1=IJ6-0zHD1c&~FmJ?cNlbh4rVPl}6((Y6M3z*y=>|oz>MGmM&jP7zr=>X%QY{ z`Gkl88n?_SoFU0vjm!BX%u3!S!3LXNM&TkypCC^Nn8;}fu5zkdr<<+eAR<1dMONeEV7!*5)~HO^){vQoeq z*Y+*QF~1*cSQ{ek(Bh}qho$EaEJBeP@FDpBSvP~nXgY4bFR@N*SGe{5{mN0zaeuU% zonA#s9W)e~`oCI$-Rjw7@DF+RpXdQ^WwSKi`%@~M{Q@5R9Pwy4$J2#IoNm)@^mja= zXKLSl_(sgT3*?E{qIq9{)XkiY#q)_xFC|7h#3 zeQh8|c(cyT-H6L1{;^~8i!M`Gc-{N~vx3AV3K4R_-_&s|I-M~Bo&t`3hV2XK9zM>J zNX@)f?0{79x^(+f!cl&xvst>=!((ISW9aZQk(r)1CKsD%=w5-%(`mpL&8LHzt6Dew zLp>tvy=Xl-a&AfTJ#1Qg2IzIGM_w1@gq!WoeGK49`I^6?h?pF#tRK{%ZSaj)hfmzY zK{P|sBV&9FWD^uHKIXRCLmDe8@Gn^misYeCu1tn4P!6B$B0CM#IFb8|QaKCg;%yQ& zyr$!qWXkC+NJq5Ek6b`GJ#0YT?Xks9-PXjorp3bcE6q&JJ49_>>-l*b*u~6}%W7nlov@6VI-B4Kl{$6byi2bWdjsaGIh>Sj30B;?|{@zqv8=2Bso z5}%u&SRSKiun5NK67g%FMOA@A4Y(u64k5H%HPRRwlHYV$3P%Ofa3+M}<5~G3&w72n zc_kGf6;`3xe}Xiv;bOF{W9v3nSQhx@i|-3uCla-|qaiEr6;g!x35Q3S>Q{kft_)(2 zW+!U$V#0|pB?BQ+&65Z>u3Tj{Yax+S3!m6GfwIvT6)26{=Y=Rc!Y}}h8>Wq!q}Vlj zmiTAFpC6p(l`UwI=EUG=H~Q0Aot)RU2xg?Efd)nmhZE|UEh;l`Hlj%OSCN`DCJ_zQ z(FLf#zxtSAA!SpfQ$#KeGVIy=>zd(MZ2-{W#DBbG^9v{>)9w8oZ7FdCU-;E_TUOs& zbXPL2-Z9=!N9X3@#|Y;snXe#!P&nyJC=){(SH!4A4+AfTs~s@Kb<}3QuP2TnrY^X0}J0N^hUEI-d8?gMD@Tqvz#X$4(4=Ch^ZpSU;PFg=A1d zTgvOlvMQN9NOvPPO+{6hJ6dGJ(VX^ZT*r}{^}!CSum=G~D8(br0GvKH8d+*$I~ zeo`8b<@23=Z)S|m+k9x}@T2n`=g&kdfBLkgoYM1Bw~0=iw6Fh#-&b|1;hm-EAu*kv zF)3H`rTu8vW5C5bs%lwD05*>93)Ph0PRLT5|KYILx9{|j?j-P>>m=9aje;@fQkTvJ zH5yNG<5=P4Js-@#I=c#ron8W0@C?z&_rx!>Azpt}7UMZnkT}rPAAi=EKqiB%b;9N^ z7(L&5v$vu&~iE-jneBH^j&&ylG#T1j$d+Aq9>WS zU1%(ru@(~{eOiEwnWQxndd_L&QsN%znqgE3$UWwcT~(MbEa!#NE%YGhMu&*HO7T=? z`w`~x*7SRpakv-m_iC_%QPw$J;C>AnwSw|fCMWDT(tWFu$1+{cJ44b=05z<_X`1+% z-@a%IDL!8;2=l+{)mtxO{PyXEY%%2dr{>OY6d?3yz(T>fTtJg>~G3G^kgwkniP|e>&{YC4yjTAtG1_>;JP= zN`|E&*`6}tupr04`A)NNXQx|v{}@alZmvh|ktX8Z3yz37v+ZXeL`xh_wZs`YSstvK z3E#*UjJM+X{yQs+x>zMw>`tolEZDcY16_D1nC0uXk>7oT-`IAn@NmBy-<5~n`a3Q0 zh$qUoayb17!ryg|3#rGI4*x7nU5S+vcu##i0s`1}Qnn7f%TxB~(-Lw)dVin|m6Li` z1m4Ny?8ss0-opm)33jZ=0mZ6m@k)YS`NRYuK9nomiW)^Dmt! zl(qE-(qo^nokTCbaN8{QviW(lp+o(`#&0ltX~^0HRZ_8Xd5&}gn9L1i->`@d8N4Hd zEcNDz5I42E3iGK(vqec!H8yA;=+1nF@wbCfWk)S4Lpg0 z`5TP{Xpjc(EHFGkib1mc+r8!3bC6#3XH+Q(2b4tUdgDIK1#AxNsBqxF?6^*)+j7RBhz(H=!v|rurPo=#Vy4}7e)sHHOnSLt623XBTsk}TG*HLH z1J}Bbu?kf|=0k}7bltkoueZl-I!SZf&2E0a^)dG%ec6_bh}k<-~RLuz9TGtJNshN zSVAC;J9$n`u&`LJ3V(drwWN21EmRb!CrF3K|>HC;TN8viD| zTo(?p>}SMB_e|msTetY*W+Nn7k@ab*sN{*~K)dL8Wy0@rf_y&)s89I+_rYIOeZGcJ zKMR$7{;;BmX1?0T)U^uqYHX>`Sw^j>{fKZpe;*S%fDn-4a`??so#EQ03q3tD5@C3mcyuiC!621 zWNPjNY9Ipto}p76euE#l@;-=+*p))|?!>k33%Ilc4wYq?twvNp=A`+J=gtrzY>$TK?bqJFi)cx zu{0AWd$U3ZLHP)8eHX}8W2z*8iY{_iG2>D{RkX+xo=ksr|gwsL%R*wW6;_q{3U?*vDnzdL#K~t1JlbjhldEnOIeAN(ESw*PEczb(nupum`47fvD_TTQw~W{_QUvM z20EOq#TVgYN;SM!AW#9&V+6{&2!5e6Y}5+A7kegb@P70{a6OI|9f3Fihi;4U$f3W; zVGlsR)Yos}8Z?ZJ!HcclP|j@eD4q4EZvZ7d{v?9UjT`d-0>vU5=lw_Sg2OpC%32E4 zQSIW_K1Z2LRvNChUh~BILgH{@ON`yz`~#!ccDLGipvP+`Wa*gB(~ECrs(R&`4{O7A z3`1WXbZa4gU7r@v1H~8Ud&ODANGSV|m>7=N{2}8b{^N2l%6jund55Q5)l9t05IYFD z^lg91NHx}oNUraMUfNqZaT^~}{pT04^J`);Idye3ChQ|u`<1uJ3vcK# z7|uBCHls7ncFYd04VyLt>fP-7DUa53%>t^sh+@OV%f@c~2<@u)*A%BVNqF2aSD6Wv zvB*RM8Gsq1qjF|kmRp-Mh00=%1T|tlJpV)_xpyEfmWb@*4JifhtO<{>RQfwA4<1$O zWIS!l~w ze#Gx(!k^R&MrBCC#H)bsto8pHn|d%I2NUlG4YKXCWSy%kW8C-3A$+(Wf&r4bbh}1f+-LMQP(*-C?1Bt?E}Rq& zp9IS^O}nSojFjY(b4R@C15uB3?9QE&!uIS4o55%`&ewKEgy^n3kkb^fVmEg}XCzY0 zFACqU`e%K)&_~1+TntO8L48Gz;0>;mv`fPkpre&Xn-$l>?6kT6ggW&sE;c=FRH35Tx%>V8(C;tH+s(Ki|?i3pfw%0GJh{*vKzol$>rn!X1*&g0@c z%_bnMJU;odo6MrJzODjvUYdyAZ@~KJ$3C%>)3rQN3J>u3=m9lh$fIAotGzF3#9NV# z-RYUl^~aj6xw6W#BXl0Oq~Mw2E-$kdgW8PwkdyG_4V47*fS8LRkqV3Y(1;A5mp+Ds$& zZ0GYa-=DsLu;9fidX^)`@H=wX?4|cKk+(-VsKl_`w_3uIKgc_{-kW}`)H|$9)<5`Pk@%H#zr}Q!Odt3bG>mztX#-2Vun^@A|bdMkkl0GfG zP1ZqilD^qB@;JcF=r|y>ZMqDA6T12Df@1w2q%@TD_lZTHV>TJh0u#4?&MHhl!3i&q zDfyXsR>)9juab_Z-KA$F=y!iNH(Ku(8bm)NZ4}~%@brq_aC-TrM3M?+zM@R%^PSlJ zY$ADKUQJte9!(_lO=y9!#@=+%)WBaYDUtQs7S}ABX$?O+{9O)eUI;>9zI&|_G zs?!1j1O&c2G8NCmz{VSM>b~{^&4M&bAo5;7mA-tRVme68>+&ok{G{Y0haI z#uP78Ry64GxA))Sw*+q{g2p=g(|Eq(JqTmLB}g?sB!M@pNvf3BYdBW? zP13-PCo~o@ztie|vJG=%MF{ho8hga-pi?_MNXzefWG&go!u8B5l3~Z+z`nC~j=d^zH6tR_442aa!NIcn?$^_7)Ced6^ z>?lRgGxVXc+E?d`tq%zDQ3U)<9<+Ry-g!_BNOu{!*SVPTkQcUfe68GnW7wOlyn5G= zwcX$GOoFw3&PCRI3AEPjKpUFT-8C9=K>aLYT=CI<9`E`bebi2KEaDWeT}LcMYZ!j* zy^U4-z?nkw8zau2urdxH`B=TPre(^t$GA73frtC|; z9em6&-ZEoI9+N!SuZENUs$T+6G8TuCy2pUN_S1kTyUVX)*3zGhj$)AfwP&pa z;Tp)dtBaA_(;>akqH%Clb=RHuWmI19U90fdc)PzmBU0-9%>bJU6{mBh{!KCbO;v1% zXJK;bcS+T-dVBCMe|nNpe>O3Bm+g&0tMccS=2&Q6BP)jA0tmuFstI`ey0JUwqbTvw z2TU+*atJ#{WKlY+2ECnRM$#^|7{QM73KM*0vfwoeC>L_`pcmTrAGz@f^|#kSDCg^9 z&m80}Pd&ADH-MRA;!jM_U0t7gHS3$T)rI0`qj0l&rztu?@M1X2jG0fCi%G-P4kR6U zq@*!ppqUS}p~JrUMt)HS$oQ?@jhx)`mKuR$`4ZYi^{^N)Mj#z68n=|BJGg2kI-2ie z@{UA43MS&~xO>n)$Jc*lBDP@eDoosu71kvD70xeAmrap7}4zc)gDX? z@aGLFd>!aiZ&S)Zt;x_?VG(2~rI0QE*k#EnA!kBBf*x*N&Er8yZ<6tc2Uf}B zw$`l;pXW;r?!MkL#Bh;vS?V-O*Mn(e9nYfkbBoOk`;uk|F$;Qzq|CXnXgBZAYY+T}%8JF`otL zbO~<(k%qn^x=br81ytDV&GxxM)8a7rpG1XN;vk8=D@V8M@S(+xKPt-NijeQ_yD+Kn zzn^IDX6ex2{{IIDs?QO=h6d1VhVNGhNf`Gh-7WQcOTd)l3kx}^Z z9SYM2C#Swlwt6u29}UPtk)nvO1%<~wTW6q^&Si#ww~0)578HyLsudXk2&nasOx+UAzN!CE`O>U&k0Q5|RI{V`mUn?CB$G0Y4Ol zMRf1Fv2^DIC^hHZW`+?I^`hxVeYyi};XUPDZ4-lW@UAkV2CbW4#cm`+V9c&}dGjX1 zGu-i|THXyoZ;Qtz7NPK6>zeN*BU1U6#=a*Zxms(Mu5k9d>PxI^Q5Ys5{)x&YjUAEY zbF6sC)IS`BebJ5E+b-Uo1xunk=f_kL+e^~VI3>K(VYJ4$ujZmwQ< z_AgzC;Ca12J`};CF-w}`82`a;%hy^xb$#KvI+rzp!Uux#k!G*Kl>9z<^=0yJ1V=cN zb<**h1Orm#r70xcNYWTrTB_E71p#O&A7mSur2-;7q^_B%r2>jAs0|NQ1aS&TMv`8y z)4aFi{lX)Kx4J+%SZQee977cH?Ceoe2;;Q^bC&EZAee=Mbgc3+MI2_0Rt-^N$%Ctr z{sz3j5e1*=0I4V3c#Qf$x0Ch&D;7i|(`aP#cL77iIWZgtx$J6j$s_~t*a_-CI5%gv zQ@p_zBmyUA9GI&(bgxqa@-KN#?zeyVJhopxbMx7P1`UjZIPhArDCvGgSM*eQzYh%L z3kf)y%>Vf(2Of3+di$v}JMJpa{8Qr2p!I>orL5Ta(G5+`N`-5Mub=itn;(YUIz$ z-shJCdqRJs2soX0jZ|#B@LccAn+F(oQOj7wDyfNV@dScmk>bxcsCs{cKfJZSnw9mw zeq7(O;`9A+A2Xw*87`tsCn1sdCoC9>hh09QnLurBqhg*!=3BMR^Wu3Ri&3MdRq13{ zq-kBWE>Pal_dBB?l)S!GJQ6x(fQ43Rp?X=ZkS1Er_by;;x%F2K4{{b_Hj*)MUNJF= zgEPVmn{Xsd1X=L+=K1xRSOz0&vh!ZQF^22)in`T#g1Yr((ymH5f2=`yLyK-vFd`EL ztw7vErR!-`!O;JKr6FKfH;upCQ&?r>%XbT#yIt&qH+tsNY}EFu0QZTf#0kflwsqn& zV_3^>hq)^xLlYv~?EX>28^(6+mPFS5PBQ%4)XF*!H#^@8-Z(rSTK+oosDTetxno!u0nrV_YVpHJ|pZc!ZU7Do-vQIcS=O*@QpUg(y@Hom(oy!t4%5E z->syzb{l2ZnAQ7l3B8RigR?2!?|6(B=>&XdA2|!v`0Rbh+)D-#r;(lEZp%Qw5{cl2 zOCnlvau(F#4PSaX_6lB~%VCE%A@YP6rq^(Wxzr#3qhY)u&{C#!mT>weK$phzeTp`& zJT69u#w8IK?EKCJE|Kn0qi{?fhyI?|p2Jef$hdsUgPMSTc&L@4t2AG%d68q_+aB@j zy>7enNg;d|S}Xkz1sX&DrDiGgnvKscX&US)*=mN1JA&?w<-eFLW2lyJ$S`!64Kvy> z>z!4O=UZ79x@Ojhv4h$xX$k@qc&bd4mIJ~O$a^;0W;{tt;x(Doa1%$ZPP)y& z-=;kX%Gc3-JdDg*N~Bmf_F>#3w)5F)BkXH3aid1u^cLzRfc;fHvhgr&o%CPNPYy1w z1m4WF8bd)D`-i1!YWh0kkydeQpcS(kT}xGu)XZ6qyeZ-~z$m_*qDxAv@H@+>F>Ubl zjjk~DT-&7&7Q|17pPWn)tmdY2UxM5wR| zhc2n>_0OsRZ?@%0h(=!)by<#J277X~3Q{Hgp^Lz;-y7u) zrxFfy`9#BL7~Jl$FZFncEpHTVKx22T^OjCAZMebi5iYCg;i0>?K%L7l{wfT8S32^xDfF@k?bb}2O{iAV`%ujx;Q<_WaL6sz zvQClL@*twm=#EElmtp#!ii(&SHi6hnF>iqxMIj46)+O=2kOjS=f11j47@zoUVtr>H zncwfUcCVFx%Zl7xghI6@V#(;wzm{-7t+bM0<+WtPPvaDI)syMxbU51eK>6rs{Q7>= z8R6V#Eu(kZcbRfn`GQGio;zN-mK>VV?(kL z*+7z@5?j(#mlUY)2#2rF6H8c__5H$wU$ybLx%8iKKOEY>Te`Iau0^O(9+%1B*N8t3 zPt4$LD7QsrCyB1Nh0ux!-8nvg7%wBhGoxp)uf|2gf9yEU@JJ^y&3Ij3FMK#X%uFGn z`SpoPs^U|ibS^5$K7@-P=FJw?{BcAxBN*b7o$D1g;8`)u7)laBF+jy!#+pP=g-Gj& zN=K8j8lRGRm~wbpvVZ@4F08gDf}bKwM`P=Ak?QQG<}!DwdMn=s@v1l6tD{b-LJQqI zdcCJ*dU-xV%W@huVyj5*(-Z7tuAhm}WS*BR?B)Vx2Bl8XKGi*~`5Wp7kCzyVnUC#$ zbXmyf$CaPsQ-vR-R`rQrVas`Z@JYP95~0o8Bg*4g?vo)bex%0@<`K6sA3TQ&?;tEGT6W`rAKi_5~?w*cZ=J^2L#Bi*YPNCwk=m z{PA;xlY2dd_w`wS)_JXip08$Q)n{c@1I#3mtwv)29SHM43l63$Q&Ik^6fsr7`@$_s zlK2$s1}w2fF}Ll?qd*J7R%$KTQL8V1uR-SOuUmX&cl|CnqWiGa=x{`~IY($(7vk1v zlqD&I06=gUiL%`}BA|*^Lu3il&QDq&7cf+;Ko$9uzh|9c_7RB#Gz^}6KJ4V*c-cSZ zc1!4Ire8!R)ZW{^A6$BsVi2A=dBkleNX7&OLW|sE$uDe~9W_EF z8Za8?#r^%+zU{DFf-iZ|3bn;i3AGmw zp5pyY_ODj9%+;0e(9karzTpIts}BF&-kMR^YgAF(i$WhKyS!gq^IVJTYqcFRdii@~ zQSoxr;Bf%fpOvdJgtYN!b<4lw6?CGPCDM?~{-An)cazx4$`bJbf zZ3Vr9QowAhYh2C6RH*0mb8OYt3ZML4x-p)YLm%_aG=o`n#*a~>YS(yHJ`CGWEyE(B z=<+9g&L$y9YCSg*IsRu7uy@jaI0HPsNxQ6S!k{%!knpq&V0cr8B@g|e$eG#RvM{(w zRpH%=KKy>6NFO(N@J@JGtG^Ey=l{umEUHm3X;~EkYgByjG5AxRR$}znf?Zmw0E_oVtDhd?88cf z_yU_z@tU459<2|_3&&?3?#0gF^^Wk%mzQtC?h_OD6KsC*z}KgQOXYdOQ5lViZbvto z6Ym5-)?-j&v~aTv6FDPUH%AJ?x6`8lU^Ah60kNGHXcW8LWWO%&FWNwRYALyUFz)Ml z-oF%^?KC4oD4I0~^P;VLt**>1(cs$^CXm1<0a}w15DP;z0TQ*?#85MGBWFPWEW$xvxvPBWgis*#^+0f39U6UaP%OMJMR%!@tfbCdbCZIy8a#Mf$a%oz4{pJIcvbRN3ZC*>XRx_u740bnEDp zc)#O=&QrT%U4srr2b#6DW`)L1{*0pG(&v4LS&quJ&C9dzhk*?`qeym5$&b)`@^+`) z1@}EgMa^}SMdR9lx?FxvY)FeL(Y6qAYET7AX_|*Kg!iS`9d)3fkUQZW*OkcJ=XDib znnKf|F)LcJO43A&GiA}ck4)`em%$SPX4UxWu*Q^OgtubR$Bf7HqfD7cT$kRskElg& z;lbpvdCVoK)*-yNUxds29r{Rpa(I{f_1@bF(R-kt$5pp-ti$TGO5?TA0u=zQF}VG; z^IbMtg7gA>^R#IugPXn5=I%Vvx>|_XRTpFc6+7O)Zn1@%+#Pd;h6m1MHP02|o!x+6 zZ&w#hrxjO!SXOC0gSj2|Ln5-3{L}Xp7e+ycdh9mnsc>!mm}O#hY`ZJKS{FxKjN;7d zK)s%_=C6CDIXwq(I%dMo7|WX6f2^&lc!7+M9ROJJFZmk_mn|X_J|&ls3){b0y*QU_Z5L_-FT|RTFREJi&kt~q6f(R(jTE6S^s>Vo}L;uSlQT^E)oAe zpPTRr;jJx|sI{t{hOXqK<@`8rWERR$+ynBmh_R~eY>lddr!Sw1*q@C&t9~q>08Tr= z4TcS5c4eviyN!QM=WWH!VyVpEWfqyfB-1Hi9=iJnjZl7R6bynoqr_uJyrMXH+jU>ic?*XKFNlho}Y) zwd}y%craYiozi8F5i{|Uj10w_34UKrmx8z5kk)#LFaUulk6Un(_wx{ewh3F#6z*ec zez#CQDRehpW;}(no&yRmO9yvZ*!@(TTmd&)$w%pTEXC-5!5rx!dWSZM^n0llF&Xhr z^rye7!Gt;$TpQX*#!L}PI8D`l1u^jsXUbH&=eJZ5ubZlomT#SP2-=M%B;Upc@}z@q zm=m{#e`~hvHYS-ATwJ$Dx6GXh6XCOd#cM2a-v}mqE!hfic0m#9D-5dRo*P$#0e<1e zMsCI5Xw7l$q`+Ci_oI{}(wtHg--{`4;e|@lw6TmfZ^WV@ZN_uVi4o}^V6Qybqjwy= zm>yN!adRifQkBzLzSP<2CHQRT8q3trHLp?KpZkrQSbb%hf!aS`Wqvi`t3(}L8+Xgy zH%>#xH$Lq@j}X3JyPUpG($OvU15w?#8s&82k&M~Ht83@0QoUxGJRX5!-3_AG69ia5 zH}rUM47!}jfG!-r?G+u5xVyL_qnItT2rZS&UP1f| z8CNtkmwM5C`M!P_HeYG%`Pl0O;ImO(j-Pl{gs^b)$4uyx{fu?wecggT00$~DpQFY zpE z_z5WIZKnjwT0SNW<&V+$*P51AIKM4c{nJZE6B#3 zjwkv?M_D{-mrB{Vm=d)U8y(+%3175pLDV*~-EsM0FQohZ@hrJAM=F6nk%=$yNwe|CJ#m=6w-O7{!JKNUCYeiA3 z_yU%(6$1@ZbWP%@>m?AYR`H5>-PF6qU0l;Uk6V?eA0iWnO_GaZYe%^eb=MXk&G`uz zhu4Ba4Tp7gX;R}+qaPfR0JTvgj>zcjqmxcL>e$wfZKGq`PRF)w+qUhy-}jtzzx$nYeyprN`^ocE)vUS3m}68; zWf5-Zguf0f@%`#xZsvZpkkIjTJA^OfmhS`_U1An!vVx$tbYaV;{t>SVI=@#{|u<7C=mNYJm` zV&(_W3Q2T^zDIE;Z?3yBb-oXK{-*V8h$hSVMpqZDul5t4dBLk>dKz>=>!f+++3HYp zzX&H8eoa!Cnubo0wE*OKrlp;eD4}%CV(_c?D;^#HJyTvJi!n=Sa(@u5admRPxZFSZ zr&Sr%jgKJ>aHkRwGK|(BOzp2mZ=`NMG8GoRWMyiN3t+EGHsPYVBQ!TcT>b&J!UmYw zn04{}yDBx1{YA$fi}a&$@}`pX1&a!-uPK*h0Q;wMLv$^Z=_F261N0jdyk?A$k=k)9 z<)}Wjk;z=?YME8|ePYlsVJ4E)o5o{SadR%m4r?BCZmutQQ=vu0aN18aoD#N`(qEj3 z28o$Hpto^&?IxSUQFW#9!<&ff(?P4t(Lw9c<+1%ercAqy;rIcVX&#Gk#(d8jGUTVC z#<;&l6<4SPi~d+S3YOSk{9llKJA0H+p&nTz#t z!qk9Jpl`TE<0+HB_GCJI*(lyh?UaDbkRF~Ox1!OPJA+vLK3u)e_+bGZw)i+<>Z(p_ zxx`i*Bz*|~2lf#aJZN>Z-`VN1)7czbW?#pci2Su3?}Yi?_OUgueL-JSk8TVW?kj`j&D_$&@bWEgvL!2 z(>d14qUgyjT1WI1!@g*o`H)u0aZDHb#rP^dr){b!%Q@zxGajtb8Kc9}YL} znfV~iqF!5-Yj+wx@f^ch!qocd0l!(oK!5!}GgQA?Z$5RpJQnn34tXw2WpXq@fbd>J ztYW7}%v@wHT?n&Z7ULjxM1vnEwIqHyVwV__-Je|tQ{5p*Xh11n>++=mzMR!u8ae|U zr|p8n<7V`8%w*#g9qE3+cw{N)mI9)K?yvOHTElXK#FP5gN#sohkXfU(DI!-RG zRpU}ps>bVrt=1+1$eMdui7OO8<#m977>bKy6V!!zZY+vCr|mp)o$hg=M&x;OZIJq! znX5wVjReb-Jju7XJ~mm=nbL7lQ}4{RnzS&1dQ2j$k-{*b`lw@WaKr+hb*VlKpK_d@ zu$lyk@%-XAqwAS)>b`vegF{zt)IZrF@V^F&JlX1%o3U4`uM?i&kA37}FA)a1)kUT7 zu`=-u?%CL>nrW57{_l56;aFi%FnMAU9fDs50K{Rbo@$J&Bh`2fhKZ+(+*HJlV;0Y6 zi=9K%oA0ubyVCZUAl4bS?WAo@QF`jc)Oc~yaoFsh?T?CmLT{Yg(s%E5V?J(Z7L^;O#*$b^_GsTDM8-$F^9=@|7JwwKJv#P{XH`$kh&wYS%P?&cyX!RmLVrE+T38DCZYZGY6V0B)wXM z)>upb&8@fPs0k=e0cJzS+qF(Xj4Xu0RrXJ}u*@v=7(^Z1Za!g-^kbrC&gm%REO1*Jfam&v1EjRHKNfhtVL!t*ES`TtC|Umst4||# zei=^p`dB7%UK##31oC9H$IvU)y2=HbGBrBA`PvIeR2Cb3yX(Sci?mO_8kSwr z8xB__q^GA$a4n}0B?JHPvti;b$qii6C_Z1J%+(>qKDZP&`eS!Cna!~b&>LgdF3Ew? zMeP#YKh+4UnRghR@2#hq(1j3D9Z1>>dPl=}v}V3_RPyrCSb*0cGcb7aq#1^KFTFf! zY1Hr%-E$&e7$d}nFhO1Ey`)u@mE%W0 zzCms><7}JOkoaV(7329E@u8uyo#ZG`J$_Laxzs|DxeK>7OW&xRuBH}WDT;Bng{1bf z#e3PM+9q;fUq004YE7j1$kKcAx`-iXs^xM1Gt+*lTl0Fo@}@S;diPc5nTl|s!ui9D zVxxxAMkY>{^$pBn&cEv<=Y%Tr`0OBk%qu-@9k(rrxhJ&nL6rKPjwdEOIyrGaX+NUu zX)_Cic9Q$c^l=FPf7_0~eh68-y<`{KC=}ska3Ng`FZ;NUOnuyu8HN9!o;R z?=J>TH#|DK@1HKqX!;1d-Cq*zsvox<+pAN6E^`(yS%;Y;K{VR*M9HP$^JjTy_535u z)PlkW8oFrmXg49J7GHI5F?luIe?n*=o(Ie(+B^^@+4me5g_~WthvHyMJpe&X*D=+GG-VK5>7fp3#O1OFe?N;pVuCr%QQqMS*iu0hI4A-~k4 zB^e7tgp~W+-?kWR)HjF!B}gvhmz>Tdx9YrlPs#-Qr%)Qe#{o;!lyYqGzEZ+RcgXf0 z{)cohU>H3ET~+8q3A$9t^LQYc@qrMVMdgXR%^1^40MLGMKX^0$`2=(6y2?ZNVD@P} z;tN$KqL6#~QboV;s&a9>inlKx)WP0L{by&w`dDkQ-m~aQxbz=g_H>7Vl63p&=YQV+riuQd%s#(7T)TH??=IBNS4gS#f}zh+Ewqg3fqi?Z z1_v)yW$BYKAp2eD!R)$s9skIfG>Y^=8vh_@4rm|mtKU12L1bCZENb)4QomoMG3tK? zMkuyL$cO9)M|l0Ag^j+QsW4z5TWKBqyo$(x9d+HF^ssaPQhfc=6~xXUok4e829<}f zLisj)7bk&&IugVLG2{V6_NY7FL7_l3G$;@=bkDASA2mHu`T-_3Cm8jfq zhGAp&xmW{x_jI8GwuM>_(XIe0?xD;tDn!h#Ac_fa-BzRZ@~e4}!vlNBs>T-~AiZ?G z)njc$2@m#N+n(d_d&5&X+I78A9J`j5Vbk376j6CM_x*S>9=ouCeJW0C!!&VgR+y$1 z`zTd7HnwV#9LO5%(i8rN5Wc-zYbZd>xMAiG$+>#qGOJam=N)0S-1_>uru{j`KTn?3 z_opCB35Ru*wE%i4oG0z=E_CaFmEV3@btF)##iX+S%axDTdu0x<$prQn;mR*Y{Hk7h zjYJk@=GalP2M_x-YvD<5G_BH>wB5W+-*+DMZx0B~EHtEZs&xB2rBiC+IV||u#lq9MSga`2!<`y-?TUU{>2MH5j zfBYGH>~Vml_CvB?9xqKKIbMAl8c|Ls>Wha({XFB=G%8)4X>s$R(5^kRIHu_)z?BVL zypEv`7Yc7OyMEv+d#q#(rwu}hNMTH}!qPR%uc~|o|8xN2ue89=Q{-eFs{uOHY-xt093CTepL1+{^YM^O3X6L((eR`!&r%0?mjrW+!5{J!SiR!wGx_* zRK;hhe=dD4iXFr!1!A(AH6nsk8piY`AG3nB7KthEF9{rvryre-M$5F^+F~4(w!u(N zJl@12K9~ysZ@JTy{^KeXg;dVPpHq5Q$%dg1q2CpR2M8yN4^VyOqb?7sK1@LlG1sJiz zE#b%7H^VrJ6+Zc+`pDvf6nd;*hg=itDKm<=u#3o97IX=%Y5X6MckoB`2dcczS6HH+ zpNxtiugYaT!Q+GF8zRc50o}@)wk9lqXfmKMT`sdP*$7Soj!sVaRoaH*o0V=m1MsMX z=2$JBf&I$>6>k_6AR7#tTM)XUx=cOP#{o_02)i-XmdhnB`GRQW$?mx5D@h-&t-I7 zavOpY3g(G2HGWaEyo0_ z1)d~j2`E=~V!u*q9ENJ73j8fsFNm)BHtC2s3t7UA z(^e7ZVb)}c!qF_gTc`sp$$D{MQX|B)w4#weC+@(Y@qQ4n@(|yH6`Ud4!Gu#Bz z2MHHlWm;>EI8=j9x+lNG4GdVpC4u7ghJ;~=J^+gTu!90dn+XLG>! zLnUp#`lAnmK<(8(Q=*Sms|qR%=$|8uGa4fA`PyNIS+3Nut!_`!%uGpiCL|Dco3nt&2xURjIk_ZiIyar(PFU3-KjLkT4#7p^^|ZCE>S| z19-jIm#;Lw)#*mOA*oT#|L|euL0ZChqul#}{y@hg*2~iu$lEx}3KtpTUH~*UNd>T= zGDkPUR6=V;6{%=r3R2iTr6Di_vfn~hZETvF>41Zpsc>IEL6rW#ya3id{dR#ki5>T! zwmXDLwwL#fHlRoD;<&!e2y78ZIX24d`$swwjGI|ro($@vvC=;)X|a}9AdQWUZI~`e zerBkT*ofKYc_b@>6SP%=NI^w@%)Eb)Z5XzNis{4vPVXJW-Q8Se{BrCv>y!!a19~jv zKpVvD3w^u-etw?BRa_91{*Ba6jsm+9UCR>v%F>m7V>1Ie(@`FAkh|iTgUWn?049Y)RqTW{I@|js2$cB6>h1G|RxgcaODP#d-VI_*AeX#hG>2m$SeNg}W{_)$=5$aXx ziSh^|6T@D)xDB=nhx+!;Gz4z#q{j+z_w7c^Qi5`=zXq=~U_3kwB&DUMoQPS2rTR3VlLq!U5$1>T&t?cjxQNDJg>M0zY zmBF<}+P@mPr=&3`gjONjnH~3Q>y4Q|Z)&-y+2YdY=*k12Th%sUVfb&yn8b-di{2YW zXI%Y9{-5Gue`tN}-@@+%$&9tNaY)!YE?64Q_Sg;=tHb&AaY(P=Y3S+}g@Ou?@$OiG zek}D}@zk!dOhqySPfYRQ?HhRP;$ac%iz^&j9C+(XZoS!%5g}Dh_e+3lHLQ-PK~d%S4^F%)I*^eT_;z$4##n?<4E74(>`yx-G1^lbi)8H_`^~C z-NtpmaHkFvS3fTcd-fD6uX;GKMhlTK|IRLec{O>}aVbm`mDYWCU`*T)RsOPQ zHzq2-1_rePFw<&1fPP4;|3pE3uW}8x-_>fg+ddwpaZE~88?(e*uFxbgTtamoa+*MX zi0j~3VxtpAo4BeY}*k}X&a6ExzJjX7N~ zfv_+&J>8L=Fj75t`FaKlKVE_kXM!N<5V*B;vI7Kl5%{73ABcRhqMGy#<=fB$fC*cA z<9DZ(Bj#ulq_!%z@njR*kF<>tmY~P>bFG*N3r-H#Zz5#*EE^ktMUq^t5A%qY(U@?A z7pTtl9|=#A>40m5IbkyKMyS&5g@Gth*1NmExX*w8;_m&x($EJ^Cb#F_WWA1|EdB#q40F)G(6s zOCI2!f;@dSg~=@Oe*BPn!)2Dl6%kfaG+XNZk9F9FO_R!SLMVn1V`jA1(w^xT_vb{8msj$W@%SyF<>Xpdk66X|rJnP|&b3Z{ zFB2ww`{Ks!;#=im?As_8wT0Rk61OpE=mT8>mGAfeGy3)4EiJyf>y&-wA?y+hK;D>b z8Aq4UC-#SJPiK-0qY#mmyt`9QZ!-NUQS2wgLz`Dd=a{0+2n=;e@GJIE`pv;atAVXl z{>QK;*PJ6Jl__>2-|Z6ac2~eXk(-wzog(sLgKdt zOZa>nH!8QYopXf|3Oz_N{@uFcL+tRWRfo4vh5rgZ{`!j7C@KdFpGhXnJVzJ7@OO|Q zqtMDv+kw5jhr7Yc@?&RW%zB1tS zg;_i0kVkJ{d2d?#3bTP*PKfMMXal;>ZRz=WKsn;w{E_isfT2)CFq0*T`m;<1mhTqDg-64F$KzQ(BF|yUegz z#iqZU03VV{r>c}gtHqh$JRs&qaEpAmkQ({i9k< zz^;w63YenR#tfSmHL^z!!v;6!_*TRgIqU&y>HgxObHmjoJM42g8l2T}_Rh!s`4K$` z%&gj{lzHD^#Tud6_{e#*J%-(E?X}msAKHCe74S$7NFoyp{Y@b`U^wKa zR&z|>Y?!D?E5V<%JJirj#JewNDk(yX9K5f4jPfC)jmR6gAMt?@4_Kv{pEul(^IJS~m_9NI5=LAjwcupO5zK_nfyWII@%ztto#&yL$i{x|0q!6P z<3ynZBfe#0i*OX(RRj82U$FCQTLlXvw+f^MdKx+R|{q7;kpwSS% z3Oe&JbmOWWDM3YCZ9&cJ$FHJ2i0yd_?&3BR)B5fvfbmH$Q-2$`;P13-TS2_kQ@}Tg z+G^!|L(&B~KZAn*9;{gEqM4X60n$A&cjA|{R!mMWB^)s5Rj*#jM>D-%EbkupSL%Q& zTqeq}*o^0{R%=8ZASwDyv|^Z?b=v%`omfn(?MNp_wfcmBE*RY995VN1RTLR11dBG8 z7COd5DL*x7hOAW;acW3ETEe^|R3k! zpwP{gH8;9+g4CACpgCzXL7n(FXVdLtK5J&$mp!k!*22I9N zPr;S~4+$x(A=ZFYH!>$IR*Yrn-a)GXN@Dgiish2%NAQ-0DXD_sB?|$mOrB;sH+x*4 zsF$lh{28RV809arlByy&KALWz*gajOazy2U*84d{pX?RG8;`R*&nFW6VKjq+QaQg> z1y^hZIZ+f%Xf%BV3d*u%@JBUi2=~5?;6Q~Fq{3e`TWoBngdC&2lFUzW36r^9(rG(# zR`Tycp$IsUFAIBV-mYof^rmV8|5d# zVi-Qyy<9T(5IXjwj`>T9gqOo{h(XA|%HQgJs9G5a=j-$kTMwo8_dZ99bXk6I(o8 z<}#skvLyItX~%bmAfcJ%K-%w%!ui;*2DEt$K+l1$&!$S_Or>Y;okdc1xg22mEA21S z=U;2?_JKIsoo85)YApfpsF`dPTo(){mkhVJrPc@AY2HECGVxSK;kFT`rx7N;RISOS z45H$^zbsP5ch;m;wy4VbjsSMni9EsDI>P@U^qsr)(<_63Z?!(Me4l=nl`2eFAaq5{ zGC1tg;BmX~B)i_dc`~<>@GG9Q!B0Iw!)yv>Xr+>&ue$F1ObX?phNTeY#We~umA`d_ zOWHOWaUI%h{p)4b2$S(l?1kqo4KsJH2XXR_?Hg#tEZpf(1=#p;UYExO_Ok?@;12~H zGJ68(4uW@?)^#guz>LB^r!{SuncxqKRyfI)XR6w(hDo=+S4^j{SK%$S^ifRD6gLNh zNqqxxy-0yqB%CaJZYBYT#r})4KPRWh`xTcPT})PON3#Dp1xpIV1oHm-RW4!d9Ep5eU^$J>c!X-Lz>`bd zr2yKx(8UaexWBH)f7_*hV^DgDT~UWUDaACTpH$){tdcT5^`;O@eT!FUaQ4H9Z+OEV z(8WiRE#n0*A5GMO3S|)UdR@Hk4_klE(|9^-6~O5CT`sJBSeh0s$T7}|RM*)8SaT~y z04fXPr1%C(Y|~7avmfCad}KiMCjNFpf7o@D^Qy{!kYli2Y+nHtbXkS@Me~KR1#B-4 zGJA!O%EJo`HAC_FKfJR| zD?|6FOAtSux82}(mz7i(DTqQs--78rU3h&rEez_}u~tIgJ}P%d|FpapW?c=B^5ZR+ zhR>Bq*(`n*F1;{&mBb9eWK>aAm{<9yh&z>5T51{_^hxhM0>5E#p1;*{fgacXHIaV@ z3zF}wUS1xX-ct#E#T{5haJ-=z9C4IC+lCEKzbm zhMT2SP-E}W}LA-loRyXnrq{b^Q{ z9ghPKtM7VlIghUXG~--+J7Gv@dMMpISh&>Dai;$3b{jshGd2+5#5!BoR;~IFJLZsR zSSUe{bFN7Cc+@CCBr&Eh0;=6qfOf9qzeT+()^RG*SC41A?SnME>z$XDO#gt3x*cr6 zPs1DqtOKY}nJULZWkuRogp4k)Z^swqB@4<&@*TMVNd&&B(?`TwjG5S*z3|`zDBJAPe~Z(ay@s!U*Z&hmq#(+c5I?>m27c>ePJvJ5v=nPHlwdG4`?= zYGBo5jn}p{e~eysa<#4g_G|9DWbZI8LO+FdlPQ;VlMPoe5sR~?{hG$ytk%vy0;E94 zN$QouO4IvLw(4YjIKRJ8j_yG6)vmszF?SJYxZ}T0#*CBeZeIVF<#a*TXE6;Y*6?uk zT*tvmkbJnGJ4RUOPX87vBWNL>tgYk#!KNtutti*ph=F|U7_))0pa?9GgwtZ4ym20B zFu<#|xX-_2P!V7EwvbS@@q(+{X+rGKeh0tEb_TyF($&j7&Fbj__30wv^Ovk_ z$#A4n6g-=JIYJ{D_cQYQC36@1u+1+oD$wwzb7N(YZ;Z=YocdV)`@W1Q%i(Qk1E)Gb zut%+}q+{^wluVAnEi?>lh-XGton^RdP{q-J14<*f;-1P9{vH)(ATLOfE2G+rAAHy( zNQuB35y>$!+}|Ckg1`+`-uc~Ejm=sD{`x-l+lqxD z7GyRDLjJ-qvE8E@OLEtR)uZSgzNOvk<^GUQJSD>kvTl727Cy`$js*rw{<)Z()iVqrfVnv+OkCrk0rGq=)Imgz@sij)ag z(uZXCtTL_RMU)4mD8~n`6A2;8y6{zUUpT&Pf9MG50`nBh;d>G*FtQy5(P$vpJ1@N= z)dJti;JQ$Cjqq_A1xp`yU=caM=FSYI{+rjIgpfCiHrL*PXd>^`SF~H^Q zWt2S640O-d)pXBX%qK!C`Zuy^AeFS3wA*wL$7olw?k+wPk|3$N!Q+^VUWUG8T#c4b zU5YFSDv_O&Ku-~b*93l=bMVM!y*PFFo%2nl1_M_r6fcSpc#)-HjF}HQt&()SxE3|- z$1Bp^@=swJ!k-JxWaRK|*K-Z^*1qehV51sN3))KCyy}*-R~SSnfsCQMR@~h3>Z#_3 zHD`B8doUi(B}(F-M#mRkKJ^xzec|}llrc0&YMrjP5ttlxETfO^N0;6~Afd+G5pv!f zHem$jkyy#8 zF{xmu4iQWE$&_>sKPm~?C}}l!{unT^m|6n2V*~JaOubl$o#tZR-c2?qQTgwc-b8(b zx6^!5D`J@8&1oe$ier$>dDkC#U!PxNOY4P&x4!wl^K#yZF+TCB^241)U30W3|4HRH z&9gN44bSW=bP5LLAd~0lQ=)dj>MITllL0?9--R<@YOVk)Lm^-dv+VzfzkBwGM0xOQ zfM`nUT!pasU5}0S>KcL+6_o}4%A=TyEXF4vl?uEaJfApg0qZxf=}&)KAkmE)whM-Z zTPn=gVA9^S%{ODK&i4oM(JZ(ZRpQ^t=LOXICo<-7+>4iyyT}U(47I9Fo~C(S+u=Dp zd2}PaJjLq$yZ=~$?^KxzK?)>)%&M~lLDTo+ojWZ4n5^emk6*3o>r_j}o**Z$sUnYe z)c4h&_8_LgE5~3f;mCuk{F4{`F5)Fq`C2ue-VUUTChgrm8G2Ef6s)@bJbs=YSb-UX z7{CQxNU=b3bL$#MlN5YkZw-s3MPrAhAo-=_E1#fsITgfS9Q?nECWM(ZgSOr=VPpWB?>V?_{VHH-0=Y|0fGR8>RG!Uojl5y*23z%;6Canc