@wavemaker/app-ng-runtime 11.6.1-rc.5533 → 11.6.1-rc.5542

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.
@@ -1759,6 +1759,14 @@
1759
1759
  }
1760
1760
  return this.handleBinaryDefault();
1761
1761
  }
1762
+ processUnary() {
1763
+ const ast = this.cAst;
1764
+ const stmts = this.cStmts;
1765
+ const e = this.build(ast.expr, stmts);
1766
+ const v = this.createVar();
1767
+ stmts.push(`${v}=${ast.operator}${e}`);
1768
+ return v;
1769
+ }
1762
1770
  processConditional() {
1763
1771
  const ast = this.cAst;
1764
1772
  const stmts = this.cStmts;
@@ -1851,6 +1859,9 @@
1851
1859
  else if (ast instanceof compiler.PrefixNot) {
1852
1860
  return this.processPrefixNot();
1853
1861
  }
1862
+ else if (ast instanceof compiler.Unary) {
1863
+ return this.processUnary();
1864
+ }
1854
1865
  else if (ast instanceof compiler.Binary) {
1855
1866
  return this.processBinary();
1856
1867
  }
@@ -1,4 +1,4 @@
1
- import { Lexer, Parser, BindingPipe, PropertyRead, ImplicitReceiver, LiteralPrimitive, Call, Conditional, Binary, PrefixNot, KeyedRead, LiteralMap, LiteralArray, Chain, PropertyWrite } from '@angular/compiler';
1
+ import { Binary, BindingPipe, Call, Chain, Conditional, ImplicitReceiver, KeyedRead, Lexer, LiteralArray, LiteralMap, LiteralPrimitive, Parser, PrefixNot, PropertyRead, PropertyWrite, Unary } from '@angular/compiler';
2
2
  const isDef = v => v !== void 0;
3
3
  const ifDef = (v, d) => v === void 0 ? d : v;
4
4
  const plus = (a, b) => void 0 === a ? b : void 0 === b ? a : a + b;
@@ -207,6 +207,14 @@ class ASTCompiler {
207
207
  }
208
208
  return this.handleBinaryDefault();
209
209
  }
