@c8y/ngx-components 1020.0.15 → 1020.0.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ecosystem.service.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/ecosystem.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAEL,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,+BAA+B,EAE/B,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,WAAW,EAEX,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAEf,mBAAmB,EACnB,YAAY,EAEZ,cAAc,EAEd,kBAAkB,EAClB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAqB,MAAM,MAAM,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAgC,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;;AAKnE,qBAGa,gBAAgB;IAOzB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,aAAa;IAhBvB,UAAU,6BAAoC;IAC9C,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAqC;IACtE,OAAO,CAAC,yBAAyB,CAA6C;IAC9E,OAAO,CAAC,GAAG,CAAiB;gBAGlB,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,mBAAmB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,cAAc;IAQvC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,YAAY;IAqBpF;;;;;;OAMG;IACG,oCAAoC,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAe3F;;;;;;;OAOG;IACG,iCAAiC,CACrC,gBAAgB,EAAE,iBAAiB,EAAE,EACrC,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC;IAoBnB;;;;;;OAMG;IACG,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IA4BvE;;;;;;;;OAQG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO;IAUhG;;;;;;;;OAQG;IACH,gCAAgC,CAC9B,mBAAmB,EAAE,mBAAmB,EAAE,EAC1C,OAAO,EAAE,MAAM,GACd,mBAAmB;IAIhB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,eAAe,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAUrE,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM3C,kBAAkB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMnE,sBAAsB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMvE,sBAAsB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvE,+BAA+B,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKhF,uBAAuB,CAC3B,YAAY,GAAE,GAAQ,EACtB,cAAc,SAAS,YAAY,YAAU,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAoBpB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtD,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAO/C,OAAO,CAAC,GAAG,KAAA;IAIL,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvD,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAMnC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIrC,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI1C,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIrC,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIpC,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAS1C,oBAAoB,CAAC,KAAK,KAAA,GAAG,IAAI;IAOjC,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAItF,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;;;;IAIvE,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,+BAA+B;;;;IAI/E,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAa3E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOlF,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5E,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIlE,eAAe,CACnB,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;IAUV,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAYrF,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3D,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAczE,kBAAkB,CACtB,OAAO,EAAE,IAAI,EACb,GAAG,EAAE,YAAY,EACjB,YAAY,UAAQ,GACnB,OAAO,CAAC,YAAY,CAAC;IA0BlB,iCAAiC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlF,iBAAiB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS3D,mBAAmB,CAAC,OAAO,KAAA,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAkDjF,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrF,SAAS,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO,CAAC,YAAY,CAAC;IA0DtF,eAAe,CACnB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,YAAY,EAC7B,gBAAgB,CAAC,EAAE,MAAM;IAsBrB,4BAA4B,CAChC,eAAe,EAAE,YAAY,EAC7B,2BAA2B,EAAE,YAAY,EACzC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,YAAY;IAqBhC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB;IAWhD,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB;IAa3D,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI9C,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI5C,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAMzC,oBAAoB,CAAC,GAAG,EAAE,YAAY;IAIhC,SAAS,CACb,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,kBAAkB,GAAG,WAAW,GACxC,OAAO,CAAC,WAAW,CAAC;IAYjB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;OAEG;IACH,uCAAuC,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;IAKxE;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc;IAQlC,gCAAgC,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY;IAQ7E,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAKxD,iBAAiB,CACrB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,YAAY,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC;IAyB9C;;;;;OAKG;IACH,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc;IAQpD,OAAO,CAAC,2BAA2B;YAwBrB,SAAS;YAsCT,kBAAkB;IAUhC,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,gCAAgC;IAYxC,OAAO,CAAC,mBAAmB;YAQb,kBAAkB;IAkBhC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;yCAp+BjB,gBAAgB;6CAAhB,gBAAgB;CAu+B5B"}
1
+ {"version":3,"file":"ecosystem.service.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/ecosystem.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAEL,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,+BAA+B,EAE/B,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,WAAW,EAEX,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAEf,mBAAmB,EACnB,YAAY,EAEZ,cAAc,EAEd,kBAAkB,EAClB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAqB,MAAM,MAAM,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAgC,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;;AAKnE,qBAGa,gBAAgB;IAOzB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,aAAa;IAhBvB,UAAU,6BAAoC;IAC9C,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAqC;IACtE,OAAO,CAAC,yBAAyB,CAA6C;IAC9E,OAAO,CAAC,GAAG,CAAiB;gBAGlB,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,mBAAmB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,cAAc;IAQvC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,YAAY;IAqBpF;;;;;;OAMG;IACG,oCAAoC,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAe3F;;;;;;;OAOG;IACG,iCAAiC,CACrC,gBAAgB,EAAE,iBAAiB,EAAE,EACrC,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC;IAoBnB;;;;;;OAMG;IACG,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,yBAAyB,CAAC;IA4BvE;;;;;;;;OAQG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO;IAUhG;;;;;;;;OAQG;IACH,gCAAgC,CAC9B,mBAAmB,EAAE,mBAAmB,EAAE,EAC1C,OAAO,EAAE,MAAM,GACd,mBAAmB;IAIhB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,eAAe,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAUrE,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM3C,kBAAkB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMnE,sBAAsB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMvE,sBAAsB,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvE,+BAA+B,CAAC,YAAY,GAAE,GAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKhF,uBAAuB,CAC3B,YAAY,GAAE,GAAQ,EACtB,cAAc,SAAS,YAAY,YAAU,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAoBpB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtD,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAO/C,OAAO,CAAC,GAAG,KAAA;IAIL,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvD,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAMnC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIrC,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI1C,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIrC,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAIpC,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAS1C,oBAAoB,CAAC,KAAK,KAAA,GAAG,IAAI;IAOjC,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAItF,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;;;;IAIvE,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,+BAA+B;;;;IAI/E,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAa3E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOlF,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5E,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIlE,eAAe,CACnB,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;IAUV,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAYrF,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3D,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAczE,kBAAkB,CACtB,OAAO,EAAE,IAAI,EACb,GAAG,EAAE,YAAY,EACjB,YAAY,UAAQ,GACnB,OAAO,CAAC,YAAY,CAAC;IA0BlB,iCAAiC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlF,iBAAiB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS3D,mBAAmB,CAAC,OAAO,KAAA,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAkDjF,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrF,SAAS,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,KAAA,EAAE,KAAK,KAAA,GAAG,OAAO,CAAC,YAAY,CAAC;IA0DtF,eAAe,CACnB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,YAAY,EAC7B,gBAAgB,CAAC,EAAE,MAAM;IAsBrB,4BAA4B,CAChC,eAAe,EAAE,YAAY,EAC7B,2BAA2B,EAAE,YAAY,EACzC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,YAAY;IAqBhC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB;IAWhD,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB;IAa3D,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI9C,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAI5C,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAItC,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAMzC,oBAAoB,CAAC,GAAG,EAAE,YAAY;IAIhC,SAAS,CACb,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,kBAAkB,GAAG,WAAW,GACxC,OAAO,CAAC,WAAW,CAAC;IAYjB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;OAEG;IACH,uCAAuC,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;IAKxE;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc;IAQlC,gCAAgC,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY;IAQ7E,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAKxD,iBAAiB,CACrB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,YAAY,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC;IAyB9C;;;;;OAKG;IACH,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc;IAQpD,OAAO,CAAC,2BAA2B;YAwBrB,SAAS;YAsCT,kBAAkB;IAUhC,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,gCAAgC;IAYxC,OAAO,CAAC,mBAAmB;YAQb,kBAAkB;IAkBhC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;yCAx+BjB,gBAAgB;6CAAhB,gBAAgB;CA2+B5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload-archive.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/upload-archive.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAW,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;;AAEvD,qBAIa,sBAAsB;IAgB/B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IAhBb,WAAW,EAAE,YAAY,CAAC;IAC1B,gBAAgB,UAAS;IACzB,iBAAiB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,iBAAiB,EAAE,YAAY,CAAC,YAAY,CAAC,CAAoC;IACjF,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAsB;IAE1D,QAAQ,EAAE,kBAAkB,EAAE,CAAM;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,UAAS;IACzB,aAAa,UAAS;gBAGZ,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY;IAGpC,IAAI,cAAc,IAAI,eAAe,CAAC,MAAM,CAAC,CAE5C;IAEK,kBAAkB,CAAC,KAAK,KAAA;YAehB,MAAM;yCAvCT,sBAAsB;2CAAtB,sBAAsB;CAyElC"}
1
+ {"version":3,"file":"upload-archive.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/upload-archive.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAW,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;;AAEvD,qBAIa,sBAAsB;IAgB/B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IAhBb,WAAW,EAAE,YAAY,CAAC;IAC1B,gBAAgB,UAAS;IACzB,iBAAiB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,iBAAiB,EAAE,YAAY,CAAC,YAAY,CAAC,CAAoC;IACjF,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAsB;IAE1D,QAAQ,EAAE,kBAAkB,EAAE,CAAM;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,UAAS;IACzB,aAAa,UAAS;gBAGZ,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY;IAGpC,IAAI,cAAc,IAAI,eAAe,CAAC,MAAM,CAAC,CAE5C;IAEK,kBAAkB,CAAC,KAAK,KAAA;YAehB,MAAM;yCAvCT,sBAAsB;2CAAtB,sBAAsB;CA4ElC"}
@@ -492,7 +492,12 @@ export class EcosystemService {
492
492
  this.alertService.success(gettext('Archive deleted.'));
493
493
  }
494
494
  catch (ex) {
495
- this.alertError(ex);
495
+ if (ex) {
496
+ this.alertError(ex);
497
+ }
498
+ else {
499
+ return Promise.reject('cancelled');
500
+ }
496
501
  }
497
502
  }
498
503
  async deployApp(selectedPackage, formGroupValue, model) {
@@ -816,4 +821,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
816
821
  providedIn: 'root'
817
822
  }]
818
823
  }], ctorParameters: () => [{ type: i1.ModalService }, { type: i1.AlertService }, { type: i1.HumanizeAppNamePipe }, { type: i2.TranslateService }, { type: i3.ApplicationService }, { type: i1.AppStateService }, { type: i1.ZipService }, { type: i3.TenantService }, { type: i3.InventoryService }, { type: i1.WizardModalService }, { type: i1.PluginsService }] });
