├── index.html alias ├── media ├── RubikExtended.otf ├── RubikExtended.ttf ├── rubiksLogoClassic.png ├── cuber-favicon-0064x0064.png └── cuber-favicon-0144x0144.png ├── index.html ├── styles └── cube.css ├── README.md └── js ├── photon.js └── cube ├── cuber.no3D.min.js └── cuber.no3D.min.js.map /index.html alias: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/index.html alias -------------------------------------------------------------------------------- /media/RubikExtended.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/media/RubikExtended.otf -------------------------------------------------------------------------------- /media/RubikExtended.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/media/RubikExtended.ttf -------------------------------------------------------------------------------- /media/rubiksLogoClassic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/media/rubiksLogoClassic.png -------------------------------------------------------------------------------- /media/cuber-favicon-0064x0064.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/media/cuber-favicon-0064x0064.png -------------------------------------------------------------------------------- /media/cuber-favicon-0144x0144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marklundin/cube/HEAD/media/cuber-favicon-0144x0144.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 29 | 30 | 31 | 32 | Cube 33 | 34 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /styles/cube.css: -------------------------------------------------------------------------------- 1 | /************/ 2 | /* */ 3 | /* Cube */ 4 | /* */ 5 | /************/ 6 | 7 | 8 | .cube { 9 | width: 100%; 10 | height: 100%; 11 | } 12 | 13 | 14 | @font-face { 15 | 16 | font-family: "RubikExtended"; 17 | src: 18 | url( "../media/RubikExtended.ttf" ) format( "truetype" ), 19 | url( "../media/RubikExtended.otf" ) format( "otf" ); 20 | font-weight: normal; 21 | font-style: normal; 22 | } 23 | 24 | 25 | /* 26 | 27 | This next bit is just for labeling a Cube's face. 28 | 29 | */ 30 | .faceLabel { 31 | 32 | display: none; 33 | position: absolute; 34 | font-size: 60px; 35 | text-align: center; 36 | font-family: "RubikExtended"; 37 | text-shadow: 0 0 24px rgba( 0, 0, 0, 0.3 ); 38 | color: #FFF; 39 | } 40 | 41 | 42 | 43 | 44 | 45 | /****************/ 46 | /* */ 47 | /* Cubelets */ 48 | /* */ 49 | /****************/ 50 | 51 | 52 | .cube .cubelet { 53 | 54 | width: 1em; 55 | height: 1em; 56 | position: absolute; 57 | box-sizing: border-box; 58 | } 59 | 60 | 61 | 62 | 63 | 64 | 65 | /*********************/ 66 | /* */ 67 | /* Cubelet Faces */ 68 | /* */ 69 | /*********************/ 70 | 71 | 72 | /* 73 | 74 | Direction-facing planes of limited size 75 | that act as containers for content. 76 | 77 | */ 78 | .cube /*.cubelet >*/ .face { 79 | 80 | position: absolute; 81 | width: 1em; 82 | height: 1em; 83 | background-color: #000; 84 | text-align: center; 85 | 86 | 87 | -webkit-backface-visibility: hidden; 88 | -moz-backface-visibility: hidden; 89 | -o-backface-visibility: hidden; 90 | backface-visibility: hidden; 91 | 92 | 93 | padding: 0.05em; 94 | -moz-box-sizing: border-box; 95 | -webkit-box-sizing: border-box; 96 | -o-box-sizing: border-box; 97 | -ms-box-sizing: border-box; 98 | box-sizing: border-box; 99 | 100 | } 101 | 102 | 103 | 104 | /* 105 | 106 | Extroverted faces have content such as a colored sticker, text, etc. 107 | They are constantly visible. Meanwhile introverted faces are not 108 | visible when the cube is an untwisted state. Some introverted walls 109 | are momentarily visible as the cube twists. 110 | 111 | */ 112 | .cube /*.cubelet >*/ .face.faceIntroverted { background-color: #000; } 113 | 114 | 115 | 116 | /* 117 | 118 | Our Cubelet faces are naturally black to match the physical Rubik's Cube. 119 | Adding or removing the "transparent" class here keeps the position and 120 | rotation integrity of the face while supporting Group.showPlastics() and 121 | Group.hidePlastics(). 122 | 123 | */ 124 | .cube /*.cubelet >*/ .face.faceTransparent { background-color: transparent; } 125 | 126 | 127 | 128 | /* 129 | 130 | Awwww.... Look at da purty colors... 131 | 132 | */ 133 | .purty .face { opacity: 0.5; } 134 | .purty .face.faceFront { background-color: #FFF; } 135 | .purty .face.faceUp { background-color: #E87000; } 136 | .purty .face.faceRight { background-color: #3D81F6; } 137 | .purty .face.faceDown { background-color: #DC422F; } 138 | .purty .face.faceLeft { background-color: #009D54; } 139 | .purty .face.faceBack { background-color: #F5B400; } 140 | /*.purty .face.faceFront { background-color: #CCC; } 141 | .purty .face.faceUp { background-color: #C30; } 142 | .purty .face.faceRight { background-color: #00A; } 143 | .purty .face.faceDown { background-color: #C00; } 144 | .purty .face.faceLeft { background-color: #070; } 145 | .purty .face.faceBack { background-color: #CB0; }*/ 146 | 147 | 148 | 149 | 150 | 151 | 152 | /****************************/ 153 | /* */ 154 | /* Cubelet Face Content */ 155 | /* */ 156 | /****************************/ 157 | 158 | 159 | /* 160 | 161 | WIREFRAMES 162 | 163 | Oddly, we cannot use borders to make our wireframes 164 | because this will cause a visible oscillation as CSS 165 | struggles to decide what gets drawn on top. 166 | Instead we use specially crafted box-shadows. 167 | 168 | */ 169 | .cube /*.cubelet > */.face > .wireframe { 170 | 171 | /*box-sizing: border-box;*/ 172 | display: none; 173 | position: absolute; 174 | width: 140px; 175 | height: 140px; 176 | background-color: rgba( 255, 255, 255, 0.05 ); 177 | } 178 | 179 | 180 | /* 181 | 182 | STICKERS 183 | 184 | About what you'd expect. The default color here 185 | is full on bright purple (which does not exist 186 | on an actual Rubik's Cube) so that one can see 187 | quickly if something's gone wrong with stickers. 188 | 189 | */ 190 | .cube .sticker { 191 | 192 | /*position: absolute;*/ 193 | 194 | width: 100%; 195 | height: 100%; 196 | background-color: #F0F; 197 | border-radius: 0.1em; 198 | text-align: center; 199 | 200 | } 201 | 202 | .cube .stickerLogo { 203 | 204 | background-image: url( "../media/rubiksLogoClassic.png" ) !important; 205 | background-size: 100% 100% !important; 206 | background-repeat: none !important; 207 | } 208 | 209 | 210 | .cube .sticker.red { background: #DC422F; } 211 | .cube .sticker.white { background: white; } 212 | .cube .sticker.blue { background: #3D81F6; } 213 | .cube .sticker.green { background: #009D54; } 214 | .cube .sticker.orange { background: #FF6C00; } 215 | .cube .sticker.yellow { background: #FDCC09; } 216 | 217 | 218 | /* 219 | 220 | CUBELET IDs 221 | 222 | Each Cubelet has a unique ID number from 0 to 26. 223 | We display these mostly for debugging purposes 224 | as the end user probably doesn't care and/or would 225 | find this superfluous info confusing. 226 | 227 | */ 228 | .cube /*.cubelet >*/ .face > .id { 229 | 230 | display: none; 231 | position: absolute; 232 | z-index: 1000; 233 | width: 90%; 234 | height: 90%; 235 | font-size: 1em; 236 | line-height: 0.9em; 237 | text-align: center; 238 | color: #000; 239 | 240 | } 241 | .cube /*.cubelet >*/ .face > .id > .underline { 242 | 243 | border-bottom: 1px solid #000; 244 | } 245 | /* 246 | 247 | We want ID numbers displayed on introverted faces to be white, 248 | but why use #FEFEFE instead of #FFF? 249 | So we can export as PDF, open up in Adobe Illustrator, select "Same Fill Color" 250 | and it will exclude our #FFF text nodes! 251 | 252 | */ 253 | .cube /*.cubelet > */.face.faceIntroverted > .id { 254 | 255 | color: #FEFEFE; 256 | } 257 | .cube /*.cubelet >*/ .face.faceIntroverted > .id > .underline { 258 | 259 | border-bottom: 1px solid #FEFEFE; 260 | } 261 | 262 | 263 | 264 | /* 265 | 266 | TEXT 267 | 268 | Formerly referred to as "Hero Text", this is the one-character 269 | display for a Cubelet face. 270 | 271 | */ 272 | .cube /*.cubelet >*/ .face > .text { 273 | 274 | 275 | display: none; 276 | position: absolute; 277 | z-index: 2000; 278 | width: 100%; 279 | height: 100%; 280 | text-align: center; 281 | color: #FFF; 282 | font-family: "RubikExtended", sans-serif; 283 | font-size: 1em; 284 | line-height: 1em; 285 | 286 | /*-webkit-backface-visibility: hidden; 287 | -moz-backface-visibility: hidden; 288 | -o-backface-visibility: hidden; 289 | backface-visibility: hidden;*/ 290 | } 291 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cuber 4 | ============================================================================== 5 | 6 | Cuber is a Rubik’s Cube simulator. 7 | 8 | 9 | 10 | 11 | Running Cuber 12 | ------------------------------------------------------------------------------ 13 | 14 | __From the desktop__ 15 | Simply drop the `index.html` file onto a Chrome browser window. 16 | 17 | __From an ad-hoc server__ 18 | From the command line type the following to create a server, where `8000` 19 | (the default) is an optional port number argument: 20 | `python -m SimpleHTTPServer 8000` 21 | 22 | __From Apache__ 23 | The file `/.htaccess` is configured to require a valid login which you will 24 | need to configure on your own server. Alternatively this file can be removed 25 | from the package entirely. 26 | 27 | 28 | 29 | 30 | Methodology 31 | ------------------------------------------------------------------------------ 32 | 33 | __Separation of state and visuals__ 34 | I wanted to keep the Cube’s internal state entirely separate and independent 35 | of the visual rendering as a way to hopefully allow for future ports to serve 36 | new and unforeseen purposes. Sometimes it makes for what seems like redundancy 37 | but I think in the long term it’ll be worth it. 38 | 39 | __Modularity__ 40 | I’ve tried to break the problem down into what amounts to Classes. I’m a 41 | big fan of Prototypal Inheritance but I’m hoping this approach—including 42 | separating these Classes into separate files—makes things clear and easy. 43 | Also it’s pretty awesome when you’re inspecting things via the console and 44 | the console can actually tell you that this particular Array holds Cubelets, 45 | for example. The bulk of the fun located in `/scripts/models/`. The app is 46 | controlled by `/scripts/models/erno.js` 47 | 48 | __Global scope and the Console__ 49 | Lambda functions are great. And namespacing components into wrapper objects 50 | can be seriously useful. But I’ve purposely (and carefully) placed a lot 51 | of important bits right into the main scope so that tinkerers may pop open 52 | Chrome’s JavaScript Console and start poking around. This also makes it easy 53 | to write bookmarklets or other hacks. 54 | 55 | __Documentation__ 56 | Through code comments I’ve tried very hard to be as clear as possible about 57 | what I’m doing and why I’m doing it. This is only partially altruism. 58 | It’s perhaps primarily so I can have some chance of understanding my own code 59 | at some future date. Ever write an app and come back to it six months later? 60 | Yea. It’s a problem. That’s why I comment so heavily. 61 | 62 | 63 | 64 | 65 | JavaScript console fun 66 | ------------------------------------------------------------------------------ 67 | 68 | __Inspection__ 69 | I’ve endeavored to make the Cube highly inspectable from both third-party 70 | scripts and by humans using the browser’s console. To get a quick sense of 71 | what’s possible try out each of the following commands. (It’s fun!) 72 | ``` 73 | cube.inspect() 74 | cube.inspect( true ) 75 | cube.front 76 | cube.front.northWest.inspect() 77 | cube.front.northWest.up.color.name 78 | ``` 79 | To understand the basic vocabulary and mapping of the Cube and Cubelets see 80 | the comments at the head of `cube.js`, `slices.js`, and `cubelets.js` within 81 | the `/scripts` folder. (Also, if your browser does not support CSS styling 82 | within the console you’re going to have a bad time.) 83 | 84 | __Manipulation__ 85 | It’s also easy to alter properties of the Cube like so: 86 | ``` 87 | cube.standing.setOpacity( 0.1 ) 88 | cube.corners.setRadius( 90 ) 89 | cube.corners.getRadius( 90 ) 90 | ``` 91 | These functions are chainable. And really, who doesn’t love chaining? 92 | ``` 93 | cube.hidePlastics().hideStickers().showWireframes().showIds() 94 | ``` 95 | If you’re hungry for more check out `groups.js` to see all the goodies. 96 | 97 | __Search__ 98 | Lurking around `groups.js` you’ll also spot some filtering functions: 99 | 100 | ``` 101 | cube.hasColors( RED, BLUE ).showIds() 102 | cube.hasId( 0 )// A Cubelet’s ID never changes. 103 | cube.hasAddress( 0 )// But its address changes when it moves. 104 | cube.hasProperty( 'address', 0 )// Equivalent to previous line. 105 | ``` 106 | And guess what—these are also chainable. (I know, right?!) 107 | ``` 108 | cube.hasColors( RED, BLUE ).hasType( 'corner' ).setRadius( 90 ) 109 | ``` 110 | 111 | __Solving__ 112 | The infrastructure for writing solvers is more or less there. Calling 113 | `cube.solve()` will set `cube.isSolving = true` and then with each run through 114 | `cube.loop()` the selected solver will be asked to assess the Cube. I’ve 115 | provided the bare beginnings of a simple layer-by-layer solver. Sadly, I only 116 | got as far as solving the Top Cross but hopefully the solver’s code comments 117 | and verbose console output can serve as a primer for you to write your own! 118 | Lagniappe: While writing the solver it seemed really helpful to fully define 119 | the idea of _orientation_ / _direction_ so I wrote a Class and some STATICs 120 | that make comparing directions a little easier. (See `directions.js` for 121 | details.) 122 | ``` 123 | FRONT.getOpposite() === BACK 124 | FRONT.neighbors 125 | FRONT.getClockwise() 126 | FRONT.getClockwise( 2 ) 127 | ``` 128 | The spacial mapping used here is defined at the head of `cubelets.js`. 129 | Whatever face you’re looking at has an inherrent ‘up’ and from that reference 130 | point you can ask what face we’d be looking at if we rotated clockwise by a 131 | 90 degree twist, for example. 132 | ``` 133 | FRONT.getUp() === UP 134 | FRONT.getClockwise() === RIGHT 135 | UP.getUp() === BACK 136 | UP.getRotation( -1, LEFT ) 137 | ``` 138 | It gets weird pretty quickly but once you’re in the correct headspace these 139 | functions become incredibly useful. Why do all this rather than hardcore 140 | matrix math? Because 42. 141 | 142 | 143 | 144 | 145 | Code typography 146 | ------------------------------------------------------------------------------ 147 | 148 | __Semicolons__ 149 | First, I only use semicolons when absolutely necessary. By definition any 150 | valid JavaScript interpreter _must_ perform automatic semicolon insertion. 151 | This means you just don’t need them. Let me repeat: YOU JUST DON’T NEED THEM. 152 | Leaving them out makes your code typographically cleaner; reduces visual 153 | clutter and noise in the signal. It’s good for your soul. 154 | 155 | __Whitespace__ 156 | I use tabs, not spaces for codeblock indentation—functions, object blocks, and 157 | so on. Tab is the only true unit of indentation. My tabs are the width of four 158 | spaces. Two is too small. Eight is just too damn wide. Within lines of code 159 | I’ll often add bits of whitespace to line up consecutive equal signs or other 160 | recurring symbols if it’s subtle and not too wonky: 161 | ``` 162 | right = 2 163 | left = 3 164 | ``` 165 | 166 | I’ll often add a space between an open-parenthesis and a token; same for 167 | between a token and close-parenthesis. Line breaks after an open bracket are 168 | also desirable. 169 | 170 | __Comments__ 171 | Two line breaks before line comments. One line break after them. Two spaces 172 | following a comment’s slashes. (One for hanging quotation marks in order to 173 | optically align the text itself.) For critical to-do’s I add two juxtaposed 174 | ampersats to both visually separate them and make them easy to search for. 175 | Just a quirk of mine. Occasionally if the situation calls for it I’ll use 176 | special “rhombus” commnents for big visual breaks. They have three horizontal 177 | spaces between slashes and text and vertical padding inside like so: 178 | ``` 179 | ///////////////// 180 | // // 181 | // Rhombus // 182 | // // 183 | ///////////////// 184 | ``` 185 | I pad these rhombus comments with four line breaks above and two below. 186 | 187 | 188 | 189 | 190 | Colophon 191 | ------------------------------------------------------------------------------ 192 | 193 | Stewart Smith + Mark Lundin 194 | Occasionally stabbed at in 2013 195 | 196 | 197 | -------------------------------------------------------------------------------- /js/photon.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Photon 3 | * http://photon.attasi.com 4 | * 5 | * Licensed under the MIT license. 6 | * Copyright 2012 Tom Giannattasio 7 | */ 8 | 9 | 10 | 11 | var Photon = { 12 | version: '0.0.3', 13 | 14 | degToRad: function(deg) { 15 | return deg * Math.PI / 180; 16 | }, 17 | 18 | radToDeg: function(rad) { 19 | return rad * 180 / Math.PI; 20 | }, 21 | 22 | getRotationVector: function(originVector, rotations) { 23 | var xVector = originVector.rotate(rotations.x, Line.create([0, 0, 0], [1, 0, 0])); 24 | var yVector = xVector.rotate(rotations.y, Line.create([0, 0, 0], [0, 1, 0])); 25 | var zVector = yVector.rotate(rotations.z, Line.create([0, 0, 0], [0, 0, 1])); 26 | return zVector; 27 | }, 28 | 29 | getTransformString: function() { 30 | if(Photon.transformString) { 31 | return Photon.transformString; 32 | } 33 | 34 | var transformString; 35 | var tests = ['transform', 'webkitTransform', 'MozTransform', 'msTransform', 'OTransform']; 36 | var element = document.createElement('div'); 37 | 38 | for(var i = 0; i < tests.length; i++) { 39 | if(element.style[tests[i]] == '') { 40 | transformString = tests[i]; 41 | } 42 | } 43 | 44 | Photon.transformString = transformString; 45 | return transformString; 46 | }, 47 | 48 | // converts transform matrix into a WebKitCSSMatrix object. 49 | // multiplies values to avoid whackification 50 | buildMatrix: function(faceTransform) { 51 | var matrix = new FirminCSSMatrix(faceTransform); 52 | 53 | matrix.m11 = matrix.m11 * 1e16; 54 | matrix.m12 = matrix.m12 * 1e16; 55 | matrix.m13 = matrix.m13 * 1e16; 56 | matrix.m14 = matrix.m14 * 1e16; 57 | 58 | matrix.m21 = matrix.m21 * 1e16; 59 | matrix.m22 = matrix.m22 * 1e16; 60 | matrix.m23 = matrix.m23 * 1e16; 61 | matrix.m24 = matrix.m24 * 1e16; 62 | 63 | matrix.m31 = matrix.m31 * 1e16; 64 | matrix.m32 = matrix.m32 * 1e16; 65 | matrix.m33 = matrix.m33 * 1e16; 66 | matrix.m34 = matrix.m34 * 1e16; 67 | 68 | matrix.m41 = matrix.m41 * 1e16; 69 | matrix.m42 = matrix.m42 * 1e16; 70 | matrix.m43 = matrix.m43 * 1e16; 71 | matrix.m44 = matrix.m44 * 1e16; 72 | 73 | return matrix; 74 | } 75 | }; 76 | 77 | 78 | 79 | Photon.Light = function(xVal, yVal, zVal) { 80 | this.moveTo(xVal || 0, yVal || 0, zVal || 100); 81 | this.calculateVector(); 82 | } 83 | 84 | Photon.Light.prototype = { 85 | moveTo: function(x, y, z) { 86 | this.x = x; 87 | this.y = y; 88 | this.z = z; 89 | this.calculateVector(); 90 | }, 91 | 92 | // covert the light coordinates into a vector 93 | calculateVector: function() { 94 | this.magnitude = Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z)); 95 | this.vector = $V([this.x / this.magnitude, this.y / this.magnitude, this.z / this.magnitude]); 96 | } 97 | } 98 | 99 | 100 | 101 | Photon.Face = function(element, maxShade, maxTint, isBackfaced) { 102 | // set properties 103 | this.element = element; 104 | this.maxShade = maxShade || .5; 105 | this.maxTint = maxTint || 0; 106 | this.isBackfaced = isBackfaced || false; 107 | 108 | // create shader element 109 | this.shaderElement = new Photon.ShaderElement(this.element); 110 | this.element.insertBefore(this.shaderElement, this.element.firstChild); 111 | 112 | this.transformString = Photon.getTransformString(); 113 | 114 | // calculate absolute rotations 115 | this.getRotations(); 116 | } 117 | 118 | Photon.Face.prototype = { 119 | getRotations: function() { 120 | // pull the transform property 121 | var faceTransform = window.getComputedStyle(this.element)[this.transformString] || 'matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)'; 122 | 123 | // convert the transform data into a matrix 124 | this.matrix = Photon.buildMatrix(faceTransform); 125 | 126 | // extract the individual transform values 127 | var faceDecomp = this.matrix.decompose(); 128 | this.rotations = { 129 | x: faceDecomp.rotate.x, 130 | y: faceDecomp.rotate.y, 131 | z: faceDecomp.rotate.z 132 | }; 133 | 134 | // set the face's vector 135 | this.vector = Photon.getRotationVector($V([0, 0, 1]), this.rotations); 136 | }, 137 | 138 | render: function(light, getNewRotations, parentRotations) { 139 | if(getNewRotations) { 140 | this.getRotations(); 141 | } 142 | 143 | // calculate the absolute vector 144 | var fullVector; 145 | if(parentRotations) { 146 | fullVector = Photon.getRotationVector(this.vector, parentRotations); 147 | } else { 148 | fullVector = this.vector; 149 | } 150 | 151 | // calculate the anglar distance from the light 152 | this.angleFrom = Photon.radToDeg(light.vector.angleFrom(fullVector)); 153 | 154 | // determine the background color of the shader element 155 | var background; 156 | 157 | // var anglePercentage = this.angleFrom / 180; 158 | var anglePercentage = this.isBackfaced ? this.angleFrom / 180 : this.angleFrom / 90; 159 | if(this.isBackfaced && anglePercentage > .5) { 160 | anglePercentage = 1 - anglePercentage; 161 | } 162 | var range = Math.abs(this.maxShade + this.maxTint); 163 | var rangedPercentage = range * anglePercentage; 164 | this.rangedPercentage = rangedPercentage; 165 | 166 | // determine whether to shade or tint 167 | if(rangedPercentage <= this.maxTint) { 168 | background = 'rgba(255, 255, 255, ' + Math.abs(this.maxTint - rangedPercentage) + ')'; 169 | } else { 170 | background = 'rgba(0, 0, 0, ' + Math.abs(rangedPercentage - this.maxTint) + ')'; 171 | } 172 | 173 | // apply the shading 174 | this.shaderElement.style.background = background; 175 | }, 176 | 177 | setMaxShade: function(value) { 178 | this.maxShade = value; 179 | }, 180 | 181 | setMaxTint: function(value) { 182 | this.maxTint = value; 183 | } 184 | }; 185 | 186 | 187 | // create the element to used for shading and tinting 188 | Photon.ShaderElement = function(parent) { 189 | var shaderElement = document.createElement('div'); 190 | shaderElement.className = 'photon-shader'; 191 | shaderElement.style.position = 'absolute'; 192 | shaderElement.style.top = '0'; 193 | shaderElement.style.left = '0'; 194 | shaderElement.style.width = window.getComputedStyle(parent).width; 195 | shaderElement.style.height = window.getComputedStyle(parent).height; 196 | 197 | return shaderElement; 198 | } 199 | 200 | 201 | // a group of faces within a single parent object 202 | Photon.FaceGroup = function(parent, faces, maxShade, maxTint, isBackfaced) { 203 | this.element = parent; 204 | this.faces = []; 205 | this.transformString = Photon.getTransformString(); 206 | 207 | var childFaces = faces; 208 | for(var i = 0; i < childFaces.length; i++) { 209 | this.faces[i] = new Photon.Face(childFaces[i], maxShade, maxTint, isBackfaced); 210 | } 211 | } 212 | 213 | Photon.FaceGroup.prototype = { 214 | getRotations: function() { 215 | var faceTransform = window.getComputedStyle(this.element)[this.transformString] || 'matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)'; 216 | 217 | this.matrix = Photon.buildMatrix(faceTransform); 218 | var faceDecomp = this.matrix.decompose(); 219 | 220 | this.rotations = { 221 | x: faceDecomp.rotate.x, 222 | y: faceDecomp.rotate.y, 223 | z: faceDecomp.rotate.z 224 | }; 225 | 226 | this.vector = Photon.getRotationVector($V([0, 0, 1]), this.rotations); 227 | }, 228 | 229 | render: function(light, getNewGroupRotations, getNewFaceRotations) { 230 | if(getNewGroupRotations) { 231 | this.getRotations(); 232 | } 233 | 234 | this.angleFrom = Photon.radToDeg(light.vector.angleFrom(this.vector)); 235 | 236 | for(var i = 0, length = this.faces.length; i < length; i++) { 237 | this.faces[i].render(light, getNewFaceRotations, this.rotations); 238 | } 239 | }, 240 | 241 | setMaxShade: function(value) { 242 | for(var i = 0; i < this.faces.length; i++) { 243 | this.faces[i].setMaxShade(value); 244 | } 245 | }, 246 | 247 | setMaxTint: function(value) { 248 | for(var i = 0; i < this.faces.length; i++) { 249 | this.faces[i].setMaxTint(value); 250 | } 251 | } 252 | }; 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | // === Sylvester === 266 | // Vector and Matrix mathematics modules for JavaScript 267 | // Copyright (c) 2007 James Coglan 268 | // 269 | // Permission is hereby granted, free of charge, to any person obtaining 270 | // a copy of this software and associated documentation files (the "Software"), 271 | // to deal in the Software without restriction, including without limitation 272 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, 273 | // and/or sell copies of the Software, and to permit persons to whom the 274 | // Software is furnished to do so, subject to the following conditions: 275 | // 276 | // The above copyright notice and this permission notice shall be included 277 | // in all copies or substantial portions of the Software. 278 | // 279 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 280 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 281 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 282 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 283 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 284 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 285 | // DEALINGS IN THE SOFTWARE. 286 | 287 | 288 | var Sylvester = { 289 | version: '0.1.3', 290 | precision: 1e-6 291 | }; 292 | 293 | 294 | 295 | function Vector() {} 296 | Vector.prototype = { 297 | 298 | // Returns the modulus ('length') of the vector 299 | modulus: function() { 300 | return Math.sqrt(this.dot(this)); 301 | }, 302 | 303 | // Returns a copy of the vector 304 | dup: function() { 305 | return Vector.create(this.elements); 306 | }, 307 | 308 | // Calls the iterator for each element of the vector in turn 309 | each: function(fn) { 310 | var n = this.elements.length, k = n, i; 311 | do { i = k - n; 312 | fn(this.elements[i], i+1); 313 | } while (--n); 314 | }, 315 | 316 | // Returns the angle between the vector and the argument (also a vector) 317 | angleFrom: function(vector) { 318 | var V = vector.elements || vector; 319 | var n = this.elements.length, k = n, i; 320 | if (n != V.length) { return null; } 321 | var dot = 0, mod1 = 0, mod2 = 0; 322 | // Work things out in parallel to save time 323 | this.each(function(x, i) { 324 | dot += x * V[i-1]; 325 | mod1 += x * x; 326 | mod2 += V[i-1] * V[i-1]; 327 | }); 328 | mod1 = Math.sqrt(mod1); mod2 = Math.sqrt(mod2); 329 | if (mod1*mod2 === 0) { return null; } 330 | var theta = dot / (mod1*mod2); 331 | if (theta < -1) { theta = -1; } 332 | if (theta > 1) { theta = 1; } 333 | return Math.acos(theta); 334 | }, 335 | 336 | // Returns the scalar product of the vector with the argument 337 | // Both vectors must have equal dimensionality 338 | dot: function(vector) { 339 | var V = vector.elements || vector; 340 | var i, product = 0, n = this.elements.length; 341 | if (n != V.length) { return null; } 342 | do { product += this.elements[n-1] * V[n-1]; } while (--n); 343 | return product; 344 | }, 345 | 346 | // Rotates the vector about the given object. The object should be a 347 | // point if the vector is 2D, and a line if it is 3D. Be careful with line directions! 348 | rotate: function(t, obj) { 349 | var V, R, x, y, z; 350 | switch (this.elements.length) { 351 | case 2: 352 | V = obj.elements || obj; 353 | if (V.length != 2) { return null; } 354 | R = Matrix.Rotation(t).elements; 355 | x = this.elements[0] - V[0]; 356 | y = this.elements[1] - V[1]; 357 | return Vector.create([ 358 | V[0] + R[0][0] * x + R[0][1] * y, 359 | V[1] + R[1][0] * x + R[1][1] * y 360 | ]); 361 | break; 362 | case 3: 363 | if (!obj.direction) { return null; } 364 | var C = obj.pointClosestTo(this).elements; 365 | R = Matrix.Rotation(t, obj.direction).elements; 366 | x = this.elements[0] - C[0]; 367 | y = this.elements[1] - C[1]; 368 | z = this.elements[2] - C[2]; 369 | return Vector.create([ 370 | C[0] + R[0][0] * x + R[0][1] * y + R[0][2] * z, 371 | C[1] + R[1][0] * x + R[1][1] * y + R[1][2] * z, 372 | C[2] + R[2][0] * x + R[2][1] * y + R[2][2] * z 373 | ]); 374 | break; 375 | default: 376 | return null; 377 | } 378 | }, 379 | 380 | // Set vector's elements from an array 381 | setElements: function(els) { 382 | this.elements = (els.elements || els).slice(); 383 | return this; 384 | } 385 | }; 386 | 387 | // Constructor function 388 | Vector.create = function(elements) { 389 | var V = new Vector(); 390 | return V.setElements(elements); 391 | }; 392 | 393 | var $V = Vector.create; 394 | 395 | 396 | 397 | function Line() {} 398 | Line.prototype = { 399 | 400 | // Returns the line's perpendicular distance from the argument, 401 | // which can be a point, a line or a plane 402 | distanceFrom: function(obj) { 403 | if (obj.normal) { return obj.distanceFrom(this); } 404 | if (obj.direction) { 405 | // obj is a line 406 | if (this.isParallelTo(obj)) { return this.distanceFrom(obj.anchor); } 407 | var N = this.direction.cross(obj.direction).toUnitVector().elements; 408 | var A = this.anchor.elements, B = obj.anchor.elements; 409 | return Math.abs((A[0] - B[0]) * N[0] + (A[1] - B[1]) * N[1] + (A[2] - B[2]) * N[2]); 410 | } else { 411 | // obj is a point 412 | var P = obj.elements || obj; 413 | var A = this.anchor.elements, D = this.direction.elements; 414 | var PA1 = P[0] - A[0], PA2 = P[1] - A[1], PA3 = (P[2] || 0) - A[2]; 415 | var modPA = Math.sqrt(PA1*PA1 + PA2*PA2 + PA3*PA3); 416 | if (modPA === 0) return 0; 417 | // Assumes direction vector is normalized 418 | var cosTheta = (PA1 * D[0] + PA2 * D[1] + PA3 * D[2]) / modPA; 419 | var sin2 = 1 - cosTheta*cosTheta; 420 | return Math.abs(modPA * Math.sqrt(sin2 < 0 ? 0 : sin2)); 421 | } 422 | }, 423 | 424 | // Returns true iff the argument is a point on the line 425 | contains: function(point) { 426 | var dist = this.distanceFrom(point); 427 | return (dist !== null && dist <= Sylvester.precision); 428 | }, 429 | 430 | // Returns the point on the line that is closest to the given point or line 431 | pointClosestTo: function(obj) { 432 | if (obj.direction) { 433 | // obj is a line 434 | if (this.intersects(obj)) { return this.intersectionWith(obj); } 435 | if (this.isParallelTo(obj)) { return null; } 436 | var D = this.direction.elements, E = obj.direction.elements; 437 | var D1 = D[0], D2 = D[1], D3 = D[2], E1 = E[0], E2 = E[1], E3 = E[2]; 438 | // Create plane containing obj and the shared normal and intersect this with it 439 | // Thank you: http://www.cgafaq.info/wiki/Line-line_distance 440 | var x = (D3 * E1 - D1 * E3), y = (D1 * E2 - D2 * E1), z = (D2 * E3 - D3 * E2); 441 | var N = Vector.create([x * E3 - y * E2, y * E1 - z * E3, z * E2 - x * E1]); 442 | var P = Plane.create(obj.anchor, N); 443 | return P.intersectionWith(this); 444 | } else { 445 | // obj is a point 446 | var P = obj.elements || obj; 447 | if (this.contains(P)) { return Vector.create(P); } 448 | var A = this.anchor.elements, D = this.direction.elements; 449 | var D1 = D[0], D2 = D[1], D3 = D[2], A1 = A[0], A2 = A[1], A3 = A[2]; 450 | var x = D1 * (P[1]-A2) - D2 * (P[0]-A1), y = D2 * ((P[2] || 0) - A3) - D3 * (P[1]-A2), 451 | z = D3 * (P[0]-A1) - D1 * ((P[2] || 0) - A3); 452 | var V = Vector.create([D2 * x - D3 * z, D3 * y - D1 * x, D1 * z - D2 * y]); 453 | var k = this.distanceFrom(P) / V.modulus(); 454 | return Vector.create([ 455 | P[0] + V.elements[0] * k, 456 | P[1] + V.elements[1] * k, 457 | (P[2] || 0) + V.elements[2] * k 458 | ]); 459 | } 460 | }, 461 | 462 | // Returns a copy of the line rotated by t radians about the given line. Works by 463 | // finding the argument's closest point to this line's anchor point (call this C) and 464 | // rotating the anchor about C. Also rotates the line's direction about the argument's. 465 | // Be careful with this - the rotation axis' direction affects the outcome! 466 | rotate: function(t, line) { 467 | // If we're working in 2D 468 | if (typeof(line.direction) == 'undefined') { line = Line.create(line.to3D(), Vector.k); } 469 | var R = Matrix.Rotation(t, line.direction).elements; 470 | var C = line.pointClosestTo(this.anchor).elements; 471 | var A = this.anchor.elements, D = this.direction.elements; 472 | var C1 = C[0], C2 = C[1], C3 = C[2], A1 = A[0], A2 = A[1], A3 = A[2]; 473 | var x = A1 - C1, y = A2 - C2, z = A3 - C3; 474 | return Line.create([ 475 | C1 + R[0][0] * x + R[0][1] * y + R[0][2] * z, 476 | C2 + R[1][0] * x + R[1][1] * y + R[1][2] * z, 477 | C3 + R[2][0] * x + R[2][1] * y + R[2][2] * z 478 | ], [ 479 | R[0][0] * D[0] + R[0][1] * D[1] + R[0][2] * D[2], 480 | R[1][0] * D[0] + R[1][1] * D[1] + R[1][2] * D[2], 481 | R[2][0] * D[0] + R[2][1] * D[1] + R[2][2] * D[2] 482 | ]); 483 | }, 484 | 485 | // Set the line's anchor point and direction. 486 | setVectors: function(anchor, direction) { 487 | // Need to do this so that line's properties are not 488 | // references to the arguments passed in 489 | anchor = Vector.create(anchor); 490 | direction = Vector.create(direction); 491 | if (anchor.elements.length == 2) {anchor.elements.push(0); } 492 | if (direction.elements.length == 2) { direction.elements.push(0); } 493 | if (anchor.elements.length > 3 || direction.elements.length > 3) { return null; } 494 | var mod = direction.modulus(); 495 | if (mod === 0) { return null; } 496 | this.anchor = anchor; 497 | this.direction = Vector.create([ 498 | direction.elements[0] / mod, 499 | direction.elements[1] / mod, 500 | direction.elements[2] / mod 501 | ]); 502 | return this; 503 | } 504 | }; 505 | 506 | // Constructor function 507 | Line.create = function(anchor, direction) { 508 | var L = new Line(); 509 | return L.setVectors(anchor, direction); 510 | }; 511 | 512 | 513 | 514 | function Matrix() {} 515 | Matrix.prototype = { 516 | // Set the matrix's elements from an array. If the argument passed 517 | // is a vector, the resulting matrix will be a single column. 518 | setElements: function(els) { 519 | var i, elements = els.elements || els; 520 | if (typeof(elements[0][0]) != 'undefined') { 521 | var ni = elements.length, ki = ni, nj, kj, j; 522 | this.elements = []; 523 | do { i = ki - ni; 524 | nj = elements[i].length; kj = nj; 525 | this.elements[i] = []; 526 | do { j = kj - nj; 527 | this.elements[i][j] = elements[i][j]; 528 | } while (--nj); 529 | } while(--ni); 530 | return this; 531 | } 532 | var n = elements.length, k = n; 533 | this.elements = []; 534 | do { i = k - n; 535 | this.elements.push([elements[i]]); 536 | } while (--n); 537 | return this; 538 | } 539 | }; 540 | 541 | // Constructor function 542 | Matrix.create = function(elements) { 543 | var M = new Matrix(); 544 | return M.setElements(elements); 545 | }; 546 | 547 | Matrix.Rotation = function(theta, a) { 548 | if (!a) { 549 | return Matrix.create([ 550 | [Math.cos(theta), -Math.sin(theta)], 551 | [Math.sin(theta), Math.cos(theta)] 552 | ]); 553 | } 554 | var axis = a.dup(); 555 | if (axis.elements.length != 3) { return null; } 556 | var mod = axis.modulus(); 557 | var x = axis.elements[0]/mod, y = axis.elements[1]/mod, z = axis.elements[2]/mod; 558 | var s = Math.sin(theta), c = Math.cos(theta), t = 1 - c; 559 | // Formula derived here: http://www.gamedev.net/reference/articles/article1199.asp 560 | // That proof rotates the co-ordinate system so theta 561 | // becomes -theta and sin becomes -sin here. 562 | return Matrix.create([ 563 | [ t*x*x + c, t*x*y - s*z, t*x*z + s*y ], 564 | [ t*x*y + s*z, t*y*y + c, t*y*z - s*x ], 565 | [ t*x*z - s*y, t*y*z + s*x, t*z*z + c ] 566 | ]); 567 | }; 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | /** 582 | * class FirminCSSMatrix 583 | * 584 | * The [[FirminCSSMatrix]] class is a concrete implementation of the 585 | * `CSSMatrix` interface defined in the [CSS 2D Transforms][2d] and 586 | * [CSS 3D Transforms][3d] Module specifications. 587 | * 588 | * [2d]: http://www.w3.org/TR/css3-2d-transforms/ 589 | * [3d]: http://www.w3.org/TR/css3-3d-transforms/ 590 | * 591 | * The implementation was largely copied from the `WebKitCSSMatrix` class, and 592 | * the supparting maths libraries in the [WebKit][webkit] project. This is one 593 | * reason why much of the code looks more like C++ than JavaScript. 594 | * 595 | * [webkit]: http://webkit.org/ 596 | * 597 | * Its API is a superset of that provided by `WebKitCSSMatrix`, largely 598 | * because various pieces of supporting code have been added as instance 599 | * methods rather than pollute the global namespace. Examples of these include 600 | * [[FirminCSSMatrix#isAffine]], [[FirminCSSMatrix#isIdentityOrTranslation]] 601 | * and [[FirminCSSMatrix#adjoint]]. 602 | **/ 603 | 604 | /** 605 | * new FirminCSSMatrix(domstr) 606 | * - domstr (String): a string representation of a 2D or 3D transform matrix 607 | * in the form given by the CSS transform property, i.e. just like the 608 | * output from [[FirminCSSMatrix#toString]]. 609 | **/ 610 | FirminCSSMatrix = function(domstr) { 611 | this.m11 = this.m22 = this.m33 = this.m44 = 1; 612 | 613 | this.m12 = this.m13 = this.m14 = 614 | this.m21 = this.m23 = this.m24 = 615 | this.m31 = this.m32 = this.m34 = 616 | this.m41 = this.m42 = this.m43 = 0; 617 | 618 | if (typeof domstr == "string") { 619 | this.setMatrixValue(domstr); 620 | } 621 | }; 622 | 623 | /** 624 | * FirminCSSMatrix.displayName = "FirminCSSMatrix" 625 | **/ 626 | FirminCSSMatrix.displayName = "FirminCSSMatrix"; 627 | 628 | /** 629 | * FirminCSSMatrix.degreesToRadians(angle) -> Number 630 | * - angle (Number): an angle in degrees. 631 | * 632 | * Converts angles in degrees, which are used by the external API, to angles 633 | * in radians used in internal calculations. 634 | **/ 635 | FirminCSSMatrix.degreesToRadians = function(angle) { 636 | return angle * Math.PI / 180; 637 | }; 638 | 639 | /** 640 | * FirminCSSMatrix#isAffine() -> Boolean 641 | * 642 | * Determines whether the matrix is affine. 643 | **/ 644 | FirminCSSMatrix.prototype.isAffine = function() { 645 | return this.m13 === 0 && this.m14 === 0 && 646 | this.m23 === 0 && this.m24 === 0 && 647 | this.m31 === 0 && this.m32 === 0 && 648 | this.m33 === 1 && this.m34 === 0 && 649 | this.m43 === 0 && this.m44 === 1; 650 | }; 651 | 652 | 653 | 654 | /** 655 | * FirminCSSMatrix#setMatrixValue(domstr) -> undefined 656 | * - domstr (String): a string representation of a 2D or 3D transform matrix 657 | * in the form given by the CSS transform property, i.e. just like the 658 | * output from [[FirminCSSMatrix#toString]]. 659 | * 660 | * Sets the matrix values using a string representation, such as that produced 661 | * by the [[FirminCSSMatrix#toString]] method. 662 | **/ 663 | FirminCSSMatrix.prototype.setMatrixValue = function(domstr) { 664 | domstr = domstr.trim(); 665 | var mstr = domstr.match(/^matrix(3d)?\(\s*(.+)\s*\)$/), 666 | is3d, chunks, len, points, i, chunk; 667 | 668 | if (!mstr) return; 669 | 670 | is3d = !!mstr[1]; 671 | chunks = mstr[2].split(/\s*,\s*/); 672 | len = chunks.length; 673 | points = new Array(len); 674 | 675 | if ((is3d && len !== 16) || !(is3d || len === 6)) return; 676 | 677 | for (i = 0; i < len; i++) { 678 | chunk = chunks[i]; 679 | if (chunk.match(/^-?\d+(\.\d+)?$/)) { 680 | points[i] = parseFloat(chunk); 681 | } else return; 682 | } 683 | 684 | for (i = 0; i < len; i++) { 685 | point = is3d ? 686 | ("m" + (Math.floor(i / 4) + 1)) + (i % 4 + 1) : 687 | String.fromCharCode(i + 97); // ASCII char 97 == 'a' 688 | this[point] = points[i]; 689 | } 690 | }; 691 | 692 | /** 693 | * FirminCSSMatrix#toString() -> String 694 | * 695 | * Returns a string representation of the matrix. 696 | **/ 697 | FirminCSSMatrix.prototype.toString = function() { 698 | var self = this, points, prefix; 699 | 700 | if (this.isAffine()) { 701 | prefix = "matrix("; 702 | points = ["a", "b", "c", "d", "e", "f"]; 703 | } else { 704 | prefix = "matrix3d("; 705 | points = ["m11", "m12", "m13", "m14", 706 | "m21", "m22", "m23", "m24", 707 | "m31", "m32", "m33", "m34", 708 | "m41", "m42", "m43", "m44"]; 709 | } 710 | 711 | return prefix + points.map(function(p) { 712 | return self[p].toFixed(6); 713 | }).join(", ") + ")"; 714 | }; 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | /* 730 | * @preserve Morf v0.1.5 731 | * http://www.joelambert.co.uk/morf 732 | * 733 | * Copyright 2011, Joe Lambert. 734 | * Free to use under the MIT license. 735 | * http://www.opensource.org/licenses/mit-license.php 736 | */ 737 | 738 | var CSSMatrixDecomposed = function(obj) { 739 | obj === undefined ? obj = {} : null; 740 | var components = {perspective: null, translate: null, skew: null, scale: null, rotate: null}; 741 | 742 | for(var i in components) 743 | this[i] = obj[i] ? obj[i] : new Vector4(); 744 | 745 | /** 746 | * Tween between two decomposed matrices 747 | * @param {CSSMatrixDecomposed} dm The destination decomposed matrix 748 | * @param {float} progress A float value between 0-1, representing the percentage of completion 749 | * @param {function} fn An easing function following the prototype function(pos){} 750 | * @author Joe Lambert 751 | * @returns {WebKitCSSMatrix} A new matrix for the tweened state 752 | */ 753 | 754 | this.tween = function(dm, progress, fn) { 755 | if(fn === undefined) 756 | fn = function(pos) {return pos;}; // Default to a linear easing 757 | 758 | if(!dm) 759 | dm = new CSSMatrixDecomposed(new FirminCSSMatrix().decompose()); 760 | 761 | var r = new CSSMatrixDecomposed(), 762 | i = index = null, 763 | trans = ''; 764 | 765 | progress = fn(progress); 766 | 767 | for(index in components) 768 | for(i in {x:'x', y:'y', z:'z', w:'w'}) 769 | r[index][i] = (this[index][i] + (dm[index][i] - this[index][i]) * progress ).toFixed(5); 770 | 771 | trans = 'matrix3d(1,0,0,0, 0,1,0,0, 0,0,1,0, '+r.perspective.x+', '+r.perspective.y+', '+r.perspective.z+', '+r.perspective.w+') ' + 772 | 'translate3d('+r.translate.x+'px, '+r.translate.y+'px, '+r.translate.y+'px) ' + 773 | 'rotateX('+r.rotate.x+'rad) rotateY('+r.rotate.y+'rad) rotateZ('+r.rotate.z+'rad) ' + 774 | 'matrix3d(1,0,0,0, 0,1,0,0, 0,'+r.skew.z+',1,0, 0,0,0,1) ' + 775 | 'matrix3d(1,0,0,0, 0,1,0,0, '+r.skew.y+',0,1,0, 0,0,0,1) ' + 776 | 'matrix3d(1,0,0,0, '+r.skew.x+',1,0,0, 0,0,1,0, 0,0,0,1) ' + 777 | 'scale3d('+r.scale.x+', '+r.scale.y+', '+r.scale.z+')'; 778 | 779 | try { r = new FirminCSSMatrix(trans); return r; } 780 | catch(e) { console.error('Invalid matrix string: '+trans); return '' }; 781 | }; 782 | }; 783 | 784 | var Vector4 = function(x, y, z, w) 785 | { 786 | this.x = x ? x : 0; 787 | this.y = y ? y : 0; 788 | this.z = z ? z : 0; 789 | this.w = w ? w : 0; 790 | 791 | 792 | /** 793 | * Ensure that values are not undefined 794 | * @author Joe Lambert 795 | * @returns null 796 | */ 797 | 798 | this.checkValues = function() { 799 | this.x = this.x ? this.x : 0; 800 | this.y = this.y ? this.y : 0; 801 | this.z = this.z ? this.z : 0; 802 | this.w = this.w ? this.w : 0; 803 | }; 804 | 805 | 806 | /** 807 | * Get the length of the vector 808 | * @author Joe Lambert 809 | * @returns {float} 810 | */ 811 | 812 | this.length = function() { 813 | this.checkValues(); 814 | return Math.sqrt(this.x*this.x + this.y*this.y + this.z*this.z); 815 | }; 816 | 817 | 818 | /** 819 | * Get a normalised representation of the vector 820 | * @author Joe Lambert 821 | * @returns {Vector4} 822 | */ 823 | 824 | this.normalise = function() { 825 | var len = this.length(), 826 | v = new Vector4(this.x / len, this.y / len, this.z / len); 827 | 828 | return v; 829 | }; 830 | 831 | 832 | /** 833 | * Vector Dot-Product 834 | * @param {Vector4} v The second vector to apply the product to 835 | * @author Joe Lambert 836 | * @returns {float} The Dot-Product of this and v. 837 | */ 838 | 839 | this.dot = function(v) { 840 | return this.x*v.x + this.y*v.y + this.z*v.z + this.w*v.w; 841 | }; 842 | 843 | 844 | /** 845 | * Vector Cross-Product 846 | * @param {Vector4} v The second vector to apply the product to 847 | * @author Joe Lambert 848 | * @returns {Vector4} The Cross-Product of this and v. 849 | */ 850 | 851 | this.cross = function(v) { 852 | return new Vector4(this.y*v.z - this.z*v.y, this.z*v.x - this.x*v.z, this.x*v.y - this.y*v.x); 853 | }; 854 | 855 | 856 | /** 857 | * Helper function required for matrix decomposition 858 | * A Javascript implementation of pseudo code available from http://www.w3.org/TR/css3-2d-transforms/#matrix-decomposition 859 | * @param {Vector4} aPoint A 3D point 860 | * @param {float} ascl 861 | * @param {float} bscl 862 | * @author Joe Lambert 863 | * @returns {Vector4} 864 | */ 865 | 866 | this.combine = function(aPoint, ascl, bscl) { 867 | return new Vector4( (ascl * this.x) + (bscl * aPoint.x), 868 | (ascl * this.y) + (bscl * aPoint.y), 869 | (ascl * this.z) + (bscl * aPoint.z) ); 870 | } 871 | }; 872 | 873 | FirminCSSMatrix.prototype.determinant = function() { 874 | return this.m14 * this.m23 * this.m32 * this.m41-this.m13 * this.m24 * this.m32 * this.m41 - 875 | this.m14 * this.m22 * this.m33 * this.m41+this.m12 * this.m24 * this.m33 * this.m41 + 876 | this.m13 * this.m22 * this.m34 * this.m41-this.m12 * this.m23 * this.m34 * this.m41 - 877 | this.m14 * this.m23 * this.m31 * this.m42+this.m13 * this.m24 * this.m31 * this.m42 + 878 | this.m14 * this.m21 * this.m33 * this.m42-this.m11 * this.m24 * this.m33 * this.m42 - 879 | this.m13 * this.m21 * this.m34 * this.m42+this.m11 * this.m23 * this.m34 * this.m42 + 880 | this.m14 * this.m22 * this.m31 * this.m43-this.m12 * this.m24 * this.m31 * this.m43 - 881 | this.m14 * this.m21 * this.m32 * this.m43+this.m11 * this.m24 * this.m32 * this.m43 + 882 | this.m12 * this.m21 * this.m34 * this.m43-this.m11 * this.m22 * this.m34 * this.m43 - 883 | this.m13 * this.m22 * this.m31 * this.m44+this.m12 * this.m23 * this.m31 * this.m44 + 884 | this.m13 * this.m21 * this.m32 * this.m44-this.m11 * this.m23 * this.m32 * this.m44 - 885 | this.m12 * this.m21 * this.m33 * this.m44+this.m11 * this.m22 * this.m33 * this.m44; 886 | }; 887 | 888 | FirminCSSMatrix.prototype.decompose = function() { 889 | var matrix = new FirminCSSMatrix(this.toString()), 890 | perspectiveMatrix = rightHandSide = inversePerspectiveMatrix = transposedInversePerspectiveMatrix = 891 | perspective = translate = row = i = scale = skew = pdum3 = rotate = null; 892 | 893 | if (matrix.m33 == 0) 894 | return new CSSMatrixDecomposed(new FirminCSSMatrix().decompose()); // Return the identity matrix 895 | 896 | // Normalize the matrix. 897 | for (i = 1; i <= 4; i++) 898 | for (j = 1; j <= 4; j++) 899 | matrix['m'+i+j] /= matrix.m44; 900 | 901 | // perspectiveMatrix is used to solve for perspective, but it also provides 902 | // an easy way to test for singularity of the upper 3x3 component. 903 | perspectiveMatrix = matrix; 904 | 905 | for (i = 1; i <= 3; i++) 906 | perspectiveMatrix['m'+i+'4'] = 0; 907 | 908 | perspectiveMatrix.m44 = 1; 909 | 910 | if (perspectiveMatrix.determinant() == 0) 911 | return new CSSMatrixDecomposed(new FirminCSSMatrix().decompose()); // Return the identity matrix 912 | 913 | // First, isolate perspective. 914 | if (matrix.m14 != 0 || matrix.m24 != 0 || matrix.m34 != 0) 915 | { 916 | // rightHandSide is the right hand side of the equation. 917 | rightHandSide = new Vector4(matrix.m14, matrix.m24, matrix.m34, matrix.m44); 918 | 919 | // Solve the equation by inverting perspectiveMatrix and multiplying 920 | // rightHandSide by the inverse. 921 | inversePerspectiveMatrix = perspectiveMatrix.inverse(); 922 | transposedInversePerspectiveMatrix = inversePerspectiveMatrix.transpose(); 923 | perspective = transposedInversePerspectiveMatrix.transformVector(rightHandSide); 924 | 925 | // Clear the perspective partition 926 | matrix.m14 = matrix.m24 = matrix.m34 = 0; 927 | matrix.m44 = 1; 928 | } 929 | else 930 | { 931 | // No perspective. 932 | perspective = new Vector4(0,0,0,1); 933 | } 934 | 935 | // Next take care of translation 936 | translate = new Vector4(matrix.m41, matrix.m42, matrix.m43); 937 | 938 | matrix.m41 = 0; 939 | matrix.m42 = 0; 940 | matrix.m43 = 0; 941 | 942 | // Now get scale and shear. 'row' is a 3 element array of 3 component vectors 943 | row = [ 944 | new Vector4(), new Vector4(), new Vector4() 945 | ]; 946 | 947 | for (i = 1; i <= 3; i++) 948 | { 949 | row[i-1].x = matrix['m'+i+'1']; 950 | row[i-1].y = matrix['m'+i+'2']; 951 | row[i-1].z = matrix['m'+i+'3']; 952 | } 953 | 954 | // Compute X scale factor and normalize first row. 955 | scale = new Vector4(); 956 | skew = new Vector4(); 957 | 958 | scale.x = row[0].length(); 959 | row[0] = row[0].normalise(); 960 | 961 | // Compute XY shear factor and make 2nd row orthogonal to 1st. 962 | skew.x = row[0].dot(row[1]); 963 | row[1] = row[1].combine(row[0], 1.0, -skew.x); 964 | 965 | // Now, compute Y scale and normalize 2nd row. 966 | scale.y = row[1].length(); 967 | row[1] = row[1].normalise(); 968 | skew.x /= scale.y; 969 | 970 | // Compute XZ and YZ shears, orthogonalize 3rd row 971 | skew.y = row[0].dot(row[2]); 972 | row[2] = row[2].combine(row[0], 1.0, -skew.y); 973 | skew.z = row[1].dot(row[2]); 974 | row[2] = row[2].combine(row[1], 1.0, -skew.z); 975 | 976 | // Next, get Z scale and normalize 3rd row. 977 | scale.z = row[2].length(); 978 | row[2] = row[2].normalise(); 979 | skew.y /= scale.z; 980 | skew.y /= scale.z; 981 | 982 | // At this point, the matrix (in rows) is orthonormal. 983 | // Check for a coordinate system flip. If the determinant 984 | // is -1, then negate the matrix and the scaling factors. 985 | pdum3 = row[1].cross(row[2]) 986 | if (row[0].dot(pdum3) < 0) 987 | { 988 | for (i = 0; i < 3; i++) 989 | { 990 | scale.x *= -1; 991 | row[i].x *= -1; 992 | row[i].y *= -1; 993 | row[i].z *= -1; 994 | } 995 | } 996 | 997 | // Now, get the rotations out 998 | rotate = new Vector4(); 999 | rotate.y = Math.asin(-row[0].z); 1000 | if (Math.cos(rotate.y) != 0) 1001 | { 1002 | rotate.x = Math.atan2(row[1].z, row[2].z); 1003 | rotate.z = Math.atan2(row[0].y, row[0].x); 1004 | } 1005 | else 1006 | { 1007 | rotate.x = Math.atan2(-row[2].x, row[1].y); 1008 | rotate.z = 0; 1009 | } 1010 | 1011 | return new CSSMatrixDecomposed({ 1012 | perspective: perspective, 1013 | translate: translate, 1014 | skew: skew, 1015 | scale: scale, 1016 | rotate: rotate 1017 | }); 1018 | }; -------------------------------------------------------------------------------- /js/cube/cuber.no3D.min.js: -------------------------------------------------------------------------------- 1 | /*The MIT License 2 | 3 | Copyright © 2010-2014 three.js authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | */ 23 | 24 | // cube.js 25 | (function(){ 26 | void 0===Date.now&&(Date.now=function(){return(new Date).valueOf()}); 27 | var TWEEN=TWEEN||function(){var a=[];return{REVISION:"12",getAll:function(){return a},removeAll:function(){a=[]},add:function(b){a.push(b)},remove:function(b){b=a.indexOf(b);-1!==b&&a.splice(b,1)},update:function(b){if(0===a.length)return!1;var c=0;for(b=void 0!==b?b:"undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();c(a*=2)?0.5*a*a:-0.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*a:0.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return 1>(a*=2)?0.5*a*a*a*a:-0.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a* 33 | a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*a*a*a:0.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return 0.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:1>(a*=2)?0.5*Math.pow(1024,a-1):0.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1- 34 | Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return 1>(a*=2)?-0.5*(Math.sqrt(1-a*a)-1):0.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=0.1;if(0===a)return 0;if(1===a)return 1;!c||1>c?(c=1,b=0.1):b=0.4*Math.asin(1/c)/(2*Math.PI);return-(c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/0.4))},Out:function(a){var b,c=0.1;if(0===a)return 0;if(1===a)return 1;!c||1>c?(c=1,b=0.1):b=0.4*Math.asin(1/c)/(2*Math.PI);return c*Math.pow(2,-10*a)*Math.sin(2*(a- 35 | b)*Math.PI/0.4)+1},InOut:function(a){var b,c=0.1;if(0===a)return 0;if(1===a)return 1;!c||1>c?(c=1,b=0.1):b=0.4*Math.asin(1/c)/(2*Math.PI);return 1>(a*=2)?-0.5*c*Math.pow(2,10*(a-=1))*Math.sin(2*(a-b)*Math.PI/0.4):c*Math.pow(2,-10*(a-=1))*Math.sin(2*(a-b)*Math.PI/0.4)*0.5+1}},Back:{In:function(a){return a*a*(2.70158*a-1.70158)},Out:function(a){return--a*a*(2.70158*a+1.70158)+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*(3.5949095*a-2.5949095):0.5*((a-=2)*a*(3.5949095*a+2.5949095)+2)}},Bounce:{In:function(a){return 1- 36 | TWEEN.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375},InOut:function(a){return 0.5>a?0.5*TWEEN.Easing.Bounce.In(2*a):0.5*TWEEN.Easing.Bounce.Out(2*a-1)+0.5}}}; 37 | TWEEN.Interpolation={Linear:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d),f=TWEEN.Interpolation.Utils.Linear;return 0>b?f(a[0],a[1],d):1c?c:e+1],d-e)},Bezier:function(a,b){var c=0,d=a.length-1,e=Math.pow,f=TWEEN.Interpolation.Utils.Bernstein,h;for(h=0;h<=d;h++)c+=e(1-b,d-h)*e(b,h)*a[h]*f(d,h);return c},CatmullRom:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d),f=TWEEN.Interpolation.Utils.CatmullRom;return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),f(a[(e- 38 | 1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(f(a[0],a[0],a[1],a[1],-d)-a[0]):1Math.abs(a)?0:a},m=function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Euler,d=new THREE.Quaternion;c._quaternion=d;d._euler=c;return function(e){e.decompose(a,d,b);return"translate3d(-50%,-50%,0) translate3d("+g(a.x)+"px, "+g(a.y)+"px, "+g(a.z)+"px) rotateX("+g(c.x)+"rad) rotateY("+g(c.y)+ 42 | "rad) rotateZ("+g(c.z)+"rad) scale3d("+g(b.x)+", "+g(-b.y)+", "+g(b.z)+")"}}(),p=function(a,b){if(a instanceof THREE.CSS3DObject){var c;a instanceof THREE.CSS3DSprite?(e.copy(b.matrixWorldInverse),e.transpose(),e.copyPosition(a.matrixWorld),e.scale(a.scale),e.elements[3]=0,e.elements[7]=0,e.elements[11]=0,e.elements[15]=1,c=m(e)):c=m(a.matrixWorld);var d=a.element;d.style.WebkitTransformStyle="preserve-3d";d.style.MozTransformStyle="preserve-3d";d.style.oTransformStyle="preserve-3d";d.style.transformStyle= 43 | "preserve-3d";d.style.WebkitTransform=c;d.style.MozTransform=c;d.style.oTransform=c;d.style.transform=c;d.parentNode!==h&&h.appendChild(d)}c=0;for(d=a.children.length;cb&&(c=c.substr(-1*b));if(0a&&(c=c.substr(0,c.length+ 49 | a));return c},justifyLeft:function(a){for(var b=this;b.lengthb.length;)b="0"+b;c+="\\u"+b}return c}});ERNO.extend(Array.prototype,{distanceTo:function(a){var b,c=0;0"+this[a]+"");return b+""},toText:function(a){var b,c,d;a=_.cascade(a,0);c="\n"+"\t".multiply(a);d="";for(b= 53 | 0;bd&&this.neighbors[d]!==b;d++);return this.neighbors[d.add(c*a).modulo(4)]};ERNO.Direction.prototype.getClockwise=function(a,b){return this.getRotation(1,a,b)};ERNO.Direction.prototype.getAnticlockwise=function(a,b){return this.getRotation(-1,a,b)}; 59 | ERNO.Direction.prototype.getDirection=function(a,b){return this.getRotation(1,b,a.id-1)};ERNO.Direction.prototype.getUp=function(a){return this.getDirection(ERNO.Direction.UP,a)};ERNO.Direction.prototype.getRight=function(a){return this.getDirection(ERNO.Direction.RIGHT,a)};ERNO.Direction.prototype.getDown=function(a){return this.getDirection(ERNO.Direction.DOWN,a)};ERNO.Direction.prototype.getLeft=function(a){return this.getDirection(ERNO.Direction.LEFT,a)};ERNO.Direction.prototype.getOpposite=function(){return this.opposite}; 60 | ERNO.Direction.FRONT=new ERNO.Direction(0,"front",new THREE.Vector3(0,0,1));ERNO.Direction.UP=new ERNO.Direction(1,"up",new THREE.Vector3(0,1,0));ERNO.Direction.RIGHT=new ERNO.Direction(2,"right",new THREE.Vector3(1,0,0));ERNO.Direction.DOWN=new ERNO.Direction(3,"down",new THREE.Vector3(0,-1,0));ERNO.Direction.LEFT=new ERNO.Direction(4,"left",new THREE.Vector3(-1,0,0));ERNO.Direction.BACK=new ERNO.Direction(5,"back",new THREE.Vector3(0,0,-1)); 61 | ERNO.Direction.FRONT.setRelationships(ERNO.Direction.UP,ERNO.Direction.RIGHT,ERNO.Direction.DOWN,ERNO.Direction.LEFT,ERNO.Direction.BACK);ERNO.Direction.UP.setRelationships(ERNO.Direction.BACK,ERNO.Direction.RIGHT,ERNO.Direction.FRONT,ERNO.Direction.LEFT,ERNO.Direction.DOWN);ERNO.Direction.RIGHT.setRelationships(ERNO.Direction.UP,ERNO.Direction.BACK,ERNO.Direction.DOWN,ERNO.Direction.FRONT,ERNO.Direction.LEFT); 62 | ERNO.Direction.DOWN.setRelationships(ERNO.Direction.FRONT,ERNO.Direction.RIGHT,ERNO.Direction.BACK,ERNO.Direction.LEFT,ERNO.Direction.UP);ERNO.Direction.LEFT.setRelationships(ERNO.Direction.UP,ERNO.Direction.FRONT,ERNO.Direction.DOWN,ERNO.Direction.BACK,ERNO.Direction.RIGHT);ERNO.Direction.BACK.setRelationships(ERNO.Direction.UP,ERNO.Direction.LEFT,ERNO.Direction.DOWN,ERNO.Direction.RIGHT,ERNO.Direction.FRONT);ERNO.Queue=function(a){void 0!==a&&a instanceof Function&&(this.validate=a);this.history=[];this.useHistory=!0;this.future=[];this.isReady=!0;this.isLooping=!1};ERNO.Queue.prototype.add=function(){var a=Array.prototype.slice.call(arguments);void 0!==this.validate&&this.validate instanceof Function&&(a=this.validate(a));a instanceof Array&&a.forEach(function(a){this.future.push(a)}.bind(this));return this.future}; 63 | ERNO.Queue.prototype.remove=function(){var a=Array.prototype.slice.call(arguments);a instanceof Array&&a.forEach(function(a){this.future=this.future.filter(function(c){return c!=a})}.bind(this));return this.future};ERNO.Queue.prototype.purge=function(){var a=Array.prototype.slice.call(arguments);a instanceof Array&&a.forEach(function(a){this.history=this.history.filter(function(c){return c!=a})}.bind(this));return this.history}; 64 | ERNO.Queue.prototype.empty=function(a){this.future=[];a&&(this.history=[])};ERNO.Queue.prototype.do=function(){if(this.future.length){var a=this.future.shift();this.useHistory&&this.history.push(a);return a}this.isLooping&&(this.future=this.history.slice(),this.history=[])};ERNO.Queue.prototype.undo=function(){if(this.history.length){var a=this.history.pop();this.future.unshift(a);return a}};ERNO.Queue.prototype.redo=function(){return this.do()};ERNO.Twist=function(a,b){a&&this.set(a,b)}; 65 | ERNO.Twist.prototype.set=function(a,b){var c={X:"Cube on X",L:"Left face",M:"Middle slice",R:"Right face",Y:"Cube on Y",U:"Up face",E:"Equator slice",D:"Down face",Z:"Cube on Z",F:"Front face",S:"Standing slice",B:"Back face"}[a.toUpperCase()];if(void 0!==c){void 0!=b&&0>b&&(a=a.invert(),b=b.absolute());var d=0,e="unwise";a===a.toUpperCase()?(d=1,e="clockwise"):a===a.toLowerCase()&&(d=-1,e="anticlockwise");this.command=a;this.group=c;this.degrees=b;this.vector=d;this.wise=e;this.isShuffle=!1;this.getInverse= 66 | function(){return new ERNO.Twist(a.invert(),b)}}else return!1};ERNO.Twist.prototype.equals=function(a){return this.command===a.command&&this.degrees===a.degrees};ERNO.Twist.prototype.copy=function(a){this.command=a.command;this.group=a.group;this.degrees=a.degrees;this.vector=a.vector;this.wise=a.wise;this.isShuffle=a.isShuffle;return this}; 67 | ERNO.Twist.validate=function(){var a=Array.prototype.slice.call(arguments),b,c,d,e,f,h;for(c=0;cb;b++)d=c[b]||ERNO.COLORLESS,this.faces[b]={},this.faces[b].id=b,this.faces[b].color= 69 | d,this.faces[b].normal=ERNO.Direction.getNameById(b),this.faces[b].isIntrovert=d===ERNO.COLORLESS,d!==ERNO.COLORLESS&&a++;this.type=["core","center","edge","corner"][a];this.front=this.faces[0];this.up=this.faces[1];this.right=this.faces[2];this.down=this.faces[3];this.left=this.faces[4];this.back=this.faces[5];this.colors=(this.faces[0].color?this.faces[0].color.initial:"-")+(this.faces[1].color?this.faces[1].color.initial:"-")+(this.faces[2].color?this.faces[2].color.initial:"-")+(this.faces[3].color? 70 | this.faces[3].color.initial:"-")+(this.faces[4].color?this.faces[4].color.initial:"-")+(this.faces[5].color?this.faces[5].color.initial:"-");this.isStickerCubelet=this.front.color&&"white"===this.front.color.name&&"center"===this.type;this.isTweening=!0;this.isTweening=this.isEngagedZ=this.isEngagedY=this.isEngagedX=!1;this.opacity=1;this.radius=0};ERNO.Cubelet.prototype=Object.create(THREE.Object3D.prototype); 71 | ERNO.extend(ERNO.Cubelet.prototype,{setAddress:function(a){this.address=a||0;this.addressX=a.modulo(3).subtract(1);this.addressY=-1*a.modulo(9).divide(3).roundDown().subtract(1);this.addressZ=-1*a.divide(9).roundDown().subtract(1)},hasColor:function(a){var b,c,d=_.hexToRgb(a.hex);for(a=0;6>a;a++)if(c=_.hexToRgb(this.faces[a].color.hex),c.r===d.r&&c.g===d.g&&c.b===d.b){b=a;break}return void 0!==b?"front up right down left back".split(" ")[b]:!1},hasColors:function(){var a=this,b=!0;Array.prototype.slice.call(arguments).forEach(function(c){b= 72 | b&&!!a.hasColor(c)});return b},getRadius:function(){return this.radius},setRadius:function(a,b){if(!1===this.isTweening&&(a=a||0,void 0===this.radius&&(this.radius=0),this.radius!==a)){this.isTweening=!0;var c=(this.radius-a).absolute(),d={radius:this.radius};(new TWEEN.Tween(d)).to({radius:a},c).easing(TWEEN.Easing.Quartic.Out).onUpdate(function(){this.position.set(this.addressX.multiply(this.size+d.radius)+0.2,this.addressY.multiply(this.size+d.radius)+0.2,this.addressZ.multiply(this.size+d.radius)+ 73 | 0.2);this.updateMatrix();this.matrixSlice.copy(this.matrix);this.radius=d.radius}.bind(this)).onComplete(function(){this.isTweening=!1;this.position.set(this.addressX.multiply(this.size+d.radius)+0.2,this.addressY.multiply(this.size+d.radius)+0.2,this.addressZ.multiply(this.size+d.radius)+0.2);this.updateMatrix();this.matrixSlice.copy(this.matrix);this.radius=d.radius;b instanceof Function&&b()}.bind(this)).start(this.cube.time)}}});ERNO.Group=function(){this.cubelets=[];this.add(Array.prototype.slice.call(arguments))};ERNO.extend(ERNO.Group.prototype,THREE.EventDispatcher.prototype); 74 | ERNO.extend(ERNO.Group.prototype,{add:function(){var a=this;Array.prototype.slice.call(arguments).forEach(function(b){b instanceof ERNO.Group&&(b=b.cubelets);b instanceof Array?a.add.apply(a,b):a.cubelets.push(b)});return this},remove:function(a){a instanceof ERNO.Group&&(a=a.cubelets);if(a instanceof Array){var b=this;a.forEach(function(a){b.remove(a)})}for(var c=this.cubelets.length;0c;c++)if(this.origin.faces[c].color&&this.origin.faces[c].color!==ERNO.COLORLESS){this.color=this.origin.faces[c].color;this.face=ERNO.Direction.getNameById(c);break}if(void 0===this.axis||0===this.axis.lengthSq()){var c=this.northEast.position.clone(),d=this.southWest.position.clone(),e=this.northWest.position.clone();this.axis=(new THREE.Vector3).crossVectors(d.sub(c),e.sub(c)).normalize();this.axis.rotation=0}this.up=new ERNO.Group(this.northWest,this.north,this.northEast);this.equator= 85 | new ERNO.Group(this.west,this.origin,this.east);this.down=new ERNO.Group(this.southWest,this.south,this.southEast);this.left=new ERNO.Group(this.northWest,this.west,this.southWest);this.middle=new ERNO.Group(this.north,this.origin,this.south);this.right=new ERNO.Group(this.northEast,this.east,this.southEast);(c=this.hasType("center"))&&1===c.cubelets.length?(this.center=this.hasType("center"),this.corners=new ERNO.Group(this.hasType("corner")),this.cross=new ERNO.Group(this.center,this.hasType("edge")), 86 | this.ex=new ERNO.Group(this.center,this.hasType("corner"))):this.centers=new ERNO.Group(this.hasType("center"));this.edges=new ERNO.Group(this.hasType("edge"));this.ring=new ERNO.Group(this.northWest,this.north,this.northEast,this.west,this.east,this.southWest,this.south,this.southEast);this.dexter=new ERNO.Group(this.northWest,this.origin,this.southEast);this.sinister=new ERNO.Group(this.northEast,this.origin,this.southWest);return this},set rotation(a){if(this.ableToHideInternalFaces&&this.cube.hideInvisibleFaces){var b= 87 | 0!==a%(0.5*Math.PI);this.invertedAxis.copy(this.axis).negate();b?this.neighbour?(this.showIntroverts(this.axis,!0),this.neighbour.showIntroverts(this.invertedAxis,!0)):(this.cube.showIntroverts(this.axis,!0),this.cube.showIntroverts(this.invertedAxis,!0)):this.neighbour?(this.hideIntroverts(null,!0),this.neighbour.hideIntroverts(null,!0)):this.cube.hideIntroverts(null,!0)}this.matrix.makeRotationAxis(this.axis,a);this.axis.rotation=a;a=this.indices.length;for(var c=new THREE.Matrix4;a--;)b=this.getCubelet(a), 88 | b.matrix.multiplyMatrices(this.matrix,b.matrixSlice),b.position.setFromMatrixPosition(b.matrix),b.scale.setFromMatrixScale(b.matrix),c.extractRotation(b.matrix),b.quaternion.setFromRotationMatrix(c)},get rotation(){return this.axis.rotation},getLocation:function(a){return a===this.origin?"origin":a===this.north?"north":a===this.northEast?"northEast":a===this.east?"east":a===this.southEast?"southEast":a===this.south?"south":a===this.southWest?"southWest":a===this.west?"west":a===this.northWest?"northWest": 89 | !1},hasProperty:function(a,b){for(var c=new ERNO.Group,d=6;0b;b++)this.map[b].innerHTML=a.substr(b,1)};ERNO.Projector=function(){return function(a,b){function c(a,b){k.getInverse(b.projectionMatrix);f.multiplyMatrices(b.matrixWorld,k);return a.applyProjection(f)}function d(d,f,n){var k=b,l=k!==document?k.getBoundingClientRect():{left:0,top:0,width:window.innerWidth,height:window.innerHeight};k!==document&&(k=k.ownerDocument.documentElement,l.left+=window.pageXOffset-k.clientLeft,l.top+=window.pageYOffset-k.clientTop);e=l;g.x=(f-e.left)/e.width*2-1;g.y=(n-e.top)/e.height*-2+1;g.z=-1;m.set(g.x,g.y,1); 91 | c(g,d);c(m,d);m.sub(g).normalize();s.set(g,m);h.getInverse(a.matrixWorld);s.applyMatrix4(h);return s}var e,f=new THREE.Matrix4,h=new THREE.Matrix4,g=new THREE.Vector3,m=new THREE.Vector3(1,1,1),p=new THREE.Vector3,s=new THREE.Ray,q=new THREE.Box3,l=new THREE.Sphere,k=new THREE.Matrix4,u=g.distanceTo(m);q.min.set(0.5*-a.size,0.5*-a.size,0.5*-a.size);q.max.set(0.5*a.size,0.5*a.size,0.5*a.size);l.radius=u*a.size*0.5;return{getIntersection:function(b,c,e,f,g){f=f||new THREE.Vector3;if(null===c||null=== 92 | e)return null;d(b,c,e);return s.isIntersectionSphere(l)&&null!==s.intersectBox(q,f)?(g&&(b=p||new THREE.Vector3,b.copy(f).set(Math.round(b.x),Math.round(b.y),Math.round(b.z)).multiplyScalar(2/a.size).set(b.x|0,b.y|0,b.z|0),g.setFromNormalAndCoplanarPoint(p,f)),f):null},getIntersectionOnPlane:function(a,b,c,e,f){if(null===b||null===c)return null;d(a,b,c);return s.intersectPlane(e,f)},getCubeletAtIntersection:function(){var b=new THREE.Vector3;return function(c){b.copy(c).add(q.max).multiplyScalar(3/ 93 | a.size).set(Math.min(b.x|0,2),Math.min(3-b.y|0,2),Math.min(3-b.z|0,2));return a.cubelets[9*b.z+3*b.y+b.x]}}()}}}();ERNO.Interaction=function(){return function(a,b,c,d,e){function f(c){y.enabled&&2!==c.button&&(k=(c.touches&&c.touches[0]||c).pageX,u=(c.touches&&c.touches[0]||c).pageY,m.getIntersection(b,k,u,p,n)&&(c.stopImmediatePropagation(),0===a.isTweening()&&(x="undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now(),y.active=!0,s=m.getCubeletAtIntersection(p),q=[a.slices[s.addressX+1],a.slices[s.addressY+4],a.slices[s.addressZ+7]],document.addEventListener("mousemove", 94 | h),document.addEventListener("touchmove",h),document.addEventListener("mouseup",g),document.addEventListener("touchcancel",g),document.addEventListener("touchend",g))))}function h(a){v.x=(a.touches&&a.touches[0]||a).pageX;v.y=(a.touches&&a.touches[0]||a).pageY;y.enabled&&(a.preventDefault(),a.stopPropagation())}function g(b){var c=(b.touches&&b.touches[0]||b).pageX;b=(b.touches&&b.touches[0]||b).pageY;y.active=!1;y.enabled&&(c!==u||b!==u)&&w&&(c=l.name[0].toUpperCase(),b=Math.round(z/Math.PI*2)*Math.PI* 95 | 0.5,0.8=a)return this.folds[a].getText()},setText:function(a,b){void 0===b?(this.folds[0].setText(a),this.folds[1].setText(a),this.folds[2].setText(a)):_.isNumeric(b)&&0<=b&&2>=b&&this.folds[b].setText(a)},setSize:function(a,b){this.camera.updateProjectionMatrix();this.renderer.setSize(a,b)},PRESERVE_LOGO:"RrLlUuDdSsBb",ALL_SLICES:"RrMmLlUuEeDdFfSsBb",EVERYTHING:"XxRrMmLlYyUuEeDdZzFfSsBb",loop:function(){var a=0;return function(){requestAnimationFrame(this.loop); 130 | var b="undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now(),c=b-(a||b);a=b;this.paused||(this.time+=c,TWEEN.update(this.time),this.domElement.parentNode&&(b=this.domElement.parentNode.clientWidth,c=this.domElement.parentNode.clientHeight,!this.domElement.parentNode||this.domElement.clientWidth===b&&this.domElement.clientHeight===c||this.setSize(b,c)),this.autoRotate&&(this.rotation.x+=this.rotationDelta.x,this.rotation.y+=this.rotationDelta.y, 131 | this.rotation.z+=this.rotationDelta.z),this.isReady&&0===this.isTweening()&&(b=this.undoing?this.historyQueue:this.twistQueue,0===b.future.length?this.isSolving&&window.solver?this.isSolving=window.solver.consider(this):!0===this.taskQueue.isReady&&(b=this.taskQueue.do(),b instanceof Function&&b()):(c=b.do(),"x"!==c.command.toLowerCase()&&"y"!==c.command.toLowerCase()&&"z"!==c.command.toLowerCase()&&(this.moveCounter+=this.undoing?-1:1),(0===c.degrees||c.isShuffle)&&b.purge(c),this.immediateTwist(c))), 132 | this.mouseInteraction.enabled=this.mouseControlsEnabled&&!this.finalShuffle,this.mouseInteraction.update(),this.controls.enabled=this.mouseControlsEnabled&&!this.mouseInteraction.active,this.controls.update())}}()});ERNO.Solver=function(){this.logic=function(a){return!1}};ERNO.Solver.prototype.consider=function(a){if(void 0===a)return console.warn("A cube [Cube] argument must be specified for Solver.consider()."),!1;if(!1===a instanceof ERNO.Cube)return console.warn("The cube argument provided is not a valid Cube."),!1;a.isShuffling=!1;return a.isSolved()?(ERNO.Solver.prototype.explain("I\u2019ve found that the cube is already solved."),!1):this.logic(a)}; 133 | ERNO.Solver.prototype.hint=function(a){console.log("%c"+a+"%c\n","background-color: #EEE; color: #333","")};ERNO.Solver.prototype.explain=function(a){console.log("Solver says: %c "+a+" %c\n","color: #080","")}; 134 | 135 | //@ sourceMappingURL=../build/cuber.no3D.min.js.map 136 | window.ERNO = ERNO; 137 | window._ = _; 138 | window.TWEEN = window.TWEEN || TWEEN; 139 | window.THREE = window.THREE || THREE; 140 | }()) -------------------------------------------------------------------------------- /js/cube/cuber.no3D.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"../build/cuber.no3D.min.js", 4 | "lineCount":108, 5 | "mappings":"AAekBA,IAAAA,EAAlB,GAAKC,IAAAC,IAAL,GAECD,IAAAC,IAFD,CAEYC,QAAS,EAAG,CAEtB,MAAOC,CAAA,IAAIH,IAAJG,SAAA,EAFe,CAFxB,CAUA;IAAIC,MAAQA,KAARA,EAAmB,QAAS,EAAG,CAElC,IAAIC,EAAU,EAEd,OAAO,UAEI,IAFJ,QAIEC,QAAS,EAAG,CAEnB,MAAOD,EAFY,CAJd,WAUKE,QAAS,EAAG,CAEtBF,CAAA,CAAU,EAFY,CAVjB,KAgBDG,QAAS,CAAEC,CAAF,CAAU,CAEvBJ,CAAAK,KAAA,CAAcD,CAAd,CAFuB,CAhBlB,QAsBEE,QAAS,CAAEF,CAAF,CAAU,CAEtBG,CAAAA,CAAIP,CAAAQ,QAAA,CAAiBJ,CAAjB,CAEI,GAAZ,GAAKG,CAAL,EAECP,CAAAS,OAAA,CAAgBF,CAAhB,CAAmB,CAAnB,CANyB,CAtBrB,QAkCEG,QAAS,CAAEC,CAAF,CAAS,CAEzB,GAAwB,CAAxB,GAAKX,CAAAY,OAAL,CAA4B,MAAO,CAAA,CAEnC,KAAIL,EAAI,CAIR,KAFAI,CAEA,CAFgBjB,IAAAA,EAAT,GAAAiB,CAAA,CAAqBA,CAArB,CAAgD,WAAlB,GAAA,MAAOE,OAAP,EAAwDnB,IAAAA,EAAxD,GAAiCmB,MAAAC,YAAjC,EAAgGpB,IAAAA,EAAhG,GAAqEmB,MAAAC,YAAAlB,IAArE,CAA4GiB,MAAAC,YAAAlB,IAAA,EAA5G,CAAuID,IAAAC,IAAA,EAE5K,CAAQW,CAAR,CAAYP,CAAAY,OAAZ,CAAA,CAEMZ,CAAA,CAASO,CAAT,CAAAG,OAAA,CAAqBC,CAArB,CAAL,CAECJ,CAAA,EAFD,CAMCP,CAAAS,OAAA,CAAgBF,CAAhB,CAAmB,CAAnB,CAMF,OAAO,CAAA,CAtBkB,CAlCpB,CAJ2B,CAAZ,EAmEvBR;KAAAgB,MAAA,CAAcC,QAAS,CAAEC,CAAF,CAAW,CAGjC,IAAIC,EAAe,EAAnB,CACIC,EAAa,EADjB,CAEIC,EAAqB,EAFzB,CAGIC,EAAY,GAHhB,CAIIC,EAAU,CAJd,CAKIC,EAAQ,CAAA,CALZ,CAMIC,EAAa,CAAA,CANjB,CAQIC,EAAa,CARjB,CASIC,EAAa,IATjB,CAUIC,EAAkB5B,KAAA6B,OAAAC,OAAAC,KAVtB,CAWIC,EAAyBhC,KAAAiC,cAAAH,OAX7B,CAYII,EAAiB,EAZrB,CAaIC,EAAmB,IAbvB,CAcIC,EAAwB,CAAA,CAd5B,CAeIC,EAAoB,IAfxB,CAgBIC,EAAsB,IAhB1B,CAmBUC,CAAV,KAAUA,CAAV,GAAmBrB,EAAnB,CAECC,CAAA,CAAcoB,CAAd,CAAA,CAAwBC,UAAA,CAAWtB,CAAA,CAAOqB,CAAP,CAAX,CAA0B,EAA1B,CAIzB,KAAAE,GAAA,CAAUC,QAAS,CAAEC,CAAF,CAAcC,CAAd,CAAyB,CAEzBjD,IAAAA,EAAlB,GAAKiD,CAAL,GAECtB,CAFD,CAEasB,CAFb,CAMAxB,EAAA,CAAauB,CAEb,OAAO,KAVoC,CAc5C,KAAAE,MAAA,CAAaC,QAAS,CAAElC,CAAF,CAAS,CAE9BZ,KAAAI,IAAA,CAAW,IAAX,CAEAqB,EAAA,CAAa,CAAA,CAEbW,EAAA,CAAwB,CAAA,CAExBT,EAAA,CAAsBhC,IAAAA,EAAT,GAAAiB,CAAA,CAAqBA,CAArB,CAAgD,WAAlB,GAAA,MAAOE,OAAP,EAAwDnB,IAAAA,EAAxD,GAAiCmB,MAAAC,YAAjC,EAAgGpB,IAAAA,EAAhG,GAAqEmB,MAAAC,YAAAlB,IAArE,CAA4GiB,MAAAC,YAAAlB,IAAA,EAA5G,CAAuID,IAAAC,IAAA,EAClL8B,EAAA,EAAcD,CAEd,KAAMqB,IAAIA,CAAV,GAAsB3B,EAAtB,CAAmC,CAGlC,GAAKA,CAAA,CAAY2B,CAAZ,CAAL,UAAuCC,MAAvC,CAA+C,CAE9C,GAAuC,CAAvC,GAAK5B,CAAA,CAAY2B,CAAZ,CAAAlC,OAAL,CAEC,QAKDO;CAAA,CAAY2B,CAAZ,CAAA,CAAyB,CA/Dd7B,CA+DgB,CAAS6B,CAAT,CAAF,CAAAE,OAAA,CAAgC7B,CAAA,CAAY2B,CAAZ,CAAhC,CATqB,CAa/C5B,CAAA,CAAc4B,CAAd,CAAA,CAnEY7B,CAmEe,CAAS6B,CAAT,CAE2B,EAAA,CAAtD,GAAM5B,CAAA,CAAc4B,CAAd,CAAN,UAA0CC,MAA1C,GACC7B,CAAA,CAAc4B,CAAd,CADD,EAC6B,CAD7B,CAIA1B,EAAA,CAAoB0B,CAApB,CAAA,CAAiC5B,CAAA,CAAc4B,CAAd,CAAjC,EAA6D,CAtB3B,CA0BnC,MAAO,KArCuB,CAyC/B,KAAAG,KAAA,CAAYC,QAAS,EAAG,CAEvB,GAAM1B,CAAAA,CAAN,CACC,MAAO,KAGRzB,MAAAO,OAAA,CAAc,IAAd,CACAkB,EAAA,CAAa,CAAA,CACb,KAAA2B,kBAAA,EACA,OAAO,KATgB,CAaxB,KAAAA,kBAAA,CAAyBC,QAAS,EAAG,CAEpC,IAFoC,IAE1B7C,EAAI,CAFsB,CAEnB8C,EAAmBpB,CAAArB,OAApC,CAA2DL,CAA3D,CAA+D8C,CAA/D,CAAiF9C,CAAA,EAAjF,CAEC0B,CAAA,CAAgB1B,CAAhB,CAAA0C,KAAA,EAJmC,CAUrC,KAAAK,MAAA,CAAaC,QAAS,CAAEC,CAAF,CAAW,CAEhC/B,CAAA,CAAa+B,CACb,OAAO,KAHyB,CAOjC,KAAAC,OAAA,CAAcC,QAAS,CAAEC,CAAF,CAAU,CAEhCrC,CAAA,CAAUqC,CACV,OAAO,KAHyB,CAOjC,KAAAC,KAAA,CAAYC,QAAQ,CAAED,CAAF,CAAS,CAE5BrC,CAAA,CAAQqC,CACR,OAAO,KAHqB,CAQ7B,KAAAE,OAAA,CAAcC,QAAS,CAAED,CAAF,CAAW,CAEjCnC,CAAA,CAAkBmC,CAClB,OAAO,KAH0B,CAOlC,KAAAE,cAAA,CAAqBC,QAAS,CAAED,CAAF,CAAkB,CAE/CjC,CAAA,CAAyBiC,CACzB,OAAO,KAHwC,CAOhD,KAAAE,MAAA,CAAaC,QAAS,EAAG,CAExBlC,CAAA;AAAiBmC,SACjB,OAAO,KAHiB,CAOzB,KAAAC,QAAA,CAAeC,QAAS,CAAEC,CAAF,CAAa,CAEpCrC,CAAA,CAAmBqC,CACnB,OAAO,KAH6B,CAOrC,KAAAC,SAAA,CAAgBC,QAAS,CAAEF,CAAF,CAAa,CAErCnC,CAAA,CAAoBmC,CACpB,OAAO,KAH8B,CAOtC,KAAAG,WAAA,CAAkBC,QAAS,CAAEJ,CAAF,CAAa,CAEvClC,CAAA,CAAsBkC,CACtB,OAAO,KAHgC,CAOxC,KAAA7D,OAAA,CAAckE,QAAS,CAAEjE,CAAF,CAAS,CAE/B,IAAImC,CAEJ,IAAKnC,CAAL,CAAYe,CAAZ,CAEC,MAAO,CAAA,CAIuB,EAAA,CAA/B,GAAKS,CAAL,GAE2B,IAM1B,GANKD,CAML,EAJCA,CAAA2C,KAAA,CAtLW5D,CAsLX,CAID,CAAAkB,CAAA,CAAwB,CAAA,CARzB,CAYA,KAAI2C,GAAYnE,CAAZmE,CAAmBpD,CAAnBoD,EAAkCzD,CAAtC,CACAyD,EAAoB,CAAV,CAAAA,CAAA,CAAc,CAAd,CAAkBA,CAD5B,CAGIC,EAAQpD,CAAA,CAAiBmD,CAAjB,CAEZ,KAAMhC,CAAN,GAAkB3B,EAAlB,CAA+B,CAE9B,IAAIyB,EAAQ1B,CAAA,CAAc4B,CAAd,CAARF,EAAoC,CAAxC,CACIoC,EAAM7D,CAAA,CAAY2B,CAAZ,CAELkC,EAAL,WAAoBjC,MAApB,CAxMY9B,CA0MX,CAAS6B,CAAT,CAFD,CAEuBf,CAAA,CAAwBiD,CAAxB,CAA6BD,CAA7B,CAFvB,EAOsB,QAKT,GALP,MAAOC,EAKA,GAJXA,CAIW,CAJLpC,CAIK,CAJGL,UAAA,CAAWyC,CAAX,CAAgB,EAAhB,CAIH,EAAqB,QAArB,GAAK,MAAOA,EAAZ,GApND/D,CAqNV,CAAS6B,CAAT,CADW,CACWF,CADX,EACqBoC,CADrB,CAC2BpC,CAD3B,EACqCmC,CADrC,CAZb,CAL8B,CAyBJ,IAA3B,GAAK3C,CAAL,EAECA,CAAAyC,KAAA,CA9NY5D,CA8NZ,CAAiC8D,CAAjC,CAID,IAAgB,CAAhB,EAAKD,CAAL,CAEC,GAAe,CAAf,CAAKxD,CAAL,CAAmB,CAEd2D,QAAA,CAAU3D,CAAV,CAAJ,EACCA,CAAA,EAID,KAAKwB,CAAL,GAAiB1B,EAAjB,CAE2C,QAU1C,GAVK,MAAQD,EAAA,CAAY2B,CAAZ,CAUb;CATC1B,CAAA,CAAoB0B,CAApB,CASD,EATmEP,UAAA,CAAWpB,CAAA,CAAY2B,CAAZ,CAAX,CAAmC,EAAnC,CASnE,EANIvB,CAMJ,GALK2D,CAEJ,CAFU9D,CAAA,CAAoB0B,CAApB,CAEV,CADA1B,CAAA,CAAoB0B,CAApB,CACA,CADiC3B,CAAA,CAAY2B,CAAZ,CACjC,CAAA3B,CAAA,CAAY2B,CAAZ,CAAA,CAAyBoC,CAG1B,EAAAhE,CAAA,CAAc4B,CAAd,CAAA,CAA2B1B,CAAA,CAAoB0B,CAApB,CAI5BpB,EAAA,CAAaf,CAAb,CAAoBc,CAvBF,CAAnB,IA2BO,CAEuB,IAA7B,GAAKY,CAAL,EAECA,CAAAwC,KAAA,CAnQU5D,CAmQV,CAISV,EAAAA,CAAI,CAAd,KAAiB8C,CAAjB,CAAoCpB,CAAArB,OAApC,CAA2DL,CAA3D,CAA+D8C,CAA/D,CAAiF9C,CAAA,EAAjF,CAEC0B,CAAA,CAAgB1B,CAAhB,CAAAqC,MAAA,CAA2BjC,CAA3B,CAID,OAAO,CAAA,CAdD,CAoBR,MAAO,CAAA,CA3GwB,CA1KC,CA4RlCZ;KAAA6B,OAAA,CAAe,QAEN,MAEDE,QAAS,CAAEqD,CAAF,CAAM,CAEpB,MAAOA,EAFa,CAFd,CAFM,WAYH,IAENC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAOA,EAAP,CAAWA,CAFO,CAFT,KAQLE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAOA,EAAP,EAAa,CAAb,CAAiBA,CAAjB,CAFmB,CARV,OAcHG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA6B,GAA7B,CAAmCA,CAAnC,CAAuCA,CAAvC,CACS,IADT,EACiB,EAAEA,CADnB,EACyBA,CADzB,CAC6B,CAD7B,EACmC,CADnC,CAFqB,CAdZ,CAZG,OAmCP,IAEFC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAOA,EAAP,CAAWA,CAAX,CAAeA,CAFG,CAFb,KAQDE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAO,EAAEA,CAAT,CAAaA,CAAb,CAAiBA,CAAjB,CAAqB,CAFF,CARd,OAcCG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA6B,GAA7B,CAAmCA,CAAnC,CAAuCA,CAAvC,CAA2CA,CAA3C,CACO,GADP,GACiBA,CADjB,EACsB,CADtB,EAC4BA,CAD5B,CACgCA,CADhC,CACoC,CADpC,CAFqB,CAdhB,CAnCO,SA0DL,IAEJC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAOA,EAAP,CAAWA,CAAX,CAAeA,CAAf,CAAmBA,CAFD,CAFX,KAQHE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAO,EAAP,CAAa,GAAEA,CAAf,CAAmBA,CAAnB,CAAuBA,CAAvB,CAA2BA,CAFR,CARZ,OAcDG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA4B,GAA5B,CAAkCA,CAAlC,CAAsCA,CAAtC,CAA0CA,CAA1C,CAA8CA,CAA9C,CACS,IADT,GACmBA,CADnB,EACwB,CADxB,EAC8BA,CAD9B,CACkCA,CADlC,CACsCA,CADtC,CAC0C,CAD1C,CAFqB,CAdd,CA1DK,SAiFL,IAEJC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAOA,EAAP,CAAWA,CAAX,CAAeA,CAAf;AAAmBA,CAAnB,CAAuBA,CAFL,CAFX,KAQHE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAO,EAAEA,CAAT,CAAaA,CAAb,CAAiBA,CAAjB,CAAqBA,CAArB,CAAyBA,CAAzB,CAA6B,CAFV,CARZ,OAcDG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA6B,GAA7B,CAAmCA,CAAnC,CAAuCA,CAAvC,CAA2CA,CAA3C,CAA+CA,CAA/C,CAAmDA,CAAnD,CACO,GADP,GACiBA,CADjB,EACsB,CADtB,EAC4BA,CAD5B,CACgCA,CADhC,CACoCA,CADpC,CACwCA,CADxC,CAC4C,CAD5C,CAFqB,CAdd,CAjFK,YAwGF,IAEPC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAO,EAAP,CAAWI,IAAAC,IAAA,CAAUL,CAAV,CAAcI,IAAAE,GAAd,CAAwB,CAAxB,CAFO,CAFR,KAQNJ,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAOI,KAAAG,IAAA,CAAUP,CAAV,CAAcI,IAAAE,GAAd,CAAwB,CAAxB,CAFY,CART,OAcJH,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAO,IAAP,EAAe,CAAf,CAAmBI,IAAAC,IAAA,CAAUD,IAAAE,GAAV,CAAoBN,CAApB,CAAnB,CAFqB,CAdX,CAxGE,aA8HD,IAERC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAa,EAAN,GAAAA,CAAA,CAAU,CAAV,CAAcI,IAAAI,IAAA,CAAU,IAAV,CAAgBR,CAAhB,CAAoB,CAApB,CAFH,CAFP,KAQPE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAa,EAAN,GAAAA,CAAA,CAAU,CAAV,CAAc,CAAd,CAAkBI,IAAAI,IAAA,CAAU,CAAV,CAAe,GAAf,CAAoBR,CAApB,CAFN,CARR,OAcLG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAW,EAAX,GAAKA,CAAL,CAAsB,CAAtB,CACW,CAAX,GAAKA,CAAL,CAAsB,CAAtB,CACkB,CAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA6B,GAA7B,CAAmCI,IAAAI,IAAA,CAAU,IAAV,CAAgBR,CAAhB,CAAoB,CAApB,CAAnC,CACO,GADP,EACe,CAAEI,IAAAI,IAAA,CAAU,CAAV,CAAe,GAAf,EAAsBR,CAAtB,CAA0B,CAA1B,EADjB,CACmD,CADnD,CAJqB,CAdV,CA9HC,UAuJJ,IAELC,QAAS,CAAED,CAAF,CAAM,CAElB,MAAO,EAAP;AAAWI,IAAAK,KAAA,CAAW,CAAX,CAAeT,CAAf,CAAmBA,CAAnB,CAFO,CAFV,KAQJE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAOI,KAAAK,KAAA,CAAW,CAAX,CAAiB,GAAET,CAAnB,CAAuBA,CAAvB,CAFY,CARX,OAcFG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA8B,IAA9B,EAAsCI,IAAAK,KAAA,CAAW,CAAX,CAAeT,CAAf,CAAmBA,CAAnB,CAAtC,CAA8D,CAA9D,EACO,GADP,EACeI,IAAAK,KAAA,CAAW,CAAX,EAAiBT,CAAjB,EAAsB,CAAtB,EAA2BA,CAA3B,CADf,CAC+C,CAD/C,CAFqB,CAdb,CAvJI,SA8KL,IAEJC,QAAS,CAAED,CAAF,CAAM,CAAA,IAEdU,CAFc,CAEXC,EAAI,GACX,IAAW,CAAX,GAAKX,CAAL,CAAe,MAAO,EACtB,IAAW,CAAX,GAAKA,CAAL,CAAe,MAAO,EAChBW,EAAAA,CAAN,EAAe,CAAf,CAAWA,CAAX,EAAqBA,CAAO,CAAH,CAAG,CAAAD,CAAA,CAAI,GAAhC,EACKA,CADL,CAHoBE,GAGpB,CACaR,IAAAS,KAAA,CAAW,CAAX,CAAeF,CAAf,CADb,EACoC,CADpC,CACwCP,IAAAE,GADxC,CAEA,OAAO,EAAIK,CAAJ,CAAQP,IAAAI,IAAA,CAAU,CAAV,CAAa,EAAb,EAAoBR,CAApB,EAAyB,CAAzB,EAAR,CAAyCI,IAAAG,IAAA,CAAwB,CAAxB,EAAYP,CAAZ,CAAgBU,CAAhB,EAA4BN,IAAAE,GAA5B,CAL5BM,GAK4B,CAAzC,CAPW,CAFX,KAaHV,QAAS,CAAEF,CAAF,CAAM,CAAA,IAEfU,CAFe,CAEZC,EAAI,GACX,IAAW,CAAX,GAAKX,CAAL,CAAe,MAAO,EACtB,IAAW,CAAX,GAAKA,CAAL,CAAe,MAAO,EAChBW,EAAAA,CAAN,EAAe,CAAf,CAAWA,CAAX,EAAqBA,CAAO,CAAH,CAAG,CAAAD,CAAA,CAAI,GAAhC,EACKA,CADL,CAHoBE,GAGpB,CACaR,IAAAS,KAAA,CAAW,CAAX,CAAeF,CAAf,CADb,EACoC,CADpC,CACwCP,IAAAE,GADxC,CAEA,OAASK,EAAT,CAAaP,IAAAI,IAAA,CAAU,CAAV,CAAe,GAAf,CAAoBR,CAApB,CAAb,CAAsCI,IAAAG,IAAA,CAAwB,CAAxB,EAAYP,CAAZ;AAAgBU,CAAhB,EAA4BN,IAAAE,GAA5B,CALlBM,GAKkB,CAAtC,CAAoF,CAPjE,CAbZ,OAwBDT,QAAS,CAAEH,CAAF,CAAM,CAAA,IAEjBU,CAFiB,CAEdC,EAAI,GACX,IAAW,CAAX,GAAKX,CAAL,CAAe,MAAO,EACtB,IAAW,CAAX,GAAKA,CAAL,CAAe,MAAO,EAChBW,EAAAA,CAAN,EAAe,CAAf,CAAWA,CAAX,EAAqBA,CAAO,CAAH,CAAG,CAAAD,CAAA,CAAI,GAAhC,EACKA,CADL,CAHoBE,GAGpB,CACaR,IAAAS,KAAA,CAAW,CAAX,CAAeF,CAAf,CADb,EACoC,CADpC,CACwCP,IAAAE,GADxC,CAEA,OAAkB,EAAlB,EAAON,CAAP,EAAY,CAAZ,EAA+B,IAA/B,CAAuCW,CAAvC,CAA2CP,IAAAI,IAAA,CAAU,CAAV,CAAa,EAAb,EAAoBR,CAApB,EAAyB,CAAzB,EAA3C,CAA4EI,IAAAG,IAAA,CAAwB,CAAxB,EAAYP,CAAZ,CAAgBU,CAAhB,EAA4BN,IAAAE,GAA5B,CALxDM,GAKwD,CAA5E,CACOD,CADP,CACWP,IAAAI,IAAA,CAAU,CAAV,CAAc,GAAd,EAAqBR,CAArB,EAA0B,CAA1B,EADX,CAC6CI,IAAAG,IAAA,CAAwB,CAAxB,EAAYP,CAAZ,CAAgBU,CAAhB,EAA4BN,IAAAE,GAA5B,CANzBM,GAMyB,CAD7C,CAC2F,GAD3F,CACiG,CAR5E,CAxBd,CA9KK,MAoNR,IAEDX,QAAS,CAAED,CAAF,CAAM,CAGlB,MAAOA,EAAP,CAAWA,CAAX,EAAmB,OAAnB,CAA6BA,CAA7B,CADQU,OACR,CAHkB,CAFd,KASAR,QAAS,CAAEF,CAAF,CAAM,CAGnB,MAAO,EAAEA,CAAT,CAAaA,CAAb,EAAqB,OAArB,CAA+BA,CAA/B,CADQU,OACR,EAAyC,CAHtB,CATf,OAgBEP,QAAS,CAAEH,CAAF,CAAM,CAGrB,MAAkB,EAAlB,EAAOA,CAAP,EAAY,CAAZ,EAA6B,GAA7B,CAAqCA,CAArC,CAAyCA,CAAzC,EAAiD,SAAjD,CAA2DA,CAA3D,CADQU,SACR,EACO,GADP,GACiBV,CADjB,EACsB,CADtB,EAC4BA,CAD5B,EACoC,SADpC,CAC8CA,CAD9C,CADQU,SACR,EACwD,CADxD,CAHqB,CAhBjB,CApNQ,QA8ON,IAEHT,QAAS,CAAED,CAAF,CAAM,CAElB,MAAO,EAAP;AAAWpF,KAAA6B,OAAAqE,OAAAZ,IAAA,CAAyB,CAAzB,CAA6BF,CAA7B,CAFO,CAFZ,KAQFE,QAAS,CAAEF,CAAF,CAAM,CAEnB,MAAKA,EAAL,CAAW,CAAX,CAAe,IAAf,CAEQ,MAFR,CAEiBA,CAFjB,CAEqBA,CAFrB,CAIYA,CAAL,CAAW,CAAX,CAAe,IAAf,CAEC,MAFD,EAEYA,CAFZ,EAEmB,GAFnB,CAEyB,IAFzB,EAEoCA,CAFpC,CAEwC,IAFxC,CAIKA,CAAL,CAAW,GAAX,CAAiB,IAAjB,CAEC,MAFD,EAEYA,CAFZ,EAEmB,IAFnB,CAE0B,IAF1B,EAEqCA,CAFrC,CAEyC,MAFzC,CAMC,MAND,EAMYA,CANZ,EAMmB,KANnB,CAM2B,IAN3B,EAMsCA,CANtC,CAM0C,QAhB9B,CARb,OA8BAG,QAAS,CAAEH,CAAF,CAAM,CAErB,MAAS,IAAT,CAAKA,CAAL,CAAwD,GAAxD,CAAsBpF,KAAA6B,OAAAqE,OAAAb,GAAA,CAA4B,CAA5B,CAAwBD,CAAxB,CAAtB,CAC8C,GAD9C,CACOpF,KAAA6B,OAAAqE,OAAAZ,IAAA,CAA6B,CAA7B,CAAyBF,CAAzB,CAAiC,CAAjC,CADP,CACoD,GAH/B,CA9Bf,CA9OM,CAuRfpF;KAAAiC,cAAA,CAAsB,QAEbH,QAAS,CAAEqE,CAAF,CAAKf,CAAL,CAAS,CAAA,IAErBgB,EAAID,CAAAtF,OAAJuF,CAAe,CAFM,CAEHC,EAAID,CAAJC,CAAQjB,CAFL,CAEQ5E,EAAIgF,IAAAc,MAAA,CAAYD,CAAZ,CAFZ,CAE6BE,EAAKvG,KAAAiC,cAAAuE,MAAA1E,OAE3D,OAAS,EAAT,CAAKsD,CAAL,CAAoBmB,CAAA,CAAIJ,CAAA,CAAG,CAAH,CAAJ,CAAYA,CAAA,CAAG,CAAH,CAAZ,CAAoBE,CAApB,CAApB,CACS,CAAT,CAAKjB,CAAL,CAAoBmB,CAAA,CAAIJ,CAAA,CAAGC,CAAH,CAAJ,CAAYD,CAAA,CAAGC,CAAH,CAAO,CAAP,CAAZ,CAAwBA,CAAxB,CAA4BC,CAA5B,CAApB,CAEOE,CAAA,CAAIJ,CAAA,CAAG3F,CAAH,CAAJ,CAAY2F,CAAA,CAAG3F,CAAA,CAAI,CAAJ,CAAQ4F,CAAR,CAAYA,CAAZ,CAAgB5F,CAAhB,CAAoB,CAAvB,CAAZ,CAAwC6F,CAAxC,CAA4C7F,CAA5C,CAPkB,CAFL,QAabiG,QAAS,CAAEN,CAAF,CAAKf,CAAL,CAAS,CAAA,IAErBsB,EAAI,CAFiB,CAEdC,EAAIR,CAAAtF,OAAJ8F,CAAe,CAFD,CAEIC,EAAKpB,IAAAI,IAFT,CAEmBiB,EAAK7G,KAAAiC,cAAAuE,MAAAM,UAFxB,CAE6DtG,CAEtF,KAAMA,CAAN,CAAU,CAAV,CAAaA,CAAb,EAAkBmG,CAAlB,CAAqBnG,CAAA,EAArB,CACCkG,CAAA,EAAKE,CAAA,CAAI,CAAJ,CAAQxB,CAAR,CAAWuB,CAAX,CAAenG,CAAf,CAAL,CAA0BoG,CAAA,CAAIxB,CAAJ,CAAO5E,CAAP,CAA1B,CAAuC2F,CAAA,CAAG3F,CAAH,CAAvC,CAAgDqG,CAAA,CAAIF,CAAJ,CAAOnG,CAAP,CAGjD,OAAOkG,EARkB,CAbL,YAyBTK,QAAS,CAAEZ,CAAF,CAAKf,CAAL,CAAS,CAAA,IAEzBgB,EAAID,CAAAtF,OAAJuF,CAAe,CAFU,CAEPC,EAAID,CAAJC,CAAQjB,CAFD,CAEI5E,EAAIgF,IAAAc,MAAA,CAAYD,CAAZ,CAFR,CAEyBE,EAAKvG,KAAAiC,cAAAuE,MAAAO,WAE3D,OAAKZ,EAAA,CAAG,CAAH,CAAL,GAAgBA,CAAA,CAAGC,CAAH,CAAhB,EAEU,CAEF,CAFFhB,CAEE,GAFM5E,CAEN,CAFUgF,IAAAc,MAAA,CAAYD,CAAZ,CAAgBD,CAAhB,EAAsB,CAAtB,CAA0BhB,CAA1B,EAEV,EAAAmB,CAAA,CAAIJ,CAAA,EAAK3F,CAAL;AAAS,CAAT,CAAa4F,CAAb,EAAmBA,CAAnB,CAAJ,CAA4BD,CAAA,CAAG3F,CAAH,CAA5B,CAAoC2F,CAAA,EAAK3F,CAAL,CAAS,CAAT,EAAe4F,CAAf,CAApC,CAAwDD,CAAA,EAAK3F,CAAL,CAAS,CAAT,EAAe4F,CAAf,CAAxD,CAA4EC,CAA5E,CAAgF7F,CAAhF,CAJR,EAQU,CAAT,CAAK4E,CAAL,CAAoBe,CAAA,CAAG,CAAH,CAApB,EAA+BI,CAAA,CAAIJ,CAAA,CAAG,CAAH,CAAJ,CAAYA,CAAA,CAAG,CAAH,CAAZ,CAAoBA,CAAA,CAAG,CAAH,CAApB,CAA4BA,CAAA,CAAG,CAAH,CAA5B,CAAoC,CAACE,CAArC,CAA/B,CAA0EF,CAAA,CAAG,CAAH,CAA1E,EACS,CAAT,CAAKf,CAAL,CAAoBe,CAAA,CAAGC,CAAH,CAApB,EAA+BG,CAAA,CAAIJ,CAAA,CAAGC,CAAH,CAAJ,CAAYD,CAAA,CAAGC,CAAH,CAAZ,CAAoBD,CAAA,CAAGC,CAAH,CAAO,CAAP,CAApB,CAAgCD,CAAA,CAAGC,CAAH,CAAO,CAAP,CAAhC,CAA4CC,CAA5C,CAAgDD,CAAhD,CAA/B,CAAqFD,CAAA,CAAGC,CAAH,CAArF,EAEOG,CAAA,CAAIJ,CAAA,CAAG3F,CAAA,CAAIA,CAAJ,CAAQ,CAAR,CAAY,CAAf,CAAJ,CAAwB2F,CAAA,CAAG3F,CAAH,CAAxB,CAAgC2F,CAAA,CAAGC,CAAA,CAAI5F,CAAJ,CAAQ,CAAR,CAAY4F,CAAZ,CAAgB5F,CAAhB,CAAoB,CAAvB,CAAhC,CAA4D2F,CAAA,CAAGC,CAAA,CAAI5F,CAAJ,CAAQ,CAAR,CAAY4F,CAAZ,CAAgB5F,CAAhB,CAAoB,CAAvB,CAA5D,CAAwF6F,CAAxF,CAA4F7F,CAA5F,CAfqB,CAzBT,OA8Cd,QAEEsB,QAAS,CAAEkF,CAAF,CAAMC,CAAN,CAAUC,CAAV,CAAc,CAE9B,OAASD,CAAT,CAAcD,CAAd,EAAqBE,CAArB,CAAyBF,CAFK,CAFzB,WAQKF,QAAS,CAAEH,CAAF,CAAMnG,CAAN,CAAU,CAE7B,IAAI2G,EAAKnH,KAAAiC,cAAAuE,MAAAY,UACT,OAAOD,EAAA,CAAIR,CAAJ,CAAP,CAAiBQ,CAAA,CAAI3G,CAAJ,CAAjB,CAA2B2G,CAAA,CAAIR,CAAJ,CAAQnG,CAAR,CAHE,CARxB,WAeO,QAAS,EAAG,CAExB,IAAIuF,EAAI,CAAE,CAAF,CAER,OAAO,SAAS,CAAEY,CAAF,CAAM,CAAA,IAEjBb,EAAI,CAFa,CAEVtF,CACX,IAAKuF,CAAA,CAAGY,CAAH,CAAL,CAAc,MAAOZ,EAAA,CAAGY,CAAH,CACrB,KAAMnG,CAAN,CAAUmG,CAAV,CAAiB,CAAjB,CAAanG,CAAb,CAAoBA,CAAA,EAApB,CAA0BsF,CAAA,EAAKtF,CAC/B,OAAOuF,EAAA,CAAGY,CAAH,CAAP,CAAgBb,CALK,CAJE,CAAZ,EAfP,YA8BMiB,QAAS,CAAEC,CAAF,CAAMC,CAAN,CAAUI,CAAV,CAAcC,CAAd,CAAkBJ,CAAlB,CAAsB,CAEtCK,CAAAA,CAAmB,GAAnBA,EAAOF,CAAPE,CAAYP,CAAZO,CAAwBC,EAAAA,CAAmB,GAAnBA,EAAOF,CAAPE,CAAYP,CAAZO,CAFc,KAEUC;AAAKP,CAALO,CAASP,CAC7D,QAAS,CAAT,CAAaD,CAAb,CAAkB,CAAlB,CAAsBI,CAAtB,CAA2BE,CAA3B,CAAgCC,CAAhC,EADqEN,CACrE,CADyEO,CACzE,EAAgD,EAAhD,CAAoDR,CAApD,CAAyD,CAAzD,CAA6DI,CAA7D,CAAkE,CAAlE,CAAsEE,CAAtE,CAA2EC,CAA3E,EAAkFC,CAAlF,CAAuFF,CAAvF,CAA4FL,CAA5F,CAAgGD,CAHtD,CA9BrC,CA9Cc,C,CC/oBtB,IAAIS,O,CCAJ,IAAIC,KAAO,SACI,CADJ,CAGV,UAAS,EAAG,CAEZC,QAASA,EAAY,CAAEC,CAAF,CAASC,CAAT,CAAkB,CACtCA,CAAA,CAASA,CAAT,EAAmB,SAAW,CAAA,CAAX,YAA8B,CAAA,CAA9B,QAA6CnI,IAAAA,EAA7C,CACnB,KAAIoI,EAAMC,QAAAC,YAAA,CAAsB,aAAtB,CACVF,EAAAG,gBAAA,CAAqBL,CAArB,CAA4BC,CAAAK,QAA5B,CAA4CL,CAAAM,WAA5C,CAA+DN,CAAAO,OAA/D,CACA,OAAON,EAJ+B,CAOvCH,CAAAU,UAAA,CAAwBxH,MAAAyH,MAAAD,UAExBxH,OAAA8G,YAAA,CAAqBA,CAXT,CAAZ,CAAA,EAkBDD,KAAAa,OAAA,CAAcC,QAAS,CAAEC,CAAF,CAAOC,CAAP,CAAgB,CAGtC,GAAKC,MAAAC,KAAL,CAIC,IAFA,IAAIA,EAAOD,MAAAC,KAAA,CAAaF,CAAb,CAAX,CAESnI,EAAI,CAFb,CAEgBsI,EAAKD,CAAAhI,OAArB,CAAkCL,CAAlC,CAAsCsI,CAAtC,CAA0CtI,CAAA,EAA1C,CAA+C,CAE9C,IAAIuI,EAAOF,CAAA,CAAKrI,CAAL,CACXoI,OAAAI,eAAA,CAAuBN,CAAvB,CAA4BK,CAA5B,CAAkCH,MAAAK,yBAAA,CAAiCN,CAAjC,CAAyCI,CAAzC,CAAlC,CAH8C,CAJhD,IAeC,KAAUA,CAAV,GAFIG,EAEcP,CAFO,EAAAQ,eAEPR,CAAAA,CAAlB,CAEMO,CAAApE,KAAA,CAAyB6D,CAAzB,CAAiCI,CAAjC,CAAL,GAECL,CAAA,CAAIK,CAAJ,CAFD,CAEaJ,CAAA,CAAOI,CAAP,CAFb,CAUF,OAAOL,EA9B+B,C,CCZvCU,KAAAC,YAAA,CAAoBC,QAAS,CAAEC,CAAF,CAAY,CAExCH,KAAAI,SAAA1E,KAAA,CAAqB,IAArB,CAEA,KAAAyE,QAAA,CAAeA,CACf,KAAAE,KAAA,CAAY,CAAA,CACZ,KAAAF,QAAAG,MAAAC,SAAA,CAA8B,UAE9B,KAAAC,iBAAA,CAAuB,SAAvB,CAAkC,QAAS,CAAE/B,CAAF,CAAU,CAEpD,GAAiC,IAAjC,GAAK,IAAA0B,QAAAM,WAAL,CAAwC,CAEvC,IAAAN,QAAAM,WAAAC,YAAA,CAAqC,IAAAP,QAArC,CAEA,KAJuC,IAI7B/I,EAAI,CAJyB,CAItBuJ,EAAI,IAAAC,SAAAnJ,OAArB,CAA2CL,CAA3C,CAA+CuJ,CAA/C,CAAkDvJ,CAAA,EAAlD,CAEC,IAAAwJ,SAAA,CAAexJ,CAAf,CAAAyJ,cAAA,CAAkCpC,CAAlC,CANsC,CAFY,CAArD,CARwC,CA0BzCuB,MAAAC,YAAAf,UAAA,CAA8BM,MAAAsB,OAAA,CAAed,KAAAI,SAAAlB,UAAf,CAE9Bc,MAAAe,YAAA,CAAoBC,QAAS,CAAEb,CAAF,CAAY,CAExCH,KAAAC,YAAAvE,KAAA,CAAwB,IAAxB,CAA8ByE,CAA9B,CAFwC,CAMzCH,MAAAe,YAAA7B,UAAA,CAA8BM,MAAAsB,OAAA,CAAed,KAAAC,YAAAf,UAAf,CAI9Bc;KAAAiB,cAAA,CAAsBC,QAAS,EAAG,CAAA,IAI7BC,CAJ6B,CAIrBC,CAJqB,CAK7BC,CAL6B,CAKjBC,CALiB,CAO7BC,EAAS,IAAIvB,KAAAwB,QAPgB,CAS7BC,EAAa7C,QAAA8C,cAAA,CAAwB,KAAxB,CACjBD,EAAAnB,MAAAqB,SAAA,CAA4B,QAE5BF,EAAAnB,MAAAsB,qBAAA,CAAwC,aACxCH,EAAAnB,MAAAuB,kBAAA,CAAqC,aACrCJ,EAAAnB,MAAAwB,gBAAA,CAAmC,aACnCL,EAAAnB,MAAAyB,eAAA,CAAkC,aAElC,KAAAN,WAAA,CAAkBA,CAElB,KAAIO,EAAgBpD,QAAA8C,cAAA,CAAwB,KAAxB,CAEpBM,EAAA1B,MAAAsB,qBAAA,CAA2C,aAC3CI,EAAA1B,MAAAuB,kBAAA,CAAwC,aACxCG,EAAA1B,MAAAwB,gBAAA,CAAsC,aACtCE,EAAA1B,MAAAyB,eAAA,CAAqC,aAErCN,EAAAQ,YAAA,CAAwBD,CAAxB,CAEA;IAAAE,cAAA,CAAqBC,QAAS,EAAG,EAIjC,KAAAC,QAAA,CAAeC,QAAS,CAAEC,CAAF,CAASC,CAAT,CAAkB,CAEzCpB,CAAA,CAASmB,CACTlB,EAAA,CAAUmB,CAEVlB,EAAA,CAAaF,CAAb,CAAsB,CACtBG,EAAA,CAAcF,CAAd,CAAwB,CAExBK,EAAAnB,MAAAgC,MAAA,CAAyBA,CAAzB,CAAiC,IACjCb,EAAAnB,MAAAiC,OAAA,CAA0BA,CAA1B,CAAmC,IAGnCP,EAAA1B,MAAAgC,MAAA,CAA4BA,CAA5B,CAAoC,IACpCN,EAAA1B,MAAAiC,OAAA,CAA6BA,CAA7B,CAAsC,IAbG,CAiB1C,KAAIC,EAAUA,QAAS,CAAE5G,CAAF,CAAU,CAEhC,MAA2B,KAApB,CAAAQ,IAAAqG,IAAA,CAAU7G,CAAV,CAAA,CAA+B,CAA/B,CAAmCA,CAFV,CAAjC,CAwDI8G,EAAwB,QAAQ,EAAE,CAAA,IAEjCnC,EAAW,IAAIP,KAAA2C,QAFkB,CAGpCC,EAAU,IAAI5C,KAAA2C,QAHsB,CAIpCE,EAAU,IAAI7C,KAAA8C,MAJsB,CAKpCC,EAAa,IAAI/C,KAAAgD,WAGlBH,EAAAI,YAAA,CAAoBF,CACpBA,EAAAG,OAAA,CAAoBL,CAEpB,OAAO,SAAS,CAAEtB,CAAF,CAAW,CAK1BA,CAAA4B,UAAA,CAAkB5C,CAAlB,CAA4BwC,CAA5B,CAAwCH,CAAxC,CAGA,OAAO,uCAAP,CAAiDJ,CAAA,CAAQjC,CAAA6C,EAAR,CAAjD,CAAuE,MAAvE,CAAgFZ,CAAA,CAAQjC,CAAA8C,EAAR,CAAhF,CAAsG,MAAtG,CAA+Gb,CAAA,CAAQjC,CAAA+C,EAAR,CAA/G,CACI,cADJ,CACiBd,CAAA,CAAQK,CAAAO,EAAR,CADjB,CACoC,eADpC,CACsDZ,CAAA,CAAQK,CAAAQ,EAAR,CADtD;AACyE,eADzE,CAC2Fb,CAAA,CAAQK,CAAAS,EAAR,CAD3F,CAEI,eAFJ,CAEiBd,CAAA,CAAQI,CAAAQ,EAAR,CAFjB,CAEoC,IAFpC,CAE2CZ,CAAA,CAAQ,CAACI,CAAAS,EAAT,CAF3C,CAE+D,IAF/D,CAEsEb,CAAA,CAAQI,CAAAU,EAAR,CAFtE,CAEyF,GAV/D,CAXU,CAAV,EAxD5B,CAoFIC,EAAeA,QAAS,CAAEzL,CAAF,CAAU0L,CAAV,CAAmB,CAE9C,GAAK1L,CAAL,WAAuBkI,MAAAC,YAAvB,CAA2C,CAE1C,IAAIK,CAECxI,EAAL,WAAuBkI,MAAAe,YAAvB,EAICQ,CAAAkC,KAAA,CAAaD,CAAAE,mBAAb,CAUA,CATAnC,CAAAoC,UAAA,EASA,CARApC,CAAAqC,aAAA,CAAqB9L,CAAA+L,YAArB,CAQA,CAPAtC,CAAAqB,MAAA,CAAc9K,CAAA8K,MAAd,CAOA,CALArB,CAAAuC,SAAA,CAAiB,CAAjB,CAKA,CALuB,CAKvB,CAJAvC,CAAAuC,SAAA,CAAiB,CAAjB,CAIA,CAJuB,CAIvB,CAHAvC,CAAAuC,SAAA,CAAiB,EAAjB,CAGA,CAHwB,CAGxB,CAFAvC,CAAAuC,SAAA,CAAiB,EAAjB,CAEA,CAFwB,CAExB,CAAAxD,CAAA,CAAQoC,CAAA,CAAuBnB,CAAvB,CAdT,EAkBCjB,CAlBD,CAkBSoC,CAAA,CAAuB5K,CAAA+L,YAAvB,CAIT,KAAI1D,EAAUrI,CAAAqI,QAEdA,EAAAG,MAAAsB,qBAAA,CAAqC,aACrCzB,EAAAG,MAAAuB,kBAAA,CAAkC,aAClC1B,EAAAG,MAAAwB,gBAAA,CAAgC,aAChC3B,EAAAG,MAAAyB,eAAA;AAA+B,aAE/B5B,EAAAG,MAAAyD,gBAAA,CAAgCzD,CAChCH,EAAAG,MAAA0D,aAAA,CAA6B1D,CAC7BH,EAAAG,MAAA2D,WAAA,CAA2B3D,CAC3BH,EAAAG,MAAA4D,UAAA,CAA0B5D,CAGrBH,EAAAM,WAAL,GAA4BuB,CAA5B,EAECA,CAAAC,YAAA,CAA2B9B,CAA3B,CAzCyC,CA+CjC/I,CAAAA,CAAI,CAAd,KAAiBuJ,CAAjB,CAAqB7I,CAAA8I,SAAAnJ,OAArB,CAA6CL,CAA7C,CAAiDuJ,CAAjD,CAAoDvJ,CAAA,EAApD,CAECmM,CAAA,CAAczL,CAAA8I,SAAA,CAAiBxJ,CAAjB,CAAd,CAAoCoM,CAApC,CAnD6C,CA0D/C,KAAAW,OAAA,CAAcC,QAAS,CAAEC,CAAF,CAASb,CAAT,CAAkB,CAIvC,IAAIc,EAAM,GAANA,CAAYlI,IAAAmI,IAAA,CAAUvE,KAAA5D,KAAAoI,SAAA,CAAkC,GAAlC,CAAqBhB,CAAAc,IAArB,CAAV,CAAZA,CAAkElD,CAEtEK,EAAAnB,MAAAmE,kBAAA,CAAqCH,CAArC,CAA2C,IAC3C7C,EAAAnB,MAAAoE,eAAA,CAAkCJ,CAAlC,CAAwC,IACxC7C,EAAAnB,MAAAqE,aAAA,CAAgCL,CAAhC,CAAsC,IACtC7C,EAAAnB,MAAAsE,YAAA,CAA+BN,CAA/B,CAAqC,IAErCD,EAAAQ,kBAAA,EAEuBtO,KAAAA,EAAvB,GAAKiN,CAAAsB,OAAL,EAAmCtB,CAAAqB,kBAAA,EAEnCrB,EAAAE,mBAAAqB,WAAA,CAAsCvB,CAAAK,YAAtC,CAEY;IAAA,EAAA,kBAAA,CAAqBS,CAArB,CAA2B,KAA3B,CAAmC,CAvJ5CR,EAAAA,CAuJgEN,CAAAE,mBAvJrDI,SAEf,EAAA,CAAO,WAAP,CACCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CADD,CAC4B,GAD5B,CAECtB,CAAA,CAAS,CAAEsB,CAAA,CAAU,CAAV,CAAX,CAFD,CAE8B,GAF9B,CAGCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CAHD,CAG4B,GAH5B,CAICtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CAJD,CAI4B,GAJ5B,CAKCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CALD,CAK4B,GAL5B,CAMCtB,CAAA,CAAS,CAAEsB,CAAA,CAAU,CAAV,CAAX,CAND,CAM8B,GAN9B,CAOCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CAPD,CAO4B,GAP5B,CAQCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CARD,CAQ4B,GAR5B,CASCtB,CAAA,CAASsB,CAAA,CAAU,CAAV,CAAT,CATD,CAS4B,GAT5B,CAUCtB,CAAA,CAAS,CAAEsB,CAAA,CAAU,CAAV,CAAX,CAVD,CAU8B,GAV9B,CAWCtB,CAAA,CAASsB,CAAA,CAAU,EAAV,CAAT,CAXD,CAW6B,GAX7B,CAYCtB,CAAA,CAASsB,CAAA,CAAU,EAAV,CAAT,CAZD,CAY6B,GAZ7B,CAaCtB,CAAA,CAASsB,CAAA,CAAU,EAAV,CAAT,CAbD,CAa6B,GAb7B,CAcCtB,CAAA,CAAS,CAAEsB,CAAA,CAAU,EAAV,CAAX,CAdD,CAc+B,GAd/B,CAeCtB,CAAA,CAASsB,CAAA,CAAU,EAAV,CAAT,CAfD,CAe6B,GAf7B,CAgBCtB,CAAA,CAASsB,CAAA,CAAU,EAAV,CAAT,CAhBD,CAiBA,GAoIKxD,EAAAA,CAAQ,CAARA,CAA2C,CAA3CA,CACH,eADGA,CACee,CADff,CAC4B,KAD5BA,CACoCgB,CADpChB,CACkD,QAEtD0B,EAAA1B,MAAAyD,gBAAA,CAAsCzD,CACtC0B,EAAA1B,MAAA0D,aAAA,CAAmC1D,CACnC0B,EAAA1B,MAAA2D,WAAA,CAAiC3D,CACjC0B,EAAA1B,MAAA4D,UAAA,CAAgC5D,CAEhCiD,EAAA,CAAcc,CAAd,CAAqBb,CAArB,CAzBuC,CA/LR,C,CC/ClC,IAAIwB,EAAI,WAEIC,QAAQ,CAAE1H,CAAF,CAAK,CACvB,MAAO,CAAC2H,KAAA,CAAO9L,UAAA,CAAYmE,CAAZ,CAAP,CAAR,EAAmCzB,QAAA,CAAUyB,CAAV,CADZ,CAFjB,SAKE4H,QAAQ,EAAE,CAAA,IAEd/N,CAFc,CAEXgO,EAAOxL,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAEd,KAAK7D,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBgO,CAAA3N,OAAhB,CAA6BL,CAAA,EAA7B,CACC,GAAkBb,IAAAA,EAAlB,GAAI6O,CAAA,CAAMhO,CAAN,CAAJ,CAA8B,MAAOgO,EAAA,CAAMhO,CAAN,CACtC,OAAO,CAAA,CANW,CALZ,UAcKkO,QAAQ,CAACC,CAAD,CAAM,CAGvBA,CAAA,CAAMA,CAAAC,QAAA,CADeC,kCACf,CAA4B,QAAQ,CAACzI,CAAD,CAAI0I,CAAJ,CAAOC,CAAP,CAAUrI,CAAV,CAAa,CACnD,MAAOoI,EAAP,CAAWA,CAAX,CAAeC,CAAf,CAAmBA,CAAnB,CAAuBrI,CAAvB,CAA2BA,CADwB,CAAjD,CAKN,OAAO,CADHsI,CACG,CADM,2CAAAC,KAAA,CAAiDN,CAAjD,CACN,EAAS,GACTO,QAAA,CAASF,CAAA,CAAO,CAAP,CAAT,CAAoB,EAApB,CADS,GAETE,QAAA,CAASF,CAAA,CAAO,CAAP,CAAT,CAAoB,EAApB,CAFS,GAGTE,QAAA,CAASF,CAAA,CAAO,CAAP,CAAT,CAAoB,EAApB,CAHS,CAAT,CAIH,IAZmB,CAdnB,C,CCARrH,IAAAa,OAAA,CAAa2G,MAAA7G,UAAb,CAA+B,UAGnB8G,QAAQ,EAAE,CAEpB,MAAO5J,KAAAqG,IAAA,CAAU,IAAV,CAFa,CAHS,KAOxBzL,QAAQ,EAAE,CAEf,IAAIiP,EAAM,IAEVrM,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAAAiL,QAAA,CAAiD,QAAQ,CAAE3I,CAAF,CAAK,CAE7D0I,CAAA,EAAO1I,CAFsD,CAA9D,CAIA,OAAO0I,EARQ,CAPc,WAiBlBE,QAAQ,EAAE,CAErB,MAAO/J,KAAAgK,KAAA,CAAW,IAAX,CAFc,CAjBQ,SAqBpBC,QAAQ,EAAE,CAEnB,MAAOjK,KAAAS,KAAA,CAAW,IAAX,CAFY,CArBU,YAyBjByJ,QAAQ,EAAE,CAEtB,MAAOlK,KAAAmK,KAAA,CAAW,IAAX,CAFe,CAzBO,WA6BlBC,QAAQ,CAAE7J,CAAF,CAAKW,CAAL,CAAQ,CAAA,IAEvBmJ,CAFuB,CAEfC,CAFe,CAERC,EAAI,IAEvBrJ,EAAA,CAAIA,CAAJ,EAAS,CACTmJ,EAAA,CAASrK,IAAAwK,IAAA,CAAUjK,CAAV,CAAaW,CAAb,CACToJ,EAAA,CAAStK,IAAAyK,IAAA,CAAUlK,CAAV,CAAaW,CAAb,CACTqJ,EAAA,CAAIvK,IAAAyK,IAAA,CAAUF,CAAV,CAAaF,CAAb,CAEJ,OADAE,EACA,CADIvK,IAAAwK,IAAA,CAAUD,CAAV,CAAaD,CAAb,CARuB,CA7BE,QAwCrBI,QAAQ,EAAE,CAElB,MAAO1K,KAAAC,IAAA,CAAU,IAAV,CAFW,CAxCW,oBA4CT0K,QAAQ,EAAE,CAE9B,IAEAC;AAAa,uDAAA,MAAA,CAAA,GAAA,CACb,OAAOA,EAAA,CAAY,IAAApE,MAAA,CAAY,CAAZ,CAAe,GAAf,CAAoB,CAApB,CAAuBoE,CAAAvP,OAAvB,CAA2C,CAA3C,CAAAwP,MAAA,EAAZ,CALuB,CA5CD,kBAmDXC,QAAQ,EAAE,CAE5B,MAAO,KAAP,CAAc9K,IAAAE,GAAd,CAAwB,GAFI,CAnDC,QAuDrB6K,QAAQ,EAAE,CAElB,IAAIlB,EAAM,IAEVrM,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAAAiL,QAAA,CAAiD,QAAQ,CAAE3I,CAAF,CAAK,CAE7D0I,CAAA,EAAO1I,CAFsD,CAA9D,CAIA,OAAO0I,EARW,CAvDW,WAiElBmB,QAAQ,CAAEzK,CAAF,CAAKW,CAAL,CAAQ,CAAA,IAG3BuJ,EAAMzK,IAAAyK,IAAA,CAAUlK,CAAV,CAAaW,CAAb,CAHqB,CAI3BsJ,EAAMxK,IAAAwK,IAAA,CAAUjK,CAAV,CAAaW,CAAb,CAEN,OAASuJ,EAAT,EAAgB,IAAhB,EAAwB,IAAxB,EAAgCD,CANL,CAjEE,MAyEvBS,QAAQ,CAAE1K,CAAF,CAAKW,CAAL,CAAQ,CAEtB,MAAOX,EAAP,EAAYW,CAAZ,CAAgBX,CAAhB,EAAsB,IAFA,CAzEO,KA6ExB2K,QAAQ,CAAEC,CAAF,CAAQ,CAErB,MAAOnL,KAAAkL,IAAA,CAAU,IAAV,CAAP,EAAqC/Q,IAAAA,EAAT,GAAAgR,CAAA,CAAqB,CAArB,CAAyBnL,IAAAkL,IAAA,CAAUC,CAAV,CAArD,CAFqB,CA7EQ,OAiFtBC,QAAQ,EAAE,CAGjB,MAAOpL,KAAAkL,IAAA,CAAU,IAAV,CAAP;AAA0BlL,IAAAqL,KAHT,CAjFY,SAsFpBC,QAAQ,CAAEnK,CAAF,CAAK,CAEtB,MAAOnB,KAAAwK,IAAA,CAAU,IAAV,CAAgBrJ,CAAhB,CAFe,CAtFO,SA0FpBoK,QAAQ,CAAEpK,CAAF,CAAK,CAEtB,MAAOnB,KAAAyK,IAAA,CAAU,IAAV,CAAgBtJ,CAAhB,CAFe,CA1FO,QA8FrBqK,QAAQ,CAAErK,CAAF,CAAK,CAErB,OAAU,IAAV,CAAiBA,CAAjB,CAAuBA,CAAvB,EAA6BA,CAFR,CA9FQ,UAkGnBsK,QAAQ,EAAE,CAEpB,IAAI5B,EAAM,IAEVrM,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAAAiL,QAAA,CAAiD,QAAQ,CAAE3I,CAAF,CAAK,CAE7D0I,CAAA,EAAO1I,CAFsD,CAA9D,CAIA,OAAO0I,EARa,CAlGS,WA4GlB6B,QAAQ,CAAEnL,CAAF,CAAKW,CAAL,CAAQ,CAE3B,MAAIX,EAAJ,EAASW,CAAT,CAAoB,CAApB,EACS,IADT,CACgBX,CADhB,GACwBW,CADxB,CAC4BX,CAD5B,CAF2B,CA5GE,SAiHpBoL,QAAQ,CAAEC,CAAF,CAAY,CAE7B,MAAO5L,KAAAI,IAAA,CAAU,IAAV,CAAgBwL,CAAhB,CAFsB,CAjHA,kBAqHXC,QAAQ,EAAE,CAE5B,MAAc,IAAd,CAAO,IAAP,CAAoB7L,IAAAE,GAFQ,CArHC,MAyHvB4L,QAAQ,CAAE3K,CAAF,CAAK,CAAA,IAEfsJ,CAEJ,OAAUtQ,KAAAA,EAAV,GAAIgH,CAAJ,EAECsJ,CAEO,CAFDzK,IAAAyK,IAAA,CAAU,IAAV,CAAgBtJ,CAAhB,CAEC,CADPqJ,CACO,CADDxK,IAAAwK,IAAA,CAAU,IAAV,CAAgBrJ,CAAhB,CACC,CAAAsJ,CAAA,CAAMzK,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ;CAA8BvB,CAA9B,CAAoCC,CAApC,EAJd,EAMOzK,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ,CAA4B,IAA5B,CAVY,CAzHU,QAqIrBA,QAAQ,CAAE5K,CAAF,CAAK,CAAA,IAEjBsJ,CAEJ,OAAUtQ,KAAAA,EAAV,GAAIgH,CAAJ,EAECsJ,CAEO,CAFDzK,IAAAyK,IAAA,CAAU,IAAV,CAAgBtJ,CAAhB,CAEC,CADPqJ,CACO,CADDxK,IAAAwK,IAAA,CAAU,IAAV,CAAgBrJ,CAAhB,CACC,CAAAsJ,CAAA,CAAMzK,IAAA+L,OAAA,EAAN,EAAwBvB,CAAxB,CAA8BC,CAA9B,CAJR,EAMOzK,IAAA+L,OAAA,EANP,CAMuB,IAVF,CArIQ,WAiJlBC,QAAQ,CAAE7K,CAAF,CAAK,CAExB,MAAO,KAAP,CAAcA,CAFU,CAjJK,OAqJtB0J,QAAQ,CAAEoB,CAAF,CAAY,CAE3B,IAAI9K,CAEJ8K,EAAA,CAAWA,CAAX,EAAuB,CACvB9K,EAAA,CAHSA,IAGT,CAAKnB,IAAAI,IAAA,CAAU,EAAV,CAAc6L,CAAd,CACL9K,EAAA,CAAKnB,IAAA6K,MAAA,CAAY1J,CAAZ,CAEL,OADAA,EACA,EADKnB,IAAAI,IAAA,CAAU,EAAV,CAAc6L,CAAd,CAPsB,CArJE,WA+JlBC,QAAQ,EAAE,CAErB,MAAOlM,KAAAc,MAAA,CAAY,IAAZ,CAFc,CA/JQ,SAmKpBqL,QAAQ,EAAE,CAEnB,MAAOnM,KAAAoM,KAAA,CAAW,IAAX,CAFY,CAnKU,OAuKtB5F,QAAQ,CAAE6F,CAAF,CAAMC,CAAN,CAAUC,CAAV,CAAcC,CAAd,CAAkB,CAE7BC,CAAAA,CAAQ,IAAAf,UAAA,CAAgBW,CAAhB,CAAoBC,CAApB,CAEZ,OAAIC,EAAJ,EAAUC,CAAV,CAAsBA,CAAtB,CACOD,CADP,CACYE,CADZ,EACsBD,CADtB,CAC2BD,CAD3B,CAJiC,CAvKJ,MA8KvBG,QAAQ,EAAE,CAEhB,MAAO1M,KAAAG,IAAA,CAAU,IAAV,CAFS,CA9Ka,UAkLnBwM,QAAQ,EAAE,CAEpB,IAAI9C;AAAM,IAEVrM,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAAAiL,QAAA,CAAiD,QAAQ,CAAE3I,CAAF,CAAK,CAE7D0I,CAAA,EAAO1I,CAFsD,CAA9D,CAIA,OAAO0I,EARa,CAlLS,SA4LpB+C,QAAQ,EAAE,CAEnB,MAAO5M,KAAAmI,IAAA,CAAU,IAAV,CAFY,CA5LU,SAgMpB0E,QAAQ,EAAE,CAEnB,MAAO,CAAE,IAAAtS,QAAA,EAAF,CAFY,CAhMU,UAoMnBuS,QAAQ,EAAE,CAEpB,MAAO,KAAAvS,QAAA,EAFa,CApMS,gBAwMbwS,QAAQ,CAAEC,CAAF,CAAW,CAEnC,MAAS/D,CAAA,eAAAA,CAAkBgE,MAAA,CAAQ,IAAR,CAAlBhE,OAAA,CAAyC,CAAC+D,CAA1C,CAF0B,CAxMN,gBA4MbE,QAAQ,EAAE,CAE1B,IAAIC,EAAW,EAAXA,CAAgB,IAER,EAAZ,EAAI,IAAJ,GAAgBA,CAAhB,CAA2B,GAA3B,CAAiCA,CAAjC,CACA,OAAOA,EALmB,CA5MG,UAmNnBC,QAAQ,EAAE,CAEpB,MAAO,EAAP,CAAW,IAFS,CAnNS,CAA/B,C,CCAAjL,IAAAa,OAAA,CAAaiK,MAAAnK,UAAb,CAA+B,YAGjBuK,QAAQ,EAAE,CAEtB,MAAO,KAAAC,OAAA,CAAa,CAAb,CAAAC,YAAA,EAAP,CAAwC,IAAAtE,MAAA,CAAY,CAAZ,CAFlB,CAHO,QAOtBuE,QAAQ,EAAE,CAAA,IAGjBlN,EAAI,EAHa,CAIjBtF,CAEA,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CAE0DsF,CAAA,CAArD,IAAAgN,OAAA,CAAatS,CAAb,CAAJ,GAAyB,IAAAsS,OAAA,CAAatS,CAAb,CAAAuS,YAAA,EAAzB,CAAyDjN,CAAzD,CAA8D,IAAAgN,OAAA,CAAatS,CAAb,CAAAyS,YAAA,EAA9D,CACKnN,CADL,CACU,IAAAgN,OAAA,CAAatS,CAAb,CAAAuS,YAAA,EAEX,OAAOjN,EAXU,CAPY,eAoBdoN,QAAQ,CAAEvM,CAAF,CAAK,CAAA,IAG5BwM,EAAkB3N,IAAA6K,MAAA,CAAY,IAAAxP,OAAZ,CAA0B,CAA1B,CAHU,CAI5BuS,EAAkB,IAAAvS,OAAlBuS,CAAgCD,CAJJ,CAK5BE,EAAuB7N,IAAA6K,MAAA,CAAY1J,CAAZ,CAAgB,CAAhB,CALK,CAO5B2M,EAAiBD,CAAjBC,CAAwCH,CACxCI,EAAAA,CAFuB5M,CAEvB4M,CAF2BF,CAE3BE,CAAwCH,CACxCI,EAAAA,CAAW,IAEX,IAAoB,CAApB,CAAIF,CAAJ,CAEC,IAAA,CAAOA,CAAA,EAAP,CAAA,CAA0BE,CAAA,CAAW,GAAX,CAAiBA,CAF5C,KAIyB,EAApB,CAAIF,CAAJ,GAEJE,CAFI,CAEOA,CAAAC,OAAA,CAAkC,EAAlC,CAAiBH,CAAjB,CAFP,CAIL,IAAqB,CAArB,CAAIC,CAAJ,CAEC,IAAA,CAAOA,CAAA,EAAP,CAAA,CAA2BC,CAAA,EAAY,GAFxC,KAI0B,EAArB,CAAID,CAAJ,GAEJC,CAFI,CAEOA,CAAAC,OAAA,CAAiB,CAAjB,CAAoBD,CAAA3S,OAApB;AAAsC0S,CAAtC,CAFP,CAIL,OAAOC,EA3BqB,CApBC,aAiDjBE,QAAQ,CAAE/M,CAAF,CAAK,CAIzB,IAFA,IAAIgN,EAAY,IAEhB,CAAOA,CAAA9S,OAAP,CAA0B8F,CAA1B,CAAA,CAA8BgN,CAAA,EAAwB,GACtD,OAAOA,EALkB,CAjDI,cAwDhBC,QAAQ,CAAEjN,CAAF,CAAK,CAI1B,IAFA,IAAIgN,EAAY,IAEhB,CAAOA,CAAA9S,OAAP,CAA0B8F,CAA1B,CAAA,CAA8BgN,CAAA,CAAY,GAAZ,CAAkBA,CAChD,OAAOA,EALmB,CAxDG,UA+DnB1C,QAAQ,CAAEtK,CAAF,CAAK,CAAA,IAEnBnG,CAFmB,CAEhBsF,EAAI,EAEXa,EAAA,CAAIyH,CAAAG,QAAA,CAAW5H,CAAX,CAAc,CAAd,CACJ,KAAKnG,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBmG,CAAhB,CAAmBnG,CAAA,EAAnB,CACCsF,CAAA,EAAK,IAEN,OAAOA,EARgB,CA/DM,SAyEpB+N,QAAQ,EAAE,CAAA,IAEfrT,CAFe,CAEZsF,EAAI,EAEX,KAAKtF,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CACCsF,CAAA,CAAI,IAAA,CAAMtF,CAAN,CAAJ,CAAgBsF,CAEjB,OAAOA,EAPY,CAzEU,MAkFvBgO,QAAQ,EAAE,CAEhB,MAAO,KAAAjT,OAFS,CAlFa,YAsFjBkT,QAAQ,EAAE,CAAA,IAElBvT,CAFkB,CAEfwT,EAAW,EAElB,KAAKxT,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CACCwT,CAAA,EAAY,IAAZ,CAAmB,IAAAC,WAAA,CAAiBzT,CAAjB,CAAnB,CAA0C,GAE3C,OAAOwT,EAPe,CAtFO,aA+FhBE,QAAQ,EAAE,CAAA,IAGvBC,EAAS,IAAAA,MAAA,CAAY,QAAZ,CAHc,CAIvBC;AAASD,CAAA,CAAO,CAAP,CAJc,CAKvB3T,CAEA,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB2T,CAAAtT,OAAhB,CAA8BL,CAAA,EAA9B,CACC4T,CAAA,EAAUD,CAAA,CAAO3T,CAAP,CAAAqS,WAAA,EAEX,OAAOuB,EAVgB,CA/FM,oBA2GTC,QAAQ,EAAE,CAAA,IAG9BjE,EAAa,uDAAA,MAAA,CAAA,GAAA,CAHiB,CAI9B5P,EAAI4P,CAAA3P,QAAA,CAAoB,IAAAsS,YAAA,EAApB,CAEJ,OAAY,EAAL,EAAAvS,CAAA,CAASA,CAAAwL,MAAA,CAAS,CAAT,CAAYoE,CAAAvP,OAAZ,CAAgC,CAAhC,CAAmC,CAAnC,CAAsC,GAAtC,CAAT,CAAuDsO,MAAAmF,IANhC,CA3GD,SAmHpBjC,QAAQ,EAAE,CAEnB,MAAO,CAAE,IAAF,CAFY,CAnHU,UAuHnBC,QAAQ,EAAE,CAEpB,MAAO9P,WAAA,CAAY,IAAZ,CAFa,CAvHS,UA2HnBoQ,QAAQ,EAAE,CAEpB,MAAO,KAFa,CA3HS,kBA+HX2B,QAAQ,EAAE,CAE5B,IAAIC,EAAc,IAAA5F,QAAA,CAAc,SAAd,CAAyB,QAAQ,CAAE6F,CAAF,CAAM,CAExD,MAAO,GAAP,CAAaA,CAF2C,CAAvC,CAKc,IAAhC,GAAID,CAAA1B,OAAA,CAAoB,CAApB,CAAJ,GAAsC0B,CAAtC,CAAoDA,CAAAf,OAAA,CAAoB,CAApB,CAApD,CACA,OAAOe,EAAAvB,YAAA,EARqB,CA/HC;UAyIlByB,QAAQ,EAAE,CAAA,IAEjBlU,CAFiB,CAEdmU,CAFc,CAEXC,EAAU,EAEpB,KAAKpU,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CAAmC,CAElC,IADAmU,CACA,CADI,IAAAV,WAAA,CAAiBzT,CAAjB,CAAAoS,SAAA,CAA+B,EAA/B,CAAAG,YAAA,EACJ,CAAkB,CAAlB,CAAO4B,CAAA9T,OAAP,CAAA,CACC8T,CAAA,CAAI,GAAJ,CAAUA,CAEXC,EAAA,EAAW,KAAX,CAAmBD,CALe,CAOnC,MAAOC,EAXc,CAzIQ,CAA/B,C,CCAAjN,IAAAa,OAAA,CAAaxF,KAAAsF,UAAb,CAA8B,YAGhBuM,QAAQ,CAAEC,CAAF,CAAU,CAAA,IAE1BtU,CAF0B,CAEvB6O,EAAM,CAEU,EAAvB,CAAIhL,SAAAxD,OAAJ,GACCiU,CADD,CACU9R,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CADV,CAEA,IAAI,IAAAxD,OAAJ,GAAoBiU,CAAAjU,OAApB,CAAmC,CAElC,IAAKL,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CACC6O,CAAA,EAAO7J,IAAAI,IAAA,CAAUkP,CAAA,CAAOtU,CAAP,CAAV,CAAsB,IAAA,CAAKA,CAAL,CAAtB,CAA+B,CAA/B,CACR,OAAOgF,KAAAI,IAAA,CAAUyJ,CAAV,CAAe,GAAf,CAJ2B,CAM9B,MAAO,KAZkB,CAHF,OAiBrB0F,QAAQ,EAAE,CAEjB,MAAO,KAAA,CAAM,CAAN,CAFU,CAjBW,MAqBtBC,QAAQ,EAAE,CAEhB,MAAO,KAAA,CAAM,IAAAnU,OAAN,CAAoB,CAApB,CAFS,CArBY,SAyBnBiQ,QAAQ,EAAE,CAEnB,MAAOtL,KAAAwK,IAAAiF,MAAA,CAAgB,IAAhB,CAAsB,IAAtB,CAFY,CAzBS,QA6BpBC,QAAQ,EAAE,CAElB,MAAO,KAAA,CAAM1P,IAAA6K,MAAA,EAAa,IAAAxP,OAAb,CAA2B,CAA3B,EAAiC,CAAjC,CAAN,CAFW,CA7BU,SAiCnBkQ,QAAQ,EAAE,CAEnB,MAAOvL,KAAAyK,IAAAgF,MAAA,CAAgB,IAAhB,CAAsB,IAAtB,CAFY,CAjCS,MAqCtB3D,QAAQ,EAAE,CAEhB,MAAO,KAAA,CAAM9L,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ;AAA4B,IAAA1Q,OAA5B,CAAN,CAFS,CArCY,QAyCpB0Q,QAAQ,EAAE,CAElB,MAAO,KAAA,CAAM/L,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ,CAA4B,IAAA1Q,OAA5B,CAAN,CAFW,CAzCU,SAqDnBsU,QAAQ,EAAE,CAAA,IAInB3U,EAAI,IAAAK,OAJe,CAKnBuU,CALmB,CAMnBC,CANmB,CAOnBC,CAEA,IAAS,CAAT,EAAI9U,CAAJ,CAAa,MAAO,CAAA,CACpB,KAAA,CAAO,EAAGA,CAAV,CAAA,CAEC4U,CAIA,CAJI5P,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ,EAA8B/Q,CAA9B,CAAkC,CAAlC,EAIJ,CAHA6U,CAGA,CAbMxI,IAUE,CAAMrM,CAAN,CAGR,CAFA8U,CAEA,CAbMzI,IAWE,CAAMuI,CAAN,CAER,CAbMvI,IAYN,CAAMrM,CAAN,CACA,CADY8U,CACZ,CAbMzI,IAaN,CAAMuI,CAAN,CAAA,CAAYC,CAEb,OAfOxI,KAHY,CArDS,SAyEnBwF,QAAQ,EAAE,CAEnB,MAAO,KAFY,CAzES,QA6EpBkD,QAAQ,EAAE,CAAA,IAEd/U,CAFc,CAEXgV,EAAO,MAEd,KAAKhV,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CAGEgV,CAAA,CADG,IAAA,CAAMhV,CAAN,CAAJ,UAAyBwC,MAAzB,CACCwS,CADD,CACS,IAAA,CAAMhV,CAAN,CAAA+U,OAAA,EADT,CAGCC,CAHD,EAGS,MAHT,CAGkB,IAAA,CAAMhV,CAAN,CAHlB,CAG8B,OAH9B,CAMD,OADAgV,EACA,CADQ,OAXU,CA7EU,QA2FpBC,QAAQ,CAAEC,CAAF,CAAS,CAAA,IAErBlV,CAFqB,CAElBmV,CAFkB,CAEVC,CAEfF,EAAA,CAAQtH,CAAAG,QAAA,CAAWmH,CAAX,CAAkB,CAAlB,CACRC,EAAA,CAAS,IAAT,CAAgB,IAAA1E,SAAA,CAAeyE,CAAf,CAChBE,EAAA,CAAO,EACP,KAAKpV,CAAL;AAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAK,OAAhB,CAA6BL,CAAA,EAA7B,CAGEoV,CAAA,CADG,IAAA,CAAMpV,CAAN,CAAJ,UAAyBwC,MAAzB,CACC4S,CADD,EACSD,CADT,CACkB,IAAA,CAAMnV,CAAN,CAAAiV,OAAA,CAAkBC,CAAlB,CAA0B,CAA1B,CADlB,EAGCE,CAHD,EAGSD,CAHT,CAGkB,IAAA,CAAMnV,CAAN,CAHlB,CAKD,OAAOoV,EAdkB,CA3FG,CAA9B,C,CC2BAjO,IAAAkO,MAAA,CAAaC,QAAQ,CAAEC,CAAF,CAAQC,CAAR,CAAiBrH,CAAjB,CAAsBsH,CAAtB,CAA8BC,CAA9B,CAAsC,CAE1D,IAAAH,KAAA,CAAeA,CACf,KAAAC,QAAA,CAAeA,CACf,KAAArH,IAAA,CAAeA,CACf,KAAAsH,OAAA,CAAeA,CACf,KAAAC,OAAA,CAAeA,CAN2C,CA3B3D,KAuCIC,CAvCJ,CAwCCC,CAxCD,CAyCCC,CAzCD,CA0CCC,CA1CD,CA2CCC,CA3CD,CA4CCC,CA5CD,CA6CCC,UAEDN,EAAA,CAAIxO,IAAA+O,MAAJ,CAAiB,IAAI/O,IAAAkO,MAAJ,CAEhB,OAFgB,CAGhB,GAHgB,CAIhB,MAJgB,CAKhB,gCALgB,CAMhB,wDANgB,CAQjBO,EARA,CAQIzO,IAAAgP,OARJ,CAQkB,IAAIhP,IAAAkO,MAAJ,CAEjB,QAFiB,CAGjB,GAHiB,CAIjB,MAJiB,CAKjB,gCALiB,CAMjB,2DANiB,CAQlBQ,EAhBA,CAgBI1O,IAAAiP,KAhBJ,CAgBgB,IAAIjP,IAAAkO,MAAJ,CAEf,MAFe,CAGf,GAHe,CAIf,MAJe,CAKf,gCALe,CAMf,2DANe,CAQhBS;CAxBA,CAwBI3O,IAAAkP,IAxBJ,CAwBe,IAAIlP,IAAAkO,MAAJ,CAEd,KAFc,CAGd,GAHc,CAId,MAJc,CAKd,gCALc,CAMd,2DANc,CAQfU,EAhCA,CAgCI5O,IAAAmP,MAhCJ,CAgCiB,IAAInP,IAAAkO,MAAJ,CAEhB,OAFgB,CAGhB,GAHgB,CAIhB,MAJgB,CAKhB,gCALgB,CAMhB,2DANgB,CAQjBW,EAxCA,CAwCI7O,IAAAoP,OAxCJ,CAwCkB,IAAIpP,IAAAkO,MAAJ,CAEjB,QAFiB,CAGjB,GAHiB,CAIjB,MAJiB,CAKjB,gCALiB,CAMjB,qDANiB,CAQlBlO,KAAAqP,UAhDA,CAgDiB,IAAIrP,IAAAkO,MAAJ,CAEhB,IAFgB,CAGhB,GAHgB,CAIhB,MAJgB,CAKhB,aALgB,CAMhB,aANgB,C,CCpBjBlO,IAAAsP,UAAA,CAAiBC,QAAQ,CAAEC,CAAF,CAAMpB,CAAN,CAAYqB,CAAZ,CAAoB,CAE5C,IAAAD,GAAA,CAAiBA,CACjB,KAAApB,KAAA,CAAiBA,CAAA9C,YAAA,EACjB,KAAAmE,OAAA,CAAiBA,CACjB,KAAApB,QAAA,CAAiBD,CAAAtC,OAAA,CAAa,CAAb,CAAgB,CAAhB,CAAAV,YAAA,EACjB,KAAAsE,UAAA,CAAiB,EACjB,KAAAC,SAAA,CAAiB,IAP2B,CAS7C3P,KAAAsP,UAAA3O,UAAAiP,iBAAA,CAA4CC,QAAQ,CAAEC,CAAF,CAAMC,CAAN,CAAaC,CAAb,CAAmBC,CAAnB,CAAyBN,CAAzB,CAAmC,CAEtF,IAAAD,UAAA,CAAiB,CAAEI,CAAF,CAAMC,CAAN,CAAaC,CAAb,CAAmBC,CAAnB,CACjB,KAAAN,SAAA,CAAiBA,CAHqE,CASvF3P,KAAAsP,UAAAY,YAAA,CAA6BC,QAAQ,CAAEX,CAAF,CAAM,CAE1C,MAAO,+BAAA,MAAA,CAAA,GAAA,CASA,CAAJA,CAAI,CAXmC,CAa3CxP,KAAAsP,UAAAc,YAAA,CAA6BC,QAAQ,CAAEjC,CAAF,CAAQ,CAE5C,MAAO,OAEC,CAFD,IAGC,CAHD,OAIC,CAJD,MAKC,CALD,MAMC,CAND,MAOC,CAPD,CASA,CAAJA,CAAI,CAXqC,CAa7CpO;IAAAsP,UAAAgB,iBAAA,CAAkCC,QAAQ,CAAEf,CAAF,CAAM,CAE/C,MAAO,CAENxP,IAAAsP,UAAAkB,MAFM,CAGNxQ,IAAAsP,UAAAmB,GAHM,CAINzQ,IAAAsP,UAAAoB,MAJM,CAKN1Q,IAAAsP,UAAAqB,KALM,CAMN3Q,IAAAsP,UAAAsB,KANM,CAON5Q,IAAAsP,UAAAuB,KAPM,CASA,CAAJrB,CAAI,CAXwC,CAahDxP,KAAAsP,UAAAwB,sBAAA,CAAuCC,QAAQ,CAAE1C,CAAF,CAAW,CAEzD,MAAO,GAEHrO,IAAAsP,UAAAkB,MAFG,GAGHxQ,IAAAsP,UAAAmB,GAHG,GAIHzQ,IAAAsP,UAAAoB,MAJG,GAKH1Q,IAAAsP,UAAAqB,KALG,GAMH3Q,IAAAsP,UAAAsB,KANG,GAOH5Q,IAAAsP,UAAAuB,KAPG,CASA,CAAJxC,CAAAjD,YAAA,EAAI,CAXkD,CAa1DpL;IAAAsP,UAAA0B,mBAAA,CAAoCC,QAAQ,CAAE7C,CAAF,CAAQ,CAEnD,MAAO,OAECpO,IAAAsP,UAAAkB,MAFD,IAGCxQ,IAAAsP,UAAAmB,GAHD,OAICzQ,IAAAsP,UAAAoB,MAJD,MAKC1Q,IAAAsP,UAAAqB,KALD,MAMC3Q,IAAAsP,UAAAsB,KAND,MAOC5Q,IAAAsP,UAAAuB,KAPD,CASA,CAAJzC,CAAA9C,YAAA,EAAI,CAX4C,CAapDtL;IAAAsP,UAAA4B,qBAAA,CAAsC,QAAQ,EAAE,CAE/C,IAAIC,EAAU,IAAI1P,KAAA2C,QAElB,OAAO,SAAS,CAAEqL,CAAF,CAAU,CAGzB0B,CAAAtM,EAAA,CAAWhH,IAAA6K,MAAA,CAAY+G,CAAA5K,EAAZ,CACXsM,EAAArM,EAAA,CAAWjH,IAAA6K,MAAA,CAAY+G,CAAA3K,EAAZ,CACXqM,EAAApM,EAAA,CAAWlH,IAAA6K,MAAA,CAAY+G,CAAA1K,EAAZ,CAEX,OAAQoM,EAAAC,OAAA,CAAepR,IAAAsP,UAAAkB,MAAAf,OAAf,CAAA,CAAgDzP,IAAAsP,UAAAkB,MAAhD,CACNW,CAAAC,OAAA,CAAepR,IAAAsP,UAAAuB,KAAApB,OAAf,CAAA,CAAgDzP,IAAAsP,UAAAuB,KAAhD,CACAM,CAAAC,OAAA,CAAepR,IAAAsP,UAAAmB,GAAAhB,OAAf,CAAA,CAA6CzP,IAAAsP,UAAAmB,GAA7C,CACAU,CAAAC,OAAA,CAAepR,IAAAsP,UAAAqB,KAAAlB,OAAf,CAAA,CAA+CzP,IAAAsP,UAAAqB,KAA/C,CACAQ,CAAAC,OAAA,CAAepR,IAAAsP,UAAAsB,KAAAnB,OAAf,CAAA,CAA+CzP,IAAAsP,UAAAsB,KAA/C,CACAO,CAAAC,OAAA,CAAepR,IAAAsP,UAAAoB,MAAAjB,OAAf,CAAA,CAAgDzP,IAAAsP,UAAAoB,MAAhD,CACA,IAbuB,CAJqB,CAAV,EA8BtC1Q;IAAAsP,UAAA3O,UAAA0Q,YAAA,CAAuCC,QAAQ,CAAEH,CAAF,CAAUI,CAAV,CAAgBC,CAAhB,CAAuB,CAExDxZ,IAAAA,EAAb,GAAIuZ,CAAJ,GAAyBA,CAAzB,CAAgC,IAAA7B,UAAA,CAAgB,CAAhB,CAAhC,CACA,IAAI6B,CAAJ,GAAa,IAAb,EAAqBA,CAArB,GAA8B,IAAA5B,SAA9B,CAA8C,MAAO,KACrD6B,EAAA,CAAkBxZ,IAAAA,EAAV,GAAAwZ,CAAA,CAAsB,CAAtB,CAA0BA,CAAAnI,OAAA,CAAc,CAAd,CAClC,KAAK,IAAIxQ,EAAI,CAAb,CAAoB,CAApB,CAAgBA,CAAhB,EAEK,IAAA6W,UAAA,CAAgB7W,CAAhB,CAFL,GAE6B0Y,CAF7B,CAAuB1Y,CAAA,EAAvB,EAIA,MAAO,KAAA6W,UAAA,CAAgB7W,CAAAJ,IAAA,CAAO+Y,CAAP,CAAeL,CAAf,CAAA9H,OAAA,CAAgC,CAAhC,CAAhB,CAT8D,CAWtErJ,KAAAsP,UAAA3O,UAAA8Q,aAAA,CAAwCC,QAAQ,CAAEH,CAAF,CAAQC,CAAR,CAAe,CAE9D,MAAO,KAAAH,YAAA,CAAmB,CAAnB,CAAsBE,CAAtB,CAA4BC,CAA5B,CAFuD,CAI/DxR,KAAAsP,UAAA3O,UAAAgR,iBAAA,CAA4CC,QAAQ,CAAEL,CAAF,CAAQC,CAAR,CAAe,CAElE,MAAO,KAAAH,YAAA,CAAmB,EAAnB,CAAsBE,CAAtB,CAA4BC,CAA5B,CAF2D,CAYnExR;IAAAsP,UAAA3O,UAAAkR,aAAA,CAAwCC,QAAQ,CAAEC,CAAF,CAAajC,CAAb,CAAiB,CAEhE,MAAO,KAAAuB,YAAA,CAAkB,CAAlB,CAAqBvB,CAArB,CAAyBiC,CAAAvC,GAAzB,CAAwC,CAAxC,CAFyD,CAIjExP,KAAAsP,UAAA3O,UAAAqR,MAAA,CAAiCC,QAAQ,CAAEnC,CAAF,CAAM,CAE9C,MAAO,KAAA+B,aAAA,CAAmB7R,IAAAsP,UAAAmB,GAAnB,CAAsCX,CAAtC,CAFuC,CAI/C9P,KAAAsP,UAAA3O,UAAAuR,SAAA,CAAoCC,QAAQ,CAAErC,CAAF,CAAM,CAEjD,MAAO,KAAA+B,aAAA,CAAmB7R,IAAAsP,UAAAoB,MAAnB,CAAyCZ,CAAzC,CAF0C,CAIlD9P,KAAAsP,UAAA3O,UAAAyR,QAAA,CAAmCC,QAAQ,CAAEvC,CAAF,CAAM,CAEhD,MAAO,KAAA+B,aAAA,CAAmB7R,IAAAsP,UAAAqB,KAAnB,CAAwCb,CAAxC,CAFyC,CAIjD9P,KAAAsP,UAAA3O,UAAA2R,QAAA,CAAmCC,QAAQ,CAAEzC,CAAF,CAAM,CAEhD,MAAO,KAAA+B,aAAA,CAAmB7R,IAAAsP,UAAAsB,KAAnB,CAAwCd,CAAxC,CAFyC,CAUjD9P,KAAAsP,UAAA3O,UAAA6R,YAAA,CAAuCC,QAAQ,EAAE,CAEhD,MAAO,KAAA9C,SAFyC,CAcjD3P;IAAAsP,UAAAkB,MAAA,CAAuB,IAAIxQ,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,OAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,CAApB,CAAwB,CAAxB,CAA4B,CAA5B,CAAhC,CACvBpE,KAAAsP,UAAAmB,GAAA,CAAuB,IAAIzQ,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,IAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,CAApB,CAAwB,CAAxB,CAA4B,CAA5B,CAAhC,CACvBpE,KAAAsP,UAAAoB,MAAA,CAAuB,IAAI1Q,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,OAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,CAApB,CAAwB,CAAxB,CAA4B,CAA5B,CAAhC,CACvBpE,KAAAsP,UAAAqB,KAAA,CAAuB,IAAI3Q,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,MAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,CAApB,CAAwB,EAAxB,CAA4B,CAA5B,CAAhC,CACvBpE,KAAAsP,UAAAsB,KAAA,CAAuB,IAAI5Q,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,MAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,EAApB,CAAwB,CAAxB,CAA4B,CAA5B,CAAhC,CACvBpE,KAAAsP,UAAAuB,KAAA,CAAuB,IAAI7Q,IAAAsP,UAAJ,CAAoB,CAApB,CAAuB,MAAvB,CAAgC,IAAI7N,KAAA2C,QAAJ,CAAoB,CAApB,CAAwB,CAAxB,CAA4B,EAA5B,CAAhC,CAMvBpE;IAAAsP,UAAAkB,MAAAZ,iBAAA,CAAuC5P,IAAAsP,UAAAmB,GAAvC,CAA6DzQ,IAAAsP,UAAAoB,MAA7D,CAAmF1Q,IAAAsP,UAAAqB,KAAnF,CAAyG3Q,IAAAsP,UAAAsB,KAAzG,CAA+H5Q,IAAAsP,UAAAuB,KAA/H,CACA7Q,KAAAsP,UAAAmB,GAAAb,iBAAA,CAAuC5P,IAAAsP,UAAAuB,KAAvC,CAA6D7Q,IAAAsP,UAAAoB,MAA7D,CAAmF1Q,IAAAsP,UAAAkB,MAAnF,CAAyGxQ,IAAAsP,UAAAsB,KAAzG,CAA+H5Q,IAAAsP,UAAAqB,KAA/H,CACA3Q,KAAAsP,UAAAoB,MAAAd,iBAAA,CAAuC5P,IAAAsP,UAAAmB,GAAvC,CAA6DzQ,IAAAsP,UAAAuB,KAA7D,CAAmF7Q,IAAAsP,UAAAqB,KAAnF,CAAyG3Q,IAAAsP,UAAAkB,MAAzG,CAA+HxQ,IAAAsP,UAAAsB,KAA/H,CACA5Q;IAAAsP,UAAAqB,KAAAf,iBAAA,CAAuC5P,IAAAsP,UAAAkB,MAAvC,CAA6DxQ,IAAAsP,UAAAoB,MAA7D,CAAmF1Q,IAAAsP,UAAAuB,KAAnF,CAAyG7Q,IAAAsP,UAAAsB,KAAzG,CAA+H5Q,IAAAsP,UAAAmB,GAA/H,CACAzQ,KAAAsP,UAAAsB,KAAAhB,iBAAA,CAAuC5P,IAAAsP,UAAAmB,GAAvC,CAA6DzQ,IAAAsP,UAAAkB,MAA7D,CAAmFxQ,IAAAsP,UAAAqB,KAAnF,CAAyG3Q,IAAAsP,UAAAuB,KAAzG,CAA+H7Q,IAAAsP,UAAAoB,MAA/H,CACA1Q,KAAAsP,UAAAuB,KAAAjB,iBAAA,CAAuC5P,IAAAsP,UAAAmB,GAAvC,CAA6DzQ,IAAAsP,UAAAsB,KAA7D,CAAmF5Q,IAAAsP,UAAAqB,KAAnF,CAAyG3Q,IAAAsP,UAAAoB,MAAzG,CAA+H1Q,IAAAsP,UAAAkB,MAA/H,C,CCxPAxQ,IAAA0S,MAAA,CAAaC,QAAQ,CAAEC,CAAF,CAAc,CAOf5a,IAAAA,EAAnB,GAAI4a,CAAJ,EAAgCA,CAAhC,WAAsDC,SAAtD,GAAiE,IAAAC,SAAjE,CAAiFF,CAAjF,CAKA,KAAAG,QAAA,CAAe,EACf,KAAAC,WAAA,CAAkB,CAAA,CAClB,KAAAC,OAAA,CAAe,EACf,KAAAC,QAAA,CAAe,CAAA,CACf,KAAAC,UAAA,CAAiB,CAAA,CAhBiB,CAyBnCnT,KAAA0S,MAAA/R,UAAAlI,IAAA,CAA2B2a,QAAQ,EAAE,CAEpC,IAAI7N,EAAWlK,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAEO1E,KAAAA,EAAtB,GAAI,IAAA8a,SAAJ,EAAmC,IAAAA,SAAnC,WAA4DD,SAA5D,GAAuEtN,CAAvE,CAAkF,IAAAuN,SAAA,CAAevN,CAAf,CAAlF,CAEIA,EAAJ,WAAwBlK,MAAxB,EAECkK,CAAAoC,QAAA,CAAkB,QAAQ,CAAE/F,CAAF,CAAW,CAEpC,IAAAqR,OAAAta,KAAA,CAAkBiJ,CAAlB,CAFoC,CAAnByR,KAAA,CAIV,IAJU,CAAlB,CAQD,OAAO,KAAAJ,OAhB6B,CAmBrCjT;IAAA0S,MAAA/R,UAAA/H,OAAA,CAA8B0a,QAAQ,EAAE,CAEvC,IAAK/N,EAAWlK,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAEZ6I,EAAJ,WAAwBlK,MAAxB,EAECkK,CAAAoC,QAAA,CAAkB,QAAQ,CAAE/F,CAAF,CAAW,CAEpC,IAAAqR,OAAA,CAAc,IAAAA,OAAAM,OAAA,CAAoB,QAAQ,CAAEC,CAAF,CAAiB,CAC1D,MAAOA,EAAP,EAAwB5R,CADkC,CAA7C,CAFsB,CAAnByR,KAAA,CAMV,IANU,CAAlB,CAUD,OAAO,KAAAJ,OAhBgC,CAoBxCjT,KAAA0S,MAAA/R,UAAA8S,MAAA,CAA6BC,QAAQ,EAAE,CAEtC,IAAInO,EAAWlK,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAEX6I,EAAJ,WAAwBlK,MAAxB,EAECkK,CAAAoC,QAAA,CAAkB,QAAQ,CAAE/F,CAAF,CAAW,CAEpC,IAAAmR,QAAA,CAAe,IAAAA,QAAAQ,OAAA,CAAqB,QAAQ,CAAEI,CAAF,CAAkB,CAC7D,MAAOA,EAAP,EAAyB/R,CADoC,CAA/C,CAFqB,CAAnByR,KAAA,CAMV,IANU,CAAlB,CAUD,OAAO,KAAAN,QAhB+B,CAoBvC/S;IAAA0S,MAAA/R,UAAAiT,MAAA,CAA6BC,QAAQ,CAAEC,CAAF,CAAgB,CAEpD,IAAAb,OAAA,CAAc,EACVa,EAAJ,GAAmB,IAAAf,QAAnB,CAAkC,EAAlC,CAHoD,CAKrD/S,KAAA0S,MAAA/R,UAAAoT,GAAA,CAA0BC,QAAQ,EAAE,CAEnC,GAAI,IAAAf,OAAA/Z,OAAJ,CAAwB,CAEvB,IAAI0I,EAAU,IAAAqR,OAAAgB,MAAA,EACV,KAAAjB,WAAJ,EAAsB,IAAAD,QAAApa,KAAA,CAAmBiJ,CAAnB,CACtB,OAAOA,EAJgB,CAMf,IAAAuR,UAAJ,GAEJ,IAAAF,OACA,CADe,IAAAF,QAAAjM,MAAA,EACf,CAAA,IAAAiM,QAAA,CAAe,EAHX,CAR8B,CAcpC/S,KAAA0S,MAAA/R,UAAAuT,KAAA,CAA4BC,QAAQ,EAAE,CAErC,GAAI,IAAApB,QAAA7Z,OAAJ,CAAyB,CAExB,IAAI0I,EAAU,IAAAmR,QAAAqB,IAAA,EACd,KAAAnB,OAAAoB,QAAA,CAAqBzS,CAArB,CACA,OAAOA,EAJiB,CAFY,CAStC5B,KAAA0S,MAAA/R,UAAA2T,KAAA,CAA4BC,QAAQ,EAAE,CAErC,MAAO,KAAAR,GAAA,EAF8B,C,CC/GtC/T,IAAAwU,MAAA,CAAaC,QAAQ,CAAEC,CAAF,CAAWC,CAAX,CAAoB,CAEpCD,CAAJ,EAAc,IAAAE,IAAA,CAAUF,CAAV,CAAmBC,CAAnB,CAF0B,CAOzC3U;IAAAwU,MAAA7T,UAAAiU,IAAA,CAA2BC,QAAQ,CAAEH,CAAF,CAAWC,CAAX,CAAoB,CAKtD,IAAIG,EAAQ,GAER,WAFQ,GAGR,WAHQ,GAIR,cAJQ,GAKR,YALQ,GAOR,WAPQ,GAQR,SARQ,GASR,eATQ,GAUR,WAVQ,GAYR,WAZQ,GAaR,YAbQ,GAcR,gBAdQ,GAeR,WAfQ,CAiBA,CAATJ,CAAAtJ,YAAA,EAAS,CAMZ,IAAcpT,IAAAA,EAAd,GAAI8c,CAAJ,CAAyB,CAUT9c,IAAAA,EAAf,EAAI2c,CAAJ,EAAsC,CAAtC,CAA4BA,CAA5B,GAECD,CACA,CADUA,CAAArJ,OAAA,EACV,CAAAsJ,CAAA,CAAUA,CAAAlN,SAAA,EAHX,CAVwB,KAqBxB0J,EAAU,CArBc,CAsBxB4D,EAAS,QAELL,EAAJ,GAAgBA,CAAAtJ,YAAA,EAAhB,EAEC+F,CACA,CADU,CACV,CAAA4D,CAAA,CAAS,WAHV,EAKSL,CALT,GAKqBA,CAAApJ,YAAA,EALrB,GAOC6F,CACA,CADU,EACV,CAAA4D,CAAA,CAAS,eARV,CAiBA,KAAAL,QAAA,CAAgBA,CAChB,KAAAI,MAAA,CAAgBA,CAChB,KAAAH,QAAA,CAAgBA,CAChB,KAAAxD,OAAA,CAAgBA,CAChB,KAAA4D,KAAA,CAAgBA,CAChB,KAAAC,UAAA,CAAkB,CAAA,CAOlB,KAAAxO,WAAA;AAAkByO,QAAQ,EAAE,CAE3B,MAAO,KAAIjV,IAAAwU,MAAJ,CAAgBE,CAAArJ,OAAA,EAAhB,CAAkCsJ,CAAlC,CAFoB,CArDJ,CAAzB,IA0DK,OAAO,CAAA,CAtF0C,CA0FvD3U,KAAAwU,MAAA7T,UAAAyQ,OAAA,CAA8B8D,QAAQ,CAAEC,CAAF,CAAS,CAE9C,MAAS,KAAAT,QAAT,GAA0BS,CAAAT,QAA1B,EAA2C,IAAAC,QAA3C,GAA4DQ,CAAAR,QAFd,CAM/C3U,KAAAwU,MAAA7T,UAAAuE,KAAA,CAA4BkQ,QAAQ,CAAED,CAAF,CAAS,CAE5C,IAAAT,QAAA,CAAgBS,CAAAT,QAChB,KAAAI,MAAA,CAAgBK,CAAAL,MAChB,KAAAH,QAAA,CAAgBQ,CAAAR,QAChB,KAAAxD,OAAA,CAAgBgE,CAAAhE,OAChB,KAAA4D,KAAA,CAAgBI,CAAAJ,KAChB,KAAAC,UAAA,CAAkBG,CAAAH,UAElB,OAAO,KATqC,CAc7ChV;IAAAwU,MAAA1B,SAAA,CAAsBuC,QAAQ,EAAE,CAAA,IAG/B9P,EAAWlK,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAHoB,CAI/BkF,CAJ+B,CAItB/I,CAJsB,CAInByc,CAJmB,CAKbC,CALa,CAKN9W,CALM,CAKG+W,CAElC,KAAK3c,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB0M,CAAArM,OAAhB,CAAiCL,CAAA,EAAjC,CAOC,GALA+I,CAKI,CALM2D,CAAA,CAAU1M,CAAV,CAKN,CAJ0Byc,CAI1B,CAJAzc,CAAJ,CAAQ,CAAR,CAAY0M,CAAArM,OAAZ,CAA0CqM,CAAA,CAAU1M,CAAV,CAAc,CAAd,CAA1C,CACiBb,IAAAA,EAGb,CAAA,EAAA4J,CAAA,WAAmB5B,KAAAwU,MAAnB,CAAJ,CAQK,GAAuB,QAAvB,GAAI,MAAO5S,EAAX,CAEJ,GAAuB,CAAvB,GAAIA,CAAA1I,OAAJ,CASGqM,CAAA,CAAU1M,CAAV,CAAA,CAFuB,QAAzB,GAAI,MAAOyc,EAAX,CAEkB,IAAItV,IAAAwU,MAAJ,CAAgB5S,CAAhB,CAAyB0T,CAAzB,CAFlB,CAIqB,IAAItV,IAAAwU,MAAJ,CAAgB5S,CAAhB,CAXtB,KAcK,IAAqB,CAArB,CAAIA,CAAA1I,OAAJ,CAAwB,CAO5Buc,CAAA,CAAU,0BACVC,EAAA,CAAU9T,CAAA2T,MAAA,CAAeE,CAAf,CACV,KAAKhX,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBiX,CAAAxc,OAAhB,CAAgCuF,CAAA,EAAhC,CAEC8W,CACA,CADQG,CAAA,CAASjX,CAAT,CACR,CAAIgI,CAAAC,UAAA,CAAa6O,CAAb,CAAJ,CAA0BG,CAAA,CAASjX,CAAT,CAA1B,CAAyC,CAAC8W,CAA1C,EAGCI,CAGA,CAHUD,CAAA5O,MAAA,CAAe,CAAf,CAAkBrI,CAAlB,CAGV,CAFA+W,CAEA,CAFUE,CAAA5O,MAAA,CAAerI,CAAf,CAAmB,CAAnB,CAEV,CADA8W,CACA,CADUA,CAAA/I,MAAA,CAAa,EAAb,CACV,CAAAkJ,CAAA,CAAUC,CAAAra,OAAA,CAAaia,CAAb,CAAoBC,CAApB,CANX,CASDG,EAAA,CAAOpQ,CAAAuB,MAAA,CAAgB,CAAhB,CAAmBjO,CAAnB,CACP2c,EAAA,CAAOjQ,CAAAuB,MAAA,CAAgBjO,CAAhB,CAAoB,CAApB,CACP0M,EAAA,CAAWoQ,CAAAra,OAAA,CAAaoa,CAAb,CAAsBF,CAAtB,CACX3c;CAAA,EAxB4B,CAAxB,CAhBD,IA2CI+I,EAAJ,WAAuB5B,KAAAsP,UAAvB,CAMJ/J,CAAA,CAAU1M,CAAV,CANI,CAMY+I,CAAAyM,QANZ,CASIzM,CAAJ,WAAuBvG,MAAvB,EAMJsa,CAEA,CAFOpQ,CAAAuB,MAAA,CAAgB,CAAhB,CAAmBjO,CAAnB,CAEP,CADA2c,CACA,CADOjQ,CAAAuB,MAAA,CAAgBjO,CAAhB,CAAoB,CAApB,CACP,CAAA0M,CAAA,CAAWoQ,CAAAra,OAAA,CAAasG,CAAb,CAAsB4T,CAAtB,CARP,EAiBJjQ,CAAAxM,OAAA,CAAiBF,CAAjB,CAAoB,CAApB,CAnBA,CAAAA,CAAA,EAuBF,OAAO0M,EA/FwB,C,CCnFhCvF,IAAA4V,QAAA,CAAeC,QAAQ,CAAEC,CAAF,CAAQtG,CAAR,CAAYuG,CAAZ,CAAoB,CAG1CtU,KAAAI,SAAA1E,KAAA,CAAqB,IAArB,CAMA,KAAA2Y,KAAA,CAAYA,CASZ,KAAAtG,GAAA,CAAUA,CAAV,EAAgB,CAQhB,KAAAwG,WAAA,CAAiB,IAAAxG,GAAjB,CASA,KAAArD,KAAA,CAAY2J,CAAAG,YAAZ,EAAgC,GAQhCpR,EAAAA,CAAI,IAAAqR,SAAJrR,EAAsB,IAAAsH,KAAtBtH,CADcZ,CACdY,CACAC,EAAAA,CAAI,IAAAqR,SAAJrR,EAAsB,IAAAqH,KAAtBrH,CAFcb,CAEda,CAFA,KAGAC,EAAI,IAAAqR,SAAJrR,EAAsB,IAAAoH,KAAtBpH,CAHcd,CAGdc,CAEA,KAAA/C,SAAA4S,IAAA,CAAmB/P,CAAnB,CAAsBC,CAAtB,CAAyBC,CAAzB,CACA,KAAAsR,YAAA,CAAmBC,CAAA,IAAI7U,KAAAwB,QAAJqT,iBAAA,CAAqCzR,CAArC,CAAwCC,CAAxC,CAA2CC,CAA3C,CACnB,KAAAwR,aAAA,EAKA,KAAAT,KAAAU,SAAA/d,IAAA,CAAwB,IAAxB,CAoBIge,EAAAA,CAAmB,CACRze,KAAAA,EAAf,GAAI+d,CAAJ,GAA2BA,CAA3B,CAAoC,CAAEvH,CAAF,CAAKC,CAAL,CAAA,CAAA,CAAcG,CAAd,CAApC,CACA,KAAA8H,MAAA,CAAa,EAQb,KAAS7d,CAAT,CAAa,CAAb,CAAoB,CAApB,CAAgBA,CAAhB,CAAuBA,CAAA,EAAvB,CAQC8d,CA2DA,CA3DSZ,CAAA,CAAQld,CAAR,CA2DT,EA3DwBmH,IAAAqP,UA2DxB,CApDA,IAAAqH,MAAA,CAAY7d,CAAZ,CAoDA,CApDkB,EAoDlB,CAnDA,IAAA6d,MAAA,CAAY7d,CAAZ,CAAA2W,GAmDA,CAnDqB3W,CAmDrB,CAlDA,IAAA6d,MAAA,CAAY7d,CAAZ,CAAA8d,MAkDA;AAlDwBA,CAkDxB,CA1CA,IAAAD,MAAA,CAAY7d,CAAZ,CAAA4W,OA0CA,CA1CyBzP,IAAAsP,UAAAY,YAAA,CAA4BrX,CAA5B,CA0CzB,CAFD,IAAA6d,MAAA,CAAY7d,CAAZ,CAAA+d,YAEC,CAF6BD,CAE7B,GAFuC3W,IAAAqP,UAEvC,CAAIsH,CAAJ,GAAc3W,IAAAqP,UAAd,EAmBCoH,CAAA,EAiCF,KAAAI,KAAA,CAAY,CAEX,MAFW,CAGX,QAHW,CAIX,MAJW,CAKX,QALW,CAOA,CAATJ,CAAS,CAOZ,KAAAK,MAAA,CAAe,IAAAJ,MAAA,CAAY,CAAZ,CACd,KAAA5G,GAAA,CAAc,IAAA4G,MAAA,CAAY,CAAZ,CACd,KAAA3G,MAAA,CAAc,IAAA2G,MAAA,CAAY,CAAZ,CACd,KAAA1G,KAAA,CAAc,IAAA0G,MAAA,CAAY,CAAZ,CACd,KAAAzG,KAAA,CAAc,IAAAyG,MAAA,CAAY,CAAZ,CACd,KAAAK,KAAA,CAAc,IAAAL,MAAA,CAAY,CAAZ,CACd,KAAAX,OAAA,EAEG,IAAAW,MAAA,CAAY,CAAZ,CAAAC,MAAA,CAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAF3D,GAGG,IAAAqI,MAAA,CAAY,CAAZ,CAAAC,MAAA,CAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAH3D,GAIG,IAAAqI,MAAA,CAAY,CAAZ,CAAAC,MAAA,CAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAJ3D,GAKG,IAAAqI,MAAA,CAAY,CAAZ,CAAAC,MAAA;AAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAL3D,GAMG,IAAAqI,MAAA,CAAY,CAAZ,CAAAC,MAAA,CAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAN3D,GAOG,IAAAqI,MAAA,CAAY,CAAZ,CAAAC,MAAA,CAAwB,IAAAD,MAAA,CAAY,CAAZ,CAAAC,MAAAtI,QAAxB,CAAwD,GAP3D,CA8BD,KAAA2I,iBAAA,CAAwB,IAAAF,MAAAH,MAAxB,EAAsE,OAAtE,GAA4C,IAAAG,MAAAH,MAAAvI,KAA5C,EAA+F,QAA/F,GAAiF,IAAAyI,KAQjF,KAAAI,WAAA,CAAkB,CAAA,CAsBlB,KAAAA,WAAA,CAnBA,IAAAC,WAmBA,CApBA,IAAAC,WAoBA,CArBA,IAAAC,WAqBA,CArBkB,CAAA,CA0BlB,KAAAC,QAAA,CAAe,CACf,KAAAC,OAAA,CAAe,CAjS2B,CA4S3CtX,KAAA4V,QAAAjV,UAAA,CAAyBM,MAAAsB,OAAA,CAAed,KAAAI,SAAAlB,UAAf,CAEzBX;IAAAa,OAAA,CAAab,IAAA4V,QAAAjV,UAAb,CAAqC,YAUxBqV,QAAQ,CAAEuB,CAAF,CAAW,CAE9B,IAAAA,QAAA,CAAgBA,CAAhB,EAA2B,CAC3B,KAAArB,SAAA,CAAgBqB,CAAAlO,OAAA,CAAgB,CAAhB,CAAAmB,SAAA,CAA8B,CAA9B,CAChB,KAAA2L,SAAA,CAA6E,EAA7E,CAAgBoB,CAAAlO,OAAA,CAAgB,CAAhB,CAAAT,OAAA,CAA4B,CAA5B,CAAAmB,UAAA,EAAAS,SAAA,CAAsD,CAAtD,CAChB,KAAA4L,SAAA,CAAiE,EAAjE,CAAgBmB,CAAA3O,OAAA,CAAgB,CAAhB,CAAAmB,UAAA,EAAAS,SAAA,CAA0C,CAA1C,CALc,CAVK,UAuB1BgN,QAAQ,CAAEb,CAAF,CAAS,CAAA,IAEnBc,CAFmB,CAEbC,CAFa,CAGzBC,EAAWlR,CAAAM,SAAA,CAAY4P,CAAA3P,IAAZ,CAEZ,KAAKnO,CAAL,CAAS,CAAT,CAAgB,CAAhB,CAAYA,CAAZ,CAAmBA,CAAA,EAAnB,CAIC,GAFA6e,CAEqC,CAFtBjR,CAAAM,SAAA,CAAY,IAAA2P,MAAA,CAAY7d,CAAZ,CAAA8d,MAAA3P,IAAZ,CAEsB,CAAjC0Q,CAAAvQ,EAAiC,GAAdwQ,CAAAxQ,EAAc,EAAAuQ,CAAAtQ,EAAA,GAAmBuQ,CAAAvQ,EAAnB,EAAiCsQ,CAAA3Y,EAAjC,GAAoD4Y,CAAA5Y,EAAzF,CAAqG,CAEpG0Y,CAAA,CAAO5e,CACP,MAHoG,CAMtG,MAAab,KAAAA,EAAb,GAAIyf,CAAJ,CAEQ,+BAAA,MAAA,CAAA,GAAA,CASA,CAAJA,CAAI,CAXR,CAaY,CAAA,CA5Bc,CAvBS,WA0DzBG,QAAQ,EAAE,CAAA,IAGpBC,EAAU,IAHU,CAIpBxQ,EAAU,CAAA,CACAhM,MAAAsF,UAAAmG,MAAA3J,KAAA4Y,CAA4BrZ,SAA5BqZ,CAEVpO,QAAA,CAAgB,QAAQ,CAAEgP,CAAF,CAAS,CAEhCtP,CAAA;AAASA,CAAT,EAAmB,CAAE,CAAAwQ,CAAAL,SAAA,CAAkBb,CAAlB,CAFW,CAAjC,CAIA,OAAOtP,EAXa,CA1De,WAyEzByQ,QAAQ,EAAE,CAEpB,MAAO,KAAAR,OAFa,CAzEe,WA6EzBS,QAAQ,CAAET,CAAF,CAAUta,CAAV,CAAsB,CAaxC,GAAwB,CAAA,CAAxB,GAAI,IAAAia,WAAJ,GAECK,CAEI,CAFKA,CAEL,EAFe,CAEf,CADgBtf,IAAAA,EAChB,GADA,IAAAsf,OACA,GAD4B,IAAAA,OAC5B,CAD0C,CAC1C,EAAA,IAAAA,OAAA,GAAgBA,CAJrB,EAI6B,CAQ3B,IAAAL,WAAA,CAAkB,CAAA,CARS,KAUvBe,EAAkBvQ,CAAA,IAAA6P,OAAA7P,CAAc6P,CAAd7P,UAAA,EAVK,CAW1B1G,EAAM,QAAQ,IAAAuW,OAAR,CAIPxc,EAAA,IAAIzC,KAAAgB,MAAJ,CAAiB0H,CAAjB,CAAAjG,IAAA,CACK,QAAUwc,CAAV,CADL,CACyBU,CADzB,CAAA5b,OAAA,CAES/D,KAAA6B,OAAA+d,QAAAta,IAFT,CAAAb,SAAA,CAGW,QAAQ,EAAE,CAEpB,IAAAkF,SAAA4S,IAAA,CAAmB,IAAAsB,SAAA5M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAAnB,CAAuE,GAAvE,CAA4E,IAAAnB,SAAA7M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAA5E,CAAgI,GAAhI,CAAqI,IAAAlB,SAAA9M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAArI;AAAyL,GAAzL,CACA,KAAAf,aAAA,EACA,KAAAF,YAAAnR,KAAA,CAAuB,IAAAlC,OAAvB,CAEA,KAAAsU,OAAA,CAAcvW,CAAAuW,OANM,CAAVjE,KAAA,CAQH,IARG,CAHX,CAAArW,WAAA,CAYa,QAAQ,EAAE,CAEtB,IAAAia,WAAA,CAAkB,CAAA,CAElB,KAAAjV,SAAA4S,IAAA,CAAmB,IAAAsB,SAAA5M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAAnB,CAAuE,GAAvE,CAA4E,IAAAnB,SAAA7M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAA5E,CAAgI,GAAhI,CAAqI,IAAAlB,SAAA9M,SAAA,CAAwB,IAAA6C,KAAxB,CAAoCpL,CAAAuW,OAApC,CAArI,CAAyL,GAAzL,CACA,KAAAf,aAAA,EACA,KAAAF,YAAAnR,KAAA,CAAuB,IAAAlC,OAAvB,CAEA,KAAAsU,OAAA,CAAcvW,CAAAuW,OAEVta,EAAJ,WAA0B6V,SAA1B,EAAqC7V,CAAA,EAVf,CAAVqW,KAAA,CAYL,IAZK,CAZb,CAAAnY,MAAA,CAyBQ,IAAA4a,KAAA7c,KAzBR,CAf2B,CAjBW,CA7EL,CAArC,C,CChVA+G,IAAAkY,MAAA,CAAaC,QAAQ,EAAE,CAEtB,IAAAC,SAAA,CAAgB,EAEhB,KAAA3f,IAAA,CAAU4C,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAAV,CAJsB,CAQvBsD,KAAAa,OAAA,CAAab,IAAAkY,MAAAvX,UAAb,CAAmCc,KAAA4W,gBAAA1X,UAAnC,CAEAX;IAAAa,OAAA,CAAab,IAAAkY,MAAAvX,UAAb,CAAmC,KAG7BlI,QAAQ,EAAE,CAEd,IAEA6f,EAAO,IADSjd,MAAAsF,UAAAmG,MAAA3J,KAAAob,CAA4B7b,SAA5B6b,CAGhB5Q,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAErCA,CAAJ,WAAuB7X,KAAAkY,MAAvB,GAAoCL,CAApC,CAA8CA,CAAAO,SAA9C,CACIP,EAAJ,WAAuBxc,MAAvB,CAA+Bid,CAAA7f,IAAA6U,MAAA,CAAgBgL,CAAhB,CAAsBT,CAAtB,CAA/B,CACKS,CAAAF,SAAAzf,KAAA,CAAoBkf,CAApB,CAJoC,CAA1C,CAMA,OAAO,KAZO,CAHmB,QAiB1Bjf,QAAQ,CAAE4f,CAAF,CAAmB,CAE9BA,CAAJ,WAA+BxY,KAAAkY,MAA/B,GAA4CM,CAA5C,CAA8DA,CAAAJ,SAA9D,CACA,IAAII,CAAJ,WAA+Bnd,MAA/B,CAAsC,CAErC,IAAIid,EAAO,IACXE,EAAA7Q,QAAA,CAAyB,QAAQ,CAAES,CAAF,CAAK,CAErCkQ,CAAA1f,OAAA,CAAawP,CAAb,CAFqC,CAAtC,CAHqC,CAUtC,IADA,IAAIvP,EAAI,IAAAuf,SAAAlf,OACR,CAAa,CAAb,CAAOL,CAAA,EAAP,CAAA,CAEK,IAAAuf,SAAA,CAAevf,CAAf,CAAJ,GAA2B2f,CAA3B,EACC,IAAAJ,SAAArf,OAAA,CAAsBF,CAAtB,CAAyB,CAAzB,CAEF,OAAO,KAlB2B,CAjBD,WA6CvB4f,QAAQ,CAAErd,CAAF,CAAY,CAE9B,IAAIsd,EAAQ,CACZ,KAAAN,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAEzCa,CAAA;AAASb,CAAA,CAASzc,CAAT,CAAA,CAAsB,CAAtB,CAA0B,CAFM,CAA1C,CAIA,OAAOsd,EAPuB,CA7CG,YAsDtBzB,QAAQ,EAAE,CAErB,MAAO,KAAAwB,UAAA,CAAgB,YAAhB,CAFc,CAtDY,YA0DtBrB,QAAQ,EAAE,CAErB,MAAO,KAAAqB,UAAA,CAAgB,YAAhB,CAFc,CA1DY,YA8DtBtB,QAAQ,EAAE,CAErB,MAAO,KAAAsB,UAAA,CAAgB,YAAhB,CAFc,CA9DY,YAkEtBvB,QAAQ,EAAE,CAErB,MAAO,KAAAuB,UAAA,CAAgB,YAAhB,CAFc,CAlEY,WAsEvBE,QAAQ,EAAE,CAEpB,MAAO,KAAAvB,WAAA,EAAP,CAA2B,IAAAD,WAAA,EAA3B,CAA+C,IAAAD,WAAA,EAF3B,CAtEa,aAmFrB0B,QAAQ,CAAExd,CAAF,CAAYiC,CAAZ,CAAmB,CAEvC,IACAwb,EAAU,IAAI7Y,IAAAkY,MAEd,KAAAE,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAErCA,CAAA,CAASzc,CAAT,CAAJ,GAA4BiC,CAA5B,EAAoCwb,CAAApgB,IAAA,CAAaof,CAAb,CAFK,CAA1C,CAKA,OAAOgB,EAVgC,CAnFN,OA+F3BC,QAAQ,CAAEtJ,CAAF,CAAM,CAEpB,MAAO,KAAAoJ,YAAA,CAAkB,IAAlB,CAAwBpJ,CAAxB,CAFa,CA/Fa;WAmGtBuJ,QAAQ,CAAExB,CAAF,CAAW,CAE9B,MAAO,KAAAqB,YAAA,CAAkB,SAAlB,CAA6BrB,CAA7B,CAFuB,CAnGG,SAuGzByB,QAAQ,CAAEnC,CAAF,CAAQ,CAExB,MAAO,KAAA+B,YAAA,CAAkB,MAAlB,CAA0B/B,CAA1B,CAFiB,CAvGS,UA2GxBW,QAAQ,CAAEb,CAAF,CAAS,CAE1B,IACAkC,EAAU,IAAI7Y,IAAAkY,MAEd,KAAAE,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAErCA,CAAAL,SAAA,CAAkBb,CAAlB,CAAJ,EAA+BkC,CAAApgB,IAAA,CAAaof,CAAb,CAFU,CAA1C,CAIA,OAAOgB,EATmB,CA3GO,WAsHvBjB,QAAQ,EAAE,CAAA,IAGpBiB,EAAU,IAAI7Y,IAAAkY,MAHM,CAIpBnC,EAAU1a,KAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BT,SAA5B,CAEV,KAAA0b,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAErCA,CAAAD,UAAAtK,MAAA,CAAyBuK,CAAzB,CAAkC9B,CAAlC,CAAJ,EAAgD8C,CAAApgB,IAAA,CAAaof,CAAb,CAFP,CAA1C,CAIA,OAAOgB,EAVa,CAtHa,UAuIxBI,QAAQ,CAAExB,CAAF,CAAQ,CAEzB,GAAIA,CAAJ,CAAU,CAAA,IAELyB,EAAa,EAFR,CAGRC,EAAiB,CAEd1B,EAAJ,WAAoBzX,KAAAsP,UAApB,GAAqCmI,CAArC,CAA4CA,CAAArJ,KAA5C,CACA,KAAAgK,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAErClB,CAAAA;AAAQkB,CAAA,CAASJ,CAAT,CAAAd,MAAAvI,KACgBpW,KAAAA,EAA5B,GAAIkhB,CAAA,CAAYvC,CAAZ,CAAJ,EAECuC,CAAA,CAAYvC,CAAZ,CACA,CADsB,CACtB,CAAAwC,CAAA,EAHD,EAKKD,CAAA,CAAYvC,CAAZ,CAAA,EARoC,CAA1C,CAUA,OAA0B,EAAnB,GAAAwC,CAAA,CAAuB,CAAA,CAAvB,CAA8B,CAAA,CAhB5B,CAoBTpZ,OAAAqZ,KAAA,CAAc,+FAAd,CACA,OAAO,CAAA,CAvBiB,CAvIQ,MAyK5BC,QAAQ,EAAE,CAEf,IAAAjB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAwB,KAAA,EAAF,CAA1C,CACA,OAAO,KAHQ,CAzKkB,MA8K5BC,QAAQ,EAAE,CAEf,IAAAlB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAyB,KAAA,EAAF,CAA1C,CACA,OAAO,KAHQ,CA9KkB,cAmLpBC,QAAQ,EAAE,CAEvB,IAAAnB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA0B,aAAA,EAAF,CAA1C,CACA,OAAO,KAHgB,CAnLU,cAwLpBC,QAAQ,EAAE,CAEvB,IAAApB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA2B,aAAA,EAAF,CAA1C,CACA;MAAO,KAHgB,CAxLU,gBA6LlBC,QAAQ,EAAE,CAEzB,IAAArB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA4B,eAAA,EAAF,CAA1C,CACA,OAAO,KAHkB,CA7LQ,gBAkMlBC,QAAQ,EAAE,CAEzB,IAAAtB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA6B,eAAA,EAAF,CAA1C,CACA,OAAO,KAHkB,CAlMQ,gBAuMlBC,QAAQ,CAAEC,CAAF,CAAWC,CAAX,CAAiB,CAExC,IAAAzB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA8B,eAAA,CAAwBC,CAAxB,CAAiCC,CAAjC,CAAF,CAA1C,CACA,OAAO,KAHiC,CAvMP,gBA4MlBC,QAAQ,CAAEF,CAAF,CAAWC,CAAX,CAAiB,CAExC,IAAAzB,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAiC,eAAA,CAAwBF,CAAxB,CAAiCC,CAAjC,CAAF,CAA1C,CACA,OAAO,KAHiC,CA5MP,cAiNpBE,QAAQ,EAAE,CAEvB,IAAA3B,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAkC,aAAA,EAAF,CAA1C,CACA,OAAO,KAHgB,CAjNU,cAsNpBC,QAAQ,EAAE,CAEvB,IAAA5B,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAmC,aAAA,EAAF,CAA1C,CACA;MAAO,KAHgB,CAtNU,gBA2NlBC,QAAQ,EAAE,CAEzB,IAAA7B,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAoC,eAAA,EAAF,CAA1C,CACA,OAAO,KAHkB,CA3NQ,gBAgOlBC,QAAQ,EAAE,CAEzB,IAAA9B,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAqC,eAAA,EAAF,CAA1C,CACA,OAAO,KAHkB,CAhOQ,SAqOzBC,QAAQ,EAAE,CAElB,IAAA/B,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAsC,QAAA,EAAF,CAA1C,CACA,OAAO,KAHW,CArOe,SA0OzBC,QAAQ,EAAE,CAElB,IAAAhC,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAuC,QAAA,EAAF,CAA1C,CACA,OAAO,KAHW,CA1Oe,WA+OvBC,QAAQ,EAAE,CAEpB,IAAAjC,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAwC,UAAA,EAAF,CAA1C,CACA,OAAO,KAHa,CA/Oa,WAoPvBC,QAAQ,EAAE,CAEpB,IAAAlC,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAyC,UAAA,EAAF,CAA1C,CACA;MAAO,KAHa,CApPa,YA6PtBC,QAAQ,EAAE,CAErB,IAAIC,EAAM,CAEV,KAAApC,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAE2C,CAAA,EAAO3C,CAAA0C,WAAA,EAAT,CAA1C,CACA,OAAOC,EAAP,CAAa,IAAApC,SAAAlf,OALQ,CA7PY,YAoQtBuhB,QAAQ,CAAEpD,CAAF,CAAWra,CAAX,CAAuB,CAE1C,IAAAob,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAA4C,WAAA,CAAoBpD,CAApB,CAA6Bra,CAA7B,CAAF,CAA1C,CACA,OAAO,KAHmC,CApQT,WAyQvB8a,QAAQ,EAAE,CAEpB,IAAI0C,EAAM,CAEV,KAAApC,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAE2C,CAAA,EAAO3C,CAAAC,UAAA,EAAT,CAA1C,CACA,OAAO0C,EAAP,CAAa,IAAApC,SAAAlf,OALO,CAzQa,WAgRvB6e,QAAQ,CAAET,CAAF,CAAUta,CAAV,CAAsB,CAExC,IAAAob,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAAEA,CAAAE,UAAA,CAAmBT,CAAnB,CAA2Bta,CAA3B,CAAF,CAA1C,CACA,OAAO,KAHiC,CAhRP,CAAnC,C,CC+EAgD,IAAA0a,MAAA,CAAaC,QAAQ,CAAEC,CAAF,CAAW9E,CAAX,CAAiB,CAGrC,IAAA+E,KAAA,CAAY,IAAIpZ,KAAA2C,QAChB,KAAA0W,aAAA,CAAoB,IAAIrZ,KAAA2C,QACxB,KAAApB,OAAA,CAAc,IAAIvB,KAAAwB,QAClB,KAAA4X,KAAAE,SAAA,CAAqB,CACrB,KAAAH,QAAA,CAAeA,CACf,KAAAI,UAAA,CAAiB,IACjB,KAAAC,wBAAA,CAA+B,CAAA,CAC/B,KAAAnF,KAAA,CAAYA,CAIZ,KAAAoF,WAAA,CAAkBC,QAAQ,CAAEC,CAAF,CAAS,CAClC,MAAOtF,EAAAsC,SAAA,CAAewC,CAAA,CAASQ,CAAT,CAAf,CAD2B,CAgBnC,KAAAC,yBAAA,CAAiC,QAAQ,EAAE,CAAA,IAMtCC,EAAU,IAAI7Z,KAAA2C,QANwB,CAOzCiE,EAAO,IAAI5G,KAAA2C,QAAJ,CAAmB,CAAnB,CAAwB,CAAxB,CAA6B,CAA7B,CAPkC,CAQzCmX,EAAS,IAAI9Z,KAAA2C,QAR4B,CASzCoX,EAAU,IAAI/Z,KAAA2C,QAT2B,CAUzC2W,EAAU,IAAItZ,KAAAwB,QAV2B,CAWzCwY,CAGD,OAAO,SAAS,CAAEC,CAAF,CAAS,CAMxBA,CAAA,CAAQ7d,IAAA6K,MAAA,CAAYgT,CAAZ,EAAgC,IAAhC,CAAsB7d,IAAAE,GAAtB,EAAR,CAAmDF,IAAAE,GAAnD,CAA6D,IAI7Dud,EAAApW,KAAA,CAAcmD,CAAd,CACAiT,EAAAK,IAAA,CAAa,IAAAd,KAAb,CAGA;IAAIe,EAAc9F,CAAAsC,SAAAtR,MAAA,EAIlBiU,EAAAc,iBAAA,CAA2B,IAAAhB,KAA3B,CAA+C,EAA/C,CAAsCa,CAAtC,CAQA,KA1BwB,IAqBpB7iB,EAAI+hB,CAAA1hB,OArBgB,CAsBtB2e,CAIF,CAAa,CAAb,CAAOhf,CAAA,EAAP,CAAA,CAICgf,CAgCA,CAhCU/B,CAAAsC,SAAA,CAAewC,CAAA,CAAS/hB,CAAT,CAAf,CAgCV,CA5BA0iB,CAAA3G,IAAA,CAAWiD,CAAA3B,SAAX,CAA6B2B,CAAA1B,SAA7B,CAA+C0B,CAAAzB,SAA/C,CA4BA,CA3BAoF,CAAAtW,KAAA,CAAaqW,CAAb,CA2BA,CAvBAA,CAAAjS,SAAA,CAAgBgS,CAAhB,CAAAQ,aAAA,CACiBf,CADjB,CAuBA,CAlBAQ,CAAA1W,EAkBA,CAlBUhH,IAAA6K,MAAA,CAAY6S,CAAA1W,EAAZ,CAkBV,CAjBA0W,CAAAzW,EAiBA,CAjBUjH,IAAA6K,MAAA,CAAY6S,CAAAzW,EAAZ,CAiBV,CAhBAyW,CAAAxW,EAgBA,CAhBUlH,IAAA6K,MAAA,CAAY6S,CAAAxW,EAAZ,CAgBV,CAZAwW,CAAA9iB,IAAA,CAAW+iB,CAAAlS,SAAA,CAAiB,IAAAuR,KAAjB,CAAX,CAYA,CAXAU,CAAA9iB,IAAA,CAAW4P,CAAX,CAWA,CAPAkT,CAAAzW,EAOA,CAPU,CAOV,CAPcyW,CAAAzW,EAOd,CANAyW,CAAAxW,EAMA,CANU,CAMV,CANcwW,CAAAxW,EAMd,CAAA+Q,CAAAsC,SAAA,CAAcP,CAAAN,QAAd,CAAA,CAAiCqE,CAAA,CADT,CACS,CADnBL,CAAAxW,EACmB,CADK,CACL,CADLwW,CAAAzW,EACK,CADSyW,CAAA1W,EACT,CAQlC,KAAKhM,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBid,CAAAsC,SAAAlf,OAAhB,CAAsCL,CAAA,EAAtC,CACCid,CAAAsC,SAAA,CAAevf,CAAf,CAAAmd,WAAA,CAA+Bnd,CAA/B,CAWDkiB,EAAAc,iBAAA,CAA2B,IAAAhB,KAA3B,CAAsCa,CAAtC,CAGA,KAAAtD,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAW,CAEzC4D,CAAA,CAAY,EAGZ5D,EAAAnB,MAAA/O,QAAA,CAAuB,QAAQ,CAAE8P,CAAF;AAAQ2D,CAAR,CAAe,CAG7CG,CAAArW,KAAA,CAAYlF,IAAAsP,UAAA0B,mBAAA,CAAmCyG,CAAAhI,OAAnC,CAAAA,OAAZ,CAGA8L,EAAAO,aAAA,CAAoBf,CAApB,CAIAU,EAAA,CAAWzb,IAAAsP,UAAA4B,qBAAA,CAAqCqK,CAArC,CAAA/L,GAAX,CAAA,CAA+DiI,CAC/DA,EAAAhI,OAAA,CAAczP,IAAAsP,UAAA4B,qBAAA,CAAqCqK,CAArC,CAAAnN,KAX+B,CAA9C,CAgBAyJ,EAAAnB,MAAA,CAAiB+E,CAAA3U,MAAA,EACjB+Q,EAAAf,MAAA,CAAiBe,CAAAnB,MAAA,CAAe,CAAf,CACjBmB,EAAA/H,GAAA,CAAiB+H,CAAAnB,MAAA,CAAe,CAAf,CACjBmB,EAAA9H,MAAA,CAAiB8H,CAAAnB,MAAA,CAAe,CAAf,CACjBmB,EAAA7H,KAAA,CAAiB6H,CAAAnB,MAAA,CAAe,CAAf,CACjBmB,EAAA5H,KAAA,CAAiB4H,CAAAnB,MAAA,CAAe,CAAf,CACjBmB,EAAAd,KAAA,CAAiBc,CAAAnB,MAAA,CAAe,CAAf,CA3BwB,CAA1C,CArFwB,CAdiB,CAAV,EAwIjC,KAAAqF,IAAA,EAtKqC,CA+KtC/b,KAAA0a,MAAA/Z,UAAA,CAAuBM,MAAAsB,OAAA,CAAevC,IAAAkY,MAAAvX,UAAf,CAEvBX;IAAAa,OAAA,CAAab,IAAA0a,MAAA/Z,UAAb,CAAmC,CAG9B6a,UAAM,EAAE,CAAG,MAAO,KAAAN,WAAA,CAAiB,CAAjB,CAAV,CAHsB,CAI9Bc,SAAK,EAAE,CAAG,MAAO,KAAAd,WAAA,CAAiB,CAAjB,CAAV,CAJuB,CAK9Be,aAAS,EAAE,CAAC,MAAO,KAAAf,WAAA,CAAiB,CAAjB,CAAR,CALmB,CAM9BgB,QAAI,EAAE,CAAG,MAAO,KAAAhB,WAAA,CAAiB,CAAjB,CAAV,CANwB,CAO9BiB,aAAS,EAAE,CAAC,MAAO,KAAAjB,WAAA,CAAiB,CAAjB,CAAR,CAPmB,CAQ9BkB,SAAK,EAAE,CAAE,MAAO,KAAAlB,WAAA,CAAiB,CAAjB,CAAT,CARuB,CAS9BmB,aAAS,EAAE,CAAC,MAAO,KAAAnB,WAAA,CAAiB,CAAjB,CAAR,CATmB,CAU9BoB,QAAI,EAAE,CAAG,MAAO,KAAApB,WAAA,CAAiB,CAAjB,CAAV,CAVwB,CAW9BqB,aAAS,EAAE,CAAC,MAAO,KAAArB,WAAA,CAAiB,CAAjB,CAAR,CAXmB,CAc9B9C,YAAQ,EAAE,CAKb,IALa,IAEToE,EAAQ,EAFC,CAGZpa,EAAI,IAAAwY,QAAA1hB,OAEL,CAAa,CAAb,CAAOkJ,CAAA,EAAP,CAAA,CACCoa,CAAA7jB,KAAA,CAAY,IAAAuiB,WAAA,CAAiB9Y,CAAjB,CAAZ,CAGD,OAAOoa,EATM,CAdoB,KA4B7BT,QAAQ,CAAEnB,CAAF;AAAWxC,CAAX,CAAqB,CAcjC,IAAK,IAAIvf,EAAI,CAAb,CAAoB,CAApB,CAAgBA,CAAhB,CAAuBA,CAAA,EAAvB,CAEC,GAAI,IAAA2iB,OAAA9E,MAAA,CAAmB7d,CAAnB,CAAA8d,MAAJ,EAAoC,IAAA6E,OAAA9E,MAAA,CAAmB7d,CAAnB,CAAA8d,MAApC,GAAqE3W,IAAAqP,UAArE,CAAqF,CAEpF,IAAAsH,MAAA,CAAa,IAAA6E,OAAA9E,MAAA,CAAmB7d,CAAnB,CAAA8d,MACb,KAAAc,KAAA,CAAYzX,IAAAsP,UAAAY,YAAA,CAA4BrX,CAA5B,CACZ,MAJoF,CAatF,GAAkBb,IAAAA,EAAlB,GAAI,IAAA6iB,KAAJ,EAAwD,CAAxD,GAA+B,IAAAA,KAAA4B,SAAA,EAA/B,CAA2D,CAEtDC,IAAAA,EAAS,IAAAT,UAAAja,SAAA2a,MAAA,EAATD,CACHE,EAAS,IAAAP,UAAAra,SAAA2a,MAAA,EADND,CAEHG,EAAS,IAAAN,UAAAva,SAAA2a,MAAA,EAEV,KAAA9B,KAAA,CAAYiC,CAAA,IAAIrb,KAAA2C,QAAJ0Y,cAAA,CAEXF,CAAAjB,IAAA,CAAYe,CAAZ,CAFW,CAGXG,CAAAlB,IAAA,CAAYe,CAAZ,CAHW,CAAAnT,UAAA,EAOZ,KAAAsR,KAAAE,SAAA,CAAqB,CAbqC,CAuB3D,IAAAjL,GAAA,CAAU,IAAI9P,IAAAkY,MAAJ,CAET,IAAAqE,UAFS,CAEO,IAAAP,MAFP,CAEmB,IAAAC,UAFnB,CAIV,KAAAc,QAAA;AAAe,IAAI/c,IAAAkY,MAAJ,CAEd,IAAAoE,KAFc,CAEH,IAAAd,OAFG,CAEU,IAAAU,KAFV,CAIf,KAAAlM,KAAA,CAAY,IAAIhQ,IAAAkY,MAAJ,CAEX,IAAAmE,UAFW,CAEK,IAAAD,MAFL,CAEiB,IAAAD,UAFjB,CAIZ,KAAAlM,KAAA,CAAY,IAAIjQ,IAAAkY,MAAJ,CAEX,IAAAqE,UAFW,CAGX,IAAAD,KAHW,CAIX,IAAAD,UAJW,CAMZ,KAAA9O,OAAA,CAAc,IAAIvN,IAAAkY,MAAJ,CAEb,IAAA8D,MAFa,CAGb,IAAAR,OAHa,CAIb,IAAAY,MAJa,CAMd,KAAArM,MAAA,CAAa,IAAI/P,IAAAkY,MAAJ,CAEZ,IAAA+D,UAFY,CAGZ,IAAAC,KAHY,CAIZ,IAAAC,UAJY,CAab,EADIa,CACJ,CADgB,IAAAhE,QAAA,CAAc,QAAd,CAChB,GAA+C,CAA/C,GAAiBgE,CAAA5E,SAAAlf,OAAjB,EAEC,IAAA+jB,OAGA,CAHe,IAAAjE,QAAA,CAAc,QAAd,CAGf,CAFA,IAAAkE,QAEA,CAFe,IAAIld,IAAAkY,MAAJ,CAAgB,IAAAc,QAAA,CAAc,QAAd,CAAhB,CAEf,CADA,IAAAmE,MACA,CADe,IAAInd,IAAAkY,MAAJ,CAAgB,IAAA+E,OAAhB,CAA6B,IAAAjE,QAAA,CAAc,MAAd,CAA7B,CACf;AAAA,IAAAoE,GAAA,CAAe,IAAIpd,IAAAkY,MAAJ,CAAgB,IAAA+E,OAAhB,CAA6B,IAAAjE,QAAA,CAAc,QAAd,CAA7B,CALhB,EAgBC,IAAAqE,QAhBD,CAgBgB,IAAIrd,IAAAkY,MAAJ,CAAgB,IAAAc,QAAA,CAAc,QAAd,CAAhB,CAEhB,KAAAsE,MAAA,CAAa,IAAItd,IAAAkY,MAAJ,CAAgB,IAAAc,QAAA,CAAc,MAAd,CAAhB,CAOb,KAAAuE,KAAA,CAAY,IAAIvd,IAAAkY,MAAJ,CAEX,IAAAqE,UAFW,CAEK,IAAAP,MAFL,CAEiB,IAAAC,UAFjB,CAGX,IAAAK,KAHW,CAGA,IAAAJ,KAHA,CAIX,IAAAG,UAJW,CAIK,IAAAD,MAJL,CAIiB,IAAAD,UAJjB,CAWZ,KAAAqB,OAAA,CAAc,IAAIxd,IAAAkY,MAAJ,CAEb,IAAAqE,UAFa,CAGb,IAAAf,OAHa,CAIb,IAAAW,UAJa,CAMd,KAAAsB,SAAA,CAAgB,IAAIzd,IAAAkY,MAAJ,CAEf,IAAA+D,UAFe,CAGf,IAAAT,OAHe,CAIf,IAAAa,UAJe,CAOhB,OAAO,KA1I0B,CA5BA,CA+K9BtB,YAAQ,CAAE2C,CAAF,CAAW,CAGtB,GAAI,IAAAzC,wBAAJ,EAA4F,IAAAnF,KAAA6H,mBAA5F,CAA0H,CAEzH,IAAIC;AAAkD,CAAlDA,GAAkBF,CAAlBE,EAAwC,GAAxCA,CAA8B/f,IAAAE,GAA9B6f,CAEJ,KAAA9C,aAAA5V,KAAA,CAAwB,IAAA2V,KAAxB,CAAAgD,OAAA,EAEID,EAAJ,CACK,IAAA5C,UAAJ,EAEC,IAAArB,eAAA,CAAqB,IAAAkB,KAArB,CAAgC,CAAA,CAAhC,CACC,CAAA,IAAAG,UAAArB,eAAA,CAA+B,IAAAmB,aAA/B,CAAkD,CAAA,CAAlD,CAHF,GAME,IAAAhF,KAAA6D,eAAA,CAA0B,IAAAkB,KAA1B,CAAqC,CAAA,CAArC,CACA,CAAA,IAAA/E,KAAA6D,eAAA,CAA0B,IAAAmB,aAA1B,CAA6C,CAAA,CAA7C,CAPF,CADD,CAYK,IAAAE,UAAJ,EAEC,IAAAlB,eAAA,CAAqB,IAArB,CAA2B,CAAA,CAA3B,CACC,CAAA,IAAAkB,UAAAlB,eAAA,CAA+B,IAA/B,CAAqC,CAAA,CAArC,CAHF,EAME,IAAAhE,KAAAgE,eAAA,CAA0B,IAA1B,CAAgC,CAAA,CAAhC,CAxBsH,CA+B1H,IAAA9W,OAAA6Y,iBAAA,CAA8B,IAAAhB,KAA9B,CAAyC6C,CAAzC,CAGA,KAAA7C,KAAAE,SAAA,CAAqB2C,CAIjBtb,EAAAA,CAAI,IAAAwY,QAAA1hB,OAKR,KALA,IAEC4kB,EAAK,IAAIrc,KAAAwB,QAGV,CAAOb,CAAA,EAAP,CAAA,CAECyV,CAMA,CANU,IAAAqD,WAAA,CAAiB9Y,CAAjB,CAMV;AAJAyV,CAAA7U,OAAA+a,iBAAA,CAAiC,IAAA/a,OAAjC,CAA8C6U,CAAAxB,YAA9C,CAIA,CAHAwB,CAAA7V,SAAAgc,sBAAA,CAAwCnG,CAAA7U,OAAxC,CAGA,CAFA6U,CAAAxT,MAAA4Z,mBAAA,CAAkCpG,CAAA7U,OAAlC,CAEA,CADA8a,CAAAI,gBAAA,CAAoBrG,CAAA7U,OAApB,CACA,CAAA6U,CAAArT,WAAA2Z,sBAAA,CAA0CL,CAA1C,CAtDqB,CA/KW,CA6O9B/C,YAAQ,EAAE,CACb,MAAO,KAAAF,KAAAE,SADM,CA7OoB,aAuPrBqD,QAAQ,CAAEvG,CAAF,CAAW,CAE/B,MAAIA,EAAJ,GAAgB,IAAA2D,OAAhB,CAAwC,QAAxC,CACI3D,CAAJ,GAAgB,IAAAmE,MAAhB,CAAwC,OAAxC,CACInE,CAAJ,GAAgB,IAAAoE,UAAhB,CAAwC,WAAxC,CACIpE,CAAJ,GAAgB,IAAAqE,KAAhB,CAAwC,MAAxC,CACIrE,CAAJ,GAAgB,IAAAsE,UAAhB,CAAwC,WAAxC,CACItE,CAAJ,GAAgB,IAAAuE,MAAhB,CAAwC,OAAxC,CACIvE,CAAJ,GAAgB,IAAAwE,UAAhB,CAAwC,WAAxC,CACIxE,CAAJ,GAAgB,IAAAyE,KAAhB,CAAwC,MAAxC,CACIzE,CAAJ,GAAgB,IAAA0E,UAAhB,CAAwC,WAAxC;AAEO,CAAA,CAZwB,CAvPE,aAuQrB3D,QAAQ,CAAExd,CAAF,CAAYiC,CAAZ,CAAmB,CAMvC,IANuC,IAEnCwb,EAAU,IAAI7Y,IAAAkY,MAFqB,CAItC9V,EAAI,CAEL,CAAa,CAAb,CAAOA,CAAA,EAAP,CAAA,CAHSic,IAIJnD,WAAA,CAAiB9Y,CAAjB,CAAA,CAAsBhH,CAAtB,CAAJ,GAAyCiC,CAAzC,EAAiDwb,CAAApgB,IAAA,CAJzC4lB,IAIsDnD,WAAA,CAAiB9Y,CAAjB,CAAb,CAIlD,OAAOyW,EAXgC,CAvQN,UAyRxBI,QAAQ,CAAExB,CAAF,CAAQ,CAEzB,GAAIA,CAAJ,CAAU,CAAA,IAELyB,EAAa,EAFR,CAGRrB,CAHQ,CAIRzV,EAAI,IAAAwY,QAAA1hB,OAJI,CAKRigB,EAAiB,CAEd1B,EAAJ,WAAoBzX,KAAAsP,UAApB,GAAqCmI,CAArC,CAA4CA,CAAArJ,KAA5C,CAEA,KAAA,CAAa,CAAb,CAAOhM,CAAA,EAAP,CAAA,CAECyV,CAGA,CAHU,IAAAqD,WAAA,CAAiB9Y,CAAjB,CAGV,CAFAuU,CAEA,CAFQkB,CAAA,CAASJ,CAAT,CAAAd,MAAAvI,KAER,CAA4BpW,IAAAA,EAA5B,GAAIkhB,CAAA,CAAYvC,CAAZ,CAAJ,EAECuC,CAAA,CAAYvC,CAAZ,CACA,CADsB,CACtB,CAAAwC,CAAA,EAHD,EAKKD,CAAA,CAAYvC,CAAZ,CAAA,EAGN,OAA0B,EAAnB,GAAAwC,CAAA,CAAuB,CAAA,CAAvB,CAA8B,CAAA,CAtB5B,CA2BTpZ,OAAAqZ,KAAA,CAAc,+FAAd,CACA,OAAO,CAAA,CA9BiB,CAzRQ,CAAnC,C,CC3OApZ,IAAAse,KAAA,CAAYC,QAAQ,CAAEtO,CAAF,CAAQF,CAAR,CAAe,CAElC,IAAAgM,IAAA,CAAW,CAEV9L,CAAAsM,UAAA,CAAiBtM,CAAAwH,KAAjB,CAAAxJ,KAFU,CAGVgC,CAAA+L,MAAA,CAAc/L,CAAAwH,KAAd,CAAAxJ,KAHU,CAIVgC,CAAAgM,UAAA,CAAiBhM,CAAAwH,KAAjB,CAAAxJ,KAJU,CAKV8B,CAAAwM,UAAA,CAAkBxM,CAAA0H,KAAlB,CAAAxJ,KALU,CAMV8B,CAAAiM,MAAA,CAAejM,CAAA0H,KAAf,CAAAxJ,KANU,CAOV8B,CAAAkM,UAAA,CAAkBlM,CAAA0H,KAAlB,CAAAxJ,KAPU,CASVgC,CAAAqM,KAAA,CAAcrM,CAAAwH,KAAd,CAAAxJ,KATU,CAUVgC,CAAAuL,OAAA,CAAevL,CAAAwH,KAAf,CAAAxJ,KAVU,CAWVgC,CAAAiM,KAAA,CAAcjM,CAAAwH,KAAd,CAAAxJ,KAXU,CAYV8B,CAAAuM,KAAA,CAAcvM,CAAA0H,KAAd,CAAAxJ,KAZU,CAaV8B,CAAAyL,OAAA,CAAgBzL,CAAA0H,KAAhB,CAAAxJ,KAbU,CAcV8B,CAAAmM,KAAA,CAAcnM,CAAA0H,KAAd,CAAAxJ,KAdU,CAgBVgC,CAAAoM,UAAA,CAAiBpM,CAAAwH,KAAjB,CAAAxJ,KAhBU,CAiBVgC,CAAAmM,MAAA,CAAkBnM,CAAAwH,KAAlB,CAAAxJ,KAjBU,CAkBVgC,CAAAkM,UAAA,CAAkBlM,CAAAwH,KAAlB,CAAAxJ,KAlBU,CAmBV8B,CAAAsM,UAAA,CAAkBtM,CAAA0H,KAAlB,CAAAxJ,KAnBU,CAoBV8B,CAAAqM,MAAA,CAAmBrM,CAAA0H,KAAnB,CAAAxJ,KApBU,CAqBV8B,CAAAoM,UAAA,CAAkBpM,CAAA0H,KAAlB,CAAAxJ,KArBU,CAFuB,CA8BnCjO;IAAAse,KAAA3d,UAAA6d,QAAA,CAA8BC,QAAQ,EAAE,CAEvC,IAAIxQ,EAAO,EAEX,KAAA8N,IAAApU,QAAA,CAAkB,QAAQ,CAAE/F,CAAF,CAAW,CAEpCqM,CAAA,EAAQrM,CAAA8c,UAF4B,CAArC,CAIA,OAAOzQ,EARgC,CAUxCjO,KAAAse,KAAA3d,UAAAge,QAAA,CAA8BC,QAAQ,CAAE3Q,CAAF,CAAQ,CAE7C,IAAIpV,CAEJoV,EAAA,CAAOA,CAAAlC,YAAA,CAAkB,EAAlB,CACP,KAAKlT,CAAL,CAAS,CAAT,CAAgB,EAAhB,CAAYA,CAAZ,CAAoBA,CAAA,EAApB,CAEC,IAAAkjB,IAAA,CAAUljB,CAAV,CAAA6lB,UAAA,CAA0BzQ,CAAAnC,OAAA,CAAajT,CAAb,CAAgB,CAAhB,CAPkB,C,CCzE9CmH,IAAA6e,UAAA,CAAkB,QAAQ,EAAE,CAU3B,MAAO,SAAQ,CAAE/I,CAAF,CAAQ5S,CAAR,CAAoB,CA4BlC4b,QAASA,EAAe,CAAE3N,CAAF,CAAUlM,CAAV,CAAmB,CAE1C8Z,CAAAvY,WAAA,CAAoCvB,CAAA+Z,iBAApC,CACAC,EAAAlB,iBAAA,CAAuC9Y,CAAAK,YAAvC,CAA2DyZ,CAA3D,CACA,OAAO5N,EAAA+N,gBAAA,CAAwBD,CAAxB,CAJmC,CAiC3CE,QAASA,EAAM,CAAEla,CAAF,CAAUma,CAAV,CAAkBC,CAAlB,CAA0B,CAIRnc,IAAAA,EAAAA,CAAAA,CAzB5Boc,EAAS1d,CAAA,GAAYvB,QAAZ,CAAuBuB,CAAA2d,sBAAA,EAAvB,CAAyD,MAC/D,CAD+D,KAEhE,CAFgE,OAG9DpmB,MAAAqmB,WAH8D,QAI7DrmB,MAAAsmB,YAJ6D,CAOlE7d,EAAJ,GAAgBvB,QAAhB,GACKqf,CAEH,CAFO9d,CAAA+d,cAAAC,gBAEP,CADAN,CAAArP,KACA,EADe9W,MAAA0mB,YACf,CADoCH,CAAAI,WACpC,CAAAR,CAAAS,IAAA,EAAe5mB,MAAA6mB,YAAf,CAAoCN,CAAAO,UAHtC,CAMC,EAAA,CAAOX,CAeRY,EAAArb,EAAA,EAAYua,CAAZ,CAAqBe,CAAAlQ,KAArB,EAAqCkQ,CAAApc,MAArC,CAAoD,CAApD,CAAwD,CACxDmc,EAAApb,EAAA,EAAYua,CAAZ,CAAqBc,CAAAJ,IAArB,EAAqCI,CAAAnc,OAArC,CAAsD,EAAtD,CAA0D,CAC1Dkc,EAAAnb,EAAA,CAAW,EAGXzH,EAAAsX,IAAA,CAASsL,CAAArb,EAAT,CAAkBqb,CAAApb,EAAlB,CAA2B,CAA3B,CAIAga;CAAA,CAAiBoB,CAAjB,CAAwBjb,CAAxB,CACA6Z,EAAA,CAAiBxhB,CAAjB,CAAsB2H,CAAtB,CAIA3H,EAAAqe,IAAA,CAASuE,CAAT,CAAA3W,UAAA,EAIA6W,EAAAxL,IAAA,CAASsL,CAAT,CAAgB5iB,CAAhB,CAIA+iB,EAAA7Z,WAAA,CAA0BsP,CAAAxQ,YAA1B,CACA8a,EAAAtE,aAAA,CAAkBuE,CAAlB,CAGA,OAAOD,EAjCiC,CA7DP,IAIjCD,CAJiC,CAKjClB,EAAuB,IAAIxd,KAAAwB,QALM,CAMjCod,EAAgB,IAAI5e,KAAAwB,QANa,CAOjCid,EAAS,IAAIze,KAAA2C,QAPoB,CAQjC9G,EAAO,IAAImE,KAAA2C,QAAJ,CAAmB,CAAnB,CAAsB,CAAtB,CAAyB,CAAzB,CAR0B,CASjCqL,EAAU,IAAIhO,KAAA2C,QATmB,CAUjCgc,EAAO,IAAI3e,KAAA6e,IAVsB,CAWjCC,EAAO,IAAI9e,KAAA+e,KAXsB,CAYjCC,EAAU,IAAIhf,KAAAif,OAZmB,CAajC3B,EAA0B,IAAItd,KAAAwB,QAbG,CAcjC0d,EAAyBT,CAAAhT,WAAA,CAAkB5P,CAAlB,CAK1BijB,EAAAjY,IAAAsM,IAAA,CAAwB,GAAxB,CAAa,CAACkB,CAAA3J,KAAd,CAAwC,GAAxC,CAA6B,CAAC2J,CAAA3J,KAA9B,CAAwD,GAAxD,CAA6C,CAAC2J,CAAA3J,KAA9C,CACAoU,EAAAlY,IAAAuM,IAAA,CAAwB,GAAxB,CAAckB,CAAA3J,KAAd,CAAwC,GAAxC,CAA8B2J,CAAA3J,KAA9B,CAAwD,GAAxD,CAA8C2J,CAAA3J,KAA9C,CACAsU,EAAAnJ,OAAA,CAAgBqJ,CAAhB,CAAyC7K,CAAA3J,KAAzC,CAAqD,GAsLrD,OA3EMyU,iBAEYC,QAAQ,CAAE5b,CAAF,CAAUma,CAAV,CAAkBC,CAAlB,CAA0ByB,CAA1B,CAAsDC,CAAtD,CAA2E,CAG/FC,CAAAA,CAAeF,CAAfE,EAA6C,IAAIvf,KAAA2C,QAKrD,IAAe,IAAf,GAAIgb,CAAJ,EAAkC,IAAlC;AAAuBC,CAAvB,CAAyC,MAAO,KAKhDF,EAAA,CAAQla,CAAR,CAAgBma,CAAhB,CAAwBC,CAAxB,CAMA,OAAIe,EAAAa,qBAAA,CAA0BR,CAA1B,CAAJ,EAC2C,IAD3C,GACCL,CAAAc,aAAA,CAAkBX,CAAlB,CAAuBS,CAAvB,CADD,EAGKD,CAKGC,GAjDL7T,CA8CD,CAD4CsC,CAC5C,EA9C4B,IAAIhO,KAAA2C,QA8ChC,CA5CH+I,CAAAjI,KAAA,CA2CiC8b,CA3CjC,CAAApM,IAAA,CACO/W,IAAA6K,MAAA,CAAYyE,CAAAtI,EAAZ,CADP,CAC+BhH,IAAA6K,MAAA,CAAYyE,CAAArI,EAAZ,CAD/B,CACuDjH,IAAA6K,MAAA,CAAYyE,CAAApI,EAAZ,CADvD,CAAAoc,eAAA,CAEoB,CAFpB,CAEwBrL,CAAA3J,KAFxB,CAAAyI,IAAA,CAGSzH,CAAAtI,EAHT,CAGkB,CAHlB,CAGqBsI,CAAArI,EAHrB,CAG8B,CAH9B,CAGiCqI,CAAApI,EAHjC,CAG0C,CAH1C,CA4CG,CAAAgc,CAAAK,8BAAA,CAAmD3R,CAAnD,CAA2DuR,CAA3D,CAGMA,EAAAA,CARR,EAYO,IA/B4F,CAF/FJ,wBAqCmBS,QAAQ,CAAEpc,CAAF,CAAUma,CAAV,CAAkBC,CAAlB,CAA0BiC,CAA1B,CAAiCC,CAAjC,CAAiD,CAGhF,GAAe,IAAf,GAAInC,CAAJ,EAAkC,IAAlC,GAAuBC,CAAvB,CAAyC,MAAO,KAIhDF,EAAA,CAAQla,CAAR,CAAgBma,CAAhB,CAAwBC,CAAxB,CAGA,OAAOe,EAAAoB,eAAA,CAAoBF,CAApB,CAA2BC,CAA3B,CAVyE,CArC5EX,0BAoDuB,QAAQ,EAAE,CAErC,IAAIpjB,EAAM,IAAIiE,KAAA2C,QAEd,OAAO,SAAQ,CAAE4c,CAAF,CAAgB,CAI9BxjB,CAAA0H,KAAA,CAAU8b,CAAV,CAAAvoB,IAAA,CAA8B8nB,CAAAlY,IAA9B,CAAA8Y,eAAA,CACkB,CADlB;AACsBrL,CAAA3J,KADtB,CAAAyI,IAAA,CAEO/W,IAAAyK,IAAA,CAAU9K,CAAAqH,EAAV,CAAgB,CAAhB,CAAmB,CAAnB,CAFP,CAE+BhH,IAAAyK,IAAA,CAAU,CAAV,CAAc9K,CAAAsH,EAAd,CAAoB,CAApB,CAAuB,CAAvB,CAF/B,CAE2DjH,IAAAyK,IAAA,CAAU,CAAV,CAAc9K,CAAAuH,EAAd,CAAoB,CAApB,CAAuB,CAAvB,CAF3D,CAMA,OAAO+Q,EAAAsC,SAAA,CAAuB,CAAvB,CAAe5a,CAAAuH,EAAf,CAAmC,CAAnC,CAA2BvH,CAAAsH,EAA3B,CAAuCtH,CAAAqH,EAAvC,CAVuB,CAJM,CAAV,EApDvB+b,CAhI4B,CAVR,CAAV,E,CCNlB5gB,IAAAyhB,YAAA,CAAoB,QAAQ,EAAE,CAE7B,MAAO,SAAQ,CAAE3L,CAAF,CAAQ7Q,CAAR,CAAgB/B,CAAhB,CAA4Bwe,CAA5B,CAAuCC,CAAvC,CAAkD,CAkMhEC,QAASA,EAAe,CAAE1hB,CAAF,CAAS,CAG5B0gB,CAAAiB,QAAJ,EAAoC,CAApC,GAAmB3hB,CAAA4hB,OAAnB,GAGC1C,CAaA,CAbW2C,CAAA7hB,CAAA8hB,QAAAD,EAAiB7hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBD,EAAqC7hB,CAArC6hB,OAaX,CAZA1C,CAYA,CAZW4C,CAAA/hB,CAAA8hB,QAAAC,EAAiB/hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBC,EAAqC/hB,CAArC+hB,OAYX,CAAkBC,CAAArB,gBAAA,CAA2B5b,CAA3B,CAAmCma,CAAnC,CAA2CC,CAA3C,CAAmD2B,CAAnD,CAAiEM,CAAjE,CAAlB,GAICphB,CAAAiiB,yBAAA,EAGA,CAA0B,CAA1B,GAAIrM,CAAAmB,WAAA,EAAJ,GAGChe,CAuBA,CAvB2B,WAAlB,GAAA,MAAOE,OAAP,EAAwDnB,IAAAA,EAAxD,GAAiCmB,MAAAC,YAAjC,EAAgGpB,IAAAA,EAAhG,GAAqEmB,MAAAC,YAAAlB,IAArE,CAA4GiB,MAAAC,YAAAlB,IAAA,EAA5G,CAAuID,IAAAC,IAAA,EAuBhJ,CApBA0oB,CAAAwB,OAoBA,CApBa,CAAA,CAoBb,CAfAvK,CAeA,CAfUqK,CAAAG,yBAAA,CAAoCrB,CAApC,CAeV,CAXAsB,CAWA,CAXkB,CAAExM,CAAAyM,OAAA,CAAa1K,CAAA3B,SAAb,CAAgC,CAAhC,CAAF,CAAuCJ,CAAAyM,OAAA,CAAa1K,CAAA1B,SAAb,CAAgC,CAAhC,CAAvC,CAA4EL,CAAAyM,OAAA,CAAa1K,CAAAzB,SAAb,CAAgC,CAAhC,CAA5E,CAWlB,CAPA/V,QAAA4B,iBAAA,CAA2B,WAA3B;AAAwCugB,CAAxC,CAOA,CANAniB,QAAA4B,iBAAA,CAA2B,WAA3B,CAAwCugB,CAAxC,CAMA,CAFAniB,QAAA4B,iBAAA,CAA2B,SAA3B,CAAsCwgB,CAAtC,CAEA,CADApiB,QAAA4B,iBAAA,CAA2B,aAA3B,CAA0CwgB,CAA1C,CACA,CAAApiB,QAAA4B,iBAAA,CAA2B,UAA3B,CAAuCwgB,CAAvC,CA1BD,CAPD,CAhBD,CAHgC,CAsEjCD,QAASA,EAAgB,CAAEtiB,CAAF,CAAS,CAGjCwiB,CAAA7d,EAAA,CAAckd,CAAA7hB,CAAA8hB,QAAAD,EAAiB7hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBD,EAAqC7hB,CAArC6hB,OACdW,EAAA5d,EADA,CACcmd,CAAA/hB,CAAA8hB,QAAAC,EAAiB/hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBC,EAAqC/hB,CAArC+hB,OAKVrB,EAAAiB,QAAJ,GACC3hB,CAAAyiB,eAAA,EACA,CAAAziB,CAAA0iB,gBAAA,EAFD,CATiC,CAkBlCH,QAASA,EAAa,CAAEviB,CAAF,CAAS,CAAA,IAG1B2E,EAAMkd,CAAA7hB,CAAA8hB,QAAAD,EAAiB7hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBD,EAAqC7hB,CAArC6hB,OACTjd,EAAAA,CAAMmd,CAAA/hB,CAAA8hB,QAAAC,EAAiB/hB,CAAA8hB,QAAA,CAAc,CAAd,CAAjBC,EAAqC/hB,CAArC+hB,OAGPrB,EAAAwB,OAAA,CAAa,CAAA,CAMTxB,EAAAiB,QAAJ,GAAqBhd,CAArB,GAA2Bwa,CAA3B,EAAqCva,CAArC,GAA2Cua,CAA3C,GAAuDwD,CAAvD,GAQKnO,CAgCJ,CAhCe5N,CAAAsH,KAAA,CAAW,CAAX,CAAAhD,YAAA,EAgCf,CAzBI0X,CAyBJ,CAzBkBjlB,IAAA6K,MAAA,CAAYgT,CAAZ,CAAoB7d,IAAAE,GAApB,CAAoC,CAApC,CAyBlB,CAzB8DF,IAAAE,GAyB9D;AAzBwE,GAyBxE,CArB4B,GAqB5B,CAvB6BgU,CAAA7Y,OAAA,EAuB7B,GAvBwE,WAAlB,GAAA,MAAOC,OAAP,EAAwDnB,IAAAA,EAAxD,GAAiCmB,MAAAC,YAAjC,EAAgGpB,IAAAA,EAAhG,GAAqEmB,MAAAC,YAAAlB,IAArE,CAA4GiB,MAAAC,YAAAlB,IAAA,EAA5G,CAAuID,IAAAC,IAAA,EAuB7L,EAvB4Me,CAuB5M,IAnBC6pB,CACA,CADcjlB,IAAAc,MAAA,CAAY+c,CAAZ,CAAoB7d,IAAAE,GAApB,CAAoC,CAApC,CACd,CAD0DF,IAAAE,GAC1D,CADoE,GACpE,CAAA+kB,CAAA,EAAoD,CAArC,CAAA3F,CAAA4F,IAAA,CAAWhR,CAAAxI,UAAA,EAAX,CAAA,CAAmD,GAAnD,CAAyC1L,IAAAE,GAAzC,CAAwD,CAkBxE,EATA+X,CAAAX,MAAA,CAAY,IAAInV,IAAAwU,MAAJ,CAAgBE,CAAhB,CAAyBoO,CAAApZ,iBAAA,EAAzB,CAAZ,CASA,CAJAzQ,CAIA,CAJO,CAIP,CAHAypB,CAAA7d,EAGA,CAHY7M,IAAAA,EAGZ,CAFA0qB,CAAA5d,EAEA,CAFY9M,IAAAA,EAEZ,CADA6qB,CACA,CADc,CAAA,CACd,CAAA/b,CAAA,CAAQ,IAxCT,CA6CAzG,SAAA2iB,oBAAA,CAA8B,WAA9B,CAA2CR,CAA3C,CACAniB,SAAA2iB,oBAAA,CAA8B,WAA9B,CAA2CR,CAA3C,CAGAniB,SAAA2iB,oBAAA,CAA8B,SAA9B,CAAyCP,CAAzC,CACApiB,SAAA2iB,oBAAA,CAA8B,UAA9B,CAA0CP,CAA1C,CACApiB,SAAA2iB,oBAAA,CAA8B,aAA9B;AAA6CP,CAA7C,CAhE8B,CAnR/B,IAAIP,EAAY,IAAIliB,IAAA6e,UAAJ,CAAoB/I,CAApB,CAA0B5S,CAA1B,CAAhB,CAGC8d,EAAe,IAAIvf,KAAA2C,QAHpB,CAICyT,CAJD,CAIUyK,CAJV,CAKCxb,CALD,CAKQsY,CALR,CAKgBC,CALhB,CAOC4D,EAAe,IAAIxhB,KAAA2C,QAPpB,CAQCye,EAAc,CAAA,CARf,CASCvB,EAAS,IAAI7f,KAAAyhB,MATd,CAUCnR,EAAY,IAAItQ,KAAA2C,QAVjB,CAWC+Y,EAAQ,IAAI1b,KAAA2C,QAXb,CAYCse,EAAU,IAAIjhB,KAAA0hB,QACN,KAAI1hB,KAAA2C,QApBmD,KAqB/DyW,EAAQ,IAAIpZ,KAAA2C,QArBmD,CAsB/DsX,EAAQ,CAtBuD,CAsBpDziB,EAAO,CAGnBypB,EAAA7d,EAAA,CAAY7M,IAAAA,EACZ0qB,EAAA5d,EAAA,CAAY9M,IAAAA,EAOZ,KAAI4oB,EAAM,QAID,CAAA,CAJC,SAQA,CAAA,CARA,WAYGe,CAZH,EAYgB,CAAA,CAZhB,mBAgBU,GAhBV,WAoBGD,CApBH,EAoBgB,GApBhB,CAyBVjgB,MAAA4W,gBAAA1X,UAAA2M,MAAA,CAAuCsT,CAAvC,CAKAA,EAAAwC,kBAAA,CAAyB,QAAQ,EAAE,CAAA,IAE9BC,EAAiB,IAAI5hB,KAAA2C,QAFS,CAGjCkf,EAAU,IAAI7hB,KAAAyhB,MAEf,OAAO,SAAQ,CAAEre,CAAF,CAAKC,CAAL,CAAQ,CAEtB,MAA2E,KAA3E,GAAIod,CAAArB,gBAAA,CAA2B5b,CAA3B,CAAmCJ,CAAnC,CAAsCC,CAAtC,CAAyCue,CAAzC,CAAyDC,CAAzD,CAAJ,CAAyF,IAAzF;AAEO,SACGpB,CAAAG,yBAAA,CAAoCgB,CAApC,CADH,MAEuB,CAAtB,GAAAC,CAAA7T,OAAA5K,EAAA,CAA0B,OAA1B,CACiB,EAAtB,GAAAye,CAAA7T,OAAA5K,EAAA,CAA0B,MAA1B,CACsB,CAAtB,GAAAye,CAAA7T,OAAA3K,EAAA,CAA0B,IAA1B,CACsB,EAAtB,GAAAwe,CAAA7T,OAAA3K,EAAA,CAA0B,MAA1B,CACsB,CAAtB,GAAAwe,CAAA7T,OAAA1K,EAAA,CAA0B,OAA1B,CACA,MAPI,CAJe,CALW,CAAV,EAyDzB6b,EAAA5nB,OAAA,CAAauqB,QAAS,EAAE,CAAA,IAGnB1e,EAAI6d,CAAA7d,EAHe,CAItBC,EAAI4d,CAAA5d,EAGD+c,EAAAjB,CAAAiB,QAAJ,EAAyB7pB,IAAAA,EAAzB,GAAmB6M,CAAnB,EAA2C7M,IAAAA,EAA3C,EAAsC8M,CAAtC,EAA0Dsa,CAA1D,GAAqEva,CAArE,EAA0Ewa,CAA1E,GAAqFva,CAArF,GAMCod,CAAAb,uBAAA,CAAkCpc,CAAlC,CAA0CJ,CAA1C,CAA6CC,CAA7C,CAAgDwc,CAAhD,CAAuD2B,CAAvD,CAqDA,CAlDAlR,CAAAyR,WAAA,CAAsBP,CAAtB,CAAoCjC,CAApC,CAkDA,CA/CQ6B,CAAAA,CA+CR,EA/C4C,CA+C5C,CA/CuB9Q,CAAA7Y,OAAA,EA+CvB,GAzCQ4N,CAuBP,GAvBeA,CAAAiU,SAuBf,CAvBgC,CAuBhC,EApBA8H,CAoBA,CApBc,CAAA,CAoBd,CAfAhI,CAAAiC,aAAA,CAAmBwE,CAAA7R,OAAnB,CAAiCsC,CAAjC,CAeA,CA1DE1J,CA0DF,CA1DQxK,IAAAwK,IAAA,CAAUxK,IAAAqG,IAAA,CAiDC2W,CAjDShW,EAAV,CAAV,CAAgChH,IAAAqG,IAAA,CAiDrB2W,CAjD+B/V,EAAV,CAAhC,CAAsDjH,IAAAqG,IAAA,CAiD3C2W,CAjDqD9V,EAAV,CAAtD,CA0DR,CATmB8V,CA/CrBhW,EAwDE,CATmBgW,CA/CRhW,EAwDX,CAxDsBwD,CAwDtB,CAxD4B,CAwD5B,CATmBwS,CA9CrB/V,EAuDE,CAvDsB,CAAb,GA8CU+V,CA9CVhW,EAAA,CAAiB,CAAjB,CA8CUgW,CA9Ca/V,EAAvB,CAAkCuD,CAAlC,CAAwC,CAuDjD,CATmBwS,CA7CrB9V,EAsDE,CAtDsB,CAAb,GA6CU8V,CA7CVhW,EAAA,EAA+B,CAA/B,GA6CUgW,CA7CQ/V,EAAlB,CAAmC,CAAnC,CA6CU+V,CA7C+B9V,EAAzC,CAAoDsD,CAApD,CAA0D,CAsDnE,CAJAvB,CAIA,CAJQwb,CAAA,CAAgBzkB,IAAAqG,IAAA,CAAmB,CAAnB;AAAU2W,CAAA9V,EAAV,CAAgC,CAAhC,CAAuB8V,CAAA/V,EAAvB,CAAoC+V,CAAAhW,EAApC,CAAhB,CAA+D,CAA/D,CAIR,CAAAsY,CAAAL,aAAA,CAAoBhW,CAAA+T,KAApB,CAAgCyG,CAAA7R,OAAhC,CAAAlG,UAAA,EAkBD,EAbIsZ,CAaJ,GARC9Q,CAAAyR,WAAA,CAAsBP,CAAtB,CAAoCjC,CAApC,CAGA,CAAAtF,CAAA,CAFUyB,CAAA4F,IAAAA,CAAWhR,CAAXgR,CAEV,CAAcjN,CAAA3J,KAAd,CAA0ByU,CAAAc,UAK3B,EAAI5a,CAAJ,GAAYA,CAAAiU,SAAZ,CAA6BW,CAA7B,CA3DD,CAPuB,CA0OxBxY,EAAAjB,iBAAA,CAA6B,WAA7B,CAA0C2f,CAA1C,CACA1e,EAAAjB,iBAAA,CAA6B,YAA7B,CAA2C2f,CAA3C,CAEA,OAAOhB,EArWyD,CAFpC,CAAV,E,CCfpB5gB,IAAAyjB,SAAA,CAAiB,QAAQ,EAAE,CAG1B,IAAA,CAAA,CAAA,CAAA,EAAA,CAAgC,CAAhC,EAAA,CAA4C,CAuB5C,OAAO,SAAS,CAAElqB,CAAF,CAAU0L,CAAV,CAAkB/B,CAAlB,CAA+B,CAuF9CwgB,QAASA,EAAS,CAAExjB,CAAF,CAAU,CAGN,CAAA,CAArB,GAAK0gB,CAAAiB,QAAL,EAA8C,CAA9C,GAA8B3hB,CAAAyjB,MAA9B,GAGAC,CAUA,CAVQC,CAUR,CAPA9R,CAAAoP,eAAA,CAA0B,CAA1B,CAOA,CANA2C,CAAA,CAA0B5jB,CAAA6hB,MAA1B,CAAuC7hB,CAAA+hB,MAAvC,CAAoD/B,CAApD,CAMA,CALA6D,CAAA7e,KAAA,CAAmBgb,CAAnB,CAKA,CAFAU,CAAA1d,WAAA8f,oBAAA,CAAoC,WAApC,CAAiDU,CAAjD,CAEA,CADArjB,QAAA4B,iBAAA,CAA2B,WAA3B,CAAwC+hB,CAAxC,CACA,CAAA3jB,QAAA4B,iBAAA,CAA2B,SAA3B,CAAsCgiB,CAAtC,CAbA,CAH2B,CAoB5BD,QAASA,EAAS,CAAE9jB,CAAF,CAAU,CAEN,CAAA,CAArB,GAAK0gB,CAAAiB,QAAL,GAEA3hB,CAAAyiB,eAAA,EAQA,CANAiB,CAMA,CANQC,CAMR,CAJAC,CAAA,CAA0B5jB,CAAA6hB,MAA1B,CAAuC7hB,CAAA+hB,MAAvC,CAAoD/B,CAApD,CAIA,CADAnO,CAAAyR,WAAA,CAAsBtD,CAAtB,CAA6B6D,CAA7B,CACA,CAAAA,CAAA7e,KAAA,CAAmBgb,CAAnB,CAVA,CAF2B,CAiB5B+D,QAASA,EAAO,CAAE/jB,CAAF,CAAU,CAEzBG,QAAA2iB,oBAAA,CAA8B,WAA9B,CAA2CgB,CAA3C,CACA3jB,SAAA2iB,oBAAA,CAA8B,SAA9B,CAAyCiB,CAAzC,CACArD,EAAA1d,WAAAjB,iBAAA,CAAiC,WAAjC;AAA8CyhB,CAA9C,CAGqB,EAAA,CAArB,GAAK9C,CAAAiB,QAAL,GAGA+B,CAHA,CAGQM,CAHR,CAPyB,CAe1BC,QAASA,EAAU,CAAEjkB,CAAF,CAAU,CAG5BH,OAAAgJ,IAAA,CAAa,yBAAb,CAEqB,EAAA,CAArB,GAAK6X,CAAAiB,QAAL,GAGA+B,CAQA,CARQC,CAQR,CANA9R,CAAAoP,eAAA,CAA0B,CAA1B,CAMA,CALA2C,CAAA,CAA0B5jB,CAAA8hB,QAAA,CAAe,CAAf,CAAAD,MAA1B,CAAoD7hB,CAAA8hB,QAAA,CAAe,CAAf,CAAAC,MAApD,CAA8E/B,CAA9E,CAKA,CAJA6D,CAAA7e,KAAA,CAAmBgb,CAAnB,CAIA,CAFAU,CAAA1d,WAAA8f,oBAAA,CAAoC,YAApC,CAAkDmB,CAAlD,CAEA,CADA9jB,QAAA4B,iBAAA,CAA2B,UAA3B,CAAuCmiB,CAAvC,CACA,CAAA/jB,QAAA4B,iBAAA,CAA2B,WAA3B,CAAwCoiB,CAAxC,CAXA,CAL4B,CAqB7BA,QAASA,EAAS,CAAEnkB,CAAF,CAAU,CAEN,CAAA,CAArB,GAAK0gB,CAAAiB,QAAL,GAEA3hB,CAAAyiB,eAAA,EAQA,CANAiB,CAMA,CANQC,CAMR,CAJAC,CAAA,CAA0B5jB,CAAAokB,eAAA,CAAsB,CAAtB,CAAAvC,MAA1B,CAA2D7hB,CAAAokB,eAAA,CAAsB,CAAtB,CAAArC,MAA3D,CAA4F/B,CAA5F,CAIA,CADAnO,CAAAyR,WAAA,CAAsBtD,CAAtB,CAA6B6D,CAA7B,CACA,CAAAA,CAAA7e,KAAA,CAAmBgb,CAAnB,CAVA,CAF2B,CAgB5BkE,QAASA,EAAQ,CAAElkB,CAAF,CAAU,CAE1BG,QAAA2iB,oBAAA,CAA8B,UAA9B,CAA0CoB,CAA1C,CACA/jB,SAAA2iB,oBAAA,CAA8B,WAA9B;AAA2CqB,CAA3C,CACAzD,EAAA1d,WAAAjB,iBAAA,CAAiC,YAAjC,CAA+CkiB,CAA/C,CAEqB,EAAA,CAArB,GAAKvD,CAAAiB,QAAL,GAEA+B,CAFA,CAEQM,CAFR,CAN0B,CAhLmB,IAE1CN,EAzBgBW,EAuB0B,CAG7CxS,EAAe,IAAItQ,KAAA0hB,QAH0B,CAI7CjD,EAAW,IAAIze,KAAA0hB,QACH,KAAI1hB,KAAA0hB,QAL6B,KAM7CY,EAAe,IAAItiB,KAAA0hB,QAN0B,CAO7CvC,EAAM,SACI,CAAA,CADJ,YAEO1d,CAFP,eAGU,CAHV,SAII,IAJJ,CAPuC,CAe1C4gB,EAA2BA,QAAQ,CAAEjf,CAAF,CAAKC,CAAL,CAAQqM,CAAR,CAAgB,CAElBjO,IAAAA,EAAA0d,CAAA1d,WAAAA,CAlCjCoc,EAAS1d,CAAA,GAAYvB,QAAZ,CAAuBuB,CAAA2d,sBAAA,EAAvB,CAAyD,MAC/D,CAD+D,KAEhE,CAFgE,OAG9DpmB,MAAAqmB,WAH8D,QAI7DrmB,MAAAsmB,YAJ6D,CAOlE7d,EAAJ,GAAgBvB,QAAhB,GACKqf,CAEH,CAFO9d,CAAA+d,cAAAC,gBAEP,CADAN,CAAArP,KACA,EADe9W,MAAA0mB,YACf,CADoCH,CAAAI,WACpC,CAAAR,CAAAS,IAAA,EAAe5mB,MAAA6mB,YAAf,CAAoCN,CAAAO,UAHtC,CA8BC,OAAO9O,EAAAyD,IAAA,EACJ/P,CADI;AAxBAya,CAyBAvb,MADA,CAxBAub,CAyBerP,KADf,EAxBAqP,CAyB+Bvb,MAD/B,EAxBAub,CA0BJtb,OAFI,CAxBAsb,CA0BYS,IAFZ,CAEyBjb,CAFzB,EAxBAwa,CA0B+Btb,OAF/B,EAxBAsb,CAsBGtb,OAEH,CAxBAsb,CAsBmBvb,MAEnB,EAL+C,CAYvD6c,EAAA5nB,OAAA,CAAa,QAAQ,EAAE,CAAA,IAElB6hB,EAAO,IAAIpZ,KAAA2C,QAFO,CAGrBlL,EAAS,CAHY,CAIrBsrB,EAAuB,IAAI/iB,KAAAgD,WAE5B,OAAOggB,SAAuB,EAAG,CAEZ,CAAA,CAApB,GAAI7D,CAAAiB,QAAJ,EA1DkB0C,EA0DlB,GAA6BX,CAA7B,GAIA/I,CAAAjG,IAAA,CAAU7C,CAAAjN,EAAV,CAAsC,EAAtC,CAAuBiN,CAAAlN,EAAvB,CAAyC,CAAzC,CAAA0E,UAAA,EA0BA,CAnBAib,CAAAtf,KAAA,CAA2B3L,CAAAiL,WAA3B,CAAAkgB,QAAA,EAmBA,CAlBA7J,CAAA8J,gBAAA,CAAsB1f,CAAAT,WAAtB,CAkBA,CAjBAqW,CAAA8J,gBAAA,CAAsBH,CAAtB,CAiBA,CAdAzS,CAAAoP,eAAA,CAA0B,CAA1B,CAAgCtjB,IAAAwK,IAAA,CAAU,CAAV,CAAexK,IAAAyK,IAAA,CAAU,CAAV,CAAesY,CAAAgE,QAAf,CAAf,CAAhC,CAcA,CAVA1rB,CAUA,CAVS6Y,CAAA7Y,OAAA,EAUT,CANAK,CAAAid,SAAAqO,aAAA,CAA8BhK,CAA9B,CAAoC,CAAC3hB,CAArC,CAA8C0nB,CAAAkE,cAA9C,CAMA,CAAIlB,CAAJ,GAAcC,CAAd,CAA6BD,CAA7B,CAxFkBW,EAwFlB,CAKSX,CAAJ,GAAcM,CAAd,EAAyC,IAAzC,EAA+BhrB,CAA/B,CAEJgnB,CAAAznB,IAAA,CAAWsZ,CAAX,CAFI,CAKJ6R,CALI,CA7FaW,EA0DlB,CAFgC,CANX,CAAV,EAoKb3D,EAAA1d,WAAAjB,iBAAA,CAAiC,WAAjC;AAA8CyhB,CAA9C,CACA9C,EAAA1d,WAAAjB,iBAAA,CAAiC,YAAjC,CAA+CkiB,CAA/C,CAEA,OAAOvD,EAlMuC,CA1BrB,CAAV,E,CCMjB5gB,IAAA+kB,UAAA,CAAiB/kB,IAAA+kB,UAAjB,EAAmC,EACnC/kB;IAAA+kB,UAAAC,MAAA,CAAuBC,QAAQ,CAAE7M,CAAF,CAAYtC,CAAZ,CAAkB,CAuDhDoP,QAASA,EAAQ,CAAEC,CAAF,CAAQ,CACxBA,CAAApjB,MAAAqjB,QAAA,CAAqB,OADG,CAGzBC,QAASA,EAAQ,CAAEF,CAAF,CAAQ,CACxBA,CAAApjB,MAAAqjB,QAAA,CAAqB,MADG,CAIzBE,QAASA,EAAoB,EAAE,CAC9B,MAAOjqB,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4BooB,CAAAriB,WAAAsiB,iBAAA,CAAsC,YAAtC,CAA5B,CADuB,CA8C/B5f,QAASA,EAAM,EAAE,CAEZkQ,CAAA5S,WAAAhB,WAAJ,EAECqjB,CAAA3f,OAAA,CAAiBE,CAAjB,CAAwBgQ,CAAA7Q,OAAxB,CAGDwgB,sBAAA,CAAuB7f,CAAvB,CAPgB,CAhGjB,IAAI8f,EAAYjkB,KAAAkkB,MAChBlkB,MAAAkkB,MAAA,CAAcD,CAAd,EAA2B,QAAQ,EAAE,EAbW,KAmB5CH,EAAW,IAAI9jB,KAAAiB,cAnB6B,CAoB/CoD,EAAQ,IAAIrE,KAAAI,SAMbiE,EAAArN,IAAA,CAAWqd,CAAAU,SAAX,CACA1Q,EAAArN,IAAA,CAAWqd,CAAA7Q,OAAX,CA3BgD,KAkC5C2gB,CAAkB,KAAInkB,KAAA2C,QAC1B0R,EAAAY,MAAA/O,QAAA,CAAoB,QAAQ,CAAE8P,CAAF,CAAQ5e,CAAR,CAAW,CAEtC+sB,CAAA,CAAY9P,CAAA,CAAK2B,CAAAA,KAAL,CAAAoO,MAAZ,CAAoC,IAAIpkB,KAAAC,YAAJ,CAAuBrB,QAAA8C,cAAA,CAAwB,KAAxB,CAAvB,CAEpCyiB;CAAAhkB,QAAAkkB,UAAArtB,IAAA,CAAiC,WAAjC,CACAmtB,EAAA5jB,SAAAkD,KAAA,CAAyBuS,CAAAoD,KAAzB,CAAAsG,eAAA,CAAqDrL,CAAA3J,KAArD,CACAyZ,EAAA5jB,SAAA6b,OAAA,EAEA+H,EAAAhkB,QAAA8c,UAAA,CAA8BjH,CAAAA,KAAArM,YAAA,EAC9B0K,EAAAU,SAAA/d,IAAA,CAAmBmtB,CAAnB,CATsC,CAAvC,CAaA9P,EAAA/F,MAAA8V,MAAA9K,SAAAjW,EAAA,CAAyC,GAAzC,CAA8BjH,IAAAE,GAC9B+X,EAAA7F,KAAA4V,MAAA9K,SAAAjW,EAAA,CAAyC,IAAzC,CAA8BjH,IAAAE,GAC9B+X,EAAAiB,KAAA8O,MAAA9K,SAAAjW,EAAA,CAA8BjH,IAAAE,GAC9B+X,EAAAhG,GAAA+V,MAAA9K,SAAAlW,EAAA,CAAuC,IAAvC,CAA4BhH,IAAAE,GAC5B+X,EAAA9F,KAAA6V,MAAA9K,SAAAlW,EAAA,CAAyC,GAAzC,CAA8BhH,IAAAE,GAe9B+X,EAAAiQ,eAAA,CAAsBC,QAAQ,EAAE,CAE/BV,CAAA,EAAA3d,QAAA,CAAgCud,CAAhC,CACA,KAAAe,kBAAA,CAAyB,CAAA,CAEzB,OAAO,KALwB,CAUhCnQ,EAAAoQ,eAAA,CAAsBC,QAAQ,EAAE,CAE/Bb,CAAA,EAAA3d,QAAA,CAAgC0d,CAAhC,CACA,KAAAY,kBAAA,CAAyB,CAAA,CAEzB,OAAO,KALwB,CAmBhCjmB;IAAAa,OAAA,CAAab,IAAA4V,QAAAjV,UAAb,CAAqCX,IAAA+kB,UAAAqB,aAAAC,QAArC,CAKAjO,EAAAzQ,QAAA,CAAkB3H,IAAA+kB,UAAAqB,aAAlB,CAmBAX,sBAAA,CAAuB7f,CAAvB,CAII8f,EAAJ,GAAgBjkB,KAAAkkB,MAAhB,CAA8BD,CAA9B,CAOA,OAAOH,EAnIyC,CA2IjDvlB;IAAA+kB,UAAAqB,aAAA,CAA+B,QAAQ,EAAE,CAGxC,MAAO,SAAQ,CAAEvO,CAAF,CAAW,CAGzB,IAAI3U,EAAa7C,QAAA8C,cAAA,CAAwB,KAAxB,CACjBD,EAAA4iB,UAAArtB,IAAA,CAA0B,SAA1B,CACAyK,EAAA4iB,UAAArtB,IAAA,CAA0B,YAA1B,CAAwCof,CAAArI,GAAxC,CACAqI,EAAAyO,YAAA,CAAsB,IAAI7kB,KAAAC,YAAJ,CAAuBwB,CAAvB,CAGtB2U,EAAAyO,YAAAlY,KAAA,CAA2B,cAA3B,CAA4CyJ,CAAArI,GAC5CqI,EAAApf,IAAA,CAAaof,CAAAyO,YAAb,CAGAvmB,QAAAgJ,IAAA,CAAa8O,CAAA1L,KAAb,CACIoa,KAAAA,EAAgB1O,CAAA1L,KAAhBoa,CAA+B,CAA/BA,CAEAC,EAAe,CAElB,gCAFkB,CAEeD,CAFf,CAE2B,wBAF3B,CAGlB,gCAHkB,CAGeA,CAHf,CAG2B,wBAH3B,CAIlB,gCAJkB,CAIeA,CAJf,CAI2B,wBAJ3B,CAKlB,gCALkB;AAKeA,CALf,CAK2B,wBAL3B,CAMlB,gCANkB,CAMeA,CANf,CAM2B,wBAN3B,CAOlB,gCAPkB,CAOeA,CAPf,CAO2B,wBAP3B,CAkBnB1O,EAAAnB,MAAA/O,QAAA,CAAuB,QAAQ,CAAE8P,CAAF,CAAS,CAOvCA,CAAA7V,QAAA,CAAevB,QAAA8C,cAAA,CAAwB,KAAxB,CACfsU,EAAA7V,QAAAkkB,UAAArtB,IAAA,CAA4B,MAA5B,CACAgf,EAAA7V,QAAAkkB,UAAArtB,IAAA,CAA4B,MAA5B,CAAoCuH,IAAAsP,UAAAY,YAAA,CAA4BuH,CAAAjI,GAA5B,CAAAtE,WAAA,EAApC,CACA2M,EAAAyO,YAAA1kB,QAAA8B,YAAA,CAAyC+T,CAAA7V,QAAzC,CAMA,KAAI6kB,EAAmBpmB,QAAA8C,cAAA,CAAwB,KAAxB,CACvBsjB,EAAAX,UAAArtB,IAAA,CAAgC,WAAhC,CACAgf,EAAA7V,QAAA8B,YAAA,CAA0B+iB,CAA1B,CAQIC,EAAAA,CAAYrmB,QAAA8C,cAAA,CAAwB,KAAxB,CAChBujB,EAAAZ,UAAArtB,IAAA,CAAyB,IAAzB,CACAgf;CAAA7V,QAAA8B,YAAA,CAA0BgjB,CAA1B,CAEA,KAAIC,EAAmBtmB,QAAA8C,cAAA,CAAwB,MAAxB,CACvBwjB,EAAAb,UAAArtB,IAAA,CAAgC,WAAhC,CACAkuB,EAAAC,UAAA,CAA6B/O,CAAArI,GAC7BkX,EAAAhjB,YAAA,CAAuBijB,CAAvB,CAQC5kB,EAAAA,CAAQ0V,CAAA7V,QAAAG,MAETA,EAAA8kB,WAAA,CAAmB9kB,CAAA0D,aAAnB,CAAwC1D,CAAAyD,gBAAxC,CAAgEzD,CAAA4D,UAAhE,CAHmB6gB,CAAAM,CAAcrP,CAAAjI,GAAdsX,CAWfrP,EAAAb,YAAJ,CAECa,CAAA7V,QAAAkkB,UAAArtB,IAAA,CAA4B,iBAA5B,CAFD,EAeCgf,CAAA7V,QAAAkkB,UAAArtB,IAAA,CAA4B,iBAA5B,CAgCA,CAxBIsuB,CAwBJ,CAxBqB1mB,QAAA8C,cAAA,CAAwB,KAAxB,CAwBrB,CAvBA4jB,CAAAjB,UAAArtB,IAAA,CAA8B,SAA9B,CAuBA,CAtBAsuB,CAAAjB,UAAArtB,IAAA,CAA8Bgf,CAAAd,MAAAvI,KAA9B,CAsBA,CArBAqJ,CAAA7V,QAAA8B,YAAA,CAA0BqjB,CAA1B,CAqBA,CAdIlP,CAAAb,iBAcJ,EAZC+P,CAAAjB,UAAArtB,IAAA,CAA8B,aAA9B,CAYD,CAJIuuB,CAIJ,CAJkB3mB,QAAA8C,cAAA,CAAwB,KAAxB,CAIlB;AAHA6jB,CAAAlB,UAAArtB,IAAA,CAA2B,MAA3B,CAGA,CAFAuuB,CAAAJ,UAEA,CAFwBnP,CAAAjI,GAExB,CADAiI,CAAAxJ,KACA,CADY+Y,CACZ,CAAAvP,CAAA7V,QAAA8B,YAAA,CAA0BsjB,CAA1B,CA/CD,CAnDuC,CAAxC,CA8GAnP,EAAAwB,KAAA,EACAxB,EAAA8B,eAAA,EACA9B,EAAA0B,aAAA,EACA1B,EAAAkC,aAAA,EACAlC,EAAAuC,QAAA,EACAvC,EAAAyC,UAAA,EACAzC,EAAAqC,eAAA,EAtJyB,CAHc,CAAV,EAmK/Bla;IAAA+kB,UAAAqB,aAAAC,QAAA,CAAuC,QAAQ,EAAE,CAGhDnB,QAASA,EAAQ,CAAEC,CAAF,CAAQ,CACxBA,CAAApjB,MAAAqjB,QAAA,CAAqB,OADG,CAIzBC,QAASA,EAAQ,CAAEF,CAAF,CAAQ,CACxBA,CAAApjB,MAAAqjB,QAAA,CAAqB,MADG,CAKzB,MAAO,iBAGW6B,QAAS,CAAEC,CAAF,CAAY,CAGrC,MAAO7rB,MAAAsF,UAAAmG,MAAA3J,KAAA,CAA4B,IAAAmpB,YAAA1kB,QAAA4jB,iBAAA,CAA2C,OAA3C,EADd0B,CACc,EADF,EACE,EAA5B,CAH8B,CAHhC,MAUA7N,QAAQ,EAAE,CAEf6L,CAAA,CAAU,IAAAoB,YAAA1kB,QAAV,CACA,KAAAulB,QAAA,CAAe,CAAA,CAHA,CAVV,MAeA7N,QAAQ,EAAE,CAEf+L,CAAA,CAAU,IAAAiB,YAAA1kB,QAAV,CACA,KAAAulB,QAAA,CAAe,CAAA,CAHA,CAfV,gBAoBU1N,QAAQ,EAAE,CAEzB,IAAAwN,gBAAA,CAAsB,kBAAtB,CAAAtf,QAAA,CAAoDud,CAApD,CACA,KAAAkC,kBAAA,CAAyB,CAAA,CAHA,CApBpB,gBAyBU1N,QAAQ,EAAE,CAEzB,IAAAuN,gBAAA,CAAsB,kBAAtB,CAAAtf,QAAA,CAAoD0d,CAApD,CACA;IAAA+B,kBAAA,CAAyB,CAAA,CAHA,CAzBpB,gBA8BUzN,QAAQ,CAAEE,CAAF,CAAQ,CAE/B,IAAAoN,gBAAA,CAAsB,kBAAtB,CAAAtf,QAAA,CAAoDud,CAApD,CACKrL,EAAL,GAAY,IAAAwN,kBAAZ,CAAqC,CAAA,CAArC,CAH+B,CA9B1B,gBAmCUvN,QAAQ,CAAED,CAAF,CAAQ,CAE/B,IAAAoN,gBAAA,CAAsB,kBAAtB,CAAAtf,QAAA,CAAoD0d,CAApD,CACKxL,EAAL,GAAY,IAAAwN,kBAAZ,CAAqC,CAAA,CAArC,CAH+B,CAnC1B,cAwCQ9N,QAAQ,EAAE,CAEvB,IAAA0N,gBAAA,EAAAtf,QAAA,CAAgC,QAAQ,CAAEwd,CAAF,CAAQ,CAC/CA,CAAAW,UAAAltB,OAAA,CAAuB,iBAAvB,CAD+C,CAAhD,CAGA,KAAA0uB,gBAAA,CAAuB,CAAA,CALA,CAxClB,cA+CQ9N,QAAQ,EAAE,CAEvB,IAAAyN,gBAAA,EAAAtf,QAAA,CAAiC,QAAQ,CAAEwd,CAAF,CAAQ,CAChDA,CAAAW,UAAArtB,IAAA,CAAoB,iBAApB,CADgD,CAAjD,CAGA,KAAA6uB,gBAAA;AAAuB,CAAA,CALA,CA/ClB,cAsDQtN,QAAQ,EAAE,CAEvB,IAAAiN,gBAAA,CAAsB,WAAtB,CAAAtf,QAAA,CAA6C0d,CAA7C,CACA,KAAAkC,gBAAA,CAAuB,CAAA,CAHA,CAtDlB,cA2DQxN,QAAQ,EAAE,CAEvB,IAAAkN,gBAAA,CAAsB,WAAtB,CAAAtf,QAAA,CAA6Cud,CAA7C,CACA,KAAAqC,gBAAA,CAAuB,CAAA,CAHA,CA3DlB,gBAgEUtN,QAAQ,EAAE,CAEzB,IAAAgN,gBAAA,CAAsB,aAAtB,CAAAtf,QAAA,CAA+Cud,CAA/C,CACA,KAAAsC,kBAAA,CAAyB,CAAA,CAHA,CAhEpB,gBAqEUtN,QAAQ,EAAE,CAEzB,IAAA+M,gBAAA,CAAsB,aAAtB,CAAAtf,QAAA,CAA+C0d,CAA/C,CACA,KAAAmC,kBAAA,CAAyB,CAAA,CAHA,CArEpB,SA0EGrN,QAAQ,EAAE,CAElB,IAAA8M,gBAAA,CAAsB,MAAtB,CAAAtf,QAAA,CAAwCud,CAAxC,CACA,KAAAuC,WAAA,CAAkB,CAAA,CAHA,CA1Eb,SA+EGrN,QAAQ,EAAE,CAElB,IAAA6M,gBAAA,CAAsB,MAAtB,CAAAtf,QAAA,CAAwC0d,CAAxC,CACA;IAAAoC,WAAA,CAAkB,CAAA,CAHA,CA/Eb,WAoFKpN,QAAQ,EAAE,CAEpB,IAAA4M,gBAAA,CAAsB,QAAtB,CAAAtf,QAAA,CAA0Cud,CAA1C,CACA,KAAAwC,aAAA,CAAoB,CAAA,CAHA,CApFf,WAyFKpN,QAAQ,EAAE,CAEpB,IAAA2M,gBAAA,CAAsB,QAAtB,CAAAtf,QAAA,CAA0C0d,CAA1C,CACA,KAAAqC,aAAA,CAAoB,CAAA,CAHA,CAzFf,YA8FMnN,QAAQ,EAAE,CAErB,MAAO,KAAAlD,QAFc,CA9FhB,YAkGMoD,QAAQ,CAAEkN,CAAF,CAAiB3qB,CAAjB,CAA6B,CAE5C,IAAA4qB,aAAJ,EAAwB,IAAAA,aAAArsB,KAAA,EACFvD,KAAAA,EAAtB,GAAI2vB,CAAJ,GAAkCA,CAAlC,CAAkD,CAAlD,CACA,IAAIA,CAAJ,GAAsB,IAAAtQ,QAAtB,CAAoC,CAAA,IAGnCiB,EAAO,IAH4B,CAInCN,EAAkBvQ,CAAAkgB,CAAAlgB,CAAgB,IAAA4P,QAAhB5P,UAAA,EAAApD,MAAA,CAAiD,CAAjD,CAAoD,CAApD,CAAuD,CAAvD,CAA0D,GAA1D,CAElB,KAAAujB,aAAA,CAAoB9sB,CAAA,IAAIzC,KAAAgB,MAAJ,CAAgB,SAAW,IAAAge,QAAX,CAAhB,CAAAvc,IAAA,CAChB,SAEM6sB,CAFN,CADgB,CAKjB3P,CALiB,CAAA5b,OAAA,CAMX/D,KAAA6B,OAAA2tB,UAAAjqB,MANW,CAAAd,SAAA,CAOT,QAAQ,EAAE,CAEpBwb,CAAAgO,YAAA1kB,QAAAG,MAAAsV,QAAA;AAA0C,IAAAA,QAC1CiB,EAAAjB,QAAA,CAAe,IAAAA,QAHK,CAPD,CAAAra,WAAA,CAYP,QAAQ,EAAE,CAElBA,CAAJ,WAA0B6V,SAA1B,EAAqC7V,CAAA,EAFf,CAZH,CAAA9B,MAAA,EANe,CAJY,CAlG3C,oBAgIc4sB,QAAQ,CAAEzqB,CAAF,CAAS,CAEpC,MAAOxC,WAAA,CAAY,IAAAosB,gBAAA,CAAsB,WAAtB,CAAA,CAAoC,CAApC,CAAAllB,MAAAsV,QAAZ,CAF6B,CAhI/B,oBAoIc0Q,QAAQ,CAAE1qB,CAAF,CAAS,CAEtBrF,IAAAA,EAAd,GAAIqF,CAAJ,GAA0BA,CAA1B,CAAkC,GAAlC,CACA,KAAI2qB,EAAW3qB,CACf,KAAA4pB,gBAAA,CAAsB,WAAtB,CAAAtf,QAAA,CAA6C,QAAQ,CAAEsgB,CAAF,CAAW,CAC/DA,CAAAlmB,MAAAsV,QAAA,CAAwB2Q,CAAA/c,SAAA,EADuC,CAAhE,CAJoC,CApI/B,CAZyC,CAAV,E,CCrOvCjL,IAAAkoB,KAAA,CAAYC,QAAQ,CAAEC,CAAF,CAAc,CAGjCpoB,IAAAkY,MAAA/a,KAAA,CAAiB,IAAjB,CAKAirB,EAAA,CAAaA,CAAb,EAA2B,EAG3B,KAAAC,OAAA,CAA4CrwB,IAAAA,EAAtB,GAAAowB,CAAAC,OAAA,CAAkC,CAAA,CAAlC,CAA0CD,CAAAC,OAChE,KAAAC,WAAA,CAAiDtwB,IAAAA,EAA1B,GAAAowB,CAAAE,WAAA,CAAsC,CAAA,CAAtC,CAA8CF,CAAAE,WACrE,KAAAC,wBAAA,CAAsEvwB,IAAAA,EAAvC,GAAAowB,CAAAG,wBAAA,CAAmD,CAAA,CAAnD,CAA0DH,CAAAG,wBACzF,KAAAC,qBAAA,CAAmExwB,IAAAA,EAApC,GAAAowB,CAAAI,qBAAA,CAAgD,CAAA,CAAhD,CAAuDJ,CAAAI,qBAEtF,KAAIC,EAAoBL,CAAA7C,SAApBkD,EAA2CzoB,IAAA+kB,UAAAC,MAQ/CoD,EAAAM,YAAA,CAAuD1wB,IAAAA,EAA3B,GAAAowB,CAAAM,YAAA,CAAuC,GAAvC,CAA6CN,CAAAM,YAGzE,KAAAC,YAAA,CAAoB,CAAA,CACpB,KAAAzV,QAAA,CAAoB,CAAA,CAEpB,KAAA0V,QAAA,CADA,IAAAC,UACA,CADoB,CAAA,CAEpB,KAAAjjB,OAAA,CAAgB,CAAA,CAChB;IAAAkjB,aAAA,CAAqB,IACrB,KAAAnL,mBAAA,CAA4D3lB,IAAAA,EAAlC,GAAAowB,CAAAzK,mBAAA,CAA8C,CAAA,CAA9C,CAAsDyK,CAAAzK,mBAWhF,KAAAoL,YAAA,CALA,IAAA9vB,KAKA,CALY,CAWZ,KAAA+vB,UAAA,CAAiB,IAAIhpB,IAAA0S,MAMrB,KAAAuW,WAAA,CAAkB,IAAIjpB,IAAA0S,MAAJ,CAAgB1S,IAAAwU,MAAA1B,SAAhB,CAMlB,KAAAoW,aAAA,CAAoB,IAAIlpB,IAAA0S,MAAJ,CAAgB1S,IAAAwU,MAAA1B,SAAhB,CAKpB,KAAAqW,cAAA,CAAkDnxB,IAAAA,EAA7B,GAAAowB,CAAAe,cAAA,CAAyCf,CAAAe,cAAzC,CAAoE,GAKzF,KAAAC,cAAA,CAAqB,IAAAC,cAIrB,KAAAld,KAAA,CAAqC,CAArC,CAAYic,CAAAM,YACZ,KAAAzS,YAAA,CAAmB,IAAA9J,KAAnB,CAA+B,CAc/B,KAAAlH,OAAA,CAAc,IAAIxD,KAAA6nB,kBAAJ,CAPEC,EAOF,CANEpwB,MAAAqmB,WAMF,CALErmB,MAAAsmB,YAKF;AAHE+J,CAGF,CAFEC,GAEF,CACd,KAAAxkB,OAAAjD,SAAA+C,EAAA,CAAqC,CAArC,CAAyB,IAAAoH,KAQzB,KAAAqK,SAAA,CAAgB,IAAI/U,KAAAI,SACpB,KAAA6nB,gBAAA,CAAuB,IAAIjoB,KAAAI,SAC3B,KAAAkZ,SAAA,CAAiB,IAAAvE,SAAAuE,SACjB,KAAAvW,WAAA,CAAkB,IAAAgS,SAAAhS,WAClB,KAAAxC,SAAA,CAAiB,IAAAwU,SAAAxU,SACjB,KAAAgB,OAAA,CAAe,IAAAwT,SAAAxT,OACf,KAAAsC,YAAA,CAAkB,IAAAkR,SAAAlR,YAGlB,KAAAyV,SAAAnG,IAAA,CAEC,EAFD,CAEO/W,IAAAE,GAFP,CAEiB,GAFjB,CAGE,GAHF,CAGOF,IAAAE,GAHP,CAGiB,GAHjB,CAIC,CAJD,CAYA,KAAA4rB,cAAA,CAAqB,IAAIloB,KAAA8C,MAAJ,CAAiB,GAAjB,CAAuB1G,IAAAE,GAAvB,CAAiC,GAAjC,CAAsC,IAAtC,CAA6CF,IAAAE,GAA7C,CAAuD,GAAvD,CAA4D,CAA5D,CAcrB,KAAAqa,SAAA,CAAgB,EACf,EAIA,CAAE5J,CAAF,CAAKC,CAAL,CAAA,CAAA,CAAcG,CAAd,CAJA,CAIyB,CAAEJ,CAAF,CAAKC,CAAL,CAAA,CAAA,CAAA,EAJzB,CAIkD,CAAED,CAAF,CAAKC,CAAL,CAAQC,CAAR,CAAA,CAAA,EAJlD,CAKA,CAAEF,CAAF,CAAA,CAAA,CAAA,CAAcI,CAAd,CALA,CAKyB,CAAEJ,CAAF,CAAA,CAAA,CAAA,CAAA,EALzB,CAKkD,CAAEA,CAAF,CAAA,CAAQE,CAAR;AAAA,CAAA,EALlD,CAMA,CAAEF,CAAF,CAAA,CAAA,CAAWG,CAAX,CAAcC,CAAd,CANA,CAMyB,CAAEJ,CAAF,CAAA,CAAA,CAAWG,CAAX,CAAA,EANzB,CAMkD,CAAEH,CAAF,CAAA,CAAQE,CAAR,CAAWC,CAAX,CAAA,EANlD,CAWA,CAAA,CAAKF,CAAL,CAAA,CAAA,CAAcG,CAAd,CAXA,CAWyB,CAAA,CAAKH,CAAL,CAAA,CAAA,CAAA,EAXzB,CAWkD,CAAA,CAAKA,CAAL,CAAQC,CAAR,CAAA,CAAA,EAXlD,CAYA,CAAA,CAAA,CAAA,CAAA,CAAcE,CAAd,CAZA,CAYyB,CAAA,CAAA,CAAA,CAAA,CAAA,EAZzB,CAYkD,CAAA,CAAA,CAAQF,CAAR,CAAA,CAAA,EAZlD,CAaA,CAAA,CAAA,CAAA,CAAWC,CAAX,CAAcC,CAAd,CAbA,CAayB,CAAA,CAAA,CAAA,CAAWD,CAAX,CAAA,EAbzB,CAakD,CAAA,CAAA,CAAQD,CAAR,CAAWC,CAAX,CAAA,EAblD,CAkBA,CAAA,CAAKF,CAAL,CAAA,CAAA,CAAcG,CAAd,CAAiBC,CAAjB,CAlBA,CAkByB,CAAA,CAAKJ,CAAL,CAAA,CAAA,CAAA,CAAiBI,CAAjB,CAlBzB,CAkBkD,CAAA,CAAKJ,CAAL,CAAQC,CAAR,CAAA,CAAA,CAAiBG,CAAjB,CAlBlD,CAmBA,CAAA,CAAA,CAAA,CAAA,CAAcD,CAAd,CAAiBC,CAAjB,CAnBA,CAmByB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiBA,CAAjB,CAnBzB,CAmBkD,CAAA,CAAA,CAAQH,CAAR,CAAA,CAAA,CAAiBG,CAAjB,CAnBlD,CAoBA,CAAA,CAAA,CAAA,CAAWF,CAAX,CAAcC,CAAd,CAAiBC,CAAjB,CApBA,CAoByB,CAAA,CAAA,CAAA,CAAWF,CAAX,CAAA,CAAiBE,CAAjB,CApBzB,CAoBkD,CAAA,CAAA,CAAQH,CAAR,CAAWC,CAAX,CAAA,CAAiBE,CAAjB,CApBlD,CAAAlH,QAAA,CAsBW,QAAQ,CAAEiiB,CAAF,CAAmBC,CAAnB,CAA8B,CAEjD,IAAAzR,SAAAzf,KAAA,CAAoB,IAAIqH,IAAA4V,QAAJ,CAAkB,IAAlB,CAAwBiU,CAAxB,CAAmCD,CAAnC,CAApB,CAFiD,CAAtCvW,KAAA,CAIJ,IAJI,CAtBX,CAiDD,KAAAyW,KAAA,CAAe,IAAI9pB,IAAAkY,MACnB,KAAAmF,QAAA,CAAe,IAAIrd,IAAAkY,MACnB,KAAAoF,MAAA,CAAe,IAAItd,IAAAkY,MACnB,KAAAgF,QAAA,CAAe,IAAIld,IAAAkY,MACnB,KAAA6R,QAAA,CAAe,IAAI/pB,IAAAkY,MACnB,KAAAE,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAWuD,CAAX,CAAkB,CAE3B,MAArB,GAAIvD,CAAAhB,KAAJ,EAAgC,IAAAiT,KAAArxB,IAAA,CAAeof,CAAf,CACX,SAArB;AAAIA,CAAAhB,KAAJ,EAAgC,IAAAwG,QAAA5kB,IAAA,CAAkBof,CAAlB,CACX,OAArB,GAAIA,CAAAhB,KAAJ,EAAgC,IAAAyG,MAAA7kB,IAAA,CAAgBof,CAAhB,CACX,SAArB,GAAIA,CAAAhB,KAAJ,EAAgC,IAAAqG,QAAAzkB,IAAA,CAAkBof,CAAlB,CACX,SAArB,GAAIA,CAAAhB,KAAJ,EAAkD,MAAlD,GAAiCgB,CAAAhB,KAAjC,EAA2D,IAAAkT,QAAAtxB,IAAA,CAAkBof,CAAlB,CANX,CAA1BxE,KAAA,CAQf,IARe,CAAvB,CAiBA,KAAApD,KAAA,CAAY,IAAIjQ,IAAA0a,MAAJ,CAEX,CAAE,EAAF,CAAM,EAAN,CAAU,EAAV,CACE,EADF,CACM,EADN,CACW,CADX,CAEG,CAFH,CAEO,CAFP,CAEW,CAFX,CAFW,CAII,IAJJ,CAOZ,KAAAzK,KAAA7B,KAAA,CAAiB,MACjB,KAAAb,OAAA,CAAc,IAAIvN,IAAA0a,MAAJ,CAEb,CAAE,EAAF,CAAM,EAAN,CAAU,EAAV,CACE,EADF,CACM,EADN,CACU,EADV,CAEG,CAFH,CAEO,CAFP,CAEW,CAFX,CAFa,CAIE,IAJF,CAOd,KAAAnN,OAAAa,KAAA,CAAmB,QACnB,KAAA2B,MAAA,CAAa,IAAI/P,IAAA0a,MAAJ,CAEZ,CAAG,CAAH,CAAM,EAAN,CAAU,EAAV,CACG,CADH,CACM,EADN,CACU,EADV,CAEG,CAFH,CAEM,EAFN,CAEU,EAFV,CAFY,CAIG,IAJH,CAOb,KAAA3K,MAAA3B,KAAA,CAAkB,OAClB,KAAA2B,MAAAiL,UAAA,CAAuB,IAAAzN,OACvB,KAAA0C,KAAA+K,UAAA,CAAsB,IAAAzN,OAKtB,KAAAuC,GAAA,CAAU,IAAI9P,IAAA0a,MAAJ,CAET,CAAE,EAAF;AAAM,EAAN,CAAU,EAAV,CACG,CADH,CACM,EADN,CACU,EADV,CAEG,CAFH,CAEO,CAFP,CAEW,CAFX,CAFS,CAIM,IAJN,CAOV,KAAA5K,GAAA1B,KAAA,CAAe,IACf,KAAA2O,QAAA,CAAe,IAAI/c,IAAA0a,MAAJ,CAEd,CAAE,EAAF,CAAM,EAAN,CAAU,EAAV,CACE,EADF,CACM,EADN,CACU,EADV,CAEG,CAFH,CAEO,CAFP,CAEW,CAFX,CAFc,CAIC,IAJD,CAOf,KAAAqC,QAAA3O,KAAA,CAAoB,SACpB,KAAA4B,KAAA,CAAY,IAAIhQ,IAAA0a,MAAJ,CAEX,CAAE,CAAF,CAAK,EAAL,CAAS,EAAT,CACE,CADF,CACK,EADL,CACS,EADT,CAEE,CAFF,CAEK,EAFL,CAES,EAFT,CAFW,CAIG,IAJH,CAOZ,KAAA1K,KAAA5B,KAAA,CAAiB,MACjB,KAAA4B,KAAAgL,UAAA,CAAsB,IAAA+B,QACtB,KAAAjN,GAAAkL,UAAA,CAAoB,IAAA+B,QAGpB,KAAAjG,MAAA,CAAa,IAAI9W,IAAA0a,MAAJ,CAEZ,CAAG,CAAH,CAAO,CAAP,CAAW,CAAX,CACG,CADH,CACO,CADP,CACW,CADX,CAEG,CAFH,CAEO,CAFP,CAEW,CAFX,CAFY,CAIG,IAJH,CAOb,KAAA5D,MAAA1I,KAAA,CAAkB,OAClB,KAAA4b,SAAA,CAAgB,IAAIhqB,IAAA0a,MAAJ,CAEf,CAAG,CAAH,CAAM,EAAN,CAAU,EAAV,CACE,EADF,CACM,EADN,CACU,EADV,CAEE,EAFF,CAEM,EAFN,CAEU,EAFV,CAFe,CAIA,IAJA,CAOhB,KAAAsP,SAAA5b,KAAA,CAAqB,UACrB,KAAA2I,KAAA,CAAY,IAAI/W,IAAA0a,MAAJ,CAEX,CAAE,EAAF,CAAM,EAAN,CAAU,EAAV,CACE,EADF,CACM,EADN,CACU,EADV,CAEE,EAFF,CAEM,EAFN,CAEU,EAFV,CAFW,CAII,IAJJ,CAOZ;IAAA3D,KAAA3I,KAAA,CAAiB,MACjB,KAAA2I,KAAAiE,UAAA,CAAsB,IAAAgP,SACtB,KAAAlT,MAAAkE,UAAA,CAAuB,IAAAgP,SAKvB,KAAAtT,MAAA,CAAa,CAAE,IAAAI,MAAF,CAAc,IAAAhH,GAAd,CAAuB,IAAAC,MAAvB,CAAmC,IAAAC,KAAnC,CAA8C,IAAAC,KAA9C,CAAyD,IAAA8G,KAAzD,CAGb,KAAAwL,OAAA,CAAc,CAAE,IAAAtS,KAAF,CAAa,IAAA1C,OAAb,CAA0B,IAAAwC,MAA1B,CAAsC,IAAAC,KAAtC,CAAiD,IAAA+M,QAAjD,CAA+D,IAAAjN,GAA/D,CAAwE,IAAAiH,KAAxE,CAAmF,IAAAiT,SAAnF,CAAkG,IAAAlT,MAAlG,CAiBd,KAAImT,EAAa,CAAE,CAAF,CAAK,CAAL,CAAQ,CAAR,CAAW,CAAX,CAAc,CAAd,CAAiB,CAAjB,CAAoB,CAApB,CAAuB,CAAvB,CAA0B,CAA1B,CAA6B,CAA7B,CAAgC,EAAhC,CAAoC,EAApC,CAAwC,EAAxC,CAA4C,EAA5C,CAAgD,EAAhD,CAAoD,EAApD,CAAwD,EAAxD,CAA4D,EAA5D,CAAgE,EAAhE,CAAoE,EAApE,CAAwE,EAAxE,CAA4E,EAA5E,CAAgF,EAAhF,CAAoF,EAApF,CAAwF,EAAxF,CAA4F,EAA5F,CAAgG,EAAhG,CACjB,KAAAC,iBAAA,CAAwB,GAClB,IAAApT,MADkB,GAElB,IAAAkT,SAFkB,GAGlB,IAAAjT,KAHkB,GAKlB,IAAAjH,GALkB,GAMlB,IAAAiN,QANkB,GAOlB,IAAA/M,KAPkB,GASlB,IAAAD,MATkB,GAUlB,IAAAxC,OAVkB,GAWlB,IAAA0C,KAXkB,GAmBlB,IAAIjQ,IAAA0a,MAAJ,CAAgBuP,CAAhB;AAA4B,IAA5B,CAnBkB,GAoBlB,IAAIjqB,IAAA0a,MAAJ,CAAgBuP,CAAhB,CAA4B,IAA5B,CApBkB,GAqBlB,IAAIjqB,IAAA0a,MAAJ,CAAgBuP,CAAhB,CAA4B,IAA5B,CArBkB,CA+BxB,KAAAC,iBAAArlB,EAAAoW,wBAAA,CAAkD,CAAA,CAClD,KAAAiP,iBAAAplB,EAAAmW,wBAAA,CAAkD,CAAA,CAClD,KAAAiP,iBAAAnlB,EAAAkW,wBAAA,CAAkD,CAAA,CAQlD,KAAAiP,iBAAArlB,EAAAgW,KAAAjG,IAAA,CAAmC,EAAnC,CAAsC,CAAtC,CAAyC,CAAzC,CACA,KAAAsV,iBAAAplB,EAAA+V,KAAAjG,IAAA,CAAkC,CAAlC,CAAsC,EAAtC,CAAyC,CAAzC,CACA,KAAAsV,iBAAAnlB,EAAA8V,KAAAjG,IAAA,CAAkC,CAAlC,CAAqC,CAArC,CAAyC,EAAzC,CAMA,KAAAwD,SAAAzQ,QAAA,CAAuB,QAAQ,CAAEkQ,CAAF,CAAWhf,CAAX,CAAc,CAC5Cgf,CAAA7B,WAAA,CAAoBnd,CAApB,CAD4C,CAA7C,CAKI,KAAA8kB,mBAAJ,EAA8B,IAAA7D,eAAA,CAAqB,CAAA,CAArB,CAS9B,KAAAyL,SAAA,CAAgBkD,CAAA,CAAe,IAAArQ,SAAf,CAA8B,IAA9B,CAChB,KAAAlV,WAAA,CAAkB,IAAAqiB,SAAAriB,WAClB;IAAAA,WAAA4iB,UAAArtB,IAAA,CAA+B,MAA/B,CACA,KAAAyK,WAAAnB,MAAAooB,SAAA,CAAiC,IAAAlU,YAAjC,CAAoD,IAIpD,KAAAO,SAAA/d,IAAA,CAAmB,IAAAixB,gBAAnB,CAQA,KAAAU,iBAAA,CAAwB,IAAIpqB,IAAAyhB,YAAJ,CAAsB,IAAtB,CAA4B,IAAAxc,OAA5B,CAAyC,IAAA/B,WAAzC,CAOxB,KAAAmnB,SAAA,CAAgB,KAAMjC,CAAAiC,SAAN,EAA6BrqB,IAAAyjB,SAA7B,EAA8C,IAA9C,CAAoD,IAAAxe,OAApD,CAAiE,IAAA/B,WAAjE,CAShB,KAAAonB,MAAA,CAAa,CACZ,IAAItqB,IAAAse,KAAJ,CAAe,IAAAxH,MAAf,CAA2B,IAAA/G,MAA3B,CADY,CAEZ,IAAI/P,IAAAse,KAAJ,CAAe,IAAArO,KAAf,CAA2B,IAAAH,GAA3B,CAFY,CAGZ,IAAI9P,IAAAse,KAAJ,CAAe,IAAAtO,KAAf,CAA2B,IAAA+G,KAA3B,CAHY,CAkBb,KAAAlT,QAAA,CAAc,GAAd,CAAmB,GAAnB,CAQA,KAAA0mB,KAAA,CAAY,IAAAA,KAAAlX,KAAA,CAAgB,IAAhB,CACZoS,sBAAA,CAAuB,IAAA8E,KAAvB,CASAlqB,SAAA4B,iBAAA,CAA2B,UAA3B;AAAuC,QAAQ,CAAE/B,CAAF,CAAS,CACZ,OAA3C,GAAIA,CAAAiN,OAAAqd,QAAAlf,YAAA,EAAJ,EACwC,UADxC,GACCpL,CAAAiN,OAAAqd,QAAAlf,YAAA,EADD,EAEE8W,CAAA,IAAAgI,iBAAAhI,OAFF,EAGC,IAAAmG,wBAHD,GAKMkC,CACJ,CADU3f,MAAA4f,aAAA,CAAqBxqB,CAAAyjB,MAArB,CACV,CAAiD,CAAjD,EAAI,0BAAA7qB,QAAA,CAAoC2xB,CAApC,CAAJ,EAAqD,IAAAtV,MAAA,CAAYsV,CAAZ,CANvD,CADuD,CAAjBpX,KAAA,CAU/B,IAV+B,CAAvC,CAaA,KAAIsX,EAAoB,QAAS,CAAE9lB,CAAF,CAAKC,CAAL,CAAQ,CAExC,IAAIkc,EAAe,IAAAoJ,iBAAAhH,kBAAA,CAAyCve,CAAzC,CAA4CC,CAA5C,CACfkc,EAAJ,EACC,IAAA1e,cAAA,CAAoB,IAAIrC,WAAJ,CAAgB,OAAhB,CAAyB,QAAU+gB,CAAV,CAAzB,CAApB,CAJuC,CAAjB3N,KAAA,CAMhB,IANgB,CASxB,KAAAnQ,WAAAjB,iBAAA,CAAkC,OAAlC,CAA2C,QAAQ,CAAE/B,CAAF,CAAS,CAK3DyqB,CAAA,CAHQzqB,CAAA6hB,MAGR,CAFK7hB,CAAA+hB,MAEL,CAL2D,CAA5D,CApdiC,CAoelCjiB,KAAAkoB,KAAAvnB,UAAA,CAAsBM,MAAAsB,OAAA,CAAevC,IAAAkY,MAAAvX,UAAf,CACtBX;IAAAkoB,KAAAvnB,UAAAiqB,YAAA,CAAkC5qB,IAAAkoB,KAClCloB;IAAAa,OAAA,CAAab,IAAAkoB,KAAAvnB,UAAb,CAAkC,SAGxB6M,QAAQ,CAAE1R,CAAF,CAAU,CAI1BA,CAAA,CAASA,CAAT,EAAmB,EAJO,KAOtB+uB,EAAQ,IAAAzB,cAAAtiB,MAAA,EAPc,CAQzBgkB,CARyB,CAQnBC,EAAoB,IAAI/qB,IAAAwU,MARL,CAQmBwW,CAI7C,KAAA/B,WAAArV,MAAA,CAAuB,CAAA,CAAvB,CAKA,KAJA,IAAAsV,aAAAtV,MAAA,CAAyB,CAAA,CAAzB,CAIA,CAAkB,CAAlB,CAAO9X,CAAA,EAAP,CAAA,CAAqB,CAIpBkvB,CAAA,CAAeH,CAAAre,MAAA,CAAY,EAAZ,CAQf,KAPAse,CAOA,CAPO5lB,CAAA,IAAIlF,IAAAwU,MAAJtP,MAAA,CAAuB6lB,CAAvB,CAOP,CAAOD,CAAA1Z,OAAA,CAAa2Z,CAAb,CAAP,CAAA,CAECD,CAAAlW,IAAA,CAAUoW,CAAAjyB,OAAA,CAAqB8E,IAAAc,MAAA,CAAYd,IAAA+L,OAAA,EAAZ,CAA4BohB,CAAA9xB,OAA5B,CAArB,CAAyE,CAAzE,CAAA,CAA6E,CAA7E,CAAV,CAOD4xB,EAAA9V,UAAA,CAAiB,CAAA,CAIjB,KAAAG,MAAA,CAAY2V,CAAZ,CAIAC,EAAA,CAAoBD,CAAAtkB,WAAA,EA7BA,CAqCrB,IAAAsiB,aAAA,CAAoBgC,CAtDM,CAHM,OA+D1BG,QAAQ,EAAE,CAEhB,IAAApC,UAAA,CAAiB,CAAA,CAFD,CA/DgB,UAqEvB5P,QAAQ,EAAE,CAEnB,MAEC,KAAAnC,MAAAmC,SAAA,CAAqBjZ,IAAAsP,UAAAkB,MAArB,CAFD,EAGC,IAAAV,GAAAmJ,SAAA,CAAqBjZ,IAAAsP,UAAAmB,GAArB,CAHD;AAIC,IAAAV,MAAAkJ,SAAA,CAAqBjZ,IAAAsP,UAAAoB,MAArB,CAJD,EAKC,IAAAV,KAAAiJ,SAAA,CAAqBjZ,IAAAsP,UAAAqB,KAArB,CALD,EAMC,IAAAV,KAAAgJ,SAAA,CAAqBjZ,IAAAsP,UAAAsB,KAArB,CAND,EAOC,IAAAmG,KAAAkC,SAAA,CAAqBjZ,IAAAsP,UAAAuB,KAArB,CATkB,CArEa,MAoF3BqD,QAAQ,EAAE,CAEsB,CAArC,CAAI,IAAA+U,WAAAlW,QAAA7Z,OAAJ,GAEC,IAAAgwB,aAAAzwB,IAAA,CAAuB,IAAAwwB,WAAA/U,KAAA,EAAA1N,WAAA,EAAvB,CACA,CAAA,IAAAoiB,QAAA,CAAe,CAAA,CAHhB,CAFe,CApFiB,MAgG3BtU,QAAQ,EAAE,CAEqB,CAApC,CAAI,IAAA2U,WAAAhW,OAAA/Z,OAAJ,GAEC,IAAA0vB,QAEA,CAFe,CAAA,CAEf,CADA,IAAAM,aAAAtV,MAAA,EACA,CAAA,IAAAsV,aAAAzwB,IAAA,CAAuB,IAAAwwB,WAAA3U,KAAA,EAAvB,CAJD,CAFe,CAhGiB,OA6G1Ba,QAAQ,CAAET,CAAF,CAAW,CAErB,IAAAkU,QAAJ,EAAmB,IAAAK,WAAArV,MAAA,EACnB,KAAAsV,aAAAtV,MAAA,EACA;IAAAgV,QAAA,CAAe,CAAA,CACf,KAAAK,WAAAxwB,IAAA,CAAqBic,CAArB,CALyB,CA7GO,gBAuHjBwW,QAAQ,CAAE/V,CAAF,CAAS,CAGV,GAAtB,EAAI,IAAAgW,UAAJ,EAECprB,OAAAgJ,IAAA,CAEC,0CAFD,CAGEoM,CAAAL,MAHF,CAGe,GAHf,CAGoBK,CAAAJ,KAHpB,CAGgC,KAHhC,CAIEI,CAAAR,QAJF,CAIiB,UAJjB,CAoBD,KAzBgC,IAgB5B7N,EAAU,IAAAojB,iBAAA,CAAuB/U,CAAAT,QAAApJ,YAAA,EAAvB,CAhBkB,CAiB/ByP,GAA+B/iB,IAAAA,EAAlB,GAAAmd,CAAAR,QAAA,CAA8B,EAA9B,CAAmCQ,CAAAR,QAAhDoG,EAAkE5F,CAAAhE,OAjBnC,CAkB/BuM,EAAW3C,CAAApS,iBAAA,EAlBoB,CAmB/B1N,EAAW4C,IAAAqG,IAAA,CAAUwZ,CAAV,CAAoB5W,CAAAiU,SAApB,CAAX9f,EAA8D,GAA9DA,CAAoD4C,IAAAE,GAApD9C,EAAsE,IAAAkuB,cAnBvC,CAuB5B/mB,EAAI0E,CAAA8T,QAAA1hB,OAvBwB,CAwB/B2e,CACD,CAAa,CAAb,CAAOzV,CAAA,EAAP,CAAA,CAEC0E,CAAAoU,WAAA,CAAkB9Y,CAAlB,CAAA6U,WAAA,CAAmC,CAAA,CAOpCnc,EAAA,IAAIzC,KAAAgB,MAAJ,CAAiByN,CAAjB,CAAAhM,IAAA,CACI,UAEO4iB,CAFP,CADJ,CAKGziB,CALH,CAAAmB,OAAA,CAMS/D,KAAA6B,OAAA+d,QAAAta,IANT,CAAAX,WAAA,CAOa,QAAQ,EAAE,CAEtB8J,CAAAiU,SAAA;AAAiB2C,CACjB5W,EAAA+T,KAAAE,SAAA,CAAsB,CAKtB,KADA3Y,CACA,CADI0E,CAAA8T,QAAA1hB,OACJ,CAAa,CAAb,CAAOkJ,CAAA,EAAP,CAAA,CAECyV,CAGA,CAHU/Q,CAAAoU,WAAA,CAAkB9Y,CAAlB,CAGV,CAFAyV,CAAAZ,WAEA,CAFqB,CAAA,CAErB,CADAY,CAAAtB,aAAA,EACA,CAAAsB,CAAAxB,YAAAnR,KAAA,CAA0B2S,CAAA7U,OAA1B,CASgB,EAAjB,GAAI+X,CAAJ,GAGCjU,CAAAuU,yBAAA,CAAgCqC,CAAhC,CAIC,CAAA,IAAApb,cAAA,CAAoB,IAAIrC,WAAJ,CAAiB,iBAAjB,CAAoC,QAAU,OAE1D6G,CAF0D,OAG1DqO,CAH0D,CAAV,CAApC,CAApB,CAPF,CAkBKA,EAAJ,GAAc,IAAA2T,aAAd,GAEC,IAAAA,aAEA,CAFoB,IAEpB,CAAA,IAAAxmB,cAAA,CAAoB,IAAIrC,WAAJ,CAAiB,mBAAjB,CAAsC,QAAU,OAE5D6G,CAF4D,OAG5DqO,CAH4D,CAAV,CAAtC,CAApB,CAJD,CAxCqB,CAAV9B,KAAA,CAsDL,IAtDK,CAPb,CAAAnY,MAAA,CA8DQ,IAAAjC,KA9DR,CAlCgC,CAvHA,SA+NxBulB,QAAQ,CAAE4M,CAAF,CAAQ,CAExB,GAAapzB,IAAAA,EAAb,GAAIozB,CAAJ,CAEC,MAAO,CAEN,IAAAd,MAAA,CAAY,CAAZ,CAAA9L,QAAA,EAFM,CAGN,IAAA8L,MAAA,CAAY,CAAZ,CAAA9L,QAAA,EAHM;AAIN,IAAA8L,MAAA,CAAY,CAAZ,CAAA9L,QAAA,EAJM,CAOH,IAAI/X,CAAAC,UAAA,CAAa0kB,CAAb,CAAJ,EAAmC,CAAnC,EAA2BA,CAA3B,EAAgD,CAAhD,EAAwCA,CAAxC,CAEJ,MAAO,KAAAd,MAAA,CAAYc,CAAZ,CAAA5M,QAAA,EAbgB,CA/NQ,SA+OxBG,QAAQ,CAAE1Q,CAAF,CAAQmd,CAAR,CAAc,CAEjBpzB,IAAAA,EAAb,GAAIozB,CAAJ,EAEC,IAAAd,MAAA,CAAY,CAAZ,CAAA3L,QAAA,CAAyB1Q,CAAzB,CAEA,CADA,IAAAqc,MAAA,CAAY,CAAZ,CAAA3L,QAAA,CAAyB1Q,CAAzB,CACA,CAAA,IAAAqc,MAAA,CAAY,CAAZ,CAAA3L,QAAA,CAAyB1Q,CAAzB,CAJD,EAMSxH,CAAAC,UAAA,CAAa0kB,CAAb,CANT,EAMwC,CANxC,EAMgCA,CANhC,EAMqD,CANrD,EAM6CA,CAN7C,EAQC,IAAAd,MAAA,CAAYc,CAAZ,CAAAzM,QAAA,CAA4B1Q,CAA5B,CAV6B,CA/OE,SA8PxBpK,QAAS,CAAEE,CAAF,CAASC,CAAT,CAAiB,CAIlC,IAAAiB,OAAAomB,uBAAA,EAEA,KAAA9F,SAAA1hB,QAAA,CAAuBE,CAAvB,CAA8BC,CAA9B,CANkC,CA9PF,eAgRlB,cAhRkB,YAiRlB,oBAjRkB,YAkRlB,0BAlRkB,MA2R1B,QAAQ,EAAE,CAGhB,IAAI/K,EAAO,CAEX,OAAO,SAAQ,EAAE,CAGhBwsB,qBAAA,CAAuB,IAAA8E,KAAvB,CAKA;IAAIe,EAAgC,WAAlB,GAAA,MAAOnyB,OAAP,EAAwDnB,IAAAA,EAAxD,GAAiCmB,MAAAC,YAAjC,EAAgGpB,IAAAA,EAAhG,GAAqEmB,MAAAC,YAAAlB,IAArE,CAA4GiB,MAAAC,YAAAlB,IAAA,EAA5G,CAAuID,IAAAC,IAAA,EAAzJ,CACIqzB,EAAaD,CAAbC,EAA2BtyB,CAA3BsyB,EAAmCD,CAAnCC,CACJtyB,EAAA,CAAOqyB,CAGF,KAAAjD,OAAL,GAKC,IAAApvB,KAqHA,EArHasyB,CAqHb,CAlHAlzB,KAAAW,OAAA,CAAc,IAAAC,KAAd,CAkHA,CA3GI,IAAAiK,WAAAhB,WA2GJ,GAzGKspB,CAGJ,CAHkB,IAAAtoB,WAAAhB,WAAAupB,YAGlB,CAFCC,CAED,CAFgB,IAAAxoB,WAAAhB,WAAAypB,aAEhB,CAAIzpB,CAAA,IAAAgB,WAAAhB,WAAJ,EACI,IAAAgB,WAAAuoB,YADJ,GACqCD,CADrC,EAEC,IAAAtoB,WAAAyoB,aAFD,GAEkCD,CAFlC,EAIE,IAAA7nB,QAAA,CAAc2nB,CAAd,CAA2BE,CAA3B,CAkGH,EA3FI,IAAApD,WA2FJ,GAzFC,IAAAvN,SAAAlW,EAEA,EAFmB,IAAA8kB,cAAA9kB,EAEnB,CADA,IAAAkW,SAAAjW,EACA,EADmB,IAAA6kB,cAAA7kB,EACnB;AAAA,IAAAiW,SAAAhW,EAAA,EAAmB,IAAA4kB,cAAA5kB,EAuFpB,EA3EI,IAAAmO,QA2EJ,EA3E0C,CA2E1C,GA3EoB,IAAA+D,WAAA,EA2EpB,GAtEM2U,CAMJ,CANY,IAAAhD,QAAA,CAAe,IAAAM,aAAf,CAAmC,IAAAD,WAM/C,CAA4B,CAA5B,GAAI2C,CAAA3Y,OAAA/Z,OAAJ,CAgBK,IAAA2vB,UAAJ,EAAsB1vB,MAAA0yB,OAAtB,CAEC,IAAAhD,UAFD,CAEkB1vB,MAAA0yB,OAAAC,SAAA,CAAwB,IAAxB,CAFlB,CASoC,CAAA,CATpC,GASS,IAAA9C,UAAA9V,QATT,GAWK6Y,CACJ,CADW,IAAA/C,UAAAjV,GAAA,EACX,CAAIgY,CAAJ,WAAoBlZ,SAApB,EAA+BkZ,CAAA,EAZhC,CAhBD,EAsCK5W,CAUJ,CAVYyW,CAAA7X,GAAA,EAUZ,CARoC,GAQpC,GARIoB,CAAAT,QAAApJ,YAAA,EAQJ,EAPiC,GAOjC,GAPC6J,CAAAT,QAAApJ,YAAA,EAOD,EANiC,GAMjC,GANC6J,CAAAT,QAAApJ,YAAA,EAMD,GANsC,IAAAyd,YAMtC,EAN0D,IAAAH,QAAA,CAAgB,EAAhB,CAAoB,CAM9E,GAHsB,CAGtB,GAHIzT,CAAAR,QAGJ,EAH2BQ,CAAAH,UAG3B,GAH6C4W,CAAAnY,MAAA,CAAa0B,CAAb,CAG7C,CAAA,IAAA+V,eAAA,CAAqB/V,CAArB,CAhDD,CAgEF;AAJA,IAAAiV,iBAAAvI,QAIA,CAJwG,IAAA2G,qBAIxG,EAJqI,CAAC,IAAAM,aAItI,CAHA,IAAAsB,iBAAApxB,OAAA,EAGA,CADA,IAAAqxB,SAAAxI,QACA,CADwB,IAAA2G,qBACxB,EADqD,CAAC,IAAA4B,iBAAAhI,OACtD,CAAA,IAAAiI,SAAArxB,OAAA,EA1HD,CAbgB,CALD,CAAV,EA3R0B,CAAlC,C,CClhBAgH,IAAAgsB,OAAA,CAAcC,QAAQ,EAAE,CAOvB,IAAAC,MAAA,CAAaC,QAAQ,CAAErW,CAAF,CAAQ,CAAE,MAAO,CAAA,CAAT,CAPN,CAgBxB9V,KAAAgsB,OAAArrB,UAAAmrB,SAAA,CAAiCM,QAAQ,CAAEtW,CAAF,CAAQ,CAMhD,GAAa9d,IAAAA,EAAb,GAAI8d,CAAJ,CAGC,MADA/V,QAAAqZ,KAAA,CAAc,iEAAd,CACO,CAAA,CAAA,CAEH,IAAkC,CAAA,CAAlC,GAAItD,CAAJ,WAAoB9V,KAAAkoB,KAApB,CAGJ,MADAnoB,QAAAqZ,KAAA,CAAc,iDAAd,CACO,CAAA,CAAA,CAQRtD,EAAA6S,YAAA,CAAmB,CAAA,CAMnB,OAAI7S,EAAAmD,SAAA,EAAJ,EAECjZ,IAAAgsB,OAAArrB,UAAA0rB,QAAA,CAA+B,kDAA/B,CACO,CAAA,CAAA,CAHR,EAKY,IAAAH,MAAA,CAAYpW,CAAZ,CAjCoC,CA2CjD9V;IAAAgsB,OAAArrB,UAAA2rB,KAAA,CAA6BC,QAAQ,CAAEte,CAAF,CAAQ,CAE5ClO,OAAAgJ,IAAA,CAEC,IAFD,CAEOkF,CAFP,CAEa,MAFb,CAGC,qCAHD,CAGwC,EAHxC,CAF4C,CAa7CjO,KAAAgsB,OAAArrB,UAAA0rB,QAAA,CAAgCG,QAAQ,CAAEve,CAAF,CAAQ,CAE/ClO,OAAAgJ,IAAA,CAEC,kBAFD,CAEqBkF,CAFrB,CAE2B,OAF3B,CAGC,aAHD,CAGgB,EAHhB,CAF+C;", 6 | "sources":["../src/scripts/vendor/tween.min.js","common.js","../src/scripts/ERNO.js","../src/scripts/vendor/CSS3DRenderer.js","../src/scripts/utils/utils.js","../src/scripts/utils/Number.js","../src/scripts/utils/String.js","../src/scripts/utils/Array.js","../src/scripts/colors.js","../src/scripts/directions.js","../src/scripts/queues.js","../src/scripts/twists.js","../src/scripts/cubelets.js","../src/scripts/groups.js","../src/scripts/slices.js","../src/scripts/folds.js","../src/scripts/projector.js","../src/scripts/interaction.js","../src/scripts/controls.js","../src/scripts/renderer.js","../src/scripts/cubes.js","../src/scripts/solvers.js"], 7 | "names":["undefined","Date","now","Date.now","valueOf","TWEEN","_tweens","getAll","removeAll","add","tween","push","remove","i","indexOf","splice","update","time","length","window","performance","Tween","TWEEN.Tween","object","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_yoyo","_isPlaying","_delayTime","_startTime","_easingFunction","Easing","Linear","None","_interpolationFunction","Interpolation","_chainedTweens","_onStartCallback","_onStartCallbackFired","_onUpdateCallback","_onCompleteCallback","field","parseFloat","to","this.to","properties","duration","start","this.start","property","Array","concat","stop","this.stop","stopChainedTweens","this.stopChainedTweens","numChainedTweens","delay","this.delay","amount","repeat","this.repeat","times","yoyo","this.yoyo","easing","this.easing","interpolation","this.interpolation","chain","this.chain","arguments","onStart","this.onStart","callback","onUpdate","this.onUpdate","onComplete","this.onComplete","this.update","call","elapsed","value","end","isFinite","tmp","k","In","Out","InOut","Math","cos","PI","sin","pow","sqrt","s","a","p","asin","Bounce","v","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","console","ERNO","CustomEvent","event","params","evt","document","createEvent","initCustomEvent","bubbles","cancelable","detail","prototype","Event","extend","ERNO.extend","obj","source","Object","keys","il","prop","defineProperty","getOwnPropertyDescriptor","safeHasOwnProperty","hasOwnProperty","THREE","CSS3DObject","THREE.CSS3DObject","element","Object3D","done","style","position","addEventListener","parentNode","removeChild","l","children","dispatchEvent","create","CSS3DSprite","THREE.CSS3DSprite","CSS3DRenderer","THREE.CSS3DRenderer","_width","_height","_widthHalf","_heightHalf","matrix","Matrix4","domElement","createElement","overflow","WebkitTransformStyle","MozTransformStyle","oTransformStyle","transformStyle","cameraElement","appendChild","setClearColor","this.setClearColor","setSize","this.setSize","width","height","epsilon","abs","getObjectCSSTransform","Vector3","scale","euler","Euler","quaternion","Quaternion","_quaternion","_euler","decompose","x","y","z","renderObject","camera","copy","matrixWorldInverse","transpose","copyPosition","matrixWorld","elements","WebkitTransform","MozTransform","oTransform","transform","render","this.render","scene","fov","tan","degToRad","WebkitPerspective","MozPerspective","oPerspective","perspective","updateMatrixWorld","parent","getInverse","_","isNumeric","isNaN","cascade","args","slice","hexToRgb","hex","replace","shorthandRegex","r","g","result","exec","parseInt","Number","absolute","sum","forEach","arcCosine","acos","arcSine","arcTangent","atan","constrain","higher","lower","c","max","min","cosine","degreesToDirection","directions","round","degreesToRadians","divide","isBetween","lerp","log","base","log10","LN10","maximum","minimum","modulo","multiply","normalize","raiseTo","exponent","radiansToDegrees","rand","random","remainder","decimals","roundDown","roundUp","ceil","a0","a1","b0","b1","phase","sine","subtract","tangent","toArray","toNumber","toPaddedString","padding","String","toSignedString","stringed","toString","capitalize","charAt","toUpperCase","invert","toLowerCase","justifyCenter","thisLeftLength","thisRightLength","containerLeftLength","padLeftLength","padRightLength","centered","substr","justifyLeft","justified","justifyRight","reverse","size","toEntities","entities","charCodeAt","toCamelCase","split","joined","directionToDegrees","NaN","toUnderscoreCase","underscored","$0","toUnicode","u","unicode","distanceTo","target","first","last","apply","middle","shuffle","j","tempi","tempj","toHtml","html","toText","depth","indent","text","Color","ERNO.Color","name","initial","styleF","styleB","W","O","B","R","G","Y","COLOURLESS","WHITE","ORANGE","BLUE","RED","GREEN","YELLOW","COLORLESS","Direction","ERNO.Direction","id","normal","neighbors","opposite","setRelationships","ERNO.Direction.prototype.setRelationships","up","right","down","left","getNameById","ERNO.Direction.getNameById","getIdByName","ERNO.Direction.getIdByName","getDirectionById","ERNO.Direction.getDirectionById","FRONT","UP","RIGHT","DOWN","LEFT","BACK","getDirectionByInitial","ERNO.Direction.getDirectionByInitial","getDirectionByName","ERNO.Direction.getDirectionByName","getDirectionByNormal","vector","equals","getRotation","ERNO.Direction.prototype.getRotation","from","steps","getClockwise","ERNO.Direction.prototype.getClockwise","getAnticlockwise","ERNO.Direction.prototype.getAnticlockwise","getDirection","ERNO.Direction.prototype.getDirection","direction","getUp","ERNO.Direction.prototype.getUp","getRight","ERNO.Direction.prototype.getRight","getDown","ERNO.Direction.prototype.getDown","getLeft","ERNO.Direction.prototype.getLeft","getOpposite","ERNO.Direction.prototype.getOpposite","Queue","ERNO.Queue","validation","Function","validate","history","useHistory","future","isReady","isLooping","ERNO.Queue.prototype.add","bind","ERNO.Queue.prototype.remove","filter","futureElement","purge","ERNO.Queue.prototype.purge","historyElement","empty","ERNO.Queue.prototype.empty","emptyHistory","do","ERNO.Queue.prototype.do","shift","undo","ERNO.Queue.prototype.undo","pop","unshift","redo","ERNO.Queue.prototype.redo","Twist","ERNO.Twist","command","degrees","set","ERNO.Twist.prototype.set","group","wise","isShuffle","this.getInverse","ERNO.Twist.prototype.equals","twist","ERNO.Twist.prototype.copy","ERNO.Twist.validate","lookAhead","match","foot","pattern","matches","head","Cubelet","ERNO.Cubelet","cube","colors","setAddress","cubeletSize","addressX","addressY","addressZ","matrixSlice","makeTranslation","updateMatrix","object3D","extrovertedFaces","faces","color","isIntrovert","type","front","back","isStickerCubelet","isTweening","isEngagedZ","isEngagedY","isEngagedX","opacity","radius","address","hasColor","face","faceColorRGB","colorRGB","hasColors","cubelet","getRadius","setRadius","tweenDuration","Quartic","Group","ERNO.Group","cubelets","EventDispatcher","that","cubeletsToAdd","cubeletToRemove","isFlagged","count","isEngaged","hasProperty","results","hasId","hasAddress","hasType","isSolved","faceColors","numberOfColors","warn","show","hide","showPlastics","hidePlastics","showExtroverts","hideExtroverts","showIntroverts","exclude","soft","hideIntroverts","showStickers","hideStickers","showWireframes","hideWireframes","showIds","hideIds","showTexts","hideTexts","getOpacity","avg","setOpacity","Slice","ERNO.Slice","indices","axis","invertedAxis","rotation","neighbour","ableToHideInternalFaces","getCubelet","this.getCubelet","index","rotateGroupMappingOnAxis","absAxis","point","origin","faceArray","angle","sub","cubletsCopy","makeRotationAxis","applyMatrix4","map","north","northEast","east","southEast","south","southWest","west","northWest","array","lengthSq","pointA","clone","pointB","pointC","crossVectors","equator","hasCenter","center","corners","cross","ex","centers","edges","ring","dexter","sinister","radians","hideInvisibleFaces","partialRotation","negate","m1","multiplyMatrices","setFromMatrixPosition","setFromMatrixScale","extractRotation","setFromRotationMatrix","getLocation","self","Fold","ERNO.Fold","getText","ERNO.Fold.prototype.getText","innerHTML","setText","ERNO.Fold.prototype.setText","Projector","unprojectVector","projectionMatrixInverse","projectionMatrix","viewProjectionMatrix","applyProjection","setRay","mouseX","mouseY","bounds","getBoundingClientRect","innerWidth","innerHeight","d","ownerDocument","documentElement","pageXOffset","clientLeft","top","pageYOffset","clientTop","mouse","screen","ray","inverseMatrix","Ray","box","Box3","sphere","Sphere","unitCubeBoundingRadius","api","getIntersection","optionalIntersectionTarget","optionalPlaneTarget","intersection","isIntersectionSphere","intersectBox","multiplyScalar","setFromNormalAndCoplanarPoint","getIntersectionOnPlane","plane","optionalTarget","intersectPlane","Interaction","dragSpeed","multiDrag","onInteractStart","enabled","button","pageX","touches","pageY","projector","stopImmediatePropagation","active","getCubeletAtIntersection","possibleSlices","slices","onInteractUpdate","onInteractEnd","current","preventDefault","stopPropagation","axisDefined","targetAngle","dot","removeEventListener","pointOnPlane","Plane","Vector2","getIntersectionAt","intersection3D","plane3D","api.update","subVectors","Controls","mousedown","which","state","ROTATE","getMouseProjectionOnBall","lastPosition","mousemove","mouseup","INERTIA","touchstart","touchend","touchmove","changedTouches","NONE","modelRotationInverse","updateClosure","inverse","applyQuaternion","damping","rotateOnAxis","rotationSpeed","renderers","CSS3D","ERNO.renderers.CSS3D","showItem","item","display","hideItem","getFaceLabelElements","renderer","querySelectorAll","requestAnimationFrame","SceneType","Scene","faceLabel","label","classList","showFaceLabels","cube.showFaceLabels","showingFaceLabels","hideFaceLabels","cube.hideFaceLabels","CSS3DCubelet","methods","css3DObject","faceSpacing","transformMap","wireframeElement","idElement","underlineElement","innerText","OTransform","cssTransform","stickerElement","textElement","getFaceElements","selector","showing","showingExtroverts","showingIntroverts","showingPlastics","showingStickers","showingWireframes","showingIds","showingTexts","opacityTarget","opacityTween","Quadratic","getStickersOpacity","setStickersOpacity","valueStr","sticker","Cube","ERNO.Cube","parameters","paused","autoRotate","keyboardControlsEnabled","mouseControlsEnabled","renderFactory","textureSize","isShuffling","undoing","isSolving","finalShuffle","moveCounter","taskQueue","twistQueue","historyQueue","twistDuration","shuffleMethod","PRESERVE_LOGO","PerspectiveCamera","FIELD_OF_VIEW","NEAR","FAR","autoRotateObj3D","rotationDelta","cubeletColorMap","cubeletId","core","crosses","standing","allIndices","slicesDictionary","fontSize","mouseInteraction","controls","folds","loop","tagName","key","fromCharCode","detectInteraction","constructor","moves","move","inverseOfLastMove","allowedMoves","solve","immediateTwist","verbosity","fold","updateProjectionMatrix","localTime","frameDelta","parentWidth","clientWidth","parentHeight","clientHeight","queue","solver","consider","task","Solver","ERNO.Solver","logic","this.logic","ERNO.Solver.prototype.consider","explain","hint","ERNO.Solver.prototype.hint","ERNO.Solver.prototype.explain"] 8 | } 9 | --------------------------------------------------------------------------------