210
+ processUnary() {
211
+ const ast = this.cAst;
212
+ const stmts = this.cStmts;
213
+ const e = this.build(ast.expr, stmts);
214
+ const v = this.createVar();
215
+ stmts.push(`${v}=${ast.operator}${e}`);
216
+ return v;
217
+ }
210
218
  processConditional() {
211
219
  const ast = this.cAst;
212
220
  const stmts = this.cStmts;
@@ -298,6 +306,9 @@ class ASTCompiler {
298
306
  else if (ast instanceof PrefixNot) {
299
307
  return this.processPrefixNot();
300
308
  }
309
+ else if (ast instanceof Unary) {
310
+ return this.processUnary();
311
+ }
301
312
  else if (ast instanceof Binary) {
302
313
  return this.processBinary();
303
314
  }
@@ -579,4 +590,4 @@ export const getFnForBindExpr = (expr) => {
579
590
  export const getFnForEventExpr = (expr) => {
580
591
  return fnExecutor(expr, ExpressionType.Action);
581
592
  };
582
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9leHByZXNzaW9uLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBRVgsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxhQUFhLEVBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUl0QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDaEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksU0FBUyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFHLEVBQUU7UUFDVCxLQUFLLEVBQUU7WUFDSCxTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FB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QUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDL0I7UUFFRCxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDeEM7U0FBTTtRQUNILElBQUksUUFBUSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDckMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3RDO0tBQ0o7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDckMsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ3RDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBMZXhlcixcbiAgICBQYXJzZXIsXG4gICAgQmluZGluZ1BpcGUsXG4gICAgUmVhZFByb3BFeHByLFxuICAgIFByb3BlcnR5UmVhZCxcbiAgICBJbXBsaWNpdFJlY2VpdmVyLFxuICAgIExpdGVyYWxQcmltaXRpdmUsXG4gICAgQ2FsbCxcbiAgICBDb25kaXRpb25hbCxcbiAgICBCaW5hcnksXG4gICAgUHJlZml4Tm90LFxuICAgIEtleWVkUmVhZCxcbiAgICBMaXRlcmFsTWFwLFxuICAgIExpdGVyYWxBcnJheSxcbiAgICBDaGFpbixcbiAgICBQcm9wZXJ0eVdyaXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBpc0RlZiA9IHYgPT4gdiAhPT0gdm9pZCAwO1xuY29uc3QgaWZEZWYgPSAodiwgZCkgPT4gdiA9PT0gdm9pZCAwID8gZCA6IHY7XG5jb25zdCBwbHVzID0gKGEsIGIpID0+IHZvaWQgMCA9PT0gYSA/IGIgOiB2b2lkIDAgPT09IGIgPyBhIDogYSArIGI7XG5jb25zdCBtaW51cyA9IChhLCBiKSA9PiBpZkRlZihhLCAwKSAtIGlmRGVmKGIsIDApO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgdHlwZSBQYXJzZUV4cHJSZXN1bHQgPSAoZGF0YT86IGFueSwgbG9jYWxzPzogYW55KSA9PiBhbnk7XG5cbmNvbnN0IGV4cHJGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgZXZlbnRGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgcHVyZVBpcGVzID0gbmV3IE1hcCgpO1xuXG5jb25zdCBwcmltaXRpdmVFcXVhbHMgPSAoYSwgYikgPT4ge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgeyAvLyBOYU4gY2FzZVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGEgPT09IGI7XG59O1xuXG5jb25zdCBkZXRlY3RDaGFuZ2VzID0gKG92LCBudikgPT4ge1xuICAgIGNvbnN0IGxlbiA9IG52Lmxlbmd0aDtcbiAgICBsZXQgaGFzQ2hhbmdlID0gbGVuID4gMTA7XG4gICAgc3dpdGNoIChsZW4pIHtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbOV0sIG52WzldKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls4XSwgbnZbOF0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzddLCBudls3XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbNl0sIG52WzZdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls1XSwgbnZbNV0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzRdLCBudls0XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbM10sIG52WzNdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdlsyXSwgbnZbMl0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzFdLCBudlsxXSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbMF0sIG52WzBdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZTtcbn07XG5cbmNvbnN0IGdldFB1cmVQaXBlVmFsID0gKHBpcGUsIGNhY2hlLCBpZGVudGlmaWVyLCAuLi5hcmdzKSA9PiB7XG4gICAgbGV0IGxhc3RSZXN1bHQgPSBjYWNoZS5nZXQoaWRlbnRpZmllcik7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAobGFzdFJlc3VsdCkge1xuICAgICAgICBjb25zdCBpc01vZGlmaWVkID0gZGV0ZWN0Q2hhbmdlcyhsYXN0UmVzdWx0LmFyZ3MsIGFyZ3MpO1xuICAgICAgICBpZiAoIWlzTW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0UmVzdWx0LnJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgPSBwaXBlLnRyYW5zZm9ybSguLi5hcmdzKTtcbiAgICBsYXN0UmVzdWx0ID0ge2FyZ3MsIHJlc3VsdH07XG4gICAgY2FjaGUuc2V0KGlkZW50aWZpZXIsIGxhc3RSZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBTVFJfRVNDQVBFX1JFR0VYID0gL1teIGEtekEtWjAtOV0vZztcblxuY29uc3Qgc3RyaW5nRXNjYXBlRm4gPSBzdHIgPT4ge1xuICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIHN0ci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpO1xufTtcblxuY2xhc3MgQVNUQ29tcGlsZXIge1xuICAgIGFzdDsgLy8gYXN0IHRvIGJlIGNvbXBpbGVkXG4gICAgZGVjbGFyYXRpb25zOyAvLyB2YXJpYWJsZSBuYW1lc1xuICAgIHN0bXRzOyAvLyBmdW5jdGlvbiBib2R5IHN0YXRlbWVudHNcbiAgICBwaXBlczsgLy8gdXNlZCBwaXBlc1xuICAgIHZJZHg7IC8vIHZhcmlhYmxlIG5hbWUgaW5kZXhcbiAgICBjQXN0OyAvLyBjdXJyZW50IEFTVCBub2RlIGluIHRoZSBwcm9jZXNzXG4gICAgY1N0bXRzO1xuICAgIHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgZXhwclR5cGU6IEV4cHJlc3Npb25UeXBlO1xuXG4gICAgY29uc3RydWN0b3IoYXN0LCBleHByVHlwZSwgcGlwZU5hbWVWc0lzUHVyZU1hcD8pIHtcbiAgICAgICAgdGhpcy5hc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zID0gW107XG4gICAgICAgIHRoaXMuc3RtdHMgPSBbXTtcbiAgICAgICAgdGhpcy5waXBlcyA9IFtdO1xuICAgICAgICB0aGlzLnZJZHggPSAwO1xuICAgICAgICB0aGlzLmV4cHJUeXBlID0gZXhwclR5cGU7XG4gICAgICAgIHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgfVxuXG4gICAgY3JlYXRlVmFyKCkge1xuICAgICAgICBjb25zdCB2ID0gYHYke3RoaXMudklkeCsrfWA7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zLnB1c2godik7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCkge1xuICAgICAgICByZXR1cm4gJ2N0eCc7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiAoYXN0LnZhbHVlKSA9PT0gJ3N0cmluZycgPyBgXCIke2FzdC52YWx1ZS5yZXBsYWNlKC9cIi9nLCAnXFxcIicpLnJlcGxhY2UoU1RSX0VTQ0FQRV9SRUdFWCwgc3RyaW5nRXNjYXBlRm4pfVwiYCA6IGFzdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzTGl0ZXJhbEFycmF5KCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgICAgIHMucHVzaCh0aGlzLmJ1aWxkKGl0ZW0sIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RtdHMucHVzaChgJHt2fT1bJHtzLmpvaW4oJywnKX1dYCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NMaXRlcmFsTWFwKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfdmFsdWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgX3ZhbHVlIG9mIGFzdC52YWx1ZXMpIHtcbiAgICAgICAgICAgIF92YWx1ZXMucHVzaCh0aGlzLmJ1aWxkKF92YWx1ZSwgc3RtdHMpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PXske2FzdC5rZXlzLm1hcCgoaywgaSkgPT4gYCcke2sua2V5fSc6JHtfdmFsdWVzW2ldfWApfX1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1Byb3BlcnR5UmVhZCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmVjZWl2ZXIsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtyfSYmJHtyfS4ke2FzdC5uYW1lfWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzS2V5ZWRSZWFkKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmJ1aWxkKGFzdC5rZXksIHN0bXRzKTtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMuYnVpbGQoYXN0LnJlY2VpdmVyLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7b30mJiR7b31bJHtrfV1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1ByZWZpeE5vdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QuZXhwcmVzc2lvbiwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3J9PSEke3J9YCk7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGhhbmRsZUJpbmFyeVBsdXNfTWludXMoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuYnVpbGQoYXN0LnJpZ2h0LCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBtID0gYXN0Lm9wZXJhdGlvbiA9PT0gJysnID8gJ19wbHVzJyA6ICdfbWludXMnO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7bX0oJHtsfSwke3J9KWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBoYW5kbGVCaW5hcnlBTkRfT1IoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX3MxID0gW107XG4gICAgICAgIGNvbnN0IF9zbCA9IFtdO1xuICAgICAgICBjb25zdCBfc3IgPSBbXTtcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIF9zbCk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5yaWdodCwgX3NyKTtcblxuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcblxuICAgICAgICBpZiAoYXN0Lm9wZXJhdGlvbiA9PT0gJyYmJykge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09ZmFsc2VgLFxuICAgICAgICAgICAgICAgIGA7aWYoJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09JHtsfWAsXG4gICAgICAgICAgICAgICAgYDtpZighJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHN0bXRzLnB1c2goX3MxLmpvaW4oJycpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgaGFuZGxlQmluYXJ5RGVmYXVsdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5idWlsZChhc3QubGVmdCwgc3RtdHMpO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmlnaHQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtsfSR7YXN0Lm9wZXJhdGlvbn0ke3J9YCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NCaW5hcnkoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgb3AgPSBhc3Qub3BlcmF0aW9uO1xuICAgICAgICBpZiAob3AgPT09ICcrJyB8fCBvcCA9PT0gJy0nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlQbHVzX01pbnVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wID09PSAnJiYnIHx8IG9wID09PSAnfHwnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlBTkRfT1IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJpbmFyeURlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQ29uZGl0aW9uYWwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5idWlsZChhc3QuY29uZGl0aW9uLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfczEgPSBbXTtcbiAgICAgICAgY29uc3QgX3MyID0gW107XG4gICAgICAgIGNvbnN0IF9zMyA9IFtdO1xuICAgICAgICBjb25zdCB0cnVlRXhwID0gdGhpcy5idWlsZChhc3QudHJ1ZUV4cCwgX3MyKTtcbiAgICAgICAgY29uc3QgZmFsc2VFeHAgPSB0aGlzLmJ1aWxkKGFzdC5mYWxzZUV4cCwgX3MzKTtcblxuICAgICAgICBfczEucHVzaChcbiAgICAgICAgICAgIGBpZigke2NvbmRpdGlvbn0pe2AsXG4gICAgICAgICAgICBfczIuam9pbignOycpLFxuICAgICAgICAgICAgYDske3Z9PSR7dHJ1ZUV4cH07YCxcbiAgICAgICAgICAgIGB9ZWxzZXtgLFxuICAgICAgICAgICAgX3MzLmpvaW4oJzsnKSxcbiAgICAgICAgICAgIGA7JHt2fT0ke2ZhbHNlRXhwfTtgLFxuICAgICAgICAgICAgYH1gXG4gICAgICAgICk7XG5cbiAgICAgICAgc3RtdHMucHVzaChfczEuam9pbignICcpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc01ldGhvZENhbGwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX2FyZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2YgYXN0LmFyZ3MpIHtcbiAgICAgICAgICAgIF9hcmdzLnB1c2godGhpcy5idWlsZChhcmcsIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm4gPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgY29uc3QgaXNJbXBsaWNpdFJlY2VpdmVyID0gYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlciB8fCAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgUHJvcGVydHlSZWFkICYmIGFzdC5yZWNlaXZlcj8ucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHN0bXRzW3N0bXRzLmxlbmd0aCAtIDFdLnNwbGl0KCcmJicpWzBdLnNwbGl0KCc9JylbMV07XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09ICR7Zm59JiYke2ZufSR7aXNJbXBsaWNpdFJlY2VpdmVyID8gJy5iaW5kKF9jdHgpJyA6IGAuYmluZCgke2NvbnRleHR9KWB9KCR7X2FyZ3Muam9pbignLCcpfSlgKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0NoYWluKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIHJldHVybiBhc3QuZXhwcmVzc2lvbnMubWFwKGUgPT4gdGhpcy5idWlsZChlKSkuam9pbignOycpO1xuICAgIH1cblxuICAgIHByb2Nlc3NQcm9wZXJ0eVdyaXRlKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGxldCByZWNlaXZlciwgbGhzO1xuICAgICAgICBpZiAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlcikge1xuICAgICAgICAgICAgbGhzID0gYF9jdHguJHthc3QubmFtZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICAgICAgbGhzID0gYCR7cmVjZWl2ZXJ9JHtyZWNlaXZlci5sZW5ndGggPyAnLicgOiAnJ30ke2FzdC5uYW1lfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByaHMgPSB0aGlzLmJ1aWxkKGFzdC52YWx1ZSwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke2xoc309JHtyaHN9YCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1BpcGUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF9hcmdzID0gW107XG4gICAgICAgIGNvbnN0IF9zMSA9IFtdO1xuICAgICAgICBjb25zdCBfczIgPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gdGhpcy5idWlsZChhc3QuZXhwLCBzdG10cyk7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFzdC5hcmdzKSB7XG4gICAgICAgICAgICBfYXJncy5wdXNoKHRoaXMuYnVpbGQoYXJnLCBfczIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHAgPSBgX3Ake3RoaXMucGlwZXMubGVuZ3RofWA7XG4gICAgICAgIHRoaXMucGlwZXMucHVzaChbYXN0Lm5hbWUsIHBdKTtcblxuICAgICAgICBfYXJncy51bnNoaWZ0KGV4cCk7XG5cbiAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICBfczIubGVuZ3RoID8gX3MyLmpvaW4oJzsnKSArICc7JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5waXBlTmFtZVZzSXNQdXJlTWFwLmdldChhc3QubmFtZSkgPyBgJHt0fT1nZXRQUFZhbCgke3B9LF9wcGMsXCIke3B9XCIsJHtfYXJnc30pYCA6IGAke3R9PSR7cH0udHJhbnNmb3JtKCR7X2FyZ3N9KWBcbiAgICAgICAgKTtcblxuICAgICAgICBzdG10cy5wdXNoKF9zMS5qb2luKCcnKSk7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIGJ1aWxkKGFzdCwgY1N0bXRzPykge1xuICAgICAgICB0aGlzLmNBc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuY1N0bXRzID0gY1N0bXRzIHx8IHRoaXMuc3RtdHM7XG5cbiAgICAgICAgaWYgKGFzdCBpbnN0YW5jZW9mIEltcGxpY2l0UmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgTGl0ZXJhbFByaW1pdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaXRlcmFsQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGl0ZXJhbE1hcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5UmVhZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Byb3BlcnR5UmVhZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5V3JpdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NQcm9wZXJ0eVdyaXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgS2V5ZWRSZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzS2V5ZWRSZWFkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgUHJlZml4Tm90KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUHJlZml4Tm90KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQmluYXJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQmluYXJ5KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb25kaXRpb25hbCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIENhbGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NNZXRob2RDYWxsKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgQ2hhaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDaGFpbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIEJpbmRpbmdQaXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUGlwZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0ZW5kQ3R4V2l0aExvY2FscygpIHtcbiAgICAgICAgY29uc3QgdjEgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICB0aGlzLnN0bXRzLnB1c2goXG4gICAgICAgICAgICBgJHt2MX09T2JqZWN0LmFzc2lnbih7fSwgbG9jYWxzKWAsXG4gICAgICAgICAgICBgT2JqZWN0LnNldFByb3RvdHlwZU9mKCR7djF9LCBfY3R4KWAsXG4gICAgICAgICAgICBgY3R4PSR7djF9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZuQm9keSgpIHtcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbnMucHVzaCgnY3R4Jyk7XG4gICAgICAgIHJldHVybiAnXCJ1c2Ugc3RyaWN0XCI7XFxudmFyICcgKyB0aGlzLmRlY2xhcmF0aW9ucy5qb2luKCcsJykgKyAnO1xcbicgKyB0aGlzLnN0bXRzLmpvaW4oJzsnKTtcbiAgICB9XG5cbiAgICBmbkFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbJ19wbHVzJywgJ19taW51cycsICdfaXNEZWYnXTtcblxuICAgICAgICBpZiAodGhpcy5leHByVHlwZSA9PT0gRXhwcmVzc2lvblR5cGUuQmluZGluZykge1xuICAgICAgICAgICAgYXJncy5wdXNoKCdnZXRQUFZhbCcsICdfcHBjJyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFssIHBpcGVWYXJdIG9mIHRoaXMucGlwZXMpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGlwZVZhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzLnB1c2goJ19jdHgnLCAnbG9jYWxzJyk7XG5cbiAgICAgICAgcmV0dXJuIGFyZ3Muam9pbignLCcpO1xuICAgIH1cblxuICAgIGFkZFJldHVyblN0bXQocmVzdWx0KSB7XG4gICAgICAgIC8vIGlmICh0aGlzLmV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnN0bXRzLnB1c2goYHJldHVybiAke3Jlc3VsdH07YCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjbGVhbnVwKCkge1xuICAgICAgICB0aGlzLmFzdCA9IHRoaXMuY0FzdCA9IHRoaXMuc3RtdHMgPSB0aGlzLmNTdG10cyA9IHRoaXMuZGVjbGFyYXRpb25zID0gdGhpcy5waXBlcyA9IHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb21waWxlKGRlZk9ubHk/KSB7XG4gICAgICAgIHRoaXMuZXh0ZW5kQ3R4V2l0aExvY2FscygpO1xuICAgICAgICB0aGlzLmFkZFJldHVyblN0bXQodGhpcy5idWlsZCh0aGlzLmFzdCkpO1xuICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHtmbkJvZHk6IHRoaXMuZm5Cb2R5KCksIGZuQXJnczogdGhpcy5mbkFyZ3MoKSwgcGlwZXM6IHRoaXMucGlwZXN9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKHRoaXMuZm5BcmdzKCksIHRoaXMuZm5Cb2R5KCkpO1xuICAgICAgICBsZXQgYm91bmRGbjtcbiAgICAgICAgaWYgKHRoaXMuZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgcGx1cywgbWludXMsIGlzRGVmLCBnZXRQdXJlUGlwZVZhbCk7XG4gICAgICAgICAgICBib3VuZEZuLnVzZWRQaXBlcyA9IHRoaXMucGlwZXMuc2xpY2UoMCk7IC8vIGNsb25lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICAgICAgcmV0dXJuIGJvdW5kRm47XG4gICAgfVxufVxuXG5jb25zdCBudWxsUGlwZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IG5vb3BcbiAgICB9O1xufTtcblxubGV0IF9jc3BFbmFibGVkO1xuY29uc3QgaXNDU1BFbmFibGVkID0gKCkgPT4ge1xuICAgIGlmKHR5cGVvZiBfY3NwRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9jc3BFbmFibGVkO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBuZXcgRnVuY3Rpb24oKTtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgX2NzcEVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gX2NzcEVuYWJsZWQ7XG59O1xuXG5sZXQgcGlwZVByb3ZpZGVyO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGlwZVByb3ZpZGVyKF9waXBlUHJvdmlkZXIpIHtcbiAgICBwaXBlUHJvdmlkZXIgPSBfcGlwZVByb3ZpZGVyO1xufVxuXG5lbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBCaW5kaW5nLFxuICAgIEFjdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXhwcihleHByOiBzdHJpbmcsIGRlZk9ubHk/OiBib29sZWFuKTogUGFyc2VFeHByUmVzdWx0IHtcblxuICAgIGlmICghcGlwZVByb3ZpZGVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXQgcGlwZSBwcm92aWRlcicpO1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIChleHByKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgZXhwciA9IGV4cHIudHJpbSgpO1xuXG4gICAgaWYgKGV4cHIuZW5kc1dpdGgoJzsnKSkge1xuICAgICAgICBleHByID0gZXhwci5zbGljZSgwLCAtMSk7IC8vIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgfVxuXG4gICAgaWYgKCFleHByLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSBleHByRm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGxldCBib3VuZEZuO1xuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBib3VuZEZuID0gZ2V0Rm5Gb3JCaW5kRXhwcihleHByKTtcbiAgICB9XG5cbiAgICAvLyBmYWxsYmFjayB0byBnZW5lcmF0ZSBmdW5jdGlvbiBpbiBydW50aW1lLiBUaGlzIHdpbGwgYnJlYWsgaWYgQ1NQIGlzIGVuYWJsZWRcbiAgICBpZiAoIWJvdW5kRm4pIHtcbiAgICAgICAgLy8gSWYgQ1NQIGVuYWJsZWQsIGZ1bmN0aW9uIGRlZiBub3QgZm91bmQgZnJvbSB0aGUgZ2VuZXJhdGVkIGZuIGV4cHJlc3Npb25zIGZvciB0aGUgcGFnZS5cbiAgICAgICAgLy8gSGFuZGxlIGJpbmQgZXhwcmVzc2lvbnMgdXNlZCBpbnRlcm5hbGx5IGluc2lkZSBXTSBjb21wb25lbnRzLiBlLmcuIHdtQW5jaG9yIHVzZWQgaW5zaWRlIG5hdi5jb21wLmh0bWxcbiAgICAgICAgaWYgKGlzQ1NQRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZnVuY3Rpb24oY3R4LCBsb2NhbHMpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgaW50ZXJuYWwgYmluZGluZ3MgZm9yIHdtIHdpZGdldHMgdXNlZCBpbnNpZGUgYSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8uZ2V0KF9jdHgsIGV4cHIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGFzdCA9IHBhcnNlci5wYXJzZUJpbmRpbmcoZXhwciwgJycsMCk7XG5cbiAgICAgICAgICAgIGlmIChhc3QuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZuID0gbm9vcDtcbiAgICAgICAgICAgICAgICBib3VuZEZuID0gZm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVOYW1lVnNJc1B1cmVNYXAgPSBwaXBlUHJvdmlkZXIuZ2V0UGlwZU5hbWVWc0lzUHVyZU1hcCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzdENvbXBpbGVyID0gbmV3IEFTVENvbXBpbGVyKGFzdC5hc3QsIEV4cHJlc3Npb25UeXBlLkJpbmRpbmcsIHBpcGVOYW1lVnNJc1B1cmVNYXApO1xuICAgICAgICAgICAgICAgIGZuID0gYXN0Q29tcGlsZXIuY29tcGlsZShkZWZPbmx5KTtcbiAgICAgICAgICAgICAgICBpZiAoZGVmT25seSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLnVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiBmbi51c2VkUGlwZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgLi4ucGlwZUFyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHByRm5DYWNoZS5zZXQoZXhwciwgYm91bmRGbik7XG5cbiAgICByZXR1cm4gYm91bmRGbjtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IoZXhwciwgY3R4LCBsb2NhbHMpIHtcbiAgICBsZXQgX2N0eCA9IE9iamVjdC5hc3NpZ24oe30sIGxvY2Fscyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF9jdHgsIGN0eCk7XG5cbiAgICBsZXQgcGFydHMgPSBleHByLnNwbGl0KCcoJyk7XG4gICAgbGV0IGZuTmFtZSA9IHBhcnRzWzBdO1xuICAgIGxldCBjb21wdXRlZEZuID0gXy5nZXQoY3R4LCBmbk5hbWUpO1xuXG4gICAgaWYgKGNvbXB1dGVkRm4pIHtcbiAgICAgICAgbGV0IGFyZ3MgPSBwYXJ0c1sxXS5yZXBsYWNlKCcpJywgJycpO1xuICAgICAgICBhcmdzID0gYXJncy5zcGxpdCgnLCcpO1xuICAgICAgICBsZXQgY29tcHV0ZWRBcmdzID0gW107XG4gICAgICAgIGFyZ3MuZm9yRWFjaCgoYXJnKT0+IHtcbiAgICAgICAgICAgIGFyZyA9IGFyZyAmJiBhcmcudHJpbSgpO1xuICAgICAgICAgICAgY29tcHV0ZWRBcmdzLnB1c2goXy5nZXQoX2N0eCwgYXJnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tcHV0ZWRGbi5iaW5kKF9jdHgpKC4uLmNvbXB1dGVkQXJncyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gJHBhcnNlRXZlbnQoZXhwciwgZGVmT25seT8pOiBQYXJzZUV4cHJSZXN1bHQge1xuICAgIGlmICh0eXBlb2YgKGV4cHIpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBleHByID0gZXhwci50cmltKCk7XG5cbiAgICBpZiAoIWV4cHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGxldCBmbiA9IGV2ZW50Rm5DYWNoZS5nZXQoZXhwcik7XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH1cblxuICAgIGlmICghZGVmT25seSkge1xuICAgICAgICBmbiA9IGdldEZuRm9yRXZlbnRFeHByKGV4cHIpO1xuICAgIH1cblxuICAgIC8vIGZhbGxiYWNrIHRvIGdlbmVyYXRlIGZ1bmN0aW9uIGluIHJ1bnRpbWUuIFRoaXMgd2lsbCBicmVhayBpZiBDU1AgaXMgZW5hYmxlZFxuICAgIGlmKCFmbikge1xuICAgICAgICBpZiAoaXNDU1BFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGZuID0gc2ltcGxlRnVuY3Rpb25FdmFsdWF0b3IuYmluZCh1bmRlZmluZWQsIGV4cHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihuZXcgTGV4ZXIpO1xuICAgICAgICAgICAgY29uc3QgYXN0ID0gcGFyc2VyLnBhcnNlQWN0aW9uKGV4cHIsIGZhbHNlLCAnJywwKTtcblxuICAgICAgICAgICAgaWYgKGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhc3RDb21waWxlciA9IG5ldyBBU1RDb21waWxlcihhc3QuYXN0LCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xuICAgICAgICAgICAgZm4gPSBhc3RDb21waWxlci5jb21waWxlKGRlZk9ubHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZlbnRGbkNhY2hlLnNldChleHByLCBmbik7XG4gICAgcmV0dXJuIGZuO1xufVxuXG5jb25zdCBmbk5hbWVNYXAgPSBuZXcgTWFwKCk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlckZuQnlFeHByID0gKGV4cHIsIGZuLCB1c2VkUGlwZXM/KSA9PiB7XG4gICAgZm4udXNlZFBpcGVzID0gdXNlZFBpcGVzIHx8IFtdO1xuICAgIGZuTmFtZU1hcC5zZXQoZXhwciwgZm4pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm5CeUV4cHIgPSAoZXhwcikgPT4gZm5OYW1lTWFwLmdldChleHByKVxuXG5jb25zdCBmbkV4ZWN1dG9yID0gKGV4cHIsIGV4cHJUeXBlKSA9PiB7XG4gICAgbGV0IGZuID0gZ2V0Rm5CeUV4cHIoZXhwcik7XG4gICAgaWYgKCFmbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHVzZWRQaXBlcyA9IGZuLnVzZWRQaXBlcyB8fCBbXTtcblxuICAgIGlmKGV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZiwgZ2V0UHVyZVBpcGVWYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZik7XG4gICAgfVxuXG4gICAgaWYgKHVzZWRQaXBlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBbXTtcbiAgICAgICAgbGV0IGhhc1B1cmVQaXBlID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgW3BpcGVOYW1lXSBvZiB1c2VkUGlwZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBpcGVJbmZvID0gcGlwZVByb3ZpZGVyLm1ldGEocGlwZU5hbWUpO1xuICAgICAgICAgICAgbGV0IHBpcGVJbnN0YW5jZTtcbiAgICAgICAgICAgIGlmICghcGlwZUluZm8pIHtcbiAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBudWxsUGlwZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBpcGVJbmZvLnB1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzUHVyZVBpcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwdXJlUGlwZXMuZ2V0KHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICBwaXBlSW5zdGFuY2UgPSBwaXBlUHJvdmlkZXIuZ2V0SW5zdGFuY2UocGlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1cmVQaXBlcy5zZXQocGlwZU5hbWUsIHBpcGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGlwZUFyZ3MucHVzaChwaXBlSW5zdGFuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGlwZUFyZ3MudW5zaGlmdChoYXNQdXJlUGlwZSA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIC4uLnBpcGVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm47XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGbkZvckJpbmRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZuRm9yRXZlbnRFeHByID0gKGV4cHIpID0+IHtcbiAgICByZXR1cm4gZm5FeGVjdXRvcihleHByLCBFeHByZXNzaW9uVHlwZS5BY3Rpb24pO1xufVxuIl19
593
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9leHByZXNzaW9uLXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0osS0FBSyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULEtBQUssRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixhQUFhLEVBQ2IsS0FBSyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUl0QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDaEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksU0FBUyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFHLEVBQUU7UUFDVCxLQUFLLEVBQUU7WUFDSCxTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFTLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksU0FBUyxFQUFFO2dCQUNYLE1BQU07YUFDVDtRQUNMLEtBQUssQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTTthQUNUO1FBQ0wsS0FBSyxDQUFDO1lBQ0YsU0FBUyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNO2FBQ1Q7UUFDTCxLQUFLLENBQUM7WUFDRixTQUFT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QUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUN0QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQmluYXJ5LFxuICAgIEJpbmRpbmdQaXBlLFxuICAgIENhbGwsXG4gICAgQ2hhaW4sXG4gICAgQ29uZGl0aW9uYWwsXG4gICAgSW1wbGljaXRSZWNlaXZlcixcbiAgICBLZXllZFJlYWQsXG4gICAgTGV4ZXIsXG4gICAgTGl0ZXJhbEFycmF5LFxuICAgIExpdGVyYWxNYXAsXG4gICAgTGl0ZXJhbFByaW1pdGl2ZSxcbiAgICBQYXJzZXIsXG4gICAgUHJlZml4Tm90LFxuICAgIFByb3BlcnR5UmVhZCxcbiAgICBQcm9wZXJ0eVdyaXRlLFxuICAgIFVuYXJ5XG59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBpc0RlZiA9IHYgPT4gdiAhPT0gdm9pZCAwO1xuY29uc3QgaWZEZWYgPSAodiwgZCkgPT4gdiA9PT0gdm9pZCAwID8gZCA6IHY7XG5jb25zdCBwbHVzID0gKGEsIGIpID0+IHZvaWQgMCA9PT0gYSA/IGIgOiB2b2lkIDAgPT09IGIgPyBhIDogYSArIGI7XG5jb25zdCBtaW51cyA9IChhLCBiKSA9PiBpZkRlZihhLCAwKSAtIGlmRGVmKGIsIDApO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgdHlwZSBQYXJzZUV4cHJSZXN1bHQgPSAoZGF0YT86IGFueSwgbG9jYWxzPzogYW55KSA9PiBhbnk7XG5cbmNvbnN0IGV4cHJGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgZXZlbnRGbkNhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgcHVyZVBpcGVzID0gbmV3IE1hcCgpO1xuXG5jb25zdCBwcmltaXRpdmVFcXVhbHMgPSAoYSwgYikgPT4ge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgeyAvLyBOYU4gY2FzZVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGEgPT09IGI7XG59O1xuXG5jb25zdCBkZXRlY3RDaGFuZ2VzID0gKG92LCBudikgPT4ge1xuICAgIGNvbnN0IGxlbiA9IG52Lmxlbmd0aDtcbiAgICBsZXQgaGFzQ2hhbmdlID0gbGVuID4gMTA7XG4gICAgc3dpdGNoIChsZW4pIHtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbOV0sIG52WzldKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls4XSwgbnZbOF0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzddLCBudls3XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbNl0sIG52WzZdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdls1XSwgbnZbNV0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzRdLCBudls0XSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbM10sIG52WzNdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaGFzQ2hhbmdlID0gIXByaW1pdGl2ZUVxdWFscyhvdlsyXSwgbnZbMl0pO1xuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBoYXNDaGFuZ2UgPSAhcHJpbWl0aXZlRXF1YWxzKG92WzFdLCBudlsxXSk7XG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGhhc0NoYW5nZSA9ICFwcmltaXRpdmVFcXVhbHMob3ZbMF0sIG52WzBdKTtcbiAgICAgICAgICAgIGlmIChoYXNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZTtcbn07XG5cbmNvbnN0IGdldFB1cmVQaXBlVmFsID0gKHBpcGUsIGNhY2hlLCBpZGVudGlmaWVyLCAuLi5hcmdzKSA9PiB7XG4gICAgbGV0IGxhc3RSZXN1bHQgPSBjYWNoZS5nZXQoaWRlbnRpZmllcik7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAobGFzdFJlc3VsdCkge1xuICAgICAgICBjb25zdCBpc01vZGlmaWVkID0gZGV0ZWN0Q2hhbmdlcyhsYXN0UmVzdWx0LmFyZ3MsIGFyZ3MpO1xuICAgICAgICBpZiAoIWlzTW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0UmVzdWx0LnJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgPSBwaXBlLnRyYW5zZm9ybSguLi5hcmdzKTtcbiAgICBsYXN0UmVzdWx0ID0ge2FyZ3MsIHJlc3VsdH07XG4gICAgY2FjaGUuc2V0KGlkZW50aWZpZXIsIGxhc3RSZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBTVFJfRVNDQVBFX1JFR0VYID0gL1teIGEtekEtWjAtOV0vZztcblxuY29uc3Qgc3RyaW5nRXNjYXBlRm4gPSBzdHIgPT4ge1xuICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIHN0ci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpO1xufTtcblxuY2xhc3MgQVNUQ29tcGlsZXIge1xuICAgIGFzdDsgLy8gYXN0IHRvIGJlIGNvbXBpbGVkXG4gICAgZGVjbGFyYXRpb25zOyAvLyB2YXJpYWJsZSBuYW1lc1xuICAgIHN0bXRzOyAvLyBmdW5jdGlvbiBib2R5IHN0YXRlbWVudHNcbiAgICBwaXBlczsgLy8gdXNlZCBwaXBlc1xuICAgIHZJZHg7IC8vIHZhcmlhYmxlIG5hbWUgaW5kZXhcbiAgICBjQXN0OyAvLyBjdXJyZW50IEFTVCBub2RlIGluIHRoZSBwcm9jZXNzXG4gICAgY1N0bXRzO1xuICAgIHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgZXhwclR5cGU6IEV4cHJlc3Npb25UeXBlO1xuXG4gICAgY29uc3RydWN0b3IoYXN0LCBleHByVHlwZSwgcGlwZU5hbWVWc0lzUHVyZU1hcD8pIHtcbiAgICAgICAgdGhpcy5hc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zID0gW107XG4gICAgICAgIHRoaXMuc3RtdHMgPSBbXTtcbiAgICAgICAgdGhpcy5waXBlcyA9IFtdO1xuICAgICAgICB0aGlzLnZJZHggPSAwO1xuICAgICAgICB0aGlzLmV4cHJUeXBlID0gZXhwclR5cGU7XG4gICAgICAgIHRoaXMucGlwZU5hbWVWc0lzUHVyZU1hcCA9IHBpcGVOYW1lVnNJc1B1cmVNYXA7XG4gICAgfVxuXG4gICAgY3JlYXRlVmFyKCkge1xuICAgICAgICBjb25zdCB2ID0gYHYke3RoaXMudklkeCsrfWA7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zLnB1c2godik7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCkge1xuICAgICAgICByZXR1cm4gJ2N0eCc7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiAoYXN0LnZhbHVlKSA9PT0gJ3N0cmluZycgPyBgXCIke2FzdC52YWx1ZS5yZXBsYWNlKC9cIi9nLCAnXFxcIicpLnJlcGxhY2UoU1RSX0VTQ0FQRV9SRUdFWCwgc3RyaW5nRXNjYXBlRm4pfVwiYCA6IGFzdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzTGl0ZXJhbEFycmF5KCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgICAgIHMucHVzaCh0aGlzLmJ1aWxkKGl0ZW0sIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RtdHMucHVzaChgJHt2fT1bJHtzLmpvaW4oJywnKX1dYCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NMaXRlcmFsTWFwKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfdmFsdWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgX3ZhbHVlIG9mIGFzdC52YWx1ZXMpIHtcbiAgICAgICAgICAgIF92YWx1ZXMucHVzaCh0aGlzLmJ1aWxkKF92YWx1ZSwgc3RtdHMpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PXske2FzdC5rZXlzLm1hcCgoaywgaSkgPT4gYCcke2sua2V5fSc6JHtfdmFsdWVzW2ldfWApfX1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1Byb3BlcnR5UmVhZCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmVjZWl2ZXIsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtyfSYmJHtyfS4ke2FzdC5uYW1lfWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzS2V5ZWRSZWFkKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmJ1aWxkKGFzdC5rZXksIHN0bXRzKTtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMuYnVpbGQoYXN0LnJlY2VpdmVyLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7b30mJiR7b31bJHtrfV1gKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1ByZWZpeE5vdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QuZXhwcmVzc2lvbiwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke3J9PSEke3J9YCk7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIGhhbmRsZUJpbmFyeVBsdXNfTWludXMoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuYnVpbGQoYXN0LnJpZ2h0LCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBtID0gYXN0Lm9wZXJhdGlvbiA9PT0gJysnID8gJ19wbHVzJyA6ICdfbWludXMnO1xuICAgICAgICBzdG10cy5wdXNoKGAke3Z9PSR7bX0oJHtsfSwke3J9KWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBoYW5kbGVCaW5hcnlBTkRfT1IoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX3MxID0gW107XG4gICAgICAgIGNvbnN0IF9zbCA9IFtdO1xuICAgICAgICBjb25zdCBfc3IgPSBbXTtcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuYnVpbGQoYXN0LmxlZnQsIF9zbCk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmJ1aWxkKGFzdC5yaWdodCwgX3NyKTtcblxuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcblxuICAgICAgICBpZiAoYXN0Lm9wZXJhdGlvbiA9PT0gJyYmJykge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09ZmFsc2VgLFxuICAgICAgICAgICAgICAgIGA7aWYoJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICAgICAgX3NsLmpvaW4oJzsnKSxcbiAgICAgICAgICAgICAgICBgOyR7dn09JHtsfWAsXG4gICAgICAgICAgICAgICAgYDtpZighJHtsfSl7YCxcbiAgICAgICAgICAgICAgICBfc3Iuam9pbignOycpLFxuICAgICAgICAgICAgICAgIGA7JHt2fT0ke3J9O2AsXG4gICAgICAgICAgICAgICAgYH1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHN0bXRzLnB1c2goX3MxLmpvaW4oJycpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgaGFuZGxlQmluYXJ5RGVmYXVsdCgpIHtcbiAgICAgICAgY29uc3QgYXN0ID0gdGhpcy5jQXN0O1xuICAgICAgICBjb25zdCBzdG10cyA9IHRoaXMuY1N0bXRzO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5idWlsZChhc3QubGVmdCwgc3RtdHMpO1xuICAgICAgICBjb25zdCByID0gdGhpcy5idWlsZChhc3QucmlnaHQsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHtsfSR7YXN0Lm9wZXJhdGlvbn0ke3J9YCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHByb2Nlc3NCaW5hcnkoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgb3AgPSBhc3Qub3BlcmF0aW9uO1xuICAgICAgICBpZiAob3AgPT09ICcrJyB8fCBvcCA9PT0gJy0nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlQbHVzX01pbnVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wID09PSAnJiYnIHx8IG9wID09PSAnfHwnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVCaW5hcnlBTkRfT1IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJpbmFyeURlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzVW5hcnkoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgZSA9IHRoaXMuYnVpbGQoYXN0LmV4cHIsIHN0bXRzKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09JHthc3Qub3BlcmF0b3J9JHtlfWApO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBwcm9jZXNzQ29uZGl0aW9uYWwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5idWlsZChhc3QuY29uZGl0aW9uLCBzdG10cyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhcigpO1xuICAgICAgICBjb25zdCBfczEgPSBbXTtcbiAgICAgICAgY29uc3QgX3MyID0gW107XG4gICAgICAgIGNvbnN0IF9zMyA9IFtdO1xuICAgICAgICBjb25zdCB0cnVlRXhwID0gdGhpcy5idWlsZChhc3QudHJ1ZUV4cCwgX3MyKTtcbiAgICAgICAgY29uc3QgZmFsc2VFeHAgPSB0aGlzLmJ1aWxkKGFzdC5mYWxzZUV4cCwgX3MzKTtcblxuICAgICAgICBfczEucHVzaChcbiAgICAgICAgICAgIGBpZigke2NvbmRpdGlvbn0pe2AsXG4gICAgICAgICAgICBfczIuam9pbignOycpLFxuICAgICAgICAgICAgYDske3Z9PSR7dHJ1ZUV4cH07YCxcbiAgICAgICAgICAgIGB9ZWxzZXtgLFxuICAgICAgICAgICAgX3MzLmpvaW4oJzsnKSxcbiAgICAgICAgICAgIGA7JHt2fT0ke2ZhbHNlRXhwfTtgLFxuICAgICAgICAgICAgYH1gXG4gICAgICAgICk7XG5cbiAgICAgICAgc3RtdHMucHVzaChfczEuam9pbignICcpKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc01ldGhvZENhbGwoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgX2FyZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2YgYXN0LmFyZ3MpIHtcbiAgICAgICAgICAgIF9hcmdzLnB1c2godGhpcy5idWlsZChhcmcsIHN0bXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm4gPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgY29uc3QgaXNJbXBsaWNpdFJlY2VpdmVyID0gYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlciB8fCAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgUHJvcGVydHlSZWFkICYmIGFzdC5yZWNlaXZlcj8ucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHN0bXRzW3N0bXRzLmxlbmd0aCAtIDFdLnNwbGl0KCcmJicpWzBdLnNwbGl0KCc9JylbMV07XG4gICAgICAgIHN0bXRzLnB1c2goYCR7dn09ICR7Zm59JiYke2ZufSR7aXNJbXBsaWNpdFJlY2VpdmVyID8gJy5iaW5kKF9jdHgpJyA6IGAuYmluZCgke2NvbnRleHR9KWB9KCR7X2FyZ3Muam9pbignLCcpfSlgKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0NoYWluKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIHJldHVybiBhc3QuZXhwcmVzc2lvbnMubWFwKGUgPT4gdGhpcy5idWlsZChlKSkuam9pbignOycpO1xuICAgIH1cblxuICAgIHByb2Nlc3NQcm9wZXJ0eVdyaXRlKCkge1xuICAgICAgICBjb25zdCBhc3QgPSB0aGlzLmNBc3Q7XG4gICAgICAgIGNvbnN0IHN0bXRzID0gdGhpcy5jU3RtdHM7XG4gICAgICAgIGxldCByZWNlaXZlciwgbGhzO1xuICAgICAgICBpZiAoYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlcikge1xuICAgICAgICAgICAgbGhzID0gYF9jdHguJHthc3QubmFtZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSB0aGlzLmJ1aWxkKGFzdC5yZWNlaXZlciwgc3RtdHMpO1xuICAgICAgICAgICAgbGhzID0gYCR7cmVjZWl2ZXJ9JHtyZWNlaXZlci5sZW5ndGggPyAnLicgOiAnJ30ke2FzdC5uYW1lfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByaHMgPSB0aGlzLmJ1aWxkKGFzdC52YWx1ZSwgc3RtdHMpO1xuICAgICAgICBzdG10cy5wdXNoKGAke2xoc309JHtyaHN9YCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1BpcGUoKSB7XG4gICAgICAgIGNvbnN0IGFzdCA9IHRoaXMuY0FzdDtcbiAgICAgICAgY29uc3Qgc3RtdHMgPSB0aGlzLmNTdG10cztcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuY3JlYXRlVmFyKCk7XG4gICAgICAgIGNvbnN0IF9hcmdzID0gW107XG4gICAgICAgIGNvbnN0IF9zMSA9IFtdO1xuICAgICAgICBjb25zdCBfczIgPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gdGhpcy5idWlsZChhc3QuZXhwLCBzdG10cyk7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFzdC5hcmdzKSB7XG4gICAgICAgICAgICBfYXJncy5wdXNoKHRoaXMuYnVpbGQoYXJnLCBfczIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHAgPSBgX3Ake3RoaXMucGlwZXMubGVuZ3RofWA7XG4gICAgICAgIHRoaXMucGlwZXMucHVzaChbYXN0Lm5hbWUsIHBdKTtcblxuICAgICAgICBfYXJncy51bnNoaWZ0KGV4cCk7XG5cbiAgICAgICAgX3MxLnB1c2goXG4gICAgICAgICAgICBfczIubGVuZ3RoID8gX3MyLmpvaW4oJzsnKSArICc7JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5waXBlTmFtZVZzSXNQdXJlTWFwLmdldChhc3QubmFtZSkgPyBgJHt0fT1nZXRQUFZhbCgke3B9LF9wcGMsXCIke3B9XCIsJHtfYXJnc30pYCA6IGAke3R9PSR7cH0udHJhbnNmb3JtKCR7X2FyZ3N9KWBcbiAgICAgICAgKTtcblxuICAgICAgICBzdG10cy5wdXNoKF9zMS5qb2luKCcnKSk7XG4gICAgICAgIHJldHVybiB0O1xuICAgIH1cblxuICAgIGJ1aWxkKGFzdCwgY1N0bXRzPykge1xuICAgICAgICB0aGlzLmNBc3QgPSBhc3Q7XG4gICAgICAgIHRoaXMuY1N0bXRzID0gY1N0bXRzIHx8IHRoaXMuc3RtdHM7XG5cbiAgICAgICAgaWYgKGFzdCBpbnN0YW5jZW9mIEltcGxpY2l0UmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBsaWNpdFJlY2VpdmVyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgTGl0ZXJhbFByaW1pdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0xpdGVyYWxQcmltaXRpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaXRlcmFsQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBMaXRlcmFsTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGl0ZXJhbE1hcCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5UmVhZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Byb3BlcnR5UmVhZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIFByb3BlcnR5V3JpdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NQcm9wZXJ0eVdyaXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgS2V5ZWRSZWFkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzS2V5ZWRSZWFkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgUHJlZml4Tm90KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUHJlZml4Tm90KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2YgVW5hcnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NVbmFyeSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIEJpbmFyeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0JpbmFyeSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIENvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ29uZGl0aW9uYWwoKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTWV0aG9kQ2FsbCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIENoYWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ2hhaW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBCaW5kaW5nUGlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1BpcGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4dGVuZEN0eFdpdGhMb2NhbHMoKSB7XG4gICAgICAgIGNvbnN0IHYxID0gdGhpcy5jcmVhdGVWYXIoKTtcbiAgICAgICAgdGhpcy5zdG10cy5wdXNoKFxuICAgICAgICAgICAgYCR7djF9PU9iamVjdC5hc3NpZ24oe30sIGxvY2FscylgLFxuICAgICAgICAgICAgYE9iamVjdC5zZXRQcm90b3R5cGVPZigke3YxfSwgX2N0eClgLFxuICAgICAgICAgICAgYGN0eD0ke3YxfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmbkJvZHkoKSB7XG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25zLnB1c2goJ2N0eCcpO1xuICAgICAgICByZXR1cm4gJ1widXNlIHN0cmljdFwiO1xcbnZhciAnICsgdGhpcy5kZWNsYXJhdGlvbnMuam9pbignLCcpICsgJztcXG4nICsgdGhpcy5zdG10cy5qb2luKCc7Jyk7XG4gICAgfVxuXG4gICAgZm5BcmdzKCkge1xuICAgICAgICBjb25zdCBhcmdzID0gWydfcGx1cycsICdfbWludXMnLCAnX2lzRGVmJ107XG5cbiAgICAgICAgaWYgKHRoaXMuZXhwclR5cGUgPT09IEV4cHJlc3Npb25UeXBlLkJpbmRpbmcpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaCgnZ2V0UFBWYWwnLCAnX3BwYycpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbLCBwaXBlVmFyXSBvZiB0aGlzLnBpcGVzKSB7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKHBpcGVWYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXJncy5wdXNoKCdfY3R4JywgJ2xvY2FscycpO1xuXG4gICAgICAgIHJldHVybiBhcmdzLmpvaW4oJywnKTtcbiAgICB9XG5cbiAgICBhZGRSZXR1cm5TdG10KHJlc3VsdCkge1xuICAgICAgICAvLyBpZiAodGhpcy5leHByVHlwZSA9PT0gRXhwcmVzc2lvblR5cGUuQmluZGluZykge1xuICAgICAgICAgICAgdGhpcy5zdG10cy5wdXNoKGByZXR1cm4gJHtyZXN1bHR9O2ApO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgY2xlYW51cCgpIHtcbiAgICAgICAgdGhpcy5hc3QgPSB0aGlzLmNBc3QgPSB0aGlzLnN0bXRzID0gdGhpcy5jU3RtdHMgPSB0aGlzLmRlY2xhcmF0aW9ucyA9IHRoaXMucGlwZXMgPSB0aGlzLnBpcGVOYW1lVnNJc1B1cmVNYXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29tcGlsZShkZWZPbmx5Pykge1xuICAgICAgICB0aGlzLmV4dGVuZEN0eFdpdGhMb2NhbHMoKTtcbiAgICAgICAgdGhpcy5hZGRSZXR1cm5TdG10KHRoaXMuYnVpbGQodGhpcy5hc3QpKTtcbiAgICAgICAgaWYgKGRlZk9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB7Zm5Cb2R5OiB0aGlzLmZuQm9keSgpLCBmbkFyZ3M6IHRoaXMuZm5BcmdzKCksIHBpcGVzOiB0aGlzLnBpcGVzfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbiA9IG5ldyBGdW5jdGlvbih0aGlzLmZuQXJncygpLCB0aGlzLmZuQm9keSgpKTtcbiAgICAgICAgbGV0IGJvdW5kRm47XG4gICAgICAgIGlmICh0aGlzLmV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHBsdXMsIG1pbnVzLCBpc0RlZiwgZ2V0UHVyZVBpcGVWYWwpO1xuICAgICAgICAgICAgYm91bmRGbi51c2VkUGlwZXMgPSB0aGlzLnBpcGVzLnNsaWNlKDApOyAvLyBjbG9uZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm91bmRGbiA9IGZuLmJpbmQodW5kZWZpbmVkLCBwbHVzLCBtaW51cywgaXNEZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgIHJldHVybiBib3VuZEZuO1xuICAgIH1cbn1cblxuY29uc3QgbnVsbFBpcGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub29wXG4gICAgfTtcbn07XG5cbmxldCBfY3NwRW5hYmxlZDtcbmNvbnN0IGlzQ1NQRW5hYmxlZCA9ICgpID0+IHtcbiAgICBpZih0eXBlb2YgX2NzcEVuYWJsZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBfY3NwRW5hYmxlZDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbmV3IEZ1bmN0aW9uKCk7XG4gICAgICAgIF9jc3BFbmFibGVkID0gZmFsc2U7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIF9jc3BFbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIF9jc3BFbmFibGVkO1xufTtcblxubGV0IHBpcGVQcm92aWRlcjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFBpcGVQcm92aWRlcihfcGlwZVByb3ZpZGVyKSB7XG4gICAgcGlwZVByb3ZpZGVyID0gX3BpcGVQcm92aWRlcjtcbn1cblxuZW51bSBFeHByZXNzaW9uVHlwZSB7XG4gICAgQmluZGluZyxcbiAgICBBY3Rpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICRwYXJzZUV4cHIoZXhwcjogc3RyaW5nLCBkZWZPbmx5PzogYm9vbGVhbik6IFBhcnNlRXhwclJlc3VsdCB7XG5cbiAgICBpZiAoIXBpcGVQcm92aWRlcikge1xuICAgICAgICBjb25zb2xlLmxvZygnc2V0IHBpcGUgcHJvdmlkZXInKTtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiAoZXhwcikgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGV4cHIgPSBleHByLnRyaW0oKTtcblxuICAgIGlmIChleHByLmVuZHNXaXRoKCc7JykpIHtcbiAgICAgICAgZXhwciA9IGV4cHIuc2xpY2UoMCwgLTEpOyAvLyByZW1vdmUgdGhlIHRyYWlsaW5nIHNlbWljb2xvblxuICAgIH1cblxuICAgIGlmICghZXhwci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgbGV0IGZuID0gZXhwckZuQ2FjaGUuZ2V0KGV4cHIpO1xuXG4gICAgaWYgKGZuKSB7XG4gICAgICAgIHJldHVybiBmbjtcbiAgICB9XG5cbiAgICBsZXQgYm91bmRGbjtcbiAgICBpZiAoIWRlZk9ubHkpIHtcbiAgICAgICAgYm91bmRGbiA9IGdldEZuRm9yQmluZEV4cHIoZXhwcik7XG4gICAgfVxuXG4gICAgLy8gZmFsbGJhY2sgdG8gZ2VuZXJhdGUgZnVuY3Rpb24gaW4gcnVudGltZS4gVGhpcyB3aWxsIGJyZWFrIGlmIENTUCBpcyBlbmFibGVkXG4gICAgaWYgKCFib3VuZEZuKSB7XG4gICAgICAgIC8vIElmIENTUCBlbmFibGVkLCBmdW5jdGlvbiBkZWYgbm90IGZvdW5kIGZyb20gdGhlIGdlbmVyYXRlZCBmbiBleHByZXNzaW9ucyBmb3IgdGhlIHBhZ2UuXG4gICAgICAgIC8vIEhhbmRsZSBiaW5kIGV4cHJlc3Npb25zIHVzZWQgaW50ZXJuYWxseSBpbnNpZGUgV00gY29tcG9uZW50cy4gZS5nLiB3bUFuY2hvciB1c2VkIGluc2lkZSBuYXYuY29tcC5odG1sXG4gICAgICAgIGlmIChpc0NTUEVuYWJsZWQoKSkge1xuICAgICAgICAgICAgYm91bmRGbiA9IGZ1bmN0aW9uKGN0eCwgbG9jYWxzKSB7XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIGludGVybmFsIGJpbmRpbmdzIGZvciB3bSB3aWRnZXRzIHVzZWQgaW5zaWRlIGEgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgbGV0IF9jdHggPSBPYmplY3QuYXNzaWduKHt9LCBsb2NhbHMpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfY3R4LCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfLmdldChfY3R4LCBleHByKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKG5ldyBMZXhlcik7XG4gICAgICAgICAgICBjb25zdCBhc3QgPSBwYXJzZXIucGFyc2VCaW5kaW5nKGV4cHIsICcnLDApO1xuXG4gICAgICAgICAgICBpZiAoYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmbiA9IG5vb3A7XG4gICAgICAgICAgICAgICAgYm91bmRGbiA9IGZuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaXBlTmFtZVZzSXNQdXJlTWFwID0gcGlwZVByb3ZpZGVyLmdldFBpcGVOYW1lVnNJc1B1cmVNYXAoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3RDb21waWxlciA9IG5ldyBBU1RDb21waWxlcihhc3QuYXN0LCBFeHByZXNzaW9uVHlwZS5CaW5kaW5nLCBwaXBlTmFtZVZzSXNQdXJlTWFwKTtcbiAgICAgICAgICAgICAgICBmbiA9IGFzdENvbXBpbGVyLmNvbXBpbGUoZGVmT25seSk7XG4gICAgICAgICAgICAgICAgaWYgKGRlZk9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmbi51c2VkUGlwZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpcGVBcmdzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXNQdXJlUGlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtwaXBlTmFtZV0gb2YgZm4udXNlZFBpcGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaXBlSW5mbyA9IHBpcGVQcm92aWRlci5tZXRhKHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwaXBlSW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBpcGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gbnVsbFBpcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1B1cmVQaXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gcHVyZVBpcGVzLmdldChwaXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaXBlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gcGlwZVByb3ZpZGVyLmdldEluc3RhbmNlKHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGlwZUluZm8ucHVyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJlUGlwZXMuc2V0KHBpcGVOYW1lLCBwaXBlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVBcmdzLnB1c2gocGlwZUluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBpcGVBcmdzLnVuc2hpZnQoaGFzUHVyZVBpcGUgPyBuZXcgTWFwKCkgOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIC4uLnBpcGVBcmdzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwckZuQ2FjaGUuc2V0KGV4cHIsIGJvdW5kRm4pO1xuXG4gICAgcmV0dXJuIGJvdW5kRm47XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUZ1bmN0aW9uRXZhbHVhdG9yKGV4cHIsIGN0eCwgbG9jYWxzKSB7XG4gICAgbGV0IF9jdHggPSBPYmplY3QuYXNzaWduKHt9LCBsb2NhbHMpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfY3R4LCBjdHgpO1xuXG4gICAgbGV0IHBhcnRzID0gZXhwci5zcGxpdCgnKCcpO1xuICAgIGxldCBmbk5hbWUgPSBwYXJ0c1swXTtcbiAgICBsZXQgY29tcHV0ZWRGbiA9IF8uZ2V0KGN0eCwgZm5OYW1lKTtcblxuICAgIGlmIChjb21wdXRlZEZuKSB7XG4gICAgICAgIGxldCBhcmdzID0gcGFydHNbMV0ucmVwbGFjZSgnKScsICcnKTtcbiAgICAgICAgYXJncyA9IGFyZ3Muc3BsaXQoJywnKTtcbiAgICAgICAgbGV0IGNvbXB1dGVkQXJncyA9IFtdO1xuICAgICAgICBhcmdzLmZvckVhY2goKGFyZyk9PiB7XG4gICAgICAgICAgICBhcmcgPSBhcmcgJiYgYXJnLnRyaW0oKTtcbiAgICAgICAgICAgIGNvbXB1dGVkQXJncy5wdXNoKF8uZ2V0KF9jdHgsIGFyZykpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVkRm4uYmluZChfY3R4KSguLi5jb21wdXRlZEFyZ3MpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICRwYXJzZUV2ZW50KGV4cHIsIGRlZk9ubHk/KTogUGFyc2VFeHByUmVzdWx0IHtcbiAgICBpZiAodHlwZW9mIChleHByKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgZXhwciA9IGV4cHIudHJpbSgpO1xuXG4gICAgaWYgKCFleHByLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSBldmVudEZuQ2FjaGUuZ2V0KGV4cHIpO1xuXG4gICAgaWYgKGZuKSB7XG4gICAgICAgIHJldHVybiBmbjtcbiAgICB9XG5cbiAgICBpZiAoIWRlZk9ubHkpIHtcbiAgICAgICAgZm4gPSBnZXRGbkZvckV2ZW50RXhwcihleHByKTtcbiAgICB9XG5cbiAgICAvLyBmYWxsYmFjayB0byBnZW5lcmF0ZSBmdW5jdGlvbiBpbiBydW50aW1lLiBUaGlzIHdpbGwgYnJlYWsgaWYgQ1NQIGlzIGVuYWJsZWRcbiAgICBpZighZm4pIHtcbiAgICAgICAgaWYgKGlzQ1NQRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBmbiA9IHNpbXBsZUZ1bmN0aW9uRXZhbHVhdG9yLmJpbmQodW5kZWZpbmVkLCBleHByKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGFzdCA9IHBhcnNlci5wYXJzZUFjdGlvbihleHByLCBmYWxzZSwgJycsMCk7XG5cbiAgICAgICAgICAgIGlmIChhc3QuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub29wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYXN0Q29tcGlsZXIgPSBuZXcgQVNUQ29tcGlsZXIoYXN0LmFzdCwgRXhwcmVzc2lvblR5cGUuQWN0aW9uKTtcbiAgICAgICAgICAgIGZuID0gYXN0Q29tcGlsZXIuY29tcGlsZShkZWZPbmx5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2ZW50Rm5DYWNoZS5zZXQoZXhwciwgZm4pO1xuICAgIHJldHVybiBmbjtcbn1cblxuY29uc3QgZm5OYW1lTWFwID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJGbkJ5RXhwciA9IChleHByLCBmbiwgdXNlZFBpcGVzPykgPT4ge1xuICAgIGZuLnVzZWRQaXBlcyA9IHVzZWRQaXBlcyB8fCBbXTtcbiAgICBmbk5hbWVNYXAuc2V0KGV4cHIsIGZuKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZuQnlFeHByID0gKGV4cHIpID0+IGZuTmFtZU1hcC5nZXQoZXhwcilcblxuY29uc3QgZm5FeGVjdXRvciA9IChleHByLCBleHByVHlwZSkgPT4ge1xuICAgIGxldCBmbiA9IGdldEZuQnlFeHByKGV4cHIpO1xuICAgIGlmICghZm4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1c2VkUGlwZXMgPSBmbi51c2VkUGlwZXMgfHwgW107XG5cbiAgICBpZihleHByVHlwZSA9PT0gRXhwcmVzc2lvblR5cGUuQmluZGluZykge1xuICAgICAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCBwbHVzLCBtaW51cywgaXNEZWYsIGdldFB1cmVQaXBlVmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCBwbHVzLCBtaW51cywgaXNEZWYpO1xuICAgIH1cblxuICAgIGlmICh1c2VkUGlwZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHBpcGVBcmdzID0gW107XG4gICAgICAgIGxldCBoYXNQdXJlUGlwZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IFtwaXBlTmFtZV0gb2YgdXNlZFBpcGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwaXBlSW5mbyA9IHBpcGVQcm92aWRlci5tZXRhKHBpcGVOYW1lKTtcbiAgICAgICAgICAgIGxldCBwaXBlSW5zdGFuY2U7XG4gICAgICAgICAgICBpZiAoIXBpcGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gbnVsbFBpcGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwaXBlSW5mby5wdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc1B1cmVQaXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gcHVyZVBpcGVzLmdldChwaXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFwaXBlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcGlwZUluc3RhbmNlID0gcGlwZVByb3ZpZGVyLmdldEluc3RhbmNlKHBpcGVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocGlwZUluZm8ucHVyZSkge1xuICAgICAgICAgICAgICAgICAgICBwdXJlUGlwZXMuc2V0KHBpcGVOYW1lLCBwaXBlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBpcGVBcmdzLnB1c2gocGlwZUluc3RhbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBpcGVBcmdzLnVuc2hpZnQoaGFzUHVyZVBpcGUgPyBuZXcgTWFwKCkgOiB1bmRlZmluZWQpO1xuICAgICAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCAuLi5waXBlQXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV4cHJUeXBlID09PSBFeHByZXNzaW9uVHlwZS5CaW5kaW5nKSB7XG4gICAgICAgICAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm5Gb3JCaW5kRXhwciA9IChleHByKSA9PiB7XG4gICAgcmV0dXJuIGZuRXhlY3V0b3IoZXhwciwgRXhwcmVzc2lvblR5cGUuQmluZGluZyk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGbkZvckV2ZW50RXhwciA9IChleHByKSA9PiB7XG4gICAgcmV0dXJuIGZuRXhlY3V0b3IoZXhwciwgRXhwcmVzc2lvblR5cGUuQWN0aW9uKTtcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Attribute, ImplicitReceiver, PropertyRead, LiteralPrimitive, LiteralArray, LiteralMap, PropertyWrite, KeyedRead, PrefixNot, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
1
+ import { Attribute, ImplicitReceiver, PropertyRead, LiteralPrimitive, LiteralArray, LiteralMap, PropertyWrite, KeyedRead, PrefixNot, Unary, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
2
2
  import { Subject } from 'rxjs';
3
3
  import { __awaiter } from 'tslib';
4
4
  import * as i0 from '@angular/core';
@@ -1741,6 +1741,14 @@ class ASTCompiler {
1741
1741
  }
1742
1742
  return this.handleBinaryDefault();
1743
1743
  }
1744
+ processUnary() {
1745
+ const ast = this.cAst;
1746
+ const stmts = this.cStmts;
1747
+ const e = this.build(ast.expr, stmts);
1748
+ const v = this.createVar();
1749
+ stmts.push(`${v}=${ast.operator}${e}`);
1750
+ return v;
1751
+ }
1744
1752
  processConditional() {
1745
1753
  const ast = this.cAst;
1746
1754
  const stmts = this.cStmts;
@@ -1833,6 +1841,9 @@ class ASTCompiler {
1833
1841
  else if (ast instanceof PrefixNot) {
1834
1842
  return this.processPrefixNot();
1835
1843
  }
1844
+ else if (ast instanceof Unary) {
1845
+ return this.processUnary();
1846
+ }
1836
1847
  else if (ast instanceof Binary) {
1837
1848
  return this.processBinary();
1838
1849
  }