@kepler.gl/deckgl-layers 3.3.0-alpha.10 → 3.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/globe/atmosphere-layer.js +1 -1
- package/dist/cjs/globe/globe-layers.js +1 -1
- package/dist/cjs/globe/globe-stars-layer.js +1 -1
- package/dist/cjs/globe/globe-stars-layer.spec.js +1 -1
- package/dist/cjs/globe/globe-view.js +1 -1
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +1 -1
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +1 -1
- package/dist/cjs/raster/webgl/texture/mask.js +5 -2
- package/dist/cjs/wms/wms-layer.js +1 -1
- package/dist/esm/globe/atmosphere-layer.js +1 -1
- package/dist/esm/globe/globe-layers.js +1 -1
- package/dist/esm/globe/globe-stars-layer.js +1 -1
- package/dist/esm/globe/globe-stars-layer.spec.js +1 -1
- package/dist/esm/globe/globe-view.js +1 -1
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +1 -1
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +1 -1
- package/dist/esm/raster/webgl/texture/mask.js +5 -2
- package/dist/esm/wms/wms-layer.js +1 -1
- package/package.json +4 -4
|
@@ -338,4 +338,4 @@ var getGlobeHugeHaloLayer = exports.getGlobeHugeHaloLayer = function getGlobeHug
|
|
|
338
338
|
parameters: HUGE_HALO_PARAMETERS
|
|
339
339
|
});
|
|
340
340
|
};
|
|
341
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzaExheWVycyIsIl9lbmdpbmUiLCJfY29yZTIiLCJfc3VuIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsInRvUmFkaWFucyIsImRlZ3JlZXMiLCJNYXRoIiwiUEkiLCJhbmdsZVRvVmVjIiwiYW5nbGUiLCJzaW4iLCJjb3MiLCJhbmdsZVRvU3VuUG9zIiwiVmVjdG9yMyIsIm5vcm1hbGl6ZSIsIkdMT0JFX01FU0hfSU5ORVIiLCJTcGhlcmVHZW9tZXRyeSIsInJhZGl1cyIsIm5sYXQiLCJubG9uZyIsIkdMT0JFX01FU0hfT1VURVIiLCJHTE9CRV9NRVNIX0hVR0VfSEFMTyIsImxvbiIsImxhdCIsInN1blBvc05vdyIsImdldFN1blBvc2l0aW9uIiwiRGF0ZSIsIm5vdyIsInYzU3VuUG9zTm93IiwiYXppbXV0aCIsIk5VTV9TQU1QTEVfUkFZUyIsIkFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUIiwiQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIiwiYXRtb3NwaGVyZVpvb21GYWRlIiwiem9vbSIsIkFUTU9TUEhFUkVfVU5JRk9STVMiLCJ2M1N1blBvcyIsImV4cG9zdXJlIiwiZlNhbXBsZXMiLCJnIiwiZktyRVN1biIsImZLbUVTdW4iLCJmS3I0UEkiLCJmS200UEkiLCJmU2NhbGVEZXB0aCIsImZJbm5lclJhZGl1cyIsImZPdXRlclJhZGl1cyIsImZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yIiwiZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yIiwiQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIiwiZXhwb3J0cyIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImRyYXciLCJfcmVmIiwidW5pZm9ybXMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY29uZmlnIiwiem9vbUZhZGUiLCJtb2RlbCIsInN0YXRlIiwidGVybWluYXRvciIsInRlcm1pbmF0b3JPcGFjaXR5IiwiYXppbXV0aEFuZ2xlIiwiZkF0bW9zcGhlcmVab29tRmFkZSIsImdldFNoYWRlcnMiLCJpbmplY3QiLCJjb25jYXQiLCJTaW1wbGVNZXNoTGF5ZXIiLCJBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMiLCJfU2ltcGxlTWVzaExheWVyMiIsIl9yZWYyIiwiX3RoaXMkcHJvcHMyIiwiQVRNT1NQSEVSRV9QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsIkFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlMiLCJjdWxsRmFjZSIsImRlcHRoTWFzayIsIkhVR0VfSEFMT19JTk5FUl9SQURJVVMiLCJIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVMiLCJIVUdFX0hBTE9fQkFTRV9TSEVMTCIsIkhVR0VfSEFMT19SQURJVVNfTUFYIiwiSFVHRV9IQUxPX1VOSUZPUk1TIiwidjNIYWxvQ29sb3IiLCJmSGFsb0ludGVuc2l0eSIsIkhVR0VfSEFMT19QQVJBTUVURVJTIiwicmVzb2x2ZUh1Z2VIYWxvUmFkaXVzIiwibXVsdGlwbGllciIsIk51bWJlciIsImlzRmluaXRlIiwiaHVnZUhhbG9SYWRpdXMiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1heCIsIm1pbiIsInJlc29sdmVIdWdlSGFsb09wYWNpdHkiLCJvcGFjaXR5IiwiaHVnZUhhbG9PcGFjaXR5IiwiQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIiLCJfU2ltcGxlTWVzaExheWVyMyIsIl9yZWYzIiwiX3RoaXMkcHJvcHMzIiwiZkhhbG9PcGFjaXR5IiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiLCJfcmVmNCIsImlkIiwiZGF0YSIsImNvb3JkaW5hdGVPcmlnaW4iLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJDQVJURVNJQU4iLCJnZXRQb3NpdGlvbiIsImQiLCJnZXRDb2xvciIsIm1lc2giLCJwYXJhbWV0ZXJzIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJfcmVmNSIsImdldEdsb2JlSHVnZUhhbG9MYXllciIsIl9yZWY2IiwiaHVnZUhhbG8iLCJvdXRlclJhZGl1cyIsInNpemVTY2FsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9hdG1vc3BoZXJlLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIFNoYWRlcnMgcG9ydGVkIGZyb20gaVRvd25zLCBiYXNlZCBvbiBTZWFuIE8nTmVpbCdzIGFwcHJvYWNoIGluIEdQVSBHZW1zIDJcbi8vIFNFRTogaHR0cHM6Ly9naXRodWIuY29tL2lUb3ducy9pdG93bnMvYmxvYi9tYXN0ZXIvc3JjL0NvcmUvUHJlZmFiL0dsb2JlL0F0bW9zcGhlcmUuanNcbi8vIFNFRTogaHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9ncHVnZW1zL2dwdWdlbXMyL3BhcnQtaWktc2hhZGluZy1saWdodGluZy1hbmQtc2hhZG93cy9jaGFwdGVyLTE2LWFjY3VyYXRlLWF0bW9zcGhlcmljLXNjYXR0ZXJpbmdcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NpbXBsZU1lc2hMYXllcn0gZnJvbSAnQGRlY2suZ2wvbWVzaC1sYXllcnMnO1xuaW1wb3J0IHtTcGhlcmVHZW9tZXRyeX0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcbmltcG9ydCB7VmVjdG9yM30gZnJvbSAnQG1hdGguZ2wvY29yZSc7XG5pbXBvcnQge2dldFN1blBvc2l0aW9ufSBmcm9tICdAbWF0aC5nbC9zdW4nO1xuXG5pbXBvcnQge0RFRkFVTFRfR0xPQkVfQ09ORklHLCB0eXBlIEdsb2JlQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmNvbnN0IHRvUmFkaWFucyA9IChkZWdyZWVzOiBudW1iZXIpOiBudW1iZXIgPT4gKGRlZ3JlZXMgKiBNYXRoLlBJKSAvIDE4MDtcblxuY29uc3QgYW5nbGVUb1ZlYyA9IChhbmdsZTogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgcmV0dXJuIFtNYXRoLnNpbihhbmdsZSksIE1hdGguY29zKGFuZ2xlKSwgMF07XG59O1xuXG5jb25zdCBhbmdsZVRvU3VuUG9zID0gKGFuZ2xlOiBudW1iZXIpOiBudW1iZXJbXSA9PiB7XG4gIHJldHVybiBuZXcgVmVjdG9yMyhhbmdsZVRvVmVjKGFuZ2xlKSkubm9ybWFsaXplKCkgYXMgdW5rbm93biBhcyBudW1iZXJbXTtcbn07XG5cbmNvbnN0IEdMT0JFX01FU0hfSU5ORVIgPSBuZXcgU3BoZXJlR2VvbWV0cnkoe1xuICByYWRpdXM6IDYuNGU2LFxuICBubGF0OiAxMDAsXG4gIG5sb25nOiAxMDBcbn0pO1xuXG5jb25zdCBHTE9CRV9NRVNIX09VVEVSID0gbmV3IFNwaGVyZUdlb21ldHJ5KHtcbiAgcmFkaXVzOiA2LjdlNixcbiAgbmxhdDogMTAwLFxuICBubG9uZzogMTAwXG59KTtcblxuLy8gfjE0JSBsYXJnZXIgdGhhbiB0aGUgZ2xvYmUgc3VyZmFjZSBtZXNoIOKAlCB5aWVsZHMgYSB0aGljayBzb2Z0IGF1cmEgKH4wLjHigJMwLjE1UikuXG5jb25zdCBHTE9CRV9NRVNIX0hVR0VfSEFMTyA9IG5ldyBTcGhlcmVHZW9tZXRyeSh7XG4gIHJhZGl1czogNy4zZTYsXG4gIG5sYXQ6IDEwMCxcbiAgbmxvbmc6IDEwMFxufSk7XG5cbmNvbnN0IFtsb24sIGxhdF0gPSBbMCwgOTBdO1xuY29uc3Qgc3VuUG9zTm93ID0gZ2V0U3VuUG9zaXRpb24oRGF0ZS5ub3coKSwgbGF0LCBsb24pO1xuY29uc3QgdjNTdW5Qb3NOb3cgPSBhbmdsZVRvU3VuUG9zKHN1blBvc05vdy5hemltdXRoICsgTWF0aC5QSSk7XG5cbmNvbnN0IE5VTV9TQU1QTEVfUkFZUyA9IDM7XG5cbi8qKlxuICogWm9vbSByYW5nZSBvdmVyIHdoaWNoIHRoZSBhdG1vc3BoZXJlIGVmZmVjdCBmYWRlcyBvdXQuXG4gKiBCZWxvdyBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCB0aGUgZWZmZWN0IGlzIGZ1bGx5IHZpc2libGUuXG4gKiBBYm92ZSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgdGhlIGVmZmVjdCBpcyBjb21wbGV0ZWx5IGhpZGRlbi5cbiAqL1xuY29uc3QgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQgPSAzLjU7XG5jb25zdCBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgPSA2O1xuXG4vKipcbiAqIENvbnZlcnQgYSBtYXBTdGF0ZSB6b29tIGxldmVsIHRvIGEgWzAsIDFdIGF0bW9zcGhlcmUgb3BhY2l0eSBtdWx0aXBsaWVyLlxuICogUmV0dXJucyAxIChmdWxseSB2aXNpYmxlKSBiZWxvdyBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCwgc21vb3RobHlcbiAqIGludGVycG9sYXRlcyB0byAwIGJldHdlZW4gdGhlIHR3byB0aHJlc2hvbGRzLCBhbmQgcmV0dXJucyAwIGFib3ZlXG4gKiBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHpvb20gPD0gQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQpIHJldHVybiAxO1xuICBpZiAoem9vbSA+PSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQpIHJldHVybiAwO1xuICBjb25zdCB0ID0gKHpvb20gLSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCkgLyAoQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIC0gQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQpO1xuICAvLyBTbW9vdGgtc3RlcCBmb3IgYSBwZXJjZXB0dWFsbHkgZ2VudGxlIHRyYW5zaXRpb24uXG4gIHJldHVybiAxIC0gdCAqIHQgKiAoMyAtIDIgKiB0KTtcbn1cblxuY29uc3QgQVRNT1NQSEVSRV9VTklGT1JNUyA9IHtcbiAgdjNTdW5Qb3M6IHYzU3VuUG9zTm93LFxuICBleHBvc3VyZTogMixcbiAgZlNhbXBsZXM6IDMsXG4gIGc6IC0wLjY1LFxuICBmS3JFU3VuOiAwLjAwMDI1ICogMjAsXG4gIGZLbUVTdW46IDAuMDAwMSAqIDIwLFxuICBmS3I0UEk6IDAuMDAwMjUgKiA0ICogTWF0aC5QSSxcbiAgZkttNFBJOiAwLjAwMDEgKiA0ICogTWF0aC5QSSxcbiAgZlNjYWxlRGVwdGg6IDAuMjUsXG4gIGZJbm5lclJhZGl1czogMjU4LFxuICBmT3V0ZXJSYWRpdXM6IDI2NSxcbiAgZlRlcm1pbmF0b3JBdHRlbnVhdGVGYWN0b3I6IDAuOCxcbiAgZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yOiAxXG59O1xuXG50eXBlIEF0bW9zcGhlcmVMYXllclByb3BzID0ge1xuICBjb25maWc6IEdsb2JlQ29uZmlnO1xuICAvKiogUHJlLWNvbXB1dGVkIFswLCAxXSB6b29tLWZhZGUgbXVsdGlwbGllcjsgMSA9IGZ1bGx5IHZpc2libGUsIDAgPSBoaWRkZW4uICovXG4gIHpvb21GYWRlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgY2xhc3MgQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueSwgQXRtb3NwaGVyZUxheWVyUHJvcHM+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMnO1xuXG4gIGRyYXcoe3VuaWZvcm1zfToge3VuaWZvcm1zOiBvYmplY3R9KTogdm9pZCB7XG4gICAgY29uc3Qge2NvbmZpZywgem9vbUZhZGV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuc3RhdGUubW9kZWw7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICAobW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyA9IHtcbiAgICAgICAgLi4uKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIC4uLkFUTU9TUEhFUkVfVU5JRk9STVMsXG4gICAgICAgIGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjogY29uZmlnLnRlcm1pbmF0b3IgPyBjb25maWcudGVybWluYXRvck9wYWNpdHkgOiAwLFxuICAgICAgICB2M1N1blBvczogY29uZmlnLmF6aW11dGggPyBhbmdsZVRvU3VuUG9zKHRvUmFkaWFucyhjb25maWcuYXppbXV0aEFuZ2xlKSkgOiB2M1N1blBvc05vdyxcbiAgICAgICAgZkF0bW9zcGhlcmVab29tRmFkZTogem9vbUZhZGVcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzU3VuUG9zO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBnO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZXhwb3N1cmU7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTYW1wbGVzO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3JFU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLcjRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbTRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmVGVybWluYXRvckF0dGVudWF0ZUZhY3RvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG5cbiAgICAgICAgICBjb25zdCBpbnQgblNhbXBsZXMgPSAke05VTV9TQU1QTEVfUkFZU307XG5cbiAgICAgICAgICBmbG9hdCBzY2FsZShmbG9hdCBmQ29zKSB7XG4gICAgICAgICAgICBmbG9hdCB4ID0gMS4wIC0gZkNvcztcbiAgICAgICAgICAgIHJldHVybiBmU2NhbGVEZXB0aCAqIGV4cCgtMC4wMDI4NyArIHgqKDAuNDU5ICsgeCooMy44MyArIHgqKC02LjggKyB4KjUuMjUpKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOiNtYWluLWVuZCc6IGBcbiAgICAgICAgICB2ZWMzIHYzQ2FtZXJhUG9zID0gY2FtZXJhUG9zaXRpb247XG4gICAgICAgICAgdmVjMyB2M1BvcyA9IHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5ejtcblxuICAgICAgICAgIGZsb2F0IGcyID0gZyAqIGc7XG5cbiAgICAgICAgICB2ZWMzIHYzSW52V2F2ZWxlbmd0aCA9IHZlYzMoMS4wIC8gcG93KDAuNjUwLCA0LjApLCAxLjAgLyBwb3coMC41NzAsIDQuMCksIDEuMCAvIHBvdygwLjQ3NSwgNC4wKSk7XG5cbiAgICAgICAgICBmbG9hdCBmSW5uZXJSYWRpdXMyID0gZklubmVyUmFkaXVzICogZklubmVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZPdXRlclJhZGl1czIgPSBmT3V0ZXJSYWRpdXMgKiBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cyk7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlT3ZlclNjYWxlRGVwdGggPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKSAvIGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgZmxvYXQgY2FtZXJhSGVpZ2h0MiA9IGxlbmd0aCh2M0NhbWVyYVBvcykgKiBsZW5ndGgodjNDYW1lcmFQb3MpO1xuXG4gICAgICAgICAgdmVjMyB2M1JheSA9IHYzUG9zIC0gdjNDYW1lcmFQb3M7XG4gICAgICAgICAgZmxvYXQgZkZhciA9IGxlbmd0aCh2M1JheSk7XG4gICAgICAgICAgdjNSYXkgLz0gZkZhcjtcblxuICAgICAgICAgIGZsb2F0IEIgPSAyLjAgKiBkb3QodjNDYW1lcmFQb3MsIHYzUmF5KTtcbiAgICAgICAgICBmbG9hdCBDID0gY2FtZXJhSGVpZ2h0MiAtIGZPdXRlclJhZGl1czI7XG4gICAgICAgICAgZmxvYXQgZkRldCA9IG1heCgwLjAsIEIqQiAtIDQuMCAqIEMpO1xuICAgICAgICAgIGZsb2F0IGZOZWFyID0gMC41ICogKC1CIC0gc3FydChmRGV0KSk7XG5cbiAgICAgICAgICB2ZWMzIHYzU3RhcnQgPSB2M0NhbWVyYVBvcyArIHYzUmF5ICogZk5lYXI7XG4gICAgICAgICAgZkZhciAtPSBmTmVhcjtcblxuICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cCgoZklubmVyUmFkaXVzIC0gZk91dGVyUmFkaXVzKSAvIGZTY2FsZURlcHRoKTtcbiAgICAgICAgICBmbG9hdCBmQ2FtZXJhQW5nbGUgPSBkb3QoLXYzUmF5LCB2M1BvcykgLyBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIGZsb2F0IGZMaWdodEFuZ2xlID0gZG90KHYzU3VuUG9zLCB2M1BvcykgLyBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIGZsb2F0IGZDYW1lcmFTY2FsZSA9IHNjYWxlKGZDYW1lcmFBbmdsZSk7XG4gICAgICAgICAgZmxvYXQgZkxpZ2h0U2NhbGUgPSBzY2FsZShmTGlnaHRBbmdsZSk7XG4gICAgICAgICAgZmxvYXQgZkNhbWVyYU9mZnNldCA9IGZEZXB0aCpmQ2FtZXJhU2NhbGU7XG4gICAgICAgICAgZmxvYXQgZlRlbXAgPSAoZkxpZ2h0U2NhbGUgKyBmQ2FtZXJhU2NhbGUpO1xuXG4gICAgICAgICAgZmxvYXQgZlNhbXBsZUxlbmd0aCA9IGZGYXIgLyBmU2FtcGxlcztcbiAgICAgICAgICBmbG9hdCBmU2NhbGVkTGVuZ3RoID0gZlNhbXBsZUxlbmd0aCAqIGZTY2FsZTtcbiAgICAgICAgICB2ZWMzIHYzU2FtcGxlUmF5ID0gdjNSYXkgKiBmU2FtcGxlTGVuZ3RoO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVQb2ludCA9IHYzU3RhcnQgKyB2M1NhbXBsZVJheSAqIDAuNTtcblxuICAgICAgICAgIHZlYzMgdjNGcm9udENvbG9yID0gdmVjMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICB2ZWMzIHYzQXR0ZW51YXRlID0gdmVjMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICBmb3IoaW50IGk9MDsgaTxuU2FtcGxlczsgaSsrKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmxvYXQgZkhlaWdodCA9IGxlbmd0aCh2M1NhbXBsZVBvaW50KTtcbiAgICAgICAgICAgICAgZmxvYXQgZkRlcHRoID0gZXhwKGZTY2FsZU92ZXJTY2FsZURlcHRoICogKGZJbm5lclJhZGl1cyAtIGZIZWlnaHQpKTtcbiAgICAgICAgICAgICAgZmxvYXQgZlNjYXR0ZXIgPSBmRGVwdGgqZlRlbXAgLSBmQ2FtZXJhT2Zmc2V0O1xuICAgICAgICAgICAgICB2M0F0dGVudWF0ZSA9IGV4cCgtZlNjYXR0ZXIgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyNFBJICsgZkttNFBJKSk7XG4gICAgICAgICAgICAgIHYzRnJvbnRDb2xvciArPSB2M0F0dGVudWF0ZSAqIChmRGVwdGggKiBmU2NhbGVkTGVuZ3RoKTtcbiAgICAgICAgICAgICAgdjNTYW1wbGVQb2ludCArPSB2M1NhbXBsZVJheTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2ZWMzIGMwID0gdjNBdHRlbnVhdGU7XG4gICAgICAgICAgdmVjMyBjMSA9IHYzRnJvbnRDb2xvciAqICh2M0ludldhdmVsZW5ndGggKiBmS3JFU3VuICsgZkttRVN1bik7XG5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KGMxLCAxLjAgLSBjMCAqIGZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yKTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I7XG5cbiAgICAgICAgICAvLyBLZWVwIHRoZSBkYXkgaGVtaXNwaGVyZSBjb21wbGV0ZWx5IHVuc2hhZGVkIOKAlCB0aGUgYXR0ZW51YXRpb24tYmFzZWRcbiAgICAgICAgICAvLyBhbHBoYSBhYm92ZSBpcyBub24temVybyBldmVuIGF0IG5vb24sIHdoaWNoIHNsaWdodGx5IGRhcmtlbnMgdGhlIGxpdFxuICAgICAgICAgIC8vIHNpZGUuIEdhdGUgaXQgd2l0aCBhIGRheS9uaWdodCBtYXNrIHNvIGRhcmtlbmluZyBvbmx5IGFwcGVhcnMgYWNyb3NzXG4gICAgICAgICAgLy8gdGhlIHRlcm1pbmF0b3IgYW5kIG9udG8gdGhlIG5pZ2h0IHNpZGUuXG4gICAgICAgICAgLy8gZkxpZ2h0QW5nbGUgPSBkb3Qoc3VuRGlyLCBzdXJmYWNlTm9ybWFsKTogKzEgYXQgdGhlIHN1YnNvbGFyIHBvaW50XG4gICAgICAgICAgLy8gKG5vb24pLCAwIGF0IHRoZSB0ZXJtaW5hdG9yLCAtMSBhdCBtaWRuaWdodC4gc21vb3Roc3RlcCBtYXBzIHRoZSBkYXlcbiAgICAgICAgICAvLyBzaWRlICg+PSAwLjIpIHRvIDAgKG5vIGRhcmtlbmluZyksIHJhbXBzIHRocm91Z2ggdGhlIHRlcm1pbmF0b3IsIGFuZFxuICAgICAgICAgIC8vIHJlYWNoZXMgZnVsbCBkYXJrZW5pbmcgb24gdGhlIG5pZ2h0IHNpZGUgKDw9IC0wLjIpLlxuICAgICAgICAgIGZsb2F0IGZOaWdodE1hc2sgPSBzbW9vdGhzdGVwKDAuMiwgLTAuMiwgZkxpZ2h0QW5nbGUpO1xuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZOaWdodE1hc2s7XG5cbiAgICAgICAgICAvLyBGYWRlIG91dCB0aGUgZW50aXJlIGRheS9uaWdodCBzaGFkaW5nIGVmZmVjdCBhcyB0aGUgdXNlciB6b29tcyBpbi5cbiAgICAgICAgICAvLyBBdCB6b29tIGxldmVscyBhYm92ZSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgdGhlIGVmZmVjdCBpcyBpbnZpc2libGUsXG4gICAgICAgICAgLy8gc28gaXQgZG9lc24ndCBvYnNjdXJlIG1hcCBkZXRhaWwgYXQgc3RyZWV0L2NpdHkgc2NhbGUuXG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIEF0bW9zcGhlcmVMYXllclByb3BzPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWcsIHpvb21GYWRlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5BVE1PU1BIRVJFX1VOSUZPUk1TLFxuICAgICAgICB2M1N1blBvczogY29uZmlnLmF6aW11dGggPyBhbmdsZVRvU3VuUG9zKHRvUmFkaWFucyhjb25maWcuYXppbXV0aEFuZ2xlKSkgOiB2M1N1blBvc05vdyxcbiAgICAgICAgZkF0bW9zcGhlcmVab29tRmFkZTogem9vbUZhZGVcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzU3VuUG9zO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBnO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZXhwb3N1cmU7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTYW1wbGVzO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3JFU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLcjRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbTRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTY2FsZURlcHRoO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkF0bW9zcGhlcmVab29tRmFkZTtcblxuICAgICAgICAgIGNvbnN0IGludCBuU2FtcGxlcyA9ICR7TlVNX1NBTVBMRV9SQVlTfTtcblxuICAgICAgICAgIGZsb2F0IHNjYWxlKGZsb2F0IGZDb3MpIHtcbiAgICAgICAgICAgIGZsb2F0IHggPSAxLjAgLSBmQ29zO1xuICAgICAgICAgICAgcmV0dXJuIGZTY2FsZURlcHRoICogZXhwKC0wLjAwMjg3ICsgeCooMC40NTkgKyB4KigzLjgzICsgeCooLTYuOCArIHgqNS4yNSkpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmxvYXQgZ2V0TWllUGhhc2UoZmxvYXQgZkNvcywgZmxvYXQgZkNvczIsIGZsb2F0IGcsIGZsb2F0IGcyKSB7XG4gICAgICAgICAgICByZXR1cm4gMS41ICogKCgxLjAgLSBnMikgLyAoMi4wICsgZzIpKSAqICgxLjAgKyBmQ29zMikgLyBwb3coMS4wICsgZzIgLSAyLjAgKiBnICogZkNvcywgMS41KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmbG9hdCBnZXRSYXlsZWlnaFBoYXNlKGZsb2F0IGZDb3MyKSB7XG4gICAgICAgICAgICByZXR1cm4gMC43NSArIDAuNzUgKiBmQ29zMjtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG5cbiAgICAgICAgICBmbG9hdCBnMiA9IGcgKiBnO1xuXG4gICAgICAgICAgdmVjMyB2M0ludldhdmVsZW5ndGggPSB2ZWMzKDEuMCAvIHBvdygwLjY1MCwgNC4wKSwgMS4wIC8gcG93KDAuNTcwLCA0LjApLCAxLjAgLyBwb3coMC40NzUsIDQuMCkpO1xuXG4gICAgICAgICAgZmxvYXQgZklubmVyUmFkaXVzMiA9IGZJbm5lclJhZGl1cyAqIGZJbm5lclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMyID0gZk91dGVyUmFkaXVzICogZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZSA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZU92ZXJTY2FsZURlcHRoID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cykgLyBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIGZsb2F0IGNhbWVyYUhlaWdodDIgPSBsZW5ndGgodjNDYW1lcmFQb3MpICogbGVuZ3RoKHYzQ2FtZXJhUG9zKTtcblxuICAgICAgICAgIHZlYzMgdjNSYXkgPSB2M1BvcyAtIHYzQ2FtZXJhUG9zO1xuICAgICAgICAgIGZsb2F0IGZGYXIgPSBsZW5ndGgodjNSYXkpO1xuICAgICAgICAgIHYzUmF5IC89IGZGYXI7XG5cbiAgICAgICAgICBmbG9hdCBCID0gMi4wICogZG90KHYzQ2FtZXJhUG9zLCB2M1JheSk7XG4gICAgICAgICAgZmxvYXQgQyA9IGNhbWVyYUhlaWdodDIgLSBmT3V0ZXJSYWRpdXMyO1xuICAgICAgICAgIGZsb2F0IGZEZXQgPSBtYXgoMC4wLCBCKkIgLSA0LjAgKiBDKTtcbiAgICAgICAgICBmbG9hdCBmTmVhciA9IDAuNSAqICgtQiAtIHNxcnQoZkRldCkpO1xuXG4gICAgICAgICAgdmVjMyB2M1N0YXJ0ID0gdjNDYW1lcmFQb3MgKyB2M1JheSAqIGZOZWFyO1xuICAgICAgICAgIGZGYXIgLT0gZk5lYXI7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0QW5nbGUgPSBkb3QodjNSYXksIHYzU3RhcnQpIC8gZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTdGFydERlcHRoID0gZXhwKC0xLjAgLyBmU2NhbGVEZXB0aCk7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0T2Zmc2V0ID0gZlN0YXJ0RGVwdGggKiBzY2FsZShmU3RhcnRBbmdsZSk7XG5cbiAgICAgICAgICBmbG9hdCBmU2FtcGxlTGVuZ3RoID0gZkZhciAvIGZTYW1wbGVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZWRMZW5ndGggPSBmU2FtcGxlTGVuZ3RoICogZlNjYWxlO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVSYXkgPSB2M1JheSAqIGZTYW1wbGVMZW5ndGg7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVBvaW50ID0gdjNTdGFydCArIHYzU2FtcGxlUmF5ICogMC41O1xuXG4gICAgICAgICAgdmVjMyB2M0Zyb250Q29sb3IgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG5TYW1wbGVzOyBpKyspXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmxvYXQgZkhlaWdodCA9IGxlbmd0aCh2M1NhbXBsZVBvaW50KTtcbiAgICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cChmU2NhbGVPdmVyU2NhbGVEZXB0aCAqIChmSW5uZXJSYWRpdXMgLSBmSGVpZ2h0KSk7XG4gICAgICAgICAgICBmbG9hdCBmTGlnaHRBbmdsZSA9IGRvdCh2M1N1blBvcywgdjNTYW1wbGVQb2ludCkgLyBmSGVpZ2h0O1xuICAgICAgICAgICAgZmxvYXQgZkNhbWVyYUFuZ2xlID0gZG90KHYzUmF5LCB2M1NhbXBsZVBvaW50KSAvIGZIZWlnaHQ7XG4gICAgICAgICAgICBmbG9hdCBmU2NhdHRlciA9IChmU3RhcnRPZmZzZXQgKyBmRGVwdGggKiAoc2NhbGUoZkxpZ2h0QW5nbGUpIC0gc2NhbGUoZkNhbWVyYUFuZ2xlKSkpO1xuICAgICAgICAgICAgdmVjMyB2M0F0dGVudWF0ZSA9IGV4cCgtZlNjYXR0ZXIgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyNFBJICsgZkttNFBJKSk7XG5cbiAgICAgICAgICAgIHYzRnJvbnRDb2xvciArPSB2M0F0dGVudWF0ZSAqIChmRGVwdGggKiBmU2NhbGVkTGVuZ3RoKTtcbiAgICAgICAgICAgIHYzU2FtcGxlUG9pbnQgKz0gdjNTYW1wbGVSYXk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmVjMyBjMCA9IHYzRnJvbnRDb2xvciAqICh2M0ludldhdmVsZW5ndGggKiBmS3JFU3VuKTtcbiAgICAgICAgICB2ZWMzIGMxID0gdjNGcm9udENvbG9yICogZkttRVN1bjtcblxuICAgICAgICAgIHZlYzMgdjNEaXJlY3Rpb24gPSB2M0NhbWVyYVBvcyAtIHYzUG9zO1xuXG4gICAgICAgICAgZmxvYXQgZkNvcyA9IGRvdCh2M1N1blBvcywgdjNEaXJlY3Rpb24pIC8gbGVuZ3RoKHYzRGlyZWN0aW9uKTtcbiAgICAgICAgICBmbG9hdCBmQ29zMiA9IGZDb3MgKiBmQ29zO1xuXG4gICAgICAgICAgdmVjMyBza3lDb2xvciA9IGdldFJheWxlaWdoUGhhc2UoZkNvczIpICogYzAgKyBnZXRNaWVQaGFzZShmQ29zLCBmQ29zMiwgZywgZzIpICogYzE7XG5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHNreUNvbG9yLCAxLjApO1xuICAgICAgICAgIGZyYWdDb2xvci5hID0gZnJhZ0NvbG9yLmI7XG5cbiAgICAgICAgICAvLyBGYWRlIHRoZSBza3kgaGFsbyBvdXQgYXMgdGhlIHVzZXIgem9vbXMgaW4gcGFzdCBjb250aW5lbnQgc2NhbGUuXG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgQVRNT1NQSEVSRV9QQVJBTUVURVJTID0ge1xuICBkZXB0aFRlc3Q6IGZhbHNlLFxuICBibGVuZEZ1bmM6IFsweDAzMDIsIDB4MDMwMywgMSwgMHgwMzAzXSwgLy8gU1JDX0FMUEhBLCBPTkVfTUlOVVNfU1JDX0FMUEhBLCBPTkUsIE9ORV9NSU5VU19TUkNfQUxQSEFcbiAgYmxlbmRFcXVhdGlvbjogWzB4ODAwNiwgMHg4MDA2XSAvLyBGVU5DX0FERFxufTtcblxuY29uc3QgQVRNT1NQSEVSRV9TS1lfUEFSQU1FVEVSUyA9IHtcbiAgY3VsbEZhY2U6IDB4MDQwNCwgLy8gR0wuRlJPTlRcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sXG4gIGJsZW5kRXF1YXRpb246IFsweDgwMDYsIDB4ODAwNl1cbn07XG5cbi8qKlxuICogU29mdCwgc3VuLWluZGVwZW5kZW50IGdsb3cuIFJhZGlpIGFyZSBpbiBkZWNrLmdsIGNvbW1vbiBzcGFjZVxuICogKEdMT0JFX0NPTU1PTl9SQURJVVMgPSAyNTY7IGF0bW9zcGhlcmUgdXNlcyB+MjU4IGFzIGEgc2xpZ2h0IGZ1ZGdlKS5cbiAqIE91dGVyIOKJiCAxNCUgbGFyZ2VyIHRoYW4gaW5uZXIgYXQgcmFkaXVzIG11bHRpcGxpZXIgPSAxIChtYXRjaGVzIHRoZSBiYXNlIG1lc2gpLlxuICovXG5jb25zdCBIVUdFX0hBTE9fSU5ORVJfUkFESVVTID0gMjU4O1xuY29uc3QgSFVHRV9IQUxPX0JBU0VfT1VURVJfUkFESVVTID0gMjk0O1xuY29uc3QgSFVHRV9IQUxPX0JBU0VfU0hFTEwgPSBIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVMgLSBIVUdFX0hBTE9fSU5ORVJfUkFESVVTO1xuLyoqIE1hdGNoZXMgdGhlIEhhbG8gUmFkaXVzIHNsaWRlciBtYXg7IGhpZ2hlciB2YWx1ZXMgY2FuIHByb2R1Y2UgYSBibGFjay1kaXNjIGFydGlmYWN0LiAqL1xuY29uc3QgSFVHRV9IQUxPX1JBRElVU19NQVggPSAzLjU7XG5cbmNvbnN0IEhVR0VfSEFMT19VTklGT1JNUyA9IHtcbiAgZklubmVyUmFkaXVzOiBIVUdFX0hBTE9fSU5ORVJfUkFESVVTLFxuICAvLyBTb2Z0IGN5YW4gbWF0Y2hpbmcgdGhlIHJlZmVyZW5jZSBodWdlLWhhbG8gbG9vay5cbiAgdjNIYWxvQ29sb3I6IFswLjQ1LCAwLjcyLCAxLjBdLFxuICBmSGFsb0ludGVuc2l0eTogMS4wXG59O1xuXG5jb25zdCBIVUdFX0hBTE9fUEFSQU1FVEVSUyA9IHtcbiAgY3VsbEZhY2U6IDB4MDQwNCwgLy8gR0wuRlJPTlRcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgLy8gTGFyZ2Ugc2hlbGxzIG9mdGVuIGVuY2xvc2UgdGhlIGNhbWVyYTsgZGlzYWJsZSBkZXB0aCBzbyB0aGUgcmluZyBzdGlsbCBkcmF3cy5cbiAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sIC8vIFNSQ19BTFBIQSwgT05FX01JTlVTX1NSQ19BTFBIQVxuICBibGVuZEVxdWF0aW9uOiBbMHg4MDA2LCAweDgwMDZdXG59O1xuXG5mdW5jdGlvbiByZXNvbHZlSHVnZUhhbG9SYWRpdXMoY29uZmlnOiBHbG9iZUNvbmZpZyk6IG51bWJlciB7XG4gIGNvbnN0IG11bHRpcGxpZXIgPSBOdW1iZXIuaXNGaW5pdGUoY29uZmlnLmh1Z2VIYWxvUmFkaXVzKVxuICAgID8gKGNvbmZpZy5odWdlSGFsb1JhZGl1cyBhcyBudW1iZXIpXG4gICAgOiBERUZBVUxUX0dMT0JFX0NPTkZJRy5odWdlSGFsb1JhZGl1cztcbiAgLy8gU2NhbGUgc2hlbGwgdGhpY2tuZXNzOyBrZWVwIG91dGVyIGFib3ZlIHRoZSBwbGFuZXQgc3VyZmFjZS5cbiAgcmV0dXJuIChcbiAgICBIVUdFX0hBTE9fSU5ORVJfUkFESVVTICtcbiAgICBIVUdFX0hBTE9fQkFTRV9TSEVMTCAqIE1hdGgubWF4KE1hdGgubWluKG11bHRpcGxpZXIsIEhVR0VfSEFMT19SQURJVVNfTUFYKSwgMC4wNSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUh1Z2VIYWxvT3BhY2l0eShjb25maWc6IEdsb2JlQ29uZmlnKTogbnVtYmVyIHtcbiAgY29uc3Qgb3BhY2l0eSA9IE51bWJlci5pc0Zpbml0ZShjb25maWcuaHVnZUhhbG9PcGFjaXR5KVxuICAgID8gKGNvbmZpZy5odWdlSGFsb09wYWNpdHkgYXMgbnVtYmVyKVxuICAgIDogREVGQVVMVF9HTE9CRV9DT05GSUcuaHVnZUhhbG9PcGFjaXR5O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgb3BhY2l0eSkpO1xufVxuXG4vKipcbiAqIFZpZXctaW5kZXBlbmRlbnQgYXRtb3NwaGVyZTogYSBsYXJnZSB1bmlmb3JtIGVtaXNzaXZlIGF1cmEgYXJvdW5kIHRoZSBnbG9iZS5cbiAqIFVubGlrZSBBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMsIHRoaXMgaWdub3JlcyBzdW4gZGlyZWN0aW9uIGFuZCB1c2VzIGFcbiAqIGxpbmVhciByYWRpYWwgZmFsbG9mZiB0aHJvdWdoIGEgdGhpY2sgc2hlbGwgKG1heCBhdCB0aGUgc3VyZmFjZSDihpIgMCBhdCBvdXRlciByYWRpdXMpLlxuICovXG5leHBvcnQgY2xhc3MgQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBBdG1vc3BoZXJlTGF5ZXJQcm9wcz4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0F0bW9zcGhlcmVIdWdlSGFsb0xheWVyJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWcsIHpvb21GYWRlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5IVUdFX0hBTE9fVU5JRk9STVMsXG4gICAgICAgIGZIYWxvT3BhY2l0eTogcmVzb2x2ZUh1Z2VIYWxvT3BhY2l0eShjb25maWcpLFxuICAgICAgICBmQXRtb3NwaGVyZVpvb21GYWRlOiB6b29tRmFkZVxuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0U2hhZGVycygpLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgICdmczojZGVjbCc6IGBcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZJbm5lclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIHZlYzMgdjNIYWxvQ29sb3I7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSGFsb0ludGVuc2l0eTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZIYWxvT3BhY2l0eTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG4gICAgICAgICAgLy8gT3V0ZXIgcmFkaXVzIGZyb20gdGhlIGFjdHVhbCBtZXNoIHZlcnRleCBzbyBzaXplU2NhbGUgc3RheXMgaW4gc3luYy5cbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMgPSBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIHZlYzMgdjNSYXkgPSBub3JtYWxpemUodjNQb3MgLSB2M0NhbWVyYVBvcyk7XG5cbiAgICAgICAgICAvLyBJbXBhY3QgcGFyYW1ldGVyIG9mIHRoZSB2aWV3IHJheSAocGVycGVuZGljdWxhciBkaXN0YW5jZSBmcm9tIGdsb2JlXG4gICAgICAgICAgLy8gY2VudGVyIHRvIHRoZSByYXkpLiBTdGFibGUgd2hlbiB0aGUgY2FtZXJhIGlzIGluc2lkZSB0aGUgb3V0ZXIgc2hlbGwsXG4gICAgICAgICAgLy8gdW5saWtlIG5lYXIvZmFyIHNwaGVyZS1pbnRlcnNlY3Rpb24gbWF0aCB3aGljaCBicmVha3MgaW4gdGhhdCBjYXNlXG4gICAgICAgICAgLy8gYW5kIHByb2R1Y2VkIGEgYmxhY2sgZGlzYyBhdCBoaWdoIHJhZGl1cyBtdWx0aXBsaWVycy5cbiAgICAgICAgICBmbG9hdCBmRE1pbiA9IGxlbmd0aChjcm9zcyh2M0NhbWVyYVBvcywgdjNSYXkpKTtcblxuICAgICAgICAgIC8vIExpbmVhciBmYWxsb2ZmIGluIHRoZSBhbm51bHVzIG9ubHk6IG1heCBhdCB0aGUgc3VyZmFjZSwgemVybyBhdCBvdXRlci5cbiAgICAgICAgICBmbG9hdCBmU2hlbGwgPSBtYXgoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzLCAwLjAwMDEpO1xuICAgICAgICAgIGZsb2F0IGZHbG93ID0gMC4wO1xuICAgICAgICAgIGlmIChmRE1pbiA+PSBmSW5uZXJSYWRpdXMgJiYgZkRNaW4gPCBmT3V0ZXJSYWRpdXMpIHtcbiAgICAgICAgICAgIGZsb2F0IHQgPSAoZkRNaW4gLSBmSW5uZXJSYWRpdXMpIC8gZlNoZWxsO1xuICAgICAgICAgICAgZkdsb3cgPSAxLjAgLSB0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZHbG93ICo9IGZIYWxvSW50ZW5zaXR5O1xuXG4gICAgICAgICAgLy8gU3RyYWlnaHQgYWxwaGEgKG5vdCBwcmVtdWx0aXBsaWVkKSBmb3IgU1JDX0FMUEhBIGJsZW5kaW5nLlxuICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQodjNIYWxvQ29sb3IsIGZHbG93ICogZkhhbG9PcGFjaXR5KTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmQXRtb3NwaGVyZVpvb21GYWRlO1xuICAgICAgICBgLFxuICAgICAgICAnZnM6REVDS0dMX0ZJTFRFUl9DT0xPUic6IGBgXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIgPSAoe2NvbmZpZywgem9vbX06IHtjb25maWc6IEdsb2JlQ29uZmlnOyB6b29tPzogbnVtYmVyfSkgPT4ge1xuICBjb25zdCB6b29tRmFkZSA9IGF0bW9zcGhlcmVab29tRmFkZSh6b29tID8/IDApO1xuICByZXR1cm4gbmV3IEF0bW9zcGhlcmVMYXllclJlYWxpc3RpYyh7XG4gICAgaWQ6ICdhdG1vc3BoZXJlJyxcbiAgICBkYXRhOiBbWzAsIDAsIDBdXSxcbiAgICBjb25maWcsXG4gICAgem9vbUZhZGUsXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKChkOiBudW1iZXJbXSkgPT4gZCkgYXMgYW55LFxuICAgIGdldENvbG9yOiBbMCwgMCwgMF0sXG4gICAgbWVzaDogR0xPQkVfTUVTSF9JTk5FUixcbiAgICBwYXJhbWV0ZXJzOiBBVE1PU1BIRVJFX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuXG4vKiogUmVhbGlzdGljIHN1bi1saXQgc2NhdHRlcmluZyBza3kgaGFsbyAodGhpbiBsaW1iIGdsb3cpLiAqL1xuZXhwb3J0IGNvbnN0IGdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyID0gKHtjb25maWcsIHpvb219OiB7Y29uZmlnOiBHbG9iZUNvbmZpZzsgem9vbT86IG51bWJlcn0pID0+IHtcbiAgY29uc3Qgem9vbUZhZGUgPSBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbSA/PyAwKTtcbiAgcmV0dXJuIG5ldyBBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMoe1xuICAgIGlkOiAnYXRtb3NwaGVyZS1za3knLFxuICAgIGRhdGE6IFtbMCwgMCwgMF1dLFxuICAgIGNvbmZpZyxcbiAgICB6b29tRmFkZSxcbiAgICBjb29yZGluYXRlT3JpZ2luOiBbMCwgMCwgMF0sXG4gICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgIGdldFBvc2l0aW9uOiAoKGQ6IG51bWJlcltdKSA9PiBkKSBhcyBhbnksXG4gICAgZ2V0Q29sb3I6IFswLCAwLCAwXSxcbiAgICBtZXNoOiBHTE9CRV9NRVNIX09VVEVSLFxuICAgIHBhcmFtZXRlcnM6IEFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuXG4vKipcbiAqIExhcmdlIHVuaWZvcm0gZ2xvdyBkcmF3biBpbiBhZGRpdGlvbiB0byB0aGUgcmVhbGlzdGljIHNreSBoYWxvIHdoZW5cbiAqIGBjb25maWcuaHVnZUhhbG9gIGlzIGVuYWJsZWQuIFJldHVybnMgbnVsbCB3aGVuIGRpc2FibGVkLlxuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVIdWdlSGFsb0xheWVyID0gKHtjb25maWcsIHpvb219OiB7Y29uZmlnOiBHbG9iZUNvbmZpZzsgem9vbT86IG51bWJlcn0pID0+IHtcbiAgaWYgKCFjb25maWcuaHVnZUhhbG8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB6b29tRmFkZSA9IGF0bW9zcGhlcmVab29tRmFkZSh6b29tID8/IDApO1xuICBjb25zdCBvdXRlclJhZGl1cyA9IHJlc29sdmVIdWdlSGFsb1JhZGl1cyhjb25maWcpO1xuICAvLyBLZWVwIG1lc2ggZXh0ZW50IGluIHN5bmMgd2l0aCB0aGUgZGVzaXJlZCBvdXRlciByYWRpdXMgKGJhc2UgbWVzaCA9IGRlZmF1bHQgb3V0ZXIpLlxuICBjb25zdCBzaXplU2NhbGUgPSBvdXRlclJhZGl1cyAvIEhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUztcbiAgcmV0dXJuIG5ldyBBdG1vc3BoZXJlSHVnZUhhbG9MYXllcih7XG4gICAgaWQ6ICdhdG1vc3BoZXJlLWh1Z2UtaGFsbycsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29uZmlnLFxuICAgIHpvb21GYWRlLFxuICAgIGNvb3JkaW5hdGVPcmlnaW46IFswLCAwLCAwXSxcbiAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgZ2V0UG9zaXRpb246ICgoZDogbnVtYmVyW10pID0+IGQpIGFzIGFueSxcbiAgICBnZXRDb2xvcjogWzAsIDAsIDBdLFxuICAgIG1lc2g6IEdMT0JFX01FU0hfSFVHRV9IQUxPLFxuICAgIHNpemVTY2FsZSxcbiAgICBwYXJhbWV0ZXJzOiBIVUdFX0hBTE9fUEFSQU1FVEVSU1xuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFBNEUsU0FBQU0sUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxC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
|
|
341
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzaExheWVycyIsIl9lbmdpbmUiLCJfY29yZTIiLCJfc3VuIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsInRvUmFkaWFucyIsImRlZ3JlZXMiLCJNYXRoIiwiUEkiLCJhbmdsZVRvVmVjIiwiYW5nbGUiLCJzaW4iLCJjb3MiLCJhbmdsZVRvU3VuUG9zIiwiVmVjdG9yMyIsIm5vcm1hbGl6ZSIsIkdMT0JFX01FU0hfSU5ORVIiLCJTcGhlcmVHZW9tZXRyeSIsInJhZGl1cyIsIm5sYXQiLCJubG9uZyIsIkdMT0JFX01FU0hfT1VURVIiLCJHTE9CRV9NRVNIX0hVR0VfSEFMTyIsImxvbiIsImxhdCIsInN1blBvc05vdyIsImdldFN1blBvc2l0aW9uIiwiRGF0ZSIsIm5vdyIsInYzU3VuUG9zTm93IiwiYXppbXV0aCIsIk5VTV9TQU1QTEVfUkFZUyIsIkFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUIiwiQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIiwiYXRtb3NwaGVyZVpvb21GYWRlIiwiem9vbSIsIkFUTU9TUEhFUkVfVU5JRk9STVMiLCJ2M1N1blBvcyIsImV4cG9zdXJlIiwiZlNhbXBsZXMiLCJnIiwiZktyRVN1biIsImZLbUVTdW4iLCJmS3I0UEkiLCJmS200UEkiLCJmU2NhbGVEZXB0aCIsImZJbm5lclJhZGl1cyIsImZPdXRlclJhZGl1cyIsImZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yIiwiZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yIiwiQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIiwiZXhwb3J0cyIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImRyYXciLCJfcmVmIiwidW5pZm9ybXMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY29uZmlnIiwiem9vbUZhZGUiLCJtb2RlbCIsInN0YXRlIiwidGVybWluYXRvciIsInRlcm1pbmF0b3JPcGFjaXR5IiwiYXppbXV0aEFuZ2xlIiwiZkF0bW9zcGhlcmVab29tRmFkZSIsImdldFNoYWRlcnMiLCJpbmplY3QiLCJjb25jYXQiLCJTaW1wbGVNZXNoTGF5ZXIiLCJBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMiLCJfU2ltcGxlTWVzaExheWVyMiIsIl9yZWYyIiwiX3RoaXMkcHJvcHMyIiwiQVRNT1NQSEVSRV9QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsIkFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlMiLCJjdWxsRmFjZSIsImRlcHRoTWFzayIsIkhVR0VfSEFMT19JTk5FUl9SQURJVVMiLCJIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVMiLCJIVUdFX0hBTE9fQkFTRV9TSEVMTCIsIkhVR0VfSEFMT19SQURJVVNfTUFYIiwiSFVHRV9IQUxPX1VOSUZPUk1TIiwidjNIYWxvQ29sb3IiLCJmSGFsb0ludGVuc2l0eSIsIkhVR0VfSEFMT19QQVJBTUVURVJTIiwicmVzb2x2ZUh1Z2VIYWxvUmFkaXVzIiwibXVsdGlwbGllciIsIk51bWJlciIsImlzRmluaXRlIiwiaHVnZUhhbG9SYWRpdXMiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1heCIsIm1pbiIsInJlc29sdmVIdWdlSGFsb09wYWNpdHkiLCJvcGFjaXR5IiwiaHVnZUhhbG9PcGFjaXR5IiwiQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIiLCJfU2ltcGxlTWVzaExheWVyMyIsIl9yZWYzIiwiX3RoaXMkcHJvcHMzIiwiZkhhbG9PcGFjaXR5IiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiLCJfcmVmNCIsImlkIiwiZGF0YSIsImNvb3JkaW5hdGVPcmlnaW4iLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJDQVJURVNJQU4iLCJnZXRQb3NpdGlvbiIsImQiLCJnZXRDb2xvciIsIm1lc2giLCJwYXJhbWV0ZXJzIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJfcmVmNSIsImdldEdsb2JlSHVnZUhhbG9MYXllciIsIl9yZWY2IiwiaHVnZUhhbG8iLCJvdXRlclJhZGl1cyIsInNpemVTY2FsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9hdG1vc3BoZXJlLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIFNoYWRlcnMgcG9ydGVkIGZyb20gaVRvd25zLCBiYXNlZCBvbiBTZWFuIE8nTmVpbCdzIGFwcHJvYWNoIGluIEdQVSBHZW1zIDJcbi8vIFNFRTogaHR0cHM6Ly9naXRodWIuY29tL2lUb3ducy9pdG93bnMvYmxvYi9tYXN0ZXIvc3JjL0NvcmUvUHJlZmFiL0dsb2JlL0F0bW9zcGhlcmUuanNcbi8vIFNFRTogaHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9ncHVnZW1zL2dwdWdlbXMyL3BhcnQtaWktc2hhZGluZy1saWdodGluZy1hbmQtc2hhZG93cy9jaGFwdGVyLTE2LWFjY3VyYXRlLWF0bW9zcGhlcmljLXNjYXR0ZXJpbmdcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NpbXBsZU1lc2hMYXllcn0gZnJvbSAnQGRlY2suZ2wvbWVzaC1sYXllcnMnO1xuaW1wb3J0IHtTcGhlcmVHZW9tZXRyeX0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcbmltcG9ydCB7VmVjdG9yM30gZnJvbSAnQG1hdGguZ2wvY29yZSc7XG5pbXBvcnQge2dldFN1blBvc2l0aW9ufSBmcm9tICdAbWF0aC5nbC9zdW4nO1xuXG5pbXBvcnQge0RFRkFVTFRfR0xPQkVfQ09ORklHLCB0eXBlIEdsb2JlQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmNvbnN0IHRvUmFkaWFucyA9IChkZWdyZWVzOiBudW1iZXIpOiBudW1iZXIgPT4gKGRlZ3JlZXMgKiBNYXRoLlBJKSAvIDE4MDtcblxuY29uc3QgYW5nbGVUb1ZlYyA9IChhbmdsZTogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgcmV0dXJuIFtNYXRoLnNpbihhbmdsZSksIE1hdGguY29zKGFuZ2xlKSwgMF07XG59O1xuXG5jb25zdCBhbmdsZVRvU3VuUG9zID0gKGFuZ2xlOiBudW1iZXIpOiBudW1iZXJbXSA9PiB7XG4gIHJldHVybiBuZXcgVmVjdG9yMyhhbmdsZVRvVmVjKGFuZ2xlKSkubm9ybWFsaXplKCkgYXMgdW5rbm93biBhcyBudW1iZXJbXTtcbn07XG5cbmNvbnN0IEdMT0JFX01FU0hfSU5ORVIgPSBuZXcgU3BoZXJlR2VvbWV0cnkoe1xuICByYWRpdXM6IDYuNGU2LFxuICBubGF0OiAxMDAsXG4gIG5sb25nOiAxMDBcbn0pO1xuXG5jb25zdCBHTE9CRV9NRVNIX09VVEVSID0gbmV3IFNwaGVyZUdlb21ldHJ5KHtcbiAgcmFkaXVzOiA2LjdlNixcbiAgbmxhdDogMTAwLFxuICBubG9uZzogMTAwXG59KTtcblxuLy8gfjE0JSBsYXJnZXIgdGhhbiB0aGUgZ2xvYmUgc3VyZmFjZSBtZXNoIOKAlCB5aWVsZHMgYSB0aGljayBzb2Z0IGF1cmEgKH4wLjHigJMwLjE1UikuXG5jb25zdCBHTE9CRV9NRVNIX0hVR0VfSEFMTyA9IG5ldyBTcGhlcmVHZW9tZXRyeSh7XG4gIHJhZGl1czogNy4zZTYsXG4gIG5sYXQ6IDEwMCxcbiAgbmxvbmc6IDEwMFxufSk7XG5cbmNvbnN0IFtsb24sIGxhdF0gPSBbMCwgOTBdO1xuY29uc3Qgc3VuUG9zTm93ID0gZ2V0U3VuUG9zaXRpb24oRGF0ZS5ub3coKSwgbGF0LCBsb24pO1xuY29uc3QgdjNTdW5Qb3NOb3cgPSBhbmdsZVRvU3VuUG9zKHN1blBvc05vdy5hemltdXRoICsgTWF0aC5QSSk7XG5cbmNvbnN0IE5VTV9TQU1QTEVfUkFZUyA9IDM7XG5cbi8qKlxuICogWm9vbSByYW5nZSBvdmVyIHdoaWNoIHRoZSBhdG1vc3BoZXJlIGVmZmVjdCBmYWRlcyBvdXQuXG4gKiBCZWxvdyBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCB0aGUgZWZmZWN0IGlzIGZ1bGx5IHZpc2libGUuXG4gKiBBYm92ZSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgdGhlIGVmZmVjdCBpcyBjb21wbGV0ZWx5IGhpZGRlbi5cbiAqL1xuY29uc3QgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQgPSAzLjU7XG5jb25zdCBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgPSA2O1xuXG4vKipcbiAqIENvbnZlcnQgYSBtYXBTdGF0ZSB6b29tIGxldmVsIHRvIGEgWzAsIDFdIGF0bW9zcGhlcmUgb3BhY2l0eSBtdWx0aXBsaWVyLlxuICogUmV0dXJucyAxIChmdWxseSB2aXNpYmxlKSBiZWxvdyBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCwgc21vb3RobHlcbiAqIGludGVycG9sYXRlcyB0byAwIGJldHdlZW4gdGhlIHR3byB0aHJlc2hvbGRzLCBhbmQgcmV0dXJucyAwIGFib3ZlXG4gKiBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHpvb20gPD0gQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQpIHJldHVybiAxO1xuICBpZiAoem9vbSA+PSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQpIHJldHVybiAwO1xuICBjb25zdCB0ID1cbiAgICAoem9vbSAtIEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUKSAvIChBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgLSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCk7XG4gIC8vIFNtb290aC1zdGVwIGZvciBhIHBlcmNlcHR1YWxseSBnZW50bGUgdHJhbnNpdGlvbi5cbiAgcmV0dXJuIDEgLSB0ICogdCAqICgzIC0gMiAqIHQpO1xufVxuXG5jb25zdCBBVE1PU1BIRVJFX1VOSUZPUk1TID0ge1xuICB2M1N1blBvczogdjNTdW5Qb3NOb3csXG4gIGV4cG9zdXJlOiAyLFxuICBmU2FtcGxlczogMyxcbiAgZzogLTAuNjUsXG4gIGZLckVTdW46IDAuMDAwMjUgKiAyMCxcbiAgZkttRVN1bjogMC4wMDAxICogMjAsXG4gIGZLcjRQSTogMC4wMDAyNSAqIDQgKiBNYXRoLlBJLFxuICBmS200UEk6IDAuMDAwMSAqIDQgKiBNYXRoLlBJLFxuICBmU2NhbGVEZXB0aDogMC4yNSxcbiAgZklubmVyUmFkaXVzOiAyNTgsXG4gIGZPdXRlclJhZGl1czogMjY1LFxuICBmVGVybWluYXRvckF0dGVudWF0ZUZhY3RvcjogMC44LFxuICBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I6IDFcbn07XG5cbnR5cGUgQXRtb3NwaGVyZUxheWVyUHJvcHMgPSB7XG4gIGNvbmZpZzogR2xvYmVDb25maWc7XG4gIC8qKiBQcmUtY29tcHV0ZWQgWzAsIDFdIHpvb20tZmFkZSBtdWx0aXBsaWVyOyAxID0gZnVsbHkgdmlzaWJsZSwgMCA9IGhpZGRlbi4gKi9cbiAgem9vbUZhZGU6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBBdG1vc3BoZXJlTGF5ZXJQcm9wcz4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0F0bW9zcGhlcmVMYXllclJlYWxpc3RpYyc7XG5cbiAgZHJhdyh7dW5pZm9ybXN9OiB7dW5pZm9ybXM6IG9iamVjdH0pOiB2b2lkIHtcbiAgICBjb25zdCB7Y29uZmlnLCB6b29tRmFkZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIChtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zID0ge1xuICAgICAgICAuLi4obW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyxcbiAgICAgICAgLi4uQVRNT1NQSEVSRV9VTklGT1JNUyxcbiAgICAgICAgZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yOiBjb25maWcudGVybWluYXRvciA/IGNvbmZpZy50ZXJtaW5hdG9yT3BhY2l0eSA6IDAsXG4gICAgICAgIHYzU3VuUG9zOiBjb25maWcuYXppbXV0aCA/IGFuZ2xlVG9TdW5Qb3ModG9SYWRpYW5zKGNvbmZpZy5hemltdXRoQW5nbGUpKSA6IHYzU3VuUG9zTm93LFxuICAgICAgICBmQXRtb3NwaGVyZVpvb21GYWRlOiB6b29tRmFkZVxuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0U2hhZGVycygpLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgICdmczojZGVjbCc6IGBcbiAgICAgICAgICB1bmlmb3JtIHZlYzMgdjNTdW5Qb3M7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGc7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBleHBvc3VyZTtcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlNhbXBsZXM7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZJbm5lclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZPdXRlclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLckVTdW47XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS21FU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZktyNFBJO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttNFBJO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlNjYWxlRGVwdGg7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkF0bW9zcGhlcmVab29tRmFkZTtcblxuICAgICAgICAgIGNvbnN0IGludCBuU2FtcGxlcyA9ICR7TlVNX1NBTVBMRV9SQVlTfTtcblxuICAgICAgICAgIGZsb2F0IHNjYWxlKGZsb2F0IGZDb3MpIHtcbiAgICAgICAgICAgIGZsb2F0IHggPSAxLjAgLSBmQ29zO1xuICAgICAgICAgICAgcmV0dXJuIGZTY2FsZURlcHRoICogZXhwKC0wLjAwMjg3ICsgeCooMC40NTkgKyB4KigzLjgzICsgeCooLTYuOCArIHgqNS4yNSkpKSk7XG4gICAgICAgICAgfVxuICAgICAgICBgLFxuICAgICAgICAnZnM6I21haW4tZW5kJzogYFxuICAgICAgICAgIHZlYzMgdjNDYW1lcmFQb3MgPSBjYW1lcmFQb3NpdGlvbjtcbiAgICAgICAgICB2ZWMzIHYzUG9zID0gcG9zaXRpb25fY29tbW9uc3BhY2UueHl6O1xuXG4gICAgICAgICAgZmxvYXQgZzIgPSBnICogZztcblxuICAgICAgICAgIHZlYzMgdjNJbnZXYXZlbGVuZ3RoID0gdmVjMygxLjAgLyBwb3coMC42NTAsIDQuMCksIDEuMCAvIHBvdygwLjU3MCwgNC4wKSwgMS4wIC8gcG93KDAuNDc1LCA0LjApKTtcblxuICAgICAgICAgIGZsb2F0IGZJbm5lclJhZGl1czIgPSBmSW5uZXJSYWRpdXMgKiBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZk91dGVyUmFkaXVzMiA9IGZPdXRlclJhZGl1cyAqIGZPdXRlclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmU2NhbGUgPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKTtcbiAgICAgICAgICBmbG9hdCBmU2NhbGVPdmVyU2NhbGVEZXB0aCA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpIC8gZlNjYWxlRGVwdGg7XG5cbiAgICAgICAgICBmbG9hdCBjYW1lcmFIZWlnaHQyID0gbGVuZ3RoKHYzQ2FtZXJhUG9zKSAqIGxlbmd0aCh2M0NhbWVyYVBvcyk7XG5cbiAgICAgICAgICB2ZWMzIHYzUmF5ID0gdjNQb3MgLSB2M0NhbWVyYVBvcztcbiAgICAgICAgICBmbG9hdCBmRmFyID0gbGVuZ3RoKHYzUmF5KTtcbiAgICAgICAgICB2M1JheSAvPSBmRmFyO1xuXG4gICAgICAgICAgZmxvYXQgQiA9IDIuMCAqIGRvdCh2M0NhbWVyYVBvcywgdjNSYXkpO1xuICAgICAgICAgIGZsb2F0IEMgPSBjYW1lcmFIZWlnaHQyIC0gZk91dGVyUmFkaXVzMjtcbiAgICAgICAgICBmbG9hdCBmRGV0ID0gbWF4KDAuMCwgQipCIC0gNC4wICogQyk7XG4gICAgICAgICAgZmxvYXQgZk5lYXIgPSAwLjUgKiAoLUIgLSBzcXJ0KGZEZXQpKTtcblxuICAgICAgICAgIHZlYzMgdjNTdGFydCA9IHYzQ2FtZXJhUG9zICsgdjNSYXkgKiBmTmVhcjtcbiAgICAgICAgICBmRmFyIC09IGZOZWFyO1xuXG4gICAgICAgICAgZmxvYXQgZkRlcHRoID0gZXhwKChmSW5uZXJSYWRpdXMgLSBmT3V0ZXJSYWRpdXMpIC8gZlNjYWxlRGVwdGgpO1xuICAgICAgICAgIGZsb2F0IGZDYW1lcmFBbmdsZSA9IGRvdCgtdjNSYXksIHYzUG9zKSAvIGxlbmd0aCh2M1Bvcyk7XG4gICAgICAgICAgZmxvYXQgZkxpZ2h0QW5nbGUgPSBkb3QodjNTdW5Qb3MsIHYzUG9zKSAvIGxlbmd0aCh2M1Bvcyk7XG4gICAgICAgICAgZmxvYXQgZkNhbWVyYVNjYWxlID0gc2NhbGUoZkNhbWVyYUFuZ2xlKTtcbiAgICAgICAgICBmbG9hdCBmTGlnaHRTY2FsZSA9IHNjYWxlKGZMaWdodEFuZ2xlKTtcbiAgICAgICAgICBmbG9hdCBmQ2FtZXJhT2Zmc2V0ID0gZkRlcHRoKmZDYW1lcmFTY2FsZTtcbiAgICAgICAgICBmbG9hdCBmVGVtcCA9IChmTGlnaHRTY2FsZSArIGZDYW1lcmFTY2FsZSk7XG5cbiAgICAgICAgICBmbG9hdCBmU2FtcGxlTGVuZ3RoID0gZkZhciAvIGZTYW1wbGVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZWRMZW5ndGggPSBmU2FtcGxlTGVuZ3RoICogZlNjYWxlO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVSYXkgPSB2M1JheSAqIGZTYW1wbGVMZW5ndGg7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVBvaW50ID0gdjNTdGFydCArIHYzU2FtcGxlUmF5ICogMC41O1xuXG4gICAgICAgICAgdmVjMyB2M0Zyb250Q29sb3IgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIHZlYzMgdjNBdHRlbnVhdGUgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG5TYW1wbGVzOyBpKyspXG4gICAgICAgICAge1xuICAgICAgICAgICAgICBmbG9hdCBmSGVpZ2h0ID0gbGVuZ3RoKHYzU2FtcGxlUG9pbnQpO1xuICAgICAgICAgICAgICBmbG9hdCBmRGVwdGggPSBleHAoZlNjYWxlT3ZlclNjYWxlRGVwdGggKiAoZklubmVyUmFkaXVzIC0gZkhlaWdodCkpO1xuICAgICAgICAgICAgICBmbG9hdCBmU2NhdHRlciA9IGZEZXB0aCpmVGVtcCAtIGZDYW1lcmFPZmZzZXQ7XG4gICAgICAgICAgICAgIHYzQXR0ZW51YXRlID0gZXhwKC1mU2NhdHRlciAqICh2M0ludldhdmVsZW5ndGggKiBmS3I0UEkgKyBmS200UEkpKTtcbiAgICAgICAgICAgICAgdjNGcm9udENvbG9yICs9IHYzQXR0ZW51YXRlICogKGZEZXB0aCAqIGZTY2FsZWRMZW5ndGgpO1xuICAgICAgICAgICAgICB2M1NhbXBsZVBvaW50ICs9IHYzU2FtcGxlUmF5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZlYzMgYzAgPSB2M0F0dGVudWF0ZTtcbiAgICAgICAgICB2ZWMzIGMxID0gdjNGcm9udENvbG9yICogKHYzSW52V2F2ZWxlbmd0aCAqIGZLckVTdW4gKyBmS21FU3VuKTtcblxuICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQoYzEsIDEuMCAtIGMwICogZlRlcm1pbmF0b3JBdHRlbnVhdGVGYWN0b3IpO1xuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjtcblxuICAgICAgICAgIC8vIEtlZXAgdGhlIGRheSBoZW1pc3BoZXJlIGNvbXBsZXRlbHkgdW5zaGFkZWQg4oCUIHRoZSBhdHRlbnVhdGlvbi1iYXNlZFxuICAgICAgICAgIC8vIGFscGhhIGFib3ZlIGlzIG5vbi16ZXJvIGV2ZW4gYXQgbm9vbiwgd2hpY2ggc2xpZ2h0bHkgZGFya2VucyB0aGUgbGl0XG4gICAgICAgICAgLy8gc2lkZS4gR2F0ZSBpdCB3aXRoIGEgZGF5L25pZ2h0IG1hc2sgc28gZGFya2VuaW5nIG9ubHkgYXBwZWFycyBhY3Jvc3NcbiAgICAgICAgICAvLyB0aGUgdGVybWluYXRvciBhbmQgb250byB0aGUgbmlnaHQgc2lkZS5cbiAgICAgICAgICAvLyBmTGlnaHRBbmdsZSA9IGRvdChzdW5EaXIsIHN1cmZhY2VOb3JtYWwpOiArMSBhdCB0aGUgc3Vic29sYXIgcG9pbnRcbiAgICAgICAgICAvLyAobm9vbiksIDAgYXQgdGhlIHRlcm1pbmF0b3IsIC0xIGF0IG1pZG5pZ2h0LiBzbW9vdGhzdGVwIG1hcHMgdGhlIGRheVxuICAgICAgICAgIC8vIHNpZGUgKD49IDAuMikgdG8gMCAobm8gZGFya2VuaW5nKSwgcmFtcHMgdGhyb3VnaCB0aGUgdGVybWluYXRvciwgYW5kXG4gICAgICAgICAgLy8gcmVhY2hlcyBmdWxsIGRhcmtlbmluZyBvbiB0aGUgbmlnaHQgc2lkZSAoPD0gLTAuMikuXG4gICAgICAgICAgZmxvYXQgZk5pZ2h0TWFzayA9IHNtb290aHN0ZXAoMC4yLCAtMC4yLCBmTGlnaHRBbmdsZSk7XG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZk5pZ2h0TWFzaztcblxuICAgICAgICAgIC8vIEZhZGUgb3V0IHRoZSBlbnRpcmUgZGF5L25pZ2h0IHNoYWRpbmcgZWZmZWN0IGFzIHRoZSB1c2VyIHpvb21zIGluLlxuICAgICAgICAgIC8vIEF0IHpvb20gbGV2ZWxzIGFib3ZlIEFUTU9TUEhFUkVfRkFERV9aT09NX0VORCB0aGUgZWZmZWN0IGlzIGludmlzaWJsZSxcbiAgICAgICAgICAvLyBzbyBpdCBkb2Vzbid0IG9ic2N1cmUgbWFwIGRldGFpbCBhdCBzdHJlZXQvY2l0eSBzY2FsZS5cbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmQXRtb3NwaGVyZVpvb21GYWRlO1xuICAgICAgICBgLFxuICAgICAgICAnZnM6REVDS0dMX0ZJTFRFUl9DT0xPUic6IGBgXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueSwgQXRtb3NwaGVyZUxheWVyUHJvcHM+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMnO1xuXG4gIGRyYXcoe3VuaWZvcm1zfToge3VuaWZvcm1zOiBvYmplY3R9KTogdm9pZCB7XG4gICAgY29uc3Qge2NvbmZpZywgem9vbUZhZGV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuc3RhdGUubW9kZWw7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICAobW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyA9IHtcbiAgICAgICAgLi4uKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIC4uLkFUTU9TUEhFUkVfVU5JRk9STVMsXG4gICAgICAgIHYzU3VuUG9zOiBjb25maWcuYXppbXV0aCA/IGFuZ2xlVG9TdW5Qb3ModG9SYWRpYW5zKGNvbmZpZy5hemltdXRoQW5nbGUpKSA6IHYzU3VuUG9zTm93LFxuICAgICAgICBmQXRtb3NwaGVyZVpvb21GYWRlOiB6b29tRmFkZVxuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0U2hhZGVycygpLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgICdmczojZGVjbCc6IGBcbiAgICAgICAgICB1bmlmb3JtIHZlYzMgdjNTdW5Qb3M7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGc7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBleHBvc3VyZTtcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlNhbXBsZXM7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZJbm5lclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZPdXRlclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLckVTdW47XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS21FU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZktyNFBJO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttNFBJO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlNjYWxlRGVwdGg7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmQXRtb3NwaGVyZVpvb21GYWRlO1xuXG4gICAgICAgICAgY29uc3QgaW50IG5TYW1wbGVzID0gJHtOVU1fU0FNUExFX1JBWVN9O1xuXG4gICAgICAgICAgZmxvYXQgc2NhbGUoZmxvYXQgZkNvcykge1xuICAgICAgICAgICAgZmxvYXQgeCA9IDEuMCAtIGZDb3M7XG4gICAgICAgICAgICByZXR1cm4gZlNjYWxlRGVwdGggKiBleHAoLTAuMDAyODcgKyB4KigwLjQ1OSArIHgqKDMuODMgKyB4KigtNi44ICsgeCo1LjI1KSkpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmbG9hdCBnZXRNaWVQaGFzZShmbG9hdCBmQ29zLCBmbG9hdCBmQ29zMiwgZmxvYXQgZywgZmxvYXQgZzIpIHtcbiAgICAgICAgICAgIHJldHVybiAxLjUgKiAoKDEuMCAtIGcyKSAvICgyLjAgKyBnMikpICogKDEuMCArIGZDb3MyKSAvIHBvdygxLjAgKyBnMiAtIDIuMCAqIGcgKiBmQ29zLCAxLjUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZsb2F0IGdldFJheWxlaWdoUGhhc2UoZmxvYXQgZkNvczIpIHtcbiAgICAgICAgICAgIHJldHVybiAwLjc1ICsgMC43NSAqIGZDb3MyO1xuICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOiNtYWluLWVuZCc6IGBcbiAgICAgICAgICB2ZWMzIHYzQ2FtZXJhUG9zID0gY2FtZXJhUG9zaXRpb247XG4gICAgICAgICAgdmVjMyB2M1BvcyA9IHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5ejtcblxuICAgICAgICAgIGZsb2F0IGcyID0gZyAqIGc7XG5cbiAgICAgICAgICB2ZWMzIHYzSW52V2F2ZWxlbmd0aCA9IHZlYzMoMS4wIC8gcG93KDAuNjUwLCA0LjApLCAxLjAgLyBwb3coMC41NzAsIDQuMCksIDEuMCAvIHBvdygwLjQ3NSwgNC4wKSk7XG5cbiAgICAgICAgICBmbG9hdCBmSW5uZXJSYWRpdXMyID0gZklubmVyUmFkaXVzICogZklubmVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZPdXRlclJhZGl1czIgPSBmT3V0ZXJSYWRpdXMgKiBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cyk7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlT3ZlclNjYWxlRGVwdGggPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKSAvIGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgZmxvYXQgY2FtZXJhSGVpZ2h0MiA9IGxlbmd0aCh2M0NhbWVyYVBvcykgKiBsZW5ndGgodjNDYW1lcmFQb3MpO1xuXG4gICAgICAgICAgdmVjMyB2M1JheSA9IHYzUG9zIC0gdjNDYW1lcmFQb3M7XG4gICAgICAgICAgZmxvYXQgZkZhciA9IGxlbmd0aCh2M1JheSk7XG4gICAgICAgICAgdjNSYXkgLz0gZkZhcjtcblxuICAgICAgICAgIGZsb2F0IEIgPSAyLjAgKiBkb3QodjNDYW1lcmFQb3MsIHYzUmF5KTtcbiAgICAgICAgICBmbG9hdCBDID0gY2FtZXJhSGVpZ2h0MiAtIGZPdXRlclJhZGl1czI7XG4gICAgICAgICAgZmxvYXQgZkRldCA9IG1heCgwLjAsIEIqQiAtIDQuMCAqIEMpO1xuICAgICAgICAgIGZsb2F0IGZOZWFyID0gMC41ICogKC1CIC0gc3FydChmRGV0KSk7XG5cbiAgICAgICAgICB2ZWMzIHYzU3RhcnQgPSB2M0NhbWVyYVBvcyArIHYzUmF5ICogZk5lYXI7XG4gICAgICAgICAgZkZhciAtPSBmTmVhcjtcbiAgICAgICAgICBmbG9hdCBmU3RhcnRBbmdsZSA9IGRvdCh2M1JheSwgdjNTdGFydCkgLyBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0RGVwdGggPSBleHAoLTEuMCAvIGZTY2FsZURlcHRoKTtcbiAgICAgICAgICBmbG9hdCBmU3RhcnRPZmZzZXQgPSBmU3RhcnREZXB0aCAqIHNjYWxlKGZTdGFydEFuZ2xlKTtcblxuICAgICAgICAgIGZsb2F0IGZTYW1wbGVMZW5ndGggPSBmRmFyIC8gZlNhbXBsZXM7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlZExlbmd0aCA9IGZTYW1wbGVMZW5ndGggKiBmU2NhbGU7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVJheSA9IHYzUmF5ICogZlNhbXBsZUxlbmd0aDtcbiAgICAgICAgICB2ZWMzIHYzU2FtcGxlUG9pbnQgPSB2M1N0YXJ0ICsgdjNTYW1wbGVSYXkgKiAwLjU7XG5cbiAgICAgICAgICB2ZWMzIHYzRnJvbnRDb2xvciA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgZm9yKGludCBpPTA7IGk8blNhbXBsZXM7IGkrKylcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmbG9hdCBmSGVpZ2h0ID0gbGVuZ3RoKHYzU2FtcGxlUG9pbnQpO1xuICAgICAgICAgICAgZmxvYXQgZkRlcHRoID0gZXhwKGZTY2FsZU92ZXJTY2FsZURlcHRoICogKGZJbm5lclJhZGl1cyAtIGZIZWlnaHQpKTtcbiAgICAgICAgICAgIGZsb2F0IGZMaWdodEFuZ2xlID0gZG90KHYzU3VuUG9zLCB2M1NhbXBsZVBvaW50KSAvIGZIZWlnaHQ7XG4gICAgICAgICAgICBmbG9hdCBmQ2FtZXJhQW5nbGUgPSBkb3QodjNSYXksIHYzU2FtcGxlUG9pbnQpIC8gZkhlaWdodDtcbiAgICAgICAgICAgIGZsb2F0IGZTY2F0dGVyID0gKGZTdGFydE9mZnNldCArIGZEZXB0aCAqIChzY2FsZShmTGlnaHRBbmdsZSkgLSBzY2FsZShmQ2FtZXJhQW5nbGUpKSk7XG4gICAgICAgICAgICB2ZWMzIHYzQXR0ZW51YXRlID0gZXhwKC1mU2NhdHRlciAqICh2M0ludldhdmVsZW5ndGggKiBmS3I0UEkgKyBmS200UEkpKTtcblxuICAgICAgICAgICAgdjNGcm9udENvbG9yICs9IHYzQXR0ZW51YXRlICogKGZEZXB0aCAqIGZTY2FsZWRMZW5ndGgpO1xuICAgICAgICAgICAgdjNTYW1wbGVQb2ludCArPSB2M1NhbXBsZVJheTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2ZWMzIGMwID0gdjNGcm9udENvbG9yICogKHYzSW52V2F2ZWxlbmd0aCAqIGZLckVTdW4pO1xuICAgICAgICAgIHZlYzMgYzEgPSB2M0Zyb250Q29sb3IgKiBmS21FU3VuO1xuXG4gICAgICAgICAgdmVjMyB2M0RpcmVjdGlvbiA9IHYzQ2FtZXJhUG9zIC0gdjNQb3M7XG5cbiAgICAgICAgICBmbG9hdCBmQ29zID0gZG90KHYzU3VuUG9zLCB2M0RpcmVjdGlvbikgLyBsZW5ndGgodjNEaXJlY3Rpb24pO1xuICAgICAgICAgIGZsb2F0IGZDb3MyID0gZkNvcyAqIGZDb3M7XG5cbiAgICAgICAgICB2ZWMzIHNreUNvbG9yID0gZ2V0UmF5bGVpZ2hQaGFzZShmQ29zMikgKiBjMCArIGdldE1pZVBoYXNlKGZDb3MsIGZDb3MyLCBnLCBnMikgKiBjMTtcblxuICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQoc2t5Q29sb3IsIDEuMCk7XG4gICAgICAgICAgZnJhZ0NvbG9yLmEgPSBmcmFnQ29sb3IuYjtcblxuICAgICAgICAgIC8vIEZhZGUgdGhlIHNreSBoYWxvIG91dCBhcyB0aGUgdXNlciB6b29tcyBpbiBwYXN0IGNvbnRpbmVudCBzY2FsZS5cbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmQXRtb3NwaGVyZVpvb21GYWRlO1xuICAgICAgICBgLFxuICAgICAgICAnZnM6REVDS0dMX0ZJTFRFUl9DT0xPUic6IGBgXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBBVE1PU1BIRVJFX1BBUkFNRVRFUlMgPSB7XG4gIGRlcHRoVGVzdDogZmFsc2UsXG4gIGJsZW5kRnVuYzogWzB4MDMwMiwgMHgwMzAzLCAxLCAweDAzMDNdLCAvLyBTUkNfQUxQSEEsIE9ORV9NSU5VU19TUkNfQUxQSEEsIE9ORSwgT05FX01JTlVTX1NSQ19BTFBIQVxuICBibGVuZEVxdWF0aW9uOiBbMHg4MDA2LCAweDgwMDZdIC8vIEZVTkNfQUREXG59O1xuXG5jb25zdCBBVE1PU1BIRVJFX1NLWV9QQVJBTUVURVJTID0ge1xuICBjdWxsRmFjZTogMHgwNDA0LCAvLyBHTC5GUk9OVFxuICBkZXB0aE1hc2s6IGZhbHNlLFxuICBibGVuZEZ1bmM6IFsweDAzMDIsIDB4MDMwMywgMSwgMHgwMzAzXSxcbiAgYmxlbmRFcXVhdGlvbjogWzB4ODAwNiwgMHg4MDA2XVxufTtcblxuLyoqXG4gKiBTb2Z0LCBzdW4taW5kZXBlbmRlbnQgZ2xvdy4gUmFkaWkgYXJlIGluIGRlY2suZ2wgY29tbW9uIHNwYWNlXG4gKiAoR0xPQkVfQ09NTU9OX1JBRElVUyA9IDI1NjsgYXRtb3NwaGVyZSB1c2VzIH4yNTggYXMgYSBzbGlnaHQgZnVkZ2UpLlxuICogT3V0ZXIg4omIIDE0JSBsYXJnZXIgdGhhbiBpbm5lciBhdCByYWRpdXMgbXVsdGlwbGllciA9IDEgKG1hdGNoZXMgdGhlIGJhc2UgbWVzaCkuXG4gKi9cbmNvbnN0IEhVR0VfSEFMT19JTk5FUl9SQURJVVMgPSAyNTg7XG5jb25zdCBIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVMgPSAyOTQ7XG5jb25zdCBIVUdFX0hBTE9fQkFTRV9TSEVMTCA9IEhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUyAtIEhVR0VfSEFMT19JTk5FUl9SQURJVVM7XG4vKiogTWF0Y2hlcyB0aGUgSGFsbyBSYWRpdXMgc2xpZGVyIG1heDsgaGlnaGVyIHZhbHVlcyBjYW4gcHJvZHVjZSBhIGJsYWNrLWRpc2MgYXJ0aWZhY3QuICovXG5jb25zdCBIVUdFX0hBTE9fUkFESVVTX01BWCA9IDMuNTtcblxuY29uc3QgSFVHRV9IQUxPX1VOSUZPUk1TID0ge1xuICBmSW5uZXJSYWRpdXM6IEhVR0VfSEFMT19JTk5FUl9SQURJVVMsXG4gIC8vIFNvZnQgY3lhbiBtYXRjaGluZyB0aGUgcmVmZXJlbmNlIGh1Z2UtaGFsbyBsb29rLlxuICB2M0hhbG9Db2xvcjogWzAuNDUsIDAuNzIsIDEuMF0sXG4gIGZIYWxvSW50ZW5zaXR5OiAxLjBcbn07XG5cbmNvbnN0IEhVR0VfSEFMT19QQVJBTUVURVJTID0ge1xuICBjdWxsRmFjZTogMHgwNDA0LCAvLyBHTC5GUk9OVFxuICBkZXB0aE1hc2s6IGZhbHNlLFxuICAvLyBMYXJnZSBzaGVsbHMgb2Z0ZW4gZW5jbG9zZSB0aGUgY2FtZXJhOyBkaXNhYmxlIGRlcHRoIHNvIHRoZSByaW5nIHN0aWxsIGRyYXdzLlxuICBkZXB0aFRlc3Q6IGZhbHNlLFxuICBibGVuZEZ1bmM6IFsweDAzMDIsIDB4MDMwMywgMSwgMHgwMzAzXSwgLy8gU1JDX0FMUEhBLCBPTkVfTUlOVVNfU1JDX0FMUEhBXG4gIGJsZW5kRXF1YXRpb246IFsweDgwMDYsIDB4ODAwNl1cbn07XG5cbmZ1bmN0aW9uIHJlc29sdmVIdWdlSGFsb1JhZGl1cyhjb25maWc6IEdsb2JlQ29uZmlnKTogbnVtYmVyIHtcbiAgY29uc3QgbXVsdGlwbGllciA9IE51bWJlci5pc0Zpbml0ZShjb25maWcuaHVnZUhhbG9SYWRpdXMpXG4gICAgPyAoY29uZmlnLmh1Z2VIYWxvUmFkaXVzIGFzIG51bWJlcilcbiAgICA6IERFRkFVTFRfR0xPQkVfQ09ORklHLmh1Z2VIYWxvUmFkaXVzO1xuICAvLyBTY2FsZSBzaGVsbCB0aGlja25lc3M7IGtlZXAgb3V0ZXIgYWJvdmUgdGhlIHBsYW5ldCBzdXJmYWNlLlxuICByZXR1cm4gKFxuICAgIEhVR0VfSEFMT19JTk5FUl9SQURJVVMgK1xuICAgIEhVR0VfSEFMT19CQVNFX1NIRUxMICogTWF0aC5tYXgoTWF0aC5taW4obXVsdGlwbGllciwgSFVHRV9IQUxPX1JBRElVU19NQVgpLCAwLjA1KVxuICApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlSHVnZUhhbG9PcGFjaXR5KGNvbmZpZzogR2xvYmVDb25maWcpOiBudW1iZXIge1xuICBjb25zdCBvcGFjaXR5ID0gTnVtYmVyLmlzRmluaXRlKGNvbmZpZy5odWdlSGFsb09wYWNpdHkpXG4gICAgPyAoY29uZmlnLmh1Z2VIYWxvT3BhY2l0eSBhcyBudW1iZXIpXG4gICAgOiBERUZBVUxUX0dMT0JFX0NPTkZJRy5odWdlSGFsb09wYWNpdHk7XG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBvcGFjaXR5KSk7XG59XG5cbi8qKlxuICogVmlldy1pbmRlcGVuZGVudCBhdG1vc3BoZXJlOiBhIGxhcmdlIHVuaWZvcm0gZW1pc3NpdmUgYXVyYSBhcm91bmQgdGhlIGdsb2JlLlxuICogVW5saWtlIEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYywgdGhpcyBpZ25vcmVzIHN1biBkaXJlY3Rpb24gYW5kIHVzZXMgYVxuICogbGluZWFyIHJhZGlhbCBmYWxsb2ZmIHRocm91Z2ggYSB0aGljayBzaGVsbCAobWF4IGF0IHRoZSBzdXJmYWNlIOKGkiAwIGF0IG91dGVyIHJhZGl1cykuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdG1vc3BoZXJlSHVnZUhhbG9MYXllciBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIEF0bW9zcGhlcmVMYXllclByb3BzPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXInO1xuXG4gIGRyYXcoe3VuaWZvcm1zfToge3VuaWZvcm1zOiBvYmplY3R9KTogdm9pZCB7XG4gICAgY29uc3Qge2NvbmZpZywgem9vbUZhZGV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuc3RhdGUubW9kZWw7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICAobW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyA9IHtcbiAgICAgICAgLi4uKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIC4uLkhVR0VfSEFMT19VTklGT1JNUyxcbiAgICAgICAgZkhhbG9PcGFjaXR5OiByZXNvbHZlSHVnZUhhbG9PcGFjaXR5KGNvbmZpZyksXG4gICAgICAgIGZBdG1vc3BoZXJlWm9vbUZhZGU6IHpvb21GYWRlXG4gICAgICB9O1xuICAgIH1cbiAgICBzdXBlci5kcmF3KHt1bmlmb3Jtc30pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXRTaGFkZXJzKCksXG4gICAgICBpbmplY3Q6IHtcbiAgICAgICAgJ2ZzOiNkZWNsJzogYFxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZklubmVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gdmVjMyB2M0hhbG9Db2xvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZIYWxvSW50ZW5zaXR5O1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkhhbG9PcGFjaXR5O1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOiNtYWluLWVuZCc6IGBcbiAgICAgICAgICB2ZWMzIHYzQ2FtZXJhUG9zID0gY2FtZXJhUG9zaXRpb247XG4gICAgICAgICAgdmVjMyB2M1BvcyA9IHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5ejtcbiAgICAgICAgICAvLyBPdXRlciByYWRpdXMgZnJvbSB0aGUgYWN0dWFsIG1lc2ggdmVydGV4IHNvIHNpemVTY2FsZSBzdGF5cyBpbiBzeW5jLlxuICAgICAgICAgIGZsb2F0IGZPdXRlclJhZGl1cyA9IGxlbmd0aCh2M1Bvcyk7XG4gICAgICAgICAgdmVjMyB2M1JheSA9IG5vcm1hbGl6ZSh2M1BvcyAtIHYzQ2FtZXJhUG9zKTtcblxuICAgICAgICAgIC8vIEltcGFjdCBwYXJhbWV0ZXIgb2YgdGhlIHZpZXcgcmF5IChwZXJwZW5kaWN1bGFyIGRpc3RhbmNlIGZyb20gZ2xvYmVcbiAgICAgICAgICAvLyBjZW50ZXIgdG8gdGhlIHJheSkuIFN0YWJsZSB3aGVuIHRoZSBjYW1lcmEgaXMgaW5zaWRlIHRoZSBvdXRlciBzaGVsbCxcbiAgICAgICAgICAvLyB1bmxpa2UgbmVhci9mYXIgc3BoZXJlLWludGVyc2VjdGlvbiBtYXRoIHdoaWNoIGJyZWFrcyBpbiB0aGF0IGNhc2VcbiAgICAgICAgICAvLyBhbmQgcHJvZHVjZWQgYSBibGFjayBkaXNjIGF0IGhpZ2ggcmFkaXVzIG11bHRpcGxpZXJzLlxuICAgICAgICAgIGZsb2F0IGZETWluID0gbGVuZ3RoKGNyb3NzKHYzQ2FtZXJhUG9zLCB2M1JheSkpO1xuXG4gICAgICAgICAgLy8gTGluZWFyIGZhbGxvZmYgaW4gdGhlIGFubnVsdXMgb25seTogbWF4IGF0IHRoZSBzdXJmYWNlLCB6ZXJvIGF0IG91dGVyLlxuICAgICAgICAgIGZsb2F0IGZTaGVsbCA9IG1heChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMsIDAuMDAwMSk7XG4gICAgICAgICAgZmxvYXQgZkdsb3cgPSAwLjA7XG4gICAgICAgICAgaWYgKGZETWluID49IGZJbm5lclJhZGl1cyAmJiBmRE1pbiA8IGZPdXRlclJhZGl1cykge1xuICAgICAgICAgICAgZmxvYXQgdCA9IChmRE1pbiAtIGZJbm5lclJhZGl1cykgLyBmU2hlbGw7XG4gICAgICAgICAgICBmR2xvdyA9IDEuMCAtIHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZkdsb3cgKj0gZkhhbG9JbnRlbnNpdHk7XG5cbiAgICAgICAgICAvLyBTdHJhaWdodCBhbHBoYSAobm90IHByZW11bHRpcGxpZWQpIGZvciBTUkNfQUxQSEEgYmxlbmRpbmcuXG4gICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNCh2M0hhbG9Db2xvciwgZkdsb3cgKiBmSGFsb09wYWNpdHkpO1xuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG4gICAgICAgIGAsXG4gICAgICAgICdmczpERUNLR0xfRklMVEVSX0NPTE9SJzogYGBcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iZUF0bW9zcGhlcmVMYXllciA9ICh7Y29uZmlnLCB6b29tfToge2NvbmZpZzogR2xvYmVDb25maWc7IHpvb20/OiBudW1iZXJ9KSA9PiB7XG4gIGNvbnN0IHpvb21GYWRlID0gYXRtb3NwaGVyZVpvb21GYWRlKHpvb20gPz8gMCk7XG4gIHJldHVybiBuZXcgQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljKHtcbiAgICBpZDogJ2F0bW9zcGhlcmUnLFxuICAgIGRhdGE6IFtbMCwgMCwgMF1dLFxuICAgIGNvbmZpZyxcbiAgICB6b29tRmFkZSxcbiAgICBjb29yZGluYXRlT3JpZ2luOiBbMCwgMCwgMF0sXG4gICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgIGdldFBvc2l0aW9uOiAoKGQ6IG51bWJlcltdKSA9PiBkKSBhcyBhbnksXG4gICAgZ2V0Q29sb3I6IFswLCAwLCAwXSxcbiAgICBtZXNoOiBHTE9CRV9NRVNIX0lOTkVSLFxuICAgIHBhcmFtZXRlcnM6IEFUTU9TUEhFUkVfUEFSQU1FVEVSU1xuICB9KTtcbn07XG5cbi8qKiBSZWFsaXN0aWMgc3VuLWxpdCBzY2F0dGVyaW5nIHNreSBoYWxvICh0aGluIGxpbWIgZ2xvdykuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIgPSAoe1xuICBjb25maWcsXG4gIHpvb21cbn06IHtcbiAgY29uZmlnOiBHbG9iZUNvbmZpZztcbiAgem9vbT86IG51bWJlcjtcbn0pID0+IHtcbiAgY29uc3Qgem9vbUZhZGUgPSBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbSA/PyAwKTtcbiAgcmV0dXJuIG5ldyBBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMoe1xuICAgIGlkOiAnYXRtb3NwaGVyZS1za3knLFxuICAgIGRhdGE6IFtbMCwgMCwgMF1dLFxuICAgIGNvbmZpZyxcbiAgICB6b29tRmFkZSxcbiAgICBjb29yZGluYXRlT3JpZ2luOiBbMCwgMCwgMF0sXG4gICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgIGdldFBvc2l0aW9uOiAoKGQ6IG51bWJlcltdKSA9PiBkKSBhcyBhbnksXG4gICAgZ2V0Q29sb3I6IFswLCAwLCAwXSxcbiAgICBtZXNoOiBHTE9CRV9NRVNIX09VVEVSLFxuICAgIHBhcmFtZXRlcnM6IEFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuXG4vKipcbiAqIExhcmdlIHVuaWZvcm0gZ2xvdyBkcmF3biBpbiBhZGRpdGlvbiB0byB0aGUgcmVhbGlzdGljIHNreSBoYWxvIHdoZW5cbiAqIGBjb25maWcuaHVnZUhhbG9gIGlzIGVuYWJsZWQuIFJldHVybnMgbnVsbCB3aGVuIGRpc2FibGVkLlxuICovXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVIdWdlSGFsb0xheWVyID0gKHtjb25maWcsIHpvb219OiB7Y29uZmlnOiBHbG9iZUNvbmZpZzsgem9vbT86IG51bWJlcn0pID0+IHtcbiAgaWYgKCFjb25maWcuaHVnZUhhbG8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB6b29tRmFkZSA9IGF0bW9zcGhlcmVab29tRmFkZSh6b29tID8/IDApO1xuICBjb25zdCBvdXRlclJhZGl1cyA9IHJlc29sdmVIdWdlSGFsb1JhZGl1cyhjb25maWcpO1xuICAvLyBLZWVwIG1lc2ggZXh0ZW50IGluIHN5bmMgd2l0aCB0aGUgZGVzaXJlZCBvdXRlciByYWRpdXMgKGJhc2UgbWVzaCA9IGRlZmF1bHQgb3V0ZXIpLlxuICBjb25zdCBzaXplU2NhbGUgPSBvdXRlclJhZGl1cyAvIEhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUztcbiAgcmV0dXJuIG5ldyBBdG1vc3BoZXJlSHVnZUhhbG9MYXllcih7XG4gICAgaWQ6ICdhdG1vc3BoZXJlLWh1Z2UtaGFsbycsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29uZmlnLFxuICAgIHpvb21GYWRlLFxuICAgIGNvb3JkaW5hdGVPcmlnaW46IFswLCAwLCAwXSxcbiAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgZ2V0UG9zaXRpb246ICgoZDogbnVtYmVyW10pID0+IGQpIGFzIGFueSxcbiAgICBnZXRDb2xvcjogWzAsIDAsIDBdLFxuICAgIG1lc2g6IEdMT0JFX01FU0hfSFVHRV9IQUxPLFxuICAgIHNpemVTY2FsZSxcbiAgICBwYXJhbWV0ZXJzOiBIVUdFX0hBTE9fUEFSQU1FVEVSU1xuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFBNEUsU0FBQU0sUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFk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
|
|
@@ -571,4 +571,4 @@ var getGlobeTopLayers = exports.getGlobeTopLayers = function getGlobeTopLayers(_
|
|
|
571
571
|
zoom: zoom
|
|
572
572
|
}) : null].filter(Boolean);
|
|
573
573
|
};
|
|
574
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb0xheWVycyIsIl9hdG1vc3BoZXJlTGF5ZXIiLCJfZ2xvYmVEZXB0aERpc2tMYXllciIsIl9tdnRMYWJlbExheWVyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJCQUNLR1JPVU5EX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJjdWxsIiwiZGVwdGhNYXNrIiwiQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSUyIsIkJBQ0tHUk9VTkRfREFUQSIsIkJBQ0tHUk9VTkRfTk9SVEhfUE9MRV9EQVRBIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiZXhwb3J0cyIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiem9vbSIsImlzU2F0ZWxsaXRlU3RyZWV0IiwibGF0Wm9vbUNvbXBlbnNhdGlvbiIsInVzZUNhcnRvIiwiaGFzVGlsZUFjY2VzcyIsIkJvb2xlYW4iLCJhdG1vc3BoZXJlIiwiZ2V0R2xvYmVIdWdlSGFsb0xheWVyIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiZmlsbENvbG9yIiwic3VyZmFjZUNvbG9yIiwiU29saWRQb2x5Z29uTGF5ZXIiLCJkYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJmaWxsZWQiLCJnZXRGaWxsQ29sb3IiLCJwYXJhbWV0ZXJzIiwid2F0ZXIiLCJ3YXRlckNvbG9yIiwiVGlsZUxheWVyIiwiY29uY2F0IiwibWluWm9vbSIsIm1heFpvb20iLCJ6b29tT2Zmc2V0IiwiZXh0ZW50IiwidGlsZVNpemUiLCJyZW5kZXJTdWJMYXllcnMiLCJwcm9wcyIsIl9wcm9wcyR0aWxlJGJib3giLCJ0aWxlIiwiYmJveCIsIndlc3QiLCJzb3V0aCIsImVhc3QiLCJub3J0aCIsIkJpdG1hcExheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiQ0FSVEVTSUFOIiwiaW1hZ2UiLCJib3VuZHMiLCJNVlRMYXllciIsImJpbmFyeSIsImxvYWRPcHRpb25zIiwibXZ0IiwiTVZUTGFiZWxMYXllciIsImYiLCJwcm9wZXJ0aWVzIiwiZ2V0TGluZUNvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsImdldExpbmVXaWR0aCIsImFkbWluX2xldmVsIiwidXBkYXRlVHJpZ2dlcnMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImdldFBvaW50UmFkaXVzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJnZXRHbG9iZVRvcExheWVycyIsIl9yZWYzIiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtbGF5ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIExheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXIsIEJpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtUaWxlTGF5ZXIsIE1WVExheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcblxuaW1wb3J0IHR5cGUge0dsb2JlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7UkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dldEdsb2JlQXRtb3NwaGVyZUxheWVyLCBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllciwgZ2V0R2xvYmVIdWdlSGFsb0xheWVyfSBmcm9tICcuL2F0bW9zcGhlcmUtbGF5ZXInO1xuaW1wb3J0IHtnZXRHbG9iZURlcHRoRGlza0xheWVyfSBmcm9tICcuL2dsb2JlLWRlcHRoLWRpc2stbGF5ZXInO1xuaW1wb3J0IHtNVlRMYWJlbExheWVyfSBmcm9tICcuL212dC1sYWJlbC1sYXllcic7XG5cbnR5cGUgTGF5ZXJHcm91cCA9IHtzbHVnOiBzdHJpbmc7IGZpbHRlcjogKGxheWVyOiBhbnkpID0+IGJvb2xlYW59O1xuXG5jb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gTWF0aC5taW4oXG4gIDIsXG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMVxuKTtcblxuY29uc3QgQkFDS0dST1VORF9QQVJBTUVURVJTID0ge1xuICBkZXB0aFRlc3Q6IHRydWUsXG4gIGN1bGw6IHRydWUsXG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBU0VNQVBfUkFTVEVSX1BBUkFNRVRFUlMgPSB7XG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBQ0tHUk9VTkRfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgLTkwXSxcbiAgICBbMCwgLTkwXSxcbiAgICBbLTE4MCwgLTkwXVxuICBdXG5dO1xuXG5jb25zdCBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgODVdLFxuICAgIFswLCA4NV0sXG4gICAgWy0xODAsIDg1XVxuICBdXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQVNFTUFQX0NPTE9SID0ge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbOSwgMTYsIDI5XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcERlZmF1bHRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTcsIDM1LCA0OF0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0TGluZUNvbG9yOiBbNDAsIDYzLCA5M10gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwTGFiZWxDb2xvcjogWzExNC43NSwgMTE0Ljc1LCAxMTQuNzVdIGFzIFJHQkNvbG9yXG59O1xuXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpICYmIGNvbG9yWzBdID09PSAnaW50ZXJwb2xhdGUnKSB7XG4gICAgcmV0dXJuIGNvbG9yWzRdO1xuICB9XG4gIHJldHVybiBjb2xvcjtcbn1cblxuZnVuY3Rpb24gY29sb3JTdHJpbmdUb1JHQihjb2xvcjogc3RyaW5nIHwgbnVsbCk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGlmICghY29sb3IpIHJldHVybiBudWxsO1xuICBpZiAodHlwZW9mIGNvbG9yICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG5cbiAgLy8gSGFuZGxlIGhzbCgpIGZvcm1hdFxuICBjb25zdCBoc2xNYXRjaCA9IGNvbG9yLm1hdGNoKC9oc2xcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspJVxccyosXFxzKihcXGQrKSVcXHMqXFwpLyk7XG4gIGlmIChoc2xNYXRjaCkge1xuICAgIGNvbnN0IGggPSBwYXJzZUludChoc2xNYXRjaFsxXSwgMTApIC8gMzYwO1xuICAgIGNvbnN0IHMgPSBwYXJzZUludChoc2xNYXRjaFsyXSwgMTApIC8gMTAwO1xuICAgIGNvbnN0IGwgPSBwYXJzZUludChoc2xNYXRjaFszXSwgMTApIC8gMTAwO1xuICAgIC8vIEhTTCB0byBSR0IgY29udmVyc2lvblxuICAgIGxldCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyO1xuICAgIGlmIChzID09PSAwKSB7XG4gICAgICByID0gZyA9IGIgPSBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBodWUycmdiID0gKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgICAgICBpZiAodCA8IDEgLyA2KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICAgICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgICB9O1xuICAgICAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7XG4gICAgICBjb25zdCBwID0gMiAqIGwgLSBxO1xuICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgIGcgPSBodWUycmdiKHAsIHEsIGgpO1xuICAgICAgYiA9IGh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcbiAgICB9XG4gICAgcmV0dXJuIFtNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIC8vIEhhbmRsZSByZ2IoKSBmb3JtYXRcbiAgY29uc3QgcmdiTWF0Y2ggPSBjb2xvci5tYXRjaCgvcmdiXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkvKTtcbiAgaWYgKHJnYk1hdGNoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzFdLCAxMCksXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsyXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbM10sIDEwKVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgaGV4IGZvcm1hdFxuICBjb25zdCBoZXhNYXRjaCA9IGNvbG9yLm1hdGNoKC9eIyhbMC05YS1mXXs2fSkkL2kpO1xuICBpZiAoaGV4TWF0Y2gpIHtcbiAgICBjb25zdCBoZXggPSBoZXhNYXRjaFsxXTtcbiAgICByZXR1cm4gW1xuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDAsIDIpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoMiwgNCksIDE2KSxcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSg0LCA2KSwgMTYpXG4gICAgXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBmaW5kRmlyc3RMYXllckJ5R3JvdXAobGF5ZXJzOiBhbnlbXSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSwgZ3JvdXBTbHVnOiBzdHJpbmcpIHtcbiAgY29uc3QgbGF5ZXJHcm91cCA9IGxheWVyR3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuc2x1ZyA9PT0gZ3JvdXBTbHVnKTtcbiAgaWYgKCFsYXllckdyb3VwKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGxheWVycy5maW5kKGxheWVyID0+IGxheWVyR3JvdXAuZmlsdGVyKGxheWVyKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRCYWNrZ3JvdW5kQ29sb3Ioc3R5bGU6IGFueSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGxldCBmb3VuZCA9IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICdiYWNrZ3JvdW5kJyB8fCBsLmlkID09PSAnbGFuZCcpO1xuICBmb3VuZCA9IGZvdW5kIHx8IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwudHlwZSA9PT0gJ2JhY2tncm91bmQnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoZ2V0UGFpbnRDb2xvcihmb3VuZD8ucGFpbnQ/LlsnYmFja2dyb3VuZC1jb2xvciddKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXYXRlckNvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBjb25zdCBmb3VuZCA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGw6IGFueSkgPT4gbC5pZCA9PT0gJ3dhdGVyJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ3dhdGVyJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGZvdW5kPy5wYWludD8uWydmaWxsLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kQWRtaW5Db2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgYm9yZGVyTGF5ZXJzID1cbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2FkbWluLTMtNC1ib3VuZGFyaWVzJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2JvcmRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihib3JkZXJMYXllcnM/LnBhaW50Py5bJ2xpbmUtY29sb3InXSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRMYWJlbENvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgbGFiZWxMYXllciA9IHN0eWxlLmxheWVycy5maW5kKFxuICAgIChseXI6IGFueSkgPT4gbHlyLmlkID09PSAnY291bnRyeS1sYWJlbC1sZycgJiYgbHlyLnR5cGUgPT09ICdzeW1ib2wnXG4gICk7XG4gIGxhYmVsTGF5ZXIgPVxuICAgIGxhYmVsTGF5ZXIgfHxcbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJyk7XG4gIGxhYmVsTGF5ZXIgPSBsYWJlbExheWVyIHx8IGZpbmRGaXJzdExheWVyQnlHcm91cChzdHlsZS5sYXllcnMsIGxheWVyR3JvdXBzLCAnbGFiZWwnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IobGFiZWxMYXllcj8ucGFpbnQ/LlsndGV4dC1jb2xvciddKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnMgPSAoXG4gIG1hcFN0eWxlOiBQYXJ0aWFsPHtzdHlsZTogYW55OyBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfT5cbik6IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbn0gPT4ge1xuICBjb25zdCB7c3R5bGU6IHN0eWxlSnNvbiA9IHtsYXllcnM6IFtdfSwgbGF5ZXJHcm91cHMgPSBbXX0gPSBtYXBTdHlsZTtcblxuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6XG4gICAgICBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlSnNvbikgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOlxuICAgICAgZmluZFdhdGVyQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6XG4gICAgICBmaW5kQWRtaW5Db2xvcihzdHlsZUpzb24sIGxheWVyR3JvdXBzKSA/PyBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOlxuICAgICAgZmluZExhYmVsQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vLyBQcmVkZWZpbmVkIGNvbG9yIHNjaGVtZXMgZm9yIHdlbGwta25vd24gYmFzZW1hcCBzdHlsZXNcbmNvbnN0IEtOT1dOX1NUWUxFX0NPTE9SUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xuICB9XG4+ID0ge1xuICBkYXJrOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzE1LCAxNSwgMTVdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzEwLCAyMCwgMzVdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzYwLCA2MCwgODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbMTUwLCAxNTAsIDE1MF1cbiAgfSxcbiAgJ2RhcmstbWF0dGVyJzoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxOCwgMTgsIDE4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNCwgMTksIDI5XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1MCwgNTAsIDYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzEzMCwgMTMwLCAxMzBdXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNSwgMjMzLCAyMjhdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTc1LCAxNzBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbODAsIDgwLCA4MF1cbiAgfSxcbiAgcG9zaXRyb246IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjQyLCAyMzksIDIzM10sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTc0LCAyMDksIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTkwLCAxODUsIDE4MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICB2b3lhZ2VyOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNCwgMjI5LCAyMjBdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTcwLCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbNzAsIDcwLCA3MF1cbiAgfSxcbiAgbXV0ZWQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjI1LCAyMjUsIDIxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTgwLCAyMTAsIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTcwLCAxNjUsIDE2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICBtdXRlZF9uaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMiwgMjYsIDMwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNSwgMjUsIDQwXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1NSwgNjAsIDcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE0MCwgMTQwLCAxNDBdXG4gIH1cbn07XG5cbi8qKlxuICogR2V0IGJhc2VtYXAgY29sb3JzIGVpdGhlciBmcm9tIHRoZSBzdHlsZSBKU09OIG9yIGZyb20ga25vd24gc3R5bGUgcHJlc2V0cy5cbiAqIEZhbGxzIGJhY2sgdG8gZGVmYXVsdCBkYXJrIGNvbG9ycyBpZiBzdHlsZSBpcyB1bmtub3duIGFuZCBubyBKU09OIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSA9IChcbiAgc3R5bGVUeXBlOiBzdHJpbmcsXG4gIG1hcFN0eWxlPzogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgLy8gVHJ5IHRvIGV4dHJhY3QgZnJvbSBzdHlsZSBKU09OIGZpcnN0XG4gIGlmIChtYXBTdHlsZT8uc3R5bGU/LmxheWVycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldEJhc2VtYXBDb2xvcnMobWFwU3R5bGUpO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byBrbm93biBzdHlsZSBwcmVzZXRzXG4gIGlmIChLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXSkge1xuICAgIHJldHVybiBLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXTtcbiAgfVxuICAvLyBEZWZhdWx0IGRhcmsgY29sb3JzXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vKipcbiAqIENsZWFyIGNvbG9yIChiYWNrZ3JvdW5kIGFyb3VuZCB0aGUgZ2xvYmUpIGZvciBnbG9iZSBtb2RlLCBpbiBSR0JBIDAtMjU1IGFzXG4gKiBleHBlY3RlZCBieSBkZWNrLmdsJ3MgVmlldyBgY2xlYXJDb2xvcmAgcHJvcCAoZGVjay5nbCA+PSA5IG5vIGxvbmdlciBzdXBwb3J0c1xuICogdGhlIGdsb2JhbCBgcGFyYW1ldGVycy5jbGVhckNvbG9yYDsgaXQgbXVzdCBiZSBzZXQgcGVyLXZpZXcgd2l0aCBgY2xlYXI6IHRydWVgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JlQ2xlYXJDb2xvcihcbiAgYmFja2dyb3VuZENvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyW11cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgIHJldHVybiBbYmFja2dyb3VuZENvbG9yWzBdLCBiYWNrZ3JvdW5kQ29sb3JbMV0sIGJhY2tncm91bmRDb2xvclsyXSwgMjU1XTtcbiAgfVxuICAvLyBEZWZhdWx0IG1hdGNoZXMgdGhlIHByZXZpb3VzIGhhcmRjb2RlZCBjbGVhciBjb2xvciBbMC4wMTUsIDAuMDM1LCAwLjA2NV0gaW4gMC0xIHNwYWNlLlxuICByZXR1cm4gWzQsIDksIDE3LCAyNTVdO1xufVxuXG5jb25zdCBJTlZJU0lCTEVfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDAsIDBdO1xuXG5jb25zdCBCQVNFTUFQX01WVF9QQVJBTUVURVJTID0ge1xuICAvLyBPY2NsdWRlIHRoZSBmYXIgc2lkZSBvZiB0aGUgZ2xvYmUgdmlhIHRoZSBERVBUSCBESVNLIChnZXRHbG9iZURlcHRoRGlza0xheWVyKVxuICAvLyByYXRoZXIgdGhhbiBiYWNrLWZhY2UgY3VsbGluZy4gR2xvYmUgbW9kZSBzZXRzIGEgZ2xvYmFsIGBjdWxsOiB0cnVlYCBmb3IgdGhlXG4gIC8vIG9wYXF1ZSBzcGhlcmUgc3VyZmFjZSwgYnV0IGJhY2stZmFjZSBjdWxsaW5nIHJlbGllcyBvbiBzdGFibGUgdHJpYW5nbGVcbiAgLy8gd2luZGluZyDigJQgYW5kIGRlY2suZ2wgOSdzIGdsb2JlIHByb2plY3Rpb24gbG9zZXMgcHJlY2lzaW9uIGF0IGhpZ2ggem9vbVxuICAvLyAoZmxvYXQzMiksIGZsaXBwaW5nIHRoZSB3aW5kaW5nIG9mIHRoZSBzbWFsbCBhZG1pbi93YXRlciB0cmlhbmdsZXMgc28gdGhleVxuICAvLyBnZXQgd3JvbmdseSBjdWxsZWQgYW5kIHRoZSBnZW9tZXRyeSB2YW5pc2hlcyBwYXN0IH56b29tIDEyICh5b3UgdGhlbiBzZWVcbiAgLy8gdGhyb3VnaCB0byB0aGUgZmFyIHNpZGUgLyBcImRpZmZlcmVudCBnZW9tZXRyeVwiKS4gRGVwdGggdGVzdGluZyBhZ2FpbnN0IHRoZSBkaXNrXG4gIC8vIGlzIGEgcHJlY2lzaW9uLXJvYnVzdCBvY2NsdWRlciB0aGF0IHdvcmtzIGF0IGFueSB6b29tLCBzbzpcbiAgLy8gICAtIGN1bGw6IGZhbHNlICAgICDihpIgZG9uJ3Qgd2luZGluZy1jdWxsIHRoZSBuZWFyLXNpZGUgZ2VvbWV0cnlcbiAgLy8gICAtIGRlcHRoVGVzdDogdHJ1ZSDihpIgZmFyLXNpZGUgZ2VvbWV0cnkgKGJlaGluZCB0aGUgZGlzaykgZmFpbHMgZGVwdGgsIGhpZGRlblxuICAvLyAgIC0gZGVwdGhNYXNrOiBmYWxzZSDihpIgZG9uJ3Qgd3JpdGUgZGVwdGggKGF2b2lkIHNlbGYgei1maWdodGluZyBvbiB0aGUgc2hlbGwpXG4gIC8vIFJhc3RlciB0aWxlcyBhcmUgdW5hZmZlY3RlZCAodGhlaXIgNC1jb3JuZXIgcXVhZHMga2VlcCBzdGFibGUgd2luZGluZyksIHdoaWNoXG4gIC8vIGlzIHdoeSBzYXRlbGxpdGUgYWxyZWFkeSB6b29tcyB0byBtYXggY2xlYW5seS4gTGFiZWxzIGRpc2FibGUgY3VsbCBmb3IgdGhlXG4gIC8vIHNhbWUgcmVhc29uIChzZWUgbXZ0LWxhYmVsLWxheWVyLnRzKS5cbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlLFxuICBjdWxsOiBmYWxzZVxufTtcblxuLy8gZGVjay5nbCA5J3MgZ2xvYmUgc2VsZWN0cyBmaW5lciB0aWxlcyB0aGFuIG5lZWRlZCBmb3IgYSBnaXZlbiB2aWV3IChpdHNcbi8vIEdsb2JlVmlld3BvcnQgc2NhbGUgaXMgfjN4IHNtYWxsZXIgdGhhbiB0aGUgZXF1aXZhbGVudCBtZXJjYXRvciB6b29tKSwgc28gYmlhc1xuLy8gdmVjdG9yIHRpbGUgc2VsZWN0aW9uIGNvYXJzZXIgdG8ga2VlcCB0aGUgdGlsZSBjb3VudCDigJQgYW5kIHRodXMgcGVyZm9ybWFuY2Ug4oCUXG4vLyBpbiBjaGVjay4gVGhpcyB0cmFkZXMgYSBsaXR0bGUgZGV0YWlsIGZvciBmYXIgZmV3ZXIgdGlsZXM7IG1ha2UgaXQgbGVzcyBuZWdhdGl2ZVxuLy8gKHRvd2FyZCAwKSBmb3Igc2hhcnBlciBkZXRhaWwsIG9yIG1vcmUgbmVnYXRpdmUgZm9yIG1vcmUgcGVyZi5cbi8vIFRoZXNlIGFyZSAqYmFzZSogb2Zmc2V0czogZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24gaXMgYWRkZWQgb24gdG9wIGF0IGRyYXdcbi8vIHRpbWUsIHNvIHRoZSBlZmZlY3RpdmUgem9vbU9mZnNldCBvbmx5IGVxdWFscyB0aGVzZSBleGFjdCB2YWx1ZXMgYXQgdGhlIGVxdWF0b3IuXG4vLyBTYXRlbGxpdGUgcmFzdGVyIHVzZXMgYmFzZSAwIOKAlCBpdCBkb2Vzbid0IG5lZWQgdGhlIHZlY3RvciBiaWFzIChhIGNvYXJzZXIgcmFzdGVyXG4vLyB0aWxlIGp1c3QgbG9va3Mgc29mdGVyIHJhdGhlciB0aGFuIGRyb3BwaW5nIGZlYXR1cmVzKS5cbmNvbnN0IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA9IC0yO1xuY29uc3QgR0xPQkVfU0FURUxMSVRFX1pPT01fT0ZGU0VUID0gMDtcblxuLy8gV2hvbGUtd29ybGQgdGlsZSBleHRlbnQgKFdlYiBNZXJjYXRvciBsYXRpdHVkZSBsaW1pdCkuIFJlcXVpcmVkIHdoZW5ldmVyIGFcbi8vIG5lZ2F0aXZlIGB6b29tT2Zmc2V0YCBpcyB1c2VkOiBkZWNrJ3MgYGdldFRpbGVJbmRpY2VzYCByZXR1cm5zIE5PIHRpbGVzIHdoZW5cbi8vIHRoZSB0YXJnZXQgem9vbSBkcm9wcyBiZWxvdyBgbWluWm9vbWAgKnVubGVzcyogYW4gYGV4dGVudGAgaXMgc2V0IChpbiB3aGljaFxuLy8gY2FzZSBpdCBjbGFtcHMgdG8gYG1pblpvb21gIGluc3RlYWQpLiBXaXRob3V0IHRoaXMsIHpvb21pbmcgb3V0IG9yIHBhbm5pbmdcbi8vIHRvd2FyZCB0aGUgcG9sZXMgKHdoZXJlIGRlY2sgOSdzIGdsb2JlIGNvbnRyb2xsZXIgbG93ZXJzIHRoZSBlZmZlY3RpdmUgem9vbSlcbi8vIG1ha2VzIHRoZSB3aG9sZSBnbG9iZSBiYXNlbWFwIGRpc2FwcGVhci5cbmNvbnN0IEdMT0JFX1RJTEVfRVhURU5UOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFtcbiAgLTE4MCwgLTg1LjA1MTEyOSwgMTgwLCA4NS4wNTExMjlcbl07XG5cbi8vIE1heCAqbmF0aXZlKiB6b29tIG9mIGVhY2ggdmVjdG9yIHRpbGUgc291cmNlLiBTZXQgdGhpcyAobm90IGFuIGFyYml0cmFyaWx5XG4vLyBoaWdoIG51bWJlcikgc28gZGVjayBvdmVyem9vbXMg4oCUIGkuZS4ga2VlcHMgcmVuZGVyaW5nIHRoZSBkZWVwZXN0IHJlYWwgdGlsZVxuLy8gd2hlbiB0aGUgdmlldyB6b29tcyBwYXN0IGl0IOKAlCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGlsZXMgdGhhdCBkb24ndCBleGlzdFxuLy8gYW5kIDQwNCAod2hpY2ggc2hvd3MgdXAgYXMgZW1wdHkgcmVjdGFuZ2xlcykuIFRoZSByYXcgYC52ZWN0b3IucGJmYCAvYC5tdnRgXG4vLyBlbmRwb2ludHMgZG8gTk9UIGF1dG8tb3Zlcnpvb20gdGhlIHdheSBNYXBib3ggR0wgZG9lcy5cbi8vICAgLSBtYXBib3gtc3RyZWV0cy12OCBoYXMgZGF0YSB1cCB0byB6MTZcbi8vICAgLSBDQVJUTyBjYXJ0by5zdHJlZXRzIHYxIGhhcyBkYXRhIHVwIHRvIHoxNFxuY29uc3QgTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NID0gMTY7XG5jb25zdCBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE0O1xuXG4vKipcbiAqIGRlY2suZ2wgOSdzIGdsb2JlIGNvdXBsZXMgem9vbSB0byBsYXRpdHVkZSB2aWEgYHpvb21BZGp1c3RgIChzZWVcbiAqIGdsb2JlLXZpZXdwb3J0LmpzKTogYHNjYWxlID0gMl4oem9vbSAtIHpvb21BZGp1c3QobGF0KSlgLCBhbmQgaXRzIGNvbnRyb2xsZXJcbiAqICpsb3dlcnMqIHRoZSBzdG9yZWQgYHpvb21gIGFzIHlvdSBwYW4gdG93YXJkIHRoZSBwb2xlcyB0byBrZWVwIHRoZSBnbG9iZSdzXG4gKiBvbi1zY3JlZW4gc2l6ZSBjb25zdGFudC4gVGlsZSBMT0QsIGhvd2V2ZXIsIGlzIHNlbGVjdGVkIGZyb20gdGhlIHJhdyBgem9vbWAsXG4gKiBzbyByb3RhdGluZyB0b3dhcmQgYSBwb2xlIHNpbGVudGx5IGRyb3BzIHRoZSBMT0QgYW5kIHRoaW5zIG91dCBsYWJlbHMuXG4gKiBSZXBsaWNhdGVkIGZyb20gYEBkZWNrLmdsL2NvcmVgIGdsb2JlLXZpZXdwb3J0LmpzIGB6b29tQWRqdXN0YC5cbiAqL1xuZnVuY3Rpb24gem9vbUFkanVzdChsYXRpdHVkZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubG9nMihNYXRoLlBJICogTWF0aC5jb3MoKGxhdGl0dWRlICogTWF0aC5QSSkgLyAxODApKTtcbn1cblxuLyoqXG4gKiBMYXRpdHVkZSBjb21wZW5zYXRpb24gdG8gYWRkIHRvIGEgZ2xvYmUgdGlsZSBsYXllcidzIGB6b29tT2Zmc2V0YCwgc28gdGlsZSBMT0RcbiAqIHRyYWNrcyB0aGUgKnZpc3VhbCogKG9uLXNjcmVlbikgc2NhbGUgaW5zdGVhZCBvZiB0aGUgbGF0aXR1ZGUtYWRqdXN0ZWQgbWVyY2F0b3JcbiAqIHpvb20uIFRoaXMgY2FuY2VscyB0aGUgcGFuLWluZHVjZWQgem9vbSBkcm9wLCBrZWVwaW5nIHRpbGUgZGV0YWlsL2xhYmVsc1xuICogY29uc3RhbnQgd2hpbGUgcm90YXRpbmcgdG93YXJkIHRoZSBwb2xlcy5cbiAqL1xuZnVuY3Rpb24gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGU/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobGF0aXR1ZGUgPT0gbnVsbCB8fCAhTnVtYmVyLmlzRmluaXRlKGxhdGl0dWRlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIENsYW1wIGF3YXkgZnJvbSB0aGUgcG9sZXMgdG8gYXZvaWQgbG9nMigwKSA9IC1JbmZpbml0eSBhdCB8bGF0fCA9IDkwLlxuICBjb25zdCBjbGFtcGVkID0gTWF0aC5tYXgoLTg1LCBNYXRoLm1pbig4NSwgbGF0aXR1ZGUpKTtcbiAgcmV0dXJuIHpvb21BZGp1c3QoMCkgLSB6b29tQWRqdXN0KGNsYW1wZWQpO1xufVxuXG4vKipcbiAqIEdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlci5cbiAqXG4gKiAtIGBtYXBib3hgIHVzZXMgTWFwYm94IHZlY3Rvci9yYXN0ZXIgdGlsZXMgYW5kIHJlcXVpcmVzIGFuIGFjY2VzcyB0b2tlbi5cbiAqIC0gYGNhcnRvYCB1c2VzIENBUlRPJ3MgZnJlZSBPcGVuTWFwVGlsZXMgdmVjdG9yIHRpbGVzICsgRXNyaSBXb3JsZCBJbWFnZXJ5XG4gKiAgIHJhc3RlciwgYW5kIG5lZWRzIG5vIHRva2VuLiBVc2VkIGFzIGFuIGF1dG9tYXRpYyBmYWxsYmFjayB3aGVuIG5vIE1hcGJveFxuICogICB0b2tlbiBpcyBhdmFpbGFibGUgKGUuZy4gTWFwTGlicmUgLyBDQVJUTyBiYXNlbWFwIHNldHVwcyksIHNvIHRoZSBnbG9iZVxuICogICBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgc29saWQtY29sb3Igc3BoZXJlLlxuICovXG5leHBvcnQgdHlwZSBHbG9iZUJhc2VtYXBQcm92aWRlciA9ICdtYXBib3gnIHwgJ2NhcnRvJztcblxuLyoqXG4gKiBSZXNvbHZlIHdoaWNoIGdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlciB0byB1c2UuXG4gKlxuICogVGhlIGdsb2JlIHNob3VsZCBmb2xsb3cgdGhlICpzZWxlY3RlZCBiYXNlbWFwIHN0eWxlJ3MqIHJlbmRlcmluZyBsaWJyYXJ5IHNvXG4gKiBpdCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGZsYXQgMkQgbWFwOiBhIE1hcExpYnJlL0NBUlRPIHN0eWxlIHVzZXMgdGhlXG4gKiBmcmVlIENBUlRPIHRpbGVzIChldmVuIHdoZW4gYSBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlKSwgYW5kIGEgTWFwYm94IHN0eWxlXG4gKiB1c2VzIE1hcGJveCB0aWxlcy4gQSBNYXBib3ggc3R5bGUgd2l0aCBubyB0b2tlbiBmYWxscyBiYWNrIHRvIENBUlRPIHNvIHRoZVxuICogZ2xvYmUgc3RpbGwgcmVuZGVycyBpbnN0ZWFkIG9mIHNob3dpbmcgYSBiYXJlIGNvbG9yZWQgc3BoZXJlLlxuICpcbiAqIEBwYXJhbSBiYXNlTWFwTGlicmFyeSB0aGUgc2VsZWN0ZWQgc3R5bGUncyBsaWJyYXJ5ICgnbWFwYm94JyB8ICdtYXBsaWJyZScpLFxuICogICBlLmcuIGZyb20gYGdldEJhc2VNYXBMaWJyYXJ5KGN1cnJlbnRTdHlsZSlgLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUdsb2JlQmFzZW1hcFByb3ZpZGVyID0gKFxuICBiYXNlTWFwTGlicmFyeTogJ21hcGJveCcgfCAnbWFwbGlicmUnIHwgdW5kZWZpbmVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZ1xuKTogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPT4ge1xuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBsaWJyZScpIHtcbiAgICByZXR1cm4gJ2NhcnRvJztcbiAgfVxuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gJ21hcGJveCcgOiAnY2FydG8nO1xuICB9XG4gIC8vIFVua25vd24gbGlicmFyeTogcHJlZmVyIE1hcGJveCB3aGVuIGEgdG9rZW4gZXhpc3RzLCBvdGhlcndpc2UgQ0FSVE8uXG4gIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbn07XG5cbi8vIENBUlRPIGZyZWUgdmVjdG9yIHRpbGVzIChPcGVuTWFwVGlsZXMgc2NoZW1hLCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFMgPSBbXG4gICdodHRwczovL3RpbGVzLWEuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYi5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWQuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0J1xuXTtcblxuLy8gRnJlZSBzYXRlbGxpdGUgcmFzdGVyIGZhbGxiYWNrIChFc3JpIFdvcmxkIEltYWdlcnksIG5vIEFQSSBrZXkgcmVxdWlyZWQpLlxuY29uc3QgRVNSSV9XT1JMRF9JTUFHRVJZX1VSTCA9XG4gICdodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyL3RpbGUve3p9L3t5fS97eH0nO1xuXG4vKipcbiAqIE1hcHMgYSByYXcgTVZUIHNvdXJjZS1sYXllciBuYW1lIHRvIGEgbm9ybWFsaXplZCBzZW1hbnRpYyBsYXllciBraW5kLCBzbyB0aGVcbiAqIGZpbGwvbGluZS9sYWJlbCBhY2Nlc3NvcnMgd29yayBhY3Jvc3MgYm90aCB0aGUgTWFwYm94IChgbWFwYm94LXN0cmVldHMtdjhgKVxuICogYW5kIENBUlRPL09wZW5NYXBUaWxlcyBzY2hlbWFzLlxuICpcbiAqIHwgc2VtYW50aWMgfCBtYXBib3ggICAgICAgIHwgb3Blbm1hcHRpbGVzIHxcbiAqIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHxcbiAqIHwgd2F0ZXIgICAgfCBgd2F0ZXJgICAgICAgIHwgYHdhdGVyYCAgICAgIHxcbiAqIHwgYWRtaW4gICAgfCBgYWRtaW5gICAgICAgIHwgYGJvdW5kYXJ5YCAgIHxcbiAqIHwgbGFiZWwgICAgfCBgcGxhY2VfbGFiZWxgIHwgYHBsYWNlYCAgICAgIHxcbiAqL1xudHlwZSBCYXNlbWFwTGF5ZXJLaW5kID0gJ3dhdGVyJyB8ICdhZG1pbicgfCAnbGFiZWwnIHwgJ290aGVyJztcblxuZnVuY3Rpb24gZ2V0QmFzZW1hcExheWVyS2luZChsYXllck5hbWU/OiBzdHJpbmcpOiBCYXNlbWFwTGF5ZXJLaW5kIHtcbiAgc3dpdGNoIChsYXllck5hbWUpIHtcbiAgICBjYXNlICd3YXRlcic6XG4gICAgICByZXR1cm4gJ3dhdGVyJztcbiAgICBjYXNlICdhZG1pbic6XG4gICAgY2FzZSAnYm91bmRhcnknOlxuICAgICAgcmV0dXJuICdhZG1pbic7XG4gICAgY2FzZSAncGxhY2VfbGFiZWwnOlxuICAgIGNhc2UgJ3BsYWNlJzpcbiAgICAgIHJldHVybiAnbGFiZWwnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ290aGVyJztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHbG9iZUF0dHJpYnV0aW9uID0ge2xhYmVsOiBzdHJpbmc7IGhyZWY6IHN0cmluZ307XG5cbmNvbnN0IE1BUEJPWF9BVFRSSUJVVElPTjogR2xvYmVBdHRyaWJ1dGlvbiA9IHtcbiAgbGFiZWw6ICfCqSBNYXBib3gnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzLydcbn07XG5jb25zdCBPU01fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgT3BlblN0cmVldE1hcCcsXG4gIGhyZWY6ICdodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQnXG59O1xuY29uc3QgQ0FSVE9fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgQ0FSVE8nLFxuICBocmVmOiAnaHR0cHM6Ly9jYXJ0by5jb20vYXR0cmlidXRpb25zJ1xufTtcbmNvbnN0IEVTUklfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnUG93ZXJlZCBieSBFc3JpJyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3LmVzcmkuY29tLydcbn07XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgdGlsZS1zb3VyY2UgYXR0cmlidXRpb24gZW50cmllcyBmb3IgdGhlIGdsb2JlIGJhc2VtYXAuIGRlY2suZ2xcbiAqIHJlbmRlcnMgdGhlIGdsb2JlIGJhc2VtYXAgdGlsZXMgaXRzZWxmIChub3QgdGhlIGJhc2UgTWFwbGlicmUvTWFwYm94IG1hcCksIHNvXG4gKiB0aGUgYmFzZSBtYXAncyBhdHRyaWJ1dGlvbiBtYWNoaW5lcnkgbmV2ZXIgc2VlcyB0aGVtLiBUaGlzIGxldHMgdGhlIFVJIGNyZWRpdFxuICogdGhlIGFjdHVhbCB0aWxlIHByb3ZpZGVyKHMpIGluIGdsb2JlIG1vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VtYXBBdHRyaWJ1dGlvbnMgPSAoe1xuICBnbG9iZSxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyXG59OiB7XG4gIGdsb2JlPzogR2xvYmU7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBTdHlsZVR5cGU/OiBzdHJpbmc7XG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xufSk6IEdsb2JlQXR0cmlidXRpb25bXSA9PiB7XG4gIGlmICghZ2xvYmU/LmVuYWJsZWQgfHwgIWdsb2JlLmNvbmZpZz8uYmFzZW1hcCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICBpZiAocHJvdmlkZXIgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gW01BUEJPWF9BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXSA6IFtdO1xuICB9XG5cbiAgY29uc3QgaXNTYXRlbGxpdGUgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUnIHx8IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZS1zdHJlZXQnO1xuICAvLyBDQVJUTyB2ZWN0b3IgdGlsZXMgYXJlIE9wZW5TdHJlZXRNYXAtZGVyaXZlZDsgRXNyaSBpbWFnZXJ5IGlzIGNyZWRpdGVkIHNlcGFyYXRlbHkuXG4gIHJldHVybiBpc1NhdGVsbGl0ZVxuICAgID8gW0VTUklfQVRUUklCVVRJT04sIENBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dXG4gICAgOiBbQ0FSVE9fQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl07XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGNvbnN0IGdldEdsb2JlQmFzZUxheWVycyA9ICh7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBnbG9iZSxcbiAgbWFwU3R5bGVUeXBlLFxuICBiYXNlbWFwUHJvdmlkZXIsXG4gIGxhdGl0dWRlLFxuICB6b29tXG59OiB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIGdsb2JlOiBHbG9iZTtcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hpY2ggdGlsZSBwcm92aWRlciB0byB1c2UgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBEZWZhdWx0cyB0byBgbWFwYm94YCB3aGVuXG4gICAqIGEgdG9rZW4gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGhlIHRva2VuLWZyZWUgYGNhcnRvYCB0aWxlcy5cbiAgICovXG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xuICAvKipcbiAgICogQ3VycmVudCBjYW1lcmEgY2VudGVyIGxhdGl0dWRlLiBVc2VkIHRvIGtlZXAgdGlsZSBMT0QgY29uc3RhbnQgd2hpbGUgcm90YXRpbmdcbiAgICogdG93YXJkIHRoZSBwb2xlcyAoZGVjay5nbCA5IGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20gbmVhciB0aGUgcG9sZXMpLiBXaGVuXG4gICAqIG9taXR0ZWQsIG5vIGxhdGl0dWRlIGNvbXBlbnNhdGlvbiBpcyBhcHBsaWVkIChlcXVhdG9yIGJlaGF2aW9yKS5cbiAgICovXG4gIGxhdGl0dWRlPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3VycmVudCBtYXAgem9vbSBsZXZlbC4gVXNlZCB0byBmYWRlIHRoZSBhdG1vc3BoZXJlIGVmZmVjdHMgb3V0IHdoZW4gdGhlIHVzZXJcbiAgICogem9vbXMgaW4gcGFzdCBhIGNlcnRhaW4gdGhyZXNob2xkIChtaXJyb3JzIEdvb2dsZSBNYXBzIGdsb2JlIGJlaGF2aW91cikuXG4gICAqL1xuICB6b29tPzogbnVtYmVyO1xufSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJztcbiAgY29uc3QgaXNTYXRlbGxpdGVTdHJlZXQgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcblxuICBjb25zdCBsYXRab29tQ29tcGVuc2F0aW9uID0gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGUpO1xuXG4gIC8vIEZhbGwgYmFjayB0byB0aGUgZnJlZSBDQVJUTyB0aWxlcyB3aGVuZXZlciBubyBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlIHNvXG4gIC8vIHRoZSBnbG9iZSBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgKG1hdGNoZXMga2VwbGVyJ3MgZGVmYXVsdCB0b2tlbi1mcmVlXG4gIC8vIE1hcExpYnJlL0NBUlRPIGJhc2VtYXBzKS4gQ2FsbGVycyBzaG91bGQgcGFzcyBhbiBleHBsaWNpdCBgYmFzZW1hcFByb3ZpZGVyYFxuICAvLyAoZGVyaXZlZCBmcm9tIHRoZSBzZWxlY3RlZCBzdHlsZSkgc28gdGhlIGdsb2JlIGZvbGxvd3MgdGhlIDJEIGJhc2VtYXAuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcbiAgY29uc3QgdXNlQ2FydG8gPSBwcm92aWRlciA9PT0gJ2NhcnRvJztcbiAgY29uc3QgaGFzVGlsZUFjY2VzcyA9IHVzZUNhcnRvIHx8IEJvb2xlYW4obWFwYm94QXBpQWNjZXNzVG9rZW4pO1xuXG4gIHJldHVybiBbXG4gICAgLy8gSHVnZSBoYWxvIGJlaGluZCB0aGUgdGhpbiByZWFsaXN0aWMgbGltYiBzbyBib3RoIGNhbiBiZSB2aXNpYmxlIHRvZ2V0aGVyLlxuICAgIGNvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVIdWdlSGFsb0xheWVyKHtjb25maWcsIHpvb219KSA6IG51bGwsXG4gICAgY29uZmlnLmF0bW9zcGhlcmUgPyBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllcih7Y29uZmlnLCB6b29tfSkgOiBudWxsLFxuXG4gICAgLy8gRGVwdGgtb25seSBjcm9zcy1zZWN0aW9uIGRpc2s6IHdyaXRlcyBkZXB0aCBhdCB0aGUgZ2xvYmUncyBzaWxob3VldHRlIHNvXG4gICAgLy8gZmFyLXNpZGUgZ2VvbWV0cnkgKGFyY3MvbGluZXMpIGlzIG9jY2x1ZGVkIGJ5IHRoZSBwbGFuZXQuXG4gICAgZ2V0R2xvYmVEZXB0aERpc2tMYXllcih7ZmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yfSksXG5cbiAgICAvLyBCYWNrZ3JvdW5kIHN1cmZhY2UgcG9seWdvblxuICAgICghY29uZmlnLmJhc2VtYXAgfHwgKCFpc1NhdGVsbGl0ZSAmJiAhaXNTYXRlbGxpdGVTdHJlZXQpKSAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9EQVRBLFxuICAgICAgICBnZXRQb2x5Z29uOiAoKGQ6IG51bWJlcltdW10pID0+IGQpIGFzIGFueSxcbiAgICAgICAgZmlsbGVkOiB0cnVlLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGNvbmZpZy5zdXJmYWNlQ29sb3IgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gRmlsbCBob2xlIGF0IG5vcnRoIHBvbGVcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kLW5vcnRoLXBvbGUnLFxuICAgICAgICBkYXRhOiBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoY29uZmlnLndhdGVyID8gY29uZmlnLndhdGVyQ29sb3IgOiBjb25maWcuc3VyZmFjZUNvbG9yKSBhcyBhbnksXG4gICAgICAgIHBhcmFtZXRlcnM6IEJBQ0tHUk9VTkRfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBTYXRlbGxpdGUgdGlsZXNcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgKGlzU2F0ZWxsaXRlIHx8IGlzU2F0ZWxsaXRlU3RyZWV0KSAmJlxuICAgICAgaGFzVGlsZUFjY2VzcyAmJlxuICAgICAgbmV3IFRpbGVMYXllcih7XG4gICAgICAgIGlkOiBgZ2xvYmUtc2F0ZWxsaXRlLXRpbGVzLSR7cHJvdmlkZXJ9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IFtFU1JJX1dPUkxEX0lNQUdFUllfVVJMXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBgaHR0cHM6Ly9hcGkubWFwYm94LmNvbS92NC9tYXBib3guc2F0ZWxsaXRlL3t6fS97eH0ve3l9QDJ4LnBuZz9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gXG4gICAgICAgICAgICBdLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IDE4IDogMTksXG4gICAgICAgIHpvb21PZmZzZXQ6IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCArIGxhdFpvb21Db21wZW5zYXRpb24sXG4gICAgICAgIGV4dGVudDogR0xPQkVfVElMRV9FWFRFTlQsXG4gICAgICAgIC8vIEVzcmkgdGlsZXMgYXJlIDI1NnB4OyBNYXBib3ggQDJ4IHRpbGVzIGFyZSA1MTJweC5cbiAgICAgICAgdGlsZVNpemU6IHVzZUNhcnRvID8gMjU2IDogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9XG4gICAgICAgICAgfSA9IHByb3BzLnRpbGU7XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEJpdG1hcExheWVyKHByb3BzLCB7XG4gICAgICAgICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuZGF0YSxcbiAgICAgICAgICAgICAgYm91bmRzOiBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIFZlY3RvciBiYXNlbWFwIChNVlQgbGFiZWxzL2FkbWluL3dhdGVyKVxuICAgIGNvbmZpZy5iYXNlbWFwICYmXG4gICAgICAhaXNTYXRlbGxpdGUgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBNVlRMYXllcih7XG4gICAgICAgIC8vIGZvcmNlIHRoZSBsYXllciB0byB1cGRhdGUgd2hlbiB0aGUgc3R5bGUvbGFiZWwvcHJvdmlkZXIgY29uZmlnIGNoYW5nZXNcbiAgICAgICAgaWQ6IGBnbG9iZS1iYXNlbWFwLW12dC1sYXllci0ke3Byb3ZpZGVyfS0ke21hcFN0eWxlVHlwZX1gLFxuICAgICAgICBkYXRhOiB1c2VDYXJ0b1xuICAgICAgICAgID8gQ0FSVE9fVkVDVE9SX1RJTEVfVVJMU1xuICAgICAgICAgIDogYGh0dHBzOi8vYS50aWxlcy5tYXBib3guY29tL3Y0L21hcGJveC5tYXBib3gtc3RyZWV0cy12OC97en0ve3h9L3t5fS52ZWN0b3IucGJmP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufWAsXG4gICAgICAgIG1pblpvb206IDAsXG4gICAgICAgIC8vIE92ZXJ6b29tIHBhc3QgdGhlIHNvdXJjZSdzIG5hdGl2ZSBtYXggaW5zdGVhZCBvZiA0MDQtaW5nIG9uIHRpbGVzIHRoYXRcbiAgICAgICAgLy8gZG9uJ3QgZXhpc3QgKHdoaWNoIHJlbmRlcnMgYXMgZW1wdHkgcmVjdGFuZ2xlcyBhdCBoaWdoIHpvb20pLlxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IENBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIDogTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NLFxuICAgICAgICB6b29tT2Zmc2V0OlxuICAgICAgICAgICh1c2VDYXJ0byA/IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA6IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQpICtcbiAgICAgICAgICBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICBiaW5hcnk6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX01WVF9QQVJBTUVURVJTLFxuICAgICAgICBsb2FkT3B0aW9uczogdXNlQ2FydG9cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLy8gT3Blbk1hcFRpbGVzIHNjaGVtYTogYGJvdW5kYXJ5YCA9IGFkbWluIGxpbmVzLCBgcGxhY2VgID0gbGFiZWxzLlxuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2UnLCAnYm91bmRhcnknXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlJywgJ2JvdW5kYXJ5JywgJ3dhdGVyJywgJ3RyYW5zcG9ydGF0aW9uJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2VfbGFiZWwnLCAnYWRtaW4nXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJywgJ3dhdGVyJywgJ3JvYWQnXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAvLyBSZW5kZXIgYWRtaW4vd2F0ZXIgdmlhIEdlb0pzb25MYXllciBhbmQgcGxhY2UgbGFiZWxzIHZpYSBUZXh0TGF5ZXIuXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4gbmV3IE1WVExhYmVsTGF5ZXIocHJvcHMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3dhdGVyJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogSU5WSVNJQkxFX0NPTE9SO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zdXJmYWNlQ29sb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRMaW5lQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FkbWluJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5hZG1pbkxpbmVzID8gY29uZmlnLmFkbWluTGluZXNDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHN3aXRjaCAoZi5wcm9wZXJ0aWVzLmFkbWluX2xldmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMC43NTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogW2NvbmZpZy53YXRlckNvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcud2F0ZXJdLFxuICAgICAgICAgIGdldExpbmVDb2xvcjogW2NvbmZpZy5hZG1pbkxpbmVzQ29sb3IsIGNvbmZpZy5zdXJmYWNlQ29sb3IsIGNvbmZpZy5hZG1pbkxpbmVzXVxuICAgICAgICB9LFxuICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIGxpbmVXaWR0aE1pblBpeGVsczogMCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiAyMCxcbiAgICAgICAgZ2V0UG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIHBvaW50UmFkaXVzTWluUGl4ZWxzOiAwXG4gICAgICB9IGFzIGFueSlcbiAgXS5maWx0ZXIoQm9vbGVhbikgYXMgTGF5ZXJbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iZVRvcExheWVycyA9ICh7Z2xvYmUsIHpvb219OiB7Z2xvYmU6IEdsb2JlOyB6b29tPzogbnVtYmVyfSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuICByZXR1cm4gW2NvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIoe2NvbmZpZywgem9vbX0pIDogbnVsbF0uZmlsdGVyKEJvb2xlYW4pIGFzIExheWVyW107XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUtBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBWkE7QUFDQTs7QUFlQSxJQUFNTSxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQy9CLENBQUMsRUFDQSxPQUFPQyxNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUNILGdCQUFnQixJQUFLLENBQ2hFLENBQUM7QUFFRCxJQUFNSSxxQkFBcUIsR0FBRztFQUM1QkMsU0FBUyxFQUFFLElBQUk7RUFDZkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVELElBQU1DLHlCQUF5QixHQUFHO0VBQ2hDRCxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRUQsSUFBTUUsZUFBZSxHQUFHLENBQ3RCLENBQ0UsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDUCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVCxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ1IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQ0Y7QUFFRCxJQUFNQywwQkFBMEIsR0FBRyxD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
|
|
574
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb0xheWVycyIsIl9hdG1vc3BoZXJlTGF5ZXIiLCJfZ2xvYmVEZXB0aERpc2tMYXllciIsIl9tdnRMYWJlbExheWVyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJCQUNLR1JPVU5EX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJjdWxsIiwiZGVwdGhNYXNrIiwiQkFTRU1BUF9SQVNURVJfUEFSQU1FVEVSUyIsIkJBQ0tHUk9VTkRfREFUQSIsIkJBQ0tHUk9VTkRfTk9SVEhfUE9MRV9EQVRBIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiZXhwb3J0cyIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJiYXNlbWFwRGVmYXVsdEZpbGxDb2xvciIsImJhc2VtYXBXYXRlckZpbGxDb2xvciIsImJhc2VtYXBEZWZhdWx0TGluZUNvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcExhYmVsQ29sb3IiLCJnZXRQYWludENvbG9yIiwiY29sb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjb2xvclN0cmluZ1RvUkdCIiwiaHNsTWF0Y2giLCJtYXRjaCIsImgiLCJwYXJzZUludCIsInMiLCJsIiwiciIsImciLCJiIiwiaHVlMnJnYiIsInAiLCJxIiwidCIsInJvdW5kIiwicmdiTWF0Y2giLCJoZXhNYXRjaCIsImhleCIsInNsaWNlIiwiZmluZEZpcnN0TGF5ZXJCeUdyb3VwIiwibGF5ZXJzIiwibGF5ZXJHcm91cHMiLCJncm91cFNsdWciLCJsYXllckdyb3VwIiwiZmluZCIsImdyb3VwIiwic2x1ZyIsImxheWVyIiwiZmlsdGVyIiwiZmluZEJhY2tncm91bmRDb2xvciIsInN0eWxlIiwiX2ZvdW5kIiwiZm91bmQiLCJpZCIsInR5cGUiLCJwYWludCIsImZpbmRXYXRlckNvbG9yIiwiX2ZvdW5kJHBhaW50IiwiZmluZEFkbWluQ29sb3IiLCJfYm9yZGVyTGF5ZXJzJHBhaW50IiwiYm9yZGVyTGF5ZXJzIiwibHlyIiwiZmluZExhYmVsQ29sb3IiLCJfbGFiZWxMYXllciIsImxhYmVsTGF5ZXIiLCJnZXRCYXNlbWFwQ29sb3JzIiwibWFwU3R5bGUiLCJfZmluZEJhY2tncm91bmRDb2xvciIsIl9maW5kV2F0ZXJDb2xvciIsIl9maW5kQWRtaW5Db2xvciIsIl9maW5kTGFiZWxDb2xvciIsIl9tYXBTdHlsZSRzdHlsZSIsInN0eWxlSnNvbiIsIl9tYXBTdHlsZSRsYXllckdyb3VwcyIsIktOT1dOX1NUWUxFX0NPTE9SUyIsImRhcmsiLCJsaWdodCIsInBvc2l0cm9uIiwidm95YWdlciIsIm11dGVkIiwibXV0ZWRfbmlnaHQiLCJnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkc3R5bGUyIiwibGVuZ3RoIiwiZ2V0R2xvYmVDbGVhckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiSU5WSVNJQkxFX0NPTE9SIiwiQkFTRU1BUF9NVlRfUEFSQU1FVEVSUyIsIk1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJDQVJUT19HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQiLCJHTE9CRV9TQVRFTExJVEVfWk9PTV9PRkZTRVQiLCJHTE9CRV9USUxFX0VYVEVOVCIsIk1BUEJPWF9WRUNUT1JfTUFYX0RBVEFfWk9PTSIsIkNBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIiwiem9vbUFkanVzdCIsImxhdGl0dWRlIiwibG9nMiIsIlBJIiwiY29zIiwiZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wZWQiLCJtYXgiLCJyZXNvbHZlR2xvYmVCYXNlbWFwUHJvdmlkZXIiLCJiYXNlTWFwTGlicmFyeSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiQ0FSVE9fVkVDVE9SX1RJTEVfVVJMUyIsIkVTUklfV09STERfSU1BR0VSWV9VUkwiLCJnZXRCYXNlbWFwTGF5ZXJLaW5kIiwibGF5ZXJOYW1lIiwiTUFQQk9YX0FUVFJJQlVUSU9OIiwibGFiZWwiLCJocmVmIiwiT1NNX0FUVFJJQlVUSU9OIiwiQ0FSVE9fQVRUUklCVVRJT04iLCJFU1JJX0FUVFJJQlVUSU9OIiwiZ2V0R2xvYmVCYXNlbWFwQXR0cmlidXRpb25zIiwiX3JlZiIsIl9nbG9iZSRjb25maWciLCJnbG9iZSIsIm1hcFN0eWxlVHlwZSIsImJhc2VtYXBQcm92aWRlciIsImVuYWJsZWQiLCJjb25maWciLCJiYXNlbWFwIiwicHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJpc1NhdGVsbGl0ZSIsImdldEdsb2JlQmFzZUxheWVycyIsIl9yZWYyIiwiem9vbSIsImlzU2F0ZWxsaXRlU3RyZWV0IiwibGF0Wm9vbUNvbXBlbnNhdGlvbiIsInVzZUNhcnRvIiwiaGFzVGlsZUFjY2VzcyIsIkJvb2xlYW4iLCJhdG1vc3BoZXJlIiwiZ2V0R2xvYmVIdWdlSGFsb0xheWVyIiwiZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiZmlsbENvbG9yIiwic3VyZmFjZUNvbG9yIiwiU29saWRQb2x5Z29uTGF5ZXIiLCJkYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJmaWxsZWQiLCJnZXRGaWxsQ29sb3IiLCJwYXJhbWV0ZXJzIiwid2F0ZXIiLCJ3YXRlckNvbG9yIiwiVGlsZUxheWVyIiwiY29uY2F0IiwibWluWm9vbSIsIm1heFpvb20iLCJ6b29tT2Zmc2V0IiwiZXh0ZW50IiwidGlsZVNpemUiLCJyZW5kZXJTdWJMYXllcnMiLCJwcm9wcyIsIl9wcm9wcyR0aWxlJGJib3giLCJ0aWxlIiwiYmJveCIsIndlc3QiLCJzb3V0aCIsImVhc3QiLCJub3J0aCIsIkJpdG1hcExheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiQ0FSVEVTSUFOIiwiaW1hZ2UiLCJib3VuZHMiLCJNVlRMYXllciIsImJpbmFyeSIsImxvYWRPcHRpb25zIiwibXZ0IiwiTVZUTGFiZWxMYXllciIsImYiLCJwcm9wZXJ0aWVzIiwiZ2V0TGluZUNvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsImdldExpbmVXaWR0aCIsImFkbWluX2xldmVsIiwidXBkYXRlVHJpZ2dlcnMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImdldFBvaW50UmFkaXVzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJnZXRHbG9iZVRvcExheWVycyIsIl9yZWYzIiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtbGF5ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIExheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXIsIEJpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtUaWxlTGF5ZXIsIE1WVExheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcblxuaW1wb3J0IHR5cGUge0dsb2JlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7UkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBnZXRHbG9iZUF0bW9zcGhlcmVMYXllcixcbiAgZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIsXG4gIGdldEdsb2JlSHVnZUhhbG9MYXllclxufSBmcm9tICcuL2F0bW9zcGhlcmUtbGF5ZXInO1xuaW1wb3J0IHtnZXRHbG9iZURlcHRoRGlza0xheWVyfSBmcm9tICcuL2dsb2JlLWRlcHRoLWRpc2stbGF5ZXInO1xuaW1wb3J0IHtNVlRMYWJlbExheWVyfSBmcm9tICcuL212dC1sYWJlbC1sYXllcic7XG5cbnR5cGUgTGF5ZXJHcm91cCA9IHtzbHVnOiBzdHJpbmc7IGZpbHRlcjogKGxheWVyOiBhbnkpID0+IGJvb2xlYW59O1xuXG5jb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gTWF0aC5taW4oXG4gIDIsXG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMVxuKTtcblxuY29uc3QgQkFDS0dST1VORF9QQVJBTUVURVJTID0ge1xuICBkZXB0aFRlc3Q6IHRydWUsXG4gIGN1bGw6IHRydWUsXG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBU0VNQVBfUkFTVEVSX1BBUkFNRVRFUlMgPSB7XG4gIGRlcHRoTWFzazogZmFsc2Vcbn07XG5cbmNvbnN0IEJBQ0tHUk9VTkRfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgLTkwXSxcbiAgICBbMCwgLTkwXSxcbiAgICBbLTE4MCwgLTkwXVxuICBdXG5dO1xuXG5jb25zdCBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSA9IFtcbiAgW1xuICAgIFstMTgwLCA5MF0sXG4gICAgWzAsIDkwXSxcbiAgICBbMTgwLCA5MF0sXG4gICAgWzE4MCwgODVdLFxuICAgIFswLCA4NV0sXG4gICAgWy0xODAsIDg1XVxuICBdXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQVNFTUFQX0NPTE9SID0ge1xuICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbOSwgMTYsIDI5XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcERlZmF1bHRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSBhcyBSR0JDb2xvcixcbiAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTcsIDM1LCA0OF0gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBEZWZhdWx0TGluZUNvbG9yOiBbNDAsIDYzLCA5M10gYXMgUkdCQ29sb3IsXG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzQwLCA2MywgOTNdIGFzIFJHQkNvbG9yLFxuICBiYXNlbWFwTGFiZWxDb2xvcjogWzExNC43NSwgMTE0Ljc1LCAxMTQuNzVdIGFzIFJHQkNvbG9yXG59O1xuXG5mdW5jdGlvbiBnZXRQYWludENvbG9yKGNvbG9yOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpICYmIGNvbG9yWzBdID09PSAnaW50ZXJwb2xhdGUnKSB7XG4gICAgcmV0dXJuIGNvbG9yWzRdO1xuICB9XG4gIHJldHVybiBjb2xvcjtcbn1cblxuZnVuY3Rpb24gY29sb3JTdHJpbmdUb1JHQihjb2xvcjogc3RyaW5nIHwgbnVsbCk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGlmICghY29sb3IpIHJldHVybiBudWxsO1xuICBpZiAodHlwZW9mIGNvbG9yICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG5cbiAgLy8gSGFuZGxlIGhzbCgpIGZvcm1hdFxuICBjb25zdCBoc2xNYXRjaCA9IGNvbG9yLm1hdGNoKC9oc2xcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspJVxccyosXFxzKihcXGQrKSVcXHMqXFwpLyk7XG4gIGlmIChoc2xNYXRjaCkge1xuICAgIGNvbnN0IGggPSBwYXJzZUludChoc2xNYXRjaFsxXSwgMTApIC8gMzYwO1xuICAgIGNvbnN0IHMgPSBwYXJzZUludChoc2xNYXRjaFsyXSwgMTApIC8gMTAwO1xuICAgIGNvbnN0IGwgPSBwYXJzZUludChoc2xNYXRjaFszXSwgMTApIC8gMTAwO1xuICAgIC8vIEhTTCB0byBSR0IgY29udmVyc2lvblxuICAgIGxldCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyO1xuICAgIGlmIChzID09PSAwKSB7XG4gICAgICByID0gZyA9IGIgPSBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBodWUycmdiID0gKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgICAgICBpZiAodCA8IDEgLyA2KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICAgICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgICB9O1xuICAgICAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7XG4gICAgICBjb25zdCBwID0gMiAqIGwgLSBxO1xuICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgIGcgPSBodWUycmdiKHAsIHEsIGgpO1xuICAgICAgYiA9IGh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcbiAgICB9XG4gICAgcmV0dXJuIFtNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIC8vIEhhbmRsZSByZ2IoKSBmb3JtYXRcbiAgY29uc3QgcmdiTWF0Y2ggPSBjb2xvci5tYXRjaCgvcmdiXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkvKTtcbiAgaWYgKHJnYk1hdGNoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KHJnYk1hdGNoWzFdLCAxMCksXG4gICAgICBwYXJzZUludChyZ2JNYXRjaFsyXSwgMTApLFxuICAgICAgcGFyc2VJbnQocmdiTWF0Y2hbM10sIDEwKVxuICAgIF0gYXMgUkdCQ29sb3I7XG4gIH1cblxuICAvLyBIYW5kbGUgaGV4IGZvcm1hdFxuICBjb25zdCBoZXhNYXRjaCA9IGNvbG9yLm1hdGNoKC9eIyhbMC05YS1mXXs2fSkkL2kpO1xuICBpZiAoaGV4TWF0Y2gpIHtcbiAgICBjb25zdCBoZXggPSBoZXhNYXRjaFsxXTtcbiAgICByZXR1cm4gW1xuICAgICAgcGFyc2VJbnQoaGV4LnNsaWNlKDAsIDIpLCAxNiksXG4gICAgICBwYXJzZUludChoZXguc2xpY2UoMiwgNCksIDE2KSxcbiAgICAgIHBhcnNlSW50KGhleC5zbGljZSg0LCA2KSwgMTYpXG4gICAgXSBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBmaW5kRmlyc3RMYXllckJ5R3JvdXAobGF5ZXJzOiBhbnlbXSwgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSwgZ3JvdXBTbHVnOiBzdHJpbmcpIHtcbiAgY29uc3QgbGF5ZXJHcm91cCA9IGxheWVyR3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuc2x1ZyA9PT0gZ3JvdXBTbHVnKTtcbiAgaWYgKCFsYXllckdyb3VwKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGxheWVycy5maW5kKGxheWVyID0+IGxheWVyR3JvdXAuZmlsdGVyKGxheWVyKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRCYWNrZ3JvdW5kQ29sb3Ioc3R5bGU6IGFueSk6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGxldCBmb3VuZCA9IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwuaWQgPT09ICdiYWNrZ3JvdW5kJyB8fCBsLmlkID09PSAnbGFuZCcpO1xuICBmb3VuZCA9IGZvdW5kIHx8IHN0eWxlLmxheWVycy5maW5kKChsOiBhbnkpID0+IGwudHlwZSA9PT0gJ2JhY2tncm91bmQnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IoZ2V0UGFpbnRDb2xvcihmb3VuZD8ucGFpbnQ/LlsnYmFja2dyb3VuZC1jb2xvciddKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXYXRlckNvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBjb25zdCBmb3VuZCA9XG4gICAgc3R5bGUubGF5ZXJzLmZpbmQoKGw6IGFueSkgPT4gbC5pZCA9PT0gJ3dhdGVyJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ3dhdGVyJyk7XG4gIHJldHVybiBjb2xvclN0cmluZ1RvUkdCKGZvdW5kPy5wYWludD8uWydmaWxsLWNvbG9yJ10pO1xufVxuXG5mdW5jdGlvbiBmaW5kQWRtaW5Db2xvcihzdHlsZTogYW55LCBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgY29uc3QgYm9yZGVyTGF5ZXJzID1cbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2FkbWluLTMtNC1ib3VuZGFyaWVzJykgfHxcbiAgICBmaW5kRmlyc3RMYXllckJ5R3JvdXAoc3R5bGUubGF5ZXJzLCBsYXllckdyb3VwcywgJ2JvcmRlcicpO1xuICByZXR1cm4gY29sb3JTdHJpbmdUb1JHQihib3JkZXJMYXllcnM/LnBhaW50Py5bJ2xpbmUtY29sb3InXSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRMYWJlbENvbG9yKHN0eWxlOiBhbnksIGxheWVyR3JvdXBzOiBMYXllckdyb3VwW10pOiBSR0JDb2xvciB8IG51bGwge1xuICBsZXQgbGFiZWxMYXllciA9IHN0eWxlLmxheWVycy5maW5kKFxuICAgIChseXI6IGFueSkgPT4gbHlyLmlkID09PSAnY291bnRyeS1sYWJlbC1sZycgJiYgbHlyLnR5cGUgPT09ICdzeW1ib2wnXG4gICk7XG4gIGxhYmVsTGF5ZXIgPVxuICAgIGxhYmVsTGF5ZXIgfHxcbiAgICBzdHlsZS5sYXllcnMuZmluZCgobHlyOiBhbnkpID0+IGx5ci5pZCA9PT0gJ2NvdW50cnktbGFiZWwnICYmIGx5ci50eXBlID09PSAnc3ltYm9sJyk7XG4gIGxhYmVsTGF5ZXIgPSBsYWJlbExheWVyIHx8IGZpbmRGaXJzdExheWVyQnlHcm91cChzdHlsZS5sYXllcnMsIGxheWVyR3JvdXBzLCAnbGFiZWwnKTtcbiAgcmV0dXJuIGNvbG9yU3RyaW5nVG9SR0IobGFiZWxMYXllcj8ucGFpbnQ/LlsndGV4dC1jb2xvciddKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnMgPSAoXG4gIG1hcFN0eWxlOiBQYXJ0aWFsPHtzdHlsZTogYW55OyBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfT5cbik6IHtcbiAgYmFja2dyb3VuZEZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gIGJhc2VtYXBMYWJlbENvbG9yOiBSR0JDb2xvcjtcbn0gPT4ge1xuICBjb25zdCB7c3R5bGU6IHN0eWxlSnNvbiA9IHtsYXllcnM6IFtdfSwgbGF5ZXJHcm91cHMgPSBbXX0gPSBtYXBTdHlsZTtcblxuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6XG4gICAgICBmaW5kQmFja2dyb3VuZENvbG9yKHN0eWxlSnNvbikgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOlxuICAgICAgZmluZFdhdGVyQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBXYXRlckZpbGxDb2xvcixcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6XG4gICAgICBmaW5kQWRtaW5Db2xvcihzdHlsZUpzb24sIGxheWVyR3JvdXBzKSA/PyBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOlxuICAgICAgZmluZExhYmVsQ29sb3Ioc3R5bGVKc29uLCBsYXllckdyb3VwcykgPz8gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vLyBQcmVkZWZpbmVkIGNvbG9yIHNjaGVtZXMgZm9yIHdlbGwta25vd24gYmFzZW1hcCBzdHlsZXNcbmNvbnN0IEtOT1dOX1NUWUxFX0NPTE9SUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBSR0JDb2xvcjtcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogUkdCQ29sb3I7XG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFJHQkNvbG9yO1xuICB9XG4+ID0ge1xuICBkYXJrOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzE1LCAxNSwgMTVdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzEwLCAyMCwgMzVdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzYwLCA2MCwgODBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbMTUwLCAxNTAsIDE1MF1cbiAgfSxcbiAgJ2RhcmstbWF0dGVyJzoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsxOCwgMTgsIDE4XSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNCwgMTksIDI5XSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1MCwgNTAsIDYwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzEzMCwgMTMwLCAxMzBdXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNSwgMjMzLCAyMjhdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTc1LCAxNzBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbODAsIDgwLCA4MF1cbiAgfSxcbiAgcG9zaXRyb246IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjQyLCAyMzksIDIzM10sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTc0LCAyMDksIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTkwLCAxODUsIDE4MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICB2b3lhZ2VyOiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogWzIzNCwgMjI5LCAyMjBdLFxuICAgIGJhc2VtYXBXYXRlckZpbGxDb2xvcjogWzE3MCwgMjExLCAyMjNdLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogWzE4MCwgMTcwLCAxNjBdLFxuICAgIGJhc2VtYXBMYWJlbENvbG9yOiBbNzAsIDcwLCA3MF1cbiAgfSxcbiAgbXV0ZWQ6IHtcbiAgICBiYWNrZ3JvdW5kRmlsbENvbG9yOiBbMjI1LCAyMjUsIDIxOF0sXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBbMTgwLCAyMTAsIDIyMF0sXG4gICAgYmFzZW1hcEFkbWluTGluZUNvbG9yOiBbMTcwLCAxNjUsIDE2MF0sXG4gICAgYmFzZW1hcExhYmVsQ29sb3I6IFs5MCwgOTAsIDkwXVxuICB9LFxuICBtdXRlZF9uaWdodDoge1xuICAgIGJhY2tncm91bmRGaWxsQ29sb3I6IFsyMiwgMjYsIDMwXSxcbiAgICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFsxNSwgMjUsIDQwXSxcbiAgICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFs1NSwgNjAsIDcwXSxcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogWzE0MCwgMTQwLCAxNDBdXG4gIH1cbn07XG5cbi8qKlxuICogR2V0IGJhc2VtYXAgY29sb3JzIGVpdGhlciBmcm9tIHRoZSBzdHlsZSBKU09OIG9yIGZyb20ga25vd24gc3R5bGUgcHJlc2V0cy5cbiAqIEZhbGxzIGJhY2sgdG8gZGVmYXVsdCBkYXJrIGNvbG9ycyBpZiBzdHlsZSBpcyB1bmtub3duIGFuZCBubyBKU09OIGlzIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSA9IChcbiAgc3R5bGVUeXBlOiBzdHJpbmcsXG4gIG1hcFN0eWxlPzogUGFydGlhbDx7c3R5bGU6IGFueTsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXX0+XG4pOiB7XG4gIGJhY2tncm91bmRGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwV2F0ZXJGaWxsQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwQWRtaW5MaW5lQ29sb3I6IFJHQkNvbG9yO1xuICBiYXNlbWFwTGFiZWxDb2xvcjogUkdCQ29sb3I7XG59ID0+IHtcbiAgLy8gVHJ5IHRvIGV4dHJhY3QgZnJvbSBzdHlsZSBKU09OIGZpcnN0XG4gIGlmIChtYXBTdHlsZT8uc3R5bGU/LmxheWVycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldEJhc2VtYXBDb2xvcnMobWFwU3R5bGUpO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byBrbm93biBzdHlsZSBwcmVzZXRzXG4gIGlmIChLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXSkge1xuICAgIHJldHVybiBLTk9XTl9TVFlMRV9DT0xPUlNbc3R5bGVUeXBlXTtcbiAgfVxuICAvLyBEZWZhdWx0IGRhcmsgY29sb3JzXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZEZpbGxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3IsXG4gICAgYmFzZW1hcFdhdGVyRmlsbENvbG9yOiBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yLFxuICAgIGJhc2VtYXBBZG1pbkxpbmVDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBBZG1pbkxpbmVDb2xvcixcbiAgICBiYXNlbWFwTGFiZWxDb2xvcjogREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhc2VtYXBMYWJlbENvbG9yXG4gIH07XG59O1xuXG4vKipcbiAqIENsZWFyIGNvbG9yIChiYWNrZ3JvdW5kIGFyb3VuZCB0aGUgZ2xvYmUpIGZvciBnbG9iZSBtb2RlLCBpbiBSR0JBIDAtMjU1IGFzXG4gKiBleHBlY3RlZCBieSBkZWNrLmdsJ3MgVmlldyBgY2xlYXJDb2xvcmAgcHJvcCAoZGVjay5nbCA+PSA5IG5vIGxvbmdlciBzdXBwb3J0c1xuICogdGhlIGdsb2JhbCBgcGFyYW1ldGVycy5jbGVhckNvbG9yYDsgaXQgbXVzdCBiZSBzZXQgcGVyLXZpZXcgd2l0aCBgY2xlYXI6IHRydWVgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JlQ2xlYXJDb2xvcihcbiAgYmFja2dyb3VuZENvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyW11cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgIHJldHVybiBbYmFja2dyb3VuZENvbG9yWzBdLCBiYWNrZ3JvdW5kQ29sb3JbMV0sIGJhY2tncm91bmRDb2xvclsyXSwgMjU1XTtcbiAgfVxuICAvLyBEZWZhdWx0IG1hdGNoZXMgdGhlIHByZXZpb3VzIGhhcmRjb2RlZCBjbGVhciBjb2xvciBbMC4wMTUsIDAuMDM1LCAwLjA2NV0gaW4gMC0xIHNwYWNlLlxuICByZXR1cm4gWzQsIDksIDE3LCAyNTVdO1xufVxuXG5jb25zdCBJTlZJU0lCTEVfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDAsIDBdO1xuXG5jb25zdCBCQVNFTUFQX01WVF9QQVJBTUVURVJTID0ge1xuICAvLyBPY2NsdWRlIHRoZSBmYXIgc2lkZSBvZiB0aGUgZ2xvYmUgdmlhIHRoZSBERVBUSCBESVNLIChnZXRHbG9iZURlcHRoRGlza0xheWVyKVxuICAvLyByYXRoZXIgdGhhbiBiYWNrLWZhY2UgY3VsbGluZy4gR2xvYmUgbW9kZSBzZXRzIGEgZ2xvYmFsIGBjdWxsOiB0cnVlYCBmb3IgdGhlXG4gIC8vIG9wYXF1ZSBzcGhlcmUgc3VyZmFjZSwgYnV0IGJhY2stZmFjZSBjdWxsaW5nIHJlbGllcyBvbiBzdGFibGUgdHJpYW5nbGVcbiAgLy8gd2luZGluZyDigJQgYW5kIGRlY2suZ2wgOSdzIGdsb2JlIHByb2plY3Rpb24gbG9zZXMgcHJlY2lzaW9uIGF0IGhpZ2ggem9vbVxuICAvLyAoZmxvYXQzMiksIGZsaXBwaW5nIHRoZSB3aW5kaW5nIG9mIHRoZSBzbWFsbCBhZG1pbi93YXRlciB0cmlhbmdsZXMgc28gdGhleVxuICAvLyBnZXQgd3JvbmdseSBjdWxsZWQgYW5kIHRoZSBnZW9tZXRyeSB2YW5pc2hlcyBwYXN0IH56b29tIDEyICh5b3UgdGhlbiBzZWVcbiAgLy8gdGhyb3VnaCB0byB0aGUgZmFyIHNpZGUgLyBcImRpZmZlcmVudCBnZW9tZXRyeVwiKS4gRGVwdGggdGVzdGluZyBhZ2FpbnN0IHRoZSBkaXNrXG4gIC8vIGlzIGEgcHJlY2lzaW9uLXJvYnVzdCBvY2NsdWRlciB0aGF0IHdvcmtzIGF0IGFueSB6b29tLCBzbzpcbiAgLy8gICAtIGN1bGw6IGZhbHNlICAgICDihpIgZG9uJ3Qgd2luZGluZy1jdWxsIHRoZSBuZWFyLXNpZGUgZ2VvbWV0cnlcbiAgLy8gICAtIGRlcHRoVGVzdDogdHJ1ZSDihpIgZmFyLXNpZGUgZ2VvbWV0cnkgKGJlaGluZCB0aGUgZGlzaykgZmFpbHMgZGVwdGgsIGhpZGRlblxuICAvLyAgIC0gZGVwdGhNYXNrOiBmYWxzZSDihpIgZG9uJ3Qgd3JpdGUgZGVwdGggKGF2b2lkIHNlbGYgei1maWdodGluZyBvbiB0aGUgc2hlbGwpXG4gIC8vIFJhc3RlciB0aWxlcyBhcmUgdW5hZmZlY3RlZCAodGhlaXIgNC1jb3JuZXIgcXVhZHMga2VlcCBzdGFibGUgd2luZGluZyksIHdoaWNoXG4gIC8vIGlzIHdoeSBzYXRlbGxpdGUgYWxyZWFkeSB6b29tcyB0byBtYXggY2xlYW5seS4gTGFiZWxzIGRpc2FibGUgY3VsbCBmb3IgdGhlXG4gIC8vIHNhbWUgcmVhc29uIChzZWUgbXZ0LWxhYmVsLWxheWVyLnRzKS5cbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBkZXB0aE1hc2s6IGZhbHNlLFxuICBjdWxsOiBmYWxzZVxufTtcblxuLy8gZGVjay5nbCA5J3MgZ2xvYmUgc2VsZWN0cyBmaW5lciB0aWxlcyB0aGFuIG5lZWRlZCBmb3IgYSBnaXZlbiB2aWV3IChpdHNcbi8vIEdsb2JlVmlld3BvcnQgc2NhbGUgaXMgfjN4IHNtYWxsZXIgdGhhbiB0aGUgZXF1aXZhbGVudCBtZXJjYXRvciB6b29tKSwgc28gYmlhc1xuLy8gdmVjdG9yIHRpbGUgc2VsZWN0aW9uIGNvYXJzZXIgdG8ga2VlcCB0aGUgdGlsZSBjb3VudCDigJQgYW5kIHRodXMgcGVyZm9ybWFuY2Ug4oCUXG4vLyBpbiBjaGVjay4gVGhpcyB0cmFkZXMgYSBsaXR0bGUgZGV0YWlsIGZvciBmYXIgZmV3ZXIgdGlsZXM7IG1ha2UgaXQgbGVzcyBuZWdhdGl2ZVxuLy8gKHRvd2FyZCAwKSBmb3Igc2hhcnBlciBkZXRhaWwsIG9yIG1vcmUgbmVnYXRpdmUgZm9yIG1vcmUgcGVyZi5cbi8vIFRoZXNlIGFyZSAqYmFzZSogb2Zmc2V0czogZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24gaXMgYWRkZWQgb24gdG9wIGF0IGRyYXdcbi8vIHRpbWUsIHNvIHRoZSBlZmZlY3RpdmUgem9vbU9mZnNldCBvbmx5IGVxdWFscyB0aGVzZSBleGFjdCB2YWx1ZXMgYXQgdGhlIGVxdWF0b3IuXG4vLyBTYXRlbGxpdGUgcmFzdGVyIHVzZXMgYmFzZSAwIOKAlCBpdCBkb2Vzbid0IG5lZWQgdGhlIHZlY3RvciBiaWFzIChhIGNvYXJzZXIgcmFzdGVyXG4vLyB0aWxlIGp1c3QgbG9va3Mgc29mdGVyIHJhdGhlciB0aGFuIGRyb3BwaW5nIGZlYXR1cmVzKS5cbmNvbnN0IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQgPSAtMjtcbmNvbnN0IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA9IC0yO1xuY29uc3QgR0xPQkVfU0FURUxMSVRFX1pPT01fT0ZGU0VUID0gMDtcblxuLy8gV2hvbGUtd29ybGQgdGlsZSBleHRlbnQgKFdlYiBNZXJjYXRvciBsYXRpdHVkZSBsaW1pdCkuIFJlcXVpcmVkIHdoZW5ldmVyIGFcbi8vIG5lZ2F0aXZlIGB6b29tT2Zmc2V0YCBpcyB1c2VkOiBkZWNrJ3MgYGdldFRpbGVJbmRpY2VzYCByZXR1cm5zIE5PIHRpbGVzIHdoZW5cbi8vIHRoZSB0YXJnZXQgem9vbSBkcm9wcyBiZWxvdyBgbWluWm9vbWAgKnVubGVzcyogYW4gYGV4dGVudGAgaXMgc2V0IChpbiB3aGljaFxuLy8gY2FzZSBpdCBjbGFtcHMgdG8gYG1pblpvb21gIGluc3RlYWQpLiBXaXRob3V0IHRoaXMsIHpvb21pbmcgb3V0IG9yIHBhbm5pbmdcbi8vIHRvd2FyZCB0aGUgcG9sZXMgKHdoZXJlIGRlY2sgOSdzIGdsb2JlIGNvbnRyb2xsZXIgbG93ZXJzIHRoZSBlZmZlY3RpdmUgem9vbSlcbi8vIG1ha2VzIHRoZSB3aG9sZSBnbG9iZSBiYXNlbWFwIGRpc2FwcGVhci5cbmNvbnN0IEdMT0JFX1RJTEVfRVhURU5UOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFstMTgwLCAtODUuMDUxMTI5LCAxODAsIDg1LjA1MTEyOV07XG5cbi8vIE1heCAqbmF0aXZlKiB6b29tIG9mIGVhY2ggdmVjdG9yIHRpbGUgc291cmNlLiBTZXQgdGhpcyAobm90IGFuIGFyYml0cmFyaWx5XG4vLyBoaWdoIG51bWJlcikgc28gZGVjayBvdmVyem9vbXMg4oCUIGkuZS4ga2VlcHMgcmVuZGVyaW5nIHRoZSBkZWVwZXN0IHJlYWwgdGlsZVxuLy8gd2hlbiB0aGUgdmlldyB6b29tcyBwYXN0IGl0IOKAlCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGlsZXMgdGhhdCBkb24ndCBleGlzdFxuLy8gYW5kIDQwNCAod2hpY2ggc2hvd3MgdXAgYXMgZW1wdHkgcmVjdGFuZ2xlcykuIFRoZSByYXcgYC52ZWN0b3IucGJmYCAvYC5tdnRgXG4vLyBlbmRwb2ludHMgZG8gTk9UIGF1dG8tb3Zlcnpvb20gdGhlIHdheSBNYXBib3ggR0wgZG9lcy5cbi8vICAgLSBtYXBib3gtc3RyZWV0cy12OCBoYXMgZGF0YSB1cCB0byB6MTZcbi8vICAgLSBDQVJUTyBjYXJ0by5zdHJlZXRzIHYxIGhhcyBkYXRhIHVwIHRvIHoxNFxuY29uc3QgTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NID0gMTY7XG5jb25zdCBDQVJUT19WRUNUT1JfTUFYX0RBVEFfWk9PTSA9IDE0O1xuXG4vKipcbiAqIGRlY2suZ2wgOSdzIGdsb2JlIGNvdXBsZXMgem9vbSB0byBsYXRpdHVkZSB2aWEgYHpvb21BZGp1c3RgIChzZWVcbiAqIGdsb2JlLXZpZXdwb3J0LmpzKTogYHNjYWxlID0gMl4oem9vbSAtIHpvb21BZGp1c3QobGF0KSlgLCBhbmQgaXRzIGNvbnRyb2xsZXJcbiAqICpsb3dlcnMqIHRoZSBzdG9yZWQgYHpvb21gIGFzIHlvdSBwYW4gdG93YXJkIHRoZSBwb2xlcyB0byBrZWVwIHRoZSBnbG9iZSdzXG4gKiBvbi1zY3JlZW4gc2l6ZSBjb25zdGFudC4gVGlsZSBMT0QsIGhvd2V2ZXIsIGlzIHNlbGVjdGVkIGZyb20gdGhlIHJhdyBgem9vbWAsXG4gKiBzbyByb3RhdGluZyB0b3dhcmQgYSBwb2xlIHNpbGVudGx5IGRyb3BzIHRoZSBMT0QgYW5kIHRoaW5zIG91dCBsYWJlbHMuXG4gKiBSZXBsaWNhdGVkIGZyb20gYEBkZWNrLmdsL2NvcmVgIGdsb2JlLXZpZXdwb3J0LmpzIGB6b29tQWRqdXN0YC5cbiAqL1xuZnVuY3Rpb24gem9vbUFkanVzdChsYXRpdHVkZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubG9nMihNYXRoLlBJICogTWF0aC5jb3MoKGxhdGl0dWRlICogTWF0aC5QSSkgLyAxODApKTtcbn1cblxuLyoqXG4gKiBMYXRpdHVkZSBjb21wZW5zYXRpb24gdG8gYWRkIHRvIGEgZ2xvYmUgdGlsZSBsYXllcidzIGB6b29tT2Zmc2V0YCwgc28gdGlsZSBMT0RcbiAqIHRyYWNrcyB0aGUgKnZpc3VhbCogKG9uLXNjcmVlbikgc2NhbGUgaW5zdGVhZCBvZiB0aGUgbGF0aXR1ZGUtYWRqdXN0ZWQgbWVyY2F0b3JcbiAqIHpvb20uIFRoaXMgY2FuY2VscyB0aGUgcGFuLWluZHVjZWQgem9vbSBkcm9wLCBrZWVwaW5nIHRpbGUgZGV0YWlsL2xhYmVsc1xuICogY29uc3RhbnQgd2hpbGUgcm90YXRpbmcgdG93YXJkIHRoZSBwb2xlcy5cbiAqL1xuZnVuY3Rpb24gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGU/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobGF0aXR1ZGUgPT0gbnVsbCB8fCAhTnVtYmVyLmlzRmluaXRlKGxhdGl0dWRlKSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIC8vIENsYW1wIGF3YXkgZnJvbSB0aGUgcG9sZXMgdG8gYXZvaWQgbG9nMigwKSA9IC1JbmZpbml0eSBhdCB8bGF0fCA9IDkwLlxuICBjb25zdCBjbGFtcGVkID0gTWF0aC5tYXgoLTg1LCBNYXRoLm1pbig4NSwgbGF0aXR1ZGUpKTtcbiAgcmV0dXJuIHpvb21BZGp1c3QoMCkgLSB6b29tQWRqdXN0KGNsYW1wZWQpO1xufVxuXG4vKipcbiAqIEdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlci5cbiAqXG4gKiAtIGBtYXBib3hgIHVzZXMgTWFwYm94IHZlY3Rvci9yYXN0ZXIgdGlsZXMgYW5kIHJlcXVpcmVzIGFuIGFjY2VzcyB0b2tlbi5cbiAqIC0gYGNhcnRvYCB1c2VzIENBUlRPJ3MgZnJlZSBPcGVuTWFwVGlsZXMgdmVjdG9yIHRpbGVzICsgRXNyaSBXb3JsZCBJbWFnZXJ5XG4gKiAgIHJhc3RlciwgYW5kIG5lZWRzIG5vIHRva2VuLiBVc2VkIGFzIGFuIGF1dG9tYXRpYyBmYWxsYmFjayB3aGVuIG5vIE1hcGJveFxuICogICB0b2tlbiBpcyBhdmFpbGFibGUgKGUuZy4gTWFwTGlicmUgLyBDQVJUTyBiYXNlbWFwIHNldHVwcyksIHNvIHRoZSBnbG9iZVxuICogICBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgaW5zdGVhZCBvZiBzaG93aW5nIGEgc29saWQtY29sb3Igc3BoZXJlLlxuICovXG5leHBvcnQgdHlwZSBHbG9iZUJhc2VtYXBQcm92aWRlciA9ICdtYXBib3gnIHwgJ2NhcnRvJztcblxuLyoqXG4gKiBSZXNvbHZlIHdoaWNoIGdsb2JlIGJhc2VtYXAgdGlsZSBwcm92aWRlciB0byB1c2UuXG4gKlxuICogVGhlIGdsb2JlIHNob3VsZCBmb2xsb3cgdGhlICpzZWxlY3RlZCBiYXNlbWFwIHN0eWxlJ3MqIHJlbmRlcmluZyBsaWJyYXJ5IHNvXG4gKiBpdCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGZsYXQgMkQgbWFwOiBhIE1hcExpYnJlL0NBUlRPIHN0eWxlIHVzZXMgdGhlXG4gKiBmcmVlIENBUlRPIHRpbGVzIChldmVuIHdoZW4gYSBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlKSwgYW5kIGEgTWFwYm94IHN0eWxlXG4gKiB1c2VzIE1hcGJveCB0aWxlcy4gQSBNYXBib3ggc3R5bGUgd2l0aCBubyB0b2tlbiBmYWxscyBiYWNrIHRvIENBUlRPIHNvIHRoZVxuICogZ2xvYmUgc3RpbGwgcmVuZGVycyBpbnN0ZWFkIG9mIHNob3dpbmcgYSBiYXJlIGNvbG9yZWQgc3BoZXJlLlxuICpcbiAqIEBwYXJhbSBiYXNlTWFwTGlicmFyeSB0aGUgc2VsZWN0ZWQgc3R5bGUncyBsaWJyYXJ5ICgnbWFwYm94JyB8ICdtYXBsaWJyZScpLFxuICogICBlLmcuIGZyb20gYGdldEJhc2VNYXBMaWJyYXJ5KGN1cnJlbnRTdHlsZSlgLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUdsb2JlQmFzZW1hcFByb3ZpZGVyID0gKFxuICBiYXNlTWFwTGlicmFyeTogJ21hcGJveCcgfCAnbWFwbGlicmUnIHwgdW5kZWZpbmVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZ1xuKTogR2xvYmVCYXNlbWFwUHJvdmlkZXIgPT4ge1xuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBsaWJyZScpIHtcbiAgICByZXR1cm4gJ2NhcnRvJztcbiAgfVxuICBpZiAoYmFzZU1hcExpYnJhcnkgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gJ21hcGJveCcgOiAnY2FydG8nO1xuICB9XG4gIC8vIFVua25vd24gbGlicmFyeTogcHJlZmVyIE1hcGJveCB3aGVuIGEgdG9rZW4gZXhpc3RzLCBvdGhlcndpc2UgQ0FSVE8uXG4gIHJldHVybiBtYXBib3hBcGlBY2Nlc3NUb2tlbiA/ICdtYXBib3gnIDogJ2NhcnRvJztcbn07XG5cbi8vIENBUlRPIGZyZWUgdmVjdG9yIHRpbGVzIChPcGVuTWFwVGlsZXMgc2NoZW1hLCBubyBBUEkga2V5IHJlcXVpcmVkKS5cbmNvbnN0IENBUlRPX1ZFQ1RPUl9USUxFX1VSTFMgPSBbXG4gICdodHRwczovL3RpbGVzLWEuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0JyxcbiAgJ2h0dHBzOi8vdGlsZXMtYi5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vdmVjdG9ydGlsZXMvY2FydG8uc3RyZWV0cy92MS97en0ve3h9L3t5fS5tdnQnLFxuICAnaHR0cHM6Ly90aWxlcy1jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS92ZWN0b3J0aWxlcy9jYXJ0by5zdHJlZXRzL3YxL3t6fS97eH0ve3l9Lm12dCcsXG4gICdodHRwczovL3RpbGVzLWQuYmFzZW1hcHMuY2FydG9jZG4uY29tL3ZlY3RvcnRpbGVzL2NhcnRvLnN0cmVldHMvdjEve3p9L3t4fS97eX0ubXZ0J1xuXTtcblxuLy8gRnJlZSBzYXRlbGxpdGUgcmFzdGVyIGZhbGxiYWNrIChFc3JpIFdvcmxkIEltYWdlcnksIG5vIEFQSSBrZXkgcmVxdWlyZWQpLlxuY29uc3QgRVNSSV9XT1JMRF9JTUFHRVJZX1VSTCA9XG4gICdodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyL3RpbGUve3p9L3t5fS97eH0nO1xuXG4vKipcbiAqIE1hcHMgYSByYXcgTVZUIHNvdXJjZS1sYXllciBuYW1lIHRvIGEgbm9ybWFsaXplZCBzZW1hbnRpYyBsYXllciBraW5kLCBzbyB0aGVcbiAqIGZpbGwvbGluZS9sYWJlbCBhY2Nlc3NvcnMgd29yayBhY3Jvc3MgYm90aCB0aGUgTWFwYm94IChgbWFwYm94LXN0cmVldHMtdjhgKVxuICogYW5kIENBUlRPL09wZW5NYXBUaWxlcyBzY2hlbWFzLlxuICpcbiAqIHwgc2VtYW50aWMgfCBtYXBib3ggICAgICAgIHwgb3Blbm1hcHRpbGVzIHxcbiAqIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHxcbiAqIHwgd2F0ZXIgICAgfCBgd2F0ZXJgICAgICAgIHwgYHdhdGVyYCAgICAgIHxcbiAqIHwgYWRtaW4gICAgfCBgYWRtaW5gICAgICAgIHwgYGJvdW5kYXJ5YCAgIHxcbiAqIHwgbGFiZWwgICAgfCBgcGxhY2VfbGFiZWxgIHwgYHBsYWNlYCAgICAgIHxcbiAqL1xudHlwZSBCYXNlbWFwTGF5ZXJLaW5kID0gJ3dhdGVyJyB8ICdhZG1pbicgfCAnbGFiZWwnIHwgJ290aGVyJztcblxuZnVuY3Rpb24gZ2V0QmFzZW1hcExheWVyS2luZChsYXllck5hbWU/OiBzdHJpbmcpOiBCYXNlbWFwTGF5ZXJLaW5kIHtcbiAgc3dpdGNoIChsYXllck5hbWUpIHtcbiAgICBjYXNlICd3YXRlcic6XG4gICAgICByZXR1cm4gJ3dhdGVyJztcbiAgICBjYXNlICdhZG1pbic6XG4gICAgY2FzZSAnYm91bmRhcnknOlxuICAgICAgcmV0dXJuICdhZG1pbic7XG4gICAgY2FzZSAncGxhY2VfbGFiZWwnOlxuICAgIGNhc2UgJ3BsYWNlJzpcbiAgICAgIHJldHVybiAnbGFiZWwnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ290aGVyJztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHbG9iZUF0dHJpYnV0aW9uID0ge2xhYmVsOiBzdHJpbmc7IGhyZWY6IHN0cmluZ307XG5cbmNvbnN0IE1BUEJPWF9BVFRSSUJVVElPTjogR2xvYmVBdHRyaWJ1dGlvbiA9IHtcbiAgbGFiZWw6ICfCqSBNYXBib3gnLFxuICBocmVmOiAnaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzLydcbn07XG5jb25zdCBPU01fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgT3BlblN0cmVldE1hcCcsXG4gIGhyZWY6ICdodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQnXG59O1xuY29uc3QgQ0FSVE9fQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnwqkgQ0FSVE8nLFxuICBocmVmOiAnaHR0cHM6Ly9jYXJ0by5jb20vYXR0cmlidXRpb25zJ1xufTtcbmNvbnN0IEVTUklfQVRUUklCVVRJT046IEdsb2JlQXR0cmlidXRpb24gPSB7XG4gIGxhYmVsOiAnUG93ZXJlZCBieSBFc3JpJyxcbiAgaHJlZjogJ2h0dHBzOi8vd3d3LmVzcmkuY29tLydcbn07XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgdGlsZS1zb3VyY2UgYXR0cmlidXRpb24gZW50cmllcyBmb3IgdGhlIGdsb2JlIGJhc2VtYXAuIGRlY2suZ2xcbiAqIHJlbmRlcnMgdGhlIGdsb2JlIGJhc2VtYXAgdGlsZXMgaXRzZWxmIChub3QgdGhlIGJhc2UgTWFwbGlicmUvTWFwYm94IG1hcCksIHNvXG4gKiB0aGUgYmFzZSBtYXAncyBhdHRyaWJ1dGlvbiBtYWNoaW5lcnkgbmV2ZXIgc2VlcyB0aGVtLiBUaGlzIGxldHMgdGhlIFVJIGNyZWRpdFxuICogdGhlIGFjdHVhbCB0aWxlIHByb3ZpZGVyKHMpIGluIGdsb2JlIG1vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHbG9iZUJhc2VtYXBBdHRyaWJ1dGlvbnMgPSAoe1xuICBnbG9iZSxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0eWxlVHlwZSxcbiAgYmFzZW1hcFByb3ZpZGVyXG59OiB7XG4gIGdsb2JlPzogR2xvYmU7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBTdHlsZVR5cGU/OiBzdHJpbmc7XG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xufSk6IEdsb2JlQXR0cmlidXRpb25bXSA9PiB7XG4gIGlmICghZ2xvYmU/LmVuYWJsZWQgfHwgIWdsb2JlLmNvbmZpZz8uYmFzZW1hcCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcblxuICBpZiAocHJvdmlkZXIgPT09ICdtYXBib3gnKSB7XG4gICAgcmV0dXJuIG1hcGJveEFwaUFjY2Vzc1Rva2VuID8gW01BUEJPWF9BVFRSSUJVVElPTiwgT1NNX0FUVFJJQlVUSU9OXSA6IFtdO1xuICB9XG5cbiAgY29uc3QgaXNTYXRlbGxpdGUgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUnIHx8IG1hcFN0eWxlVHlwZSA9PT0gJ3NhdGVsbGl0ZS1zdHJlZXQnO1xuICAvLyBDQVJUTyB2ZWN0b3IgdGlsZXMgYXJlIE9wZW5TdHJlZXRNYXAtZGVyaXZlZDsgRXNyaSBpbWFnZXJ5IGlzIGNyZWRpdGVkIHNlcGFyYXRlbHkuXG4gIHJldHVybiBpc1NhdGVsbGl0ZVxuICAgID8gW0VTUklfQVRUUklCVVRJT04sIENBUlRPX0FUVFJJQlVUSU9OLCBPU01fQVRUUklCVVRJT05dXG4gICAgOiBbQ0FSVE9fQVRUUklCVVRJT04sIE9TTV9BVFRSSUJVVElPTl07XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGNvbnN0IGdldEdsb2JlQmFzZUxheWVycyA9ICh7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBnbG9iZSxcbiAgbWFwU3R5bGVUeXBlLFxuICBiYXNlbWFwUHJvdmlkZXIsXG4gIGxhdGl0dWRlLFxuICB6b29tXG59OiB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIGdsb2JlOiBHbG9iZTtcbiAgbWFwU3R5bGVUeXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hpY2ggdGlsZSBwcm92aWRlciB0byB1c2UgZm9yIHRoZSBnbG9iZSBiYXNlbWFwLiBEZWZhdWx0cyB0byBgbWFwYm94YCB3aGVuXG4gICAqIGEgdG9rZW4gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGhlIHRva2VuLWZyZWUgYGNhcnRvYCB0aWxlcy5cbiAgICovXG4gIGJhc2VtYXBQcm92aWRlcj86IEdsb2JlQmFzZW1hcFByb3ZpZGVyO1xuICAvKipcbiAgICogQ3VycmVudCBjYW1lcmEgY2VudGVyIGxhdGl0dWRlLiBVc2VkIHRvIGtlZXAgdGlsZSBMT0QgY29uc3RhbnQgd2hpbGUgcm90YXRpbmdcbiAgICogdG93YXJkIHRoZSBwb2xlcyAoZGVjay5nbCA5IGxvd2VycyB0aGUgZWZmZWN0aXZlIHpvb20gbmVhciB0aGUgcG9sZXMpLiBXaGVuXG4gICAqIG9taXR0ZWQsIG5vIGxhdGl0dWRlIGNvbXBlbnNhdGlvbiBpcyBhcHBsaWVkIChlcXVhdG9yIGJlaGF2aW9yKS5cbiAgICovXG4gIGxhdGl0dWRlPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3VycmVudCBtYXAgem9vbSBsZXZlbC4gVXNlZCB0byBmYWRlIHRoZSBhdG1vc3BoZXJlIGVmZmVjdHMgb3V0IHdoZW4gdGhlIHVzZXJcbiAgICogem9vbXMgaW4gcGFzdCBhIGNlcnRhaW4gdGhyZXNob2xkIChtaXJyb3JzIEdvb2dsZSBNYXBzIGdsb2JlIGJlaGF2aW91cikuXG4gICAqL1xuICB6b29tPzogbnVtYmVyO1xufSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuXG4gIGNvbnN0IGlzU2F0ZWxsaXRlID0gbWFwU3R5bGVUeXBlID09PSAnc2F0ZWxsaXRlJztcbiAgY29uc3QgaXNTYXRlbGxpdGVTdHJlZXQgPSBtYXBTdHlsZVR5cGUgPT09ICdzYXRlbGxpdGUtc3RyZWV0JztcblxuICBjb25zdCBsYXRab29tQ29tcGVuc2F0aW9uID0gZ2xvYmVMYXRpdHVkZVpvb21Db21wZW5zYXRpb24obGF0aXR1ZGUpO1xuXG4gIC8vIEZhbGwgYmFjayB0byB0aGUgZnJlZSBDQVJUTyB0aWxlcyB3aGVuZXZlciBubyBNYXBib3ggdG9rZW4gaXMgYXZhaWxhYmxlIHNvXG4gIC8vIHRoZSBnbG9iZSBiYXNlbWFwIHN0aWxsIHJlbmRlcnMgKG1hdGNoZXMga2VwbGVyJ3MgZGVmYXVsdCB0b2tlbi1mcmVlXG4gIC8vIE1hcExpYnJlL0NBUlRPIGJhc2VtYXBzKS4gQ2FsbGVycyBzaG91bGQgcGFzcyBhbiBleHBsaWNpdCBgYmFzZW1hcFByb3ZpZGVyYFxuICAvLyAoZGVyaXZlZCBmcm9tIHRoZSBzZWxlY3RlZCBzdHlsZSkgc28gdGhlIGdsb2JlIGZvbGxvd3MgdGhlIDJEIGJhc2VtYXAuXG4gIGNvbnN0IHByb3ZpZGVyOiBHbG9iZUJhc2VtYXBQcm92aWRlciA9XG4gICAgYmFzZW1hcFByb3ZpZGVyID8/IHJlc29sdmVHbG9iZUJhc2VtYXBQcm92aWRlcih1bmRlZmluZWQsIG1hcGJveEFwaUFjY2Vzc1Rva2VuKTtcbiAgY29uc3QgdXNlQ2FydG8gPSBwcm92aWRlciA9PT0gJ2NhcnRvJztcbiAgY29uc3QgaGFzVGlsZUFjY2VzcyA9IHVzZUNhcnRvIHx8IEJvb2xlYW4obWFwYm94QXBpQWNjZXNzVG9rZW4pO1xuXG4gIHJldHVybiBbXG4gICAgLy8gSHVnZSBoYWxvIGJlaGluZCB0aGUgdGhpbiByZWFsaXN0aWMgbGltYiBzbyBib3RoIGNhbiBiZSB2aXNpYmxlIHRvZ2V0aGVyLlxuICAgIGNvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVIdWdlSGFsb0xheWVyKHtjb25maWcsIHpvb219KSA6IG51bGwsXG4gICAgY29uZmlnLmF0bW9zcGhlcmUgPyBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllcih7Y29uZmlnLCB6b29tfSkgOiBudWxsLFxuXG4gICAgLy8gRGVwdGgtb25seSBjcm9zcy1zZWN0aW9uIGRpc2s6IHdyaXRlcyBkZXB0aCBhdCB0aGUgZ2xvYmUncyBzaWxob3VldHRlIHNvXG4gICAgLy8gZmFyLXNpZGUgZ2VvbWV0cnkgKGFyY3MvbGluZXMpIGlzIG9jY2x1ZGVkIGJ5IHRoZSBwbGFuZXQuXG4gICAgZ2V0R2xvYmVEZXB0aERpc2tMYXllcih7ZmlsbENvbG9yOiBjb25maWcuc3VyZmFjZUNvbG9yfSksXG5cbiAgICAvLyBCYWNrZ3JvdW5kIHN1cmZhY2UgcG9seWdvblxuICAgICghY29uZmlnLmJhc2VtYXAgfHwgKCFpc1NhdGVsbGl0ZSAmJiAhaXNTYXRlbGxpdGVTdHJlZXQpKSAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kJyxcbiAgICAgICAgZGF0YTogQkFDS0dST1VORF9EQVRBLFxuICAgICAgICBnZXRQb2x5Z29uOiAoKGQ6IG51bWJlcltdW10pID0+IGQpIGFzIGFueSxcbiAgICAgICAgZmlsbGVkOiB0cnVlLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGNvbmZpZy5zdXJmYWNlQ29sb3IgYXMgYW55LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQUNLR1JPVU5EX1BBUkFNRVRFUlNcbiAgICAgIH0pLFxuXG4gICAgLy8gRmlsbCBob2xlIGF0IG5vcnRoIHBvbGVcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6ICdnbG9iZS1iYWNrZ3JvdW5kLW5vcnRoLXBvbGUnLFxuICAgICAgICBkYXRhOiBCQUNLR1JPVU5EX05PUlRIX1BPTEVfREFUQSxcbiAgICAgICAgZ2V0UG9seWdvbjogKChkOiBudW1iZXJbXVtdKSA9PiBkKSBhcyBhbnksXG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiAoY29uZmlnLndhdGVyID8gY29uZmlnLndhdGVyQ29sb3IgOiBjb25maWcuc3VyZmFjZUNvbG9yKSBhcyBhbnksXG4gICAgICAgIHBhcmFtZXRlcnM6IEJBQ0tHUk9VTkRfUEFSQU1FVEVSU1xuICAgICAgfSksXG5cbiAgICAvLyBTYXRlbGxpdGUgdGlsZXNcbiAgICBjb25maWcuYmFzZW1hcCAmJlxuICAgICAgKGlzU2F0ZWxsaXRlIHx8IGlzU2F0ZWxsaXRlU3RyZWV0KSAmJlxuICAgICAgaGFzVGlsZUFjY2VzcyAmJlxuICAgICAgbmV3IFRpbGVMYXllcih7XG4gICAgICAgIGlkOiBgZ2xvYmUtc2F0ZWxsaXRlLXRpbGVzLSR7cHJvdmlkZXJ9YCxcbiAgICAgICAgZGF0YTogdXNlQ2FydG9cbiAgICAgICAgICA/IFtFU1JJX1dPUkxEX0lNQUdFUllfVVJMXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBgaHR0cHM6Ly9hcGkubWFwYm94LmNvbS92NC9tYXBib3guc2F0ZWxsaXRlL3t6fS97eH0ve3l9QDJ4LnBuZz9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn1gXG4gICAgICAgICAgICBdLFxuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IDE4IDogMTksXG4gICAgICAgIHpvb21PZmZzZXQ6IEdMT0JFX1NBVEVMTElURV9aT09NX09GRlNFVCArIGxhdFpvb21Db21wZW5zYXRpb24sXG4gICAgICAgIGV4dGVudDogR0xPQkVfVElMRV9FWFRFTlQsXG4gICAgICAgIC8vIEVzcmkgdGlsZXMgYXJlIDI1NnB4OyBNYXBib3ggQDJ4IHRpbGVzIGFyZSA1MTJweC5cbiAgICAgICAgdGlsZVNpemU6IHVzZUNhcnRvID8gMjU2IDogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9XG4gICAgICAgICAgfSA9IHByb3BzLnRpbGU7XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEJpdG1hcExheWVyKHByb3BzLCB7XG4gICAgICAgICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuZGF0YSxcbiAgICAgICAgICAgICAgYm91bmRzOiBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX1JBU1RFUl9QQVJBTUVURVJTXG4gICAgICB9KSxcblxuICAgIC8vIFZlY3RvciBiYXNlbWFwIChNVlQgbGFiZWxzL2FkbWluL3dhdGVyKVxuICAgIGNvbmZpZy5iYXNlbWFwICYmXG4gICAgICAhaXNTYXRlbGxpdGUgJiZcbiAgICAgIGhhc1RpbGVBY2Nlc3MgJiZcbiAgICAgIG5ldyBNVlRMYXllcih7XG4gICAgICAgIC8vIGZvcmNlIHRoZSBsYXllciB0byB1cGRhdGUgd2hlbiB0aGUgc3R5bGUvbGFiZWwvcHJvdmlkZXIgY29uZmlnIGNoYW5nZXNcbiAgICAgICAgaWQ6IGBnbG9iZS1iYXNlbWFwLW12dC1sYXllci0ke3Byb3ZpZGVyfS0ke21hcFN0eWxlVHlwZX1gLFxuICAgICAgICBkYXRhOiB1c2VDYXJ0b1xuICAgICAgICAgID8gQ0FSVE9fVkVDVE9SX1RJTEVfVVJMU1xuICAgICAgICAgIDogYGh0dHBzOi8vYS50aWxlcy5tYXBib3guY29tL3Y0L21hcGJveC5tYXBib3gtc3RyZWV0cy12OC97en0ve3h9L3t5fS52ZWN0b3IucGJmP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufWAsXG4gICAgICAgIG1pblpvb206IDAsXG4gICAgICAgIC8vIE92ZXJ6b29tIHBhc3QgdGhlIHNvdXJjZSdzIG5hdGl2ZSBtYXggaW5zdGVhZCBvZiA0MDQtaW5nIG9uIHRpbGVzIHRoYXRcbiAgICAgICAgLy8gZG9uJ3QgZXhpc3QgKHdoaWNoIHJlbmRlcnMgYXMgZW1wdHkgcmVjdGFuZ2xlcyBhdCBoaWdoIHpvb20pLlxuICAgICAgICBtYXhab29tOiB1c2VDYXJ0byA/IENBUlRPX1ZFQ1RPUl9NQVhfREFUQV9aT09NIDogTUFQQk9YX1ZFQ1RPUl9NQVhfREFUQV9aT09NLFxuICAgICAgICB6b29tT2Zmc2V0OlxuICAgICAgICAgICh1c2VDYXJ0byA/IENBUlRPX0dMT0JFX1ZFQ1RPUl9aT09NX09GRlNFVCA6IE1BUEJPWF9HTE9CRV9WRUNUT1JfWk9PTV9PRkZTRVQpICtcbiAgICAgICAgICBsYXRab29tQ29tcGVuc2F0aW9uLFxuICAgICAgICBleHRlbnQ6IEdMT0JFX1RJTEVfRVhURU5ULFxuICAgICAgICBiaW5hcnk6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBCQVNFTUFQX01WVF9QQVJBTUVURVJTLFxuICAgICAgICBsb2FkT3B0aW9uczogdXNlQ2FydG9cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLy8gT3Blbk1hcFRpbGVzIHNjaGVtYTogYGJvdW5kYXJ5YCA9IGFkbWluIGxpbmVzLCBgcGxhY2VgID0gbGFiZWxzLlxuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2UnLCAnYm91bmRhcnknXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlJywgJ2JvdW5kYXJ5JywgJ3dhdGVyJywgJ3RyYW5zcG9ydGF0aW9uJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBtdnQ6IHtcbiAgICAgICAgICAgICAgICBsYXllcnM6IGlzU2F0ZWxsaXRlU3RyZWV0XG4gICAgICAgICAgICAgICAgICA/IFsncGxhY2VfbGFiZWwnLCAnYWRtaW4nXVxuICAgICAgICAgICAgICAgICAgOiBbJ3BsYWNlX2xhYmVsJywgJ2FkbWluJywgJ3dhdGVyJywgJ3JvYWQnXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAvLyBSZW5kZXIgYWRtaW4vd2F0ZXIgdmlhIEdlb0pzb25MYXllciBhbmQgcGxhY2UgbGFiZWxzIHZpYSBUZXh0TGF5ZXIuXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiAocHJvcHM6IGFueSkgPT4gbmV3IE1WVExhYmVsTGF5ZXIocHJvcHMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3dhdGVyJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy53YXRlciA/IGNvbmZpZy53YXRlckNvbG9yIDogSU5WSVNJQkxFX0NPTE9SO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zdXJmYWNlQ29sb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRMaW5lQ29sb3I6IChmOiBhbnkpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGdldEJhc2VtYXBMYXllcktpbmQoZi5wcm9wZXJ0aWVzLmxheWVyTmFtZSkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FkbWluJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5hZG1pbkxpbmVzID8gY29uZmlnLmFkbWluTGluZXNDb2xvciA6IElOVklTSUJMRV9DT0xPUjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBjb25maWcuc3VyZmFjZUNvbG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiAoZjogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChnZXRCYXNlbWFwTGF5ZXJLaW5kKGYucHJvcGVydGllcy5sYXllck5hbWUpKSB7XG4gICAgICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgICAgIHN3aXRjaCAoZi5wcm9wZXJ0aWVzLmFkbWluX2xldmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gMC43NTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogW2NvbmZpZy53YXRlckNvbG9yLCBjb25maWcuc3VyZmFjZUNvbG9yLCBjb25maWcud2F0ZXJdLFxuICAgICAgICAgIGdldExpbmVDb2xvcjogW2NvbmZpZy5hZG1pbkxpbmVzQ29sb3IsIGNvbmZpZy5zdXJmYWNlQ29sb3IsIGNvbmZpZy5hZG1pbkxpbmVzXVxuICAgICAgICB9LFxuICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIGxpbmVXaWR0aE1pblBpeGVsczogMCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiAyMCxcbiAgICAgICAgZ2V0UG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIHBvaW50UmFkaXVzTWluUGl4ZWxzOiAwXG4gICAgICB9IGFzIGFueSlcbiAgXS5maWx0ZXIoQm9vbGVhbikgYXMgTGF5ZXJbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iZVRvcExheWVycyA9ICh7Z2xvYmUsIHpvb219OiB7Z2xvYmU6IEdsb2JlOyB6b29tPzogbnVtYmVyfSk6IExheWVyW10gPT4ge1xuICBjb25zdCB7Y29uZmlnfSA9IGdsb2JlO1xuICByZXR1cm4gW2NvbmZpZy5hdG1vc3BoZXJlID8gZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIoe2NvbmZpZywgem9vbX0pIDogbnVsbF0uZmlsdGVyKFxuICAgIEJvb2xlYW5cbiAgKSBhcyBMYXllcltdO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFLQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBS0EsSUFBQUksb0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQWhCQTtBQUNBOztBQW1CQSxJQUFNTSxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQy9CLENBQUMsRUFDQSxPQUFPQyxNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUNILGdCQUFnQixJQUFLLENBQ2hFLENBQUM7QUFFRCxJQUFNSSxxQkFBcUIsR0FBRztFQUM1QkMsU0FBUyxFQUFFLElBQUk7RUFDZkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVELElBQU1DLHlCQUF5QixHQUFHO0VBQ2hDRCxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRUQsSUFBTUUsZUFBZSxHQUFHLENBQ3RCLENBQ0UsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDUCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVCxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ1IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQ0Y7QUFFRCxJ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
|
|
@@ -96,4 +96,4 @@ function drawStarsBackground(ctx, width, height) {
|
|
|
96
96
|
ctx.fillStyle = pattern;
|
|
97
97
|
ctx.fillRect(0, 0, width, height);
|
|
98
98
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFSX0NBTlZBU19TSVpFIiwiU1RBUl9DT1VOVCIsInNlZWRlZFJhbmRvbSIsInNlZWQiLCJzIiwiVFJBTlNQQVJFTlRfUElYRUwiLCJjYWNoZWRDYW52YXMiLCJjYWNoZWREYXRhVXJsIiwiZ2VuZXJhdGVTdGFyc1RpbGUiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImN0eCIsImdldENvbnRleHQiLCJjbGVhclJlY3QiLCJyYW5kb20iLCJpIiwieCIsInkiLCJicmlnaHRuZXNzIiwiTWF0aCIsImZsb29yIiwiYWxwaGEiLCJyYWRpdXMiLCJiZWdpblBhdGgiLCJhcmMiLCJQSSIsImZpbGxTdHlsZSIsImNvbmNhdCIsImZpbGwiLCJnZXRTdGFyc1RpbGVDYW52YXMiLCJnZXRTdGFyc0JhY2tncm91bmRJbWFnZSIsInRvRGF0YVVSTCIsImRyYXdTdGFyc0JhY2tncm91bmQiLCJ0aWxlIiwicGF0dGVybiIsImNyZWF0ZVBhdHRlcm4iLCJmaWxsUmVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iZS9nbG9iZS1zdGFycy1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHRpbGVhYmxlIHN0YXItZmllbGQgdXNlZCBiZWhpbmQgdGhlIGdsb2JlLlxuICogVGhlIGxpdmUgbWFwIGFuZCB2aWRlby1leHBvcnQgcHJldmlldyBwYWludCBpdCBhcyBhIENTUyBgYmFja2dyb3VuZC1pbWFnZWBcbiAqIHdpdGggYGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXRgLiBWaWRlby1leHBvcnQgY2FwdHVyZSAod2hpY2ggb25seSByZWFkc1xuICogY2FudmFzIHBpeGVscykgdGlsZXMgdGhlIHNhbWUgaW1hZ2Ugb250byBhIDJEIGNvbnRleHQgdmlhXG4gKiBgZHJhd1N0YXJzQmFja2dyb3VuZGAuIFRoZSByZXN1bHQgaXMgZGV0ZXJtaW5pc3RpYyAoc2VlZGVkIFBSTkcpIGFuZCBjYWNoZWRcbiAqIHNvIGl0J3Mgb25seSBnZW5lcmF0ZWQgb25jZS5cbiAqL1xuXG5jb25zdCBTVEFSX0NBTlZBU19TSVpFID0gNTEyO1xuY29uc3QgU1RBUl9DT1VOVCA9IDYwMDtcblxuLy8gU2VlZGVkIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoUGFyay1NaWxsZXIpIGZvciBkZXRlcm1pbmlzbS5cbmZ1bmN0aW9uIHNlZWRlZFJhbmRvbShzZWVkOiBudW1iZXIpOiAoKSA9PiBudW1iZXIge1xuICBsZXQgcyA9IHNlZWQ7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgcyA9IChzICogMTY4MDcpICUgMjE0NzQ4MzY0NztcbiAgICByZXR1cm4gKHMgLSAxKSAvIDIxNDc0ODM2NDY7XG4gIH07XG59XG5cbi8vIFRyYW5zcGFyZW50IDF4MSBQTkcgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYSBjYW52YXMgY29udGV4dCBpcyB1bmF2YWlsYWJsZVxuLy8gKFNTUiBvciB1bnN1cHBvcnRlZCBicm93c2VyKSwgc28gdGhhdCBgdXJsKC4uLilgIG5ldmVyIHJlc29sdmVzIHRvIGFuIGVtcHR5XG4vLyB2YWx1ZSB0aGF0IGNvdWxkIHRyaWdnZXIgYSByZXF1ZXN0IGZvciB0aGUgY3VycmVudCBkb2N1bWVudC5cbmNvbnN0IFRSQU5TUEFSRU5UX1BJWEVMID1cbiAgJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBUUFBQUMxSEF3Q0FBQUFDMGxFUVZSNDJtTmtZQUFBQUFZQUFqQ0IwQzhBQUFBQVNVVk9SSzVDWUlJPSc7XG5cbmxldCBjYWNoZWRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgY2FjaGVkRGF0YVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU3RhcnNUaWxlKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY2FudmFzLndpZHRoID0gU1RBUl9DQU5WQVNfU0laRTtcbiAgY2FudmFzLmhlaWdodCA9IFNUQVJfQ0FOVkFTX1NJWkU7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gVHJhbnNwYXJlbnQgYmFja2dyb3VuZCBzbyBDU1MgYmFja2dyb3VuZENvbG9yIC8gY2FudmFzIGZpbGwgc2hvd3MgdGhyb3VnaFxuICBjdHguY2xlYXJSZWN0KDAsIDAsIFNUQVJfQ0FOVkFTX1NJWkUsIFNUQVJfQ0FOVkFTX1NJWkUpO1xuXG4gIGNvbnN0IHJhbmRvbSA9IHNlZWRlZFJhbmRvbSg0Mik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBTVEFSX0NPVU5UOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcmFuZG9tKCkgKiBTVEFSX0NBTlZBU19TSVpFO1xuICAgIGNvbnN0IHkgPSByYW5kb20oKSAqIFNUQVJfQ0FOVkFTX1NJWkU7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDE0MCArIE1hdGguZmxvb3IocmFuZG9tKCkgKiAxMTUpOyAvLyAxNDDigJMyNTVcbiAgICBjb25zdCBhbHBoYSA9IDAuNCArIHJhbmRvbSgpICogMC42OyAvLyAwLjTigJMxLjBcbiAgICBjb25zdCByYWRpdXMgPSAwLjMgKyByYW5kb20oKSAqIDEuMDsgLy8gMC4z4oCTMS4zIHB4XG5cbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4LmFyYyh4LCB5LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyKTtcbiAgICBjdHguZmlsbFN0eWxlID0gYHJnYmEoJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHticmlnaHRuZXNzfSwgJHthbHBoYX0pYDtcbiAgICBjdHguZmlsbCgpO1xuICB9XG5cbiAgcmV0dXJuIGNhbnZhcztcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnNUaWxlQ2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gIGlmIChjYWNoZWRDYW52YXMpIHJldHVybiBjYWNoZWRDYW52YXM7XG4gIGNhY2hlZENhbnZhcyA9IGdlbmVyYXRlU3RhcnNUaWxlKCk7XG4gIHJldHVybiBjYWNoZWRDYW52YXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRhdGEgVVJMIG9mIGEgdGlsZWFibGUgc3Rhci1maWVsZCBpbWFnZSAoNTEyw5c1MTIgUE5HKS5cbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2Ugb25jZSBhbmQgY2FjaGVzIGl0IGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhcnNCYWNrZ3JvdW5kSW1hZ2UoKTogc3RyaW5nIHtcbiAgaWYgKGNhY2hlZERhdGFVcmwpIHJldHVybiBjYWNoZWREYXRhVXJsO1xuXG4gIGNvbnN0IGNhbnZhcyA9IGdldFN0YXJzVGlsZUNhbnZhcygpO1xuICBpZiAoIWNhbnZhcykge1xuICAgIC8vIFNTUiAvIG1pc3NpbmcgMkQgY29udGV4dDogcmV0dXJuIGEgdHJhbnNwYXJlbnQgMXgxIHBpeGVsIHNvIHVybCgpIG5ldmVyXG4gICAgLy8gcmVzb2x2ZXMgdG8gYW4gZW1wdHkgdmFsdWUgdGhhdCBjb3VsZCB0cmlnZ2VyIGEgcmVxdWVzdCBmb3IgdGhlIGRvY3VtZW50LlxuICAgIHJldHVybiAoY2FjaGVkRGF0YVVybCA9IFRSQU5TUEFSRU5UX1BJWEVMKTtcbiAgfVxuXG4gIGNhY2hlZERhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgcmV0dXJuIGNhY2hlZERhdGFVcmw7XG59XG5cbi8qKlxuICogVGlsZSB0aGUgc3Rhci1maWVsZCBvbnRvIGEgMkQgY2FudmFzIChlLmcuIHZpZGVvLWV4cG9ydCBmcmFtZSBjYXB0dXJlKS5cbiAqIFN0YXJzIGFyZSBkcmF3biB3aXRoIGFscGhhIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGZpbGwgdGhlIGJhY2tncm91bmQgY29sb3IgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3U3RhcnNCYWNrZ3JvdW5kKFxuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgd2lkdGg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXJcbik6IHZvaWQge1xuICBjb25zdCB0aWxlID0gZ2V0U3RhcnNUaWxlQ2FudmFzKCk7XG4gIGlmICghdGlsZSB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSByZXR1cm47XG4gIGNvbnN0IHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybih0aWxlLCAncmVwZWF0Jyk7XG4gIGlmICghcGF0dGVybikgcmV0dXJuO1xuICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLGdCQUFnQixHQUFHLEdBQUc7QUFDNUIsSUFBTUMsVUFBVSxHQUFHLEdBQUc7O0FBRXRCO0FBQ0EsU0FBU0MsWUFBWUEsQ0FBQ0MsSUFBWSxFQUFnQjtFQUNoRCxJQUFJQyxDQUFDLEdBQUdELElBQUk7RUFDWixPQUFPLFlBQU07SUFDWEMsQ0FBQyxHQUFJQSxDQUFDLEdBQUcsS0FBSyxHQUFJLFVBQVU7SUFDNUIsT0FBTyxDQUFDQSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVU7RUFDN0IsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGlCQUFpQixHQUNyQixvSEFBb0g7QUFFdEgsSUFBSUMsWUFBc0MsR0FBRyxJQUFJO0FBQ2pELElBQUlDLGFBQTRCLEdBQUcsSUFBSTtBQUV2QyxTQUFTQyxpQkFBaUJBLENBQUEsRUFBNkI7RUFDckQsSUFBSSxPQUFPQyxRQUFRLEtBQUssV0FBVyxFQUFFO0lBQ25DLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTUMsTUFBTSxHQUFHRCxRQUFRLENBQUNFLGFBQWEsQ0FBQyxRQUFRLENBQUM7RUFDL0NELE1BQU0sQ0FBQ0UsS0FBSyxHQUFHWixnQkFBZ0I7RUFDL0JVLE1BQU0sQ0FBQ0csTUFBTSxHQUFHYixnQkFBZ0I7RUFDaEMsSUFBTWMsR0FBRyxHQUFHSixNQUFNLENBQUNLLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDbkMsSUFBSSxDQUFDRCxHQUFHLEVBQUUsT0FBTyxJQUFJOztFQUVyQjtFQUNBQSxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFaEIsZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDO0VBRXZELElBQU1pQixNQUFNLEdBQUdmLFlBQVksQ0FBQyxFQUFFLENBQUM7RUFFL0IsS0FBSyxJQUFJZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHakIsVUFBVSxFQUFFaUIsQ0FBQyxFQUFFLEVBQUU7SUFDbkMsSUFBTUMsQ0FBQyxHQUFHRixNQUFNLENBQUMsQ0FBQyxHQUFHakIsZ0JBQWdCO0lBQ3JDLElBQU1vQixDQUFDLEdBQUdILE1BQU0sQ0FBQyxDQUFDLEdBQUdqQixnQkFBZ0I7SUFDckMsSUFBTXFCLFVBQVUsR0FBRyxHQUFHLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTixNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBTU8sS0FBSyxHQUFHLEdBQUcsR0FBR1AsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFNUSxNQUFNLEdBQUcsR0FBRyxHQUFHUixNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDOztJQUVyQ0gsR0FBRyxDQUFDWSxTQUFTLENBQUMsQ0FBQztJQUNmWixHQUFHLENBQUNhLEdBQUcsQ0FBQ1IsQ0FBQyxFQUFFQyxDQUFDLEVBQUVLLE1BQU0sRUFBRSxDQUFDLEVBQUVILElBQUksQ0FBQ00sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQ2QsR0FBRyxDQUFDZSxTQUFTLFdBQUFDLE1BQUEsQ0FBV1QsVUFBVSxRQUFBUyxNQUFBLENBQUtULFVBQVUsUUFBQVMsTUFBQSxDQUFLVCxVQUFVLFFBQUFTLE1BQUEsQ0FBS04sS0FBSyxNQUFHO0lBQzdFVixHQUFHLENBQUNpQixJQUFJLENBQUMsQ0FBQztFQUNaO0VBRUEsT0FBT3JCLE1BQU07QUFDZjtBQUVBLFNBQVNzQixrQkFBa0JBLENBQUEsRUFBNkI7RUFDdEQsSUFBSTFCLFlBQVksRUFBRSxPQUFPQSxZQUFZO0VBQ3JDQSxZQUFZLEdBQUdFLGlCQUFpQixDQUFDLENBQUM7RUFDbEMsT0FBT0YsWUFBWTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVMyQix1QkFBdUJBLENBQUEsRUFBVztFQUNoRCxJQUFJMUIsYUFBYSxFQUFFLE9BQU9BLGFBQWE7RUFFdkMsSUFBTUcsTUFBTSxHQUFHc0Isa0JBQWtCLENBQUMsQ0FBQztFQUNuQyxJQUFJLENBQUN0QixNQUFNLEVBQUU7SUFDWDtJQUNBO0lBQ0EsT0FBUUgsYUFBYSxHQUFHRixpQkFBaUI7RUFDM0M7RUFFQUUsYUFBYSxHQUFHRyxNQUFNLENBQUN3QixTQUFTLENBQUMsV0FBVyxDQUFDO0VBQzdDLE9BQU8zQixhQUFhO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzRCLG1CQUFtQkEsQ0FDakNyQixHQUE2QixFQUM3QkYsS0FBYSxFQUNiQyxNQUFjLEVBQ1I7RUFDTixJQUFNdUIsSUFBSSxHQUFHSixrQkFBa0IsQ0FBQyxDQUFDO0VBQ2pDLElBQUksQ0FBQ0ksSUFBSSxJQUFJeEIsS0FBSyxJQUFJLENBQUMsSUFBSUMsTUFBTSxJQUFJLENBQUMsRUFBRTtFQUN4QyxJQUFNd0IsT0FBTyxHQUFHdkIsR0FBRyxDQUFDd0IsYUFBYSxDQUFDRixJQUFJLEVBQUUsUUFBUSxDQUFDO0VBQ2pELElBQUksQ0FBQ0MsT0FBTyxFQUFFO0VBQ2R2QixHQUFHLENBQUNlLFNBQVMsR0FBR1EsT0FBTztFQUN2QnZCLEdBQUcsQ0FBQ3lCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFM0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7QUFDbkMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -39,4 +39,4 @@ describe('globe-stars-layer', function () {
|
|
|
39
39
|
expect(destCtx.fillRect).toHaveBeenCalledWith(0, 0, 1280, 720);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2xvYmVTdGFyc0xheWVyIiwicmVxdWlyZSIsImRlc2NyaWJlIiwiYWZ0ZXJFYWNoIiwiamVzdCIsInJlc3RvcmVBbGxNb2NrcyIsInRlc3QiLCJ0aWxlQ3R4IiwiY2xlYXJSZWN0IiwiZm4iLCJiZWdpblBhdGgiLCJhcmMiLCJmaWxsIiwiZmlsbFN0eWxlIiwib3JpZ2luYWxHZXRDb250ZXh0IiwiSFRNTENhbnZhc0VsZW1lbnQiLCJwcm90b3R5cGUiLCJnZXRDb250ZXh0Iiwic3B5T24iLCJtb2NrSW1wbGVtZW50YXRpb24iLCJ0eXBlIiwiY2FsbCIsInBhdHRlcm4iLCJpZCIsImRlc3RDdHgiLCJjcmVhdGVQYXR0ZXJuIiwiZmlsbFJlY3QiLCJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJhbnkiLCJ0b0JlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JlL2dsb2JlLXN0YXJzLWxheWVyLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtkcmF3U3RhcnNCYWNrZ3JvdW5kfSBmcm9tICcuL2dsb2JlLXN0YXJzLWxheWVyJztcblxuZGVzY3JpYmUoJ2dsb2JlLXN0YXJzLWxheWVyJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RyYXdTdGFyc0JhY2tncm91bmQgdGlsZXMgdGhlIHN0YXIgY2FudmFzIHdpdGggYSByZXBlYXRpbmcgcGF0dGVybicsICgpID0+
|
|
42
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2xvYmVTdGFyc0xheWVyIiwicmVxdWlyZSIsImRlc2NyaWJlIiwiYWZ0ZXJFYWNoIiwiamVzdCIsInJlc3RvcmVBbGxNb2NrcyIsInRlc3QiLCJ0aWxlQ3R4IiwiY2xlYXJSZWN0IiwiZm4iLCJiZWdpblBhdGgiLCJhcmMiLCJmaWxsIiwiZmlsbFN0eWxlIiwib3JpZ2luYWxHZXRDb250ZXh0IiwiSFRNTENhbnZhc0VsZW1lbnQiLCJwcm90b3R5cGUiLCJnZXRDb250ZXh0Iiwic3B5T24iLCJtb2NrSW1wbGVtZW50YXRpb24iLCJ0eXBlIiwiY2FsbCIsInBhdHRlcm4iLCJpZCIsImRlc3RDdHgiLCJjcmVhdGVQYXR0ZXJuIiwiZmlsbFJlY3QiLCJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJhbnkiLCJ0b0JlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JlL2dsb2JlLXN0YXJzLWxheWVyLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtkcmF3U3RhcnNCYWNrZ3JvdW5kfSBmcm9tICcuL2dsb2JlLXN0YXJzLWxheWVyJztcblxuZGVzY3JpYmUoJ2dsb2JlLXN0YXJzLWxheWVyJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RyYXdTdGFyc0JhY2tncm91bmQgdGlsZXMgdGhlIHN0YXIgY2FudmFzIHdpdGggYSByZXBlYXRpbmcgcGF0dGVybicsICgpID0+IHtcbiAgICBjb25zdCB0aWxlQ3R4ID0ge1xuICAgICAgY2xlYXJSZWN0OiBqZXN0LmZuKCksXG4gICAgICBiZWdpblBhdGg6IGplc3QuZm4oKSxcbiAgICAgIGFyYzogamVzdC5mbigpLFxuICAgICAgZmlsbDogamVzdC5mbigpLFxuICAgICAgZmlsbFN0eWxlOiAnJ1xuICAgIH07XG4gICAgY29uc3Qgb3JpZ2luYWxHZXRDb250ZXh0ID0gSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldENvbnRleHQ7XG4gICAgamVzdFxuICAgICAgLnNweU9uKEhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZSwgJ2dldENvbnRleHQnKVxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbihmdW5jdGlvbiBnZXRDb250ZXh0KHRoaXM6IEhUTUxDYW52YXNFbGVtZW50LCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICcyZCcpIHtcbiAgICAgICAgICByZXR1cm4gdGlsZUN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxHZXRDb250ZXh0LmNhbGwodGhpcywgdHlwZSk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHBhdHRlcm4gPSB7aWQ6ICdzdGFycy1wYXR0ZXJuJ307XG4gICAgY29uc3QgZGVzdEN0eCA9IHtcbiAgICAgIGNyZWF0ZVBhdHRlcm46IGplc3QuZm4oKCkgPT4gcGF0dGVybiksXG4gICAgICBmaWxsUmVjdDogamVzdC5mbigpLFxuICAgICAgZmlsbFN0eWxlOiAnJyBhcyBzdHJpbmcgfCBDYW52YXNQYXR0ZXJuXG4gICAgfTtcblxuICAgIGRyYXdTdGFyc0JhY2tncm91bmQoZGVzdEN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgMTI4MCwgNzIwKTtcblxuICAgIGV4cGVjdChkZXN0Q3R4LmNyZWF0ZVBhdHRlcm4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5hbnkoSFRNTENhbnZhc0VsZW1lbnQpLCAncmVwZWF0Jyk7XG4gICAgZXhwZWN0KGRlc3RDdHguZmlsbFN0eWxlKS50b0JlKHBhdHRlcm4pO1xuICAgIGV4cGVjdChkZXN0Q3R4LmZpbGxSZWN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgwLCAwLCAxMjgwLCA3MjApO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUdBLElBQUFBLGdCQUFBLEdBQUFDLE9BQUE7QUFIQTtBQUNBOztBQUlBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsWUFBTTtFQUNsQ0MsU0FBUyxDQUFDLFlBQU07SUFDZEMsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQztFQUN4QixDQUFDLENBQUM7RUFFRkMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLFlBQU07SUFDL0UsSUFBTUMsT0FBTyxHQUFHO01BQ2RDLFNBQVMsRUFBRUosSUFBSSxDQUFDSyxFQUFFLENBQUMsQ0FBQztNQUNwQkMsU0FBUyxFQUFFTixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ3BCRSxHQUFHLEVBQUVQLElBQUksQ0FBQ0ssRUFBRSxDQUFDLENBQUM7TUFDZEcsSUFBSSxFQUFFUixJQUFJLENBQUNLLEVBQUUsQ0FBQyxDQUFDO01BQ2ZJLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFDRCxJQUFNQyxrQkFBa0IsR0FBR0MsaUJBQWlCLENBQUNDLFNBQVMsQ0FBQ0MsVUFBVTtJQUNqRWIsSUFBSSxDQUNEYyxLQUFLLENBQUNILGlCQUFpQixDQUFDQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQ2hERyxrQkFBa0IsQ0FBQyxTQUFTRixVQUFVQSxDQUEwQkcsSUFBWSxFQUFFO01BQzdFLElBQUlBLElBQUksS0FBSyxJQUFJLEVBQUU7UUFDakIsT0FBT2IsT0FBTztNQUNoQjtNQUNBLE9BQU9PLGtCQUFrQixDQUFDTyxJQUFJLENBQUMsSUFBSSxFQUFFRCxJQUFJLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0lBRUosSUFBTUUsT0FBTyxHQUFHO01BQUNDLEVBQUUsRUFBRTtJQUFlLENBQUM7SUFDckMsSUFBTUMsT0FBTyxHQUFHO01BQ2RDLGFBQWEsRUFBRXJCLElBQUksQ0FBQ0ssRUFBRSxDQUFDO1FBQUEsT0FBTWEsT0FBTztNQUFBLEVBQUM7TUFDckNJLFFBQVEsRUFBRXRCLElBQUksQ0FBQ0ssRUFBRSxDQUFDLENBQUM7TUFDbkJJLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFFRCxJQUFBYyxvQ0FBbUIsRUFBQ0gsT0FBTyxFQUF5QyxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBRTlFSSxNQUFNLENBQUNKLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDLENBQUNJLG9CQUFvQixDQUFDRCxNQUFNLENBQUNFLEdBQUcsQ0FBQ2YsaUJBQWlCLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDM0ZhLE1BQU0sQ0FBQ0osT0FBTyxDQUFDWCxTQUFTLENBQUMsQ0FBQ2tCLElBQUksQ0FBQ1QsT0FBTyxDQUFDO0lBQ3ZDTSxNQUFNLENBQUNKLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLENBQUNHLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztFQUNoRSxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|