819
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2Vjb3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFXZixnQkFBZ0IsRUFJaEIsYUFBYSxFQUNkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxZQUFZLEVBRVosZUFBZSxFQUNmLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFB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QUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkUsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUMvRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLFVBQVU7WUFDbkIsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxrRkFBa0Y7YUFDM0Y7WUFDRCxnQkFBZ0IsRUFBRSxtQkFBbUI7WUFDckMsV0FBVyxFQUFFO2dCQUNYLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTthQUMvRTtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBWTtRQUN4QyxNQUFNLGFBQWEsR0FBRyxvQ0FBb0MsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsNEJBQTRCLElBQUksT0FBTyxLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUM7SUFDaEcsQ0FBQzs4R0F0K0JVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25BdmFpbGFiaWxpdHksXG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgQXBwbGljYXRpb25UeXBlLFxuICBJQXBwbGljYXRpb24sXG4gIElBcHBsaWNhdGlvbkJpbmFyeSxcbiAgSUFwcGxpY2F0aW9uVmVyc2lvbixcbiAgSUFwcGxpY2F0aW9uVmVyc2lvbkRlbGV0ZVBhcmFtcyxcbiAgSUN1cnJlbnRUZW5hbnQsXG4gIElkUmVmZXJlbmNlLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSUlkZW50aWZpZWQsXG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJTWFuaWZlc3QsXG4gIEludmVudG9yeVNlcnZpY2UsXG4gIElSZXN1bHQsXG4gIElSZXN1bHRMaXN0LFxuICBJVXBsb2FkUGFyYW1zT3ZlcnJpZGUsXG4gIFRlbmFudFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBsaWNhdGlvblBsdWdpbixcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBIdW1hbml6ZUFwcE5hbWVQaXBlLFxuICBNb2RhbFNlcnZpY2UsXG4gIFBhY2thZ2VUeXBlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgU3RhdHVzLFxuICBXaXphcmRNb2RhbFNlcnZpY2UsXG4gIFppcFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBncm91cEJ5LCBrZWJhYkNhc2UsIHBpY2ssIHVuaXFCeSwgb21pdCwgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCBtYXAsIGZpbHRlciwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBndCwgY29lcmNlLCBzYXRpc2ZpZXMgfSBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgRWNvc3lzdGVtRXJyb3IgfSBmcm9tICcuL2Vjb3N5c3RlbS1lcnJvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YXRlLCBBUFBfU1RBVEUsIEVSUk9SX01FU1NBR0VTIH0gZnJvbSAnLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVdpemFyZHMsIEVSUk9SX1RZUEUsIExpY2Vuc2VkQXBwbGljYXRpb25QbHVnaW4gfSBmcm9tICcuL2Vjb3N5c3RlbS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBGaWx0ZXJQcm9wcyB9IGZyb20gJy4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5tb2RlbCc7XG5cbmNvbnN0IENVTVVMT0NJVFlfSlNPTiA9ICdjdW11bG9jaXR5Lmpzb24nO1xuY29uc3QgTUlDUk9TRVJWSUNFX05BTUVfTUFYX0xFTkdUSCA9IDIzO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFY29zeXN0ZW1TZXJ2aWNlIHtcbiAgYXBwRGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUFwcGxpY2F0aW9uPigpO1xuICBwcm9ncmVzczogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4obnVsbCk7XG4gIHByaXZhdGUgYXBwc0dyb3VwZWRCeUNvbnRleHRQYXRoJDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBJQXBwbGljYXRpb25bXT4+O1xuICBwcml2YXRlIHhocjogWE1MSHR0cFJlcXVlc3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodW1hbml6ZUFwcE5hbWU6IEh1bWFuaXplQXBwTmFtZVBpcGUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHppcFNlcnZpY2U6IFppcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlOiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHdpemFyZE1vZGFsU2VydmljZTogV2l6YXJkTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luU2VydmljZTogUGx1Z2luc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hcHBzR3JvdXBlZEJ5Q29udGV4dFBhdGgkID0gZGVmZXIoKCkgPT4gdGhpcy5nZXRXZWJBcHBsaWNhdGlvbnMoKSkucGlwZShcbiAgICAgIG1hcCh3ZWJBcHBzID0+IGdyb3VwQnkod2ViQXBwcywgJ2NvbnRleHRQYXRoJykpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICk7XG4gIH1cblxuICBnZXRVbmlxdWVBcHBDb25maWcoc3JjQXBwOiBJQXBwbGljYXRpb24sIGV4aXN0aW5nQXBwczogSUFwcGxpY2F0aW9uW10pOiBJQXBwbGljYXRpb24ge1xuICAgIGxldCBhcHA6IElBcHBsaWNhdGlvbiA9IHtcbiAgICAgIG5hbWU6IHNyY0FwcC5uYW1lLFxuICAgICAga2V5OiBzcmNBcHAua2V5LFxuICAgICAgY29udGV4dFBhdGg6IHNyY0FwcC5jb250ZXh0UGF0aFxuICAgIH07XG4gICAgZm9yIChsZXQgcmV0cnlObyA9IDA7IHJldHJ5Tm8gPCA5OyApIHtcbiAgICAgIGlmICh0aGlzLmNoZWNrSWZBcHBOYW1lS2V5UGF0aEV4aXN0cyhleGlzdGluZ0FwcHMsIGFwcCwgcmV0cnlObykpIHtcbiAgICAgICAgcmV0cnlObysrO1xuICAgICAgICBhcHAgPSB7XG4gICAgICAgICAgbmFtZTogW3NyY0FwcC5uYW1lLCByZXRyeU5vXS5qb2luKCctJyksXG4gICAgICAgICAga2V5OiBbc3JjQXBwLmtleSwgcmV0cnlOb10uam9pbignLScpLFxuICAgICAgICAgIGNvbnRleHRQYXRoOiBbc3JjQXBwLmNvbnRleHRQYXRoLCByZXRyeU5vXS5qb2luKCctJylcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHZlcnNpb25zIGNvbXBhdGliaWxpdHkgZm9yIGJsdWVwcmludHMuIElmIGEgYmx1ZXByaW50IHZlcnNpb25cbiAgICogaXMgbm90IGNvbXBhdGlibGUsIGEgd2FybmluZyBpcyBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIGJsdWVwcmludCBUaGUgYmx1ZXByaW50IHRvIGluc3RhbGwuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluc3RhbGxhdGlvbiBjYW4gY29udGludWUgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIGJlIGFib3J0ZWQuXG4gICAqL1xuICBhc3luYyB2ZXJpZnlCbHVlcHJpbnRWZXJzaW9uc0NvbXBhdGliaWxpdHkoYmx1ZXByaW50OiBQYXJ0aWFsPElNYW5pZmVzdD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCB0aGlzLmdldFBsYXRmb3JtVmVyc2lvbigpO1xuICAgIGlmIChibHVlcHJpbnQudmVyc2lvbmluZ01hdHJpeCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGx1Z2luQXBpVmVyc2lvbiA9IGJsdWVwcmludC52ZXJzaW9uaW5nTWF0cml4W2JsdWVwcmludC52ZXJzaW9uXS5hcGk7XG4gICAgICAgIGlmICghc2F0aXNmaWVzKGFwaSwgcGx1Z2luQXBpVmVyc2lvbikpIHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zaG93TW9kYWwoYmx1ZXByaW50LCBmYWxzZSwgYXBpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNob3dNb2RhbChibHVlcHJpbnQsIGZhbHNlLCBhcGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdmVyc2lvbnMgY29tcGF0aWJpbGl0eSBmb3IgcGx1Z2lucy4gSW4gY2FzZSBhIHZlcnNpb24gZG9lcyBub3QgZXhpc3QgaW4gdGhlXG4gICAqIHZlcnNpb25pbmdNYXRyaXggd2UgZG9uJ3QgZG8gYW55dGhpbmcgZHVlIHRvIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIElmIGEgcGx1Z2luIHZlcnNpb25cbiAgICogaXMgbm90IGNvbXBhdGlibGUsIGEgd2FybmluZyBpcyBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbnNUb0luc3RhbGwgVGhlIGxpc3Qgb2YgcGx1Z2lucyB0byBpbnN0YWxsLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbnN0YWxsYXRpb24gY2FuIGNvbnRpbnVlIG9yIGZhbHNlIGlmIGl0IHNob3VsZCBiZSBhYm9ydGVkLlxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5UGx1Z2luVmVyc2lvbnNDb21wYXRpYmlsaXR5KFxuICAgIHBsdWdpbnNUb0luc3RhbGw6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgYXBwOiBJQXBwbGljYXRpb25cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5nZXRQbGF0Zm9ybVZlcnNpb24oKTtcbiAgICBjb25zdCBzZGsgPSBhcHAubWFuaWZlc3Q/LndlYlNka1ZlcnNpb247XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2luc1RvSW5zdGFsbCkge1xuICAgICAgaWYgKHBsdWdpbi52ZXJzaW9uaW5nTWF0cml4KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2luU2RrVmVyc2lvbiA9IHBsdWdpbi52ZXJzaW9uaW5nTWF0cml4W3BsdWdpbi52ZXJzaW9uXS5zZGs7XG4gICAgICAgICAgY29uc3QgcGx1Z2luQXBpVmVyc2lvbiA9IHBsdWdpbi52ZXJzaW9uaW5nTWF0cml4W3BsdWdpbi52ZXJzaW9uXS5hcGk7XG4gICAgICAgICAgaWYgKCFzYXRpc2ZpZXMoc2RrLCBwbHVnaW5TZGtWZXJzaW9uKSB8fCAhc2F0aXNmaWVzKGFwaSwgcGx1Z2luQXBpVmVyc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNob3dNb2RhbChwbHVnaW4sIHRydWUsIGFwaSwgc2RrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNob3dNb2RhbChwbHVnaW4sIGZhbHNlLCBhcGksIHNkayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21tdW5pdHkgcGx1Z2lucyBuZWVkIHRvIHZlcmlmeSB0aGUgbGljZW5zZSBhZ3JlZW1lbnQuIElmIGEgcGFja2FnZSBpcyBhIGNvbW11bml0eVxuICAgKiBwYWNrYWdlLCB0aGUgbGljZW5zZSBpcyBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbnNUb0luc3RhbGwgVGhlIGxpc3Qgb2YgcGx1Z2lucyB0byBpbnN0YWxsLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbnN0YWxsYXRpb24gY2FuIGNvbnRpbnVlLlxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5TGljZW5zZXMocGx1Z2luc1RvSW5zdGFsbDogQXJyYXk8TGljZW5zZWRBcHBsaWNhdGlvblBsdWdpbj4pIHtcbiAgICBsZXQgX3Jlc29sdmU7XG4gICAgY29uc3QgcmVzdWx0OiBQcm9taXNlPGJvb2xlYW4+ID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBwbHVnaW5zVG9JbnN0YWxsID0gcGx1Z2luc1RvSW5zdGFsbC5maWx0ZXIocGx1Z2luID0+IHBsdWdpbi50eXBlICE9PSBQYWNrYWdlVHlwZS5DVVNUT00pO1xuXG4gICAgaWYgKHBsdWdpbnNUb0luc3RhbGwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgaWQ6IEVjb3N5c3RlbVdpemFyZHMuTElDRU5TRV9DT05GSVJNLFxuICAgICAgY29tcG9uZW50SW5pdGlhbFN0YXRlOiB7XG4gICAgICAgIHBsdWdpbnNUb0luc3RhbGxcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgY29uc3Qgd2l6YXJkID0gdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuXG4gICAgd2l6YXJkLmNvbnRlbnQub25DbG9zZS5zdWJzY3JpYmUoY29uZmlybWVkID0+IHtcbiAgICAgIF9yZXNvbHZlKGNvbmZpcm1lZCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDb21wYXJlcyBjdXJyZW50bHkgZGVwbG95ZWQgYXBwbGljYXRpb24gdmVyc2lvbiB3aXRoIGFwcGxpY2F0aW9uIHZlcnNpb24gdGFnZ2VkIGFzIFwibGF0ZXN0XCJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRBcHBsaWNhdGlvblZlcnNpb24gRGVwbG95ZWQgYXBwbGljYXRpb24gdmVyc2lvblxuICAgKiBAcGFyYW0ge29iamVjdH0gbGF0ZXN0QXBwIExhdGVzdCBhcHBsaWNhdGlvbiB2ZXJzaW9uIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGxhdGVzdCB2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50LCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHNob3VsZFVwZ3JhZGVQYWNrYWdlKGN1cnJlbnRBcHBsaWNhdGlvblZlcnNpb246IHN0cmluZywgbGF0ZXN0QXBwOiBJQXBwbGljYXRpb25WZXJzaW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGF0ZXN0QXBwbGljYXRpb25WZXJzaW9uID0gbGF0ZXN0QXBwPy52ZXJzaW9uO1xuXG4gICAgaWYgKCFsYXRlc3RBcHBsaWNhdGlvblZlcnNpb24gfHwgIWN1cnJlbnRBcHBsaWNhdGlvblZlcnNpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3QoY29lcmNlKGxhdGVzdEFwcGxpY2F0aW9uVmVyc2lvbiksIGNvZXJjZShjdXJyZW50QXBwbGljYXRpb25WZXJzaW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdldHMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgc2VhcmNoZWQgdGFnXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IGFwcGxpY2F0aW9uVmVyc2lvbnMgQXJyYXkgd2l0aCBhbGwgYXZhaWxhYmxlIHZlcnNpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lIFNlYXJjaGVkIHRhZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHNlYXJjaGVkIHRhZ1xuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25WZXJzaW9uT2JqZWN0QnlUYWcoXG4gICAgYXBwbGljYXRpb25WZXJzaW9uczogSUFwcGxpY2F0aW9uVmVyc2lvbltdLFxuICAgIHRhZ05hbWU6IHN0cmluZ1xuICApOiBJQXBwbGljYXRpb25WZXJzaW9uIHtcbiAgICByZXR1cm4gYXBwbGljYXRpb25WZXJzaW9ucz8uZmluZChlbGVtZW50ID0+IGVsZW1lbnQudGFncy5pbmNsdWRlcyh0YWdOYW1lKSk7XG4gIH1cblxuICBhc3luYyBnZXRBcHBsaWNhdGlvbihhcHBJZDogSWRSZWZlcmVuY2UpOiBQcm9taXNlPElBcHBsaWNhdGlvbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZGV0YWlsKGFwcElkKSkuZGF0YTtcbiAgfVxuXG4gIGdldEFwcGxpY2F0aW9ucyhjdXN0b21GaWx0ZXI6IGFueSA9IHt9KTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJQXBwbGljYXRpb24+PiB7XG4gICAgY29uc3QgZmlsdGVyOiBvYmplY3QgPSB7XG4gICAgICBwYWdlU2l6ZTogMjAwMCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICBPYmplY3QuYXNzaWduKGZpbHRlciwgY3VzdG9tRmlsdGVyKTtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5VGVuYW50KGN1cnJlbnRUZW5hbnQubmFtZSwgZmlsdGVyKTtcbiAgfVxuXG4gIGFzeW5jIGdldE1pY3Jvc2VydmljZXMoKTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIGNvbnN0IGFwcHMgPSAoYXdhaXQgdGhpcy5nZXRBcHBsaWNhdGlvbnMoKSkuZGF0YTtcbiAgICBjb25zdCBtaWNyb3NlcnZpY2VzID0gYXBwcy5maWx0ZXIoYXBwID0+IHRoaXMuaXNNaWNyb3NlcnZpY2UoYXBwKSk7XG4gICAgcmV0dXJuIG1pY3Jvc2VydmljZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gIH1cblxuICBhc3luYyBnZXRXZWJBcHBsaWNhdGlvbnMoY3VzdG9tRmlsdGVyOiBhbnkgPSB7fSk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBhcHBzID0gKGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb25zKGN1c3RvbUZpbHRlcikpLmRhdGE7XG4gICAgY29uc3Qgd2ViQXBwcyA9IGFwcHMuZmlsdGVyKGFwcCA9PiB0aGlzLmlzQXBwbGljYXRpb24oYXBwKSk7XG4gICAgcmV0dXJuIHdlYkFwcHMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gIH1cblxuICBhc3luYyBnZXRGZWF0dXJlQXBwbGljYXRpb25zKGN1c3RvbUZpbHRlcjogYW55ID0ge30pOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgYXBwcyA9IChhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9ucyhjdXN0b21GaWx0ZXIpKS5kYXRhO1xuICAgIGNvbnN0IHdlYkFwcHMgPSBhcHBzLmZpbHRlcihhcHAgPT4gdGhpcy5pc0ZlYXR1cmUoYXBwKSk7XG4gICAgcmV0dXJuIHdlYkFwcHMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gIH1cblxuICBhc3luYyBnZXRQYWNrYWdlQXBwbGljYXRpb25zKGN1c3RvbUZpbHRlcjogYW55ID0ge30pOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgZmlsdGVyQ2FsbGJhY2sgPSBhcHAgPT4gdGhpcy5pc1BhY2thZ2UoYXBwKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBcHBsaWNhdGlvbnNGaWx0ZXJlZChjdXN0b21GaWx0ZXIsIGZpbHRlckNhbGxiYWNrKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvc3RlZEFuZFBhY2thZ2VBcHBsaWNhdGlvbnMoY3VzdG9tRmlsdGVyOiBhbnkgPSB7fSk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBmaWx0ZXJDYWxsYmFjayA9IGFwcCA9PiB0aGlzLmlzUGFja2FnZShhcHApIHx8IHRoaXMuaXNBcHBsaWNhdGlvbihhcHApO1xuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uc0ZpbHRlcmVkKGN1c3RvbUZpbHRlciwgZmlsdGVyQ2FsbGJhY2spO1xuICB9XG5cbiAgYXN5bmMgZ2V0QXBwbGljYXRpb25zRmlsdGVyZWQoXG4gICAgY3VzdG9tRmlsdGVyOiBhbnkgPSB7fSxcbiAgICBmaWx0ZXJDYWxsYmFjayA9IChhcHA6IElBcHBsaWNhdGlvbikgPT4gISFhcHBcbiAgKTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IE9iamVjdC5hc3NpZ24oe30sIGN1c3RvbUZpbHRlcik7XG4gICAgY29uc3Qgc2hhcmVkRmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYXZhaWxhYmlsaXR5OiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5TSEFSRUQsXG4gICAgICAgIHR5cGU6ICdIT1NURUQnLFxuICAgICAgICBwYWdlU2l6ZTogMjAwMFxuICAgICAgfSxcbiAgICAgIGN1c3RvbUZpbHRlclxuICAgICk7XG4gICAgY29uc3QgW3sgZGF0YTogYXBwcyB9LCB7IGRhdGE6IHNoYXJlZCB9XSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0QXBwbGljYXRpb25zKGZpbHRlciksXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0KHNoYXJlZEZpbHRlcilcbiAgICBdKTtcbiAgICBjb25zdCB3ZWJBcHBzID0gWy4uLmFwcHMsIC4uLnNoYXJlZF0uZmlsdGVyKGZpbHRlckNhbGxiYWNrKTtcbiAgICAvLyBhbiBhcHAgY291bGQgYmUgc3Vic2NyaWJlZCB0byBhIHRlbmFudCwgYnV0IGFsc28gaGF2ZSBpdCdzIGF2YWlsYWJpbGl0eSBzZXQgdG8gU0hBUkVELCBpbiB0aGF0IGNhc2UgaXQgd291bGQgb2NjdXIgdHdpY2UuXG4gICAgY29uc3QgdW5pcVdlYkFwcHMgPSB1bmlxQnkod2ViQXBwcywgKGFwcDogSUFwcGxpY2F0aW9uKSA9PiBhcHAuaWQpO1xuICAgIHJldHVybiB1bmlxV2ViQXBwcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgfVxuXG4gIGFzeW5jIGlzTWljcm9zZXJ2aWNlSG9zdGluZ0FsbG93ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkYXRhOiBhcHBzIH0gPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0QnlOYW1lKCdmZWF0dXJlLW1pY3Jvc2VydmljZS1ob3N0aW5nJyk7XG4gICAgcmV0dXJuICEhYXBwcy5maWx0ZXIoYXBwID0+IGFwcC5vd25lcj8udGVuYW50Py5pZCA9PT0gJ21hbmFnZW1lbnQnKS5sZW5ndGg7XG4gIH1cblxuICBjYW5PcGVuQXBwSW5Ccm93c2VyKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNOb3RBRmVhdHVyZSA9ICF0aGlzLmlzRmVhdHVyZShhcHApO1xuICAgIGNvbnN0IGhhc1Byb3BlclR5cGUgPSBbQXBwbGljYXRpb25UeXBlLkhPU1RFRCwgQXBwbGljYXRpb25UeXBlLkVYVEVSTkFMXS5pbmNsdWRlcyhhcHAudHlwZSk7XG4gICAgY29uc3QgaXNOb3RQYWNrYWdlID0gIXRoaXMuaXNQYWNrYWdlKGFwcCk7XG4gICAgcmV0dXJuIGlzTm90QUZlYXR1cmUgJiYgaGFzUHJvcGVyVHlwZSAmJiBpc05vdFBhY2thZ2U7XG4gIH1cblxuICBvcGVuQXBwKGFwcCkge1xuICAgIHdpbmRvdy5vcGVuKHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldEhyZWYoYXBwKSwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG4gIH1cblxuICBhc3luYyBjYW5EZWxldGVBcHAoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc093bmVyKGFwcCkgJiYgKCF0aGlzLmlzQ3VycmVudEFwcChhcHApIHx8IChhd2FpdCB0aGlzLmhhc1N1YnNjcmliZWRBcHBQYXJlbnQoYXBwKSkpXG4gICAgKTtcbiAgfVxuXG4gIGlzT3duZXIoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgYXBwT3duZXIgPSBnZXQoYXBwLCAnb3duZXIudGVuYW50LmlkJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRUZW5hbnQ/Lm5hbWUgPT09IGFwcE93bmVyO1xuICB9XG5cbiAgaXNGZWF0dXJlKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYXBwLm5hbWUubWF0Y2goL2ZlYXR1cmUtLyk7XG4gIH1cblxuICBpc01pY3Jvc2VydmljZShhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcHAudHlwZSA9PT0gJ01JQ1JPU0VSVklDRSc7XG4gIH1cblxuICBpc0V4dGVybmFsKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFwcC50eXBlID09PSAnRVhURVJOQUwnO1xuICB9XG5cbiAgaXNQYWNrYWdlKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFwcC5tYW5pZmVzdD8uaXNQYWNrYWdlID09PSB0cnVlO1xuICB9XG5cbiAgaXNQbHVnaW4oYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwLm1hbmlmZXN0Py5wYWNrYWdlID09PSAncGx1Z2luJztcbiAgfVxuXG4gIGNhbmNlbEFwcENyZWF0aW9uKGFwcDogSUFwcGxpY2F0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMueGhyKSB7XG4gICAgICB0aGlzLnhoci5hYm9ydCgpO1xuICAgIH1cbiAgICBpZiAoYXBwKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5kZWxldGUoYXBwKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVVcGxvYWRQcm9ncmVzcyhldmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzLnZhbHVlO1xuICAgICAgdGhpcy5wcm9ncmVzcy5uZXh0KGN1cnJlbnRQcm9ncmVzcyArIChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAoOTUgLSBjdXJyZW50UHJvZ3Jlc3MpKTtcbiAgICB9XG4gIH1cblxuICBzZXRBcHBBY3RpdmVWZXJzaW9uKGFwcDogSUFwcGxpY2F0aW9uLCBhY3RpdmVWZXJzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8SUFwcGxpY2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZSh7IGlkOiBhcHAuaWQsIGFjdGl2ZVZlcnNpb25JZCB9KTtcbiAgfVxuXG4gIHNldFBhY2thZ2VWZXJzaW9uVGFnKGFwcDogSUFwcGxpY2F0aW9uLCB2ZXJzaW9uOiBzdHJpbmcsIHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnNldFBhY2thZ2VWZXJzaW9uVGFnKGFwcCwgdmVyc2lvbiwgdGFncyk7XG4gIH1cblxuICBkZWxldGVQYWNrYWdlVmVyc2lvbihhcHA6IElBcHBsaWNhdGlvbiwgcGFyYW1zOiBJQXBwbGljYXRpb25WZXJzaW9uRGVsZXRlUGFyYW1zKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRlbGV0ZVZlcnNpb25QYWNrYWdlKGFwcCwgcGFyYW1zKTtcbiAgfVxuXG4gIGdldEh1bWFuaXplZEFwcE5hbWUoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh1bWFuaXplQXBwTmFtZS50cmFuc2Zvcm0oYXBwLm5hbWUpLnBpcGUoZGVib3VuY2VUaW1lKDI1MCksIHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgY3JlYXRlQ29uZmlnKGFwcDogSUFwcGxpY2F0aW9uLCBmb3JtR3JvdXBWYWx1ZTogRm9ybUdyb3VwKTogUGFydGlhbDxJQXBwbGljYXRpb24+IHtcbiAgICBjb25zdCB7IGlkLCB0eXBlLCBhdmFpbGFiaWxpdHkgfSA9IGFwcDtcbiAgICBsZXQgY29uZmlnID0gcGljayhmb3JtR3JvdXBWYWx1ZSwgWyduYW1lJywgJ2tleScsICdjb250ZXh0UGF0aCddKTtcbiAgICBjb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBpc1NldHVwOiB0cnVlLFxuICAgICAgaWQsXG4gICAgICB0eXBlLFxuICAgICAgYXZhaWxhYmlsaXR5XG4gICAgfTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFyY2hpdmVzKGFwcElkOiBzdHJpbmcgfCBudW1iZXIgfCBJQXBwbGljYXRpb24pOiBQcm9taXNlPElBcHBsaWNhdGlvbkJpbmFyeVtdPiB7XG4gICAgY29uc3QgZmlsdGVyID0ge1xuICAgICAgcGFnZVNpemU6IDEwMFxuICAgIH07XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5iaW5hcnkoYXBwSWQpLmxpc3QoZmlsdGVyKSkuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFyY2hpdmUoYXJjaGl2ZTogSUFwcGxpY2F0aW9uQmluYXJ5LCBhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGh1bWFuaXplZEFyY2hpdmVOYW1lID0gYXdhaXQgdGhpcy5nZXRIdW1hbml6ZWRBcHBOYW1lKGFyY2hpdmUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBhcmNoaXZlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgYXJjaGl2ZSBcInt7IGh1bWFuaXplZEFyY2hpdmVOYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgICksXG4gICAgICAgICAgeyBodW1hbml6ZWRBcmNoaXZlTmFtZSB9XG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHsgb2s6IGdldHRleHQoJ0RlbGV0ZScpLCBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpIH1cbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5iaW5hcnkoYXBwKS5kZWxldGUoYXJjaGl2ZS5pZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0FyY2hpdmUgZGVsZXRlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZ2V0KGV4LCAnZGF0YS5tZXNzYWdlJyksIGV4LmRhdGEpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5jZWxsZWQnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRBcmNoaXZlTWFuYWdlZE9iamVjdChiaW5hcnlJZDogc3RyaW5nKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChiaW5hcnlJZCkpLmRhdGE7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZEFyY2hpdmUoXG4gICAgYXBwOiBJQXBwbGljYXRpb24sXG4gICAgYXJjaGl2ZTogUGljazxJQXBwbGljYXRpb25CaW5hcnksICduYW1lJyB8ICdpZCc+XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiaW5hcnkgPSBhd2FpdCB0aGlzLmdldEJpbmFyeShhcHAsIGFyY2hpdmUpO1xuICAgICAgY29uc3QgZmlsZUJpbmFyeSA9IG5ldyBCbG9iKFtiaW5hcnldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJyB9KTtcbiAgICAgIHNhdmVBcyhmaWxlQmluYXJ5LCBhcmNoaXZlLm5hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlQXBwKGFwcDogSUFwcGxpY2F0aW9uLCBkZWxldGVPbkZhaWx1cmUgPSBmYWxzZSk6IFByb21pc2U8SVJlc3VsdDxJQXBwbGljYXRpb24+PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS51cGRhdGUoYXBwKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydEVycm9yKGV4KTtcbiAgICAgIGlmIChkZWxldGVPbkZhaWx1cmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZGVsZXRlKGFwcC5pZCk7XG4gICAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLkFQUExJQ0FUSU9OX0NSRUFUSU9OX0ZBSUxFRCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXBwKGFwcDogSUFwcGxpY2F0aW9uLCBzaWxlbnQgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGh1bWFuaXplZEFwcE5hbWUgPSBhd2FpdCB0aGlzLmdldEh1bWFuaXplZEFwcE5hbWUoYXBwKTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdEZWxldGUgYXBwbGljYXRpb24nKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBhcHBsaWNhdGlvbiBcInt7IGh1bWFuaXplZEFwcE5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKSxcbiAgICAgICAgICB7IGh1bWFuaXplZEFwcE5hbWUgfVxuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICB7IG9rOiBnZXR0ZXh0KCdEZWxldGUnKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9XG4gICAgICApO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5kZWxldGUoYXBwLmlkKTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdBcHBsaWNhdGlvbiBkZWxldGVkLicpKTtcbiAgICB9XG4gICAgdGhpcy5hcHBEZWxldGVkLmVtaXQoYXBwKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrSWZTdWJzY3JpYmVkKGFwcDogSUFwcGxpY2F0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5jdXJyZW50KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZEFwcHMgPSBjdXJyZW50VGVuYW50LmRhdGEuYXBwbGljYXRpb25zLnJlZmVyZW5jZXM7XG4gICAgcmV0dXJuIHN1YnNjcmliZWRBcHBzLnNvbWUoYXBwbGljYXRpb24gPT4gYXBwbGljYXRpb24uYXBwbGljYXRpb24uaWQgPT09IGFwcC5pZCk7XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmVBcHAoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5zdWJzY3JpYmVBcHBsaWNhdGlvbihjdXJyZW50VGVuYW50LCBhcHApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdTdWNjZXNzZnVsbHkgc3Vic2NyaWJlZCB0byBhcHBsaWNhdGlvbi4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRFcnJvcihleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdW5zdWJzY3JpYmVBcHAoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50U2VydmljZS51bnN1YnNjcmliZUFwcGxpY2F0aW9uKGN1cnJlbnRUZW5hbnQsIGFwcCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1N1Y2Nlc3NmdWxseSB1bnN1YnNjcmliZWQgZnJvbSBhcHBsaWNhdGlvbi4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRFcnJvcihleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNWYWxpZEFwcFR5cGUoYXJjaGl2ZTogRmlsZSwgYXBwVHlwZTogQXBwbGljYXRpb25UeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUeXBlID0gYXdhaXQgdGhpcy5nZXRBcHBUeXBlKGFyY2hpdmUpO1xuICAgICAgaWYgKGN1cnJlbnRUeXBlICE9PSBhcHBUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLlRZUEVfVkFMSURBVElPTik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2dyZXNzLm5leHQodGhpcy5wcm9ncmVzcy52YWx1ZSArIDEwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLlRZUEVfVkFMSURBVElPTik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBsb2FkQXJjaGl2ZVRvQXBwKFxuICAgIGFyY2hpdmU6IEZpbGUsXG4gICAgYXBwOiBJQXBwbGljYXRpb24sXG4gICAgaXNOZXdWZXJzaW9uID0gZmFsc2VcbiAgKTogUHJvbWlzZTxJQXBwbGljYXRpb24+IHtcbiAgICBsZXQgdXBsb2FkT3ZlcnJpZGVzOiBJVXBsb2FkUGFyYW1zT3ZlcnJpZGU7XG4gICAgaWYgKGlzTmV3VmVyc2lvbikge1xuICAgICAgdXBsb2FkT3ZlcnJpZGVzID0gYXdhaXQgdGhpcy5nZXRVcGxvYWRPdmVycmlkZXMoYXJjaGl2ZSwgYXBwKTtcbiAgICB9XG4gICAgY29uc3QgYmluYXJ5U2VydmljZSA9IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmJpbmFyeShhcHApO1xuICAgIHRoaXMueGhyID0gYmluYXJ5U2VydmljZS51cGxvYWRXaXRoUHJvZ3Jlc3NYaHIoXG4gICAgICBhcmNoaXZlLFxuICAgICAgdGhpcy51cGRhdGVVcGxvYWRQcm9ncmVzcy5iaW5kKHRoaXMpLFxuICAgICAgJycsXG4gICAgICB1cGxvYWRPdmVycmlkZXNcbiAgICApO1xuXG4gICAgY29uc3QgYmluYXJ5TW8gPSBhd2FpdCBiaW5hcnlTZXJ2aWNlLmdldFhNTEh0dHBSZXNwb25zZSh0aGlzLnhocik7XG4gICAgLy8gVE9ETyBjb21tZW50ZWQgaXQgZHVlIHRvOiBodHRwczovL2N1bXVsb2NpdHkuYXRsYXNzaWFuLm5ldC9icm93c2UvTVRNLTQ4NTUzXG4gICAgLy8gQWRkIGl0IGJhY2sgd2hlbiBCRSBmaXhlcyBpc3N1ZXMgd2l0aCBhY3RpdmVWZXJzaW9uLlxuICAgIC8vIGlmIChpc05ld1ZlcnNpb24pIHtcbiAgICAvLyAgIHJldHVybiBhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9uKGFwcCk7XG4gICAgLy8gfVxuICAgIGNvbnN0IG5vdEluaXRpYWxQYWNrYWdlID0gYXBwLmFwcGxpY2F0aW9uVmVyc2lvbnM/Lmxlbmd0aCA+IDA7XG4gICAgaWYgKG5vdEluaXRpYWxQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZSh7IGlkOiBhcHAuaWQgfSkpLmRhdGE7XG4gICAgfVxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZXRBcHBBY3RpdmVWZXJzaW9uKGFwcCwgKGJpbmFyeU1vLmJpbmFyeUlkIHx8IGJpbmFyeU1vLmlkKSBhcyBzdHJpbmcpKS5kYXRhO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVBcmNoaXZlVG9BcHBDb21wYXRpYmlsaXR5KGFyY2hpdmU6IEZpbGUsIGFwcDogSUFwcGxpY2F0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXBwVHlwZSA9IGF3YWl0IHRoaXMuZ2V0QXBwVHlwZShhcmNoaXZlKTtcbiAgICBpZiAoYXBwVHlwZSAhPT0gYXBwLnR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLklOVkFMSURfQVBQTElDQVRJT04pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2dyZXNzLm5leHQodGhpcy5wcm9ncmVzcy52YWx1ZSArIDEwKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNNaWNyb3NlcnZpY2UoYXBwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IHRoaXMuZ2V0Q3VtdWxvY2l0eUpzb24oYXJjaGl2ZSk7XG4gICAgLy8gQSB1c2VyIGNhbiB1cGxvYWQgYW4gYXBwIHdpdGhvdXQgYSBDdW11bG9jaXR5IEpTT04gZmlsZSAoZS5nLiBhIHJlYWN0IGFwcCkuXG4gICAgLy8gVGhpcyBpcyBhbGxvd2VkIGFuZCBzaG91bGQgbm90IHRyaWdnZXIgYSB2YWxpZGF0aW9uIGVycm9yLlxuICAgIGlmICghbWFuaWZlc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZVBhY2thZ2VLZXlBbmRDb250ZXh0UGF0aChtYW5pZmVzdCwgYXBwKTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1bXVsb2NpdHlKc29uKGFyY2hpdmU6IEZpbGUpOiBQcm9taXNlPElNYW5pZmVzdCB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYzh5TWFuaWZlc3QgPSBhd2FpdCB0aGlzLmdldEN1bXVsb2NpdHlKc29uJChhcmNoaXZlKS50b1Byb21pc2UoKTtcbiAgICAgIHJldHVybiBjOHlNYW5pZmVzdDtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlQXBwRm9yQXJjaGl2ZShhcmNoaXZlLCBpc1BhY2thZ2VUeXBlQXJjaGl2ZSA9IGZhbHNlKTogUHJvbWlzZTxJQXBwbGljYXRpb24+IHtcbiAgICBsZXQgaXNQYWNrYWdlID0gZmFsc2U7XG4gICAgY29uc3QgYXBwVHlwZSA9IGF3YWl0IHRoaXMuZ2V0QXBwVHlwZShhcmNoaXZlKTtcbiAgICBsZXQgYXBwTW9kZWw6IGFueSA9IHt9O1xuICAgIGNvbnN0IHN1cHBvcnRlZEFwcFR5cGVzID0gW0FwcGxpY2F0aW9uVHlwZS5IT1NURUQsIEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0VdO1xuXG4gICAgaWYgKHN1cHBvcnRlZEFwcFR5cGVzLmluY2x1ZGVzKGFwcFR5cGUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcHBNb2RlbCA9IGF3YWl0IHRoaXMuZ2V0Q3VtdWxvY2l0eUpzb24kKGFyY2hpdmUpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpc1BhY2thZ2UgPSBhcHBNb2RlbC5pc1BhY2thZ2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcsIHdlIGFsbG93IGhhdmluZyBIT1NURUQgYXBwbGljYXRpb25zIHdpdGhvdXQgdGhlIG1hbmlmZXN0IGZpbGVcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0QmFzZU5hbWVGcm9tQXJjaGl2ZU9yQXBwTW9kZWwoYXJjaGl2ZSwgYXBwVHlwZSwgYXBwTW9kZWwpO1xuICAgIGNvbnN0IGNsZWFyZWROYW1lID0gdGhpcy5yZW1vdmVGb3JiaWRkZW5DaGFyYWN0ZXJzKG5hbWUpO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0QXBwS2V5KGFwcE1vZGVsLCBjbGVhcmVkTmFtZSk7XG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLmdldENvbnRleHRQYXRoKGFwcE1vZGVsLCBuYW1lKTtcblxuICAgIGNvbnN0IGFwcFRvU2F2ZSA9IHtcbiAgICAgIHR5cGU6IGFwcFR5cGUsXG4gICAgICBuYW1lLFxuICAgICAga2V5LFxuICAgICAgY29udGV4dFBhdGhcbiAgICB9O1xuXG4gICAgaWYgKGlzUGFja2FnZVR5cGVBcmNoaXZlICYmICFpc1BhY2thZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLklOVkFMSURfUEFDS0FHRSk7XG4gICAgfSBlbHNlIGlmICghaXNQYWNrYWdlVHlwZUFyY2hpdmUgJiYgaXNQYWNrYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRWNvc3lzdGVtRXJyb3IoRVJST1JfVFlQRS5JTlZBTElEX0FQUExJQ0FUSU9OKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNOYW1lTGVuZ3RoRXhjZWVkZWQobmFtZSwgYXBwVHlwZSkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7XG4gICAgICBlcnJvci5uYW1lID0gRVJST1JfVFlQRS5NSUNST1NFUlZJQ0VfTkFNRV9UT09fTE9ORztcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChFUlJPUl9NRVNTQUdFU1tlcnJvci5uYW1lXSwge1xuICAgICAgICBuYW1lLFxuICAgICAgICBtYXhDaGFyczogTUlDUk9TRVJWSUNFX05BTUVfTUFYX0xFTkdUSFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIC4uLmFwcFRvU2F2ZSxcbiAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICBpc1BhY2thZ2UsXG4gICAgICAgICAgLi4uKGFwcE1vZGVsPy5wYWNrYWdlICYmIHsgcGFja2FnZTogYXBwTW9kZWwucGFja2FnZSB9KVxuICAgICAgICB9IGFzIHVua25vd24gYXMgSU1hbmlmZXN0XG4gICAgICB9KVxuICAgICkuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHJlYWN0aXZhdGVBcmNoaXZlKGFwcDogSUFwcGxpY2F0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnJlYWN0aXZhdGVBcmNoaXZlKGFwcC5pZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0FwcGxpY2F0aW9uIHJlYWN0aXZhdGVkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydEVycm9yKGV4KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZW1vdmVPbGRlc3RBcmNoaXZlKGFwcDogSUFwcGxpY2F0aW9uLCBhcmNoaXZlczogSUFwcGxpY2F0aW9uQmluYXJ5W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdEZWxldGUgb2xkZXN0IGFyY2hpdmUgYW5kIGNvbnRpbnVlJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1VwIHRvIDYgYXJjaGl2ZXMgY2FuIGJlIHNhdmVkIGluIHRoZSBwbGF0Zm9ybS4gSWYgeW91IHVwbG9hZCBhIG5ldyBhcmNoaXZlLCB0aGUgb2xkZXN0IGFyY2hpdmUgdGhhdCBpcyBub3QgYWN0aXZlIHdpbGwgYmUgZGVsZXRlZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5JTkZPLFxuICAgICAgICB7IG9rOiBnZXR0ZXh0KCdEZWxldGUgYW5kIGNvbnRpbnVlJykgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGFyY2hpdmVUb0RlbGV0ZSA9IGFyY2hpdmVzW2FyY2hpdmVzLmxlbmd0aCAtIDJdO1xuICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuYmluYXJ5KGFwcCkuZGVsZXRlKGFyY2hpdmVUb0RlbGV0ZS5pZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0FyY2hpdmUgZGVsZXRlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRFcnJvcihleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVwbG95QXBwKHNlbGVjdGVkUGFja2FnZTogSUFwcGxpY2F0aW9uLCBmb3JtR3JvdXBWYWx1ZSwgbW9kZWwpOiBQcm9taXNlPElBcHBsaWNhdGlvbj4ge1xuICAgIC8vIENyZWF0ZSBuZXcgYXBwIGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3JlYXRlQ29uZmlnKHNlbGVjdGVkUGFja2FnZSwgZm9ybUdyb3VwVmFsdWUpO1xuICAgIGNvbnN0IHJlcXVlc3RlZFZlcnNpb24gPSBtb2RlbC5zZWxlY3RlZC52ZXJzaW9uO1xuICAgIGxldCBjbGVhbk1hbmlmZXN0O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldEFwcE1hbmlmZXN0KFxuICAgICAgICBzZWxlY3RlZFBhY2thZ2UsXG4gICAgICAgIHJlcXVlc3RlZFZlcnNpb25cbiAgICAgICk7XG4gICAgICBjbGVhbk1hbmlmZXN0ID0gb21pdChtYW5pZmVzdCwgWyduYW1lJywgJ2NvbnRleHRQYXRoJywgJ2tleSddKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuVkVSU0lPTl9OT1RfRk9VTkQpO1xuICAgIH1cblxuICAgIGNvbmZpZy5pc1NldHVwID0gdHJ1ZTtcbiAgICBjb25maWcubWFuaWZlc3QgPSBjbGVhbk1hbmlmZXN0O1xuICAgIGNvbmZpZy5hdmFpbGFiaWxpdHkgPSBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5QUklWQVRFO1xuICAgIGNvbmZpZy5tYW5pZmVzdC5pc1BhY2thZ2UgPSBmYWxzZTtcbiAgICBjb25maWcubWFuaWZlc3Quc291cmNlID0gc2VsZWN0ZWRQYWNrYWdlLmlkO1xuICAgIGNvbmZpZy5tYW5pZmVzdC5wYWNrYWdlID0gJ2JsdWVwcmludCc7XG5cbiAgICAvLyBiZWNhdXNlIG9mIGEgaXNzdWUgd2l0aCBTSEFSRUQgYXZhaWxhYmlsaXR5IHdlIGFsd2F5cyBzaG91bGQgY2hlY2sgYWdhaW5cbiAgICAvLyBpZiB0aGUgYXBwIG5vdCBleGlzdCBhbHJlYWR5XG4gICAgY29uc3QgYWxsRXhpc3RpbmdBcHBzID0gYXdhaXQgdGhpcy5nZXRIb3N0ZWRBbmRQYWNrYWdlQXBwbGljYXRpb25zKCk7XG4gICAgY29uc3QgZG9lc0FwcEtleU9yQ29udGV4dFBhdGhFeGlzdCA9IHRoaXMuY2hlY2tJZkFwcE5hbWVLZXlQYXRoRXhpc3RzKGFsbEV4aXN0aW5nQXBwcywgY29uZmlnKTtcbiAgICBpZiAoZG9lc0FwcEtleU9yQ29udGV4dFBhdGhFeGlzdCkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuQUxSRUFEWV9FWElTVCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldyBhcHBcbiAgICBjb25zdCBuZXdBcHAgPSAoYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuY3JlYXRlKGNvbmZpZykpLmRhdGE7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEJpbmFyeSB1cGxvYWQgY2FuIGZhaWwgaWYgU0hBUkVEIHBhY2thZ2VcbiAgICAgIC8vIGluIHRoaXMgY2FzZSwgY2F0Y2ggZXJyb3IgYW5kIGZhbGwgYmFjayB0b1xuICAgICAgLy8gY2xvbmUgQVBJLlxuICAgICAgYXdhaXQgdGhpcy51cGxvYWRCaW5hcnlGcm9tT3RoZXJQYWNrYWdlKFxuICAgICAgICBzZWxlY3RlZFBhY2thZ2UsXG4gICAgICAgIG5ld0FwcCxcbiAgICAgICAgbW9kZWwuc2VsZWN0ZWQuYmluYXJ5SWQsXG4gICAgICAgIHJlcXVlc3RlZFZlcnNpb25cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcj8ucmVzPy5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICBhd2FpdCB0aGlzLmZhbGxiYWNrVG9DbG9uZShuZXdBcHAsIHNlbGVjdGVkUGFja2FnZSwgcmVxdWVzdGVkVmVyc2lvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHRoZSBpY29uIGlmIGEgY3VzdG9tIG9uZSBpcyBzZWxlY3RlZFxuICAgIGlmIChmb3JtR3JvdXBWYWx1ZS5pY29uKSB7XG4gICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS51cGRhdGUoe1xuICAgICAgICBpZDogbmV3QXBwLmlkLFxuICAgICAgICBjb25maWc6IHsgaWNvbjogZm9ybUdyb3VwVmFsdWUuaWNvbiB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0FwcDtcbiAgfVxuXG4gIGFzeW5jIGZhbGxiYWNrVG9DbG9uZShcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIHNlbGVjdGVkUGFja2FnZTogSUFwcGxpY2F0aW9uLFxuICAgIHJlcXVlc3RlZFZlcnNpb24/OiBzdHJpbmdcbiAgKSB7XG4gICAgbGV0IHdhc1N1Y2Nlc3MgPSB0cnVlO1xuICAgIGxldCBjbG9uZWRQa2c7XG4gICAgdHJ5IHtcbiAgICAgIGNsb25lZFBrZyA9IChhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5jbG9uZShzZWxlY3RlZFBhY2thZ2UsIHJlcXVlc3RlZFZlcnNpb24pKS5kYXRhO1xuICAgICAgYXdhaXQgdGhpcy51cGxvYWRCaW5hcnlGcm9tT3RoZXJQYWNrYWdlKFxuICAgICAgICBzZWxlY3RlZFBhY2thZ2UsXG4gICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgICBjbG9uZWRQa2cuYWN0aXZlVmVyc2lvbklkLFxuICAgICAgICByZXF1ZXN0ZWRWZXJzaW9uLFxuICAgICAgICBjbG9uZWRQa2dcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRFcnJvcihlcnJvcik7XG4gICAgICB3YXNTdWNjZXNzID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQXBwKGNsb25lZFBrZywgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB3YXNTdWNjZXNzO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkQmluYXJ5RnJvbU90aGVyUGFja2FnZShcbiAgICBzZWxlY3RlZFBhY2thZ2U6IElBcHBsaWNhdGlvbixcbiAgICBhcHBsaWNhdGlvblRvVXBsb2FkQmluYXJ5VG86IElBcHBsaWNhdGlvbixcbiAgICBiaW5hcnlJZDogc3RyaW5nLFxuICAgIHJlcXVlc3RlZFZlcnNpb24/OiBzdHJpbmcsXG4gICAgdXNlQmluYXJpZXNGcm9tPzogSUFwcGxpY2F0aW9uXG4gICkge1xuICAgIGNvbnN0IHsgZGF0YTogYmluYXJ5RGV0YWlscyB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChiaW5hcnlJZCk7XG5cbiAgICAvLyBHZXQgYmluYXJ5IGZyb20gc3BlY2lmaWMgcGFja2FnZSB2ZXJzaW9uXG4gICAgY29uc3QgYmluYXJ5ID0gYXdhaXQgdGhpcy5nZXRCaW5hcnkodXNlQmluYXJpZXNGcm9tIHx8IHNlbGVjdGVkUGFja2FnZSwge1xuICAgICAgaWQ6IGJpbmFyeUlkXG4gICAgfSk7XG4gICAgLy8gQ3JlYXRlIHppcFxuICAgIGNvbnN0IGZpbGVCaW5hcnkgPSBuZXcgQmxvYihbYmluYXJ5XSwgeyB0eXBlOiBiaW5hcnlEZXRhaWxzLmNvbnRlbnRUeXBlIH0pO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbZmlsZUJpbmFyeV0sIGJpbmFyeURldGFpbHMubmFtZSwge1xuICAgICAgdHlwZTogYmluYXJ5RGV0YWlscy5jb250ZW50VHlwZVxuICAgIH0pO1xuXG4gICAgLy8gVXBsb2FkIGJpbmFyeSB0byBuZXcgYXBwXG4gICAgYXdhaXQgdGhpcy51cGxvYWRBcmNoaXZlVG9BcHAoZmlsZSwgYXBwbGljYXRpb25Ub1VwbG9hZEJpbmFyeVRvKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgYXBwIG1hbmlmZXN0XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBNYW5pZmVzdChhcHBsaWNhdGlvblRvVXBsb2FkQmluYXJ5VG8sIHNlbGVjdGVkUGFja2FnZSwgcmVxdWVzdGVkVmVyc2lvbik7XG4gIH1cblxuICBnZXRBcHBTdGF0ZShhcHA6IElBcHBsaWNhdGlvbik6IEFwcGxpY2F0aW9uU3RhdGUge1xuICAgIGlmICghdGhpcy5pc093bmVyKGFwcCkpIHtcbiAgICAgIHJldHVybiBBUFBfU1RBVEUuU1VCU0NSSUJFRDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNVbnBhY2tlZChhcHApKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlVOUEFDS0VEO1xuICAgIH0gZWxzZSBpZiAoYXBwLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5FWFRFUk5BTCkge1xuICAgICAgcmV0dXJuIEFQUF9TVEFURS5FWFRFUk5BTDtcbiAgICB9XG4gICAgcmV0dXJuIEFQUF9TVEFURS5DVVNUT007XG4gIH1cblxuICBnZXRQYWNrYWdlQ29udGVudFN0YXRlKGFwcDogSUFwcGxpY2F0aW9uKTogQXBwbGljYXRpb25TdGF0ZSB7XG4gICAgaWYgKCF0aGlzLmlzUGFja2FnZShhcHApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUGFja2FnZUJsdWVwcmludChhcHApKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlBBQ0tBR0VfQkxVRVBSSU5UO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1BsdWdpbnNQYWNrYWdlKGFwcCkpIHtcbiAgICAgIHJldHVybiBBUFBfU1RBVEUuUEFDS0FHRV9QTFVHSU47XG4gICAgfVxuICAgIHJldHVybiBBUFBfU1RBVEUuUEFDS0FHRV9VTktOT1dOO1xuICB9XG5cbiAgaXNQYWNrYWdlQmx1ZXByaW50KGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNQYWNrYWdlKGFwcCkgJiYgYXBwLm1hbmlmZXN0LnBhY2thZ2UgPT09ICdibHVlcHJpbnQnO1xuICB9XG5cbiAgaXNQbHVnaW5zUGFja2FnZShhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUGFja2FnZShhcHApICYmIGFwcC5tYW5pZmVzdC5wYWNrYWdlID09PSAncGx1Z2luJztcbiAgfVxuXG4gIGlzVW5wYWNrZWQoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAubWFuaWZlc3Q/LnNvdXJjZTtcbiAgfVxuXG4gIGhhc0V4cG9ydHMoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAubWFuaWZlc3Q/LmV4cG9ydHM/Lmxlbmd0aDtcbiAgfVxuXG4gIGlzQXBwbGljYXRpb24oYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXBwLnR5cGUgIT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UgJiYgIXRoaXMuaXNGZWF0dXJlKGFwcCkgJiYgIXRoaXMuaXNQYWNrYWdlKGFwcClcbiAgICApO1xuICB9XG5cbiAgaXNDdXN0b21NaWNyb3NlcnZpY2UoYXBwOiBJQXBwbGljYXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5pc093bmVyKGFwcCkgJiYgYXBwLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0U7XG4gIH1cblxuICBhc3luYyBnZXRCaW5hcnkoXG4gICAgYXBwOiBJQXBwbGljYXRpb24sXG4gICAgYXJjaGl2ZTogSUFwcGxpY2F0aW9uQmluYXJ5IHwgSUlkZW50aWZpZWRcbiAgKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIGxldCBiaW5hcnk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmJpbmFyeShhcHApLmRvd25sb2FkQXJjaGl2ZShhcmNoaXZlLmlkKTtcbiAgICAgIGJpbmFyeSA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdDb3VsZCBub3QgZ2V0IHRoZSBiaW5hcnkuJyk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIGJpbmFyeTtcbiAgfVxuXG4gIGFzeW5jIGlzT3ZlcndyaXR0ZW5CeUN1c3RvbUFwcChhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhdGhpcy5pc093bmVyKGFwcCkgJiYgKGF3YWl0IHRoaXMuaGFzU3Vic2NyaWJlZEFwcFBhcmVudChhcHApKTtcbiAgfVxuXG4gIGFzeW5jIGhhc1N1YnNjcmliZWRBcHBQYXJlbnQoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhcHBzR3JvdXBlZEJ5Q29udGV4dFBhdGggPSBhd2FpdCB0aGlzLmFwcHNHcm91cGVkQnlDb250ZXh0UGF0aCQucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICByZXR1cm4gYXBwLmNvbnRleHRQYXRoICYmIGFwcHNHcm91cGVkQnlDb250ZXh0UGF0aFthcHAuY29udGV4dFBhdGhdPy5sZW5ndGggPT09IDI7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHNldEF2YWlsYWJpbGl0eVRvUHJpdmF0ZUlmTm90U2V0QWxyZWFkeShhcHA6IElBcHBsaWNhdGlvbik6IElBcHBsaWNhdGlvbiB7XG4gICAgYXBwLmF2YWlsYWJpbGl0eSA9IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LlBSSVZBVEU7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBhbiBlcnJvciBkaWFsb2cuXG4gICAqIEBwYXJhbSBlcnJvciBFaXRoZXIgYSBzZXJ2ZXIgZXJyb3Igb3IgYW4gaW50ZXJuYWwgW1tFY29zeXN0ZW1FcnJvcl1dLlxuICAgKi9cbiAgYWxlcnRFcnJvcihlcnJvcjogRXJyb3IgfCBFY29zeXN0ZW1FcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVjb3N5c3RlbUVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZXJyb3IubWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlUGFja2FnZUtleUFuZENvbnRleHRQYXRoKG1hbmlmZXN0OiBJTWFuaWZlc3QsIGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dFBhdGggPSBnZXQobWFuaWZlc3QsICdjb250ZXh0UGF0aCcpO1xuICAgIGNvbnN0IGFwcEtleSA9IGdldChtYW5pZmVzdCwgJ2tleScpO1xuICAgIGlmIChjb250ZXh0UGF0aCAhPT0gYXBwLmNvbnRleHRQYXRoIHx8IGFwcEtleSAhPT0gYXBwLmtleSkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuS0VZX09SX0NPTlRFWFRfUEFUSF9NSVNNQVRDSCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyQ29udGFpblN0cmluZyhuYW1lOiBzdHJpbmcsIGZpbHRlclRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlcm0gPSBmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gIH1cblxuICBhc3luYyB1cGRhdGVBcHBNYW5pZmVzdChcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIHNlbGVjdGVkUGFja2FnZTogSUFwcGxpY2F0aW9uLFxuICAgIHJlcXVlc3RlZFZlcnNpb24/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IHJlczogSUZldGNoUmVzcG9uc2U7IGRhdGE6IGFueSB9PiB7XG4gICAgY29uc3QgeyBpZCB9ID0gYXBwbGljYXRpb247XG4gICAgY29uc3QgY2xlYW5lZEFwcCA9IHRoaXMucmVtb3ZlQXBwUHJvcGVydGllcyhhcHBsaWNhdGlvbik7XG4gICAgbGV0IG1hbmlmZXN0OiBQYXJ0aWFsPElNYW5pZmVzdD4gPSBzZWxlY3RlZFBhY2thZ2UubWFuaWZlc3QgfHwge307XG4gICAgaWYgKHJlcXVlc3RlZFZlcnNpb24pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb25lZEFwcE1hbmlmZXN0ID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZ2V0QXBwTWFuaWZlc3QoXG4gICAgICAgICAgc2VsZWN0ZWRQYWNrYWdlLFxuICAgICAgICAgIHJlcXVlc3RlZFZlcnNpb25cbiAgICAgICAgKTtcbiAgICAgICAgbWFuaWZlc3QgPSB2ZXJzaW9uZWRBcHBNYW5pZmVzdDtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLlZFUlNJT05fTk9UX0ZPVU5EKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhbmVkQXBwLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgY2xlYW5lZEFwcC5tYW5pZmVzdC5pc1BhY2thZ2UgPSBmYWxzZTtcbiAgICBjbGVhbmVkQXBwLm1hbmlmZXN0LnNvdXJjZSA9IHNlbGVjdGVkUGFja2FnZS5pZDtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZVxuICAgICAgLmJpbmFyeShpZClcbiAgICAgIC51cGRhdGVGaWxlcyhbeyBwYXRoOiBDVU1VTE9DSVRZX0pTT04sIGNvbnRlbnRzOiBKU09OLnN0cmluZ2lmeShjbGVhbmVkQXBwKSBhcyBhbnkgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBmb3IgZmlsdGVyaW5nIGFwcGxpY2F0aW9ucyBvbiBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGFwcCBBcHBsaWNhdGlvbiB0byBjcmVhdGUgZmlsdGVyIHByb3BlcnRpZXMgZnJvbS5cbiAgICogQHJldHVybnMge29iamVjdH0gUHJvcGVydGllcyB0byBmaWx0ZXIgYnkgYXBwbGljYXRpb25zIGxpc3QuXG4gICAqL1xuICBnZXRBcHBGaWx0ZXJQcm9wcyhhcHA6IElBcHBsaWNhdGlvbik6IEFwcEZpbHRlclByb3BzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy5wbHVnaW5TZXJ2aWNlLmdldFBhY2thZ2VUeXBlKGFwcCksXG4gICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZ2V0QXBwU3RhdGUoYXBwKT8ubGFiZWwsXG4gICAgICBjb250ZW50OiB0aGlzLmdldFBhY2thZ2VDb250ZW50U3RhdGUoYXBwKT8ubGFiZWxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmQXBwTmFtZUtleVBhdGhFeGlzdHMoXG4gICAgZXhpc3RpbmdBcHBzOiBJQXBwbGljYXRpb25bXSxcbiAgICBhcHA6IElBcHBsaWNhdGlvbixcbiAgICByZXRyeU5vPzogbnVtYmVyXG4gICk6IElBcHBsaWNhdGlvbiB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKHJldHJ5Tm8pKSB7XG4gICAgICByZXR1cm4gZXhpc3RpbmdBcHBzLmZpbmQoXG4gICAgICAgIGV4aXN0aW5nQXBwID0+XG4gICAgICAgICAgZXhpc3RpbmdBcHAubmFtZSA9PT0gYXBwLm5hbWUgfHxcbiAgICAgICAgICBleGlzdGluZ0FwcC5rZXkgPT09IGFwcC5rZXkgfHxcbiAgICAgICAgICBleGlzdGluZ0FwcC5jb250ZXh0UGF0aCA9PT0gYXBwLmNvbnRleHRQYXRoXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXhpc3RpbmdBcHBzLmZpbmQoXG4gICAgICBleGlzdGluZ0FwcCA9PlxuICAgICAgICBleGlzdGluZ0FwcC5uYW1lID09PSBhcHAubmFtZSB8fFxuICAgICAgICBleGlzdGluZ0FwcC5rZXkgPT09IGFwcC5rZXkgfHxcbiAgICAgICAgZXhpc3RpbmdBcHAuY29udGV4dFBhdGggPT09IGFwcC5jb250ZXh0UGF0aCB8fFxuICAgICAgICBleGlzdGluZ0FwcC5uYW1lID09PSBbYXBwLm5hbWUsIHJldHJ5Tm9dLmpvaW4oJy0nKSB8fFxuICAgICAgICBleGlzdGluZ0FwcC5rZXkgPT09IFthcHAua2V5LCByZXRyeU5vXS5qb2luKCctJykgfHxcbiAgICAgICAgZXhpc3RpbmdBcHAuY29udGV4dFBhdGggPT09IFthcHAuY29udGV4dFBhdGgsIHJldHJ5Tm9dLmpvaW4oJy0nKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dNb2RhbChcbiAgICBwYWNrYWdlVHlwZTogUGFydGlhbDxJTWFuaWZlc3Q+IHwgQXBwbGljYXRpb25QbHVnaW4sXG4gICAgaXNQbHVnaW46IGJvb2xlYW4sXG4gICAgYXBpVmVyc2lvbjogc3RyaW5nLFxuICAgIHNka1ZlcnNpb24/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICBpZiAocGFja2FnZVR5cGUubmFtZSkge1xuICAgICAgICBtZXNzYWdlID0gZ2V0dGV4dChcbiAgICAgICAgICAnVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBcInt7IG5hbWUgfX1cIiB0aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGluc3RhbGwgZG9lcyBub3Qgc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgZm9sbG93aW5nIEFQSSB2ZXJzaW9uIFwie3sgYXBpVmVyc2lvbiB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNQbHVnaW4pIHtcbiAgICAgICAgbWVzc2FnZSA9IGdldHRleHQoXG4gICAgICAgICAgJ1RoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHBsdWdpbiB0aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGluc3RhbGwgZG9lcyBub3Qgc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgZm9sbG93aW5nIEFQSSB2ZXJzaW9uIFwie3sgYXBpVmVyc2lvbiB9fVwiIG9yIFNESyB2ZXJzaW9uIFwie3sgc2RrVmVyc2lvbiB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KFxuICAgICAgICAgICdUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBibHVlcHJpbnQgdGhhdCB5b3UgYXJlIHRyeWluZyB0byBpbnN0YWxsIGRvZXMgbm90IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIGZvbGxvd2luZyBBUEkgdmVyc2lvbiBcInt7IGFwaVZlcnNpb24gfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCB0cmFuc2xhdGVkQm9keSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UsIHtcbiAgICAgICAgbmFtZTogcGFja2FnZVR5cGUubmFtZSxcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgc2RrVmVyc2lvblxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oZ2V0dGV4dCgnQmx1ZXByaW50IGluc3RhbGxhdGlvbicpLCB0cmFuc2xhdGVkQm9keSwgJ3dhcm5pbmcnLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdDb250aW51ZScpLFxuICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG1vZGFsIGNhbmNlbGVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBsYXRmb3JtVmVyc2lvbigpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcHBTdGF0ZVNlcnZpY2Uuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKHN0YXRlID0+IHN0YXRlPy52ZXJzaW9ucz8uYmFja2VuZCksXG4gICAgICAgIGZpbHRlcihiYWNrZW5kVmVyc2lvbiA9PiAhIWJhY2tlbmRWZXJzaW9uKVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcHBLZXkoYXBwTW9kZWw6IElBcHBsaWNhdGlvbiwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQga2V5ID0gYXBwTW9kZWw/LmtleTtcbiAgICBpZiAoIWtleSkge1xuICAgICAga2V5ID0gYCR7a2ViYWJDYXNlKG5hbWUpfS1rZXlgO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0UGF0aChhcHBNb2RlbDogSUFwcGxpY2F0aW9uLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhcHBNb2RlbD8uY29udGV4dFBhdGggfHwgbmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGb3JiaWRkZW5DaGFyYWN0ZXJzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1teYS16QS1aMC05LV9dL2csICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDdXJyZW50QXBwKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEFwcCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmFwcDtcbiAgICByZXR1cm4gY3VycmVudEFwcC5jb250ZXh0UGF0aCA9PT0gYXBwLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdW11bG9jaXR5SnNvbiQoYXJjaGl2ZTogRmlsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuemlwU2VydmljZS5nZXRKc29uRGF0YShhcmNoaXZlLCB7XG4gICAgICBmaWxlbmFtZTogQ1VNVUxPQ0lUWV9KU09OXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcFR5cGUoYXJjaGl2ZTogRmlsZSk6IFByb21pc2U8QXBwbGljYXRpb25UeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VtdWxvY2l0eUpzb24kKGFyY2hpdmUpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKFxuICAgICAgICBkYXRhID0+XG4gICAgICAgICAgZ2V0KGRhdGEsICd0eXBlJykgfHxcbiAgICAgICAgICAoZ2V0KGRhdGEsICdhcGlWZXJzaW9uJykgPyBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFIDogQXBwbGljYXRpb25UeXBlLkhPU1RFRClcbiAgICAgIClcbiAgICAgIC5jYXRjaCgoKSA9PiBBcHBsaWNhdGlvblR5cGUuSE9TVEVEKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZU5hbWVGcm9tQXJjaGl2ZU9yQXBwTW9kZWwoXG4gICAgYXJjaGl2ZTogYW55LFxuICAgIGFwcFR5cGU6IEFwcGxpY2F0aW9uVHlwZSxcbiAgICBhcHBNb2RlbD86IElBcHBsaWNhdGlvblxuICApOiBzdHJpbmcge1xuICAgIGxldCBiYXNlTmFtZSA9IGFwcE1vZGVsPy5uYW1lIHx8IGFyY2hpdmUubmFtZS5yZXBsYWNlKC9cXC56aXAkL2ksICcnKTtcbiAgICBpZiAoYXBwVHlwZSA9PT0gJ01JQ1JPU0VSVklDRScpIHtcbiAgICAgIGJhc2VOYW1lID0gdGhpcy5yZW1vdmVWZXJzaW9uRnJvbU5hbWUoYmFzZU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZU5hbWU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFwcFByb3BlcnRpZXMoYXBwOiBJQXBwbGljYXRpb24pOiBJQXBwbGljYXRpb24ge1xuICAgIGNvbnN0IHRlbXBBcHAgPSBjbG9uZURlZXAoYXBwKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzVG9SZW1vdmUgPSBbJ2lkJywgJ293bmVyJywgJ2FjdGl2ZVZlcnNpb25JZCcsICdzZWxmJywgJ3R5cGUnXTtcblxuICAgIHByb3BlcnRpZXNUb1JlbW92ZS5mb3JFYWNoKHByb3AgPT4gZGVsZXRlIHRlbXBBcHBbcHJvcF0pO1xuICAgIHJldHVybiB0ZW1wQXBwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRVcGxvYWRPdmVycmlkZXMoXG4gICAgYXJjaGl2ZTogRmlsZSxcbiAgICBhcHA6IElBcHBsaWNhdGlvblxuICApOiBQcm9taXNlPElVcGxvYWRQYXJhbXNPdmVycmlkZT4ge1xuICAgIGNvbnN0IHsgdmVyc2lvbiB9ID0gYXdhaXQgdGhpcy5nZXRDdW11bG9jaXR5SnNvbiQoYXJjaGl2ZSkudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgaXNJbml0aWFsUGFja2FnZSA9IGFwcC5hcHBsaWNhdGlvblZlcnNpb25zPy5sZW5ndGggPT09IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpc3RVcmw6ICd2ZXJzaW9ucycsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL3ZuZC5jb20ubnNuLmN1bXVsb2NpdHkuYXBwbGljYXRpb25WZXJzaW9uK2pzb247Y2hhcnNldD1VVEYtODt2ZXI9MC45J1xuICAgICAgfSxcbiAgICAgIGJvZHlGaWxlUHJvcGVydHk6ICdhcHBsaWNhdGlvbkJpbmFyeScsXG4gICAgICByZXF1ZXN0Qm9keToge1xuICAgICAgICBhcHBsaWNhdGlvblZlcnNpb246IHsgdmVyc2lvbiwgLi4uKGlzSW5pdGlhbFBhY2thZ2UgJiYgeyB0YWdzOiBbJ2xhdGVzdCddIH0pIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVWZXJzaW9uRnJvbU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdmVyc2lvblJlZ0V4cCA9IC8tXFxkK1xcLlxcZCtcXC5cXGQrKFxcLlxcZCspPygtXFxkKyk/KC4qKSQvO1xuICAgIHJldHVybiBuYW1lLnJlcGxhY2UodmVyc2lvblJlZ0V4cCwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05hbWVMZW5ndGhFeGNlZWRlZChuYW1lLCBhcHBUeXBlKSB7XG4gICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gTUlDUk9TRVJWSUNFX05BTUVfTUFYX0xFTkdUSCAmJiBhcHBUeXBlID09PSBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFO1xuICB9XG59XG4iXX0=
824
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2Vjb3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFXZixnQkFBZ0IsRUFJaEIsYUFBYSxFQUNkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxZQUFZLEVBRVosZUFBZSxFQUNmLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFB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LENBQUM7UUFDekQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FDOUIsT0FBYSxFQUNiLEdBQWlCO1FBRWpCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2RSxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQy9ELE9BQU87WUFDTCxPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPLEVBQUU7Z0JBQ1AsTUFBTSxFQUFFLGtGQUFrRjthQUMzRjtZQUNELGdCQUFnQixFQUFFLG1CQUFtQjtZQUNyQyxXQUFXLEVBQUU7Z0JBQ1gsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2FBQy9FO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZO1FBQ3hDLE1BQU0sYUFBYSxHQUFHLG9DQUFvQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQUksRUFBRSxPQUFPO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyw0QkFBNEIsSUFBSSxPQUFPLEtBQUssZUFBZSxDQUFDLFlBQVksQ0FBQztJQUNoRyxDQUFDOzhHQTErQlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgQXBwbGljYXRpb25TZXJ2aWNlLFxuICBBcHBsaWNhdGlvblR5cGUsXG4gIElBcHBsaWNhdGlvbixcbiAgSUFwcGxpY2F0aW9uQmluYXJ5LFxuICBJQXBwbGljYXRpb25WZXJzaW9uLFxuICBJQXBwbGljYXRpb25WZXJzaW9uRGVsZXRlUGFyYW1zLFxuICBJQ3VycmVudFRlbmFudCxcbiAgSWRSZWZlcmVuY2UsXG4gIElGZXRjaFJlc3BvbnNlLFxuICBJSWRlbnRpZmllZCxcbiAgSU1hbmFnZWRPYmplY3QsXG4gIElNYW5pZmVzdCxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgSVJlc3VsdCxcbiAgSVJlc3VsdExpc3QsXG4gIElVcGxvYWRQYXJhbXNPdmVycmlkZSxcbiAgVGVuYW50U2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uUGx1Z2luLFxuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIEh1bWFuaXplQXBwTmFtZVBpcGUsXG4gIE1vZGFsU2VydmljZSxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIFdpemFyZE1vZGFsU2VydmljZSxcbiAgWmlwU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGdyb3VwQnksIGtlYmFiQ2FzZSwgcGljaywgdW5pcUJ5LCBvbWl0LCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlZmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2UsIG1hcCwgZmlsdGVyLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGd0LCBjb2VyY2UsIHNhdGlzZmllcyB9IGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBFY29zeXN0ZW1FcnJvciB9IGZyb20gJy4vZWNvc3lzdGVtLWVycm9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU3RhdGUsIEFQUF9TVEFURSwgRVJST1JfTUVTU0FHRVMgfSBmcm9tICcuL2Vjb3N5c3RlbS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRWNvc3lzdGVtV2l6YXJkcywgRVJST1JfVFlQRSwgTGljZW5zZWRBcHBsaWNhdGlvblBsdWdpbiB9IGZyb20gJy4vZWNvc3lzdGVtLm1vZGVsJztcbmltcG9ydCB7IEFwcEZpbHRlclByb3BzIH0gZnJvbSAnLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXJzLm1vZGVsJztcblxuY29uc3QgQ1VNVUxPQ0lUWV9KU09OID0gJ2N1bXVsb2NpdHkuanNvbic7XG5jb25zdCBNSUNST1NFUlZJQ0VfTkFNRV9NQVhfTEVOR1RIID0gMjM7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVjb3N5c3RlbVNlcnZpY2Uge1xuICBhcHBEZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJQXBwbGljYXRpb24+KCk7XG4gIHByb2dyZXNzOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgcHJpdmF0ZSBhcHBzR3JvdXBlZEJ5Q29udGV4dFBhdGgkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIElBcHBsaWNhdGlvbltdPj47XG4gIHByaXZhdGUgeGhyOiBYTUxIdHRwUmVxdWVzdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGh1bWFuaXplQXBwTmFtZTogSHVtYW5pemVBcHBOYW1lUGlwZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgemlwU2VydmljZTogWmlwU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2l6YXJkTW9kYWxTZXJ2aWNlOiBXaXphcmRNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbHVnaW5TZXJ2aWNlOiBQbHVnaW5zU2VydmljZVxuICApIHtcbiAgICB0aGlzLmFwcHNHcm91cGVkQnlDb250ZXh0UGF0aCQgPSBkZWZlcigoKSA9PiB0aGlzLmdldFdlYkFwcGxpY2F0aW9ucygpKS5waXBlKFxuICAgICAgbWFwKHdlYkFwcHMgPT4gZ3JvdXBCeSh3ZWJBcHBzLCAnY29udGV4dFBhdGgnKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFwcENvbmZpZyhzcmNBcHA6IElBcHBsaWNhdGlvbiwgZXhpc3RpbmdBcHBzOiBJQXBwbGljYXRpb25bXSk6IElBcHBsaWNhdGlvbiB7XG4gICAgbGV0IGFwcDogSUFwcGxpY2F0aW9uID0ge1xuICAgICAgbmFtZTogc3JjQXBwLm5hbWUsXG4gICAgICBrZXk6IHNyY0FwcC5rZXksXG4gICAgICBjb250ZXh0UGF0aDogc3JjQXBwLmNvbnRleHRQYXRoXG4gICAgfTtcbiAgICBmb3IgKGxldCByZXRyeU5vID0gMDsgcmV0cnlObyA8IDk7ICkge1xuICAgICAgaWYgKHRoaXMuY2hlY2tJZkFwcE5hbWVLZXlQYXRoRXhpc3RzKGV4aXN0aW5nQXBwcywgYXBwLCByZXRyeU5vKSkge1xuICAgICAgICByZXRyeU5vKys7XG4gICAgICAgIGFwcCA9IHtcbiAgICAgICAgICBuYW1lOiBbc3JjQXBwLm5hbWUsIHJldHJ5Tm9dLmpvaW4oJy0nKSxcbiAgICAgICAgICBrZXk6IFtzcmNBcHAua2V5LCByZXRyeU5vXS5qb2luKCctJyksXG4gICAgICAgICAgY29udGV4dFBhdGg6IFtzcmNBcHAuY29udGV4dFBhdGgsIHJldHJ5Tm9dLmpvaW4oJy0nKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdmVyc2lvbnMgY29tcGF0aWJpbGl0eSBmb3IgYmx1ZXByaW50cy4gSWYgYSBibHVlcHJpbnQgdmVyc2lvblxuICAgKiBpcyBub3QgY29tcGF0aWJsZSwgYSB3YXJuaW5nIGlzIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0gYmx1ZXByaW50IFRoZSBibHVlcHJpbnQgdG8gaW5zdGFsbC5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5zdGFsbGF0aW9uIGNhbiBjb250aW51ZSBvciBmYWxzZSBpZiBpdCBzaG91bGQgYmUgYWJvcnRlZC5cbiAgICovXG4gIGFzeW5jIHZlcmlmeUJsdWVwcmludFZlcnNpb25zQ29tcGF0aWJpbGl0eShibHVlcHJpbnQ6IFBhcnRpYWw8SU1hbmlmZXN0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFwaSA9IGF3YWl0IHRoaXMuZ2V0UGxhdGZvcm1WZXJzaW9uKCk7XG4gICAgaWYgKGJsdWVwcmludC52ZXJzaW9uaW5nTWF0cml4KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwbHVnaW5BcGlWZXJzaW9uID0gYmx1ZXByaW50LnZlcnNpb25pbmdNYXRyaXhbYmx1ZXByaW50LnZlcnNpb25dLmFwaTtcbiAgICAgICAgaWYgKCFzYXRpc2ZpZXMoYXBpLCBwbHVnaW5BcGlWZXJzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNob3dNb2RhbChibHVlcHJpbnQsIGZhbHNlLCBhcGkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2hvd01vZGFsKGJsdWVwcmludCwgZmFsc2UsIGFwaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB2ZXJzaW9ucyBjb21wYXRpYmlsaXR5IGZvciBwbHVnaW5zLiBJbiBjYXNlIGEgdmVyc2lvbiBkb2VzIG5vdCBleGlzdCBpbiB0aGVcbiAgICogdmVyc2lvbmluZ01hdHJpeCB3ZSBkb24ndCBkbyBhbnl0aGluZyBkdWUgdG8gYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gSWYgYSBwbHVnaW4gdmVyc2lvblxuICAgKiBpcyBub3QgY29tcGF0aWJsZSwgYSB3YXJuaW5nIGlzIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luc1RvSW5zdGFsbCBUaGUgbGlzdCBvZiBwbHVnaW5zIHRvIGluc3RhbGwuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluc3RhbGxhdGlvbiBjYW4gY29udGludWUgb3IgZmFsc2UgaWYgaXQgc2hvdWxkIGJlIGFib3J0ZWQuXG4gICAqL1xuICBhc3luYyB2ZXJpZnlQbHVnaW5WZXJzaW9uc0NvbXBhdGliaWxpdHkoXG4gICAgcGx1Z2luc1RvSW5zdGFsbDogQXBwbGljYXRpb25QbHVnaW5bXSxcbiAgICBhcHA6IElBcHBsaWNhdGlvblxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCB0aGlzLmdldFBsYXRmb3JtVmVyc2lvbigpO1xuICAgIGNvbnN0IHNkayA9IGFwcC5tYW5pZmVzdD8ud2ViU2RrVmVyc2lvbjtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiBwbHVnaW5zVG9JbnN0YWxsKSB7XG4gICAgICBpZiAocGx1Z2luLnZlcnNpb25pbmdNYXRyaXgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwbHVnaW5TZGtWZXJzaW9uID0gcGx1Z2luLnZlcnNpb25pbmdNYXRyaXhbcGx1Z2luLnZlcnNpb25dLnNkaztcbiAgICAgICAgICBjb25zdCBwbHVnaW5BcGlWZXJzaW9uID0gcGx1Z2luLnZlcnNpb25pbmdNYXRyaXhbcGx1Z2luLnZlcnNpb25dLmFwaTtcbiAgICAgICAgICBpZiAoIXNhdGlzZmllcyhzZGssIHBsdWdpblNka1ZlcnNpb24pIHx8ICFzYXRpc2ZpZXMoYXBpLCBwbHVnaW5BcGlWZXJzaW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2hvd01vZGFsKHBsdWdpbiwgdHJ1ZSwgYXBpLCBzZGspO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2hvd01vZGFsKHBsdWdpbiwgZmFsc2UsIGFwaSwgc2RrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbW11bml0eSBwbHVnaW5zIG5lZWQgdG8gdmVyaWZ5IHRoZSBsaWNlbnNlIGFncmVlbWVudC4gSWYgYSBwYWNrYWdlIGlzIGEgY29tbXVuaXR5XG4gICAqIHBhY2thZ2UsIHRoZSBsaWNlbnNlIGlzIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luc1RvSW5zdGFsbCBUaGUgbGlzdCBvZiBwbHVnaW5zIHRvIGluc3RhbGwuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluc3RhbGxhdGlvbiBjYW4gY29udGludWUuXG4gICAqL1xuICBhc3luYyB2ZXJpZnlMaWNlbnNlcyhwbHVnaW5zVG9JbnN0YWxsOiBBcnJheTxMaWNlbnNlZEFwcGxpY2F0aW9uUGx1Z2luPikge1xuICAgIGxldCBfcmVzb2x2ZTtcbiAgICBjb25zdCByZXN1bHQ6IFByb21pc2U8Ym9vbGVhbj4gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KTtcblxuICAgIHBsdWdpbnNUb0luc3RhbGwgPSBwbHVnaW5zVG9JbnN0YWxsLmZpbHRlcihwbHVnaW4gPT4gcGx1Z2luLnR5cGUgIT09IFBhY2thZ2VUeXBlLkNVU1RPTSk7XG5cbiAgICBpZiAocGx1Z2luc1RvSW5zdGFsbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBhbnkgPSB7XG4gICAgICBpZDogRWNvc3lzdGVtV2l6YXJkcy5MSUNFTlNFX0NPTkZJUk0sXG4gICAgICBjb21wb25lbnRJbml0aWFsU3RhdGU6IHtcbiAgICAgICAgcGx1Z2luc1RvSW5zdGFsbFxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbW9kYWxPcHRpb25zID0geyBpbml0aWFsU3RhdGUgfTtcbiAgICBjb25zdCB3aXphcmQgPSB0aGlzLndpemFyZE1vZGFsU2VydmljZS5zaG93KG1vZGFsT3B0aW9ucyk7XG5cbiAgICB3aXphcmQuY29udGVudC5vbkNsb3NlLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xuICAgICAgX3Jlc29sdmUoY29uZmlybWVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbXBhcmVzIGN1cnJlbnRseSBkZXBsb3llZCBhcHBsaWNhdGlvbiB2ZXJzaW9uIHdpdGggYXBwbGljYXRpb24gdmVyc2lvbiB0YWdnZWQgYXMgXCJsYXRlc3RcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudEFwcGxpY2F0aW9uVmVyc2lvbiBEZXBsb3llZCBhcHBsaWNhdGlvbiB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXRlc3RBcHAgTGF0ZXN0IGFwcGxpY2F0aW9uIHZlcnNpb24gb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgbGF0ZXN0IHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIGN1cnJlbnQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgc2hvdWxkVXBncmFkZVBhY2thZ2UoY3VycmVudEFwcGxpY2F0aW9uVmVyc2lvbjogc3RyaW5nLCBsYXRlc3RBcHA6IElBcHBsaWNhdGlvblZlcnNpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXRlc3RBcHBsaWNhdGlvblZlcnNpb24gPSBsYXRlc3RBcHA/LnZlcnNpb247XG5cbiAgICBpZiAoIWxhdGVzdEFwcGxpY2F0aW9uVmVyc2lvbiB8fCAhY3VycmVudEFwcGxpY2F0aW9uVmVyc2lvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBndChjb2VyY2UobGF0ZXN0QXBwbGljYXRpb25WZXJzaW9uKSwgY29lcmNlKGN1cnJlbnRBcHBsaWNhdGlvblZlcnNpb24pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBzZWFyY2hlZCB0YWdcbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gYXBwbGljYXRpb25WZXJzaW9ucyBBcnJheSB3aXRoIGFsbCBhdmFpbGFibGUgdmVyc2lvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZ05hbWUgU2VhcmNoZWQgdGFnXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggc2VhcmNoZWQgdGFnXG4gICAqL1xuICBnZXRBcHBsaWNhdGlvblZlcnNpb25PYmplY3RCeVRhZyhcbiAgICBhcHBsaWNhdGlvblZlcnNpb25zOiBJQXBwbGljYXRpb25WZXJzaW9uW10sXG4gICAgdGFnTmFtZTogc3RyaW5nXG4gICk6IElBcHBsaWNhdGlvblZlcnNpb24ge1xuICAgIHJldHVybiBhcHBsaWNhdGlvblZlcnNpb25zPy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC50YWdzLmluY2x1ZGVzKHRhZ05hbWUpKTtcbiAgfVxuXG4gIGFzeW5jIGdldEFwcGxpY2F0aW9uKGFwcElkOiBJZFJlZmVyZW5jZSk6IFByb21pc2U8SUFwcGxpY2F0aW9uPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5kZXRhaWwoYXBwSWQpKS5kYXRhO1xuICB9XG5cbiAgZ2V0QXBwbGljYXRpb25zKGN1c3RvbUZpbHRlcjogYW55ID0ge30pOiBQcm9taXNlPElSZXN1bHRMaXN0PElBcHBsaWNhdGlvbj4+IHtcbiAgICBjb25zdCBmaWx0ZXI6IG9iamVjdCA9IHtcbiAgICAgIHBhZ2VTaXplOiAyMDAwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIE9iamVjdC5hc3NpZ24oZmlsdGVyLCBjdXN0b21GaWx0ZXIpO1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0QnlUZW5hbnQoY3VycmVudFRlbmFudC5uYW1lLCBmaWx0ZXIpO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWljcm9zZXJ2aWNlcygpOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgYXBwcyA9IChhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9ucygpKS5kYXRhO1xuICAgIGNvbnN0IG1pY3Jvc2VydmljZXMgPSBhcHBzLmZpbHRlcihhcHAgPT4gdGhpcy5pc01pY3Jvc2VydmljZShhcHApKTtcbiAgICByZXR1cm4gbWljcm9zZXJ2aWNlcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFdlYkFwcGxpY2F0aW9ucyhjdXN0b21GaWx0ZXI6IGFueSA9IHt9KTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIGNvbnN0IGFwcHMgPSAoYXdhaXQgdGhpcy5nZXRBcHBsaWNhdGlvbnMoY3VzdG9tRmlsdGVyKSkuZGF0YTtcbiAgICBjb25zdCB3ZWJBcHBzID0gYXBwcy5maWx0ZXIoYXBwID0+IHRoaXMuaXNBcHBsaWNhdGlvbihhcHApKTtcbiAgICByZXR1cm4gd2ViQXBwcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmVBcHBsaWNhdGlvbnMoY3VzdG9tRmlsdGVyOiBhbnkgPSB7fSk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBhcHBzID0gKGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb25zKGN1c3RvbUZpbHRlcikpLmRhdGE7XG4gICAgY29uc3Qgd2ViQXBwcyA9IGFwcHMuZmlsdGVyKGFwcCA9PiB0aGlzLmlzRmVhdHVyZShhcHApKTtcbiAgICByZXR1cm4gd2ViQXBwcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBhY2thZ2VBcHBsaWNhdGlvbnMoY3VzdG9tRmlsdGVyOiBhbnkgPSB7fSk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBmaWx0ZXJDYWxsYmFjayA9IGFwcCA9PiB0aGlzLmlzUGFja2FnZShhcHApO1xuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uc0ZpbHRlcmVkKGN1c3RvbUZpbHRlciwgZmlsdGVyQ2FsbGJhY2spO1xuICB9XG5cbiAgYXN5bmMgZ2V0SG9zdGVkQW5kUGFja2FnZUFwcGxpY2F0aW9ucyhjdXN0b21GaWx0ZXI6IGFueSA9IHt9KTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIGNvbnN0IGZpbHRlckNhbGxiYWNrID0gYXBwID0+IHRoaXMuaXNQYWNrYWdlKGFwcCkgfHwgdGhpcy5pc0FwcGxpY2F0aW9uKGFwcCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBwbGljYXRpb25zRmlsdGVyZWQoY3VzdG9tRmlsdGVyLCBmaWx0ZXJDYWxsYmFjayk7XG4gIH1cblxuICBhc3luYyBnZXRBcHBsaWNhdGlvbnNGaWx0ZXJlZChcbiAgICBjdXN0b21GaWx0ZXI6IGFueSA9IHt9LFxuICAgIGZpbHRlckNhbGxiYWNrID0gKGFwcDogSUFwcGxpY2F0aW9uKSA9PiAhIWFwcFxuICApOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgY3VzdG9tRmlsdGVyKTtcbiAgICBjb25zdCBzaGFyZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBhdmFpbGFiaWxpdHk6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LlNIQVJFRCxcbiAgICAgICAgdHlwZTogJ0hPU1RFRCcsXG4gICAgICAgIHBhZ2VTaXplOiAyMDAwXG4gICAgICB9LFxuICAgICAgY3VzdG9tRmlsdGVyXG4gICAgKTtcbiAgICBjb25zdCBbeyBkYXRhOiBhcHBzIH0sIHsgZGF0YTogc2hhcmVkIH1dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5nZXRBcHBsaWNhdGlvbnMoZmlsdGVyKSxcbiAgICAgIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3Qoc2hhcmVkRmlsdGVyKVxuICAgIF0pO1xuICAgIGNvbnN0IHdlYkFwcHMgPSBbLi4uYXBwcywgLi4uc2hhcmVkXS5maWx0ZXIoZmlsdGVyQ2FsbGJhY2spO1xuICAgIC8vIGFuIGFwcCBjb3VsZCBiZSBzdWJzY3JpYmVkIHRvIGEgdGVuYW50LCBidXQgYWxzbyBoYXZlIGl0J3MgYXZhaWxhYmlsaXR5IHNldCB0byBTSEFSRUQsIGluIHRoYXQgY2FzZSBpdCB3b3VsZCBvY2N1ciB0d2ljZS5cbiAgICBjb25zdCB1bmlxV2ViQXBwcyA9IHVuaXFCeSh3ZWJBcHBzLCAoYXBwOiBJQXBwbGljYXRpb24pID0+IGFwcC5pZCk7XG4gICAgcmV0dXJuIHVuaXFXZWJBcHBzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuICB9XG5cbiAgYXN5bmMgaXNNaWNyb3NlcnZpY2VIb3N0aW5nQWxsb3dlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRhdGE6IGFwcHMgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RCeU5hbWUoJ2ZlYXR1cmUtbWljcm9zZXJ2aWNlLWhvc3RpbmcnKTtcbiAgICByZXR1cm4gISFhcHBzLmZpbHRlcihhcHAgPT4gYXBwLm93bmVyPy50ZW5hbnQ/LmlkID09PSAnbWFuYWdlbWVudCcpLmxlbmd0aDtcbiAgfVxuXG4gIGNhbk9wZW5BcHBJbkJyb3dzZXIoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBpc05vdEFGZWF0dXJlID0gIXRoaXMuaXNGZWF0dXJlKGFwcCk7XG4gICAgY29uc3QgaGFzUHJvcGVyVHlwZSA9IFtBcHBsaWNhdGlvblR5cGUuSE9TVEVELCBBcHBsaWNhdGlvblR5cGUuRVhURVJOQUxdLmluY2x1ZGVzKGFwcC50eXBlKTtcbiAgICBjb25zdCBpc05vdFBhY2thZ2UgPSAhdGhpcy5pc1BhY2thZ2UoYXBwKTtcbiAgICByZXR1cm4gaXNOb3RBRmVhdHVyZSAmJiBoYXNQcm9wZXJUeXBlICYmIGlzTm90UGFja2FnZTtcbiAgfVxuXG4gIG9wZW5BcHAoYXBwKSB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZ2V0SHJlZihhcHApLCAnX2JsYW5rJywgJ25vb3BlbmVyLG5vcmVmZXJyZXInKTtcbiAgfVxuXG4gIGFzeW5jIGNhbkRlbGV0ZUFwcChhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzT3duZXIoYXBwKSAmJiAoIXRoaXMuaXNDdXJyZW50QXBwKGFwcCkgfHwgKGF3YWl0IHRoaXMuaGFzU3Vic2NyaWJlZEFwcFBhcmVudChhcHApKSlcbiAgICApO1xuICB9XG5cbiAgaXNPd25lcihhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQ6IElDdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICBjb25zdCBhcHBPd25lciA9IGdldChhcHAsICdvd25lci50ZW5hbnQuaWQnKTtcbiAgICByZXR1cm4gY3VycmVudFRlbmFudD8ubmFtZSA9PT0gYXBwT3duZXI7XG4gIH1cblxuICBpc0ZlYXR1cmUoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFhcHAubmFtZS5tYXRjaCgvZmVhdHVyZS0vKTtcbiAgfVxuXG4gIGlzTWljcm9zZXJ2aWNlKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFwcC50eXBlID09PSAnTUlDUk9TRVJWSUNFJztcbiAgfVxuXG4gIGlzRXh0ZXJuYWwoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwLnR5cGUgPT09ICdFWFRFUk5BTCc7XG4gIH1cblxuICBpc1BhY2thZ2UoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwLm1hbmlmZXN0Py5pc1BhY2thZ2UgPT09IHRydWU7XG4gIH1cblxuICBpc1BsdWdpbihhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcHAubWFuaWZlc3Q/LnBhY2thZ2UgPT09ICdwbHVnaW4nO1xuICB9XG5cbiAgY2FuY2VsQXBwQ3JlYXRpb24oYXBwOiBJQXBwbGljYXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy54aHIpIHtcbiAgICAgIHRoaXMueGhyLmFib3J0KCk7XG4gICAgfVxuICAgIGlmIChhcHApIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRlbGV0ZShhcHApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVVwbG9hZFByb2dyZXNzKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Lmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQcm9ncmVzcyA9IHRoaXMucHJvZ3Jlc3MudmFsdWU7XG4gICAgICB0aGlzLnByb2dyZXNzLm5leHQoY3VycmVudFByb2dyZXNzICsgKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqICg5NSAtIGN1cnJlbnRQcm9ncmVzcykpO1xuICAgIH1cbiAgfVxuXG4gIHNldEFwcEFjdGl2ZVZlcnNpb24oYXBwOiBJQXBwbGljYXRpb24sIGFjdGl2ZVZlcnNpb25JZDogc3RyaW5nKTogUHJvbWlzZTxJQXBwbGljYXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlKHsgaWQ6IGFwcC5pZCwgYWN0aXZlVmVyc2lvbklkIH0pO1xuICB9XG5cbiAgc2V0UGFja2FnZVZlcnNpb25UYWcoYXBwOiBJQXBwbGljYXRpb24sIHZlcnNpb246IHN0cmluZywgdGFnczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2Uuc2V0UGFja2FnZVZlcnNpb25UYWcoYXBwLCB2ZXJzaW9uLCB0YWdzKTtcbiAgfVxuXG4gIGRlbGV0ZVBhY2thZ2VWZXJzaW9uKGFwcDogSUFwcGxpY2F0aW9uLCBwYXJhbXM6IElBcHBsaWNhdGlvblZlcnNpb25EZWxldGVQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZGVsZXRlVmVyc2lvblBhY2thZ2UoYXBwLCBwYXJhbXMpO1xuICB9XG5cbiAgZ2V0SHVtYW5pemVkQXBwTmFtZShhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHVtYW5pemVBcHBOYW1lLnRyYW5zZm9ybShhcHAubmFtZSkucGlwZShkZWJvdW5jZVRpbWUoMjUwKSwgdGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBjcmVhdGVDb25maWcoYXBwOiBJQXBwbGljYXRpb24sIGZvcm1Hcm91cFZhbHVlOiBGb3JtR3JvdXApOiBQYXJ0aWFsPElBcHBsaWNhdGlvbj4ge1xuICAgIGNvbnN0IHsgaWQsIHR5cGUsIGF2YWlsYWJpbGl0eSB9ID0gYXBwO1xuICAgIGxldCBjb25maWcgPSBwaWNrKGZvcm1Hcm91cFZhbHVlLCBbJ25hbWUnLCAna2V5JywgJ2NvbnRleHRQYXRoJ10pO1xuICAgIGNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGlzU2V0dXA6IHRydWUsXG4gICAgICBpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhdmFpbGFiaWxpdHlcbiAgICB9O1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBhc3luYyBsaXN0QXJjaGl2ZXMoYXBwSWQ6IHN0cmluZyB8IG51bWJlciB8IElBcHBsaWNhdGlvbik6IFByb21pc2U8SUFwcGxpY2F0aW9uQmluYXJ5W10+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogMTAwXG4gICAgfTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmJpbmFyeShhcHBJZCkubGlzdChmaWx0ZXIpKS5kYXRhO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXJjaGl2ZShhcmNoaXZlOiBJQXBwbGljYXRpb25CaW5hcnksIGFwcDogSUFwcGxpY2F0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaHVtYW5pemVkQXJjaGl2ZU5hbWUgPSBhd2FpdCB0aGlzLmdldEh1bWFuaXplZEFwcE5hbWUoYXJjaGl2ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnRGVsZXRlIGFyY2hpdmUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBhcmNoaXZlIFwie3sgaHVtYW5pemVkQXJjaGl2ZU5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKSxcbiAgICAgICAgICB7IGh1bWFuaXplZEFyY2hpdmVOYW1lIH1cbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgeyBvazogZ2V0dGV4dCgnRGVsZXRlJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmJpbmFyeShhcHApLmRlbGV0ZShhcmNoaXZlLmlkKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQXJjaGl2ZSBkZWxldGVkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4KSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihnZXQoZXgsICdkYXRhLm1lc3NhZ2UnKSwgZXguZGF0YSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbmNlbGxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEFyY2hpdmVNYW5hZ2VkT2JqZWN0KGJpbmFyeUlkOiBzdHJpbmcpOiBQcm9taXNlPElNYW5hZ2VkT2JqZWN0PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGV0YWlsKGJpbmFyeUlkKSkuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkQXJjaGl2ZShcbiAgICBhcHA6IElBcHBsaWNhdGlvbixcbiAgICBhcmNoaXZlOiBQaWNrPElBcHBsaWNhdGlvbkJpbmFyeSwgJ25hbWUnIHwgJ2lkJz5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJpbmFyeSA9IGF3YWl0IHRoaXMuZ2V0QmluYXJ5KGFwcCwgYXJjaGl2ZSk7XG4gICAgICBjb25zdCBmaWxlQmluYXJ5ID0gbmV3IEJsb2IoW2JpbmFyeV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnIH0pO1xuICAgICAgc2F2ZUFzKGZpbGVCaW5hcnksIGFyY2hpdmUubmFtZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZW1wdHlcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVBcHAoYXBwOiBJQXBwbGljYXRpb24sIGRlbGV0ZU9uRmFpbHVyZSA9IGZhbHNlKTogUHJvbWlzZTxJUmVzdWx0PElBcHBsaWNhdGlvbj4+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZShhcHApO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0RXJyb3IoZXgpO1xuICAgICAgaWYgKGRlbGV0ZU9uRmFpbHVyZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5kZWxldGUoYXBwLmlkKTtcbiAgICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuQVBQTElDQVRJT05fQ1JFQVRJT05fRkFJTEVEKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVBcHAoYXBwOiBJQXBwbGljYXRpb24sIHNpbGVudCA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaHVtYW5pemVkQXBwTmFtZSA9IGF3YWl0IHRoaXMuZ2V0SHVtYW5pemVkQXBwTmFtZShhcHApO1xuICAgIGlmICghc2lsZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBhcHBsaWNhdGlvbicpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uIFwie3sgaHVtYW5pemVkQXBwTmFtZSB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICApLFxuICAgICAgICAgIHsgaHVtYW5pemVkQXBwTmFtZSB9XG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHsgb2s6IGdldHRleHQoJ0RlbGV0ZScpLCBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRlbGV0ZShhcHAuaWQpO1xuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0FwcGxpY2F0aW9uIGRlbGV0ZWQuJykpO1xuICAgIH1cbiAgICB0aGlzLmFwcERlbGV0ZWQuZW1pdChhcHApO1xuICB9XG5cbiAgYXN5bmMgY2hlY2tJZlN1YnNjcmliZWQoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkQXBwcyA9IGN1cnJlbnRUZW5hbnQuZGF0YS5hcHBsaWNhdGlvbnMucmVmZXJlbmNlcztcbiAgICByZXR1cm4gc3Vic2NyaWJlZEFwcHMuc29tZShhcHBsaWNhdGlvbiA9PiBhcHBsaWNhdGlvbi5hcHBsaWNhdGlvbi5pZCA9PT0gYXBwLmlkKTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZUFwcChhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQ6IElDdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLnN1YnNjcmliZUFwcGxpY2F0aW9uKGN1cnJlbnRUZW5hbnQsIGFwcCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1N1Y2Nlc3NmdWxseSBzdWJzY3JpYmVkIHRvIGFwcGxpY2F0aW9uLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydEVycm9yKGV4KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1bnN1YnNjcmliZUFwcChhcHA6IElBcHBsaWNhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQ6IElDdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLnVuc3Vic2NyaWJlQXBwbGljYXRpb24oY3VycmVudFRlbmFudCwgYXBwKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnU3VjY2Vzc2Z1bGx5IHVuc3Vic2NyaWJlZCBmcm9tIGFwcGxpY2F0aW9uLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydEVycm9yKGV4KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc1ZhbGlkQXBwVHlwZShhcmNoaXZlOiBGaWxlLCBhcHBUeXBlOiBBcHBsaWNhdGlvblR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3VycmVudFR5cGUgPSBhd2FpdCB0aGlzLmdldEFwcFR5cGUoYXJjaGl2ZSk7XG4gICAgICBpZiAoY3VycmVudFR5cGUgIT09IGFwcFR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuVFlQRV9WQUxJREFUSU9OKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MubmV4dCh0aGlzLnByb2dyZXNzLnZhbHVlICsgMTApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuVFlQRV9WQUxJREFUSU9OKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWRBcmNoaXZlVG9BcHAoXG4gICAgYXJjaGl2ZTogRmlsZSxcbiAgICBhcHA6IElBcHBsaWNhdGlvbixcbiAgICBpc05ld1ZlcnNpb24gPSBmYWxzZVxuICApOiBQcm9taXNlPElBcHBsaWNhdGlvbj4ge1xuICAgIGxldCB1cGxvYWRPdmVycmlkZXM6IElVcGxvYWRQYXJhbXNPdmVycmlkZTtcbiAgICBpZiAoaXNOZXdWZXJzaW9uKSB7XG4gICAgICB1cGxvYWRPdmVycmlkZXMgPSBhd2FpdCB0aGlzLmdldFVwbG9hZE92ZXJyaWRlcyhhcmNoaXZlLCBhcHApO1xuICAgIH1cbiAgICBjb25zdCBiaW5hcnlTZXJ2aWNlID0gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuYmluYXJ5KGFwcCk7XG4gICAgdGhpcy54aHIgPSBiaW5hcnlTZXJ2aWNlLnVwbG9hZFdpdGhQcm9ncmVzc1hocihcbiAgICAgIGFyY2hpdmUsXG4gICAgICB0aGlzLnVwZGF0ZVVwbG9hZFByb2dyZXNzLmJpbmQodGhpcyksXG4gICAgICAnJyxcbiAgICAgIHVwbG9hZE92ZXJyaWRlc1xuICAgICk7XG5cbiAgICBjb25zdCBiaW5hcnlNbyA9IGF3YWl0IGJpbmFyeVNlcnZpY2UuZ2V0WE1MSHR0cFJlc3BvbnNlKHRoaXMueGhyKTtcbiAgICAvLyBUT0RPIGNvbW1lbnRlZCBpdCBkdWUgdG86IGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNDg1NTNcbiAgICAvLyBBZGQgaXQgYmFjayB3aGVuIEJFIGZpeGVzIGlzc3VlcyB3aXRoIGFjdGl2ZVZlcnNpb24uXG4gICAgLy8gaWYgKGlzTmV3VmVyc2lvbikge1xuICAgIC8vICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb24oYXBwKTtcbiAgICAvLyB9XG4gICAgY29uc3Qgbm90SW5pdGlhbFBhY2thZ2UgPSBhcHAuYXBwbGljYXRpb25WZXJzaW9ucz8ubGVuZ3RoID4gMDtcbiAgICBpZiAobm90SW5pdGlhbFBhY2thZ2UpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlKHsgaWQ6IGFwcC5pZCB9KSkuZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNldEFwcEFjdGl2ZVZlcnNpb24oYXBwLCAoYmluYXJ5TW8uYmluYXJ5SWQgfHwgYmluYXJ5TW8uaWQpIGFzIHN0cmluZykpLmRhdGE7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFyY2hpdmVUb0FwcENvbXBhdGliaWxpdHkoYXJjaGl2ZTogRmlsZSwgYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhcHBUeXBlID0gYXdhaXQgdGhpcy5nZXRBcHBUeXBlKGFyY2hpdmUpO1xuICAgIGlmIChhcHBUeXBlICE9PSBhcHAudHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuSU5WQUxJRF9BUFBMSUNBVElPTik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3MubmV4dCh0aGlzLnByb2dyZXNzLnZhbHVlICsgMTApO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc01pY3Jvc2VydmljZShhcHApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgdGhpcy5nZXRDdW11bG9jaXR5SnNvbihhcmNoaXZlKTtcbiAgICAvLyBBIHVzZXIgY2FuIHVwbG9hZCBhbiBhcHAgd2l0aG91dCBhIEN1bXVsb2NpdHkgSlNPTiBmaWxlIChlLmcuIGEgcmVhY3QgYXBwKS5cbiAgICAvLyBUaGlzIGlzIGFsbG93ZWQgYW5kIHNob3VsZCBub3QgdHJpZ2dlciBhIHZhbGlkYXRpb24gZXJyb3IuXG4gICAgaWYgKCFtYW5pZmVzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlUGFja2FnZUtleUFuZENvbnRleHRQYXRoKG1hbmlmZXN0LCBhcHApO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3VtdWxvY2l0eUpzb24oYXJjaGl2ZTogRmlsZSk6IFByb21pc2U8SU1hbmlmZXN0IHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjOHlNYW5pZmVzdCA9IGF3YWl0IHRoaXMuZ2V0Q3VtdWxvY2l0eUpzb24kKGFyY2hpdmUpLnRvUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIGM4eU1hbmlmZXN0O1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVBcHBGb3JBcmNoaXZlKGFyY2hpdmUsIGlzUGFja2FnZVR5cGVBcmNoaXZlID0gZmFsc2UpOiBQcm9taXNlPElBcHBsaWNhdGlvbj4ge1xuICAgIGxldCBpc1BhY2thZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBhcHBUeXBlID0gYXdhaXQgdGhpcy5nZXRBcHBUeXBlKGFyY2hpdmUpO1xuICAgIGxldCBhcHBNb2RlbDogYW55ID0ge307XG4gICAgY29uc3Qgc3VwcG9ydGVkQXBwVHlwZXMgPSBbQXBwbGljYXRpb25UeXBlLkhPU1RFRCwgQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRV07XG5cbiAgICBpZiAoc3VwcG9ydGVkQXBwVHlwZXMuaW5jbHVkZXMoYXBwVHlwZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFwcE1vZGVsID0gYXdhaXQgdGhpcy5nZXRDdW11bG9jaXR5SnNvbiQoYXJjaGl2ZSkudG9Qcm9taXNlKCk7XG4gICAgICAgIGlzUGFja2FnZSA9IGFwcE1vZGVsLmlzUGFja2FnZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZywgd2UgYWxsb3cgaGF2aW5nIEhPU1RFRCBhcHBsaWNhdGlvbnMgd2l0aG91dCB0aGUgbWFuaWZlc3QgZmlsZVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRCYXNlTmFtZUZyb21BcmNoaXZlT3JBcHBNb2RlbChhcmNoaXZlLCBhcHBUeXBlLCBhcHBNb2RlbCk7XG4gICAgY29uc3QgY2xlYXJlZE5hbWUgPSB0aGlzLnJlbW92ZUZvcmJpZGRlbkNoYXJhY3RlcnMobmFtZSk7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRBcHBLZXkoYXBwTW9kZWwsIGNsZWFyZWROYW1lKTtcbiAgICBjb25zdCBjb250ZXh0UGF0aCA9IHRoaXMuZ2V0Q29udGV4dFBhdGgoYXBwTW9kZWwsIG5hbWUpO1xuXG4gICAgY29uc3QgYXBwVG9TYXZlID0ge1xuICAgICAgdHlwZTogYXBwVHlwZSxcbiAgICAgIG5hbWUsXG4gICAgICBrZXksXG4gICAgICBjb250ZXh0UGF0aFxuICAgIH07XG5cbiAgICBpZiAoaXNQYWNrYWdlVHlwZUFyY2hpdmUgJiYgIWlzUGFja2FnZSkge1xuICAgICAgdGhyb3cgbmV3IEVjb3N5c3RlbUVycm9yKEVSUk9SX1RZUEUuSU5WQUxJRF9QQUNLQUdFKTtcbiAgICB9IGVsc2UgaWYgKCFpc1BhY2thZ2VUeXBlQXJjaGl2ZSAmJiBpc1BhY2thZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLklOVkFMSURfQVBQTElDQVRJT04pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc05hbWVMZW5ndGhFeGNlZWRlZChuYW1lLCBhcHBUeXBlKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICAgIGVycm9yLm5hbWUgPSBFUlJPUl9UWVBFLk1JQ1JPU0VSVklDRV9OQU1FX1RPT19MT05HO1xuICAgICAgZXJyb3IubWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KEVSUk9SX01FU1NBR0VTW2Vycm9yLm5hbWVdLCB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIG1heENoYXJzOiBNSUNST1NFUlZJQ0VfTkFNRV9NQVhfTEVOR1RIXG4gICAgICB9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgLi4uYXBwVG9TYXZlLFxuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIGlzUGFja2FnZSxcbiAgICAgICAgICAuLi4oYXBwTW9kZWw/LnBhY2thZ2UgJiYgeyBwYWNrYWdlOiBhcHBNb2RlbC5wYWNrYWdlIH0pXG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBJTWFuaWZlc3RcbiAgICAgIH0pXG4gICAgKS5kYXRhO1xuICB9XG5cbiAgYXN5bmMgcmVhY3RpdmF0ZUFyY2hpdmUoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UucmVhY3RpdmF0ZUFyY2hpdmUoYXBwLmlkKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQXBwbGljYXRpb24gcmVhY3RpdmF0ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0RXJyb3IoZXgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbW92ZU9sZGVzdEFyY2hpdmUoYXBwOiBJQXBwbGljYXRpb24sIGFyY2hpdmVzOiBJQXBwbGljYXRpb25CaW5hcnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBvbGRlc3QgYXJjaGl2ZSBhbmQgY29udGludWUnKSxcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnVXAgdG8gNiBhcmNoaXZlcyBjYW4gYmUgc2F2ZWQgaW4gdGhlIHBsYXRmb3JtLiBJZiB5b3UgdXBsb2FkIGEgbmV3IGFyY2hpdmUsIHRoZSBvbGRlc3QgYXJjaGl2ZSB0aGF0IGlzIG5vdCBhY3RpdmUgd2lsbCBiZSBkZWxldGVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLklORk8sXG4gICAgICAgIHsgb2s6IGdldHRleHQoJ0RlbGV0ZSBhbmQgY29udGludWUnKSB9XG4gICAgICApO1xuICAgICAgY29uc3QgYXJjaGl2ZVRvRGVsZXRlID0gYXJjaGl2ZXNbYXJjaGl2ZXMubGVuZ3RoIC0gMl07XG4gICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5iaW5hcnkoYXBwKS5kZWxldGUoYXJjaGl2ZVRvRGVsZXRlLmlkKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQXJjaGl2ZSBkZWxldGVkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4KSB7XG4gICAgICAgIHRoaXMuYWxlcnRFcnJvcihleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ2NhbmNlbGxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlcGxveUFwcChzZWxlY3RlZFBhY2thZ2U6IElBcHBsaWNhdGlvbiwgZm9ybUdyb3VwVmFsdWUsIG1vZGVsKTogUHJvbWlzZTxJQXBwbGljYXRpb24+IHtcbiAgICAvLyBDcmVhdGUgbmV3IGFwcCBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZyhzZWxlY3RlZFBhY2thZ2UsIGZvcm1Hcm91cFZhbHVlKTtcbiAgICBjb25zdCByZXF1ZXN0ZWRWZXJzaW9uID0gbW9kZWwuc2VsZWN0ZWQudmVyc2lvbjtcbiAgICBsZXQgY2xlYW5NYW5pZmVzdDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRBcHBNYW5pZmVzdChcbiAgICAgICAgc2VsZWN0ZWRQYWNrYWdlLFxuICAgICAgICByZXF1ZXN0ZWRWZXJzaW9uXG4gICAgICApO1xuICAgICAgY2xlYW5NYW5pZmVzdCA9IG9taXQobWFuaWZlc3QsIFsnbmFtZScsICdjb250ZXh0UGF0aCcsICdrZXknXSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLlZFUlNJT05fTk9UX0ZPVU5EKTtcbiAgICB9XG5cbiAgICBjb25maWcuaXNTZXR1cCA9IHRydWU7XG4gICAgY29uZmlnLm1hbmlmZXN0ID0gY2xlYW5NYW5pZmVzdDtcbiAgICBjb25maWcuYXZhaWxhYmlsaXR5ID0gQXBwbGljYXRpb25BdmFpbGFiaWxpdHkuUFJJVkFURTtcbiAgICBjb25maWcubWFuaWZlc3QuaXNQYWNrYWdlID0gZmFsc2U7XG4gICAgY29uZmlnLm1hbmlmZXN0LnNvdXJjZSA9IHNlbGVjdGVkUGFja2FnZS5pZDtcbiAgICBjb25maWcubWFuaWZlc3QucGFja2FnZSA9ICdibHVlcHJpbnQnO1xuXG4gICAgLy8gYmVjYXVzZSBvZiBhIGlzc3VlIHdpdGggU0hBUkVEIGF2YWlsYWJpbGl0eSB3ZSBhbHdheXMgc2hvdWxkIGNoZWNrIGFnYWluXG4gICAgLy8gaWYgdGhlIGFwcCBub3QgZXhpc3QgYWxyZWFkeVxuICAgIGNvbnN0IGFsbEV4aXN0aW5nQXBwcyA9IGF3YWl0IHRoaXMuZ2V0SG9zdGVkQW5kUGFja2FnZUFwcGxpY2F0aW9ucygpO1xuICAgIGNvbnN0IGRvZXNBcHBLZXlPckNvbnRleHRQYXRoRXhpc3QgPSB0aGlzLmNoZWNrSWZBcHBOYW1lS2V5UGF0aEV4aXN0cyhhbGxFeGlzdGluZ0FwcHMsIGNvbmZpZyk7XG4gICAgaWYgKGRvZXNBcHBLZXlPckNvbnRleHRQYXRoRXhpc3QpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLkFMUkVBRFlfRVhJU1QpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBuZXcgYXBwXG4gICAgY29uc3QgbmV3QXBwID0gKGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmNyZWF0ZShjb25maWcpKS5kYXRhO1xuICAgIHRyeSB7XG4gICAgICAvLyBCaW5hcnkgdXBsb2FkIGNhbiBmYWlsIGlmIFNIQVJFRCBwYWNrYWdlXG4gICAgICAvLyBpbiB0aGlzIGNhc2UsIGNhdGNoIGVycm9yIGFuZCBmYWxsIGJhY2sgdG9cbiAgICAgIC8vIGNsb25lIEFQSS5cbiAgICAgIGF3YWl0IHRoaXMudXBsb2FkQmluYXJ5RnJvbU90aGVyUGFja2FnZShcbiAgICAgICAgc2VsZWN0ZWRQYWNrYWdlLFxuICAgICAgICBuZXdBcHAsXG4gICAgICAgIG1vZGVsLnNlbGVjdGVkLmJpbmFyeUlkLFxuICAgICAgICByZXF1ZXN0ZWRWZXJzaW9uXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3I/LnJlcz8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5mYWxsYmFja1RvQ2xvbmUobmV3QXBwLCBzZWxlY3RlZFBhY2thZ2UsIHJlcXVlc3RlZFZlcnNpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgaWNvbiBpZiBhIGN1c3RvbSBvbmUgaXMgc2VsZWN0ZWRcbiAgICBpZiAoZm9ybUdyb3VwVmFsdWUuaWNvbikge1xuICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgaWQ6IG5ld0FwcC5pZCxcbiAgICAgICAgY29uZmlnOiB7IGljb246IGZvcm1Hcm91cFZhbHVlLmljb24gfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBcHA7XG4gIH1cblxuICBhc3luYyBmYWxsYmFja1RvQ2xvbmUoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBzZWxlY3RlZFBhY2thZ2U6IElBcHBsaWNhdGlvbixcbiAgICByZXF1ZXN0ZWRWZXJzaW9uPzogc3RyaW5nXG4gICkge1xuICAgIGxldCB3YXNTdWNjZXNzID0gdHJ1ZTtcbiAgICBsZXQgY2xvbmVkUGtnO1xuICAgIHRyeSB7XG4gICAgICBjbG9uZWRQa2cgPSAoYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuY2xvbmUoc2VsZWN0ZWRQYWNrYWdlLCByZXF1ZXN0ZWRWZXJzaW9uKSkuZGF0YTtcbiAgICAgIGF3YWl0IHRoaXMudXBsb2FkQmluYXJ5RnJvbU90aGVyUGFja2FnZShcbiAgICAgICAgc2VsZWN0ZWRQYWNrYWdlLFxuICAgICAgICBhcHBsaWNhdGlvbixcbiAgICAgICAgY2xvbmVkUGtnLmFjdGl2ZVZlcnNpb25JZCxcbiAgICAgICAgcmVxdWVzdGVkVmVyc2lvbixcbiAgICAgICAgY2xvbmVkUGtnXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0RXJyb3IoZXJyb3IpO1xuICAgICAgd2FzU3VjY2VzcyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZUFwcChjbG9uZWRQa2csIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gd2FzU3VjY2VzcztcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEJpbmFyeUZyb21PdGhlclBhY2thZ2UoXG4gICAgc2VsZWN0ZWRQYWNrYWdlOiBJQXBwbGljYXRpb24sXG4gICAgYXBwbGljYXRpb25Ub1VwbG9hZEJpbmFyeVRvOiBJQXBwbGljYXRpb24sXG4gICAgYmluYXJ5SWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0ZWRWZXJzaW9uPzogc3RyaW5nLFxuICAgIHVzZUJpbmFyaWVzRnJvbT86IElBcHBsaWNhdGlvblxuICApIHtcbiAgICBjb25zdCB7IGRhdGE6IGJpbmFyeURldGFpbHMgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwoYmluYXJ5SWQpO1xuXG4gICAgLy8gR2V0IGJpbmFyeSBmcm9tIHNwZWNpZmljIHBhY2thZ2UgdmVyc2lvblxuICAgIGNvbnN0IGJpbmFyeSA9IGF3YWl0IHRoaXMuZ2V0QmluYXJ5KHVzZUJpbmFyaWVzRnJvbSB8fCBzZWxlY3RlZFBhY2thZ2UsIHtcbiAgICAgIGlkOiBiaW5hcnlJZFxuICAgIH0pO1xuICAgIC8vIENyZWF0ZSB6aXBcbiAgICBjb25zdCBmaWxlQmluYXJ5ID0gbmV3IEJsb2IoW2JpbmFyeV0sIHsgdHlwZTogYmluYXJ5RGV0YWlscy5jb250ZW50VHlwZSB9KTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2ZpbGVCaW5hcnldLCBiaW5hcnlEZXRhaWxzLm5hbWUsIHtcbiAgICAgIHR5cGU6IGJpbmFyeURldGFpbHMuY29udGVudFR5cGVcbiAgICB9KTtcblxuICAgIC8vIFVwbG9hZCBiaW5hcnkgdG8gbmV3IGFwcFxuICAgIGF3YWl0IHRoaXMudXBsb2FkQXJjaGl2ZVRvQXBwKGZpbGUsIGFwcGxpY2F0aW9uVG9VcGxvYWRCaW5hcnlUbyk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGFwcCBtYW5pZmVzdFxuICAgIGF3YWl0IHRoaXMudXBkYXRlQXBwTWFuaWZlc3QoYXBwbGljYXRpb25Ub1VwbG9hZEJpbmFyeVRvLCBzZWxlY3RlZFBhY2thZ2UsIHJlcXVlc3RlZFZlcnNpb24pO1xuICB9XG5cbiAgZ2V0QXBwU3RhdGUoYXBwOiBJQXBwbGljYXRpb24pOiBBcHBsaWNhdGlvblN0YXRlIHtcbiAgICBpZiAoIXRoaXMuaXNPd25lcihhcHApKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlNVQlNDUklCRUQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzVW5wYWNrZWQoYXBwKSkge1xuICAgICAgcmV0dXJuIEFQUF9TVEFURS5VTlBBQ0tFRDtcbiAgICB9IGVsc2UgaWYgKGFwcC50eXBlID09PSBBcHBsaWNhdGlvblR5cGUuRVhURVJOQUwpIHtcbiAgICAgIHJldHVybiBBUFBfU1RBVEUuRVhURVJOQUw7XG4gICAgfVxuICAgIHJldHVybiBBUFBfU1RBVEUuQ1VTVE9NO1xuICB9XG5cbiAgZ2V0UGFja2FnZUNvbnRlbnRTdGF0ZShhcHA6IElBcHBsaWNhdGlvbik6IEFwcGxpY2F0aW9uU3RhdGUge1xuICAgIGlmICghdGhpcy5pc1BhY2thZ2UoYXBwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1BhY2thZ2VCbHVlcHJpbnQoYXBwKSkge1xuICAgICAgcmV0dXJuIEFQUF9TVEFURS5QQUNLQUdFX0JMVUVQUklOVDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQbHVnaW5zUGFja2FnZShhcHApKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlBBQ0tBR0VfUExVR0lOO1xuICAgIH1cbiAgICByZXR1cm4gQVBQX1NUQVRFLlBBQ0tBR0VfVU5LTk9XTjtcbiAgfVxuXG4gIGlzUGFja2FnZUJsdWVwcmludChhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUGFja2FnZShhcHApICYmIGFwcC5tYW5pZmVzdC5wYWNrYWdlID09PSAnYmx1ZXByaW50JztcbiAgfVxuXG4gIGlzUGx1Z2luc1BhY2thZ2UoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1BhY2thZ2UoYXBwKSAmJiBhcHAubWFuaWZlc3QucGFja2FnZSA9PT0gJ3BsdWdpbic7XG4gIH1cblxuICBpc1VucGFja2VkKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYXBwLm1hbmlmZXN0Py5zb3VyY2U7XG4gIH1cblxuICBoYXNFeHBvcnRzKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYXBwLm1hbmlmZXN0Py5leHBvcnRzPy5sZW5ndGg7XG4gIH1cblxuICBpc0FwcGxpY2F0aW9uKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFwcC50eXBlICE9PSBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFICYmICF0aGlzLmlzRmVhdHVyZShhcHApICYmICF0aGlzLmlzUGFja2FnZShhcHApXG4gICAgKTtcbiAgfVxuXG4gIGlzQ3VzdG9tTWljcm9zZXJ2aWNlKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNPd25lcihhcHApICYmIGFwcC50eXBlID09PSBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFO1xuICB9XG5cbiAgYXN5bmMgZ2V0QmluYXJ5KFxuICAgIGFwcDogSUFwcGxpY2F0aW9uLFxuICAgIGFyY2hpdmU6IElBcHBsaWNhdGlvbkJpbmFyeSB8IElJZGVudGlmaWVkXG4gICk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICBsZXQgYmluYXJ5O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5iaW5hcnkoYXBwKS5kb3dubG9hZEFyY2hpdmUoYXJjaGl2ZS5pZCk7XG4gICAgICBiaW5hcnkgPSBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnQ291bGQgbm90IGdldCB0aGUgYmluYXJ5LicpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKG1zZyk7XG4gICAgfVxuICAgIHJldHVybiBiaW5hcnk7XG4gIH1cblxuICBhc3luYyBpc092ZXJ3cml0dGVuQnlDdXN0b21BcHAoYXBwOiBJQXBwbGljYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gIXRoaXMuaXNPd25lcihhcHApICYmIChhd2FpdCB0aGlzLmhhc1N1YnNjcmliZWRBcHBQYXJlbnQoYXBwKSk7XG4gIH1cblxuICBhc3luYyBoYXNTdWJzY3JpYmVkQXBwUGFyZW50KGFwcDogSUFwcGxpY2F0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXBwc0dyb3VwZWRCeUNvbnRleHRQYXRoID0gYXdhaXQgdGhpcy5hcHBzR3JvdXBlZEJ5Q29udGV4dFBhdGgkLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gICAgcmV0dXJuIGFwcC5jb250ZXh0UGF0aCAmJiBhcHBzR3JvdXBlZEJ5Q29udGV4dFBhdGhbYXBwLmNvbnRleHRQYXRoXT8ubGVuZ3RoID09PSAyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzZXRBdmFpbGFiaWxpdHlUb1ByaXZhdGVJZk5vdFNldEFscmVhZHkoYXBwOiBJQXBwbGljYXRpb24pOiBJQXBwbGljYXRpb24ge1xuICAgIGFwcC5hdmFpbGFiaWxpdHkgPSBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5QUklWQVRFO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgYW4gZXJyb3IgZGlhbG9nLlxuICAgKiBAcGFyYW0gZXJyb3IgRWl0aGVyIGEgc2VydmVyIGVycm9yIG9yIGFuIGludGVybmFsIFtbRWNvc3lzdGVtRXJyb3JdXS5cbiAgICovXG4gIGFsZXJ0RXJyb3IoZXJyb3I6IEVycm9yIHwgRWNvc3lzdGVtRXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFY29zeXN0ZW1FcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZGFuZ2VyKGVycm9yLm1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZVBhY2thZ2VLZXlBbmRDb250ZXh0UGF0aChtYW5pZmVzdDogSU1hbmlmZXN0LCBhcHA6IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHRQYXRoID0gZ2V0KG1hbmlmZXN0LCAnY29udGV4dFBhdGgnKTtcbiAgICBjb25zdCBhcHBLZXkgPSBnZXQobWFuaWZlc3QsICdrZXknKTtcbiAgICBpZiAoY29udGV4dFBhdGggIT09IGFwcC5jb250ZXh0UGF0aCB8fCBhcHBLZXkgIT09IGFwcC5rZXkpIHtcbiAgICAgIHRocm93IG5ldyBFY29zeXN0ZW1FcnJvcihFUlJPUl9UWVBFLktFWV9PUl9DT05URVhUX1BBVEhfTUlTTUFUQ0gpO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckNvbnRhaW5TdHJpbmcobmFtZTogc3RyaW5nLCBmaWx0ZXJUZXJtOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB0ZXJtID0gZmlsdGVyVGVybS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICByZXR1cm4gbmFtZSAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXJtKSA+IC0xO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQXBwTWFuaWZlc3QoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBzZWxlY3RlZFBhY2thZ2U6IElBcHBsaWNhdGlvbixcbiAgICByZXF1ZXN0ZWRWZXJzaW9uPzogc3RyaW5nXG4gICk6IFByb21pc2U8eyByZXM6IElGZXRjaFJlc3BvbnNlOyBkYXRhOiBhbnkgfT4ge1xuICAgIGNvbnN0IHsgaWQgfSA9IGFwcGxpY2F0aW9uO1xuICAgIGNvbnN0IGNsZWFuZWRBcHAgPSB0aGlzLnJlbW92ZUFwcFByb3BlcnRpZXMoYXBwbGljYXRpb24pO1xuICAgIGxldCBtYW5pZmVzdDogUGFydGlhbDxJTWFuaWZlc3Q+ID0gc2VsZWN0ZWRQYWNrYWdlLm1hbmlmZXN0IHx8IHt9O1xuICAgIGlmIChyZXF1ZXN0ZWRWZXJzaW9uKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uZWRBcHBNYW5pZmVzdCA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldEFwcE1hbmlmZXN0KFxuICAgICAgICAgIHNlbGVjdGVkUGFja2FnZSxcbiAgICAgICAgICByZXF1ZXN0ZWRWZXJzaW9uXG4gICAgICAgICk7XG4gICAgICAgIG1hbmlmZXN0ID0gdmVyc2lvbmVkQXBwTWFuaWZlc3Q7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICB0aHJvdyBuZXcgRWNvc3lzdGVtRXJyb3IoRVJST1JfVFlQRS5WRVJTSU9OX05PVF9GT1VORCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2xlYW5lZEFwcC5tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgIGNsZWFuZWRBcHAubWFuaWZlc3QuaXNQYWNrYWdlID0gZmFsc2U7XG4gICAgY2xlYW5lZEFwcC5tYW5pZmVzdC5zb3VyY2UgPSBzZWxlY3RlZFBhY2thZ2UuaWQ7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2VcbiAgICAgIC5iaW5hcnkoaWQpXG4gICAgICAudXBkYXRlRmlsZXMoW3sgcGF0aDogQ1VNVUxPQ0lUWV9KU09OLCBjb250ZW50czogSlNPTi5zdHJpbmdpZnkoY2xlYW5lZEFwcCkgYXMgYW55IH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgZm9yIGZpbHRlcmluZyBhcHBsaWNhdGlvbnMgb24gbGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcHAgQXBwbGljYXRpb24gdG8gY3JlYXRlIGZpbHRlciBwcm9wZXJ0aWVzIGZyb20uXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IFByb3BlcnRpZXMgdG8gZmlsdGVyIGJ5IGFwcGxpY2F0aW9ucyBsaXN0LlxuICAgKi9cbiAgZ2V0QXBwRmlsdGVyUHJvcHMoYXBwOiBJQXBwbGljYXRpb24pOiBBcHBGaWx0ZXJQcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMucGx1Z2luU2VydmljZS5nZXRQYWNrYWdlVHlwZShhcHApLFxuICAgICAgYXZhaWxhYmlsaXR5OiB0aGlzLmdldEFwcFN0YXRlKGFwcCk/LmxhYmVsLFxuICAgICAgY29udGVudDogdGhpcy5nZXRQYWNrYWdlQ29udGVudFN0YXRlKGFwcCk/LmxhYmVsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZkFwcE5hbWVLZXlQYXRoRXhpc3RzKFxuICAgIGV4aXN0aW5nQXBwczogSUFwcGxpY2F0aW9uW10sXG4gICAgYXBwOiBJQXBwbGljYXRpb24sXG4gICAgcmV0cnlObz86IG51bWJlclxuICApOiBJQXBwbGljYXRpb24ge1xuICAgIGlmIChpc1VuZGVmaW5lZChyZXRyeU5vKSkge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nQXBwcy5maW5kKFxuICAgICAgICBleGlzdGluZ0FwcCA9PlxuICAgICAgICAgIGV4aXN0aW5nQXBwLm5hbWUgPT09IGFwcC5uYW1lIHx8XG4gICAgICAgICAgZXhpc3RpbmdBcHAua2V5ID09PSBhcHAua2V5IHx8XG4gICAgICAgICAgZXhpc3RpbmdBcHAuY29udGV4dFBhdGggPT09IGFwcC5jb250ZXh0UGF0aFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nQXBwcy5maW5kKFxuICAgICAgZXhpc3RpbmdBcHAgPT5cbiAgICAgICAgZXhpc3RpbmdBcHAubmFtZSA9PT0gYXBwLm5hbWUgfHxcbiAgICAgICAgZXhpc3RpbmdBcHAua2V5ID09PSBhcHAua2V5IHx8XG4gICAgICAgIGV4aXN0aW5nQXBwLmNvbnRleHRQYXRoID09PSBhcHAuY29udGV4dFBhdGggfHxcbiAgICAgICAgZXhpc3RpbmdBcHAubmFtZSA9PT0gW2FwcC5uYW1lLCByZXRyeU5vXS5qb2luKCctJykgfHxcbiAgICAgICAgZXhpc3RpbmdBcHAua2V5ID09PSBbYXBwLmtleSwgcmV0cnlOb10uam9pbignLScpIHx8XG4gICAgICAgIGV4aXN0aW5nQXBwLmNvbnRleHRQYXRoID09PSBbYXBwLmNvbnRleHRQYXRoLCByZXRyeU5vXS5qb2luKCctJylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93TW9kYWwoXG4gICAgcGFja2FnZVR5cGU6IFBhcnRpYWw8SU1hbmlmZXN0PiB8IEFwcGxpY2F0aW9uUGx1Z2luLFxuICAgIGlzUGx1Z2luOiBib29sZWFuLFxuICAgIGFwaVZlcnNpb246IHN0cmluZyxcbiAgICBzZGtWZXJzaW9uPzogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgaWYgKHBhY2thZ2VUeXBlLm5hbWUpIHtcbiAgICAgICAgbWVzc2FnZSA9IGdldHRleHQoXG4gICAgICAgICAgJ1RoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgXCJ7eyBuYW1lIH19XCIgdGhhdCB5b3UgYXJlIHRyeWluZyB0byBpbnN0YWxsIGRvZXMgbm90IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIGZvbGxvd2luZyBBUEkgdmVyc2lvbiBcInt7IGFwaVZlcnNpb24gfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGlzUGx1Z2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KFxuICAgICAgICAgICdUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gdGhhdCB5b3UgYXJlIHRyeWluZyB0byBpbnN0YWxsIGRvZXMgbm90IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIGZvbGxvd2luZyBBUEkgdmVyc2lvbiBcInt7IGFwaVZlcnNpb24gfX1cIiBvciBTREsgdmVyc2lvbiBcInt7IHNka1ZlcnNpb24gfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gZ2V0dGV4dChcbiAgICAgICAgICAnVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgYmx1ZXByaW50IHRoYXQgeW91IGFyZSB0cnlpbmcgdG8gaW5zdGFsbCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBmb2xsb3dpbmcgQVBJIHZlcnNpb24gXCJ7eyBhcGlWZXJzaW9uIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgdHJhbnNsYXRlZEJvZHkgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlLCB7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VUeXBlLm5hbWUsXG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIHNka1ZlcnNpb25cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKGdldHRleHQoJ0JsdWVwcmludCBpbnN0YWxsYXRpb24nKSwgdHJhbnNsYXRlZEJvZHksICd3YXJuaW5nJywge1xuICAgICAgICBvazogZ2V0dGV4dCgnQ29udGludWUnKSxcbiAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBtb2RhbCBjYW5jZWxlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQbGF0Zm9ybVZlcnNpb24oKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChzdGF0ZSA9PiBzdGF0ZT8udmVyc2lvbnM/LmJhY2tlbmQpLFxuICAgICAgICBmaWx0ZXIoYmFja2VuZFZlcnNpb24gPT4gISFiYWNrZW5kVmVyc2lvbilcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXBwS2V5KGFwcE1vZGVsOiBJQXBwbGljYXRpb24sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGtleSA9IGFwcE1vZGVsPy5rZXk7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIGtleSA9IGAke2tlYmFiQ2FzZShuYW1lKX0ta2V5YDtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dFBhdGgoYXBwTW9kZWw6IElBcHBsaWNhdGlvbiwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYXBwTW9kZWw/LmNvbnRleHRQYXRoIHx8IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRm9yYmlkZGVuQ2hhcmFjdGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOS1fXS9nLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGlzQ3VycmVudEFwcChhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRBcHAgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5zdGF0ZS5hcHA7XG4gICAgcmV0dXJuIGN1cnJlbnRBcHAuY29udGV4dFBhdGggPT09IGFwcC5jb250ZXh0UGF0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VtdWxvY2l0eUpzb24kKGFyY2hpdmU6IEZpbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnppcFNlcnZpY2UuZ2V0SnNvbkRhdGEoYXJjaGl2ZSwge1xuICAgICAgZmlsZW5hbWU6IENVTVVMT0NJVFlfSlNPTlxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcHBUeXBlKGFyY2hpdmU6IEZpbGUpOiBQcm9taXNlPEFwcGxpY2F0aW9uVHlwZT4ge1xuICAgIHJldHVybiB0aGlzLmdldEN1bXVsb2NpdHlKc29uJChhcmNoaXZlKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbihcbiAgICAgICAgZGF0YSA9PlxuICAgICAgICAgIGdldChkYXRhLCAndHlwZScpIHx8XG4gICAgICAgICAgKGdldChkYXRhLCAnYXBpVmVyc2lvbicpID8gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSA6IEFwcGxpY2F0aW9uVHlwZS5IT1NURUQpXG4gICAgICApXG4gICAgICAuY2F0Y2goKCkgPT4gQXBwbGljYXRpb25UeXBlLkhPU1RFRCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJhc2VOYW1lRnJvbUFyY2hpdmVPckFwcE1vZGVsKFxuICAgIGFyY2hpdmU6IGFueSxcbiAgICBhcHBUeXBlOiBBcHBsaWNhdGlvblR5cGUsXG4gICAgYXBwTW9kZWw/OiBJQXBwbGljYXRpb25cbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgYmFzZU5hbWUgPSBhcHBNb2RlbD8ubmFtZSB8fCBhcmNoaXZlLm5hbWUucmVwbGFjZSgvXFwuemlwJC9pLCAnJyk7XG4gICAgaWYgKGFwcFR5cGUgPT09ICdNSUNST1NFUlZJQ0UnKSB7XG4gICAgICBiYXNlTmFtZSA9IHRoaXMucmVtb3ZlVmVyc2lvbkZyb21OYW1lKGJhc2VOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBcHBQcm9wZXJ0aWVzKGFwcDogSUFwcGxpY2F0aW9uKTogSUFwcGxpY2F0aW9uIHtcbiAgICBjb25zdCB0ZW1wQXBwID0gY2xvbmVEZWVwKGFwcCk7XG4gICAgY29uc3QgcHJvcGVydGllc1RvUmVtb3ZlID0gWydpZCcsICdvd25lcicsICdhY3RpdmVWZXJzaW9uSWQnLCAnc2VsZicsICd0eXBlJ107XG5cbiAgICBwcm9wZXJ0aWVzVG9SZW1vdmUuZm9yRWFjaChwcm9wID0+IGRlbGV0ZSB0ZW1wQXBwW3Byb3BdKTtcbiAgICByZXR1cm4gdGVtcEFwcDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VXBsb2FkT3ZlcnJpZGVzKFxuICAgIGFyY2hpdmU6IEZpbGUsXG4gICAgYXBwOiBJQXBwbGljYXRpb25cbiAgKTogUHJvbWlzZTxJVXBsb2FkUGFyYW1zT3ZlcnJpZGU+IHtcbiAgICBjb25zdCB7IHZlcnNpb24gfSA9IGF3YWl0IHRoaXMuZ2V0Q3VtdWxvY2l0eUpzb24kKGFyY2hpdmUpLnRvUHJvbWlzZSgpO1xuICAgIGNvbnN0IGlzSW5pdGlhbFBhY2thZ2UgPSBhcHAuYXBwbGljYXRpb25WZXJzaW9ucz8ubGVuZ3RoID09PSAwO1xuICAgIHJldHVybiB7XG4gICAgICBsaXN0VXJsOiAndmVyc2lvbnMnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi92bmQuY29tLm5zbi5jdW11bG9jaXR5LmFwcGxpY2F0aW9uVmVyc2lvbitqc29uO2NoYXJzZXQ9VVRGLTg7dmVyPTAuOSdcbiAgICAgIH0sXG4gICAgICBib2R5RmlsZVByb3BlcnR5OiAnYXBwbGljYXRpb25CaW5hcnknLFxuICAgICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgICAgYXBwbGljYXRpb25WZXJzaW9uOiB7IHZlcnNpb24sIC4uLihpc0luaXRpYWxQYWNrYWdlICYmIHsgdGFnczogWydsYXRlc3QnXSB9KSB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVmVyc2lvbkZyb21OYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHZlcnNpb25SZWdFeHAgPSAvLVxcZCtcXC5cXGQrXFwuXFxkKyhcXC5cXGQrKT8oLVxcZCspPyguKikkLztcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKHZlcnNpb25SZWdFeHAsICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNOYW1lTGVuZ3RoRXhjZWVkZWQobmFtZSwgYXBwVHlwZSkge1xuICAgIHJldHVybiBuYW1lLmxlbmd0aCA+IE1JQ1JPU0VSVklDRV9OQU1FX01BWF9MRU5HVEggJiYgYXBwVHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRTtcbiAgfVxufVxuIl19
@@ -62,6 +62,9 @@ export class UploadArchiveComponent {
62
62
  }
