{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jswebplayer/app/App.js","webpack:///./jswebplayer/app/Assets.js","webpack:///./jswebplayer/app/AudioPlayer.js","webpack:///./jswebplayer/app/AudioView.js","webpack:///./jswebplayer/app/BinaryBlobs.js","webpack:///./jswebplayer/app/BinaryBlobsData.js","webpack:///./jswebplayer/app/Bitmap.js","webpack:///./jswebplayer/app/Button.js","webpack:///./jswebplayer/app/ButtonView.js","webpack:///./jswebplayer/app/CanvasDraw.js","webpack:///./jswebplayer/app/CodeRunner.js","webpack:///./jswebplayer/app/Color.js","webpack:///./jswebplayer/app/CommandCenter.js","webpack:///./jswebplayer/app/CorDispatcher.js","webpack:///./jswebplayer/app/Coroutine.js","webpack:///./jswebplayer/app/DebugConsole.js","webpack:///./jswebplayer/app/Debugger.js","webpack:///./jswebplayer/app/ExposedAPI.js","webpack:///./jswebplayer/app/Globals.js","webpack:///./jswebplayer/app/HtmlIntegration.js","webpack:///./jswebplayer/app/HtmlLogoView.js","webpack:///./jswebplayer/app/Hyperlink.js","webpack:///./jswebplayer/app/HyperlinkView.js","webpack:///./jswebplayer/app/LogoCodeUnit.js","webpack:///./jswebplayer/app/LogoContext.js","webpack:///./jswebplayer/app/LogoCoroutine.js","webpack:///./jswebplayer/app/LogoError.js","webpack:///./jswebplayer/app/LogoObject.js","webpack:///./jswebplayer/app/LogoObjectsCreator.js","webpack:///./jswebplayer/app/LogoObjectsCreatorData.js","webpack:///./jswebplayer/app/LogoViewState.js","webpack:///./jswebplayer/app/MapCaseInsensitive.js","webpack:///./jswebplayer/app/MidiInstruments.js","webpack:///./jswebplayer/app/MidiPlayer.js","webpack:///./jswebplayer/app/MidiView.js","webpack:///./jswebplayer/app/MusicalOctave.js","webpack:///./jswebplayer/app/Options.js","webpack:///./jswebplayer/app/Page.js","webpack:///./jswebplayer/app/PageView.js","webpack:///./jswebplayer/app/Prims.js","webpack:///./jswebplayer/app/Project.js","webpack:///./jswebplayer/app/SafeEval.js","webpack:///./jswebplayer/app/Scope.js","webpack:///./jswebplayer/app/Shape.js","webpack:///./jswebplayer/app/ShapeList.js","webpack:///./jswebplayer/app/Slider.js","webpack:///./jswebplayer/app/SliderView.js","webpack:///./jswebplayer/app/StateObservable.js","webpack:///./jswebplayer/app/Stubs.js","webpack:///./jswebplayer/app/TextPrims.js","webpack:///./jswebplayer/app/TextToSpeech.js","webpack:///./jswebplayer/app/TextViewQuill.js","webpack:///./jswebplayer/app/Textbox.js","webpack:///./jswebplayer/app/ToggledTrackerMixin.js","webpack:///./jswebplayer/app/TranslateAST.js","webpack:///./jswebplayer/app/Translator.js","webpack:///./jswebplayer/app/Turtle.js","webpack:///./jswebplayer/app/TurtlePrims.js","webpack:///./jswebplayer/app/TurtleView.js","webpack:///./jswebplayer/app/TypeCheck.js","webpack:///./jswebplayer/app/Version.js","webpack:///./jswebplayer/app/helpers.js","webpack:///./jswebplayer/app/loader.js","webpack:///./jswebplayer/app/logger.js","webpack:///./jswebplayer/app/main.js","webpack:///./jswebplayer/app/mainloopsetup.js","webpack:///./jswebplayer/app/parser/ParseProc.js","webpack:///./jswebplayer/app/parser/parser.js","webpack:///./jswebplayer/app/pixihelpers.js","webpack:///./jswebplayer/node_modules/almost-equal/almost_equal.js","webpack:///./jswebplayer/node_modules/mainloop.js/build/mainloop.min.js","webpack:///./jswebplayer/node_modules/pixi.js/dist/pixi.min.js","webpack:///./jswebplayer/vendor/Base64binary.js","webpack:///./jswebplayer/vendor/MIDI.js","webpack:///./jswebplayer/vendor/quill.min.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///(webpack)/buildin/global.js","webpack:///external \"jQuery\""],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFY;AACZ;;AAEA;AACA,YAAY;AACZ,SAAS;AACT,WAAW;AACX,WAAW;AACX,eAAe,gCAAgC;AAC/C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa,mBAAO,CAAC,6CAAU;AAC/B,sBAAsB,mBAAO,CAAC,+DAAmB;AACjD,kBAAkB,mBAAO,CAAC,uDAAe;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA,mBAAmB;AACnB;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA,8BAA8B;;;AAG9B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC,wBAAwB;AACpF;AACA,mBAAmB;;AAEnB;AACA,aAAa;AACb,2DAA2D;AAC3D,aAAa;AACb,oEAAoE;AACpE,aAAa;AACb,0DAA0D;AAC1D,aAAa;AACb,0DAA0D;AAC1D,aAAa;AACb,kEAAkE;AAClE;;AAEA;AACA;;;AAGA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;;AAE5C;AACA,8CAA8C;AAC9C,mDAAmD;AACnD,kDAAkD;AAClD,mDAAmD;AACnD,mDAAmD;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,KAAK;AAC3D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA,6BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,qBAAqB;AACrB,4CAA4C,sBAAsB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,SAAS,mBAAO,CAAC,oEAAS;AAC1B,qD;AACA;AACA,8C;AACA;AACA,gDAAgD;;AAEhD;AACA,qCAAqC,YAAY;AACjD;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,uF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yC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AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,G;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI,E;AACJ,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,2B;;;;;;;;;;;;ACjGY;AACZ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc,mBAAO,CAAC,oDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;;AAGA;;;;;;;;;;;;;;ACtCA;;AAEA;AACA;;AAEA;AACA,gBAAgB;;AAEhB,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;;;;;;AChBY;;AAEZ;AACA;;AAEA,YAAY,mBAAO,CAAC,oEAAS;AAC7B,mBAAmB,mBAAO,CAAC,uDAAe;AAC1C,eAAe,mBAAO,CAAC,kDAAc;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qEAAqE;AACrE;AACA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA;AACA,0B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,iGAAiG;AACjG;;AAEA,iCAAiC;AACjC;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;;AAEA,wB;;;;;;;;;;;;ACnKY;AACZ;;AAEA;AACA,mBAAmB,mBAAO,CAAC,wDAAiB;AAC5C,YAAY,mBAAO,CAAC,0CAAU;AAC9B,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,4BAA4B,mBAAO,CAAC,uEAAuB;AAC3D,kBAAkB,mBAAO,CAAC,mDAAa;;AAEvC;AACA;AACA,cAAc;AACd;AACA,+CAA+C,UAAU;AACzD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC,+BAA+B;AAC/B,GAAG;AACH;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,yBAAyB;;AAE3C;AACA,0BAA0B;AAC1B,sBAAsB;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACvHY;AACZ;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,eAAe,mBAAO,CAAC,gDAAa;AACpC,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,YAAY,mBAAO,CAAC,0CAAU;AAC9B,UAAU,mBAAO,CAAC,sBAAQ;AAC1B,eAAe,mBAAO,CAAC,6CAAU;;;AAGjC;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;;AAEA,2BAA2B;AAC3B;AACA,yCAAyC;AACzC,GAAG;AACH;;AAEA,2BAA2B;AAC3B,gCAAgC,aAAa;AAC7C;;;AAGA;AACA;;AAEA,0BAA0B,wBAAwB;;AAElD;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mDAAmD;AACnD,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9EY;AACZ;;AAEA,WAAW,mBAAO,CAAC,oEAAS;AAC5B,QAAQ;AACR,cAAc,mBAAO,CAAC,kDAAc;AACpC,YAAY,mBAAO,CAAC,8CAAY;AAChC,kBAAkB,mBAAO,CAAC,uDAAe;AACzC,aAAa,mBAAO,CAAC,6CAAU;AAC/B,cAAc,mBAAO,CAAC,kDAAc;AACpC;;;;;AAKA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ,mBAAO,CAAC,0CAAU;AAC1B;AACA,4G;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,oFAAoF;AACpF;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,mCAAmC;AACnC,kEAAkE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0C;AACA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA,kFAAkF;AAClF;;AAEA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA,2BAA2B;AAC3B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD,mDAAmD;AACnD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,6C;AACA;AACA,IAAI;AACJ,qFAAqF;;AAErF;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,6C;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA,6BAA6B,iBAAiB;AAC9C,gCAAgC,oBAAoB;AACpD,sCAAsC,2BAA2B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;;;;;;;;;;;;ACjWY;AACZ;AACA;AACA;AACA;;;;AAIA,yEAAyE;AACzE;AACA;AACA,eAAe,mBAAO,CAAC,kDAAc;AACrC,8CAA8C;;AAE9C,WAAW,mBAAO,CAAC,0CAAU;AAC7B,aAAa,mBAAO,CAAC,8CAAY;AACjC,eAAe,mBAAO,CAAC,kDAAc;AACrC,iBAAiB,mBAAO,CAAC,sDAAgB;;AAEzC,UAAU;AACV,uBAAuB;AACvB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB;AACxB;AACA;AACA;AACA;AACA,sBAAsB;AACtB,uDAAuD;AACvD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B,yCAAyC;AACzC;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA,GAAG,OAAO;AACV;AACA;;AAEA,mCAAmC;AACnC;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB;AACxB;AACA;AACA;AACA;AACA,sBAAsB;AACtB,uDAAuD;AACvD,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,yCAAyC;AACzC,sBAAsB;AACtB,eAAe;AACf,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;AAC/D,gBAAgB,mBAAO,CAAC,kDAAc,EAAE;AACxC,qCAAqC;AACrC,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uCAAuC;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4B;;;;;;;;;;;;ACpNY;AACZ;AACA,kBAAkB,mBAAO,CAAC,0DAAkB,E;AAC5C,sBAAsB,mBAAO,CAAC,kEAAsB,E;AACpD,gBAAgB,mBAAO,CAAC,mDAAa;AACrC,gBAAgB,mBAAO,CAAC,mDAAa;;;AAGrC;AACA,aAAa;AACb,YAAY;;AAEZ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,uB;AACA,kB;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,uB;AACA,kB;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf,oBAAoB;AACpB,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,yB;;;;;;;;;;;;ACzPY;AACZ;;AAEA,kBAAkB,mBAAO,CAAC,sDAAgB;AAC1C,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,kBAAkB,mBAAO,CAAC,iEAAoB;;;AAG9C;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,0CAAU;AAC7B,qBAAqB,mBAAO,CAAC,2DAAiB;AAC9C,2BAA2B,mBAAO,CAAC,uEAAuB;;AAE1D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oEAAoE;AACpE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA,8DAA8D;AAC9D;AACA;;AAEA,0CAA0C,uBAAuB;AACjE,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC7GY;AACZ;;AAEA,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,eAAe,mBAAO,CAAC,6CAAU;AACjC,YAAY,mBAAO,CAAC,uCAAO;AAC3B,iBAAiB,mBAAO,CAAC,iDAAY;;AAErC;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;;AAEA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA,qBAAqB;AACrB;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,yBAAyB;AACzC;AACA;AACA;;AAEA,SAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;;AAGA;;;;;;;;;;;;;;AC9KY;;AAEZ,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,iBAAiB,mBAAO,CAAC,iDAAY;;AAErC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,gDAAgD,8BAA8B,MAAM;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,2CAAS;AACjC;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAA6C;AAC1E;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,aAAa;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc,uBAAuB,aAAa,GAAG;AAC9E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,mBAAmB;AACxC,0BAA0B,2EAA2E;AACrG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,iBAAiB;AACzC,2BAA2B,0EAA0E;AACrG;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,2B;;;;;;;;;;;;AClWY;AACZ;;;AAGA;AACA,WAAW,mBAAO,CAAC,0CAAU;AAC7B,aAAa,mBAAO,CAAC,8CAAY;AACjC,eAAe,mBAAO,CAAC,kDAAc;AACrC,mBAAmB,mBAAO,CAAC,0DAAkB;AAC7C,uBAAuB,mBAAO,CAAC,kEAAsB;AACrD,cAAc,mBAAO,CAAC,gDAAa;AACnC,YAAY,mBAAO,CAAC,oEAAS;AAC7B,cAAc,mBAAO,CAAC,6CAAU;AAChC,eAAe,mBAAO,CAAC,+CAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mBAAO,CAAC,qEAAsB;AAC5D;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA,oC;;;;;;;;;;;;AClCY;AACZ;;AAEA,eAAe,mBAAO,CAAC,6CAAU;AACjC,2BAA2B,mBAAO,CAAC,qEAAsB;;;AAGzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC,yBAAyB;AACzB,mCAAmC;AACnC,yBAAyB;;AAEzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,qCAAqC,yCAAyC;AAC9E,GAAG;AACH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,mCAAmC,MAAM;AACzC;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACpKY;AACZ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;;AAEA,6B;;;;;;;;;;;;AC3DY;AACZ;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,sBAAsB,mBAAO,CAAC,2DAAiB;;AAE/C;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,mCAAmC,EAAE;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mCAAmC,EAAE;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+B;;;;;;;;;;;;ACnGY;AACZ;;AAEA,eAAe,mBAAO,CAAC,6CAAU;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,yBAAyB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;ACxEY;AACZ;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,YAAY,mBAAO,CAAC,0CAAU;AAC9B,sBAAsB,mBAAO,CAAC,2DAAiB;AAC/C,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,eAAe,mBAAO,CAAC,2DAAiB;AACxC,iBAAiB;AACjB,cAAc;AACd,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC,mCAAmC;AACnC,kCAAkC;AAClC,2BAA2B;AAC3B,sCAAsC;AACtC,gC;AACA,mCAAmC;AACnC,6B;AACA;AACA,wCAAwC;AACxC;;AAEA,UAAU,aAAa;AACvB,UAAU,aAAa;AACvB,QAAQ;AACR,QAAQ;AACR,WAAW;;AAEX,mB;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAqD;AAC7E;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA,4DAA4D;AAC5D,wBAAwB;AACxB,YAAY,mBAAmB;AAC/B,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,yBAAyB,mBAAO,CAAC,yDAAgB;AACjD;AACA;AACA,kBAAkB,eAAe;AACjC;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACtXY;AACZ;;AAEA,oBAAoB,mBAAO,CAAC,6EAA0B;AACtD,YAAY,mBAAO,CAAC,uCAAO;AAC3B,eAAe,mBAAO,CAAC,6CAAU;AACjC,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,oBAAoB,mBAAO,CAAC,uDAAe;AAC3C,eAAe,mBAAO,CAAC,6CAAU;AACjC,eAAe,mBAAO,CAAC,6CAAU;AACjC,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,aAAa,mBAAO,CAAC,yCAAQ;AAC7B,aAAa,mBAAO,CAAC,oEAAS;;AAE9B;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA,yBAAyB;AACzB;;AAEA;;AAEA,yC;;;;;;;;;;;;AClOY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B;;;;;;;;;;;;;AC/FY;;AAEZ,wBAAwB,mBAAO,CAAC,+DAAmB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA,mC;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,+B;;;;;;;;;;;;ACtCY;;AAEZ,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA,oC;;;;;;;;;;;;ACvCY;AACZ;;AAEA,eAAe,mBAAO,CAAC,6CAAU;;;AAGjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,uC;;;;;;;;;;;;ACrCY;AACZ;;AAEA,eAAe,mBAAO,CAAC,6CAAU;AACjC,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,iBAAiB,mBAAO,CAAC,oDAAe;AACxC,YAAY,mBAAO,CAAC,uCAAO;;AAE3B,qBAAqB,mBAAO,CAAC,oEAAwB;AACrD,aAAa,mBAAO,CAAC,6CAAS;AAC9B,wBAAwB,mBAAO,CAAC,+DAAmB;;;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC,uCAAuC;AACvC,kBAAkB;AAClB;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,gCAAgC;;AAEhC;;AAEA,wB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mFAAmF;AACnF,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,gC;AACA;;AAEA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,Y;AACJ,GAAG,E;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,qBAAqB;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qEAAqE,wBAAwB,EAAE;AAC/F;;AAEA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AC/OY;AACZ;;AAEA,UAAU,mBAAO,CAAC,sBAAQ;AAC1B,eAAe,mBAAO,CAAC,6CAAU;AACjC,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,YAAY,mBAAO,CAAC,uCAAO;;AAE3B;AACA;AACA,6BAA6B;AAC7B;;AAEA,0EAA0E,eAAe;AACzF;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,gCAAgC,aAAa,EAAE;;AAE/C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,G;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,0B;;;;;;;;;;;;AClGY;AACZ,gBAAgB,mBAAO,CAAC,mDAAa;AACrC,gBAAgB,mBAAO,CAAC,mDAAa;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;;;;;;;;;;AC3KY;AACZ;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;AAOA,+B;;;;;;;;;;;;ACvBY;AACZ;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,cAAc,mBAAO,CAAC,8CAAY;AAClC,oBAAoB,mBAAO,CAAC,uDAAe;AAC3C,eAAe,mBAAO,CAAC,6CAAU;AACjC,sBAAsB,mBAAO,CAAC,2DAAiB;AAC/C,kBAAkB,mBAAO,CAAC,sDAAgB;;AAE1C;AACA,gBAAgB,mBAAO,CAAC,oDAAe;AACvC,cAAc,mBAAO,CAAC,gDAAa;AACnC,cAAc,mBAAO,CAAC,gDAAa;AACnC,eAAe,mBAAO,CAAC,kDAAc;AACrC,kBAAkB,mBAAO,CAAC,wDAAiB;AAC3C,mBAAmB,mBAAO,CAAC,uDAAe;AAC1C,cAAc,mBAAO,CAAC,6CAAU;AAChC,iBAAiB,mBAAO,CAAC,mDAAa;;AAEtC;;AAEA;AACA,2BAA2B;AAC3B,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,wCAAwC;AACxD;AACA,gCAAgC;AAChC;AACA;;AAEA,uBAAuB;AACvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,6CAA6C;AAC7C;AACA,GAAG;AACH;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;;;AAIA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gCAAgC,iBAAiB;AACjD,iCAAiC,kCAAkC;;;;;AAKnE;AACA,iDAAiD;AACjD,yCAAyC;AACzC,qCAAqC,8BAA8B;AACnE,uCAAuC,kCAAkC;AACzE;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA,kCAAkC,4CAA4C;AAC9E;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2BAA2B;AAC3B,uBAAuB;AACvB,sBAAsB;AACtB,+BAA+B;AAC/B,sBAAsB;AACtB,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qEAAqE,qBAAqB,EAAE;AAC5F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,sB;;;;;;;;;;;;AC3cY;AACZ;;;AAGA;AACA,WAAW,mBAAO,CAAC,0CAAU;AAC7B,YAAY,mBAAO,CAAC,oEAAS;AAC7B,mBAAmB,mBAAO,CAAC,0DAAkB;AAC7C,kBAAkB,mBAAO,CAAC,wDAAiB;AAC3C,cAAc,mBAAO,CAAC,6CAAU;;AAEhC,eAAe,mBAAO,CAAC,+CAAW;;AAElC;AACA,sCAAsC;;AAEtC;AACA;;AAEA,8BAA8B;AAC9B;AACA,+BAA+B;AAC/B;;AAEA;AACA,0CAA0C;AAC1C;AACA,sC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,EAAE;AACF;AACA;AACA;AACA;;;AAGA;AACA,uC;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA,6BAA6B,UAAU,2BAA2B,UAAU;AAC5E;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;;AAEA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;AAChE;AACA,+DAA+D;AAC/D;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,6D;;AAEA,+D;AACA;;AAEA,+D;AACA;;AAEA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA,iGAAiG;AACjG,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,kCAAkC,kBAAkB;AACpD;AACA,qCAAqC,qBAAqB;AAC1D,uCAAuC;;AAEvC,oCAAoC,gBAAgB;AACpD,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClQY;AACZ;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,YAAY,mBAAO,CAAC,0CAAU;AAC9B,oBAAoB,mBAAO,CAAC,0DAAkB;AAC9C,kBAAkB,mBAAO,CAAC,sDAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sDAAgB;AAC1C,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,cAAc,mBAAO,CAAC,8CAAY;AAClC,eAAe,mBAAO,CAAC,6CAAU;AACjC,2BAA2B,mBAAO,CAAC,qEAAsB;AACzD,iBAAiB,mBAAO,CAAC,iDAAY;AACrC,eAAe,mBAAO,CAAC,2DAAiB;;AAExC,sBAAsB,mBAAO,CAAC,2DAAiB;;AAE/C;;AAEA;AACA;;AAEA;;AAEA,iDAAiD;AACjD;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,mBAAO,CAAC,2DAAiB;AAChD,sBAAsB,mBAAO,CAAC,yDAAgB;AAC9C,uBAAuB,mBAAO,CAAC,2DAAiB;;AAEhD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,mBAAmB;AAClC;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B,6CAA6C;AAC7C,4BAA4B;AAC5B,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,GAAG;AACH,E;;;AAGA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iCAAiC,qBAAqB,E;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,E;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA,iCAAiC;AACjC;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,8BAA8B,EAAE;AACtD,sCAAsC,yBAAyB,8BAA8B,EAAE;AAC/F;;AAEA,sBAAsB;AACtB;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,kDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,aAAa;;AAEzB;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA,gBAAgB,UAAU;AAC1B,IAAI;AACJ,gBAAgB,QAAQ;AACxB,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iBAAiB,YAAY;AAC7B,cAAc,YAAY;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA,yBAAyB,MAAM,MAAM,KAAK;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,kBAAkB;AAClB;AACA,GAAG;AACH,wCAAwC;AACxC;AACA;AACA,oCAAoC;AACpC;AACA,GAAG;AACH,wCAAwC;AACxC,gCAAgC;AAChC,kBAAkB,eAAe;AACjC;AACA,uBAAuB;AACvB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wB;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA,uB;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2DAA2D;AAC3D;AACA,iBAAiB,YAAY;AAC7B;AACA,wDAAwD;AACxD,SAAS;AACT;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qCAAqC;AACrC;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,WAAW;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,6D;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4C;AACA;;AAEA;AACA,4C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,+BAA+B,8BAA8B,EAAE;AACtF,qCAAqC,gCAAgC,8BAA8B,EAAE;AACrG,sCAAsC,yBAAyB,8BAA8B,EAAE;AAC/F;;AAEA,sBAAsB;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,oEAAoE,EAAE;AACtE,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE,EAAE;;AAElE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;AACA,iBAAiB,4BAA4B;AAC7C,0DAA0D;AAC1D,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,uB;;;;;;;;;;;;AC/2DY;AACZ;;;AAGA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,kDAAc;AACrC,YAAY,mBAAO,CAAC,4CAAW;AAC/B,eAAe,mBAAO,CAAC,+CAAW;AAClC,gBAAgB,mBAAO,CAAC,6CAAU;AAClC;AACA,mBAAmB,mBAAO,CAAC,mDAAa;AACxC,4BAA4B,mBAAO,CAAC,qEAAsB;AAC1D,uBAAuB,mBAAO,CAAC,2DAAiB;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,mCAAmC;AACnC,WAAW,6DAA6D;;AAExE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,gCAAgC;;AAEtD;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,sCAAsC;AAC3E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,qCAAqC,EAAE;AAC7F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA,yCAAyC;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,wBAAwB,cAAc;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1YY;AACZ;AACA;;AAEA,eAAe,mBAAO,CAAC,6CAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;;AAGA,uDAAuD;AACvD;AACA;AACA,yDAAyD,GAAG;AAC5D,0DAA0D;AAC1D,qDAAqD;AACrD,MAAM;AACN;AACA,YAAY;AACZ;AACA,qDAAqD;AACrD;AACA,MAAM;AACN;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4B;;;;;;;;;;;;ACnGY;AACZ;;AAEA,kBAAkB,mBAAO,CAAC,sDAAgB;AAC1C,eAAe,mBAAO,CAAC,6CAAU;AACjC,2BAA2B,mBAAO,CAAC,qEAAsB;;;AAGzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,+B;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,uB;;;;;;;;;;;;ACjIY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,uB;;;;;;;;;;;;ACzBY;AACZ;AACA,WAAW,mBAAO,CAAC,oEAAS;AAC5B,aAAa,mBAAO,CAAC,gDAAa;AAClC,aAAa,mBAAO,CAAC,gDAAa;AAClC,sBAAsB,mBAAO,CAAC,kEAAsB,E;AACpD,YAAY,mBAAO,CAAC,8CAAY;AAChC,cAAc,mBAAO,CAAC,kDAAc;AACpC,eAAe,mBAAO,CAAC,6CAAU;AACjC,oBAAoB,mBAAO,CAAC,uDAAe;AAC3C,YAAY,mBAAO,CAAC,0CAAU;;;AAG9B;;AAEA,eAAe,eAAe,2BAA2B;AACzD;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wB;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yB;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,2B;;;;;;;;;;;;ACzXY;;AAEZ,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,mBAAmB,mBAAO,CAAC,wDAAiB;AAC5C,YAAY,mBAAO,CAAC,uCAAO;AAC3B,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,kBAAkB,mBAAO,CAAC,mDAAa;;AAEvC;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qEAAqE,2CAA2C,EAAE;AAClH;AACA,gFAAgF,6CAA6C,EAAE;AAC/H;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACnJY;;AAEZ;;AAEA,UAAU,mBAAO,CAAC,sBAAQ;AAC1B,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,YAAY,mBAAO,CAAC,uCAAO;;AAE3B;AACA;AACA,kCAAkC;AAClC;AACA,yIAAyI,eAAe,UAAU,iBAAiB;;;;AAInL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0FAA0F;AAC1F,6CAA6C,gCAAgC;AAC7E;AACA;AACA,6CAA6C,kCAAkC;AAC/E;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE,8CAA8C,wBAAwB;AACtE,GAAG;AACH,8CAA8C,wBAAwB;AACtE,8CAA8C,uBAAuB,E;AACrE;AACA;;;;AAIA;;;AAGA,4B;;;;;;;;;;;;ACjGY;AACZ,eAAe,mBAAO,CAAC,6CAAU;;AAEjC;AACA;;AAEA;AACA,oBAAoB;AACpB,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;;;;;;ACvDY;AACZ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,IAAI;AACJ;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI;AACJ;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC,0BAA0B;AAC1B;;AAEA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E,yCAAyC;;AAEzC;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED,6B;;;;;;;;;;;;AC7aY;AACZ;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,qBAAqB,mBAAO,CAAC,yDAAgB;;AAE7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;AACA;;;AAGA;AACA;;;;;;;;;;;;;AC1JY;AACZ;;AAEA,cAAc,mBAAO,CAAC,kDAAc;;AAEpC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oC;;;;;;;;;;;;ACtCY;AACZ;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,UAAU,mBAAO,CAAC,sBAAQ;AAC1B,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,cAAc,mBAAO,CAAC,gDAAO;AAC7B,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,eAAe,mBAAO,CAAC,6CAAU;;AAEjC,kBAAkB,mBAAO,CAAC,sDAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sDAAgB;;;AAG1C;AACA;AACA;AACA;AACA,8CAA8C,iCAAiC,GAAG,YAAY,SAAS;AACvG,kCAAkC;AAClC,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,sB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C,gEAAgE,GAAG;AACnE,8DAA8D,GAAG;AACjE;AACA,kBAAkB,KAAK;AACvB,sBAAsB,KAAK;AAC3B,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,SAAS,uBAAuB,0BAA0B;AAC7F;AACA;AACA;;AAEA,CAAC;;AAED;AACA,iCAAiC;;AAEjC;AACA;AACA,mCAAmC;;AAEnC;AACA,kH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,KAAK,4CAA4C;;AAEjD,KAAK,cAAc,GAAG,mBAAmB;AACzC,KAAK,0CAA0C;AAC/C,OAAO,aAAa;AACpB,KAAK,cAAc;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;;AAEH,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4DAA4D,4CAA4C;AACxG,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA,0CAA0C;;AAE1C;AACA;;AAEA,iCAAiC;;AAEjC;AACA,iEAAiE;;AAEjE;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,8EAA8E;AACpG;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,K;AACA,IAAI,EAAE;;AAEN;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yB;AACA;AACA,yB;AACA;AACA;;AAEA,qBAAqB;AACrB,uDAAuD;AACvD;AACA;AACA,mEAAmE;AACnE;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;;AAEA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA,uBAAuB,sCAAsC;AAC7D;AACA,6BAA6B;AAC7B,uBAAuB,yDAAyD;AAChF;AACA,6BAA6B;AAC7B,uBAAuB,6CAA6C;AACpE;;AAEA;AACA,0DAA0D;AAC1D,wBAAwB,YAAY;AACpC;AACA,SAAS;AACT,wBAAwB,kEAAkE;AAC1F;AACA;;AAEA,2B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD;AACjD;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B;AAC1B;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,KAAI;AACf;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yB;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB;AACjB;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,GAAG;AACH,E;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC,sD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,GAAG,E;AACH;AACA;AACA,iCAAiC;AACjC,oE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,6CAA6C,GAAG;AAChD;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,GAAG;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACx1BY;AACZ;;AAEA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,sBAAsB,mBAAO,CAAC,8DAAoB;AAClD,mBAAmB,mBAAO,CAAC,wDAAiB;AAC5C,kBAAkB,mBAAO,CAAC,mDAAa;;AAEvC;AACA;AACA,cAAc;AACd;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA,0BAA0B;AAC1B,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA,gBAAgB,mBAAmB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+EAA+E,oBAAoB,EAAE;;AAErG;AACA,qFAAqF,4CAA4C,EAAE;;AAEnI,qEAAqE,0CAA0C,EAAE;AACjH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACnJY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,eAAe,mBAAO,CAAC,6CAAU;;AAEjC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA,I;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA,qCAAqC;AACrC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA,yCAAyC;AACzC,cAAc;AACd,GAAG;AACH;;;;;AAKA;;AAEA,qC;;;;;;;;;;;;AC3GY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,uCAAO;AAC3B,eAAe,mBAAO,CAAC,6CAAU;AACjC,kBAAkB,mBAAO,CAAC,mDAAa;;;AAGvC;AACA;AACA;AACA,oCAAoC;AACpC,gCAAgC;AAChC;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,IAAI,O;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,8BAA8B;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yCAAyC,yCAAyC,EAAE;AACpF;AACA,iCAAiC;AACjC;AACA;AACA;AACA,wD;AACA;;AAEA;AACA;AACA,0DAA0D;AAC1D;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6FAA6F;AAC7F;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD,uCAAuC,8BAA8B,sCAAsC,mCAAmC;AAC9I,0BAA0B;AAC1B;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,8BAA8B;AAC9B,GAAG;AACH;AACA;AACA;;AAEA,qBAAqB,kCAAkC;AACvD;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,6CAA6C;AAC7C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;AAEA,oC;;;;;;;;;;;;AChQY;AACZ;;AAEA,qBAAqB,mBAAO,CAAC,8DAAoB;AACjD,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,qBAAqB,mBAAO,CAAC,yDAAgB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,kC;;;;;;;;;;;;ACrDY;AACZ;;AAEA,uCAAuC;AACvC;;AAEA;AACA,gBAAgB,mBAAO,CAAC,kDAAc;AACtC,mBAAmB,mBAAO,CAAC,wDAAiB;AAC5C;AACA,YAAY,mBAAO,CAAC,0CAAU;AAC9B,cAAc,mBAAO,CAAC,8CAAY;AAClC,kBAAkB,mBAAO,CAAC,mDAAa;AACvC,mBAAmB,mBAAO,CAAC,qDAAc;AACzC,sBAAsB,mBAAO,CAAC,2DAAiB;AAC/C,2BAA2B,mBAAO,CAAC,qEAAsB;;AAEzD,kBAAkB,mBAAO,CAAC,mDAAa,E;AACvC,sBAAsB,mBAAO,CAAC,2DAAiB,EAAE;AACjD,4BAA4B,mBAAO,CAAC,uEAAuB;;AAE3D,eAAe,mBAAO,CAAC,2DAAiB;;AAExC;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D,+BAA+B,gE;;AAE/B,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,sDAAsD;;AAEnF,IAAI;;AAEJ,iCAAiC,oBAAoB;AACrD,GAAG;AACH,mBAAmB;;AAEnB;AACA,qBAAqB;;AAErB;AACA,oBAAoB;;AAEpB;AACA,wDAAwD;AACxD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,gBAAgB,GAAG,EAAE,KAAK,sBAAsB,GAAG,EAAE,IAAI,iBAAiB,GAAG,yBAAyB;AAC9H;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC,IAAI,OAAO;AACX;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,IAAI,KAAK,IAAI,MAAM;AAC/G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,sCAAsC;AACtC;AACA;;AAEA;AACA,yCAAyC,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,IAAI,OAAO;AAC/G;AACA;;AAEA;AACA,yCAAyC,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,IAAI,UAAU;AAC5G;AACA;AACA;AACA,KAAK;AACL,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAO,CAAC,yDAAgB;AAC/C;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,2DAAiB;AAC1C;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA,oBAAoB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,uDAAuD;AACvD;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,yBAAyB,mBAAmB;AAC5C,0BAA0B,oBAAoB;AAC9C,kCAAkC,KAAK;AACvC;AACA;AACA;;AAEA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB,gDAAgD,EAAE;AAClD,gBAAgB;AAChB;;AAEA,6CAA6C,EAAE;AAC/C,wBAAwB,gCAAgC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B,6CAA6C;AAC7C;AACA,uCAAuC;AACvC;AACA,4CAA4C;;AAE5C;AACA,gCAAgC;AAChC,gCAAgC;;AAEhC;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0EAA0E,oBAAoB,EAAE;;AAEhG;AACA,gFAAgF,iCAAiC,EAAE;AACnH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,G;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,wCAAwC;AAC9D;AACA;AACA;;AAEA;AACA,kBAAkB,2CAA2C;AAC7D;;AAEA;AACA,kBAAkB,0CAA0C;AAC5D;;AAEA;AACA,kBAAkB,wCAAwC;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,yBAAyB;;AAE3C;;AAEA,0BAA0B;AAC1B,8BAA8B;AAC9B,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;;AAEA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACt5BY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,0CAAU;AAC7B,eAAe,mBAAO,CAAC,kDAAc;AACrC,iBAAiB,mBAAO,CAAC,sDAAgB;AACzC,aAAa,mBAAO,CAAC,8CAAY;AACjC,iBAAiB,mBAAO,CAAC,mDAAa;AACtC,gBAAgB,mBAAO,CAAC,6CAAU;;;AAGlC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oC;;AAEA;AACA;;AAEA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA,4CAA4C;AAC5C;AACA,wDAAwD;AACxD;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,e;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA,aAAa;AACb;AACA;AACA,cAAc;AACd;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,mFAAmF;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,wBAAwB,mDAAmD,EAAE;;AAE7E;AACA;AACA;;AAEA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,mDAAmD,EAAE;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;;AAEA;AACA,6BAA6B;AAC7B;;;;AAIA;AACA;AACA;AACA,8B;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;;AAE3C,oD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,4DAA4D;AAC5D;AACA,uDAAuD;AACvD;AACA;AACA,GAAG;AACH,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;;AAGA;;AAEA;AACA,kC;;;;;;;;;;;;ACpiBY;AACZ;AACA;;;AAGA;AACA,eAAe,mBAAO,CAAC,kDAAc;AACrC,cAAc,mBAAO,CAAC,gDAAa;AACnC,WAAW,mBAAO,CAAC,0CAAU;AAC7B,YAAY,mBAAO,CAAC,oEAAS;AAC7B,gBAAgB,mBAAO,CAAC,6CAAU;AAClC,iBAAiB,mBAAO,CAAC,+CAAW;;;AAGpC;AACA;;AAEA,4C;AACA,uCAAuC;AACvC;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA,4BAA4B,gBAAgB;AAC5C,mCAAmC,mBAAmB;AACtD;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;;AAGlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA,4C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,GAAG;AACH,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,gDAAgD;AAClE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;AAIA;;AAEA,4B;;;;;;;;;;;;AChaY;AACZ;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,uCAAO;AACzB,gBAAgB,mBAAO,CAAC,sDAAgB;AACxC,cAAc,mBAAO,CAAC,kDAAc;;;AAGpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,kFAAkF;AAClF,uDAAuD;AACvD,yDAAyD;AACzD,oDAAoD;AACpD,2BAA2B;AAC3B,QAAQ;AACR;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,oCAAoC;AACpC;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA,M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,EAAE,gBAAgB,IAAI,SAAS,IAAI,yBAAyB,gCAAgC,EAAE;AAChI;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0CAA0C;AAC1C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACrXA;AACA;AACA,C;;;;;;;;;;;;ACFY;AACZ,oBAAoB,mBAAO,CAAC,6EAAc;AAC1C,eAAe,mBAAO,CAAC,6CAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,E;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,6BAA6B;;;AAG7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uBAAuB;AACvB,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA,6B;AACA,S;AACA,uC;AACA,8EAA8E,KAAK,KAAK;AACxF,yB;AACA,S;AACA,K;AACA;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA,6B;AACA,S;AACA;AACA,8EAA8E,KAAK,KAAK;AACxF;AACA,S;AACA,K;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,iBAAiB;AAC5B;AACA;AACA,cAAc,eAAe;AAC7B,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA,WAAW;AACX,OAAO;AACP;;;AAGA;AACA,WAAW;AACX,OAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/cY;;AAEZ;AACA,YAAY,mBAAO,CAAC,0CAAU;AAC9B,eAAe,mBAAO,CAAC,gDAAa;AACpC,eAAe,mBAAO,CAAC,gDAAa;AACpC,iBAAiB,mBAAO,CAAC,oDAAe;AACxC,qBAAqB,mBAAO,CAAC,yDAAgB;AAC7C,gBAAgB,mBAAO,CAAC,+CAAW;AACnC,cAAc,mBAAO,CAAC,2CAAS;AAC/B,eAAe,mBAAO,CAAC,6CAAU;AACjC,2BAA2B,mBAAO,CAAC,qEAAsB;AACzD,gBAAgB,mBAAO,CAAC,+CAAW;;;;AAInC;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA,eAAe,uBAAuB;AACtC;;AAEA;;AAEA;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8HAA8H;AAC9H;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1XY;AACZ;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,+CAAW;AACnC;AACA,uDAAuD;AACvD,qBAAqB;;;AAGrB;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wB;;;;;;;;;;;;AC9DY;AACZ,UAAU,mBAAO,CAAC,0CAAU;AAC5B;AACA,eAAe,mBAAO,CAAC,6CAAU;;AAEjC,0BAA0B;AAC1B;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,gDAAa;AAClC,oBAAoB,mBAAO,CAAC,8DAAoB;;;AAGhD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxBY;AACZ;;AAEA,eAAe,mBAAO,CAAC,iFAAa;AACpC,UAAU,mBAAO,CAAC,0CAAU;AAC5B,oBAAoB,mBAAO,CAAC,2DAAiB;AAC7C,eAAe,mBAAO,CAAC,6CAAU;AACjC,gBAAgB,mBAAO,CAAC,+CAAW;AACnC;;AAEA;;AAEA,4BAA4B;AAC5B;AACA;AACA,0DAA0D;AAC1D,sDAAsD;AACtD,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;;;AAGA,kBAAkB;AAClB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,iDAAiD;AACjD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC,iCAAiC,qDAAqD;AACtF,yBAAyB,2CAA2C;;AAEpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iC;;;;;;;;;;;;AC7JY;AACZ;;AAEA,kBAAkB,mBAAO,CAAC,uDAAiB;;AAE3C;AACA,qDAAqD,MAAM;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+FAA+F;AAC/F;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA,iC;;;;;;;;;;;ACrFA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,mCAAmC,UAAU,UAAU,EAAE;;AAEzD,mBAAmB,uDAAuD,qBAAqB;;AAE/F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,0DAA0D;AAC1D,iBAAiB,sBAAsB;AACvC;AACA,eAAe;AACf,+BAA+B;AAC/B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX,wBAAwB,QAAQ;AAChC,mCAAmC;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA,uCAAuC,eAAe;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,QAAQ;AACvC;;AAEA,sDAAsD,UAAU;AAChE;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,qCAAqC;AACrC,IAAI;AACJ;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,oCAAoC;AACpC,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,UAAU,aAAa;AAC/C;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;;AAEA;AACA;;;;;;;;;;;;;AC3cY;AACZ,WAAW,mBAAO,CAAC,oEAAS;AAC5B,eAAe,mBAAO,CAAC,6CAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,0BAA0B;;AAE1B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gFAAgF,IAAI;AACpF;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA,kD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,yBAAyB;AACzC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AACA,sBAAsB;AACtB,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC,uCAAuC;;AAEvC;AACA,oC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd,UAAU,EAAE;AACZ,gBAAgB;AAChB;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0B;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0B;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB,QAAQ;AACzB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,qBAAqB;AACrB,qBAAqB;;AAErB;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,EAAE;AAC5B,yCAAyC,EAAE;AAC3C;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI,gCAAgC;AACpC;AACA,IAAI,yBAAyB;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,OAAO;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,0BAA0B,EAAE;AAC5B,yCAAyC,EAAE;AAC3C;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA,sCAAsC;AACtC;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA,iB;AACA,iB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB,eAAe;AACf,kBAAkB;AAClB,uBAAuB;AACvB,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,yEAAyE;AAC5E;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,EAAE;AACF,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8BAA8B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA,8BAA8B;AAC9B;AACA,mBAAmB;AACnB,sBAAsB;AACtB,wBAAwB;AACxB,mBAAmB;AACnB,iBAAiB;AACjB,mBAAmB,UAAU;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC,8DAA8D;AAC9D;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA;AACA;;AAEA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,cAAc;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,EAAE;;AAEF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA,0BAA0B;AAC1B,iCAAiC;AACjC,8BAA8B;AAC9B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc,eAAe,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,KAAK,OAAO;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,IAAI,4CAA4C;AAChD;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA,4BAA4B;AAC5B,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;;AAEA,yDAAyD;AACzD;AACA;;AAEA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC,6BAA6B;AAC7B;AACA,IAAI,yBAAyB;AAC7B;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,IAAI,OAAO;AACX;AACA;AACA,8BAA8B;AAC9B;AACA,IAAI;AACJ,wC;AACA;AACA,GAAG;AACH;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAwC;;AAExC,gEAAgE;AAChE,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6BAA6B,kBAAkB;AAC/C;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,iBAAiB;AACpB;AACA;AACA,4BAA4B;AAC5B;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,W;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA,K;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG,OAAO;AACV,0BAA0B;AAC1B;AACA,IAAI;AACJ;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,K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Y,6CAA6C,0EAA0E,YAAY,8CAA8C,mCAAmC,0HAA0H,wBAAwB,UAAU,GAAG,EAAE,4BAA4B,4HAA4H,KAAK,gBAAgB,6PAA6P,WAAW;AAC7okN,qC;;;;;;;;;;;;;ACPY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,oDAAW;AAChC,cAAc,mBAAO,CAAC,gDAAS;AAC/B,cAAc,mBAAO,CAAC,gDAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5vDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;;;;;;ACpFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;;;;ACJA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA,wB","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./jswebplayer/app/main.js\");\n","\"use strict\"\r\n/** singleton **/\r\n\r\n//loaded later, after export defined\r\nvar Project;// = require('./Project.js');\r\nvar PIXI;// = require('pixi.js');\r\nvar Turtle;// = require('./Turtle.js');\r\nvar Button;// = require('./Button.js')\r\nvar CanvasDraw;// = require('./CanvasDraw.js');\t//careful with circular dependency. For now OK.\r\nvar CodeRunner;\r\nvar ShapeList;\r\nvar Color;\r\nvar DebugConsole; //will get dependencies and expose them to console\r\nvar Globals;\r\nvar CorDispatcher;\r\nvar CommandCenter;\r\nvar logger = require('./logger');\r\nvar HtmlIntegration = require('./HtmlIntegration');\r\nvar pixihelpers = require('./pixihelpers');\r\n//var Version = require('./Version.js');\r\nvar LogoCoroutine;\r\nvar ExposedAPI;\r\n\r\nvar project;\r\nvar App_instance;\r\nvar globalShapes;\r\n\r\n/** execute one step of object code **/\r\n//var updateQueue = []; //CodeRunner\t-- moved to CorDispatcher\r\n/** updates Views **/\r\nvar drawQueue = []; //LogoObject\r\n/** turtle drawing operations **/\r\nvar canvasQueue = []; //drawData\r\n\r\n/** removes previous dublicates **/\r\ndrawQueue.addRequest = function(obj){\r\n\tvar index = this.indexOf(obj);\r\n\twhile (index != -1) {\r\n\t\tthis.splice(index, 1);\r\n\t\tindex = this.indexOf(obj);\r\n\t}\r\n\tthis.push(obj);\r\n\tApp_instance._exhaustDraw();\r\n}\r\n\r\n/* moved to CorDispatcher\r\nupdateQueue.addRequest = function(runner){\r\n\t//ASSERT no dublicate runner instances\r\n\t//... or not. Events may fire in parallel?\r\n\tthis.push(runner);\r\n}\r\nupdateQueue.removeRequest = function(runner){\r\n\tvar index = this.indexOf(runner);\r\n\tif (index != -1) {\r\n\t\tthis.splice(index, 1);\r\n\t}\r\n}\r\nupdateQueue.savedPosition = 0;\r\n\r\nvar globalPause = false;\r\n*/\r\n\r\ncanvasQueue.addRequest = function(drawData){\r\n\tthis.push(drawData);\r\n\tApp_instance._exhaustDraw();\r\n}\r\ncanvasQueue.affectedCanvases = new Set();\t//optimization to draw in HTML Canvas every draw operation, but draw pixi canvas only in draw loop\r\n\r\n//PIXI\r\nvar renderer;\r\nvar stage;\r\nvar canvasWidth, canvasHeight;\t//TEST equality with project.getWidth(), getHeight().\r\n\r\n\r\nfunction App(){\r\n\t\r\n\tfunction initProject(projectData){\r\n\t\tproject = Project(projectData);\r\n\t\tproject.ccValue = projectData.cc;\r\n\t}\r\n\t\r\n\t//called from loader.js\r\n\tfunction initCanvasSized(width, height){\r\n\t\tcanvasWidth = width;\r\n\t\tcanvasHeight = height;\r\n\t\trenderer.resize(width,height);\r\n\t\tHtmlIntegration.addRendererView(renderer.view);\r\n\t\t//document.getElementById('root-div').appendChild(renderer.view);\r\n\t\tstage = new PIXI.Container();\r\n\t\trenderer.backgroundColor = 0xffffffff;\r\n\t\t// renderer.backgroundColor = 0x66FF99;\t//DEBUG\r\n\t\tenableStageMouseEvents(true);\r\n\t\tenableDocumentKeyEvents();\r\n\t}\r\n\t\r\n\tfunction enableStageMouseEvents(enable = false){\r\n\t\tif (enable) {\r\n\t\t\tstage.interactive = true;\r\n\t\t\tstage.hitArea = new PIXI.Rectangle(0, 0, canvasWidth, canvasHeight);\r\n\t\t\t//TODO click should be prevened by turtles!\r\n\t\t\t//disabled, because click function is reassigned by each page\r\n\t\t\t//stage.click = function(event){\r\n\t\t\t\t///DEBUG log\r\n\t\t\t\t//logger.debug(event.data.global.x, event.data.global.y);\r\n\t\t\t\t//var mousePosition = renderer.plugins.interaction.mouse.global;\r\n\t\t\t\t//logger.debug(mousePosition.x, mousePosition.y);\r\n\t\t\t//}\r\n\t\t} else {\r\n\t\t\tstage.interactive = false;\r\n\t\t\tstage.click = undefined;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\t//ORANGE rework with cross-plaform KeyboardEvent.key\r\n\t//we will catch only these keys (as only they are catched by MWEx, and catching modifier keys prevents us from getting same key codes as in MWEx)\r\n\tconst CATCH_UNPRINTABLE_KEYS_WIN = [0x28, 0x25, 0x27, 0x26, \r\n\t\t\t\t\t\t\t\t\t\t36, 33, 34, 35, \r\n\t\t\t\t\t\t\t\t\t\t8, 46, 45, 9, 27]; //arrows down, left, right, up; home, pgup,pgdown, end; bksps, del, ins, tab, escape\r\n\tconst CATCH_UNPRINTABLE_KEYS_OSX = [28,29,30,31];\r\n\tconst ARROWS_OSX={ArrowUp:30, ArrowDown:31, ArrowRight:29, ArrowLeft:28};\r\n\r\n\tconst DEAD_SYMBOL_KEYS_OSX = {\r\n\t\t'grave': { 'A': 192, 'E': 200, 'I': 204, 'O': 210, 'U': 217,\r\n\t\t\t\t\t 'a': 224, 'e': 232, 'i': 236, 'o': 242, 'u': 249, },\r\n\t\t'accute': { 'A': 193, 'E': 201, 'I': 205, 'O': 211, 'U': 218, 'Y': 221,\r\n\t\t\t\t\t 'a': 225, 'e': 233, 'i': 237, 'o': 243, 'u': 250, 'y': 253, },\r\n\t\t'circum': { 'A': 194, 'E': 202, 'I': 206, 'O': 212, 'U': 219, \r\n\t\t\t\t\t 'a': 226, 'e': 234, 'i': 238, 'o': 244, 'u': 251, },\r\n\t\t'tilde': { 'A': 195, 'O': 213, 'N': 209,\r\n\t\t\t\t\t 'a': 227, 'o': 245, 'n': 241, },\r\n\t\t'umlaut': { 'A': 196, 'E': 203, 'I': 207, 'O': 214, 'U': 220, \r\n\t\t\t\t\t 'a': 228, 'e': 235, 'i': 239, 'o': 246, 'u': 252, 'y': 255 },\r\n\t}\r\n\t\r\n\tvar symDead = null;\r\n\tvar compositionKey = null;\r\n\t\r\n\t\r\n\tlet _keypressedResolveList = [];\r\n\tlet _keyBuffered = undefined;\t//\"buffer\", consisting of a single key\r\n\tfunction enableDocumentKeyEvents(){\r\n\t\t//Page would get a proper focusable entry. Potentially, it may lead to unwanted behavior.\r\n\t\t$('#screen-div').attr('tabindex', 0);\r\n\t\t//Like, focus outline doesn't fit the layout well, so we disable it:\r\n\t\t$('#screen-div').css('outline', 'none');\r\n\t\t$('#screen-div').keydown(function(e) {\r\n\t\t\tif (e.target.isContentEditable){ return}; //not our\r\n\r\n\t\t\tif ( e.key == 'Dead' ) {\r\n\t\t\t\tif ( e.keyCode == 69 ) symDead = 'accute'; // Option + E\r\n\t\t\t\telse if ( e.keyCode == 73 ) symDead = 'circum'; // Option + I\r\n\t\t\t\telse if ( e.keyCode == 78 ) symDead = 'tilde'; // Option + N\r\n\t\t\t\telse if ( e.keyCode == 85 ) symDead = 'umlaut'; // Option + U\r\n\t\t\t\telse if ( e.keyCode == 192 ) symDead = 'grave'; // Option + `\r\n\t\r\n\t\t\t\tcompositionKey = null;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\r\n\t\t\tif (symDead) {\r\n\t\t\t\tcompositionKey = DEAD_SYMBOL_KEYS_OSX[symDead][e.key];\r\n\t\t\t}\r\n\t\r\n\t\t\tsymDead = null;\r\n\t\t\t\r\n\t\t\tlet isPrintable = e.key.length === 1;\r\n\t\t\tlet code = e.key in ARROWS_OSX ? ARROWS_OSX[e.key]:e.keyCode;\r\n\t\t\tif ( !isPrintable && (CATCH_UNPRINTABLE_KEYS_WIN.includes(code) || CATCH_UNPRINTABLE_KEYS_OSX.includes(code))) {\r\n\t\t\t\tcallEvent(String.fromCharCode(code));\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (isPrintable) logger.debug('skip printable');\r\n\t\t\t\telse logger.debug('skip unprintable not in list');\r\n\t\t\t}\r\n\t\t\t//return false;\r\n\t\t});\r\n\t\t\r\n\t\t//if no unprintable character catched, this one should fire:\r\n\t\t//Chrome: keypress event only on printable\r\n\t\t//Firefox: keypress event on any key (keyCode and charCode switch 0 <> value for printable <> unprintable)\r\n\t\t$('#screen-div').keypress(function(e) {\r\n\t\t\tif (e.target.isContentEditable){return}; //not for us \r\n\t\t\tif (compositionKey) {\r\n\t\t\t\tlogger.debug( \".keypress() compositionKey: \"+compositionKey);\r\n\t\t\t\tcallEvent(String.fromCharCode(compositionKey));\r\n\t\t\t\tcompositionKey = null;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlogger.debug( \".keypress() event: \"+e.charCode || false);\r\n\t\t\t\tcallEvent(String.fromCharCode(e.charCode || e.keyCode));\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tfunction callEvent(c){\r\n\t\t\t_keyBuffered = c;\r\n\t\t\tif (_keypressedResolveList.length > 0) {\r\n\t\t\t\tlogger.debug('resolve kepressed promise with '+c);\r\n\t\t\t\t_keypressedResolveList.map((resolve) => {resolve(c)});\r\n\t\t\t\t_keypressedResolveList = [];\r\n\t\t\t\t_keyBuffered = undefined;\t//saved key was processed\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** promise **/\r\n\tfunction getKeyPressedPromise(){\r\n\t\tlet promise = new Promise((resolve,reject) => {\r\n\t\t\t_keypressedResolveList.push(resolve);\r\n\t\t});\r\n\t\tif (_keyBuffered) {\t//resolve promise immediately\r\n\t\t\t_keypressedResolveList.map((resolve) => {resolve(_keyBuffered)});\r\n\t\t\t_keypressedResolveList = [];\r\n\t\t\t_keyBuffered = undefined;\r\n\t\t}\r\n\t\treturn promise;\r\n\t}\r\n\t\r\n\tfunction wereKeyPressed(){\r\n\t\treturn Boolean(_keyBuffered);\r\n\t}\r\n\t\r\n\tfunction getKeyPressed(){\r\n\t\treturn _keyBuffered;\r\n\t}\r\n\t\r\n\tfunction clearKeyPressed(){\r\n\t\t_keyBuffered = undefined;\r\n\t}\r\n\t\r\n\t\r\n\t//called from main.js\r\n\t//to get working PIXI before other modules\r\n\tfunction initRendererDefault(){\r\n\t\tPIXI = require('pixi.js');\r\n\t\t//renderer = new PIXI.autoDetectRenderer(700, 400); \r\n\t\t//renderer = new PIXI.CanvasRenderer(700, 400);\r\n\t\trenderer = new PIXI.WebGLRenderer(700, 400); \r\n\t\trenderer.plugins.interaction.autoPreventDefault=false;\r\n\t\tpixihelpers.installCustomBlendModes(renderer); //HACK\r\n\t\t\r\n\t\t//document.getElementById('root-div').appendChild(renderer.view);\r\n\t\t//stage = new PIXI.Stage(0x559988);//0xffffff);//0x66FF99);\r\n\t}\r\n\t\r\n\t//DEPRECATED\r\n\t/*\r\n\t// runs list of init functions, supplies single context to them\r\n\tfunction initUserproc(listInit){\r\n\t\tlet userprocRunner = new CodeRunner(); //empty stub //TODO add to App\r\n\t\tlet userprocContext = userprocRunner.newProcessContext(null)\r\n\t\tfor (let initFunc of listInit){\r\n\t\t\tinitFunc(userprocContext.prims, Globals.vars, Globals.userproc);\r\n\t\t}\r\n\t\tApp_instance.userprocRunner = userprocRunner;\r\n\t\tApp_instance.userprocContext = userprocContext;\r\n\t}\r\n\t*/\r\n\t\r\n\r\n\r\n\t\r\n\t/* deprecated\r\n\tfunction addButton(data){\r\n\t\tvar buttonData = {\r\n\t\t\tname: data.name,\r\n\t\t\tx: data.x,\r\n\t\t\ty: data.y,\r\n\t\t\tonClick: data.onClick,\r\n\t\t}\r\n\t\tvar button = new Button(buttonData);\r\n\r\n\t\tproject.getCurrentPage().addLogoObject(button);\r\n\t\tdrawQueue.addRequest(button); //initial draw;\r\n\t}*/\r\n\t\r\n\t/* was used in loadStub\r\n\tfunction initUserproc(data){\r\n\t\tvar userproc = data;\r\n\t\tif (userproc.code) {\r\n\t\t\tvar codeRunner = new CodeRunner(data.code);\r\n\t\t\t//run once (populate userproc)\r\n\t\t\tcodeRunner.run(null, null); //globals set to default, obj is not used\r\n\t\t}\r\n\t}*/\r\n\t\r\n/** moved here from mainloopsetup. \r\n\tall drawing should be synchronous and executed immediately!\r\n\tThis function \r\n\t\t1) updates pixi sprites (not renders them!), \r\n\t\t2) draws (with immediate rendering) on HTML canvas and mark pages which were updated; \r\n\t\t3) draws on pixi Graphics (not outputs texture itself - it's done in mainloop draw!)\r\n\tRendering sprites and pixi canvas is done in mainloop draw().\r\n**/\r\n\tfunction _exhaustDraw(){\r\n\t\t//change objects sprites\r\n\t\t//var needRender = false;\r\n\t\tvar drawQueue = App_instance.getDrawQueue();\r\n\t\t//NO! we updated stage state, but rendering can wait.\r\n\t\t//if (drawQueue.length > 0) { needRender = true;}\r\n\t\tfor (let i = 0; i < drawQueue.length; i++) {\r\n\t\t\tlet obj = drawQueue[i];\r\n\t\t\t//expect LogoObject //ASSERT\r\n\t\t\tobj.draw();\r\n\t\t}\r\n\t\tdrawQueue.length = 0;\r\n\t\t\r\n\t\t//and draw pending canvas requests\r\n\t\tvar canvasQueue = App_instance.getCanvasQueue();\r\n\t\t//canvasQueue.affectedCanvases.clear();\t-- moved to mainloop draw\r\n\t\tfor (let i = 0; i < canvasQueue.length; i++) {\r\n\t\t\tlet data = canvasQueue[i].data;\r\n\t\t\tlet canvas = canvasQueue[i].canvas; //canvas is CanvasDraw\r\n\t\t\tcanvasQueue.affectedCanvases.add(canvas);\r\n\t\t\ttry {\r\n\t\t\t\tcanvas.draw(data);\r\n\t\t\t}\r\n\t\t\tcatch (e){ //clear queue and prevent flooding with erroneous operation\r\n\t\t\t\tlogger.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcanvasQueue.length = 0;\r\n\t\t// rendering PIXI canvases moved to mainloop draw\r\n\t}\r\n\t\r\n\t\r\n\t/** \"stopall\" for everything which is not a LogoCoroutine.\r\n\t\tCurrently, it's AudioPlayer only. **/\r\n\tfunction stopAllObjects(){\r\n\t\tlet objList = project.getAllLogoObjects();\r\n\t\tfor (obj of objList) {\r\n\t\t\tobj.onStopall();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction stopAll() {\r\n\t\tCorDispatcher.stopAll();\r\n\t}\r\n\t\r\n\tfunction initAppSync(){\r\n\t\tHtmlIntegration.initUI();\r\n\t\tglobalShapes = new ShapeList();\r\n\t\tColor.initCITable();\r\n\t\tColor.initCTable();\r\n\t\tglobalShapes.initDefaultBitmaps();\r\n\t\tExposedAPI.exposeExplicit();\r\n\t\tExposedAPI.exposeInternals();\r\n\t}\r\n\t\r\n\tfunction initAfterRestore(){\r\n\t\tproject.initAfterRestore();\r\n\t\tjQuery('#procedures').text(Globals.userproc.raw[0].text);\r\n\t\tjQuery('#commandcentre').text(project.ccValue);\r\n\t\tproject.ccValue = undefined;\r\n\t\tApp_instance.commandcentre = new CommandCenter('cc');\r\n\t\tApp_instance.debugcc = new CommandCenter('debugcc');\r\n\t\tif (window.setupEditors)\r\n\t\t\twindow.setupEditors(this);\r\n\r\n\t\tApp_instance.commandcentre.sendProcs();\r\n\t\trunStartupProcedure();\r\n\t}\r\n\t\r\n\tfunction runStartupProcedure(){\r\n\t\tlet lcu = undefined;\r\n\t\tfor (let name of primtips['sym_startup']) {\r\n\t\t\tlcu = Globals.userproc.get(name);\r\n\t\t\tif (lcu)\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (lcu) {\r\n\t\t\tlet cor = new LogoCoroutine(lcu, \"startup\");\r\n\t\t\t//yield* lcu.callUserprocGenerator(this._processContext, [args]);\t//wrap in list for `apply`.\r\n\t\t\tlet logoContext = App_instance.getProject().getCurrentPage().getMutableLogoContext();\r\n\t\t\tlogger.log(\"running startup procedure...\");\r\n\t\t\tcor.startParallelProcedure(logoContext, []);\t//it returns promise, but we don't use it.\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction loadDependencies(){\r\n\t\tProject = require('./Project.js');\r\n\t\tPIXI = require('pixi.js');\r\n\t\tTurtle = require('./Turtle.js');\r\n\t\tButton = require('./Button.js')\r\n\t\tCanvasDraw = require('./CanvasDraw.js');\r\n\t\tCodeRunner = require('./CodeRunner.js');\r\n\t\tShapeList = require('./ShapeList.js');\r\n\t\tColor = require('./Color.js');\r\n\t\tDebugConsole = require('./DebugConsole.js');\r\n\t\tGlobals = require('./Globals.js');\r\n\t\tCorDispatcher = require('./CorDispatcher');\r\n\t\tLogoCoroutine = require('./LogoCoroutine');\r\n\t\tCommandCenter = require('./CommandCenter');\r\n\t\tExposedAPI = require('./ExposedAPI');\r\n\t}\r\n\t\r\n\t\r\n\tApp_instance = {\r\n\t\t\r\n\t\t\r\n\t\tinitProject,\r\n\t\t//addTurtle,\r\n\t\t//addButton,\r\n\t\t//initUserproc,\r\n\t\t\r\n\t\tinitAppSync,\r\n\t\tinitCanvasSized,\r\n\t\tinitRendererDefault,\r\n\t\tinitAfterRestore,\r\n\t\t\r\n\t\t_exhaustDraw,\r\n\t\t\r\n\t\t_getUpdateQueue: () => CorDispatcher._getUpdateQueue(),\r\n\t\tgetDrawQueue: function(){return drawQueue},\r\n\t\tgetCanvasQueue: function(){return canvasQueue},\r\n\t\tgetStage: function(){return stage},\r\n\t\tgetRenderer: function(){return renderer},\r\n\t\tgetGlobalShapes: function(){return globalShapes},\r\n\t\tgetCommandCentreValue: function() { return App_instance.commandcentre.editor.getValue(); },\r\n\t\tgetDragPause: () => CorDispatcher.getDragPause(),\r\n\t\tsetDragPause: (c) => CorDispatcher.setDragPause(c),\r\n\t\t\r\n\t\tstopAllObjects,\r\n\t\tstopAll,\r\n\t\t\r\n\t\tenableStageMouseEvents,\r\n\t\tgetKeyPressedPromise,\r\n\t\twereKeyPressed,\r\n\t\tgetKeyPressed,\r\n\t\tclearKeyPressed,\r\n\t\t\r\n\t\tgetProject: function(){return project},\r\n\t\t\r\n\t\tloadDependencies: loadDependencies,\r\n\t};\r\n\t\r\n\treturn App_instance;\r\n}\r\n\t\r\nmodule.exports = App();","\"use strict\"\r\n/** singleton **/\r\n\r\nconst Bitmap = require('./Bitmap');\r\nconst logger = require('./logger');\r\n\r\nvar Assets = function(){\r\n\tthis.bitmaps = [];\r\n\r\n\tthis.loadBitmap = function(data = null, hash = null, json = null) {\r\n\t\tif (!json)\r\n\t\t\tjson = { data, hash };\r\n\r\n\t\tif (!json.data)\r\n\t\t\tthrow new Error('data is required to load a bitmap');\r\n\r\n\t\tlet bitmap = new Bitmap();\r\n\t\tbitmap.load(json);\r\n\t\tif (json.hash)\r\n\t\t\tthis.bitmaps.push(bitmap);\r\n\r\n\t\treturn bitmap;\r\n\t}\r\n\t\r\n\tthis.findByHash = function(hash){\r\n\t\tfor (let i=0; i {\r\n\t\t\tlogger.warning(\"audio playback failed: \"+error);\r\n\t\t\tpromises.endedPromise._reject();\t\t//notify `audiostart` prim about error\r\n\t\t\tthis.stop();\r\n\t\t});\r\n\t\treturn promises.endedPromise;\t// -- is it returned BEFORE rejecting it in case of error?\r\n\t}\r\n\t\r\n\tstop(){\r\n\t\tlogger.log(\"Audio stop()\");\r\n\t\tthis._audioView.stop();\r\n\t\tthis._playing = false;\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t\tthis._audioView.resolveEndedPromise();\r\n\t}\r\n\t\r\n//////////////////\tset and get\t//////////////////////////////////\r\n\r\n\tget(propname) {\r\n\t\treturn super.get(propname, [primtips.sg.size]);\r\n\t}\r\n\r\n\t/** returns true or null */\r\n\tset(propname, value) {\r\n\t\treturn super.set(propname, value, [primtips.sg.size]);\r\n\t}\r\n\r\n\tsetvolume(value) {\r\n\t\tif (value<0) value = 0;\r\n\t\tif (value>100) value = 100;\r\n\t\tthis._audioView._audioHTML.volume = value/100;\r\n\t}\r\n\tvolume() {\r\n\t\treturn parseInt(this._audioView._audioHTML.volume*100);\r\n\t}\r\n\t\r\n\r\n///////////// Common LogoObject functions ////////////////////////\t\r\n\t\r\n\t//called when \"stopall\" executed\r\n\tonStopall(){\r\n\t\tthis.stop();\r\n\t}\r\n\t\r\n\t_initView(){\r\n\t\t// patch this.file, we now know the root\r\n\t\tif (!this.file.match(/^(file|https?):\\/\\//))\r\n\t\t\tthis.file = App.getProject().root + \"/\" + this.file;\r\n\r\n\t\tsuper._initView(this._audioView = new AudioView(this));\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = super.save();\r\n\t\td.type = \"music\";\r\n\t\td.filename = this.file;\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\taddUserProc(list, trans) {\r\n\t\tlet name = this.name;\r\n\t\thelpers.addUserProc(this.objProc, trans, name, 0, function(prims) { prims.audiostart(name); });\r\n\t}\r\n\r\n\tgetUserProcNames() {\r\n\t\treturn [this.name];\r\n\t}\r\n}\r\n\r\nmodule.exports = AudioPlayer;\r\n","\"use strict\"\r\n/** constructor **/\r\n\r\nconst $ = require('jquery');\r\nconst logger = require('./logger');\r\nconst HtmlLogoView = require('./HtmlLogoView');\r\nconst App = require('./App');\r\n\r\nclass AudioView extends HtmlLogoView{\r\n\tconstructor(playerObject){\r\n\t\tsuper(playerObject, false); //dragByLabel = false\r\n\t\tthis.player = playerObject;\r\n\t\r\n\t\tlet playerHtml = ``;\r\n\t\tthis.insertElement(playerHtml);\r\n\t\t\r\n\t\t$('#'+this.player.id).click((mouseData) => {\r\n\t\t\tif (this._clickPreventing) {\t//workaround to prevent click after drag&drop\r\n\t\t\t\tthis._clickPreventing = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//DEBUG\r\n\t\t\tlogger.debug(\"Click sound button\");\r\n\t\t\tthis.click();\r\n\t\t});\r\n\t\t$('#'+this._divId).draggable({cancel:false});\t//to prevent cliks from stopping drag events\r\n\t\t\r\n\t\tthis._audioHTML = new Audio(this.player.file);\r\n\t\tthis._endedPromise = undefined;\r\n\t\tthis._endedEvent = function(){\r\n\t\t\t//promise control there\r\n\t\t\tthis.player.stop();\r\n\t\t}.bind(this);\r\n\t\tthis._audioHTML.addEventListener('ended', this._endedEvent);\r\n\t}\r\n\t\r\n\tresolveEndedPromise(){\r\n\t\tif (this._endedPromise) {\r\n\t\t\tthis._endedPromise._resolve();\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t// returns two promises! only first throws error, second is for external control\r\n\tcontrolledPlay(){\r\n\t\tlet promise = this._audioHTML.play();\r\n\t\tlet _resolve;\r\n\t\tlet _reject;\r\n\t\tthis._endedPromise = new Promise((resolve, reject) => {\r\n\t\t\t_resolve = resolve;\t//HACK for external control\r\n\t\t\t_reject = reject;\r\n\t\t});\r\n\t\tthis._endedPromise._resolve = _resolve;\r\n\t\tthis._endedPromise._reject = _reject;\r\n\t\treturn {\r\n\t\t\tstartedPromise: promise,\r\n\t\t\tendedPromise: this._endedPromise\r\n\t\t}\t\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\tstop(){\r\n\t\tthis._audioHTML.pause();\r\n\t\tthis._audioHTML.currentTime = 0;\r\n\t}\r\n\t\t\r\n\tclick(){\r\n\t\tif ( !this.player.isPlaying()){\r\n\t\t\tlet endedPromise = this.player.play();\r\n\t\t\tendedPromise.catch((error) => {\r\n\t\t\t\t//bad design of AudioPlayer.play() \"external control\" requires to take care of this event too\r\n\t\t\t});\t\t\r\n\t\t} else {\r\n\t\t\tthis.player.stop();\r\n\t\t}\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\t\t\r\n\tdraw(){\r\n\t\tsuper.draw();\r\n\t\tif ( !this.player.isPlaying()){\r\n\t\t\t$('#'+this.player.id).attr('src', \"/player/soundicon.png\");\r\n\t\t} else {\r\n\t\t\t$('#'+this.player.id).attr('src', \"/player/soundicon_pressed.png\");\r\n\t\t}\r\n\t\t\r\n\t\t$('#'+this.player.id).css({\r\n\t\t\t//width: player.width,\r\n\t\t\t//height: player.height,\r\n\t\t\tresize: \"none\",\r\n\t\t});\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = AudioView;","\"use strict\"\r\n/** singleton **/\r\n\r\n/*\r\nWas written for this:\r\n\tArray.from(new Uint32Array(BinaryBlobs.toByteArray(BinaryBlobsData.CTable).buffer)).equals(Color._getCTable())\r\n\r\n*/\r\n\r\nvar BinaryBlobs = function(){\r\n\tvar base64 = require('base64-js')\r\n\t\r\n\t//returns uint8\r\n\tfunction toByteArray(str){\r\n\t\tvar arr = base64.toByteArray(str);\r\n\t\treturn arr;\r\n\t}\r\n\t//DEBUG\r\n\twindow.toByteArray = toByteArray;\r\n\r\n\t//arr is any int TypedArray\r\n\tfunction fromByteArray(arr){\r\n\t\tvar u8 = new Uint8Array(arr.buffer);\r\n\t\tvar str = base64.fromByteArray(u8);\r\n\t\treturn str;\r\n\t}\r\n\t//DEBUG\r\n\twindow.fromByteArray = fromByteArray;\r\n\r\n\t\r\n\treturn {\r\n\t\ttoByteArray: toByteArray,\r\n\t\tfromByteArray: fromByteArray,\r\n\t}\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = BinaryBlobs();\r\n\r\n\r\n","var CTable = \"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ALgAAACwAAAAsAAAAKgAAACoAAAAqAAAAKAAAACgAAAAmAAAAJgAAACQAAAAkAAAAIgAAACIAAAAgAAAAIAAAABwAAAAYAAAAFgAAABIAAAAQAAAADAAAAAgAAAAGAAAAAgAAOj//wDg//8A4P/4ANj/+ADY//gA2P/4AND/+ADQ//gAyP/4AMj/+ADI//gAwP/4ALj/8AC4//AAsP/wALD/8ACo//AAoP/wAKD/8ACY//AAmP/wAJD/8ACI//AAiP/wAID/8AB4//AAcP/wAHD/8ABo//AAYP/wAGD/8ABQ//AASP/oAED/6AA4/+gAMP/oACD/6AAY/+gAEP/oAAj/6AAA/+gAAP/gAAD44AAA+OAAAPjgAAD44AAA+NgAAPjYAAD42AAA+NgAAPjYAADw0AAA8NAAAPDQAADoyAAA6MgAAOjIAADoyAAA4MAAAODAAADgwAAA2LgAANi4AADYuAAA0LAAANCwAADQsAAA0LAAAMioAADIqAAAyKgAAMCgAADAoAAAuKAAALiYAAC4mAAAsJgAALCYAACokAAAqJAAAKiQAACgiAAAoIgAAJiAAACYgAAAkHgAAJB4AACIcAAAiHAAAIBoAACAaAAAcFgAAGBQAABYSAAASDgAAEAwAAAwKAAAICAAABgQAAAICAD4//8A8P//AOj//wDo//8A4P//AOD//wDY//8A0P//AND//wDI//8AyP//AMD//wC4//8AuP//ALD//wCw//8AqP//AKD//wCg//8AmP//AJj//wCQ//8AiP//AIj//wCA//8AeP//AHD//wBw//8AaP//AGD//wBg//8AUP//AEj//wBA//8AOP//ADD//wAg//8AGP//ABD//wAI//8AAP//AAD//wAA+PgAAPj4AAD4+AAA+PgAAPj4AAD4+AAA+PgAAPj4AAD4+AAA8PAAAPDwAADw8AAA6OgAAOjoAADo6AAA6OgAAODgAADg4AAA4OAAANjYAADY2AAA2NgAANDQAADQ0AAA0NAAANDQAADIyAAAyMgAAMjIAADAwAAAwMAAALi4AAC4uAAAuLgAALCwAACwsAAAqKgAAKioAACoqAAAoKAAAKCgAACYmAAAmJgAAJCQAACQkAAAiIgAAIiIAACAgAAAgIAAAHBwAABgYAAAWFgAAEhIAABAQAAAMDAAACAgAAAYGAAACAgA6Pj/AODw/wDg8P8A2PD/ANjw/wDY8P8A0Oj/ANDo/wDI6P8AyOj/AMjo/wDA4P8AuOD/ALjg/wCw4P8AsOD/AKjY/wCg2P8AoNj/AJjY/wCY2P8AkND/AIjQ/wCI0P8AgND/AHjQ/wBwyP8AcMj/AGjI/wBgyP8AYMj/AFDA/wBIwP8AQMD/ADi4/wAwuP8AILj/ABi4/wAQsP8ACLD/AACw/wAAsP8AAKj4AACo+AAAqPgAAKj4AACo+AAAqPgAAKj4AACo+AAAqPgAAKDwAACg8AAAoPAAAJjoAACY6AAAmOgAAJjoAACQ4AAAkOAAAJDgAACI2AAAiNgAAIjYAACI0AAAiNAAAIDQAACA0AAAgMgAAIDIAACAyAAAeMAAAHjAAAB4uAAAcLgAAHC4AABwsAAAcLAAAGioAABoqAAAaKgAAGCgAABgoAAAYJgAAFiYAABYkAAAWJAAAFiIAABQiAAAUIAAAFCAAABIcAAAQGAAADhYAAAwSAAAKEAAACAwAAAYIAAAEBgAAAgIAOjo/wDg4P8A4OD/ANjY/wDY2P8A2Nj/ANDQ/wDQ0P8AyMj/AMjI/wDIyP8AwMD/ALi4/wC4uP8AsLD/ALCw/wCoqP8AoKD/AKCg/wCYmP8AmJj/AJCQ/wCIiP8AiIj/AICA/wB4eP8AcHD/AHBw/wBoaP8AYGD/AGBg/wBQUP8ASEj/AEBA/wA4OP8AMDD/ACAg/wAYGP8AEBD/AAgI/wAAAP8AAAD/AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA8AAAAPAAAADwAAAA6AAAAOgAAADoAAAA6AAAAOAAAADgAAAA4AAAANgAAADYAAAA2AAAANAAAADQAAAA0AAAANAAAADIAAAAyAAAAMgAAADAAAAAwAAAALgAAAC4AAAAuAAAALAAAACwAAAAqAAAAKgAAACoAAAAoAAAAKAAAACYAAAAmAAAAJAAAACQAAAAiAAAAIgAAACAAAAAgAAAAHAAAABgAAAAWAAAAEgAAABAAAAAMAAAACAAAAAYAAAACAD46P8A8OD/APDg/wDw2P8A8Nj/APDY/wDo0P8A6ND/AOjI/wDoyP8A6Mj/AODA/wDguP8A4Lj/AOCw/wDgsP8A2Kj/ANig/wDYoP8A2Jj/ANiY/wDQkP8A0Ij/ANCI/wDQgP8A0Hj/AMhw/wDIcP8AyGj/AMhg/wDIYP8AwFD/AMBI/wDAQP8AuDj/ALgw/wC4IP8AuBj/ALAQ/wCwCP8AsAD/ALAA/wCoAPgAqAD4AKgA+ACoAPgAqAD4AKgA+ACoAPgAqAD4AKgA+ACgAPAAoADwAKAA8ACYAOgAmADoAJgA6ACYAOgAkADgAJAA4ACQAOAAiADYAIgA2ACIANgAiADQAIgA0ACAANAAgADQAIAAyACAAMgAgADIAHgAwAB4AMAAeAC4AHAAuABwALgAcACwAHAAsABoAKgAaACoAGgAqABgAKAAYACgAGAAmABYAJgAWACQAFgAkABYAIgAUACIAFAAgABQAIAASABwAEAAYAA4AFgAMABIACgAQAAgADAAGAAgABAAGAAIAAgA/+j/AP/g/wD/4P8A/9j/AP/Y/wD/2P8A/9D/AP/Q/wD/yP8A/8j/AP/I/wD/wP8A/7j/AP+4/wD/sP8A/7D/AP+o/wD/oP8A/6D/AP+Y/wD/mP8A/5D/AP+I/wD/iP8A/4D/AP94/wD/cP8A/3D/AP9o/wD/YP8A/2D/AP9Q/wD/SP8A/0D/AP84/wD/MP8A/yD/AP8Y/wD/EP8A/wj/AP8A/wD/AP8A+AD4APgA+AD4APgA+AD4APgA+AD4APgA+AD4APgA+AD4APgA8ADwAPAA8ADwAPAA6ADoAOgA6ADoAOgA6ADoAOAA4ADgAOAA4ADgANgA2ADYANgA2ADYANAA0ADQANAA0ADQANAA0ADIAMgAyADIAMgAyADAAMAAwADAALgAuAC4ALgAuAC4ALAAsACwALAAqACoAKgAqACoAKgAoACgAKAAoACYAJgAmACYAJAAkACQAJAAiACIAIgAiACAAIAAgACAAHAAcABgAGAAWABYAEgASABAAEAAMAAwACAAIAAYABgACAAIAP/o+AD/4PAA/+DwAP/Y8AD/2PAA/9jwAP/Q6AD/0OgA/8joAP/I6AD/yOgA/8DgAP+44AD/uOAA/7DgAP+w4AD/qNgA/6DYAP+g2AD/mNgA/5jYAP+Q0AD/iNAA/4jQAP+A0AD/eNAA/3DIAP9wyAD/aMgA/2DIAP9gyAD/UMAA/0jAAP9AwAD/OLgA/zC4AP8guAD/GLgA/xCwAP8IsAD/ALAA/wCwAPgAqAD4AKgA+ACoAPgAqAD4AKgA+ACoAPgAqAD4AKgA+ACoAPAAoADwAKAA8ACgAOgAmADoAJgA6ACYAOgAmADgAJAA4ACQAOAAkADYAIgA2ACIANgAiADQAIgA0ACIANAAgADQAIAAyACAAMgAgADIAIAAwAB4AMAAeAC4AHgAuABwALgAcACwAHAAsABwAKgAaACoAGgAqABoAKAAaACYAGAAkABgAIgAYACAAGAAeABgAHAAYABoAGAAaABgAGAAYABQAFAASABIAEAAQAA4ADgAMAAwACAAIAAYABgAEAAQAAgACAA=\"\r\n\r\nvar CITable =\r\n\"WgCOAcYAxQDEAMQAKAHDAMIAwgDBAMAAvwC/AL8AvgC7ALkAtwC1ALQAsACtAKsAqgCkAKEAoACaAJcAlgCMAFYCugIpASkBxAAoASgBwwDDAMIAwgDCAL8AwQC/AL8AuwC5ALUAtQCwALAArQCrAKoAoQChAKAAmgCXAIwAjAC6AloA8gEpAfIBKAEoAScBwwDCAMEAwgC/AL8AvwC/ALsAuQC3ALUAsACwALAAqgCqAKEAoQCaAJcAlwC4AYwAuQJVAvEB8QFVAosBwwDBACYBwgDBACQBJAEkAb8AuwC7ALkAtQC1ALAAsACtAKoAqgCqAKEAmgCXAJcAjACKAFcAVAJVAowBjAEpASgBKAHDAMEAJQEkASQBJAEcARwBHAG/ALUAtQCwALAAsACqAKoAqgChAJcAlwCXAIwAigC4AlMCUwJTAlMC8AEpASkB7gG/ACMBIwEjASMBIwEcARwBHAGwALkAsACwAK0AqgCqAKoAoQCXAJcAlwCMAIoAtwK3ArgCUgJTAlMCVADuAe4BiQEkASMBIwEjASMBIgEgASABuQC5ALAAsACqAKoAqgCqAKoAlwCXAJcAigCKALcCUwJSAlICUQLuAe4B7wHuAcMAIwEjASMBJAEjASABHwEdARwBuQCwALAAsACqAKoAqgCqAJcAlwCXAIoAigC2ArYCUQJRAlECTwJQAu4B7gHuAe0B7QEkASMBHwEgAR8BHQEbARkBHAGwAKoAqgCqAKoAqgCXAJcAlwCKAIgAtwK1ArUCUAJQAlACUAJQAu0B7QHtAe0B7QEdAR8BHwEfAR0BGwEZARgBFAEYARgBqgCXAKoAlwChAIoAigCIALUCtAJSAksCUAJPAlACTwJJAu0B7QHtAe0BHwEfAR8BHwEdARsBGAEYARQBEQEPARQBCgGqAJcAlwCKAIgAiAC0ArQCtAJPAk8CTwJLAkkC7QHtAe0B7AHtAR8BHwEfAR8BHQEYARgBGAEUAREBDwEOAQoBBAEEAQQBigCIAIgAtAK0ArMCTwJLAksCTgJJAksCSwLtAewB7QEfAR8BHwEdARgBGAEYARwBFAEUAQ8BDgEIAQUBBAEFAQABBQGIALMCtAKzArQCSwJLAkwCSwJLAksCSwJLAusB6wEfAR0BHQEdARsBGAEYARQBFAEUAQoBCgEFAQQBAAEAAQAB/gCzArMCswJMAkwCSQJJAkkCSQJLAksCSwJLAksC6gEdAR0BHQEYARgBGAEUARQBBQEFAQgBBAEEAf4A+wAAAfAAsgKtArMCtAJJAkkCSQJIAkcCSwJHAuwBSwI7AuoB6gEdARgBGAEYARgBFAEUAQoBCAEIAQQBBAH+APsA+gD7AK8CrQKtAkkCSQJJAkUCSAJFAkUCRQI7AksCOwI7AjsC5wHnAeMBEQEYARQBFAEIAQgBBQEKAQQB/gD7APoA8ACtAq8CswJJAkkCRQJFAkUCQAJEAkACOwI7AjsCOwLnAecB5QHnAecB5wEUAQgBCgEIAQUBCgEEAf4A+wD6APoAqwKpAq0CqwJFAkUCRQJAAkACQAI+AjsCOwI7AjsC5wHnAeUB4wHlAeUB4wEUAQoBBQEFAQoBBAH+APsA+wD6AKkCqQKrAkUCnwKfAkACQAJAAj4COwI7AjsCOwI7AucB5QHlAeMB4QHhAeUBFAEKAQoBBQEKAQQBAAH7AO0A7QCoAqQCqwKfAqECQAJAAkACQAI+AjYCOgI2AjACOwI7AucB5QHlAdwB4AEKAdkB2QEKAQUBCgEEAQAB7QDtAPoApAKkAqECngKfAqECoQI2Aj4CPgI2AjYCNgIwAjAC5wHlAeUB5QHcAeAB3AHZAdkBCgEKAQgBBAEAAewA7QDtAKECoQKhAqECoQKhAqECPgI2AjYCNgIxAjMCMQLnAecB5QHlAeUB3AHgAdwB2QHZAQUBCgHsAAoB7QDtAO0A7ACfAqECoQKhAqECoQKhAjMCMwIzAjMCMQIxAjMCMwIzAjsC5QHlAdwB3AHcAdkB1wHZAdAB2QHQAewA7QDtAOwAngKeAp4CngKhAqECoQKhAjMCMwIzAjECMQIwAjACMAI7AuUB3AHhAdkB3AHZAdcB1gHWAdABzQHQAe0A7QDtAJgCnwKeAqQCnwKeApgCoQIzAjECMwIzAicCJwInAjACJwLlAdwB2QHZAdwB2QHXAdAB0AHQAdAB0AHQAe0A7QCVApgClAKYApgCoQIxAjECMQIzAjECHAInAicCJwImAicCJgLlAdkB3AHcAdkB1wHQAdABzQHQAdABzQHtAO0AlAKVApUCfgKYAqQCpAIxAnwCMQIcAicCHgInAhwCHgIdAh4CMALZAdwB3AHZAdcB0AHQAc0BzAHQAcwBzQHQAY4ClQKVApUCigKkAqQCigJ8AjECJwInAh4CJwIcAh0CHAIcAiYC5QHQAdcB2QHXAdAB0AHQAcwBxgHQAcYBzAGLAn4CigKKApUCigJ7AnsCigInAicCJwInAicCHAIcAhwCHAIcAhoC5QHQAdAB0AHQAdABwwHMAcYBwwHQAcYBigKKAooCigJ7AnsCewJ7AnwCfAIcAhwCHAIcAhwCHAIcAhwCHgIcAhoC0AHQAdcB0AHMAcwBzAHDAcMBwgHCAYACfgKLAnwCewJ7AnsCfAJ8AhwCJwInAhwCHAIcAhwCHQIcAhoCHAIeAtAB0AHMAdAB0AHMAcwBwwHDAcIBuAFaAHYFKQEpASkBEQXCAMIAJwHCAMEAwQC/AL8AvwC+AL4AuQC0ALQAtQCtAK0AsACwAMwBzAHMAbgBtgGKAIoAVwBXAI0BKQHEACgBKAEoAb8AvwDCAMEAvwAkAb8AvwC/ALkAtAC7ALQArQCtAKsAqgCqAKoAzAHGAZoAtgGKAB4D8gERBYwBEQUpAcMAKAG/AMIAwQDCACQBvwC/ALsAuwC1ALUAtQC0ALAAtACrAKoAqgCqAKAAmgCXAIwAigC5AlcAugKMAfEBiwEoAcEAvwDBAMEAwgAkAb8AJAG7ALsAuQC1ALUAtACwALAAqwCrAKEAqgCgAIwAjAC2AYoAugJVAlQCVAJTAIsBiwGLAcMAJAEkASQBwgC/ACMBvwC7ALkAtQC1ALAAsACwAKsAqgChAJoAmgCMAIwAigCKALcCuAKCA1QCKQGLAYsBKAHCAL8AJAEjASMBvwAjARwBuwAiAbQAtQCwALAAsACqAKoAqgChAJcAlwCMALYBigC3ArgCUgJSAlICUgJSAlIC7wERBbsAIwEjASIBHAEiASIBuwC0ALQAsACwALAAqgCqAKoAlwChAJcAjACKAIoAUwJTAhsDUgJRAlICUgJSAsEA7QHCACMBIwEiASIBIgEiAR0BIAEgAbAAsACtAKoAqgChAKoAjACXAIwAigCJALcCUwJTAlICUQJSAlICUALuAe0B7QHtASIBHQEjASIBHQEdASABHAG0AKoAqgCqAKoAqgCqAKEAlwCKAIoAigC1ArUCtwJSAlICUQJQAu4B7gHtAe0B7QHtAe0B7QEfAR0BHQEgARQBHAGwABgBGAGqAKoAqgCXAJcAlwCKAIoAtQK1ArcCUgJQAk8CSwLtAe0B7QHtAe0B7QEfAR8BHwEdAR0BHQEcARgBFAEPARQBDwGXAKoAlwCXAIoAiACHALUCswK3ArQCTwKzAkgCSwLtAe0B7QHtAe0BHQEfAR8BHQEbARsBGAERARQBFAEPAQ8BBAGqAAQBBAGKAIgAhgCzArQCTwJPAksCRQJOAksCSwJLAu0BSwJLAh0BHQEdAR8BHQEYARgBEQEUARQBDwEKAQoBBAEFAQQBAAEEAQQBswK0AksCSwJLAkkCSwJLAksCSwJLAu0BSwLrAR8BHQEdAR8BGAEYAREBFAEUAQoBCgEFAQUBAAEIAQABiAAAAbMCswKzAkwCSQJJAkwCTAJLAkgCSAJLAksCOwI7AucBHQERAR0BHAERAREBCgEKAQoBCgEEAQQB+wD7AAABAAGzAq0CrQKzAkUCSQJJAkcCSAJLAkcCOwJLAjsCOwI7Ah0BGAEcARwBEQEUAQoBCAEKAQoBBAEEAf4A+wD7APsArQKtAq0CrQJMAkUCRQJIAkUCSwI7AkACOwIdATsCOwIdAecBHAEcAREBFAEIAQQBCAEKAQgBCgH7APsA7ADuAKsCrQKtAqsCRQJFAkUCRQI+Aj4CPgI7AjsCOwI7AucB5wHnAecBHAERAeEBCgEEAQgBCgEKAQoB/gD7APsA7gCtAq0CrQKtAqsCRQJFAkACRQJAAjsCOwI7AjsCOwLnAecB5wHlAeMB4QHhAQoBBAEKAQoBCgEKAfoA7AD7AO0ArQKpAp8CnwKfAp8CQAJLAkACQAI7AjsCOwI7AjsCOwLnAeMB5QHjAeMBEQEFAQUBCgEKAQoBCgH7AOwA7QDtAJ8CnwKfAp8CoQJFAkACQAJAAjoCOwI2AjsCOwI7AjsC5wHlAecB4wHjAREBBQHZAQoBCAEEAQgBCgHsAO0A+wCfAqECrQKhAqECoQKhAqECNgIzAjMCMwIxAjAC5wHnAecB5QHlAdwB4wERAREBEQEKAQgBBAEIAQoB7QDtAO0AoQKfAqECoQKhAqECoQKhAjYCNgIzAjMCMQIwAjMC5wHnAeUB5wHlAeMB3AHlAdwBCgEIAQQB7QDtAO0A7QDtAJ4CngKhAqECoQKhAp8CoQIzAjMCMQIxAjECMAIwAjAC5wHlAeUB5QHjAeMB5QHXAdwBCAEIAQgB7QDtAO0A+wCeAp4CngKfApgCoQKhAqECoQIxAjECMQIxAjACMAIwAucB5QHlAeMB3AHcAdAB1wHcAdkB3AHNAdAB7QDtAO0AngKeAp8CmAKeAqECmAIxAicCJwIwAjECMAIwAjACMAInAucB5QHjAdkB3AHcAdcB1gHQAdAB0AHGAdAB7QDtAJ4ClAKUApQClQJ+AnsCMQJAAjMCMAIxAjACMAImAicCJgLlAScC5QHcAdwB2QHZAdAB0AHMAdAB0AHNAe0A7QCOApQCjgKOApUCpAKVAp8CJwIxAhwCJwIcAhwCHAIcAh4CHALlAeUBJwLcAdABzAHQAdABzAHQAdAB0AHQAe0AigKLAo4CigKOAo4CfAJ7AnoCMQInAhwCHgIcAh4CHQIaAh4CHgIcAtwBJwLQAcwBzQHQAc0B0AHMAcwB0AHQAYoCiwKKAooCewJ7AnoCewJ7AnoCJwIcAhwCJwIcAhwCGgIeAh4CHALlAScC0AHQAdABzAHQAcwBzAHMAcYB0AGLAoACfgJ8AnsCewJ7AnsCewJ6AhwCHAInAicCHAIcAhoCHAIZAhwCHALQAdAB0AHQAcwB0AHMAcwBwwHMAcMBigJ+AnwCfAJ7AnsCewJ8AnsCegJ6AicCJwIcAhwCHAIcAhwCGQIeAuUBHALQAdAB0AHQAdABzAHMAcYBzAG2AUoErgQSBREFEQURBasEKAHCACcBvwDBAL8AvwDBAL8AvgAYAhgCtAAVAtABrQCqAK0AzAHMAcwBxgHGAcYBjADmA+YDEQUpASkBKAEoASgBwgDCAL8AiwEkASQBwQC/AL8AvwC1ALQAtQCwAK0AqwDMAcwBzAHMAcwBigCWAIwAggPmA1YAjAERBSgBKAEoAScBwgDCAL8AvwC/AL8AvwC/ALQAtQC1ALQArQCtAK0AzAHMAcwBoAC2AcYBigCJAOYD5gPmA1QAiwGLAREFKAGLAYkBvwC/AL8AvwC/ALsAvwC1ALUAtQC0ALAAtAChALAAzAGgAJoAlwCXAIkAiQAdAxwDHANTAFMAiwEcAygBqwSJAb8AJAHCAL8AvwAcAbUAqwC1ALUAtACwALAAqgCqAKoAoACqAIoAlwC4AYkAVABUABwDVAJSAlIAHAOJAYkBigG/ACQBIwEjAbsAuwC7ALQAtQC1ALQAsACwAKoAqgCqAJoAmgCJAJcAjACJABwDVAAcA1QAUwIcA1MAiQGJAYgBJAEkASMBuwAcARwBuwAcAbUAtQC0ALAAsACwAKoAqgChAIwAjACXAIoAiABTArUCVAAcA1QAUwBTAIkBiAHtAYkB7QEkAbsAuwC1ABwBHAG1ALsAsACwALUAqgCqAKoAoQCMAIwAlwCKAIkAtQJTAlMCUAJUABwDUAKHAe4B7QHtAe0B7QHtASIBHQEbAR0BIAGwAB0BsACwAKoAqgCqAIwAjACXAIoAigCKABsDGwMbA6wEUAJLAlAC7gGIAe0B7QHtAe0BIwEdAR0BHQEdAR0BGAGwALAAsACwAKoAqgCqAIwAjACKAIgAiQBTArUCUwJTArcCSwJLAk8C7QHtAe0B7QHtAR8BHwEfAR0BHQEdARwBIAEUAQ8BDwGqAJcACgGXAIwAigCKAIYAtQK1AhsDGwOzAkgCTgJIAksC7QHtAe0B7QEdAR0BHQEdAR0BHQEcARgBFAEUARQBlwAEAQQBlwCMAIoAhwCGALQCtAK0ArQCSwJLAksCTAJLAksC7QHtAe0BHQEdAR0BHwEdAREBHAEYARQBFAEPAQgBqgAEAQQBBAGKAIoAhgC0ArMCSwJLAksCSwJLAksCSwJLAksCSwJLAjsCHQEdAR8BHQERARgBGAEUARgBDwEIAQoBBAEEAQABAAGIAIgAswKzAksCSwJLAkkCSQJLAkcCSAJIAksCSwI7AjsCHQEfAR0BGAEYARgBFAERAQoBBQEFAQUBBAEEAQABAAGIAK0CrQKtAq0CSwI7AksCRQJLAksCSwJMAjsCOwI7AucBHAE7AhgBGAEYARQBCgEEAQoBBAEFAQQBBAH7AAQB8ACrAq0CrQKtAkUCRQJFAksCSwJAAj4CNgIdATsCOwI7AucBFAEYARgBHAEUARQBCAEFAQoBBAEEAQQB+wAEAe0AqwKrAq0CrQJFAkUCRQJAAkACQAJAAkACOwI2AjsCOwLnAeMB5wHjAREBGAEFAQQBBQEIAQQBBAEEAewA7ADtAKkCrQKtAq0CnwJFAkACQAJAAj4CPgI2AjYCNgI7AucB5wHnAREB5wERAQoBCgEKAQUBCgEKAQoB7ADsAOwA7QCpAqQCnwKtAqQCRQJFAkUCQAJFAj4CNgI7AjYCPgLnATsC5wERAeMB4wEKAQoBBAEFAQoB+gAKAQQB7ADtAO0ApAKfAqQCoQKfAqQCQAJAAkACOgJFAjYCOwI7AjsCOwLnAecB3AHjAdwBEQEKAecBCgEKAQoBBAH6AO0A7QDtAKQCrQKtAqsCoQKhAkACQAJAAkACNgIzAjEC5wHnATsC5wHlAecB4wHcAdwBCAERAQoBBAEEAQQB+gDtAO0A7QChAp8CoQKtAq0CoQKhAqECMwI2AjYCNgIxAjACMALnAecB5QHlAeMB4wHlAdwB5QHnAQQBBAH6AO0A7QDtAO0AoQKhAq0CngKeAqECoQKhAqECMAIzAjECMAIwAjEC5wHnAeUB5QHlAeUB5QHZAeUBEQHZAQQB7QDtAO0A7QDtAJ8CmAKhAp4CngKeApgCoQJAAqECMQIxAjACMAIwAjAC5wHlAeUB5QHjAecB2QHXAdkB3AEEAe0A7QDtAO0A7QCfApQClQKYApgCoQKhAicCQAIxAjACMQIxAjACMAIwAh4CJgLlAeUB4wHlAdAB1wHWAdkB0AHtANAB7QDtAO0AngKeAn4CoQKOAp8CoQIxAkACJwIxAjECMAIwAjACMAImAh4C5QHlAdkB3AHcAdkB0AHQAc0B0AHQAe0A7QDtAH4ClAKOApQCigJ8AqQCegJAAjECHAInAicCJwIcAh4CHgLlAeUB5QHZAdwB0AHQAdAB0AHQAdAB0AHtAO0A7QB+ApQCjgKOAnwCfAJ7AnoCegIxAicCJwInAhwCGAIYAh0CGQIcAuUB4wHZAdAB0AHQAdAB0AHQAdABxgHQAdABigJ+AooCfAKKAooCewJ6AnoCfAInAhwCJwInAhwCHAIdAhkCGQLlAeMB0AHXAdAB0AHQAdABzAHQAdAB0AHQAX0CfgJ8AooCigJ7AnsCfAJ4AngCJwIcAicCJwIdAh0CHQIZAhkC5QHlAeUB1wHNAdAB0AHMAcwB0AHMAcYBwwF9An4CfQJ8AooCewJ7AnwCegJ6AnoCNgIcAhgCGAIYAh4CHAIZAh4CFQInAs0B0AHQAcwBzAHMAcMBxgHMAbUBSQSsBK0EEQWtBCgBKAHCACgBwQC/AMEAJAG/AMEAvwAYAhgCGAIYAhUC0AGtAK0A0AHQAcwBzAHMAcYBtAG0AeYDSQQRBREFEQUoASgBiwHCAKoEcgXBACQBvwDBAL8AGAIYArUAGAK0AKsAGAIYAq0AzAHMAcwBxgHGAbUBtAHlA+UD5gPEABEFUwAoAYsBwgCLAb8AvwAkAb8AvwC/AL8AvwC1ALUAqwCtALAAqwDMAcwBzAGgAJcAxgG0AbYBHQPlA1QAVACMAYsBiwEoAYsBiQGrBKsEvwC1AL8AuwC/ALUAtQC1ALQArQCwAKsAqgChAKEAoACaAMYBtQGIABwDVABTAFMAUwCLAYoBigGJAYkBigG/AKsEvwC7ABgCvwC1ALUAtQC0ALUAsACtALAAoQChALUBtgG0AbUBiAAcAxwDUwBTABwDHAOJAYkBiQGKAYoBigEkAYcBuwC7ALQAtQC1ALUAtAC1ALAAqgDMAaoAoQCgAMwBtQGIAIgAGwMcAxwDVACIAYgBiAGJAYkBiQGKASQBIwGCARwBHQG7ALUAtQC1ALQAtAC1AK0AqgCqAKEAmgDMAYwAiACIABsDtwIbA1ECiAFSAIkBiQGJAYkBggHtAe0BfQEdAbQAtQAiAbUAtQC0ALQAsADMAaoAqgCqAKEAiACKAIgAiABTAhsDGwMcA1ECiQGJAYgBiQHtAe0B7QGCAYcBtAAdAR0BHAG1ALUAtACwALAAtACqAKoAzAGhAJcAigCIAIgAGwMbAxsDGwOJAYkBSwKIAYcB7QHtAe0BggEdAR0BHQEbAR0BtQAbAbQAsAC0AKoAqgCqAKoAoQCHAIYAiACIABsDGwMbAxsDUQIbA1EAhwFLAu0B7QHtAe0BfQEfARsBGwEdAR0BGQEYAbAAqgCwABQBrQCMAIoAiACGAIgAiAC1ArMCtAIbA4kBTwJOAksC7QHtAe0B7QF9AX0BHQEbARsBHQEdARkBGAGwABQBDwEPAYwAlwChAAABigCIAIgAtAK0ArQCGwNLAksCTwJMAksCSwJIAksCSwIdAR0BHQEdAR0BHQEcARgBHAEUARgBBQEIAQoBAAEEAYoAiACIALQCswK0AksCtAJLAksCSwJLAkgCSwJIAksCOwIdATsCHQEdAR0BGAERARQBFAEPAQgBCgEFAQQBBAEFAYgAhQCzArMCswK0AkkCSwJLAksCSwJIAkgCSAJLAjsCfAE7Ah0BHQEYARwBEQEUARQBCgEIAQoBBAH7AP4ABAGIAIUAqwKtAq0CtAJHAksCSwJLAksCSwJIAksCSwI7AjYCOwIYAR0BHAEcAQoBFAEUAQoBCAEKAQQBBAEEAfsABQH7AKsCrQKtAq0CrQJFAkACSwJLAksCOwJAAjsCNgI2AjsCHQEYARwBFAEUARQBCAEFAQgBBQEEAQQBCgH7APsA7ACtAq0CrQKrAqsCRQJFAkACQAJAAkACNgI7AjYCNgI7AucBOwIcAeUBEQEIAQgBBQEFAQUBBAEEAfsA7AD7AOwAqwKfAq0CqwJFAksCSwJAAkACQAJAAj4CNgI2AjsC5wHnAeMBHAEcAREBCAEIAQQBBQEFAQQBBAH7AOwA7ADsAKQCnwKfAq0CoQJAAjsCQAJAAkACOwI2AjsCNgLnAecB5wHnAeUB5QHnAQgBBAEKAQUBBAEEAQoB7ADsAOsA7ACkAqQCqQKkAqECpAJAAkACQAI6AjYCNgI2AjoCOgI7AucB5wHnAecB4QEKAQQBCgEKAQQBBAEEAQQB7ADsAOwAnwKfAqECqwKhAqECQAKhAjsCOwIxAjYCNgLnAecBOwLnAeUB5wHjAdwBEQEEAQoBCgEEAQQBBAH7AOkA7QDsAJ8CnwKfAp8CnwKhAqECoQI7AjYCOwI7AjACOgI6AucB5wHjAecB4wHcAREBEQHcAQoBBQH6AOwA7ADtAO0A7ACfAp4CpAKfAqECoQKfAqECMQKhAjECMAI7AjEC5wHnATEC5QHnAeMB4wHgAdwB3AERAQgB+wDsAO0A7QDtAOwAngKfAp8CnwKhAp8CoQJ+AjMCMQIxAjsCMAIwAjECMAIwAuUB5QHlAeMB4wHcAQoBEQEEAQQB7ADtAO0A7ADsAJ8CnwKYAn4CmAKeAp8CJwKhAjECMQIxAjECMAIcAjACMALlAeUB4wHlAeMB2QHXAREBBQH7AOwA7QDtAO0A7ACeApgCfgJ+An4CngKeAp4CJwJ4AjECMQIwAicCHAIcAh4C5QHlAecB5QHlAdkB5QHWAdcB0AH7AO0A0AHtAOwAfgKUAnwCjgKeAnsCewJ7AngCMQIxAicCJwInAhwCHAImAuUB5QEnAtkB5QHcAdYB1wHQAdABzAHtAO0A7ADsAH4CfgJ8An4CfAJ8AnsCeAJ7AngCNgI2Ah4CGQIYAhkCJgIYAuUB5QHZAdAB3AHXAcwB0AHQAdAB0AHtAO0A7AB+An4CfgJ8AnwCfAJ7AnoCeAJ6AnoCNgIcAhgCHAIZAhkCGAIZAhoC4wHNAdcB0AHQAcwB0AHQAcYB0AHqAMYBigKLAnwCfAJ8AnsCewJ7AnoCegJ4AicCJwIcAhYCHQIYAhgCGAIVAuMBFQLXAdAB0AHMAdABzAHGAcYB0AHMAX0CfQJ+AnwCfAJ7AnsCfAJ6AnoCegIcAh0CHQIdAhYCGAIYAhgCGAIVAhUCFQLQAdAB0AHMAcwBzAHMAdABtAGtBKwEEQURBVQAEAUoASgBwgDCACQBwgAPBb8AvwAYAhgCGAIWAhgCFQIVAhUCqwDQAcwBzAHMAbQBxgG0AbUBHQMdA60ErQSqBCgBKAEoAaoEcgVyBXIFJAG/AL8AGAIYAhgCFwIYAhUCFQIYAqoAzAHMAcMBzAHMAbABtAG1AR0DVABUAFQAVAAoAasEKAHCAKsEqwS/ACQBvwC/AL4AGAIYAhcCGAKtABUCFQIVAswBrQDMAcYBxgGKALQBtAEdAx0DVABUAFQAVAAoAasEUgDCAKsEvwAkAb8AvwC7ABgCGAK1ABgCrQCtALAAsAChAK0AtgHGAcYBxgGwAbQBHQMcAx0DHQNTAFMAUgCJAYgBigEjAYcBhwEYAr8AGAIWArUAtQC0ALUAtACwAK0AoQChAKEAoADGAbUBigCIABwDHAMdAx0DUgBSAIgBiQGIAYgBiAGHAYcBggG1ABgCtQC1AL8AtAC0ALQAoQCwALAAoQChAMwBtQGIAIoAiAAcAxsDVAAdA1IAiAGIAYgBiAGHAYgBJAGIASQBvwC7ALUAtQC1ALQAtQC1ALQAqgCqAKoAoQChALUBhwCHAIgAGwMbAxsDUgAdA4gBUgCJAVIAhwGIAYcBfQGHAWgFuwC1AB8BtQC1ALQAsACwALAAzAGqAKEAoQCIAIgAiACHABsDGwMbAx0DHQOJAYcBiAGGAYcBggGHAYIBhwF9AR0BHQG0ACIBtQC0ALUAsACqAK0AoQChAIcAjACHAIcAhgAbAxsDGwMdAx0DHQPtAYgBhgHtAYcB7QGCAX0BHQEfAbsAHQEiAR8BtAC1ALUAsACtAKEAoQChAIwAhwCGAIcAGwMbAxsDGwNLAlEAUQBRAIcBggGCAYIBggF/AR8BfQEVArUAIgEcAR8BsAAPAbAArQCtAKoAhgCIAIYAhgCFABsDGwMbAxsDtALtAUsCTALtAe0B7QGCAUsCggF8AX0BGwEdARsBGwG1ALAAtACwAK0ArQCGAIcAhwCIAIYAhwC0AhsDtAJUAEkCSwJLAksCSwJLAu0BSAKCAXwBGwF9ARsBHQEbARsBGAEYARQBGAEYAQgBDwGIAIgAhgCGAIcAtAK0ArQCtAJJArQCSwJLAu0BSwJLAksCSwI7AhUCfAF9AR0BHQEYARgBGAEUARgBCAEYAYwABAEEAYYAhgCHALQCswKtAksCSQJJAksCSwJLAksCSwJLAkgCOwI7Ah0BGwEdARwBFAEYARQBGAEYAQ8BGAEFAQQBBAGGAAQBhwC0AksCSwK0Aq0CSwJLAksCSwJLAkACSwI2AjsC5wEdAR0BGAEcARQBFAEUARgBBQEKAQoBBAH7AAQB+wD7AIUArQKpAkkCrQKtAq0CSwJLAksCSwJLAksCOwI7AucBOwIdARsBHAEbARgBGAEYAQgBCAEKAQQB+wAEAfsA+wD7AK0CrQJJAqsCtAJAAksCQAJAAkACQAJAAjsCNgI7AucBHQEcARgBHAEUAQUBGAEFAQoBCgEEAQQB7AD7APsA7ACkAp8CpAKtAp8CQAJAAkACQAJAAkACNgI2AjYC5wE7AuMBHAHnARgBFAEUARgBCgEFAQoBBAEEAfsA6wDsAOsAnwKfAp8CrQKtAkACnwJAAkACQAJAAjYCOwI2AjYC5wHnAeMBEQEcARQBGAEYAQoBBQEEAQQBBAH7AO0A6wDrAKQCnwKrAqQCrQJAAkACQAJAAjsCQAJAAjYCNgIxAjoCOgIYAhwB5wHnAREBCgEKAQQBBAEEAQQB7ADrAOsA6wCfAp8CoQKfAp8CnwJAAkACOwI2AjYCNgIwAjEC5wE2AucB5wEcAeMB4QHhAeEBCgEKAQQBCAEEAe0A7ADtAOwAnwKfAp8CnwKfAp8CoQI7AjECoQI7AqECNgIxAjACNgLlAeUB3AHcAecB5QHcAQoBCgEEAfoA7QDtAOsA+wDsAJ8CnwKfAp8CoQKhAqECoQI7AjECMAIwAjACMQIxAjAC5QHlAecB3AHjAeUB5QEKAQQBBQEEAe0A7QDrAOsA6gCfAp8CngKfAp8CnwKeAnoCoQIxAjACMQIxAjACMQIwAjAC5QHnAREB4wHjAeUB5QHlAQgB6gDtAO0A7QDqAO0AnwKfAp8CfgJ+ApgCJwJ7AjECMQIxAjACMAIwAjECMAIeAuUB5QHjAeMB2QHlAREBCgEEAfsA7QDtAO0A7ADrAJ8CngJ+Ap4CfgJ+Ap4CMQJ3AjECMAI2AjECJwInAhgC5QEmAuUB5QHjAeUB4wHjAeUBBAH7AO0A7QDsAOsA6wCeAp4CfgKeAnwCfAJ7AnsCeAJ4AjECJwIxAjACMAIYAjACJgLjAeMB2QHjAeUB4wHQAdcB1wHtAO0A6gDqAOsAigKKAnwCfgJ8AnoCewJ6AngCeAJ4AnoCMAIYAhgCGQIXAhgCFgIVAtkB4wEaAs0B0AHQAdAB0AHtAO0A6gDrAIoCfgJ+AnwCfAJ6AnoCegJ4AngCegJ6AnoCGAIcAhwCGQIYAhYCFgLlAeMB0AHQAdABwwHMAdAB0AHQAeoA6gB+AooCfgJ8AnoCewJ6AnoCegJ4AngCeAInAhgCGAIdAhgCGAIWAuUBHAIVAuMB0AHQAcMB0AHQAcwBzAHqAMYBigKLAn0CfAKLAnsCewJ6AnoCegJ6AnoCHQIYAhgCFgIYAhgCFgIVAhcCFwLjARwCwwHMAcwB0AHQAdABxgHGAUgErASsBKwEVAAQBXIFqwRyBQ8FcgUPBQ8FvwC/ABYCGAIVAhYCFQIVAhUCFQLQAdABzAHMAdABswGwAbMBswGtBKwErASsBKoEqgQoAXIFcgVyBXIFDwVpBW4FvwAWAhgCGAIWAhUCFQITAhUCFQLMAcwBtAG0AbIBsAGwAbMB5QOsBFQAVABUAKsEqwSrBKsEqgRuBW4FiAEoARgCvwAYAhYCFgIVAhUCEwK0AK0A0AHMAdABzAGyAbABsAGzAeQDrASsBKsEUgBUACgBqwRSACgBqwS/AG8FqwRuBRYCvwC1ABUCZwUVAqsAFQIVAswBrwGgAMwBtgGKALABiQAdAxwDgAMdA1MAUgBSAKsEKAGKAYgBhgGHAYIBGAIWAhYCtQAVAhUCFQK1ABUCFQKtAKEAzAHMAbgBsAGwAbMBgAMcA4ADHQNTAFIAUgBSAIgBiAGIAYcBhwGHAYcBhwEWArUAtQBnBRUCFgKwABUCsAChAMwBsAHGAYcAhwCHABsDGwMbA1IAUgBTAIkBiQFSAIcBhwGHAYcBggG/ABYCFgJoBbQAtAAVAhUCtQCqAK0AqgCgALABsAGKAIcAhwAbAxsDGwN/A1MAhwGHAVAAhwGHAYcBhwGHAYcBFgIWArUAtAC1ALUAtAC0AGcFsADMAaoAoQCHAIcAigCGAIcAGwMbA6wEUwBTABsDhwGHAYcBhwGHAYIBggGCAX0BfQG1AGYFtQC1ALUAFQJnBbAAsADMAaEAjACIALABhgCGABsDGwNUABsDUwBTAIkBiAGHAYIBggGCAYIBhwF9AX0BfAEiAbUAtAC1ABUCZwWwALAAzAGhALABiACGAIYAhgAaAxsDGwNSAB0DSwJLAoYBhwGCAYIBggGCAX8BfQF8AX0BtQC1ALUAtQAVAhUCIAGwAKoAoQCIAIgAhgCFAIYAGwMZA34DGwNUAFQASwJMAksC7QFJAIIBggGCAX0BfQFoBXwBIgG0ABwBFQKqAA8BrQCqAAQBiACIAIYAhQCGAHwDGAMYAxsDSQK0AksCTAJLAoIBggGCAX0BggF9AX0BfQEdAWgFGwEcARwBFAGtAK0ACAGGAIYAhQCGAIUAhQAYA0sCSwK0AhgDSQK0AksCSwJLAoIBggGCAYIBfAF8AX0BHQFoBRsBGAEUARgBGAGtAAgBBQGGAIYAhgCHAIYArQIWA7QCSwJLArQCSwJLAksCSwKCAUsCfAF8ARsBfAF8AR0BHQEUARsBFAERAQgBCAEFAQUBBAH7AIUAhQCFABgDswJLAq0CSQKtAksCSwJLAj4CQAI7AjsCOwJ8AXgBHAF4AX0BHQEYARQBFAEIAQ8BBAEFAQUB+wCHAIYA6wCtArMCSQJJAq0CSwJFAksCQAI+Aj4COwJ8ATsCeAF8ARwBHQF2AR0BFAEYARQBBQEPAQoBBAEEAfsA+wD7AIUArQJJAkkCrQJFAkcCQAKtAkACSwJAAjsCOwI7AngBeAE7An0BHAEbAQgBGAEUARgBDwEFAQQBBAHsAPsA7ADrAK0CqQKtAp8CQAJAAkACQAJAAkACSwJAAjYCOwI2AjYCOgIcAW4BGwEYAQgBGAEIAQ8BBAEEAQQBCgHrAOsA6wCfAp8CrQKtAq0CQAJAAkACQAJAAjYCNgI7AjYC5wF8AXwBHAEYARgBGAEUARgBBQEIAQ8BBAHrAOsA6wDrAOsAnwKpAp8CnwKfAkACQAIxAkACQAJAAjYCNgI7AjECMQJ8ATECGAHnARQBFAEYAQUBBQEEAQQB7QDqAOsA6wDrAJ4CngKfAp8CnwKhAkACQAJAAjYCNgI2AjYC5wHnATECfAF8AeEB5wEYAQgBCgEFAQQBBAEEAe0A6wDrAOsA6wCfAp4CnwKfAp8CnwJAAkACOwI2AkACNgI2AjECMQI2AhwB5wHnAeUB5wHcAdwBCgEEAeoABAHtAOsA6gDrAOsAnwKfAp8CnwKfAqECmAJAAjECNgI2AjACNgIwAjoCMALnAecB5wHnAREB5QERAdwBBAEEAesA6QDqAOoA7QDrAJ8CngKYAp8CnwKfAp4CfgKhAqECMAIxAjECMQIwAjACGALnAecB5wHjAeMB5QEEAeoABAEIAeoA7QDqAOoA6wCeAp8CnwKfAn4CngJ+AnoCMQIxAjECMQI7AicCMAIYAhgC5wEwAhEB4wHjAeMBBQEEAQQBBAHtAOsA7QDqAO0AngKeAp4CfgKfAnwCnwJ7AnoCMQIxAjYCMQIxAhgCGAIYAuUB5QHjAeMB4wHjAeMBBAHqAO0A6gDqAOoA6gDtAJ4CjgKUAp8CfAJ6AngCeAJ6AngCegIxAicCMQIYAhgCGALlARYCFgIVAuMB4wHjAeMB0AHtAPsA6gDqAO0A6gB+Ap4CfgKeAnoCegJ7AnwCdwJ6AncCegJ6AjECHAImAjACGAIXAhYC2QHjAeUBGgLQAcwBBQHQAeoA0AHtAOoAfgKKAp4CfAJ8AnoCewJ4AnoCegJ3AnoCeAIcAhwCHQIXAhUCFwIWAhcCFwLjARoC0AHMAcMBwwHQAdAB7QDqAH4CfgJ8AnwCegJ6AnoCeAJ4AnoCeAJ6AngCHAIWAhYCFgIVAhUCFgIXAhUCFQLQAdcBwwHQAcMB0AHqAO0A6gCKAn0CfAKKAnoCewJ5AnoCegJ6AnoCegJ6AhgCGAIWAhUCFQIXAhUCFQIVAhQC0AHQAcMB0AHQAdABxgHtALMBSARIBKwEqwSqBKsEcgVyBasEKAFvBagEKAGoBBYCFgIYAhYCFgIVAhUCFQIVAhUCFQLMAdABzAGwAbIBrwGyAawE4wPjA6sEqgQQBXIFcgWqBG8FDwUoAWkFbgUWAhYCFQIWAhYCFQIWAhUCEwIVAhMCzAHMAbMBtAGyAbMBsgGsBFQAqwSrBKsEqwSrBKsEqwRuBW4FbgVsBW4FagVqBRYCFQIWAhYCFQIVAq0AEwIVAswBzAGyAbIBsgGyAbAB4wPjAx0DVACrBKsEqwSrBKsEhwFuBW4FbgVuBRYCFgIWAhUCFQIVAhMCFQIVAhUCFQIVArQBsgGyAbABsgGzAR0DrAQdAx0DqgRTAFEAUgCIAVIAiAGHAasEhwEWAhQCFQJoBRUCFQIVAhMCFQIVAhUCrwGyAa8BrwGzAbIBsAGsBKwEgAMdA1MAGwNRAFIAqwSHAYcBhwGHAYcBFgIYAhYCFQIVAhUCZwUWAhMCFQIVArABrwGwAa8BsgGwAYgArAQbAxsDHQNSAIcBUQBRAFAAhwGHAYcBhwF9AYYBFgJoBRYCFQIVAmcFFQJnBbAAzAGvAa8BsAGyAYcAhgCGABsDGwN+AxsDUgBRAFEAUABSAIcBhwGHAYcBfQF9ARYCaAVqBRUCFQIVAhUCZwWwALAArwGvAYgAiACIAIYAhgAaA38DGgMbAxsDHQNQAFAAhgGGAYYBhgGGAX0BfQF9AWgFaAUVArUAFQIVAmcFsABnBa8BoACGALABhQCFAIUAGwMZAxkDUgAbA4cBSQCHAYcBggGCAYYBggF/AX0BfQFoBWgFFQIVAhUCFQIVAqoAsAChAK8BiACFAIYAhQCFABkDGQMbA1EASQCHAUkAggFNAEkAggGCAX0BggF9AX0BfAF8ARUCFQIVAhUCFQKhABUCrwGhAIgAhgCFAIUAhQAYAxoDfgMYA3wDVAB8A4gBiQGCAYIBggF9AYIBfAF9AXwBfAEgARUCtQC1ABsBGAEVAqoAoQCGAIgAhQCFAIUAGAMaAxsDSwIWAxgDSwJJAEwCSwKCAYIBggF8AXwBfAF8AXwBIAG1AGgFHAEbARsBrQAUAQgBhgCGAIUAhQCFABgDGwMYAxgDfAN8A+0BfQFLAoIBggGCAYIBfAF8AXwBfAF4AR0BaAUcARwBZwUUAQQBBQGhAIgAhgCFAIUAhQAWA3sDrQIaA7QCtAK0AksCSwJLAoIBfQF8AXwBfAF8AXwBHAF4AXgBfAEUARgBsACtABQBoQCEAIUAhQCFAIUAFgMWA60CrQK0ArQCRQJLAksCPgKCATsCSQB8AXwBeAF8AXgBHQFnBWcFFAEUARgBBQEIAQQBiACFAIUAhQCFABYDFgO0AkkCSwK0AkUCQAJLAkACOwI7AkkAdgF4AXMBfAF4AXwBZwUYARgBBQEIAQUBBAEEAQQBBAGFAOsAggCtAq0CSQIWAxYDQAJAAksCSwJLAksCSwI7AjsCcwE7AnwBcwF8AWcFGAEYAQUBBQEFAQQBBAEEAYUA+wDrAOoArQKfAp8CFgNAAksCQAJAAkACQAJAAksCNgI7AucBGAF4AXMBcwF8AXMBGAEYAQUBBQEEAQQBBAHpAOsA6gDqAKkCrQKtAhYDrQJAAkACQAJAAkACQAI7AjsCfAHnAXgBcwF8ARsBGAEYARgBGAEFAQUBBAEEAQQB6wDqAOsA6gCeAp4CnwKrAp8CQAJAAkACQAJAAjYCNgI2AjYCMQIxAngBfAFzARwBGAEYAQUBFAEEAQQB6wDrAOsA6wDqAOoAngKfAp8CQAKfAp8CQAJAAkACNgI2AkACMAI2AucBMQJzAXwBcwFzAXgBGAEFARQBCAEEAQQB6wDrAOsA6gDqAJ8CnwKfAp8CnwKhAnkCQAJAAjYCNgI2AjACMALnATYCcwFzAXwBGAF4AdwBBQEFAQQBBAHrAOwA7ADqAOoA6gCfAp4CmAKfAp8CoQI7AqECQAKhAjYCMAIxAjEC5wEwAjAC5QHnAXMBcwHlAQUBBQEFAesABAHsAOsA6gDqAOoAngKeApgCnwKfAnoCeAKYAqECegIwAjACMQIxAjACMAIwAuUB5QEwAuMB5QEIAQQB2QHrAAQB7ADqAOoA6gDqAJ8CnwKfAp8CnwJ6AngCeAJ5AjECMQIxAicCOwIYAhgCMALlAecB5wHjAeMB5QHZAQUB6gAEAesA6gDqAOoA6QCeAp8CngKYAp8CegJ6AnoCegJ4AjECMQIwAhgCGAIwAjACGALlAeMB4wHqANkB2QEKAeoABAHqAO0A6gDqAOoAngKeApgCngJ8AnoCewJ4AnYCegJ3AicCHAIYAhgCGAIYAhcCFwIWAuMBcwHZAeMBBAEEAeoA6gDqAOoA6gDqAIoCegJ5AnwCegJ6AnkCeAJ6AnoCeQJ6AnoCHQIWAuUBFAIWAhYCFQIXAhQC4wHqAAQB7QDqAOoA6gDqAO0A6QCeApQCeQJ8AnoCegJ6AngCegJ3AnoCegJ4AhwCFgIdAhYCFgIWAhYCFwIXAuMB0AHQAe0A6gDQAeoA6gDtAOoAigKKAnwCegJ6AnoCegJ6AnoCdwJ3AnoCegJ3AhYCFgIWAhYCFgIVAhUCFwIXAuoA0AHMAdcBwwHkAOoA7QDtAIoCewJ8AnwCegJ6AnoCegJ6AnoCegJ6AnoCHAIYAhgCFQIWAhYCFQIVAuUBzQEVAtABzAHQAcwB5ADqAOoAsgFHBEgEqgSrBKsEqwSqBA8FbwUoAagEDQVuBagEFAIUAhQCFgIWAhUCFQITAhMCFQITAtABsgHQAbIBtAGwAbEBRwRHBKwEqgQQBRAFqgSqBCgBKAFvBQ0FbgVuBWkFFQIUAhUCFgIVAhUCEwIVAhMC0AHMAbIBsAG0AbABsAGwAeIDrARUAKoEEAUQBaoEDgWqBCgBqARuBWwFFgJqBRQCagUWAhYCFQIVAhUCFQIVAhICzAG0AbIBsAGwAbABsAHjA+MDRwQQBaoEqwSrBKsEqwSJAagEbgVuBW4FZwUVAmgFFQIVAhUCFQIWAhUCEwISArQBtAGwAbABsAGwAbAB4wPjA38D4wOqBKoEqgSqBKsEUABuBYcBbgWHAWgFZwUWAhUCFQIVAmcFFgJnBRMCFQK0AcwBsAGwAbABsAGwAeMD4wPjA1MAUwBTAFEAUABSAEkAhwF9AYcBhwEWAhYCFgIVAhUCFQIVAmcFFQJeBRUCFQKvAbABsAGwAbABsAF/A38DGwN/AxsDUgBQAFAAhwGHAUkAhwF9AWcFZwUWAmgFZwUVAmcFFQJnBRUCFQIVAhUCsAGHAIYAsAGGAIgAfwN/A34D4wOHAVEAUABQAIYBTQCHAYcBhgGGAYABZwUWAmgFZwVnBRUCZwVnBWcFFQIVAq8BsAGHALABhgCFAH4DfgN+A+MDUwBTAIcBhwFNAIYBhwGGAYYBfwF9ARYCFgJoBWcFFQIVAmcFFQJnBbABFQKGALABhwCGAIUAhQB+A34DfwN/A1IAfwOHAUkASQBLAEkAfQGCAYABfQF8AXwBZwVoBRUCFQJnBRUCFQKMAK8BsAGhAIcAhgCFAIUAGQMaAxoDfwNJAH0DhwFNAEkASQBJAEkAfQF9AX0BfAFoBXwBfAEVAmcFFQIVAmAFzAGvAa8BhQCHAIYAgwCFABkDGAN8AxoDfwPjA4cBSQBNAIIBSQCCAX0BfQF9AX0BfAFnBWcFFQK1ABUCFQJkBWcFrwGHAIUAhQCFAIUAhQAYAxgDfAMaA3wDfQNLAkkASQBJAEkAggF8AX0BfAF8AXwBfAFnBX0BfAFnBbUAsACFAKoAhwCFAIUAhQCFAIUAGAMYAxgDSwIYA00ASQBNAIgBTQBJAIIBfAF9AXwBeAF8AXwBfAF8AWcFaAW1ALUAGAFnBYUAhQCFAIUAgwCFAHsDfAMWAxgDGANJAksCTQCCAUIASQBHAEkAfAF8AXgBfAF8AXgBeAFnBXwBFAFnBRQBCAEEAYUAhQCFAIUAhQAWAxYDGAN8A3sDFgMWA0ACSwI+AksCfAF8AXwBfAF8AXwBeAF2AXMBZwV4ARgBtQAIAQgBGAGFAIUArgGFAIUAFgMWA3sDFwMWAxYDQAJAAksCSwJAAkkAeAF2AXwBeAF8AXYBfAF8AWcFFAEYARwBtQAUAQQBhQCFAIIAhQCFAHsDFwNJAhYDFgNAAkACQAJAAkACQAJCAHMBHAF8AXMBeAFzAXwBcwFnBXMBGAEYAQUBBAEEAQQBhQD7AIUAhQCtAhcDSQIWA0kCQAJLAkACSwJAAkACfQF4AXgBHAF4AXgBeAF4AXMBcwF8ARgBGAEFAQQBBAEEAYUA6gDrAOkAFgOtAhYDrQKtAkACQAJAAjsCSwJLAjYCNgJ4ARgBeAF4AXMBcwFzAXMBbgFuARgBBQEEAQQBBAHrAOsA6QDpABYDFgOfAhYDnwJAAkACQAJAAkACNgI2AjACeAHnAXwBcwFzAXMBcwF4AW4BbgFzAQQBBAEEAesA6wDpAOoA6wCfAp8CngKfAkACQAJAAkACQAIxAkACMQIwAjACcwF4AXMBcwFzAXMBcwFuAeEBCAEEAe0ABAHrAOsA6QDpAOsAnwKfAp4CngKeAqECOwJAAkACMQI2AjYCMAIwAjACcwFzAXMBcwFzAXMBeAHhAQUB7QAIAe0A6wDtAOkA6QDrAJ8CngKYAp8CngKYAngCegJAAjECMQIxAjACMAI2AjACcwFzAXMBcwFzAeUB3AEFAesACAHtAPoA6wDpAOoA6wCfAp8CngKfAn4CegJ6An4CNgJ5AhYCMQJ0AjsCOgI6AnMBcwFzAXMBcwHjAQUBBQEEAQUB7QD6AOoA6gDqAOsAngKeAp4CngJ6AnoCegJ6AngCMQJ6AjECdgI7AhgCcwEwAjACcwHjAXMB5wFzAQQBBAEEAe0A6gDqAOoA6gDqAJ4CngJ+An4CegJ6AnsCewJ4AncCdwJ2AhYCMQIxAnYCcwEwAnMBcwHjAeMBCgHtAOkA6wAEAeoA7QDqAOoA6gCeAp4CfgJ6AnoCegJ6AnoCeAJ3AncCdwJ3AnYCFQJxAjACFQJzARUCFQLjAXMBaAEYAeoA6gDqAOoA6gDqAOoAjgKUAnoCegJ6AnkCeAJ6AnkCdwJ3AncCegJ0AngCFgIYAhUCFQIUAhUCFALjAdkBGgLqAOoA6gDqAOoA6gDqAIoCegJ6AnwCegJ6AnkCeQJ6AnoCegJ6AncCdwIVAhUCFAIWAhUCFQLZARUCFwIaAswB6gDqAOoA5gDqAOoA6gCKApQCeQJ7AnkCeQJ5AnkCeQJ3AncCeQJ3AnQCHAIVAhYCFQIVAhUCFAIVAhUCFQIEAcwB6gDQAeYA5gDqAOoAigJ7AnwCegJ6AnkCeQJ5AnkCeQJ6AnYCdwJ0AnICFgIVAhYCFQIVAhUCEwIQAhUC0AHMAdcB0AHmAOQA6gCxAUYERgQQBRAFqwSqBKoEKAEOBW8FbgUNBW4FagUVAhYCFAIVAhUCFQIVAhMCFQIQAhQC1wEVAuQA0AGvAa8BsAFHBEYEEAUQBaoEqgSrBKoEKAFvBW8FqARuBW4FFAIUAhYCZwUVAhUCFQISAhICFQIQAmQFUQWwAa8BrwGwAbABRgRHBBAFqgSqBBAFqgSqBKoEbgVvBW4FbgVuBRYCFgJqBWcFFQIVAhUCEwIVAl4FWgVgBbABsAGvAa8BsAGwAeMD4wPjAxAFEAWqBKoEqgRvBagEbwVuBRYCbAVqBWcFagVqBRUCZwUVAhUCFQJkBRUCsgGvAbQBrwGwAbABsAHjA+MDfwN+A+MDqgSrBKoEbwVvBW8FbgVuBWcFZwVoBWcFZwVnBWcFFQJnBRUCZwVgBa8BsAG0Aa8BsAGwAbAB4gPjA+MD4wN/A1MAUwBQAKoEqgRLAGoFbgVnBWcFagUWAmcFZwVnBWcFFQIVAhUCYAVaBbABrwGwAbABsAGwAeID4wN/A38DGAMQBVAAUABNAE0AhwFNAGcFZwVnBWcFaAVnBWcFZwVnBWYFZwUVAhUCYAWwAbABsAGvAYgAsAHiA38D4gN+A38DfwNRAFAATQBNAEkASQBJAGcFFgJoBWcFZwVnBWcFZwVeBWcFYAVeBWAFsAGwAa8BhgCHAIYAfgN+A38DfwMYA4cBUABNAE0ATQBJAEkAfQGCARYCfQFnBWcFZgVnBWcFZwVnBWcFFQKuAWAFrwGGAIQAhQCEABgD4gPiA38D4gNQAFAASQBNAEkASQB9AYIBSQB8AXwBaAV8AWYFZwVnBRUCXgVgBWcFYAWuAbABhgCDAIUAgwAZAxkDfQN9A+ADTQBNAE0ATQBJAEkAfAF8AX8BfQF9AX0BZwV8AWcFZwUVAl4FZwVnBWcFrgGwAYUAhgCFAIUAfAMYAxgDGAMYA4cBTQBNAE0ASQCGAXwBSQB8AXwBfAF8AXwBfQFnBWcFZwUPAWcFZwVnBYcArgGFAIUAhQCFABgDfAN8AxgDfAN9A0kASQBJAEkASQBJAHwBfAF8AXwBfAF8AWcFZwVnBWcFZwVnBWcFZwWuAa4BhgCEAIUAhQAYAxcDewMXAxcDfQNJAE0ASQBJAEYARwBHAH0BfAF8AXwBfAFnBWcFZwW1AGcFZwVnBbABsAGGAIQAggCFAIUAewN7AxcDFwMXA3wDFwNJAEkASQBJAH0BRwB8AXwBeAF4AXwBeAFnBWcFZwVnBWcFfAGFAIUAhQCFAIUAhQCFABgDFgMZAxYDFwMYA00AQAIRA30BfQF8AX0BfAF8AXgBeAF8AXwBfAFnBWcFZwVnBWcFhACFAIUAhQCFAIMAhQAWA3sDFgMWAxcDFwNAAkACSwJLAksCfQF8AX0BfAFzAXgBcwF8AXMBfAFuAWcFZwUIAVQFhQCFAIYAhQCDAIUAGAMWAxYDFgMWAxYDQAJLAksCQAJLAkIAfAF4AXgBcwF4AXgBfAFzAXwBbgFnBWcFBQFnBYUAhQCFAIMAggCFABYDFgMWAxYDFgMWAxYDFgMWA3wBNgI7AnYBdgF4AXgBeAFzAXMBcwFzAW4BbgFzAXMBZwWFAIUAhQCDAIIAfgAWAxYDFgMWAxYDSwJAAkACQAJAAjYCeAF4AXgBcwF4AXMBcwFzAXMBeAFzAXMBaAFzAQQBBAGCAIUA5wDrAOgAnwIWAxYDFgOtAksCQAJAAkACQAI2AngBeAF4AXgBeAF4AXMBcwF4AXMBcwFuAWgBBAEEAQQBBAGCAOgA6gDoABYDnwKfAp8CnwIWA0ACFgNAAkACeAF4AXgBeAF4AXMBcwFzAXMBcwFzAXMBGAEEAQQBBAEEAesA6wDrAOkA6gCeAp8CmAKfAhYDnwKhAkACMQIxAnkCMQI2AjACNgJzAXMBcwFzAXMBcwFzARgBaAEEAQQB6wDrAOsA6wDqAOoAnwKfAp4CngKfAnoCegJ6AjYCMQIxAjECNgIwAjYCcwFzAXMBcwFzAXMBcwEYAXMB7QAEAe0A6wDrAOsA6wDpAJ4CngKeAnoCnwJ6AnoCQAJ5AjECMQJ2AicCcwE6AnMBcwFzAXMBcwFzAXMBcwEYAQgB7QDtAOsA6wDqAOoA6wAIA58CnwJ6AnoCegJ5AncCeAIxAjYCdgIwAjYCMAJzAXMBcwFzAXMBcwHjAXMB3AEEAe0A6gDqAOkA6gDqAOkAngKeAnoCeAJ6AnoCegJ3AnkCeQJ5AhYCegJ3AnACcwFzAXMBcwEwAnMBaQFpAWgB6gDtAH0A5gDpAOYA6wDrAJ4CigJ6AnkCeQJ4AnoCdwJ6AncCegJ6AnQCdwJ2AhQCdgJyAhQCcwEUAnMBaQEFAesA6gDqAOYA5gDqAOsA5gCeAnoCegJ6AnoCegJ4AnoCdwJ3AncCegJ3AnQCcgIUAhYCFAIUAhQCFAIUAhUC6gDrAAQB7QBUAeoA5gDrAOYAngKUAnoCegJ6AnkCeQJ3AncCdwJ3AnoCdwJ3AhUCFAIVAhYCFAIUAhQCFAIUAhQC6wDqAOoA5gDqAOYA5gDmAJ4CewKUAnwCegJ5AnkCeQJ5AncCdwJ3AnQCdAJyAnQCFgIUAhUCFAIVAhQCEwITAuoAzAHqAOYA6gDgAOAA5gB7AnsCegJ6AnoCegJ5AnkCeAJ3AncCdgJ0AnQCFQIVAhQCFAIVAhUCFQIVAhMCFwITAtABzAHqAO0A6gDmALABRQQQBRAFqgSrBKkEqQSoBG8FbwUNBQ0FqARrBWwFagUVAmgFFgITAhMCEgITAgUCEwLgAGAF4ADgAK8BrwGvAUUEEAXiA6oEEAWqBKsEbwUOBW4FbgVuBWwFbAVqBWoFagVnBRYCEwITAhACXgUSAhIC5gBRBdABtAGvAa8BsAFFBEIE4gOqBKoEqgSqBG8FDgVuBW8FbgVsBWsFagVqBWgFZwVnBWcFFQIQAhUCEgJaBa4BWgWwAa8BrwGvAbAB4gPhAxAFKAEoARAFqgSqBG8FbgVuBWoFbgVoBWoFaAVoBWcFZwVnBWcFZwUVAmQFYAUSArQBsAGwAa8BrgGwAeED4QPiAygBqgQQBaoEbwUQBW4FbgVuBW4FZwVoBWgFaAVnBWcFZwVnBWcFFQJeBWAFYAWvAa8BrgGvAa4BsAHiA+IDfwN/AxAFEAWqBBAFEAWHAW4FaQVnBWcFZwVnBWcFZwUVAmcFZwVnBV4FFQJeBRUCUQWwAa8BsAGuAa8B4gPhA38DfwN/A6gEqwRNAEkATQBLAEsAZwVnBWcFZwVnBWcFZwVnBWcFZwVeBWAFZwUVAhUCpAGwAbABrgGwAeIDfwN/A+ADUABRAFEASQBNAE0ASQBLAEkAZwVnBWcFaAVnBWYFZwVnBWcFXgVgBWcFZwWwAbABsAGwAYQAsAEZA34DfgMbAxsDEAVQAE0ATQCGAUkASwBNAGgFZwVJAGgFZwVmBWwCZwVnBV4FYAVnBWAFYAWkAYUAgwCEAIMAGAN/A30D2QNJAEkASQBJAEkASwBJAEkAggF9AX0BfAF8AWgFSQBnBWcFZAVnBWcFZwVnBaQBsAGFAIMAgwCDABgDGAMZAxsD4AMZA00ATQBNAEkASQBJAEkAfwF8AX0BfQF9AX0BZwVnBWQFZwVnBWcFZwWkAbABgwCFAIUAgwAYAxgDGAMXA30DSQBNAE0ATQBJAEkASQBJAHwBfAF8AX0BfAFnBWcFZwVnBRUCZwVnBWcFXgWkAYMAhQCFAIMAGAMYAxcDGAN9A30DSQBJAEkASQBHAEkASQB8AUkAfAF4AXwBfAFnBWcFZwVnBWcFXgVnBVYFhQCGAIUAhQCDABcDFwMXAxcDFwN9A0kATQBNAEkASQBJAEkAfQF8AXwBeAF4AXwBdgFnBWcFZwVnBVYFVgWCAIIAgwCFAIUAhQAZAxgDFwMXA3wDFwNNAE0ASQBJAEYARgB8AXwBeAF4AXgBeAFzAXwBfAFnBWcFfAFgBYUAhQCFAIUAhQCFAIIAGAMYAxkDFgMWAxgDFgNNAE0ASQBCAEIAQgB9AXgBeAF4AXMBcwFzAXMBZwVzAVQFVgWFAIUAhQCFAIIAggCCABYDFgMWAxYDFgMWAxYDFgM+AksCSwJGAHwBfAF8AXgBeAFzAXMBcwFzAXMBZwVnBVYFhQCFAIUAhQCCAIIAggAWA3sDFgMWAxYDFgMWAxYDSwJ8AXwBRgB4AXgBeAF4AXMBcwFzAXMBbgFzAWgBVAVzAYUAggCFAIIAggCCAH4AGAMWAxYDFgMWAxYDFgNAAnwBfAF8AXwBdgF2AXgBeAF4AXMBcwFzAXMBcwFuAXMBcwEEAYIAggCCAIIAggB+ABYDFgMWAxYDFgMGAxYDFgNLAkACeAF8AXgBeAF4AXgBeAFzAXMBcwFzAXMBcwFpAXMBggCCAIIAggCCAOsA5wAWAxYDFgMWAxYDFgNAAkACQAJAAnMBfAF4AXMBcwF4AXMBcwFzAXMBcwFzAWgBaQFzAYIAfgCCAH4A5wDoAOcAFgMWAxYDFgMWAxYDBgNAAnMBeAF8AXwBeAFzAXMBcwFzAXMBcwFzAXMBeAFzARgBcwFoAX0AggB9AOsA6ADoABYDDQMWAxYDFgMNAxYDeAJ6AjECeAF4ATACcwE2AnMBcwFzAXMBcwFpAXMBcwFpAWgBcwFoAesA6wB9AOYA6wCfAp4CBgMGAwYDAgN2AnoCeAIxAnoCdgJzATsCcwFzAXMBcwFzAW4BaQFpAXMBcwFoAWgB6wB9AO0A5gDqAOsACAOeAp4CngIGA3oCeQJ5AngCMQJ5AnYCOwJzAXMBcwFzAXMBcwFzAXMBaQFzAXMBVAHmAOYA5gDqAOsA5gDrAAgDFgN6AhYDegJ3AnoCeAJ5AnkCdgJ2AncCdAJzAXACcwFzAXMBcwFzAXMBcwEYAesA7QB9AOoA5gDrAOsA6wCfAp4CAgN4AngCeAJ5AngCeAJ6AncCegJ0AnQCcAJzAXMBcwFzAW4BcwFzAWkBGAHrAH0A5gDqAOsA6gDgAOYAngKKAnoCeAJ6AnoCeQJ5AnYCdwJ3AnoCdAJ2AnYCcQJyAnQCcwFuARQCFAJfAeoA6wB9AH0A6gDmAOYA5gDmAHoCegJ4AngCdwJ2AnkCeQJ6AncCdwJ3AnQCdAIVAnYCFgIWAhMCbgEUAhQCcwHqAFABVAHqAOoA5gDkAOAA5gB6Ap4CeQJ6AngCegJ5AnkCeQJ5AncCdwJ2AncCcQJyAnICFgIUAhMCFAIUAhQCFQJQAeoA6gDqAOQA5ADgAOAAegJ7AnkCeQJ5AnkCeQJ5AnkCdwJ3AnQCdAJ0AnICcgJyAhYCFAITAhMCEAITAhQCBAHmAOAA7QDgAOYA4ADgAHwCngJ5AnkCeQJ5AnkCeQJ5AncCdwJ0AnQCdAJyAnICFgIVAhUCEwISAhMCEAIUAhQC4ADgAOAA5ADmAOAArwFFBEUEqgQQBasEqQSpBKgEqAQNBQ0FbgWoBGsFagVqBWoFZwVnBWcFEAJgBRACXgUQAlYB3wDgAOAAsAGvAa4BRQRFBKoEqgSqBKoEbgUNBW4FDQUNBQ0FbAVrBWwFEAJnBWcFZwVnBRMCZAVeBV4FWgUQAuAAEAKwAeAAsAGwAeMD4gMQBRAFEAUQBW4FqwQOBW4FDgVvBWwFawVrBRYCZwVnBWcFZwVkBVsFXgVkBV4FZAWsAaoBsAGvAbABsAHjA+IDEAUoAaoEqgSoBKoEDgVuBQ4FbAVsBWsFbAVqBWgFZwVnBWcFYAVbBWQFZAVgBWQFWgWwAa8BsAGuAbAB4APjA+MD4wOqBKoEqwSrBKsEowQOBW4FbAVoBWgFaAVnBWcFZwVnBWQFWwVkBWAFYAVgBaQBrAGqAbABrgGwAeID4QPjAxAFqgSoBBAFqwQQBVAAbgVuBWcFZwVnBWcFaAVnBWcFZwVmBWAFYAVnBWAFYAWuAawB4ACwAa4BsAHhA+ED4gPhAxsDqASoBA4FSQBJAEkASwBnBWcFZwVnBWcFZwVnBWcFZwVkBWcFYAVgBWAFrgGsAa4BqQGwAbAB4APiA34DfgMZA1EADgVJAEkASQBJAEkASwBnBWcFZwVnBWcFZwVnBV4FZAVkBWAFYAVgBa4BrAGwAeAAsAGwAeADGAMZAxgDGwMQBUkASQBJAEkATQBJAE0AZwV8AXwBZwVnBWcFZwVnBWQFZAVgBWAFYAWkAa4BsAGEAIQArgEZAxkDGQPZA+ADSQBJAEkASQBJAEkASwB9AXwBfAF8AXwBZwVnBWcFSQBnBWQFYAVeBWAFFQKkAbABhACEAIMAfQN9A30DGQN8A+IDSQBNAEkASQBJAEkASQB9AXwBfAF8AXwBZwVnBWcFSQBkBWcFZwVgBVQFpQGDAIMAgwCDAHwDfQN9A30DfQNJAEkASQBJAEkASQBJAEkAfAF8AXwBfAF8AXYBZwVnBWcFZAVnBRUCpQFUBYMAgwCDAIMAgwB8AxcDFwN9AxgDfQNNAE0ASQBGAEkARwBHAHwBfAF8AXYBfAF8AXwBZwVnBWcFZwVgBVYFVAWuAYMAgwCDAIIAFwMXAxcDFwMXA0kASQBNAEkAQgBGAEYASQB9AXwBfAF2AXMBcwF8AWcFZwVkBWcFYAVWBVEFrgGDAIMAggCCABgDFgMWAxcDFwNJAEkASQBJAEkARgB8AUIAfAF4AXYBdgFzAW4BbgFzAWcFZwVnBWcFUQWCAIMAggCuAYIAgAAYA3sDFgMWAxYDFgMWA0kASQBJAEIAQgBCAEIAeAF4AXYBcwFzAW4BbgFzAW4BZwVRBYIAUQWDAIIAggCCAH4AFgMWAxYDFgMWAxYDFgNGAEkAfAFCAHwBfAF8AXwBeAFzAXMBcwFuAW4BaQFzAWgBXwGCAGcFfgCCAIIAggCCABYDFgMWAxYDFgMWAxYDEQMRA0IAQgB4AXwBfAF4AXgBcwFzAXMBbgFpAWkBcwFzAYUAfQCFAH4AggCCAIIAggAWAxYDFgMWAxYDFgNAAhEDQgA+AkYAQgBCAHgBcwFzAXMBcwFzAW4BbgFuAWgBaAFoAYUAfgB+AIIAggB+AIIAFgMWAxYDFgMNAxYDQAJAAnwBBgNGAHgBeAFzAXMBcwFpAXMBcwFzAWkBbgFpAW4BaQGCAGgBfQDrAIIAfQDnABYDDQMNAxYDFgMWA0ACQAIGAwYDQgBzAWkBcwFzAXgBcwFzAXMBcwFzAXMBbgFuAWkBaAFoAX0AggDnAH0A5wAWAw0DFgMRAxYDFgNAAkACQAJ5AkYAcwFzAXMBcwF4AXMBcwFzAW4BcwFpAWkBcwFQAVQBaAFUAX0AeQDmAOYAFgMNAw0DBgMGAwYDBgMGA3MBdAJ4AXwBcwFzAXMBcwFzAXMBcwFuAXMBaQFzAWgBaQFUAeYAfQB9AOYA5gDmAAgDngIGAwYDBgMGA3oCBgMGA3QCcwF0AnMBcwFzAXMBcwFzAXMBbgFzAWkBcwFoAVQBfQBUAX0AfQDmAOYA5gANAwYDBgN+AgYDBgN2AnQCdAJ0AnQCNgJ0AnMBcwFzAXMBcwFzAW4BaQFzAXMBXwFUAVQB5gB9AOsA5gDmAOYACAMIAwgDeQICAwIDdgJ2AnkCdAJ3AnQCdgJwAnMBcAJzAXMBcwFuAW4BcwFpAVQBVAHrAFQB6wDmAOYA5gDmAJ4CCAMCA3kCeAJ4AnYCeQJ5AnkCdwJ2AnYCdAJ2AnMBcwFzAXMBbgFzAV8BaQFUAVQBVAHrAOYA5gDmAOYA5gAIA3gCAgN4AncCdwJ5AnkCdgJ5AncCeQJ0AnQCdgJxAnYCdAJuAW4BcwEUAlQBVAFUAVQBfQDmAOYA5ADmAOYAAgN+AnkCeAJ4AncCeAJ5AnYCdwJ5AnQCdAJ0AnYCcQJ2AnMBcwETAhQCFAJVAV4BVAFUAeYA5gDmAOYA5gDmAAIDewJ3AncCeAJ3AnkCdwJ3AngCdAJ0AnQCdAJ0AnICEwIWAhQCEAISAhACUAFUAVQBVAFWAeYA4QDmAOYA4AB7AnsCewJ5AnkCeAJ5AnkCeAJ3AnQCdAJ0AnQCcgJyAhMCFgIVAhMCEAIQAhMCVAFUAVQB4ADhAOQA5ADgAOAAigJ7AnkCfAJ5AnkCegJ5AnYCdwJ3AnQCdAJyAnICcgISAhUCFQISAhACEAITAhMCDQJUAVYB4ADhAOAA4ADgAEQERARCBBAFEAWpBKkEqASoBA0FbgVuBWwFawVqBWkFaAVnBWYFZQUQAmQFXgUNAg0CUAFgBd8ArAHfAKoBrgFCBEIEQgQQBaoEbgVuBW4FbgVuBW4FbgVsBWsFawVpBWgFZwVmBRACYAVkBV4FXgVeBQoCrAHgAKwB4ACwAaoBQgRCBEIEKAGqBG4FbgVuBacEbgVuBWwFbAVsBWsFagVoBWcFZgVmBV4FZAVkBV4FYAWuAVEFUQWuAbABrgGsAeED4gMQBSgBqgSqBG4FDgVuBW4FbgVuBWkFaAVrBWgFaAVnBWYFZgVgBWQFXgVgBV4FWgWkAa4B4ACwAa4BrAHgA+ID4wMoAaoEbgUOBQ4FbgVuBaYEbgVoBWgFZwVoBWgFZwVmBWYFYAVkBWAFYAVeBV4FrgGuAawBrgGwAa4B4APgA0IEQgRCBG4FSQBQAFAApwSmBGgFaAVnBWcFaAVoBWcFEAJnBV4FZAVgBWAFXgVkBa4BrgGuAbABsAGoAeAD4APfAxkDqASoBEkASQBJAEkASQBoBWcFZwVnBWcFaAVoBWgFZwVnBWQFYAVgBRUCZAWuAaQBsAGwAbABsAHgA98D4APgAxkDGQNJAEkASQBJAEkASQBoBUkAZwVnBWgFaAVnBWcFZwVkBWAFYAVgBWQFpAGuAbABrgGwAa4B4AMZA34DfgN9A0kASQBJAEkASQBJAE0AggF8AX0BfAFoBWgFZwVnBWcFZAVeBWAFYAVkBaQBqQGwAa4BsAGuAX0DfQN9A+AD4APgA00ASQBJAEkASQBNAH0BfQF9AWcFaAVnBWgFZwVnBWQFXgVkBWAFZAVUBaUBrgGmAYMAgwB8A3wDfQN9A0YATQBNAEkASQBJAEkASQBJAH0BfAF8AWgFfAFnBWcFYAVkBWAFYAVgBVYFVAVRBa4BqQGuAYMAfAN8A3wDfQN8A0YARgBJAEkARgBJAEcASQBHAHwBfAF8AWcFZwVnBWcFYAVnBWAFVgVWBVQFUQWuAa4BggCCAHsDfAN8A9kDfAN9A3sDTQBJAEcASQBHAEcARwB8AXwBfAF8AWcFZwVnBWcFZwVnBWAFVgVRBVEFggCCAIIAggAXAxcDGAMWA3sDfQN9A0YAQgBGAEkARgBGAEIAQgBCAHwBaAVnBXMBZwVnBWcFZwVRBVEFggCCAIIAggCCAIIAewN7A3sDewMWA0YASQBGAEkARgBCAEYARgBCAEYAdgF2AWgFcgFuAW4BaQFnBWcFVgVRBYIAggCCAIIAggCCABYDFgMWAxYDEQMRAxYDTQBCAEIAfAFCAEYAQgB4AXgBdgFzAXIBbgFuAW4BZgVpAVQFVAV6AIIAggCCAIIAggAWAxYDFgMWAxYDFgMWA0kAQgBCAHwBQgBGAHwBeAF8AXMBcwFzAW4BbgFuAWgBcwFoAVQFggCCAIIAggCCAH4AFgMWAxYDFgMWAxYDEQMGA0IARgBGAEIARgBCAEIAcwF2AXMBcwFsAW4BaAFoAWgBaAFUBYUAggB9AIIAggB+ABYDFgMWAxYDFgMWAwYDBgMWA0ACQgBCAHMBcwFzAXMBcwFzAXMBbgFzAWkBbgFoAW4BVAV+AH4AfQCCAH0AggAWAxYDFgMWA3cDFgMWAxYDQAJGAHMBcwFzAXMBcwFzAXMBcwFzAW4BcwFpAW4BaAFzAWgBVAF9AIIA5wB+AH0AFgMWAxYDBgMGAw0DBgMGA0ACcwFzAUIAcwFzAWkBcwFzAXMBcwFzAXMBaQFuAWgBaQFoAVQBfQB9AH0A5ADmABYDFgMWAwYDBgMNAwYDBgMxAnMBcwFzAXMBcwFzAXMBcwFzAW4BcwFzAWkBcwFoAXMBUAF9AH0AfQDmAOYA5gAGAw0DBgMRAwYDBgMGAwYDBgMGA3MBcwFzAXMBcwFzAXMBcwFuAXMBcwFpAV8BaAFUAWkBfQB9AH0A5gDmAOYABgMGAwwDBgMGAwYDBgMGA3QCdwJ3AnMBcwFzAXACcwFzAXMBcwFzAXMBaQFfAVQBVAFUAX0AfQDmAOYA5gDmAAYDBgMGAwYDBgMGAwYDBgN2AjECcwF0AnMBcwFzAXMBcwFzAW4BcwFzAWkBaQFzAVQBVAFWAeYA5gDkAOYA5gAIA54CAgMCAwYDBgMGA3YCdAJ3AnYCcQJ2AnACcAJzAXMBcwFzAXMBXwFpAVQBVAFUAVQBVAF9AOYA5gDmAOYACAMIAwYDdwJ3AgYDeAJ2AnQCdwJ0AnECdgJwAnACcQJzAXMBcwFzAV8BVAFpAVQBVAFUAVQB4ADmAOYA4ADmAAgDeAIIA3cCdwJ3AnkCdgJ2AngCcQJ0AnQCdgJ0AnECcwFzAXMBcwFfAWkBaQFUAVQBVAFWAeYA5gDgAOYA5gB5AgIDAgN4AncCdwJ5AnkCdgJ2AngCdwJ0AnYCdAJxAnMBcwFzAXMBXwFfAVABVAFUAVQBVgHmAOYA5ADgAOYACAMCAwgDdwJ5AncCeAJ3AngCdwJ2AnYCdgJxAnYCdAJzAXQCFAITAhICEAJUAVQBVAFUAVYB5ADhAOQA4ADgAHoCewJ7AnoCdwJ5AncCeQJ4AngCdAJ2AnYCdAJxAnECEAIUAhMCEgISAhQCEAJUAVQBVAFUAeAA5gDgAOAA4AB7AooCeQJ5AngCeAJ6AnkCeAJ5AnkCdgJ2AnICcgJyAnICEwIUAhACEgIQAgUCDQIOAg0C3wDmAOQA4ADgAK4BQgRCBEIEQgRuBakEqASoBKgEbgVuBW4FbgVsBWkFagVsBWoFEAJlBWQFYAVeBQ0CDQJdBQoC1gCsAeAAqgGsAUMEQgRCBEIEqQSoBG4FbgVuBW4FCwVsBWwFbAVpBWoFaAVsBRACZQVkBWAFYAVeBQ0CrgEKAq4BrgGsAaoBrgFEBEIEQgSqBEIEqQRuBW4FbgWjBG4FbAVsBWkFaQVpBWgFaAVnBWQFZAVgBV4FXgVaBVoFpQFRBaoBqgGkAa4BRARCBEIEQgSqBG4FbgUOBaMEbgULBWwFbAVsBWgFaAVoBWcFZgUQAmQFYAVgBV4FWgUNAqQBVgWwAa4BrAGuAUIE4ANCBKoEQgQOBW4FowSmBKMEowRsBWwFZwVnBWgFaAVmBWcFZAVkBWAFYAVgBV0FZAWkAaQBrAGuAa4BrgHiA+ED4ANCBKgEpgSqBKMEEAWjBKMEaAVnBWcFZwVnBWgFZwVnBWcFZAVgBWAFYAVdBVQFpAGsAawBrgGuAa4B3wPfA+ADGQPgA6oESQBJAEkASQBJAEsAaAVnBWcFZwVoBWcFZwVnBWcFZgVgBWAFpAFUBaQBVgWpAa4BrgGuAeAD3wPfA30D4AOoBEkASQBJAEsASQBJAGcFRgBNAGgFaAVoBWcFZwVgBWAFYAVgBWAFVgVUBaUBUQWuAa4BrgHfA98D1wPgA+AD4ANJAEkASQBJAEcARwBGAHwBfAF9AXwBbAJnBWwCYAVgBWAFYAVgBVQFVAVRBaYBrgGwAa4BewN9A+AD3wPeA30DSQBJAEkARgBHAEcAggF8AXwBaAV8AWcFZwVnBWAFYAVmBWAFVAVWBVEFpQGmAa4BsAGuAXwDfAPZA3sD3gN8A0kASQBGAEkASQBHAEYAfAF8AUYAaAVnBWcFZwVgBWAFXgVgBVQFVgVRBVEFpgGuAYIArgF8A3wD3wN7A3wDRgBJAEkARgBJAEkARwBGAEYAfAFnBXwBZwV8AWcFYAVgBWYFVAWlAVYFUQVRBVYFggCuAYIAewN7AxcDfQN9A0kASQBNAEcARwBGAEYARgBGAHwBfAFoBXwBZwVnBWAFYAVmBVQFZAVRBVQFpQGlAa4BggCAABYDFwMWA3sDFgMWA0kARgBCAEcARgBGAEYAQgBCAEIAdgFzAXwBcwFnBWAFaQFWBVEFVAVUBYIAggCCAIIAggAWAxYDewN7AxYDewNGAEYAQgBCAEIAQgBGAEIAQgB2AXwBaAVsAXMBcwFgBWkBZwVRBVQFVgVUBYIAggCCAIIAFgMWAxYDFgMRAxEDRgBGAEYASQBCAEYAQgBCAEIAdgF8AXYBcgFsAWkBaQFgBWgBVAVUBVQFfgCCAIIAfQCCABYDFgMWAxYDFgMRAxEDfQNCAEIAQgBCAD0AQgB2AXYBfAFzAWwBaQFpAWkBaAFfAWgBVAV+AIIAfgB9AH4AfgAWAxYDFgMRAxYDFgMRAxYDQgBCAEYAfAE9AEIAPwBzAXMBbgFsAWkBaQFpAWgBXwFoAWgBXwGCAH4AfgB9AH4AFgMWAxYDFgMWAwYDFgMRAwYDRgB8AXMBcwFzAXMBcwFzAXIBbAFpAWkBaQFpAWkBaAFoAX0AfQB9AH0AfQB9ABYDEQMWAxYDBgMRAxYDFgMGAxEDRgBzAXMBcwFzAXMBcwFzAXMBXwFpAWgBaQFpAWgBfgB9AH0AfQB9AH0AfQAWAxYDBgMGAwYDBgMGAxYDBgNzAXMBQgBzAXMBcwFzAXMBcwFzAXMBaQFpAV8BaQFoAX0AfQB9AH0AfQB9AOQABgMGAw0DDQMGAwYDBgMGAwYDBgN3AnMBcwFzAXMBcwFzAXMBcwFzAWkBaQFpAWkBaAFUAX0AfQB9AH0AfQDkAAYDDQMGAwYDBgMGAwYDBgMGA3QCcAJzAXMBcwFzAXMBcwFzAXMBcwFpAWkBaQFoAVQBVAFUAVYBfQDkAOQA5AAGAwwDBgMGAwYDBgMGAwYDBgN0AnYCcAJzAXMBcAJzAXMBcwFuAW4BaQFpAWkBXwFUAVQBVAFUAX0AfQDkAOYABQMGAwYDBgMGAwYDBgMGA3QCdwJ2AncCcQJzAXMBcwFzAXMBcwFpAV8BaQFUAV8BVAFUAVQBfQB9AOQA5ADmAAYDBgMGAwYDBgMGAwYDBgN2AnQCdgJ0AnECcwFxAnECcwFzAXMBcwFfAWkBVAFfAVQBVAFUAVQB5gDmAOYA4AAIAwgDCAMGAwgDBgN5AnYCdAJ3AncCcAJ2AnECcAJ0AnMBcwFzAXMBXwFfAVQBVAFUAVQBVAFUAd8A4QDkAOAACAMIAwgDBgN5AnkCdgJ2AnYCdwJ3AnQCcQJxAnACdAJzAXMBcwFfAVUBXwFVAVQBUAFUAVQBegDhAOYA4ADgAAgDCAMCAwYDeQJ5AnkCeQJ4AncCdwJ3AnECcQJ0AnECcwFxAl8BXwEMAg0CXwFUAVABVAFUAVQB3wDgAOAA4AAIAwgDAgMGA3gCdwJ4AncCeAJ3AnYCdgJ2AnQCdAJxAnECcwF0Al8BEAIOAg0CDQJUAVQBUAFQAeEA4ADgAOAAAgMIAwIDdAJ0AncCdAJ0AnQCdAJ0AnYCdgJ0AnECcQJyAnECEAIQAhACDQINAg0CDQJUAVAB4QDhAN8A4ADgAIoCigICA3cCdwJ2AnYCdgJ4AnQCdAJ0AnQCcQJxAnICcQISAhACEAIQAg0CDgINAlUBXgHmAN8A3wDfAOAArAFDBEIEQgRCBEIEqARuBacEpwRuBW4FbAULBQsFbAVsBWcFbAUQAhACDQJgBV4FCgJdBQoCCgIKAqwBqQGkAawBQwRCBEIEQgRCBKgEqASnBKcEpwSjBGwFbAVsBWkFbAVnBWoFCgVnBQ0CYAVdBWAFXgUKAgoCCgKsAawBrAGsAUMEQgRCBEIEQgRCBKMEpwSjBKcEbgVsBWwFbAVsBWoFZwVnBRACYAVgBWAFYAVgBV4FCgJRBVEFVAWsAagBrAFCBEIEQgRCBKoEQgSmBKYEpwSmBGwFbAVsBWwFCgVuAmcFZwUQAmUFYAVgBWAFXgVRBVYFVgVWBaYBrAGoAawBQgTiA0IEQgSqBG4FpgRuBaYEpARsBQsFbAUKBWoFZwVnBWgFEAJeBWAFYAVgBWAFVgVUBVYFVgWsAaQBqAGsARkDQgRCBEIEpwSmBKYEpwSmBKEEbAVsBWcFoQRoBWcFaAVnBWwCZgVeBWAFYAVgBV4FVAVWBVYFpQGpAagBqAHfAxkD4QNCBEIE4ANJAEkAqwRLAGgFbAVsBWcFaAVoBWgFZwVnBWcFYAVeBWAFYAVdBVQFqQFWBaUBqQGoAagB4APgA98D4APgA+ADSwDgA0sARgBGAEYARgBnBWgFaAVoBWcFZwVeBV4FXgVgBWAFYAVUBVYFVgWpAakBpgGuAd8D4AN7A9cD3gOqBEkASQBJAEkARgBHAEYARgBNAGgFaAVnBWcFXgVkBV4FYAVgBWAFVAVRBVYFqQGpAagBrgHfA94D4APeA98D3wNJAEkASQBGAEcAQgBGAEkARgBnBXwBZwVnBWcFZAVeBWAFYAVdBVQFVgVRBaQBqQGoAa4BewPZA98D3gPeA9wDSQBJAEkASQBJAEYARgBGAEYAfAFnBWcFZwVnBWAFYAVgBWAFUQVUBaUBVgVRBakBqAGCAHsDewPeAxYDFgMWA0cARgBJAEcAQgBHAEYAfAFGAGgFfAFoBWcFZwVkBWAFYAVWBVEFVAVWBVYFqAGoAX0AgwB7A3sDFgMWAxYDFgN7A0cARgBCAEIAQgBCAEIAQgA/AD8AfAF8AXMBZAVkBWAFVgVRBVQFUQVWBYMAqAGuAYMAewMWAxYDFgMWA0YARgBGAEIAQgBCAEIARgBCAD8APwA/AHMBfAFnBWQFZAVWBVYFUQVUBVEFVgVUBa4BfQB+AHsDewN7AxYDEQMWAwYDSQBCAEIAQgBCAEIAQgA/AD8APwBzAXwBaAVzAWQFaAFRBVQFVAWuAa4BrgGuAX0AfgAWAxYDFgMWAxEDEQMRAxEDewNCAEIAQgBCAEIAQgA/AGgFaAV8AWwBcwFkBXIBUQVRBVQFrgF9AIIAggB+AH4AEwMWAxYDFgMRAxEDEQMRA0YAQgBCAEIAQgBCAGgFaAV2AXMBcwFpAWkBaAFoAWgBVAVUBX0ArgF9AH4AfQB9ABEDEQN3A3cDEQMRAwYDEQMNA0YAQgBCAEIAQgB4AT8AaAVyAWkBaQFoAWgBaAFuAW4BVAFUAX0AfQB6AH0AfQARAxEDdwN3AwYDBgMGAxEDBgNCAEYAQgBCAD0AaAVzAXYBdgFpAWkBcwFoAWgBaAFuAW4BfQB9AH0AfQB9AH0ADwMRAxEDEQMRAwYDBgMGAxEDBgMGA3MBOAA9AHMBcwF2AXMBaQFpAV8BXwFfAV8BaAFfAX0AfQB9AH0AfQB9ABEDEQMMAwYDBgMGAwYDBgMGAwYDcwFzATgAOAB2AXMBbAFsAXMBaQFfAV8BXwFfAVABXgF9AH0AfQB9AH0A4gAGAwYDBgMGAwYDBgMGAwYDBgMGA3MBcwFzATgAcwFzAXMBdgFpAXMBcwFfAV8BXwFUAV4BXgF9AH0AfQB9AOIABgMGAwYDBgMGAwYDBgMGAwYDBgNzAXMBcwFzAXMBcwFzAWkBcwFzAVYBXwFfAVQBXwFfAVQBVgF5AHoA5ADiAAYDBgMGAwYDBgMGAwYDBgMGAwYDcwFwAnACcAJzAXMBOABpAXMBaQFeAV8BXwFUAVUBVAFUAX0AegB6AOQA3wAGAwIDBgMGAwYDBgMGAwYDBgN0AnACcAJwAnACcwE4AHMBaQFzAWkBXwFfAV8BVAFUAVQBVAFUAX0A5gDkAN8ACAMIAwgDBgMGAwYDBgMGA3YCdAIGA3ACdAJwAnECdAJzAWkBMwBWAV8BXwFfAVYBUAFUAVQBfQB6AN8A4gDgAAgDCAMIAwYDBgMCAwYDdgJ3AnQCdAJwAnACdAJxAnQCcwEzADMAXwFfAV8BXwFWAVQBVAFUAX0A4gDgAN8A4AAIAwgDCAMGAwYDeQJ2AnYCdwJ2AnQCdgJwAnACcAJxAnQCMwAzADMAVQFWAWkBVAFQAVQBVAHdAOAA4ADhAOAAAgMIAwIDAgMFA3kCdgJ4AnYCdgJ0AnECcAJwAnACdgJxAnECMwAMAg0CDQINAl4BUAFUAVQBVAHfAOAA4QDgAAIDAgMCA3kCBgN0AncCdgJ0AnYCdgJ2AnYCcQJxAnYCcgJxAjMADAIOAg4CDQINAlUBUAHgAFQB4QDfAOAA5gACAwIDAgN2AnQCeAJ2AnQCdgJ2AnQCdgJ2AnYCcQJyAnECcwFzAQ4CDgIOAg0CCgINAl4BVAHfAOEA5gDfAOAAAgMCAwYDeQJ0AnkCdgJ0AnYCdAJ0AnYCdgJyAnICcgJxAnECDgIOAhACDgINAg4CVQFeAQ0C4QDhAN8A4ACqAUIEQgRCBD8EQgSjBKgEpwSmBKcEDQWmBGwFbAVsBQoFCgVxAgsCDgJgBQ0CXQVbBVoFCgIIAgoC4QCqAakBrAFCBEIEQgRCBEIEowSmBKYEoQQNBaMEpgRsBQsFBwUKBW4CagUQAmAFXQVgBV0FWgVaBQsCCAIKAqgBqQGpAaQBQgRCBEIEQgRCBCgBpwRuBaYEpwSjBKYEbAVsBQcFbgIHBWoFEAIOAg0CYAVdBVoFWgVUBVYFpgGlAaQBpgGkAUIEQgRCBEIEQgSmBKYEpwQNBaYEpgShBGwFoQQHBQoFBwUHBWcFDQINAmAFXQVeBV0FVAVWBVEFpAGpAaYBpAFCBOADQwRCBKgEpgRuBacEpwSmBKYEbAWmBG4CbgJqBWoFBwUHBQ0CZAUNAmAFYAVWBVQFVgVRBakBqQGmAaQB3wPcA94D4APeA94DpwSjBKcEpgRsBWgFpgSmBAcFagVoBQcFZwUNAmQFYAVeBWAFVgVUBVYFUQWpAakBpgGkAd4D3wPgA+AD2wOjBKcE3gOjBEkASwBLAGcFaAVoBWoFaAUQAmwCDQJeBWAFYAVgBVYFUQVWBVYFUQWpAaYBqAHfA98D4APbA+AD3wPeA94DSQBJAGgFBwVGAGgFaAVoBWgFEAJnBQ0CXgVeBV4FVgVUBVYFUAVRBbABqQGkAaQB3wPfA98D3wPbA94D3gPeA0cASQBJAEYARgBoBWgFaAUHBWwCZwUNAl4FVgVgBVYFVgVRBVYFUQWpAVEFVgWkAd4D3gPeA94D2wPeA98DSQBJAEkASQBGAEYARgBGAHwBBQVsAmgFZwVeBVYFVgVWBVYFpQFWBVEFVgVRBVYFpgHeA94D3gPXA9wD3gPeA0kASQBJAEkARwBCAEYARwB8AUYAbAJoBWcFYAVgBWAFVgVWBVYFUQVWBVEFqQGwAaYBewN7A3sDFgPeA94DSQBCAEYARgBGAEYAQgB8AWwCfAFnBWwCaAVnBVYFVgVgBVYFUQVRBVEFVgVRBagBgwB9AHsDewMWA3sDFgMWAxYDQgBCAEYAQgBGAEYAPwA/AD8APwAHBWgFZwVWBWAFVgVRBVEFUQVRBVEFUQWCAIMAggARAxYDewMRAxYDewNHAEIAQgBCAEIAQgBGAEIAQgA/AHwBQgB8AT8AVgVWBVYFUQVRBVQFUQVRBYIAfQCCAH0AFgMWAxYDEQMRAxEDEQMRA0YAQgBCAEIAQgBCAD8APwA/AHwBfAF8AXwBZAVWBVEFUQVRBVEFUQWCAH0AggB9ABYDewN7A3sDewMRAwYDEQNGAEIAQgBCAEIAQgBCAD0APwA/AGgFcwFCAGkBUQVRBVEFUQVWBVEFfQB9AH0AfQARAxYDEQMRAwYDEQMRAxEDQgBCAEIAQgBCAEIAPQA9ADgAPwBzAWkBaQFpAVEFUQVRBVEFfQB9AH0AfQB9AH0AEQMRAxEDEQMRA30DBgMRA3sDRgBCAD8ARgA9AD0APQA4AGkBcwFoAWkBXwFfAV8BUQVRBX0AegB6AH0AfQB9ABEDDwMNA3cDBgMGA30DBgMFA3wBQgBGAD0APQA9AHMBPQBzAXMBaQFoAV8BXwFoAVQBVgF9AH0AfQB9AH0AfQARAwwDDQMRAwYDBgMGAxEDBgMGAwYDPwA9AHMBcwE9AHMBXwFzAWkBXwFfAV8BXwFeAV8BfQB9AH0AegB9AH0ADAMMAwwDBgMGAwYDBgMGAwYDBgMGA3MBcwFzATgAaQE4AHMBcwFfAV8BXwFfAV8BVgFWAVQBfQB9AOQAegB6AA0DEQMMAwYDBgMGAwYDBgMGAwYDBgMGA3MBcwFzAXMBcwE4AF8BOABpAV8BXwFVAVYBVgFQAVYBfQB9AH0A4gAGAwYDBgMGAwYDBgMGAwYDBgMGA3MBcwFzAXMBcwFzAXMBPABfAVYBXwFfAV8BUAFUAVQBVAFUAX0AfQB9AOEABgMNAwYDBgMGAwYDBgMGAwYDBgN3AncCcAJzATMAOABfATMAOABWAV8BXwFfAVQBVAFUAVQBVAHeAH0AegDhAAYDBgMGAwYDBgMGAwYDBgMGAwYDBgNxAnECcQI4ADMAMwBzATMAVgFfAV8BVQFWAVQBUAFUAVQB4QDdAOAA3gAIAwYDCAMGAwIDBgMGAwYDBgMGAwYDcAJ0AnECMwAzADMAVgEzAFYBXwFfAV8BUAFUAVQBVAFUAd8A3wDfAOAACAMFAwIDCAMGAwIDAgN5AncCdwJ3AnACcAJwAnECcQJzAXMBMwBWAV8BXwFfAVQBTgFUAVQBVAHfAN8A4QDgAAgDAgMCAwIDBgMGAwYDdgJ3AnQCcQJwAnECcQJxAnECcwEzADMAMwBfAV4BXwFVAVQBVAFUAeEA3wDfAOEA4AACAwIDAgMCAwgDAgMGAwYDdAJ2AnYCcQJ2AnECcQJxAnACcAIzAA0CDAIMAg0CVgFUAVQBVAHfAOEA3wDhAOAAAgMFAwIDBgMCAwIDdAJ2AnYCdgJxAnQCdgJxAnECcQJxAjMAMwBeARICDQINAg0CDQJQAVQB4ADfAN8A4ADgAAUDAgMGAwYDBgN2AnQCdgJ2AnYCdgJ2AnYCcAJxAnECcQJxAlUBDQIOAg0CDQIKAg0CUAHfAFQB3wDfAOAA4AACAwIDdgIGA/ICBQN0AnQCcQJ0AnQCdAJ2AnICcQJxAnACcQINAg0CDAINAg0CCgIKAuEA3wDhAOEA3gDgAKkBQgRCBEIEQgRCBKMEpgSoBKcEpgSmBKMEowShBKEECgVuAgUFbAJgBWAFCwIKAgoCWgVWBVEFCgLdAKoBqAGkAUIEQgRCBEIEQgRCBKYEowSnBKYEoQSmBKYEoQQKBQoFbgJuAmwCEAINAgsCDQJaBVoFVgVWBVYFpQGoAakBpAE/BEIEQgRCBEIEqASmBKYEpgSmBKMEnwSjBAoFBwVuAm4CBwVsAg0CZAVgBQsCWgVaBVYFVgVWBVEFVgWkAaQBQgRCBEIEQgRCBKYEpgSnBKYEpgShBKEEowQHBQcFBwUHBQcFbAINAmAFYAUNAgoCVgVWBVEFUQVRBVYFqQGkAUIEPwRCBEIEqASmBKYEpwSnBKQEoQShBKEEbAJuAm4CBwVsAmwCDQINAmAFWgVWBVYFVgVRBVEFUQWkAaQBpgHfA9sD4APgA94DpgSjBKYEowRsBZ0EoQRoBWwCBwVqBQcFbAJsAg0CDQJgBVYFWgVWBVYFVgVQBaYBpAGmAaYB2wPbA+AD3gPgA2wFewPeA6MEpwShBGgFoQRsAm4CbAIHBWwCbAJsAg0CYAVWBVYFVgVWBVEFUQVRBaQBpgGmAdsD2wPgA9sD2wPeA3sDewOkBEYAnwQHBW4CBwVoBQcFBwVsAmwCbAJgBWAFVgVWBVYFVgVWBVEFUQWpAaUBpgHeA98D3gPeA94D3gPeA94DSQBGAKQEoQQHBWwCBwVsAmwCBwUNAmwCYAVgBVYFVgVWBVYFVgVRBVEFUQVRBaQB3gPXA9cD1wPeA94DSQBJAJ8ESQBJAEIARgB8AUYAbAIHBQcFaAVgBWAFYAVWBVYFVgVRBVYFUQVWBVEFqAGkAd4DewPeA9wD3gPeAxYDSQBJAEYASQBGAEIARwBHAGcFBwUHBWAFbAJgBWAFVgVWBVYFUQVRBVEFVgVRBagBpAHeA94D3gPeA94D3gPeA0IARgBGAEIARwBCAHwBRgA/AAcFBwVgBWwCZwVWBVYFVgVRBVEFUQVRBVEFUQWoAaYBewMWA3sDFgMWAxED3gNGAEIAQgBCAEIARgA/AD8AQgBnBQcFYAVsAmcFVgVRBVYFUQVRBVEFVgVRBaQBfQB9ABYDFgN8AxYDFgMRAxEDQgBCAEIARgBHAEYAQgBCAD8APwAHBWwBYAVgBVYFUQVWBVEFUQVRBX0AUQWDAH0AfQB7AxYDEQN8AxEDEQMRA0IAQgA/AEIAQgBCAEIAPwA9AD0APwBsAUIAVgVWBVYFUQVRBVEFUQVRBXoAfQB9AH4AegMRA3cDewMWAxEDEQMRA0YARgBCAEIAQgBCAD0APQA/AD0AcwEHBWgBVgVRBVEFUQVRBVEFUQV9AHoAfQB8AHcDFgMRAxYDFgMRA3sDBgMGA0IAPwBCAEIAPQA9AD0APQA8ADwAcwFsAV8BaAFRBVEFUQVRBXoAfQB9AH0AfQARAxEDBgMNAxEDDwMNAxYDdwNCAEIAPQA9AD0APQA4AD0APQBpATwAbAFfAV8BaAFRBVYBfQB9AH0AfQB9AHoADwMRAxEDdwMPAwYDBgMFAwYDPwBCAD0APQA4AD8APQA9ADgAcwFzATgAXwFeAV4BXwFWAX0AUAF9AH0AegB9ABEDDQMNAw0DBgMGAwYDBgMGAwYDBgM9AD0APQBCADgAPAA9ADgAOABoAV4BXgFeAVYBVgF9AHoAegB9AHoAegARAwYDBgMGAwYDBgMGAwYDBgMGAwYDQgBzAXMBcwE4ADwAcwE8ADgAXwFeAV4BVgFWAVQBVAFQAXkAfQB6AHUABgMGAwYDBgMGAwYDBgMGAwYDBgMGA3MBcwE4AHMBcwE4ADgAOAA4AF8BXgFeAVYBVgFUAVYBVAF6AHkAegB6AA0DBgMGAwYDBgMGAwYDBgMGAwYDBgNzAXMBPAB2AXMBPAA8ADgAVgFeAV8BXgFWAVQBVAFWAVQBVQHkAHUA4AAGAwYDBgMGAwYDBgMGAwYDBgMGAwYDcAJzATwAOAA8ADgAMwBzAVYBXwFeAVYBVgFUAVQBVAFWAVUB4ADgAOAACAMGAwYDBgMGAwYDBgMGAwYDBgMGAwYDdgI4ADgAOAAzADMAMwAzAF8BXwFWAVYBVAFUAVQBVAF6AN8A3QDgAAYDBgMGAwIDBgMGAwgDBgMGAwgDcAJxAnACOAAzADMAMwAzADMAMwBWAV8BVQFUAVQBVAFUAVAB3wDgAN8A4AAGAwYDBQMCAwYDAgMIAwIDCAN3AnQCcAJxAnECdgIzADMAMwAzADMAXwFeAVYBXgFUAU4BVAFQAVYB3wDfAOAAAgMCAwUDBgMCAwYDBgMCAwYDdgJxAnECcQJxAnECcQIzADMAMwAzAEsBXgEKAl4BVAFUAVQBUAHfAOEA3wDgAAIDBgMCAwIDAgMGAwYDAgNxAnQCdgJxAnECcQJxAnYCcQIzADMAXgFVAQwCDAJeAVQBVAFQAd8A4QDeAN8A4QACAwYDAgMFAwYDAgMCA3ECdAJxAnYCdgJ2AnACcQJxAnECMwAzADMADQINAgwCCgJOAVABUAHhAOEA3gDhANkAAgMCAwUDAgMFAwIDAgN2AnQCdAJ2AnECcQJxAnECcAJxAnECMwAzAA0CDQINAgoCTgFQAVAB4QDhAN4A3wDgAAIDAgMGAwYD/AIGA3QCBQN0AnQCdAJyAnACcAJxAnACcQJxAnECMwANAg0CCwIKAgoCUAEKAuEA4QDmAOAAqAE/BD8EQgQ/BEIEqASjBKMEowSkBKMEowSmBKEEBwVuAgcFBQVsAgsCCwILAgsCCgJaBVQFUQVWBagBpgGmAaYBPwQ9BD0EOQRCBKEEqASjBKMEpgShBKEEpgSdBAcFBwUHBQcFbAJsAgsCCwILAgoCVAVUBVEFUQVUBaYBpQGmAT8EPwRCBEIEPwSmBKYEpgSkBKQEoQShBKYEoQSjBAcFBwUHBWwCbAJsAgsCCwIKAlQFVAVRBVEFUQWoAaYBpgFCBD8EQgRCBEIEpgSmBKYEpwSkBKEEoQShBGwFbAIHBQcFBwVsAmwCbAILAgsCCAJaBVYFUQVRBagBSgWmAagBQgQ/BEIEQgRCBKYEpgSjBKMEpAShBKEEoQShBAcFBwUHBQcFbAJsAmwCCwIKAggCWgVWBVEFUQWoAVQFqQGoAUIE3AM/BEIE3wOmBKYEowSjBKQEoQShBKEEBwUHBQcFBwUHBWwCBQULAgsCVgUKAlYFVgVRBVEFUQVRBakBpQHbA9sD2wPfA94DQgTgA6QEowSkBKEEbAWhBG4CbgIHBQcFBwUHBWwCDQILAg0CCAJWBVEFVgVRBVEFSgWlAaYB2wPbA94D3gPeA3sDQgSkBKQEpAShBAcFBwUHBQcFBwUHBQcFBwVsAg0CCgJWBVYFVgVRBVEFVAVRBaUBqAGpAd4D3APeA94D3gPcA3sDQgSkBJ0EoQRGAHwBbAJGAAcFBwUHBQcFbAINAgoCVgUKAlYFUQVRBVQFpQGlAaUBOAXcA9cD3APeA9sDewN7A94DRgBJAEkASQB8AXwBRgAHBQcFEAJsAhACAwVWBVYFUQVWBVEFUQVWBaUBpAGlAakB2wPZA9wD3AN7A94D3gN7A0IAfAFHAEcAfAFJAGcFZwUHBRACbAJoBQMFVgVWBVYFUQVRBVYFVgWlAVYFpQGpAd4D1wPeA9wD3gN7A0kA1ANGAEcARwBHAD8APwA/AD8ABwUHBWwCYAVWBQgCVgVRBVEFUQVWBVEFpgGkAaUBqQHUA9cD3gPZA9cDFgNCANcDQgBGAEYARgBGAEIAPwA/AAcFBwVgBWgFBwVWBVYFVAVRBVEFVgVRBVEFqQGlAVYF1wN7A9gD1wPVA9QD1APUA0YAQgBCAEIAQgBCAEIAPwBCAAcFBwVoBVEFVgVWBVEFUQVRBVYFUQVRBakBgwBWBXsDdwN3A3cDEQN3A3cD1ANCAEIAQgBCAEIAQgBCAD8APwAHBQcFBwVoBVYFVgVRBVEFUQVRBX0ApQGCAIMANAURAxEDegN7AxEDEQPLA9UDdwM/AEIAQgBCAEIAPQA9ADgABwUHBT8AVgVWBVEFUQVRBVEFUQVWBYMAggB9AH4AdwN3AxEDewN7A3sDBgMFAz8APQA/AEIAQgA/AD0APQA8AD0APQAHBWkBVgVRBVEFUQVRBVEFfQB9AH0AfQB6AAYDDQMPAw8DDwMGAwYD2APYA0IAQgA4AD0APQA9AD0APAA8AHMBPQBWBWkBXwFfAVEFUQVRBXoAfQB9AH0AegANAw0DDwMGAw0DBgMGAwYDBgPUAzgAOABCADgAOAA4ADgAOAA4ADgAXgFeAVUBVgFWAVQBXwF6AH0AeQB6AHoADQMGAw8DBgMRAwYDBgMGAwYDBgM9AD0APQA4ADgAOAA4ADgAOAA4ADgAXwFeAVUBVQFUAVYBegB6AHkAfQB6AA0DDQMNAwYDBgMGAwYDBgMGAwYDBgMGA1QBPAA4ADgAOAA4ADgAOABfAV4BVQFVAVUBVAFeAVUBegB5AHoAegANAwYDBgMGAwYDBQMGAwYDBgMGAwYDMwBzATgAPAA8ADgAOAA4ADgAVQFVAVUBVAFVAVQBVQFVAXoAeAB1AHoACAMGAwYDBgMGAwYDBgMGAwYDBgMGAwYDMwAzAHMBOAA4ADgAOABfAVQBVQFVAVYBVAFUAVABVAF6AHgA4QDfAAYDCAMGAwYDBgMGAwYDBgMGAwYDBgNzAXMBOAA8ADgAMwA4ADMAMwBfAVUBVQFVAVQBUAFUAVABegDfAN8A3gAFAwYDAwMGAwYDBgMGAwYDBgMGAwYDBgMzADwAOAAzADMAOAAzADgAMwBVAVUBVgFUAU4BVAFQAVAB3wDfAN8AAgMCAwIDBQMFAwIDAgMGAwYDBgMGA3ACcQJxAjMAMwA4ADMAMwAzADgADQJVAVQBVAFOAVQBTgFUAd0A3wDhAAIDBgMCAwIDBgMCAwYDCAMCAwYDcAJxAnECcQJxAnECOAAzADMAMwAzAFUBVQFUAVQBUAFUAVQB3wDdAN8A3wACAwUDAgMCAwYDBgMCAwIDAgN3AnYCcAJxAnECcQJxAjMAMwAzADMAMwBVAVUBVAFUAVABVAFUAeEA3gDfAN8AAgMCAwUDAgMCAwIDBgMCAwIDdgJwAnACcQJxAnECcQJxAjMAMwAzAAoCVQENAg0CVAFQAVQBdQDfAN8A3wDfAAYDBQMFAwIDAgMCAwYDAgMCA3ECdgJyAnACcQJxAnECcQJxAjMAVQFVAQsCCwIKAlQBUAEIAlQB3wDfAN8A2QACAwUDAgMCAwIDBQP8AnYCdAJ0AnYCdgJxAnYCcQJxAnECcAJxAlUBCwILAgsCCgIFAlABBgIIAkYB3wDdAN8AAgMCA/ICAgP8AgUD/AJ0AnQCdgJ2AnACcAJwAnECcAJuAnECCwILAgsCCwILAgoCCAIFAlAB4QDZAN0A3QCmAT0EOwQ9BDQEqASmBKMEowSkBKYEoQSfBJ8EowShBAcFAwUFBWwCAwULAgsCCwIJAggCUQVWBVAFSgWlAaYBpQE/BDsEPQQ/BDQEpgSjBKMEoQShBKEEnwSmBJ0EowQDBQcFBQVsAmkCCwILAgsCCQJUBQoCVgVQBVAFpgGkAaUBQgQ/BDQEPwQ/BKYEpgSmBKYEoQShBKEEnwQHBQcFBwUHBQUFbAJsAmwCCwILAlQFVAVUBVQFUAVQBUYFpAGlATsEOwQ/BD8EPwSmBKMEpgShBKEEoQShBAcFowQHBQcFBwUFBWwCbAINAgsCCwJUBVEFCgJUBVAFUAVGBaYBpQE/BD8EPwTgA+ADpgSmBJ0EowSjBKEEoQSdBAMFAwUHBQcFBQVsAmwCAwVgBQoCVAVUBQoCVAVQBVAFpgGmAaUBPwTZA94D3gPeA6MEpgSjBJ8EoQSdBKYEnQSdBAcFBwUHBQUFbAJsAmwCCgJUBQsCVAVWBVQFUAVQBVAFpgGkAdsD2wPfA94D1QNCBKYEoQQHBZ0EoQSdBJ0EBwUHBQcFBwVsAmwCbAJgBQoCCwJgBVQFVAVWBVAFUAVQBaYBpAHXA9sD3gPVA9UD3wPXA9cDoQSkBKEEoQRsBQcFBwUHBQUFBwVsAgMF+QQKAmAFYAVQBVQFVgVRBVAFUAVKBaQB2QPeA94D3wPeA9cD3gPXA94DRgBJAJ0EBwUHBQUFBwUDBWwCBwUDBQMFAwVgBVYFVgVWBVEFUAVQBVAFpAGkAdkD1wPZA94D3gPeA3sD3AOhBEkAfAFJAEkAPwAHBQcFBwUHBQcFAwUDBQsCYAUKAlYFVgVRBQoCVgWkAaQBOAXZA9kD3gPeA9cD3gPeA9wDQgBJAEIASQBJAEIAPwBsAgcFBQUHBWwCAwVgBVYFVgVRBVYFUQVWBVYFUAWkATMF1wPXA9cD3APeA9cD3gNCAEIAoQRHAEkAQgA/AD8APwBsAmwCbAJsAgMFCwJWBVYFUQVRBVYFVgVWBVAFpAE4BdkDzgPVA9UDFgPeA9UD1QNGAEIAQgBGAEIAPwA/AAcFBwVCAFYFbAIDBVYFVgVRBVEFUQVWBVEFVgU4BTgFOAXXA9cD1wPXA9cDFgPOA8sD3ANCAEYARwBGAD8APwA9AD0ABwVWBWgFAwVWBVYFVAVRBVEFVgWcAYMAgwA4BTgF1wPXAxED1QPUA9UD1wPLA8sDQgA9AEYARgA9AD8APwA9AEIABwVoBQMFVgVRBVEFUQVWBVEFUQVRBYMAfAA4BQ0DEQMRAxEDywPLAxEDywMRA0IAQgA4AD8AQgA9AD0APQA9AD0AVgVgBVEFUQVRBVEFUQVWBaUBUQV9AIMANAUNA9cDDQPKA8oDEQMRAw0DDQM9AD8APQA9AD0APQA9AD0APQA4AD0AUQU9AFEFUQVRBVEFnAGlAX0AggCCAHoAdQMMAwYDygN7AwYD2AMFA9QDywM9AD0APQA9AD0APQA9ADgAOAAHBT0AXgE8AFEFUQVRBX0AfQB9AIIAggB5AA0DDQMNAw0DDQPYAwUDBQPVAz8AOAA4ADgAOAA4AD0AOAA4ADgAOABVAVEFVgFRBVEFUQVOAV8BUAF9AHkAegAMAwYDDwMPAwUDBgMGAwYDBgMGAzgAwAM9ADgAPQA4ADwAOAA4ADgAVQFeAU4BVQFUAVYBVgFeAXoAeAB9AHoADAMGAwYDBgMGAwUDBgMGAwYDBgMGAz0APQA4ADgAOAA4ADgAOAA4ADwAXwFeAV4BVgFUAV4BUAF5AHgAeAB4AAgDBgMGAwYDBgMGAwYDBgMFAwYDBgM4ADMAOAA4AFQBPAA4ADMAOAAzAF8BVQFUAVYBUAFUAXoAegB4AHgAeAAGAwYDBgMGAwYDBgMGAwYDBgMGAwYDcwEzADMAMwA4ADwAMwAzADgAMgBfAVUBVAFQAVABVAFVAVQBeAB4AN8ABgMCAwYDBgMGAwYDBgMGAwYDBgMGAwYDMwAzADMAOAAzADMAMwAzADMAOABVAVQBUAFQAVQBUAFeAXgA3gDdAAIDBgMCAwYDBgMGAwYDBgMGAwYDBgMGA3ECcQI4ADMAMwAzADMAMwAyAF4BVQFUAVUBUAFUAVABeAB4AN0A3QACAwYDBQMFAwUDBQMGAwYDBgMGAwYDBgM8AHECMwAzADMAMwAzADMAMwBeAVQBVAFQAVABUAFUAXgA4ADfAN0AAgMCAwUDAgMFAwIDBQMGAwYDBgNxAnACcQJxAnECMwAzADgAMwAzADMAXgFUAVQBTgFQAVABTgFUAeAA3wDdAAIDAgMFAwIDBgMCAwIDAgMGA3YCcQJwAnECcQJxAnECMwBwAjMAMwAzACwAVAFUAU4BUAFQAVABUAHgAN0A2QACAwIDAgMCAwIDBgMGAwIDcAJwAnACcQJ2AnECcQJxAjMAMwAzADIAVQFQAVQBVAFQAVABUAFUAd0A3QDdANkAAgMCAwIDAgP8AgIDAgMCA3ACdgJwAnECdgJ2AnECcQJxAjMAMwAzAFUBVQFUAQkCCQJQAQQC3gDdAN0A3QDZAAIDAgMCA/wCAgMCA/IC8gJ2AnACcAJxAnECcQJxAnECcQIzADMACwILAgsCCwIJAggCUAHdAEYB2QDdAN0A2QACAwIDAgPyAuQCAgMCA3QCdAJwAnQCcAJxAnECcQJwAnACbQIzAAsCCgILAgsCCQIIAggCBQIFAkYB3QDdAKUBOwQ4BDQEQgQ0BDQEowSgBKQEpASgBJ8EpgSmBJgEcQIFBWwCAwVpAmgCCwILAgoCCAIEAlYFCAJKBaQBpAGkATsEOwQ5BDQEOQQ4BKMEOASkBKMEowSjBKYEnASmBAcFBQUDBQMFAwVoAgsCCwIKAgoCVgVWBVEFSgVKBaQBpAE/BDQENAQ0BD8ENASjBKYEowSjBJ8EnQSdBJwEBwUHBQcFAwUDBQMFDQIIAgoCCgJUBVYFVgVKBUoFSgWkAaQBPwQ/BD8ENAQ0BKMEoQSdBJ0EnQSdBKMEnQSdBAUFBwUFBQMFBwVpAg0CCQIKAgoCVAVWBVAFUAVKBUoFpgGlAT8EOwQ/BD8EPwSjBKYEnQSfBKEEoQSdBJ0EbAUHBQcFBQVsAgcFBQUNAgoCVAVUBVQFUAVQBVAFSgVKBToFpQE/BD8EPwQ/BD8EnQSmBKMEnQShBJ0EnQSdBJwEkgQFBQUFAwUHBWwCCgIKAlAFVAVUBVAFVAVQBUoFSgVKBUYF2wPZA9cD3wPUA9cD4AOdBJ8EnwShBKEEnQQFBQcFkgQFBQMFBwVsAlQFCQJUBVYFUAUKAlAFSgVKBUoFSgU6BdkD2QPXA9UD1QPfA9QDnQSdBJ8EoQShBJ0EBwUHBQUFBwVsAmwCaQL5BGwCVAVWBVAFCgJUBaQBSgVGBZwBpAHcA9cD1wPfA9UD1QPeAwwD3gOkBKEEoQSdBAcFBQUFBQcFbAJsAgMFVgUKAlQFVgVQBVQFVAVRBUYFnAE4BTgF2APZA9cD2APUA9QDDAPUA50ERgDeAz8APwAFBYkEBQUDBWwCbAIDBQMFCgJUBQgCUAUKAlYFUQVUBUYFnAE4BdgD1wPXA9kD1QPUA9QDQgDYA0kAQgBHAIkEPwBCAGwCBQVsAmwCAwVsAgoCVgVUBVYFCgJUBVEFVgWcATgFOAXXA9UD1QPeA98D3wPUA9gD1QNHAEcARwA/AD8APwA/AGcFBQVsAgMFbAIKAlYF+QRWBQoCVgVRBVYFnAE4BUYF1QPYA9gD2APYA84DDQPLA98DRwBGAEYARgA/AD0ABwVsAgUFbAJsAmwCCgIKAlQFVgUKAlQFVgVWBZwBMwU4BdUD1QPVA9QDDAMMA84DzgN3A0IARwBGAEcAQgBCAEIABQVsAmwCbAJsAlYFCgJUBQQCCgJWBVYFUQWcATMFOAXVA9UD1APVA8sDEQMNA9QDQgA9AEYARgBGAEIAPQBCAD0AbAI9ADgAAwVWBVYFUQWcAVEFCgJWBVYFOAU4BTQFDAMMAwwDDQPKAw0DDQMNA8sDPwA9AD0APQA9ADgAPQA9AD0ABwU4AAMFVgVRBVEFUQVWBQoCVgUzBTgFMwUzBQwDDAMMA8oDygN7A8oDywNwAxEDPQA9AD0APQA9AD0APQA4AD0APwADBVEFUQVRBVEFUQVRBTMFMwUzBX4AegB1A9cDdQMNAwwD2APKA8sDywPLAz0APQA9ADgAPQA4AD0AOAA4AD8APQBRBVEFUQVRBVEFUQUzBTQFfAB0AHoAcwNzAwwDDwMNAwUDBgMFAwYDBQM9AD0APQA9AD0AOAA4ADgANQA4ADgAXgFfAVEFVgFRBXkAVAF4AHgAeQB4AAwDBgMNAwYDBQMFAwYDBgMGAwYDPQA4ADgAPQA4ADgAPQA4ADUAOAA4AF8BVQFOAXoAVAFWAXkAeAB5AHkAeAAMAwwDBQMFAwYDBgMGAwYDBQMGAwUDOAA4ADgAOAA4ADgAOAA1ADgAVAEzAF4BVQFUAU4BXgFeAXUAeAB5AHUACAMIAwUDDQMGAwYDBgMGAwYDBgMGAzgAOAA4ADMAMwA4ADMAMwAzADIAMwAyAFYBVAFOAVYBegBWAXgAeAB1AAYDBgMGAwYDBQMGAwYDBQMFAwUDBgM9ADgAOAA4ADMAOAAzADMAMwAzADMAXgFeAU4BTQFUAVQBegB1AHUAdQAFAwYDBQMGAwYDBgMGAwYDBgMFAwYDcwE4ADMAMwAzADMAMwAzADMAMgAzAF4BUAFVAU0BSwFUAXoAdQB1AHUAAgMFAwUDBgMGAwYDBgMGAwYDBgMGAzgAcQIzADMAMwAzADMAMwAzADMALABQAVUBUAFUAUsBVAF1AHUA3QDcAAIDBQMCAwUDBgMGAwYDBgMGA3ACBgM4AHECcQI4ADMAMwAzADMAMwAzACwAVQFVAVABVAFKAUsBdQB1ANwA2gAFAwUDAgMCAwYDBgMGAwYDBgMGAwYDcAIzAHECdgIzADMAMwAzADMAMwAsAEsBSwFQAVABSwFUAeAA4ADdANoAAgMCAwIDBgMGAwYDBgMGAwYDcAJ2AnYCcQJxAnECcQIzADMAMwAzADMASwFVAVQBUAFGAVABSwHgAN0A3QDZAAIDAgMCAwIDAgMCAwYDAgMGA3ECcAJ2AnECcQJxAnECMwAzADMAMwAzADMAVAFLAQQCUAFQAd8A2QDdAN0A3QACAwIDAgMCA/wC/AIGAwIDAgNwAnACcAJxAnECcQJxAjMALAAzADMAMwAzAFQBCQIIAt8A4ADZAN0A3QDdANkAAgMCA/ICAgMCAwID/AL8AnACcAJwAnACcQJxAnECcQIzADMAMwAzADMAMwAIAggCBAIFAggCBQLdAN0A3QDZAAIDAgMCA/IC/AICA/wC/AJwAnQCcAJwAnECcQJxAnECcQIzAGwCMwANAjIABQIKAgQCBAIIAgkC1gDZAN0ApAE5BDkEOQQ5BDQELwShBKEEoQSjBJ0EnQSfBJgEmASTBJ0EnQRsAgEFaAJsAgYCBgIEAgQCBQL/AQACRwWkAaQBOQQ0BDsENAQ0BDgEoQSdBKQEowShBJ0EnQSYBJgEmAQDBQMFBwUDBWgCZAIFAggCCAIEAgUCRwVKBUcFRgWkATkEOQQ5BDkENAQ0BKYEOASjBKAEowSjBJwEmAScBGwCBQUDBQMFAwUABQAFCgIGAggCBAIFAqQBSgVHBUYFoAE5BD8EPwQ5BDQENAQ0BKMEnQSgBJ0EmASdBJ0EnQSSBGwCBQUDBQMFaAIABfkEVAUEAgQCBQKkAUcFoAFGBZsBPwQ/BDkEPwQ/BKAEowSjBKQEowSdBJ0EnAScBAUFBwVsAgMFBwX5BPkE+QRUBVQFUAUEAqQBUAVGBaABRgVGBTQE2wM7BD8E1wPXA6YEnQSjBJ0EoQSdBKEEnASSBAcFbAIDBQcF+QT5BPkEVAVUBVQFBAJHBVAFRgWgAUYFOgXYA9kD2APUA9cD1wOdBJ0EnwSdBKMEnQSdBJ0EBwUHBWwCAwUHBQMF+QT5BFQFVAVUBVQFVgVQBUYFRgVGBToF2APZA9cD1APfA9UD1wPUA58E3gOhBAcFnQQHBQcFBwVsAmwCBwVsAvkEAwVUBVQFVAVWBVYFRgVGBUYFRgU4BdcD1QPXA9UD3wPeA9QDpgSdBJ0EoQShBAcFBQUHBQcFbAJsAmwCbAL5BAMFVAVUBUoFRgVWBUYFSgVGBUYFOAXXA9UD1wPXA9UD1APUA9QDnQRGAJ0ESQBGAAMFiQRsAgUFbAJWBWwCbAIDBQoCVAVWBVQFUAVRBUoFRgVGBTgF1wPVA9QD1APUA9QDDAPVA9UDnQRCAEYAAwU/AGwCBwUFBWwCbAL5BAMFAwX5BFQFVgVWBfYEUQU0BUYFRgU4BdUD1wPUA9QDywPLA9QD2APOA9QDRwBGAAcFPwA/AAcFbAJsAmwCAwX5BFQFVAVUBVQFVgVUBVAFNAVGBTgFOAXVA9UD1APYA9gDzgPUA9QD1APYA0YARgBCAD0ABwVCAAcFbAKCBAMFVAVUBVQFVAVUBZwBUAVQBZwBRgU4BTgF1APVA9UD2APVA84DzgPYA80D2ANGAEYAQgBCAD0ABQUHBQUFjgQDBVQFggRUBVQFVAWcAVAFUAUzBUYFOAVGBdQD1AMMA9UDywPYA9gDzgPYA0IARgBGADgAQgA9AD0ABwUFBY4EAwVUBVQFVAVUBVQFUQWcAVAFMwU4BTQFMwUMAwwDDAPUA8sDywPLA8sDywNCAD0ARgA/AD0APQA9AEIAOACCBFQF+QQDBfkEVgVWBVEFVgWmATkFMwV6ADMFDAMMAw0DywN1A3sDywPOA8sDywM9AD8APQA9AEIAPQA9ADgAPQBWBT8AVAVRBVYFnAFRBVEFMwUzBTMFdQB6AHUDDANzA3ADygPKA3ADDAMMAwUDPQA9AD0AOAA4ADgAPQA9AD0AOAA4AFQFMwBRBVEFUQVRBTMFeAAzBTQFdABwA3MDcwMGAwYDBgNwAwUDDAMGAz0APQA9AD0AOAA4AD0APQA1ADgAOAAzADUAUQVRBVQBMwV9AH0AeAB0AHgAcQMGAwYDBgMGAwYDwAPEAwYDwAPAA3MBPQA4ADgAOAA4ADMAOAAzADUAMwBRBU4BVgF5AHQANAV5AHkAeAB1AAwDDAMIAwYDBgMGAwYDbAMGA8ADBgM9ADgAOAA4ADgAOAAzADMAMwAzADMATgFOAVEFVAE0BV4BeQB1AHUAdQAFAwYDBQMGAwYDBQMGA/gCBgNmAwYDBgM4ADgAMwAzADMAMwAzADMAMwAzAF4BTgFUAU4BVAFOAXkAdQB4AHUABQMFAwUDBgMGAwYDBgMGA2YDBQMCAzgAMwA4ADMAMwAzADMAMwAzADMAMgAsAE4BSwFMAUsBeQB5AHUAdQB1AAMDBQMFAwUDBgMGAwYDBgMGA2YDoAM4ADgAMwAzADMAMwAzADMAMwAyADIATgFLAUsBTAFLAdoAdQB1AHUAdQACAwUDBQP8AgUDBgMGAwYDBgMGAwYDOAAzADgAMwAzADMAMwAzADMAMwAyADIASwFLAUwBSwFLAdoA2gDeANoAAgMCAwIDBQMFAwUDBgMGAwYDZgNxAnACcQIzADMAMwAzADMAMwAzADIAMwBVAUsBUAFLAUsBQAHaAN8A2gDZAPwCAgMCAwUDBQMFAwYDBgMCA/ICcQIzADMAMwB2AjMAMwAzADMAMwAyADIASwFLAUoBSwFLAUYB3QDdANkA2QACAwIDAgP8AgUDBQMGA+QCBgMzAHYCdgIzAHECdgIzADMAMwAzADMAMgAyAAQCSwFQAUsBSwFLAdoA3QDdANkAAgMCAwIDAgMFA/wC/ALkAuQCdgJ2AnYCcQJxAnECMwAzACwAMwAzADMAMgBLAUsBBgJKAUsBRgHdAN0A3QDZAAIDAgMCA/wC5AIGAwYD5AJ0AnACcAJxAnECcQJxAjMAMwAzADMAMwAzADIASwEEAgYCBQJGAUYB2gDdAN0A2AACA/ICAgP8AvwC8gIGA3ACcAJwAnECcAJxAnECcQIzADIAMgAzADMALAAyAAQCCAIGAgUCBQIFAt0AQAHZANgAAgMCAwID/AL8AuQC/AL8AnACcQJwAnECcQJxAnECMwBxAjIAMwBpAiwALAAIAgYCBgIEAgUCBQIAAtYA2QChATgEPwQ5BDQENAQ0BDQEnQShBJ0EnQSdBJwEnAScBJwEcAIBBQEFaAIABWgCZAIGAggCBAL/AQACPAVGBUYFoAE0BD8ENAQ0BDkENASmBKEEnQSdBKEEnQSdBJwEmASYBJgEmAQBBQAFaAIABWQC+QQEAgQC/wFHBUcFRwVGBaABNAQ0BDQEOQQ0BDQENAQ0BKMEowShBKMEowScBJgEkgQDBWwCaAIDBWgC/AT5BPkEAAIEAgACRwVHBUcFRgWbATkEPwQ5BD8ENAQ0BDQENAQ0BKEEoQSdBJwEmASdBJIEBwWSBAMF+QRoAvkE+QT5BAACBAIEAkcFRwVGBToFmwE/BD8EOQQ/BDQENAQ0BB4EowShBKEEnQQDBQMFAwUHBQcFbAIDBfkEaAL5BFQFVAUAAlEFBAJHBUcFmwE6BZwBNAQ0BNcDNAQeBDQEpgSfBKEEoQSjBJ0EnQQHBQMFBwUDBQcFAwUDBfkEaAJUBVQFAAIEAkoFRwWgAaABnAGbATQE1wPXA9UD1wPXA9cD1wOhBKEEoQQDBZ0EkgQFBWwCAwUHBQMFAwX5BPkEVAVUBQQCUQVKBUcFSgWbAZwBmwHYA9cD1QPUA9QDOwTXA9cD1wOhBKMElQQDBZ0EBQVsAgMFBQUHBfkEVAX5BPkEVAVUBVEFSgVKBTcFnAGcATgF1wPXA9gD1QPUA9QD3wPUA9QDmASdBKEEnQQFBQcFBwUDBQMFBwX5BPkE+QRUBVQFUQVUBUoFRwU3BZwBnAE4BdcD1QPVA9QD1APUA9QD1AOdBKQEjARGAIwEBQUHBQcFAwUFBQcFbAJUBfkEVAVUBZoBRgVGBTcFoAGcATgFOAXXA9cD1wPUA9QD1APVA9QD1AOkBEIARgADBY4EAwUDBQMFBQX5BIIEVAX5BFQFUAUEAlAFnAGcATMFnAE4BTgF1APUA9QD1APUA9QD1ANCANQD1APOA0IAQgA/AAMFQgADBQMFBQWCBFQFVAVUBVQFBAJGBZwBnAGcATgFMwU4BdQD1APUA9QD2APLA9cD2APOA9UDPQA9AD0APwADBUIAAwUDBYIEggT5BEYFVAVUBQQCOQU3BZwBMwUzBTgFMwXOA9UDzgPYA9QDzgPYA9gD2APXAz0APwADBUIAPwADBQMFAwWCBIIE+QRUBVQFVAUEApwBVgUzBTMFMwU4BTMFzgPNA8oD1APLA9gD2APYA9QDywNGAD0AQgA/AEIABQUDBQMFggSCBPkEVAVUBVQFnAGcATcFNwUzBTMFOAU0BdQD1QPKA9QDywPLA8sDzgPLA8sDPQA9AD8APQA9AAcFBwWCBIIE+QT5BPkEnAEKApwBUQU3BTMFNwUzBTMFMwVwA9QDdQPLA8sDywPKA3AD2AM9AD0APQA9AD0AOAADBQMFggQ9AD0A+QT5BAoCVAWcATQFLgU3BTMFMwV6ADMFcANwA3UDDANwA2cDywPKA8sDPwAFAz0AOAA9AD0APQA4ADUANQA/APkECgIzAAoCnAEqBS4FLgV0ADMFdQB1AHADcANzA3ADZwPKA3ADygPKAz8ABQM9AD0APQA9ADgAPQA4AD0APQD5BDUATgFRBZwBKgUzBTMFdQA0BXUAeABwAwUDBQNwAwIDBQNpAwYDBgMFA8ADPQA9AD0AOAA4ADgAOAA4AD0AMwA1ADMAdQBRBSoFXgF1AHUAeAB1AHUAcANwA3ADZgMFAwUDBgMGA8QDbAMCAz0AOAAzADgANQA4ADgAOAAyADIAMwAzAE4BVAFVAXUANAV5AHgAdQB0AGwDBQMFAwYDZgMFAwUDBQMGA2YD3gLeAjMAMwA4ADgAMwAzADMAMwAyADIAMwBOAU4BTgF5AF4BeQB1AHgAdABsAwUDBQMGAwUDBgMFAwUDBgMGAwIDcwEzADgAMwAzADMAMwAzADMAMgAsACwALABLAUsBVAF5AHUAdQB5AHUAAgMCAwUDBgMGAwYD+AIGAwUDBgMzAAIDMwAzADMAMwAzADMAMwAzADIALAAyAEsBSwFMAUoBSwFLAXUAcAB1AAIDAgMFAwIDAgMGAwYDBgMGAwYDMwAzADMAMwA4ADMAMwAzADMAMwAyACwALABLAUsBTAFKAUoBRgF1AHUA2QACAwIDAgMCAwIDAgPkAvgCBgMCA3EC3gI4ADMAMwAzADMAMwAsADMAMgAsACwASwFLAUwBSgFKAW8A3QB1ANgAAgMCA/wCBgMCA+8CAgMCAwYDAgNxAvgCMwAzADMAMwAzADMAMwAzADIALAAsAEsBSwFGAUYBSgHdANgA2gDYAAIDAgMCAwIDAgPvAgIDAgMCAwID3QIzAHECMwAzADMAMwAzACwAMwAyACwALAAsAEYBRgFGAUYBRgHZANkA2AACAwIDAgP8AvwC8gLkAuQCAgMCA3ECcQIzAHECMwAzADMAMwAzADMAMgApACwALABGAUYBRgFGAWoAbgDYANgAAgPyAvIC/AIFAwUDAgPkAuQCcAJxAnYCcQJxAnYCdgIzADMAMwAyACwAMgBLAUsBBQIEAkYBRgHaAN0A2gDaAAID8gICA/IC8gLyAgUD8gJwAnACcAJ2AtYC1gLWAjMAMgAzADMAMgAsADMACAIEAggCBAIEAhUARgHaANYA2QD4AvICAgP8AvICBQMFA/ICAgMGA9YCcQJwAtYCcQJxAjMAMwAzADIAaAIsAAQCRgEIAgQC/wEAAhUA2gDaAKABNAQ0BDQENAQ0BDkELwSkBKMEnQScBJ8EnASYBJgElQSVBGgCAAVoAmgC/ARkAmgCBAIAAv4BAAKcATwFoAE8BTQELwQ0BDQELwQ0BDQENASdBKMEowScBJwEmASYBJgEkgRoAvkEaAL8BPwE+QRkAmQCAAIAAgACRwU8BTwFOgU0BDQENAQ/BDQENAQ0BDQEnQSjBJ0ElgSYBJgElQSSBJIEAAVoAvwE/AT8BPkEZAJkAgAC/wFHBUcFPAU6BTwFNAQ0BDQENAQ0BDQENAQ0BKMEnQScBKMEnQSYBJIEkgSSBAMFZAL8BPwE+QT5BPkEZAIAAgACSgWkATwFOgWcATQENAQ0BD8ENAQvBC8EnQSdBJ0EowScBKEEmASSBAUFkgQFBWQC+QT8BPkE/ARkAgAC/gH/ATwFpAGcAToFnAE0BDQE1QPXA9cD1APUA50EnQShBKEEnQSdBJ0EkgQHBQcFkgSMBPkE9gT5BPwEZAIEAgUC/wFHBZwBOgU6BZwBNAQ0BNcDNATUAy8EoQShBJ0EnASdBKEEBwUHBQcFkgQDBQUFjAT5BPwE+QT8BPkEZAIAAv4BRwU3BToFOgU4BTQE1wPVA9UDNATXA9QD1AOcBKEEoQSdBJ0EnQQHBZIEBQUDBfkE+QT5BFQF/ARUBVYF/wFQBZwBNwU3BZwBNwXXA9UD1QPVA98D1APUA9QD1wOhBJ0EjASMBAUFBQUHBY4EAwX5BPkE+QT5BPwE+QQEAv8BNwWcATcFNQWcAZwB1QPVA9UDzQPNA9QDzQPUA9QDnQSdBEYAjAQDBYkEiQQHBWQC+QT5BFQF+QT8BPkEBAL/ATwFnAE5BZwBnAGcAdQD1QPXA9cD1APUA9UD1QPUA9QDjAQEBIwEBwWJBAMFjgSJBPkE+QSJBPkE/AQEAgQCNwU8BTcFOQUzBZwBMwXVA9UDzgPOA8sD1APUA9QD1APLA9QDBASJBAcFBwWMBAMFjgQDBWwCiQT5BEYF/ARUBVkCOQU3BTcFMwUzBTMF1APLA9kD1wPOA9QD1APOA84DzgNHAD0AAwUDBT8AjASOBIgEjAT5BPkE+QRUBVQFBAJkAjwFNwU3BTcFnAEzBdAD0APLA80D2APOA84DzgPOA80DAwWJBEIAQgADBY4EAwWIBPkE+QT5BPkEVAVUBWQCWQI3BTcFNwU3BTgFMwXNA8sDywPLA84DzgPOA9gDywPNAwQEywNCAD0APQADBT0AAwWMBPkE+QT5BPkEPAUEAjQFNAU3BTcFNwUwBTQFzQPKA8sDxgPKA8oDywPKA8sDywMEBD0APwA9AD0ABQUDBQUF+QRjAmgF+QRUBZwBNAU0BTQFNwU3BTQFNAUzBcQDdQPLA84DcAPLA8sDcAPNA80DPQA9AD0APQA9AAUFBwWCBFQFYwJoBT8AnAGcATQFNAU0BTcFNwU0BTMFLgVwA3UDywNwA3ADcANwA3ADzgPLAwUDPQA9AD0APQCMBD0ANQCCBGMC+QQ9AC4FnAEuBTQFNwUzBS4FLgU0BS4FcANsA3ADaQNwA3ADaQNwAwUDygNmAwUDPQA4ADgAOAA4ADgANQAyADUAMwB1AGoEMwUzBS4FMwV0ACoFNAUuBWwDcANwA3ADAgPEA3ADBQMGA2wDBgOgAz0APQA9ADgAMwA4ADgAPQAzADUAUQUtBU4BNAUzBS4FKgU0BXgAdQBsA3ADBQMFAwIDxAMFAwUDBQNsAwYDoAOcAzMAOAA4ADgAOAA4ADIAMgAzADMAMwAyAEsBdQA0BTQFeAB1AHUAbANsA2cDBQNpA2wDBQNsA2wDBgMGAzMAMwAzADMAMwA4ADgAMgAyADIALAAsADIATgFVAXkAbwAuBXAAdQByAAIDAgNpAwIDBQMFAwUDZgMFAwIDZwPeAnMBMwAzADMAMwAzADMAMwAzACwALABLAUsBXgFUAUoBXgF1AHUAcgACAwIDBQNpA2cDBgMGAwYDBgNmA94CMwCgAzMAMwAyADMAMwAzACwALAAsACwASwFLAUwBRgFvAG8AbwB1AHQAAgMCAwIDZwMGAwYD+AIGAwYD+AJnA5wDMwAzADMAMwAzADMAMwAsACwALAAsAEsBSwFGAUYBRgFvAHUAdQB1APwC/AL8AgUDAgMCAwIDAgMCA/gCZwOgAzMAMwAzADMAMwAzACwALAAyACwALABLASwARgFGAUYBQAF1ANkA1gD8AgIDAgMCA+8CBgMCAwID3gIGA2cDpAOkAzMAMwAzADMALAAsADMALAApACwALAAsAEYBRgFGAUYB1gDWANYAAgP8AgIDAgPyAgIDAgPyAt4C8gLeAt4CMwAzADMAMwAzACwALAAyACwAKQApAEYBRgFGAUYBRgFGAdkA1gDWAPIC/ALyAgIDAgMCA/ICBgMGA9YCcAJwAnECMwAsADMAMwAsACwALAAyACwAKQBGAUYBRgFGAUYBbwDWANYA1ADyAvIC8gL8AuQCAgMCA/IC8gICAwID8gJxAiwALAAsACwALAAzACwAMgAzACwAKQBGAQICRgFGAUAB2QDWANQAAgPyAvIC/ALyAgIDAgPeAvIC1gLcAnEC1gIzANYCLAAsADMAMwAsADIAKQApAAgCBQICAgACRgFGAdkA1gDWAAID8gLyAvIC8gLvAvIC8gLyAvIC1gJBA9YC1gLWAiwALAAzADMAMwApAGYCCAIIAgICAAIAAgACAALLANkAngExBC8ENAQvBC8EOQQvBKMEnQSYBJwEnASVBJYElQSVBJUEbAKJBGgC+QT5BPkEZAL5BP8BAAIAAgACpAGcAZwBLgQvBC8ELwQvBDQENAQ0BJ0EnQSYBJUElQSYBJMEkgSSBI4EaAJoAvkE+QT5BPwE/AQAAgACAAIAAvoBPAWcATQEPwQ/BC8ELwQ0BDQEnQScBKMEmASYBJUEnQSSBJIElQSSBGgC+QT5BPkE+QRkAgACAAL/AQACAAI5BTwFOQU0BDQENAQvBC8ENAQvBB4EnASjBJwEmASVBJUElQSSBJIEkgT5BPkEAAX5BPkE+QQEAgAC/wEAAkcFOQU5BTgFNAQ0BC8ELwQvBC8ELwSdBJ0EnQSTBJMElQSSBJIEkgSSBIwE+QT5BAAFZAL5BGQC/wH/Af8BPAU8BTkFOQU4BTQENAQ0BD8EHgQvBAsENASdBJwEoQScBJgEkgSSBJIEBQWOBPkEjgT5BPkE+QT5BAQCAAL/AUYFOQU8BTkFNwXbAzQENATXAz8E1QMvBKEEnAScBKEEnASMBJIEmAT5BI4EAwX5BI4E9gT5BPkEZAL2BPYERgWaATkFOQU3BTYFzgPXA9UD1QPOAygECwShBJ0EnQSdBIwEjAQDBQcFkgSJBI4EAwX5BIkE+QT5BGQC9gT2BDwFmgE5BTkFNwU3BcQD1wM0BNUD3wPXA9cD1APUA5gEnQSSBJ0EBwWOBIkEiQSOBAMF+QSJBPkEZAL5BPYE9gQ5BTkFNwU5BTcFNwXOA9QD1APNA9QD1APUA9QDmAShBIwEjAQFBQMFjgSJBI4EiQQDBYwE+QT5BPkEZAJkAvYEOQU5BTkFOQU3BTcF0APEA80DywPUA9QD1APLA8sDjATUAw0EAwWMBIwEjASOBIkE+QT5BPkE+QT5BFkCVgVGBfYEOQU3BTQFMwUzBdAD1QPNA8sDzgPYA9QDzgOcBAYEywMDBQQEjAQHBY4EjgSOBIwE+QT5BPkE+QQEAjwFZAKcAfYEMwU3BTMFMwXOA84D1APEA84DywPLA9QDBATNA0cABAQEBAQEjASMBIgEjASMBPkE+QT5BPkEPAVGBWQCnAEzBTQFNAU0BTMFzgPNA8QDzQPKA8EDwQPYA9gDzQPNAwQEBAQEBAQEiQSIBIwEjASMBPkERgVkAmQCnAFkAjcFNAU3BTkFLgUzBc0DzQPLA8sDzgPYA8oDzgPNA8sDzQMEBAQEBAQDBQMFiQRkAowEggT5BPkEYwJGBUYFNAWcATMFNwUzBTMFLgXEA8oDygPKA8oDywPKA8oDywPYAwAEBAQEBD0ABAQ9AIkEjASMBIIE+QT5BDwFKwNkAjQFMwU3BS4FNAUuBTQFxAPEA8QDcAPKA3ADywPKA8oDxAPEAwQEAgQ9AAAEPQBkAowEjASCBEYF+QRkApwBZAI0BTcFNwUuBS4FLgUuBcYDxAPEA8oDcANwA3ADygNnA8sDywMEBAQEPQA4AAAEjASMBIwEggRGBWMCPAVkAjQFLgU3BS4FLgU0BS4FLgXGA2wDxAPKA3ADcANpA2cDcAPLA84DAAQ9AAIEOACkAzgAOACMBDgAbAROATwFNAU1BS4FNAUuBS4FdQAsBS4FcANwA3MDxAPEA8ADZwNnAwUDBQOgA6ADpAP+A6QDMwA4ADgAOAA4ADMAMwAzAGoELQU1BTQFLgUuBXUALAUsBWYDZgNnA2cDaQNnA2cDZwMFAwUDoAOgA6ADpAOkAzgAOAA4ADgAOAAzADUAMwBvBCkAXAQ0BS4FLgUuBXUAdQBsA2kDaQNnA2kDbAMGA/gCBgNnAwYDMwCkA5wDOAAzADgAOAAzADMAMwApACgAKQBOATQFVQEuBS4FbwB1AHUAaQNpA2cDZwNpA2kDBgMGA2wDBgMCAzMA5AKcAwAEOAAyADgAMgAyADIAMwApACkAKQBVAUYBbwBvACQFbwBwAGkDaQNpAwIDaQMFA1YDBgMGAwYD3gKgA6ADoAMzADMAMgAzADMALAApACwAKQApAEYBRgFUAUsBVAHZAG8AcAACAwIDaQMCA/gCAgMCAwIDBgNnA2cDMwAzADMAMwAyADMALAAyACwALAAsACkAKQApAEYBRgFDAUEBRgFwAHAA+AICAwIDAgMCAwIDAgNdA2cD3gIGAwYDoAOcAzMA1gIzADMAMwAsACwALAApACwARgFGAUYBQwFBAXAA2QBqAPkC+AL8AvgCZwPvAgID3QJWA90C3gKgA6QDpAMzADMAMwAsADMALAAsACwAKQApACkARgFGAUYBQQFwAGoA1AD4AvwC8gLyAvICAgPvAvgCVgPeAgYD1gKkAzMAMwA6AzMAMwAsACwALAAsACkAKQApAEYBRgFGAW8AQQHWANQA8gLyAvIC8gLyAt4C8gLyAgYD3ALeAtQCOgPUAjoDLAAsACwAMwAzACwALAApACwAHgApAEYBRgEVAEAB0wDTAPgC8gLyAvIC8gICA+8C3gLcAvIC1gLcAnYC1AIzACkAMwAsACkAKQAsACwAKQApAEYBQQEAAkYBFQDSANMA1AD4AvIC8gLyAt4C8gLyAvIC8gLWAtwC1gLYAtYC2gIsACwALAAsACkALAAsACkAKQBGAQACAAIAAkAB0gDSANQA8gLyAvIC8gLyAgID8gLeAvIC1gLWAkED1gLWAtYC1gIzADMAKQApACwAKQBkAkYBRgEAAgACAAJAAUABRgGcAS8ELwQvBDQENAQ5BC8EowSdBJIEnASWBJgElgSTBJIElQSSBIkEiQRkAmQCZAL3BP8B/wH+Af4BAAJAAZsBmwEvBC4ELwQoBDQENAQeBJIEnASSBJgEmASWBJIEkgSTBJIEkgSJBGgCZAJkAmQC9wRiAv8B/wHtBAACPAWaAZwBLwQoBC8ELwQvBB4EHgSdBJwEnQSYBJUElgSSBJIEkgSOBIwEaAJkAmQC/ARkAvcE9gT/Af8B+gFAATwFnAE8BTQEKAQvBC8ENAQ0BDQEowQeBJgEkgSYBJUEkgSSBJIEjgSOBJIE/AT8BGICZAL3BPYEYgL2BP8BQAE8BTwFPAUoBC8ELwQ0BD8ENAQeBB4EnQSdBJUElQSVBJIEkgSJBI4EjgSOBPYE9gT3BPYE9gT2BGICYgI8BTwFPAU8BTwFNAQ0BDQELwTXA9cDLwQJBJ0EoQScBJgEmASSBIwEjgSOBI4EjASJBPkE9wT5BGQC9gT2BP8BAAKWATwFPAU3BS8ENAQ0BDQEKAQLBNcDCwSdBJwEnQSOBI4EjgSMBI4EjgSOBIkEiQT5BGQC+QRkAvYE9gQ5BTkFPAU5BTkFNwXOAzQENAQ0BBAEEAQLBAsECwSdBKEEjgSMBIwEiQSJBI4EjgSOBIkE+QT5BPkE/wH2BPYEOQX2BDkFOQU3BTUFNATXA9cDzgPUA84D1APUAwsEBASOBAYEAASMBIwEjASOBIwEjgSOBGQC+QT5BP8B9gRGBTkF9gT2BDcFNwU0Bc4DzgPOA84DzgPOA9QD1AMLBAQEBASOBI4EBgSMBIwEjgSMBI4EjgSJBPkEZAJZAvYE9gQ5BTgFNQUzBTQFMwXEA84DzgPEA9gD1wPLA9QD1AMEBAQEiQQEBIwEjASMBIgEjASMBI4EYwL5BGQCZAI5BTkFOQX2BDUFNwU0BTMF1APOA8sD1QPKA8oDywPLAwQEBgQGBAQEiQSJBIkEiQSOBIgEjASMBPkE/wFkAlkCWQI5BTkF9QE1BTMFNAUzBcsDzgPUA8YDygPXA8EDzgMEBMoDxAPKA4wEAgSJBIwEjASMBIwEjARUBWMCWQJjAjcFRgU0BfYEOAU0BTQFMwXOA9ADxgPOA8oDzQPLA84DBATLA8QDBAQEBAQEiQQEBAQEjASMBIkEYwJkAmQCZAL2BFsCOQU0BTQFOAU0BTMFywPLA84DzgPOA8oDywPNA80DzQMEBAQEBAQEBAAEBAQEBIkEjARjAowEYwJkAmMCRgWcATQF9gQ4BTQFNAUuBcQDxgPKA8oDygPKA8oDywPOA80DAAQEBAQEBAQEBD0ABASJBIwEYwIABGMCZAJjAkYF9gT2BDQFNAUuBS4FLgXEA8QDxAPKA8oDygPLA8oDzgPLAwQEAgQEBAQEAAQ4AAMFiQQABIkEAARjAmQCYwJGBWoENAUuBTQFLgUsBS4FxAPAA8oDygPKA8ADxAPKA84DywPLAwQEoAMCBAAEAAQABIkEiQRjAowEYwJkAjQFOQU0BTcFMwUuBS4FLAUqBcYDcAPEA8QDwANwA8QDxAPLA8sDywOgAwAEpAMABAAEAAQABIwEYwKMBGoEZAI0BWQENAUuBTMFNAUqBSwFLgVwA3ADxgPEA3ADaQNnA2cDAgOgA6ADoAMCBKADOAAABDgAOACJBDgAMgAyAGQCKQAuBTMFNAUzBSoFLAUuBSwFBgNpA2cDaQNnA2wDxANnAwIDpAOgA6ADpAOkA/4DOAD5AzgAMgAyAGoEMwBvBG8EagRqBFwENAUqBSwFKgUqBQYDaQNpA2cDaQNpA2kDBgMCA6QDpAOkA6QDpAOkA6QDOAAsADgAMwAyADMAHgApACkALAVuADMFJAUkBSwFJAVpA2kDaQMCA2kDBgMGAwYDAgMGA6QD5AKkAzkD/gOkAywALAAyADMAMwAsACwAKQAtBSoFbwBDASgFKgUkBXAAZwNnAwIDAgP4AgYDBgMGAwYD5ALkAqAD5AKgA6ADMwAsACwALAAzACwAKAApACgASwFhBEEBQQFBASgFbwBvAGkDaQNnAwID+AICAwYD+AIGAwYDoAOkA6ADoAMzADMAMwAsACwAMwAzACkAKQAoACkAQQFBAUEBQwHWAHAAbgD4AvgC+ALyAvgCAgNnA/gC3gLeAuQCoAOgA6ADnAPWAjMAKAAoADMAKQApACkAKQApAB4ARgFBAUEBcADWANYA+AL4AvICAgMCA/gCAgPdAt0CoAMGA6AD1gI6A9sC1gIzACgALAAsACkAKQApACkAKQAeAEEBQQFBAW8A1gDTAPgC8gLyAvgCAgMCAwIDAgPcAt4C3gLaAtYCPAM6AykAMwApACkAMwApACkAKQApACkARgFBAUEBQAHTANMA0wDyAu8C7wL4AmAD3gLyAvIC3gLeAt4C2gLaAjoDOgM6AykAMwAzADMAKQApACkAKQBGAR4ARgFAAUABQAFuANMA8gLyAlID5AICA+4C3gLeAtwC3AJBA9wC1gLUAtYCKQAzADMAMwApACkAKQApACkAHgBBAUYBRgFAAdMA0gDSAPgC8gLyAvIC4QLyAt4C8gLcAtwC3ALWAtYC1AI6AzwDMwAzADMAKQApACkAKQApACkARgH/AQACQAH+AdIAywDkAvICUgPyAvICAgPyAt4C3gLWAtYC1gLWAtQC1gIzACwALAApACkALAAsAEEBYwJGAf8B/wEAAkAB/gH+AZsBLgQuBC8EOQQ5BDkEOQQ5BJIEkgSSBJIEkgSSBJIEkgSSBJIEiQSVAywAZAJkAmIC9gTtBP8B/gH6AZoBmgGWARsEKAQvBC8ENAQ0BCgEkgSYBJgEkgSSBJUEkgSSBJIEjgSOBIkEiQSIBGQCZAJiAvYE9gT/Af8B/wFkAJoBlgEoBCgELwQoBC8EHgQeBDQEkgSYBJgEkgSWBJIEkgSSBIwEjgSOBGQCZAJkAmQCYgL2BPYE/wH+Af8BPAWaAZoBKAQoBCgENAQvBDQECQQLBB4ECQSTBIkElQSSBJIEkgSMBI4EjgSMBGICZAJiAmIC9gT2BP8B9gT/ATwFPAWaASgEKAQoBCgEKAQeBA0EDQQNBAkECwSYBI4EjgSMBIwEjASOBIwEggRiAmQCYgJiAvYE9gRbAgAC/wGWAZoBPAUoBCgEHgQoBC8ENAQLBAsECwQMBJwEkgSCBJUDkgSOBI4EiQSMBIIE9gT2BGICYgL2BP8BPAX2BP8BQAGaATkFDQQoBB4EKAQ0BA0ECwQLBAkEnAQLBIIEkgSMBI4EjASOBIkEjASOBIIE9gRiAmIC/wH/AVsC9gT/ATkFmgE5BQ0EKAQoBCgEDQQoBAsECQQJBAkEnAScBIwEjASMBIwEjgSJBIwEjgSJBPYEZAJkAvYE9gRbAv8B/wE8BTgFNQXLA84DzgPOA9gDzgMLBAsE1AMJBIwECQSMBIwEBwWJBIwEjgSMBI4E+QT2BGMCZAL2BFkCWwL2BDcFNwU4BTUFzgPOA84DzgPOA84DBAQLBAsECwQEBAQEjAQGBAYEjgSOBIwEjASOBIIE9gRkAmQC9gRZAjcF9QE3BTgFOQU0Bc4DzgPOA84DzgPOA84DzgPXAwQEBAQEBIwEjgSIBIwEjASMBIgEiQSCBPYEZAL2BDUFNwU3BTkFOAU0BTQFNAXOA8QDxAPEA84DzgPGA84DBAQEBAQEBAQEBAQEjASMBIwEjASIBIkEVAX2BGQCZAL2BDcFNwU1BTgFNAU0BTIFzgPEA9QD1APOA84DzgPGA8YDxAMEBAQEBAQCBIwEiASMBIwEjASJBGMC9gRkAisD9gQ3BTcFNQU4BTQFOQUwBcoDygPOA84DygPOA84DzgMEBAQEBAQEBAQEBASIBIkEjASMBIkEiQRjAvYEZAJkAjcFNwU3BTcFNQU0BS4FLgXEA8oDzgPKA8oDzQPNA8oDzQPNAwQEBAQEBAQEBASMBIwEjgQABIkEYwJjAmMCKwNGBTcFNwU0BTQFOAUuBS4FygPKA8QDzgPKA84DxAPEA84DBAQEBAQEBAQEBAQEiQSMBI4EAASJBGMCZAJjAisDKwM3BTQFNAU3BTQFLgUuBcQDxAPGA8oDygPOA8QDygPEAwAEBAQCBAIEAAQABAAEjASMBIwEjARvBGMCYwIrAzcFOQU1BTQFLQUsBS0FLAXAA8YDxAPEA8QDwAPEA3ADxAPOAwQEAgQCBAIEAAQABIwEjASMBIwEYwJjAlkCKwMtBTUFNQUsBS4FKgUsBSwFwANmA8QDwANwA8QDZwNnA6ADywPLA6QDAgQABAAEAAQCBIwEjASMBGMCbARjAjcFLQUtBTQFLgUuBSwFLAUsBcQDxAPGA6wDZwNnA2cDVgPEA6ADpAOgA6ADoAMABP4DjAQCBIwEagRjAv4DYQQtBS0FLQUuBS4FLgUpBSoFLAUGAwIDAgNnA2cDrAOsAwYDVgOgA6ADoAOkA/4DpAP+A4wEAgQzADIAMgBqBGoEagQtBS4FKgUqBSkFKgUqBSoFaQMCAwIDbANnA2cDrAOkA6QDpQOkA6QDoAOkA6ADoAMCBAIEOAA4ADIAZARhBMgEKgUtBSoFKgUqBSoFKgUlBWYDaQNpA2YDZwMGAwYDpAMGA6QD5AKgA6QDpAOkA6QDpAMyACwAMgBhBGoEKAApAGEELQUuBSkFKgUoBSoFJAVmA2cDAgNnAwIDAgMCA6MDBgPkAqQDoAOkA6ADoAMCBP4DLAAyADIAHgApACgAKQAeAGEEKgVuACgFKAUqBSIFZgNmA2kDAgMCA/gC3gJdAwYD5ALkAqQDoAOkA/wDoAP8AzIALAAzAB4AKQApAB4AHwAfAEYBRgEoBSgFKgVuAGYD+AJmA2YD+AJWAwID+AIGA94CoAOgA6ADoAOgA6ADLAApADMALAAsACkAKQAoAB8AKQBGAUABQAFBAXAAbgD4AvwC+AL4AgIDAgMCA2cD5AIGA54DoAOgA9YC1ALbApUDMgAzADMAKAApACkAKQAfAB4AQQFBAUABcABuANYA8gLyAvgC+ALvAvgC+AL4At0C3QIGA54D1gI5A9sC2wI6AzIAKQAzACgAKQApACgAHwAeAEABQAFAAUAB0gDSAPIC8gLyAu8C7wLeAu4C3gLcAt4C3gKeA9QCOgM6AykAKQAsACkAMwApACkAKQApAB8AHgBAAUABQAFAAdMA0gDyAvIC8gJTA1MD8gLeAt4C3ALcAtwC3ALWAtYC1gLUAjoDMwApADMAKQApAB4AKQAfAEEBQAH+AUAB/gFnANIA5ALyAlMDUgPeAt4C3gLyAtwC2wLbAtYC1gLUAtQC1ALVAjMAKQAzACwAKQAeAB4AHgAAAkYB/gFAARUAZwDSAOUC3gLyAvIC8gLyAt4C3ALcAtYC1gLWAtYC2ALUAtgC1AIpADMAKQAsAB4AKQAeAGICQAH/Af4BQAEVAGcAmgEoBC4EKAQoBCgEOQQeBDkEHgSSBJIEkgSSBJIElQSOBIwEjgQrA44ElQOOA44DYgJeAvAEWwL2AfoB+gGWAZYBKAQoBCgEKAQoBCgEHgQeBJgEkgSSBJIEkwSTBJIEkgSMBIwEjgSYAywDYwJiAmMCYgLwBFsCWwKaAfQBlgGWASgEKAQoBCgEKAQeBAsElQSSBJgEkgSTBJMEkgSSBIwEjASJBIwEiQSIBGICZAJjAvYE8ARbAv8BmgGWAZwBlgEoBCgEKAQoBCgELwQoBAkEmASWBJMEkgSSBIwE0gKOBIwEjASOBIkEYwJkAmQCYwL2BP8BWwJZApoB7ASWAZYBKAQoBCgEKAQNBJMECQQJBAwEkwSSBJIEggSVA5IEjgSMBIkEjASIBIIEZAJkAmMC8ATwBP8BWwL6AewE9QGWASgEKAQoBCgEEAQNBA0EDQQMBAkECQSJBIIEjgSOBI4EjASJBIwEiQSJBGICYwJjAvYE8AT/AVsC+gHsBDwFlgENBCgEKAQoBCgEDQQLBAkECwQJBA0ECQSJBJIEjASMBIwEiQSIBI4EiQRiAmMC4wTwBP8B9gRbAlsCPAUtATkFDQQoBCgEHgQNBAsECwQLBAkECwQNBAkECwSOBIwEjASMBIwEiASMBIkEYwJjAuMEYgL/AVkCWwL2BLwCOQU1BQ0E1APOA84DxAMLBAsECwQJBA0ECwQJBAkEBASMBIwEjASMBIwEjASMBGMCYwJZAvYE/wEnAwACWQI1BTUFOQXOA84DzgPOA84DzgMLBAsECwQGBAQECQQEBIwEjASMBIwEjASMBI4EiQRjAmMCZALjBFsCJwNZAuMENwU0BeMExAPOA8oDzgPOA84DBATOAwQEBgQIBAQEBAQEBIwEiASMBIwEjASMBG8EYwJjAmMCiAQ5BVsCkAE3BTcFNAU0Bc4DxAPEA8QDzgPOA84DxAMEBAYEBAQEBAQEBASMBIwEjASMBIwEjARjAmMCKwNjAlkCOQVZAjUFNwU3BTQFNAXOA8QDxAPOA84DzgPOA8YDBgQGBAQEBAQEBAQEBASMBIwEjASJBIwEYwJjAmMCKwNZAlkCNwU0BTQFNwU0BTQFywPOA84DygPOA84DzgPOAwQEBAQEBAQEBAQEBAQEiQSMBIwEjASMBGMCYwJjAisDKwM5BTcFNQU0BTQFNAUuBcQDxAPEA8oDzQPOA8oDBATNAwQEBAQEBAQEBASMBIwEjASMBH4EjARjAmMCYwIrAysDOQU3BTcFNQUuBS4FLQXGA8YDxAPOA8oDygPOA8oDxAMEBAQEBAQEBAAEAASMBIwEjARjAowEiQRjAmMCbAQ5BTcFLgUtBS4FLAUtBSwFxAPEA8QDxAPEA8QDygPKA8QDBAQABAQEAgSgAwIEiQSMBIwEjASMBGMCYwJjAjkFOQU0BS0FLQUuBSoFLAUqBcQDxAPEA8QDxAPEA8QDZwPEA6QDzgMCBKADoAMABAAEjAQCBGoEjARjAmwEbAQ5BWoELgU0BS4FLgUsBSoFKQXAA8ADwAPAA8QDxAPEA8QDAgSgA6QDoAMCBAAEAAQBBAIEAgRqBP4DYwJsBDkFYQRkBGEELgU0BS0FKgUqBSkFwAPEA8ADrAOsA3ADpANWAwIEoAOkA6QDoAOgAwAEAAQCBAAE+QP+A2MCbwTIBGEEYQRqBCwFLQUqBSoFKgUpBcADZgPEA8QDZwNnA2cDbAMCBFYDoAOkA6ADpAP+A/4D/AMCBIwEyARqBG8EagRqBGoELAVhBCoFLAUqBSoFJQVgAwIDAgNpA2cDVgNWA6QDpAOlA6QDoAOkA6QD/gOkA/4DAATIBCkA9gNhBGoEagRhBCIFKgUqBSQFKgUqBSQFaQMCA2cDZwNnA2ADowOjA6UDpAOgA6ADoAOkA6QDoAP+A/kDKQA4APQDagRqBGQEYQRhBCoFKgUqBSoFJAUkBWADYANnAwIDAgMCAwIDpAOkA6QDoAOgA6QDoAOgA6AD/AOVA2oEMwBhBCwAKABhBGEEYQRaBGEEJQUqBSQFIgVmA2cDZwMCAwIDAgMCA6QDpAOeA6ADoAOgA6QDoAOgA/wD/AMsAP4DKQAsACgAKAAeAB4ATwQqBR8FHwUiBSIFYAP4AgID+AL4AmcD3gLeAqQDoAOgA6ADoAOgA6ADoAOgA5QDLAApAB4ALAAoABUAHgAeAGEERgFAARUAbgBqAPgCZgNmA/gC+AL4AvgC3QIGA6ADoAPbAqADOQOcA9QCKQCZA5UDHgAeACkAKAAeAB4AHgBAAWcAOgFnANYAHgXvAu8CXAP4AgID+ALaAuQCpAPeAp4DngPbAqADOQPUAtQCKQAeAB4AHgApAB4AHgAeAB4AHgBBARUAGgUeBc4A8gLyAu8C7gJTA+QC3gLeAt4C3gLeAtoC1AI8AzoDoAM6AzoDHgAeACkAHwAeAB4AHgAeABgAGAA3ATcBzgDSAO8C8gLyAvIC5gJSA94C3gLcAtwC3ALcAtYC1gLVAtUClQMzAJQDYQQeAB8AHwAYAB4AGADOADgBFQDLAM4A0gDlAlMD8gLyAlID3gLeAlMD3ALcAtwC1gLVAtQC2AI8AzoDlAOVA5QDHgAfAB8AKAAeABUAQAH6ARUAywDLAMsA5QJTA/ICUgNTA1MD8gI+A94C3ALWAtQC2gLYAtYC1ALUApUDlAOVAx4AGAAeACgA/gFeAv4B+gH6AWcAywCWASUEKAQoBCgEKAQeBB4EHgSSBIkEkgSTBJIEkgSSBNICiQSIBIkElQPMAo4D8ATKAl4C7ATtBFsC9wFkAJMBkwElBCgEKAQoBB4EHgQeBJUEDgSSBJIEkgSSBJMEjgTSAokEiQSIBIgEiATMAsgCygJeAu0E7QRZAlsCZABkAJMBJQQoBCgEHgQoBB4EHgQNBJwEkgSSBIkEiQSVA44EiQSJBIgEiASJBIgEiARiAmICYgLtBO0EWQLsBPUBLQGTASgEKAQoBB4EEAQLBBAEDAQLBJYElgSCBIkElQOCBIkEiQSJBI4EiQQsA2ICYgJjAv8BXgJbAlkC7AT1AS0BkwEoBCgEKAQNBA0ECwQLBAsEDAQJBJIEkgSCBJUDggSJBIwEiASIBIkELANyBOMEYwJeAlkCWwJbAuwE9QEtAS0BDQQoBCgEDQQoBAsECwQJBAwECwQLBJYEggSJBIkEiQSMBIwEiASJBIIEcgTjBPYE/wFZAlsCWQJZAvUBLQGQAQ0EDQQoBA0ECwQLBA0EDQQLBAsECQQJBIIEggSJBIgEjASIBIgEggSJBPYEYwL2BFsCWQJZAlsCkAH1ATkFlgENBA0ECwQeBAsECwQLBA0ECQQGBAkECQSCBIIEjASMBIwEiASIBIgEiQTjBGMCZAJZAlkC4wTjBJAB4wQ3BTcFzgMNBM4DxgMNBAsECwQLBAkECwQJBAQEBASSBIkEjASMBIwEiATMAokEiARjAvYE9gRZAlkCWQLjBPUBkAE3BcEDzgMNBMYDzgMEBAsECQQJBAkECQQGBAAEBASMBIwEjASMBIgEjARvBGMCggRwBFkCWQLjBFkC4wT1AdEEkAHOA84DxAPGA84DCwQEBAkEBAQGBAQEBgQEBIwEjASMBIwEjASJBIwEbwRjAuwE9gTjBFkC4wTRBOME4wQ3BTcFywPKA8oDwQPKA8YDCwQHBAQEBAQEBAYEAAQEBI4EjgSMBIwEiQSMBG8EYwJjAvYEWQJZApAB4wTQBNUENwU0Bc4DygPKA8YDxgPOA84DBAQGBAQEBAQGBAYEAAQEBIwEjASMBIwEggTsBOwEKwNZAmwEWQI0BdAE4wTjBDQFNAXBA8YDygPLA8EDzQPNA6wDBAQEBAQEBAQEBIwEBgSJBIwEjASMBH4EfgRjAokEbARZAlkCagRvBDQFNAU0BTQFwQPGA8EDzgPBA84DzgMEBM4DBAQCBAAEBAQCBAAEAASMBIwEAASJBGwEfgRZAmwEbwRZAtUENwXVBDQFLQU0BcYDxgPBA8YDwQPKA84DygMEBAQEBAQEBAAEAgQABAAEzAI1A4kEYwJvBGwEbQRvBDkFagRvBDQFNAUqBS4FxQTBA8QDwQPBA8QDxAPEA8oDrAMEBAQEAgQCBAIEAAQCBAIEjAQABGwEagRsBH4EKwMrA2oE0AQ0BTQFKgUsBSwFwAPGA8QDxAPEA8QDugPEA6wDpAOkAwIEoAMCBAAEAAQCBAAEAARqBGoEbwRsBGQEbARqBC4FxgQ0BSwFLAUoBboDwAPEA8QDugPEA8QDxAOjA6QDpAMCBKQDoAMABAIEAgQABGoEbQRqBG8EbQRkBGAEYQRhBCwFKQUsBSoFKAXBA8EDxANnA6wDtwO6A7cDpQOkAwIEoAOgAwIEAAQABAIE/QMCBP4DbARtBGoEyARtBGoEYQQqBSQFLAUsBSUFugO6A7oDugNgA2cDugOkA6MDoAOgA/4D/gP+A/4DAAT+A/4DAgRtBAIEbARkBGoEYQRhBCkFKgUpBSoFJAUkBWADugNnA2cDAgNWA6MDpAOkA6ADoAOgA6AD/gOkAwIE+AP8A/4DagRhBGoEYQRhBGEEYQRgBCoFKgUlBSQFIgWpA2cDZwNnA2ADqAOkA6QDpQOkA6ADoAOgA6QDoAOdA/gD/gP+A5UDYQRhBGEEYQRhBGEEWgQqBSoFJAUkBSIFYANgA2ADYANWA2cDXQNdA6QDpAOgA6ADpAOgA50D/AP8A/wDYQT0A2EEYQRhBGEEYQRhBGEEKgUqBSQFIgUfBWADYAOqA2ADAgNWA1YDowOlA6QDoAOgA6MDoAOgA6AD/AOVA5QD9AMpAGEEKABhBB4AYQRhBCoFJQUkBR8FGgX8AmADYANWA2AD+AKqA94CVgOeA6QDoAOgA6ADoAPUApUDlAOUA5QDYQQpACgAHgBhBB4ATwQYACUFGgVAAR4FXQNdA1wDVgNWA/gCVgPeAp4DOgOgAzkDOgOgA6AD1AKVA5UDKQCUAx4AKQBhBO4DHgAYABgAFQAfBWcAIgVnAPgC8gJcA1YDVgPkAt0C3gLeAgID2gLaAtsCngOVA9QClQOZAykAlQMoABgAKAAeABgAHgAYAFYEOAE3AWcAZwBcA1wDXAPuAlMD3gLeAt4C3gLcAtsC2wLUAjwD1QLbAtUCPAOUA5UDlQOSA2EEHgAYABgAFQA4ATgBNwE3AcsA5QLkAvIC7gLkAuAC3gLeAtwC2gLeAp4DngM8A9gCPAPVAjwDlAOVA5QDHwApABgAGAAYABUAOAEVADcBZwDLAO4CUwPmAuECUwPeAt4C3gLcAtwC2gLaAtQC1ALYAjwD1ALVApIDkgOUA5UDGAAYAOkDGAAVADgB9wE3AWcAywDlAuQC4QJSA1MD5ALeAtwC3AI+A9YC2gLaAtQC1ALUAtQClQOVA5gDlAOVA+kDGAAVABgAWwL2AfcBFQAaBZMBJAQeBB4EHgQeBB4EHgQOBAwElQSVBDYD0gKSBIkE0gKJBIgE0gKCBNAClQPIAsgCWwJbAlsC7ARZAvUB9AGRAR4EHgQoBCgEKAQeBB4EHgQOBA4EkgSSBNICjgSJBIkE0gKIBIIEzQKIBMoCyAJbAmMCWwJZAuwEWQL1AfQBkQElBB4EHgQoBAsEHgQMBAwECwSJBAsEiQTSAokEiASJBIkEiASIBIIELAPMAsgCyALjBFsCWQLsBFkCWQL0AZABGgQQBCgEKAQoBAsECwQLBAsEiQSJBIkElQOVA4IEiQSIBIgEiASCBIIEiARbAsgCKgNbAuwE4wRZAlkCLQGQARAEKAQNBA0EDQQNBAwECwQLBAsEiQTSAokEiQSVA4gEiASIBIgEggSCBIIELAMqA/YE9gTsBFkCWQJZAi0BkAEoBA0EDQQoBA0ECwQLBAsECwQLBAgEkgSJBDYDiQSIBIgEiASCBIIEggSCBIIELgNbAlkC7ATjBFkCkAEtAdUEDQQNBA0EDQQNBAoECwQLBAkECQQLBAkEggSJBIkEiASIBIgEiASCBIIEggRkAisDWQJZAuME4wRZAuMEvAKQAQ0EDQTOAwsEDQQLBAsECQQJBAkEBgQJBIwEiQSJBIgEiASIBIIEiASJBIIEZAJbAlkC4wTjBOMEWQLjBOMEkAENBA0EDQQLBAsECwQLBAkECQQEBAkEBAQEBIwEjAQ1A4gEjgSIBIIEiQSCBGMC7ATjBOME4wSQAeME4wTRBJABzgMNBA0EDQQNBAQECQQLBAkEBgQJBAYEBAQGBIwEiQSOBIgEjgSCBIkEbwRjAmwEWQJZAuMEkAHjBOME0QSQAc4DxAPEA8QDxgMLBAQEBAQIBAYEAgQCBAQEAASJBIkEjgSIBIgEiQSJBIkEbwRsBFkCWQKQAeME4wTjBNAENAXBA8sDxAPGA84DzQMNBAYEBAQJBAYEBgQABAQEAASOBI4EiQSIBIgEiQSCBGwEbARZAuME4wTjBOME4wTjBDQFxAPBA8QDygPBA80DxgMEBAQEBAQEBAQEBAQABAAEBASOBIkENQOCBIkEcARsBGwEbARZAs4E1QTVBOME4wQ0Bc4DxgPEA8QDwQPBA8EDBAQEBAQEBAQABAQEBAQEBAYEjgSJBIIEiQRsBGwEbwTOBGwEWQJqBNUEaATVBNUE1QTBA8YDxAPBA8EDwQPBAwQEBgQEBAQEAAQEBAQEAAQCBAEEiQTMAmoEbARjAm8EbwRtBGwEagRoBGgEzgQuBc4ExgPBA8YDxgPAA8oDxAMEBAYEBAQEBAAEAgQCBI4EAAQEBIkEbARtBG8EbARsBG0EagRoBGwE1QQ4BWQEzgTFBMADwAPAA8ADxAPEA8oDygOsAwIEAgQCBAIEAAQABP4DBAQABGoEbARvBGwEbARtBGoENwVkBG0E0ATIBMUELAXAA8ADwAPEA8QDxAO3A6wDpQMCBAIEAgQCBAIEAAQABP4D/AOJBGwEbARsBG0EbARqBGQEZATOBDQFNAUsBSwFwAPAA7cDxAPEA8QDxAPEA8QDpAMABAIEAgQCBAIEAgQABP4D/gOJBG8EagRqBGQEZARkBGAEZAQsBcgEzATFBMQDtwNgA2cDtwOsA8QDowOlA6MDoAOjA6QD/gP+AwIE/gP+A/4D/gMCBGoEagRqBGEEYQRkBGQEKgXIBCUFKAW6A7oDugOsA6wDYAOsA6QDpAOkA6MDoAOgA/4D/gP+A/4D/gP5A2oEagRhBGoEagRhBGEEYQRiBCoFyAQkBSgFYAOsA2cDZwOsA6wDrAOkA6QDoAOgA6ADpQOkA/4D/gP8A/4D+QNqBPgDagRhBGEEYQRhBGEEXATIBCQFKgUiBWADYAO6A6gDqAMCA10DpAOkA6QDpAOgA6UDpAP+A/4D/AP8A/4D9ANqBGEEYQRhBGEEYQRhBGEExQQqBR8FIAVgA2ADXQO6AwIDpgNdA6MDpAOkA6QDoAOkA6ADnQOdA1wE/AP8A/QDagRhBFwEXARhBGEEYQRhBCAFIgUaBR8FXQNdA2ADAgNmA/gCVgOjA6QDpAOgA6ADngOgA50DnQOVA50D/AP5A/QDYQT0A2EEYQRhBGEEZAQgBR8FHwUfBVwDAgNnA1wD+AJWA9wCVgNWA6QDngOeA6ADoAOgA6ADlQOVA/wD9gNhBPgDkAP0A2EEHgBPBGEEIAUfBR8FHwUCA1YDXANWA1YDVgPeAtwC3AKeA6QD2wLbAtsC2wKdA5UDmQP2A5ID+AP2AyIF7gMVAB4AGABSBCIFIgXWABoFXANFA1wDVgNWA1YD3QLcAtwC2wKkA54D2wLbAtsC2AKaA54DlAP0A5gD9gMoAM4AHgAYABgAFQAVADcBGgVlAFwD5AJWA+4C5ALdAt0C2wLaAtsC2gLbAtsCOgPVAtYCOgP0A5QDkgOSA5UDYQQYAM4AGAAYABUAOAE2ARoFyQBcA1MD7gLuAuQC3gLdAt0C3ALdAtsC2gLbAtgC1QI8A9QCOQOSA5UDmAOVA5UDHgAVABUAFQAVABUAOAG7BBoF5gLmAu4CUgPkAuAC3gLeAt4C2wLaAtoC1gLYAtgC1gLUApIDlQOYA5IDlQOVA/YDFQAYABUAFQD2AfYBZABkAOUC4QLhAlID8gLyAt4C3gLcAkED1gLaAtgC1gLVAtUCOgOSA5UDlQOVAwoAlQPpAxUAOAH2AVkC9QFPBGQAkQEeBB4EHgQeBB4EHgQeBB4ECwSVBJUENgM2AzYDiQTUAoIEggSCBNACKwPKAsgCLAMVAPoBFQD2AeYE9AEtAZABHgQeBB4EHgQoBB4EGwQLBAsEiQSJBNQCNgOVA4IElQPSAogEggSCBMwCyALIAscCKgPsBIUDWwJZAvQBkAGQASQEKAQeBCgEKAQeBAwEDgQOBAsEiQSJBIkEiQSJBIkEggSIBIIEggRyBMgCyALMAuME+gHjBOMEWQLsBMgAkAENBA0EHgQNBAsECwQMBAsECwQ2AwsEiQSJBIwEiQSJBIkEiASCBIIEggTKAisDxwLMAukDWwLjBFkCWQLjBJABDQQNBA0EDQQNBA0EDAQMBAsECwQNBAkE0gI2A4kElQOJBIgEggTMAnIEygKCBMwCzAJZAoUD4wTjBOME4wSQAQ0EDQQNBA0EDQQNBAsECwQLBAsECQQJBIkEiQSVA9ICiASIBIgEzALKAoIEygIuA+kDWQKFA+ME4wTTBOMEkAENBA0EDQQNBAsECwQLBAsECQQJBAsEBgQGBAYEiQTSAogEiQSIBMwCggTIAsgCzALsBOwEhQPVBOME1QSQAdMEDQQNBA0EDQQNBAsECwQNBAkEBgQEBAQEiAQABIgEiASIBIkENQOIBH4EyALIAmwEWQJZAuME1QTjBOME1QTVBA0EDQQNBA0ECwQLBAsECQQIBAkECQQEBAQEjASMBDUDiASJBIkEzAKCBG8EcARZAnAEWQLVBNAE4wTjBOME0wTOA84DDQQNBA0ECwQLBAkECAQEBAkEBAQGBAIEBgSJBIkEiQSJBMwCygJvBGwEbARZAoUD0ATVBC0B4wTRBJABzgPLAw0ExAMMBAgECAQHBAgECAQGBAYEBAQGBAAEjASJBIkEiQTMAjUDNgNsBGwEbwRvBOMEbQTVBNUE0QSQAcQDywPKA8YDxgMIBAoEBwQHBAQEBgQGBAYEAAQEBAIEiQSJBIkEMAPKAnAEcARsBGwEbwRtBM4E1QTVBNME0ATBA8YDxgPKA8EDwQMEBAYEBAQEBAQEBAQEBAQEAAQGBIkEiQSJBH4EbARsBGoEbARsBG8EbQRoBNUE0wTTBNAEwQPGA8YDzgPBA6wDBAQEBAQEBAQEBAQEAAQEBAAEAQSOBIkEfgRqBGwEbARsBG8EbwRvBG0EaATQBM4E0ATQBMEDxgPBA8sDwQPBA84DwQMEBAQEBAQCBAAEAAQABAAEAASJBGwEagRvBGwEbARtBGwEagTVBGgE0ATQBMkEzgTBA8ADxgPGA8YDrAPKAwYEBgQCBAAEAgQCBAIEAAQABAIEAgRqBGoEbARsBGoEbQRqBGQEZARtBNAExgTOBMgEwAPBA8ADxgPEA8ADpQMEBKwDAgQEBAAEAgQCBAAEAgQABG8EAARqBGwEbwRtBG8EagRkBGQEZATIBMgEzgTIBLcDtwPBA8EDwQOsA6wDrAMEBAIEpAMCBAIEAgQCBAAEAgQABAIEagRtBGoEagRqBGoEagRhBGoEYgRlBMYExQS6A7cDtwO3A7cDtwOlA6QDpAOkA6QDAAQCBAIEAgQABAAE/gMCBGoEagRqBGQEZARqBGQEYQRhBGUExQTIBMUEugO6A6wDtwOsA6wDrAOjA6QDpAOjA6ADpAP+A/4D/AP+A/4DagRtBGoEagRqBGoEYQRhBGEEKgXIBMgExQQlBboDugOsA6wDqAOnA6wDpAOkA6MDpAOlA6AD/gP+A/4D/gP+A/kD/gNqBGoE9gNhBGEEYQRhBGIExQTIBMQExQSsA6wDqgOsA6wDqAOsA6QDoAOgA6UDoAOgA6QD/gP+A/4D/gP+A20E9gNqBGEEYQRhBGEEYQRaBMUEKgUlBSAFYAOsA6gDqAOoA6QDXQOjA6QDpQOgA6QDpAOgA6ADnQP9A/wD/AP+A/YDagRhBGEEYQRaBGEEZARkBCIFIgUiBWADqgOoA6wDqAOjA6MDowOjA6UDngOgA6ADoAOgA50D/AP+A/wD9AP0A/QDXARhBGEEYQRhBGQEJAUiBSIFIgWsA2ADqgNdA10DXQNdA6MDpAOkA6QDowOjA6ADnQOdA/wDlAP8A5UD+QP0A2EEYQT0A2EEWgRhBFoEIgUiBR4FXANFA2cDVgNgA6oD+AKoA6QDpAOkA6QDoAOdA50DlQOVA5kD9gP2A5kD9gNhBGEE9ANhBFoEIgVcBB4FuwQaBVYDXANWA1YDVgNWA0ED3QKkA6QD3AKeA9sCngOcA5UDmgP0A/YDmQP0A2EEYQRhBCIFXARNBFwEUgQiBRoFGgVWA1YDVgNWA1YDVgNIA54D2gKkA54D2gLbAjoD2wLbAjoDlQOZA5kD9ANhBGEEIgXuAxgA6QMVACIFGgVPBBoFVgNcA1YDUwNTA90C5ALaAtoC3ALbAtsCOQPUApUDPAM6A5QDlAOVA5QDkgPuA2EETQQaBQoAFQAUAE0EZwBkAFMD7gLlAkgD5ALdAt0C3QLcAtsC2wLaAtYC1AI8AzwDPAOaA5UDlQOYA5IDlQPuAwoAzgDpAxQAFAAuAS0ByADkAuQC5ALkAuQC3wLeAt0C2wLbAtsC1gLWAtUC1gI8A5UDPAOVA5UDkgOVA5UDCgAKAOkDCgAUAPYBLgEtAcgA5ALiAuEC4ALkAt8C3gLdAtwC2wLaAtoC1gLWAjoD1QLVAjwDlQOVA5IDlQOVA5QDjgNPBBUA6QNYAvQBLQGQARsEDAQeBB4EKAQeBB4EDgQ2AzYDNgM2AzYDNgOVAzYD0gLRAtACfwTMAsoCyALHAsYCjgOFAwoA4wTjBMgAkAEkBB4EHgQeBCgEHgQLBA4EHgQbBDYDNgM2AzYDNgPSAtIC0gLQAswCfwTKAsgCKwN/BFsChQMKAOME4wTjBAEAHgQeBB4EHgQeBB4ECwQOBAsECwQ2A4kEiQQ2A5UD0gLSAtICiATMAs0CygIsAysDLgPjBIUDWQLjBOME4wQBAB4EDQQNBBsEKAQLBAsECwQLBAsEiQSJBDYDNgOIBIkE0gKIBCwDzAKCBMoCygLMAi4D+gHjBLwC4wTjBOME4wQNBB4EDQQNBAsECwQLBAsECwQKBAkEiQTSAtIC0gLSAtIC0gIsA8wCggTKAsgCfgQuA/oB1QQmA+ME4wTjBNUEDQQNBA0EHgQLBAsECwQLBAsECwQJBAkEiQSJBIkEggQ2A5UDNQPMAn4EygJ+BH4ELgNZAuMEJgPjBNAE1QTVBA0EDQQNBA0ECwQLBAsECQQJBAsECQQJBIgElQOJBDYDiASCBIgEzAKCBHAEMAPKAi4DWQLjBOME4wTVBNUE0QQNBA0EDQQMBAwECwQLBAkECQQJBAkECQQGBAYENgOCBIgEiAQ1AzUDggTIAm8EbARtBHEE4wTjBOME1QTVBNEEDQQNBAwECwQJBAkECQQJBAkECAQEBAQEBASIBDUDiQSIBDUDNQM1A4IEbwRwBG8EbARvBOME4wTQBNUE0QSQAQ0EDQQMBAkECQQJBAkEBwQIBAgEBAQEBAYEBgQGBIgEiASIBDUDzAI2A28EcARsBG8EbQRtBCYD0ATVBNAEzgTOA84DDAQNBAkECAQIBAQEBwQEBAYEBAQCBAIEAgQCBIgENQM1A8wCggRvBGwEbARvBGsE1QTVBNAE1QTPBNAExgPOA8YDtwMIBAgEBAQHBAYEBAQEBAQEBAQEBAIEAgQCBDUDNQPMAm0EbARsBGwEbwRvBNUE1QTVBNUEzgTQBM4DzgPGA84DBgQEBAoEBAQEBAQEBAQEBAQEBAQEBAIEAgQ1AzUDfgRtBGwEbARsBG8EbwRqBNUE0ATQBM4E0ATGA7cDxgPOAwYEBgQKBAQEBAQEBAQEBAQEBAQEAgQEBAQENQM1A2oEbARsBGwEbwRoBG0EaARqBNUEzgTQBM4ExgPAA8ADxgMIBAgECAQEBAQEBgQEBAQEBAQCBAQEAgQCBAIEbARvBGwEbARqBGoEagRoBNUEagTPBMYEzgTOBMYDwAPGA8EDxgOsA6wDrAMGBAYEAgQEBAAEAAQEBAAEBARqBAIEbQRtBG8EagRqBGoEZARoBGQExgTOBM4EzgTAA7YDwAOsA6wDrAOsAwQErAMGBAQEAgQCBAAEAAQABAAEAARtBG0EbQRqBGoEagRqBGQEaARkBGgEzATMBMUEwAPAA8ADwAOsA6wDrAOkAwYErAOkA6QDAAQABAAEAAQABAAEAgT+A2oEagRkBGIEZARkBGQEwQRkBMYExgTFBLcDtwO3A6wDrAOsA6wDpAOkA6UDpAOkA6QDAgT+A/4D/QP+AwIE/gNqBGoEaARqBGEEYQRkBGUExgTIBMUExQS3A7cDtwO3A6wDrAOsA6MDpQOkA6ADpAOkA54D/QP+A/4D/gP5A/4DagRtBGEEXARhBGEEYQRiBMYEwQTFBMUEtgOsA6wDrAOsA6gDpwOlA6UDoAOjA6QDpAOlA/4D/gP+A/4D+AP5A20EbQRhBGEEYQRhBGEEXARhBMAExQTFBLoDugOqA6wDrANnA6UDpgOkA6MDoAOkA6UDpAOVA5UD/QP8A/wD+AP2A1wE9ANhBGEEYARhBGEEYQTFBMUEIAWsA6gDrAOoA7oDQQOmA6QDpAOjA6ADpAOgA6ADlQOVA/wD/gP5A5kDXAT2A/QDYQRhBGEEYQRkBMQExQQgBR8FqQOqA6cDqAOoA6gDpAOjA6QDpAOeA54DoAOgA6ADlQOVA5wD9gP5A2EEYQRcBFwEYQRhBGEEWARYBMAEIgW8BKkDrAOoA6gDqAOnA6gDqAOoA6QDpAOkA6ADoAOcA5UDlQP8A/kDlQP5A2EE9gOQA2EEXARcBFcEWAS7BLsEIgWqA0UDVgOsA1YDVgNWA6gDqAOkA6ADngOgA6ADnQOVA5UD/AP2A5kDnAP2A5ADYARhBFwEXARWBFYEIgW7BB4FXANcA1YDVgNWA90CQQNFA6gDpAOeA6ADngOgA50DlQOcA5UDlAOUA/YD9AOSA44DVgTuA+4D6wNSBFoEIgUXBUgDVgNWA1YDVgNWA94CRQOkA90CQQOeAzoDngOZA5oDOgOUA5QDlAOVA5ID7gPuA+4D7gNNBFYEUgRPBBoFFQXmAlYDRQNFA1MD5ALfAtoC3QLdAkEDOQM5AzkD2wKZA5kDmgOSA5QDmAOSA5ID9AMKAE0ETQRPBFIETwQXBRcFUwNcA1wDSANIA90C3gLdAtsC2wLbAtoCOgPaAtQCOgOSA5UDlQOUA5gDlAOVA5UDkAOSA+kD6QOFAwoALQEUBVMDUwPuAkgD7gJBA94C3gLbAtsC2wLWAjkD1QLUAtQCmQOYA5UDlQOVA5IDlQPuA5ADkgMKAAoALgFPBCwBFAXhAuUCRANTA94C3wLeAt4C3gLbAtoC2gLYAtYC1QLUAtIC0QLQAs0CzALKAsgCkAOOA4cDhQMKAC4BLQHIAMgAGgQOBBsEDgQNBA0EDAQQBBAENgM2AzYDNgM2AzYD0gI2AzUD0ALNAn4ELAMsA8wCxgLGAsICvgKFA08E4gQBABoEHgQNBBsEDQQMBBsEEAQeBJIENgM2AzYDNgM2AzYDNgM2A5UDMAN+BC4DKwPMAscCJwPCAr4ChQOFAwEAAQAMBAwEDQQNBAwEGwQOBAwECwQLBDYDNgM2AzYDNgM2AzYDNgM1AzADfgRyBCsDzALMAicDJgO8ArwChQMBANUEDQQMBAwEDAQMBAwECwQLBAsECgQ2AzYDNgM2AzYDNgPMAjYDNQMwA34EcgRwBMwCxgInA7wChQO8AoUD1QTVBA0EDQQNBA0ECwQLBAsECwQLBAoEBgQGBIIEggSCBIIENgMsAzUDMAN+BHAEcATMAnEEJwO8AoUDvALVBNUE1QQNBA0EDQQNBAsECwQKBAsECgQJBAkECQQ2AzYDggTSAjYDLAM1AzADfgRxBHAEzAJxBCcDJgOFA9UE1QTVBNUEDQQNBA0EDQQLBAoECgQJBAsECQQGBAkENgMGBH4ELAM2AzUDNQMsA34EcQRvBG8EcQQnAyYD1QTVBNUE0ATQBA0EDQQMBA0ECQQKBAgECQQJBAkECQQEBAYEBgQ2AzYDNgM2A4gEMAM2A3EEbwRvBG8EJwPVBOME1QTVBNAE0AQNBA0EDAQLBAsECwQJBAkECQQJBAYEBAQGBAYEggSIBDYDNQOIBDADNgNvBG8EbARvBNUE1QTVBNUEhQPQBNAEDQQNBA0EDAQJBAoECQQJBAgECAQHBAYEBgQCBAYEBgQ2AzUDNQMwAzYDbwRvBGwEbQRtBG0E1QTjBNAE0ATQBA0EDAQNBLcDCAQKBAkEBwQHBAkEBgQGBAYEBAQABAIENgM1A44EMANtBG0EbwRsBG0EbQRrBNUE1QTVBM4E0ATOA84DDQQIBAsECAQKBAgEBwQHBAYEBgQEBAQEAgQCBDYDNQOOBMwCggRsBG8EbwRvBGgEbQTVBNUEzgTMBM4ExAPGA8YDwQOsAwcEBgQHBAcEBgQEBAQEBAQCBAIEAgQCBDUDzAJtBIkEaARqBGgEaARtBGoE1QTVBM8EzwTOBLcDzgPGA7cDrAMIBAYEBAQEBAYEBAQEBAIEAgQCBAEEAgQ1AzUDbwRvBG8EbQRqBGoEaARqBNUEzwTPBM4EzgTAA7cDtwPGA7cDrAMGBAYEBgQGBAYEBAQCBAAEAAQCBAIEAgRvBGgEbwRvBGoEagRqBGQEagRoBM4EzwTJBMwErAPAA6wDrAO3A6wDrAOsAwYEBgQEBAQEBAQABAAEAAQABAIEbQRvBGoEagRlBGoEagRlBGUEZQRoBMYEzATMBMADtwOsA6wDrAOsA6wDrAMGBAQEBAQCBAAEAAQABAAEAAQCBG0EbQRtBGoEagRqBGQEZQRkBGUEaATGBMYEyAS2A7cDtwOsA6wDugOsA6QDpQOjAwIEAgQCBAAEAAQABP4D/gP+A20EbQRqBGoEZARqBGQEZQRiBMEEyATGBMUEtwO3A6wDrAOsA6wDrAOkA6QDpAOjA6QDAgQABJ4D/gP9AwAE/ANqBGoEbQRkBGEEYQRgBGIEZQRiBMUEwQTFBLoDrAOsA7cDugO6A6UDpQOkA6UDowOlA6QDoAP9A/4D/QP+A/4D/ANtBGoEXARqBGEEYARgBGUEYQTBBMEExQS2A6wDrAOsA7oDpAOlA6MDowOjA6UDpAOlA5wDnAP8A/4D/AP5A/gD/ANkBF0EYQRhBGAEYQRaBGEExQTFBMUErAO6A6wDrAO6A6MDowOjA6MDowOjA6QDpQOgA5wD/gP+A/4D/AP5A/gD9ANcBFwEYQRhBGEEWgRhBMUExQTBBKwDrAOsA6gDqAOnA6QDpAOkA6MDoAOkA6ADoAOcA5UDngP8A/wD+QP5A1wEXARcBF0EYQRhBGEExQRaBMAExQSsA6oDqAOoA6gDqAOkA6UDowOgA6ADngOgA6ADlQOVA/wD/AP4A/YD+AP2A/YD9gNhBFwEXARYBFoEwATABLwEqgOpA6kDqAOoA6gDqAOjA6gDowOkA54DoAOgA50DlQOVA5wD+AP2A/YD9gP0A/MDYQRcBFwEWARWBFoEuwS7BKoDRQNWA6gDqAOjA6MDqAOjA6ADOQOgA6ADngOcA50DlQOZA/QDmQP2A/QD9gP0A/QD7gNcBFYEUgRYBLYEuwRFA0UDVgNWA1YD3QJBA6MDowOjA54DngM5A54DnQOVA5oDmQOZA5QDlQOUA/YD7gP0A+4D7gNWBFIETwS2BLsE5gJFA0UDRQNWA0MDQQNBA6MDowOeA54DOQM8AzkDmQOaA5QDlAOVA5UDlAPuA+4D7gPpA00E7gNSBE8EuwSxBEgDUwNFA0UDQwNBA0ED3gLdAkEDngOgAzkDOQM8A5kDOQOYA5UDlQOVA5UDkgOOA+4DXARPBOgDTQRPBE8EFAVIA+ICRQPlAuIC3QLeAkEDQQNBA0EDOQM6AzoDOQM5A5gDkgOVA5UDlQOSA44DkAOOA4UD6wOFA08ETwRPBBQFUgNIA0gDSANFA94CQQNBA0ED2wJBA9oCOQM6AzwDOQM5A5QDlQOSA5UDlQOOA5ADjgOKA4UDhQNPBE8EAQBPBEgDSANEA94CQwNBA0EDQQNAA9oC2gLaAtgCOQM6AzkD1AKVA5UDlQOVA5UDjgPHAsYCwgK/Ar4ChQNPBAEAAQAQBBAEGwQOBA0EDQQQBBAEDQQ2AzYDNgM2AzYDNgM2AzYDNgM1AzEDMAN0BCwDKwMqAycDJgO8ArwCyAAgA9gEEAQOBA4EGwQNBAwEDAQQBAsECwQ2AzYDNgM2AzYDNgM2AzYDMQMxAzADcgQrAysDKgMqAyYDvAK8AgAA1gTWBCQEEAQNBA0EDQQMBAwEDAQLBDYDNgM2AzYDNgM2AzYDNgM1AzEDLAMwA3QEcQQrAyoDKgMmA7wCvAKFAwEA1QQNBA0EDQQMBAwEDAQLBAsECgQLBDYDNgM2AzYDNgM2AzYDNgMxAzADfgRxBHAEcQTGAsYCKgOFA7wChQPWBNQEDQQNBA0ECwQLBAsECwQLBAoECwSJBDYDNgM2AzYDzAI2AzUDNQM1AzEDcQRvBHEEJwMnA7wC4wSFA4UD1QTVBA0EDQQMBAsECwQLBAsECwQLBAsECwQJBDYDNgOJBNICNgN+BDUDzAJ+BHEEbwTMAnEEvAIqA+ME1gTVBNUE0wQNBA0EDAQNBAsECgQKBAoECwQIBAkECQQJBDYDfgTSAjYDiATMAjUDfgRvBG4EbQRZAlkCKgPjBNYE1QTVBNIEDQQNBAwEDAQLBAsECAQJBAgECQQJBAkEBgQCBDYDNgM2A4gEzAJ+BH4EbwRvBG0EbwRxBGsE4wTVBNUE1QTRBA0EDAQNBAsECwQLBAkECQQIBAgEBgQJBAYEAgQCBAYENgOIBDUDNQN+BG8EbQRsBG0EbQRtBNUE1QTVBNUE0AQNBA0EDQQJBAsECAQJBAgEBwQHBAYEBgQGBAIEBgQGBIgENgOOBH4EfgRtBG0EawRtBG0EbQTVBNUE1QTPBM8EwAMNBAsECwQLBAYECAQIBAYEBgQGBAYECQQEBAQEAgQCBIgEjgSOBH4EbQRtBGsEagRtBGoE1QTVBNUEzgTPBMEDwQPOA7cDCwQIBAgECAQGBAcEBgQGBAAEBAQEBAIEAgSIBI4EfgRvBG0EbQRrBGoEbQRtBNUE1QTOBM4EzgS3A8YDzgO3AwsECAQIBAcEBwQGBAQEBAQEBAQEAgQCBAIEAgRvBI4EbwRtBG0EagRoBGoEbQTVBNUEzgTOBMwEwAO3A84DtwMGBAgECAQGBAQEBgQGBAAEAgQCBAIEAgQCBAIEbwRsBG8EbQRqBGoEZgRqBGoEzwTOBM4EzgTKBMADtwPAA7cDrAMIBAgEBAQGBAYEBgQCBAQEAgQBBAIEAgQCBAIEagRtBGoEaARqBGoEZQRqBNUE1QTGBMkEyQS3A7cDtwOsA7cDrAO3AwQEBgQEBAIEAgQABAAEAAQABAEEAgQABGoEbwRoBGoEagRqBGQEaARqBGgEyQTIBMgEtwO3A6wDrAOsA6wDrAMGBKUDBAQCBAQEAAQABAIEAAT+AwEEAARqBG8EaARqBGoEZARiBGIEZQTIBMgEyATGBLcDtwO3A7cDrAOlA6UDpQMCBAIEowP8AwIEAgQABAAE/gP9AwIEagRqBGgEZARkBGEEYQRiBGUEyQTIBMQExQSsA8EDugO3A7oDrAOlA6wDpAOlA6MDowMCBAIEoAP+A/4D/gP8A28EbwRqBGQEZARhBGEEYARlBMYExATBBMQEtgO2A6wDrAOsA6UDpQOlA6QDpQOjA6ADoAP+A/4D/gP+A/wD/AP5A28EZARkBGQEYQRhBF0EYARhBMUExATBBLYDrAOsA6wDrAOnA6wDpQOlA6UDowOgA6AD/AOeA/4D/AP8A/wD+QP4A1wEZARcBF0EYQRcBF0EYQTEBMAEwASsA6oDrAOoA7oDpwOsA6QDpQOlA6ADoAOlA54DngOcA/wD/AP8A/kD+AP2A1wEXARdBGEEXARaBMAEwATABL4ErAOqA6kDqAOnA6cDpgOlA6UDpQOlA6ADoAOeA54DngP8A/wD/AP4A/YD9gP0A/YDYQRhBFwEWARaBFoEwAS8BKoDqgOqA6gDpwOnA6YDpQOkA6MDogOiA6ADoAOgA5wDnAP8A/wD+QP2A/QD9APzA2EEYQRcBFcEWgTABMAEuwSqA6oDrAOsA6gDqAOoA6MDowOkA6IDogOgA54DnAOcA5wDnAP8A/kD9AP0A/QD8wPyA2EEWgRXBFYEWgS6BLoEqgOqA6oDpAOoA6gDowOjA6MDowOjA54DngOjA50DnAOaA5kDmQP0A/QD9AP0A/QD9APuA1wEVgRSBLwEuwS2BEUDRQNFA0gDqANWA0EDQQOjA54DngOeA54DngOdA6MDnQOZA5gDlQOUA/QDkAPrA+4D7gPrA1IEUgRPBLsEswSqA0UDRQNFA0MDQwNDA0EDQwOeA54DngM5A6MDOQM6A5oDmQOYA5UDlAOSA5ADjwOPA+4D6wPpA08ETQRPBLEESANFA0UDRQNDA0MDQwPdAqMDQANBAzkDOQM5AzkDlQOZA5kDlQOVA5UDkgOQA44DjgOKA+sD6QPoA00ETASwBEgDSANFA1MD3wJDA0MDQQPbAkADPwOeAzkDOQM5A9UCmQOVA5UDlQOVA5IDkAOPA44DigOHA4UD6ANNBOgDsQRIA1MDRQPiAkMDQwNBA0EDQANAA0ADPwPaAjoDOQM5A5UDlQOVA5UDlQOVA5IDjwOOA4oDhQOFA4QDTQQUBRQFSANGA0UDRANDA0MDQgNBA0ADPwM+Az4DPAM6AzkDOAM2AzUDNAMxAzADLgMsAysDKgMnAyYDvQK8AiEDIAMAAA==\"\r\n\r\nvar TurtleBitmap =\r\n\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAABnRSTlMAAAAAAABupgeRAAAAaUlEQVR4nO3TQQrAIAxEUe9/aQsuTR0UxyTofFyVkqeVlqKUernaVozqbVezBPvYrh2Hf6fjT83ZUDfdkuCF3TAGNkEoRl21yWU/LtkWnPOayYXBk3aMest/bCeOJLI9mgUeHrlspVSyPuWgFvgRGqTQAAAAAElFTkSuQmCC\"\r\n\r\nvar EmptyBitmap = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAABnRSTlMA9wD/AP8HKFC8AAAAO0lEQVR4nO3PsQkAIBAEweu/YcM3sQODQxzYfNismUoBg8FgMBgMfgVOTgV4pgR3ju8Dg8FgMBj8MbwBwoJsp3hqwSoAAAAASUVORK5CYII=\"\r\n\t\r\nvar BinaryBlobsData = {\r\n\tCTable,\r\n\tCITable,\r\n\tTurtleBitmap,\r\n\tEmptyBitmap,\r\n}\r\nmodule.exports = BinaryBlobsData;","\"use strict\"\r\n\r\n/** object **/ \r\nvar Bitmap = function(){\r\n\t\r\n\tvar PIXI = require('pixi.js');\r\n\tvar pixihelpers = require('./pixihelpers');\r\n\tvar helpers = require('./helpers.js');\r\n\t\r\n\t// TARGA defines\r\n\t// 32-bit words\r\n\tvar OFFSET_LENGTH = 0\r\n\tvar OFFSET_SIGNATURE = 1\r\n\tvar OFFSET_WIDTH = 4\r\n\tvar OFFSET_HEIGHT = 5\r\n\tvar OFFSET_BITS = 6\r\n\r\n\tvar BIT_SAME_PIXELS = 0x80000000\r\n\tvar BIT_EOL = 0x40000000\r\n\tvar MASK_COUNT = 0x3fffffff\r\n\r\n\tvar BIT_COUNT = 0x80000000\r\n\tvar BIT_ENDOFLINE = 0x40000000\r\n\tvar MASK_COMPRESS_BITS = 0x3fffffff\r\n\tvar MASK_STATUS = 0x00ffffff\r\n\r\n\t\r\n\t/**\r\n\t\tBitmap: {\r\n\t\t\tpackedBitmap,\r\n\t\t\tunpackedBitmap,\r\n\t\t\ttexture,\r\n\t\t\thash,\r\n\t\t\twidth,\r\n\t\t\theight,\t\r\n\t\t}\r\n\r\n\t**/\r\n\r\n\t\r\n\tthis.load = function(json) {\r\n\t\tthis.hash = json.hash;\r\n\t\tthis.dataURL = json.data;\r\n\t\tthis.source = json.source;\r\n\t\tthis.rotation = json.rotation;\r\n\t\tthis.scale = json.scale;\r\n\r\n\t\tthis.generateTexture();\r\n\t}\r\n\r\n\tthis.save = function(d) {\r\n\t\tif (this.tosave) {\r\n\t\t\tthis.tosave = undefined;\r\n\t\t\td.push({\r\n\t\t\t\tdata: this.dataURL, hash: this.hash,\r\n\t\t\t\tsource: this.source ? this.source.hash : undefined,\r\n\t\t\t\trotation: this.rotation, scale: this.scale,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** src, dest - Uint32Array \r\n\t\treturns new src offset **/\r\n\tthis._unpackLine = function(src, dest, destOffset, line){\r\n\t\t//var u32 = new Uint32Array(src);\r\n\t\tvar eol = 0;\r\n\t\tvar x = 0;\r\n\t\tvar addr = src[OFFSET_BITS+line];\r\n\t\tvar count;\r\n\t\twhile (!eol) {\r\n\t\t\teol = src[addr]&BIT_EOL;\r\n\t\t\tcount = src[addr]&MASK_COUNT;\r\n\t\t\tif (src[addr++]&BIT_SAME_PIXELS) {\r\n\t\t\t\tfor (let i=0; i> 0) & 0xff;\r\n\t\t\t\t\tlet G = (px >> 8) & 0xff;\r\n\t\t\t\t\tlet B = (px >> 16) & 0xff;\r\n\t\t\t\t\tlet A = (px >> 24) & 0xff;\r\n\t\t\t\t\t//let A = 0xff;\r\n\t\t\t\t\tlet pxN = (A << 24) | (B) | (G << 8) | (R << 16)\r\n\t\t\t\t\tdest[destOffset+x++] = pxN;\r\n\t\t\t\t}\r\n\t\t\t\taddr++;\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i=0; i> 0) & 0xff;\r\n\t\t\t\t\tlet G = (px >> 8) & 0xff;\r\n\t\t\t\t\tlet B = (px >> 16) & 0xff;\r\n\t\t\t\t\tlet A = (px >> 24) & 0xff;\r\n\t\t\t\t\t//let A = 0x40;\r\n\t\t\t\t\tlet pxN = (A << 24) | (B) | (G << 8) | (R << 16)\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tdest[destOffset+x++] = pxN;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//return addr;\r\n\t}\r\n\t\r\n\t/** targaData is untyped ByteArray **/\r\n\t/** object method, because it generates width and height also **/\r\n\tthis._unpackBitmap = function(){//targaData){\r\n\t\tvar targaData = this.packedBitmap;\r\n\t\tvar length = targaData[OFFSET_LENGTH];\r\n\t\tvar signature = targaData.subarray(OFFSET_SIGNATURE, OFFSET_WIDTH);\t//just for debug purposes. Should be \"Format01\" in ASCII(!) (8 bytes +4 nulls)\r\n\t\tvar width = targaData[OFFSET_WIDTH];\r\n\t\tvar height = targaData[OFFSET_HEIGHT];\r\n\t\tvar unpackedBitmap = new Uint32Array(new ArrayBuffer(width*height*4));\r\n\t\t\r\n\t\tfor (let line=0; line {\r\n\t\t\tthis.generateUnpackedFromTexture();\r\n\t\t});\r\n\t}\r\n\t\r\n\tthis.generateUnpackedFromTexture = function(){\r\n\t\tvar texture = this.texture;\r\n\t\tthis.width = texture.width;\r\n\t\tthis.height = texture.height;\r\n\t\tvar sprite = new PIXI.Sprite(texture);\t//warkaround for rendering the texture on RenderTexture\r\n\t\t//var renderTexture = new PIXI.RenderTexture(App.getRenderer(), texture.width, texture.height);\t-- pixi v2\r\n\t\tvar renderTexture = PIXI.RenderTexture.create(texture.width, texture.height);\r\n\t\t\r\n\t\t//renderTexture.render(sprite);\t-- pixi v2\r\n\t\tApp.getRenderer().render(sprite, renderTexture);\r\n\t\t//var canvas = renderTexture.getCanvas();\t//pixi v2\r\n\t\t//var canvas = App.getRenderer().extract.canvas(renderTexture);\r\n\t\tvar pix = App.getRenderer().extract.pixels(renderTexture);\r\n\t\tthis.unpackedBitmap = helpers.Uint8toUint32(pix);\r\n\t\tif (!this.dataURL)\r\n\t\t\tthis.dataURL = pixihelpers.demultiply(pix, this.width, this.height);\r\n\t}\r\n\r\n\t/** not added to Assets **/\r\n\t//if it would ever be rewritten with cloned textures, take note that texture can now be safely destroyed in TurtleView.destroy()\r\n\tthis.clone = function(){\r\n\t\tlet cloned = new Bitmap();\r\n\t\tcloned.texture = this.texture; //Texture is immutable\r\n\t\tcloned.width = this.width;\r\n\t\tcloned.height = this.height;\r\n\t\tcloned.hash = this.hash;\r\n\t\tcloned.generateUnpackedFromTexture(); //TEST how (non)edited transparency works\r\n\t\treturn cloned;\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = Bitmap;","\"use strict\"\r\n/** class **/\r\n\r\n//already loaded dependencies\r\nconst ButtonView = require('./ButtonView.js');\r\nconst App = require('./App.js');\r\nconst LogoObject = require('./LogoObject');\r\nconst ToggledTrackerMixin = require('./ToggledTrackerMixin');\r\nconst TypeCheck = require('./TypeCheck');\r\n\r\nclass Button extends LogoObject {\r\n\tconstructor(data){\r\n\t\tsuper(data);\t//common LogoObject fields\r\n\t\t//init fields from data\r\n\t\tthis.label = data.label || (data.onClick || { code: ''}).code || '';\r\n\t\tif (data.bitmap) this.bitmap = data.bitmap;\r\n\t\t\r\n\t\tthis.toggledTracker = new ToggledTrackerMixin(this);\r\n\t\t\r\n\t\t//init listeners code fields (not listeners themselves!)\r\n\t\tthis.onClickCor = undefined;\r\n\t\tthis.onClick = data.onClick;\r\n\t}\r\n\r\n\t_initOnClick(){\r\n\t\tthis._buttonView.addOnClick(() => {\t//*this* is Button\r\n\t\t\tthis.toggledTracker.click();\t//runs or stops onClickCor and all dependent ones\r\n\t\t});\r\n\t}\r\n\t\r\n\t//used by toggleTracker\r\n\tsetViewPressed(b){\r\n\t\tif(this.page==undefined){return};\r\n\t\tthis._buttonView.setPressed(b);\r\n\t}\r\n\t\r\n\tsetOnClickLCU(lcu){\r\n\t\tif (this._setCor({ onClickCor: lcu }, 'onClickCor'))\r\n\t\t\tthis.toggledTracker.stop();\r\n\t}\r\n\t\r\n\trebindOnClick(){\r\n\t\tthis._initOnClick();\r\n\t}\r\n\t\r\n\t\r\n///////////// Common LogoObject functions ////////////////////////\t\r\n\r\n\tget(propName) {\r\n\t\tpropName = propName.toUpperCase();\r\n\t\tswitch (propName) {\r\n\t\t\tcase primtips.sg.label: return this.label;\r\n\t\t\tcase primtips.sg.onclick: return this.onClickCor._name;\r\n\t\t\tcase primtips.sg['on?']:\r\n\t\t\tcase primtips.sg['onclick?']:\r\n\t\t\t\treturn primtips['sym_' + this.toggledTracker._pressedState][0];\r\n\t\t}\r\n\r\n\t\treturn super.get(propName, [primtips.sg['showname?']]);\r\n\t}\r\n\r\n\tset(propName, value) {\r\n\t\tpropName = propName.toUpperCase();\r\n\t\tswitch (propName) {\r\n\t\t\tcase primtips.sg.label:\r\n\t\t\t\tthis.label = TypeCheck.getCompactedString(value);\r\n\t\t\t\tApp.getDrawQueue().addRequest(this);\r\n\t\t\t\treturn true;\t\t\t\t\r\n\r\n\t\t\tcase primtips.sg.onclick:\r\n\t\t\t\tthis.setOnClickLCU(this.getCorName(value, 0));\r\n\t\t\t\treturn true;\r\n\t\t\t\r\n\t\t\tcase primtips.sg['on?']:\r\n\t\t\tcase primtips.sg['onclick?']:\r\n\t\t\t\tif (TypeCheck.getBoolean(value))\r\n\t\t\t\t\tthis.toggledTracker.clickon();\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.toggledTracker.stop();\r\n\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn super.set(propName, value, [primtips.sg['showname?']]);\r\n\t\t}\r\n\t}\r\n\r\n//init view after addLogoObject\r\n\t_initView(){\r\n\t\tsuper._initView(this._buttonView = new ButtonView(this));\r\n\t}\r\n\t_getButtonView(){ return this._buttonView; }\r\n\t\r\n\t_initViewListeners(){\r\n\t\t//if (this.onClickCor) {this._initOnClick()}\r\n\t\tthis._initOnClick();\t// <^ required to keep _clickPreventing in correct state\r\n\t}\r\n\t\r\n\tinitAfterRestore(){\r\n\t\tsuper.initAfterRestore();\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = super.save();\r\n\t\td.label = this.label;\r\n\t\tif (this.onClickCor)\r\n\t\t\td.fcn = { code: this.onClickCor._name, mode: \"once\" };\r\n\r\n\t\tif (this.bitmap)\r\n\t\t\td.buffer = this.bitmap.dataURL;\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\tstopAllOperations() {\r\n\t\tthis.toggledTracker.stop();\r\n\t}\r\n}\r\n\t\r\nmodule.exports = Button;\r\n","\"use strict\"\r\n/** constructor **/\r\n\r\nconst helpers = require('./helpers.js');\r\nconst Button = require('./Button.js');\r\nconst HtmlLogoView = require('./HtmlLogoView');\r\nconst App = require('./App.js');\r\nconst $ = require('jquery');\r\nconst logger = require('./logger');\r\n\r\n\r\nclass ButtonView extends HtmlLogoView{\r\n\tconstructor(logoObject){\r\n\t\tsuper(logoObject, false, true); //dragByLabel = false, isResizable = true\r\n\t\tthis.state.addObservableField('pressed', false);\r\n\t\tthis.state.label = logoObject.label;\r\n\t\t\r\n\t\tthis.button = logoObject;\r\n\t\t\r\n\t\tif (this.button.bitmap) {\t//Pervologo\r\n\t\t\tthis.insertElement('');\r\n\t\t\tthis._$button = $('#'+this.button.id);\t//optimization\r\n\t\t} else\r\n\t\t\tthis._buildTextElement();\r\n\r\n\t\tthis._setShowName(false);\t//would it be enough to prevent acccidental name showing?\r\n\t\t$('#'+this._divId).draggable({cancel:false});\r\n\t}\r\n\t\r\n\t\r\n\tdraw() {\r\n\t\tsuper.draw();\r\n\t\t\r\n\t\t$('#'+this._divId).css({ width: '', height: '' });\r\n\r\n\t\tthis._$button.css({\r\n\t\t\twidth: this.button.width,\r\n\t\t\theight: this.button.height,\r\n\t\t\tborderStyle: this.state.pressed ? 'inset' : ''\r\n\t\t});\r\n\t};\r\n\t\r\n\taddOnClick(callback) {\r\n\t\t//off is needed in case we rebind onClick\r\n\t\tthis._$button.off('click').click((mouseData) => {\t//arrow function to save 'this' context\t\r\n\t\t\tif (this._clickPreventing) {\t//workaround to prevent click after drag&drop\r\n\t\t\t\tthis._clickPreventing = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t//DEBUG\r\n\t\t\tlogger.debug(\"Click button\");\r\n\t\t\tcallback();\r\n\t\t});\r\n\r\n\t\tthis.addContextMenu(this._$button);\r\n\t}\r\n\r\n\t_setLabel(val) {\r\n\t\tif (this.button.bitmap) {\r\n\t\t\t$('button', '#'+this._divId).remove();\r\n\t\t\tthis._buildTextElement();\r\n\t\t\tthis.button.bitmap = undefined;\r\n\t\t} else\r\n\t\t\t$('div', this._$button).text(val);\r\n\t}\r\n\t\r\n\tsetPressed(b){\r\n\t\tthis.state.pressed = b;\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\r\n\t_buildTextElement() {\r\n\t\t$('#'+this._divId).prepend('');\r\n\t\tthis._$button = $('#'+this.button.id);\t//optimization\r\n\t\t$('div', this._$button).text(this.button.label);\r\n\t}\r\n}\r\n\t\r\nmodule.exports = ButtonView;\r\n","\"use strict\"\r\n/** constructor **/\r\n\r\nvar PIXI = require('pixi.js');\r\nvar App;\t\t\t//initialized in initCanvas();\r\nvar helpers = require('./helpers.js');\r\nvar Color = require('./Color.js');\r\nvar pixihelpers = require('./pixihelpers');\r\nvar logger = require('./logger');\r\nvar Options = require('./Options.js');\r\nvar DOUBLE_DRAWING = Options.doubleDrawing || false;\r\n\r\n\r\n\r\n\r\n/** created by PageView **/\r\n/** All drawing operations are done in separate layer over buffer - for more control of drawing and antialiasing **/\r\n\r\nvar CanvasDraw = function(container){\r\n\tvar graphics;\r\n\tvar canvasLayerTexture;\r\n\tvar canvasLayer;\r\n\t\r\n\tvar HtmlCanvas;\t//drawing is duplicated in 2d canvas (not shown on screen), to prevent antialiasing when reading pixels\r\n\t\t\t\t\t//also, it is placed in RAM (not GPU) and allows fast pixel access\r\n\tvar HtmlContext;\r\n\tvar HtmlImageData;\r\n\t\r\n\tvar TmpCanvas;\r\n\t\r\n\t//constructor\r\n\t(function initCanvas(container){\r\n\t\tApp = require('./App.js');\r\n\t\tgraphics = new PIXI.Graphics();\r\n\t\tcanvasLayerTexture = PIXI.RenderTexture.create(App.getProject().getWidth(), App.getProject().getHeight()); \r\n\t\tcanvasLayer = new PIXI.Sprite(canvasLayerTexture);\r\n\t\tcontainer.addChild(canvasLayer);\r\n\t\t//DEBUG\r\n\t\tcanvasLayer._debugString = \"canvasLayer\";\r\n\t\t\r\n\t\tif (DOUBLE_DRAWING) {\r\n\t\t\t//use default canvas too, for 2d rendering and direct access to byte array in system memory. \r\n\t\t\tHtmlCanvas = document.createElement(\"canvas\");\r\n\t\t\tHtmlCanvas.width = App.getProject().getWidth();\r\n\t\t\tHtmlCanvas.height = App.getProject().getHeight();\r\n\t\t\tHtmlContext = HtmlCanvas.getContext(\"2d\");\r\n\t\t}\r\n\r\n\t})(container)\r\n\t\r\n\t//maybe color setup once before?\r\n\tfunction drawLine(x1,y1,x2,y2, color, erase, pensize, pageView){\r\n\t\tlet width = (pensize? pensize : 1);\r\n\t\t\r\n\t\t//force coloring pixel if line length is 0:\r\n\t\tif (helpers.almostEqual(x1, x2) && helpers.almostEqual(y1,y2)){\r\n\t\t\ty1 = y1 - 0.5;\r\n\t\t\ty2 = y2 + 0.5;\r\n\t\t}\r\n\r\n\t\t//HACK integer coordinates are NOT pixel-perfect. Add 0.5 to move line closer to actual pixels.\r\n\t\t//https://stackoverflow.com/questions/7530593/html5-canvas-and-line-width/\r\n\t\tif (width % 2 == 1) {\r\n\t\t\t// x1+=0.5;\r\n\t\t\t// x2+=0.5;\r\n\t\t\t// y1+=0.5;\r\n\t\t\t// y2+=0.5;\r\n\t\t\t// Horizontal\r\n\t\t\tif ( Math.abs(y1 - y2) < 0.01 ) {\r\n\t\t\t\ty1+=0.5;\r\n\t\t\t\ty2+=0.5;\r\n\t\t\t}\r\n\t\t\t// Vertical\r\n\t\t\tif ( Math.abs(x1 - x2) < 0.01 ) {\r\n\t\t\t\tx1+=0.5;\r\n\t\t\t\tx2+=0.5;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (erase){\r\n\t\t\tflushGraphics(); //render all pending operations\r\n\t\t\t\r\n\t\t\t//pixi doesn't support required blend mode, but we have hacks in place!\r\n\t\t\tgraphics.blendMode = pixihelpers.CustomBlendModes['zero'];\r\n\t\t\tgraphics.lineStyle(width, 0xffffff, 1);\r\n\t\t\tgraphics.moveTo(x1,y1);\r\n\t\t\tgraphics.lineTo(x2,y2);\r\n\t\t\tflushGraphics();\r\n\t\t\t\r\n\t\t\t//now draw on page buffer:\r\n\t\t\tgraphics.lineStyle(width, 0xffffff, 1);\r\n\t\t\tgraphics.moveTo(x1,y1);\r\n\t\t\tgraphics.lineTo(x2,y2);\r\n\t\t\tlet pageBgTexture = pageView._getPageBgTexture();\r\n\t\t\tApp.getRenderer().render(graphics, pageBgTexture, false); //clear = false\r\n\t\t\tpageView._updatePageBg(pageBgTexture);\r\n\t\t\tgraphics.clear();\r\n\t\t\t\r\n\t\t\t//restore blend mode:\r\n\t\t\tgraphics.blendMode = PIXI.BLEND_MODES.NORMAL;\r\n\t\t\r\n\t\t\tif (DOUBLE_DRAWING) {\r\n\t\t\t\t//repeat it in offscreen:\r\n\t\t\t\tHtmlContext.globalCompositeOperation = 'destination-out';\r\n\t\t\t\tHtmlContext.beginPath();\r\n\t\t\t\tHtmlContext.strokeStyle = 'rgba(0,0,0,1)';\r\n\t\t\t\tHtmlContext.lineWidth = width;\r\n\t\t\t\tHtmlContext.moveTo(x1,y1);\r\n\t\t\t\tHtmlContext.lineTo(x2,y2);\r\n\t\t\t\tHtmlContext.stroke();\r\n\t\t\t\tHtmlContext.globalCompositeOperation = 'source-over';\r\n\t\t\t}\r\n\t\t\t\r\n\t\t} else {\r\n\t\t\tgraphics.lineStyle(width, Color.flipARGB(color), Color.readAlphaByte(color)/255);\t// requires BGR, low to high\r\n\t\t\tgraphics.moveTo(x1,y1);\r\n\t\t\tgraphics.lineTo(x2,y2);\r\n\t\t\t\r\n\t\t\tif (DOUBLE_DRAWING) {\r\n\t\t\t\t//and repeat drawing in offscreen:\r\n\t\t\t\tHtmlContext.beginPath();\r\n\t\t\t\tvar r = (color & 0xff);\t// RGBA, low to high\r\n\t\t\t\tvar g = ((color >> 8) & 0xff);\r\n\t\t\t\tvar b = ((color >> 16) & 0xff);\r\n\t\t\t\tvar a = ((color >> 24) & 0xff);\t//turtle.opacity is already in color alpha\r\n\t\t\t\tHtmlContext.strokeStyle = 'rgba('+r+','+g+','+b+','+a/255+')';\t//',1.0)';\r\n\t\t\t\tHtmlContext.lineWidth = width;\r\n\t\t\t\tHtmlContext.moveTo(x1,y1);\r\n\t\t\t\tHtmlContext.lineTo(x2,y2);\r\n\t\t\t\tHtmlContext.stroke();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** dispatcher **/\r\n\tfunction draw(data){\r\n\t\tswitch (data.type) {\r\n\t\t\tcase \"line\":\r\n\t\t\t\tdrawLine(data.x1,data.y1,data.x2, data.y2, data.color, data.erase, data.pensize, data.pageView);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tfunction clean(){\r\n\t\t//clear PIXI texture:\r\n\t\tgraphics.clear();\r\n\t\tApp.getRenderer().render(graphics, canvasLayerTexture, true); //clear = true;\r\n\t\t\r\n\t\tif (DOUBLE_DRAWING) {\r\n\t\t\t//clear HTML Canvas:\r\n\t\t\tHtmlContext.clearRect(0, 0, HtmlCanvas.width, HtmlCanvas.height);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//used only by _debugDrawHtmlCanvas\r\n\tfunction copyHtmlCanvas(){\r\n\t\tvar tmpTex = PIXI.Texture.fromCanvas(HtmlCanvas);\r\n\t\ttmpTex.update();\r\n\t\tvar tmpSprite = new PIXI.Sprite(tmpTex);\t\r\n\t\tApp.getRenderer().render(tmpSprite, canvasLayerTexture, true); //clear = true;\r\n\t}\r\n\t\r\n\tfunction _debugDrawHtmlCanvas(){\r\n\t\t//see how 2d canvas (in RAM) is drawing\r\n\t\tcopyHtmlCanvas();\r\n\t}\r\n\t\r\n\tfunction flushGraphics(){\r\n\t\tApp.getRenderer().render(graphics, canvasLayerTexture, false); //clear = false\r\n\t\tgraphics.clear();\r\n\t\t//_debugDrawHtmlCanvas();\r\n\t}\r\n\t\r\n\t/** copy CanvasDraw to actual page buffer, clear CanvasDraw **/\r\n\tfunction renderToPageBgLayer(pageView){\r\n\t\tthis.flushGraphics();\r\n\t\tlet pageBgTexture = pageView._getPageBgTexture();\r\n\t\tApp.getRenderer().render(canvasLayer, pageBgTexture, false); //clear = false\r\n\t\tpageView._updatePageBg(pageBgTexture);\r\n\t\tthis.clean();\r\n\t}\r\n\t\r\n\r\n\tfunction getPixelAt(x,y){\r\n\t\treturn pixihelpers.getPixelAt(App.getRenderer(), canvasLayerTexture, x, y);\r\n\t}\r\n\t\r\n\t/*\r\n\tfunction copyPixiToHTML(){\r\n\t\t\r\n\t\tHtmlContext.putImageData(canvasData, 0, 0);\r\n\t}\r\n\t*/\r\n\t\r\n\tfunction stampSprite(sprite){\r\n\t\t//render on pixi texture:\r\n\t\tflushGraphics();\r\n\t\tApp.getRenderer().render(sprite, canvasLayerTexture, false);\r\n\t}\r\n\r\n\t/** strict matching, alpha is used **/\r\n\tfunction floodFill(startX, startY, fillRGB, page){\r\n\t\tflushGraphics();\r\n\t\tstartX = Math.round(startX);\t//without coords being int it wouldn't work!\r\n\t\tstartY = Math.round(startY);\r\n\t\tlet pixelStack = [[startX, startY]];\r\n\t\tlet canvasWidth = App.getProject().getWidth();\r\n\t\tlet canvasHeight = App.getProject().getHeight();\r\n\r\n\t\tvar pxPageBg = page._bg;\r\n\r\n\t\tvar templatePage = App.getProject().getWallpaper();\r\n\t\tvar templateView = templatePage._getPageView();\r\n\t\tvar templateBuffer = templateView.getPageBgBuffer();\r\n\t\tvar templateFreeze = templateView.getFreezeBgBuffer();\r\n\t\tvar templateBg = templatePage._bg; //RGBA\r\n\r\n\t\tvar freezeBgPixels = page._getPageView().getFreezeBgBuffer();\r\n\t\tvar pageBufferPixels = page._getPageView().getPageBgBuffer();\r\n\r\n\t\tvar canvasPixels = App.getRenderer().plugins.extract.pixels(canvasLayerTexture);//Uint8Array\r\n\t\tvar canvasU32 = new Uint32Array(canvasPixels.buffer);\r\n\r\n\t\tlet startRGB = readPixel(startY*canvasWidth + startX);\r\n\t\tif (startRGB == fillRGB) {\r\n\t\t\treturn;\t//or else we'll get to infinite cycle\r\n\t\t}\r\n\t\t\r\n\t\twhile(pixelStack.length)\r\n\t\t{\r\n\t\t var newPos, x, y, pixelPos, reachLeft, reachRight;\r\n\t\t newPos = pixelStack.pop();\r\n\t\t x = newPos[0];\r\n\t\t y = newPos[1];\r\n\t\t \r\n\t\t pixelPos = (y*canvasWidth + x);// * 4;\r\n\t\t while(y-- >= 0 && matchStartColor(pixelPos))\r\n\t\t {\r\n\t\t\tpixelPos -= canvasWidth;// * 4;\r\n\t\t }\r\n\t\t pixelPos += canvasWidth;// * 4;\r\n\t\t ++y;\r\n\t\t reachLeft = false;\r\n\t\t reachRight = false;\r\n\t\t while(y++ < canvasHeight-1 && matchStartColor(pixelPos))\r\n\t\t {\r\n\t\t\tcanvasU32[pixelPos] = fillRGB; // colour the pixel\r\n\r\n\t\t\tif(x > 0)\r\n\t\t\t{\r\n\t\t\t if(matchStartColor(pixelPos -1))//- 4))\r\n\t\t\t {\r\n\t\t\t\tif(!reachLeft){\r\n\t\t\t\t pixelStack.push([x - 1, y]);\r\n\t\t\t\t reachLeft = true;\r\n\t\t\t\t}\r\n\t\t\t }\r\n\t\t\t else\r\n\t\t\t\treachLeft = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(x < canvasWidth-1)\r\n\t\t\t{\r\n\t\t\t if(matchStartColor(pixelPos + 1))//4))\r\n\t\t\t {\r\n\t\t\t\tif(!reachRight)\r\n\t\t\t\t{\r\n\t\t\t\t pixelStack.push([x + 1, y]);\r\n\t\t\t\t reachRight = true;\r\n\t\t\t\t}\r\n\t\t\t }\r\n\t\t\t else\r\n\t\t\t\treachRight = false;\r\n\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\tpixelPos += canvasWidth;// * 4;\r\n\t\t }\r\n\t\t}\r\n\t\tapplyCanvasData();\r\n\t\t\r\n\t\tfunction readPixel(pixelPos) {\r\n\t\t\tvar templateBufferPx = templateBuffer[pixelPos]; //RGBA\r\n\t\t\tvar templateFreezePx = templateFreeze[pixelPos]; //RGBA\r\n\t\t\tvar pxTemplate = Color.overlapSeveralArgbPremultiplied(\r\n\t\t\t\ttemplateBg,\r\n\t\t\t\ttemplateFreezePx,\r\n\t\t\t\ttemplateBufferPx);\r\n\r\n\t\t\tvar pxFreezeBg = freezeBgPixels[pixelPos];\r\n\t\t\tvar pxPageBuffer = pageBufferPixels[pixelPos];\r\n\r\n\t\t\tvar mixPixel = Color.overlapSeveralArgbPremultiplied(\r\n\t\t\t\tpxTemplate,\r\n\t\t\t\tpxPageBg,\r\n\t\t\t\tpxFreezeBg,\r\n\t\t\t\tpxPageBuffer,\r\n\t\t\t\tcanvasU32[pixelPos]);\r\n\r\n\t\t\treturn mixPixel;\r\n\t\t}\r\n\t\t \r\n\t\tfunction matchStartColor(pixelPos)\r\n\t\t{\r\n\t\t\treturn readPixel(pixelPos) == startRGB;\r\n\t\t}\r\n\t\t\r\n\t\tfunction applyCanvasData(){\r\n\t\t\tif (DOUBLE_DRAWING) {\r\n\t\t\t\tHtmlContext.putImageData(canvasData, 0, 0);\t//ok, now we have it in offscreen canvas, time to draw in WebGL:\r\n\t\t\t\tlet texture = PIXI.Texture.fromCanvas(HtmlCanvas);\r\n\t\t\t\ttexture.update();\r\n\t\t\t\tlet tmpSprite = new PIXI.Sprite(texture);\t\r\n\t\t\t\tApp.getRenderer().render(tmpSprite, canvasLayerTexture, true);\r\n\t\t\t} else {\r\n\t\t\t\t//let texture = PIXI.Texture.fromBuffer(canvasPixels, canvasWidth, canvasHeight); -- only starting from Pixi v5\r\n\r\n\t\t\t\t// in Safari 14, we can't reuse the canvas element\r\n\t\t\t\tconst tmpCanvas = document.createElement('canvas');\r\n\t\t\t\ttmpCanvas.width = canvasWidth;\r\n\t\t\t\ttmpCanvas.height = canvasHeight;\r\n\t\t\t\tlet canvasUint8Clamped = new Uint8ClampedArray(canvasPixels.buffer);\r\n\t\t\t\ttmpCanvas.getContext(\"2d\").putImageData(new ImageData(canvasUint8Clamped, canvasWidth, canvasHeight), 0, 0);\r\n\t\t\t\tlet texture = PIXI.Texture.fromCanvas(tmpCanvas);\t//pixi v4. v5, if we would use it, has a straighforward fromBuffer\r\n\t\t\t\tlet tmpSprite = new PIXI.Sprite(texture);\t\r\n\t\t\t\tApp.getRenderer().render(tmpSprite, canvasLayerTexture, true);\r\n\t\t\t\ttmpSprite.destroy(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\t\r\n\treturn {\r\n\t\t//_getGraphics: function(){return graphics;},\t//not used\r\n\t\t//_getCanvasLayer: function(){return canvasLayer;},\t//not used\r\n\t\t//getCanvasLayerTexture: function(){return canvasLayerTexture;},\r\n\t\tdrawLine,\r\n\t\tflushGraphics,\r\n\t\tdraw,\r\n\t\tclean,\r\n\t\tgetPixelAt,\t//from HtmlCanvas\r\n\t\tfloodFill,\r\n\t\tstampSprite,\r\n\t\t_debugDrawHtmlCanvas,\r\n\t\trenderToPageBgLayer,\r\n\t\t// initCanvas: initCanvas,\t//called after App.initCanvas\r\n\t}\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = CanvasDraw;\r\n","\"use strict\"\r\n/** DEPRECATED \r\n\tRemove from code\r\n\t**/\r\n/** constructor **/\r\n\r\n\r\n\r\n/** should contain codeObject.translatedCode = function* (global, obj){}; (generator!)\r\n**/\r\nvar CodeRunner = function(codeObject){\r\n\tvar helpers = require('./helpers.js');\r\n\thelpers.deprecated(\"CodeRunner is deprecated; remove reference!\");\r\n\t\r\n\tvar App = require('./App.js');\r\n\tvar Prims = require('./Prims.js');\r\n\tvar Globals = require('./Globals.js');\r\n\tvar LogoError = require('./LogoError.js');\r\n\r\n\tvar code;\t//initialized generator object! e.g. called *translatedCode()\r\n\tvar generatorFunction; //not initialized generator;\r\n\tvar codeState = {}; //return value of generator\r\n\tvar forever = false;\r\n\tthis.App = App;\r\n\tthis.Prims = Prims;\r\n\tthis.vars = Globals.vars;\r\n\tthis.userproc = Globals.userproc;\r\n\tthis._globals;\r\n\tthis._processContext;\r\n\tthis._obj;\r\n\t\r\n\t\r\n\tvar _this = this;\r\n\tvar _isRunning = false;\r\n\r\n\tthis.codeObject = codeObject;\r\n\tif (codeObject == undefined) {\r\n\t\tthis.codeObject = {\r\n\t\t\ttranslatedCode: this.getCodeStub(),\r\n\t\t\tforever: false,\r\n\t\t}\r\n\t}\r\n\t//add try-catch wrapper\r\n\tgeneratorFunction = function*(globals, processContext, obj){\r\n\t\ttry{\r\n\t\t\tyield* _this.codeObject.translatedCode(globals, processContext, obj);\r\n\t\t} catch (e) {\r\n\t\t\tLogoError.handleTopLevel(e);\r\n\t\t}\r\n\t}\r\n\tforever = _this.codeObject.forever || false;\r\n\r\n\t\r\n\t/** starts run cycle **/\r\n\t//TODO rename as 'start'\r\n\tthis.run = function(globals, processContext, obj){\r\n\t\tif (!globals) {globals = this.getGlobals();}\r\n\t\tif (!processContext) {processContext = this.newProcessContext(obj);}\r\n\t\tthis._processContext = processContext;\r\n\t\tthis._globals = globals;\r\n\t\tthis._obj = obj;\r\n\t\t_isRunning = true;\r\n\t\t//code(globals,obj);\tnow first-step run is in update\r\n\t\tcode = generatorFunction(globals,processContext,obj);\t//init generator object\r\n\t\tif (forever) {\r\n\t\t\tApp.getUpdateQueue().addRequest(this)\r\n\t\t} else {\r\n\t\t\t// should run once anyway\r\n\t\t\tApp.getUpdateQueue().addRequest(this)\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** single step in run cycle **/\r\n\tthis.update = function(){\r\n\t\tif (!this.isRunning()) {return}\r\n\t\tcodeState = code.next(codeState.value); //pass previous yield result\r\n\t\tif (codeState.done){\r\n\t\t\tif (forever == false){\r\n\t\t\t\tthis.stop();\r\n\t\t\t} else { //restart generator\r\n\t\t\t\tcode = generatorFunction(this._globals,this._processContext,this._obj);\r\n\t\t\t}\r\n\t\t} else {\t//now do magic with generators\r\n\t\t\t//well... actually, we do nothing! ^_^\r\n\t\t}\r\n\t\t\r\n\t\t//code(this._globals, this._obj);\tinstead we call generator.next()\r\n\t}\r\n\t\r\n\tthis.getLastValue = function(){\r\n\t\treturn codeState.value;\r\n\t}\r\n\t\r\n\t\r\n\t/** prototype to check plausibility of such external control \r\n\t\tUsed in TurtleProcRunner, to nest runner cycle */\r\n\tthis.runSubroutine = function(globals, processContext, obj){\r\n\t\tif (!globals) {globals = this.getGlobals();}\r\n\t\tif (!processContext) {processContext = this.newProcessContext(obj);}\r\n\t\tthis._processContext = processContext;\r\n\t\tthis._globals = globals;\r\n\t\tthis._obj = obj;\r\n\t\t_isRunning = true;\r\n\t\t//code(globals,obj);\tnow first-step run is in update\r\n\t\tcode = generatorFunction(globals,processContext,obj);\t//init generator object\r\n\t\t//App.getUpdateQueue().addRequest(this);\t<-- This is the difference! Update is manual, not by main update cycle!\r\n\t\t//return code;\r\n\t}\r\n\t/*\r\n\tthis.updateSubroutineGenerator = function(){\r\n\t\tif (!this.isRunning()) {return}\r\n\t\tcodeState = code.next(codeState.value); //pass previous yield result\r\n\t\tif (codeState.done){\t//forever is always false ASSERT\r\n\t\t\tthis.stop();\t//TODO return value\r\n\t\t} else {\r\n\t\t\t//well... actually, we do nothing! ^_^\r\n\t\t}\r\n\t}\r\n\t*/\r\n\t\r\n\t\r\n\t//one step now\r\n\t//TODO\r\n\tthis.runImmediately = function(globals, processContext, obj){\r\n/*\t\tthis.run(globals, processContext, obj);\r\n\t\t//remove planned update, run it now\r\n\t\tApp.getUpdateQueue().removeRequest(this)\r\n\t\tthis.update();\r\n*/\r\n\t}\r\n\t\r\n/*\r\n\t//HACK to run userproc in an already created CodeRunner.\r\n\t//Better to rewrite coroutines system, to make it more conscise.\r\n\tthis.runCode = function(globals, processContext, obj, codeFunc, args){\r\n\t\tvar wrapper = function* (globals, processContext, obj){\r\n\t\t\t//initialization boilerplate\r\n\t\t\tvar prims = processContext.prims;\r\n\t\t\tvar vars = globals.vars;\r\n\t\t\tvar userproc = globals.userproc;\r\n\t\t\tvar scope = vars.globalScope;\r\n\t\t\tyield* codeFunc(args);\r\n\t\t};\r\n\t\t_this.codeObject.translatedCode = wrapper;\r\n\t\tthis.run(globals, processContext, obj);\r\n\t}\r\n*/\r\n\t\r\n\t\r\n\tthis.isRunning = function(){\r\n\t\treturn _isRunning;\r\n\t}\r\n\t\r\n\tthis.stop = function(){\r\n\t\tApp.getUpdateQueue().removeRequest(this)\r\n\t\t_isRunning = false;\r\n\t}\r\n\t\r\n\t\r\n\r\n\tthis.getGlobals = function(){\r\n\t\treturn {\r\n\t\t\tApp: this.App,\r\n\t\t\t//ASSERT App != empty object\r\n\t\t\t//prims: this.Prims, \t\tprims now have to bind in process!\r\n\t\t\tuserproc: this.userproc,\r\n\t\t\tvars: this.vars,\r\n\t\t\tLogoError: LogoError,\r\n\t\t};\r\n\t}\r\n\r\n\tthis.newProcessContext = function(turtle){\r\n\t\t//var who = turtle && turtle.type == \"turtle\"? [turtle] : [];\t//disabled, because 'who' is set globally in click listener\r\n\t\tvar Globals = require('./Globals.js');\t//workaround\r\n\t\tvar who = Globals.vars.who.slice(); //clone who\t//TODO rework this. who is property of page, not globals!\r\n\t\tvar processContext = {\t//ProcessContext\r\n\t\t\tobj: turtle,\r\n\t\t\twho: who,\t\r\n\t\t\tcodeRunner: this,\r\n\t\t};\r\n\t\tvar prims = this.Prims.bindProcessContext(processContext);\r\n\t\tprocessContext.prims = prims;\r\n\t\treturn processContext;\r\n\t}\r\n}\r\n\r\n//^-- using existing codeRunner in runCode is a mistake, but we still need that wrapper to bind function arguments:\r\n//(arguments are binded, and new CodeRunner is created each time turtle procedure is called)\r\nCodeRunner.createWrapperForFunction = function(codeFunc, args){\r\n\tvar wrapper = function* (globals, processContext, obj){\r\n\t\t//initialization boilerplate\r\n\t\tvar prims = processContext.prims;\r\n\t\tvar vars = globals.vars;\r\n\t\tvar userproc = globals.userproc;\r\n\t\tvar scope = vars.globalScope;\r\n\t\tyield* codeFunc(args);\r\n\t};\r\n\tvar codeRunner = new CodeRunner({translatedCode:wrapper, forever: false});\r\n\treturn codeRunner;\r\n}\r\n\t\r\nCodeRunner.prototype.getCodeStub = function(){\r\n\tvar translatedCode = function* (globals, processContext, obj){\r\n\t\t//initialization boilerplate\r\n\t\tvar prims = processContext.prims;\r\n\t\tvar vars = globals.vars;\r\n\t\tvar userproc = globals.userproc;\r\n\t\tvar scope = vars.globalScope;\r\n\t};\r\n\treturn translatedCode;\r\n}\r\n\t\r\nmodule.exports = CodeRunner;","\"use strict\"\r\n/** singleton **/\r\nvar BinaryBlobs = require('./BinaryBlobs.js'); \r\nvar BinaryBlobsData = require('./BinaryBlobsData.js'); \r\nvar LogoError = require('./LogoError');\r\nvar TypeCheck = require('./TypeCheck');\r\n\r\n\r\nvar Color = function(){\r\n\tvar CITable;\t//Uint16Array\r\n\tvar CTable;\t//Uint32Array\r\n\t\r\n\t// the order must match colourNames, and nameFromIndex\r\n\t// may need a special handling\r\n\tvar colourValues = [\r\n\t\t9, 0, 5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135\r\n\t];\r\n\r\n\tvar colourNames;\r\n\r\n\tfunction getNames() {\r\n\t\treturn colourNames || (colourNames = primtips.sg.colournames.toLowerCase().split(' '));\r\n\t}\r\n\t\r\n\t/*\r\n\tto GetColorFromRGB :c\r\n\top quotient ew sum lsh (sum int mul .124 logand :c 0xff lsh int mul .124 logand lsh :c -8 0xff 5 lsh int mul .124 logand lsh :c -16 0xff 10) 1 : 10\r\n\tend\r\n\t*/\r\n\t/** byte order is RGBA (low to high), A is ignored **/\r\n\tfunction colorLogoFromRGB(argb){\r\n\t\tvar rgb = argb & 0xFFFFFF;\r\n\t\tvar index = (\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(Math.floor(0.124 * ((rgb >> 16) & 0xFF)) << 10) + \t//switched R and B //no, back again\r\n\t\t\t\t\t\t\t(Math.floor(0.124 * ((rgb >> 8) & 0xFF)) << 5) +\r\n\t\t\t\t\t\t\t(Math.floor(0.124 * ((rgb >> 0) & 0xFF)))\r\n\t\t\t\t\t\t) //<< 1 - used as word\r\n\t\t\t\t\t);\r\n\t\tvar ew = CITable[index];\r\n\t\tvar color = ew / 10;\r\n\t\treturn color;\r\n\t}\r\n\t//DEBUG\r\n\twindow.colorLogoFromRGB = colorLogoFromRGB;\r\n\t\r\n\t/*\r\n\tto GetRGB :n\r\n\tif eq :n : [op :]\r\n\tif not : [op el sum : remainder round mul 40 :n 5600]\r\n\tlet [rgb el sum : remainder round mul 40 :n 5600\r\n\t\t r shrink-color-value logand :rgb 0xff\r\n\t\t g shrink-color-value logand lsh :rgb -8 0xff\r\n\t\t b shrink-color-value logand lsh :rgb -16 0xff]\r\n\toutput (sum :r lsh :g 8 lsh :b 16)\r\n\tend\r\n\t\r\n\tto shrink-color-value :c\r\n\tif eq :c 0xff [output 0xff]\r\n\tif eq :c 0 [output 0]\r\n\toutput diff :c 1\r\n\tend\r\n\r\n\t*/\r\n\t//creates RGB (low to high)\r\n\tfunction colorRGBFromLogo(n){\r\n\t\t//color as name?\r\n\t\tif (isNaN(n)){\r\n\t\t\tlet ind = getNames().indexOf(n.toLowerCase());\r\n\t\t\tif (ind == -1)\r\n\t\t\t\tthrow new LogoError('errdnl', '', TypeCheck.getCompactedString(n));\r\n\r\n\t\t\tn = colourValues[ind];\r\n\t\t} else {\r\n\t\t\tn = TypeCheck.getNumber(n);\r\n\t\t}\r\n\t\t\r\n\t\t//convert to rgb\r\n\t\tfunction shrinkColorValue(c){\r\n\t\t\tif (c == 0xff) {return 0xff;}\r\n\t\t\tif (c == 0) {return 0;}\r\n\t\t\treturn c - 1;\r\n\t\t}\r\n\t\tvar rgb = CTable[Math.floor(Math.round(40*n) % 5600 /4)];\r\n\t\tvar r = shrinkColorValue(rgb & 0xff);\r\n\t\tvar g = shrinkColorValue((rgb >> 8) & 0xff);\r\n\t\tvar b = shrinkColorValue((rgb >> 16) & 0xff);\r\n\t\tvar color = (b << 16) + (g << 8) + (r);\r\n\t\treturn color;\r\n\t}\r\n\t//DEBUG\r\n\twindow.colorRGBFromLogo = colorRGBFromLogo;\r\n\t\r\n\t/** changes byte order */\r\n\tfunction flipARGB(rgb){\r\n\t\tvar r = (rgb & 0xff);\r\n\t\tvar g = ((rgb >> 8) & 0xff);\r\n\t\tvar b = ((rgb >> 16) & 0xff);\r\n\t\tvar a = ((rgb >> 24) & 0xff);\r\n\t\tvar color = ((a << 24) + (r << 16) + (g << 8) + (b)) >>>0;\r\n\t\treturn color;\r\n\t}\r\n\t\r\n\tfunction addAlphaByte(alpha, rgb){\r\n\t\tvar color = (rgb + (alpha << 24)) >>>0;\r\n\t\treturn color;\r\n\t}\r\n\t\r\n\tfunction setAlphaByte(alpha, argb){\r\n\t\tvar color = ((argb & 0x00ffffff) | (alpha << 24)) >>>0;\r\n\t\treturn color;\r\n\t}\r\n\t\r\n\tfunction removeAlphaByte(rgb){\r\n\t\tvar color = (rgb & 0x00ffffff) >>>0;\r\n\t\treturn color;\r\n\t}\r\n\t\r\n\tfunction readAlphaByte(rgb){\r\n\t\tvar alpha = ((rgb >> 24) & 0xff);\r\n\t\treturn alpha;\r\n\t}\r\n\t\r\n\t//no more a promise\r\n\tfunction initCITable(){\r\n// no file loading for now because of cross-origin restrictions */\t\t\t\r\n/*\t\t\tvar url = \"Citable\";\r\n\t\t\tFileLoader.readFileAsArrayBuffer(url).then(function(response){\r\n\t\t\t\tCITable = new Uint16Array(response);\r\n\t\t\t\tresolve();\r\n\t\t\t}, function(error) {\r\n\t\t\t\tconsole.log(error);\t\r\n\t\t\t\treject(error);\t\r\n\t\t\t});\r\n*/\r\n\t\tCITable = new Uint16Array(BinaryBlobs.toByteArray(BinaryBlobsData.CITable).buffer);\r\n\t}\r\n\t\r\n\t//no more a promise\r\n\tfunction initCTable(){\r\n\t\tvar _this = this;\r\n// no file loading for now because of cross-origin restrictions */\t\t\t\t\t\t\r\n/*\t\t\tvar url = \"Ctable\";\r\n\t\t\tFileLoader.readFileAsArrayBuffer(url).then(function(response){\r\n\t\t\t\tCTable = new Uint32Array(response);\r\n\t\t\t\tresolve();\r\n\t\t\t}, function(error) {\r\n\t\t\t\tconsole.log(error);\t\r\n\t\t\t\treject(error);\t\r\n\t\t\t});\r\n*/\r\n\t\tCTable = new Uint32Array(BinaryBlobs.toByteArray(BinaryBlobsData.CTable).buffer);\r\n\t}\r\n\t\r\n\t/** While input is premultiplied pixels, output is not!\t*/\r\n\tfunction overlapArgbPixelsPremultiplied(pxTop, pxUnder){\r\n\t\tvar pxTopB = pxTop & 0xff;\r\n\t\tvar pxTopG = (pxTop & 0xff00) >>> 8;\r\n\t\tvar pxTopR = (pxTop & 0xff0000) >>> 16;\r\n\t\tvar pxTopA = (pxTop & 0xff000000) >>> 24;\r\n\t\t\r\n\t\tvar pxUnderB = (pxUnder & 0xff) >>> 0;\r\n\t\tvar pxUnderG = (pxUnder & 0xff00) >>> 8;\r\n\t\tvar pxUnderR = (pxUnder & 0xff0000) >>> 16;\r\n\t\tvar pxUnderA = (pxUnder & 0xff000000) >>> 24;\r\n\t\t\r\n\t\t/* non-premultiplied alpha\r\n\t\tvar pxSumB = ((pxTopB * pxTopA/255) + (pxUnderB * pxUnderA * (255 - pxTopA) / (255*255))) >>> 0;\r\n\t\tvar pxSumG = ((pxTopG * pxTopA/255) + (pxUnderG * pxUnderA * (255 - pxTopA) / (255*255))) >>> 0;\r\n\t\tvar pxSumR = ((pxTopR * pxTopA/255) + (pxUnderR * pxUnderA * (255 - pxTopA) / (255*255))) >>> 0;\r\n\t\tvar pxSumA = (pxTopA + (pxUnderA * (255 - pxTopA) / 255)) >>> 0;\r\n\t\t*/\r\n\t\t//premultiplied alpha\r\n\t\tvar pxSumB = ((pxTopB) + (pxUnderB * (255 - pxTopA) / (255))) >>> 0;\r\n\t\tvar pxSumG = ((pxTopG) + (pxUnderG * (255 - pxTopA) / (255))) >>> 0;\r\n\t\tvar pxSumR = ((pxTopR) + (pxUnderR * (255 - pxTopA) / (255))) >>> 0;\r\n\t\tvar pxSumA = (pxTopA + (pxUnderA * (255 - pxTopA) / 255)) >>> 0;\r\n\r\n\t\t\r\n\t\tvar pxSum = (pxSumB | (pxSumG << 8) | (pxSumR << 16) | (pxSumA << 24)) >>> 0;\r\n\t\treturn pxSum;\r\n\t}\r\n\t\r\n\t/** variable number of arguments, from bottom to top\r\n\t\tWhile input is premultiplied pixels, output is not!\t*/\r\n\tfunction overlapSeveralArgbPremultiplied(){\r\n\t\t//ASSERT\r\n\t\tif (arguments.length < 1) {throw new Error(\"ASSERT error\")}\r\n\r\n\t\tvar mix = arguments[0];\r\n\t\tfor (let i = 1; i < arguments.length; i++)\r\n\t\t\tmix = overlapArgbPixelsPremultiplied(arguments[i], mix);\r\n\r\n\t\treturn mix;\r\n\t}\r\n\t\r\n\t//TODO localization\r\n\t/** throws LogoError */\r\n\tfunction checkLogoColor(value, prim_name){\r\n\t\tlet color;\r\n\t\tif (TypeCheck.getType(value) === \"number\"){\r\n\t\t\tcolor = TypeCheck.getNumber(value, '', [0, 'errminval'], [9999, 'errmaxval']);\r\n\t\t} else if (TypeCheck.getType(value) == \"word\") {\r\n\t\t\tcolor = getNames().indexOf(TypeCheck.getCompactedString(value).toLowerCase());\r\n\t\t}\r\n\r\n\t\tTypeCheck.assert(color !== -1 && color !== undefined, this, 'errdnl', '', TypeCheck.getCompactedString(value));\r\n\t}\r\n\t\r\n\tfunction index16FromLogoColor(c){\r\n\t\tlet index;\r\n\t\tif (c == 0) { index = 1}\r\n\t\telse if (c == 9) {index = 0}\r\n\t\telse {index = 2 + Math.floor(c / 10);}\r\n\t\treturn index;\r\n\t}\r\n\r\n\tfunction nameFromLogoColor(c){\r\n\t\tlet index=index16FromLogoColor(c);\r\n\t\treturn nameFromIndex(index);\r\n\t}\r\n\r\n\tfunction nameFromIndex(i){\r\n\t\tif (i > 2) i++; // grey appears twice\r\n\t\treturn getNames()[i];\r\n\t}\r\n\t\r\n\treturn {\r\n\t\tinitCITable,\t//Promise\r\n\t\tinitCTable,\t//Promise\r\n\t\t_getCITable: () => {return CITable},\r\n\t\t_getCTable: () => {return CTable},\r\n\t\tcolorLogoFromRGB,\r\n\t\tcheckLogoColor,\r\n\t\tcolorRGBFromLogo,\r\n\t\toverlapSeveralArgbPremultiplied,\r\n\t\tflipARGB,\r\n\t\taddAlphaByte,\r\n\t\tsetAlphaByte,\r\n\t\treadAlphaByte,\r\n\t\tremoveAlphaByte,\r\n\t\tindex16FromLogoColor,\r\n\t\tnameFromLogoColor,\r\n\t\tnameFromIndex,\r\n\t}\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = Color();","\"use strict\"\r\n/** constructor **/\r\n\r\nconst LogoError = require('./LogoError.js');\r\nconst Translator = require('./Translator');\r\nconst ParseProc = require('./parser/ParseProc');\r\n\r\n\r\n/** \r\n\tsends LogoCode (event strings and procedures) to Translator, and executes them\r\n*/\r\nfunction CommandCenter(name){\r\n\t\r\n\tlet App = require('./App.js');\r\n\tlet LogoCoroutine = require('./LogoCoroutine');\r\n\tlet ToggledTrackerMixin = require('./ToggledTrackerMixin');\r\n\r\n\tthis.cleanUp = function() {\r\n\t\tif (window.cleanupLine) window.cleanupLine(this.editor);\r\n\t}\r\n\t\r\n\tthis.runLCU = function(lcu){\r\n\t\tApp.getProject().SavePageState();\r\n\t//\tconsole.log('SAVE STATE');\r\n\t\tlcu.editor = this.editor;\r\n\t\tif (this.scope)\r\n\t\t\tlcu.scope = [this.scope];\r\n\r\n\t\tthis.onClickCor = new LogoCoroutine(lcu, this.name + \" runLine \");//+lcu._originalJsString.slice(0,40));\r\n\t\tthis.toggleTracker.click();\r\n\t}\r\n\r\n\tthis.setViewPressed = function(b) {\r\n\t\tif (!b)\r\n\t\t\tthis.cleanUp();\r\n\t}\r\n\r\n\tthis.getLogoContext = function() {\r\n\t\treturn this.logoContext || App.getProject().getCurrentPage().getMutableLogoContext();\r\n\t}\r\n\t\r\n\tthis.initAfterRestore = function(){\r\n\t\t//initLogoContext();\r\n\t}\r\n\t\r\n\tthis.send = function(logoString){\r\n\t\ttry {\r\n\t\t\tvar lcu = Translator.translateToLCU(logoString);\t//throws LogoError\r\n\t\t\tself.runLCU(lcu);\r\n\t\t} catch (e) {\r\n\t\t\tLogoError.handleTopLevel(e, this.editor);\r\n\t\t\tthis.cleanUp();\r\n\t\t}\r\n\t}\r\n\r\n\tthis.sendProcs = function(text) {\r\n\t\tlet globs = App.getProject().getGlobals();\r\n\t\tif (text != undefined)\r\n\t\t\tglobs.setActiveText(text);\r\n\r\n\t\ttry {\r\n\t\t\tlet procDescrList = [];\r\n\t\t\tglobs.userproc.raw.forEach(x => {\r\n\t\t\t\tlet l = ParseProc.parseProcList(x.text, x.id);\r\n\t\t\t\tprocDescrList = procDescrList.concat(l);\r\n\t\t\t});\r\n\r\n\t\t//\tif (!procDescrList.length)\r\n\t\t//\t\treturn;\r\n\r\n\t\t\tlet failedMessage = [];\r\n\t\t\tlet failed = globs.loadProcedures(procDescrList, text); // add proc definitions first\r\n\t\t\tfailed.map((f) => {\r\n\t\t\t\tlet e = new LogoError('erriap', '', '', f.proc.name);\r\n\t\t\t\tif (f.user.procProperties)\r\n\t\t\t\t\te.setErrorLine(f.user.procProperties.linestart, f.user.procProperties.tab);\r\n\r\n\t\t\t\tfailedMessage.push(e.message);\r\n\t\t\t\tprocDescrList.splice(procDescrList.indexOf(f), 1);\r\n\t\t\t});\r\n\r\n\t\t\tif (failedMessage.length && window.showLine)\r\n\t\t\t\twindow.showLine(this.editor, failedMessage.join('\\n'), true);\r\n\r\n\t\t\tlet listToLoad = [];\r\n\t\t\tfor (let procDescr of procDescrList){\r\n\t\t\t\tprocDescr.lcu = Translator.translateProcToCode(procDescr);\t//throws LogoError\r\n\t\t\t\tlistToLoad.push(procDescr);\r\n\t\t\t}\r\n\r\n\t\t\tglobs.loadProcedures(listToLoad, text);\t//lcu is created here; all procedure details will be in lcu.procProperties;\r\n\t\t} catch (e) {\r\n\t\t\tLogoError.handleTopLevel(e, this.editor);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.stopCommandCentre = function() {\r\n\t\tif (self.toggleTracker._pressedState)\r\n\t\t\tself.toggleTracker.click();\r\n\t};\r\n\t\r\n\t\r\n\r\n\t//CONSTRUCTOR\r\n\tlet self = this;\r\n\tthis.name = name;\r\n\tthis.toggleTracker = new ToggledTrackerMixin(this, false);\r\n}\r\n\t\r\nmodule.exports = CommandCenter;\r\n","'use strict'\r\n/** singleton */\r\n\r\nconst Coroutine = require('./Coroutine');\r\nconst helpers = require('./helpers');\r\nconst LogoError = require('./LogoError');\r\nconst logger = require('./logger');\r\nconst App = require('./App');\r\nconst Debugger = require('./Debugger');\r\n\r\n/** execute one step of object code **/\r\nconst updateQueue = []; //Coroutine\r\n\r\nupdateQueue.addRequest = function(coroutine){\r\n\tthis.push(coroutine);\r\n}\r\n\r\nupdateQueue.removeRequest = function(coroutine){\r\n\tvar index = this.indexOf(coroutine);\r\n\tif (index != -1) {\r\n\t\tif (this.savedPosition > index){\r\n\t\t\tthis.savedPosition--;\r\n\t\t}\r\n\t\tthis.splice(index, 1);\r\n\t}\r\n}\r\nupdateQueue.savedPosition = 0;\r\nupdateQueue.debugPrint = function(){\r\n\tfor (let i=0; i x._name.indexOf('debugcc') > -1);\r\n\t\t\t\tif (!coroutine)\r\n\t\t\t\t\treturn true;\r\n\r\n\t\t\t\tlet wasUpdated;\r\n\t\t\t\ttry {\r\n\t\t\t\t\twasUpdated = coroutine.runStep();\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tcoroutine.handleError(e);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Debugger._appPaused)\r\n\t\t\t\t\tupdateQueue.savedPosition++;\r\n\r\n\t\t\t\tif (wasUpdated) {taskCounter++;}\r\n\t\t\t\tvar timestamp = performance.now();\r\n\t\t\t\tif (timestamp - timestampStart > simulationTimestepMs) {\t//maybe change SIMULATION_TIMESTEP to variable for more fine-tuning\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (updateQueue.savedPosition >= updateQueue.length) {\t//if normal exit\r\n\t\t\t\tupdateQueue.savedPosition = 0;\r\n\t\t\t\tupdatesCounter++;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t}\r\n\r\n\tfor (let i = 0; i < maxUpdateIterations; i++){\r\n\t\tif (iterateQueue())\r\n\t\t\tbreak;\r\n\t}\r\n\t\r\n\treturn {taskCounter, updatesCounter};\r\n}\r\n\r\n\r\n/** should be general enough to support plain Coroutines. All Logo extra should be serviced by LogoCoroutines. */\r\nconst CorDispatcher = function(){\r\n\tthis.runUpdateCycle = runUpdateCycle;\r\n\tthis.getDragPause = () => dragPause;\r\n\tthis.setDragPause = (c) => dragPause = c;\r\n\tthis._getUpdateQueue = () => updateQueue;\r\n\t\r\n\tthis.stopAll = function(){\r\n\t\t//iterate over a shallow clone:\r\n\t\thelpers.mutationMap(updateQueue,\r\n\t\t\t(cor)=>{cor.stop()}\t\t//will take care of onTimer plain Coroutine too\r\n\t\t);\r\n\t\t\r\n\t\t//stop all processes, which don't register in updateQueue (like sound buttons):\r\n\t\tApp.stopAllObjects();\r\n\t}\r\n\t\r\n\t\r\n/////////// Interface for Coroutine ////////////////////////\r\n\t\r\n\t/** runs one step in coroutine immediately! \r\n\t\tSo this step is synchronous and will not be accounted in task counters. */\r\n\t// Is it wise? we can get overloaded by events.\r\n\tthis.coroutineStarted = function(coroutine){\r\n\t\tupdateQueue.addRequest(coroutine);\r\n\t\t\r\n\t\tif (coroutine.getCorContext().runImmediately) {\r\n\t\t\tcoroutine.runStep();\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.coroutineUpdated = function(coroutine){\r\n\t\t//do nothing\r\n\t}\r\n\t\r\n\t//generator ended\r\n\tthis.coroutineEnded = function(coroutine){\r\n\t\tupdateQueue.removeRequest(coroutine);\r\n\t\tlet corContext = coroutine.getCorContext();\r\n\t\tif (corContext.forever) {\r\n\t\t\tcorContext.runImmediately = false; //we may need it at the beginning of event, not between `forever` cycles.\r\n\t\t\tcoroutine.start(corContext);\r\n\t\t}\r\n\t}\r\n\t\r\n\t//manual stop was done\t-- also triggers on stopAll and exceptions. Should we distinguish these cases?\r\n\t//stopping dependent coroutines in turtle proc was moved to turtle proc code, now it's called explicitly\r\n\tthis.coroutineStopped = function(coroutine){\r\n\t\tthis.stopDependentCoroutines(coroutine);\r\n\t\tupdateQueue.removeRequest(coroutine);\r\n\t}\r\n\t\r\n\t//used by turtle parallel procedures, if error arises\r\n\tthis.stopDependentCoroutines = function(coroutine){\r\n\t\tlet corContext = coroutine.getCorContext();\r\n\t\tif (corContext && corContext.dependentCoroutines) {\r\n\t\t\thelpers.mutationMap(corContext.dependentCoroutines,\t//we will modify the list we iterate on\r\n\t\t\t\t(cor) => {\r\n\t\t\t\t\tcor.stop();\r\n\t\t\t\t\tcorContext.dependentCoroutines = corContext.dependentCoroutines.filter(e => e != cor);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.coroutinePaused = function(coroutine){\r\n\t\t//do nothing - pause is treated in Coroutine\r\n\t}\r\n\t\r\n\tthis.coroutineResumed = function(coroutine){\r\n\t\t//do nothing - pause is treated in Coroutine\r\n\t}\r\n\t\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = new CorDispatcher();\r\n\r\n","'use strict'\r\n\r\nconst LogoError = require('./LogoError');\r\nconst TypeCheck = require('./TypeCheck');\r\nconst Globals = require('./Globals');\r\nconst Debugger = require('./Debugger');\r\n\r\n/** \r\n\tQuite generic coroutine interface. Use LogoCoroutine wrapper instead for convenience.\r\n\tIt is intended to be used with our specific coroutine dispatcher (CorDispatcher),\r\n\tand LogoCodeUnit, but designed as stand-alone and agnostic to generatorFunction implementation.\r\n\tCorContext is used to supply user data when starting coroutine.\r\n\t\r\n**/\r\n\r\n//TODO think about moving from explicit dispatcher calls to promises.\r\n//LogoCoroutine already utilizes promisies, while Coroutine is not.\r\n\r\n/** generatorFunction should take CorContext as input, if it wants to have connection to outside world :) \r\n\ti.e. generatorFunction = function*(corContext){ let field = corContext.field; ....}\t**/\r\nclass Coroutine {\r\n\tconstructor(generatorFunction){\r\n\t\tthis._generatorFunction = generatorFunction;\r\n\t\tthis._dispatcher = undefined;\r\n\t\tthis._isRunning = false;\r\n\t\tthis._isPaused;\r\n\t\tthis.context = undefined;\r\n\t\tthis.lastGenState = {};\r\n\t\tthis.stack = [];\r\n\t\tthis.carefullyStack = [this.handleTopLevel];\r\n\t}\r\n\t\r\n\t/** doesn't begin to run by itself! Call `runStep` afterwards if immediate execution is desired */\r\n\tstart(corContext){\r\n\t\tthis.context = corContext;\r\n\t\tcorContext.coroutine = this;\r\n\t\tthis._genObject = [this.lcu.parser.clone().nextStep()];\r\n\t\tthis._isRunning = true;\r\n\t\tthis._isPaused;\r\n\r\n\t\tconst Prims = require('./Prims');\r\n\t\tthis.prims = Prims.bindProcessContext(this.context);\r\n\t\tif (this._dispatcher) {this._dispatcher.coroutineStarted(this);}\r\n\t\t//this.runStep();\r\n\t}\r\n\r\n\tcollectArgs(argsNum, name) {\r\n\t\tlet args = [];\r\n\t\tlet num = Math.abs(argsNum);\r\n\t\tif (argsNum < 0) {\r\n\t\t\tlet a;\r\n\t\t\tfor (a = this.stack.pop(); a !== undefined && (a.type || 'v') != 'ipm'; a = this.stack.pop(), --num)\r\n\t\t\t\targs.unshift(a);\r\n\r\n\t\t\tif (a.num && num > 0)\r\n\t\t\t\tthrow new LogoError('errnmi', name);\r\n\r\n\t\t\targs.push(this.lcu);\r\n\t\t\treturn args;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < argsNum; i++) {\r\n\t\t\tlet a = this.stack.pop();\r\n\t\t\tif (a === undefined)\r\n\t\t\t\tthrow new LogoError('errnmi', name);\r\n\r\n\t\t\targs.unshift(a);\r\n\t\t}\r\n\r\n\t\targs.push(this.lcu);\r\n\t\treturn args;\r\n\t}\r\n\r\n\t_endUserProc() {\r\n\t\twhile (this.lcu.scope.length && !this.lcu.scope[0].ufun)\r\n\t\t\tthis.lcu.scope.shift();\r\n\r\n\t\tthis.lcu.scope.shift();\r\n\r\n\t\tlet g = this._genObject[this._genObject.length - 1];\r\n\t\twhile (!g.ufun) {\r\n\t\t\tg = this._genObject.pop();\r\n\t\t}\r\n\r\n\t\treturn { done: true };\r\n\t}\r\n\r\n\t_unwind() {\r\n\t\tthis.carefullyStack.shift();\r\n\r\n\t\twhile (this.lcu.scope.length && !this.lcu.scope[0].carefully)\r\n\t\t\tthis.lcu.scope.shift();\r\n\r\n\t\tthis.lcu.scope.shift();\r\n\r\n\t\twhile (this.stack.length && !this.stack[this.stack.length - 1].val)\r\n\t\t\tthis.stack.pop();\r\n\r\n\t\tthis.stack.pop();\r\n\r\n\t\tlet g = this._genObject[this._genObject.length - 1];\r\n\t\twhile (!g.carefully) {\r\n\t\t\tg = this._genObject.pop();\r\n\t\t}\r\n\r\n\t\tthis._genObject.pop();\r\n\t\tthis._genObject.push(g.fallback);\r\n\t}\r\n\r\n\t_unwindStack() {\r\n\t\twhile (this.lcu.scope.length && !this.lcu.scope[0].carefully)\r\n\t\t\tthis.lcu.scope.shift();\r\n\r\n\t\tthis.lcu.scope.shift();\r\n\r\n\t\tlet len = this.stack.length;\r\n\t\tfor (let i = len - 1; i >= 0; i--) {\r\n\t\t\tif (this.stack[i].val == 'carefully') {\r\n\t\t\t\tif (i == this.stack.length - 1) {\r\n\t\t\t\t\tthis.stack.pop();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// if the \"carefully\" is not at the top of the stack then\r\n\t\t\t\t\tthis.stack.splice(i + 2, len); // leave the first elem after \"carefully\" at the top\r\n\t\t\t\t\tthrow new LogoError('errwtd', '', TypeCheck.getCompactedString(this.stack.pop()));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn { done: true };\r\n\t}\r\n\r\n\tcheckDebugger(symb) {\r\n\t\tlet val = symb.value;\r\n\t\tlet r = val.line && !symb.nodebug && Debugger.pausedAt(val, this);\r\n\t\tif (r) {\r\n\t\t\tsymb.nodebug = true;\r\n\t\t\tthis._genObject.push({ next: () => { this._genObject.pop(); return symb; }})\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\tdoStep(symb) {\r\n\t\tlet val = symb.value;\r\n\t\tLogoError.current = val;\r\n\t\tif (val.direct) {\r\n\t\t\tlet r = this.prims[val.root];\r\n\t\t\tthis.stack.push(r.apply(this.prims, []));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch (val.type) {\r\n\t\t\tcase 'sym':\r\n\t\t\tcase 'number':\r\n\t\t\t\tlet v = TypeCheck.trimVerticalBars(val.root, false);\r\n\t\t\t\tif (v[0] == '\"')\r\n\t\t\t\t\tv = v.substr(1);\r\n\t\t\t\telse if (v[0] == ':') {\r\n\t\t\t\t\tif (this.checkDebugger(symb))\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\tv = this.lcu.getScope().thing(v.substr(1));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.stack.push(v);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'List2Arr':\r\n\t\t\tcase 'ipm':\r\n\t\t\t\tthis.stack.push(val);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'stop':\r\n\t\t\t\tthis._endUserProc();\r\n\t\t\t\tif (undefined !== val.v)\r\n\t\t\t\t\tthis.stack.push(val.v);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'carefully':\r\n\t\t\t\tthis.carefullyStack.unshift(this.handleCarefully);\r\n\t\t\t\tthis.lcu.newScope({ carefully: true });\r\n\t\t\t\tthis.stack.push({ val: 'carefully' });\r\n\t\t\t\tthis._genObject.push({ carefully: true, next: () => this._unwindStack(), fallback: val.fallback });\r\n\t\t\t\tthis._genObject.push(val.next);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tif (this.checkDebugger(symb))\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tlet token = val.root.toUpperCase();\r\n\t\t\t\tif (token.startsWith(\"|\") && token.endsWith(\"|\"))\r\n\t\t\t\t\ttoken = token.substring(1, token.length - 1);\r\n\r\n\t\t\t\tlet r = this.prims[primtips.trans[token]];\r\n\t\t\t\tif (r) {\r\n\t\t\t\t\tlet argsNum = primtips.prefix[token];\r\n\t\t\t\t\tr = r.apply(this.prims, this.collectArgs(argsNum, val.root));\r\n\t\t\t\t\tif (r !== undefined)\r\n\t\t\t\t\t\tif (r.next)\r\n\t\t\t\t\t\t\tthis._genObject.push(r);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tthis.stack.push(r);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tr = Globals.userproc.get(token);\r\n\t\t\t\t\tif (!r) {\r\n\t\t\t\t\t\tr = Globals.objproc.get(token);\r\n\t\t\t\t\t\tif (!r)\r\n\t\t\t\t\t\t\tthrow new LogoError('errdkh', val.root);\r\n\r\n\t\t\t\t\t\tr = r.js(this.prims, this.collectArgs(r.argsnum, val.root));\r\n\t\t\t\t\t\tif (r !== undefined)\r\n\t\t\t\t\t\t\tif (r.next)\r\n\t\t\t\t\t\t\t\tthis._genObject.push(r);\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\tthis.stack.push(r);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.lcu.newScope({ ufun: val.root });\r\n\t\t\t\t\tthis._genObject.push({ ufun: val.root, next: () => this._endUserProc(), proc: r.procProperties });\r\n\t\t\t\t\tthis._genObject.push(r.parser.clone().nextStep());\r\n\t\t\t\t\tthis.lcu.newScope();\r\n\t\t\t\t\tlet argValues = this.collectArgs(r.procProperties.argsnames.length, val.root);\r\n\t\t\t\t\targValues.pop(); // lcu is unused in this case\r\n\t\t\t\t\tthis.lcu.getScope().setArgs(r.procProperties.argsnames, argValues);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/** returns false if there was no update */\r\n\trunStep(){\r\n\t\tif (Date.now() < this._isPaused) {return false;}\r\n\r\n\t\tlet symb = {};\r\n\t\t\t// TODO: figure out the case when this condition is true\r\n\t\t\t// if (!this._genObject.length) {\r\n\t\t\t// \tthis.ended();\r\n\t\t\t// \treturn true;\r\n\t\t\t// }\r\n\r\n\t\t\tsymb = this._genObject[this._genObject.length - 1].next();\r\n\t\t\tif (symb.done) {\r\n\t\t\t\tthis._genObject.pop();\r\n\r\n\t\t\t\tif (!this._genObject.length) {\r\n\t\t\t\t\tif (this.stack.length)\r\n\t\t\t\t\t\tthrow new LogoError('errwtd', '', TypeCheck.getCompactedString(this.stack.pop()));\r\n\r\n\t\t\t\t\tif (this._forever)\r\n\t\t\t\t\t\tthis._genObject.push(this._logoCodeUnit.parser.nextStep());\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthis.ended();\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\tif (symb.value)\r\n\t\t\tthis.doStep(symb);\r\n\r\n\t\tif (this._dispatcher) {this._dispatcher.coroutineUpdated(this);}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tget handleError() {\r\n\t\treturn this.carefullyStack[0];\r\n\t}\r\n\r\n\tget currentProc() {\r\n\t\tfor (let i = this._genObject.length - 1; i >= 0; i--) {\r\n\t\t\tif (this._genObject[i].ufun) {\r\n\t\t\t\treturn this._genObject[i].proc.name;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandleTopLevel(e) {\r\n\t\tif (e.setProcName) e.setProcName(this.currentProc);\r\n\t\tLogoError.handleTopLevel(e);\r\n\t\tthis.stop(\"error\");\r\n\t}\r\n\r\n\thandleCarefully(e) {\r\n\t\tif (e.setProcName) e.setProcName(this.currentProc);\r\n\t\tGlobals.properties.errormessage = e.message;\r\n\t\tthis._unwind();\r\n\t}\r\n\t\r\n\t/** called when generator finishes */\r\n\tended(){\r\n\t\tthis._isRunning = false;\r\n\t\tthis.unpause();\r\n\t\tif (this._dispatcher) {this._dispatcher.coroutineEnded(this);}\r\n\t\treturn this.lastGenState.value;\r\n\t}\r\n\t\r\n\t/** call this to stop manually **/\r\n\tstop(){\r\n\t\tthis._isRunning = false;\r\n\t\tthis.unpause();\r\n\t\tif (this._dispatcher) {this._dispatcher.coroutineStopped(this);}\r\n\t\tDebugger.continueExecution();\r\n\t\treturn this.lastGenState.value;\r\n\t}\r\n\t\r\n\tisRunning(){\r\n\t\treturn this._isRunning;\r\n\t}\r\n\t\r\n\t\r\n\t/** remains in dispatcher queue, but do nothing for delay.\r\n\t\tCan be set before coroutine started! */\r\n\tsleep(time){\r\n\t\tthis._isPaused = time;\r\n\t}\r\n\t\r\n\tpause(){\r\n\t\tthis._isPaused = Date.now() + 31536000; // next step is in a year\r\n\t}\r\n\t\r\n\tunpause(){\r\n\t\tthis._isPaused = Date.now() - 1000;\r\n\t}\r\n\t\r\n\t/** \r\n\t\tdispatcher should have:\r\n\t\t\t- coroutineStarted(coroutine)\r\n\t\t\t- coroutineUpdated(coroutine)\r\n\t\t\t- coroutineEnded(coroutine)\r\n\t\t\t- coroutineStopped(coroutine)\r\n\t\t\t- coroutinePaused(coroutine);\r\n\t\t\t- coroutineResumed(coroutine);\r\n\t*/\r\n\tregisterDispatcher(dispatcher){\r\n\t\tthis._dispatcher = dispatcher;\r\n\t}\r\n\t\r\n\tgetCorContext(){\r\n\t\treturn this.context;\r\n\t}\r\n\t\r\n\t/** custom fields (like logoContext) added to this object */\r\n\tstatic newCorContext(name){\r\n\t\treturn {\r\n\t\t\tname:name, \r\n\t\t};\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = Coroutine;","\"use strict\"\r\n/** singleton **/\r\n\r\n\r\nvar DebugConsole = function(){\r\n\tvar App = require('./App.js');\r\n\tvar Color = require('./Color.js');\r\n\tvar helpers = require('./helpers.js');\r\n\tvar BinaryBlobs = require('./BinaryBlobs.js');\r\n\tvar BinaryBlobsData = require('./BinaryBlobsData.js');\r\n\tvar Assets = require('./Assets.js');\r\n\tvar PIXI = require('pixi.js');\r\n\tvar logger = require('./logger');\r\n\tvar Options = require('./Options');\r\n\twindow.helpers = helpers;\r\n\twindow.App = App;\r\n\twindow.Color = Color;\r\n\twindow.BinaryBlobs = BinaryBlobs;\r\n\twindow.BinaryBlobsData = BinaryBlobsData;\r\n\twindow.Assets = Assets;\r\n\twindow.PIXI = PIXI;\r\n\twindow._logoObjectsCreator = require('./LogoObjectsCreator');\r\n\twindow.logger = logger;\r\n\twindow.Options = Options;\r\n\t\r\n\t\r\n\t//window.ShapeList = require('./ShapeList.js');\r\n\t//use App.getGlobalShapes();\r\n\r\n\t//window.CTable = Color._getCTable();\r\n\t//window.CITable = Color._getCITable();\r\n}\r\n\r\n\r\nmodule.exports = new DebugConsole();","'use strict'\r\n/** singleton **/\r\n\r\nconst logger = require('./logger');\r\nconst MapCaseInsensitive = require('./MapCaseInsensitive');\r\n\r\n\r\n//TODO pause all coroutines - it will require some careful work with the ones that already pause themselves, and ones that unpause on promises\r\n//good way to do it is to introduce global pause (like already existing dragPause)\r\nconst Debugger = function(){\r\n\t\r\n\t/** \r\n\t\tprocName -> breakpoint details (bpDescription): \r\n\t\t{\r\n\t\t\t- name (again, for convenience)\r\n\t\t\t- line (in proc breakpoint, `to` line)\r\n\t\t\t- coroutine (when paused on breakpoint)\r\n\t\t\t- status ('paused', 'unpaused')\r\n\t\t}\r\n\t\t\r\n\t**/\r\n\tthis._procBreakpoints = {};\r\n\tthis._currentCoroutine = undefined;\t//the one we are paused in (coroutine itself is not paused!)\r\n\tthis._appPaused = false;\t//global stop flag which is checked in main cycle\r\n\tthis._pauseBreakpoint = undefined;\t//bpDescription\r\n\tthis._scope = undefined;\t//variables\r\n\t\r\n\tvar _procBpCallback;\r\n\t\r\n\t\r\n\tthis.getProcByLine = function(tab, lineNum) {\r\n\t\tlet entries = App.getProject().getGlobals().userproc.entries();\r\n\t\tfor (let [key, lcu] of entries) {\r\n\t\t\tlet prop = lcu.procProperties;\r\n\t\t\tif (prop && prop.tab == tab && prop.linestart < lineNum && lineNum <= prop.lineend)\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tfunction newBpDescription(name, line){\r\n\t\treturn {\r\n\t\t\tname: name,\r\n\t\t\tline: line,\r\n\t\t\tcoroutine: undefined,\r\n\t\t\tstatus: 'unpaused'\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tthis.pausedAt = function(val, coroutine){\r\n\t\tif (_procBpCallback && this._procBreakpoints[val.tab] && this._procBreakpoints[val.tab][val.line]) {\r\n\t\t\tthis._setAppPause(true);\r\n\t\t\t_procBpCallback(val, coroutine);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\t/** procedure will stop before execution **/\r\n\tthis.addProcBreakpoint = function(tab, line){\r\n\t\tif (!this._procBreakpoints[tab])\r\n\t\t\tthis._procBreakpoints[tab] = {};\r\n\r\n\t\tthis._procBreakpoints[tab][line] = true;\r\n\t}\r\n\t\r\n\tthis.isProcBreakpoint = function(tab, line){\r\n\t\treturn this._procBreakpoints[tab] && this._procBreakpoints[tab][line];\r\n\t}\r\n\t\r\n\tthis._setAppPause = function(b){\r\n\t\tthis._appPaused = b;\r\n\t}\r\n\t\r\n\tthis.continueExecution = function(){\r\n\t\tif (_procBpCallback)\r\n\t\t\t_procBpCallback();\r\n\r\n\t\tthis._setAppPause(false);\r\n\t}\r\n\t\r\n\t\r\n\tthis.removeProcBreakpoint = function(tab, line){\r\n\t\tif (line)\r\n\t\t\tthis._procBreakpoints[tab][line] = false;\r\n\t\telse\r\n\t\t\tthis._procBreakpoints[tab] = {};\r\n\t}\r\n\t\r\n\t/** \r\n\t\tcalled when bpDetails.status change\r\n\t\t_procBpCallback(bpDetails)\r\n\t\t\r\n\t**/\r\n\tthis.setProcBpCallback = function(callback){\r\n\t\t_procBpCallback = callback;\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = new Debugger();","'use strict'\r\n/** singleton **/\r\n\r\nconst logger = require('./logger');\r\nconst App = require('./App');\r\nconst Debugger = require('./Debugger');\r\n\r\nconst LogoObjectsCreator = require('./LogoObjectsCreator');\r\nconst LogoCodeUnit = require('./LogoCodeUnit');\r\nconst TurtlePrims = require('./TurtlePrims');\r\n//const ShapeList = require('./ShapeList');\r\n\r\n\r\n\r\n/** entry point of the player api.\r\n\tMethods are added to window.jswebplayer\r\n\t**/\r\nclass ExposedAPI {\r\n\tconstructor(){\r\n\t\tthis.newTurtle = LogoObjectsCreator.newTurtle.bind(LogoObjectsCreator);\r\n\t\tthis.newTextbox = LogoObjectsCreator.newTextbox.bind(LogoObjectsCreator);\r\n\t\tthis.newSound = LogoObjectsCreator.newSound.bind(LogoObjectsCreator);\r\n\t\tthis.newButton = LogoObjectsCreator.newButton.bind(LogoObjectsCreator);\r\n\t}\r\n\t\r\n\t/** Promise\r\n\t\t1) Tries to load image from *url*; \r\n\t\t2) creates shape and adds it to global list if not already exist\r\n\t\tif no Access-Control-Allow-Origin set, won't load **/\r\n\tsetShapeByURL(url, number){\r\n\t\treturn App.getGlobalShapes().loadShapeUrl(url, number);\r\n\t}\r\n\r\n\t\r\n\t/** exposed to `window` after initAppSync (before mainloopsetup). \r\n\t\tMove to other stages if problems arise **/\r\n\texposeExplicit(){\r\n\t\twindow.jswebplayer = {};\r\n\t\twindow.jswebplayer.newTurtle = this.newTurtle;\t//TODO dump all methods\r\n\t\twindow.jswebplayer.newTextbox = this.newTextbox;\r\n\t\twindow.jswebplayer.newSound = this.newSound;\r\n\t\twindow.jswebplayer.newButton = this.newButton;\r\n\t\twindow.jswebplayer.newSlider = LogoObjectsCreator.newSlider.bind(LogoObjectsCreator);\r\n\t\twindow.jswebplayer.newHyperlink = LogoObjectsCreator.newHyperlink.bind(LogoObjectsCreator);\r\n\t\twindow.jswebplayer.newMelody = LogoObjectsCreator.newMelody.bind(LogoObjectsCreator);\r\n\t\twindow.jswebplayer.newPage = LogoObjectsCreator.newPage.bind(LogoObjectsCreator);\r\n\t\twindow.jswebplayer.setShapeByURL = this.setShapeByURL;\r\n\t}\r\n\t\r\n\t/** previously they were exposed to `window` by DebugConsole by mistake. \r\n\t\tBecause we already depend on them being exposed, do it again here. **/\r\n\t//TODO remove DebugConsole exposure, see what breaks\r\n\t//TODO move App etc. from window to window.jswebplayer, make relevant changes in Orange editor\r\n\texposeInternals(){\r\n\t\twindow.App = App;\r\n\t\twindow.Debugger = Debugger;\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = new ExposedAPI();","\"use strict\"\r\n/** singleton **/\r\n\r\nconst Scope = require('./Scope');\r\nconst TypeCheck = require('./TypeCheck');\r\n\r\n//TODO check names for correct characters\r\n//TODO rename module to something more appropriate (Variables); move global project properties elsewhere\r\nfunction Globals(){\r\n\tvar MapCaseInsensitive = require('./MapCaseInsensitive');\r\n\t\r\n\tvar userproc = new MapCaseInsensitive();\r\n\r\n\tvar vars = {\r\n\t\t//globalDictionary: {},\r\n\t};\r\n\t\r\n\tvars.newLocalScope = function(){\r\n\t\treturn new Scope(vars.globalScope);\r\n\t}\r\n\t\r\n\tvars.globalScope = new Scope(undefined);\t//just don't use localDictionary in global scope (it's empty, and let cannot set it).\r\n\r\n\tthis.setActiveText = function(text) {\r\n\t\tthis.userproc.raw[this.userproc.active].text = text;\r\n\t}\r\n\r\n\tthis.nameIsUsed = function(name, nameGen) {\r\n\t\tif (!isNaN(TypeCheck.parseNumber(name)))\r\n\t\t\treturn name;\r\n\r\n\t\tlet all = [];\r\n\t\tif (nameGen && nameGen.prototype.getUserProcNames)\r\n\t\t\tall = nameGen.prototype.getUserProcNames.call({ name });\r\n\t\tall.unshift(name);\r\n\t\tfor (let n of all) {\r\n\t\t\tlet found = this.userproc.get(n);\r\n\t\t\tif (found)\r\n\t\t\t\treturn found;\r\n\r\n\t\t\tif (this.objproc.get(n) || primtips.trans[n.toUpperCase()])\r\n\t\t\t\treturn n;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.loadProcedures = function(rawplist, raw) {\r\n\t\tlet failed = [];\r\n\t\tthis.userproc.clear();\r\n\t\tfor (let proc of rawplist) { //proc is either data.js proc declaration, or procDescr from Translator\r\n\t\t\tlet user = this.nameIsUsed(proc.name);\r\n\t\t\tif (user) {\r\n\t\t\t\tfailed.push({ proc, user });\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tproc.lcu = proc.lcu || {};\r\n\t\t\tproc.lcu.procProperties = proc;\r\n\t\t\tthis.userproc.set(proc.name, proc.lcu);\r\n\t\t}\r\n\r\n\t\tthis.userproc.dirty = false;\r\n\t\treturn failed;\r\n\t}\r\n\r\n\tthis.initProcedures = function(plist, rawProcedures) {\r\n\t\tif ('string' == typeof rawProcedures)\r\n\t\t\trawProcedures = [ { name: this.localise('locDefaultProcs'), text: rawProcedures } ];\r\n\r\n\t\tthis.userproc.raw = rawProcedures;\r\n\t\tfor (let proc of plist)\r\n\t\t\tthis.userproc.set(proc.name, { procProperties: proc });\r\n\t}\r\n\r\n\tthis.addProcedure = function(name, argList, text) {\r\n\t\tlet raw = '\\n' + this.symToEnd()[0] + ' ' + name + ' ' + argList.join(' ') + '\\n' + text + '\\n' + this.symToEnd()[1] + '\\n';\r\n\t\tthis.userproc.set(name, { procProperties: {argsnum: argList.length} });\t//looks quite dangerous\r\n\t\tthis.userproc.raw[this.userproc.active].text += raw;\r\n\t\tthis.userproc.dirty = true;\r\n\t\tif (window.appendProc)\r\n\t\t\twindow.appendProc(raw);\r\n\t}\r\n\r\n\tthis.getTabName = function(id, line) {\r\n\t\tif (this.userproc.raw.length < 2)\r\n\t\t\treturn line;\r\n\r\n\t\tlet found = this.userproc.raw.find(x => x.id == id);\r\n\t\treturn found === undefined ? line : found.name + ':' + line;\r\n\t}\r\n\r\n\tthis.symToEnd = function() {\r\n\t\tif (this.symbols)\r\n\t\t\treturn this.symbols;\r\n\r\n\t\tthis.symbols = [primtips.sym_to.split('|')[0], primtips.sym_end.split('|')[0]];\r\n\t\treturn this.symbols;\r\n\t}\r\n\r\n\tthis.save = function() {\r\n\t\tlet d = {\r\n\t\t\trawprocedures: this.userproc.raw,\r\n\t\t\tprocedures: [],\r\n\t\t};\r\n\r\n\t\tfor (let x of this.userproc)\r\n\t\t\td.procedures.push({ name: x[0], doc: x[1].procProperties.doc, argsnum: x[1].procProperties.argsnum });\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\tthis.localise = function(id) {\r\n let elem = document.getElementById(id);\r\n if (elem) {\r\n let content = window.getComputedStyle(elem).content;\r\n\r\n // only some content is surrounded with quotes\r\n if (content[0] == '\"')\r\n content = content.slice(1, -1);\r\n\r\n return content;\r\n }\r\n\r\n return id;\r\n }\r\n\r\n\tvar properties = {\t\t//not Logo project properties, but tied to project. Maybe move elsewhere\r\n\t\tanswer: \"\",\r\n\t\ttimerProjectStart: undefined,\t//timestamp as performance.now()\r\n\t\terrormessage: \"\",\r\n\t};\r\n\t\r\n\tvar projectvars = new MapCaseInsensitive();\r\n\t\r\n\tuserproc.active = 0;\r\n\tuserproc.raw = [ { name: this.localise('locDefaultProcs'), text: '' }];\r\n\tthis.userproc = userproc; //MapCaseInsensitive\r\n\tthis.objproc = new MapCaseInsensitive();\r\n\tthis.vars = vars;\t//object with methods\r\n\tthis.properties = properties; //plain object\r\n\tthis.projectvars = projectvars; //MapCaseInsensitive\r\n}\r\n\t\r\nmodule.exports = new Globals();","'use strict'\r\n/** singleton **/\r\n/** Controls UI elements outside of project layers **/\r\n\r\nconst Options = require('./Options');\r\nconst Version = require('./Version');\r\nconst $ = require('jquery');\r\n\r\nfunction HtmlIntegration(){\r\n\tthis.initUI = function(){\r\n\t\t$('.debugInfo').toggle(Options.debugPanel);\r\n\t\t$('#showDebugInfo').click(()=>{\r\n\t\t\t$('.debugInfo').toggle();\r\n\t\t});\r\n\t}\r\n\t\r\n\tthis.addRendererView = function(view){\r\n\t\t$('#root-div')[0].appendChild(view);\r\n\t\t//let w = $('#root-div').width();\r\n\t\t//let h = $('#root-div').height();\t-- this leads to non-traceable \"computed\" extra value\r\n\t\tlet w = view.width;\r\n\t\tlet h = view.height;\r\n\t\t$('#root-div').css({'width':w+'px', 'height':h+'px'});\r\n\r\n\t\t// to avoid scrollbars, we need to pad the project\r\n\t\t// +10 is an inexplicable white space below the div (text line?)\r\n\t\t// +30 is the height of labels, in case labeled object is alligned to the bottom of the page\r\n\t\t$('#screen-div').css({'width':w+'px', 'height':(h+40)+'px'});\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = new HtmlIntegration();","\"use strict\"\r\n/** constructor **/\r\n\r\nconst helpers = require('./helpers.js');\r\nconst $ = require('jquery');\r\nconst logger = require('./logger');\r\nconst LogoViewState = require('./LogoViewState');\r\n\r\nclass HtmlLogoView{\r\n\tconstructor(logoObject, dragByLabel = true, isResizable = false){\r\n\t\tthis._logoObject = logoObject;\r\n\t\t\r\n\t\tthis.state = new LogoViewState();\r\n\t\t// initialization disabled, because this way first drawing would be forced\r\n\t\t//LogoViewState.getPlainFromLogoObject(logoObject));\r\n\t\t\r\n\t\tthis._divId = logoObject.id+\"_div\";\r\n\t\tthis._labelId = logoObject.id+\"_label\";\r\n\t\tvar r = $('
'+\r\n\t\t\t''+\r\n\t\t\t'
'\r\n\t\t\t);\r\n\t\t\r\n\t\tlogoObject.page._getPageView().getPageDiv().append(r);\r\n\t\t\r\n\t\t// draggable (jquery ui)\r\n\t\t// this._eventDragStart = ( event, ui) => {\r\n\t\t// }\r\n\t\tthis._eventDragStop = ( event, ui ) => {\r\n\t\t\tthis._clickPreventing = true;\t//workaround to stop click when dropping. Should clear manually in click() event!\r\n\r\n\t\t\tlet pos = $('input', '#' + this._divId).position() || { left: 0 };\r\n\t\t\tlet newSY = ui.position.top;\r\n\t\t\tlet newSX = ui.position.left + pos.left;\r\n\t\t\tlet newLogoPos = helpers.coordsScreenToLogo(App.getProject().getWidth(), App.getProject().getHeight(), newSX, newSY);\r\n\t\t\tlogoObject.x = newLogoPos.x;\r\n\t\t\tlogoObject.y = newLogoPos.y;\r\n\t\t}\r\n\t\t$('#'+this._divId).draggable({\r\n\t\t\tdistance: 10,\t//differentiate between clicks and drag\r\n\t\t\tdelay: 100,\r\n\t\t\tcontainment: \"#root-div\",\r\n\t\t\t\r\n\t\t\tstop: this._eventDragStop,\r\n\t\t});\r\n\t\tif (dragByLabel) {\t\t//buttons have no label and should drag by themselves\r\n\t\t\t$('#'+this._divId).draggable({\r\n\t\t\t\thandle: '#'+this._labelId,\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (isResizable) {\r\n\t\t\t$('#'+this._divId).resizable({\r\n\t\t\t\thandles: 'se',\r\n\t\t\t\tautoHide: true,\r\n\t\t\t\tcontainment: \"#root-div\",\r\n\t\t\t\tresize:(e,ui) => {\t//can't do without manual control\r\n\t\t\t\t\t//`this` is view\r\n\t\t\t\t\tthis._logoObject.width = ui.size.width;\r\n\t\t\t\t\tthis._logoObject.height = ui.size.height;\r\n\t\t\t\t\tApp.getDrawQueue().addRequest(this);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis._isResizable = isResizable;\t//to inform _setResizable()\r\n\r\n\t\tthis.addContextMenu($('#'+this._divId));\r\n\t\tthis.addContextMenu($('#'+this._labelId));\r\n\t}\r\n\r\n\taddContextMenu(elem) {\r\n\t\telem.off('contextmenu').on('contextmenu', (e) => {\r\n\t\t\tif (App.dialog)\r\n\t\t\t\treturn App.dialog.show(e, this._logoObject);\r\n\t\t});\r\n\t}\r\n\r\n\tapply(newValues) {\r\n\t\tfor (var i in newValues) {\r\n\t\t\tif (i == 'onClickCor') {\r\n\t\t\t\tthis._logoObject.setOnClickLCU(newValues.onClickCor);\r\n\t\t\t} else if (i == 'name') {\r\n\t\t\t\tthis._logoObject.rename(newValues.name);\r\n\t\t\t} else {\r\n\t\t\t\tthis._logoObject[i] = newValues[i];\r\n\t\t\t\tif (i == 'label' && window.renameNode)\r\n\t\t\t\t\twindow.renameNode(this._logoObject.id, newValues[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\r\n\tcheckApply(newValues) {\r\n\t\treturn this._logoObject.checkApply(newValues);\r\n\t}\r\n\t\r\n\tinsertElement(string){\r\n\t\t$('#'+this._divId).prepend(string);\r\n\t}\r\n\t\r\n\t//theese functions affect view on certain state conditions in draw():\r\n\t_setShowName(val){\r\n\t\t$('#'+this._labelId).toggle(val);\r\n\t}\r\n\r\n\t_setLabel(val) {\r\n\t\t$('#'+this._labelId).html(this.state.label);\r\n\t}\r\n\t\r\n\t_setDraggable(val){\r\n\t\tif (val){\r\n\t\t\t$('#'+this._divId).draggable('enable');\r\n\t\t} else {\r\n\t\t\t$('#'+this._divId).draggable('disable');\r\n\t\t}\r\n\t}\r\n\t\r\n\t_setResizable(val){\r\n\t\tif ( !this._isResizable) return;\r\n\t\tif (val){\r\n\t\t\t$('#'+this._divId).resizable('enable');\r\n\t\t} else {\r\n\t\t\t$('#'+this._divId).resizable('disable');\r\n\t\t}\r\n\t}\r\n\t\r\n\tdraw(){\r\n\t\tthis.state.setChanged(false);\r\n\t\tthis.state.update(LogoViewState.getPlainFromLogoObject(this._logoObject));\r\n\r\n\t\tif (this.state.changed('label'))\r\n\t\t\tthis._setLabel(this.state.label);\r\n\t\t\r\n\t\t//showName\r\n\t\tif (this.state.changed('showName')){\r\n\t\t\tthis._setShowName(this.state.showName);\r\n\t\t}\r\n\t\t//visible\r\n\t\tif (this.state.changed('visible')){\r\n\t\t\t$('#'+this._divId).toggle(this.state.visible);\r\n\t\t}\r\n\t\t\r\n\t\t//freezed\r\n\t\tif (this.state.changed('freezed')){\r\n\t\t\tthis._setDraggable( !this.state.freezed);\r\n\t\t\tthis._setResizable( !this.state.freezed);\t//will apply only if view was resizable in first place\r\n\t\t}\t\r\nif ($('#'+this._labelId)[0])\r\n\t{$('#'+this._labelId)[0].innerHTML = this._logoObject.name};\r\n\r\n\t\t// not all elements have 'input', e.g. ButtonView\r\n\t\tlet pos = $('input', '#' + this._divId).position() || { left: 0 };\r\n\t\tvar sX = App.getProject().getWidth() / 2 + this._logoObject.x - pos.left;\r\n\t\tvar sY = App.getProject().getHeight() / 2 - this._logoObject.y;\r\n\t\t$('#'+this._divId).css({\r\n\t\t\tleft:sX,\r\n\t\t\ttop:sY,\r\n\t\t});\r\n\t}\r\n\t\r\n\tsetPageVisible(visible){\t//whole layer is hidden\r\n\t\t/*if (visible) {\r\n\t\t\t$('#'+this._divId).show();\r\n\t\t} else {\r\n\t\t\t$('#'+this._divId).hide();\r\n\t\t}\r\n\t\t*/\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\tdocument.getElementById(this._divId).remove();\r\n\t}\r\n}\r\n\r\nmodule.exports = HtmlLogoView;\r\n","\"use strict\"\r\n/** class **/\r\n\r\nconst LogoObject = require('./LogoObject');\r\nconst HyperlinkView = require('./HyperlinkView.js');\r\nconst TypeCheck = require('./TypeCheck');\r\n\r\nclass Hyperlink extends LogoObject {\r\n\tconstructor(data){\r\n\t\tsuper(data);\t//common LogoObject fields\r\n\t\tthis.label = data.name;\r\n\t\tthis.url = data.pathname + data.shortname;\r\n\t}\r\n\t\r\n\tapply(newValues) {\r\n\t\tnewValues.label = newValues.name;\r\n\t\tsuper.apply(newValues);\r\n\t}\r\n\t\r\n\tclick(){\r\n\t\twindow.open(this.url, this.name);\t//named window to prevent spamming\r\n\t}\r\n\t\r\n\t\r\n\t\r\n///////////// Common LogoObject functions ////////////////////////\t\r\n\tget(propname) {\r\n\t\tif (propname.toUpperCase() == primtips.sg.link)\r\n\t\t\treturn this.url;\r\n\r\n\t\treturn super.get(propname);\r\n\t}\r\n\r\n\tset(propname, value) {\r\n\t\tif (propname.toUpperCase() == primtips.sg.link) {\r\n\t\t\tthis.url = TypeCheck.getCompactedString(value);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn super.set(propname, value);\r\n\t}\r\n\r\n//init view after addLogoObject\r\n\t_initView(){\r\n\t\tsuper._initView(this._hyperlinkView = new HyperlinkView(this));\r\n\t}\r\n\r\n\tinitAfterRestore() {\r\n\t\tthis.label = this.name;\r\n\t\tsuper.initAfterRestore();\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = super.save();\r\n\t\td.pathname = this.url;\r\n\t\td.shortname = \"\";\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\taddUserProc(list, trans) {\r\n\t\thelpers.addUserProc(this.objProc, trans, this.name, 0, () => this.click());\r\n\t}\r\n\r\n\tgetUserProcNames() {\r\n\t\treturn [this.name];\r\n\t}\r\n}\r\n\r\nmodule.exports = Hyperlink;\r\n","\"use strict\"\r\n/** constructor **/\r\n\r\nconst $ = require('jquery');\r\nconst logger = require('./logger');\r\nconst HtmlLogoView = require('./HtmlLogoView');\r\n\r\nclass HyperlinkView extends HtmlLogoView{\r\n\tconstructor(logoObject){\r\n\t\tsuper(logoObject, false);\r\n\t\tthis.hyperlink = logoObject;\r\n\t\r\n\t\tlet buttonHtml = '';\r\n\t\tthis.insertElement(buttonHtml);\r\n\t\t\r\n\t\t\r\n\t\t$('#'+this.hyperlink.id).click((mouseData) => {\r\n\t\t\tif (this._clickPreventing) {\t//workaround to prevent click after drag&drop\r\n\t\t\t\tthis._clickPreventing = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//DEBUG\r\n\t\t\tlogger.debug(\"Click hyperlink button\");\r\n\t\t\tthis.hyperlink.click();\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\t$('#'+this._divId).draggable({cancel:false});\t//to prevent cliks from stopping drag events\r\n\t}\r\n}\r\n\r\nmodule.exports = HyperlinkView;\r\n","'use strict'\r\n/** constructor \t--?? //TODO maybe implement as factory, to always get consistent object\r\n\thas init methods\r\n\t`forever` and other custom fields added directly to this object\r\n**/\r\n\r\nconst SafeEval = require('./SafeEval');\r\nconst LogoError = require('./LogoError');\r\nconst helpers = require('./helpers');\r\nconst App = require('./App');\r\nconst Globals = require('./Globals');\r\nconst Prims = require('./Prims');\r\n\r\nconst CodeTypeEnum = {\r\n\tEventGenerator:\"EventGenerator\",\r\n\t//UserprocDeclaration:\"UserprocDeclaration\",\t//not used? userproc are directly translated to:\r\n\tUserprocGenerator:\"UserprocGenerator\"\r\n}; Object.freeze(CodeTypeEnum);\r\n\r\nconst LogoCodeUnit = function(){\r\n\tthis.forever = false;\r\n\tthis.translatedCode = undefined;\r\n\tthis._translatedCodeType = undefined;\r\n\tthis._corLambda = undefined;\r\n\t\r\n\t/** returns generatorFunction wrapper executed in Coroutine, \r\n\t\tCreates corLambda if it doesn't exist. \r\n\t\tCreates binded Prims\r\n\t\tSupplies binded prims, processContext (synonym to corContext) and Globals to logo code.\r\n\t\t\r\n\t\tif userproc is in corLambda, corContext should contain userprocApplyList (which will be `apply`ed)\r\n\t**/\r\n\tthis.getCorLambda = function(){\r\n\t\tif (this._corLambda) {\r\n\t\t\treturn this._corLambda;\r\n\t\t}\r\n\t\tif (this._translatedCodeType === CodeTypeEnum.EventGenerator){\r\n\t\t\tlet _this = this;\r\n\t\t\tlet globals = this.getGlobals();\r\n\t\t\tlet eventLCUWrapper = \r\n\t\t\t\tfunction*(corContext){\r\n\t\t\t\t\t//we need: globals, processContext, obj\r\n\t\t\t\t\t//TODO ASSERT all required fields\r\n\t\t\t\t\tlet logoContext = corContext.logoContext;\r\n\t\t\t\t\tlet processContext = corContext;\r\n\t\t\t\t\tprocessContext.prims = Prims.bindProcessContext(processContext);\r\n\t\t\t\t\tlet obj = undefined;\t// not used\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tyield* _this.translatedCode(globals, processContext, obj);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tLogoError.handleTopLevel(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\tthis._corLambda = eventLCUWrapper;\r\n\t\t\treturn this._corLambda;\r\n\t\t}\r\n\t\tif (this._translatedCodeType === CodeTypeEnum.UserprocGenerator){\r\n\t\t\tlet _this = this;\r\n\t\t\tlet globals = this.getGlobals();\r\n\t\t\tlet userprocLCUWrapper =\r\n\t\t\t\tfunction*(corContext){\r\n\t\t\t\t\tlet logoContext = corContext.logoContext;\r\n\t\t\t\t\tlet userprocApplyList = corContext.userprocApplyList;\r\n\t\t\t\t\tlet processContext = corContext;\r\n\t\t\t\t\tprocessContext.prims = Prims.bindProcessContext(processContext);\r\n\t\t\t\t\tlet obj = undefined;\t// not used\r\n\t\t\t\t\t//Important! exceptions are catched outside of procedure, so parallel result promises would reject correctly!\r\n\t\t\t\t\t//try{\r\n\t\t\t\t\t\treturn yield* _this.translatedCode(processContext.prims, globals.vars, globals.userproc, userprocApplyList);\r\n\t\t\t\t\t//} catch (e) {\r\n\t\t\t\t\t//\tLogoError.handleTopLevel(e);\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\t\t\tthis._corLambda = userprocLCUWrapper;\r\n\t\t\treturn this._corLambda;\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** Call synchronously, in current coroutine **/\r\n\tthis.callUserprocGenerator = function* (corContext, applyArgsList){\r\n\t\tlet _this = this;\r\n\t\tlet globals = this.getGlobals();\r\n\t\tlet prims = corContext.prims;\r\n\t\treturn yield* (this.translatedCode(prims, globals.vars, globals.userproc, applyArgsList));\r\n\t}\r\n\t\r\n\tthis.callEventGenerator = function* (corContext){\r\n\t\tlet globals = this.getGlobals();\r\n\t\treturn yield* (this.translatedCode(globals, corContext));\r\n\t}\r\n\r\n\t/** this is an event listener wrapper which we got from JSON in loader.js \r\n\t\texpected syntax (current ouptput of Compiler):\r\n\t\t\t\"function* (globals, processContext, obj){\r\n\t\t\t\t//initialization boilerplate\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\t\t\t\t//translated code goes here\r\n\t\t\t}\"\r\n\r\n\t**/\r\n\tthis.initFromEventString = function(eventString){\r\n\t\tif (typeof eventString === \"function\") {\r\n\t\t\tthis.translatedCode = eventString;\t//launch and forever pass `function*(){}` instead of `string`. It's important for Safari\r\n\t\t} else {\r\n\t\t\tthis.translatedCode = SafeEval.createFunction(eventString);\r\n\t\t}\r\n\t\tthis._translatedCodeType = CodeTypeEnum.EventGenerator;\r\n\t\tthis._originalJsString = eventString;\r\n\t\treturn this.translatedCode;\t//undefined if SyntaxError;\r\n\t}\r\n\t\r\n\t/**\r\n\t\texpected syntax (current output of Compiler):\r\n\t\t\t\"function* (args){\r\n\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\tscope.setArgs([],args);\r\n\t\t\t\t//translated code goes here\r\n\t\t\t}\"\r\n\t\t\t\r\n\t\teval'ed Function looks like:\r\n\t\tfunction(prims, vars, userproc, applyList){\r\n\t\t\treturn yield* ( function*(args){ ... } ).apply(applyList);\r\n\t\t}\r\n\t**/\r\n\tthis.initFromUserprocDeclaration = function(decString, procName){\t/** procName is optional, for error messages **/\r\n\t\t//have to supply prims,vars,userproc - later in wrapper\r\n\t\tthis.translatedCode = SafeEval.createUserprocFunction(decString, procName);\r\n\t\tthis._translatedCodeType = CodeTypeEnum.UserprocGenerator;\r\n\t\tthis._originalJsString = decString;\r\n\t\treturn this.translatedCode; //undefined if SyntaxError;\r\n\t}\r\n\t\r\n\tthis.setForever = function(forever){\r\n\t\tthis.forever = forever;\r\n\t}\r\n\t\r\n\t//emulate old CodeRunner interface\r\n\tthis.getGlobals = function(){\r\n\t\treturn {\r\n\t\t\tApp: App,\r\n\t\t\tvars: Globals.vars,\r\n\t\t\tuseproc: Globals.userproc,\r\n\t\t\tLogoError: LogoError,\r\n\t\t};\r\n\t}\r\n\r\n\tthis.getScope = function() {\r\n\t\tlet s = this.scope || [];\r\n\t\tfor (let i = 0; i < s.length; i++)\r\n\t\t\tif (s[i].thing)\r\n\t\t\t\treturn s[i];\r\n\r\n\t\treturn Globals.vars.globalScope;\r\n\t}\r\n\r\n\tthis.newScope = function(mark) {\r\n\t\tthis.scope = this.scope || [];\r\n\t\tthis.scope.unshift(mark || Globals.vars.newLocalScope());\r\n\t}\r\n}\r\n\r\nmodule.exports = LogoCodeUnit;\r\n","'use strict'\r\n/** interface constructor **/\r\n\r\n/** It seems that `who` and `textwho` is enough, \r\n\tbut if need to add new fields to context, this is the extension point\r\n\tCannot be used directly as CorContext! Should be passed to LogoCoroutine (which wraps it to CorContext.logoContext)\r\n\t\r\n\tClones values! So can be muted safely\r\n\t\r\n\t`who` and `textwho` are arrays with LogoObject references!\r\n\t//TODO rework them as text strings, and calculate references on access\r\n\t\r\n**/\r\n\r\nconst LogoContext = function(who, textwho){\r\n\tthis.setWho(who);\r\n\tthis.setTextWho(textwho);\r\n}\r\nLogoContext.prototype.clone = function(lc){\r\n\tlet newlc, oldlc;\r\n\tif (!lc) {\r\n\t\toldlc = this;\r\n\t}\r\n\tnewlc = new LogoContext(oldlc.who, oldlc.textwho);\r\n\tfor (let key in oldlc){\r\n\t\tif (oldlc.hasOwnProperty(key) && key != 'who' && key != 'textwho'){\r\n\t\t\tnewlc[key] = oldlc[key];\r\n\t\t}\r\n\t}\r\n\treturn newlc;\r\n}\r\n\r\nLogoContext.prototype.printWho = function(){\r\n\tif (this.who === \"\") {\r\n\t\treturn this.who;\r\n\t}\r\n\tlet str = this.who.reduce((acc, c) => acc+\" \"+c.name, \"\");\r\n\treturn str;\r\n}\r\n\r\nLogoContext.prototype.assignFrom = function(lc){\r\n\tthis.setWho(lc.who);\r\n\tthis.setTextWho(lc.textwho);\r\n\tfor (let key in this){\r\n\t\tif (lc.hasOwnProperty(key) && key != 'who' && key != 'textwho'){\r\n\t\t\tthis[key] = lc[key];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLogoContext.prototype.setWho = function(who){\r\n\tthis.who = (who || \"\").slice();\t//clone array\r\n\t//\"\" looks suspicious. While who and textwho are expected as arrays, won't something break with \"\" as who?\r\n}\r\n\r\nLogoContext.prototype.setTextWho = function(textwho){\r\n\tthis.textwho = (textwho || \"\").slice();\r\n}\r\n\r\nmodule.exports = LogoContext;","'use strict'\r\n/** class **/\r\n\r\n/** Wrapper on Coroutine.\r\n\tRegisters itself in CorDispatcher, and queues on run and stop automatically\r\n\t(i.e. this is the entry point for running coroutines).\r\n\tConstructor takes LogoCodeUnit on entry, not a CorLambda! This is to take care of `forever` field.\r\n\r\n\t\r\n\tCorContext looks like:\r\n\t\t- name\r\n\t\t- logoContext: logoContext\r\n\t\t- forever\t(copied from LCU)\r\n**/\r\n\r\nconst Coroutine = require('./Coroutine');\r\nconst CorDispatcher = require('./CorDispatcher');\r\n\r\nclass LogoCoroutine extends Coroutine {\r\n\tconstructor(logoCodeUnit, name){\r\n\t\tsuper(logoCodeUnit.getCorLambda());\r\n\t\tthis._logoCodeUnit = logoCodeUnit;\t//it is only the first lcu coroutine starts! It can later execute userproc lcu's, so don't depend on this field other than initial config when coroutine starts\r\n\t\tthis._name = name;\r\n\t\tthis._forever = logoCodeUnit.forever;\r\n\t\tthis.registerDispatcher(CorDispatcher);\t//do nothing for now\r\n\t}\r\n\t\r\n\t/** initial configure of CorContext. CorDispatcher then calls Coroutine.start() with correct CorContext.\r\n\t\tNow always return promise, but catches by default - to prevent unhandled rejection if promise is not used.\r\n\t\tSo, `returnPromise` parameter is deprecated\r\n\t*/\r\n\tstartWithLogoContext(logoContext, runImmediately = true, returnPromise = false){\r\n\t\tlet corContext = Coroutine.newCorContext(this._name);\r\n\t\tcorContext.logoContext = logoContext;\r\n\t\tcorContext.forever = this._forever;\r\n\t\tcorContext.runImmediately = runImmediately;\r\n\t\tsuper.start(corContext);\t//will trigger CorDispatcher.coroutineStarted, which adds coroutine to queue\r\n/*\t\tif (returnPromise){\r\n\t\t\tlet _this = this;\r\n\t\t\tlet result = new Promise(function(resolve,reject){\r\n\t\t\t\t_this._endedPromiseResolve = resolve;\r\n\t\t\t\t_this._endedPromiseReject = reject;\r\n\t\t\t});\r\n\t\t\treturn result;\r\n\t\t}*/\r\n\t\tthis._endedPromise = new Promise((resolve,reject) => {\r\n\t\t\tthis._endedPromiseResolve = resolve;\r\n\t\t\tthis._endedPromiseReject = reject;\r\n\t\t});\r\n\t\tthis._endedPromise.catch(() => {});\t//to prevent uncaught reject bubbling\r\n\t\treturn this._endedPromise;\r\n\t}\r\n\t\r\n\t/** returns promise */\r\n\tstartParallelProcedure(logoContext, userprocApplyList){\r\n\t\tlet corContext = Coroutine.newCorContext(this._name);\r\n\t\tcorContext.logoContext = logoContext;\r\n\t\tcorContext.runImmediately = false;\t//required to setup corContext correctly\r\n\t\tcorContext.userprocApplyList = userprocApplyList;\r\n\t\tsuper.start(corContext);\r\n\t\t//let _this = this;\r\n\t\tthis._endedPromise = new Promise((resolve,reject) => {\r\n\t\t\tthis._endedPromiseResolve = resolve;\r\n\t\t\tthis._endedPromiseReject = reject;\r\n\t\t});\r\n\t\tthis._endedPromise.catch(() => {});\t//to prevent uncaught reject bubbling\r\n\t\treturn this._endedPromise;\r\n\t}\r\n\t\r\n\t/** override */\r\n\tended(){\r\n\t\tlet value = super.ended();\r\n\t\tif ( !this.context.forever){\r\n\t\t\tif (this._endedPromiseResolve) {\r\n\t\t\t\tthis._endedPromiseResolve(value);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\t\r\n\t//TODO maybe differentiate manual stop and error\r\n\t/** override */\r\n\tstop(rejectReason = \"stopped\"){\r\n\t\tlet value = super.stop();\r\n\t\tif (this._endedPromiseReject){\r\n\t\t\tthis._endedPromiseReject(rejectReason);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\t\t\r\n\tget lcu() {\r\n\t\treturn this._logoCodeUnit;\r\n\t}\r\n\t\r\n\tgetEndedPromise(){\r\n\t\treturn this._endedPromise;\r\n\t}\r\n}\r\n\r\nmodule.exports = LogoCoroutine;","'use strict'\r\n/** constructor **/\r\n\r\nconst logger = require('./logger');\r\nconst placeholders = ['@', '!', '#', '~'];\r\n\r\nvar LogoError = function (message, lcu){\r\n\tthis.name = 'LogoError';\r\n\r\n\tlet args = arguments;\r\n\tif ('string' != typeof(message)) {\r\n\t\t// must be Arguments (array-like)\r\n\t\targs = [];\r\n\t\tfor (let index = lcu ? 2 : 0; index < message.length; index++)\r\n\t\t\targs.push(message[index]);\r\n\t}\r\n\r\n\tthis.message = primtips.err[args[0]] || args[0];\r\n\tif (LogoError.current)\r\n\t\tthis.message = this.message.replace('@', LogoError.current.root);\r\n\r\n\tfor (let x = 0; x < placeholders.length; x++)\r\n\t\tthis.message = this.message.replace(placeholders[x], args[x + 1]);\r\n\r\n\tthis.stack = new Error().stack;\r\n\r\n\tthis.setErrorLine = function(line, id) {\r\n\t\tif (line) {\r\n\t\t\tlet tab = App.getProject().getGlobals().getTabName(id, line);\r\n\t\t\tthis.message += ' ' + primtips.err.location.replace('@', tab);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.setProcName = function(name) {\r\n\t\tif (name)\r\n\t\t\tthis.message += ' ' + primtips.err.strin + ' ' + name;\r\n\r\n\t\tif (LogoError.current)\r\n\t\t\tthis.setErrorLine(LogoError.current.line, LogoError.current.tab);\r\n\t}\r\n}\r\nLogoError.prototype = Object.create(Error.prototype);\r\n\r\nLogoError.handleCarefully = function(e){\r\n\tif (e instanceof LogoError){\r\n\t\tlogger.log(\"LogoError (carefully): \"+e.message);\r\n\t\treturn e.message;\r\n\t} else {\r\n\t\tlogger.log(\"Exception (carefully): \"+e);\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n\r\nLogoError.handleTopLevel = function(e, editor){\r\n\tif (e instanceof LogoError){\r\n\t\tlogger.log(\"LogoError (top level): \"+e.message);\r\n\t\tlogger.log(e.stack);\r\n\t\tif (window.showLine)\r\n\t\t\tshowLine(editor, e.message, true);\r\n\t\telse\r\n\t\t\talert(\"LogoError: \"+e.message);\r\n\t} else {\r\n\t\tlogger.log(\"Exception (top level): \"+e);\r\n\t\tlogger.log(e.stack);\r\n\t\t///DEBUG\r\n\t\t//alert(\"Exception: \"+e);\r\n\t\t//debugger\r\n\t}\r\n}\r\n\r\nLogoError.current = null;\r\n\r\nmodule.exports = LogoError;\r\n","'use strict'\r\n/** prototype class **/\r\n\r\nconst helpers = require('./helpers.js');\r\nconst App = require('./App.js');\r\nconst LogoCoroutine = require('./LogoCoroutine');\r\nconst TypeCheck = require('./TypeCheck');\r\nconst Parser = require('./parser/parser');\r\nconst _suffix = { 'onTouchingCor': '_touch', 'onMessageCor': '_message', 'onClickCor': '_click', 'onColorCor': '_oncolor' };\r\nconst _arg = { 'onTouchingCor': [], 'onMessageCor': [], 'onColorCor': [], 'onColourCodeOnce': '', 'onColourCodeEachTime': '' };\r\nconst _argValue = { 'onTouchingCor': ['yourname'], 'onMessageCor': ['message'], 'onColorCor': ['previousColourUnder', 'newColourUnder'] };\r\n\r\nclass LogoObject{\r\n\tconstructor(data){\r\n\t\tthis.name = data.name;\r\n\t\tthis.objProc = [];\r\n\t\tthis.type = data.type;\r\n\t\tthis.x = data.x || 0;\r\n\t\tthis.y = data.y || 0;\r\n\t\tif (data.width !== undefined){\tthis.width = data.width;}\r\n\t\tif (data.height !== undefined){\tthis.height = data.height;}\r\n\t\tif (data.showName !== undefined){\tthis.showName = data.showName;}\r\n\t\tif (data.visible !== undefined){\tthis.visible = data.visible;}\r\n\t\telse this.visible = true;\t//WORKAROUND: Pervologo for Mac doesn't write this field\r\n\t\tif (data.showtoolbar !== undefined){\tthis.showtoolbar = data.showtoolbar;}\r\n\t\telse this.showtoolbar = false;\t\r\n\t\tif (data.readonly !== undefined){\tthis.readonly = data.readonly;}\r\n\t\telse this.readonly = false;\t\r\n\t\tthis.freezed = data.freezed;\r\n\t\tthis.id = \"logoobject\"+helpers.guid();\t//WORKAROUND: CSS doesn't support id starting with digit\r\n\t}\r\n\t\r\n\tsetX(cx){ this.x = cx; }\r\n\tsetY(cy){ this.y = cy; }\r\n\tgetX(){return this.x};\r\n\tgetY(){return this.y};\r\n\tgetName(){return this.name};\r\n\r\n\tgetLogoContext() { \r\n\t\t// Данное разделение по type пришлось сделать, т.к. нарушалась работа команды who (это выявилось на игре way home)\r\n\t\t// но оно приводит к #635, поэтому удаляем\r\n\t\t// if (this.type == 'button') {\r\n\t\t//\treturn this.getPage().getMutableLogoContext(); // это передаст LogoContext на текущий объект\r\n\t\t// }\r\n\t\t// else {\r\n\t\t\treturn this.getPage().cloneLogoContext(); \t // это создаст временный LogoContext, который после выполнения действий пропадет\r\n\t\t// }\r\n\t}\r\n\t\r\n\trename(newName){\r\n\t\tif (newName == this.name)\r\n\t\t\treturn;\r\n\t\tthis.removeUserProc();\r\n\t\tif (window.renameNode)\r\n\t\t\twindow.renameNode(this.id, newName);\r\n\r\n\t\tthis.name = newName;\r\n\t\tthis.addUserProc();\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\r\n\tcheckApply(newValues) {\r\n\t\tif (newValues['name'])\r\n\t\t\ttry {\r\n\t\t\t\tApp.getProject().nameIsUsed(newValues.name, this.constructor, this);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn ['name'];\r\n\t\t\t}\r\n\t}\r\n\t\r\n\tdraw(){\r\n\t\tthis._view.draw();\r\n\t};\r\n\t\r\n\tfreeze(){\r\n\t\tthis.freezed = true;\r\n\t\tthis.draw();\r\n\t}\r\n\t\r\n\tunfreeze(){\r\n\t\tthis.freezed = false;\r\n\t\tthis.draw();\r\n\t}\r\n\t\r\n\t/** Called when *stopall* is executed. Specific operations, not tied to CorDispatcher, should go here **/\r\n\tonStopall(){\r\n\t}\r\n\t\r\n\t/** stop all coroutines, and other operations if needed. **/\r\n\tstopAllOperations(){\r\n\t\thelpers.abstract();\r\n\t}\r\n\t\r\n\t/** hints for GC - remove some references.\r\n\t\tView is deleted separately. **/\r\n\t_destroy(){\r\n\t\tthis.page = undefined;\r\n\t}\r\n\r\n\t/** delete view from screen and try to free it's memory **/\r\n\t_deleteView(){\r\n\t\tthis._view.destroy();\r\n\t}\r\n\t\r\n\tremove(){\r\n\t\tthis.stopAllOperations();\r\n\t\t//helpers.removeUserProc(this.objProc);\r\n\t\tthis.removeUserProc();\r\n\t\tlet logoObjects = this.page.getLogoObjects();\r\n\t\tlet index = logoObjects.indexOf(this);\r\n\t\tlogoObjects.splice(index, 1);\r\n\t\tthis._deleteView();\r\n\t\tthis._destroy();\r\n\t\tif (window.removeNode)\r\n\t\t\twindow.removeNode(this.id);\r\n\t}\r\n\tremoveUserProc(){\r\n\t\tlet objs=App.getProject().getLogoObjectsByName(this.name);\r\n\t\tif (objs){\r\n\t\tfor (let obj of objs){if ((obj.type == this.type)&&(obj.page !=this.page)){return};\r\n\t\t\t}\r\n\t\t}\r\n\t\thelpers.removeUserProc(this.objProc);\r\n\t}\r\n\tgetPage(){ return this.page;}\r\n\t\r\n\t/** used when switching page. Need correct work with own *visible* property **/\r\n\tsetPageVisible(visible){\r\n\t\tthis._view.setPageVisible(visible);\r\n\t}\r\n\t\r\n\t/** Should be extended in descendant!\r\n\t\tUsed like this: `super(turtleView = new TurtleView(this));` **/\r\n\t_initView(createdView){this._view = createdView}\r\n\t_getView(){ return this._view; }\r\n\t_initViewListeners(){ }\r\n\t\r\n\t/** return fields, describing object (shallow copy).\r\n\t\tShould be extended in descendant if used. **/\r\n\t_getObjectData(){\r\n\t\tlet data = helpers.collectPresentFields(this,[\r\n\t\t\t'name',\r\n\t\t\t'type',\r\n\t\t\t'x',\r\n\t\t\t'y',\r\n\t\t\t'width',\r\n\t\t\t'height',\r\n\t\t\t'showName',\r\n\t\t\t'visible',\r\n\t\t\t'freezed',\r\n\t\t\t'showtoolbar',\r\n\t\t\t'readonly',\r\n\t\t]);\r\n\t\treturn data;\r\n\t}\r\n\t\r\n\t/** default logic - may be overrided **/\r\n\tinitAfterRestore(){\r\n\t\tthis._initView();\r\n\t\tthis._initViewListeners();\r\n\t\tthis.setHandlers(this.onClick, 'onClickCor');\r\n\t\tthis.addUserProc();\r\n\t\tApp.getDrawQueue().addRequest(this); //initial draw;\r\n\t}\r\n\t\r\n\tapply(newValues) {\r\n\t\tthis._view.apply(newValues);\r\n\t}\r\n\r\n\tsetHandlers(handler, corName) {\r\n\t\tthis.localiseHandlers();\r\n\t\tvar userproc = App.getProject().getGlobals().userproc\r\n\t\tvar argList = _arg[corName] || [];\r\n\t\tif (handler && handler.code) {\r\n\t\t\tvar forever = handler.mode && handler.mode == 'forever';\r\n\t\t\tif (userproc.has(handler.code) && userproc.get(handler.code).procProperties.argsnum == argList.length && !forever) {\r\n\t\t\t\tlet newHandler = {};\r\n\t\t\t\tnewHandler[corName] = handler.code;\r\n\t\t\t\tthis._setCor(newHandler, corName, '');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar raw = handler.code;\r\n\t\t\tif (forever)\r\n\t\t\t\traw = 'forever [' + raw + ']';\r\n\r\n\t\t\tvar name = this._getProcName(userproc, corName);\r\n\r\n\t\t\tApp.getProject().getGlobals().addProcedure(name, argList, raw);\r\n\t\t\tvar newValues = {};\r\n\t\t\tnewValues[corName] = name;\r\n\t\t\tthis._setCor(newValues, corName);\r\n\t\t}\r\n\t}\r\n\r\n\t_getProcName(userproc, corName) {\r\n\t\tvar simplename = (this.name + _suffix[corName]).replace(' ', '');\r\n\t\tvar pagename = this.getPage().name.replace(' ', '');\r\n\t\tvar name = simplename;\r\n\t\tfor (var i = 0; userproc.has(name); i++)\r\n\t\t\tname = pagename + \"_\" + simplename + (i ? '_' + i : '');\r\n\r\n\t\treturn name;\r\n\t}\r\n\r\n\tgetCorName(value, argsnum) {\r\n\t\t// allow [] as the value\r\n\t\tif (value.map && value.length == 0)\r\n\t\t\tvalue = '';\r\n\r\n\t\tTypeCheck.stringNotNumber(value);\r\n\t\tif (value) {\r\n\t\t\tvar proc = App.getProject().getGlobals().userproc.get(value);\r\n\t\t\tTypeCheck.assert(proc && proc.procProperties.argsnum == argsnum, undefined, 'errdnl', undefined, value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t_setCor(newValues, corProp) {\r\n\t\tlet name = this[corProp] ? this[corProp]._name : undefined;\r\n\t\tvar newName = newValues[corProp];\r\n\t\tif (name != newName) {\r\n\t\t\tif (this[corProp])\r\n\t\t\t\tthis[corProp].stop(); // doesn't stop onClick\r\n\r\n\t\t\tif (newName == '')\r\n\t\t\t\tthis[corProp] = undefined;\r\n\t\t\telse {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet newproc = JSON.parse(newName);\r\n\t\t\t\t\tif (typeof newproc == 'boolean')\r\n\t\t\t\t\t\tthrow 'boolean';\r\n\r\n\t\t\t\t\tlet globals = App.getProject().getGlobals();\r\n\t\t\t\t\tnewName = this._getProcName(globals.userproc, corProp);\r\n\r\n\t\t\t\t\tlet comment = (window.learnerMode ? '' : 'advanced_') + corProp;\r\n\t\t\t\t\tcomment = primtips.handlers[comment] || primtips.handlers[comment + '_' + this.type];\r\n\r\n\t\t\t\t\tglobals.addProcedure(\r\n\t\t\t\t\t\tnewName,\r\n\t\t\t\t\t\t_arg[corProp] || [],\r\n\t\t\t\t\t\tcomment);\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\t// newName appears to be just a name\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst LogoCodeUnit = require('./LogoCodeUnit');\r\n\t\t\t\tlet lcu = new LogoCodeUnit();\r\n\t\t\t\tlcu.displayName = newName;\r\n\t\t\t\tlet instr = [{ root: newName}];\r\n\t\t\t\tfor (let x of _argValue[corProp] || [])\r\n\t\t\t\t\tinstr.push({ root: x, direct: true });\r\n\t\t\t\tlcu.parser = new Parser();\r\n\t\t\t\tlcu.parser.setWork(instr);\r\n\t\t\t\tthis[corProp] = new LogoCoroutine(lcu, lcu.displayName);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tlocaliseHandlers() {\r\n\t\tif (_suffix.init)\r\n\t\t\treturn _arg;\r\n\r\n\t\t_suffix.init = true;\r\n\t\tfor (let x in _suffix)\r\n\t\t\tif (_suffix.hasOwnProperty(x))\r\n\t\t\t\t_suffix[x] = primtips.handlers[x + '_suffix'];\r\n\t\tfor (let x in _arg)\r\n\t\t\tif (_arg.hasOwnProperty(x)) {\r\n\t\t\t\tlet arr = _arg[x].map;\r\n\t\t\t\t_arg[x] = primtips.handlers[x + '_arg'];\r\n\t\t\t\tif (arr)\r\n\t\t\t\t\t_arg[x] = _arg[x].split(' ');\r\n\t\t\t}\r\n\r\n\t\treturn _arg;\r\n\t}\r\n\r\n\t_getScreenCoords() {\r\n\t\tlet width = App.getProject().getWidth();\r\n\t\tlet height = App.getProject().getHeight();\r\n\t\tlet screenCoords = helpers.coordsLogoToScreen(width, height, this.x, this.y);\r\n\t\treturn {\r\n\t\t\txpos: Math.round(screenCoords.x),\r\n\t\t\typos: Math.round(screenCoords.y)\r\n\t\t};\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = {\r\n\t\t\tname: this.name,\r\n\t\t\ttype: this.type,\r\n\r\n\t\t\tlabel: this.label,\r\n\t\t\tshow_name: JSON.stringify(this.showName),\r\n\t\t\tlocked: JSON.stringify(this.freezed),\r\n\t\t\tvisible: JSON.stringify(this.visible),\r\n\t\t\tshowtoolbar: JSON.stringify(this.showtoolbar),\r\n\t\t\treadonly: JSON.stringify(this.readonly),\r\n\t\t}\r\n\r\n\t\td.rect = this._getScreenCoords();\r\n\t\td.rect.width = this.width;\r\n\t\td.rect.height = this.height;\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\taddUserProc() {\r\n\t}\r\n\r\n\tget(propName, exclude) {\r\n\t\tpropName = propName.toUpperCase();\r\n\t\tif (exclude && -1 < exclude.indexOf(propName))\r\n\t\t\treturn null;\r\n\r\n\t\tswitch(propName)\r\n\t\t{\r\n\t\t\tcase primtips.sg.size: return [this.width, this.height];\r\n\t\t\tcase primtips.sg.pos: return [this.x, this.y];\r\n\t\t\tcase primtips.sg['visible?']: return primtips['sym_' + this.visible][0];\r\n\t\t\tcase primtips.sg['showname?']: return primtips['sym_' + this.showName][0];\r\n\t\t\tcase primtips.sg['frozen?']: return primtips['sym_' + this.freezed][0];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tset(propName, value, exclude) {\r\n\t\tpropName = propName.toUpperCase();\r\n\t\tif (exclude && -1 < exclude.indexOf(propName))\r\n\t\t\treturn null;\r\n\r\n\t\tswitch(propName)\r\n\t\t{\r\n\t\t\tcase primtips.sg.pos:\r\n\t\t\t\tTypeCheck.validPosition('set', this.width, this.height, value);\r\n\t\t\t\tthis.x = value[0];\r\n\t\t\t\tthis.y = value[1];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg.size:\r\n\t\t\t\tTypeCheck.validSize('set', this.x, this.y, value);\r\n\t\t\t\tthis.width = value[0];\r\n\t\t\t\tthis.height = value[1];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg['visible?']:\r\n\t\t\t\tthis.visible = TypeCheck.getBoolean(value, 'set');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg['showname?']:\r\n\t\t\t\tthis.showName = TypeCheck.getBoolean(value, 'set');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg['frozen?']:\r\n\t\t\t\tthis.freezed = TypeCheck.getBoolean(value, 'set');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nmodule.exports = LogoObject;\r\n","'use strict'\r\n/** singleton **/\r\n\r\nconst defaultData = require('./LogoObjectsCreatorData');\r\nconst App = require('./App');\r\nconst Turtle = require('./Turtle');\r\nconst Textbox = require('./Textbox');\r\nconst AudioPlayer = require('./AudioPlayer');\r\nconst Button = require('./Button');\r\nconst Slider = require('./Slider');\r\nconst Hyperlink = require('./Hyperlink');\r\nconst MidiPlayer = require('./MidiPlayer');\r\nconst Page = require('./Page');\r\nconst PIXI = require('pixi.js');\r\n\r\nclass LogoObjectCreator {\r\n\t\r\n\t\r\n\taddLogoObject(obj){\r\n\t\tif (window.needSave)\r\n\t\t\twindow.needSave(true);\r\n\r\n\t\t// duplicate of Turtle.clone\r\n\t\tlet page = App.getProject().getCurrentPage();\r\n\t\tpage._addLogoObject(obj);\r\n\t\tobj.initAfterRestore();\r\n\t\tif (window.createNode)\r\n\t\t\twindow.createNode(obj, page.id);\r\n\t}\r\n\t\r\n\taddPageObject(obj, checkName) {\r\n\t\tif (window.needSave)\r\n\t\t\twindow.needSave(true);\r\n\r\n\t\tlet project = App.getProject();\r\n\t\tproject.addPage(obj);\r\n\t\tobj.initAfterRestore(checkName);\r\n\r\n\t\tproject.setPage(obj);\r\n\t\tif (window.createNode) {\r\n\t\t\twindow.createNode(obj, project.getPages().map(p => p.name));\r\n\r\n\t\t\t// in case we're adding a page with objects - e.g. Undo\r\n\t\t\tfor (const o of obj.getLogoObjects())\r\n\t\t\t\twindow.createNode(o, obj.id);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** return null if name is used. Or try to generate free name. **/\r\n\t_checkName(name, fallback, template, obj) {\r\n\t\tif (name) {\r\n\t\t\ttry {\r\n\t\t\t\tApp.getProject().nameIsUsed(name, obj);\r\n\t\t\t\treturn name;\r\n\t\t\t} catch {}\r\n\t\t}\r\n\r\n\t\tif (fallback) {\r\n\t\t\ttry {\r\n\t\t\t\tApp.getProject().nameIsUsed(fallback, obj);\r\n\t\t\t\treturn fallback;\r\n\t\t\t} catch {}\r\n\t\t}\r\n\r\n\t\treturn App.getProject().getFreeName(template, obj);\r\n\t}\r\n\r\n\tcheckName(obj) {\r\n\t\tconst dispatch = {\r\n\t\t\t\"turtle\": [primtips.names[\"t\"], Turtle],\r\n\t\t\t\"button\": [primtips.names[\"button\"], Button],\r\n\t\t\t\"text\": [primtips.names[\"text\"], Textbox],\r\n\t\t\t\"midi\": [primtips.names[\"melody\"], MidiPlayer],\r\n\t\t\t\"audio\": [primtips.names[\"sound\"], AudioPlayer],\r\n\t\t\t\"slider\": [primtips.names[\"slider\"], Slider],\r\n\t\t\t\"hyperlink\": [primtips.names[\"hyperlink\"], Hyperlink],\r\n\t\t}\r\n\r\n\t\tconst checkArgs = [obj.name, undefined].concat(dispatch[obj.type]);\r\n\t\treturn checkArgs.length < 4 ? obj.name : this._checkName(...checkArgs);\r\n\t}\r\n\r\n\t_checkPageName(name, template, obj){\r\n\t\treturn App.getProject().checkPageName(name,template);\r\n\t}\r\n\t\r\n\t\r\n\t/** if no *name* is supplied, find free one.\r\n\t\tif *name* is specified, and is used, turtle is not created, **null** is returned \r\n\t**/\r\n\tnewTurtle(name = undefined, objectData = undefined){\r\n\t\tif (objectData === undefined) objectData = this.getDefaultTurtleData();\r\n\t\tobjectData.name = this._checkName(name, objectData.name, primtips.names['t'], Turtle);\r\n\t\t\r\n\t\tlet turtle = new Turtle(objectData);\r\n\t\tthis.addLogoObject(turtle);\r\n\t\tturtle.getPage().getMutableLogoContext().who = [turtle];\r\n\t\t//#222.1\r\n\t\tvar screenCoords = turtle._getScreenCoords();\r\n\t\tvar curpage=App.getProject().getCurrentPage();\r\n\t\t//console.log ('CUR-PAGE',curpage.getCanvasDraw());\r\n\t\t//if (curpage.getCanvasDraw()){\r\n\t\tvar color = curpage.getCorrectedColorAt(screenCoords.xpos, screenCoords.ypos);\r\n\t\t//var color=turtle.getPage().getCorrectedColorAt(screenCoords.xpos, screenCoords.ypos);\r\n\t\tvar index = Color.nameFromLogoColor(color);\r\n\t\tturtle._setPrevColor(index);\r\n\t\tconsole.log('COLOR',index);\r\n\t\treturn turtle;\r\n\t}\r\n\r\n\tnewTextbox(name = undefined, position = undefined, size = undefined, data = undefined){\r\n\t\tlet d = data || this.getDefaultTextboxData();\r\n\t\tif (position) {\r\n\t\t\td.x = position[0];\r\n\t\t\td.y = position[1];\r\n\t\t}\r\n\t\tif (size) {\r\n\t\t\td.width = size[0];\r\n\t\t\td.height = size[1];\r\n\t\t}\r\n\r\n\t\td.name = this._checkName(name, d.name, primtips.names['text'], Textbox);\r\n\r\n\t\tlet textbox = new Textbox(d);\r\n\t\tthis.addLogoObject(textbox);\r\n\t\ttextbox.getPage().getMutableLogoContext().textwho = [textbox];\r\n\t\treturn textbox;\r\n\t}\r\n\t\r\n\t/** if name is undefined, it's taken from path. If this name already exists, no new object is created **/\r\n\tnewSound(path, name = undefined, objectData = undefined ){\r\n\t\tif (objectData === undefined) objectData = this.getDefaultSoundData();\r\n\t\t\r\n\t\tif (objectData.file) path = objectData.file;\r\n\t\tif (path === undefined) return null;\r\n\r\n\t\t// if name is undefined, try to use objectData.name; do not guess\r\n\t\t// the name because it's the blob's name\r\n\t\tname = this._checkName(name, undefined, primtips.names['sound'], AudioPlayer);\r\n\t\t\r\n\t\tobjectData.name = name;\r\n\t\tobjectData.file = path;\r\n\t\tlet sound = new AudioPlayer(objectData);\r\n\t\tthis.addLogoObject(sound);\r\n\t\treturn sound;\r\n\t}\r\n\t\r\n\tnewButton(name = undefined, objectData = undefined){\r\n\t\tif (objectData === undefined) objectData = this.getDefaultButtonData();\r\n\t\tobjectData.name = this._checkName(name, objectData.name, primtips.names['button'], Button)\r\n\t\tobjectData.label = (objectData ? objectData.label : undefined) || primtips.names['nothing'];\r\n\t\tlet button = new Button(objectData);\r\n\t\tthis.addLogoObject(button);\r\n\t\treturn button;\r\n\t}\r\n\r\n\tnewSlider(name = undefined, position = undefined, values = undefined, objectData = undefined) {\r\n\t\tlet d = objectData || Object.assign({}, defaultData.sliderData);\r\n\t\td.name = this._checkName(name, d.name, primtips.names['slider'], Slider);\r\n\r\n\t\tif (position) {\r\n\t\t\td.x = position[0];\r\n\t\t\td.y = position[1];\r\n\t\t}\r\n\r\n\t\tif (values) {\r\n\t\t\td.minValue = values[0];\r\n\t\t\td.maxValue = values[1];\r\n\t\t\td.value = values[2];\r\n\t\t}\r\n\r\n\t\tlet slider = new Slider(d);\r\n\t\tthis.addLogoObject(slider);\r\n\t\treturn slider;\r\n\t}\r\n\r\n\tnewHyperlink(objectData = undefined) {\r\n\t\tlet d = objectData || {\r\n\t\t\tname: undefined,\r\n\t\t\ttype: \"hyperlink\",\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\tshowName: true,\r\n\t\t\tvisible: true,\r\n\t\t\tpathname: 'https://lynxcoding.club/',\r\n\t\t\tshortname: '',\r\n\t\t\tfreezed: false,\r\n\t\t};\r\n\r\n\t\td.name = this._checkName(undefined, d.name, primtips.names['hyperlink'], Hyperlink);\r\n\t\tthis.addLogoObject(new Hyperlink(d));\r\n\t}\r\n\r\n\tnewMelody(data = undefined) {\r\n\t\tif (!data) return;\r\n\t\tdata.name = this._checkName(undefined, data.name, primtips.names['melody'], MidiPlayer);\r\n\t\tthis.addLogoObject(new MidiPlayer(data));\r\n\t}\r\n\r\n\tnewPage(name = undefined, data = undefined) {\r\n\t\tlet d = data || Object.assign({}, defaultData.pageData);\r\n\t\td.name = this._checkPageName(name, primtips.names['page'], Page);\r\n\t\tif (!data)\r\n\t\t\td.bgBitmap = PIXI.Texture.EMPTY;\r\n\r\n\t\tthis.addPageObject(new Page(d), this.checkName.bind(this));\r\n\t}\r\n\t\r\n\tgetDefaultTurtleData(){\r\n\t\treturn Object.assign({}, defaultData.turtleData);\r\n\t}\r\n\t\r\n\tgetDefaultTextboxData(){\r\n\t\treturn Object.assign({}, defaultData.textboxData);\r\n\t}\r\n\t\r\n\tgetDefaultSoundData(){\r\n\t\treturn Object.assign({}, defaultData.soundData);\r\n\t}\r\n\t\r\n\tgetDefaultButtonData(){\r\n\t\treturn Object.assign({}, defaultData.buttonData);\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = new LogoObjectCreator();","'use strict'\r\n\r\n/** singleton **/\r\nlet turtleData = {\r\n\t\t\t\t\t\tname: undefined, // will be rewritten at creation\r\n\t\t\t\t\t\ttype: \"turtle\",\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\tshapein: 0,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\theading: 0,\r\n\t\t\t\t\t\tpenDown: false,\r\n\t\t\t\t\t\tpensize: 1,\r\n\t\t\t\t\t\tcolor: 0,\r\n\t\t\t\t\t\tcolorin: 9,\r\n\t\t\t\t\t\tsize: 40,\r\n\t\t\t\t\t\topacity: 100,\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tfreezed: false,\t//not used now\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\theadsync: false,\r\n\t\t\t\t\t\tonColor: [],\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\nlet textboxData = {\r\n\t\t\t\t\t\tname: undefined,\r\n\t\t\t\t\t\ttype: \"text\",\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\twidth: 200,\r\n\t\t\t\t\t\theight: 100,\r\n\t\t\t\t\t\tfreezed: false,\r\n\t\t\t\t\t\tshowName: true,\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\ttext: \"\",\r\n\t\t\t\t\t\tsnaped: false,\r\n\t\t\t\t\t\tsingleLine: false,\r\n\t\t\t\t\t\tshowtoolbar: false,\r\n\t\t\t\t\t\treadonly: false,\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\nlet soundData = {\r\n\t\t\t\t\t\tname: undefined,\r\n\t\t\t\t\t\ttype: \"audio\",\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\twidth: 40,\r\n\t\t\t\t\t\theight: 40,\r\n\t\t\t\t\t\tfreezed: false,\r\n\t\t\t\t\t\tshowName: true,\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t\tfile: undefined,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\r\nlet buttonData = {\r\n\t\t\t\t\t\tname: undefined,\r\n\t\t\t\t\t\ttype: \"button\",\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\twidth: 65,\r\n\t\t\t\t\t\theight: 30,\r\n\t\t\t\t\t\tfreezed: false,\r\n\t\t\t\t\t\tshowName: false,\r\n\t\t\t\t\t\tvisible: true,\r\n\t\t\t\t\t};\r\n\r\n\r\nlet sliderData = {\r\n\tname: undefined,\r\n\ttype: \"slider\",\r\n\tx: 0,\r\n\ty: 0,\r\n\twidth: 120,\r\n\theight: 22,\r\n\tfreezed: false,\r\n\tshowName: true,\r\n\tvisible: true,\r\n\r\n\tminValue: 0,\r\n\tmaxValue: 100,\r\n\tvalue: 50,\r\n};\r\n\r\nlet pageData = {\r\n\tname: undefined,\r\n\tbgin: 0,\r\n\tobjects: [],\r\n\tturtleDeamons: [],\r\n\tmouseDeamons: [],\r\n\tcurturtle: [],\r\n\tcurtext: [],\r\n}\r\n\r\nlet LogoObjectsCreatorData = {turtleData, textboxData, soundData, buttonData, sliderData, pageData};\r\nmodule.exports = LogoObjectsCreatorData;\r\n","'use strict'\r\n\r\nconst StateObservable = require('./StateObservable');\r\n\r\nconst stateNames = [\r\n\t'showName', \r\n\t'visible', \r\n\t'freezed', \r\n\t'snaped',\t//'snaped' is 'transparent'. Used in Textbox\r\n\t'singleLine',\t// used in Textbox;\r\n\t'label',\r\n];\r\n\r\n/** constructor **/\r\n/** fields are getters/setters, which track if property/state was modified **/\r\n\r\nclass LogoViewState extends StateObservable {\r\n\tconstructor(plainObj = {}){\r\n\t\tsuper();\r\n\t\tfor (let property of stateNames){\t\r\n\t\t\tthis.addObservableField(property, plainObj[property]);\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tstatic getPlainFromLogoObject(logoObject){\r\n\t\tlet plainObj = {};\r\n\t\tfor (let property of stateNames){\r\n\t\t\tif (logoObject[property] !== undefined){\r\n\t\t\t\tplainObj[property] = logoObject[property];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn plainObj;\r\n\t}\r\n}\r\n\r\nLogoViewState.prototype.stateNames = stateNames;\r\n\r\nmodule.exports = LogoViewState;","'use strict'\r\n\r\n/** ES6; may be not fully supported\r\n\tNot really case insensitive: it just transforms strings to lowercase.\r\n\tReal storage of original strings and their comparison may be implemented if necessary \r\n\t(though ALL of Map functionality has to be overriden if this way is chosen)\r\n**/\r\nclass MapCaseInsensitive extends Map{\r\n\t\r\n\tget(key){\r\n\t\treturn super.get(key.toString().toLowerCase());\r\n\t}\r\n\t\r\n\tset(key, value){\r\n\t\tsuper.set(key.toString().toLowerCase(), value);\r\n\t}\r\n\t\r\n\thas(key){\r\n\t\treturn super.has(key.toString().toLowerCase());\r\n\t}\r\n\t\r\n\tdelete(key){\r\n\t\treturn super.delete(key.toString().toLowerCase());\r\n\t}\r\n\t\r\n\t//TEST //TODO undefined\r\n\t/** known issue: will break on `undefined` **/\r\n\tcloneDeep(){\r\n\t\treturn new MapCaseInsensitive(\r\n\t\t\t Array.from(this).map(\r\n\t\t\t\t([key, value]) => [key, JSON.parse(JSON.stringify(value))]\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\t\r\n}\r\n\r\n\r\n\r\nmodule.exports = MapCaseInsensitive;","'use strict'\r\n/** singleton **/\r\n\r\nconst logger = require('./logger');\r\n\r\n\r\n/** because MIDI.js creates new instance of instrument on each reload,\r\n\tkeep track of them manually\r\n\t**/\r\nclass MidiInstruments {\r\n\tconstructor(){\r\n\t\tthis.loadedSet = new Set();\r\n\t\tthis.channelCount = 0;\r\n\t}\r\n\r\n\t/** returns diff of what needs loading.\r\n\t\tBefore use in MIDI.loadPlugin() need to check if array is empty **/\r\n\tdiffLoaded(newNames){\r\n\t\tif (typeof newNames === \"string\") newNames = [newNames];\r\n\t\tlet diff = newNames.filter((v) => !this.loadedSet.has(v));\r\n\t\t//if (diff.length == 0) diff = undefined;\r\n\t\treturn diff;\r\n\t}\r\n\t\r\n\taddLoaded(newNames){\r\n\t\tif (typeof newNames === \"string\") newNames = [newNames];\r\n\t\t//if ( !newNames || !newNames.forEach) return;\r\n\t\tlogger.assert(newNames);\r\n\t\tnewNames.forEach((v) => this.loadedSet.add(v));\r\n\t}\r\n\t\r\n\t\r\n\tgetFreeChannel(){\r\n\t\treturn this.channelCount ++;\r\n\t}\r\n}\r\n\r\nmodule.exports = new MidiInstruments();","'use strict'\r\n/** constructor */\r\n\r\nconst logger = require('./logger');\r\nconst LogoObject = require('./LogoObject');\r\nconst helpers = require('./helpers.js');\r\nconst MidiView = require('./MidiView.js');\r\nconst App = require('./App');\r\n\r\nconst Base64Binary = require('MIDI-shim-Base64Binary');\r\nconst MIDI = require('MIDI.js');\r\nconst MidiInstruments = require('./MidiInstruments');\r\n\r\n\r\n\t\t//MWEx: [0 6 11 27 44 71 108]\r\n\t\t// inst1\tpiano\r\n\t\t// inst2\tharpsichord\r\n\t\t// inst3\tvibraphone\r\n\t\t// inst4\tguitar\r\n\t\t// inst5\tviolin\r\n\t\t// inst6\tclarinet\r\n\t\t// inst7\tkalimba\r\nconst instrMapMWEx = new Map([[0,'bright_acoustic_piano'], [6,'harpsichord'], [11,'vibraphone'], [27,'electric_guitar_clean'], [44,'violin'], [71,'clarinet'], [108,'kalimba']]);\r\nconst fallbackInstrument = 'acoustic_grand_piano';\r\n\r\n\r\n//uses https://github.com/mudcube/MIDI.js\r\n\r\nclass MidiPlayer extends LogoObject {\r\n\tconstructor(data){\r\n\t\tsuper(data);\r\n\r\n\t\tthis.label = data.label;\r\n\t\tthis.width = data.width;\r\n\t\tthis.height = data.height;\r\n\t\t\r\n\t\tthis.dataVolume = data.volume;\r\n\t\tthis.dataTempo = data.tempo;\r\n\t\tthis.volume = data.volume / 127 * 99;\t//MWEx range mapping: 0..127 -> 0..99. 63=49. vC = v/127*99\r\n\t\tthis.tempo = (60 / data.tempo * 250);\t//in MWEx file tempo is bpm in 1/4 notes\r\n\t\tthis.tempo *= 2; //HACK ...aaand MWEx has double tempo vs what's written in it's UI!\r\n\t\tthis.unicodeNotes = data.unicodeNotes;\r\n\t\tthis.inst = data.inst;\r\n\t\tlet instAsked = this._mapInstToInstrument(this.inst);\t//always a single instrument, but later converted and passed on as Array\r\n\t\tlet instrumentsToLoad = instAsked;\r\n\t\tif ( !instrumentsToLoad) {\r\n\t\t\tinstrumentsToLoad = fallbackInstrument\r\n\t\t\tlogger.log('MidiPlayer: wrong instrument number, fallback to '+fallbackInstrument);\r\n\t\t}\r\n\t\tthis.duration = data.duration;\t//not used. MWEx seem to ignore it for \"piano\"\r\n\t\t\r\n\t\tthis._sequence = this._parseNotes(this.unicodeNotes);\r\n\t\t\r\n\t\tthis._playing = false;\t\r\n\t\tthis._midiView = undefined;\r\n\t\tthis.id = helpers.guid();\r\n\t\tthis.channel = MidiInstruments.getFreeChannel();\r\n\t\t//let instrumentsToLoad = ['flute'];//[ \"acoustic_grand_piano\", \"electric_piano_1\" ];\r\n\t\t//let instrumentsToLoad = Array.from(this.instMap).map((k,v) => v);\r\n\t\t//let instrumentsToLoad = [ \"acoustic_grand_piano\", \"electric_piano_1\" ];\r\n\t\t//let soundfontUrl = \"http://gleitz.github.io/midi-js-soundfonts/MusyngKite/\";\r\n\t\tlet soundfontUrl = \"https://gleitz.github.io/midi-js-soundfonts/FluidR3_GM/\";\r\n\t\t\t//\"./soundfont/\"\r\n\t\t\r\n\t\tinstrumentsToLoad = MidiInstruments.diffLoaded(instrumentsToLoad);\r\n\t\tif (instrumentsToLoad.length == 0) {\r\n\t\t\tlogger.log('MidiPlayer instruments already loaded: ', instAsked);\r\n\t\t\tMIDI.programChange(this.channel, MIDI.GM.byName[instAsked].number);\r\n\t\t} else {\r\n\t\t\tMIDI.loadPlugin({\r\n\t\t\t\tsoundfontUrl: soundfontUrl,\r\n\t\t\t\t//instrument: instToLoad,\r\n\t\t\t\tinstruments: instrumentsToLoad,\r\n\t\t\t\tonprogress: function(state, progress) {\r\n\t\t\t\t\tlogger.debug('MidiPlayer load progress: ', state, progress);\r\n\t\t\t\t},\r\n\t\t\t\tonsuccess: () => {\r\n\t\t\t\t\tlogger.log('MidiPlayer instruments loaded: ', instrumentsToLoad);\r\n\t\t\t\t\tMidiInstruments.addLoaded(instrumentsToLoad);\r\n\t\t\t\t\tMIDI.programChange(this.channel, MIDI.GM.byName[instrumentsToLoad[0]].number);\t//new versions of mudcube/MIDI.js: 'number' -> 'program'\r\n\t\t\t\t},\r\n\t\t\t\tonerror: () => {\r\n\t\t\t\t\tlogger.log('MidiPlayer instruments failerd to load: ', instrumentsToLoad);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t_mapInstToInstrument(inst){\r\n\t\treturn instrMapMWEx.get(inst); \r\n\t}\r\n\t\r\n\t_parseNotes(notes){\r\n\t\tlogger.assert(typeof notes === \"string\");\r\n\t\tlet seq = [];\r\n\t\tfor (let i=0; i> :c 245 [output 0]\r\n\t\t\t// output sum 48 remainder diff :c 64 36\r\n\t\t\tif (code > 245) code = 0;\r\n\t\t\telse code = (code - 64) % 36 + 48;\r\n\t\t\t\r\n\t\t\tseq.push(code);\r\n\t\t\t///DEBUG\r\n\t\t\t//logger.debug(c,' ',code);\r\n\t\t}\r\n\t\t///DEBUG\r\n\t\t //return [107, 105, 103, 105, 57, 57, 57]\r\n\t\t//return [172, 175, 176, 177].map(c => c-128);\r\n\t\treturn seq;\r\n\t}\r\n\r\n\r\n\tisPlaying(){\r\n\t\treturn this._playing;\r\n\t}\r\n\t\r\n\t/** returns promise */\r\n\tplay(){\r\n\t\t//only one instance can run at a time:\r\n\t\tif (this.isPlaying()){\r\n\t\t\tthis.stop();\r\n\t\t}\r\n\t\tthis._playing = true;\r\n\t\tlogger.debug(\"Midi play()\");\r\n\t\tlet promise = this._runMidi();\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t\treturn promise;\r\n\t}\r\n\t\r\n\t//setInterval is quite imprecise. See how MIDI.js handles ticks\r\n\t_runMidi(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tlet debugStartTime = performance.now();\r\n\t\t\tlogger.debug('tempo (doubled): ', this.tempo);\r\n\t\t\tlet interval = 60000 / this.tempo;\r\n\t\t\t//interval = interval / 2; ///HACK MWEx has double tempo!\r\n\t\t\tlet offDelay = interval / 1000;\r\n\t\t\tlet velocity = 100;\r\n\t\t\tMIDI.setVolume(0, this.volume);\r\n\t\t\tthis._seqPointer = 0;\r\n\t\t\tthis._timer = setInterval(() => {\r\n\t\t\t\tif (this._seqPointer >= this._sequence.length) {\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t\t///DEBUG\r\n\t\t\t\t\t//logger.debug(performance.now()-debugStartTime);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tMIDI.noteOn(this.channel, this._sequence[this._seqPointer], velocity, 0);\r\n\t\t\t\t\tMIDI.noteOff(this.channel, this._sequence[this._seqPointer], 0+offDelay);\r\n\t\t\t\t\tthis._seqPointer++;\r\n\t\t\t\t}\r\n\t\t\t}, interval);\t\t\r\n\t\t});\t\r\n\t}\r\n\t\r\n\t\r\n\tstop(){\r\n\t\tlogger.log(\"Midi stop()\");\r\n\t\tclearInterval(this._timer);\r\n\t\tthis._playing = false;\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\t\r\n\tsetInstrument(name){\r\n\t\tlet instrumentsToLoad = MidiInstruments.diffLoaded(name);\r\n\t\tif (instrumentsToLoad.length == 0) {\r\n\t\t\tlogger.log('(setInstrument) MidiPlayer instrument already loaded: ', name);\r\n\t\t\tMIDI.programChange(this.channel, MIDI.GM.byName[name].number);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tMIDI.loadResource({\r\n\t\t\tinstruments: instrumentsToLoad,\r\n\t\t\tonprogress: function(state, progress) {\r\n\t\t\t\tlogger.debug('(setInstrument) MidiPlayer load progress: ', state, progress);\r\n\t\t\t},\r\n\t\t\tonsuccess: () => {\t//bind `this`\r\n\t\t\t\tlogger.log('(setInstrument) MidiPlayer instrument loaded: ', instrumentsToLoad);\r\n\t\t\t\t//https://github.com/mudcube/MIDI.js/issues/158\r\n\t\t\t\tMidiInstruments.addLoaded(instrumentsToLoad);\r\n\t\t\t\tMIDI.programChange(this.channel, MIDI.GM.byName[name].number);\r\n\t\t\t},\r\n\t\t\tonerror: () => {\r\n\t\t\t\tlogger.log('(setInstrument) MidiPlayer instrument failed to load: ', instrumentsToLoad);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n//////////////////\tset and get\t//////////////////////////////////\r\n\t\r\n\tget(propname){\r\n\t\treturn null;\r\n\t}\r\n\t\r\n\t/** returns true or null */\r\n\tset(propname, value){\r\n\t\tif (propname == \"instrument\") {\r\n\t\t\tthis.setInstrument(value);\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\t\r\n///////////// Common LogoObject functions ////////////////////////\t\r\n\t\r\n\t//called when \"stopall\" executed\r\n\tonStopall(){\r\n\t\tthis.stop();\r\n\t}\r\n\t\r\n\t_initView(){\r\n\t\tsuper._initView(this._midiView = new MidiView(this));\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = super.save();\r\n\t\td.type = \"melody\";\r\n\t\td.volume = this.dataVolume;\r\n\t\td.tempo = this.dataTempo;\r\n\t\td.unicode_notes = this.unicodeNotes;\r\n\t\td.inst = this.inst;\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\taddUserProc(list, trans) {\r\n\t\tlet name = this.name;\r\n\t\thelpers.addUserProc(this.objProc, trans, name, 0, function(prims) { prims.audiostart(name); });\r\n\t}\r\n\r\n\tgetUserProcNames() {\r\n\t\treturn [this.name];\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = MidiPlayer;\r\n","\"use strict\"\r\n/** constructor **/\r\n\r\nconst $ = require('jquery');\r\nconst logger = require('./logger');\r\nconst HtmlLogoView = require('./HtmlLogoView');\r\nconst App = require('./App');\r\n\r\nclass MidiView extends HtmlLogoView{\r\n\tconstructor(playerObject){\r\n\t\tsuper(playerObject, false); //dragByLabel = false\r\n\t\tthis.player = playerObject;\r\n\t\r\n\t\tlet playerHtml = ``;\r\n\t\tthis.insertElement(playerHtml);\r\n\t\t\r\n\t\t$('#'+this.player.id).click((mouseData) => {\r\n\t\t\tif (this._clickPreventing) {\t//workaround to prevent click after drag&drop\r\n\t\t\t\tthis._clickPreventing = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//DEBUG\r\n\t\t\tlogger.debug(\"Click midi button\");\r\n\t\t\tthis.click();\r\n\t\t});\r\n\t\t$('#'+this._divId).draggable({cancel:false});\t//to prevent cliks from stopping drag events\r\n\t\t\r\n\t\t//this._audioHTML = new Audio(this.player.file);\r\n\t\t//this._endedPromise = undefined;\r\n/*\t\tthis._endedEvent = function(){\r\n\t\t\t//promise control there\r\n\t\t\tthis.player.stop();\r\n\t\t}.bind(this);\r\n*/\t\t\r\n\t\t//this._audioHTML.addEventListener('ended', this._endedEvent);\r\n\t}\r\n\t\r\n\t/*\r\n\tresolveEndedPromise(){\r\n\t\tif (this._endedPromise) {\r\n\t\t\tthis._endedPromise._resolve();\r\n\t\t}\r\n\t}\r\n\t*/\r\n\r\n\t\r\n\t/*\r\n\t// returns two promises! only first throws error, second is for external control\r\n\tcontrolledPlay(){\r\n\t\tlet promise = this._audioHTML.play();\r\n\t\tlet _resolve;\r\n\t\tlet _reject;\r\n\t\tthis._endedPromise = new Promise((resolve, reject) => {\r\n\t\t\t_resolve = resolve;\t//HACK for external control\r\n\t\t\t_reject = reject;\r\n\t\t});\r\n\t\tthis._endedPromise._resolve = _resolve;\r\n\t\tthis._endedPromise._reject = _reject;\r\n\t\treturn {\r\n\t\t\tstartedPromise: promise,\r\n\t\t\tendedPromise: this._endedPromise\r\n\t\t}\t\r\n\t}\r\n\t*/\r\n\t\r\n\t\r\n\tstop(){\r\n\t\tthis._audioHTML.pause();\r\n\t\tthis._audioHTML.currentTime = 0;\r\n\t}\r\n\t\t\r\n\tclick(){\r\n\t\tif ( !this.player.isPlaying()){\r\n\t\t\tthis.player.play();\r\n\t\t} else {\r\n\t\t\tthis.player.stop();\r\n\t\t}\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\t\t\r\n\tdraw(){\r\n\t\tsuper.draw();\r\n\t\tif ( !this.player.isPlaying()){\r\n\t\t\t$('#'+this.player.id).attr('src', \"/player/soundicon.png\");\r\n\t\t} else {\r\n\t\t\t$('#'+this.player.id).attr('src', \"/player/soundicon_pressed.png\");\r\n\t\t}\r\n\t\t\r\n\t\t$('#'+this.player.id).css({\r\n\t\t\t//width: player.width,\r\n\t\t\t//height: player.height,\r\n\t\t\tresize: \"none\",\r\n\t\t});\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = MidiView;","'use strict'\r\nvar LogoError = require('./LogoError');\r\nvar TypeCheck = require('./TypeCheck');\r\n\r\nvar MusicalOctave = function(){\r\n\r\n\tconst frequencyValues = {\r\n\t\t// 0: \t32.703, \t// \tC1\r\n\t\t1: \t34.65, \t\t// \tC#1\r\n\t\t2: \t36.95, \t\t// \tD1\r\n\t\t3: \t38.88, \t\t// \tD#1\r\n\t\t4:\t41.21, \t\t// \tE1\r\n\t\t5:\t43.65, \t\t// \tF1\r\n\t\t6:\t46.25, \t\t// \tF#1\r\n\t\t7:\t49.00, \t\t// \tG1\r\n\t\t8:\t51.90, \t\t// \tG#1\r\n\t\t9:\t55.00, \t\t// \tA1\r\n\t\t10:\t58.26, \t\t// \tA#1\r\n\t\t11:\t61.74, \t\t// \tH1\r\n\t\t\r\n\t\t12:\t65.406, \t// \tC\r\n\t\t13:\t69.30, \t\t// \tC#\r\n\t\t14:\t73.91, \t\t// \tD\r\n\t\t15:\t77.78, \t\t// \tD#\r\n\t\t16:\t82.407, \t// \tE\r\n\t\t17:\t87.307, \t// \tF\r\n\t\t18:\t92.50,\t \t// \tF#\r\n\t\t19:\t98.00,\t\t// \tG\r\n\t\t20:\t103.80,\t\t// \tG#\r\n\t\t21:\t110.00, \t// \tA\r\n\t\t22:\t116.54, \t// \tA#\r\n\t\t23:\t123.47, \t// \tH\r\n\t\r\n\t\t24:\t130.81, \t// \tc\r\n\t\t25:\t138.59, \t// \tc#\r\n\t\t26:\t147.83, \t// \td\r\n\t\t27:\t155.56, \t// \td#\r\n\t\t28:\t164.81, \t// \te\r\n\t\t29:\t174.61, \t// \tf\r\n\t\t30:\t185.00, \t// \tf#\r\n\t\t31:\t196.00, \t// \tg\r\n\t\t32:\t207.00, \t// \tg#\r\n\t\t33:\t220.00, \t// \ta\r\n\t\t34:\t233.08, \t// \ta#\r\n\t\t35:\t246.94, \t// \th\r\n\t\r\n\t\t36:\t261.63, \t// \tc1\r\n\t\t37:\t277.18, \t// \tc#1\r\n\t\t38:\t293.66, \t// \td1\r\n\t\t39:\t311.13, \t// \td#1\r\n\t\t40:\t329.63, \t// \te1\r\n\t\t41:\t349.23, \t// \tf1\r\n\t\t42:\t369.99, \t// \tf#1\r\n\t\t43:\t392.00, \t// \tg1\r\n\t\t44:\t415.30, \t// \tg#1\r\n\t\t45:\t440.00, \t// \ta1\r\n\t\t46:\t466.16, \t// \ta#1\r\n\t\t47:\t493.88, \t// \th1\r\n\t\r\n\t\t48:\t523.25, \t// \tc2\r\n\t\t49: 554.36,\t\t// c#2 \t\t\r\n\t\t50:\t587.33, \t// \td2\r\n\t\t51: 622.26, // d#2 \r\n\t\t52:\t659.26, \t// \te2\r\n\t\t53:\t698.46, \t// \tf2\r\n\t\t54: 739.98,\t\t// f#2\r\n\t\t55:\t783.99, \t// \tg2\r\n\t\t56: 830.60,\t\t// g#2 \r\n\t\t57:\t880.00, \t// \ta2\r\n\t\t58: 932.32, // a#2\r\n\t\t59:\t987.77, \t// \th2\r\n\t\r\n\t\t60:\t1046.5, \t// \tc3 36\r\n\t\t61:\t1108.7, \t// \tc#3 \r\n\t\t62:\t1174.6, \t// \td3\r\n\t\t63:\t1244.5, \t// \td#3\r\n\t\t64:\t1318.5, \t// \te3\r\n\t\t65:\t1396.9, \t// \tf3\r\n\t\t66:\t1480.0, \t// \tf#3\r\n\t\t67:\t1568.0, \t// \tg3\r\n\t\t68:\t1661.2, \t// \tg#3\r\n\t\t69:\t1720.0, \t// \ta3\r\n\t\t70:\t1864.6, \t// \ta#3\r\n\t\t71:\t1975.5, \t// \th3\r\n\t\t\r\n\t\t72:\t2093.0, \t// \tc4\r\n\t\t73:\t2217.4, \t// \tc#4\r\n\t\t74:\t2349.2, \t// \td4\r\n\t\t75:\t2489.0, \t// \td#4\r\n\t\t76:\t2637.0, \t// \te4\r\n\t\t77:\t2793.8, \t// \tf4\r\n\t\t78:\t2960.0, \t// \tf#4\r\n\t\t79:\t3136.0, \t// \tg4\r\n\t\t80:\t3332.4, \t// \tg#4\r\n\t\t81:\t3440.0, \t// \ta4\r\n\t\t82:\t3729.2, \t// \ta#4\r\n\t\t83:\t3951.0, \t// \th4\r\n\t\t\r\n\t\t84:\t4186.0, \t// \tc5\r\n\t\t85:\t4434.8, \t// \tc#5\r\n\t\t86:\t4698.4, \t// \td5\r\n\t\t87:\t4978.0, \t// \td#5\r\n\t\t88:\t5274.0, \t// \te5\r\n\t\t89:\t5587.7, \t// \tf5\r\n\t\t90:\t5919.9, \t// \tf#5\r\n\t\t91:\t6271.9, \t// \tg5\r\n\t\t92:\t6644.9, \t// \tg#5\r\n\t\t93:\t7040.0, \t// \ta5\r\n\t\t94:\t7458.6, \t// \ta#5\r\n\t\t95:\t7902.1, \t// \th5\r\n\r\n\t\t96:\t8372.0, \t// \tc6\r\n\t\t97:\t8869.6, \t// \tc#6\r\n\t\t98:\t9396.8, \t// \td6\r\n\t\t99:\t9956, \t\t// \td#6\r\n\t 100:\t10548, \t\t// \te6\r\n\t 101:\t11175.4, \t// \tf6\r\n\t 102:\t11839.8, \t// \tf#6\r\n\t 103:\t12543.8, \t// \tg6\r\n\t 104:\t13289.8, \t// \tg#6\r\n\t 105:\t14080, \t\t// \ta6\r\n\t 106:\t14917.2, \t// \ta#6\r\n\t 107:\t15804.2, \t// \th6\r\n\r\n\t 108:\t16744, \t\t// \tc7\r\n\t 109:\t17739.2, \t// \tc#7\r\n\t 110:\t18793.6, \t// \td7\r\n\t 111:\t19912, \t\t// \td#7\r\n\t 112:\t21096, \t\t// \te7\r\n\t 113:\t22350.8, \t// \tf7\r\n\t 114:\t23679.6, \t// \tf#7\r\n\t 115:\t25087.6, \t// \tg7\r\n\t 116:\t26579.6, \t// \tg#7\r\n\t 117:\t28160, \t\t// \ta7\r\n\t 118:\t29834.4, \t// \ta#7\r\n\t 119:\t31608.4, \t// \th7\r\n\r\n\t 120:\t33488, \t\t// \tc8\r\n\t 121:\t35478.4, \t// \tc#8\r\n\t 122:\t37587.2, \t// \td8\r\n\t 123:\t39824, \t\t// \td#8\r\n\t 124:\t42192, \t\t// \te8\r\n\t 125:\t44701.6, \t// \tf8\r\n\t 126:\t47359.2, \t// \tf#8\r\n\t 127:\t50175.2, \t// \tg8\r\n\r\n\t}\r\n\r\n\tfunction checkLogoOctave(val) {\r\n\t\t\r\n\t\tlet fr = TypeCheck.getNumber(val, '', [1, 'errminval'], [127, 'errmaxval']);\r\n\r\n\t\tif (fr in frequencyValues) return true;\r\n\r\n\t\tthrow new LogoError('errdnl', '', TypeCheck.getCompactedString(val));\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction getFrequency(val) {\r\n\t\tif ( checkLogoOctave(val) ) return frequencyValues[val];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetFrequency,\r\n\t\tcheckLogoOctave,\r\n\t}\r\n\r\n}\r\n\r\n\r\n\r\nmodule.exports = MusicalOctave();\r\n","'use strict'\r\n//TODO generate getters (is it even possible?)\r\n/** singletone **/\r\n\r\n\r\nfunction Options(){\r\n\t\r\n\tif ( !optionsData) {\r\n\t\tthrow new Error('no options file. Failing...');\r\n\t}\r\n\t\r\n\tfor (let prop in optionsData) {\r\n\t\tif (optionsData.hasOwnProperty(prop)) {\r\n\t\t\tthis[prop] = optionsData[prop];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nmodule.exports = new Options();","\"use strict\"\r\n/** constructor **/\r\n\r\nconst helpers = require('./helpers.js');\r\nconst Color = require('./Color.js');\r\nconst LogoContext = require('./LogoContext');\r\nconst logger = require('./logger');\r\nconst LogoCoroutine = require('./LogoCoroutine');\r\nconst LogoError = require('./LogoError.js');\r\n\r\nfunction Page(pageData){\r\n\tvar PageView = require('./PageView.js');\r\n\tvar Turtle = require('./Turtle.js');\r\n\tvar Button = require('./Button.js');\r\n\tvar Textbox = require('./Textbox.js');\r\n\tvar MidiPlayer = require('./MidiPlayer.js');\r\n\tvar AudioPlayer = require('./AudioPlayer');\r\n\tvar Slider = require('./Slider');\r\n\tvar Hyperlink = require('./Hyperlink');\r\n\t\r\n\tvar LogoObjects = [];\r\n\t\r\n\t//now they are fields of this._logoContext!\r\n\t//var currentTurtles = [];\t//Turtle objects - will be set in initAfterRestore\r\n\t//var currentTextboxes = [];\t//Textbox objects\r\n\tthis._logoContext = new LogoContext([],[]);\r\n\t\r\n\tthis._bgBitmapLoaded = undefined;\r\n\tthis._freezeBitmapLoaded = undefined;\r\n\tvar pageView = undefined;\r\n\tthis.objProc = [];\r\n\tthis.id = 'page-' + helpers.guid();\r\n\tthis.type = 'page';\r\n\t\r\n\tthis.isBgFreezed = function(){\r\n\t\treturn this._isBgFreezed;\r\n\t}\r\n\t\r\n\tthis._addLogoObject = function(obj){\r\n\t\tthis._pushLogoObject(obj);\r\n\t}\r\n\t\r\n\tthis._addTurtle = function(turtle){\r\n\t\tthis._addLogoObject(turtle);\r\n\t\t//this.setCurrentTurtlesByNames([turtle.name]);\r\n\t}\r\n\t\r\n\tthis._pushLogoObject = function(object){\r\n\t\tLogoObjects.push(object);\r\n\t\tobject.page = this;\r\n\t\tlogger.log(object.getName());\r\n\t}\r\n\t\r\n\tfunction getLogoObjectByName(name){\r\n\t\tfor (var i=0;i getLogoObjectByName(x.name) != null);\r\n\t\t//let text = lc.textwho;\r\n\t\tif (!turtle || turtle.length == 0){turtle=null};\r\n\t\t//if (text.length == 0) {text = [getLogoObjectByName(this.get('texts')[0])]};\r\n\t\tif (turtle == null) {turtle = [getLogoObjectByName(this.get('turtles')[0])]};\r\n\t\tif (turtle == null){turtle=[]}\r\n\t\t\telse if (turtle[0] == null){turtle=[]};\r\n\t\t//if (text == null){text=[]}\r\n\t\t//\telse if (text[0] == null){text=[];}\r\n\t\treturn new LogoContext(turtle,this._logoContext.textwho);\r\n\t}\r\n\t//#353\r\n\t/** requires input nameList to be either parsed Logo list, or single Logo word **/\r\n\tfunction _parseNameList(nameList){\r\n\t\tif (typeof nameList === 'string') {\r\n\t\t\tif (nameList == \"\") {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t\treturn [nameList];\r\n\t\t}\r\n\t\treturn nameList;\r\n\t}\r\n\t\r\n\tthis.save = function save() {\r\n\t\tlet view = this._getPageView();\r\n\t\tlet d = {\r\n\t\t\ttype: 'page',\r\n\t\t\tname: this.name,\r\n\t\t\tbg: this.getBgIn(),\r\n\t\t\tcurturtle: this.getCurrentTurtles().map(x => x.name),\r\n\r\n\t\t\tcurtext: this.getCurrentTextboxes().map(x => x.name),\r\n\t\t\tbuffer: view.extractImage(view._getPageBgTexture()),\r\n\t\t\tfreezebg: this._isBgFreezed ? view.extractImage(view._getFreezeBgTexture()) : undefined,\r\n\t\t\tturtle_deamons: [],\r\n\t\t\tmouse_deamons: [],\r\n\t\t\tdeamons_mode: [],\r\n\t\t\tObject: [],\r\n\t\t};\r\n\r\n\t\tfor (let o of LogoObjects)\r\n\t\t\td.Object.push(o.save());\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\tthis.addUserProc = function addUserProc(list, trans) {\r\n\t\tlet name = this.name;\r\n\t\thelpers.addUserProc(this.objProc, trans, name, 0, function(prims) { prims.getpage(name); });\r\n\t}\r\n\r\n\tthis.getUserProcNames = function() {\r\n\t\treturn [this.name];\r\n\t}\r\n\t\r\n\tthis.rename = function(newName) {\r\n\t\tif (this.isWallpaper)\r\n\t\t\tthrow new LogoError('errdnl', '', this.name);\r\n\r\n\t\tlet project = App.getProject();\r\n\t\tlet oldIndex = project.getPages().map(p => p.name).indexOf(this.name);\r\n\t\thelpers.removeUserProc([this.name]);\r\n\t\tthis.name = newName;\r\n\t\tthis.addUserProc();\r\n\t\tif (window.setProjectTitle)\r\n\t\t\twindow.setProjectTitle(newName);\r\n\t\tif (window.renameNode) {\r\n\t\t\t// this complexity is required because jstree needs the \"next\" index when moving down,\r\n\t\t\t// but the \"previous\" when moving up\r\n\t\t\tlet newIndex = project.getPages().map(p => p.name).indexOf(newName);\r\n\t\t\twindow.renameNode(this.id, newName, newIndex + (oldIndex < newIndex ? 1 : 0));\r\n\t\t}\r\n\t}\r\n\r\n\tthis.checkApply = function(newValues) {\r\n\t\tif (newValues['name'] && newValues.name.toUpperCase() != this.name.toUpperCase())\r\n\t\t\ttry {\r\n\t\t\t\tApp.getProject().nameIsUsed(newValues.name, this.constructor);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn ['name'];\r\n\t\t\t}\r\n\t}\r\n\r\n\tthis.apply = function(newValues) {\r\n\t\tfor (var i in newValues) {\r\n\t\t\tif (i == 'name') {\r\n\t\t\t\tthis.rename(newValues.name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis.remove = function(){\r\n\t\tif (this.isWallpaper) {\r\n\t\t\tthis.clean();\r\n\t\t\tthis.unfreezebg();\r\n\t\t\tthis.setBgIn(0);\r\n\t\t\twhile(LogoObjects.length)\r\n\t\t\t\tLogoObjects[0].remove();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\thelpers.removeUserProc([this.name]);\r\n\t\tif (window.removeNode)\r\n\t\t\twindow.removeNode(this.id);\r\n\r\n\t\t// LogoObject.remove modifies LogoObjects, hence can't use for()\r\n\t\twhile (LogoObjects.length)\r\n\t\t\tLogoObjects[0].remove();\r\n\r\n\t\tApp.getProject().removePage(this);\r\n\r\n\t\t// removePage may call save, setVisible, so, destroy the view after\r\n\t\tpageView.destroy();\r\n\t\tpageView = undefined;\r\n\t}\r\n\r\n\t//CONSTRUCTOR\t\r\n\tvar self = this;\r\n\tthis.name = pageData.name;\r\n\tthis._bgBitmapLoaded = pageData.bgBitmap;\r\n\tthis._freezeBitmapLoaded = pageData.freezeBitmap;\r\n\tthis._isBgFreezed = (this._freezeBitmapLoaded != undefined);\t//criteria of whether bg is freezed on load\r\n\tthis.setBgIn(pageData.bgin);\r\n\t//this.bgin = pageData.bgin;\r\n\t//this._bg = Color.addAlphaByte(0xff, Color.colorRGBFromLogo(pageData.bgin));\t-- no bg_alpha exist\r\n\t\r\n\tfor (let objectData of pageData.objects){\r\n\t\tif (objectData.type == \"turtle\"){\r\n\t\t\tlet turtle = new Turtle(objectData);\r\n\t\t\tthis._addTurtle(turtle);\r\n\t\t} else if (objectData.type == \"button\"){\r\n\t\t\tlet button = new Button(objectData);\r\n\t\t\tthis._addLogoObject(button);\r\n\t\t} else if (objectData.type == \"text\"){\r\n\t\t\tlet textbox = new Textbox(objectData);\r\n\t\t\tthis._addLogoObject(textbox);\r\n\t\t} else if (objectData.type == \"midi\"){\r\n\t\t\tlet player = new MidiPlayer(objectData);\r\n\t\t\tthis._addLogoObject(player);\r\n\t\t} else if (objectData.type == \"audio\"){\r\n\t\t\tlet player = new AudioPlayer(objectData);\r\n\t\t\tthis._addLogoObject(player);\r\n\t\t} else if (objectData.type == \"slider\"){\r\n\t\t\tlet slider = new Slider(objectData);\r\n\t\t\tthis._addLogoObject(slider);\r\n\t\t} else if (objectData.type == \"hyperlink\"){\r\n\t\t\tlet hyperlink = new Hyperlink(objectData);\r\n\t\t\tthis._addLogoObject(hyperlink);\r\n\t\t} else {\r\n\t\t\tlogger.warning(\"unsupported LogoObject\");\r\n\t\t}\r\n\t}\r\n\t\r\n\t//initialize \"deamons\" (color reactions):\r\n\tthis.turtleDeamonsExist = false;\r\n\tthis.turtleDeamonsCors = pageData.turtleDeamons.map( (code, i) => {\r\n\t\tif (code) {\r\n\t\t\tthis.turtleDeamonsExist = true;\r\n\t\t\tlet coroutine = new LogoCoroutine(code, this.name+\" turtle-deamons \"+i);\r\n\t\t\treturn coroutine;\r\n\t\t} else return undefined;\r\n\t});\r\n\tthis.mouseDeamonsExist = false;\r\n\tthis.mouseDeamonsCors = pageData.mouseDeamons.map( (code, i) => {\r\n\t\tif (code) {\r\n\t\t\tthis.mouseDeamonsExist = true;\r\n\t\t\tlet coroutine = new LogoCoroutine(code, this.name+\" mouse-deamons \"+i);\r\n\t\t\treturn coroutine;\r\n\t\t} else return undefined;\r\n\t});\r\n\t//onClick event is set in setVisible()\r\n\t\r\n\t\r\n\t\r\n\t//////////////////\tset and get\t//////////////////////////////////\r\n\r\n\tconst translateLocType = {\r\n\t\tturtles: 'turtle',\r\n\t\tsliders: 'slider',\r\n\t\tbuttons: 'button',\r\n\t\ttexts: 'text',\r\n\t\tsounds: 'audio',\r\n\t\thyperlinks: 'hyperlink'\r\n\t};\r\n\r\n\tthis.get = function(propname, nomap){\r\n\t\tpropname = propname.toUpperCase();\r\n\t\tfor (let x in translateLocType)\r\n\t\t\tif (primtips.sg[x] == propname) {\r\n\t\t\t\tlet res = LogoObjects.filter(o => o.type == translateLocType[x]);\r\n\t\t\t\treturn nomap ? res : res.map(x => x.name);\r\n\t\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\t\r\n}\r\n\t\r\nmodule.exports = Page;","\"use strict\"\r\n/** constructor **/\r\n\r\n\r\nvar PageView = function(pageObject){\r\n\tvar App = require('./App.js');\r\n\tvar PIXI = require('pixi.js');\r\n\tvar pixihelpers = require('./pixihelpers.js');\r\n\tvar CanvasDraw = require('./CanvasDraw.js');\r\n\tvar logger = require('./logger');\r\n\t\r\n\tvar Options = require('./Options');\r\n\t\r\n\t//used only if Options.doubleDrawing is true\r\n\tconst ONCOLOR_ALPHA_THRESHOLD = 0x70;\t//we consider everything with lower than this to be subpixels (artifacts of HTML Canvas antialiasing)\r\n\t\r\n\tvar page = pageObject;\r\n\tvar project = App.getProject();\r\n\t\r\n\tvar pageBgBuffer = undefined;\t//u32\r\n\tvar freezeBgBuffer = undefined;\r\n\tvar pageBgBufferUpdate = true;\t//extract at first access\r\n\tvar freezeBgBufferUpdate = true;\r\n\t\r\n\t//init View\r\n\tvar pageContainer = new PIXI.Container(); //pixi v4\r\n\tvar turtles = new PIXI.Container();\r\n\t\t//new PIXI.DisplayObjectContainer(); \r\n\t\r\n\t//bg color filling:\r\n\tvar graphicsBgFill = new PIXI.Graphics();\r\n\t//page._bg is RGBA (A = 0 or 0xFF)\r\n\t//graphicsBgFill.beginFill(Color.removeAlphaByte(page._bg), Color.readAlphaByte(page._bg)/255);\r\n\t//graphicsBgFill.drawRect(0, 0, project.getWidth(), project.getHeight());\r\n\r\n\t//buffer:\r\n\tvar pageBgTexture = pixihelpers.textureToRenderTexture(\r\n\t\tpage._bgBitmapLoaded.texture, App.getRenderer(), project.getWidth(), project.getHeight());\r\n\tpage._bgBitmapLoaded = undefined; //remove memory reference\r\n\tvar pageBgLayer = new PIXI.Sprite(pageBgTexture);\r\n//DEBUG\r\n\tpageBgLayer._debugString = \"pageBgLayer\";\r\n\t\r\n\t//freezebg:\r\n\tvar freezeBgTexture;\r\n\tif (page._freezeBitmapLoaded){\r\n\t\tfreezeBgTexture = pixihelpers.textureToRenderTexture(\r\n\t\t\tpage._freezeBitmapLoaded.texture, App.getRenderer(), project.getWidth(), project.getHeight());\r\n\t\t\tpage._freezeBitmapLoaded = undefined; //remove memory reference\r\n\t} else {\r\n\t\tfreezeBgTexture = pixihelpers.textureToRenderTexture(\r\n\t\t\tundefined, App.getRenderer(), project.getWidth(), project.getHeight());\r\n\t}\r\n\tvar freezeBgLayer = new PIXI.Sprite(freezeBgTexture);\r\n\t\r\n\t\r\n\tpageContainer.addChild(graphicsBgFill);\r\n\tpageContainer.addChild(freezeBgLayer);\t\r\n\tpageContainer.addChild(pageBgLayer);\r\n\t\r\n\tApp.getStage().addChild(pageContainer);\r\n\tvar canvasDraw = new CanvasDraw(pageContainer); // this adds another child\r\n\r\n\t//html layer\r\n\tlet pageDivId = helpers.guid();\r\n\tlet pageDiv = $(`
`);\r\n\t$(\"#layer-div\").append(pageDiv);\r\n\t\r\n\t\r\n\tthis.setVisible = function(visible, excludeObjects){\r\n\t\tpageContainer.visible = visible;\r\n\t\tpageDiv.hide();\r\n\t\tif (visible) {\r\n\t\t\tif (!page.isWallpaper)\r\n\t\t\t\tpageContainer.addChild(project.getWallpaper()._getPageView().getTurtlesLayer());\r\n\t\r\n\t\t\tpageContainer.addChild(turtles);\r\n\r\n\t\t\tif (!excludeObjects) {\r\n\t\t\t\tpageDiv.show();\r\n\t\t\t\tthis.setupEventsOnVisible();\t//mouse-deamons\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t//color and page._bg is RGBA (A = 0 or 0xFF)\r\n\tthis.setBgRGB = function(color){\r\n\t\tpage._bg = color;\r\n\t\tgraphicsBgFill.clear();\r\n\t\t//graphicsBgFill.beginFill(color, 1.0);\r\n\t\tgraphicsBgFill.beginFill(Color.removeAlphaByte(Color.flipARGB(page._bg)), Color.readAlphaByte(page._bg)/255);\r\n\t\tgraphicsBgFill.drawRect(0, 0, project.getWidth(), project.getHeight());\r\n\t}\r\n\t\r\n\tthis.clean = function(){\r\n\t\tcanvasDraw.clean();\r\n\t\tlet tmpGraphics = new PIXI.Graphics();\r\n\t\tApp.getRenderer().render(tmpGraphics, pageBgTexture, true); //clear = true;\r\n\t\tpageBgBufferUpdate = true;\r\n\t}\r\n\t\r\n\tthis.freezebg = function(){\r\n\t\tcanvasDraw.renderToPageBgLayer(this);\r\n\t\tApp.getRenderer().render(pageBgLayer, freezeBgTexture, false); //clear = false;\r\n\t\tfreezeBgBufferUpdate = true;\r\n\t\tthis.clean();\r\n\t}\r\n\t\r\n\tthis.extractImage = function(texture) {\r\n\t\tcanvasDraw.renderToPageBgLayer(this);\r\n\t\tlet pix = App.getRenderer().extract.pixels(texture);\r\n\t\treturn pixihelpers.demultiply(pix, texture.width, texture.height);\r\n\t}\r\n\r\n\tthis.unfreezebg = function(){\r\n\t\t//first, render to freezeBg, to get correct overlay order:\r\n\t\tApp.getRenderer().render(pageBgLayer, freezeBgTexture, false); //clear = false;\r\n\t\t//then copy to pageBg:\r\n\t\tApp.getRenderer().render(freezeBgLayer, pageBgTexture, true); //clear = true;\r\n\t\t//and clear freezeBg:\r\n\t\tlet tmpGraphics = new PIXI.Graphics();\r\n\t\tApp.getRenderer().render(tmpGraphics, freezeBgTexture, true); //clear = true;\r\n\t\tfreezeBgBufferUpdate = true;\r\n\t\tpageBgBufferUpdate = true;\r\n\t}\r\n\t\r\n\t//lazy update of page data buffer\r\n\t//returns Uint32Array\r\n\tthis.getPageBgBuffer = function(){\r\n\t\tif (pageBgBufferUpdate) {\r\n\t\t\tlet pageBgBufferClamp = App.getRenderer().extract.pixels(pageBgTexture);\r\n\t\t\tpageBgBuffer = new Uint32Array(pageBgBufferClamp.buffer);\r\n\t\t\tpageBgBufferUpdate = false;\r\n\t\t}\r\n\t\treturn pageBgBuffer;\r\n\t}\r\n\t\r\n\tthis.getFreezeBgBuffer = function(){\r\n\t\tif (freezeBgBufferUpdate) {\r\n\t\t\tlet freezeBgBufferClamp = App.getRenderer().extract.pixels(freezeBgTexture);\r\n\t\t\tfreezeBgBuffer = new Uint32Array(freezeBgBufferClamp.buffer);\r\n\t\t\tfreezeBgBufferUpdate = false;\r\n\t\t}\r\n\t\treturn freezeBgBuffer;\r\n\t}\r\n\t\r\n\tthis._updatePageBg = function(texture){\r\n\t\tpageBgTexture = texture;\r\n\t\tpageBgBufferUpdate = true;\r\n\t\t//TODO update texture on sprite\r\n\t\tpageBgLayer.texture = pageBgTexture;\r\n\t}\r\n\t\r\n\t/** pixi coordinates \r\n\t\tUsed by TurtleView and mouse-deamons **/\r\n\tthis._getPixelDataAt = function(sx, sy){\r\n\t\tvar width = App.getProject().getWidth();\r\n\t\tvar height = App.getProject().getHeight();\r\n\t\t\r\n\t\tvar pxPageBg = page._bg;\r\n\t\t\r\n\t\tvar pxCanvasDraw = page.getCanvasDraw().getPixelAt(sx, sy);\t\r\n\t\t\r\n\t\tvar pageBufferPixels = page._getPageView().getPageBgBuffer();\t\t\r\n\t\tvar pxPageBuffer = helpers.getPixelFromU32ImageData(pageBufferPixels, width, height, sx, sy);\r\n\t\t\r\n\t\tvar freezeBgPixels = page._getPageView().getFreezeBgBuffer();\t\r\n\t\tvar pxFreezeBg = helpers.getPixelFromU32ImageData(freezeBgPixels, width, height, sx, sy);\r\n\t\t\r\n\t\t//calculate pxTemplate\r\n\t\tvar templatePage = App.getProject().getWallpaper();\r\n\t\tvar templateView = templatePage._getPageView();\r\n\t\tvar templateBuffer = templateView.getPageBgBuffer();\r\n\t\tvar templateBufferPx = helpers.getPixelFromU32ImageData(templateBuffer, width, height, sx, sy); //RGBA\r\n\t\tvar templateFreeze = templateView.getFreezeBgBuffer();\r\n\t\tvar templateFreezePx = helpers.getPixelFromU32ImageData(templateFreeze, width, height, sx, sy); //RGBA\r\n\t\tvar templateBg = templatePage._bg; //RGBA\r\n\t\t\r\n\t\tvar pxTemplate = Color.overlapSeveralArgbPremultiplied(\r\n\t\t\ttemplateBg,\r\n\t\t\ttemplateFreezePx,\r\n\t\t\ttemplateBufferPx);\r\n\t\t\t//App.getRenderer().backgroundColor;\t--\tno more used\r\n\r\n\t\tvar mixPixel = Color.overlapSeveralArgbPremultiplied(\r\n\t\t\tpxTemplate, \r\n\t\t\tpxPageBg, \r\n\t\t\tpxFreezeBg, \r\n\t\t\tpxPageBuffer, \r\n\t\t\tpxCanvasDraw);\r\n\r\n\t\tvar result = {\r\n\t\t\tpxCanvasDraw, \r\n\t\t\tpxPageBg, \r\n\t\t\tpxFreezeBg, \r\n\t\t\tpxPageBuffer, \r\n\t\t\tmixPixel, \r\n\t\t\tpxTemplate\r\n\t\t};\r\n\t\treturn result;\r\n\t}\r\n\t\r\n\t/** used by Turtle and mouse-deamons **/\r\n\tthis._getCorrectedColorAt = function(sx, sy){\r\n\t\tvar pxData = this._getPixelDataAt(sx, sy);\r\n\t\tvar color = Color.colorLogoFromRGB(pxData.mixPixel);\r\n\t\treturn color;\r\n\t}\r\n\t\r\n\tthis._onClick = function(event){\r\n\t\t///DEBUG log\r\n\t\t//console.log(event.data.global.x, event.data.global.y);\r\n\t\tlet sx = event.data.global.x;\r\n\t\tlet sy = event.data.global.y;\r\n\t\tlet logoColor = page.getCorrectedColorAt(sx, sy);\r\n\t\tlogger.debug('page onClick colorAt('+sx+','+sy+'): '+logoColor);\r\n\t\tpage.runMouseDeamons(logoColor);\r\n\t}\r\n\t\r\n\tthis.setupEventsOnVisible = function(){\r\n\t\tif (page.mouseDeamonsExist){\r\n\t\t\tApp.getStage.interactive = true;\r\n\t\t\tApp.getStage().click = this._onClick;\r\n\t\t} else {\r\n\t\t\tApp.getStage.interactive = false;\r\n\t\t\tApp.getStage().click = undefined;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//continue construtor code\r\n\t//better refactor this!\r\n\tthis.setBgRGB(page._bg);\r\n\t\r\n\t\r\n\tthis._getCanvasDraw = function(){return canvasDraw}\t//is called by Page.getCanvasDraw()\r\n\t//currently used only by *erase* code:\r\n\tthis._getPageBgTexture = function(){return pageBgTexture} //if modified, need to call _updatePageBg()!\r\n\tthis._getFreezeBgTexture = function(){return freezeBgTexture}\r\n\r\n\tthis.getTurtlesLayer = function() { return turtles; };\r\n\tthis.getPageDiv = function(){return pageDiv};\r\n\t\r\n\tthis.destroy = function() {\r\n\t\tApp.getStage().removeChild(pageContainer);\r\n\t\tturtles.destroy();\r\n\t\tturtles = undefined;\r\n\t\tpageContainer.destroy();\r\n\t\tpageContainer = undefined;\r\n\t\tpageBgTexture = undefined;\r\n\t\tfreezeBgTexture = undefined;\r\n\t\tpageBgBuffer = undefined;\r\n\t\tfreezeBgBuffer = undefined;\r\n\t\tproject = undefined;\r\n\t\tpage = undefined;\r\n\t\t$('#' + pageDivId).remove();\r\n\t}\r\n}\r\n\r\nmodule.exports = PageView;\r\n","'use strict'\r\n/** factory: bindProcessContext(ProcessContext) \r\n\tDo not use the constructor! \r\n**/\r\n\r\nconst helpers = require('./helpers.js');\r\nconst App = require('./App.js');\r\nconst TurtlePrims = require('./TurtlePrims.js');\r\nconst TextPrims = require('./TextPrims.js');\r\nconst LogoError = require('./LogoError.js');\r\nconst Globals = require('./Globals.js');\r\nconst TextToSpeech = require('./TextToSpeech');\r\nconst TypeCheck = require('./TypeCheck');\r\nconst Color = require('./Color.js');\r\nconst logger = require('./logger');\r\nconst LogoObjectsCreator = require('./LogoObjectsCreator');\r\nconst Debugger = require('./Debugger');\r\nconst Parser = require('./parser/parser');\r\n\r\nconst MusicalOctave = require('./MusicalOctave');\r\n\r\nconst audioContext = new (window.AudioContext || window.webkitAudioContext)();\r\n\r\n//var genbind = require('generator-bind');\r\n//var co = require('co');\r\n\r\n/** \r\n\r\n\tPrims object is created for each processContext; TurtlePrims is singleton, but called with Turtle object.\r\n\tprocessContext is a CorContext of the LogoCoroutine\r\n\t\r\n\tTypeCheck assertions are used here for global primitives, or in TurtlePrims for turtle primitives.\r\n*/\r\n\r\nfunction Prims(){\r\n\t//moved here to solve circular dependency\r\n\tconst CorDispatcher = require('./CorDispatcher');\r\n\tconst LogoCodeUnit = require('./LogoCodeUnit');\r\n\tconst LogoCoroutine = require('./LogoCoroutine');\r\n\r\n\tvar _this = this;\r\n\r\n\t//only *command* primitives\r\n\tfunction* turtlePrim(prim, args=[]){\r\n\t\tvar turtles =\r\n\t\t\t_this._processContext.logoContext.who;\r\n\t\t\t\r\n\t\tif (turtles.length < 1) {\r\n\t\t\tthrow new LogoError('errtnf', prim.name);\r\n\t\t}\r\n\r\n\t\tfor (var i=0;i= 1) {\r\n\t\t\treturn prim.apply(turtles[0], args);\r\n\t\t} else {\r\n\t\t\tthrow new LogoError('errtnf', prim.name);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction* textPrim(prim, args){\r\n\t\tif (args == undefined) {args = []};\r\n\t\tvar textboxes =\r\n\t\t\t_this._processContext.logoContext.textwho;\r\n\t\t\t\r\n\t\tif (textboxes.length < 1) {\r\n\t\t\tthrow new LogoError('errntf');\r\n\t\t}\r\n\r\n\t\tfor (var i=0;i= 1) {\r\n\t\t\treturn prim.apply(textboxes[0], args);\r\n\t\t} else {\r\n\t\t\tthrow new LogoError('errntf');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction playMusicalNote(fr, ds) {\r\n\t\tconst oscillator = audioContext.createOscillator();\r\n\t\tconst gainNode = audioContext.createGain();\r\n\t\toscillator.connect(gainNode); // connect osc to vol\r\n\t\tgainNode.connect(audioContext.destination); // connect vol to context destination\r\n\t\tgainNode.gain.value = 0.2; // from 0 to 1, 1 full volume, 0 is muted\r\n\t\toscillator.type = 'triangle'; // 'triangle', 'sawtooth', 'square', 'sine';\r\n\t\toscillator.frequency.value = fr;\r\n\t\toscillator.start();\r\n\t\tsetTimeout( function(){\r\n\t\t\toscillator.stop();\r\n\t\t}, ds*100);\r\n\t} \r\n\r\n\r\n\tfunction erroip(lcu) {\r\n\t\tif (lcu.scope)\r\n\t\t\tfor (let i = 0; i < lcu.scope.length; i++)\r\n\t\t\t\tif (lcu.scope[i].ufun)\r\n\t\t\t\t\treturn;\r\n\r\n\t\tthrow new LogoError('erroip');\r\n\t}\r\n\t\r\n\tthis.forward = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_fd, [val]);\r\n\t}\r\n\t\r\n\tthis.right = function* (val){\r\n\t\t//co(turtlePrim( TurtlePrims.prim_rt, [val]));\r\n\t\tyield* turtlePrim( TurtlePrims.prim_rt, [val]);\r\n\t}\r\n\t\r\n\tthis.left = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_lt, [val]);\r\n\t}\r\n\t\r\n\tthis.seth = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setheading, [val]);\r\n\t}\r\n\r\n\tthis.pd = function* (){\r\n\t\t//co(turtlePrim( TurtlePrims.prim_pd));\r\n\t\tyield* turtlePrim( TurtlePrims.prim_pd);\r\n\t}\r\n\t\r\n\tthis.pu = function* (){\r\n\t\t//co(turtlePrim( TurtlePrims.prim_pd));\r\n\t\tyield* turtlePrim( TurtlePrims.prim_pu);\r\n\t}\r\n\t\r\n\tthis.clickon = function*(){\r\n\t\t//co(turtlePrim( TurtlePrims.prim_clickon));\r\n\t\tyield* turtlePrim( TurtlePrims.prim_clickon);\r\n\t}\r\n\t\r\n\tthis.clickoff = function*(){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_clickoff);\r\n\t}\r\n\r\n\tthis.setshape = function*(val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setshape, [val]);\r\n\t}\r\n\t\r\n\tthis.setc = function*(val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setcolor, [val]);\r\n\t}\r\n\r\n\tthis.namefromcolor = function(val){\r\n\t\tColor.checkLogoColor(val, \"setcolor\");\r\n\t\tif (TypeCheck.getType(val) == \"word\") {return val};\r\n\t\treturn Color.nameFromLogoColor(val);\r\n\t}\r\n\t\r\n\tthis.setsize = function*(val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setsize, [val]);\r\n\t}\r\n\r\n\tthis.who = function(){\r\n\t\tvar turtles = \r\n\t\t\t\tthis._processContext.logoContext.who;\r\n\t\tvar nameList = turtles.map(t => t.name);\r\n\t\tif (nameList.length == 1) nameList = nameList[0];\r\n\t\treturn nameList;\r\n\t}\r\n\t\r\n\t//UNTESTED\r\n\tthis.textwho = function(){\r\n\t\tlet textboxes = this._processContext.logoContext.textwho;\r\n\t\tvar nameList = textboxes.map(t => t.name);\r\n\t\treturn nameList[0] || '';\r\n\t}\r\n\t\t\r\n\t/** sets who or textwho. Selects turtles (and textboxes) all on the same page */\r\n\tthis.talkto = function(nameOrList){\r\n\t\tTypeCheck.notNestedList(nameOrList, \"tto\");\r\n\t\tlet nameList;\r\n\t\tif (TypeCheck.isType(nameOrList, \"word\")){\r\n\t\t\tnameList = [nameOrList];\r\n\t\t} else {\r\n\t\t\tnameList = nameOrList;\r\n\t\t}\r\n\r\n\t\tlet turtles = App.getProject().getCurrentPage()._getObjectsByNames(nameList, 'turtle');\r\n\t\tif (turtles && turtles.length)\r\n\t\t\t_this._processContext.logoContext.who = turtles;\r\n\t\telse {\r\n\t\t\tlet textboxes = App.getProject().getCurrentPage()._getObjectsByNames(nameList, 'text');\r\n\t\t\tif (textboxes && 1 == textboxes.length)\r\n\t\t\t\t_this._processContext.logoContext.textwho = textboxes;\r\n\t\t\telse\r\n\t\t\t\tthrow new LogoError('errdnl', 'tto', TypeCheck.getCompactedString(nameList));\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t//UNTESTED\r\n\t/** runs instructions for first turtle, then next, etc.\r\n\t\tlambdaGen is declared in code generator function \r\n\t\tExample: ask(\"t1\",function* (){... instruction list});\t\r\n\t\tReturns first turtle in the who only (IF there is a result)*/\r\n\tthis.ask = function* (value, lambdaGen){\r\n\t\tTypeCheck.notNestedList(value, \"ask\");\r\n\t\tlet nameList;\r\n\t\tif (TypeCheck.isType(value, \"word\")){\r\n\t\t\tnameList = [value];\r\n\t\t} else {\r\n\t\t\tnameList = value;\r\n\t\t}\r\n\t\t\r\n\t\tlet errorFlag = false;\r\n\t\tlet objects = nameList.map(name => {\r\n\t\t\tlet t = App.getProject().getLogoObjectByName(name);\r\n\t\t\tif (!t || !(t.type == \"turtle\" || t.type ==\"text\")) {errorFlag = true;}\r\n\t\t\treturn t;\r\n\t\t});\r\n\t\tTypeCheck.assert(!errorFlag, this, 'errdnl', 'ask', TypeCheck.getCompactedString(nameList));\r\n\t\t\r\n\t\tlet savedLogoContext = this._processContext.logoContext.clone();\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(reconstructWork(lambdaGen));\r\n\t\tfor (let t of objects) {\r\n\t\t\tif (t.type == \"turtle\") {\r\n\t\t\t\tthis._processContext.logoContext.who = [t];\r\n\t\t\t} else if (t.type == \"text\"){\r\n\t\t\t\tthis._processContext.logoContext.textwho = [t];\r\n\t\t\t}\r\n\r\n\t\t\tyield* parser.nextStep();\r\n\t\t}\r\n//#353\r\n\t\tlet newCont=App.getProject().getCurrentPage().checkLogoContext(savedLogoContext);\r\n\t\tthis._processContext.logoContext.who = newCont.who;\r\n\t\tthis._processContext.logoContext.textwho=newCont.textwho;\r\n\t}\r\n\t//#353\r\n\tthis.everyone = function* (lambdaGen){\r\n\t\tlet turtles = App.getProject().getCurrentPage().getAllTurtles();\r\n\t\tif (turtles.length < 1)\r\n\t\t\tthrow new LogoError('errtnf');\r\n\r\n\t\tlet savedWho = this._processContext.logoContext.who;\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(reconstructWork(lambdaGen));\r\n\t\t\r\n\t\tfor (let t of turtles){\r\n\t\t\tthis._processContext.logoContext.who = [t];\r\n\t\t\tyield* parser.nextStep();\r\n\t\t}\r\n\t\tthis._processContext.logoContext.who = savedWho;\r\n\t}\r\n\t\r\n\tthis.getpage = function(pageName){\r\n\t\tpageName = TypeCheck.getString(pageName, \"getpage\");\r\n\t\tvar project = App.getProject();\r\n\t\t//project.setPageByName(pageName);\r\n\t\tlet page = project.getPageByName(pageName);\r\n\t\tTypeCheck.assert(page, this, 'errdnl', 'getpage', pageName);\r\n\t\tproject.setPage(page);\r\n\t}\r\n\t\r\n\tthis.namepage = function* (pageName){\r\n\t\tTypeCheck.stringNotNumber(pageName, \"namepage\");\r\n\t\tlet obj = App.getProject().getCurrentPage();\r\n\t\tif (obj.checkApply({ name: pageName }))\r\n\t\t\tthrow new LogoError('erriap', '', '', result);\r\n\r\n\t\tobj.rename(pageName);\r\n\t}\r\n\r\n/*\tthis implementation require access to codeRunner (or message to it)\r\n\tfunction* wait(ds){\r\n\t\tsetTimeout(function(){\r\n\t\t\tcodeRunner.isRunning = true;\r\n\t\t\tconsole.log('codeRunner unpaused');\r\n\t\t},ds*100);\r\n\t\tcodeRunner.isRunning = false;\t//better introduce 'paused' state\r\n\t\tconsole.log('codeRunner paused');\r\n\t\tyield;\r\n\t}\r\n*/\r\n\r\n/*\r\n//this one spams infinite generator results\t<< correct code, but we'll try other approach.\r\n\tthis.wait = function* (ds){\r\n\t\tds = TypeCheck.getNumber(ds, \"wait\");\r\n\t\t\r\n\t\tvar now = Date.now();\r\n\t\tvar i = 0;\r\n\t\twhile (Date.now() - now < ds*100) {\r\n\t\t\t//console.log('wait active');\r\n\t\t\ti++;\r\n\t\t\tyield;\r\n\t\t}\r\n\t\t///DEBUG log\r\n\t\t//console.log('wait: '+i+' cycles skipped');\t\r\n\t}\r\n*/\r\n\r\n\tthis.wait = function* (ds){\r\n\t\tds = TypeCheck.getNumber(ds, \"wait\", [0, 'errdnl']);\r\n\t\t\r\n\t\tthis._processContext.coroutine.sleep(Date.now() + ds * 100);\r\n\t\tyield;\r\n\t}\r\n\r\n\tthis.note = function* (fr, ds){\r\n\t\tds = TypeCheck.getNumber(ds, \"note\", [1, 'errminval'], [255, 'errmaxval']);\r\n\t\tfr = MusicalOctave.getFrequency(fr);\r\n\r\n\t\tplayMusicalNote(fr, ds);\r\n\r\n\t\tyield* this.rest(ds);\r\n\t}\t\r\n\tthis.rest = function* (ds){\r\n\t\tds = TypeCheck.getNumber(ds, \"rest\", [0, 'errdnl']);\r\n\t\tthis._processContext.coroutine.sleep(Date.now() + ds * 100);\r\n\t\tyield;\r\n\t}\r\n\r\n\t\r\n\t/** blocking \r\n\t\tgenerator **/\r\n\t\t//#197\r\n\tthis.readchar = function* () {\r\n\t\t// let saved = arguments[0].editor;\r\n\t\tlet saved = document.activeElement;\r\n\t\tdocument.getElementById('screen-div').focus();\r\n\t\tdo {\r\n\t\t\tyield* this.wait(1);\r\n\t\t}\r\n\t\twhile (!App.wereKeyPressed())\r\n\t\tlet GotChar = { root: App.getKeyPressed(), type: 'sym' };\r\n\t\tApp.clearKeyPressed();\r\n\t\tif (saved)\r\n\t\t\tsaved.focus();\r\n\r\n\t\treturn GotChar;\r\n\t}\r\n//#197\r\n\tthis['key?'] = function(){\r\n\t\treturn TypeCheck.castLogoBoolean(App.wereKeyPressed());\r\n\t}\r\n\t\r\n\r\n\t/** ORANGE only.\r\n\t\tReturn buffered key without deleting it.\r\n\t\tReturn 0 char if there was none. **/\r\n\tthis.peekchar = function(){\r\n//\t\tApp.enableDocumentKeyEvents();\r\n\t\tlet c = App.getKeyPressed();\r\n\t\tif (c === undefined) c = String.fromCharCode(0);\r\n\t\treturn c;\r\n\t}\r\n\t\r\n\t/** ORANGE only.\r\n\t\tDelete buffered key if there was any **/\r\n\tthis.skipchar = function*(){\r\n\t\t\t\t//#197\r\n\t\tdocument.getElementById('screen-div').focus();\r\n\t\t\t\t//#197\r\n\t\tApp.clearKeyPressed();\r\n\t}\r\n\t\r\n\r\n\tthis.show = function* (value){\r\n\t\tvalue = TypeCheck.getCompactedString(value);\r\n\r\n\t\tif (window.showLine)\r\n\t\t\tshowLine(arguments[1].editor, value);\r\n\t\telse console.log(value);\r\n\t\tyield;\r\n\t}\r\n\r\n\tthis.cc = function* () {\r\n\t\tif (window.clearCC) window.clearCC();\r\n\t\tyield;\r\n\t}\r\n\r\n\tthis.random = function (val){\r\n\t\tval = TypeCheck.getNumber(val, \"random\", [1, 'errminval']);\r\n\t\tif (val != parseInt(val))\r\n\t\t\tthrow new LogoError('errdnl', '', val);\r\n\r\n\t\treturn Math.floor(Math.random()*val);\r\n\t}\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.sum = function(){\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', 'sum');\r\n\t\t\tvar c = 0;\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet x = TypeCheck.getNumber(arguments[i]);\r\n\t\t\tc += x;\r\n\t\t}\r\n\r\n\t\treturn TypeCheck.removePrecision(c);\r\n\t}\r\n\t\r\n\tthis['+'] = this.sum;\r\n\r\n\t//common code for `forever` and `launch`\r\n\tthis._launch = function(code, forever, parent) {\r\n\t\tlet instr = reconstructWork(code);\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(instr);\r\n\r\n\t\tlet lcu = new LogoCodeUnit();\r\n\t\tif (parent && parent.scope) {\r\n\t\t\tlcu.newScope();\r\n\t\t\tparent.getScope().cloneLocals(lcu.getScope());\r\n\t\t}\r\n\r\n\t\tlcu.forever = forever;\r\n\t\tlcu.parser = parser;\r\n\t\tlet logoContext = _this._processContext.logoContext.clone();\r\n\t\tlet launchCor = new LogoCoroutine(lcu, \"\" + code);\r\n\t\t\r\n\t\t// //registering dependent coroutines is not really needed, but let it stay for now\r\n\t\t// this._processContext.dependentCoroutines = this._processContext.dependentCoroutines || [];\r\n\t\t// this._processContext.dependentCoroutines.push(launchCor);\r\n\t\tlet promiseEnded = launchCor.startWithLogoContext(logoContext, false, true); //runImmediately = false, returnPromise = true\r\n\t\t\t\t\r\n\t\tlet corContext = launchCor.getCorContext();\r\n\t\tcorContext.parentCoroutine = this._processContext.coroutine;\r\n\t\t\r\n\t\t//register spawned coroutine with root LogoObject (Button or Turtle)\r\n\t\t//and, actually, it's not a LogoObject, but ToggledTrackerMixin used by that LogoObject!\r\n\t\tlet rootLogoObject = this._processContext.rootLogoObject\r\n\t\tif (rootLogoObject) {\r\n\t\t\tcorContext.rootLogoObject = rootLogoObject;\r\n\t\t\trootLogoObject.registerSpawnedCoroutine(launchCor, promiseEnded);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t\r\n\tthis.forever = function(code, lcu) {\r\n\t\t_this._launch(code, true, lcu); //forever = true\r\n\t}\r\n\t\r\n\tthis.launch = function(code, lcu) {\r\n\t\t_this._launch(code, false, lcu); //forever = false\r\n\t}\r\n\r\n\tthis.run = function*(codeString) {\r\n\t\tlet parser = new Parser(TypeCheck.getCompactedString(codeString, true));\r\n\t\tparser.initWork(); parser.RebuildWork();\r\n\t\tyield* parser.nextStep();\r\n\t}\r\n\r\n\tthis.carefully = function*(code, fallback) {\r\n\t\tlet fallbackParser = new Parser();\r\n\t\tfallbackParser.setWork(reconstructWork(fallback));\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(reconstructWork(code));\r\n\t\tyield { type: 'carefully', next: parser.nextStep(), fallback: fallbackParser.nextStep() };\r\n\t}\r\n\t\r\n\tthis.stopall = function* (){\r\n\t\tCorDispatcher.stopAll();\r\n\t}\r\n\t\r\n\r\n\tthis.stopme = function* (/*processContext*/){\r\n\t\t_this._processContext.coroutine.stop();\r\n\t}\r\n\r\n\tthis.stop = function*(lcu) {\r\n\t\terroip(lcu);\r\n\r\n\t\tyield { type: 'stop' };\r\n\t}\r\n\r\n\tthis.output = function*(v, lcu) {\r\n\t\terroip(lcu);\r\n\r\n\t\tyield { type: 'stop', v: v };\r\n\t}\r\n\r\n\t//ORANGE / OPTIONS : should only one be stopped, or every one with this originalCode?\r\n\t//currently it's done as in MW EX: only first one stopped\r\n\tthis.cancel = function(originalCode){\r\n\t\tlet queue = CorDispatcher._getUpdateQueue();\r\n\t\tfor (let coroutine of queue){\r\n\t\t\tif (coroutine._name == \"\" + originalCode) {\r\n\t\t\t\tcoroutine.stop();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.announcejr = function* (value){\r\n\t\tDebugger._setAppPause(true);\r\n\t\tvalue = TypeCheck.getCompactedString(value);\r\n\r\n\t\twindow.pagePrompt([\r\n\t\t\t['OK', function() { Debugger._setAppPause(false); }],\r\n\t\t\t[primtips.loc.StopAll, function() { CorDispatcher.stopAll(); Debugger._setAppPause(false); }],\r\n\t\t], primtips.loc.Announce, value, false, true);\r\n\r\n\t\tyield* this.wait(1);\t//pause to allow screen redraw\r\n\t}\r\n\t\r\n\tthis.home = function* (){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_home );\r\n\t}\r\n\t\r\n\r\n\r\n\tthis.setbg = function* (val){\r\n\t\tColor.checkLogoColor(val, \"setbg\");\r\n\t\tvar page = App.getProject().getCurrentPage();\r\n\t\tif ( !page.isBgFreezed()) {\r\n\t\t\tpage.setBgIn(val);\r\n\t\t} else {\r\n\t\t\tthrow new LogoError('errcus', '', '', 'setbg'); //\"Can't use setbg on a frozen background\"\r\n\t\t}\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.back = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_bk, [val]);\r\n\t}\r\n\t\r\n\tthis.setpensize = function*(val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setpensize, [val]);\r\n\t}\r\n\t\r\n\tthis.clean = function() {\r\n\t\tApp.getProject().getCurrentPage().clean();\r\n\t}\r\n\t\r\n\tthis.cg = function() {\r\n\t\tthis.clean();\r\n\t\tif (this._processContext.logoContext.who.length)\r\n\t\t\tturtlePrim(TurtlePrims.prim_cg).next();\r\n\t}\r\n\r\n//\tthis.cg = function* (){\r\n//\t\tyield* _this.home();\r\n//\t\tApp.getProject().getCurrentPage().clean();\r\n//\t\tyield;\r\n//\t}\r\n\t\r\n\tthis.pick = function (val){\r\n\t\tif (!val.slice)\r\n\t\t\tval = '' + val;\r\n\t\tlet i = Math.floor(Math.random()*val.length);\r\n\t\tlet c = val[i];\r\n\t\treturn c;\r\n\t}\r\n\t\r\n\t\r\n\tthis.say = function* (value){\r\n\t\tlet str = TypeCheck.getCompactedString(value);\r\n\t\t\r\n\t\tTextToSpeech.defaultVoice();\r\n\t\tTextToSpeech.speak(str);\r\n\t\tyield;\r\n\t}\r\n\t\r\n\t\r\n\tthis.sayas = function* (value, voiceName){\r\n\t\tlet str = TypeCheck.getCompactedString(value)\r\n\t\tTypeCheck.expected([voiceName], [\"word\"], \"say\");\r\n\t\t\r\n\t\tTextToSpeech.setVoice(voiceName);\r\n\t\tTextToSpeech.speak(str);\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.voices = function(){\r\n\t\treturn TextToSpeech.getVoices();\r\n\t}\r\n\t\r\n\tthis.setpos = function* (list){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setpos, [list]);\r\n\t}\r\n\t\r\n\tfunction reconstructWork(list, useDebug = true) {\r\n\t\tif (useDebug && list.debug)\r\n\t\t\treturn list.debug;\r\n\r\n\t\tif (!list.map)\r\n\t\t\treturn [{ root: list }];\r\n\r\n\t\tlet instr = [];\r\n\t\tlist.map(function m(x) {\r\n\t\t\tif (x.map) {\r\n\t\t\t\tinstr.push({root: '['});\r\n\t\t\t\tx.map(m);\r\n\t\t\t\tinstr.push({root: ']'});\r\n\t\t\t} else\r\n\t\t\t\tinstr.push({root: x});\r\n\t\t});\r\n\r\n\t\treturn instr;\r\n\t}\r\n\r\n\tfunction reconstructArg(what) {\r\n\t\tif (TypeCheck.isType(what, 'word')) {\r\n\t\t\twhat = \"'\" + what.toString().replaceAll(\"'\", \"\\\\'\") + \"'\";\r\n\t\t\twhat = reconstructWork(what);\r\n\t\t} else {\r\n\t\t\twhat = reconstructWork(what, false);\r\n\t\t\twhat.unshift({ root: '[' });\r\n\t\t\twhat.push({ root: ']' });\r\n\t\t}\r\n\r\n\t\treturn what;\r\n\t}\r\n\r\n\tthis.repeat = function* (num, l){\r\n\t\tnum = TypeCheck.getNumber(num, \"repeat\", [0, 'errdnl']);\r\n\t\tlet instr = reconstructWork(l);\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(instr);\r\n\t\tfor (let i = 0; i < num; i++)\r\n\t\t\tyield* parser.nextStep();\r\n\t}\r\n\r\n\tthis.info = function* (label, text){\r\n\t\tvar message = `INFO: ${label} = \"${text}\"`;\r\n\t\tconsole.log(message);\r\n\t\t// showLine(this.editor, message, true);\r\n\t}\r\n\t\r\n\tthis.if = function* (condition, lambdagen){\r\n\t\tcondition = TypeCheck.getBoolean(condition, \"if\");\r\n\t\tif (condition) {\r\n\t\t\tlet instr = reconstructWork(lambdagen);\r\n\t\t\tlet parser = new Parser();\r\n\t\t\tparser.setWork(instr);\r\n\t\t\tyield* parser.nextStep();\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.ifelse = function* (condition, lambdagen1, lambdagen2){\r\n\t\tcondition = TypeCheck.getBoolean(condition, \"if\");\r\n\t\tlet parser = new Parser();\r\n\t\tif (condition)\r\n\t\t\tparser.setWork(reconstructWork(lambdagen1));\r\n\t\telse\r\n\t\t\tparser.setWork(reconstructWork(lambdagen2));\r\n\r\n\t\tyield* parser.nextStep();\r\n\t}\r\n\t\r\n\tthis.difference = function (v1, v2){\t\t\r\n\t\tv1 = TypeCheck.getNumber(v1, \"difference\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"difference\");\r\n\t\t\r\n\t\treturn TypeCheck.removePrecision(v1 - v2);\r\n\t}\r\n\r\n\tthis['-'] = this.difference;\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.product = function(){\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', 'product');\r\n\t\t\r\n\t\tvar c = 1;\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet x = TypeCheck.getNumber(arguments[i], 'product');\r\n\t\t\tc *= x;\r\n\t\t}\r\n\r\n\t\treturn TypeCheck.removePrecision(c);\r\n\t}\r\n\r\n\tthis['*'] = this.product;\r\n\t\r\n\tthis.quotient = function (v1, v2){\t\t\r\n\t\tv1 = TypeCheck.getNumber(v1, \"quotient\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"quotient\");\r\n\t\tTypeCheck.assert(v2 != 0, this, 'errcdz');\r\n\t\t\r\n\t\treturn TypeCheck.removePrecision(v1 / v2);\r\n\t}\r\n\r\n\tthis['/'] = this.quotient;\r\n\t\r\n\tthis['less?'] = function (v1, v2){\r\n\t\tv1 = TypeCheck.getNumber(v1, \"less\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"less\");\r\n\t\t\r\n\t\tlet logoBool = TypeCheck.castLogoBoolean(v1 < v2);\r\n\t\treturn logoBool;\r\n\t}\r\n\r\n\tthis['<'] = this['less?'];\r\n\t\r\n\tthis['greater?'] = function (v1, v2){\r\n\t\tv1 = TypeCheck.getNumber(v1, \"greater\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"greater\");\r\n\t\t\r\n\t\tlet logoBool = TypeCheck.castLogoBoolean(v1 > v2);\r\n\t\treturn logoBool;\r\n\t}\r\n\r\n\tthis['>'] = this['greater?'];\r\n\t\r\n\t// used in prims.equal, prims.identical\r\n\tfunction recEqual(v1, v2, strEqualFunction){\r\n\t\tif (TypeCheck.isType(v1, \"number\")){\r\n\t\t\tif (! TypeCheck.isType(v2, \"number\")) { return false }\r\n\t\t\tlet n1 = TypeCheck.tryNumber(v1);\r\n\t\t\tlet n2 = TypeCheck.tryNumber(v2);\r\n\t\t\tif (n1 != n2) { return false}\r\n\t\t\treturn true;\r\n\t\t} else if (TypeCheck.isType(v1, \"word\")){\r\n\t\t\tif (! TypeCheck.isType(v2, \"word\")) { return false }\r\n\t\t\tlet s1 = TypeCheck.tryString(v1);\r\n\t\t\tlet s2 = TypeCheck.tryString(v2);\r\n\t\t\tif (! strEqualFunction(s1, s2)) { return false }\r\n\t\t\treturn true;\r\n\t\t} else if (TypeCheck.isType(v1, \"list\")){\r\n\t\t\tif (! TypeCheck.isType(v2, \"list\")) { return false }\r\n\t\t\tif (v1.length != v2.length) {return false }\r\n\t\t\tfor (let i = 0; i < v1.length; i++){\r\n\t\t\t\tlet res = recEqual(v1[i], v2[i], strEqualFunction);\r\n\t\t\t\tif (res == false) { return false }\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t//ASSERT\r\n\t\t\tlogger.error(\"Unreachable code in prims.equal\");\r\n\t\t}\r\n\t}\r\n\tthis.equal = function (v1, v2){\t\t\r\n\t\tlet res = TypeCheck.castLogoBoolean(recEqual(v1, v2, helpers.strLowEqual));\r\n\t\treturn res;\r\n\t}\r\n\r\n\tthis['='] = this.equal;\r\n\tthis['equal?'] = this.equal;\r\n\t\r\n\tthis['identical?'] = function (v1, v2){\r\n\t\tlet res = TypeCheck.castLogoBoolean(recEqual(v1, v2, helpers.strIdenticalEqual));\r\n\t\treturn res;\r\n\t}\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.and = function (){\t\t\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', '', 'and');\r\n\t\t\r\n\t\tlet c = true;\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet b = TypeCheck.getBoolean(arguments[i]);\r\n\t\t\tc = c && b;\r\n\t\t}\r\n\t\treturn TypeCheck.castLogoBoolean(c);\r\n\t}\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.or = function (){\t\t\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', '', 'or');\r\n\t\t\r\n\t\tlet c = false;\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet b = TypeCheck.getBoolean(arguments[i]);\r\n\t\t\tc = c || b;\r\n\t\t}\r\n\t\treturn TypeCheck.castLogoBoolean(c);\r\n\t}\r\n\t\r\n\tthis.not = function(arg){\r\n\t\tlet b = TypeCheck.getBoolean(arg, \"not\");\r\n\t\treturn TypeCheck.castLogoBoolean(!b);\r\n\t}\r\n\t\r\n\tthis.abs = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"abs\");\r\n\t\treturn TypeCheck.removePrecision(Math.abs(x));\r\n\t}\r\n\t\r\n\tthis.arctan = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"arctan\");\r\n\t\treturn TypeCheck.removePrecision(helpers.toDegrees(Math.atan(x)));\r\n\t}\r\n\t\r\n\tthis.ascii = function(arg){\r\n\t\tTypeCheck.expected([arg], [\"word\"], \"ascii\");\r\n\t\tlet x = arg.toString().charCodeAt(0);\r\n\t\treturn x;\r\n\t}\r\n\t\r\n\tthis.bg = function(){\r\n\t\tlet page = App.getProject().getCurrentPage();\r\n\t\treturn page.getBgIn();\r\n\t}\r\n\t\r\n\tthis.butfirst = function(arg){\r\n\t\tif (!arg.slice)\r\n\t\t\targ = '' + arg;\r\n\r\n\t\tlet newList = arg.slice(1);\r\n\t\treturn newList;\r\n\t}\r\n\t\r\n\tthis.butlast = function(arg){\r\n\t\tif (!arg.slice)\r\n\t\t\targ = '' + arg;\r\n\r\n\t\tlet newList = arg.slice(0, arg.length-1);\r\n\t\treturn newList;\r\n\t}\r\n\t\r\n\tthis.char = function(arg){\r\n\t\tlet code = TypeCheck.getNumber(arg, \"char\", [32, 'errminval'], [65535, 'errmaxval']);\r\n\t\tlet ch = String.fromCharCode(code);\r\n\t\treturn ch;\r\n\t}\r\n\t\r\n\tthis.cos = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"cos\");\r\n\t\treturn TypeCheck.removePrecision(Math.cos(helpers.toRadians(x)));\r\n\t}\r\n\t\r\n\t//TODO change wordOrList check\r\n\tthis.count = function(arg){\r\n\t\tif (!arg.length)\r\n\t\t\targ = '' + arg;\r\n\t\treturn arg.length;\r\n\t}\r\n\t\r\n\tthis.distance = function(arg){\r\n\t\treturn turtleResponder(TurtlePrims.prim_distance, [arg]);\r\n\t}\r\n\t\r\n\tthis['empty?'] = function(arg){\r\n\t\tTypeCheck.assert(arguments.length > 0, this, 'errnmi', '', 'empty?');\r\n\t\treturn TypeCheck.castLogoBoolean(0 == arg.length);\r\n\t}\r\n\t\r\n\tthis.fill = function*(){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_fill);\r\n\t}\r\n\t\r\n\tthis.first = function(arg){\r\n\t\tlet arr = arg;\r\n\t\tif (!TypeCheck.isType(arg, 'list'))\r\n\t\t\tarr = arg.toString();\r\n\r\n\t\tTypeCheck.assert(arr.length > 0, this, \"errdnl\", \"first\", TypeCheck.getCompactedString(arg));\r\n\t\treturn arr[0];\r\n\t}\r\n\t\r\n\tthis.fput = function(v1, v2){\r\n\t\tTypeCheck.expected([v1,v2],[\"any\",\"list\"],\"fput\");\r\n\t\t//ASSERT check if v2 is Array, not some custom `list` implementation\r\n\t\tlet arrNew = v2.slice();\r\n\t\tarrNew.splice(0,0,v1);\r\n\t\treturn arrNew;\r\n\t}\r\n\t\r\n\tfunction _setFreeze(wordOrList, freeze){\r\n\t\tvar nameList;\r\n\t\tif (TypeCheck.isType(wordOrList, \"word\")) {\r\n\t\t\tnameList = [wordOrList];\r\n\t\t} else if (TypeCheck.isType(wordOrList, \"list\")) {\r\n\t\t\tnameList = wordOrList;\r\n\t\t}\r\n\t\tif (!nameList)\r\n\t\t\treturn true;\r\n\t\tlet project = App.getProject();\r\n\t\tlet found = [];\r\n\t\tfor (let name of nameList){\r\n\t\t\tlet obj;\r\n\t\t\t//try a page\r\n\t\t\tif (obj = project.getPageByName(name)) {\r\n\t\t\t\tfound.push(obj);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//try LogoObject\r\n\t\t\tif (obj = App.getProject().getLogoObjectByName(name)) {\r\n\t\t\t\tfound.push(obj);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfor (let x of found)\r\n\t\t\tfreeze ? x.freeze() : x.unfreeze();\r\n\t}\r\n\t\r\n\tthis.freeze = function(wordOrList){\r\n\t\tif (_setFreeze(wordOrList, true))\r\n\t\t\tthrow new LogoError('errnef');\r\n\t}\r\n\t\r\n\tthis.unfreeze = function*(wordOrList){\r\n\t\tif (_setFreeze(wordOrList, false))\r\n\t\t\tthrow new LogoError('errnef');\r\n\t}\r\n\t\r\n\tthis.glide = function* (distance, speed){\r\n\t\tdistance = TypeCheck.getNumber(distance, \"glide\");\r\n\t\tspeed = TypeCheck.getNumber(speed, \"glide\", [0.0000001, 'errminval'], [99, 'errmgs']);\r\n\r\n\t\t// 2.3 is chosen to roughly match the speed of glide 1000 1 in the previous implementation\r\n\t\tspeed = (distance < 0 ? -1 : 1) * speed * 2.3;\r\n\t\tlet counts = Math.floor(distance / speed);\r\n\r\n\t\t// can't use reconstructWork(['fd', speed, 'wait', 0.1]); because of translated prims\r\n\t\t// but it's really repeat counts [fd speed wait .1]\r\n\t\tfor (let i = 0; i < counts; i++) {\r\n\t\t\tyield* turtlePrim(TurtlePrims.prim_fd, [speed]);\r\n\t\t\tthis._processContext.coroutine.sleep(Date.now() + 1); // need some sleep\r\n\t\t\tyield; // without it, sleep doesn't make sense\r\n\t\t}\r\n\r\n\t\tyield* turtlePrim(TurtlePrims.prim_fd, [distance - counts * speed]);\r\n\t}\r\n\t\r\n\r\n\tthis.infront = function* (){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_infront);\r\n\t}\r\n\r\n\tthis.inback = function* (){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_inback);\r\n\t}\r\n\t\r\n\tthis.mousepos = function(){\r\n\t\tlet screenCoords = App.getRenderer().plugins.interaction.mouse.global;\r\n\t\tlet logoCoords = helpers.coordsScreenToLogo(App.getProject().getWidth(), App.getProject().getHeight(), screenCoords.x, screenCoords.y);\r\n\t\treturn [logoCoords.x, logoCoords.y];\r\n\t}\r\n\r\n\t\r\n\t//may return -0, which potentially may cause problems with logo code\r\n\tthis.int = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"int\");\r\n\t\treturn Math.trunc(x);\r\n\t}\r\n\t\r\n\t\r\n\t//be careful: this returns the element, not it's clone\r\n\t//check if there are any mutations possible elsewhere!\r\n\tthis.item = function(index, wol){\r\n\t\tindex = Math.trunc(TypeCheck.getNumber(index, '', [1, 'errdnl']));\r\n\t\tlet arr = wol;\r\n\t\tif (!TypeCheck.isType(arr, \"list\"))\r\n\t\t\tarr = arr.toString();\r\n\r\n\t\tlet repr = TypeCheck.getCompactedString(wol);\r\n\t\tTypeCheck.assert(arr.length, this, 'errdnl', 'item', repr);\r\n\t\tTypeCheck.assert(index - 1 < arr.length, this, \"errtfi\", '', '', repr);\r\n\t\treturn arr[index-1];\r\n\t}\r\n\r\n\tthis.last = function(arg){\r\n\t\tlet arr = arg;\r\n\t\tif (!TypeCheck.isType(arg, 'list'))\r\n\t\t\tarr = arg.toString();\r\n\r\n\t\tTypeCheck.assert(arr.length > 0, this, \"errdnl\", \"last\", TypeCheck.getCompactedString(arg));\r\n\t\treturn arr[arr.length - 1];\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.list = function(){\r\n\t\tvar c = [];\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tc.push(arguments[i]);\r\n\t\t}\r\n\t\treturn c;\r\n\t}\r\n\t\r\n\tthis['list?'] = function(arg){\r\n\t\treturn TypeCheck.castLogoBoolean(TypeCheck.isType(arg, 'list'));\r\n\t}\r\n\t\r\n\tthis.ln = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"ln\");\r\n\t\treturn TypeCheck.removePrecision(Math.log(x));\r\n\t}\r\n\t\r\n\tthis.log = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"log\");\r\n\t\treturn TypeCheck.removePrecision(Math.log10(x));\r\n\t}\r\n\r\n\tthis.lput = function(v1, v2){\r\n\t\tTypeCheck.expected([v1,v2],[\"any\",\"list\"],\"fput\");\r\n\t\t//ASSERT check if v2 is Array, not some custom `list` implementation\r\n\t\tlet arrNew = v2.slice();\r\n\t\tarrNew.push(v1);\r\n\t\treturn arrNew;\r\n\t}\r\n\r\n\tthis['member?'] = function(v1, v2){\r\n\t\tlet res = false;\r\n\t\tif (TypeCheck.isType(v1, 'list')){\r\n\t\t\tif ( !TypeCheck.isType(v2, 'list')){ return false; }\r\n\t\t\tfor (let o of v2){\r\n\t\t\t\tif (recEqual(v1, o, helpers.strLowEqual)) {\r\n\t\t\t\t\tres = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet w1 = v1.toString().toLowerCase();\r\n\t\t\tif (TypeCheck.isType(v2, 'word')){ //check for substrings too\r\n\t\t\t\tlet substr = v2.toString().toLowerCase().indexOf(w1);\r\n\t\t\t\tres = substr != -1;\r\n\t\t\t} else \r\n\t\t\t\tfor (let o of v2) {\r\n\t\t\t\t\tif (recEqual(w1, o, helpers.strLowEqual)) {\r\n\t\t\t\t\t\tres = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn TypeCheck.castLogoBoolean(res);\r\n\t}\r\n\t\r\n\t\r\n\tthis.minus = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"minus\");\r\n\t\treturn TypeCheck.removePrecision(x * -1);\r\n\t}\r\n\t\r\n\tthis['number?'] = function(arg){\r\n\t\treturn TypeCheck.castLogoBoolean(TypeCheck.isType(arg, 'number'));\r\n\t}\r\n\r\n\tthis.pagelist = function(){\r\n\t\tlet project = App.getProject();\r\n\t\tlet r = project.getPages(true);\r\n\t\tlet cpind = r.indexOf(project.getCurrentPage());\r\n\t\tif (-1 < cpind)\r\n\t\t\tr.unshift(r.splice(cpind, 1)[0]);\r\n\r\n\t\treturn r.map(p => p.name);\r\n\t}\r\n\t\r\n\tthis.parse = function(arg){\r\n\t\tTypeCheck.expected([arg],['word'], 'parse');\r\n\t\targ = arg.toString();\r\n\t\tlet p = new Parser('[' + arg + ']');\r\n\t\tp.initWork(); p.RebuildWork();\r\n\t\treturn p.nextStep().next().value;\r\n\t}\r\n\t\r\n\r\n\tthis.pi = function(){\r\n\t\treturn TypeCheck.removePrecision(Math.PI);\r\n\t}\r\n\t\r\n\tthis.power = function(v1, v2){\r\n\t\tv1 = TypeCheck.getNumber(v1, \"power\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"power\");\r\n\t\treturn TypeCheck.removePrecision(Math.pow(v1, v2));\r\n\t}\r\n\t\r\n\tthis.exp = function(val){\r\n\t\tval = TypeCheck.getNumber(val, \"exp\");\r\n\t\treturn TypeCheck.removePrecision(Math.exp(val));\r\n\t}\r\n\t\r\n\tthis.remainder = function(v1, v2){\r\n\t\tv1 = TypeCheck.getNumber(v1, \"remainder\");\r\n\t\tv2 = TypeCheck.getNumber(v2, \"remainder\");\r\n\t\treturn Math.round(v1 % v2);\r\n\t}\r\n\t\r\n\tthis.round = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"round\");\r\n\t\treturn Math.round(x);\r\n\t}\r\n\r\n\tthis.sin = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"sin\");\r\n\t\treturn TypeCheck.removePrecision(Math.sin(helpers.toRadians(x)));\r\n\t}\r\n\r\n\tthis.sqrt = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"sqrt\", [0, 'errdnl']);\r\n\t\treturn TypeCheck.removePrecision(Math.sqrt(x));\r\n\t}\r\n\r\n\tthis.stamp = function*(){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_stamp);\r\n\t}\r\n\t\r\n\t\r\n\tthis.tan = function(arg){\r\n\t\tlet x = TypeCheck.getNumber(arg, \"tan\");\r\n\t\treturn TypeCheck.removePrecision(Math.tan(helpers.toRadians(x)));\r\n\t}\r\n\t\r\n\t/** checks only on current page **/\r\n\tthis['touching?'] = function(v1, v2){\r\n\t\tlet t1name = TypeCheck.getCompactedString(v1);\r\n\t\tlet t1 = App.getProject().getCurrentPage()._getObjectsByNames([t1name], 'turtle');\r\n\t//\tconsole.log('findHighestTurtleBelowXY',t1._getTurtleView().findHighestTurtleBelowXY(0,0));\r\n\t\tTypeCheck.assert(t1 && 1 == t1.length, this, 'errdnl', 'touching?', t1name);\r\n\r\n\t\tlet t2name = TypeCheck.getCompactedString(v2);\r\n\t\tlet t2 = App.getProject().getCurrentPage()._getObjectsByNames([t2name], 'turtle', t1[0].page);\r\n\t\tTypeCheck.assert(t2 && 1 == t2.length, this, 'errdnl', 'touching?', t2name);\r\n\r\n\t\tlet result = t1[0].turtleIntersect(t1[0], t2[0]);\r\n\t\treturn TypeCheck.castLogoBoolean(result);\r\n\t}\r\n\r\n\t//ORANGE - remake as function\r\n\tthis.towards = function*(arg){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_towards, [arg]);\r\n\t}\r\n\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.word = function(){\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', '', 'word');\r\n\t\t\r\n\t\tlet c = \"\";\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet arg = arguments[i];\r\n\t\t\tc += TypeCheck.getCompactedString(arg);\r\n\t\t}\r\n\r\n\t\treturn c;\r\n\t}\r\n\r\n\tthis['word?'] = function(arg){\r\n\t\treturn TypeCheck.castLogoBoolean(TypeCheck.isType(arg, 'word'));\r\n\t}\r\n\r\n\t//ORANGE - remake onTouching event\r\n\tthis.yourname = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_touchedturtle);\r\n\t}\r\n\r\n\t//OPTIONS work with other pages or not\r\n\tthis.rename = function(n1, n2){\r\n\t\tTypeCheck.stringNotNumber(n1, 'rename');\r\n\t\tTypeCheck.stringNotNumber(n2, 'rename');\r\n\t\t\r\n\t\tlet obj = App.getProject().getLogoObjectByName(n1);\r\n\t\tif (!obj) {\r\n\t\t\tobj = App.getProject().getPageByName(n1);\r\n\t\t\tif (!obj)\r\n\t\t\t\tthrow new LogoError('errdnl', 'rename', n1);\r\n\t\t}\r\n\r\n\t\tif (obj.checkApply({ name: n2 }))\r\n\t\t\tthrow new LogoError('erriap', '', '', n2);\r\n\r\n\t\tobj.rename(n2);\r\n\t}\r\n\t\r\n\tthis.clearname = function(name, lcu){\r\n\t\tname = TypeCheck.getString(name, 'clearname');\r\n\t\tlcu.getScope().clearname(name);\r\n\t}\r\n\r\n\tthis.clearnames = function(lcu){\r\n\t\tlcu.getScope().clearnames();\r\n\t}\r\n\t\r\n\tthis.setopacity = function*(val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setopacity, [val]);\r\n\t}\r\n\t\r\n\tthis.tell = function*(whom, what){\r\n\t\tif (!whom.map)\r\n\t\t\twhom = [whom];\r\n\r\n\t\tconst code = reconstructArg(what);\r\n\t\tfor (let sender of _this._processContext.logoContext.who) {\r\n\t\t\tfor (let tname of whom) {\r\n\t\t\t\tlet t = App.getProject().getTurtleByName(tname);\r\n\t\t\t\tif (t)\r\n\t\t\t\t\tyield* TurtlePrims.prim_tell.apply(t, [sender.name, what, code]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.broadcast = function*(what){\r\n\t\tyield* turtlePrim(TurtlePrims.prim_broadcast, [what, reconstructArg(what)]);\r\n\t}\r\n\t\r\n\tthis.nextpage = function*(){\r\n\t\tApp.getProject().setPageByOffset(1);\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.prevpage = function*(){\r\n\t\tApp.getProject().setPageByOffset(-1);\r\n\t\tyield;\r\n\t}\r\n\t\r\n\t\r\n\tthis.pe = function*(){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_penerase);\r\n\t}\r\n\t\r\n\t/** Because we use simple two-level scope, we can't create a proper local scope. \r\n\t\tSo we use a hack: create a new variable at this level, and then restore / delete it.\r\n\t\tAs a side effect, any parallel processes, who have access to this scope (e.g. if it's global)\r\n\t\twill get wrong value at the time.\r\n\t*/\r\n\t//HACK\r\n\tthis.dolist = function*(loopVar, list, lcu){\r\n\t\tTypeCheck.expected([list], ['list'], 'dolist');\r\n\t\tlet varname = TypeCheck.getString(loopVar[0], 'dolist');\r\n\t\tlet scope = lcu.getScope();\r\n\r\n\t\t//save variable\r\n\t\tlet savedvar = null;\r\n\t\tif (scope.isname(varname)){\r\n\t\t\tsavedvar = scope.thing(varname);\r\n\t\t}\r\n\r\n\t\tlet currentErr = LogoError.current;\r\n\t\tyield* runLet(loopVar, scope, this._processContext.coroutine.stack);\r\n\t\tLogoError.current = currentErr;\r\n\t\tlet times = scope.thing(varname);\r\n\t\tTypeCheck.expected([times], ['list'], 'dolist');\r\n\r\n\t\t//cycle\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(reconstructWork(list));\r\n\t\tfor (let i = 0; i < times.length; i++) {\r\n\t\t\tscope.setArgs([varname], [times[i]]);\r\n\t\t\tyield* parser.nextStep();\r\n\t\t}\r\n\r\n\t\t//restore variable\r\n\t\tif (savedvar !== null){\r\n\t\t\tscope.make(varname, savedvar);\r\n\t\t} else {\r\n\t\t\tscope.forget(varname);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** Same problems as with dolist **/\r\n\t//HACK\r\n\tthis.dotimes = function*(loopVar, list, lcu){\r\n\t\tTypeCheck.expected([list], ['list'], 'dotimes');\r\n\t\tlet varname = TypeCheck.getString(loopVar[0], 'dotimes');\r\n\t\tlet scope = lcu.getScope();\r\n\r\n\t\t//save variable\r\n\t\tlet savedvar = null;\r\n\t\tif (scope.isname(varname)){\r\n\t\t\tsavedvar = scope.thing(varname);\r\n\t\t}\r\n\r\n\t\tlet currentErr = LogoError.current;\r\n\t\tyield* runLet(loopVar, scope, this._processContext.coroutine.stack);\r\n\t\tLogoError.current = currentErr;\r\n\t\tlet times = scope.thing(varname);\r\n\t\ttimes = TypeCheck.getNumber(times, 'dotimes', [0, 'errdnl']);\r\n\t\tif (times !== parseInt(times))\r\n\t\t\tthrow new LogoError('errdnl', 'dotimes', times);\r\n\r\n\t\t//cycle\r\n\t\tlet parser = new Parser();\r\n\t\tparser.setWork(reconstructWork(list));\r\n\t\tfor (let i = 0; i < times; i++) {\r\n\t\t\tscope.setArgs([varname], [i]);\r\n\t\t\tyield* parser.nextStep();\r\n\t\t}\r\n\r\n\t\t//restore variable\r\n\t\tif (savedvar !== null){\r\n\t\t\tscope.make(varname, savedvar);\r\n\t\t} else {\r\n\t\t\tscope.forget(varname);\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tthis.freezebg = function*(){\r\n\t\tApp.getProject().getCurrentPage().freezebg();\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.unfreezebg = function*(){\r\n\t\tApp.getProject().getCurrentPage().unfreezebg();\r\n\t\tyield;\r\n\t}\r\n\t\r\n\t\r\n\tthis.createprojectvar = function(varname){\r\n\t\tvarname = TypeCheck.getString(varname, \"createprojectvar\");\t\r\n\t\tApp.getProject().nameIsUsed(varname, Prims);\r\n\r\n\t\tGlobals.projectvars.set(varname, []);\r\n\t}\r\n\t\r\n\t\r\n\tthis.newturtle = function*(name){\r\n\t\tTypeCheck.stringNotNumber(name, \"newturtle\");\r\n\t\tlet turtle = LogoObjectsCreator.newTurtle(name);\r\n\t\tif (!turtle) {\r\n\t\t\tthrow new LogoError('erriap', '', '', name);\r\n\t\t}\r\n\r\n\t\tyield;\r\n\t}\r\n\r\n\tthis.newslider = function(name, position, values) {\r\n\t\tTypeCheck.stringNotNumber(name, \"newslider\");\r\n\t\tTypeCheck.validPosition(\"newslider\", 120, 54, position); // 22 slider, 24 label, 8 label's margin\r\n\r\n\t\tif (values instanceof Array && 3 == values.length) {\r\n\t\t\t// same checks is in Slider.checkApply\r\n\t\t\tlet min = TypeCheck.getNumber(values[0], 'newslider');\r\n\t\t\tlet max = TypeCheck.getNumber(values[1], 'newslider');\r\n\t\t\tlet v = TypeCheck.getNumber(values[2], 'newslider');\r\n\r\n\t\t\tif (min == parseInt(min) && max == parseInt(max) && v == parseInt(v) &&\r\n\t\t\t\tmin <= v && v <= max &&\r\n\t\t\t\t-10000 < min && max < 10000) {\r\n\t\t\t\t\tLogoObjectsCreator.newSlider(name, position, [min, max, v]);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new LogoError('errdnl', '', TypeCheck.getCompactedString(values));\r\n\t}\r\n\r\n\tthis.newtext = function(name, position, values) {\r\n\t\tTypeCheck.stringNotNumber(name, \"nextext\");\r\n\r\n\t\tif (!(values instanceof Array) || values.length != 2)\r\n\t\t\tthrow new LogoError('errdnl', 'newtext', TypeCheck.getCompactedString(values));\r\n\r\n\t\tvalues[0] = TypeCheck.getNumber(values[0], 'newtext', [22, 'errminw']);\r\n\t\tvalues[1] = TypeCheck.getNumber(values[1], 'newtext', [22, 'errminh']);\r\n\t\tTypeCheck.validPosition(\"newtext\", values[0], values[1] + 26, position);\r\n\r\n\t\tLogoObjectsCreator.newTextbox(name, position, values);\r\n\t}\r\n\r\n\tthis.projectsize = function() {\r\n\t\treturn [App.getProject().getWidth(), App.getProject().getHeight()];\r\n\t}\r\n\r\n\tthis.newpage = function*() {\r\n\t\tLogoObjectsCreator.newPage();\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.duplicateturtle = function(name){\r\n\t\tname = TypeCheck.getString(name, \"clone\");\r\n\t\tlet t1 = App.getProject().getLogoObjectByName(name);\r\n\t\tif (!t1 || t1.type != \"turtle\")\r\n\t\t\tthrow new LogoError('errdnl', 'clone', name);\r\n\r\n\t\tlet t2 = t1.clone();\r\n\t\tlogger.log(\"turtle cloned: \"+t1.name+\" -> \"+t2.name);\r\n\t\t_this._processContext.logoContext.who = [t2];\t//because MWEx does so\r\n\t}\r\n\t\r\n\t//TODO turtles, objects, pages, variables. \"procedures\" not supported.\r\n\t//ORANGE think whether ALL *forever* processess should be tracked (currently only ones spawned from onClick are tracked)\r\n\t/** currently supports *Turtle* only. Will print warnings for other logo objects.\r\n\t\tDoesn't stop spawned forever processes, if they were not tracked by ToggledTracker (i.e. they're stopped only if they were spawned from onClick).\r\n\t**/\r\n\tthis.remove = function*(name){\r\n\t\tname = TypeCheck.getString(name, \"remove\");\r\n\r\n\t\tlet project = App.getProject();\r\n\t\tlet page = project.getPageByName(name);\r\n\t\tif (page) {\r\n\t\t\tpage.remove();\r\n\t\t} else {\r\n\t\t\tlet obj = project.getLogoObjectByName(name);\r\n\t\t\tif (obj)\r\n\t\t\t\tobj.remove();\r\n\t\t\telse\r\n\t\t\t\tthrow new LogoError('errdnl', \"remove\", name);\r\n\t\t}\r\n\t}\r\n\t\r\n\tthis.hidetext = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_hidetext);\t\r\n\t}\r\n\t\r\n\tthis.showtext = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_showtext);\t\r\n\t}\r\n\t\r\n\tthis.print = function*(wordOrList){\r\n\t\tyield* textPrim( TextPrims.prim_print, [TypeCheck.getCompactedString(wordOrList)]);\r\n\t}\r\n\t\r\n\tthis.cleartext = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cleartext);\r\n\t}\r\n\t\r\n\tthis.insert = function*(wordOrList){\r\n\t\tyield* textPrim( TextPrims.prim_insert, [TypeCheck.getCompactedString(wordOrList)]);\r\n\t}\r\n\t\r\n\tthis.top = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_top);\r\n\t}\r\n\t\r\n\tthis.bottom = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_bottom);\r\n\t}\r\n\t\r\n\tthis.cb = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cb);\r\n\t}\r\n\t\r\n\tthis.cf = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cf);\r\n\t}\r\n\t\r\n\tthis.eol = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_eol);\r\n\t}\r\n\t\r\n\tthis.sol = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_sol);\r\n\t}\r\n\t\r\n\tthis['eot?'] = function(){\r\n\t\treturn textResponder(TextPrims.prim_eot);\r\n\t}\r\n\t\r\n\tthis.delete = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_delete);\r\n\t}\r\n\t\r\n\tfunction _getTextbox(textname, inPrimName){\r\n\t\ttextname = TypeCheck.getString(textname, inPrimName);\r\n\t\tlet textbox = App.getProject().getLogoObjectByName(textname);\r\n\t\tTypeCheck.assert(textbox && textbox.type == \"text\", this, 'errntf', inPrimName);\t\r\n\t\treturn textbox;\r\n\t}\r\n\t\r\n\tthis.textcount = function(textname){\r\n\t\tlet textbox = _getTextbox(textname, \"textcount\");\r\n\t\tlet prim = TextPrims.prim_textcount;\r\n\t\treturn prim.apply(textbox);\r\n\t}\r\n\t\r\n\tthis.textitem = function(linenumber, textname){\r\n\t\tlet textbox = _getTextbox(textname, \"textitem\");\r\n\t\tlet prim = TextPrims.prim_textitem;\r\n\t\treturn prim.apply(textbox, [linenumber]);\r\n\t}\r\n\t\r\n\tthis.textpick = function(textname){\r\n\t\tlet textbox = _getTextbox(textname, \"textpick\");\r\n\t\tlet prim = TextPrims.prim_textpick;\r\n\t\treturn prim.apply(textbox);\r\n\t}\r\n\t\r\n\tthis.speaktext = function*(textname){\r\n\t\tlet textbox = _getTextbox(textname, \"speaktext\");\r\n\t\tlet prim = TextPrims.prim_speaktext;\r\n\t\tyield* prim.apply(textbox);\r\n\t}\r\n\r\n\tthis.search = function*(val){\r\n\t\tyield* textPrim( TextPrims.prim_search, [val]);\r\n\t}\r\n\t\r\n\t\r\n\tthis.select = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_select);\r\n\t}\r\n\t\r\n\tthis.unselect = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_unselect);\r\n\t}\r\n\t\r\n\tthis.copy = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_copy);\r\n\t}\r\n\r\n\tthis.cut = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cut);\r\n\t}\r\n\t\r\n\tthis.paste = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_paste);\r\n\t}\r\n\t\r\n\tthis.selected = function(){\r\n\t\treturn textResponder(TextPrims.prim_selected);\r\n\t}\r\n\t\r\n\tthis.cd = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cd);\r\n\t}\r\n\t\r\n\tthis.cu = function*(){\r\n\t\tyield* textPrim( TextPrims.prim_cu);\r\n\t}\r\n\r\n\tthis.setfontsize = function(val) {\r\n\t\ttextPrim(TextPrims.prim_setformat, ['size', val]).next();\r\n\t}\r\n\r\n\tthis.setfont = function(val) {\r\n\t\ttextPrim(TextPrims.prim_setformat, ['font', val]).next();\r\n\t}\r\n\tthis.setstyle = function(val) {\r\n\t\ttextPrim(TextPrims.prim_setformat, ['style', val]).next();\r\n\t}\r\n\tthis.setfontcolour = function(val) {\r\n\t\tColor.checkLogoColor(val, \"setcolor\");\r\n\t\tval = Color.colorRGBFromLogo(val);\t//RGB(A)\r\n\t\ttextPrim(TextPrims.prim_setformat, ['color', val]).next();\r\n\t}\r\n\t\r\n\tthis.font = function() {\r\n\t\treturn textResponder(TextPrims.prim_getformat, ['font']);\r\n\t}\r\n\tthis.fontsize = function() {\r\n\t\treturn textResponder(TextPrims.prim_getformat, ['size']);\r\n\t}\r\n\tthis.fontcolour = function() {\r\n\t\treturn textResponder(TextPrims.prim_getformat, ['color']);\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\t/** arbitrary number of arguments, the last is LCU */\r\n\tthis.sentence = function(){\r\n\t\tTypeCheck.assert(arguments.length > 1, this, 'errnmi', '', 'sentence');\r\n\t\t\r\n\t\tlet c = [];\r\n\t\tfor (let i = 0; i < arguments.length - 1; i++) {\r\n\t\t\tlet arg = arguments[i];\r\n\t\t\tif (arg.map) {\r\n\t\t\t\targ.map(x => c.push(x));\r\n\t\t\t} else\r\n\t\t\t\tc.push(arg);\r\n\t\t}\r\n\r\n\t\treturn c;\r\n\t}\r\n\t\r\n\t//answer MWEx specs are strange. So just return the string/empty string.\r\n\tthis.question = function*(wol){\r\n\t\tDebugger._setAppPause(true);\r\n\t\tlet str = TypeCheck.getCompactedString(wol);\r\n\r\n\t\twindow.pagePrompt([\r\n\t\t\t['OK', function(v) { Globals.properties.answer = v; Debugger._setAppPause(false); }],\r\n\t\t\t[primtips.loc.Cancel, function() { Globals.properties.answer = []; Debugger._setAppPause(false); }],\r\n\t\t\t[primtips.loc.StopAll, function() { CorDispatcher.stopAll(); Debugger._setAppPause(false); }],\r\n\t\t], primtips.loc.Question, str, true, true);\r\n\r\n\t\tyield* this.wait(1);\t//pause to allow screen redraw\r\n\t}\r\n\t\r\n\tthis.answer = function(){\r\n\t\treturn Globals.properties.answer;\r\n\t}\r\n\t\r\n\tthis.setx = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_setx, [val]);\r\n\t}\r\n\t\r\n\tthis.sety = function* (val){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_sety, [val]);\r\n\t}\r\n\t\r\n\tthis.st = function* (){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_st, []);\r\n\t}\r\n\t\r\n\tthis.ht = function* (){\r\n\t\tyield* turtlePrim( TurtlePrims.prim_ht, []);\r\n\t}\r\n\t\r\n\t\r\n\tthis.timer = function(){\r\n\t\tlet timestamp = performance.now();\r\n\t\tlet timer = (timestamp - Globals.properties.timerProjectStart) / 100;\r\n\t\ttimer = timer.toFixed(0);\r\n\t\t///DEBUG\r\n\t\t//console.log(\"timer: \"+timer);\r\n\t\treturn timer;\r\n\t}\r\n\t\r\n\tthis.resett = function* (){\r\n\t\tGlobals.properties.timerProjectStart = performance.now();\r\n\t\tyield;\r\n\t}\r\n\t\r\n\t/** blocking **/\r\n\t//TODO wrap Promise in Coroutine, so it would be stopped if *this* LogoCoroutine is stopped\r\n\t//currently if button which started audio by primitive is unpressed, it won't stop audio\r\n\tthis.audiostart = function(name){\r\n\t\tlet obj = App.getProject().getLogoObjectByName(name);\r\n\t\tif (!obj) {\r\n\t\t\tthrow new LogoError('errdnl', 'audiostart', name);\r\n\t\t}\r\n\t\tif (obj.type == \"audio\" || obj.type == \"midi\"){\t//nothing specific for midi\r\n\t\t\tthis._processContext.dependentCoroutines = this._processContext.dependentCoroutines || [];\r\n\t\t\tthis._processContext.dependentCoroutines.push(obj);\r\n\t\t\tlet promiseEnded = obj.play();\r\n\t\t\t//now pause coroutune until sound ends\t//ORANGE - make options\r\n\t\t\tlogger.debug('audio started, pausing coroutine...');\r\n\t\t\tthis._processContext.coroutine.pause();\r\n\t\t\tpromiseEnded.then(() => {\r\n\t\t\t\tlogger.debug('audio promiseEnded resolved, unpausing coroutine...');\r\n\t\t\t\tthis._processContext.dependentCoroutines.pop();\r\n\t\t\t\tthis._processContext.coroutine.unpause();\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tlogger.debug('audio promiseEnded rejected, unpausing coroutine...');\r\n\t\t\t\tthis._processContext.dependentCoroutines.pop();\r\n\t\t\t\tthis._processContext.coroutine.unpause();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tthis.setvolume = function(name, value){\r\n\t\tlet obj = App.getProject().getLogoObjectByName(name);\r\n\t\tif (!obj) {\r\n\t\t\tthrow new LogoError('errdnl', 'setvolume', name);\r\n\t\t}\r\n\t\tif (obj.type == \"audio\" || obj.type == \"midi\"){\t//nothing specific for midi\r\n\t\t\tobj.setvolume(value);\r\n\t\t}\r\n\t}\r\n\tthis.volume = function(name) {\r\n\t\tlet obj = App.getProject().getLogoObjectByName(name);\r\n\t\tif (!obj) {\r\n\t\t\tthrow new LogoError('errdnl', 'setvolume', name);\r\n\t\t}\r\n\t\tif (obj.type == \"audio\" || obj.type == \"midi\"){\t//nothing specific for midi\r\n\t\t\treturn obj.volume();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new LogoError('errdnl', 'volume', name);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.errormessage = function(){\r\n\t\treturn Globals.properties.errormessage;\r\n\t}\r\n\t\r\n\t///////////// set and get ////////////////////////////////////////\r\n\t\r\n\tthis.set = function(objname, propname, value){\r\n\t\tTypeCheck.expected([objname, propname],[\"word\",\"word\"], \"set\");\r\n\t\t\r\n\t\tlet obj = App.getProject().getLogoObjectByName(objname);\r\n\t\tif (!obj) {\r\n\t\t\tthrow new LogoError('errdnl', 'set', objname);\r\n\t\t}\r\n\r\n\t\tlet result = obj.set(propname, value);\r\n\t\tif (result === null) {\r\n\t\t\tthrow new LogoError('errdnl', 'set', propname);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** if value is number, return as js number \r\n\t\t(may be dangerous! use before arithmetic and comparison are done with strings) \r\n\t*/\r\n\tthis.get = function(objname, propname){\r\n\t\tTypeCheck.expected([objname, propname],[\"word\",\"word\"], \"get\");\r\n\t\t\r\n\t\tlet obj = App.getProject().getLogoObjectByName(objname);\r\n\t\tif (!obj) {\r\n\t\t\tobj = App.getProject().getPageByName(objname);\r\n\t\t}\r\n\t\tif (!obj) {\r\n\t\t\tthrow new LogoError('errdnl', 'get', objname);\r\n\t\t}\r\n\r\n\t\tlet value = obj.get(propname);\r\n\t\tif (value == null) {\r\n\t\t\tthrow new LogoError('errdnl', 'get', propname);\r\n\t\t}\r\n\t\t\r\n\t\treturn value;\r\n\t}\r\n\t\r\n\t//TEST\r\n\tthis.setprojectvar = function*(name, value){\r\n\t\tTypeCheck.expected([name],[\"word\"], \"setprojectvar\");\r\n\t\tGlobals.projectvars.set(name, value);\r\n\r\n\t\tyield;\r\n\t}\r\n\t\r\n\t//TEST\r\n\tthis.getprojectvar = function(name){\r\n\t\tTypeCheck.expected([name],[\"word\"], \"getprojectvar\");\r\n\t\t\r\n\t\treturn Globals.projectvars.get(name);\r\n\t}\r\n\t\r\n\t//TEST\r\n\tthis.getturtlevar = function(name){\r\n\t\treturn turtleResponder(TurtlePrims.prim_getturtlevar, [name]);\r\n\t}\r\n\t\r\n\t//TEST\r\n\tthis.setturtlevar = function*(name){\r\n\t\tlet turtles = _this._processContext.logoContext.who;\r\n\t\tlet prim = TurtlePrims.prim_setturtlevar;\r\n\t\tfor (let turtle of turtles)\r\n\t\t\tprim.apply(turtle, arguments);\r\n\r\n\t\tyield;\r\n\t}\r\n\t\r\n\tthis.transparent = function(objname) {\r\n\t\tthis.set(objname, primtips.sg['transparent?'], primtips.sym_true[0]);\r\n\t}\r\n\r\n\tthis.opaque = function(objname) {\r\n\t\tthis.set(objname, primtips.sg['transparent?'], primtips.sym_false[0]);\r\n\t}\r\n\r\n\tthis.presentationmode = function() {}\r\n\r\n\t///////////// User and Turtle Procedures /////////////////////////\r\n\r\n\tfunction* runLet(args, scope, stack) {\r\n\t\tlet parser = new Parser();\r\n\t\targs = reconstructWork(args, false);\r\n\t\twhile (args.length) {\r\n\t\t\tlet name = args.shift();\r\n\t\t\tyield* parser.oneStep(args);\r\n\t\t\tscope.setArgs([name.root], [stack.pop()]);\r\n\t\t\targs = args.splice(parser.getPointer(), args.length);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.let = function* (args, lcu) {\r\n\t\terroip(lcu);\r\n\r\n\t\tyield* runLet(args, lcu.getScope(), this._processContext.coroutine.stack);\r\n\t}\r\n\r\n\tthis.make = function* (name, v, lcu) {\r\n\t\tlcu.getScope().make(name, v);\r\n\t}\r\n\r\n\tthis.thing = function(name, lcu) {\r\n\t\treturn lcu.getScope().thing(name);\r\n\t}\r\n\r\n\tthis['name?'] = function(name, lcu) {\r\n\t\treturn TypeCheck.castLogoBoolean(lcu.getScope().isname(name));\r\n\t}\r\n\r\n\tthis.names = function(lcu) {\r\n\t\treturn lcu.getScope().names();\r\n\t}\r\n\r\n\t///////////////// Turtle Getters ///////////////////\r\n\tthis.color = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_color);\r\n\t}\r\n\t\r\n\tthis.shape = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_shape);\r\n\t}\r\n\r\n\tthis.heading = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_heading);\r\n\t}\r\n\r\n\tthis.size = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_size);\r\n\t}\r\n\t\r\n\tthis.colorunder = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_colorunder);\r\n\t}\r\n\t\r\n\tthis.xcor = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_xcor);\r\n\t}\r\n\t\r\n\tthis.ycor = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_ycor);\r\n\t}\r\n\r\n\tthis.pensize = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_pensize);\r\n\t}\r\n\r\n\tthis.pos = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_pos);\r\n\t}\r\n\r\n\t\r\n\tthis.message = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_message);\r\n\t}\r\n\r\n\tthis.messagefrom = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_sender);\r\n\t}\r\n\t\r\n\tthis.opacity = function(){\r\n\t\treturn turtleResponder(TurtlePrims.prim_opacity);\r\n\t}\r\n\r\n\tthis.previousColourUnder = function() {\r\n\t\treturn this._processContext.logoContext.prevColourUnder;\r\n\t}\r\n\r\n\tthis.newColourUnder = function() {\r\n\t\treturn this._processContext.logoContext.newColourUnder;\r\n\t}\r\n\r\n\tthis.getUserProcNames = function() {\r\n\t\tlet r = [this.name];\r\n\t\tfor (let x of window.primtips.setname)\r\n\t\t\tr.push(x + this.name);\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\tthis.clearshape = function(n) {\r\n\t\tif (!n.map)\r\n\t\t\tn = [n];\r\n\r\n\t\tconst numbers = n.map((i) => {\r\n\t\t\treturn TypeCheck.getNumber(i, undefined, [1, 'errminval'], [128, 'errmaxval']);\r\n\t\t});\r\n\r\n\t\tnumbers.forEach((i) => {\r\n\t\t\tApp.shapeEditor.clear(undefined, document.getElementById(`shape${i}`));\r\n\t\t});\r\n\t}\r\n\r\n\tthis.loadshape = function*(url, n) {\r\n\t\tn = TypeCheck.getNumber(n, undefined, [1, 'errminval'], [128, 'errmaxval']);\r\n\t\turl = TypeCheck.getCompactedString(url);\r\n\r\n\t\tlet err = 'timeout';\r\n\t\tApp.getGlobalShapes().loadShapeUrl(url, n, false).then(shape => {\r\n\t\t\terr = undefined;\r\n\t\t\tApp.shapeEditor.displayShape(document.getElementById(`shape${n}`), shape.url);\r\n\r\n\t\t\tlet glbshp = App.getGlobalShapes();\r\n\t\t\tlet name = new URL(url).pathname.split('/').pop().split('.').shift();\r\n\t\t\tif (!(parseFloat(name) || parseInt(name) || glbshp.findByName(name)))\r\n\t\t\t\tglbshp.rename(glbshp.findByNumber(n), name);\r\n\t\t}, (e) => {\r\n\t\t\terr = e;\r\n\t\t});\r\n\r\n\t\t// we'll wait up to 3 seconds for some results\r\n\t\tfor (let i = 0; i < 30 && err == 'timeout'; i++) {\r\n\t\t\tthis._processContext.coroutine.sleep(Date.now() + 100); // need some sleep\r\n\t\t\tyield; // without it, sleep doesn't make sense\r\n\t\t}\r\n\r\n\t\tif (err)\r\n\t\t\tthrow new LogoError('errdnl', undefined, url);\r\n\t}\r\n\r\n\tthis.snaparea = function(n, pos, size) {\r\n\r\n\t}\r\n}\r\n\r\n/** factory */\r\n/** Required to get access to ProcessContext.logoContext.who */\r\n//TODO add also to a project a static instance with global context\r\nPrims.bindProcessContext = function(processContext){\r\n\t//ASSERT\r\n\tif ( !processContext) {\r\n\t\tlogger.error(\"lost processContext in Prims.bindProcessContext\");\r\n\t}\r\n\tvar prims = new Prims();\r\n\tprims._processContext = processContext;\r\n\treturn prims;\r\n}\r\n\r\n\r\nmodule.exports = Prims;","\"use strict\"\r\n/** factory **/\r\n\r\n\r\nvar UndoLev=[];\r\n\r\nfunction Project(projectData){\r\n\t//var UndoLev=[];\r\n\tvar helpers = require('./helpers.js');\r\n\tvar Page = require('./Page.js');\r\n\tvar Globals = require('./Globals');\r\n\tconst loader = require('./loader');\r\n\t//var undoList= [];\r\n\tconst LogoError = require('./LogoError');\r\n\tconst LogoObjectsCreator = require('./LogoObjectsCreator');\r\n\tconst CorDispatcher = require('./CorDispatcher');\r\n\tconst maxUndo =100;\r\n\tvar needUndo=false;\r\n\tvar cloud;\r\n\tvar cloudLen;\r\n\tvar cloudPrev;\r\n\r\n\tfunction initCloudUndo() {\r\n\t\tcloud = 0;\r\n\t\tcloudLen = (window.cloudUndo || []).length;\r\n\t\tcloudPrev = undefined;\r\n\t}\r\n\r\n\tinitCloudUndo();\r\n\r\n\tvar pageList = []; //TODO\r\n\t//var UndoLev=[];\r\n\tvar width = projectData.width;\r\n\tvar height = projectData.height;\r\n\tvar currentPage;\r\n\tvar wallpaperName = projectData.wallpaperName;\r\n\tvar root = projectData.root;\r\n\tvar compiler_lang = projectData.compiler_lang;\r\n\r\n\tlet isWallpaper = true;\r\n\tfor (let pageData of projectData.pages){\r\n\t\tpageData.isWallpaper = isWallpaper;\r\n\t\tisWallpaper = false;\r\n\t\tcurrentPage = new Page(pageData);\r\n\t\taddPage(currentPage);\r\n\t}\r\n\r\n\tvar wallpaperOnTree = false;\r\n\r\n/////////////// BEGIN UNDO /////////////////////\r\n\tfunction addUndo(data) {\r\n\t\t//console.log('addUndo',UndoLev.length,maxUndo);\r\n\t\tif (UndoLev.length == maxUndo) {\r\n\t\t\tKillUndo();\r\n\t\t\t//UndoLev=UndoLev.splice(0,1)\r\n\t\t};\r\n\t\t//\t\tconsole.log('Undopush:',data);\r\n\t\tUndoLev.push(data);\r\n\t\tif (cloudLen) {\r\n\t\t\ttry {\r\n\t\t\t\tvar body = JSON.stringify(data);\r\n\t\t\t\tif (body != cloudPrev) {\r\n\t\t\t\t\tcloudPrev = body;\r\n\t\t\t\t\tfetch(window.cloudUndo[cloud++ % cloudLen], {\r\n\t\t\t\t\t\tmethod: 'PUT',\r\n\t\t\t\t\t\tbody: body,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch(e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tneedUndo = true;\r\n\t}\r\n\tfunction SavePageState() { SavePage(currentPage) }\r\n\r\n\tfunction SavePage(page) {\r\n\t\t//////console.log('UndoLev::',UndoLev);\r\n\t\t//if (UndoLev.length == maxUndo){UndoLev=UndoLev.splice(0,1)};\r\n\t\taddUndo({ type: 'RecreatePage', name: page.name, record: page.save() });\r\n\r\n\t}\r\n\r\n\tfunction Undo() {\r\n\t\tif (!UndoLev.length) return;\r\n\t\tCorDispatcher.stopAll();\r\n\r\n\t\twhile (UndoLev.length) {\r\n\t\t\tlet data = UndoLev.pop();\r\n\t\t\tif (data.type == 'RecreatePage') {\r\n\t\t\t\tRecreatePage(data);\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\r\n\t\t\tif (data.type == 'RecreateShape') {\r\n\t\t\t\tApp.getGlobalShapes().RecreateShape(data.number, data.record, data.shape);\r\n\t\t\t\tif (data.once) return;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction RecreatePage(data) {\r\n\t\tvar oldPage = getPageByName(data.name);\r\n\t\tneedUndo = false;\r\n\r\n\t\tif (oldPage) {\r\n\t\t\tlet newName = checkPageName(undefined, primtips.names['page']);\r\n\t\t\toldPage.rename(newName);\r\n\t\t}\r\n\r\n\t\tlet temp = [];\r\n\t\tloader.AddPageData({ width: width, height: height, }, temp, data.record);\r\n\r\n\t\tlet newPage = new Page(temp[0]);\r\n\t\tLogoObjectsCreator.addPageObject(newPage);\r\n\t\tif (oldPage) { oldPage.remove() };\r\n\t\tneedUndo = true;\r\n\t}\r\n\r\n\tfunction KillUndo() {\r\n\t\tlet data = UndoLev[0];\r\n\t\tUndoLev = UndoLev.splice(0, 1);\r\n\t\t//console.log('KillUndo');\r\n\t\tif (data.type == 'RecreateShape') { Assets.KillBitmap(data.shape.bitmap); }\r\n\t}\r\n///////////////////// END UNDO /////////////////////////\r\n\r\n\tfunction addPage(page){\r\n\t\tpageList.push(page);\r\n\t}\r\n\r\n\tfunction removePage(page) {\r\n\t\tlet tempName=checkPageName(undefined,primtips.names['page']);\r\n\t\tif (pageList.length==2){LogoObjectsCreator.newPage(tempName);}\r\n\t\t//return;\r\n\t\tif (page.name == currentPage.name)\r\n\t\t\tsetPageByOffset(1);\r\n\t\tpageList.splice(pageList.indexOf(page), 1);\r\n\t//\tif (pageList.length == 2){currentPage.rename(primtips.names['page']+1)};\r\n\t//\t\tLogoObjectsCreator.newPage();\r\n\t}\r\n\t\r\n\tfunction setPage(page){\r\n\t\t//console.log('needUndo',needUndo);\r\n\t\tif(needUndo) SavePageState();\r\n\t\tfor (let other of pageList.slice(1))\r\n\t\t\tif (other != page)\r\n\t\t\t\tother.setVisible(false);\r\n\r\n\t\tpageList[0].setVisible(true, true);\r\n\t\tpage.setVisible(true);\r\n\t\tcurrentPage = page;\r\n\t\tif (!wallpaperOnTree && currentPage == pageList[0]) {\r\n\t\t\twallpaperOnTree = true;\r\n\t\t\tif (window.createNode) {\r\n\t\t\t\twindow.createNode(currentPage, getPages().map(p => p.name));\r\n\t\t\t\tfor (const o of currentPage.getLogoObjects())\r\n\t\t\t\t\twindow.createNode(o, currentPage.id);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (window.setProjectTitle)\r\n\t\t\twindow.setProjectTitle(page.name);\r\n\t\tif(needUndo) SavePageState();\r\n\t}\r\n\t\r\n\tfunction setPageByName(pageName){\r\n\t\tfor (let page of pageList){\r\n\t\t\tif (helpers.strLowEqual(page.name, pageName)){\r\n\t\t\t\tsetPage(page);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getPages(excludeWallpaper) {\r\n\t\tlet pages = pageList.slice(1).sort(function (a, b) { return a.name.localeCompare(b.name); });\r\n\t\tif (wallpaperOnTree && !excludeWallpaper)\r\n\t\t\tpages.unshift(pageList[0]);\r\n\t\t\r\n\t\treturn pages;\r\n\t}\r\n\r\n\tfunction setPageByOffset(next) {\r\n\t\tlet pages = getPages(true);\r\n\t\tlet cpind = pages.indexOf(currentPage) + next;\r\n\r\n\t\tif (cpind < 0)\r\n\t\t\tcpind = pages.length - 1;\r\n\t\telse if (cpind == pages.length)\r\n\t\t\tcpind = 0;\r\n\r\n\t\tsetPage(pages[cpind]);\r\n\t}\r\n\t\r\n\tfunction getPageByName(pageName){\r\n\t\tfor (let page of pageList){\r\n\t\t\tif (helpers.strLowEqual(page.name, pageName)){\r\n\t\t\t\treturn page;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWallpaper(){\r\n\t\treturn pageList[0];\r\n\t}\r\n\t\r\n\t/** first searches in page, then in other pages */\r\n\t/** normal entry point! */\r\n\tfunction getLogoObjectByName(name){\r\n\t\tlet obj = getCurrentPage()._getLogoObjectByName(name);\r\n\t\tif (obj) {\r\n\t\t\treturn obj;\r\n\t\t}\r\n\t\tlet objects=getLogoObjectsByName(name);\r\n\t\tif (objects){return objects[0]};\r\n\t\t/*\r\n\t\tfor (let page of pageList){\r\n\t\t\tlet obj = page._getLogoObjectByName(name);\r\n\t\t\tif (obj) {\r\n\t\t\t\treturn obj;\r\n\t\t\t}\r\n\t\t}\r\n\t\t*/\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getLogoObjectsByName(name){\r\n\t\tlet result=[];\r\n\t\tfor (let page of pageList){\r\n\t\t\tlet obj = page._getLogoObjectByName(name);\r\n\t\t\tif (obj) {\r\n\t\t\t\t\tresult.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(result.length==0){return undefined};\r\n\t\treturn result;\r\n\r\n\t}\r\n\t/** searches on all pages. Try to use it sparsely: it should not be a default behavior\r\n\t\tNow used in `tell`*/\r\n\tfunction getTurtleByName(name){\r\n\t\tvar obj = getLogoObjectByName(name);\r\n\t\tif (obj && obj.type == \"turtle\") {\r\n\t\t\treturn obj;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getAllLogoObjects(){\r\n\t\tlet all = [];\r\n\t\tfor (let page of pageList){\r\n\t\t\tlet list = page.getLogoObjects();\r\n\t\t\tall = all.concat(list);\r\n\t\t}\r\n\t\treturn all;\r\n\t}\r\n\t\r\n\tfunction _nameIsUsed(name, nameGen, objectNames){\r\n\t\tobjectNames = (objectNames || getAllLogoObjects().map(o => o.name)).map(x => x.toUpperCase());\r\n\t\tif (-1 < objectNames.indexOf(name.toUpperCase()))\r\n\t\t\treturn name;\r\n\r\n\t\treturn Globals.nameIsUsed(name, nameGen);\r\n\t}\r\n\r\n\tfunction nameIsUsed(name, nameGen, skip) {\r\n\t\tif (skip && helpers.strLowEqual(name, skip.name))\r\n\t\t\treturn;\r\n\r\n\t\tlet result = _nameIsUsed(name, nameGen);\r\n\t\tif (result) {\r\n\t\t\tif (result.procProperties)\r\n\t\t\t\tresult = name;\r\n\t\t\tthrow new LogoError('erriap', '', '', result);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getFreeName(template, nameGen){\r\n\t\tlet objectNames = getAllLogoObjects().map(o => o.name);\r\n\t\tlet num = 0;\r\n\t\twhile (++num) {\r\n\t\t\tif (!_nameIsUsed(template + num, nameGen, objectNames))\r\n\t\t\t\treturn template + num;\r\n\t\t}\r\n\t}\r\n\tfunction checkPageName(name,template){\r\n\t\t//console.log('checkPageName',name,template)\r\n\t\tlet r = pageList.map(o => o.name);\r\n\t\tif (name!=undefined&&name!=''&&r.indexOf(name)==-1){return name};\r\n\t\tlet num=0;\r\n\t\twhile (++num) {\r\n\t\t\tif (r.indexOf(template + num)==-1){return template + num}\r\n\t\t};\r\n\t}\r\n\t\r\n\t\r\n\tfunction getCurrentPage(){\r\n\t\treturn currentPage;\r\n\t}\r\n\t\r\n\t//used for testing\r\n\tfunction getGlobals(){\r\n\t\treturn Globals;\r\n\t}\r\n\t\r\n\t\r\n\t///////////////////////////////////////////////////////////////////\r\n\t\r\n\tfunction initAfterRestore(){\r\n\t\tfor (let page of pageList){\r\n\t\t\tpage.initAfterRestore();\r\n\t\t}\r\n\r\n\t\tsetPage(pageList[pageList.length - 1]); // last page is the current on load\r\n\r\n\t\t//init timer\r\n\t\tGlobals.properties.timerProjectStart = performance.now();\r\n\t}\r\n\r\n\tfunction save() {\r\n\t\tlet d = {\r\n\t\t\tcompiler_lang: compiler_lang,\r\n\t\t\ttemplate_page: wallpaperName,\r\n\t\t\tprojectsize: [width, height],\r\n\t\t\tpages: [],\r\n\t\t};\r\n\r\n\t\tObject.assign(d, App.getGlobalShapes().save());\r\n\t\tObject.assign(d, Globals.save());\r\n\r\n\t\td.pages.push(pageList[0].save()); // the wallpaper is always the first\r\n\t\tlet pages = getPages(true);\r\n\t\tlet cpind = pages.indexOf(currentPage);\r\n\t\tpages.push(pages.splice(Math.max(0, cpind), 1)[0]);\r\n\r\n\t\t// now pages are sorted with the current page last\r\n\t\tfor (let p of pages)\r\n\t\t\td.pages.push(p.save());\r\n\r\n\t\treturn d;\r\n\t}\r\n\r\n\tfunction getUserProc(list) {\r\n\t\tlet trans = {}\r\n\t\tfor (let x of pageList)\r\n\t\t\tx.addUserProc(list, trans);\r\n\r\n\t\treturn trans;\r\n\t}\r\n\t\r\n\treturn {\r\n\t\r\n\t\t// UNDO\r\n\t\tSavePageState,\r\n\t\tRecreatePage,\r\n\t\taddUndo,\r\n\t\tUndo,\r\n\t\tUndoState: function(){return needUndo},\r\n\t\t// UNDO\r\n\t\taddPage: addPage,\r\n\t\tsetPage,\r\n\t\tsetPageByName,\r\n\t\tsetPageByOffset,\r\n\t\tgetPages,\r\n\t\tgetPageByName,\r\n\t\tgetWallpaper,\r\n\t\tgetCurrentPage,\r\n\t\tcheckPageName,\r\n\t\tgetPageList: function(){return pageList},\r\n\t\tremovePage,\r\n\t\tgetLogoObjectByName,\r\n\t\tgetLogoObjectsByName,\r\n\t\tgetTurtleByName,\r\n\t\tgetAllLogoObjects,\r\n\t\tnameIsUsed,\r\n\t\tgetFreeName,\r\n\t\tgetGlobals,\r\n\t\t\r\n\t\tgetWidth: function(){return width},\r\n\t\tgetHeight: function(){return height},\r\n\t\t\r\n\t\tinitAfterRestore,\r\n\t\tsave,\r\n\t\tgetUserProc,\r\n\t\troot,\r\n\t\tloader,\r\n\r\n\t\tinitCloudUndo,\r\n\t}\r\n}\r\n\t\r\nmodule.exports = Project;\r\n","'use strict'\r\n/** singleton **/\r\n//TODO functions still have access to global object. Mask as much global properties as possible!\r\n\r\nconst logger = require('./logger');\r\n\r\nvar SafeEval = function(){\r\n/** isolates evaled string in private context, to prevent access to local variables IN TIME OF FUNCTION CREATION \r\n\t(code still can have access to *this* when it's called.)\r\n\tReturns created function (without isolation context) **/\r\n\tfunction createFunction(funcString){\r\n\t\t// set up an object to serve as the context for the code\r\n\t\t// being evaluated. \r\n\t\tvar mask = {};\r\n\t\t// mask global properties \r\n\t\tfor (let p in this) {\r\n\t\t\tmask[p] = undefined;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\t(new Function(\"with(this) { this.func = \"+ funcString +\" }\")).call(mask);\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof SyntaxError) {\r\n\t\t\t\tlogger.log('Syntax Error: '+e.message);\r\n\t\t\t\tlogger.log(e.stack);\r\n\t\t\t} else {\r\n\t\t\t\tthrow(e);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn mask.func;\r\n\t\t\r\n\t}\r\n\t\r\n\t/*\r\n\t//not safe\r\n\t//deprecated vars interface\r\n\tfunction createInitUserprocFunc(code){\r\n\t\ttry {\r\n\t\t\tvar initFunc = new Function(\"prims\",\"vars\",\"userproc\",\r\n\t\t\t\tcode);\r\n\t\t\treturn initFunc;\r\n\t\t\t\r\n\t\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof SyntaxError) {\r\n\t\t\t\t('Syntax Error: '+e.message);\r\n\t\t\t} else {\r\n\t\t\t\tthrow(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n\t\r\n\t\r\n\tfunction createUserprocFunction(funcString, procName){ /** procName is optional, for error messages **/\r\n\t\ttry {\r\n\t\t\t/*return new Function(\"prims\",\"vars\",\"userproc\",\"applyList\",\r\n\t\t\t\t\"return yield* (\" + funcString + \").apply(applyList);\");*/\r\n\t\t\t/*let str = \"function* (prims,vars,userproc,applyList){\"+\r\n\t\t\t\t\"return yield* (\"+funcString+\").apply(applyList);\"+\r\n\t\t\t\t\"}\";\r\n\t\t\tlet x = eval( str );\r\n\t\t\treturn x;*/\r\n\t\t\tlet x = new Function(\r\n\t\t\t\t\"return function*(prims,vars,userproc,applyList){\"+\r\n\t\t\t\t\t\"return yield* ( \"+funcString+\").apply(this, applyList)\"+\r\n\t\t\t\t\"}\");\r\n\t\t\tlet gen = x();\r\n\t\t\treturn gen;\r\n\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof SyntaxError) {\r\n\t\t\t\tlogger.log('Syntax Error: '+e.message);\r\n\t\t\t\tlogger.log('when creating procedure: '+procName);\r\n\t\t\t\tlogger.log(e.stack);\r\n\t\t\t} else {\r\n\t\t\t\tthrow(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** Workaround to parse String as well as Object **/\r\n\tfunction parseJSON(str){\r\n\t\ttry {\r\n\t\t\tvar result = JSON.parse(str);\r\n\t\t} catch (e) {\r\n\t\t\tif (e instanceof SyntaxError) return str\t//treat it as String\r\n\t\t\telse throw e;\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn {\r\n\t\tcreateFunction,\r\n\t\t//createInitUserprocFunc,\r\n\t\tcreateUserprocFunction,\r\n\t\tparseJSON,\r\n\t}\r\n\t\r\n}\r\n\r\nmodule.exports = SafeEval();","\"use strict\"\r\n/** constructor **/\r\n\r\nconst LogoError = require('./LogoError.js');\r\nconst logger = require('./logger');\r\nconst MapCaseInsensitive = require('./MapCaseInsensitive');\r\n\r\n\r\nfunction toLowerCase(str){\r\n\treturn str.toString().toLowerCase();\r\n}\r\n\r\nclass Scope {\r\n\t//parentScope = undefined means it's global scope\r\n\t//in that case, only globalDictionary would be used.\r\n\tconstructor(parentScope = undefined){\r\n\t\tthis.localDictionary = new MapCaseInsensitive();\t//empty object to populate by varnames\r\n\t\tif (parentScope === undefined){\r\n\t\t\tthis.isGlobalScope = true;\r\n\t\t\tthis.globalDictionary = new MapCaseInsensitive();\r\n\t\t} else {\r\n\t\t\tthis.isGlobalScope = false;\r\n\t\t\tthis.globalDictionary = parentScope.globalDictionary;\r\n\t\t}\r\n\t\t\r\n\t\t//`output` variant below isn't used. Keep it in mind in case current implementation on try-catch woldn't be sufficient.\r\n\t\t//this.exitFlag = false;\t//used to exit nested lambdas\r\n\t\t//this.exitValue = undefined;\t\t\r\n\t}\r\n\t\r\n\tthing(varname){\t//does not expect *this* context loss\r\n\t\t//varname = toLowerCase(varname);\r\n\t\tif (this.localDictionary.has(varname)) {\r\n\t\t\treturn this.localDictionary.get(varname);\r\n\t\t} else if (this.globalDictionary.has(varname)){\r\n\t\t\treturn this.globalDictionary.get(varname);\r\n\t\t}\r\n\r\n\t\tthrow new LogoError('errhnv', '', varname);\r\n\t}\r\n\tlocal(varname, value){ //it is `let`. But in js let is keyword\r\n\t\tif (this.isGlobalScope) {\r\n\t\t\tlogger.warning(\"let (local) shouldn't be used outside of user procedures\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//varname = toLowerCase(varname);\r\n\t\tthis.localDictionary.set(varname, value);\r\n\t}\r\n\tmake(varname, value){\r\n\t\t//varname = toLowerCase(varname);\r\n\t\tif (this.localDictionary.has(varname)) {\r\n\t\t\tthis.localDictionary.set(varname, value);\r\n\t\t} else {\r\n\t\t\tthis.globalDictionary.set(varname, value);\r\n\t\t}\r\n\r\n\t\tif (this.refresh)\r\n\t\t\tthis.refresh(this);\r\n\t}\r\n\tisname(varname){\r\n\t\t//varname = toLowerCase(varname);\r\n\t\treturn (this.localDictionary.has(varname) || this.globalDictionary.has(varname));\r\n\t}\r\n\tsetArgs(nameList, valList){\r\n\t\tif (nameList.length != valList.length) {\r\n\t\t\tthrow new LogoError(\"not enough arguments in procedure\");\r\n\t\t}\r\n\r\n\t\tlet d = this.localDictionary || this.globalDictionary;\r\n\t\tfor (let i = 0; i < nameList.length; i++){\r\n\t\t\td.set(nameList[i], valList[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tforget(varname){\t//no Logo analogue\r\n\t\t//varname = toLowerCase(varname);\r\n\t\tif (this.localDictionary.has(varname)){\r\n\t\t\tthis.localDictionary.delete(varname);\r\n\t\t} else if (this.globalDictionary.has(varname)) {\r\n\t\t\tthis.globalDictionary.delete(varname);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** as Logo primitive. It slightly differs from `forget` **/\r\n\tclearname(varname){\r\n\t\tif (this.globalDictionary.has(varname)) {\r\n\t\t\tthis.globalDictionary.delete(varname);\r\n\t\t\t//then(!) try to remove it from local(!) namespace. MWEx does so (but doesn't remove local only names)\r\n\t\t\tif (this.localDictionary.has(varname)){\r\n\t\t\t\tthis.localDictionary.delete(varname);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t/** as Logo primitive **/\r\n\tclearnames(){\r\n\t\tlet names = this.names();\r\n\t\tfor (let name of names){\r\n\t\t\tthis.clearname(name);\r\n\t\t}\r\n\t}\r\n\t\r\n\tnames(){\t//prints only global names\t//OPTIONS\r\n\t\tlet arr = [];\r\n\t\t/*for (let key in this.globalDictionary){\r\n\t\t\tif (this.globalDictionary.hasOwnProperty(key)){\r\n\t\t\t\tarr.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\t\t*/\r\n\t\tfor (let [key, obj] of this.globalDictionary.entries()){\r\n\t\t\tarr.push(key);\r\n\t\t}\r\n\r\n\t\treturn arr;\r\n\t}\r\n\t\r\n\tcloneLocals(other){\r\n\t\tfor (let [key, obj] of this.localDictionary.entries())\r\n\t\t\tother.local(key, obj);\r\n\t}\r\n\t\r\n\treassign(nameList, valList){\r\n\t\tthis.setArgs(nameList, valList);\r\n\t}\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = Scope;","'use strict'\r\n/** class */\r\n\r\n/**\r\n\tfields:\r\n\t\t- bitmap,\r\n\t\t- number,\r\n\t\t- name,\r\n\t\t- hash (optional, not used)\r\n*/\r\n\r\nclass Shape{\r\n\tconstructor(bitmap, number, name){\r\n\t\tthis.bitmap = bitmap;\r\n\t\tthis.number = parseInt(number);\r\n\t\tthis.name = name;\r\n\t}\r\n\tclone(){\r\n\t\tlet clonedBitmap = this.bitmap.clone();\r\n\t\t//clonedBitmap is added to Assets later, in ShapeList\r\n\t\treturn new Shape(clonedBitmap, this.number, this.name);\r\n\t}\r\n}\r\n\r\n\r\nmodule.exports = Shape;","\"use strict\"\r\n/** constructor **/\r\nvar PIXI = require('pixi.js');\r\nvar Assets = require('./Assets.js');\r\nvar Bitmap = require('./Bitmap.js');\r\nvar BinaryBlobsData = require('./BinaryBlobsData.js'); \r\nvar Shape = require('./Shape.js');\r\nvar helpers = require('./helpers.js');\r\nconst logger = require('./logger');\r\nconst pixihelpers = require('./pixihelpers');\r\nconst App = require('./App.js');\r\n\r\n\r\nvar ShapeList = function(){\r\n\t\r\n\tvar list = [];\t//list[id] = {bitmap, number, name, hash}\t-- Shape\r\n\tvar users = {};\r\n\tvar findByName = function(name){\r\n\t\tfor (let i=0; i {\r\n\t\t\t//first, see if we already have a shape with this url:\r\n\t\t\tlet bitmap = _findByUrl(url);\r\n\t\t\tif (bitmap) {\r\n\t\t\t\tresolve(_addShape(url, bitmap, number, singleUndo));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet loaderOptions = {\t\r\n\t\t\t\t//workaround response parsing issue\r\n\t\t\t\t//https://stackoverflow.com/questions/35747209/pixi-js-png-image-resource-is-not-loaded-as-image-texture-mime-type-set-but\r\n\t\t\t\tloadType: PIXI.loaders.Resource.LOAD_TYPE.IMAGE,\r\n\t\t\t\txhrType: PIXI.loaders.Resource.XHR_RESPONSE_TYPE.BLOB\r\n\t\t\t};\r\n\t\t\t//let loader = PIXI.loader.add(url, loaderOptions); -- as new loader is used, task of checking for doubles is done manually\r\n\t\t\tlet loader = new PIXI.loaders.Loader();\r\n\t\t\tloader.add(url, loaderOptions);\r\n\t\t\tlet callback = function(loader, resources){\t\t//pixi v3+\r\n\t\t\t\tlet resource = pixihelpers.resourceLoaderGetFirst(resources);\r\n\t\t\t\tif (resource.error) {\r\n\t\t\t\t\treject(resource.error);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tlet origText = resource.texture;\r\n\t\t\t\tlogger.assert(origText.baseTexture.hasLoaded);\r\n\r\n\t\t\t\tlet w = origText.width;\r\n\t\t\t\tlet h = origText.height;\r\n\r\n\t\t\t\tlet prjW = App.getProject().getWidth();\r\n\t\t\t\tlet prjH = App.getProject().getHeight();\r\n\r\n\t\t\t\tif (origText.width > prjW || origText.height > prjH) {\r\n\t\t\t\t\tlet prjRatio = prjW / prjH;\r\n\t\t\t\t\tlet imgRatio = origText.width / origText.height;\r\n\r\n\t\t\t\t\tif (imgRatio > prjRatio) {\r\n\t\t\t\t\t\tw = prjW;\r\n\t\t\t\t\t\th = origText.height * prjW / origText.width;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\th = prjH;\r\n\t\t\t\t\t\tw = origText.width * prjH / origText.height;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar sprite = new PIXI.Sprite(origText);\r\n\t\t\t\t\tsprite.scale.set(w / origText.width);\r\n\r\n\t\t\t\t\tlet oldTex = origText;\r\n\t\t\t\t\torigText = PIXI.RenderTexture.create(w, h);\r\n\t\t\t\t\tApp.getRenderer().render(sprite, origText);\r\n\t\t\t\t\toldTex.destroy();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar bitmap = new Bitmap();\r\n\t\t\t\tbitmap.hash = \"H\" + getHashCode(url);\r\n\t\t\t\tbitmap.texture = origText;\r\n\t\t\t\tbitmap.width = origText.width;\r\n\t\t\t\tbitmap.height = origText.height;\r\n\t\t\t\tbitmap.generateUnpackedFromTexture();\r\n\r\n\t\t\t\tAssets.bitmaps.push(bitmap);\r\n\t\t\t\tresolve(_addShape(url, bitmap, number, singleUndo));\r\n\t\t\t};\r\n\r\n\t\t\tloader.load(callback);\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tfunction clearShape(elem, number, once) {\r\n\t\tlet sh = findByNumber(number);\r\n\t\tif (!sh)\r\n\t\t\treturn 0;\r\n\r\n\t\tApp.getProject().addUndo({\r\n\t\t\ttype: 'RecreateShape',\r\n\t\t\tnumber: number,\r\n\t\t\trecord: elem,\r\n\t\t\tshape: sh,\r\n\t\t\tonce,\r\n\t\t});\r\n\r\n\t\tif (users[number])\r\n\t\t\tusers[number].map(x => x.clearShape());\r\n\r\n\t\tlet index = list.indexOf(sh);\r\n\t\tlist.splice(index, 1);\r\n\t\treturn 1;\r\n\t}\r\n\r\n\tfunction RecreateShape(num, new_elem, shp){\r\n\t\tinitShapeFromBitmap(shp.bitmap, shp.number, shp.name);\r\n\t\tlet shapes = document.getElementById(\"clipart\");\r\n\t\tlet old_elem=document.getElementById('shape'+num);\r\n\t\r\n\t//\tlet new_elem=old_elem.cloneNode(true);\r\n\t\tnew_elem.setAttribute(\"class\", \"shape exists\")\r\n let old = new_elem.getElementsByTagName(\"img\");\r\n if (old.length)\r\n new_elem.removeChild(old[0]);\r\n let src=shp.bitmap.dataURL;\r\n let img = document.createElement(\"img\");\r\n img.src = src;\r\n if (src.substr(0, 5) == \"blob:\")\r\n img.onload = function() {\r\n window.URL.revokeObjectURL(img.src);\r\n };\r\n\r\n new_elem.insertBefore(img, new_elem.firstChild);\r\n shapes.replaceChild(new_elem,old_elem);\r\n\t}\r\n\t//TODO error checking\r\n\t//helper for testing/creating base64\r\n\t/** Promise - returns bitmap **/\r\n\tfunction _loadBitmapFromFile(url){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar loader = PIXI.loader.add(url);\r\n\t\t\t\tlet onComplete = function(){\t\t//pixi v3+\r\n\t\t\t\t\tvar texture = PIXI.Texture.fromImage(url);\r\n\r\n\t\t\t\t\tlogger.assert(texture.baseTexture.hasLoaded);\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar bitmap = new Bitmap();\r\n\t\t\t\t\tbitmap.texture = texture;\r\n\t\t\t\t\tbitmap.width = texture.width;\r\n\t\t\t\t\tbitmap.height = texture.height;\r\n\t\t\t\t\tbitmap.generateUnpackedFromTexture();\r\n\t\t\t\t\t\r\n\t\t\t\t\tresolve(bitmap);\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tloader.load(onComplete);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction initDefaultBitmaps() {\r\n\t\tAssets.loadEmptyBitmap();\r\n\t\tinitShapeFromBitmap(Assets.loadBitmap(BinaryBlobsData.TurtleBitmap), 0);\r\n\t}\r\n\r\n\tvar emptyShape;\r\n\tfunction getEmptyShape() {\r\n\t\tif (!emptyShape) {\r\n\t\t\temptyShape = new Shape(Assets.emptyBitmap);\r\n\t\t}\r\n\r\n\t\treturn emptyShape;\r\n\t}\r\n\t\r\n\tfunction initShapeFromHash(hash, number, name){\r\n\t\tvar bitmap = Assets.findByHash(hash);\r\n\t\tlogger.assert(bitmap != undefined);\r\n\t\tinitShapeFromBitmap(bitmap, number, name);\r\n\t}\r\n\t\r\n\tfunction initShapeFromBitmap(bitmap, number, name) {\r\n\t\tvar shape = new Shape(bitmap, number, name);\r\n\r\n\t\tvar old = list.findIndex(v => v.number == number);\r\n\t\tif (old > -1)\r\n\t\t\tlist.splice(old, 1);\r\n\r\n\t\tlist.push(shape);\r\n\r\n\t\tif (users[number])\r\n\t\t\tusers[number].forEach(x => x.loadShape(shape));\r\n\r\n\t\treturn shape;\r\n\t}\r\n\t\r\n\tfunction clone(){\r\n\t\tlet cloned = new ShapeList();\r\n\t\tfor (let shape of list){\r\n\t\t\tlet cShape = shape.clone();\r\n\t\t\tAssets.bitmaps.push(cShape.bitmap);\r\n\t\t\tcloned._list.push(cShape);\r\n\t\t}\r\n\t\treturn cloned;\r\n\t}\r\n\t\r\n\tfunction destroy(){\r\n\t\tlist = null;\r\n\t\tusers = null;\r\n\t}\r\n\r\n\t// https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript\r\n\tfunction getHashCode(s) {\r\n\t\tvar hash = 17, i, chr;\r\n\t\tif (s.length === 0) return hash;\r\n\t\tfor (i = 0; i < s.length; i++) {\r\n\t\t\tchr = s.charCodeAt(i);\r\n\t\t\thash = ((hash << 5) - hash) + chr;\r\n\t\t\thash |= 0; // Convert to 32bit integer\r\n\t\t}\r\n\r\n\t\treturn hash;\r\n\t};\r\n\r\n\tfunction save() {\r\n\t\tlet d = [];\r\n\t\tfor (let s of list)\r\n\t\t\tif (s.bitmap.hash) {\r\n\t\t\t\ts.bitmap.tosave = true;\r\n\t\t\t\tif (s.bitmap.source)\r\n\t\t\t\t\ts.bitmap.source.tosave = true;\r\n\r\n\t\t\t\td.push({\r\n\t\t\t\t\tname: s.name,\r\n\t\t\t\t\tnumber: s.number,\r\n\t\t\t\t\thash: s.bitmap.hash,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\treturn { Bitmaps: Assets.save(), GlobalShapes: d};\r\n\t}\r\n\r\n\tfunction use(n, turtle) {\r\n\t\tlet u = users[n] || (users[n] = []);\r\n\t\tif (u.indexOf(turtle) < 0)\r\n\t\t\tu.push(turtle);\r\n\t}\r\n\r\n\tfunction unuse(nlist, turtle) {\r\n\t\tif (!nlist.map)\r\n\t\t\tnlist = [nlist];\r\n\t\tfor (let n of nlist) {\r\n\t\t\tlet sh = findByName(n);\r\n\t\t\tif (sh)\r\n\t\t\t\tn = sh.number;\r\n\r\n\t\t\tif (!users[n])\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tlet i = users[n].indexOf(turtle);\r\n\t\t\tif (-1 < i)\r\n\t\t\t\tusers[n].splice(i, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction rename(sh, name) {\r\n\t\tif (users[sh.number])\r\n\t\t\tusers[sh.number].map(x => x.renameShape(sh.name, name));\r\n\r\n\t\tsh.name = name;\r\n\t}\r\n\r\n\tfunction transform(sh, w, h, degrees) {\r\n\t\t// looks like we just renamed the shape\r\n\t\tif (sh.bitmap.width == w && sh.bitmap.height == h && degrees == 0)\r\n\t\t\treturn;\r\n\r\n\t\tconst source = sh.bitmap.source || sh.bitmap;\r\n\t\tconst rotation = (sh.bitmap.rotation || 0) + degrees * Math.PI / 180;\r\n\t\tconst hash = `${source.hash};${w};${h};${rotation}`;\r\n\t\tlet bitmap = Assets.findByHash(hash);\r\n\t\tif (bitmap.hash) {\r\n\t\t\t_addShape('', bitmap, sh.number, true, sh.name);\r\n\t\t\treturn bitmap.dataURL;\r\n\t\t}\r\n\r\n\t\t// we may have changed the source, recalc the size\r\n\t\tconst scale = sh.bitmap.scale || [1, 1];\r\n\t\tw = source.width * scale[0] * w / sh.bitmap.width;\r\n\t\th = source.height * scale[1] * h / sh.bitmap.height;\r\n\r\n\t\tconst sprite = new PIXI.Sprite(source.texture);\r\n\t\tsprite.width = w;\r\n\t\tsprite.height = h;\r\n\t\tsprite.anchor.set(0.5, 0.5);\r\n\t\tsprite.rotation = rotation;\r\n\r\n\t\tconst [textW, textH] = calculateRotated(w, h, rotation);\r\n\t\tsprite.position.x = textW / 2;\r\n\t\tsprite.position.y = textH / 2;\r\n\t\tconst texture = PIXI.RenderTexture.create(textW, textH);\r\n\t\tApp.getRenderer().render(sprite, texture);\r\n\r\n\t\tbitmap = new Bitmap();\r\n\t\tbitmap.source = source;\r\n\t\tbitmap.rotation = rotation;\r\n\t\tbitmap.scale = [w / source.width, h / source.height];\r\n\t\tbitmap.hash = hash;\r\n\t\tbitmap.texture = texture;\r\n\t\tbitmap.width = w;\r\n\t\tbitmap.height = h;\r\n\t\tbitmap.generateUnpackedFromTexture();\r\n\r\n\t\tAssets.bitmaps.push(bitmap);\r\n\t\t_addShape('', bitmap, sh.number, true, sh.name);\r\n\t\treturn bitmap.dataURL;\r\n\t}\r\n\r\n\tfunction calculateRotated(w, h, Fi) {\r\n\t\tconst H = w * Math.abs(Math.sin(Fi)) + h * Math.abs(Math.cos(Fi));\r\n\t\tconst W = w * Math.abs(Math.cos(Fi)) + h * Math.abs(Math.sin(Fi));\r\n\t\treturn [Math.round(W * 10000000) / 10000000, Math.round(H * 10000000) / 10000000];\r\n\t}\r\n\t\r\n\treturn {\r\n\t\t_list: list,\r\n\t\tloadShapeUrl,\t//Promise\r\n\t\tclearShape,\r\n\t\tRecreateShape,\r\n//\t\tUpdateShape,\r\n\t\t_loadBitmapFromFile, //TODO move to more appropriate place\r\n\t\tinitDefaultBitmaps,\r\n\t\tgetEmptyShape,\r\n\t\tinitShapeFromHash,\r\n\t\tfindByName,\r\n\t\tfindByNumber,\r\n\t\tclone,\r\n\t\tdestroy,\r\n\t\tsave,\r\n\t\tuse,\r\n\t\tunuse,\r\n\t\trename,\r\n\t\ttransform,\r\n\t}\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = ShapeList;","'use strict'\r\n\r\nconst LogoObject = require('./LogoObject');\r\nconst helpers = require('./helpers.js');\r\nconst SliderView = require('./SliderView.js');\r\nconst App = require('./App');\r\nconst TypeCheck = require('./TypeCheck');\r\nconst LogoError = require('./LogoError');\r\n\r\nclass Slider extends LogoObject{\r\n\tconstructor(data){\r\n\t\tsuper(data); //common LogoObject fields\r\n\t\t\r\n\t\tthis.label = data.label;\r\n\t\tthis.minValue = data.minValue;\r\n\t\tthis.maxValue = data.maxValue;\r\n\t\tthis.value = data.value;\r\n\t\tthis.vertical = data.vertical || false;\r\n\t\tthis.id = \"slider\"+helpers.guid();\r\n\t\t\t\r\n\t\tthis._sliderView = undefined;\r\n\t}\r\n\t\r\n\t\r\n//////////////////\tset and get\t//////////////////////////////////\r\n\t\r\n\tget(propname){\r\n\t\tpropname = propname.toUpperCase();\r\n\t\tswitch (propname) {\r\n\t\t\tcase primtips.sg.value: return this.value;\r\n\t\t\tcase primtips.sg['vertical?']: return primtips['sym_' + this.vertical][0];\r\n\t\t\tcase primtips.sg.limits: return [this.minValue, this.maxValue];\r\n\t\t}\r\n\r\n\t\treturn super.get(propname, [primtips.sg.size]);\r\n\t}\r\n\t\r\n\t/** returns true or null */\r\n\tset(propname, value){\r\n\t\tlet result = true;\r\n\t\tpropname = propname.toUpperCase();\r\n\t\tswitch (propname) {\r\n\t\t\tcase primtips.sg.value:\r\n\t\t\t\tvalue = TypeCheck.getNumber(value, \"set\", [this.minValue, 'errdnl'], [this.maxValue, 'errdnl']);\r\n\t\t\t\tthis.value = value;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg['vertical?']:\r\n\t\t\t\tthis.vertical = TypeCheck.getBoolean(value, 'set');\r\n\t\t\t\tlet w = this.width;\r\n\t\t\t\tthis.width = this.height;\r\n\t\t\t\tthis.height = w;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase primtips.sg.limits:\r\n\t\t\t\tlet repr = TypeCheck.getCompactedString(value);\r\n\t\t\t\tif (!(value instanceof Array) || value.length != 2)\r\n\t\t\t\t\tthrow new LogoError('errdnl', 'set', repr);\r\n\r\n\t\t\t\tlet min = TypeCheck.getNumber(value[0], 'set');\r\n\t\t\t\tlet max = TypeCheck.getNumber(value[1], 'set');\r\n\r\n\t\t\t\tif (max <= min)\r\n\t\t\t\t\tthrow new LogoError('errdnl', 'set', repr)\r\n\r\n\t\t\t\tthis.minValue = min;\r\n\t\t\t\tthis.maxValue = max;\r\n\t\t\t\tif (this.value < min)\r\n\t\t\t\t\tthis.value = min;\r\n\t\t\t\telse if (max < this.value)\r\n\t\t\t\t\tthis.value = max;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tresult = false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (result) {\r\n\t\t\tApp.getDrawQueue().addRequest(this);\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\treturn super.set(propname, value, [primtips.sg.size]);\r\n\t}\r\n\t\r\n//////////// LogoObject implementations /////////////////////////\r\n\r\n\t_initView(){\r\n\t\tsuper._initView(this._sliderView = new SliderView(this));\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlet d = super.save();\r\n\t\td.vertical = JSON.stringify(this.vertical);\r\n\t\td.min = this.minValue;\r\n\t\td.max = this.maxValue;\r\n\t\td.current = this.value;\r\n\r\n\t\treturn d;\r\n\t}\r\n\t\r\n\taddUserProc(list, trans) {\r\n\t\tlet name = this.name;\r\n\t\thelpers.addUserProc(this.objProc, trans, name, 0, function(prims) { return prims.get(name, primtips.sg.value); });\r\n\t\tfor (let x of window.primtips.setname)\r\n\t\t\thelpers.addUserProc(this.objProc, trans, x + name, 1, function(prims, args) { prims.set(name, primtips.sg.value, args[0]); });\r\n\t}\r\n\r\n\tgetUserProcNames() {\r\n\t\tlet r = [this.name];\r\n\t\tfor (let x of window.primtips.setname)\r\n\t\t\tr.push(x + this.name);\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\tcheckApply(newValues) {\r\n\t\tlet err = super.checkApply(newValues) || [];\r\n\r\n\t\t// same checks is in Prims.newslider\r\n\t\tlet min = TypeCheck.parseNumber(newValues['minValue']);\r\n\t\tif (isNaN(min) || min != parseInt(min))\r\n\t\t\terr.push('minValue');\r\n\r\n\t\tlet max = TypeCheck.parseNumber(newValues['maxValue']);\r\n\t\tif (isNaN(max) || max != parseInt(max))\r\n\t\t\terr.push('maxValue');\r\n\r\n\t\tlet v = TypeCheck.parseNumber(newValues['value']);\r\n\t\tif (isNaN(v) || v != parseInt(v))\r\n\t\t\terr.push('value');\r\n\r\n\t\tif (min >= max || v < min || v > max) {\r\n\t\t\tif (min != this.minValue)\r\n\t\t\t\terr.push('minValue');\r\n\t\t\tif (max != this.maxValue)\r\n\t\t\t\terr.push('maxValue');\r\n\t\t\tif (v != this.value)\r\n\t\t\t\terr.push('value');\r\n\t\t}\r\n\r\n\t\treturn err.length ? err : undefined;\r\n\t}\r\n}\r\n\r\nmodule.exports = Slider;\r\n","'use strict'\r\n\r\n/** constructor */\r\n\r\nconst $ = require('jquery');\r\nconst HtmlLogoView = require('./HtmlLogoView');\r\nconst App = require('./App');\r\n\r\nclass SliderView extends HtmlLogoView{\r\n\tconstructor(sliderObject){\r\n\t\tsuper(sliderObject, true, true); //dragByLabel = true, isResizable = true\r\n\t\tthis.slider = sliderObject;\r\n\t\tthis.insertElement(``);\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\tlet _this = this;\r\n\t\tthis._inputEvent = function(){\r\n\t\t\tlet newValue = this.value;\r\n\t\t\t_this.slider.value = newValue;\r\n\t\t\tApp.getDrawQueue().addRequest(_this);\r\n\t\t}\r\n\t\t$('#'+this.slider.id).on(\"input\", this._inputEvent);\r\n\t\t\r\n\t\t//override resizable options:\r\n\t\t$('#'+this._divId).resizable({\r\n\t\t\thandles: 'e, s',\r\n\t\t\tresize: this._resizeVertical.bind(this),\r\n\t\t\tdistance: 10\r\n\t\t});\r\n\t\t$('#'+this._divId+' .ui-resizable-e').addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\");\t//For some reasons jquery ui disables icons for other handles than se\r\n\t\t$('#'+this._divId+' .ui-resizable-e').css({'right': '-12px', 'top': '12px'});\r\n\t\t//'s' handle for vertical orientation:\r\n\t\t$('#'+this._divId+' .ui-resizable-s').addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\");\r\n\t\t$('#'+this._divId+' .ui-resizable-s').css({'left': '12px', 'bottom': '-12px'});\r\n\t}\r\n\r\n\tdraw(){\r\n\t\t//take care of showName, visible, freezed; updates state:\r\n\t\tsuper.draw();\r\n\r\n\t\tthis.slider.minValue = parseInt(this.slider.minValue.toString().replace(/^([-+])?0+(?=\\d)/, \"$1\"));\r\n\t\tthis.slider.maxValue = parseInt(this.slider.maxValue.toString().replace(/^([-+])?0+(?=\\d)/, \"$1\"));\r\n\t\tthis.slider.value = parseInt(this.slider.value.toString().replace(/^([-+])?0+(?=\\d)/, \"$1\"));\r\n\t\t\r\n\t\t$('#'+this.slider.id).attr('min', this.slider.minValue);\r\n\t\t$('#'+this.slider.id).attr('max', this.slider.maxValue);\r\n\t\t$('#'+this.slider.id).val(this.slider.value);\r\n\t\t\r\n\t\tlet label = this._logoObject.name + \" \" + this.slider.value;\r\n\t\t$('#'+this._labelId)[0].innerHTML = label;\r\n\t\t\r\n\t\t//vertical\r\n\t\tif (this.slider.vertical) {\r\n\t\t\t$('#'+this.slider.id).css({\r\n\t\t\t\t\"-webkit-appearance\": \"slider-vertical\",\r\n\t\t\t\twidth: this.slider.width,\r\n\t\t\t\theight: this.slider.height,\r\n\t\t\t}).attr(\"orient\",\"vertical\");\r\n\t\t\tthis._setResizableVertical(true);\r\n\t\t} else {\r\n\t\t\t$('#'+this.slider.id).css({\r\n\t\t\t\t\"-webkit-appearance\": \"\",\r\n\t\t\t\twidth: this.slider.width,\r\n\t\t\t\theight: this.slider.height,\r\n\t\t\t}).attr(\"orient\",\"\");\r\n\t\t\tthis._setResizableVertical(false);\r\n\t\t}\r\n\r\n\t\t$('#'+this._divId).css({\r\n\t\t\twidth: this.slider.width,\r\n\t\t\theight: this.slider.height\r\n\t\t});\r\n\t}\r\n\t\r\n\t_resizeVertical(e,ui){\r\n\t\tthis._logoObject.width = ui.size.width;\r\n\t\tthis._logoObject.height = ui.size.height;\r\n\t\tApp.getDrawQueue().addRequest(this);\r\n\t}\r\n\t\t\t\r\n\t_setResizableVertical(vertical){\r\n\t\tif (vertical) {\r\n\t\t\t//width and height switched\r\n\t\t\t$('#'+this._divId+' .ui-resizable-e').css({'visibility': 'hidden'});\r\n\t\t\t$('#'+this._divId+' .ui-resizable-s').css({'visibility': 'visible'});\r\n\t\t} else {\r\n\t\t\t$('#'+this._divId+' .ui-resizable-e').css({'visibility': 'visible'});\r\n\t\t\t$('#'+this._divId+' .ui-resizable-s').css({'visibility': 'hidden'});\t\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\t\r\n}\r\n\r\n\r\nmodule.exports = SliderView;","'use strict'\r\nconst logger = require('./logger');\r\n\r\n/** constructor **/\r\nclass StateObservable {\r\n\t\r\n\tconstructor(){\r\n\t\tthis._fields = {}; //maybe Map?\r\n\t\tthis._changed = {};\t//maybe Set?\r\n\t}\r\n\t\r\n\t/** 'changed' mark after shallow comparison **/\r\n\taddObservableField(name, initialValue){\r\n\t\tObject.defineProperty(this, name, {\r\n\t\t\tget: function(){\r\n\t\t\t\treturn this._fields[name];\r\n\t\t\t},\r\n\t\t\tset: function(value){\r\n\t\t\t\tif (this._fields[name] !== value){\r\n\t\t\t\t\tthis._changed[name] = true;\r\n\t\t\t\t}\r\n\t\t\t\tthis._fields[name] = value;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._fields[name] = initialValue;\r\n\t}\r\n\t\r\n\tupdate(plainObj = {}){\r\n\t\tfor (let key of Object.keys(plainObj)){\r\n\t\t\tif (this._fields.hasOwnProperty(key)){\r\n\t\t\t\tthis[key] = plainObj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tchanged(...names){\r\n\t\tlet changed = false;\r\n\t\tfor (let key of names){\r\n\t\t\t//ASSERT\r\n\t\t\tlogger.assert(this._fields.hasOwnProperty(key), 'StateObservable.changed expected existing key');\r\n\t\t\tchanged = (this._changed[key] == true);\r\n\t\t\tif (changed) return true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\t\r\n\tsetChanged(changed = false){\r\n\t\tfor (let key of Object.keys(this._changed)){\r\n\t\t\tthis._changed[key] = changed;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule.exports = StateObservable;","'use strict'\r\n/** singleton **/\r\n\r\nlet Stubs = function(){\r\n\r\nvar getTurtleStub = function(){\r\n\treturn {\r\n\t\tname: \"Turtle1\",\r\n\t\ttype: \"turtle\",\r\n\t\tx: -350,\r\n\t\ty: 0,\r\n\t\theading: 30,\r\n\t\tonClick: {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\r\n\t\t\t\t//initialization boilerplate\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\r\n\t\t\t\tyield* prims.pd();\r\n\t\t\t\tyield* prims.fd(1);\r\n\t\t\t\tyield* prims.wait(1);\r\n\t\t\t},\r\n\t\t\tforever: true,\r\n\t\t},\r\n\t}\r\n}\r\n\r\nfunction getSampleOnClick() {\r\n\treturn {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\r\n\t\t\t\t//initialization boilerplate\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\r\n\t\t\t\t//yield* prims.fd(1);\r\n\t\t\t\t//yield* prims.wait(1);\r\n\t\t\t\t\r\n\t\t\t\t//5, 6, 7, 8\r\n\t\t\t\t\r\n\t\t\t\t//yield* prims.setshape((prims.shape()) + 1);\r\n\t\t\t\t//yield* prims.setcolor(prims.color() + 1);\r\n\t\t\t\tyield* prims.setcolor(15);\r\n\t\t\t\tyield* prims.pd();\r\n\t\t\t\tyield* prims.fd(100);\r\n\t\t\t},\r\n\t\t\tforever: false,\r\n\t\t};\r\n}\r\n\r\nvar generatedTurtleNames = [];\r\nvar generatedNumber = 1;\r\nfunction getNewTurtleStub(){\r\n\tvar newName = \"GenTurtle\"+generatedNumber;\r\n\tvar output = {\r\n\t\tname: newName,\r\n\t\ttype: \"turtle\",\r\n\t\tx: -300+Math.random()*600,\r\n\t\ty: -300+Math.random()*600,\r\n\t\theading: 0,\r\n\t\tonClick: {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\tforever: true,\r\n\t\t},\t\t\r\n\t};\r\n\tgeneratedNumber++;\r\n\tgeneratedTurtleNames.push(newName);\r\n\treturn output;\r\n}\r\n\r\nvar getTurtleStub2 = function(){\r\n\treturn {\r\n\t\tname: \"Turtle2\",\r\n\t\ttype: \"turtle\",\r\n\t\tx: 200,\r\n\t\ty: 0,\r\n\t\theading: 0,\r\n\t\tonClick: {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\r\n\t\t\t\t//initialization boilerplate\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\t\t\t\t\r\n\t\t\t\t//yield* prims.tto([\"Turtle1\"]);\r\n\t\t\t\tyield* prims.fd(100);\r\n\t\t\t\tyield* prims.stopme(processContext);\r\n\r\n\t\t\t},\r\n\t\t\tforever: true,\r\n\t\t},\r\n\t}\r\n}\r\n\r\nvar getButtonStub = function(){\r\n\treturn {\r\n\t\tname: \"Button1\",\r\n\t\ttype: \"button\",\r\n\t\tx: 200,\r\n\t\ty: 50,\r\n\t\tonClick: {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\t\r\n\t\t\t\tyield* prims.setshape((prims.shape()) - 1);\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\tforever: false,\r\n\t\t},\r\n\t}\r\n}\r\n\r\nvar getTextboxDataStub = function(){\r\n\tvar textboxData = {\r\n\t\tname: \"Text1\",\r\n\t\ttype: \"text\",\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\twidth: 200,\r\n\t\theight: 100,\r\n\t\ttext: \"Hello world!\\n\",\r\n\t}\r\n\treturn textboxData;\r\n}\r\n\r\nvar getUserprocStub = function(){\r\n\treturn {\r\n\t\tname: \"userproc\",\r\n\t\ttype: \"userproc\",\r\n\t\tcode: {\r\n\t\t\ttranslatedCode: function* (globals, processContext, obj){\t//wrapper function is always generator\r\n\t\t\t\tvar prims = processContext.prims;\r\n\t\t\t\tvar vars = globals.vars;\r\n\t\t\t\tvar userproc = globals.userproc;\r\n\t\t\t\tvar scope = vars.globalScope;\r\n\t\t\t\t\r\n\t\t\t\tuserproc['myproc'] = function* (){\r\n\t\t\t\t\tprims.tto([\"Turtle1\",\"Turtle2\"]);\t//isGenerator = false\r\n\t\t\t\t\tyield* prims.fd(100);\t//isGenerator = true\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc['benchmark'] = function* (){\r\n\t\t\t\t\tprims.tto(generatedTurtleNames);\t//isGenerator = false\r\n\t\t\t\t\tprims.clickon();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc['testvars1'] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\tscope.make(\"a\",7);\r\n\t\t\t\t\tyield* prims.show(scope.thing(\"a\"));\r\n\t\t\t\t}\r\n\t\t\t\tuserproc['testvars2'] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\tscope.let(\"a\",1);\r\n\t\t\t\t\tyield* prims.show(scope.thing(\"a\"));\r\n\t\t\t\t\tscope.make(\"a\",2);\r\n\t\t\t\t\tyield* prims.show(scope.thing(\"a\"));\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc['twosame'] = function* (){\r\n\t\t\t\t\tprims.tto([\"WaitTurtle\"]);\r\n\t\t\t\t\tprims.pd();\r\n\t\t\t\t\tprims.clickon();\r\n\t\t\t\t\twhile (true) {\r\n\t\t\t\t\t\tyield* prims.fd(50);\r\n\t\t\t\t\t\tprims.rt(90);\r\n\t\t\t\t\t\tyield;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t/*\r\n\t\t\t\t\tto testvars3\r\n\t\t\t\t\t\tifelse :a < (random 10) + 1 [\r\n\t\t\t\t\t\t\tshow \"|a < random 10 + 1|\r\n\t\t\t\t\t\t][\r\n\t\t\t\t\t\t\tshow \"|no hit|\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t\trepeat 3 [\r\n\t\t\t\t\t\t\tlet [counter 0]\r\n\t\t\t\t\t\t\trepeat 2 [\r\n\t\t\t\t\t\t\t\tshow \"|inner cycle|\r\n\t\t\t\t\t\t\t\tmake \"counter :counter + 1\r\n\t\t\t\t\t\t\t\tshow :counter\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t\tshow :a\r\n\t\t\t\t\t\top :a\r\n\t\t\t\t\tend\r\n\t\t\t\t\t\t\r\n\t\t\t\t*/\r\n\t\t\t\tuserproc['testvars3'] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\tif (scope.thing(\"a\") < (yield* prims.random(10)) + 1) {\r\n\t\t\t\t\t\t(yield* prims.show(\"a < random 10 + 1\"));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t(yield* prims.show(\"no hit\"));\r\n\t\t\t\t\t};\r\n\t\t\t\t\tfor (let i = 0; i < 3; i++){\r\n\t\t\t\t\t\tscope.let(\"counter\", 0);\r\n\t\t\t\t\t\tfor (let i = 0; i<2; i++){\r\n\t\t\t\t\t\t\t(yield* prims.show(\"inner cycle\"));\r\n\t\t\t\t\t\t\tscope.make(\"counter\", scope.thing(\"counter\") + 1);\r\n\t\t\t\t\t\t\t(yield* prims.show(scope.thing(\"counter\")));\r\n\t\t\t\t\t\t\tyield;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tyield;\r\n\t\t\t\t\t};\r\n\t\t\t\t\t(yield* prims.show(scope.thing(\"a\")));\r\n\t\t\t\t\tvar result = scope.thing(\"a\");\t//prevent inlining\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc[\"returnval\"] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\tyield* userproc[\"returnval2\"]();\r\n\t\t\t\t\t\r\n\t\t\t\t\treturn yield* userproc[\"returnval2\"]();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc[\"returnval2\"] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\treturn yield 7;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc[\"testproc1\"] = function* (){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tuserproc[\"argproc\"] = function* (args){\r\n\t\t\t\t\tvar scope = vars.newLocalScope();\r\n\t\t\t\t\tscope.setArgs([\"x\",\"y\"],args);\r\n\t\t\t\t\t\r\n\t\t\t\t\tyield* prims.show(scope.thing(\"x\"));\r\n\t\t\t\t\tyield* prims.show(scope.thing(\"y\"));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\nvar getProjectStub = function(){\r\n\treturn {\r\n\t\tname: \"Project1\",\r\n\t\twidth: 800,\r\n\t\theight: 600,\r\n\t\tpages: [\r\n\t\t\t{\r\n\t\t\t\tname:\"Page1\",\r\n\t\t\t\tobjects: [\r\n\t\t\t\t\tgetTurtleStub(),\r\n\t\t\t\t\tgetTurtleStub2(),\t\r\n\t\t\t\t\tgetButtonStub(),\r\n\t\t\t\t],\r\n\t\t\t\tcurturtle:\"Turtle1\",\r\n\t\t\t}\r\n\t\t],\r\n\t\tuserproc: getUserprocStub(),\r\n\t}\r\n}\r\n\r\nthis.getPlayerStub = function(){\r\n\treturn {\r\n\t\tname: \"Melody1\",\r\n\t\tlabel: \"Melody1\",\r\n\t\ttype: \"midi\",\r\n\t\tx: 100,\r\n\t\ty: 100,\r\n\t\twidth: 200,\r\n\t\theight: 50,\r\n\t\tmelody: {\r\n\t\t\ttempo: 120,\r\n\t\t\tvolume: 100,\r\n\t\t\tsequence: [57, 55, 53, 55, 57, 57, 57]\r\n\t\t}\r\n\t}\r\n}\r\n\r\nthis.getAudioStub = function(){\r\n\treturn {\r\n\t\tname: \"Audio1\",\r\n\t\tlabel: \"Audio1\",\r\n\t\ttype: \"audio\",\r\n\t\tx: 100,\r\n\t\ty: 100,\r\n\t\twidth: 200,\r\n\t\theight: 50,\r\n\t\tfile: \"grow.wav\",\r\n\t\tshowName: true,\r\n\t\tvisible: true,\r\n\t}\r\n}\r\n\r\nthis.getSliderStub = function(){\r\n\treturn {\r\n\t\tname: \"Slider1\",\r\n\t\tshowName: true,\r\n\t\tvisible: true,\r\n\t\tlabel: \"Slider1\",\r\n\t\ttype: \"slider\",\r\n\t\tx: -100,\r\n\t\ty: 0,\r\n\t\twidth: 500,\r\n\t\theight: 50,\r\n\t\tminValue: 0,\r\n\t\tmaxValue: 99,\r\n\t\tvalue: 42,\r\n\t\tvertical: false,\r\n\t}\r\n}\r\n\r\n\r\n\tfunction loadSampleShapes(){\r\n\t/*\tApp.getShapes().loadShape(\"http://i.imgur.com/4eW8eKM.png\",\"santa\");\t//TODO promise\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/20qtZ4D.png\",\"dog1\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/AUsqSoX.png\",\"dog2\");\r\n\t\t// jsw-prototype Dropbox folder:\r\n\t\t//https://www.dropbox.com/sh/dgt3ibk8oal352h/AABZHlQ9FZP2o0I-yrFZ_D4wa?dl=0\r\n\t\t\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/4RfLKHm.png\",\"1\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/XpHGRAl.png\",\"2\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/K87ckU0.png\",\"3\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/mGDcdaQ.png\",\"4\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/sU4ORE3.png\",\"5\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/9vl9fCZ.png\",\"6\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/uKfxdmY.png\",\"7\");\t\t\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/rlrLVv4.png\",\"8\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/TlIFbNI.png\",\"9\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/qePa2Jq.png\",\"10\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/rpXEzyz.png\",\"11\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/JycC6DG.png\",\"12\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/ypppUtK.png\",\"13\");\r\n\t\tApp.getShapes().loadShape(\"http://i.imgur.com/hVo3gbz.png\",\"14\");\r\n\t\t*/\r\n\t\t//App.getShapes().loadShape(\"https://s32.postimg.org/ngjeurb05/5_1.png\",9);\t//����������� � ������ 50%\r\n\t\t//App.getShapes().loadShape(\"5.png\",9);//�� ��\r\n\r\n\t}\r\n\t\r\n\tfunction loadStub(){\r\n\t\t\r\n\t\tvar project = getProjectStub();\r\n\t\tApp.initCanvasSized(project.width, project.height);\r\n\t\t\r\n//\t\tvar turtle = getTurtleStub();\r\n//\t\tApp.addTurtle(turtle);\r\n//\t\tvar turtle2 = getTurtleStub2();\r\n//\t\tApp.addTurtle(turtle2);\r\n//\t\tvar button = getButtonStub();\r\n//\t\tApp.addButton(button);\r\n//\t\tvar userproc = getUserprocStub();\r\n//\t\tApp.initUserproc(userproc);\r\n\t\t//loadSampleShapes();\r\n\t\t\r\n\t\tApp.initProject(project);\r\n\t\tApp.initAfterRestore();\r\n\t\t\r\n\t}\r\n\t\r\n\tfunction benchmarkTurtles(){\r\n\t\tvar project = getProjectStub();\r\n\t\tApp.initProject(project);\r\n\t\t\r\n\t\tvar turtle = getTurtleStub();\t//for wait cycle measurement\r\n\t\tApp.addTurtle(turtle);\r\n\t\t\r\n\t\tvar button = getButtonStub();\r\n\t\tbutton.onClick.translatedCode = function* (globals, obj){\r\n\t\t\t\tyield* globals.userproc['benchmark']();\r\n\t\t};\r\n\t\tApp.addButton(button);\r\n\t\t\r\n\t\tfor (let i=0; i<10; i++){\r\n\t\t\tvar turtle = getNewTurtleStub();\r\n\t\t\tApp.addTurtle(turtle);\r\n\t\t}\r\n\t\t\r\n\t\tvar userproc = getUserprocStub(\r\n\t\t);\r\n\t\tApp.initUserproc(userproc);\r\n\t}\r\n\t\r\n\tfunction loadThreeWindows(){\r\n\t\tvar codeList = simpleLogoData.codeList;\t//simpleLogoData is in global 'window', added by