@smarterplan/ngx-smarterplan-core 1.2.4 → 1.2.5
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/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
- package/esm2020/lib/services/matterport.service.mjs +11 -6
- package/esm2020/lib/services/viewer.service.mjs +1 -1
- package/esm2020/lib/types.service.mjs +1 -1
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +52 -47
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +52 -47
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts.map +1 -1
- package/lib/services/matterport.service.d.ts.map +1 -1
- package/lib/types.service.d.ts +1 -0
- package/lib/types.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -58,4 +58,4 @@ export const canvasRendererType = 'mp.canvasRenderer';
|
|
|
58
58
|
export function makeCanvasRenderer() {
|
|
59
59
|
return new CanvasRenderer();
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBcUJ0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBSVcsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCO1NBQ3hELENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO1FBRUosV0FBTSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ0osQ0FBQztJQW1EZCxDQUFDO0lBakRVLE1BQU07UUFFYiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDhCQUE4QixDQUFDLEVBQUU7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxlQUFlLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVRLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBQ3JELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFVO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUVGO0FBT0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xyXG5pbXBvcnQgdHlwZSB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IENhbnZhc1RleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IFNpemUgfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xyXG5pbXBvcnQgeyBDYW52YXNJbWFnZSB9IGZyb20gJy4vQ2FudmFzSW1hZ2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFpbnRlcjJkIHtcclxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQ7XHJcbn1cclxuXHJcbnR5cGUgSW5wdXRzID0ge1xyXG4gIHBhaW50ZXI6IElQYWludGVyMmQgfCBudWxsO1xyXG4gIHRleHR1cmVSZXM6IFNpemU7XHJcbn1cclxuXHJcbnR5cGUgT3V0cHV0cyA9IHtcclxuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbnR5cGUgRXZlbnRzID0ge1xyXG4gIHJlcGFpbnQ6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVuZGVyQ29udGV4dDJEOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcblxyXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xyXG4gICAgcGFpbnRlcjogbnVsbCxcclxuICAgIHRleHR1cmVSZXM6IHsgdzogMTAyNCwgaDogMTAyNCB9LCAvLyBkaW0gZm9yIHRoZXJtb3N0YXRcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB0ZXh0dXJlOiBudWxsLFxyXG4gIH0gYXMgT3V0cHV0cztcclxuXHJcbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xyXG4gICAgcmVwYWludDogdHJ1ZSxcclxuICB9IGFzIEV2ZW50cztcclxuXHJcbiAgb3ZlcnJpZGUgb25Jbml0KCkge1xyXG5cclxuICAgIC8vIHNldCB1cCBjYW52YXMgMmQgY29udGV4dFxyXG4gICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHRoaXMucmVuZGVyQ29udGV4dDJEID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUodGhpcy5jYW52YXMpO1xyXG5cclxuICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgdGhpcy5yZXBhaW50KCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2Mpe1xyXG4gICAgdGhpcy5pbnB1dHMucGFpbnRlciA9IHNjO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKG9sZElucHV0czogSW5wdXRzKSB7XHJcbiAgICBpZiAob2xkSW5wdXRzLnRleHR1cmVSZXMudyAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy53IHx8XHJcbiAgICAgICAgb2xkSW5wdXRzLnRleHR1cmVSZXMuaCAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy5oKSB7XHJcbiAgICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGRJbnB1dHMucGFpbnRlciAhPT0gdGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIF9ldmVudERhdGE6IHVua25vd24pIHtcclxuICAgIGlmIChldmVudFR5cGUgPT09ICdyZXBhaW50Jykge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlLmRpc3Bvc2UoKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplKHNpemU6IFNpemUpIHtcclxuICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xyXG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gc2l6ZS5oO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcGFpbnQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLmlucHV0cy5wYWludGVyLnBhaW50KHRoaXMucmVuZGVyQ29udGV4dDJELCB0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcclxuICAgICAgdGhpcy5vdXRwdXRzLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNhbnZhc1JlbmRlcmVyIGV4dGVuZHMgU2NlbmVDb21wb25lbnR7XHJcbiAgaW5wdXRzOiBJbnB1dHM7XHJcbiAgb3V0cHV0czogT3V0cHV0cztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhbnZhc1JlbmRlcmVyVHlwZSA9ICdtcC5jYW52YXNSZW5kZXJlcic7XHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzUmVuZGVyZXIoKSB7XHJcbiAgcmV0dXJuIG5ldyBDYW52YXNSZW5kZXJlcigpO1xyXG59XHJcbiJdfQ==
|
|
@@ -155,4 +155,4 @@ export const nestThermostatType = 'mp.nestThermostat';
|
|
|
155
155
|
export const makeNestThermostat = function () {
|
|
156
156
|
return new NestThermostat();
|
|
157
157
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFRoZXJtb3N0YXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBb0MsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRyxPQUFPLEVBRUwsY0FBYyxFQUVkLFFBQVEsRUFDUixhQUFhLEVBSWIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixpQkFBaUIsRUFFbEIsTUFBTSxPQUFPLENBQUM7QUFJZixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztBQWMvQixNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBQ1UsT0FBRSxHQUEwQixJQUFJLENBQUM7UUFDakMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGNBQVMsR0FBb0IsSUFBSSxDQUFDO1FBQ2xDLFVBQUssR0FBMEIsSUFBSSxDQUFDO1FBQ3BDLGdCQUFXLEdBQXlCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBSTNCLFdBQU0sR0FBVztZQUN4QixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsSUFBSTtZQUNiLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNKLENB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QUUsQ0FBQztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM5QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQsIENvbXBvbmVudENvbnRleHR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBPYmplY3QzRCxcbiAgQW5pbWF0aW9uTWl4ZXIsXG4gIEFuaW1hdGlvbkFjdGlvbixcbiAgTG9vcE9uY2UsXG4gIEFuaW1hdGlvbkNsaXAsXG4gIE1lc2gsXG4gIFRleHR1cmUsXG4gIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsXG4gIFZlY3RvcktleWZyYW1lVHJhY2ssXG4gIEludGVycG9sYXRlU21vb3RoLFxuICBNZXNoQmFzaWNNYXRlcmlhbCxcbiAgTGluZVNlZ21lbnRzXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7Q2FudmFzUmVuZGVyZXIsIElQYWludGVyMmR9IGZyb20gJy4vQ2FudmFzUmVuZGVyZXInO1xuaW1wb3J0IHtQbGFuZVJlbmRlcmVyLCBTaXplfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xuXG5jb25zdCBIb3ZlckV2ZW50ID0gJ2hvdmVyJztcbmNvbnN0IFVuaG92ZXJFdmVudCA9ICd1bmhvdmVyJztcbmNvbnN0IFJlcGFpbnRFdmVudCA9ICdyZXBhaW50JztcblxudHlwZSBJbnB1dHMgPSB7XG4gIGxvYWRpbmdTdGF0ZTogc3RyaW5nO1xuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcbiAgdXBkYXRlSW50ZXJ2YWw6IG51bWJlcjtcbn1cblxudHlwZSBPdXRwdXRzID0ge1xuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cblxuZXhwb3J0IGNsYXNzIE5lc3RUaGVybW9zdGF0IGV4dGVuZHMgU2NlbmVDb21wb25lbnQgaW1wbGVtZW50cyBJUGFpbnRlcjJkIHtcbiAgcHJpdmF0ZSBjdjogQ2FudmFzUmVuZGVyZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwbGFuZVJlbmRlcmVyOiBQbGFuZVJlbmRlcmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcm9vdFNjZW5lOiBPYmplY3QzRCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1peGVyOiBBbmltYXRpb25NaXhlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uRW50ZXJDbGlwOiBBbmltYXRpb25DbGlwIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbWVzaDogTWVzaCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG5leHRVcGRhdGU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcGVyYXR1cmU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgdGVtcENoYW5nZVJhbmdlOiBudW1iZXIgPSA1O1xuICBwcml2YXRlIGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQ7XG5cblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBsb2FkaW5nU3RhdGU6ICdJZGxlJyxcbiAgICB0ZXh0dXJlOiBudWxsLFxuICAgIHVwZGF0ZUludGVydmFsOiAxMDAwLFxuICB9XG5cbiAgb3ZlcnJpZGUgb3V0cHV0cyA9IHtcbiAgICBwYWludGVyOiBudWxsLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICB9IGFzIE91dHB1dHM7XG5cbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xuICAgIFtIb3ZlckV2ZW50XTogdHJ1ZSxcbiAgICBbVW5ob3ZlckV2ZW50XTogdHJ1ZSxcbiAgfTtcblxuICBvdmVycmlkZSBvbkluaXQobW9kZWxOb2RlPzogYW55LCBwbGFuZT86IFBsYW5lUmVuZGVyZXIsIGlucHV0VGV4dHVyZT86IGFueSkge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgIHJvb3Q6IG1vZGVsTm9kZVxuICAgICAgfSBhcyBDb21wb25lbnRDb250ZXh0O1xuICAgIH1cbiAgICB0aGlzLmlucHV0cy50ZXh0dXJlID0gaW5wdXRUZXh0dXJlO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmNvbnRleHQucm9vdDtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcblxuICAgIHRoaXMucGxhbmVSZW5kZXJlciA9IHBsYW5lO1xuICAgIHRoaXMucGxhbmVSZW5kZXJlci5vdXRwdXRzLm9iamVjdFJvb3QudHJhbnNsYXRlWigwLjA1KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnRyYW5zbGF0ZVkoMC40KTtcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290LnNjYWxlLnNldCgwLjUsIDAuNSwgMC41KTtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFBvc2l0aW9uLnogPSAwLjA1O1xuICAgIC8vIHBsYW5lUmVuZGVyZXIuaW5wdXRzLmxvY2FsUG9zaXRpb24ueSA9IDAuNDtcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFNjYWxlID0ge3g6IDAuNSwgeTogMC41LCB6OiAwLjV9O1xuXG4gICAgdGhpcy5vdXRwdXRzLnBhaW50ZXIgPSB0aGlzO1xuXG4gICAgdGhpcy5taXhlciA9IG5ldyBBbmltYXRpb25NaXhlcih0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290KTtcblxuICAgIGNvbnN0IHRtID0gMC4yO1xuICAgIGNvbnN0IHBvc2l0aW9uVHJhY2sgPSBuZXcgVmVjdG9yS2V5ZnJhbWVUcmFjaygnLnNjYWxlJywgWzAsIHRtXSwgW1xuICAgICAgMCwgMCwgMCxcbiAgICAgIDAuNSwgMC41LCAwLjVcbiAgICBdLCBJbnRlcnBvbGF0ZVNtb290aCk7XG4gICAgdGhpcy5vbkVudGVyQ2xpcCA9IG5ldyBBbmltYXRpb25DbGlwKG51bGwsIHRtLCBbcG9zaXRpb25UcmFja10pO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5sb2FkaW5nU3RhdGUgPT09ICdMb2FkZWQnKSB7XG4gICAgICBjb25zdCBsaW5lczogTGluZVNlZ21lbnRzW10gPSBbXTtcblxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLmNvbnRleHQucm9vdC5vYmozRC50cmF2ZXJzZSgob2JqOiBPYmplY3QzRCkgPT4ge1xuICAgICAgICAvLyB3ZSBkb250IHdhbnQgbGluZSBzZWdtZW50cywgdHJhY2sgdGhlbSBhbmQgcmVtb3ZlIHRoZW0uXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0xpbmVTZWdtZW50cycpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKG9iaiBhcyBMaW5lU2VnbWVudHMpO1xuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnTWVzaCcpIHtcbiAgICAgICAgICB0aGlzLm1lc2ggPSBvYmogYXMgTWVzaDtcblxuICAgICAgICAgIGNvbnN0IG1hdGVyaWFscyA9IHRoaXMubWVzaC5tYXRlcmlhbCBhcyBNZXNoTGFtYmVydE1hdGVyaWFsO1xuICAgICAgICAgIG1hdGVyaWFscy5mb3JFYWNoKChtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChtICYmIG0ubWFwLnNvdXJjZS5kYXRhLm91dGVySFRNTC5pbmRleE9mKCdfNWI3NmRiZTM4ODg2MjMwMDEyNmMxZTE0JykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld01hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKHttYXA6IHRoaXMuaW5wdXRzLnRleHR1cmV9KTtcbiAgICAgICAgICAgICAgdGhpcy5tZXNoLm1hdGVyaWFsW2lkeF0gPSBuZXdNYXRlcmlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIGxpbmUgc2VnbWVudHMuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lOiBMaW5lU2VnbWVudHMpID0+IHtcbiAgICAgICAgbGluZS5wYXJlbnQucmVtb3ZlKGxpbmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgb25FdmVudChldmVudFR5cGU6IHN0cmluZywgZXZlbnREYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gSG92ZXJFdmVudCkge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gZXZlbnREYXRhO1xuICAgICAgaWYgKGRhdGEuaG92ZXIpIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBvbkVudGVyQWN0aW9uOiBBbmltYXRpb25BY3Rpb24gPSB0aGlzLm1peGVyLmNsaXBBY3Rpb24odGhpcy5vbkVudGVyQ2xpcCk7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24uc3RvcCgpO1xuICAgICAgICBvbkVudGVyQWN0aW9uLmxvb3AgPSBMb29wT25jZTtcbiAgICAgICAgb25FbnRlckFjdGlvbi5jbGFtcFdoZW5GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIG9uRW50ZXJBY3Rpb24ucGxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQge1xuICAgIGNvbnN0IHggPSA0OTA7XG4gICAgY29uc3QgeSA9IDQ5MDtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDQwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJyNDRjUzMDAnO1xuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0MmQuYXJjKHgsIHksIDMwMCwgMCwgTWF0aC5QSSAqIDIpO1xuICAgIGNvbnRleHQyZC5maWxsKCk7XG5cbiAgICBjb250ZXh0MmQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dDJkLnN0cm9rZVN0eWxlID0gJ29yYW5nZSc7XG4gICAgY29udGV4dDJkLmFyYyh4LCB5LCAyNDAsIDAuNzUgKiBNYXRoLlBJLCAwLjI1ICogTWF0aC5QSSk7XG4gICAgY29udGV4dDJkLmxpbmVDYXAgPSAnYnV0dCc7XG4gICAgY29udGV4dDJkLmxpbmVXaWR0aCA9IDgwO1xuICAgIGNvbnRleHQyZC5zdHJva2UoKTtcblxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGNvbnRleHQyZC5mb250ID0gJzIyMHB4IEFyaWFsJztcbiAgICBjb250ZXh0MmQuZmlsbFRleHQoYCR7dGhpcy50ZW1wZXJhdHVyZX1gLCB4IC0gMTE1LCB5ICsgNzUpO1xuICAgIHRoaXMub3V0cHV0cy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uVGljayhkZWx0YTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50VGltZSArPSBkZWx0YTtcblxuICAgIGlmICh0aGlzLm1peGVyKSB7XG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID4gdGhpcy5uZXh0VXBkYXRlKSB7XG4gICAgICB0aGlzLm5leHRVcGRhdGUgKz0gdGhpcy5pbnB1dHMudXBkYXRlSW50ZXJ2YWw7XG5cbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgKz0gKE1hdGgucmFuZG9tKCkgKiB0aGlzLnRlbXBDaGFuZ2VSYW5nZSk7XG4gICAgICB0aGlzLnRlbXBlcmF0dXJlID0gTWF0aC50cnVuYyh0aGlzLnRlbXBlcmF0dXJlKTtcblxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPiA5OSkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gOTk7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPCAxMCkge1xuICAgICAgICB0aGlzLnRlbXBlcmF0dXJlID0gMTA7XG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXBvbmVudC5ub3RpZnkoUmVwYWludEV2ZW50KTtcbiAgICAgIHRoaXMuY3YucmVwYWludCgpXG4gICAgfVxuICB9XG5cbiAgc2V0Q29tcG9uZW50KGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQsIHBsYW5lOiBQbGFuZVJlbmRlcmVyLCBjdjogQ2FudmFzUmVuZGVyZXIpIHtcbiAgICBjb21wb25lbnQub25UaWNrID0gdGhpcy5vblRpY2suYmluZCh0aGlzKTtcbiAgICAvLyBwbGFuZS5vblRpY2sgPSB0aGlzLm9uVGljay5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY3YgPSBjdjtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wb25lbnQuY29udGV4dDtcbiAgfVxuXG4gIHNldFJvb3RTY2VuZShyb290U2NlbmU6IE9iamVjdDNEKSB7XG4gICAgdGhpcy5yb290U2NlbmUgPSByb290U2NlbmU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5lc3RUaGVybW9zdGF0VHlwZSA9ICdtcC5uZXN0VGhlcm1vc3RhdCc7XG5leHBvcnQgY29uc3QgbWFrZU5lc3RUaGVybW9zdGF0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE5lc3RUaGVybW9zdGF0KCk7XG59XG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFRoZXJtb3N0YXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvTmVzdFRoZXJtb3N0YXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBb0MsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRyxPQUFPLEVBRUwsY0FBYyxFQUVkLFFBQVEsRUFDUixhQUFhLEVBSWIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixpQkFBaUIsRUFFbEIsTUFBTSxPQUFPLENBQUM7QUFJZixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQy9CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztBQWMvQixNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBQ1UsT0FBRSxHQUEwQixJQUFJLENBQUM7UUFDakMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGNBQVMsR0FBb0IsSUFBSSxDQUFDO1FBQ2xDLFVBQUssR0FBMEIsSUFBSSxDQUFDO1FBQ3BDLGdCQUFXLEdBQXlCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBSTNCLFdBQU0sR0FBVztZQUN4QixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsSUFBSTtZQUNiLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNKLENBQUM7UUFFSixXQUFNLEdBQUc7WUFDaEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJO1lBQ2xCLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSTtTQUNyQixDQUFDO0lBK0lKLENBQUM7SUE3SVUsTUFBTSxDQUFDLFNBQWUsRUFBRSxLQUFxQixFQUFFLFlBQWtCO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLFNBQVM7YUFDSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRWpDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELCtDQUErQztRQUMvQyw4Q0FBOEM7UUFDOUMsOERBQThEO1FBRTlELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQy9ELENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNQLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztTQUNkLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUSxlQUFlO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFO1lBQ3pDLE1BQU0sS0FBSyxHQUFtQixFQUFFLENBQUM7WUFFakMsWUFBWTtZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFhLEVBQUUsRUFBRTtnQkFDakQsMERBQTBEO2dCQUMxRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO29CQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQW1CLENBQUMsQ0FBQztpQkFDakM7cUJBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFXLENBQUM7b0JBRXhCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBK0IsQ0FBQztvQkFDNUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTt3QkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs0QkFDaEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7NEJBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQzt5QkFDdkM7b0JBQ0gsQ0FBQyxDQUFDLENBQUE7aUJBRUg7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILDRCQUE0QjtZQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVRLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFNBQWtCO1FBQ3BELElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUM1QixNQUFNLElBQUksR0FBUSxTQUFTLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDNUIsTUFBTSxhQUFhLEdBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDL0UsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQixhQUFhLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztnQkFDOUIsYUFBYSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDdkMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUM5QjtTQUNGO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFtQyxFQUFFLElBQVU7UUFDbkQsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRWQsU0FBUyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDOUIsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQixTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEIsU0FBUyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELFNBQVMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVuQixTQUFTLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUM5QixTQUFTLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUMvQixTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRVEsTUFBTSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUU5QyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRWhELElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUM5QztZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUM5QztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDbEI7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXlCLEVBQUUsS0FBb0IsRUFBRSxFQUFrQjtRQUM5RSxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM5QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQsIENvbXBvbmVudENvbnRleHR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0M0QsXHJcbiAgQW5pbWF0aW9uTWl4ZXIsXHJcbiAgQW5pbWF0aW9uQWN0aW9uLFxyXG4gIExvb3BPbmNlLFxyXG4gIEFuaW1hdGlvbkNsaXAsXHJcbiAgTWVzaCxcclxuICBUZXh0dXJlLFxyXG4gIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsXHJcbiAgVmVjdG9yS2V5ZnJhbWVUcmFjayxcclxuICBJbnRlcnBvbGF0ZVNtb290aCxcclxuICBNZXNoQmFzaWNNYXRlcmlhbCxcclxuICBMaW5lU2VnbWVudHNcclxufSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7Q2FudmFzUmVuZGVyZXIsIElQYWludGVyMmR9IGZyb20gJy4vQ2FudmFzUmVuZGVyZXInO1xyXG5pbXBvcnQge1BsYW5lUmVuZGVyZXIsIFNpemV9IGZyb20gJy4vUGxhbmVSZW5kZXJlcic7XHJcblxyXG5jb25zdCBIb3ZlckV2ZW50ID0gJ2hvdmVyJztcclxuY29uc3QgVW5ob3ZlckV2ZW50ID0gJ3VuaG92ZXInO1xyXG5jb25zdCBSZXBhaW50RXZlbnQgPSAncmVwYWludCc7XHJcblxyXG50eXBlIElucHV0cyA9IHtcclxuICBsb2FkaW5nU3RhdGU6IHN0cmluZztcclxuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcclxuICB1cGRhdGVJbnRlcnZhbDogbnVtYmVyO1xyXG59XHJcblxyXG50eXBlIE91dHB1dHMgPSB7XHJcbiAgcGFpbnRlcjogSVBhaW50ZXIyZCB8IG51bGw7XHJcbiAgdmlzaWJsZTogYm9vbGVhbjtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTmVzdFRoZXJtb3N0YXQgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCBpbXBsZW1lbnRzIElQYWludGVyMmQge1xyXG4gIHByaXZhdGUgY3Y6IENhbnZhc1JlbmRlcmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwbGFuZVJlbmRlcmVyOiBQbGFuZVJlbmRlcmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByb290U2NlbmU6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBtaXhlcjogQW5pbWF0aW9uTWl4ZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIG9uRW50ZXJDbGlwOiBBbmltYXRpb25DbGlwIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBtZXNoOiBNZXNoIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjdXJyZW50VGltZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIG5leHRVcGRhdGU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSB0ZW1wZXJhdHVyZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIHRlbXBDaGFuZ2VSYW5nZTogbnVtYmVyID0gNTtcclxuICBwcml2YXRlIGNvbXBvbmVudDogU2NlbmVDb21wb25lbnQ7XHJcblxyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIGxvYWRpbmdTdGF0ZTogJ0lkbGUnLFxyXG4gICAgdGV4dHVyZTogbnVsbCxcclxuICAgIHVwZGF0ZUludGVydmFsOiAxMDAwLFxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb3V0cHV0cyA9IHtcclxuICAgIHBhaW50ZXI6IG51bGwsXHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIGV2ZW50cyA9IHtcclxuICAgIFtIb3ZlckV2ZW50XTogdHJ1ZSxcclxuICAgIFtVbmhvdmVyRXZlbnRdOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdChtb2RlbE5vZGU/OiBhbnksIHBsYW5lPzogUGxhbmVSZW5kZXJlciwgaW5wdXRUZXh0dXJlPzogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xyXG4gICAgICB0aGlzLmNvbnRleHQgPSB7XHJcbiAgICAgICAgcm9vdDogbW9kZWxOb2RlXHJcbiAgICAgIH0gYXMgQ29tcG9uZW50Q29udGV4dDtcclxuICAgIH1cclxuICAgIHRoaXMuaW5wdXRzLnRleHR1cmUgPSBpbnB1dFRleHR1cmU7XHJcbiAgICBjb25zdCByb290ID0gdGhpcy5jb250ZXh0LnJvb3Q7XHJcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcclxuXHJcbiAgICB0aGlzLnBsYW5lUmVuZGVyZXIgPSBwbGFuZTtcclxuICAgIHRoaXMucGxhbmVSZW5kZXJlci5vdXRwdXRzLm9iamVjdFJvb3QudHJhbnNsYXRlWigwLjA1KTtcclxuICAgIHRoaXMucGxhbmVSZW5kZXJlci5vdXRwdXRzLm9iamVjdFJvb3QudHJhbnNsYXRlWSgwLjQpO1xyXG4gICAgdGhpcy5wbGFuZVJlbmRlcmVyLm91dHB1dHMub2JqZWN0Um9vdC5zY2FsZS5zZXQoMC41LCAwLjUsIDAuNSk7XHJcbiAgICAvLyBwbGFuZVJlbmRlcmVyLmlucHV0cy5sb2NhbFBvc2l0aW9uLnogPSAwLjA1O1xyXG4gICAgLy8gcGxhbmVSZW5kZXJlci5pbnB1dHMubG9jYWxQb3NpdGlvbi55ID0gMC40O1xyXG4gICAgLy8gcGxhbmVSZW5kZXJlci5pbnB1dHMubG9jYWxTY2FsZSA9IHt4OiAwLjUsIHk6IDAuNSwgejogMC41fTtcclxuXHJcbiAgICB0aGlzLm91dHB1dHMucGFpbnRlciA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5taXhlciA9IG5ldyBBbmltYXRpb25NaXhlcih0aGlzLnBsYW5lUmVuZGVyZXIub3V0cHV0cy5vYmplY3RSb290KTtcclxuXHJcbiAgICBjb25zdCB0bSA9IDAuMjtcclxuICAgIGNvbnN0IHBvc2l0aW9uVHJhY2sgPSBuZXcgVmVjdG9yS2V5ZnJhbWVUcmFjaygnLnNjYWxlJywgWzAsIHRtXSwgW1xyXG4gICAgICAwLCAwLCAwLFxyXG4gICAgICAwLjUsIDAuNSwgMC41XHJcbiAgICBdLCBJbnRlcnBvbGF0ZVNtb290aCk7XHJcbiAgICB0aGlzLm9uRW50ZXJDbGlwID0gbmV3IEFuaW1hdGlvbkNsaXAobnVsbCwgdG0sIFtwb3NpdGlvblRyYWNrXSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvbklucHV0c1VwZGF0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMubG9hZGluZ1N0YXRlID09PSAnTG9hZGVkJykge1xyXG4gICAgICBjb25zdCBsaW5lczogTGluZVNlZ21lbnRzW10gPSBbXTtcclxuXHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLmNvbnRleHQucm9vdC5vYmozRC50cmF2ZXJzZSgob2JqOiBPYmplY3QzRCkgPT4ge1xyXG4gICAgICAgIC8vIHdlIGRvbnQgd2FudCBsaW5lIHNlZ21lbnRzLCB0cmFjayB0aGVtIGFuZCByZW1vdmUgdGhlbS5cclxuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdMaW5lU2VnbWVudHMnKSB7XHJcbiAgICAgICAgICBsaW5lcy5wdXNoKG9iaiBhcyBMaW5lU2VnbWVudHMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdNZXNoJykge1xyXG4gICAgICAgICAgdGhpcy5tZXNoID0gb2JqIGFzIE1lc2g7XHJcblxyXG4gICAgICAgICAgY29uc3QgbWF0ZXJpYWxzID0gdGhpcy5tZXNoLm1hdGVyaWFsIGFzIE1lc2hMYW1iZXJ0TWF0ZXJpYWw7XHJcbiAgICAgICAgICBtYXRlcmlhbHMuZm9yRWFjaCgobSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtICYmIG0ubWFwLnNvdXJjZS5kYXRhLm91dGVySFRNTC5pbmRleE9mKCdfNWI3NmRiZTM4ODg2MjMwMDEyNmMxZTE0JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbmV3TWF0ZXJpYWwgPSBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoe21hcDogdGhpcy5pbnB1dHMudGV4dHVyZX0pO1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzaC5tYXRlcmlhbFtpZHhdID0gbmV3TWF0ZXJpYWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyByZW1vdmUgdGhlIGxpbmUgc2VnbWVudHMuXHJcbiAgICAgIGxpbmVzLmZvckVhY2goKGxpbmU6IExpbmVTZWdtZW50cykgPT4ge1xyXG4gICAgICAgIGxpbmUucGFyZW50LnJlbW92ZShsaW5lKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvbkV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBldmVudERhdGE6IHVua25vd24pOiB2b2lkIHtcclxuICAgIGlmIChldmVudFR5cGUgPT09IEhvdmVyRXZlbnQpIHtcclxuICAgICAgY29uc3QgZGF0YTogYW55ID0gZXZlbnREYXRhO1xyXG4gICAgICBpZiAoZGF0YS5ob3Zlcikge1xyXG4gICAgICAgIHRoaXMub3V0cHV0cy52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBvbkVudGVyQWN0aW9uOiBBbmltYXRpb25BY3Rpb24gPSB0aGlzLm1peGVyLmNsaXBBY3Rpb24odGhpcy5vbkVudGVyQ2xpcCk7XHJcbiAgICAgICAgb25FbnRlckFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgb25FbnRlckFjdGlvbi5sb29wID0gTG9vcE9uY2U7XHJcbiAgICAgICAgb25FbnRlckFjdGlvbi5jbGFtcFdoZW5GaW5pc2hlZCA9IHRydWU7XHJcbiAgICAgICAgb25FbnRlckFjdGlvbi5wbGF5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vdXRwdXRzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFpbnQoY29udGV4dDJkOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHNpemU6IFNpemUpOiB2b2lkIHtcclxuICAgIGNvbnN0IHggPSA0OTA7XHJcbiAgICBjb25zdCB5ID0gNDkwO1xyXG5cclxuICAgIGNvbnRleHQyZC5maWxsU3R5bGUgPSAnYmxhY2snO1xyXG4gICAgY29udGV4dDJkLmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dDJkLmFyYyh4LCB5LCA0MDAsIDAsIE1hdGguUEkgKiAyKTtcclxuICAgIGNvbnRleHQyZC5maWxsKCk7XHJcblxyXG4gICAgY29udGV4dDJkLmZpbGxTdHlsZSA9ICcjQ0Y1MzAwJztcclxuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQyZC5hcmMoeCwgeSwgMzAwLCAwLCBNYXRoLlBJICogMik7XHJcbiAgICBjb250ZXh0MmQuZmlsbCgpO1xyXG5cclxuICAgIGNvbnRleHQyZC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQyZC5zdHJva2VTdHlsZSA9ICdvcmFuZ2UnO1xyXG4gICAgY29udGV4dDJkLmFyYyh4LCB5LCAyNDAsIDAuNzUgKiBNYXRoLlBJLCAwLjI1ICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0MmQubGluZUNhcCA9ICdidXR0JztcclxuICAgIGNvbnRleHQyZC5saW5lV2lkdGggPSA4MDtcclxuICAgIGNvbnRleHQyZC5zdHJva2UoKTtcclxuXHJcbiAgICBjb250ZXh0MmQuZmlsbFN0eWxlID0gJ3doaXRlJztcclxuICAgIGNvbnRleHQyZC5mb250ID0gJzIyMHB4IEFyaWFsJztcclxuICAgIGNvbnRleHQyZC5maWxsVGV4dChgJHt0aGlzLnRlbXBlcmF0dXJlfWAsIHggLSAxMTUsIHkgKyA3NSk7XHJcbiAgICB0aGlzLm91dHB1dHMudmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvblRpY2soZGVsdGE6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSArPSBkZWx0YTtcclxuXHJcbiAgICBpZiAodGhpcy5taXhlcikge1xyXG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lID4gdGhpcy5uZXh0VXBkYXRlKSB7XHJcbiAgICAgIHRoaXMubmV4dFVwZGF0ZSArPSB0aGlzLmlucHV0cy51cGRhdGVJbnRlcnZhbDtcclxuXHJcbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgKz0gKE1hdGgucmFuZG9tKCkgKiB0aGlzLnRlbXBDaGFuZ2VSYW5nZSk7XHJcbiAgICAgIHRoaXMudGVtcGVyYXR1cmUgPSBNYXRoLnRydW5jKHRoaXMudGVtcGVyYXR1cmUpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudGVtcGVyYXR1cmUgPiA5OSkge1xyXG4gICAgICAgIHRoaXMudGVtcGVyYXR1cmUgPSA5OTtcclxuICAgICAgICB0aGlzLnRlbXBDaGFuZ2VSYW5nZSA9IC10aGlzLnRlbXBDaGFuZ2VSYW5nZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50ZW1wZXJhdHVyZSA8IDEwKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wZXJhdHVyZSA9IDEwO1xyXG4gICAgICAgIHRoaXMudGVtcENoYW5nZVJhbmdlID0gLXRoaXMudGVtcENoYW5nZVJhbmdlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbXBvbmVudC5ub3RpZnkoUmVwYWludEV2ZW50KTtcclxuICAgICAgdGhpcy5jdi5yZXBhaW50KClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENvbXBvbmVudChjb21wb25lbnQ6IFNjZW5lQ29tcG9uZW50LCBwbGFuZTogUGxhbmVSZW5kZXJlciwgY3Y6IENhbnZhc1JlbmRlcmVyKSB7XHJcbiAgICBjb21wb25lbnQub25UaWNrID0gdGhpcy5vblRpY2suYmluZCh0aGlzKTtcclxuICAgIC8vIHBsYW5lLm9uVGljayA9IHRoaXMub25UaWNrLmJpbmQodGhpcyk7XHJcbiAgICB0aGlzLmN2ID0gY3Y7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbXBvbmVudC5jb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgc2V0Um9vdFNjZW5lKHJvb3RTY2VuZTogT2JqZWN0M0QpIHtcclxuICAgIHRoaXMucm9vdFNjZW5lID0gcm9vdFNjZW5lO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG5lc3RUaGVybW9zdGF0VHlwZSA9ICdtcC5uZXN0VGhlcm1vc3RhdCc7XHJcbmV4cG9ydCBjb25zdCBtYWtlTmVzdFRoZXJtb3N0YXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIG5ldyBOZXN0VGhlcm1vc3RhdCgpO1xyXG59XHJcbiJdfQ==
|
|
@@ -207,30 +207,30 @@ export class SecurityCamera extends SceneComponent {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
function vertexShader() {
|
|
210
|
-
return `
|
|
211
|
-
uniform mat4 lightMatrix;
|
|
212
|
-
|
|
213
|
-
varying vec4 vLightCoords;
|
|
214
|
-
|
|
215
|
-
void main() {
|
|
216
|
-
// create a UV region [0,1] x [0,1] to represent what the lightMatrix "sees"
|
|
217
|
-
vLightCoords = lightMatrix * modelMatrix * vec4(position, 1.0);
|
|
218
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
219
|
-
}
|
|
210
|
+
return `
|
|
211
|
+
uniform mat4 lightMatrix;
|
|
212
|
+
|
|
213
|
+
varying vec4 vLightCoords;
|
|
214
|
+
|
|
215
|
+
void main() {
|
|
216
|
+
// create a UV region [0,1] x [0,1] to represent what the lightMatrix "sees"
|
|
217
|
+
vLightCoords = lightMatrix * modelMatrix * vec4(position, 1.0);
|
|
218
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
219
|
+
}
|
|
220
220
|
`;
|
|
221
221
|
}
|
|
222
222
|
function fragmentShader() {
|
|
223
|
-
return `
|
|
224
|
-
uniform vec3 color;
|
|
225
|
-
|
|
226
|
-
varying vec4 vLightCoords;
|
|
227
|
-
|
|
228
|
-
void main() {
|
|
229
|
-
vec2 lightUV = vLightCoords.xy / vLightCoords.w;
|
|
230
|
-
float inView = float(max(lightUV.x, lightUV.y) <= 1.0 && min(lightUV.x, lightUV.y) >= 0.0 && vLightCoords.z > 0.0);
|
|
231
|
-
|
|
232
|
-
gl_FragColor = vec4(color, min(inView, 0.2));
|
|
233
|
-
}
|
|
223
|
+
return `
|
|
224
|
+
uniform vec3 color;
|
|
225
|
+
|
|
226
|
+
varying vec4 vLightCoords;
|
|
227
|
+
|
|
228
|
+
void main() {
|
|
229
|
+
vec2 lightUV = vLightCoords.xy / vLightCoords.w;
|
|
230
|
+
float inView = float(max(lightUV.x, lightUV.y) <= 1.0 && min(lightUV.x, lightUV.y) >= 0.0 && vLightCoords.z > 0.0);
|
|
231
|
+
|
|
232
|
+
gl_FragColor = vec4(color, min(inView, 0.2));
|
|
233
|
+
}
|
|
234
234
|
`;
|
|
235
235
|
}
|
|
236
236
|
function updateHighlightUniforms(projector, uniforms) {
|
|
@@ -246,4 +246,4 @@ export const securityCameraType = 'mp.securityCamera';
|
|
|
246
246
|
export const makeSecurityCamera = function () {
|
|
247
247
|
return new SecurityCamera();
|
|
248
248
|
};
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlDYW1lcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9zZWN1cml0eS1jYW1lcmEvU2VjdXJpdHlDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdXLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUN4QyxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxjQUFjLEVBQWEsTUFBTSxtQ0FBbUMsQ0FBQztBQTJCN0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBQWxEOztRQUNVLFNBQUksR0FBb0IsSUFBSSxDQUFDO1FBQzdCLFVBQUssR0FBb0IsSUFBSSxDQUFDO1FBQzlCLFFBQUcsR0FBZ0IsSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzlCLHNCQUFpQixHQUFzQjtZQUM3QyxLQUFLLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUUsRUFBQztZQUMzQixZQUFZLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQUUsRUFBQztZQUNwQyxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQUUsRUFBQztTQUNwQyxDQUFBO1FBR1EsV0FBTSxHQUFXO1lBQ3hCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsUUFBUSxFQUFFLENBQUM7WUFDWCxhQUFhLEVBQUUsRUFBRTtZQUNqQixNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUM7WUFDZCxhQUFhLEVBQUUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQztZQUNqQyxhQUFhLEVBQUUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFB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RUQsU0FBUyx1QkFBdUIsQ0FBQyxTQUE0QixFQUFFLFFBQTJCO0lBQ3hGLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhELDhFQUE4RTtJQUM5RSw0Q0FBNEM7SUFDNUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE9iamVjdDNELCBNZXNoLCBQZXJzcGVjdGl2ZUNhbWVyYSxcbiAgTWVzaEJhc2ljTWF0ZXJpYWwsIEJveEdlb21ldHJ5LCBTaGFkZXJNYXRlcmlhbCwgTGluZUJhc2ljTWF0ZXJpYWwsIEVkZ2VzR2VvbWV0cnksXG4gIEFuaW1hdGlvbk1peGVyLCBDb2xvciwgTWF0cml4NCwgVmVjdG9yM1xufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1NjZW5lQ29tcG9uZW50LCBJU2NlbmVOb2RlfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIFRIUkVFOiBhbnk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIElucHV0cyB7XG4gIG5lYXJQbGFuZTogbnVtYmVyO1xuICBmYXJQbGFuZTogbnVtYmVyLFxuICBob3Jpem9udGFsRk9WOiBudW1iZXIsXG4gIGFzcGVjdDogbnVtYmVyLFxuICBsb2NhbFBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07XG4gIGxvY2FsUm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTtcbiAgY29sb3I6IG51bWJlcjtcbiAgcGFuUGVyaW9kOiBudW1iZXI7XG4gIHBhbkFuZ2xlOiBudW1iZXI7XG59XG5cbnR5cGUgSGlnaGxpZ2h0VW5pZm9ybXMgPSB7XG4gIGNvbG9yOiB7IHZhbHVlOiBDb2xvciB9LFxuICBwcm9qUG9zaXRpb246IHsgdmFsdWU6IFZlY3RvcjMgfTtcbiAgbGlnaHRNYXRyaXg6IHsgdmFsdWU6IE1hdHJpeDQgfTtcbn1cblxuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlDYW1lcmEgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcm9vdDogT2JqZWN0M0QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwaXZvdDogT2JqZWN0M0QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBib3g6IE1lc2ggfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBlZGdlczogTWVzaCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHByb2plY3RvcjogUGVyc3BlY3RpdmVDYW1lcmE7XG4gIHByaXZhdGUgaGlnaGxpZ2h0OiBNZXNoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaGlnaGxpZ2h0VW5pZm9ybXM6IEhpZ2hsaWdodFVuaWZvcm1zID0ge1xuICAgIGNvbG9yOiB7dmFsdWU6IG5ldyBDb2xvcigpfSxcbiAgICBwcm9qUG9zaXRpb246IHt2YWx1ZTogbmV3IFZlY3RvcjMoKX0sXG4gICAgbGlnaHRNYXRyaXg6IHt2YWx1ZTogbmV3IE1hdHJpeDQoKX0sXG4gIH1cbiAgcHJpdmF0ZSBtaXhlcjogQW5pbWF0aW9uTWl4ZXI7XG5cbiAgb3ZlcnJpZGUgaW5wdXRzOiBJbnB1dHMgPSB7XG4gICAgbmVhclBsYW5lOiAwLjEsXG4gICAgZmFyUGxhbmU6IDQsXG4gICAgaG9yaXpvbnRhbEZPVjogODAsXG4gICAgYXNwZWN0OiAxNiAvIDksXG4gICAgbG9jYWxQb3NpdGlvbjoge3g6IDAsIHk6IDAsIHo6IDB9LFxuICAgIGxvY2FsUm90YXRpb246IHt4OiAwLCB5OiAwLCB6OiAwfSxcbiAgICBjb2xvcjogMHhmZmZmZmYsXG4gICAgcGFuUGVyaW9kOiAyMCxcbiAgICBwYW5BbmdsZTogMTgwLFxuICB9O1xuXG4gIG92ZXJyaWRlIG91dHB1dHM6IGFueSA9IHt9O1xuXG5cbiAgb3ZlcnJpZGUgb25Jbml0KCkge1xuICAgIGNvbnN0IFRIUkVFID0gdGhpcy5jb250ZXh0LnRocmVlO1xuXG4gICAgdGhpcy5yb290ID0gbmV3IFRIUkVFLk9iamVjdDNEKCk7XG4gICAgdGhpcy5waXZvdCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICAgIHRoaXMucm9vdC5hZGQodGhpcy5waXZvdCk7XG4gICAgdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QgPSB0aGlzLnJvb3Q7XG4gICAgdGhpcy5yb290LnBvc2l0aW9uLnNldCh0aGlzLmlucHV0cy5sb2NhbFBvc2l0aW9uLngsIHRoaXMuaW5wdXRzLmxvY2FsUG9zaXRpb24ueSwgdGhpcy5pbnB1dHMubG9jYWxQb3NpdGlvbi56KTtcblxuICAgIGNvbnN0IGV1bGVyID0gbmV3IFRIUkVFLkV1bGVyKHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueCAqIE1hdGguUEkgLyAxODAsIHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueSAqIE1hdGguUEkgLyAxODAsIHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueiAqIE1hdGguUEkgLyAxODAsICdZWFonKTtcbiAgICB0aGlzLnBpdm90LnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKGV1bGVyKTtcblxuICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMuaW5wdXRzLmFzcGVjdDtcbiAgICBjb25zdCBERUcyUkFEID0gTWF0aC5QSSAvIDE4MDtcbiAgICBjb25zdCBSQUQyREVHID0gMSAvIERFRzJSQUQ7XG4gICAgY29uc3QgdmVydGljYWxGT1YgPSAyICogTWF0aC5hdGFuKDEgLyBhc3BlY3QgKiBNYXRoLnRhbigwLjUgKiB0aGlzLmlucHV0cy5ob3Jpem9udGFsRk9WICogREVHMlJBRCkpICogUkFEMkRFRztcbiAgICB0aGlzLnByb2plY3RvciA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSh2ZXJ0aWNhbEZPViwgYXNwZWN0LCB0aGlzLmlucHV0cy5uZWFyUGxhbmUsIHRoaXMuaW5wdXRzLmZhclBsYW5lKTtcbiAgICAvLyBvcmllbnRhdGlvbiBvZiB0aGUgcHJvamVjdG9yIGlzIGhhbmRsZWQgYnkgdGhlIHBpdm90XG4gICAgdGhpcy5waXZvdC5hZGQodGhpcy5wcm9qZWN0b3IpO1xuXG4gICAgdGhpcy5tYWtlRnJ1c3R1bVZpc3VhbHMoKTtcblxuICAgIHRoaXMucGl2b3QuYWRkKHRoaXMuYm94KTtcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmVkZ2VzKTtcblxuICAgIHRoaXMubWFrZUhpZ2hsaWdodCgpO1xuXG4gICAgLy8gYXR0YWNoIGhpZ2hpZ2h0aW5nIHRvIHRoZSBtZXNoIGl0IHJlcHJlc2VudHNcbiAgICAvLyBUT0RPIChzY2VuZSBxdWVyeSk6IHRoaXMgaXMgdmVyeSBicml0dGxlIGJ1dCBpcyB0aGUgb25seSB3YXkgdG8gYXR0YWNoIHNvbWV0aGluZyB0byBhIHJvb20gb2YgdGhlIG1vZGVsXG4gICAgdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QucGFyZW50LnBhcmVudC5hZGQodGhpcy5oaWdobGlnaHQpO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBhbmltYXRpb24gbWl4ZXIgdG8gcm90YXRlIHRoZSBjYW1lcmFcbiAgICB0aGlzLm1ha2VBbmltYXRpb24oKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uVGljayhkZWx0YTogbnVtYmVyKSB7XG4gICAgdXBkYXRlSGlnaGxpZ2h0VW5pZm9ybXModGhpcy5wcm9qZWN0b3IsIHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMpO1xuICAgIGlmICh0aGlzLm1peGVyKSB7XG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHQgJiYgdGhpcy5oaWdobGlnaHQucGFyZW50KSB7XG4gICAgICB0aGlzLmhpZ2hsaWdodC5wYXJlbnQucmVtb3ZlKHRoaXMuaGlnaGxpZ2h0KTtcbiAgICAgICh0aGlzLmhpZ2hsaWdodC5tYXRlcmlhbCBhcyBTaGFkZXJNYXRlcmlhbCkuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lZGdlcykge1xuICAgICAgdGhpcy5lZGdlcy5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICAodGhpcy5lZGdlcy5tYXRlcmlhbCBhcyBMaW5lQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib3gpIHtcbiAgICAgIHRoaXMuYm94Lmdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICh0aGlzLmJveC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlRnJ1c3R1bVZpc3VhbHMoKSB7XG4gICAgY29uc3QgVEhSRUUgPSB0aGlzLmNvbnRleHQudGhyZWU7XG4gICAgaWYgKHRoaXMuYm94KSB7XG4gICAgICB0aGlzLnJvb3QucmVtb3ZlKHRoaXMuYm94KTtcbiAgICAgICh0aGlzLmJveC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xuICAgICAgKHRoaXMuYm94Lmdlb21ldHJ5IGFzIEJveEdlb21ldHJ5KS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmJveCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmVkZ2VzKSB7XG4gICAgICB0aGlzLnJvb3QucmVtb3ZlKHRoaXMuZWRnZXMpO1xuICAgICAgKHRoaXMuZWRnZXMubWF0ZXJpYWwgYXMgTGluZUJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcbiAgICAgICh0aGlzLmVkZ2VzLmdlb21ldHJ5IGFzIEVkZ2VzR2VvbWV0cnkpLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuZWRnZXMgPSBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVkZ2VzVG9DeWxpbmRlcnMoZWRnZXNHZW9tZXRyeTogRWRnZXNHZW9tZXRyeSwgdGhpY2tuZXNzOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHtwb3NpdGlvbn0gPSBlZGdlc0dlb21ldHJ5LmF0dHJpYnV0ZXM7XG4gICAgICBjb25zdCB7YXJyYXksIGNvdW50fSA9IHBvc2l0aW9uO1xuICAgICAgY29uc3QgciA9IHRoaWNrbmVzcyAvIDI7XG4gICAgICBjb25zdCBnZW9tcyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudCAqIDMgLSAxOyBpICs9IDYpIHtcbiAgICAgICAgY29uc3QgYSA9IG5ldyBUSFJFRS5WZWN0b3IzKGFycmF5W2ldLCBhcnJheVtpICsgMV0sIGFycmF5W2kgKyAyXSk7XG4gICAgICAgIGNvbnN0IGIgPSBuZXcgVEhSRUUuVmVjdG9yMyhhcnJheVtpICsgM10sIGFycmF5W2kgKyA0XSwgYXJyYXlbaSArIDVdKTtcblxuICAgICAgICBjb25zdCB2ZWMgPSBuZXcgVEhSRUUuVmVjdG9yMygpLnN1YlZlY3RvcnMoYiwgYSk7XG4gICAgICAgIGNvbnN0IGxlbiA9IHZlYy5sZW5ndGgoKTtcbiAgICAgICAgY29uc3QgZ2VvbSA9IG5ldyBUSFJFRS5DeWxpbmRlckJ1ZmZlckdlb21ldHJ5KHIsIHIsIGxlbiwgOCk7XG4gICAgICAgIGdlb20udHJhbnNsYXRlKDAsIGxlbiAvIDIsIDApO1xuICAgICAgICBnZW9tLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xuICAgICAgICBnZW9tLmxvb2tBdCh2ZWMpO1xuICAgICAgICBnZW9tLnRyYW5zbGF0ZShhLngsIGEueSwgYS56KTtcbiAgICAgICAgZ2VvbXMucHVzaChnZW9tKTtcbiAgICAgIH1cbiAgICAgIC8vIEFQSSB0byBiZSB1cGRhdGVkIGluIGJ1bmRsZSAtIEpTU0RLLTEyMjJcbiAgICAgIHJldHVybiAoVEhSRUUgYXMgYW55KS5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoZ2VvbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGZydXN0dW1MZW5ndGggPSB0aGlzLmlucHV0cy5mYXJQbGFuZSAtIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcbiAgICBjb25zdCBib3hHZW9tZXRyeTogQm94R2VvbWV0cnkgPSBuZXcgVEhSRUUuQm94R2VvbWV0cnkoMiwgMiwgZnJ1c3R1bUxlbmd0aCk7XG4gICAgY29uc3QgaGFsZkhBbmdsZSA9IHRoaXMuaW5wdXRzLmhvcml6b250YWxGT1YgKiAwLjUgKiBNYXRoLlBJIC8gMTgwO1xuICAgIGNvbnN0IG5lYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcbiAgICBjb25zdCBmYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLmZhclBsYW5lO1xuICAgIGNvbnN0IG5lYXJIYWxmSGVpZ2h0ID0gbmVhckhhbGZXaWR0aCAvIHRoaXMuaW5wdXRzLmFzcGVjdDtcbiAgICBjb25zdCBmYXJIYWxmSGVpZ2h0ID0gZmFySGFsZldpZHRoIC8gdGhpcy5pbnB1dHMuYXNwZWN0O1xuXG4gICAgY29uc3QgcG9zaXRpb25zID0gYm94R2VvbWV0cnkuZ2V0QXR0cmlidXRlKCdwb3NpdGlvbicpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMuY291bnQ7IGkrKykge1xuICAgICAgY29uc3QgdmVydGV4WiA9IHBvc2l0aW9ucy5nZXRaKGkpO1xuICAgICAgY29uc3QgdmVydGV4WCA9IHBvc2l0aW9ucy5nZXRYKGkpO1xuICAgICAgY29uc3QgdmVydGV4WSA9IHBvc2l0aW9ucy5nZXRZKGkpO1xuICAgICAgaWYgKHZlcnRleFogPiAwKSB7XG4gICAgICAgIC8vIGJhY2sgb2YgdGhlIGNhbWVyYVxuICAgICAgICBwb3NpdGlvbnMuc2V0WChpLCB2ZXJ0ZXhYICogbmVhckhhbGZXaWR0aClcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIG5lYXJIYWxmSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZyb250IG9mIHRoZSBjYW1lcmFcbiAgICAgICAgcG9zaXRpb25zLnNldFgoaSwgdmVydGV4WCAqIGZhckhhbGZXaWR0aClcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIGZhckhhbGZIZWlnaHQpO1xuICAgICAgfVxuICAgICAgcG9zaXRpb25zLnNldFooaSwgdmVydGV4WiAtIDAuNSAqIGZydXN0dW1MZW5ndGggLSB0aGlzLmlucHV0cy5uZWFyUGxhbmUpO1xuICAgIH1cblxuICAgIHZhciBib3hNYXRlcmlhbDogTWVzaEJhc2ljTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoe1xuICAgICAgY29sb3I6IHRoaXMuaW5wdXRzLmNvbG9yLFxuICAgICAgb3BhY2l0eTogMC4wNSxcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgc2lkZTogVEhSRUUuQmFja1NpZGUsXG4gICAgICBibGVuZGluZzogVEhSRUUuTm9ybWFsQmxlbmRpbmcsXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICB9KTtcbiAgICB0aGlzLmJveCA9IG5ldyBUSFJFRS5NZXNoKGJveEdlb21ldHJ5LCBib3hNYXRlcmlhbCk7XG4gICAgY29uc3QgZWRnZXNHZW9tZXRyeSA9IGVkZ2VzVG9DeWxpbmRlcnMobmV3IFRIUkVFLkVkZ2VzR2VvbWV0cnkoYm94R2VvbWV0cnkpLCAwLjAxNSk7XG4gICAgdGhpcy5lZGdlcyA9IG5ldyBUSFJFRS5NZXNoKGVkZ2VzR2VvbWV0cnksIG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7XG4gICAgICBjb2xvcjogMHhmZmZmZmYsXG4gICAgICBvcGFjaXR5OiAwLjI1LFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICBibGVuZGluZzogVEhSRUUuQWRkaXRpdmVCbGVuZGluZyxcbiAgICAgIGRlcHRoV3JpdGU6IGZhbHNlLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGVkZ2VzR2VvbWV0cnkyID0gZWRnZXNUb0N5bGluZGVycyhuZXcgVEhSRUUuRWRnZXNHZW9tZXRyeShib3hHZW9tZXRyeSksIDAuMDYpO1xuICAgIGNvbnN0IGVkZ2VzMiA9IG5ldyBUSFJFRS5NZXNoKGVkZ2VzR2VvbWV0cnkyLCBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoe1xuICAgICAgY29sb3I6IHRoaXMuaW5wdXRzLmNvbG9yLFxuICAgICAgb3BhY2l0eTogMC4wNSxcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgYmxlbmRpbmc6IFRIUkVFLkFkZGl0aXZlQmxlbmRpbmcsXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICB9KSk7XG4gICAgdGhpcy5waXZvdC5hZGQoZWRnZXMyKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUhpZ2hsaWdodCgpIHtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcblxuICAgIC8vIFRPRE8gKHNjZW5lIHF1ZXJ5KTogdGhpcyBpcyB2ZXJ5IGJyaXR0bGUgYW5kIGhhcmRjb2RlZCBidXQgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCByb29tIGdlb21ldHJpZXMgdW50aWwgd2UgaGF2ZSBhIGJldHRlciB3YXkgdG8gcXVlcnkgdGhlIHNjZW5lIGdyYXBoXG4gICAgY29uc3QgZmxvb3JNZXNoID0gdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QucGFyZW50LnBhcmVudC5nZXRPYmplY3RCeU5hbWUoJ0Zsb29yTWVzaDowJyk7XG4gICAgY29uc3Qgcm9vbU1lc2ggPSBmbG9vck1lc2guY2hpbGRyZW5bMF0gYXMgTWVzaDtcblxuICAgIHVwZGF0ZUhpZ2hsaWdodFVuaWZvcm1zKHRoaXMucHJvamVjdG9yLCB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zKTtcbiAgICB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zLmNvbG9yLnZhbHVlLnNldEhleCh0aGlzLmlucHV0cy5jb2xvcik7XG5cbiAgICBjb25zdCBzaGFkZXIgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgcG9seWdvbk9mZnNldDogdHJ1ZSxcbiAgICAgIHBvbHlnb25PZmZzZXRVbml0czogLTAuMSxcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxuICAgICAgdW5pZm9ybXM6IHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMsXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IHZlcnRleFNoYWRlcigpLFxuICAgICAgZnJhZ21lbnRTaGFkZXI6IGZyYWdtZW50U2hhZGVyKCksXG4gICAgfSk7XG5cbiAgICAvLyBhIG1lc2ggdG8gcmVwcmVzZW50IHRoZSBcImhpZ2hsaWdodFwiXG4gICAgdGhpcy5oaWdobGlnaHQgPSBuZXcgVEhSRUUuTWVzaChyb29tTWVzaC5nZW9tZXRyeSwgc2hhZGVyKTtcbiAgfVxuXG4gIHRvZ2dsZVZpZXdGcnVzdHVtKCk6IHZvaWQge1xuICAgIHRoaXMuaGlnaGxpZ2h0LnZpc2libGUgPSAhdGhpcy5oaWdobGlnaHQudmlzaWJsZTtcbiAgICB0aGlzLmVkZ2VzLnZpc2libGUgPSAhdGhpcy5lZGdlcy52aXNpYmxlO1xuICAgIHRoaXMucGl2b3QudmlzaWJsZSA9ICF0aGlzLnBpdm90LnZpc2libGVcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUFuaW1hdGlvbigpIHtcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcblxuICAgIC8vIHByZWFwcGx5IHRoZSBpbml0aWFsIHJvdGF0aW9uIG9mIHRoZSByb290IHNvIHRoYXQgcGFuQW5nbGUgaXMgcmVsYXRpdmUgdG8gaXQuXG5cbiAgICAvLyBUT0RPOiBmaXggaXQhXG4gICAgY29uc3Qgcm9vdFJvdGF0aW9uID0gdGhpcy5jb250ZXh0LnJvb3QucXVhdGVybmlvbjtcblxuICAgIGNvbnN0IHlBeGlzID0gbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCk7XG4gICAgY29uc3QgZnJhbWUwID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKS5zZXRGcm9tQXhpc0FuZ2xlKHlBeGlzLCAwKS5wcmVtdWx0aXBseShyb290Um90YXRpb24pO1xuICAgIGNvbnN0IGZyYW1lMSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCkuc2V0RnJvbUF4aXNBbmdsZSh5QXhpcywgdGhpcy5pbnB1dHMucGFuQW5nbGUpLnByZW11bHRpcGx5KHJvb3RSb3RhdGlvbik7XG5cbiAgICAvLyBhIHRyYWNrIHRoYXQgaGFzIGRlbGF5cyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBmb3IgNSUgb2YgdGhlIGFuaW1hdGlvblxuICAgIGNvbnN0IHRyYWNrID0gbmV3IFRIUkVFLlF1YXRlcm5pb25LZXlmcmFtZVRyYWNrKCcucXVhdGVybmlvbicsIFtcbiAgICAgIDAsIHRoaXMuaW5wdXRzLnBhblBlcmlvZCAqIDAuMDUsIHRoaXMuaW5wdXRzLnBhblBlcmlvZCAqIDAuOTUsIHRoaXMuaW5wdXRzLnBhblBlcmlvZFxuICAgIF0sIFtcbiAgICAgIGZyYW1lMC54LCBmcmFtZTAueSwgZnJhbWUwLnosIGZyYW1lMC53LFxuICAgICAgZnJhbWUwLngsIGZyYW1lMC55LCBmcmFtZTAueiwgZnJhbWUwLncsXG4gICAgICBmcmFtZTEueCwgZnJhbWUxLnksIGZyYW1lMS56LCBmcmFtZTEudyxcbiAgICAgIGZyYW1lMS54LCBmcmFtZTEueSwgZnJhbWUxLnosIGZyYW1lMS53LFxuICAgIF0pO1xuXG4gICAgY29uc3QgY2xpcCA9IG5ldyBUSFJFRS5BbmltYXRpb25DbGlwKCdwYW5uaW5nJywgdGhpcy5pbnB1dHMucGFuUGVyaW9kLCBbdHJhY2tdKTtcblxuICAgIC8vIFRoZXJlIGlzIG5vIGFwaSB0byBjaGFuZ2UgdGhlIHJvdGF0aW9uIG9mIHRoZSByb290LCBzbyB3ZSB3aWxsIHVzZSBhIHByaXZhdGUgcHJvcGVydHkgdG8gYWNjZXNzIHRoZSBPYmplY3QzRC5cbiAgICAvLyBUaGlzIHdpbGwgbGlrZWx5IG5lZWQgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gICAgdGhpcy5taXhlciA9IG5ldyBUSFJFRS5BbmltYXRpb25NaXhlcigodGhpcy5jb250ZXh0LnJvb3QgYXMgYW55KS5vYmozRCk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5taXhlci5jbGlwQWN0aW9uKGNsaXApO1xuICAgIGFjdGlvbi5sb29wID0gVEhSRUUuTG9vcFBpbmdQb25nO1xuICAgIGFjdGlvbi5wbGF5KCk7XG4gIH1cblxufVxuXG5mdW5jdGlvbiB2ZXJ0ZXhTaGFkZXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIG1hdDQgbGlnaHRNYXRyaXg7XG5cbiAgICB2YXJ5aW5nIHZlYzQgdkxpZ2h0Q29vcmRzO1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgLy8gY3JlYXRlIGEgVVYgcmVnaW9uIFswLDFdIHggWzAsMV0gdG8gcmVwcmVzZW50IHdoYXQgdGhlIGxpZ2h0TWF0cml4IFwic2Vlc1wiXG4gICAgICB2TGlnaHRDb29yZHMgPSBsaWdodE1hdHJpeCAqICBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZnJhZ21lbnRTaGFkZXIoKSB7XG4gIHJldHVybiBgXG4gICAgdW5pZm9ybSB2ZWMzIGNvbG9yO1xuXG4gICAgdmFyeWluZyB2ZWM0IHZMaWdodENvb3JkcztcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIHZlYzIgbGlnaHRVViA9IHZMaWdodENvb3Jkcy54eSAvIHZMaWdodENvb3Jkcy53O1xuICAgICAgZmxvYXQgaW5WaWV3ID0gZmxvYXQobWF4KGxpZ2h0VVYueCwgbGlnaHRVVi55KSA8PSAxLjAgJiYgbWluKGxpZ2h0VVYueCwgbGlnaHRVVi55KSA+PSAwLjAgJiYgdkxpZ2h0Q29vcmRzLnogPiAwLjApO1xuXG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCBtaW4oaW5WaWV3LCAwLjIpKTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUhpZ2hsaWdodFVuaWZvcm1zKHByb2plY3RvcjogUGVyc3BlY3RpdmVDYW1lcmEsIHVuaWZvcm1zOiBIaWdobGlnaHRVbmlmb3Jtcykge1xuICBwcm9qZWN0b3IuZ2V0V29ybGRQb3NpdGlvbih1bmlmb3Jtcy5wcm9qUG9zaXRpb24udmFsdWUpO1xuXG4gIC8vIHNpbWlsYXIgdG8gYSBzaGFkb3cgbWF0cml4LCBidXQgd2UncmUgdXNpbmcgaXQgYXMgYSBcInJlY3Rhbmd1bGFyXCIgc3BvdGxpZ2h0XG4gIC8vIFtsaWdodEJpYXNdICogW3Byb2plY3Rpb25dICogW3ZpZXdNYXRyaXhdXG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLm1ha2VTY2FsZSgwLjUsIDAuNSwgMC41KTtcbiAgdW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUuc2V0UG9zaXRpb24obmV3IFZlY3RvcjMoMC41LCAwLjUsIDAuNSkpXG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLm11bHRpcGx5TWF0cmljZXModW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUsIHByb2plY3Rvci5wcm9qZWN0aW9uTWF0cml4KTtcbiAgdW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUubXVsdGlwbHlNYXRyaWNlcyh1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZSwgcHJvamVjdG9yLm1hdHJpeFdvcmxkSW52ZXJzZSk7XG59XG5cbmV4cG9ydCBjb25zdCBzZWN1cml0eUNhbWVyYVR5cGUgPSAnbXAuc2VjdXJpdHlDYW1lcmEnO1xuZXhwb3J0IGNvbnN0IG1ha2VTZWN1cml0eUNhbWVyYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBTZWN1cml0eUNhbWVyYSgpO1xufVxuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlDYW1lcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9zZWN1cml0eS1jYW1lcmEvU2VjdXJpdHlDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdXLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUN4QyxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxjQUFjLEVBQWEsTUFBTSxtQ0FBbUMsQ0FBQztBQTJCN0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBQWxEOztRQUNVLFNBQUksR0FBb0IsSUFBSSxDQUFDO1FBQzdCLFVBQUssR0FBb0IsSUFBSSxDQUFDO1FBQzlCLFFBQUcsR0FBZ0IsSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzlCLHNCQUFpQixHQUFzQjtZQUM3QyxLQUFLLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUUsRUFBQztZQUMzQixZQUFZLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQUUsRUFBQztZQUNwQyxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQUUsRUFBQztTQUNwQyxDQUFBO1FBR1EsV0FBTSxHQUFXO1lBQ3hCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsUUFBUSxFQUFFLENBQUM7WUFDWCxhQUFhLEVBQUUsRUFBRTtZQUNqQixNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUM7WUFDZCxhQUFhLEVBQUUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQztZQUNqQyxhQUFhLEVBQUUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFB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RUQsU0FBUyx1QkFBdUIsQ0FBQyxTQUE0QixFQUFFLFFBQTJCO0lBQ3hGLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhELDhFQUE4RTtJQUM5RSw0Q0FBNEM7SUFDNUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgT2JqZWN0M0QsIE1lc2gsIFBlcnNwZWN0aXZlQ2FtZXJhLFxyXG4gIE1lc2hCYXNpY01hdGVyaWFsLCBCb3hHZW9tZXRyeSwgU2hhZGVyTWF0ZXJpYWwsIExpbmVCYXNpY01hdGVyaWFsLCBFZGdlc0dlb21ldHJ5LFxyXG4gIEFuaW1hdGlvbk1peGVyLCBDb2xvciwgTWF0cml4NCwgVmVjdG9yM1xyXG59IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtTY2VuZUNvbXBvbmVudCwgSVNjZW5lTm9kZX0gZnJvbSAnLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIFRIUkVFOiBhbnk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgSW5wdXRzIHtcclxuICBuZWFyUGxhbmU6IG51bWJlcjtcclxuICBmYXJQbGFuZTogbnVtYmVyLFxyXG4gIGhvcml6b250YWxGT1Y6IG51bWJlcixcclxuICBhc3BlY3Q6IG51bWJlcixcclxuICBsb2NhbFBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07XHJcbiAgbG9jYWxSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9O1xyXG4gIGNvbG9yOiBudW1iZXI7XHJcbiAgcGFuUGVyaW9kOiBudW1iZXI7XHJcbiAgcGFuQW5nbGU6IG51bWJlcjtcclxufVxyXG5cclxudHlwZSBIaWdobGlnaHRVbmlmb3JtcyA9IHtcclxuICBjb2xvcjogeyB2YWx1ZTogQ29sb3IgfSxcclxuICBwcm9qUG9zaXRpb246IHsgdmFsdWU6IFZlY3RvcjMgfTtcclxuICBsaWdodE1hdHJpeDogeyB2YWx1ZTogTWF0cml4NCB9O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Q2FtZXJhIGV4dGVuZHMgU2NlbmVDb21wb25lbnQge1xyXG4gIHByaXZhdGUgcm9vdDogT2JqZWN0M0QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHBpdm90OiBPYmplY3QzRCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgYm94OiBNZXNoIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBlZGdlczogTWVzaCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcHJvamVjdG9yOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwcml2YXRlIGhpZ2hsaWdodDogTWVzaCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaGlnaGxpZ2h0VW5pZm9ybXM6IEhpZ2hsaWdodFVuaWZvcm1zID0ge1xyXG4gICAgY29sb3I6IHt2YWx1ZTogbmV3IENvbG9yKCl9LFxyXG4gICAgcHJvalBvc2l0aW9uOiB7dmFsdWU6IG5ldyBWZWN0b3IzKCl9LFxyXG4gICAgbGlnaHRNYXRyaXg6IHt2YWx1ZTogbmV3IE1hdHJpeDQoKX0sXHJcbiAgfVxyXG4gIHByaXZhdGUgbWl4ZXI6IEFuaW1hdGlvbk1peGVyO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIG5lYXJQbGFuZTogMC4xLFxyXG4gICAgZmFyUGxhbmU6IDQsXHJcbiAgICBob3Jpem9udGFsRk9WOiA4MCxcclxuICAgIGFzcGVjdDogMTYgLyA5LFxyXG4gICAgbG9jYWxQb3NpdGlvbjoge3g6IDAsIHk6IDAsIHo6IDB9LFxyXG4gICAgbG9jYWxSb3RhdGlvbjoge3g6IDAsIHk6IDAsIHo6IDB9LFxyXG4gICAgY29sb3I6IDB4ZmZmZmZmLFxyXG4gICAgcGFuUGVyaW9kOiAyMCxcclxuICAgIHBhbkFuZ2xlOiAxODAsXHJcbiAgfTtcclxuXHJcbiAgb3ZlcnJpZGUgb3V0cHV0czogYW55ID0ge307XHJcblxyXG5cclxuICBvdmVycmlkZSBvbkluaXQoKSB7XHJcbiAgICBjb25zdCBUSFJFRSA9IHRoaXMuY29udGV4dC50aHJlZTtcclxuXHJcbiAgICB0aGlzLnJvb3QgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcclxuICAgIHRoaXMucGl2b3QgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcclxuICAgIHRoaXMucm9vdC5hZGQodGhpcy5waXZvdCk7XHJcbiAgICB0aGlzLm91dHB1dHMub2JqZWN0Um9vdCA9IHRoaXMucm9vdDtcclxuICAgIHRoaXMucm9vdC5wb3NpdGlvbi5zZXQodGhpcy5pbnB1dHMubG9jYWxQb3NpdGlvbi54LCB0aGlzLmlucHV0cy5sb2NhbFBvc2l0aW9uLnksIHRoaXMuaW5wdXRzLmxvY2FsUG9zaXRpb24ueik7XHJcblxyXG4gICAgY29uc3QgZXVsZXIgPSBuZXcgVEhSRUUuRXVsZXIodGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi54ICogTWF0aC5QSSAvIDE4MCwgdGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi55ICogTWF0aC5QSSAvIDE4MCwgdGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi56ICogTWF0aC5QSSAvIDE4MCwgJ1lYWicpO1xyXG4gICAgdGhpcy5waXZvdC5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcihldWxlcik7XHJcblxyXG4gICAgY29uc3QgYXNwZWN0ID0gdGhpcy5pbnB1dHMuYXNwZWN0O1xyXG4gICAgY29uc3QgREVHMlJBRCA9IE1hdGguUEkgLyAxODA7XHJcbiAgICBjb25zdCBSQUQyREVHID0gMSAvIERFRzJSQUQ7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbEZPViA9IDIgKiBNYXRoLmF0YW4oMSAvIGFzcGVjdCAqIE1hdGgudGFuKDAuNSAqIHRoaXMuaW5wdXRzLmhvcml6b250YWxGT1YgKiBERUcyUkFEKSkgKiBSQUQyREVHO1xyXG4gICAgdGhpcy5wcm9qZWN0b3IgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEodmVydGljYWxGT1YsIGFzcGVjdCwgdGhpcy5pbnB1dHMubmVhclBsYW5lLCB0aGlzLmlucHV0cy5mYXJQbGFuZSk7XHJcbiAgICAvLyBvcmllbnRhdGlvbiBvZiB0aGUgcHJvamVjdG9yIGlzIGhhbmRsZWQgYnkgdGhlIHBpdm90XHJcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLnByb2plY3Rvcik7XHJcblxyXG4gICAgdGhpcy5tYWtlRnJ1c3R1bVZpc3VhbHMoKTtcclxuXHJcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmJveCk7XHJcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmVkZ2VzKTtcclxuXHJcbiAgICB0aGlzLm1ha2VIaWdobGlnaHQoKTtcclxuXHJcbiAgICAvLyBhdHRhY2ggaGlnaGlnaHRpbmcgdG8gdGhlIG1lc2ggaXQgcmVwcmVzZW50c1xyXG4gICAgLy8gVE9ETyAoc2NlbmUgcXVlcnkpOiB0aGlzIGlzIHZlcnkgYnJpdHRsZSBidXQgaXMgdGhlIG9ubHkgd2F5IHRvIGF0dGFjaCBzb21ldGhpbmcgdG8gYSByb29tIG9mIHRoZSBtb2RlbFxyXG4gICAgdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QucGFyZW50LnBhcmVudC5hZGQodGhpcy5oaWdobGlnaHQpO1xyXG5cclxuICAgIC8vIGNyZWF0ZSB0aGUgYW5pbWF0aW9uIG1peGVyIHRvIHJvdGF0ZSB0aGUgY2FtZXJhXHJcbiAgICB0aGlzLm1ha2VBbmltYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uVGljayhkZWx0YTogbnVtYmVyKSB7XHJcbiAgICB1cGRhdGVIaWdobGlnaHRVbmlmb3Jtcyh0aGlzLnByb2plY3RvciwgdGhpcy5oaWdobGlnaHRVbmlmb3Jtcyk7XHJcbiAgICBpZiAodGhpcy5taXhlcikge1xyXG4gICAgICB0aGlzLm1peGVyLnVwZGF0ZShkZWx0YSAvIDEwMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ICYmIHRoaXMuaGlnaGxpZ2h0LnBhcmVudCkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodC5wYXJlbnQucmVtb3ZlKHRoaXMuaGlnaGxpZ2h0KTtcclxuICAgICAgKHRoaXMuaGlnaGxpZ2h0Lm1hdGVyaWFsIGFzIFNoYWRlck1hdGVyaWFsKS5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGdlcykge1xyXG4gICAgICB0aGlzLmVkZ2VzLmdlb21ldHJ5LmRpc3Bvc2UoKTtcclxuICAgICAgKHRoaXMuZWRnZXMubWF0ZXJpYWwgYXMgTGluZUJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJveCkge1xyXG4gICAgICB0aGlzLmJveC5nZW9tZXRyeS5kaXNwb3NlKCk7XHJcbiAgICAgICh0aGlzLmJveC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZUZydXN0dW1WaXN1YWxzKCkge1xyXG4gICAgY29uc3QgVEhSRUUgPSB0aGlzLmNvbnRleHQudGhyZWU7XHJcbiAgICBpZiAodGhpcy5ib3gpIHtcclxuICAgICAgdGhpcy5yb290LnJlbW92ZSh0aGlzLmJveCk7XHJcbiAgICAgICh0aGlzLmJveC5tYXRlcmlhbCBhcyBNZXNoQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xyXG4gICAgICAodGhpcy5ib3guZ2VvbWV0cnkgYXMgQm94R2VvbWV0cnkpLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5ib3ggPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZWRnZXMpIHtcclxuICAgICAgdGhpcy5yb290LnJlbW92ZSh0aGlzLmVkZ2VzKTtcclxuICAgICAgKHRoaXMuZWRnZXMubWF0ZXJpYWwgYXMgTGluZUJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcclxuICAgICAgKHRoaXMuZWRnZXMuZ2VvbWV0cnkgYXMgRWRnZXNHZW9tZXRyeSkuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLmVkZ2VzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBlZGdlc1RvQ3lsaW5kZXJzKGVkZ2VzR2VvbWV0cnk6IEVkZ2VzR2VvbWV0cnksIHRoaWNrbmVzczogbnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IHtwb3NpdGlvbn0gPSBlZGdlc0dlb21ldHJ5LmF0dHJpYnV0ZXM7XHJcbiAgICAgIGNvbnN0IHthcnJheSwgY291bnR9ID0gcG9zaXRpb247XHJcbiAgICAgIGNvbnN0IHIgPSB0aGlja25lc3MgLyAyO1xyXG4gICAgICBjb25zdCBnZW9tcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50ICogMyAtIDE7IGkgKz0gNikge1xyXG4gICAgICAgIGNvbnN0IGEgPSBuZXcgVEhSRUUuVmVjdG9yMyhhcnJheVtpXSwgYXJyYXlbaSArIDFdLCBhcnJheVtpICsgMl0pO1xyXG4gICAgICAgIGNvbnN0IGIgPSBuZXcgVEhSRUUuVmVjdG9yMyhhcnJheVtpICsgM10sIGFycmF5W2kgKyA0XSwgYXJyYXlbaSArIDVdKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmVjID0gbmV3IFRIUkVFLlZlY3RvcjMoKS5zdWJWZWN0b3JzKGIsIGEpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IHZlYy5sZW5ndGgoKTtcclxuICAgICAgICBjb25zdCBnZW9tID0gbmV3IFRIUkVFLkN5bGluZGVyQnVmZmVyR2VvbWV0cnkociwgciwgbGVuLCA4KTtcclxuICAgICAgICBnZW9tLnRyYW5zbGF0ZSgwLCBsZW4gLyAyLCAwKTtcclxuICAgICAgICBnZW9tLnJvdGF0ZVgoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgIGdlb20ubG9va0F0KHZlYyk7XHJcbiAgICAgICAgZ2VvbS50cmFuc2xhdGUoYS54LCBhLnksIGEueik7XHJcbiAgICAgICAgZ2VvbXMucHVzaChnZW9tKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBBUEkgdG8gYmUgdXBkYXRlZCBpbiBidW5kbGUgLSBKU1NESy0xMjIyXHJcbiAgICAgIHJldHVybiAoVEhSRUUgYXMgYW55KS5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoZ2VvbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZydXN0dW1MZW5ndGggPSB0aGlzLmlucHV0cy5mYXJQbGFuZSAtIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcclxuICAgIGNvbnN0IGJveEdlb21ldHJ5OiBCb3hHZW9tZXRyeSA9IG5ldyBUSFJFRS5Cb3hHZW9tZXRyeSgyLCAyLCBmcnVzdHVtTGVuZ3RoKTtcclxuICAgIGNvbnN0IGhhbGZIQW5nbGUgPSB0aGlzLmlucHV0cy5ob3Jpem9udGFsRk9WICogMC41ICogTWF0aC5QSSAvIDE4MDtcclxuICAgIGNvbnN0IG5lYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcclxuICAgIGNvbnN0IGZhckhhbGZXaWR0aCA9IE1hdGgudGFuKGhhbGZIQW5nbGUpICogdGhpcy5pbnB1dHMuZmFyUGxhbmU7XHJcbiAgICBjb25zdCBuZWFySGFsZkhlaWdodCA9IG5lYXJIYWxmV2lkdGggLyB0aGlzLmlucHV0cy5hc3BlY3Q7XHJcbiAgICBjb25zdCBmYXJIYWxmSGVpZ2h0ID0gZmFySGFsZldpZHRoIC8gdGhpcy5pbnB1dHMuYXNwZWN0O1xyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IGJveEdlb21ldHJ5LmdldEF0dHJpYnV0ZSgncG9zaXRpb24nKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5jb3VudDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHZlcnRleFogPSBwb3NpdGlvbnMuZ2V0WihpKTtcclxuICAgICAgY29uc3QgdmVydGV4WCA9IHBvc2l0aW9ucy5nZXRYKGkpO1xyXG4gICAgICBjb25zdCB2ZXJ0ZXhZID0gcG9zaXRpb25zLmdldFkoaSk7XHJcbiAgICAgIGlmICh2ZXJ0ZXhaID4gMCkge1xyXG4gICAgICAgIC8vIGJhY2sgb2YgdGhlIGNhbWVyYVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRYKGksIHZlcnRleFggKiBuZWFySGFsZldpZHRoKVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRZKGksIHZlcnRleFkgKiBuZWFySGFsZkhlaWdodCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZnJvbnQgb2YgdGhlIGNhbWVyYVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRYKGksIHZlcnRleFggKiBmYXJIYWxmV2lkdGgpXHJcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIGZhckhhbGZIZWlnaHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHBvc2l0aW9ucy5zZXRaKGksIHZlcnRleFogLSAwLjUgKiBmcnVzdHVtTGVuZ3RoIC0gdGhpcy5pbnB1dHMubmVhclBsYW5lKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYm94TWF0ZXJpYWw6IE1lc2hCYXNpY01hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHtcclxuICAgICAgY29sb3I6IHRoaXMuaW5wdXRzLmNvbG9yLFxyXG4gICAgICBvcGFjaXR5OiAwLjA1LFxyXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcclxuICAgICAgc2lkZTogVEhSRUUuQmFja1NpZGUsXHJcbiAgICAgIGJsZW5kaW5nOiBUSFJFRS5Ob3JtYWxCbGVuZGluZyxcclxuICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYm94ID0gbmV3IFRIUkVFLk1lc2goYm94R2VvbWV0cnksIGJveE1hdGVyaWFsKTtcclxuICAgIGNvbnN0IGVkZ2VzR2VvbWV0cnkgPSBlZGdlc1RvQ3lsaW5kZXJzKG5ldyBUSFJFRS5FZGdlc0dlb21ldHJ5KGJveEdlb21ldHJ5KSwgMC4wMTUpO1xyXG4gICAgdGhpcy5lZGdlcyA9IG5ldyBUSFJFRS5NZXNoKGVkZ2VzR2VvbWV0cnksIG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7XHJcbiAgICAgIGNvbG9yOiAweGZmZmZmZixcclxuICAgICAgb3BhY2l0eTogMC4yNSxcclxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgIGJsZW5kaW5nOiBUSFJFRS5BZGRpdGl2ZUJsZW5kaW5nLFxyXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCBlZGdlc0dlb21ldHJ5MiA9IGVkZ2VzVG9DeWxpbmRlcnMobmV3IFRIUkVFLkVkZ2VzR2VvbWV0cnkoYm94R2VvbWV0cnkpLCAwLjA2KTtcclxuICAgIGNvbnN0IGVkZ2VzMiA9IG5ldyBUSFJFRS5NZXNoKGVkZ2VzR2VvbWV0cnkyLCBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoe1xyXG4gICAgICBjb2xvcjogdGhpcy5pbnB1dHMuY29sb3IsXHJcbiAgICAgIG9wYWNpdHk6IDAuMDUsXHJcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxyXG4gICAgICBibGVuZGluZzogVEhSRUUuQWRkaXRpdmVCbGVuZGluZyxcclxuICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLnBpdm90LmFkZChlZGdlczIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWtlSGlnaGxpZ2h0KCkge1xyXG4gICAgY29uc3QgVEhSRUUgPSB0aGlzLmNvbnRleHQudGhyZWU7XHJcblxyXG4gICAgLy8gVE9ETyAoc2NlbmUgcXVlcnkpOiB0aGlzIGlzIHZlcnkgYnJpdHRsZSBhbmQgaGFyZGNvZGVkIGJ1dCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHJvb20gZ2VvbWV0cmllcyB1bnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHdheSB0byBxdWVyeSB0aGUgc2NlbmUgZ3JhcGhcclxuICAgIGNvbnN0IGZsb29yTWVzaCA9IHRoaXMub3V0cHV0cy5vYmplY3RSb290LnBhcmVudC5wYXJlbnQuZ2V0T2JqZWN0QnlOYW1lKCdGbG9vck1lc2g6MCcpO1xyXG4gICAgY29uc3Qgcm9vbU1lc2ggPSBmbG9vck1lc2guY2hpbGRyZW5bMF0gYXMgTWVzaDtcclxuXHJcbiAgICB1cGRhdGVIaWdobGlnaHRVbmlmb3Jtcyh0aGlzLnByb2plY3RvciwgdGhpcy5oaWdobGlnaHRVbmlmb3Jtcyk7XHJcbiAgICB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zLmNvbG9yLnZhbHVlLnNldEhleCh0aGlzLmlucHV0cy5jb2xvcik7XHJcblxyXG4gICAgY29uc3Qgc2hhZGVyID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKHtcclxuICAgICAgcG9seWdvbk9mZnNldDogdHJ1ZSxcclxuICAgICAgcG9seWdvbk9mZnNldFVuaXRzOiAtMC4xLFxyXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcclxuICAgICAgdW5pZm9ybXM6IHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMsXHJcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBmcmFnbWVudFNoYWRlcigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gYSBtZXNoIHRvIHJlcHJlc2VudCB0aGUgXCJoaWdobGlnaHRcIlxyXG4gICAgdGhpcy5oaWdobGlnaHQgPSBuZXcgVEhSRUUuTWVzaChyb29tTWVzaC5nZW9tZXRyeSwgc2hhZGVyKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVZpZXdGcnVzdHVtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oaWdobGlnaHQudmlzaWJsZSA9ICF0aGlzLmhpZ2hsaWdodC52aXNpYmxlO1xyXG4gICAgdGhpcy5lZGdlcy52aXNpYmxlID0gIXRoaXMuZWRnZXMudmlzaWJsZTtcclxuICAgIHRoaXMucGl2b3QudmlzaWJsZSA9ICF0aGlzLnBpdm90LnZpc2libGVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZUFuaW1hdGlvbigpIHtcclxuICAgIGNvbnN0IFRIUkVFID0gdGhpcy5jb250ZXh0LnRocmVlO1xyXG5cclxuICAgIC8vIHByZWFwcGx5IHRoZSBpbml0aWFsIHJvdGF0aW9uIG9mIHRoZSByb290IHNvIHRoYXQgcGFuQW5nbGUgaXMgcmVsYXRpdmUgdG8gaXQuXHJcblxyXG4gICAgLy8gVE9ETzogZml4IGl0IVxyXG4gICAgY29uc3Qgcm9vdFJvdGF0aW9uID0gdGhpcy5jb250ZXh0LnJvb3QucXVhdGVybmlvbjtcclxuXHJcbiAgICBjb25zdCB5QXhpcyA9IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDEsIDApO1xyXG4gICAgY29uc3QgZnJhbWUwID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKS5zZXRGcm9tQXhpc0FuZ2xlKHlBeGlzLCAwKS5wcmVtdWx0aXBseShyb290Um90YXRpb24pO1xyXG4gICAgY29uc3QgZnJhbWUxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKS5zZXRGcm9tQXhpc0FuZ2xlKHlBeGlzLCB0aGlzLmlucHV0cy5wYW5BbmdsZSkucHJlbXVsdGlwbHkocm9vdFJvdGF0aW9uKTtcclxuXHJcbiAgICAvLyBhIHRyYWNrIHRoYXQgaGFzIGRlbGF5cyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBmb3IgNSUgb2YgdGhlIGFuaW1hdGlvblxyXG4gICAgY29uc3QgdHJhY2sgPSBuZXcgVEhSRUUuUXVhdGVybmlvbktleWZyYW1lVHJhY2soJy5xdWF0ZXJuaW9uJywgW1xyXG4gICAgICAwLCB0aGlzLmlucHV0cy5wYW5QZXJpb2QgKiAwLjA1LCB0aGlzLmlucHV0cy5wYW5QZXJpb2QgKiAwLjk1LCB0aGlzLmlucHV0cy5wYW5QZXJpb2RcclxuICAgIF0sIFtcclxuICAgICAgZnJhbWUwLngsIGZyYW1lMC55LCBmcmFtZTAueiwgZnJhbWUwLncsXHJcbiAgICAgIGZyYW1lMC54LCBmcmFtZTAueSwgZnJhbWUwLnosIGZyYW1lMC53LFxyXG4gICAgICBmcmFtZTEueCwgZnJhbWUxLnksIGZyYW1lMS56LCBmcmFtZTEudyxcclxuICAgICAgZnJhbWUxLngsIGZyYW1lMS55LCBmcmFtZTEueiwgZnJhbWUxLncsXHJcbiAgICBdKTtcclxuXHJcbiAgICBjb25zdCBjbGlwID0gbmV3IFRIUkVFLkFuaW1hdGlvbkNsaXAoJ3Bhbm5pbmcnLCB0aGlzLmlucHV0cy5wYW5QZXJpb2QsIFt0cmFja10pO1xyXG5cclxuICAgIC8vIFRoZXJlIGlzIG5vIGFwaSB0byBjaGFuZ2UgdGhlIHJvdGF0aW9uIG9mIHRoZSByb290LCBzbyB3ZSB3aWxsIHVzZSBhIHByaXZhdGUgcHJvcGVydHkgdG8gYWNjZXNzIHRoZSBPYmplY3QzRC5cclxuICAgIC8vIFRoaXMgd2lsbCBsaWtlbHkgbmVlZCB0byBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cclxuICAgIHRoaXMubWl4ZXIgPSBuZXcgVEhSRUUuQW5pbWF0aW9uTWl4ZXIoKHRoaXMuY29udGV4dC5yb290IGFzIGFueSkub2JqM0QpO1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5taXhlci5jbGlwQWN0aW9uKGNsaXApO1xyXG4gICAgYWN0aW9uLmxvb3AgPSBUSFJFRS5Mb29wUGluZ1Bvbmc7XHJcbiAgICBhY3Rpb24ucGxheSgpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHZlcnRleFNoYWRlcigpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgXHJcbiAgICB1bmlmb3JtIG1hdDQgbGlnaHRNYXRyaXg7XHJcblxyXG4gICAgdmFyeWluZyB2ZWM0IHZMaWdodENvb3JkcztcclxuXHJcbiAgICB2b2lkIG1haW4oKSB7XHJcbiAgICAgIC8vIGNyZWF0ZSBhIFVWIHJlZ2lvbiBbMCwxXSB4IFswLDFdIHRvIHJlcHJlc2VudCB3aGF0IHRoZSBsaWdodE1hdHJpeCBcInNlZXNcIlxyXG4gICAgICB2TGlnaHRDb29yZHMgPSBsaWdodE1hdHJpeCAqICBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XHJcbiAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XHJcbiAgICB9XHJcbiAgYDtcclxufVxyXG5cclxuZnVuY3Rpb24gZnJhZ21lbnRTaGFkZXIoKSB7XHJcbiAgcmV0dXJuIGBcclxuICAgIHVuaWZvcm0gdmVjMyBjb2xvcjtcclxuXHJcbiAgICB2YXJ5aW5nIHZlYzQgdkxpZ2h0Q29vcmRzO1xyXG5cclxuICAgIHZvaWQgbWFpbigpIHtcclxuICAgICAgdmVjMiBsaWdodFVWID0gdkxpZ2h0Q29vcmRzLnh5IC8gdkxpZ2h0Q29vcmRzLnc7XHJcbiAgICAgIGZsb2F0IGluVmlldyA9IGZsb2F0KG1heChsaWdodFVWLngsIGxpZ2h0VVYueSkgPD0gMS4wICYmIG1pbihsaWdodFVWLngsIGxpZ2h0VVYueSkgPj0gMC4wICYmIHZMaWdodENvb3Jkcy56ID4gMC4wKTtcclxuXHJcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIG1pbihpblZpZXcsIDAuMikpO1xyXG4gICAgfVxyXG4gIGA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVwZGF0ZUhpZ2hsaWdodFVuaWZvcm1zKHByb2plY3RvcjogUGVyc3BlY3RpdmVDYW1lcmEsIHVuaWZvcm1zOiBIaWdobGlnaHRVbmlmb3Jtcykge1xyXG4gIHByb2plY3Rvci5nZXRXb3JsZFBvc2l0aW9uKHVuaWZvcm1zLnByb2pQb3NpdGlvbi52YWx1ZSk7XHJcblxyXG4gIC8vIHNpbWlsYXIgdG8gYSBzaGFkb3cgbWF0cml4LCBidXQgd2UncmUgdXNpbmcgaXQgYXMgYSBcInJlY3Rhbmd1bGFyXCIgc3BvdGxpZ2h0XHJcbiAgLy8gW2xpZ2h0Qmlhc10gKiBbcHJvamVjdGlvbl0gKiBbdmlld01hdHJpeF1cclxuICB1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZS5tYWtlU2NhbGUoMC41LCAwLjUsIDAuNSk7XHJcbiAgdW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUuc2V0UG9zaXRpb24obmV3IFZlY3RvcjMoMC41LCAwLjUsIDAuNSkpXHJcbiAgdW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUubXVsdGlwbHlNYXRyaWNlcyh1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZSwgcHJvamVjdG9yLnByb2plY3Rpb25NYXRyaXgpO1xyXG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLm11bHRpcGx5TWF0cmljZXModW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUsIHByb2plY3Rvci5tYXRyaXhXb3JsZEludmVyc2UpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc2VjdXJpdHlDYW1lcmFUeXBlID0gJ21wLnNlY3VyaXR5Q2FtZXJhJztcclxuZXhwb3J0IGNvbnN0IG1ha2VTZWN1cml0eUNhbWVyYSA9IGZ1bmN0aW9uICgpIHtcclxuICByZXR1cm4gbmV3IFNlY3VyaXR5Q2FtZXJhKCk7XHJcbn1cclxuIl19
|
|
@@ -179,30 +179,30 @@ export class ViewFrustumMesh extends SceneComponent {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
function vertexShader() {
|
|
182
|
-
return `
|
|
183
|
-
uniform mat4 lightMatrix;
|
|
184
|
-
|
|
185
|
-
varying vec4 vLightCoords;
|
|
186
|
-
|
|
187
|
-
void main() {
|
|
188
|
-
// create a UV region [0,1] x [0,1] to represent what the lightMatrix "sees"
|
|
189
|
-
vLightCoords = lightMatrix * modelMatrix * vec4(position, 1.0);
|
|
190
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
191
|
-
}
|
|
182
|
+
return `
|
|
183
|
+
uniform mat4 lightMatrix;
|
|
184
|
+
|
|
185
|
+
varying vec4 vLightCoords;
|
|
186
|
+
|
|
187
|
+
void main() {
|
|
188
|
+
// create a UV region [0,1] x [0,1] to represent what the lightMatrix "sees"
|
|
189
|
+
vLightCoords = lightMatrix * modelMatrix * vec4(position, 1.0);
|
|
190
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
191
|
+
}
|
|
192
192
|
`;
|
|
193
193
|
}
|
|
194
194
|
function fragmentShader() {
|
|
195
|
-
return `
|
|
196
|
-
uniform vec3 color;
|
|
197
|
-
|
|
198
|
-
varying vec4 vLightCoords;
|
|
199
|
-
|
|
200
|
-
void main() {
|
|
201
|
-
vec2 lightUV = vLightCoords.xy / vLightCoords.w;
|
|
202
|
-
float inView = float(max(lightUV.x, lightUV.y) <= 1.0 && min(lightUV.x, lightUV.y) >= 0.0 && vLightCoords.z > 0.0);
|
|
203
|
-
|
|
204
|
-
gl_FragColor = vec4(color, min(inView, 0.2));
|
|
205
|
-
}
|
|
195
|
+
return `
|
|
196
|
+
uniform vec3 color;
|
|
197
|
+
|
|
198
|
+
varying vec4 vLightCoords;
|
|
199
|
+
|
|
200
|
+
void main() {
|
|
201
|
+
vec2 lightUV = vLightCoords.xy / vLightCoords.w;
|
|
202
|
+
float inView = float(max(lightUV.x, lightUV.y) <= 1.0 && min(lightUV.x, lightUV.y) >= 0.0 && vLightCoords.z > 0.0);
|
|
203
|
+
|
|
204
|
+
gl_FragColor = vec4(color, min(inView, 0.2));
|
|
205
|
+
}
|
|
206
206
|
`;
|
|
207
207
|
}
|
|
208
208
|
function updateHighlightUniforms(projector, uniforms) {
|
|
@@ -218,4 +218,4 @@ export const ViewFrustumMeshType = 'mp.ViewFrustumMesh';
|
|
|
218
218
|
export const makeViewFrustumMesh = function () {
|
|
219
219
|
return new ViewFrustumMesh();
|
|
220
220
|
};
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld0ZydXN0dW1NZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFFWCxhQUFhLEVBQ2IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsS0FBSyxFQUNMLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsY0FBYyxFQUNkLGdCQUFnQixHQUNqQixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSxpREFBaUQsQ0FBQTtBQUN0RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFvQmpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLGNBQWM7SUFBbkQ7O1FBRVUsU0FBSSxHQUFvQixJQUFJLENBQUM7UUFDN0IsVUFBSyxHQUFvQixJQUFJLENBQUM7UUFDOUIsUUFBRyxHQUFnQixJQUFJLENBQUM7UUFDeEIsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFJekIsV0FBTSxHQUFXO1lBQ3hCLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsZUFBZSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxFQUFFLENBQUM7Z0JBQ04sR0FBRyxFQUFFLElBQUk7Z0JBQ1QsR0FBRyxFQUFFLENBQUMsR0FBRzthQUNWO1lBQ0QsZUFBZSxFQUFFO2dCQUNmLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ1IsR0FBRyxFQUFFLENBQUM7Z0JBQ04s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QUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbEUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUMvQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPYmplY3QzRCxcbiAgTWVzaCxcbiAgUGVyc3BlY3RpdmVDYW1lcmEsXG4gIFNoYWRlck1hdGVyaWFsLFxuICBNZXNoQmFzaWNNYXRlcmlhbCxcbiAgQm94R2VvbWV0cnksXG4gIExpbmVCYXNpY01hdGVyaWFsLFxuICBFZGdlc0dlb21ldHJ5LFxuICBDb2xvcixcbiAgTWF0cml4NCxcbiAgVmVjdG9yMyxcbiAgRXVsZXIsXG4gIEN5bGluZGVyQnVmZmVyR2VvbWV0cnksXG4gIEJhY2tTaWRlLFxuICBOb3JtYWxCbGVuZGluZyxcbiAgQWRkaXRpdmVCbGVuZGluZyxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0ICogYXMgQnVmZmVyR2VvbWV0cnlVdGlscyBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vdXRpbHMvQnVmZmVyR2VvbWV0cnlVdGlscy5qcydcbmltcG9ydCB7U2NlbmVDb21wb25lbnR9IGZyb20gJy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBJbnB1dHMge1xuICBuZWFyUGxhbmU6IG51bWJlcjtcbiAgZmFyUGxhbmU6IG51bWJlcixcbiAgaG9yaXpvbnRhbEZPVjogbnVtYmVyLFxuICBhc3BlY3Q6IG51bWJlcixcbiAgbG9jYWxQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9O1xuICBsb2NhbFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07XG4gIGNvbG9yOiBudW1iZXI7XG4gIHBhblBlcmlvZDogbnVtYmVyO1xuICBwYW5BbmdsZTogbnVtYmVyO1xufVxuXG50eXBlIEhpZ2hsaWdodFVuaWZvcm1zID0ge1xuICBjb2xvcjogeyB2YWx1ZTogQ29sb3IgfSxcbiAgcHJvalBvc2l0aW9uOiB7IHZhbHVlOiBWZWN0b3IzIH07XG4gIGxpZ2h0TWF0cml4OiB7IHZhbHVlOiBNYXRyaXg0IH07XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyB0aGUgZXh0cmFjdGVkIFZpZXcgRnJ1c3R1bSBNZXNoIGZyb21cbiAqIFNlY3VyaXR5Q2FtZXJhIGV4YW1wbGVcbiAqL1xuZXhwb3J0IGNsYXNzIFZpZXdGcnVzdHVtTWVzaCBleHRlbmRzIFNjZW5lQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJvb3Q6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGl2b3Q6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYm94OiBNZXNoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZWRnZXM6IE1lc2ggfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHByb2plY3RvcjogUGVyc3BlY3RpdmVDYW1lcmE7XG5cbiAgb3ZlcnJpZGUgaW5wdXRzOiBJbnB1dHMgPSB7XG4gICAgXCJuZWFyUGxhbmVcIjogMC4xLFxuICAgIFwiZmFyUGxhbmVcIjogMTAsXG4gICAgXCJob3Jpem9udGFsRk9WXCI6IDUyLFxuICAgIFwiYXNwZWN0XCI6IDEuNzc3Nzc3Nzc3Nzc3Nzc3NyxcbiAgICBcImxvY2FsUG9zaXRpb25cIjoge1xuICAgICAgXCJ4XCI6IDAsXG4gICAgICBcInlcIjogMC4xOCxcbiAgICAgIFwielwiOiAtMC4zXG4gICAgfSxcbiAgICBcImxvY2FsUm90YXRpb25cIjoge1xuICAgICAgXCJ4XCI6IC0xNSxcbiAgICAgIFwieVwiOiAwLFxuICAgICAgXCJ6XCI6IDBcbiAgICB9LFxuICAgIFwiY29sb3JcIjogNjUyODAsXG4gICAgXCJwYW5QZXJpb2RcIjogNSxcbiAgICBcInBhbkFuZ2xlXCI6IC00NVxuICB9O1xuXG4gIHByaXZhdGUgaGlnaGxpZ2h0OiBNZXNoIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHRVbmlmb3JtczogSGlnaGxpZ2h0VW5pZm9ybXMgPSB7XG4gICAgY29sb3I6IHt2YWx1ZTogbmV3IENvbG9yKCl9LFxuICAgIHByb2pQb3NpdGlvbjoge3ZhbHVlOiBuZXcgVmVjdG9yMygpfSxcbiAgICBsaWdodE1hdHJpeDoge3ZhbHVlOiBuZXcgTWF0cml4NCgpfSxcbiAgfVxuICBvdmVycmlkZSBvdXRwdXRzOiBhbnkgPSB7fTtcblxuICBvdmVycmlkZSBvbkluaXQoKSB7XG5cbiAgICB0aGlzLnJvb3QgPSBuZXcgT2JqZWN0M0QoKTtcbiAgICB0aGlzLnBpdm90ID0gbmV3IE9iamVjdDNEKCk7XG4gICAgdGhpcy5yb290LmFkZCh0aGlzLnBpdm90KTtcbiAgICB0aGlzLm91dHB1dHMub2JqZWN0Um9vdCA9IHRoaXMucm9vdDtcblxuICAgIGNvbnN0IGV1bGVyID0gbmV3IEV1bGVyKHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueCAqIE1hdGguUEkgLyAxODAsIHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueSAqIE1hdGguUEkgLyAxODAsIHRoaXMuaW5wdXRzLmxvY2FsUm90YXRpb24ueiAqIE1hdGguUEkgLyAxODAsICdZWFonKTtcbiAgICB0aGlzLnBpdm90LnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKGV1bGVyKTtcblxuICAgIHRoaXMubWFrZUZydXN0dW1WaXN1YWxzKCk7XG5cbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmJveCk7XG4gICAgdGhpcy5waXZvdC5hZGQodGhpcy5lZGdlcyk7XG5cbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLmlucHV0cy5hc3BlY3Q7XG4gICAgY29uc3QgREVHMlJBRCA9IE1hdGguUEkgLyAxODA7XG4gICAgY29uc3QgUkFEMkRFRyA9IDEgLyBERUcyUkFEO1xuICAgIGNvbnN0IHZlcnRpY2FsRk9WID0gMiAqIE1hdGguYXRhbigxIC8gYXNwZWN0ICogTWF0aC50YW4oMC41ICogdGhpcy5pbnB1dHMuaG9yaXpvbnRhbEZPViAqIERFRzJSQUQpKSAqIFJBRDJERUc7XG4gICAgdGhpcy5wcm9qZWN0b3IgPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEodmVydGljYWxGT1YsIGFzcGVjdCwgdGhpcy5pbnB1dHMubmVhclBsYW5lLCB0aGlzLmlucHV0cy5mYXJQbGFuZSk7XG4gICAgdGhpcy5waXZvdC5hZGQodGhpcy5wcm9qZWN0b3IpO1xuXG4gICAgdGhpcy5tYWtlSGlnaGxpZ2h0KCk7XG4gICAgdGhpcy5jb250ZXh0LnNjZW5lLmFkZCh0aGlzLmhpZ2hsaWdodCk7XG5cbiAgfVxuXG5cbiAgb25UaWNrTW9kaWZpZWQoZGVsdGE6IG51bWJlciwgcXVhdGVybmlvbjogYW55KSB7XG4gICAgdGhpcy5waXZvdC5xdWF0ZXJuaW9uLnNldChxdWF0ZXJuaW9uLngscXVhdGVybmlvbi55LHF1YXRlcm5pb24ueixxdWF0ZXJuaW9uLncpO1xuICAgIHVwZGF0ZUhpZ2hsaWdodFVuaWZvcm1zKHRoaXMucHJvamVjdG9yLCB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUZydXN0dW1WaXN1YWxzKCkge1xuICAgIGlmICh0aGlzLmJveCkge1xuICAgICAgdGhpcy5yb290LnJlbW92ZSh0aGlzLmJveCk7XG4gICAgICAodGhpcy5ib3gubWF0ZXJpYWwgYXMgTWVzaEJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcbiAgICAgICh0aGlzLmJveC5nZW9tZXRyeSBhcyBCb3hHZW9tZXRyeSkuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5ib3ggPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5lZGdlcykge1xuICAgICAgdGhpcy5yb290LnJlbW92ZSh0aGlzLmVkZ2VzKTtcbiAgICAgICh0aGlzLmVkZ2VzLm1hdGVyaWFsIGFzIExpbmVCYXNpY01hdGVyaWFsKS5kaXNwb3NlKCk7XG4gICAgICAodGhpcy5lZGdlcy5nZW9tZXRyeSBhcyBFZGdlc0dlb21ldHJ5KS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmVkZ2VzID0gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlZGdlc1RvQ3lsaW5kZXJzKGVkZ2VzR2VvbWV0cnk6IEVkZ2VzR2VvbWV0cnksIHRoaWNrbmVzczogbnVtYmVyKSB7XG4gICAgICBjb25zdCB7cG9zaXRpb259ID0gZWRnZXNHZW9tZXRyeS5hdHRyaWJ1dGVzO1xuICAgICAgY29uc3Qge2FycmF5LCBjb3VudH0gPSBwb3NpdGlvbjtcbiAgICAgIGNvbnN0IHIgPSB0aGlja25lc3MgLyAyO1xuICAgICAgY29uc3QgZ2VvbXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQgKiAzIC0gMTsgaSArPSA2KSB7XG4gICAgICAgIGNvbnN0IGEgPSBuZXcgVmVjdG9yMyhhcnJheVtpXSwgYXJyYXlbaSArIDFdLCBhcnJheVtpICsgMl0pO1xuICAgICAgICBjb25zdCBiID0gbmV3IFZlY3RvcjMoYXJyYXlbaSArIDNdLCBhcnJheVtpICsgNF0sIGFycmF5W2kgKyA1XSk7XG5cbiAgICAgICAgY29uc3QgdmVjID0gbmV3IFZlY3RvcjMoKS5zdWJWZWN0b3JzKGIsIGEpO1xuICAgICAgICBjb25zdCBsZW4gPSB2ZWMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGdlb20gPSBuZXcgQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeShyLCByLCBsZW4sIDgpO1xuICAgICAgICBnZW9tLnRyYW5zbGF0ZSgwLCBsZW4gLyAyLCAwKTtcbiAgICAgICAgZ2VvbS5yb3RhdGVYKE1hdGguUEkgLyAyKTtcbiAgICAgICAgZ2VvbS5sb29rQXQodmVjKTtcbiAgICAgICAgZ2VvbS50cmFuc2xhdGUoYS54LCBhLnksIGEueik7XG4gICAgICAgIGdlb21zLnB1c2goZ2VvbSk7XG4gICAgICB9XG4gICAgICAvLyBBUEkgdG8gYmUgdXBkYXRlZCBpbiBidW5kbGUgLSBKU1NESy0xMjIyXG4gICAgICByZXR1cm4gQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoZ2VvbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGZydXN0dW1MZW5ndGggPSB0aGlzLmlucHV0cy5mYXJQbGFuZSAtIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcbiAgICBjb25zdCBib3hHZW9tZXRyeTogQm94R2VvbWV0cnkgPSBuZXcgQm94R2VvbWV0cnkoMiwgMiwgZnJ1c3R1bUxlbmd0aCk7XG4gICAgY29uc3QgaGFsZkhBbmdsZSA9IHRoaXMuaW5wdXRzLmhvcml6b250YWxGT1YgKiAwLjUgKiBNYXRoLlBJIC8gMTgwO1xuICAgIGNvbnN0IG5lYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcbiAgICBjb25zdCBmYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLmZhclBsYW5lO1xuICAgIGNvbnN0IG5lYXJIYWxmSGVpZ2h0ID0gbmVhckhhbGZXaWR0aCAvIHRoaXMuaW5wdXRzLmFzcGVjdDtcbiAgICBjb25zdCBmYXJIYWxmSGVpZ2h0ID0gZmFySGFsZldpZHRoIC8gdGhpcy5pbnB1dHMuYXNwZWN0O1xuXG4gICAgY29uc3QgcG9zaXRpb25zID0gYm94R2VvbWV0cnkuZ2V0QXR0cmlidXRlKCdwb3NpdGlvbicpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMuY291bnQ7IGkrKykge1xuICAgICAgY29uc3QgdmVydGV4WiA9IHBvc2l0aW9ucy5nZXRaKGkpO1xuICAgICAgY29uc3QgdmVydGV4WCA9IHBvc2l0aW9ucy5nZXRYKGkpO1xuICAgICAgY29uc3QgdmVydGV4WSA9IHBvc2l0aW9ucy5nZXRZKGkpO1xuICAgICAgaWYgKHZlcnRleFogPiAwKSB7XG4gICAgICAgIC8vIGJhY2sgb2YgdGhlIGNhbWVyYVxuICAgICAgICBwb3NpdGlvbnMuc2V0WChpLCB2ZXJ0ZXhYICogbmVhckhhbGZXaWR0aClcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIG5lYXJIYWxmSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZyb250IG9mIHRoZSBjYW1lcmFcbiAgICAgICAgcG9zaXRpb25zLnNldFgoaSwgdmVydGV4WCAqIGZhckhhbGZXaWR0aClcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIGZhckhhbGZIZWlnaHQpO1xuICAgICAgfVxuICAgICAgcG9zaXRpb25zLnNldFooaSwgdmVydGV4WiAtIDAuNSAqIGZydXN0dW1MZW5ndGggLSB0aGlzLmlucHV0cy5uZWFyUGxhbmUpO1xuICAgIH1cblxuICAgIGNvbnN0IGJveE1hdGVyaWFsOiBNZXNoQmFzaWNNYXRlcmlhbCA9IG5ldyBNZXNoQmFzaWNNYXRlcmlhbCh7XG4gICAgICBjb2xvcjogdGhpcy5pbnB1dHMuY29sb3IsXG4gICAgICBvcGFjaXR5OiAwLjM1LFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICBzaWRlOiBCYWNrU2lkZSxcbiAgICAgIGJsZW5kaW5nOiBOb3JtYWxCbGVuZGluZyxcbiAgICAgIGRlcHRoV3JpdGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMuYm94ID0gbmV3IE1lc2goYm94R2VvbWV0cnksIGJveE1hdGVyaWFsKTtcbiAgICBjb25zdCBlZGdlc0dlb21ldHJ5ID0gZWRnZXNUb0N5bGluZGVycyhuZXcgRWRnZXNHZW9tZXRyeShib3hHZW9tZXRyeSksIDAuMDE1KTtcbiAgICB0aGlzLmVkZ2VzID0gbmV3IE1lc2goZWRnZXNHZW9tZXRyeSwgbmV3IE1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgIGNvbG9yOiAweGZmZmZmZixcbiAgICAgIG9wYWNpdHk6IDAuMjUsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgIGJsZW5kaW5nOiBBZGRpdGl2ZUJsZW5kaW5nLFxuICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgZWRnZXNHZW9tZXRyeTIgPSBlZGdlc1RvQ3lsaW5kZXJzKG5ldyBFZGdlc0dlb21ldHJ5KGJveEdlb21ldHJ5KSwgMC4wNik7XG4gICAgY29uc3QgZWRnZXMyID0gbmV3IE1lc2goZWRnZXNHZW9tZXRyeTIsIG5ldyBNZXNoQmFzaWNNYXRlcmlhbCh7XG4gICAgICBjb2xvcjogdGhpcy5pbnB1dHMuY29sb3IsXG4gICAgICBvcGFjaXR5OiAwLjM1LFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICBibGVuZGluZzogQWRkaXRpdmVCbGVuZGluZyxcbiAgICAgIGRlcHRoV3JpdGU6IGZhbHNlLFxuICAgIH0pKTtcbiAgICB0aGlzLnBpdm90LmFkZChlZGdlczIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlSGlnaGxpZ2h0KCkge1xuXG4gICAgbGV0IGZsb29yTWVzaCA9IG51bGw7XG4gICAgZmxvb3JNZXNoID0gdGhpcy5jb250ZXh0LnNjZW5lLmdldE9iamVjdEJ5TmFtZSgnRmxvb3JNZXNoOjAnKTtcbiAgICBjb25zdCByb29tTWVzaCA9IGZsb29yTWVzaC5jaGlsZHJlbls1XSBhcyBNZXNoO1xuXG4gICAgdXBkYXRlSGlnaGxpZ2h0VW5pZm9ybXModGhpcy5wcm9qZWN0b3IsIHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMpO1xuICAgIHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMuY29sb3IudmFsdWUuc2V0SGV4KHRoaXMuaW5wdXRzLmNvbG9yKTtcblxuICAgIGNvbnN0IHNoYWRlciA9IG5ldyBTaGFkZXJNYXRlcmlhbCh7XG4gICAgICBwb2x5Z29uT2Zmc2V0OiB0cnVlLFxuICAgICAgcG9seWdvbk9mZnNldFVuaXRzOiAtMC4xLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICB1bmlmb3JtczogdGhpcy5oaWdobGlnaHRVbmlmb3JtcyxcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXG4gICAgICBmcmFnbWVudFNoYWRlcjogZnJhZ21lbnRTaGFkZXIoKSxcbiAgICB9KTtcblxuICAgIC8vIGEgbWVzaCB0byByZXByZXNlbnQgdGhlIFwiaGlnaGxpZ2h0XCJcbiAgICB0aGlzLmhpZ2hsaWdodCA9IG5ldyBNZXNoKHJvb21NZXNoLmdlb21ldHJ5LCBzaGFkZXIpO1xuXG4gIH1cblxuICBvdmVycmlkZSBvbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ICYmIHRoaXMuaGlnaGxpZ2h0LnBhcmVudCkge1xuICAgICAgdGhpcy5oaWdobGlnaHQucGFyZW50LnJlbW92ZSh0aGlzLmhpZ2hsaWdodCk7XG4gICAgICAodGhpcy5oaWdobGlnaHQubWF0ZXJpYWwgYXMgU2hhZGVyTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZWRnZXMpIHtcbiAgICAgIHRoaXMuZWRnZXMuZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgKHRoaXMuZWRnZXMubWF0ZXJpYWwgYXMgTGluZUJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYm94KSB7XG4gICAgICB0aGlzLmJveC5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICAodGhpcy5ib3gubWF0ZXJpYWwgYXMgTWVzaEJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmVydGV4U2hhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBgXG4gICAgdW5pZm9ybSBtYXQ0IGxpZ2h0TWF0cml4O1xuXG4gICAgdmFyeWluZyB2ZWM0IHZMaWdodENvb3JkcztcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIC8vIGNyZWF0ZSBhIFVWIHJlZ2lvbiBbMCwxXSB4IFswLDFdIHRvIHJlcHJlc2VudCB3aGF0IHRoZSBsaWdodE1hdHJpeCBcInNlZXNcIlxuICAgICAgdkxpZ2h0Q29vcmRzID0gbGlnaHRNYXRyaXggKiAgbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGZyYWdtZW50U2hhZGVyKCkge1xuICByZXR1cm4gYFxuICAgIHVuaWZvcm0gdmVjMyBjb2xvcjtcblxuICAgIHZhcnlpbmcgdmVjNCB2TGlnaHRDb29yZHM7XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWMyIGxpZ2h0VVYgPSB2TGlnaHRDb29yZHMueHkgLyB2TGlnaHRDb29yZHMudztcbiAgICAgIGZsb2F0IGluVmlldyA9IGZsb2F0KG1heChsaWdodFVWLngsIGxpZ2h0VVYueSkgPD0gMS4wICYmIG1pbihsaWdodFVWLngsIGxpZ2h0VVYueSkgPj0gMC4wICYmIHZMaWdodENvb3Jkcy56ID4gMC4wKTtcblxuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgbWluKGluVmlldywgMC4yKSk7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVIaWdobGlnaHRVbmlmb3Jtcyhwcm9qZWN0b3I6IFBlcnNwZWN0aXZlQ2FtZXJhLCB1bmlmb3JtczogSGlnaGxpZ2h0VW5pZm9ybXMpIHtcbiAgcHJvamVjdG9yLmdldFdvcmxkUG9zaXRpb24odW5pZm9ybXMucHJvalBvc2l0aW9uLnZhbHVlKTtcblxuICAvLyBzaW1pbGFyIHRvIGEgc2hhZG93IG1hdHJpeCwgYnV0IHdlJ3JlIHVzaW5nIGl0IGFzIGEgXCJyZWN0YW5ndWxhclwiIHNwb3RsaWdodFxuICAvLyBbbGlnaHRCaWFzXSAqIFtwcm9qZWN0aW9uXSAqIFt2aWV3TWF0cml4XVxuICB1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZS5tYWtlU2NhbGUoMC41LCAwLjUsIDAuNSk7XG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLnNldFBvc2l0aW9uKG5ldyBWZWN0b3IzKDAuNSwgMC41LCAwLjUpKVxuICB1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZS5tdWx0aXBseU1hdHJpY2VzKHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLCBwcm9qZWN0b3IucHJvamVjdGlvbk1hdHJpeCk7XG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLm11bHRpcGx5TWF0cmljZXModW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUsIHByb2plY3Rvci5tYXRyaXhXb3JsZEludmVyc2UpO1xufVxuXG5leHBvcnQgY29uc3QgVmlld0ZydXN0dW1NZXNoVHlwZSA9ICdtcC5WaWV3RnJ1c3R1bU1lc2gnO1xuZXhwb3J0IGNvbnN0IG1ha2VWaWV3RnJ1c3R1bU1lc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlld0ZydXN0dW1NZXNoKCk7XG59XG4iXX0=
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld0ZydXN0dW1NZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFFWCxhQUFhLEVBQ2IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsS0FBSyxFQUNMLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsY0FBYyxFQUNkLGdCQUFnQixHQUNqQixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSxpREFBaUQsQ0FBQTtBQUN0RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFvQmpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLGNBQWM7SUFBbkQ7O1FBRVUsU0FBSSxHQUFvQixJQUFJLENBQUM7UUFDN0IsVUFBSyxHQUFvQixJQUFJLENBQUM7UUFDOUIsUUFBRyxHQUFnQixJQUFJLENBQUM7UUFDeEIsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFJekIsV0FBTSxHQUFXO1lBQ3hCLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsZUFBZSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxFQUFFLENBQUM7Z0JBQ04sR0FBRyxFQUFFLElBQUk7Z0JBQ1QsR0FBRyxFQUFFLENBQUMsR0FBRzthQUNWO1lBQ0QsZUFBZSxFQUFFO2dCQUNmLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ1IsR0FBRyxFQUFFLENBQUM7Z0JBQ04s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QUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbEUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUMvQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIE9iamVjdDNELFxyXG4gIE1lc2gsXHJcbiAgUGVyc3BlY3RpdmVDYW1lcmEsXHJcbiAgU2hhZGVyTWF0ZXJpYWwsXHJcbiAgTWVzaEJhc2ljTWF0ZXJpYWwsXHJcbiAgQm94R2VvbWV0cnksXHJcbiAgTGluZUJhc2ljTWF0ZXJpYWwsXHJcbiAgRWRnZXNHZW9tZXRyeSxcclxuICBDb2xvcixcclxuICBNYXRyaXg0LFxyXG4gIFZlY3RvcjMsXHJcbiAgRXVsZXIsXHJcbiAgQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeSxcclxuICBCYWNrU2lkZSxcclxuICBOb3JtYWxCbGVuZGluZyxcclxuICBBZGRpdGl2ZUJsZW5kaW5nLFxyXG59IGZyb20gJ3RocmVlJztcclxuaW1wb3J0ICogYXMgQnVmZmVyR2VvbWV0cnlVdGlscyBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vdXRpbHMvQnVmZmVyR2VvbWV0cnlVdGlscy5qcydcclxuaW1wb3J0IHtTY2VuZUNvbXBvbmVudH0gZnJvbSAnLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBJbnB1dHMge1xyXG4gIG5lYXJQbGFuZTogbnVtYmVyO1xyXG4gIGZhclBsYW5lOiBudW1iZXIsXHJcbiAgaG9yaXpvbnRhbEZPVjogbnVtYmVyLFxyXG4gIGFzcGVjdDogbnVtYmVyLFxyXG4gIGxvY2FsUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTtcclxuICBsb2NhbFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07XHJcbiAgY29sb3I6IG51bWJlcjtcclxuICBwYW5QZXJpb2Q6IG51bWJlcjtcclxuICBwYW5BbmdsZTogbnVtYmVyO1xyXG59XHJcblxyXG50eXBlIEhpZ2hsaWdodFVuaWZvcm1zID0ge1xyXG4gIGNvbG9yOiB7IHZhbHVlOiBDb2xvciB9LFxyXG4gIHByb2pQb3NpdGlvbjogeyB2YWx1ZTogVmVjdG9yMyB9O1xyXG4gIGxpZ2h0TWF0cml4OiB7IHZhbHVlOiBNYXRyaXg0IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNsYXNzIGlzIHRoZSBleHRyYWN0ZWQgVmlldyBGcnVzdHVtIE1lc2ggZnJvbVxyXG4gKiBTZWN1cml0eUNhbWVyYSBleGFtcGxlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlld0ZydXN0dW1NZXNoIGV4dGVuZHMgU2NlbmVDb21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIHJvb3Q6IE9iamVjdDNEIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwaXZvdDogT2JqZWN0M0QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGJveDogTWVzaCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZWRnZXM6IE1lc2ggfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBwcm9qZWN0b3I6IFBlcnNwZWN0aXZlQ2FtZXJhO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIFwibmVhclBsYW5lXCI6IDAuMSxcclxuICAgIFwiZmFyUGxhbmVcIjogMTAsXHJcbiAgICBcImhvcml6b250YWxGT1ZcIjogNTIsXHJcbiAgICBcImFzcGVjdFwiOiAxLjc3Nzc3Nzc3Nzc3Nzc3NzcsXHJcbiAgICBcImxvY2FsUG9zaXRpb25cIjoge1xyXG4gICAgICBcInhcIjogMCxcclxuICAgICAgXCJ5XCI6IDAuMTgsXHJcbiAgICAgIFwielwiOiAtMC4zXHJcbiAgICB9LFxyXG4gICAgXCJsb2NhbFJvdGF0aW9uXCI6IHtcclxuICAgICAgXCJ4XCI6IC0xNSxcclxuICAgICAgXCJ5XCI6IDAsXHJcbiAgICAgIFwielwiOiAwXHJcbiAgICB9LFxyXG4gICAgXCJjb2xvclwiOiA2NTI4MCxcclxuICAgIFwicGFuUGVyaW9kXCI6IDUsXHJcbiAgICBcInBhbkFuZ2xlXCI6IC00NVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaGlnaGxpZ2h0OiBNZXNoIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgaGlnaGxpZ2h0VW5pZm9ybXM6IEhpZ2hsaWdodFVuaWZvcm1zID0ge1xyXG4gICAgY29sb3I6IHt2YWx1ZTogbmV3IENvbG9yKCl9LFxyXG4gICAgcHJvalBvc2l0aW9uOiB7dmFsdWU6IG5ldyBWZWN0b3IzKCl9LFxyXG4gICAgbGlnaHRNYXRyaXg6IHt2YWx1ZTogbmV3IE1hdHJpeDQoKX0sXHJcbiAgfVxyXG4gIG92ZXJyaWRlIG91dHB1dHM6IGFueSA9IHt9O1xyXG5cclxuICBvdmVycmlkZSBvbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5yb290ID0gbmV3IE9iamVjdDNEKCk7XHJcbiAgICB0aGlzLnBpdm90ID0gbmV3IE9iamVjdDNEKCk7XHJcbiAgICB0aGlzLnJvb3QuYWRkKHRoaXMucGl2b3QpO1xyXG4gICAgdGhpcy5vdXRwdXRzLm9iamVjdFJvb3QgPSB0aGlzLnJvb3Q7XHJcblxyXG4gICAgY29uc3QgZXVsZXIgPSBuZXcgRXVsZXIodGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi54ICogTWF0aC5QSSAvIDE4MCwgdGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi55ICogTWF0aC5QSSAvIDE4MCwgdGhpcy5pbnB1dHMubG9jYWxSb3RhdGlvbi56ICogTWF0aC5QSSAvIDE4MCwgJ1lYWicpO1xyXG4gICAgdGhpcy5waXZvdC5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcihldWxlcik7XHJcblxyXG4gICAgdGhpcy5tYWtlRnJ1c3R1bVZpc3VhbHMoKTtcclxuXHJcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmJveCk7XHJcbiAgICB0aGlzLnBpdm90LmFkZCh0aGlzLmVkZ2VzKTtcclxuXHJcbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLmlucHV0cy5hc3BlY3Q7XHJcbiAgICBjb25zdCBERUcyUkFEID0gTWF0aC5QSSAvIDE4MDtcclxuICAgIGNvbnN0IFJBRDJERUcgPSAxIC8gREVHMlJBRDtcclxuICAgIGNvbnN0IHZlcnRpY2FsRk9WID0gMiAqIE1hdGguYXRhbigxIC8gYXNwZWN0ICogTWF0aC50YW4oMC41ICogdGhpcy5pbnB1dHMuaG9yaXpvbnRhbEZPViAqIERFRzJSQUQpKSAqIFJBRDJERUc7XHJcbiAgICB0aGlzLnByb2plY3RvciA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSh2ZXJ0aWNhbEZPViwgYXNwZWN0LCB0aGlzLmlucHV0cy5uZWFyUGxhbmUsIHRoaXMuaW5wdXRzLmZhclBsYW5lKTtcclxuICAgIHRoaXMucGl2b3QuYWRkKHRoaXMucHJvamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLm1ha2VIaWdobGlnaHQoKTtcclxuICAgIHRoaXMuY29udGV4dC5zY2VuZS5hZGQodGhpcy5oaWdobGlnaHQpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBvblRpY2tNb2RpZmllZChkZWx0YTogbnVtYmVyLCBxdWF0ZXJuaW9uOiBhbnkpIHtcclxuICAgIHRoaXMucGl2b3QucXVhdGVybmlvbi5zZXQocXVhdGVybmlvbi54LHF1YXRlcm5pb24ueSxxdWF0ZXJuaW9uLnoscXVhdGVybmlvbi53KTtcclxuICAgIHVwZGF0ZUhpZ2hsaWdodFVuaWZvcm1zKHRoaXMucHJvamVjdG9yLCB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZUZydXN0dW1WaXN1YWxzKCkge1xyXG4gICAgaWYgKHRoaXMuYm94KSB7XHJcbiAgICAgIHRoaXMucm9vdC5yZW1vdmUodGhpcy5ib3gpO1xyXG4gICAgICAodGhpcy5ib3gubWF0ZXJpYWwgYXMgTWVzaEJhc2ljTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcclxuICAgICAgKHRoaXMuYm94Lmdlb21ldHJ5IGFzIEJveEdlb21ldHJ5KS5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMuYm94ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVkZ2VzKSB7XHJcbiAgICAgIHRoaXMucm9vdC5yZW1vdmUodGhpcy5lZGdlcyk7XHJcbiAgICAgICh0aGlzLmVkZ2VzLm1hdGVyaWFsIGFzIExpbmVCYXNpY01hdGVyaWFsKS5kaXNwb3NlKCk7XHJcbiAgICAgICh0aGlzLmVkZ2VzLmdlb21ldHJ5IGFzIEVkZ2VzR2VvbWV0cnkpLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5lZGdlcyA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZWRnZXNUb0N5bGluZGVycyhlZGdlc0dlb21ldHJ5OiBFZGdlc0dlb21ldHJ5LCB0aGlja25lc3M6IG51bWJlcikge1xyXG4gICAgICBjb25zdCB7cG9zaXRpb259ID0gZWRnZXNHZW9tZXRyeS5hdHRyaWJ1dGVzO1xyXG4gICAgICBjb25zdCB7YXJyYXksIGNvdW50fSA9IHBvc2l0aW9uO1xyXG4gICAgICBjb25zdCByID0gdGhpY2tuZXNzIC8gMjtcclxuICAgICAgY29uc3QgZ2VvbXMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudCAqIDMgLSAxOyBpICs9IDYpIHtcclxuICAgICAgICBjb25zdCBhID0gbmV3IFZlY3RvcjMoYXJyYXlbaV0sIGFycmF5W2kgKyAxXSwgYXJyYXlbaSArIDJdKTtcclxuICAgICAgICBjb25zdCBiID0gbmV3IFZlY3RvcjMoYXJyYXlbaSArIDNdLCBhcnJheVtpICsgNF0sIGFycmF5W2kgKyA1XSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZlYyA9IG5ldyBWZWN0b3IzKCkuc3ViVmVjdG9ycyhiLCBhKTtcclxuICAgICAgICBjb25zdCBsZW4gPSB2ZWMubGVuZ3RoKCk7XHJcbiAgICAgICAgY29uc3QgZ2VvbSA9IG5ldyBDeWxpbmRlckJ1ZmZlckdlb21ldHJ5KHIsIHIsIGxlbiwgOCk7XHJcbiAgICAgICAgZ2VvbS50cmFuc2xhdGUoMCwgbGVuIC8gMiwgMCk7XHJcbiAgICAgICAgZ2VvbS5yb3RhdGVYKE1hdGguUEkgLyAyKTtcclxuICAgICAgICBnZW9tLmxvb2tBdCh2ZWMpO1xyXG4gICAgICAgIGdlb20udHJhbnNsYXRlKGEueCwgYS55LCBhLnopO1xyXG4gICAgICAgIGdlb21zLnB1c2goZ2VvbSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQVBJIHRvIGJlIHVwZGF0ZWQgaW4gYnVuZGxlIC0gSlNTREstMTIyMlxyXG4gICAgICByZXR1cm4gQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoZ2VvbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZydXN0dW1MZW5ndGggPSB0aGlzLmlucHV0cy5mYXJQbGFuZSAtIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcclxuICAgIGNvbnN0IGJveEdlb21ldHJ5OiBCb3hHZW9tZXRyeSA9IG5ldyBCb3hHZW9tZXRyeSgyLCAyLCBmcnVzdHVtTGVuZ3RoKTtcclxuICAgIGNvbnN0IGhhbGZIQW5nbGUgPSB0aGlzLmlucHV0cy5ob3Jpem9udGFsRk9WICogMC41ICogTWF0aC5QSSAvIDE4MDtcclxuICAgIGNvbnN0IG5lYXJIYWxmV2lkdGggPSBNYXRoLnRhbihoYWxmSEFuZ2xlKSAqIHRoaXMuaW5wdXRzLm5lYXJQbGFuZTtcclxuICAgIGNvbnN0IGZhckhhbGZXaWR0aCA9IE1hdGgudGFuKGhhbGZIQW5nbGUpICogdGhpcy5pbnB1dHMuZmFyUGxhbmU7XHJcbiAgICBjb25zdCBuZWFySGFsZkhlaWdodCA9IG5lYXJIYWxmV2lkdGggLyB0aGlzLmlucHV0cy5hc3BlY3Q7XHJcbiAgICBjb25zdCBmYXJIYWxmSGVpZ2h0ID0gZmFySGFsZldpZHRoIC8gdGhpcy5pbnB1dHMuYXNwZWN0O1xyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IGJveEdlb21ldHJ5LmdldEF0dHJpYnV0ZSgncG9zaXRpb24nKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5jb3VudDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHZlcnRleFogPSBwb3NpdGlvbnMuZ2V0WihpKTtcclxuICAgICAgY29uc3QgdmVydGV4WCA9IHBvc2l0aW9ucy5nZXRYKGkpO1xyXG4gICAgICBjb25zdCB2ZXJ0ZXhZID0gcG9zaXRpb25zLmdldFkoaSk7XHJcbiAgICAgIGlmICh2ZXJ0ZXhaID4gMCkge1xyXG4gICAgICAgIC8vIGJhY2sgb2YgdGhlIGNhbWVyYVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRYKGksIHZlcnRleFggKiBuZWFySGFsZldpZHRoKVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRZKGksIHZlcnRleFkgKiBuZWFySGFsZkhlaWdodCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZnJvbnQgb2YgdGhlIGNhbWVyYVxyXG4gICAgICAgIHBvc2l0aW9ucy5zZXRYKGksIHZlcnRleFggKiBmYXJIYWxmV2lkdGgpXHJcbiAgICAgICAgcG9zaXRpb25zLnNldFkoaSwgdmVydGV4WSAqIGZhckhhbGZIZWlnaHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHBvc2l0aW9ucy5zZXRaKGksIHZlcnRleFogLSAwLjUgKiBmcnVzdHVtTGVuZ3RoIC0gdGhpcy5pbnB1dHMubmVhclBsYW5lKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBib3hNYXRlcmlhbDogTWVzaEJhc2ljTWF0ZXJpYWwgPSBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoe1xyXG4gICAgICBjb2xvcjogdGhpcy5pbnB1dHMuY29sb3IsXHJcbiAgICAgIG9wYWNpdHk6IDAuMzUsXHJcbiAgICAgIHRyYW5zcGFyZW50OiB0cnVlLFxyXG4gICAgICBzaWRlOiBCYWNrU2lkZSxcclxuICAgICAgYmxlbmRpbmc6IE5vcm1hbEJsZW5kaW5nLFxyXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5ib3ggPSBuZXcgTWVzaChib3hHZW9tZXRyeSwgYm94TWF0ZXJpYWwpO1xyXG4gICAgY29uc3QgZWRnZXNHZW9tZXRyeSA9IGVkZ2VzVG9DeWxpbmRlcnMobmV3IEVkZ2VzR2VvbWV0cnkoYm94R2VvbWV0cnkpLCAwLjAxNSk7XHJcbiAgICB0aGlzLmVkZ2VzID0gbmV3IE1lc2goZWRnZXNHZW9tZXRyeSwgbmV3IE1lc2hCYXNpY01hdGVyaWFsKHtcclxuICAgICAgY29sb3I6IDB4ZmZmZmZmLFxyXG4gICAgICBvcGFjaXR5OiAwLjI1LFxyXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcclxuICAgICAgYmxlbmRpbmc6IEFkZGl0aXZlQmxlbmRpbmcsXHJcbiAgICAgIGRlcHRoV3JpdGU6IGZhbHNlLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGVkZ2VzR2VvbWV0cnkyID0gZWRnZXNUb0N5bGluZGVycyhuZXcgRWRnZXNHZW9tZXRyeShib3hHZW9tZXRyeSksIDAuMDYpO1xyXG4gICAgY29uc3QgZWRnZXMyID0gbmV3IE1lc2goZWRnZXNHZW9tZXRyeTIsIG5ldyBNZXNoQmFzaWNNYXRlcmlhbCh7XHJcbiAgICAgIGNvbG9yOiB0aGlzLmlucHV0cy5jb2xvcixcclxuICAgICAgb3BhY2l0eTogMC4zNSxcclxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgIGJsZW5kaW5nOiBBZGRpdGl2ZUJsZW5kaW5nLFxyXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcclxuICAgIH0pKTtcclxuICAgIHRoaXMucGl2b3QuYWRkKGVkZ2VzMik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1ha2VIaWdobGlnaHQoKSB7XHJcblxyXG4gICAgbGV0IGZsb29yTWVzaCA9IG51bGw7XHJcbiAgICBmbG9vck1lc2ggPSB0aGlzLmNvbnRleHQuc2NlbmUuZ2V0T2JqZWN0QnlOYW1lKCdGbG9vck1lc2g6MCcpO1xyXG4gICAgY29uc3Qgcm9vbU1lc2ggPSBmbG9vck1lc2guY2hpbGRyZW5bNV0gYXMgTWVzaDtcclxuXHJcbiAgICB1cGRhdGVIaWdobGlnaHRVbmlmb3Jtcyh0aGlzLnByb2plY3RvciwgdGhpcy5oaWdobGlnaHRVbmlmb3Jtcyk7XHJcbiAgICB0aGlzLmhpZ2hsaWdodFVuaWZvcm1zLmNvbG9yLnZhbHVlLnNldEhleCh0aGlzLmlucHV0cy5jb2xvcik7XHJcblxyXG4gICAgY29uc3Qgc2hhZGVyID0gbmV3IFNoYWRlck1hdGVyaWFsKHtcclxuICAgICAgcG9seWdvbk9mZnNldDogdHJ1ZSxcclxuICAgICAgcG9seWdvbk9mZnNldFVuaXRzOiAtMC4xLFxyXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcclxuICAgICAgdW5pZm9ybXM6IHRoaXMuaGlnaGxpZ2h0VW5pZm9ybXMsXHJcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBmcmFnbWVudFNoYWRlcigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gYSBtZXNoIHRvIHJlcHJlc2VudCB0aGUgXCJoaWdobGlnaHRcIlxyXG4gICAgdGhpcy5oaWdobGlnaHQgPSBuZXcgTWVzaChyb29tTWVzaC5nZW9tZXRyeSwgc2hhZGVyKTtcclxuXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHQgJiYgdGhpcy5oaWdobGlnaHQucGFyZW50KSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0LnBhcmVudC5yZW1vdmUodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgICAodGhpcy5oaWdobGlnaHQubWF0ZXJpYWwgYXMgU2hhZGVyTWF0ZXJpYWwpLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVkZ2VzKSB7XHJcbiAgICAgIHRoaXMuZWRnZXMuZ2VvbWV0cnkuZGlzcG9zZSgpO1xyXG4gICAgICAodGhpcy5lZGdlcy5tYXRlcmlhbCBhcyBMaW5lQmFzaWNNYXRlcmlhbCkuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYm94KSB7XHJcbiAgICAgIHRoaXMuYm94Lmdlb21ldHJ5LmRpc3Bvc2UoKTtcclxuICAgICAgKHRoaXMuYm94Lm1hdGVyaWFsIGFzIE1lc2hCYXNpY01hdGVyaWFsKS5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB2ZXJ0ZXhTaGFkZXIoKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFxyXG4gICAgdW5pZm9ybSBtYXQ0IGxpZ2h0TWF0cml4O1xyXG5cclxuICAgIHZhcnlpbmcgdmVjNCB2TGlnaHRDb29yZHM7XHJcblxyXG4gICAgdm9pZCBtYWluKCkge1xyXG4gICAgICAvLyBjcmVhdGUgYSBVViByZWdpb24gWzAsMV0geCBbMCwxXSB0byByZXByZXNlbnQgd2hhdCB0aGUgbGlnaHRNYXRyaXggXCJzZWVzXCJcclxuICAgICAgdkxpZ2h0Q29vcmRzID0gbGlnaHRNYXRyaXggKiAgbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xyXG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xyXG4gICAgfVxyXG4gIGA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZyYWdtZW50U2hhZGVyKCkge1xyXG4gIHJldHVybiBgXHJcbiAgICB1bmlmb3JtIHZlYzMgY29sb3I7XHJcblxyXG4gICAgdmFyeWluZyB2ZWM0IHZMaWdodENvb3JkcztcclxuXHJcbiAgICB2b2lkIG1haW4oKSB7XHJcbiAgICAgIHZlYzIgbGlnaHRVViA9IHZMaWdodENvb3Jkcy54eSAvIHZMaWdodENvb3Jkcy53O1xyXG4gICAgICBmbG9hdCBpblZpZXcgPSBmbG9hdChtYXgobGlnaHRVVi54LCBsaWdodFVWLnkpIDw9IDEuMCAmJiBtaW4obGlnaHRVVi54LCBsaWdodFVWLnkpID49IDAuMCAmJiB2TGlnaHRDb29yZHMueiA+IDAuMCk7XHJcblxyXG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCBtaW4oaW5WaWV3LCAwLjIpKTtcclxuICAgIH1cclxuICBgO1xyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVIaWdobGlnaHRVbmlmb3Jtcyhwcm9qZWN0b3I6IFBlcnNwZWN0aXZlQ2FtZXJhLCB1bmlmb3JtczogSGlnaGxpZ2h0VW5pZm9ybXMpIHtcclxuICBwcm9qZWN0b3IuZ2V0V29ybGRQb3NpdGlvbih1bmlmb3Jtcy5wcm9qUG9zaXRpb24udmFsdWUpO1xyXG5cclxuICAvLyBzaW1pbGFyIHRvIGEgc2hhZG93IG1hdHJpeCwgYnV0IHdlJ3JlIHVzaW5nIGl0IGFzIGEgXCJyZWN0YW5ndWxhclwiIHNwb3RsaWdodFxyXG4gIC8vIFtsaWdodEJpYXNdICogW3Byb2plY3Rpb25dICogW3ZpZXdNYXRyaXhdXHJcbiAgdW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUubWFrZVNjYWxlKDAuNSwgMC41LCAwLjUpO1xyXG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLnNldFBvc2l0aW9uKG5ldyBWZWN0b3IzKDAuNSwgMC41LCAwLjUpKVxyXG4gIHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLm11bHRpcGx5TWF0cmljZXModW5pZm9ybXMubGlnaHRNYXRyaXgudmFsdWUsIHByb2plY3Rvci5wcm9qZWN0aW9uTWF0cml4KTtcclxuICB1bmlmb3Jtcy5saWdodE1hdHJpeC52YWx1ZS5tdWx0aXBseU1hdHJpY2VzKHVuaWZvcm1zLmxpZ2h0TWF0cml4LnZhbHVlLCBwcm9qZWN0b3IubWF0cml4V29ybGRJbnZlcnNlKTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFZpZXdGcnVzdHVtTWVzaFR5cGUgPSAnbXAuVmlld0ZydXN0dW1NZXNoJztcclxuZXhwb3J0IGNvbnN0IG1ha2VWaWV3RnJ1c3R1bU1lc2ggPSBmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIG5ldyBWaWV3RnJ1c3R1bU1lc2goKTtcclxufVxyXG4iXX0=
|