63
63
  catch (ex) {
64
64
  this.uploadInProgress = false;
65
+ if (ex === 'cancelled') {
66
+ return;
67
+ }
65
68
  this.ecosystemService.alertError(ex);
66
69
  }
67
70
  }
@@ -82,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
82
85
  }], refresh: [{
83
86
  type: Output
84
87
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWFyY2hpdmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3NoYXJlZC91cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL3VwbG9hZC1hcmNoaXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUNVLGdCQUFrQyxFQUNsQyxZQUEwQjtRQUQxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBZjNCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV4QixzQkFBaUIsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDakYsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFELGFBQVEsR0FBeUIsRUFBRSxDQUFDO1FBS3BDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUtuQixDQUFDO0lBRUosSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUs7UUFDNUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNq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VztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uQmluYXJ5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UgfSBmcm9tICcuL2Vjb3N5c3RlbS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXVwbG9hZC1hcmNoaXZlJyxcbiAgdGVtcGxhdGVVcmw6ICd1cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkQXJjaGl2ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb247XG4gIEBJbnB1dCgpIHVwbG9hZE5ld1ZlcnNpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcHJlVXBsb2FkQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PjtcbiAgQE91dHB1dCgpIGFwcGxpY2F0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUFwcGxpY2F0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUFwcGxpY2F0aW9uPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXJjaGl2ZXM6IElBcHBsaWNhdGlvbkJpbmFyeVtdID0gW107XG4gIHRvQWN0aXZhdGVWZXJzaW9uSWQ6IHN0cmluZztcbiAgbGFzdDogSUFwcGxpY2F0aW9uQmluYXJ5O1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGZpbGVMaXN0OiBGaWxlTGlzdDtcbiAgdXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBjYW5SZWFjdGl2YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCB1cGxvYWRQcm9ncmVzcygpOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZWNvc3lzdGVtU2VydmljZS5wcm9ncmVzcztcbiAgfVxuXG4gIGFzeW5jIG9uRmlsZURyb3BwZWRFdmVudChldmVudCkge1xuICAgIGlmICh0aGlzLnByZVVwbG9hZENhbGxiYWNrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByZVVwbG9hZENhbGxiYWNrKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcsIGkuZS4gd2hlbiBjb25maXJtIG1vZGFsIGNhbmNlbHMgYW5kIHRocm93cyB1bmRlZmluZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsZSA9IGV2ZW50WzBdLmZpbGU7XG4gICAgICB0aGlzLm9uRmlsZShmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52YWxpZGF0ZUFyY2hpdmVUb0FwcENvbXBhdGliaWxpdHkoZmlsZSwgdGhpcy5hcHBsaWNhdGlvbik7XG4gICAgICBjb25zdCBpc0N1c3RvbU1pY3Jvc2VydmljZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc0N1c3RvbU1pY3Jvc2VydmljZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICAgIGNvbnN0IGlzUGFja2FnZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc1BhY2thZ2UodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgICB0aGlzLmFyY2hpdmVzID0gaXNDdXN0b21NaWNyb3NlcnZpY2VcbiAgICAgICAgPyBbXVxuICAgICAgICA6IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5saXN0QXJjaGl2ZXModGhpcy5hcHBsaWNhdGlvbi5pZCk7XG4gICAgICB0aGlzLmFyY2hpdmVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZShiLmNyZWF0ZWQpIGFzIGFueSkgLSAobmV3IERhdGUoYS5jcmVhdGVkKSBhcyBhbnkpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcy5uZXh0KDApO1xuICAgICAgaWYgKHRoaXMuYXJjaGl2ZXMubGVuZ3RoID09PSA2ICYmICFpc0N1c3RvbU1pY3Jvc2VydmljZSAmJiAhaXNQYWNrYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5yZW1vdmVPbGRlc3RBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24sIHRoaXMuYXJjaGl2ZXMpO1xuICAgICAgfVxuICAgICAgY29uc3QgYXBwID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnVwbG9hZEFyY2hpdmVUb0FwcChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbixcbiAgICAgICAgdGhpcy51cGxvYWROZXdWZXJzaW9uXG4gICAgICApO1xuICAgICAgdGhpcy5hcHBsaWNhdGlvbkNoYW5nZS5lbWl0KGFwcCk7XG4gICAgICB0aGlzLnVwbG9hZFByb2dyZXNzLm5leHQoMTAwKTtcbiAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICAgIGlmICh0aGlzLnVwbG9hZE5ld1ZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdBcmNoaXZlIHVwbG9hZGVkIGFuZCBhY3RpdmF0ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuZWNvc3lzdGVtU2VydmljZS5hbGVydEVycm9yKGV4KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktZHJvcC1hcmVhXG4gIChkcm9wcGVkKT1cIm9uRmlsZURyb3BwZWRFdmVudCgkZXZlbnQpXCJcbiAgW2FjY2VwdF09XCInLnppcCdcIlxuICBbbG9hZGluZ109XCJ1cGxvYWRJblByb2dyZXNzXCJcbiAgW21heEFsbG93ZWRGaWxlc109XCIxXCJcbiAgW21lc3NhZ2VdPVwiJ1VwbG9hZCBhICouemlwIGZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgW3Byb2dyZXNzXT1cInVwbG9hZFByb2dyZXNzIHwgYXN5bmNcIlxuICBbZm9yY2VIaWRlTGlzdF09XCJ0cnVlXCJcbiAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuPlxuPC9jOHktZHJvcC1hcmVhPlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWFyY2hpdmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3NoYXJlZC91cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL3VwbG9hZC1hcmNoaXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUNVLGdCQUFrQyxFQUNsQyxZQUEwQjtRQUQxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBZjNCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV4QixzQkFBaUIsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDakYsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFELGFBQVEsR0FBeUIsRUFBRSxDQUFDO1FBS3BDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUtuQixDQUFDO0lBRUosSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUs7UUFDNUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNq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Qyx5VEFXQTs7MkZERGEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG9CQUFvQjtnSEFJckIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uQmluYXJ5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UgfSBmcm9tICcuL2Vjb3N5c3RlbS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXVwbG9hZC1hcmNoaXZlJyxcbiAgdGVtcGxhdGVVcmw6ICd1cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkQXJjaGl2ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb247XG4gIEBJbnB1dCgpIHVwbG9hZE5ld1ZlcnNpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgcHJlVXBsb2FkQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PjtcbiAgQE91dHB1dCgpIGFwcGxpY2F0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUFwcGxpY2F0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUFwcGxpY2F0aW9uPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXJjaGl2ZXM6IElBcHBsaWNhdGlvbkJpbmFyeVtdID0gW107XG4gIHRvQWN0aXZhdGVWZXJzaW9uSWQ6IHN0cmluZztcbiAgbGFzdDogSUFwcGxpY2F0aW9uQmluYXJ5O1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGZpbGVMaXN0OiBGaWxlTGlzdDtcbiAgdXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBjYW5SZWFjdGl2YXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCB1cGxvYWRQcm9ncmVzcygpOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZWNvc3lzdGVtU2VydmljZS5wcm9ncmVzcztcbiAgfVxuXG4gIGFzeW5jIG9uRmlsZURyb3BwZWRFdmVudChldmVudCkge1xuICAgIGlmICh0aGlzLnByZVVwbG9hZENhbGxiYWNrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnByZVVwbG9hZENhbGxiYWNrKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcsIGkuZS4gd2hlbiBjb25maXJtIG1vZGFsIGNhbmNlbHMgYW5kIHRocm93cyB1bmRlZmluZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsZSA9IGV2ZW50WzBdLmZpbGU7XG4gICAgICB0aGlzLm9uRmlsZShmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52YWxpZGF0ZUFyY2hpdmVUb0FwcENvbXBhdGliaWxpdHkoZmlsZSwgdGhpcy5hcHBsaWNhdGlvbik7XG4gICAgICBjb25zdCBpc0N1c3RvbU1pY3Jvc2VydmljZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc0N1c3RvbU1pY3Jvc2VydmljZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICAgIGNvbnN0IGlzUGFja2FnZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc1BhY2thZ2UodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgICB0aGlzLmFyY2hpdmVzID0gaXNDdXN0b21NaWNyb3NlcnZpY2VcbiAgICAgICAgPyBbXVxuICAgICAgICA6IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5saXN0QXJjaGl2ZXModGhpcy5hcHBsaWNhdGlvbi5pZCk7XG4gICAgICB0aGlzLmFyY2hpdmVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZShiLmNyZWF0ZWQpIGFzIGFueSkgLSAobmV3IERhdGUoYS5jcmVhdGVkKSBhcyBhbnkpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcy5uZXh0KDApO1xuICAgICAgaWYgKHRoaXMuYXJjaGl2ZXMubGVuZ3RoID09PSA2ICYmICFpc0N1c3RvbU1pY3Jvc2VydmljZSAmJiAhaXNQYWNrYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5yZW1vdmVPbGRlc3RBcmNoaXZlKHRoaXMuYXBwbGljYXRpb24sIHRoaXMuYXJjaGl2ZXMpO1xuICAgICAgfVxuICAgICAgY29uc3QgYXBwID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnVwbG9hZEFyY2hpdmVUb0FwcChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbixcbiAgICAgICAgdGhpcy51cGxvYWROZXdWZXJzaW9uXG4gICAgICApO1xuICAgICAgdGhpcy5hcHBsaWNhdGlvbkNoYW5nZS5lbWl0KGFwcCk7XG4gICAgICB0aGlzLnVwbG9hZFByb2dyZXNzLm5leHQoMTAwKTtcbiAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICAgIGlmICh0aGlzLnVwbG9hZE5ld1ZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdBcmNoaXZlIHVwbG9hZGVkIGFuZCBhY3RpdmF0ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIGlmIChleCA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmFsZXJ0RXJyb3IoZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1kcm9wLWFyZWFcbiAgKGRyb3BwZWQpPVwib25GaWxlRHJvcHBlZEV2ZW50KCRldmVudClcIlxuICBbYWNjZXB0XT1cIicuemlwJ1wiXG4gIFtsb2FkaW5nXT1cInVwbG9hZEluUHJvZ3Jlc3NcIlxuICBbbWF4QWxsb3dlZEZpbGVzXT1cIjFcIlxuICBbbWVzc2FnZV09XCInVXBsb2FkIGEgKi56aXAgZmlsZScgfCB0cmFuc2xhdGVcIlxuICBbcHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3MgfCBhc3luY1wiXG4gIFtmb3JjZUhpZGVMaXN0XT1cInRydWVcIlxuICBjbGFzcz1cImRyb3AtYXJlYS1zbVwiXG4+XG48L2M4eS1kcm9wLWFyZWE+XG4iXX0=
@@ -691,7 +691,12 @@ class EcosystemService {
691
691
  this.alertService.success(gettext('Archive deleted.'));
692
692
  }
693
693
  catch (ex) {
694
- this.alertError(ex);
694
+ if (ex) {
695
+ this.alertError(ex);
696
+ }
697
+ else {
698
+ return Promise.reject('cancelled');
699
+ }
695
700
  }
696
701
  }
697
702
  async deployApp(selectedPackage, formGroupValue, model) {
@@ -1741,6 +1746,9 @@ class UploadArchiveComponent {
1741
1746
  }
1742
1747
  catch (ex) {
1743
1748
  this.uploadInProgress = false;
1749
+ if (ex === 'cancelled') {
1750
+ return;
1751
+ }
1744
1752
  this.ecosystemService.alertError(ex);
1745
1753
  }
1746
1754
  }