@warmhub/cli 0.53.0 → 0.55.0

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.
Files changed (2) hide show
  1. package/dist/wh.js +729 -1555
  2. package/package.json +2 -2
package/dist/wh.js CHANGED
@@ -4,7 +4,7 @@ import { createRequire } from "node:module";
4
4
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
5
5
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
6
6
 
7
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/symbols.js
7
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/symbols.js
8
8
  var require_symbols = __commonJS((exports, module) => {
9
9
  module.exports = {
10
10
  kClose: Symbol("close"),
@@ -75,7 +75,7 @@ var require_symbols = __commonJS((exports, module) => {
75
75
  };
76
76
  });
77
77
 
78
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/errors.js
78
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/errors.js
79
79
  var require_errors = __commonJS((exports, module) => {
80
80
  var kUndiciError = Symbol.for("undici.error.UND_ERR");
81
81
 
@@ -454,7 +454,7 @@ var require_errors = __commonJS((exports, module) => {
454
454
  };
455
455
  });
456
456
 
457
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/constants.js
457
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/constants.js
458
458
  var require_constants = __commonJS((exports, module) => {
459
459
  var headerNameLowerCasedRecord = {};
460
460
  var wellknownHeaderNames = [
@@ -566,7 +566,7 @@ var require_constants = __commonJS((exports, module) => {
566
566
  };
567
567
  });
568
568
 
569
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/tree.js
569
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/tree.js
570
570
  var require_tree = __commonJS((exports, module) => {
571
571
  var {
572
572
  wellknownHeaderNames,
@@ -678,7 +678,7 @@ var require_tree = __commonJS((exports, module) => {
678
678
  };
679
679
  });
680
680
 
681
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/util.js
681
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/util.js
682
682
  var require_util = __commonJS((exports, module) => {
683
683
  var assert2 = __require("node:assert");
684
684
  var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
@@ -1182,7 +1182,7 @@ var require_util = __commonJS((exports, module) => {
1182
1182
  };
1183
1183
  });
1184
1184
 
1185
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/diagnostics.js
1185
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/diagnostics.js
1186
1186
  var require_diagnostics = __commonJS((exports, module) => {
1187
1187
  var diagnosticsChannel = __require("node:diagnostics_channel");
1188
1188
  var util = __require("node:util");
@@ -1309,7 +1309,7 @@ var require_diagnostics = __commonJS((exports, module) => {
1309
1309
  };
1310
1310
  });
1311
1311
 
1312
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/request.js
1312
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/request.js
1313
1313
  var require_request = __commonJS((exports, module) => {
1314
1314
  var {
1315
1315
  InvalidArgumentError,
@@ -1640,7 +1640,7 @@ var require_request = __commonJS((exports, module) => {
1640
1640
  module.exports = Request;
1641
1641
  });
1642
1642
 
1643
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/dispatcher.js
1643
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/dispatcher.js
1644
1644
  var require_dispatcher = __commonJS((exports, module) => {
1645
1645
  var EventEmitter = __require("node:events");
1646
1646
 
@@ -1694,7 +1694,7 @@ var require_dispatcher = __commonJS((exports, module) => {
1694
1694
  module.exports = Dispatcher;
1695
1695
  });
1696
1696
 
1697
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/dispatcher-base.js
1697
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/dispatcher-base.js
1698
1698
  var require_dispatcher_base = __commonJS((exports, module) => {
1699
1699
  var Dispatcher = require_dispatcher();
1700
1700
  var {
@@ -1719,6 +1719,7 @@ var require_dispatcher_base = __commonJS((exports, module) => {
1719
1719
  }
1720
1720
  get webSocketOptions() {
1721
1721
  return {
1722
+ maxFragments: this[kWebSocketOptions].maxFragments ?? 131072,
1722
1723
  maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024
1723
1724
  };
1724
1725
  }
@@ -1857,7 +1858,7 @@ var require_dispatcher_base = __commonJS((exports, module) => {
1857
1858
  module.exports = DispatcherBase;
1858
1859
  });
1859
1860
 
1860
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/util/timers.js
1861
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/util/timers.js
1861
1862
  var require_timers = __commonJS((exports, module) => {
1862
1863
  var fastNow = 0;
1863
1864
  var RESOLUTION_MS = 1000;
@@ -1971,7 +1972,7 @@ var require_timers = __commonJS((exports, module) => {
1971
1972
  };
1972
1973
  });
1973
1974
 
1974
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/core/connect.js
1975
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/connect.js
1975
1976
  var require_connect = __commonJS((exports, module) => {
1976
1977
  var net = __require("node:net");
1977
1978
  var assert2 = __require("node:assert");
@@ -2143,7 +2144,7 @@ var require_connect = __commonJS((exports, module) => {
2143
2144
  module.exports = buildConnector;
2144
2145
  });
2145
2146
 
2146
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/llhttp/utils.js
2147
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/utils.js
2147
2148
  var require_utils = __commonJS((exports) => {
2148
2149
  Object.defineProperty(exports, "__esModule", { value: true });
2149
2150
  exports.enumToMap = undefined;
@@ -2160,7 +2161,7 @@ var require_utils = __commonJS((exports) => {
2160
2161
  exports.enumToMap = enumToMap;
2161
2162
  });
2162
2163
 
2163
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/llhttp/constants.js
2164
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/constants.js
2164
2165
  var require_constants2 = __commonJS((exports) => {
2165
2166
  Object.defineProperty(exports, "__esModule", { value: true });
2166
2167
  exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = undefined;
@@ -2476,19 +2477,19 @@ var require_constants2 = __commonJS((exports) => {
2476
2477
  };
2477
2478
  });
2478
2479
 
2479
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/llhttp/llhttp-wasm.js
2480
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js
2480
2481
  var require_llhttp_wasm = __commonJS((exports, module) => {
2481
2482
  var { Buffer: Buffer3 } = __require("node:buffer");
2482
2483
  module.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
2483
2484
  });
2484
2485
 
2485
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
2486
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
2486
2487
  var require_llhttp_simd_wasm = __commonJS((exports, module) => {
2487
2488
  var { Buffer: Buffer3 } = __require("node:buffer");
2488
2489
  module.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK77MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
2489
2490
  });
2490
2491
 
2491
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/constants.js
2492
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/constants.js
2492
2493
  var require_constants3 = __commonJS((exports, module) => {
2493
2494
  var corsSafeListedMethods = ["GET", "HEAD", "POST"];
2494
2495
  var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
@@ -2657,7 +2658,7 @@ var require_constants3 = __commonJS((exports, module) => {
2657
2658
  };
2658
2659
  });
2659
2660
 
2660
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/global.js
2661
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/global.js
2661
2662
  var require_global = __commonJS((exports, module) => {
2662
2663
  var globalOrigin = Symbol.for("undici.globalOrigin.1");
2663
2664
  function getGlobalOrigin() {
@@ -2690,7 +2691,7 @@ var require_global = __commonJS((exports, module) => {
2690
2691
  };
2691
2692
  });
2692
2693
 
2693
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/data-url.js
2694
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/data-url.js
2694
2695
  var require_data_url = __commonJS((exports, module) => {
2695
2696
  var assert2 = __require("node:assert");
2696
2697
  var encoder = new TextEncoder;
@@ -3003,7 +3004,7 @@ var require_data_url = __commonJS((exports, module) => {
3003
3004
  };
3004
3005
  });
3005
3006
 
3006
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/webidl.js
3007
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/webidl.js
3007
3008
  var require_webidl = __commonJS((exports, module) => {
3008
3009
  var { types, inspect } = __require("node:util");
3009
3010
  var { markAsUncloneable } = __require("node:worker_threads");
@@ -3409,7 +3410,7 @@ var require_webidl = __commonJS((exports, module) => {
3409
3410
  };
3410
3411
  });
3411
3412
 
3412
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/util.js
3413
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/util.js
3413
3414
  var require_util2 = __commonJS((exports, module) => {
3414
3415
  var { Transform } = __require("node:stream");
3415
3416
  var zlib = __require("node:zlib");
@@ -4221,7 +4222,7 @@ var require_util2 = __commonJS((exports, module) => {
4221
4222
  };
4222
4223
  });
4223
4224
 
4224
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/symbols.js
4225
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/symbols.js
4225
4226
  var require_symbols2 = __commonJS((exports, module) => {
4226
4227
  module.exports = {
4227
4228
  kUrl: Symbol("url"),
@@ -4232,7 +4233,7 @@ var require_symbols2 = __commonJS((exports, module) => {
4232
4233
  };
4233
4234
  });
4234
4235
 
4235
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/file.js
4236
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/file.js
4236
4237
  var require_file = __commonJS((exports, module) => {
4237
4238
  var { Blob: Blob2, File } = __require("node:buffer");
4238
4239
  var { kState } = require_symbols2();
@@ -4293,7 +4294,7 @@ var require_file = __commonJS((exports, module) => {
4293
4294
  module.exports = { FileLike, isFileLike };
4294
4295
  });
4295
4296
 
4296
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/formdata.js
4297
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/formdata.js
4297
4298
  var require_formdata = __commonJS((exports, module) => {
4298
4299
  var { isBlobLike, iteratorMixin } = require_util2();
4299
4300
  var { kState } = require_symbols2();
@@ -4433,7 +4434,7 @@ var require_formdata = __commonJS((exports, module) => {
4433
4434
  module.exports = { FormData: FormData2, makeEntry };
4434
4435
  });
4435
4436
 
4436
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/formdata-parser.js
4437
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/formdata-parser.js
4437
4438
  var require_formdata_parser = __commonJS((exports, module) => {
4438
4439
  var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
4439
4440
  var { utf8DecodeBytes } = require_util2();
@@ -4661,7 +4662,7 @@ var require_formdata_parser = __commonJS((exports, module) => {
4661
4662
  };
4662
4663
  });
4663
4664
 
4664
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/body.js
4665
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/body.js
4665
4666
  var require_body = __commonJS((exports, module) => {
4666
4667
  var util = require_util();
4667
4668
  var {
@@ -4968,7 +4969,7 @@ ${normalizeLinefeeds(value)}\r
4968
4969
  };
4969
4970
  });
4970
4971
 
4971
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/client-h1.js
4972
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client-h1.js
4972
4973
  var require_client_h1 = __commonJS((exports, module) => {
4973
4974
  var assert2 = __require("node:assert");
4974
4975
  var util = require_util();
@@ -5024,6 +5025,9 @@ var require_client_h1 = __commonJS((exports, module) => {
5024
5025
  var FastBuffer = Buffer[Symbol.species];
5025
5026
  var addListener = util.addListener;
5026
5027
  var removeAllListeners = util.removeAllListeners;
5028
+ var kIdleSocketValidation = Symbol("kIdleSocketValidation");
5029
+ var kIdleSocketValidationTimeout = Symbol("kIdleSocketValidationTimeout");
5030
+ var kSocketUsed = Symbol("kSocketUsed");
5027
5031
  var extractBody;
5028
5032
  async function lazyllhttp() {
5029
5033
  const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : undefined;
@@ -5185,24 +5189,55 @@ var require_client_h1 = __commonJS((exports, module) => {
5185
5189
  currentBufferRef = null;
5186
5190
  }
5187
5191
  const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
5188
- if (ret === constants.ERROR.PAUSED_UPGRADE) {
5189
- this.onUpgrade(data.slice(offset));
5190
- } else if (ret === constants.ERROR.PAUSED) {
5191
- this.paused = true;
5192
- socket.unshift(data.slice(offset));
5193
- } else if (ret !== constants.ERROR.OK) {
5194
- const ptr = llhttp.llhttp_get_error_reason(this.ptr);
5195
- let message = "";
5196
- if (ptr) {
5197
- const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
5198
- message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
5192
+ if (ret !== constants.ERROR.OK) {
5193
+ const body = data.subarray(offset);
5194
+ if (ret === constants.ERROR.PAUSED_UPGRADE) {
5195
+ this.onUpgrade(body);
5196
+ } else if (ret === constants.ERROR.PAUSED) {
5197
+ this.paused = true;
5198
+ socket.unshift(body);
5199
+ } else {
5200
+ throw this.createError(ret, body);
5199
5201
  }
5200
- throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset));
5201
5202
  }
5202
5203
  } catch (err) {
5203
5204
  util.destroy(socket, err);
5204
5205
  }
5205
5206
  }
5207
+ finish() {
5208
+ assert2(currentParser === null);
5209
+ assert2(this.ptr != null);
5210
+ assert2(!this.paused);
5211
+ const { llhttp } = this;
5212
+ let ret;
5213
+ try {
5214
+ currentParser = this;
5215
+ ret = llhttp.llhttp_finish(this.ptr);
5216
+ } finally {
5217
+ currentParser = null;
5218
+ }
5219
+ if (ret === constants.ERROR.OK) {
5220
+ return null;
5221
+ }
5222
+ if (ret === constants.ERROR.PAUSED || ret === constants.ERROR.PAUSED_UPGRADE) {
5223
+ this.paused = true;
5224
+ return null;
5225
+ }
5226
+ return this.createError(ret, EMPTY_BUF);
5227
+ }
5228
+ createError(ret, data) {
5229
+ const { llhttp, contentLength, bytesRead } = this;
5230
+ if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
5231
+ return new ResponseContentLengthMismatchError;
5232
+ }
5233
+ const ptr = llhttp.llhttp_get_error_reason(this.ptr);
5234
+ let message = "";
5235
+ if (ptr) {
5236
+ const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
5237
+ message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
5238
+ }
5239
+ return new HTTPParserError(message, constants.ERROR[ret], data);
5240
+ }
5206
5241
  destroy() {
5207
5242
  assert2(this.ptr != null);
5208
5243
  assert2(currentParser == null);
@@ -5222,6 +5257,10 @@ var require_client_h1 = __commonJS((exports, module) => {
5222
5257
  if (socket.destroyed) {
5223
5258
  return -1;
5224
5259
  }
5260
+ if (client[kRunning] === 0) {
5261
+ util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
5262
+ return -1;
5263
+ }
5225
5264
  const request = client[kQueue][client[kRunningIdx]];
5226
5265
  if (!request) {
5227
5266
  return -1;
@@ -5301,6 +5340,10 @@ var require_client_h1 = __commonJS((exports, module) => {
5301
5340
  if (socket.destroyed) {
5302
5341
  return -1;
5303
5342
  }
5343
+ if (client[kRunning] === 0) {
5344
+ util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
5345
+ return -1;
5346
+ }
5304
5347
  const request = client[kQueue][client[kRunningIdx]];
5305
5348
  if (!request) {
5306
5349
  return -1;
@@ -5422,6 +5465,7 @@ var require_client_h1 = __commonJS((exports, module) => {
5422
5465
  }
5423
5466
  request.onComplete(headers);
5424
5467
  client[kQueue][client[kRunningIdx]++] = null;
5468
+ socket[kSocketUsed] = true;
5425
5469
  if (socket[kWriting]) {
5426
5470
  assert2(client[kRunning] === 0);
5427
5471
  util.destroy(socket, new InformationalError("reset"));
@@ -5465,12 +5509,19 @@ var require_client_h1 = __commonJS((exports, module) => {
5465
5509
  socket[kWriting] = false;
5466
5510
  socket[kReset] = false;
5467
5511
  socket[kBlocking] = false;
5512
+ socket[kIdleSocketValidation] = 0;
5513
+ socket[kIdleSocketValidationTimeout] = null;
5514
+ socket[kSocketUsed] = false;
5468
5515
  socket[kParser] = new Parser(client, socket, llhttpInstance);
5469
5516
  addListener(socket, "error", function(err) {
5470
5517
  assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
5471
5518
  const parser = this[kParser];
5472
5519
  if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
5473
- parser.onMessageComplete();
5520
+ const parserErr = parser.finish();
5521
+ if (parserErr) {
5522
+ this[kError] = parserErr;
5523
+ this[kClient][kOnError](parserErr);
5524
+ }
5474
5525
  return;
5475
5526
  }
5476
5527
  this[kError] = err;
@@ -5485,7 +5536,10 @@ var require_client_h1 = __commonJS((exports, module) => {
5485
5536
  addListener(socket, "end", function() {
5486
5537
  const parser = this[kParser];
5487
5538
  if (parser.statusCode && !parser.shouldKeepAlive) {
5488
- parser.onMessageComplete();
5539
+ const parserErr = parser.finish();
5540
+ if (parserErr) {
5541
+ util.destroy(this, parserErr);
5542
+ }
5489
5543
  return;
5490
5544
  }
5491
5545
  util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this)));
@@ -5493,9 +5547,10 @@ var require_client_h1 = __commonJS((exports, module) => {
5493
5547
  addListener(socket, "close", function() {
5494
5548
  const client2 = this[kClient];
5495
5549
  const parser = this[kParser];
5550
+ clearIdleSocketValidation(this);
5496
5551
  if (parser) {
5497
5552
  if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
5498
- parser.onMessageComplete();
5553
+ this[kError] = parser.finish() || this[kError];
5499
5554
  }
5500
5555
  this[kParser].destroy();
5501
5556
  this[kParser] = null;
@@ -5544,7 +5599,7 @@ var require_client_h1 = __commonJS((exports, module) => {
5544
5599
  return socket.destroyed;
5545
5600
  },
5546
5601
  busy(request) {
5547
- if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
5602
+ if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) {
5548
5603
  return true;
5549
5604
  }
5550
5605
  if (request) {
@@ -5562,6 +5617,24 @@ var require_client_h1 = __commonJS((exports, module) => {
5562
5617
  }
5563
5618
  };
5564
5619
  }
5620
+ function clearIdleSocketValidation(socket) {
5621
+ if (socket[kIdleSocketValidationTimeout]) {
5622
+ clearTimeout(socket[kIdleSocketValidationTimeout]);
5623
+ socket[kIdleSocketValidationTimeout] = null;
5624
+ }
5625
+ socket[kIdleSocketValidation] = 0;
5626
+ }
5627
+ function scheduleIdleSocketValidation(client, socket) {
5628
+ socket[kIdleSocketValidation] = 1;
5629
+ socket[kIdleSocketValidationTimeout] = setTimeout(() => {
5630
+ socket[kIdleSocketValidationTimeout] = null;
5631
+ socket[kIdleSocketValidation] = 2;
5632
+ if (client[kSocket] === socket && !socket.destroyed) {
5633
+ client[kResume]();
5634
+ }
5635
+ }, 0);
5636
+ socket[kIdleSocketValidationTimeout].unref?.();
5637
+ }
5565
5638
  function resumeH1(client) {
5566
5639
  const socket = client[kSocket];
5567
5640
  if (socket && !socket.destroyed) {
@@ -5574,6 +5647,29 @@ var require_client_h1 = __commonJS((exports, module) => {
5574
5647
  socket.ref();
5575
5648
  socket[kNoRef] = false;
5576
5649
  }
5650
+ if (client[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) {
5651
+ if (socket[kIdleSocketValidation] === 0) {
5652
+ scheduleIdleSocketValidation(client, socket);
5653
+ socket[kParser].readMore();
5654
+ if (socket.destroyed) {
5655
+ return;
5656
+ }
5657
+ return;
5658
+ }
5659
+ if (socket[kIdleSocketValidation] === 1) {
5660
+ socket[kParser].readMore();
5661
+ if (socket.destroyed) {
5662
+ return;
5663
+ }
5664
+ return;
5665
+ }
5666
+ }
5667
+ if (client[kRunning] === 0) {
5668
+ socket[kParser].readMore();
5669
+ if (socket.destroyed) {
5670
+ return;
5671
+ }
5672
+ }
5577
5673
  if (client[kSize] === 0) {
5578
5674
  if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {
5579
5675
  socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE);
@@ -5626,6 +5722,7 @@ var require_client_h1 = __commonJS((exports, module) => {
5626
5722
  process.emitWarning(new RequestContentLengthMismatchError);
5627
5723
  }
5628
5724
  const socket = client[kSocket];
5725
+ clearIdleSocketValidation(socket);
5629
5726
  const abort = (err) => {
5630
5727
  if (request.aborted || request.completed) {
5631
5728
  return;
@@ -5986,7 +6083,7 @@ ${len.toString(16)}\r
5986
6083
  module.exports = connectH1;
5987
6084
  });
5988
6085
 
5989
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/client-h2.js
6086
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client-h2.js
5990
6087
  var require_client_h2 = __commonJS((exports, module) => {
5991
6088
  var assert2 = __require("node:assert");
5992
6089
  var { pipeline } = __require("node:stream");
@@ -6467,7 +6564,7 @@ var require_client_h2 = __commonJS((exports, module) => {
6467
6564
  module.exports = connectH2;
6468
6565
  });
6469
6566
 
6470
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/handler/redirect-handler.js
6567
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/redirect-handler.js
6471
6568
  var require_redirect_handler = __commonJS((exports, module) => {
6472
6569
  var util = require_util();
6473
6570
  var { kBodyUsed } = require_symbols();
@@ -6624,7 +6721,7 @@ var require_redirect_handler = __commonJS((exports, module) => {
6624
6721
  module.exports = RedirectHandler;
6625
6722
  });
6626
6723
 
6627
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/interceptor/redirect-interceptor.js
6724
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/redirect-interceptor.js
6628
6725
  var require_redirect_interceptor = __commonJS((exports, module) => {
6629
6726
  var RedirectHandler = require_redirect_handler();
6630
6727
  function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
@@ -6643,7 +6740,7 @@ var require_redirect_interceptor = __commonJS((exports, module) => {
6643
6740
  module.exports = createRedirectInterceptor;
6644
6741
  });
6645
6742
 
6646
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/client.js
6743
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client.js
6647
6744
  var require_client = __commonJS((exports, module) => {
6648
6745
  var assert2 = __require("node:assert");
6649
6746
  var net = __require("node:net");
@@ -7131,7 +7228,7 @@ var require_client = __commonJS((exports, module) => {
7131
7228
  module.exports = Client;
7132
7229
  });
7133
7230
 
7134
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/fixed-queue.js
7231
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/fixed-queue.js
7135
7232
  var require_fixed_queue = __commonJS((exports, module) => {
7136
7233
  var kSize = 2048;
7137
7234
  var kMask = kSize - 1;
@@ -7186,7 +7283,7 @@ var require_fixed_queue = __commonJS((exports, module) => {
7186
7283
  };
7187
7284
  });
7188
7285
 
7189
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/pool-stats.js
7286
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool-stats.js
7190
7287
  var require_pool_stats = __commonJS((exports, module) => {
7191
7288
  var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
7192
7289
  var kPool = Symbol("pool");
@@ -7217,7 +7314,7 @@ var require_pool_stats = __commonJS((exports, module) => {
7217
7314
  module.exports = PoolStats;
7218
7315
  });
7219
7316
 
7220
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/pool-base.js
7317
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool-base.js
7221
7318
  var require_pool_base = __commonJS((exports, module) => {
7222
7319
  var DispatcherBase = require_dispatcher_base();
7223
7320
  var FixedQueue = require_fixed_queue();
@@ -7370,7 +7467,7 @@ var require_pool_base = __commonJS((exports, module) => {
7370
7467
  };
7371
7468
  });
7372
7469
 
7373
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/pool.js
7470
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool.js
7374
7471
  var require_pool = __commonJS((exports, module) => {
7375
7472
  var {
7376
7473
  PoolBase,
@@ -7459,7 +7556,7 @@ var require_pool = __commonJS((exports, module) => {
7459
7556
  module.exports = Pool;
7460
7557
  });
7461
7558
 
7462
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/balanced-pool.js
7559
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/balanced-pool.js
7463
7560
  var require_balanced_pool = __commonJS((exports, module) => {
7464
7561
  var {
7465
7562
  BalancedPoolMissingUpstreamError,
@@ -7602,7 +7699,7 @@ var require_balanced_pool = __commonJS((exports, module) => {
7602
7699
  module.exports = BalancedPool;
7603
7700
  });
7604
7701
 
7605
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/agent.js
7702
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/agent.js
7606
7703
  var require_agent = __commonJS((exports, module) => {
7607
7704
  var { InvalidArgumentError } = require_errors();
7608
7705
  var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
@@ -7697,7 +7794,7 @@ var require_agent = __commonJS((exports, module) => {
7697
7794
  module.exports = Agent;
7698
7795
  });
7699
7796
 
7700
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/proxy-agent.js
7797
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/proxy-agent.js
7701
7798
  var require_proxy_agent = __commonJS((exports, module) => {
7702
7799
  var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
7703
7800
  var { URL: URL2 } = __require("node:url");
@@ -7912,7 +8009,7 @@ var require_proxy_agent = __commonJS((exports, module) => {
7912
8009
  module.exports = ProxyAgent;
7913
8010
  });
7914
8011
 
7915
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
8012
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
7916
8013
  var require_env_http_proxy_agent = __commonJS((exports, module) => {
7917
8014
  var DispatcherBase = require_dispatcher_base();
7918
8015
  var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require_symbols();
@@ -8046,7 +8143,7 @@ var require_env_http_proxy_agent = __commonJS((exports, module) => {
8046
8143
  module.exports = EnvHttpProxyAgent;
8047
8144
  });
8048
8145
 
8049
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/handler/retry-handler.js
8146
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/retry-handler.js
8050
8147
  var require_retry_handler = __commonJS((exports, module) => {
8051
8148
  var assert2 = __require("node:assert");
8052
8149
  var { kRetryHandlerDefaultRetry } = require_symbols();
@@ -8303,7 +8400,7 @@ var require_retry_handler = __commonJS((exports, module) => {
8303
8400
  module.exports = RetryHandler;
8304
8401
  });
8305
8402
 
8306
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/dispatcher/retry-agent.js
8403
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/retry-agent.js
8307
8404
  var require_retry_agent = __commonJS((exports, module) => {
8308
8405
  var Dispatcher = require_dispatcher();
8309
8406
  var RetryHandler = require_retry_handler();
@@ -8336,7 +8433,7 @@ var require_retry_agent = __commonJS((exports, module) => {
8336
8433
  module.exports = RetryAgent;
8337
8434
  });
8338
8435
 
8339
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/readable.js
8436
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/readable.js
8340
8437
  var require_readable = __commonJS((exports, module) => {
8341
8438
  var assert2 = __require("node:assert");
8342
8439
  var { Readable } = __require("node:stream");
@@ -8616,7 +8713,7 @@ var require_readable = __commonJS((exports, module) => {
8616
8713
  module.exports = { Readable: BodyReadable, chunksDecode };
8617
8714
  });
8618
8715
 
8619
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/util.js
8716
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/util.js
8620
8717
  var require_util3 = __commonJS((exports, module) => {
8621
8718
  var assert2 = __require("node:assert");
8622
8719
  var {
@@ -8674,7 +8771,7 @@ var require_util3 = __commonJS((exports, module) => {
8674
8771
  };
8675
8772
  });
8676
8773
 
8677
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/api-request.js
8774
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-request.js
8678
8775
  var require_api_request = __commonJS((exports, module) => {
8679
8776
  var assert2 = __require("node:assert");
8680
8777
  var { Readable } = require_readable();
@@ -8854,7 +8951,7 @@ var require_api_request = __commonJS((exports, module) => {
8854
8951
  module.exports.RequestHandler = RequestHandler;
8855
8952
  });
8856
8953
 
8857
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/abort-signal.js
8954
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/abort-signal.js
8858
8955
  var require_abort_signal = __commonJS((exports, module) => {
8859
8956
  var { addAbortListener } = require_util();
8860
8957
  var { RequestAbortedError } = require_errors();
@@ -8903,7 +9000,7 @@ var require_abort_signal = __commonJS((exports, module) => {
8903
9000
  };
8904
9001
  });
8905
9002
 
8906
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/api-stream.js
9003
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-stream.js
8907
9004
  var require_api_stream = __commonJS((exports, module) => {
8908
9005
  var assert2 = __require("node:assert");
8909
9006
  var { finished, PassThrough } = __require("node:stream");
@@ -9070,7 +9167,7 @@ var require_api_stream = __commonJS((exports, module) => {
9070
9167
  module.exports = stream;
9071
9168
  });
9072
9169
 
9073
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/api-pipeline.js
9170
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-pipeline.js
9074
9171
  var require_api_pipeline = __commonJS((exports, module) => {
9075
9172
  var {
9076
9173
  Readable,
@@ -9270,7 +9367,7 @@ var require_api_pipeline = __commonJS((exports, module) => {
9270
9367
  module.exports = pipeline;
9271
9368
  });
9272
9369
 
9273
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/api-upgrade.js
9370
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-upgrade.js
9274
9371
  var require_api_upgrade = __commonJS((exports, module) => {
9275
9372
  var { InvalidArgumentError, SocketError } = require_errors();
9276
9373
  var { AsyncResource } = __require("node:async_hooks");
@@ -9360,7 +9457,7 @@ var require_api_upgrade = __commonJS((exports, module) => {
9360
9457
  module.exports = upgrade;
9361
9458
  });
9362
9459
 
9363
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/api-connect.js
9460
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-connect.js
9364
9461
  var require_api_connect = __commonJS((exports, module) => {
9365
9462
  var assert2 = __require("node:assert");
9366
9463
  var { AsyncResource } = __require("node:async_hooks");
@@ -9448,7 +9545,7 @@ var require_api_connect = __commonJS((exports, module) => {
9448
9545
  module.exports = connect;
9449
9546
  });
9450
9547
 
9451
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/api/index.js
9548
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/index.js
9452
9549
  var require_api = __commonJS((exports, module) => {
9453
9550
  exports.request = require_api_request();
9454
9551
  exports.stream = require_api_stream();
@@ -9457,7 +9554,7 @@ var require_api = __commonJS((exports, module) => {
9457
9554
  exports.connect = require_api_connect();
9458
9555
  });
9459
9556
 
9460
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-errors.js
9557
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-errors.js
9461
9558
  var require_mock_errors = __commonJS((exports, module) => {
9462
9559
  var { UndiciError } = require_errors();
9463
9560
  var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");
@@ -9480,7 +9577,7 @@ var require_mock_errors = __commonJS((exports, module) => {
9480
9577
  };
9481
9578
  });
9482
9579
 
9483
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-symbols.js
9580
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-symbols.js
9484
9581
  var require_mock_symbols = __commonJS((exports, module) => {
9485
9582
  module.exports = {
9486
9583
  kAgent: Symbol("agent"),
@@ -9505,7 +9602,7 @@ var require_mock_symbols = __commonJS((exports, module) => {
9505
9602
  };
9506
9603
  });
9507
9604
 
9508
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-utils.js
9605
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-utils.js
9509
9606
  var require_mock_utils = __commonJS((exports, module) => {
9510
9607
  var { MockNotMatchedError } = require_mock_errors();
9511
9608
  var {
@@ -9795,7 +9892,7 @@ var require_mock_utils = __commonJS((exports, module) => {
9795
9892
  };
9796
9893
  });
9797
9894
 
9798
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-interceptor.js
9895
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-interceptor.js
9799
9896
  var require_mock_interceptor = __commonJS((exports, module) => {
9800
9897
  var { getResponseData, buildKey, addMockDispatch } = require_mock_utils();
9801
9898
  var {
@@ -9932,7 +10029,7 @@ var require_mock_interceptor = __commonJS((exports, module) => {
9932
10029
  exports.MockScope = MockScope;
9933
10030
  });
9934
10031
 
9935
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-client.js
10032
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-client.js
9936
10033
  var require_mock_client = __commonJS((exports, module) => {
9937
10034
  var { promisify: promisify7 } = __require("node:util");
9938
10035
  var Client = require_client();
@@ -9980,7 +10077,7 @@ var require_mock_client = __commonJS((exports, module) => {
9980
10077
  module.exports = MockClient;
9981
10078
  });
9982
10079
 
9983
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-pool.js
10080
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-pool.js
9984
10081
  var require_mock_pool = __commonJS((exports, module) => {
9985
10082
  var { promisify: promisify7 } = __require("node:util");
9986
10083
  var Pool = require_pool();
@@ -10028,7 +10125,7 @@ var require_mock_pool = __commonJS((exports, module) => {
10028
10125
  module.exports = MockPool;
10029
10126
  });
10030
10127
 
10031
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/pluralizer.js
10128
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/pluralizer.js
10032
10129
  var require_pluralizer = __commonJS((exports, module) => {
10033
10130
  var singulars = {
10034
10131
  pronoun: "it",
@@ -10056,7 +10153,7 @@ var require_pluralizer = __commonJS((exports, module) => {
10056
10153
  };
10057
10154
  });
10058
10155
 
10059
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js
10156
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js
10060
10157
  var require_pending_interceptors_formatter = __commonJS((exports, module) => {
10061
10158
  var { Transform } = __require("node:stream");
10062
10159
  var { Console } = __require("node:console");
@@ -10092,7 +10189,7 @@ var require_pending_interceptors_formatter = __commonJS((exports, module) => {
10092
10189
  };
10093
10190
  });
10094
10191
 
10095
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/mock/mock-agent.js
10192
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-agent.js
10096
10193
  var require_mock_agent = __commonJS((exports, module) => {
10097
10194
  var { kClients } = require_symbols();
10098
10195
  var Agent = require_agent();
@@ -10218,7 +10315,7 @@ ${pendingInterceptorsFormatter.format(pending)}
10218
10315
  module.exports = MockAgent;
10219
10316
  });
10220
10317
 
10221
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/global.js
10318
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/global.js
10222
10319
  var require_global2 = __commonJS((exports, module) => {
10223
10320
  var globalDispatcher = Symbol.for("undici.globalDispatcher.1");
10224
10321
  var { InvalidArgumentError } = require_errors();
@@ -10246,7 +10343,7 @@ var require_global2 = __commonJS((exports, module) => {
10246
10343
  };
10247
10344
  });
10248
10345
 
10249
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/handler/decorator-handler.js
10346
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/decorator-handler.js
10250
10347
  var require_decorator_handler = __commonJS((exports, module) => {
10251
10348
  module.exports = class DecoratorHandler {
10252
10349
  #handler;
@@ -10283,7 +10380,7 @@ var require_decorator_handler = __commonJS((exports, module) => {
10283
10380
  };
10284
10381
  });
10285
10382
 
10286
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/interceptor/redirect.js
10383
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/redirect.js
10287
10384
  var require_redirect = __commonJS((exports, module) => {
10288
10385
  var RedirectHandler = require_redirect_handler();
10289
10386
  module.exports = (opts) => {
@@ -10301,7 +10398,7 @@ var require_redirect = __commonJS((exports, module) => {
10301
10398
  };
10302
10399
  });
10303
10400
 
10304
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/interceptor/retry.js
10401
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/retry.js
10305
10402
  var require_retry = __commonJS((exports, module) => {
10306
10403
  var RetryHandler = require_retry_handler();
10307
10404
  module.exports = (globalOpts) => {
@@ -10316,7 +10413,7 @@ var require_retry = __commonJS((exports, module) => {
10316
10413
  };
10317
10414
  });
10318
10415
 
10319
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/interceptor/dump.js
10416
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/dump.js
10320
10417
  var require_dump = __commonJS((exports, module) => {
10321
10418
  var util = require_util();
10322
10419
  var { InvalidArgumentError, RequestAbortedError } = require_errors();
@@ -10401,7 +10498,7 @@ var require_dump = __commonJS((exports, module) => {
10401
10498
  module.exports = createDumpInterceptor;
10402
10499
  });
10403
10500
 
10404
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/interceptor/dns.js
10501
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/dns.js
10405
10502
  var require_dns = __commonJS((exports, module) => {
10406
10503
  var { isIP } = __require("node:net");
10407
10504
  var { lookup } = __require("node:dns");
@@ -10663,7 +10760,7 @@ var require_dns = __commonJS((exports, module) => {
10663
10760
  };
10664
10761
  });
10665
10762
 
10666
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/headers.js
10763
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/headers.js
10667
10764
  var require_headers = __commonJS((exports, module) => {
10668
10765
  var { kConstruct } = require_symbols();
10669
10766
  var { kEnumerableProperty } = require_util();
@@ -11070,7 +11167,7 @@ var require_headers = __commonJS((exports, module) => {
11070
11167
  };
11071
11168
  });
11072
11169
 
11073
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/response.js
11170
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/response.js
11074
11171
  var require_response = __commonJS((exports, module) => {
11075
11172
  var { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers();
11076
11173
  var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body();
@@ -11440,7 +11537,7 @@ var require_response = __commonJS((exports, module) => {
11440
11537
  };
11441
11538
  });
11442
11539
 
11443
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/dispatcher-weakref.js
11540
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/dispatcher-weakref.js
11444
11541
  var require_dispatcher_weakref = __commonJS((exports, module) => {
11445
11542
  var { kConnected, kSize } = require_symbols();
11446
11543
 
@@ -11480,7 +11577,7 @@ var require_dispatcher_weakref = __commonJS((exports, module) => {
11480
11577
  };
11481
11578
  });
11482
11579
 
11483
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/request.js
11580
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/request.js
11484
11581
  var require_request2 = __commonJS((exports, module) => {
11485
11582
  var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body();
11486
11583
  var { Headers: Headers2, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers();
@@ -12070,7 +12167,7 @@ var require_request2 = __commonJS((exports, module) => {
12070
12167
  module.exports = { Request, makeRequest, fromInnerRequest, cloneRequest };
12071
12168
  });
12072
12169
 
12073
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fetch/index.js
12170
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/index.js
12074
12171
  var require_fetch = __commonJS((exports, module) => {
12075
12172
  var {
12076
12173
  makeNetworkError,
@@ -13067,7 +13164,7 @@ var require_fetch = __commonJS((exports, module) => {
13067
13164
  };
13068
13165
  });
13069
13166
 
13070
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fileapi/symbols.js
13167
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/symbols.js
13071
13168
  var require_symbols3 = __commonJS((exports, module) => {
13072
13169
  module.exports = {
13073
13170
  kState: Symbol("FileReader state"),
@@ -13079,7 +13176,7 @@ var require_symbols3 = __commonJS((exports, module) => {
13079
13176
  };
13080
13177
  });
13081
13178
 
13082
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fileapi/progressevent.js
13179
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/progressevent.js
13083
13180
  var require_progressevent = __commonJS((exports, module) => {
13084
13181
  var { webidl } = require_webidl();
13085
13182
  var kState = Symbol("ProgressEvent state");
@@ -13145,7 +13242,7 @@ var require_progressevent = __commonJS((exports, module) => {
13145
13242
  };
13146
13243
  });
13147
13244
 
13148
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fileapi/encoding.js
13245
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/encoding.js
13149
13246
  var require_encoding = __commonJS((exports, module) => {
13150
13247
  function getEncoding(label) {
13151
13248
  if (!label) {
@@ -13428,7 +13525,7 @@ var require_encoding = __commonJS((exports, module) => {
13428
13525
  };
13429
13526
  });
13430
13527
 
13431
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fileapi/util.js
13528
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/util.js
13432
13529
  var require_util4 = __commonJS((exports, module) => {
13433
13530
  var {
13434
13531
  kState,
@@ -13610,7 +13707,7 @@ var require_util4 = __commonJS((exports, module) => {
13610
13707
  };
13611
13708
  });
13612
13709
 
13613
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/fileapi/filereader.js
13710
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/filereader.js
13614
13711
  var require_filereader = __commonJS((exports, module) => {
13615
13712
  var {
13616
13713
  staticPropertyDescriptors,
@@ -13838,14 +13935,14 @@ var require_filereader = __commonJS((exports, module) => {
13838
13935
  };
13839
13936
  });
13840
13937
 
13841
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cache/symbols.js
13938
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/symbols.js
13842
13939
  var require_symbols4 = __commonJS((exports, module) => {
13843
13940
  module.exports = {
13844
13941
  kConstruct: require_symbols().kConstruct
13845
13942
  };
13846
13943
  });
13847
13944
 
13848
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cache/util.js
13945
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/util.js
13849
13946
  var require_util5 = __commonJS((exports, module) => {
13850
13947
  var assert2 = __require("node:assert");
13851
13948
  var { URLSerializer } = require_data_url();
@@ -13872,7 +13969,7 @@ var require_util5 = __commonJS((exports, module) => {
13872
13969
  };
13873
13970
  });
13874
13971
 
13875
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cache/cache.js
13972
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/cache.js
13876
13973
  var require_cache = __commonJS((exports, module) => {
13877
13974
  var { kConstruct } = require_symbols4();
13878
13975
  var { urlEquals, getFieldValues } = require_util5();
@@ -14375,7 +14472,7 @@ var require_cache = __commonJS((exports, module) => {
14375
14472
  };
14376
14473
  });
14377
14474
 
14378
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cache/cachestorage.js
14475
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/cachestorage.js
14379
14476
  var require_cachestorage = __commonJS((exports, module) => {
14380
14477
  var { kConstruct } = require_symbols4();
14381
14478
  var { Cache } = require_cache();
@@ -14460,7 +14557,7 @@ var require_cachestorage = __commonJS((exports, module) => {
14460
14557
  };
14461
14558
  });
14462
14559
 
14463
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cookies/constants.js
14560
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/constants.js
14464
14561
  var require_constants4 = __commonJS((exports, module) => {
14465
14562
  var maxAttributeValueSize = 1024;
14466
14563
  var maxNameValuePairSize = 4096;
@@ -14470,7 +14567,7 @@ var require_constants4 = __commonJS((exports, module) => {
14470
14567
  };
14471
14568
  });
14472
14569
 
14473
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cookies/util.js
14570
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/util.js
14474
14571
  var require_util6 = __commonJS((exports, module) => {
14475
14572
  function isCTLExcludingHtab(value) {
14476
14573
  for (let i = 0;i < value.length; ++i) {
@@ -14612,7 +14709,7 @@ var require_util6 = __commonJS((exports, module) => {
14612
14709
  };
14613
14710
  });
14614
14711
 
14615
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cookies/parse.js
14712
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/parse.js
14616
14713
  var require_parse = __commonJS((exports, module) => {
14617
14714
  var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4();
14618
14715
  var { isCTLExcludingHtab } = require_util6();
@@ -14713,18 +14810,14 @@ var require_parse = __commonJS((exports, module) => {
14713
14810
  } else if (attributeNameLowercase === "httponly") {
14714
14811
  cookieAttributeList.httpOnly = true;
14715
14812
  } else if (attributeNameLowercase === "samesite") {
14716
- let enforcement = "Default";
14717
14813
  const attributeValueLowercase = attributeValue.toLowerCase();
14718
- if (attributeValueLowercase.includes("none")) {
14719
- enforcement = "None";
14720
- }
14721
- if (attributeValueLowercase.includes("strict")) {
14722
- enforcement = "Strict";
14723
- }
14724
- if (attributeValueLowercase.includes("lax")) {
14725
- enforcement = "Lax";
14814
+ if (attributeValueLowercase === "none") {
14815
+ cookieAttributeList.sameSite = "None";
14816
+ } else if (attributeValueLowercase === "strict") {
14817
+ cookieAttributeList.sameSite = "Strict";
14818
+ } else if (attributeValueLowercase === "lax") {
14819
+ cookieAttributeList.sameSite = "Lax";
14726
14820
  }
14727
- cookieAttributeList.sameSite = enforcement;
14728
14821
  } else {
14729
14822
  cookieAttributeList.unparsed ??= [];
14730
14823
  cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`);
@@ -14737,7 +14830,7 @@ var require_parse = __commonJS((exports, module) => {
14737
14830
  };
14738
14831
  });
14739
14832
 
14740
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/cookies/index.js
14833
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/index.js
14741
14834
  var require_cookies = __commonJS((exports, module) => {
14742
14835
  var { parseSetCookie } = require_parse();
14743
14836
  var { stringify } = require_util6();
@@ -14863,7 +14956,7 @@ var require_cookies = __commonJS((exports, module) => {
14863
14956
  };
14864
14957
  });
14865
14958
 
14866
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/events.js
14959
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/events.js
14867
14960
  var require_events = __commonJS((exports, module) => {
14868
14961
  var { webidl } = require_webidl();
14869
14962
  var { kEnumerableProperty } = require_util();
@@ -15125,7 +15218,7 @@ var require_events = __commonJS((exports, module) => {
15125
15218
  };
15126
15219
  });
15127
15220
 
15128
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/constants.js
15221
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/constants.js
15129
15222
  var require_constants5 = __commonJS((exports, module) => {
15130
15223
  var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
15131
15224
  var staticPropertyDescriptors = {
@@ -15179,7 +15272,7 @@ var require_constants5 = __commonJS((exports, module) => {
15179
15272
  };
15180
15273
  });
15181
15274
 
15182
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/symbols.js
15275
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/symbols.js
15183
15276
  var require_symbols5 = __commonJS((exports, module) => {
15184
15277
  module.exports = {
15185
15278
  kWebSocketURL: Symbol("url"),
@@ -15193,7 +15286,7 @@ var require_symbols5 = __commonJS((exports, module) => {
15193
15286
  };
15194
15287
  });
15195
15288
 
15196
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/util.js
15289
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/util.js
15197
15290
  var require_util7 = __commonJS((exports, module) => {
15198
15291
  var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5();
15199
15292
  var { states, opcodes } = require_constants5();
@@ -15341,7 +15434,7 @@ var require_util7 = __commonJS((exports, module) => {
15341
15434
  };
15342
15435
  });
15343
15436
 
15344
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/frame.js
15437
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/frame.js
15345
15438
  var require_frame = __commonJS((exports, module) => {
15346
15439
  var { maxUnsigned16Bit } = require_constants5();
15347
15440
  var BUFFER_SIZE = 16386;
@@ -15413,7 +15506,7 @@ var require_frame = __commonJS((exports, module) => {
15413
15506
  };
15414
15507
  });
15415
15508
 
15416
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/connection.js
15509
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/connection.js
15417
15510
  var require_connection = __commonJS((exports, module) => {
15418
15511
  var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants5();
15419
15512
  var {
@@ -15593,7 +15686,7 @@ var require_connection = __commonJS((exports, module) => {
15593
15686
  };
15594
15687
  });
15595
15688
 
15596
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/permessage-deflate.js
15689
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/permessage-deflate.js
15597
15690
  var require_permessage_deflate = __commonJS((exports, module) => {
15598
15691
  var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = __require("node:zlib");
15599
15692
  var { isValidClientWindowBits } = require_util7();
@@ -15662,7 +15755,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
15662
15755
  module.exports = { PerMessageDeflate };
15663
15756
  });
15664
15757
 
15665
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/receiver.js
15758
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/receiver.js
15666
15759
  var require_receiver = __commonJS((exports, module) => {
15667
15760
  var { Writable } = __require("node:stream");
15668
15761
  var assert2 = __require("node:assert");
@@ -15683,6 +15776,10 @@ var require_receiver = __commonJS((exports, module) => {
15683
15776
  var { closeWebSocketConnection } = require_connection();
15684
15777
  var { PerMessageDeflate } = require_permessage_deflate();
15685
15778
  var { MessageSizeExceededError } = require_errors();
15779
+ function failWebsocketConnectionWithCode(ws, code, reason) {
15780
+ closeWebSocketConnection(ws, code, reason, Buffer.byteLength(reason));
15781
+ failWebsocketConnection(ws, reason);
15782
+ }
15686
15783
 
15687
15784
  class ByteParser extends Writable {
15688
15785
  #buffers = [];
@@ -15693,11 +15790,13 @@ var require_receiver = __commonJS((exports, module) => {
15693
15790
  #info = {};
15694
15791
  #fragments = [];
15695
15792
  #extensions;
15793
+ #maxFragments;
15696
15794
  #maxPayloadSize;
15697
15795
  constructor(ws, extensions, options = {}) {
15698
15796
  super();
15699
15797
  this.ws = ws;
15700
15798
  this.#extensions = extensions == null ? new Map : extensions;
15799
+ this.#maxFragments = options.maxFragments ?? 0;
15701
15800
  this.#maxPayloadSize = options.maxPayloadSize ?? 0;
15702
15801
  if (this.#extensions.has("permessage-deflate")) {
15703
15802
  this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions, options));
@@ -15710,8 +15809,8 @@ var require_receiver = __commonJS((exports, module) => {
15710
15809
  this.run(callback);
15711
15810
  }
15712
15811
  #validatePayloadLength() {
15713
- if (this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && this.#info.payloadLength > this.#maxPayloadSize) {
15714
- failWebsocketConnection(this.ws, "Payload size exceeds maximum allowed size");
15812
+ if (this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && this.#info.payloadLength + this.#fragmentsBytes > this.#maxPayloadSize) {
15813
+ failWebsocketConnectionWithCode(this.ws, 1009, "Payload size exceeds maximum allowed size");
15715
15814
  return false;
15716
15815
  }
15717
15816
  return true;
@@ -15822,9 +15921,11 @@ var require_receiver = __commonJS((exports, module) => {
15822
15921
  this.#state = parserStates.INFO;
15823
15922
  } else {
15824
15923
  if (!this.#info.compressed) {
15825
- this.writeFragments(body);
15924
+ if (!this.writeFragments(body)) {
15925
+ return;
15926
+ }
15826
15927
  if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) {
15827
- failWebsocketConnection(this.ws, new MessageSizeExceededError().message);
15928
+ failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message);
15828
15929
  return;
15829
15930
  }
15830
15931
  if (!this.#info.fragmented && this.#info.fin) {
@@ -15834,12 +15935,15 @@ var require_receiver = __commonJS((exports, module) => {
15834
15935
  } else {
15835
15936
  this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error, data) => {
15836
15937
  if (error) {
15837
- failWebsocketConnection(this.ws, error.message);
15938
+ const code = error instanceof MessageSizeExceededError ? 1009 : 1007;
15939
+ failWebsocketConnectionWithCode(this.ws, code, error.message);
15940
+ return;
15941
+ }
15942
+ if (!this.writeFragments(data)) {
15838
15943
  return;
15839
15944
  }
15840
- this.writeFragments(data);
15841
15945
  if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) {
15842
- failWebsocketConnection(this.ws, new MessageSizeExceededError().message);
15946
+ failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message);
15843
15947
  return;
15844
15948
  }
15845
15949
  if (!this.#info.fin) {
@@ -15891,8 +15995,13 @@ var require_receiver = __commonJS((exports, module) => {
15891
15995
  return buffer;
15892
15996
  }
15893
15997
  writeFragments(fragment) {
15998
+ if (this.#maxFragments > 0 && this.#fragments.length === this.#maxFragments) {
15999
+ failWebsocketConnectionWithCode(this.ws, 1008, "Too many message fragments");
16000
+ return false;
16001
+ }
15894
16002
  this.#fragmentsBytes += fragment.length;
15895
16003
  this.#fragments.push(fragment);
16004
+ return true;
15896
16005
  }
15897
16006
  consumeFragments() {
15898
16007
  const fragments = this.#fragments;
@@ -15983,7 +16092,7 @@ var require_receiver = __commonJS((exports, module) => {
15983
16092
  };
15984
16093
  });
15985
16094
 
15986
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/sender.js
16095
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/sender.js
15987
16096
  var require_sender = __commonJS((exports, module) => {
15988
16097
  var { WebsocketFrameSend } = require_frame();
15989
16098
  var { opcodes, sendHints } = require_constants5();
@@ -16056,7 +16165,7 @@ var require_sender = __commonJS((exports, module) => {
16056
16165
  module.exports = { SendQueue };
16057
16166
  });
16058
16167
 
16059
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/websocket/websocket.js
16168
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/websocket.js
16060
16169
  var require_websocket = __commonJS((exports, module) => {
16061
16170
  var { webidl } = require_webidl();
16062
16171
  var { URLSerializer } = require_data_url();
@@ -16294,8 +16403,11 @@ var require_websocket = __commonJS((exports, module) => {
16294
16403
  }
16295
16404
  #onConnectionEstablished(response, parsedExtensions) {
16296
16405
  this[kResponse] = response;
16297
- const maxPayloadSize = this[kController]?.dispatcher?.webSocketOptions?.maxPayloadSize;
16406
+ const webSocketOptions = this[kController]?.dispatcher?.webSocketOptions;
16407
+ const maxFragments = webSocketOptions?.maxFragments;
16408
+ const maxPayloadSize = webSocketOptions?.maxPayloadSize;
16298
16409
  const parser = new ByteParser(this, parsedExtensions, {
16410
+ maxFragments,
16299
16411
  maxPayloadSize
16300
16412
  });
16301
16413
  parser.on("drain", onParserDrain);
@@ -16409,7 +16521,7 @@ var require_websocket = __commonJS((exports, module) => {
16409
16521
  };
16410
16522
  });
16411
16523
 
16412
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/eventsource/util.js
16524
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/util.js
16413
16525
  var require_util8 = __commonJS((exports, module) => {
16414
16526
  function isValidLastEventId(value) {
16415
16527
  return value.indexOf("\x00") === -1;
@@ -16435,7 +16547,7 @@ var require_util8 = __commonJS((exports, module) => {
16435
16547
  };
16436
16548
  });
16437
16549
 
16438
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/eventsource/eventsource-stream.js
16550
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/eventsource-stream.js
16439
16551
  var require_eventsource_stream = __commonJS((exports, module) => {
16440
16552
  var { Transform } = __require("node:stream");
16441
16553
  var { isASCIINumber, isValidLastEventId } = require_util8();
@@ -16629,7 +16741,7 @@ ${value}`;
16629
16741
  };
16630
16742
  });
16631
16743
 
16632
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/lib/web/eventsource/eventsource.js
16744
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/eventsource.js
16633
16745
  var require_eventsource = __commonJS((exports, module) => {
16634
16746
  var { pipeline } = __require("node:stream");
16635
16747
  var { fetching } = require_fetch();
@@ -18432,6 +18544,88 @@ function inferOperationKind(op) {
18432
18544
  const segments = op.name ? op.name.split("/").filter(Boolean) : [];
18433
18545
  return segments.length >= 3 ? "assertion" : "thing";
18434
18546
  }
18547
+ // ../../packages/rules/src/component-manifest-hash.ts
18548
+ function stableJson(value) {
18549
+ if (!value || typeof value !== "object") {
18550
+ return JSON.stringify(value);
18551
+ }
18552
+ if (Array.isArray(value)) {
18553
+ return `[${value.map((entry) => stableJson(entry)).join(",")}]`;
18554
+ }
18555
+ const record = value;
18556
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(",")}}`;
18557
+ }
18558
+ function stableJsonEquals(left, right) {
18559
+ return stableJson(left) === stableJson(right);
18560
+ }
18561
+
18562
+ // ../../packages/rules/src/component-name-templates.ts
18563
+ var COMPONENT_TEMPLATE_VALUES = {
18564
+ "org-name": (ctx) => ctx.orgName,
18565
+ "repo-name": (ctx) => ctx.repoName
18566
+ };
18567
+ var TEMPLATE_TOKEN_RE = /<([a-z-]+)>/g;
18568
+ function listComponentTemplateTokens(value) {
18569
+ const tokens = new Set;
18570
+ for (const match of value.matchAll(TEMPLATE_TOKEN_RE)) {
18571
+ if (match[1]) {
18572
+ tokens.add(match[1]);
18573
+ }
18574
+ }
18575
+ return [...tokens];
18576
+ }
18577
+ function unsupportedComponentTemplateTokens(value) {
18578
+ return listComponentTemplateTokens(value).filter((token) => !(token in COMPONENT_TEMPLATE_VALUES));
18579
+ }
18580
+ function resolveComponentTemplate(value, ctx) {
18581
+ return value.replace(TEMPLATE_TOKEN_RE, (_match, token) => {
18582
+ const resolver = COMPONENT_TEMPLATE_VALUES[token];
18583
+ if (!resolver) {
18584
+ throw new Error(`Unsupported component template token <${token}>`);
18585
+ }
18586
+ return resolver(ctx);
18587
+ });
18588
+ }
18589
+
18590
+ // ../../packages/rules/src/component-install.ts
18591
+ function manifestShapeData(shape) {
18592
+ const data = { fields: shape.fields };
18593
+ if (shape.description !== undefined)
18594
+ data.description = shape.description;
18595
+ return data;
18596
+ }
18597
+ function shapeDataEquals(left, right) {
18598
+ return stableJsonEquals(left, right);
18599
+ }
18600
+ function describeShapeDataMismatch(expected, actual) {
18601
+ const actualData = actual && typeof actual === "object" && !Array.isArray(actual) ? actual : {};
18602
+ const missing = [];
18603
+ const different = [];
18604
+ for (const key of Object.keys(expected)) {
18605
+ if (!(key in actualData)) {
18606
+ missing.push(key);
18607
+ } else if (!shapeDataEquals(expected[key], actualData[key])) {
18608
+ different.push(key);
18609
+ }
18610
+ }
18611
+ for (const key of Object.keys(actualData)) {
18612
+ if (!(key in expected)) {
18613
+ different.push(key);
18614
+ }
18615
+ }
18616
+ const parts = [];
18617
+ if (missing.length > 0)
18618
+ parts.push(`missing ${missing.join(", ")}`);
18619
+ if (different.length > 0)
18620
+ parts.push(`different ${different.join(", ")}`);
18621
+ return parts.length > 0 ? parts.join("; ") : "data differs";
18622
+ }
18623
+ function resolveManifestCredentialName(name, ctx) {
18624
+ return resolveComponentTemplate(name, {
18625
+ orgName: ctx.orgName,
18626
+ repoName: ctx.repoName
18627
+ });
18628
+ }
18435
18629
  // ../../packages/rules/src/repo-auth-scopes.ts
18436
18630
  var REPO_AUTH_SCOPES = [
18437
18631
  "repo:read",
@@ -18799,53 +18993,6 @@ function validateComponentManifestCliContract(manifest) {
18799
18993
  }
18800
18994
  return findings;
18801
18995
  }
18802
- // ../../packages/rules/src/component-manifest-hash.ts
18803
- function stableJson(value) {
18804
- if (!value || typeof value !== "object") {
18805
- return JSON.stringify(value);
18806
- }
18807
- if (Array.isArray(value)) {
18808
- return `[${value.map((entry) => stableJson(entry)).join(",")}]`;
18809
- }
18810
- const record = value;
18811
- return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(",")}}`;
18812
- }
18813
- function stableJsonEquals(left, right) {
18814
- return stableJson(left) === stableJson(right);
18815
- }
18816
- async function computeComponentManifestHash(manifest) {
18817
- const { createHash } = await import("node:crypto");
18818
- const content = stableJson(manifest);
18819
- return createHash("sha256").update(content).digest("hex").slice(0, 16);
18820
- }
18821
- // ../../packages/rules/src/component-name-templates.ts
18822
- var COMPONENT_TEMPLATE_VALUES = {
18823
- "org-name": (ctx) => ctx.orgName,
18824
- "repo-name": (ctx) => ctx.repoName
18825
- };
18826
- var TEMPLATE_TOKEN_RE = /<([a-z-]+)>/g;
18827
- function listComponentTemplateTokens(value) {
18828
- const tokens = new Set;
18829
- for (const match of value.matchAll(TEMPLATE_TOKEN_RE)) {
18830
- if (match[1]) {
18831
- tokens.add(match[1]);
18832
- }
18833
- }
18834
- return [...tokens];
18835
- }
18836
- function unsupportedComponentTemplateTokens(value) {
18837
- return listComponentTemplateTokens(value).filter((token) => !(token in COMPONENT_TEMPLATE_VALUES));
18838
- }
18839
- function resolveComponentTemplate(value, ctx) {
18840
- return value.replace(TEMPLATE_TOKEN_RE, (_match, token) => {
18841
- const resolver = COMPONENT_TEMPLATE_VALUES[token];
18842
- if (!resolver) {
18843
- throw new Error(`Unsupported component template token <${token}>`);
18844
- }
18845
- return resolver(ctx);
18846
- });
18847
- }
18848
-
18849
18996
  // ../../packages/rules/src/component-version.ts
18850
18997
  var SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
18851
18998
  function isValidSemver(version) {
@@ -21294,7 +21441,7 @@ function findSystemComponent(componentId) {
21294
21441
  // ../../packages/sdk-ts/package.json
21295
21442
  var package_default = {
21296
21443
  name: "@warmhub/sdk-ts",
21297
- version: "0.52.1",
21444
+ version: "0.55.0",
21298
21445
  private: false,
21299
21446
  type: "module",
21300
21447
  description: "The TypeScript SDK for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
@@ -22184,6 +22331,17 @@ class WarmHubClient {
22184
22331
  throw toWarmHubError(error);
22185
22332
  }
22186
22333
  },
22334
+ search: async (query, opts) => {
22335
+ try {
22336
+ return await this.trpc.component.search.query({
22337
+ query,
22338
+ limit: opts?.limit,
22339
+ cursor: opts?.cursor
22340
+ });
22341
+ } catch (error) {
22342
+ throw toWarmHubError(error);
22343
+ }
22344
+ },
22187
22345
  get: async (orgName, repoName, componentRef) => {
22188
22346
  try {
22189
22347
  return await this.trpc.component.get.query({
@@ -22195,6 +22353,28 @@ class WarmHubClient {
22195
22353
  throw toWarmHubError(error);
22196
22354
  }
22197
22355
  },
22356
+ install: async (orgName, repoName, componentRef) => {
22357
+ try {
22358
+ return await this.trpc.component.install.mutate({
22359
+ orgName,
22360
+ repoName,
22361
+ componentRef
22362
+ });
22363
+ } catch (error) {
22364
+ throw toWarmHubError(error);
22365
+ }
22366
+ },
22367
+ uninstall: async (orgName, repoName, componentRef) => {
22368
+ try {
22369
+ return await this.trpc.component.uninstall.mutate({
22370
+ orgName,
22371
+ repoName,
22372
+ componentRef
22373
+ });
22374
+ } catch (error) {
22375
+ throw toWarmHubError(error);
22376
+ }
22377
+ },
22198
22378
  registry: {
22199
22379
  register: async (orgName, componentName, input) => {
22200
22380
  try {
@@ -22519,6 +22699,17 @@ class WarmHubClient {
22519
22699
  throw toWarmHubError(error);
22520
22700
  }
22521
22701
  },
22702
+ search: async (query, opts) => {
22703
+ try {
22704
+ return await this.trpc.repo.search.query({
22705
+ query,
22706
+ limit: opts?.limit,
22707
+ cursor: opts?.cursor
22708
+ });
22709
+ } catch (error) {
22710
+ throw toWarmHubError(error);
22711
+ }
22712
+ },
22522
22713
  create: async (orgName, repoName, description, visibility, displayName) => {
22523
22714
  try {
22524
22715
  return await this.trpc.repo.create.mutate({
@@ -24005,32 +24196,6 @@ function toCliError(err) {
24005
24196
  const message = err instanceof Error ? err.message : String(err);
24006
24197
  return new CliError(1 /* Runtime */, "UNKNOWN", message, err);
24007
24198
  }
24008
- function isAlreadyExistsError(err, seen = new WeakSet) {
24009
- if (typeof err === "string") {
24010
- return err.includes("already exists") || err.includes("ALREADY_EXISTS");
24011
- }
24012
- if (err === null || typeof err !== "object") {
24013
- return false;
24014
- }
24015
- if (seen.has(err)) {
24016
- return false;
24017
- }
24018
- seen.add(err);
24019
- const payloadMessage = err.message;
24020
- const message = err instanceof Error ? err.message : typeof payloadMessage === "string" ? payloadMessage : undefined;
24021
- const isAlreadyExistsMessage = message !== undefined && (message.includes("already exists") || message.includes("ALREADY_EXISTS"));
24022
- const code = err.code;
24023
- if (code === "ALREADY_EXISTS") {
24024
- return true;
24025
- }
24026
- if (code === "CONFLICT") {
24027
- return isAlreadyExistsMessage;
24028
- }
24029
- if (isAlreadyExistsMessage) {
24030
- return true;
24031
- }
24032
- return isAlreadyExistsError(err.cause, seen);
24033
- }
24034
24199
  function generateSuggestions(code, message, context, errorCode) {
24035
24200
  const suggestions = [];
24036
24201
  if (code === "CONFIG" && (message.includes("repo") || message.includes("WARMHUB_REPO"))) {
@@ -24705,37 +24870,65 @@ function makeStderrSink(minLevel) {
24705
24870
  function enforceLineCap(record) {
24706
24871
  const initial = `${JSON.stringify(record)}
24707
24872
  `;
24708
- if (initial.length <= LINE_CAP + 1)
24873
+ if (lineByteLength(initial) <= LINE_CAP + 1)
24709
24874
  return initial;
24710
24875
  const trimmed = { ...record };
24711
24876
  for (let pass = 0;pass < 8; pass++) {
24712
24877
  const candidate = `${JSON.stringify(trimmed)}
24713
24878
  `;
24714
- if (candidate.length <= LINE_CAP + 1)
24879
+ if (lineByteLength(candidate) <= LINE_CAP + 1)
24715
24880
  return candidate;
24716
24881
  let largestKey = null;
24717
24882
  let largestLen = 0;
24718
24883
  for (const [key, val] of Object.entries(trimmed)) {
24719
- if (typeof val === "string" && val.length > largestLen) {
24884
+ if (typeof val === "string") {
24885
+ const byteLen = lineByteLength(val);
24886
+ if (byteLen <= largestLen)
24887
+ continue;
24720
24888
  largestKey = key;
24721
- largestLen = val.length;
24889
+ largestLen = byteLen;
24722
24890
  }
24723
24891
  }
24724
24892
  if (largestKey === null)
24725
24893
  break;
24726
- const overage = candidate.length - LINE_CAP - 1;
24894
+ const overage = lineByteLength(candidate) - LINE_CAP - 1;
24727
24895
  const current = trimmed[largestKey];
24728
- const allowed = Math.max(0, current.length - overage - TRUNCATED_MARKER.length);
24729
- trimmed[largestKey] = `${current.slice(0, allowed)}${TRUNCATED_MARKER}`;
24896
+ const allowedBytes = Math.max(0, lineByteLength(current) - overage - lineByteLength(TRUNCATED_MARKER));
24897
+ trimmed[largestKey] = `${sliceUtf8Bytes(current, allowedBytes)}${TRUNCATED_MARKER}`;
24730
24898
  }
24731
- return `${JSON.stringify({
24899
+ const fallback = {
24732
24900
  v: trimmed.v,
24733
24901
  ts: trimmed.ts,
24734
24902
  level: trimmed.level,
24735
24903
  msg: trimmed.msg,
24736
24904
  truncated: TRUNCATED_MARKER
24737
- })}
24905
+ };
24906
+ let line = `${JSON.stringify(fallback)}
24907
+ `;
24908
+ if (lineByteLength(line) <= LINE_CAP + 1)
24909
+ return line;
24910
+ const emptyMsgLine = `${JSON.stringify({ ...fallback, msg: "" })}
24911
+ `;
24912
+ const msgBudget = Math.max(0, LINE_CAP + 1 - lineByteLength(emptyMsgLine));
24913
+ fallback.msg = sliceUtf8Bytes(fallback.msg, msgBudget);
24914
+ line = `${JSON.stringify(fallback)}
24738
24915
  `;
24916
+ return line;
24917
+ }
24918
+ function lineByteLength(value) {
24919
+ return Buffer.byteLength(value, "utf8");
24920
+ }
24921
+ function sliceUtf8Bytes(value, maxBytes) {
24922
+ let bytes = 0;
24923
+ let result = "";
24924
+ for (const char of value) {
24925
+ const charBytes = lineByteLength(char);
24926
+ if (bytes + charBytes > maxBytes)
24927
+ break;
24928
+ result += char;
24929
+ bytes += charBytes;
24930
+ }
24931
+ return result;
24739
24932
  }
24740
24933
  function rotateIfNeeded(path, dir) {
24741
24934
  if (!existsSync(path))
@@ -25410,10 +25603,11 @@ async function getValidToken(profile) {
25410
25603
  });
25411
25604
  await delay(1000);
25412
25605
  log.info("auth.refresh.retry", { profile: profileName, attempt: 2 });
25606
+ let retryStarted = Date.now();
25413
25607
  try {
25414
25608
  const retryProf = getProfile(profileName, authPath);
25415
25609
  const retryTokens = retryProf?.tokens ?? lockedTokens;
25416
- const retryStarted = Date.now();
25610
+ retryStarted = Date.now();
25417
25611
  const refreshed = await refreshAccessToken(retryTokens);
25418
25612
  saveProfileWhileLocked(profileName, { ...retryProf ?? lockedProf, tokens: refreshed }, authPath);
25419
25613
  log.info("auth.refresh.ok", {
@@ -25428,7 +25622,7 @@ async function getValidToken(profile) {
25428
25622
  const fields = {
25429
25623
  profile: profileName,
25430
25624
  classification,
25431
- duration_ms: Date.now() - refreshStarted,
25625
+ duration_ms: Date.now() - retryStarted,
25432
25626
  error_name: retryErr instanceof Error ? retryErr.name : "Unknown",
25433
25627
  on_retry: true
25434
25628
  };
@@ -26172,9 +26366,34 @@ function writeOutput(ctx, data, prettyFn) {
26172
26366
  }
26173
26367
  prettyFn();
26174
26368
  }
26175
- function emitPartialPageHint(ctx, count, nextCursor, limit) {
26369
+ function pageEnvelope(items, opts) {
26370
+ const nextCursor = opts.nextCursor ?? null;
26371
+ return {
26372
+ items,
26373
+ page: {
26374
+ limit: opts.limit,
26375
+ count: items.length,
26376
+ hasMore: nextCursor !== null,
26377
+ nextCursor
26378
+ }
26379
+ };
26380
+ }
26381
+ function writePageOutput(ctx, items, opts, prettyFn) {
26382
+ if (ctx.format === "json") {
26383
+ printJson(ctx.out, pageEnvelope(items, opts));
26384
+ return;
26385
+ }
26386
+ if (ctx.format === "jsonl") {
26387
+ printJsonl(ctx.out, items);
26388
+ return;
26389
+ }
26390
+ prettyFn();
26391
+ }
26392
+ function emitPartialPageHint(ctx, count, _nextCursor, _limit) {
26393
+ if (ctx.format === "json" || ctx.format === "jsonl")
26394
+ return;
26176
26395
  const c = ctx.colors;
26177
- ctx.status(`${c.yellow}${count} shown, more available${c.reset} use ${c.cyan}--all${c.reset} to fetch every page, ` + `or re-run the same command plus ${c.cyan}--limit=${limit} --cursor=${nextCursor}${c.reset} to resume from here.`);
26396
+ ctx.status(`${c.yellow}${count} shown; more available${c.reset}. Use ${c.cyan}--all${c.reset} to fetch every page.`);
26178
26397
  }
26179
26398
 
26180
26399
  // ../../packages/warmhub-cli/src/domains/thing/shared.ts
@@ -26250,7 +26469,7 @@ var handleAbout = async (ctx, { flags, args }) => {
26250
26469
  apiUrl: ctx.config.apiUrl,
26251
26470
  poll: (c) => c.thing.about(org, repo, wref, aboutOpts),
26252
26471
  render: (r) => {
26253
- renderAboutResult(ctx.out, ctx.colors, r, wref, boundedLimit);
26472
+ renderAboutResult(ctx.out, ctx.colors, r, wref);
26254
26473
  },
26255
26474
  out: ctx.out,
26256
26475
  err: ctx.err,
@@ -26278,22 +26497,21 @@ var handleAbout = async (ctx, { flags, args }) => {
26278
26497
  cur = page.nextCursor;
26279
26498
  }
26280
26499
  const result2 = { target, assertions, nextCursor: undefined };
26281
- writeOutput(ctx, result2, () => renderAboutResult(ctx.out, ctx.colors, result2, wref, boundedLimit));
26500
+ writePageOutput(ctx, assertions, { limit: pageLimit, nextCursor: null }, () => renderAboutResult(ctx.out, ctx.colors, result2, wref));
26282
26501
  return;
26283
26502
  }
26284
26503
  const result = await fetchPage(cursor);
26285
26504
  if (result.nextCursor) {
26286
26505
  emitPartialPageHint(ctx, result.assertions.length, result.nextCursor, boundedLimit);
26287
26506
  }
26288
- writeOutput(ctx, result, () => renderAboutResult(ctx.out, ctx.colors, result, wref, boundedLimit));
26507
+ writePageOutput(ctx, result.assertions, { limit: boundedLimit, nextCursor: result.nextCursor ?? null }, () => renderAboutResult(ctx.out, ctx.colors, result, wref));
26289
26508
  };
26290
- function renderAboutResult(out, c, result, wref, limit) {
26291
- const resumeHint = `${c.dim}Next: --limit=${limit} --cursor=${result.nextCursor}${c.reset}`;
26509
+ function renderAboutResult(out, c, result, wref) {
26292
26510
  out(`${c.bold}Assertions about${c.reset} ${pinnedWref(c, wref)} (${result.assertions.length}${result.nextCursor ? "+" : ""})`);
26293
26511
  if (result.assertions.length === 0) {
26294
26512
  out(` ${c.dim}(no assertions found)${c.reset}`);
26295
26513
  if (result.nextCursor) {
26296
- out(resumeHint);
26514
+ out(`${c.dim}More available. Use --all to fetch every page.${c.reset}`);
26297
26515
  }
26298
26516
  return;
26299
26517
  }
@@ -26301,7 +26519,7 @@ function renderAboutResult(out, c, result, wref, limit) {
26301
26519
  renderAboutAssertion(out, c, a, " ");
26302
26520
  }
26303
26521
  if (result.nextCursor) {
26304
- out(resumeHint);
26522
+ out(`${c.dim}More available. Use --all to fetch every page.${c.reset}`);
26305
26523
  }
26306
26524
  }
26307
26525
  function renderAboutAssertion(out, c, assertion, indent) {
@@ -26714,7 +26932,10 @@ var handleHistory = async (ctx, { flags, args }) => {
26714
26932
  if (!all && result.nextCursor) {
26715
26933
  emitPartialPageHint(ctx, (result.versions ?? []).length, result.nextCursor, boundedLimit);
26716
26934
  }
26717
- writeOutput(ctx, result, () => renderHistory(ctx.out, ctx.colors, result));
26935
+ writePageOutput(ctx, result.versions ?? [], {
26936
+ limit: all ? pageLimit : boundedLimit,
26937
+ nextCursor: result.nextCursor ?? null
26938
+ }, () => renderHistory(ctx.out, ctx.colors, result));
26718
26939
  };
26719
26940
  async function fetchAllHistoryPages(ctx, org, repo, opts) {
26720
26941
  const versions = [];
@@ -26989,7 +27210,10 @@ var handleHead = async (ctx, { flags, args }) => {
26989
27210
  if (!all && result.nextCursor) {
26990
27211
  emitPartialPageHint(ctx, (result.items ?? []).length, result.nextCursor, boundedLimit);
26991
27212
  }
26992
- writeOutput(ctx, result, () => renderHead(ctx.out, ctx.colors, ctx.chars, result, org, repo, shape, kind));
27213
+ writePageOutput(ctx, result.items ?? [], {
27214
+ limit: all ? pageLimit : boundedLimit,
27215
+ nextCursor: result.nextCursor ?? null
27216
+ }, () => renderHead(ctx.out, ctx.colors, ctx.chars, result, org, repo, shape, kind));
26993
27217
  };
26994
27218
  async function fetchAllHeadPages(ctx, org, repo, opts) {
26995
27219
  const items = [];
@@ -27154,7 +27378,10 @@ var handleQuery = async (ctx, { flags }) => {
27154
27378
  if (!all && result.nextCursor) {
27155
27379
  emitPartialPageHint(ctx, (result.items ?? []).length, result.nextCursor, boundedLimit);
27156
27380
  }
27157
- writeOutput(ctx, result, () => renderQueryResults(ctx.out, c, result));
27381
+ writePageOutput(ctx, result.items ?? [], {
27382
+ limit: all ? pageLimit : boundedLimit,
27383
+ nextCursor: result.nextCursor ?? null
27384
+ }, () => renderQueryResults(ctx.out, c, result));
27158
27385
  };
27159
27386
  async function fetchAllQueryPages(ctx, org, repo, opts) {
27160
27387
  const items = [];
@@ -27260,7 +27487,7 @@ var handleRefs = async (ctx, { flags, args }) => {
27260
27487
  cur = page.nextCursor;
27261
27488
  }
27262
27489
  const result2 = { items, nextCursor: undefined };
27263
- writeOutput(ctx, result2, () => renderRefs(ctx.out, ctx.colors, result2, wref, direction));
27490
+ writePageOutput(ctx, items, { limit: pageLimit, nextCursor: null }, () => renderRefs(ctx.out, ctx.colors, result2, wref, direction));
27264
27491
  maybeEmitAboutHint(ctx, direction, items.length, refsQueryIsNarrowed);
27265
27492
  return;
27266
27493
  }
@@ -27268,7 +27495,7 @@ var handleRefs = async (ctx, { flags, args }) => {
27268
27495
  if (result.nextCursor) {
27269
27496
  emitPartialPageHint(ctx, (result.items ?? []).length, result.nextCursor, boundedLimit);
27270
27497
  }
27271
- writeOutput(ctx, result, () => renderRefs(ctx.out, ctx.colors, result, wref, direction));
27498
+ writePageOutput(ctx, result.items ?? [], { limit: boundedLimit, nextCursor: result.nextCursor ?? null }, () => renderRefs(ctx.out, ctx.colors, result, wref, direction));
27272
27499
  maybeEmitAboutHint(ctx, direction, result.items?.length ?? 0, refsQueryIsNarrowed);
27273
27500
  };
27274
27501
  function maybeEmitAboutHint(ctx, direction, itemCount, refsQueryIsNarrowed) {
@@ -27521,7 +27748,10 @@ var handleSearch = async (ctx, { flags, args }) => {
27521
27748
  if (!all && result.nextCursor) {
27522
27749
  emitPartialPageHint(ctx, result.items.length, result.nextCursor, boundedTextLimit);
27523
27750
  }
27524
- writeOutput(ctx, result, () => renderQueryResults(ctx.out, c, result));
27751
+ writePageOutput(ctx, result.items, {
27752
+ limit: all ? pageLimit : boundedTextLimit,
27753
+ nextCursor: result.nextCursor ?? null
27754
+ }, () => renderQueryResults(ctx.out, c, result));
27525
27755
  };
27526
27756
  async function fetchAllSearchPages(ctx, org, repo, queryText, opts) {
27527
27757
  const items = [];
@@ -28206,7 +28436,10 @@ var handleHistory2 = async (ctx, { flags, args }) => {
28206
28436
  versions,
28207
28437
  nextCursor: flags.all ? undefined : nextCursor
28208
28438
  };
28209
- writeOutput(ctx, result, () => renderHistory(ctx.out, ctx.colors, result));
28439
+ if (!flags.all && result.nextCursor) {
28440
+ emitPartialPageHint(ctx, result.versions.length, result.nextCursor, limit);
28441
+ }
28442
+ writePageOutput(ctx, result.versions, { limit, nextCursor: result.nextCursor ?? null }, () => renderHistory(ctx.out, ctx.colors, result));
28210
28443
  };
28211
28444
  var handleCreate2 = async (ctx, { flags, args }) => {
28212
28445
  const { org, repo } = parseOrgRepo(getRepoRef(ctx) ?? args[0], ctx.config);
@@ -28336,7 +28569,10 @@ var handleList = async (ctx, { flags, args }) => {
28336
28569
  if (!all && result2.nextCursor) {
28337
28570
  emitPartialPageHint(ctx, (result2.items ?? []).length, result2.nextCursor, boundedLimit);
28338
28571
  }
28339
- writeOutput(ctx, result2, () => renderHead(ctx.out, ctx.colors, ctx.chars, result2, org, repo, shape, "assertion"));
28572
+ writePageOutput(ctx, result2.items ?? [], {
28573
+ limit: all ? pageLimit : boundedLimit,
28574
+ nextCursor: result2.nextCursor ?? null
28575
+ }, () => renderHead(ctx.out, ctx.colors, ctx.chars, result2, org, repo, shape, "assertion"));
28340
28576
  return;
28341
28577
  }
28342
28578
  const aboutOpts = {
@@ -28388,7 +28624,10 @@ var handleList = async (ctx, { flags, args }) => {
28388
28624
  if (!all && result.nextCursor) {
28389
28625
  emitPartialPageHint(ctx, (result.assertions ?? []).length, result.nextCursor, boundedLimit);
28390
28626
  }
28391
- writeOutput(ctx, result, () => renderAbout(ctx.out, ctx.colors, result));
28627
+ writePageOutput(ctx, result.assertions ?? [], {
28628
+ limit: all ? pageLimit : boundedLimit,
28629
+ nextCursor: result.nextCursor ?? null
28630
+ }, () => renderAbout(ctx.out, ctx.colors, result));
28392
28631
  };
28393
28632
  async function fetchAllAssertionAboutPages(ctx, org, repo, wref, opts) {
28394
28633
  const assertions = [];
@@ -31106,7 +31345,7 @@ async function fetchAllSummaries(client, org, repo) {
31106
31345
  return items;
31107
31346
  }
31108
31347
  function filterActiveItems(items) {
31109
- return items.filter((i) => i.active && i.state !== "paused" && i.state !== "error");
31348
+ return items.filter((i) => i.active && i.state !== "uninstalled" && i.state !== "paused" && i.state !== "error");
31110
31349
  }
31111
31350
  function extractRegisteredRef(data) {
31112
31351
  if (typeof data !== "object" || data === null)
@@ -31481,81 +31720,41 @@ function formatReservedNameWarning(name) {
31481
31720
  return `warning: component name "${name}" shadows the builtin \`wh ${name}\` domain. Operators will need to invoke methods via \`wh component exec ${name} <method>\` — the shorthand \`wh ${name} <method>\` will route to the builtin instead.`;
31482
31721
  }
31483
31722
 
31484
- // ../../packages/warmhub-cli/src/manifest/name-resolution.ts
31485
- function resolveManifestCredentialName(name, ctx) {
31486
- return resolveComponentTemplate(name, {
31487
- orgName: ctx.orgName,
31488
- repoName: ctx.repoName
31489
- });
31490
- }
31491
- function resolveManifestCredentialNames(names, ctx) {
31492
- return (names ?? []).map((name) => resolveManifestCredentialName(name, ctx));
31493
- }
31494
-
31495
- // ../../packages/warmhub-cli/src/manifest/shape-data.ts
31496
- function manifestShapeData(shape) {
31497
- const data = { fields: shape.fields };
31498
- if (shape.description !== undefined)
31499
- data.description = shape.description;
31500
- return data;
31501
- }
31502
- function shapeDataEquals(left, right) {
31503
- return stableJsonEquals(left, right);
31504
- }
31505
- function describeShapeDataMismatch(expected, actual) {
31506
- const actualData = actual && typeof actual === "object" && !Array.isArray(actual) ? actual : {};
31507
- const missing = [];
31508
- const different = [];
31509
- for (const key of Object.keys(expected)) {
31510
- if (!(key in actualData)) {
31511
- missing.push(key);
31512
- } else if (!shapeDataEquals(expected[key], actualData[key])) {
31513
- different.push(key);
31723
+ // ../../packages/warmhub-cli/src/global-search-command.ts
31724
+ var DEFAULT_LIMIT = 25;
31725
+ async function runGlobalSearchCommand(ctx, args) {
31726
+ const c = ctx.colors;
31727
+ const first = await args.fetch({ limit: args.limit, cursor: args.cursor });
31728
+ const items = [...first.items];
31729
+ let nextCursor = first.nextCursor;
31730
+ if (args.all) {
31731
+ while (nextCursor) {
31732
+ const page = await args.fetch({ limit: args.limit, cursor: nextCursor });
31733
+ items.push(...page.items);
31734
+ nextCursor = page.nextCursor;
31514
31735
  }
31515
31736
  }
31516
- for (const key of Object.keys(actualData)) {
31517
- if (!(key in expected)) {
31518
- different.push(key);
31519
- }
31737
+ if (!args.all && nextCursor) {
31738
+ emitPartialPageHint(ctx, items.length, nextCursor, args.limit ?? DEFAULT_LIMIT);
31520
31739
  }
31521
- const parts = [];
31522
- if (missing.length > 0)
31523
- parts.push(`missing ${missing.join(", ")}`);
31524
- if (different.length > 0)
31525
- parts.push(`different ${different.join(", ")}`);
31526
- return parts.length > 0 ? parts.join("; ") : "data differs";
31740
+ writePageOutput(ctx, items, {
31741
+ limit: args.limit ?? DEFAULT_LIMIT,
31742
+ nextCursor: args.all ? null : nextCursor ?? null
31743
+ }, () => {
31744
+ if (items.length === 0) {
31745
+ ctx.status(`${c.dim}No ${args.emptyLabel} matching "${args.query}"${c.reset}`);
31746
+ return;
31747
+ }
31748
+ ctx.out(`${c.bold}${args.title}${c.reset} ${c.dim}"${args.query}"${c.reset}`);
31749
+ ctx.out("");
31750
+ for (const item of items) {
31751
+ const desc = item.description ? ` ${c.dim}${item.description}${c.reset}` : "";
31752
+ ctx.out(` ${c.cyan}${item.orgName}/${item.name}${c.reset}${desc}`);
31753
+ }
31754
+ });
31527
31755
  }
31528
-
31529
31756
  // ../../packages/warmhub-cli/src/manifest/shared-infra.ts
31530
31757
  var SHARED_INFRA_SHAPES = findSystemComponent(SYSTEM_COMPONENT_ID)?.shapes ?? [];
31531
- async function ensureSharedInfra(client, org, repo) {
31532
- for (const shape of SHARED_INFRA_SHAPES) {
31533
- try {
31534
- await client.commit.apply(org, repo, `Ensure ${shape.name} shape`, [
31535
- {
31536
- operation: "add",
31537
- kind: "shape",
31538
- name: shape.name,
31539
- data: { fields: shape.fields }
31540
- }
31541
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
31542
- } catch (err) {
31543
- if (!isAlreadyExistsError(err)) {
31544
- throw err;
31545
- }
31546
- try {
31547
- await client.commit.apply(org, repo, `Tag ${shape.name} with system componentId`, [
31548
- {
31549
- operation: "revise",
31550
- kind: "shape",
31551
- name: shape.name,
31552
- data: { fields: shape.fields }
31553
- }
31554
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
31555
- } catch {}
31556
- }
31557
- }
31558
- }
31559
31758
 
31560
31759
  // ../../packages/warmhub-cli/src/manifest/doctor.ts
31561
31760
  async function doctorComponent(client, org, repo, componentId) {
@@ -31602,6 +31801,14 @@ async function doctorComponent(client, org, repo, componentId) {
31602
31801
  });
31603
31802
  return { componentId, componentName, state: "error", findings };
31604
31803
  }
31804
+ if (existingState === "uninstalled") {
31805
+ findings.push({
31806
+ resource: "state",
31807
+ status: "inactive",
31808
+ message: "Component is uninstalled; reinstall to revive it"
31809
+ });
31810
+ return { componentId, componentName, state: "uninstalled", findings };
31811
+ }
31605
31812
  let manifest;
31606
31813
  try {
31607
31814
  const raw = typeof installData.manifest === "string" ? installData.manifest : undefined;
@@ -31839,129 +32046,6 @@ function parseComponentPackage(dirPath) {
31839
32046
  };
31840
32047
  }
31841
32048
 
31842
- // ../../packages/warmhub-cli/src/manifest/teardown.ts
31843
- async function teardownComponent(client, org, repo, componentId) {
31844
- const steps = [];
31845
- const errors = [];
31846
- let installData;
31847
- try {
31848
- const thing = await client.thing.get(org, repo, `ComponentInstall/${componentId}`);
31849
- installData = thing.data && typeof thing.data === "object" ? thing.data : {};
31850
- } catch {
31851
- return {
31852
- componentId,
31853
- componentName: componentId,
31854
- state: "error",
31855
- steps: [
31856
- {
31857
- step: "load-install",
31858
- status: "error",
31859
- message: `ComponentInstall/${componentId} not found`
31860
- }
31861
- ],
31862
- errors: [`ComponentInstall/${componentId} not found`]
31863
- };
31864
- }
31865
- const componentName = typeof installData.name === "string" ? installData.name : componentId;
31866
- const registeredComponentRef = typeof installData.registeredComponentRef === "string" && installData.registeredComponentRef.length > 0 ? installData.registeredComponentRef : undefined;
31867
- if (!registeredComponentRef) {
31868
- return {
31869
- componentId,
31870
- componentName,
31871
- state: "error",
31872
- steps: [
31873
- {
31874
- step: "load-install",
31875
- status: "error",
31876
- message: "Install record is missing registeredComponentRef"
31877
- }
31878
- ],
31879
- errors: ["Install record is missing registeredComponentRef"]
31880
- };
31881
- }
31882
- let subscriptionNames = [];
31883
- let teardownPolicy = {};
31884
- try {
31885
- const raw = typeof installData.manifest === "string" ? installData.manifest : undefined;
31886
- if (raw) {
31887
- const manifest = JSON.parse(raw);
31888
- subscriptionNames = (manifest.subscriptions ?? []).map((s) => s.name);
31889
- teardownPolicy = manifest.teardown ?? {};
31890
- }
31891
- } catch {
31892
- errors.push("Failed to parse manifest — cannot identify subscriptions");
31893
- steps.push({
31894
- step: "parse-manifest",
31895
- status: "error",
31896
- message: "Invalid manifest JSON"
31897
- });
31898
- }
31899
- const subPolicy = teardownPolicy.subscriptions?.onDisable ?? "pause";
31900
- if (subPolicy === "pause") {
31901
- for (const subName of subscriptionNames) {
31902
- try {
31903
- const sub = await client.subscription.get(org, repo, subName);
31904
- const ownerComponentRef = sub && typeof sub === "object" && "componentRef" in sub ? sub.componentRef : undefined;
31905
- if (typeof ownerComponentRef === "string" && ownerComponentRef !== registeredComponentRef) {
31906
- const msg = `Subscription "${subName}" is owned by "${ownerComponentRef}", not "${registeredComponentRef}"`;
31907
- errors.push(msg);
31908
- steps.push({
31909
- step: `pause-${subName}`,
31910
- status: "error",
31911
- message: msg
31912
- });
31913
- continue;
31914
- }
31915
- await client.subscription.pause(org, repo, subName);
31916
- steps.push({ step: `pause-${subName}`, status: "ok" });
31917
- } catch (err) {
31918
- const msg = err instanceof Error ? err.message : String(err);
31919
- if (msg.includes("already paused") || msg.includes("not active")) {
31920
- steps.push({
31921
- step: `pause-${subName}`,
31922
- status: "skipped",
31923
- message: "Already paused"
31924
- });
31925
- } else if (msg.includes("not found") || msg.includes("NOT_FOUND")) {
31926
- steps.push({
31927
- step: `pause-${subName}`,
31928
- status: "skipped",
31929
- message: "Subscription not found"
31930
- });
31931
- } else {
31932
- errors.push(`Failed to pause ${subName}: ${msg}`);
31933
- steps.push({
31934
- step: `pause-${subName}`,
31935
- status: "error",
31936
- message: msg
31937
- });
31938
- }
31939
- }
31940
- }
31941
- }
31942
- const state = errors.length > 0 ? "degraded" : "paused";
31943
- try {
31944
- await client.commit.apply(org, repo, `Teardown ${componentName}: ${state}`, [
31945
- {
31946
- operation: "revise",
31947
- kind: "thing",
31948
- name: `ComponentInstall/${componentId}`,
31949
- data: {
31950
- ...installData,
31951
- state,
31952
- updatedAt: new Date().toISOString()
31953
- }
31954
- }
31955
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
31956
- steps.push({ step: "update-state", status: "ok" });
31957
- } catch (err) {
31958
- const msg = err instanceof Error ? err.message : String(err);
31959
- errors.push(`Failed to update state: ${msg}`);
31960
- steps.push({ step: "update-state", status: "error", message: msg });
31961
- }
31962
- return { componentId, componentName, state, steps, errors };
31963
- }
31964
-
31965
32049
  // ../../packages/warmhub-cli/src/manifest/validate.ts
31966
32050
  function crossValidate(pkg) {
31967
32051
  const findings = [];
@@ -32025,6 +32109,12 @@ function resolveMintedTokensFlag(args) {
32025
32109
  return false;
32026
32110
  return;
32027
32111
  }
32112
+ var showSecretsFlag = flag.boolean({
32113
+ description: "Reveal raw lifecycle URLs in command output"
32114
+ });
32115
+ var showSecretsStructuredOutputFlag = flag.boolean({
32116
+ description: "Reveal raw lifecycle URLs in JSON/JSONL output"
32117
+ });
32028
32118
  var installFlags = {};
32029
32119
  var updateFlags = {};
32030
32120
  var validateFlags = {};
@@ -32037,13 +32127,15 @@ var listFlags2 = {
32037
32127
  description: "Fetch all pages (auto-paginate until exhausted)"
32038
32128
  })
32039
32129
  };
32130
+ var DEFAULT_COMPONENT_LIST_LIMIT = 50;
32131
+ var MAX_COMPONENT_LIST_LIMIT = 500;
32040
32132
  var viewFlags3 = {};
32041
32133
  var teardownFlags = {};
32042
32134
  var doctorFlags = {};
32043
32135
  var initFlags = {};
32044
32136
  var searchFlags2 = {
32045
32137
  limit: flag.number({
32046
- description: "Maximum components per page (default: 50, max: 500)"
32138
+ description: "Maximum results per page"
32047
32139
  }),
32048
32140
  cursor: flag.string({ description: "Opaque pagination cursor" }),
32049
32141
  all: flag.boolean({
@@ -32089,7 +32181,8 @@ var registerFlags = {
32089
32181
  }),
32090
32182
  "no-minted-tokens": flag.boolean({
32091
32183
  description: "Disable minted tokens (default)"
32092
- })
32184
+ }),
32185
+ "show-secrets": showSecretsFlag
32093
32186
  };
32094
32187
  function readManifestArg(path2) {
32095
32188
  let raw;
@@ -32113,9 +32206,12 @@ var unregisterFlags = {};
32113
32206
  var registryListFlags = {
32114
32207
  org: flag.string({
32115
32208
  description: "Owner org to list registrations for"
32116
- })
32209
+ }),
32210
+ "show-secrets": showSecretsStructuredOutputFlag
32211
+ };
32212
+ var registryViewFlags = {
32213
+ "show-secrets": showSecretsFlag
32117
32214
  };
32118
- var registryViewFlags = {};
32119
32215
  var registryUpdateFlags = {
32120
32216
  manifest: flag.string({
32121
32217
  description: "Path to a manifest.json to publish as a new version (optional; must have a strictly-greater semver)"
@@ -32154,7 +32250,8 @@ var registryUpdateFlags = {
32154
32250
  }),
32155
32251
  "no-minted-tokens": flag.boolean({
32156
32252
  description: "Disable minted tokens"
32157
- })
32253
+ }),
32254
+ "show-secrets": showSecretsFlag
32158
32255
  };
32159
32256
  function asRecord(value) {
32160
32257
  if (!value || typeof value !== "object" || Array.isArray(value)) {
@@ -32248,7 +32345,8 @@ var handleRegister = async (ctx, { flags, args }) => {
32248
32345
  if (reservedWarning) {
32249
32346
  ctx.err(reservedWarning);
32250
32347
  }
32251
- writeOutput(ctx, result, () => renderRegistryEntry(ctx, result));
32348
+ const output = redactRegistryEntryLifecycleUrls(result, flags["show-secrets"]);
32349
+ writeOutput(ctx, output, () => renderRegistryEntry(ctx, output));
32252
32350
  };
32253
32351
  var handleUnregister = async (ctx, { args }) => {
32254
32352
  const { orgName, componentName } = resolveRegisteredComponentRef(args[0], "Usage: wh component unregister <org/name>", "wh component unregister warmhub/veritas");
@@ -32263,12 +32361,14 @@ var handleRegistryList = async (ctx, { flags, args }) => {
32263
32361
  usageError("Usage: wh component registry list --org <org>", "wh component registry list --org warmhub");
32264
32362
  }
32265
32363
  const result = await ctx.client.component.registry.list(orgName);
32266
- writeOutput(ctx, result.items, () => renderRegistryList(ctx, orgName, result));
32364
+ const items = redactRegistryEntryListLifecycleUrls(result.items, flags["show-secrets"]);
32365
+ writePageOutput(ctx, items, { limit: items.length, nextCursor: null }, () => renderRegistryList(ctx, orgName, { ...result, items }));
32267
32366
  };
32268
- var handleRegistryView = async (ctx, { args }) => {
32367
+ var handleRegistryView = async (ctx, { flags, args }) => {
32269
32368
  const { orgName, componentName } = resolveRegisteredComponentRef(args[0], "Usage: wh component registry view <org/name>", "wh component registry view warmhub/veritas");
32270
32369
  const result = await ctx.client.component.registry.view(orgName, componentName);
32271
- writeOutput(ctx, result, () => renderRegistryEntry(ctx, result));
32370
+ const output = redactRegistryEntryLifecycleUrls(result, flags["show-secrets"]);
32371
+ writeOutput(ctx, output, () => renderRegistryEntry(ctx, output));
32272
32372
  };
32273
32373
  var handleRegistryUpdate = async (ctx, { flags, args }) => {
32274
32374
  const { orgName, componentName } = resolveRegisteredComponentRef(args[0], "Usage: wh component registry update <org/name> [flags]", "wh component registry update warmhub/veritas --public");
@@ -32296,9 +32396,10 @@ var handleRegistryUpdate = async (ctx, { flags, args }) => {
32296
32396
  description: flags.description,
32297
32397
  mintedTokens
32298
32398
  });
32299
- writeOutput(ctx, result, () => renderRegistryEntry(ctx, result));
32399
+ const output = redactRegistryEntryLifecycleUrls(result, flags["show-secrets"]);
32400
+ writeOutput(ctx, output, () => renderRegistryEntry(ctx, output));
32300
32401
  };
32301
- var handleInstall = async (ctx, { args }) => {
32402
+ var handleInstall = async (_ctx, { args }) => {
32302
32403
  const source = args[0];
32303
32404
  const usage = "Usage: wh component install <org/name> --repo org/repo";
32304
32405
  const example = "wh component install warmhub/veritas --repo myorg/myrepo";
@@ -32331,9 +32432,12 @@ var handleList2 = async (ctx, { flags }) => {
32331
32432
  const c = ctx.colors;
32332
32433
  const { items, nextCursor } = await fetchComponentPages(ctx.client, org, repo, { all: flags.all, limit: flags.limit, cursor: flags.cursor });
32333
32434
  if (!flags.all && nextCursor) {
32334
- ctx.status(`${c.yellow}${items.length} shown, more available${c.reset} — use ${c.cyan}--all${c.reset} to fetch every page, ` + `or re-run the same command plus ${c.cyan}--cursor=${nextCursor}${c.reset} to resume from here.`);
32435
+ emitPartialPageHint(ctx, items.length, nextCursor, Math.min(flags.limit ?? DEFAULT_COMPONENT_LIST_LIMIT, MAX_COMPONENT_LIST_LIMIT));
32335
32436
  }
32336
- writeOutput(ctx, items, () => {
32437
+ writePageOutput(ctx, items, {
32438
+ limit: Math.min(flags.limit ?? DEFAULT_COMPONENT_LIST_LIMIT, MAX_COMPONENT_LIST_LIMIT),
32439
+ nextCursor: flags.all ? null : nextCursor ?? null
32440
+ }, () => {
32337
32441
  if (!items.length) {
32338
32442
  ctx.status(`${c.dim}No components installed${c.reset}`);
32339
32443
  return;
@@ -32352,30 +32456,20 @@ var handleList2 = async (ctx, { flags }) => {
32352
32456
  var handleSearch2 = async (ctx, { flags, args }) => {
32353
32457
  const query = args[0]?.trim();
32354
32458
  if (!query) {
32355
- usageError("Usage: wh component search <query> --repo org/repo", "wh component search research --repo myorg/myrepo");
32459
+ usageError("Usage: wh component search <query>", 'wh component search "subjective logic"');
32356
32460
  }
32357
- const { org, repo } = parseOrgRepo(getRepoRef(ctx), ctx.config);
32358
- const c = ctx.colors;
32359
- const { items: allItems, nextCursor } = await fetchComponentPages(ctx.client, org, repo, { all: flags.all, limit: flags.limit, cursor: flags.cursor });
32360
- const needle = query.toLowerCase();
32361
- const items = allItems.filter((item) => [item.ref, item.componentName, item.source].filter((value) => typeof value === "string").some((value) => value.toLowerCase().includes(needle)));
32362
- if (!flags.all && nextCursor) {
32363
- ctx.status(`${c.yellow}${allItems.length} component(s) searched, more pages available${c.reset} — matches beyond this page were not searched. ` + `Use ${c.cyan}--all${c.reset} to search every page, ` + `or re-run the same command plus ${c.cyan}--cursor=${nextCursor}${c.reset} to continue from here.`);
32461
+ if (getRepoRef(ctx)) {
32462
+ const c = ctx.colors;
32463
+ ctx.status(`${c.dim}--repo is ignored: \`wh component search\` searches the cross-org registry. ` + `Use \`wh component list --repo <org/repo>\` to see installed components.${c.reset}`);
32364
32464
  }
32365
- writeOutput(ctx, items, () => {
32366
- if (!items.length) {
32367
- ctx.status(`${c.dim}No components matching "${query}" in ${org}/${repo}${c.reset}`);
32368
- return;
32369
- }
32370
- ctx.out(`${c.bold}Matching Components${c.reset} ${c.cyan}${org}/${repo}${c.reset}`);
32371
- ctx.out("");
32372
- for (const item of items) {
32373
- const version = item.version ?? "unknown";
32374
- const state = item.state ?? "unknown";
32375
- const source = item.source ?? "-";
32376
- const stateColor = stateToColor(c, state);
32377
- ctx.out(` ${c.cyan}${item.ref ?? item.componentName}${c.reset} ${stateColor}${state}${c.reset} ${c.dim}v${version}${c.reset} ${source}`);
32378
- }
32465
+ await runGlobalSearchCommand(ctx, {
32466
+ query,
32467
+ all: flags.all,
32468
+ limit: flags.limit,
32469
+ cursor: flags.cursor,
32470
+ fetch: (opts) => ctx.client.component.search(query, opts),
32471
+ title: "Component search",
32472
+ emptyLabel: "public components"
32379
32473
  });
32380
32474
  };
32381
32475
  var handleView3 = async (ctx, { args }) => {
@@ -32479,31 +32573,25 @@ var handleTeardown = async (ctx, { args }) => {
32479
32573
  }
32480
32574
  const { org, repo } = parseOrgRepo(getRepoRef(ctx), ctx.config);
32481
32575
  const repoSlug = `${org}/${repo}`;
32482
- const componentId = await resolveInstalledComponentRefId(ctx.client, org, repo, name);
32483
32576
  let result;
32484
32577
  try {
32485
- result = await teardownComponent(ctx.client, org, repo, componentId);
32578
+ result = await ctx.client.component.uninstall(org, repo, name);
32486
32579
  } catch (error) {
32487
32580
  invalidateInstallSnapshotCache(repoSlug);
32488
32581
  throw error;
32489
32582
  }
32490
- const mutated = result.steps.some((step) => step.status === "ok" && (step.step === "update-state" || step.step.startsWith("pause-")));
32491
- if (mutated) {
32492
- invalidateInstallSnapshotCache(repoSlug);
32493
- try {
32494
- await refreshInstallSnapshotCache(repoSlug, ctx.client);
32495
- } catch {}
32496
- }
32583
+ invalidateInstallSnapshotCache(repoSlug);
32584
+ try {
32585
+ await refreshInstallSnapshotCache(repoSlug, ctx.client);
32586
+ } catch {}
32497
32587
  writeOutput(ctx, result, () => renderTeardownResult(ctx, result));
32498
- if (result.errors.length > 0) {
32499
- throw new CliError(1 /* Runtime */, "UNKNOWN", "Teardown had errors");
32500
- }
32501
32588
  };
32502
32589
  function stateToColor(c, state) {
32503
32590
  switch (state) {
32504
32591
  case "ready":
32505
32592
  return c.green;
32506
32593
  case "paused":
32594
+ case "uninstalled":
32507
32595
  return c.yellow;
32508
32596
  case "degraded":
32509
32597
  return c.red;
@@ -32529,12 +32617,15 @@ function renderTeardownResult(ctx, result) {
32529
32617
  const c = ctx.colors;
32530
32618
  const stateColor = stateToColor(c, result.state);
32531
32619
  ctx.out(`${c.bold}Teardown:${c.reset} ${c.cyan}${result.componentName}${c.reset} ${stateColor}${result.state}${c.reset}`);
32532
- for (const step of result.steps) {
32533
- const icon = step.status === "ok" ? `${c.green}ok` : step.status === "skipped" ? `${c.yellow}skip` : `${c.red}err`;
32534
- ctx.out(` ${icon}${c.reset} ${step.step}${step.message ? ` — ${step.message}` : ""}`);
32620
+ if (result.pausedSubscriptions.length > 0) {
32621
+ ctx.out(` ${c.green}paused${c.reset} ${result.pausedSubscriptions.length} subscription(s): ${result.pausedSubscriptions.join(", ")}`);
32622
+ }
32623
+ if (result.tokensRevoked > 0) {
32624
+ ctx.out(` ${c.green}revoked${c.reset} ${result.tokensRevoked} token(s)`);
32535
32625
  }
32536
- for (const err of result.errors) {
32537
- ctx.out(` ${c.red}error${c.reset}: ${err}`);
32626
+ ctx.out(` uninstall callback: ${result.uninstallDispatched ? `${c.green}dispatched${c.reset}` : `${c.dim}not dispatched${c.reset}`}`);
32627
+ for (const warning of result.warnings) {
32628
+ ctx.out(` ${c.yellow}warning${c.reset}: ${warning}`);
32538
32629
  }
32539
32630
  }
32540
32631
  function renderRegistryEntry(ctx, entry) {
@@ -32550,10 +32641,10 @@ function renderRegistryEntry(ctx, entry) {
32550
32641
  ctx.out(` Source: ${c.dim}(not installable — no source URL)${c.reset}`);
32551
32642
  }
32552
32643
  if (entry.setupUrl) {
32553
- ctx.out(` Setup: ${entry.setupUrl}`);
32644
+ ctx.out(` Setup: ${formatLifecycleUrl(entry.setupUrl, c)}`);
32554
32645
  }
32555
32646
  if (entry.uninstallUrl) {
32556
- ctx.out(` Uninstall: ${entry.uninstallUrl}`);
32647
+ ctx.out(` Uninstall: ${formatLifecycleUrl(entry.uninstallUrl, c)}`);
32557
32648
  }
32558
32649
  if (entry.credentialSetName || entry.credentialSetId) {
32559
32650
  ctx.out(` Credential set: ${entry.credentialSetName ?? entry.credentialSetId}`);
@@ -32563,6 +32654,43 @@ function renderRegistryEntry(ctx, entry) {
32563
32654
  }
32564
32655
  ctx.out(` ${c.dim}Updated: ${new Date(entry.updatedAt).toISOString().slice(0, 16)}${c.reset}`);
32565
32656
  }
32657
+ function redactRegistryEntryLifecycleUrls(entry, showSecrets) {
32658
+ if (showSecrets)
32659
+ return entry;
32660
+ return {
32661
+ ...entry,
32662
+ ...entry.setupUrl ? { setupUrl: redactSecretBearingUrl(entry.setupUrl) } : {},
32663
+ ...entry.uninstallUrl ? { uninstallUrl: redactSecretBearingUrl(entry.uninstallUrl) } : {}
32664
+ };
32665
+ }
32666
+ function redactRegistryEntryListLifecycleUrls(entries, showSecrets) {
32667
+ if (showSecrets)
32668
+ return entries;
32669
+ return entries.map((entry) => redactRegistryEntryLifecycleUrls(entry, showSecrets));
32670
+ }
32671
+ var REDACTED_LIFECYCLE_URL = "[redacted-url]";
32672
+ var REDACTED_LIFECYCLE_PATH_SUFFIX = "/***";
32673
+ function redactSecretBearingUrl(rawUrl) {
32674
+ try {
32675
+ const origin = new URL(rawUrl).origin;
32676
+ if (origin === "null") {
32677
+ return REDACTED_LIFECYCLE_URL;
32678
+ }
32679
+ return `${origin}${REDACTED_LIFECYCLE_PATH_SUFFIX}`;
32680
+ } catch {
32681
+ return REDACTED_LIFECYCLE_URL;
32682
+ }
32683
+ }
32684
+ function formatLifecycleUrl(url, colors) {
32685
+ if (url === REDACTED_LIFECYCLE_URL) {
32686
+ return `${colors.dim}${url}${colors.reset}`;
32687
+ }
32688
+ if (url.endsWith(REDACTED_LIFECYCLE_PATH_SUFFIX)) {
32689
+ const visiblePrefix = url.slice(0, -REDACTED_LIFECYCLE_PATH_SUFFIX.length);
32690
+ return `${visiblePrefix}${colors.dim}${REDACTED_LIFECYCLE_PATH_SUFFIX}${colors.reset}`;
32691
+ }
32692
+ return url;
32693
+ }
32566
32694
  function renderRegistryList(ctx, orgName, result) {
32567
32695
  const c = ctx.colors;
32568
32696
  if (!result.items.length) {
@@ -32686,10 +32814,13 @@ var COMPONENT_DOMAIN = defineDomain({
32686
32814
  handler: handleComponentExec
32687
32815
  },
32688
32816
  search: {
32689
- summary: "Search for components on GitHub",
32817
+ summary: "Search public components across all orgs (the registry). To list components installed in a repo, use `wh component list --repo`.",
32690
32818
  args: "<query>",
32691
32819
  flags: searchFlags2,
32692
- examples: ["wh component search research"],
32820
+ examples: [
32821
+ 'wh component search "subjective logic"',
32822
+ "wh component search reputation"
32823
+ ],
32693
32824
  handler: handleSearch2
32694
32825
  }
32695
32826
  },
@@ -32812,7 +32943,7 @@ var handleCreate3 = async (ctx, { flags, args }) => {
32812
32943
  var handleList3 = async (ctx, { flags }) => {
32813
32944
  const context = resolveCredentialContext({ ctx, orgFlag: flags.org });
32814
32945
  const items = await ctx.client.credential.listSets(context.org, context.repo);
32815
- writeOutput(ctx, items, () => {
32946
+ writePageOutput(ctx, items, { limit: items.length, nextCursor: null }, () => {
32816
32947
  const c = ctx.colors;
32817
32948
  if (!items.length) {
32818
32949
  ctx.status(`${c.dim}No credential sets in ${formatCredentialContextTarget(context)}${c.reset}`);
@@ -32963,7 +33094,7 @@ var handleAudit = async (ctx, { flags, args }) => {
32963
33094
  limit: flags.limit
32964
33095
  })
32965
33096
  });
32966
- writeOutput(ctx, entries, () => {
33097
+ writePageOutput(ctx, entries, { limit: flags.limit ?? entries.length, nextCursor: null }, () => {
32967
33098
  const c = ctx.colors;
32968
33099
  if (!entries.length) {
32969
33100
  ctx.status(`${c.dim}No audit entries for ${setName}${c.reset}`);
@@ -33372,7 +33503,7 @@ function comparePrereleaseIdentifiers2(a, b) {
33372
33503
  return -1;
33373
33504
  if (!aNum && bNum)
33374
33505
  return 1;
33375
- return a.localeCompare(b);
33506
+ return a < b ? -1 : a > b ? 1 : 0;
33376
33507
  }
33377
33508
  function compareVersions(candidate, current) {
33378
33509
  if (candidate.major !== current.major)
@@ -34035,7 +34166,7 @@ var handleNotifications = async (ctx, { flags }) => {
34035
34166
  since: parseSince(flags.since, usage, example),
34036
34167
  limit: flags.limit
34037
34168
  });
34038
- writeOutput(ctx, result, () => renderActionNotifications(ctx.out, ctx.status, ctx.colors, result));
34169
+ writePageOutput(ctx, result, { limit: flags.limit ?? result.length, nextCursor: null }, () => renderActionNotifications(ctx.out, ctx.status, ctx.colors, result));
34039
34170
  };
34040
34171
  var NOTIFICATIONS_DOMAIN = defineDomain({
34041
34172
  kind: "flat",
@@ -34108,7 +34239,7 @@ var handleList4 = async (ctx, { flags }) => {
34108
34239
  const result = await ctx.client.org.list({
34109
34240
  includeArchived: flags["include-archived"]
34110
34241
  });
34111
- writeOutput(ctx, result.items, () => {
34242
+ writePageOutput(ctx, result.items, { limit: result.items.length, nextCursor: null }, () => {
34112
34243
  if (!result.items.length) {
34113
34244
  ctx.status(`${c.dim}No organizations${c.reset}`);
34114
34245
  return;
@@ -34870,6 +35001,8 @@ var repoListFlags = {
34870
35001
  description: "Fetch all pages (auto-paginate until exhausted)"
34871
35002
  })
34872
35003
  };
35004
+ var DEFAULT_REPO_LIST_LIMIT = 50;
35005
+ var MAX_REPO_LIST_LIMIT = 200;
34873
35006
  var handleList5 = async (ctx, { flags, args }) => {
34874
35007
  const orgName = args[0] ?? ctx.config.defaultOrg;
34875
35008
  if (!orgName) {
@@ -34897,9 +35030,12 @@ var handleList5 = async (ctx, { flags, args }) => {
34897
35030
  }
34898
35031
  }
34899
35032
  if (!all && nextCursor) {
34900
- ctx.status(`${c.yellow}${items.length} shown, more available${c.reset} — use ${c.cyan}--all${c.reset} to fetch every page, ` + `or re-run the same command plus ${c.cyan}--cursor=${nextCursor}${c.reset} to resume from here.`);
35033
+ emitPartialPageHint(ctx, items.length, nextCursor, Math.min(flags.limit ?? DEFAULT_REPO_LIST_LIMIT, MAX_REPO_LIST_LIMIT));
34901
35034
  }
34902
- writeOutput(ctx, items, () => {
35035
+ writePageOutput(ctx, items, {
35036
+ limit: Math.min(flags.limit ?? DEFAULT_REPO_LIST_LIMIT, MAX_REPO_LIST_LIMIT),
35037
+ nextCursor: all ? null : nextCursor ?? null
35038
+ }, () => {
34903
35039
  if (!items.length) {
34904
35040
  ctx.status(`${c.dim}No repos in ${orgName}${c.reset}`);
34905
35041
  return;
@@ -35420,6 +35556,30 @@ var CONTENT_SUBDOMAIN = defineDomain({
35420
35556
  }
35421
35557
  }
35422
35558
  });
35559
+ var repoSearchFlags = {
35560
+ limit: flag.number({
35561
+ description: "Maximum results per page (default: 25, max: 100)"
35562
+ }),
35563
+ cursor: flag.string({ description: "Opaque pagination cursor" }),
35564
+ all: flag.boolean({
35565
+ description: "Fetch all pages (auto-paginate until exhausted)"
35566
+ })
35567
+ };
35568
+ var handleRepoSearch = async (ctx, { flags, args }) => {
35569
+ const query = args[0]?.trim();
35570
+ if (!query) {
35571
+ usageError("Usage: wh repo search <query>", 'wh repo search "payment processing"');
35572
+ }
35573
+ await runGlobalSearchCommand(ctx, {
35574
+ query,
35575
+ all: flags.all,
35576
+ limit: flags.limit,
35577
+ cursor: flags.cursor,
35578
+ fetch: (opts) => ctx.client.repo.search(query, opts),
35579
+ title: "Repo search",
35580
+ emptyLabel: "public repos"
35581
+ });
35582
+ };
35423
35583
  var REPO_DOMAIN = defineDomain({
35424
35584
  name: "repo",
35425
35585
  summary: "Repository management",
@@ -35450,6 +35610,14 @@ var REPO_DOMAIN = defineDomain({
35450
35610
  ],
35451
35611
  handler: handleList5
35452
35612
  },
35613
+ search: {
35614
+ prime: true,
35615
+ summary: "Search public repos across all orgs",
35616
+ args: "<query>",
35617
+ flags: repoSearchFlags,
35618
+ examples: ["wh repo search users", "wh repo search users --limit 10"],
35619
+ handler: handleRepoSearch
35620
+ },
35453
35621
  view: {
35454
35622
  prime: true,
35455
35623
  summary: "Show repo details",
@@ -35576,7 +35744,7 @@ var handleList6 = async (ctx, { flags }) => {
35576
35744
  includeRetracted
35577
35745
  });
35578
35746
  const items = result.items;
35579
- writeOutput(ctx, items, () => {
35747
+ writePageOutput(ctx, items, { limit: items.length, nextCursor: null }, () => {
35580
35748
  if (!items.length) {
35581
35749
  ctx.status(`${c.dim}No shapes registered${c.reset}`);
35582
35750
  return;
@@ -35813,7 +35981,7 @@ var handleHistory3 = async (ctx, { flags, args }) => {
35813
35981
  if (!all && result.nextCursor) {
35814
35982
  emitPartialPageHint(ctx, (result.versions ?? []).length, result.nextCursor, pageLimit);
35815
35983
  }
35816
- writeOutput(ctx, result, () => renderHistory(ctx.out, ctx.colors, result));
35984
+ writePageOutput(ctx, result.versions ?? [], { limit: pageLimit, nextCursor: result.nextCursor ?? null }, () => renderHistory(ctx.out, ctx.colors, result));
35817
35985
  };
35818
35986
  var handleShapeRename = async (ctx, { args }) => {
35819
35987
  const oldName = args[0];
@@ -36255,7 +36423,7 @@ var handleList7 = async (ctx, { flags }) => {
36255
36423
  const { org, repo } = resolveRepoContext(ctx);
36256
36424
  const all = await ctx.client.subscription.list(org, repo);
36257
36425
  const items = all.slice(0, flags.limit ?? all.length);
36258
- writeOutput(ctx, items, () => {
36426
+ writePageOutput(ctx, items, { limit: flags.limit ?? all.length, nextCursor: null }, () => {
36259
36427
  const c = ctx.colors;
36260
36428
  if (!items.length) {
36261
36429
  ctx.status(`${c.dim}No subscriptions in ${org}/${repo}${c.reset}`);
@@ -36722,7 +36890,7 @@ var handleCreate8 = async (ctx, { flags }) => {
36722
36890
  var handleList8 = async (ctx, { flags }) => {
36723
36891
  const c = ctx.colors;
36724
36892
  const items = await ctx.client.token.list({ includeInactive: flags.all });
36725
- writeOutput(ctx, items, () => {
36893
+ writePageOutput(ctx, items, { limit: items.length, nextCursor: null }, () => {
36726
36894
  if (!items.length) {
36727
36895
  ctx.status(`${c.dim}No tokens${c.reset}`);
36728
36896
  return;
@@ -37970,862 +38138,6 @@ async function dispatch(ctx) {
37970
38138
  const hint = ctx._domainHint ? ` ${ctx._domainHint}` : "";
37971
38139
  throw new CliError(2 /* UserInput */, "USER_INPUT", `Unknown command: ${command}`, undefined, hint.trim() || "Run 'wh help' for available commands.");
37972
38140
  }
37973
- // ../../packages/warmhub-cli/src/manifest/action-compiler.ts
37974
- function compileSubscription(subscription) {
37975
- if (!subscription.webhookUrl || subscription.webhookUrl.trim().length === 0) {
37976
- throw new Error(`Subscription "${subscription.name}" must declare a non-empty "webhookUrl".`);
37977
- }
37978
- if (subscription.trigger.kind === "cron") {
37979
- throw new Error(`Subscription "${subscription.name}" uses a cron trigger; cron subscriptions are no longer supported. Use an event trigger instead.`);
37980
- }
37981
- if (subscription.trigger.kind === "event") {
37982
- return {
37983
- name: subscription.name,
37984
- kind: "webhook",
37985
- shapeName: subscription.trigger.shape,
37986
- filterJson: subscription.trigger.filter ?? {
37987
- shape: subscription.trigger.shape
37988
- },
37989
- webhookUrl: subscription.webhookUrl,
37990
- fallbackWebhookUrl: subscription.fallbackWebhookUrl,
37991
- credentials: subscription.credentials ?? []
37992
- };
37993
- }
37994
- const triggerKind = subscription.trigger.kind;
37995
- throw new Error(`Subscription "${subscription.name}" has unsupported trigger kind "${triggerKind}".`);
37996
- }
37997
- // ../../packages/warmhub-cli/src/manifest/reconciler.ts
37998
- function normalizeCredentialBindings(names) {
37999
- return [...new Set(names)].sort();
38000
- }
38001
- async function reconcileComponent(client, org, repo, pkg, source, existingInstall) {
38002
- const steps = [];
38003
- const errors = [];
38004
- const { meta, manifest } = pkg;
38005
- const componentId = meta.id;
38006
- const componentRef = source.registeredComponentRef;
38007
- const validation = validateComponentPackage(pkg);
38008
- if (!validation.valid) {
38009
- const validationErrors = validation.findings.filter((f) => f.level === "error").map((f) => f.message);
38010
- return {
38011
- ok: false,
38012
- componentId,
38013
- componentName: meta.name,
38014
- version: meta.version,
38015
- state: "error",
38016
- steps: [
38017
- {
38018
- step: "validate",
38019
- status: "error",
38020
- message: validationErrors.join("; ")
38021
- }
38022
- ],
38023
- errors: validationErrors,
38024
- setupCreates: []
38025
- };
38026
- }
38027
- steps.push({ step: "validate", status: "ok" });
38028
- const partitionedShapes = partitionByProvisioning(manifest.shapes, "Shape");
38029
- const partitionedCreds = partitionByProvisioning(manifest.credentials, "CredentialSet");
38030
- const partitionedSubs = partitionByProvisioning(manifest.subscriptions, "Subscription");
38031
- const setupCreates = [
38032
- ...partitionedShapes.setupRefs,
38033
- ...partitionedCreds.setupRefs,
38034
- ...partitionedSubs.setupRefs
38035
- ];
38036
- const reconcileShapes = partitionedShapes.manifestEntries;
38037
- const reconcileCreds = partitionedCreds.manifestEntries;
38038
- const reconcileSubs = partitionedSubs.manifestEntries;
38039
- await ensureSharedInfra(client, org, repo);
38040
- steps.push({ step: "ensure-shared-infra", status: "ok" });
38041
- const existingData = existingInstall.data;
38042
- const persistedInstallId = typeof existingData?.installId === "string" ? existingData.installId : null;
38043
- let oldManifest;
38044
- if (existingData?.manifest && typeof existingData.manifest === "string") {
38045
- try {
38046
- oldManifest = JSON.parse(existingData.manifest);
38047
- } catch {}
38048
- }
38049
- const previousState = typeof existingData?.state === "string" ? existingData.state : "";
38050
- const isFailedInstallState = previousState === "error" || previousState === "installing";
38051
- const wasIncomplete = isFailedInstallState;
38052
- const oldShapeNames = wasIncomplete ? new Set : new Set(oldManifest?.shapes?.map((s) => s.name) ?? []);
38053
- const oldSubNames = wasIncomplete ? new Set : new Set(oldManifest?.subscriptions?.map((s) => s.name) ?? []);
38054
- const oldCredNames = wasIncomplete ? new Set : new Set(oldManifest?.credentials?.map((c) => c.name) ?? []);
38055
- const liveShapeNames = new Set;
38056
- const liveShapeDataByName = new Map;
38057
- const liveShapeComponentRefByName = new Map;
38058
- for (const shape of reconcileShapes) {
38059
- if (isFailedInstallState || previousState !== "degraded" && !oldShapeNames.has(shape.name)) {
38060
- continue;
38061
- }
38062
- try {
38063
- const liveThing = await client.thing.get(org, repo, shape.name, undefined, {
38064
- includeRetracted: true
38065
- });
38066
- if (liveThing.active === false)
38067
- continue;
38068
- liveShapeNames.add(shape.name);
38069
- try {
38070
- const liveShape = await client.shape.get(org, repo, shape.name, {
38071
- includeRetracted: true
38072
- });
38073
- liveShapeDataByName.set(shape.name, liveShape.version?.data);
38074
- liveShapeComponentRefByName.set(shape.name, liveShape.componentRef);
38075
- } catch {}
38076
- } catch {}
38077
- }
38078
- const liveSubNames = new Set;
38079
- for (const sub of reconcileSubs) {
38080
- if (wasIncomplete || !oldSubNames.has(sub.name))
38081
- continue;
38082
- try {
38083
- await client.subscription.get(org, repo, sub.name);
38084
- liveSubNames.add(sub.name);
38085
- } catch {}
38086
- }
38087
- const liveCredNames = new Set;
38088
- for (const cred of reconcileCreds) {
38089
- if (wasIncomplete || !oldCredNames.has(cred.name))
38090
- continue;
38091
- const credentialSetName = resolveManifestCredentialName(cred.name, {
38092
- orgName: org,
38093
- repoName: repo
38094
- });
38095
- try {
38096
- await client.credential.getSet(org, repo, credentialSetName);
38097
- liveCredNames.add(cred.name);
38098
- } catch {}
38099
- }
38100
- const newShapes = reconcileShapes.filter((s) => !liveShapeNames.has(s.name));
38101
- if (newShapes.length > 0) {
38102
- const shapeOps = newShapes.map((shape) => ({
38103
- operation: "add",
38104
- kind: "shape",
38105
- name: shape.name,
38106
- data: manifestShapeData(shape)
38107
- }));
38108
- try {
38109
- await client.commit.apply(org, repo, `Add new shapes for ${meta.name}`, shapeOps, { componentRef });
38110
- steps.push({ step: "add-new-shapes", status: "ok" });
38111
- } catch (err) {
38112
- const msg = err instanceof Error ? err.message : String(err);
38113
- if (isAlreadyExistsError(err)) {
38114
- steps.push({ step: "add-new-shapes", status: "skipped" });
38115
- } else {
38116
- errors.push(`Failed to add new shapes: ${msg}`);
38117
- steps.push({ step: "add-new-shapes", status: "error", message: msg });
38118
- }
38119
- }
38120
- }
38121
- const changedShapes = reconcileShapes.filter((shape) => {
38122
- if (!liveShapeNames.has(shape.name))
38123
- return false;
38124
- const liveData = liveShapeDataByName.get(shape.name);
38125
- const liveComponentRef = liveShapeComponentRefByName.get(shape.name);
38126
- return liveComponentRef !== componentRef || !shapeDataEquals(manifestShapeData(shape), liveData);
38127
- });
38128
- if (changedShapes.length > 0) {
38129
- const shapeOps = changedShapes.map((shape) => ({
38130
- operation: "revise",
38131
- kind: "shape",
38132
- name: shape.name,
38133
- data: manifestShapeData(shape)
38134
- }));
38135
- try {
38136
- await client.commit.apply(org, repo, `Reconcile shapes for ${meta.name}`, shapeOps, { componentRef });
38137
- steps.push({ step: "claim-existing-shapes", status: "ok" });
38138
- } catch (err) {
38139
- const msg = err instanceof Error ? err.message : String(err);
38140
- errors.push(`Failed to reconcile existing shapes: ${msg}`);
38141
- steps.push({
38142
- step: "claim-existing-shapes",
38143
- status: "error",
38144
- message: msg
38145
- });
38146
- }
38147
- }
38148
- const newCreds = reconcileCreds.filter((c) => !oldCredNames.has(c.name) || !liveCredNames.has(c.name));
38149
- for (const cred of newCreds) {
38150
- const credentialSetName = resolveManifestCredentialName(cred.name, {
38151
- orgName: org,
38152
- repoName: repo
38153
- });
38154
- try {
38155
- await client.credential.createSet(org, repo, credentialSetName, {
38156
- scope: "repo",
38157
- description: cred.description
38158
- });
38159
- steps.push({ step: `add-credential-${credentialSetName}`, status: "ok" });
38160
- } catch (err) {
38161
- const msg = err instanceof Error ? err.message : String(err);
38162
- if (isAlreadyExistsError(err)) {
38163
- steps.push({
38164
- step: `add-credential-${credentialSetName}`,
38165
- status: "skipped"
38166
- });
38167
- } else {
38168
- errors.push(`Failed to add credential ${credentialSetName}: ${msg}`);
38169
- steps.push({
38170
- step: `add-credential-${credentialSetName}`,
38171
- status: "error",
38172
- message: msg
38173
- });
38174
- }
38175
- }
38176
- }
38177
- const newSubs = reconcileSubs.filter((s) => !oldSubNames.has(s.name) || !liveSubNames.has(s.name));
38178
- for (const sub of newSubs) {
38179
- let compiled;
38180
- try {
38181
- compiled = compileSubscription(sub);
38182
- } catch (err) {
38183
- const msg = err instanceof Error ? err.message : String(err);
38184
- errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
38185
- steps.push({
38186
- step: `add-sub-${sub.name}`,
38187
- status: "error",
38188
- message: msg
38189
- });
38190
- continue;
38191
- }
38192
- try {
38193
- await client.subscription.create({
38194
- orgName: org,
38195
- repoName: repo,
38196
- name: compiled.name,
38197
- kind: compiled.kind,
38198
- shapeName: compiled.shapeName,
38199
- filterJson: compiled.filterJson,
38200
- webhookUrl: compiled.webhookUrl,
38201
- fallbackWebhookUrl: compiled.fallbackWebhookUrl,
38202
- componentRef
38203
- });
38204
- steps.push({ step: `add-sub-${sub.name}`, status: "ok" });
38205
- } catch (err) {
38206
- const msg = err instanceof Error ? err.message : String(err);
38207
- if (isAlreadyExistsError(err)) {
38208
- steps.push({ step: `add-sub-${sub.name}`, status: "skipped" });
38209
- } else {
38210
- errors.push(`Failed to add subscription ${sub.name}: ${msg}`);
38211
- steps.push({
38212
- step: `add-sub-${sub.name}`,
38213
- status: "error",
38214
- message: msg
38215
- });
38216
- }
38217
- }
38218
- for (const credName of resolveManifestCredentialNames(compiled.credentials, {
38219
- orgName: org,
38220
- repoName: repo
38221
- })) {
38222
- try {
38223
- await client.subscription.bindCredentials(org, repo, compiled.name, credName);
38224
- } catch {}
38225
- }
38226
- }
38227
- const existingSubs = reconcileSubs.filter((s) => oldSubNames.has(s.name) && liveSubNames.has(s.name));
38228
- for (const sub of existingSubs) {
38229
- const stepName = `update-sub-${sub.name}`;
38230
- let compiled;
38231
- try {
38232
- compiled = compileSubscription(sub);
38233
- } catch (err) {
38234
- const msg = err instanceof Error ? err.message : String(err);
38235
- errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
38236
- steps.push({ step: stepName, status: "error", message: msg });
38237
- continue;
38238
- }
38239
- try {
38240
- const liveSub = await client.subscription.get(org, repo, sub.name);
38241
- if (liveSub.componentRef && liveSub.componentRef !== componentRef) {
38242
- const msg = `Subscription "${sub.name}" is owned by component "${liveSub.componentRef}"`;
38243
- errors.push(msg);
38244
- steps.push({ step: stepName, status: "error", message: msg });
38245
- continue;
38246
- }
38247
- const replacedLegacyCron = liveSub.kind === "cron";
38248
- if (replacedLegacyCron) {
38249
- await client.subscription.remove(org, repo, sub.name);
38250
- try {
38251
- await client.subscription.create({
38252
- orgName: org,
38253
- repoName: repo,
38254
- name: compiled.name,
38255
- kind: compiled.kind,
38256
- shapeName: compiled.shapeName,
38257
- filterJson: compiled.filterJson,
38258
- webhookUrl: compiled.webhookUrl,
38259
- fallbackWebhookUrl: compiled.fallbackWebhookUrl,
38260
- componentRef
38261
- });
38262
- } catch (createErr) {
38263
- const createMsg = createErr instanceof Error ? createErr.message : String(createErr);
38264
- throw new Error(`Failed to create replacement webhook subscription: ${createMsg}; the deactivated legacy cron subscription was deleted — re-run reconcile to create the webhook subscription`);
38265
- }
38266
- if (liveSub.active === false) {
38267
- await client.subscription.pause(org, repo, sub.name);
38268
- }
38269
- } else {
38270
- await client.subscription.update({
38271
- orgName: org,
38272
- repoName: repo,
38273
- name: compiled.name,
38274
- shapeName: compiled.shapeName,
38275
- filterJson: compiled.filterJson,
38276
- webhookUrl: compiled.webhookUrl,
38277
- fallbackWebhookUrl: compiled.fallbackWebhookUrl
38278
- });
38279
- }
38280
- const desiredCredentials = normalizeCredentialBindings(resolveManifestCredentialNames(compiled.credentials, {
38281
- orgName: org,
38282
- repoName: repo
38283
- }));
38284
- const liveCredentials = replacedLegacyCron ? [] : normalizeCredentialBindings(liveSub.credentialSetNames);
38285
- const credentialsChanged = desiredCredentials.length !== liveCredentials.length || desiredCredentials.some((name, index) => name !== liveCredentials[index]);
38286
- if (credentialsChanged && liveCredentials.length > 0) {
38287
- await client.subscription.unbindCredentials(org, repo, compiled.name);
38288
- }
38289
- if (credentialsChanged) {
38290
- for (const credentialSetName of desiredCredentials) {
38291
- await client.subscription.bindCredentials(org, repo, compiled.name, credentialSetName);
38292
- }
38293
- }
38294
- steps.push({
38295
- step: stepName,
38296
- status: "ok",
38297
- ...replacedLegacyCron ? {
38298
- message: liveSub.active === false ? "replaced legacy cron subscription (kept paused — resume after verifying the webhook)" : "replaced legacy cron subscription"
38299
- } : {}
38300
- });
38301
- } catch (err) {
38302
- const msg = err instanceof Error ? err.message : String(err);
38303
- errors.push(`Failed to update subscription ${sub.name}: ${msg}`);
38304
- steps.push({ step: stepName, status: "error", message: msg });
38305
- }
38306
- }
38307
- if (manifest.seeds.length > 0) {
38308
- for (const seed of manifest.seeds) {
38309
- try {
38310
- await client.commit.apply(org, repo, `Seed ${seed.shape}/${seed.name} for ${meta.name}`, [
38311
- {
38312
- operation: "revise",
38313
- kind: "thing",
38314
- name: `${seed.shape}/${seed.name}`,
38315
- data: seed.data
38316
- }
38317
- ], { componentRef });
38318
- } catch (reviseErr) {
38319
- const reviseMsg = reviseErr instanceof Error ? reviseErr.message : String(reviseErr);
38320
- const reviseLooksMissing = reviseMsg.includes("not found") || reviseMsg.includes("NOT_FOUND");
38321
- if (!reviseLooksMissing) {
38322
- errors.push(`Failed to seed ${seed.shape}/${seed.name}: ${reviseMsg}`);
38323
- continue;
38324
- }
38325
- try {
38326
- await client.commit.apply(org, repo, `Seed ${seed.shape}/${seed.name} for ${meta.name}`, [
38327
- {
38328
- operation: "add",
38329
- kind: "thing",
38330
- name: `${seed.shape}/${seed.name}`,
38331
- data: seed.data
38332
- }
38333
- ], { componentRef });
38334
- } catch (addErr) {
38335
- const msg = addErr instanceof Error ? addErr.message : String(addErr);
38336
- if (!isAlreadyExistsError(addErr)) {
38337
- errors.push(`Failed to seed ${seed.shape}/${seed.name}: ${msg}`);
38338
- }
38339
- }
38340
- }
38341
- }
38342
- steps.push({
38343
- step: "reconcile-seeds",
38344
- status: errors.length === 0 ? "ok" : "error"
38345
- });
38346
- }
38347
- const state = errors.length > 0 ? "degraded" : "ready";
38348
- try {
38349
- await client.commit.apply(org, repo, `Reconcile ${meta.name}`, [
38350
- {
38351
- operation: "revise",
38352
- kind: "thing",
38353
- name: `ComponentInstall/${componentId}`,
38354
- data: {
38355
- componentId,
38356
- name: meta.name,
38357
- version: meta.version,
38358
- source: "registry",
38359
- sourceKind: "registered",
38360
- sourceRef: source.ref ?? "",
38361
- resolvedSha: source.resolvedSha ?? "",
38362
- ...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
38363
- manifestHash: await computeComponentManifestHash(manifest),
38364
- state,
38365
- manifest: JSON.stringify(manifest),
38366
- installedAt: typeof existingData?.installedAt === "string" ? existingData.installedAt : new Date().toISOString(),
38367
- updatedAt: new Date().toISOString(),
38368
- ...source.installId ?? persistedInstallId ? { installId: source.installId ?? persistedInstallId } : {}
38369
- }
38370
- }
38371
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
38372
- steps.push({ step: "update-install-record", status: "ok" });
38373
- } catch (err) {
38374
- const msg = err instanceof Error ? err.message : String(err);
38375
- errors.push(`Failed to update install record: ${msg}`);
38376
- steps.push({ step: "update-install-record", status: "error", message: msg });
38377
- }
38378
- return {
38379
- ok: errors.length === 0,
38380
- componentId,
38381
- componentName: meta.name,
38382
- version: meta.version,
38383
- state,
38384
- steps,
38385
- errors,
38386
- setupCreates
38387
- };
38388
- }
38389
-
38390
- // ../../packages/warmhub-cli/src/manifest/installer.ts
38391
- async function installComponent(client, org, repo, pkg, source) {
38392
- const steps = [];
38393
- const errors = [];
38394
- const setupCreates = [];
38395
- const { meta, manifest } = pkg;
38396
- const componentId = meta.id;
38397
- assertCliMethodsAllowedForSource(pkg, source);
38398
- const partitionedShapes = partitionByProvisioning(manifest.shapes, "Shape");
38399
- const partitionedCreds = partitionByProvisioning(manifest.credentials, "CredentialSet");
38400
- const partitionedSubs = partitionByProvisioning(manifest.subscriptions, "Subscription");
38401
- setupCreates.push(...partitionedShapes.setupRefs, ...partitionedCreds.setupRefs, ...partitionedSubs.setupRefs);
38402
- const validation = validateComponentPackage(pkg);
38403
- if (!validation.valid) {
38404
- const validationErrors = validation.findings.filter((f) => f.level === "error").map((f) => f.message);
38405
- return {
38406
- ok: false,
38407
- componentId,
38408
- componentName: meta.name,
38409
- version: meta.version,
38410
- state: "error",
38411
- steps: [
38412
- {
38413
- step: "validate",
38414
- status: "error",
38415
- message: validationErrors.join("; ")
38416
- }
38417
- ],
38418
- errors: validationErrors,
38419
- setupCreates
38420
- };
38421
- }
38422
- steps.push({ step: "validate", status: "ok" });
38423
- try {
38424
- const existing = await client.thing.get(org, repo, `ComponentInstall/${componentId}`, undefined, { includeRetracted: true });
38425
- if (existing) {
38426
- const collision2 = await checkInstallNameCollision({
38427
- client,
38428
- org,
38429
- repo,
38430
- componentId,
38431
- componentName: meta.name
38432
- });
38433
- if (!collision2.ok) {
38434
- errors.push(collision2.message);
38435
- steps.push({
38436
- step: "check-name-collision",
38437
- status: "error",
38438
- message: collision2.message
38439
- });
38440
- return makeResult(componentId, meta, "error", steps, errors, setupCreates);
38441
- }
38442
- return reconcileComponent(client, org, repo, pkg, source, existing);
38443
- }
38444
- } catch (err) {
38445
- if (!isComponentInstallNotFound(err)) {
38446
- throw err;
38447
- }
38448
- }
38449
- const collision = await checkInstallNameCollision({
38450
- client,
38451
- org,
38452
- repo,
38453
- componentId,
38454
- componentName: meta.name
38455
- });
38456
- if (collision.ok) {
38457
- steps.push({ step: "check-name-collision", status: "ok" });
38458
- } else {
38459
- errors.push(collision.message);
38460
- steps.push({
38461
- step: "check-name-collision",
38462
- status: "error",
38463
- message: collision.message
38464
- });
38465
- return makeResult(componentId, meta, "error", steps, errors, setupCreates);
38466
- }
38467
- try {
38468
- await ensureSharedInfra(client, org, repo);
38469
- steps.push({ step: "ensure-shared-infra", status: "ok" });
38470
- } catch (err) {
38471
- const msg = err instanceof Error ? err.message : String(err);
38472
- errors.push(`Failed to ensure shared infra: ${msg}`);
38473
- steps.push({ step: "ensure-shared-infra", status: "error", message: msg });
38474
- return makeResult(componentId, meta, "error", steps, errors, setupCreates);
38475
- }
38476
- try {
38477
- await client.commit.apply(org, repo, `Install ${meta.name}`, [
38478
- {
38479
- operation: "add",
38480
- kind: "thing",
38481
- name: `ComponentInstall/${componentId}`,
38482
- data: {
38483
- componentId,
38484
- name: meta.name,
38485
- version: meta.version,
38486
- source: "registry",
38487
- sourceKind: "registered",
38488
- sourceRef: source.ref ?? "",
38489
- resolvedSha: source.resolvedSha ?? "",
38490
- ...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
38491
- manifestHash: await computeComponentManifestHash(manifest),
38492
- state: "installing",
38493
- manifest: JSON.stringify(manifest),
38494
- installedAt: new Date().toISOString(),
38495
- ...source.installId ? { installId: source.installId } : {}
38496
- }
38497
- }
38498
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
38499
- steps.push({ step: "create-install-record", status: "ok" });
38500
- } catch (err) {
38501
- const msg = err instanceof Error ? err.message : String(err);
38502
- errors.push(`Failed to create install record: ${msg}`);
38503
- steps.push({ step: "create-install-record", status: "error", message: msg });
38504
- return makeResult(componentId, meta, "error", steps, errors, setupCreates);
38505
- }
38506
- if (partitionedShapes.manifestEntries.length > 0) {
38507
- const shapeOps = partitionedShapes.manifestEntries.map((shape) => ({
38508
- operation: "add",
38509
- kind: "shape",
38510
- name: shape.name,
38511
- data: manifestShapeData(shape)
38512
- }));
38513
- try {
38514
- await client.commit.apply(org, repo, `Add shapes for ${meta.name}`, shapeOps, { componentRef: source.registeredComponentRef });
38515
- steps.push({ step: "create-shapes", status: "ok" });
38516
- } catch (err) {
38517
- const msg = err instanceof Error ? err.message : String(err);
38518
- if (isAlreadyExistsError(err)) {
38519
- try {
38520
- await reconcileShapesAfterCreateConflict(client, org, repo, pkg, source);
38521
- steps.push({
38522
- step: "create-shapes",
38523
- status: "ok",
38524
- message: "reconciled existing shapes"
38525
- });
38526
- } catch (fallbackErr) {
38527
- const fallbackMsg = fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr);
38528
- errors.push(`Failed to reconcile existing shapes: ${fallbackMsg}`);
38529
- steps.push({
38530
- step: "create-shapes",
38531
- status: "error",
38532
- message: fallbackMsg
38533
- });
38534
- }
38535
- } else {
38536
- errors.push(`Failed to create shapes: ${msg}`);
38537
- steps.push({ step: "create-shapes", status: "error", message: msg });
38538
- }
38539
- }
38540
- }
38541
- for (const cred of partitionedCreds.manifestEntries) {
38542
- const credentialSetName = resolveManifestCredentialName(cred.name, {
38543
- orgName: org,
38544
- repoName: repo
38545
- });
38546
- try {
38547
- await client.credential.createSet(org, repo, credentialSetName, {
38548
- scope: "repo",
38549
- description: cred.description
38550
- });
38551
- steps.push({
38552
- step: `create-credential-${credentialSetName}`,
38553
- status: "ok"
38554
- });
38555
- } catch (err) {
38556
- const msg = err instanceof Error ? err.message : String(err);
38557
- if (isAlreadyExistsError(err)) {
38558
- steps.push({
38559
- step: `create-credential-${credentialSetName}`,
38560
- status: "skipped",
38561
- message: "already exists"
38562
- });
38563
- } else {
38564
- errors.push(`Failed to create credential set ${credentialSetName}: ${msg}`);
38565
- steps.push({
38566
- step: `create-credential-${credentialSetName}`,
38567
- status: "error",
38568
- message: msg
38569
- });
38570
- }
38571
- }
38572
- }
38573
- for (const sub of partitionedSubs.manifestEntries) {
38574
- let compiled;
38575
- try {
38576
- compiled = compileSubscription(sub);
38577
- } catch (err) {
38578
- const msg = err instanceof Error ? err.message : String(err);
38579
- errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
38580
- steps.push({
38581
- step: `create-sub-${sub.name}`,
38582
- status: "error",
38583
- message: msg
38584
- });
38585
- continue;
38586
- }
38587
- try {
38588
- await client.subscription.create({
38589
- orgName: org,
38590
- repoName: repo,
38591
- name: compiled.name,
38592
- kind: compiled.kind,
38593
- shapeName: compiled.shapeName,
38594
- filterJson: compiled.filterJson,
38595
- webhookUrl: compiled.webhookUrl,
38596
- fallbackWebhookUrl: compiled.fallbackWebhookUrl,
38597
- componentRef: source.registeredComponentRef
38598
- });
38599
- steps.push({ step: `create-sub-${sub.name}`, status: "ok" });
38600
- } catch (err) {
38601
- const msg = err instanceof Error ? err.message : String(err);
38602
- if (isAlreadyExistsError(err)) {
38603
- steps.push({
38604
- step: `create-sub-${sub.name}`,
38605
- status: "skipped",
38606
- message: "already exists"
38607
- });
38608
- } else {
38609
- errors.push(`Failed to create subscription ${sub.name}: ${msg}`);
38610
- steps.push({
38611
- step: `create-sub-${sub.name}`,
38612
- status: "error",
38613
- message: msg
38614
- });
38615
- }
38616
- }
38617
- for (const credName of resolveManifestCredentialNames(compiled.credentials, {
38618
- orgName: org,
38619
- repoName: repo
38620
- })) {
38621
- try {
38622
- await client.subscription.bindCredentials(org, repo, compiled.name, credName);
38623
- } catch {}
38624
- }
38625
- }
38626
- for (const seed of manifest.seeds) {
38627
- const seedName = `${seed.shape}/${seed.name}`;
38628
- try {
38629
- await client.commit.apply(org, repo, `Seed ${seedName} for ${meta.name}`, [
38630
- {
38631
- operation: "add",
38632
- kind: "thing",
38633
- name: seedName,
38634
- data: seed.data
38635
- }
38636
- ], { componentRef: source.registeredComponentRef });
38637
- steps.push({ step: `seed-${seedName}`, status: "ok" });
38638
- } catch (err) {
38639
- const msg = err instanceof Error ? err.message : String(err);
38640
- if (isAlreadyExistsError(err)) {
38641
- steps.push({
38642
- step: `seed-${seedName}`,
38643
- status: "skipped",
38644
- message: "already exists"
38645
- });
38646
- } else {
38647
- errors.push(`Failed to seed ${seedName}: ${msg}`);
38648
- steps.push({ step: `seed-${seedName}`, status: "error", message: msg });
38649
- }
38650
- }
38651
- }
38652
- const state = computeState(errors);
38653
- try {
38654
- await client.commit.apply(org, repo, `Finalize ${meta.name} install`, [
38655
- {
38656
- operation: "revise",
38657
- kind: "thing",
38658
- name: `ComponentInstall/${componentId}`,
38659
- data: {
38660
- componentId,
38661
- name: meta.name,
38662
- version: meta.version,
38663
- source: "registry",
38664
- sourceKind: "registered",
38665
- sourceRef: source.ref ?? "",
38666
- resolvedSha: source.resolvedSha ?? "",
38667
- ...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
38668
- manifestHash: await computeComponentManifestHash(manifest),
38669
- state,
38670
- manifest: JSON.stringify(manifest),
38671
- installedAt: new Date().toISOString(),
38672
- updatedAt: new Date().toISOString(),
38673
- ...source.installId ? { installId: source.installId } : {}
38674
- }
38675
- }
38676
- ], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
38677
- steps.push({ step: "finalize", status: "ok" });
38678
- } catch (err) {
38679
- const msg = err instanceof Error ? err.message : String(err);
38680
- errors.push(`Failed to finalize install: ${msg}`);
38681
- steps.push({ step: "finalize", status: "error", message: msg });
38682
- }
38683
- return makeResult(componentId, meta, state, steps, errors, setupCreates);
38684
- }
38685
- function computeState(errors) {
38686
- if (errors.length > 0)
38687
- return "degraded";
38688
- return "ready";
38689
- }
38690
- function assertCliMethodsAllowedForSource(pkg, source) {
38691
- const hasCliMethods = (pkg.manifest.cli?.methods?.length ?? 0) > 0;
38692
- if (!hasCliMethods)
38693
- return;
38694
- if (typeof source.registeredComponentRef === "string" && source.registeredComponentRef.length > 0) {
38695
- return;
38696
- }
38697
- throw new CliError(2 /* UserInput */, "USER_INPUT", "Components that declare manifest.cli.methods must be installed from the registry.", undefined, "Register the component, then install it as <org>/<name>. Local path and GitHub URL installs cannot expose CLI methods.");
38698
- }
38699
- async function reconcileShapesAfterCreateConflict(client, org, repo, pkg, source) {
38700
- const { meta, manifest } = pkg;
38701
- const existingShapes = new Map;
38702
- for (const shape of manifest.shapes) {
38703
- try {
38704
- const existingShape = await client.shape.get(org, repo, shape.name, {
38705
- includeRetracted: true
38706
- });
38707
- if (existingShape.componentRef !== source.registeredComponentRef) {
38708
- const owner = existingShape.componentRef ? `owned by component "${existingShape.componentRef}"` : "not owned by this component";
38709
- throw new Error(`Shape "${shape.name}" already exists and is ${owner}; cannot reconcile during fresh install`);
38710
- }
38711
- existingShapes.set(shape.name, existingShape);
38712
- } catch (err) {
38713
- if (!isNotFoundError(err)) {
38714
- throw err;
38715
- }
38716
- existingShapes.set(shape.name, undefined);
38717
- }
38718
- }
38719
- for (const shape of manifest.shapes) {
38720
- const data = manifestShapeData(shape);
38721
- const existingShape = existingShapes.get(shape.name);
38722
- if (existingShape && existingShape.active !== false) {
38723
- await client.commit.apply(org, repo, `Reconcile shape ${shape.name} for ${meta.name}`, [
38724
- {
38725
- operation: "revise",
38726
- kind: "shape",
38727
- name: shape.name,
38728
- data
38729
- }
38730
- ], { componentRef: source.registeredComponentRef });
38731
- continue;
38732
- }
38733
- try {
38734
- await client.commit.apply(org, repo, `Add shape ${shape.name} for ${meta.name}`, [
38735
- {
38736
- operation: "add",
38737
- kind: "shape",
38738
- name: shape.name,
38739
- data
38740
- }
38741
- ], { componentRef: source.registeredComponentRef });
38742
- } catch (err) {
38743
- if (isAlreadyExistsError(err)) {
38744
- throw new Error(`Shape "${shape.name}" already exists but ownership could not be verified; cannot reconcile during fresh install`);
38745
- }
38746
- throw err;
38747
- }
38748
- }
38749
- }
38750
- function makeResult(componentId, meta, state, steps, errors, setupCreates = []) {
38751
- return {
38752
- ok: errors.length === 0,
38753
- componentId,
38754
- componentName: meta.name,
38755
- version: meta.version,
38756
- state,
38757
- steps,
38758
- errors,
38759
- setupCreates
38760
- };
38761
- }
38762
- function partitionByProvisioning(entries, kind) {
38763
- const manifestEntries = [];
38764
- const setupRefs = [];
38765
- for (const entry of entries) {
38766
- if (entry.provisioning === "setup") {
38767
- setupRefs.push(`${kind}/${entry.name}`);
38768
- } else {
38769
- manifestEntries.push(entry);
38770
- }
38771
- }
38772
- return { manifestEntries, setupRefs };
38773
- }
38774
- function isComponentInstallNotFound(err) {
38775
- if (err instanceof WarmHubError) {
38776
- return err.kind === "NOT_FOUND";
38777
- }
38778
- const message = err instanceof Error ? err.message : typeof err === "string" ? err : "";
38779
- return message.includes("NOT_FOUND") || message.toLowerCase().includes("not found");
38780
- }
38781
- async function checkInstallNameCollision(args) {
38782
- try {
38783
- let cursor;
38784
- do {
38785
- const installs = await args.client.thing.query(args.org, args.repo, {
38786
- shape: "ComponentInstall",
38787
- kind: "thing",
38788
- limit: 500,
38789
- cursor
38790
- });
38791
- const colliding = installs.items.find((item) => {
38792
- const data = item.data ?? {};
38793
- return typeof data.name === "string" && data.name === args.componentName && typeof data.componentId === "string" && data.componentId !== args.componentId;
38794
- });
38795
- if (colliding) {
38796
- const otherData = colliding.data ?? {};
38797
- const otherId = typeof otherData.componentId === "string" ? otherData.componentId : "<unknown>";
38798
- return {
38799
- ok: false,
38800
- message: `Cannot install "${args.componentName}" (componentId ${args.componentId}) into ${args.org}/${args.repo}: ` + `another component with the same name is already installed there (componentId ${otherId}). ` + "Two components sharing a name collide on `wh <name>` resolution and on the " + "`ComponentConfig/<name>` dispatch-config thing. Remove the existing install record or pick a different name."
38801
- };
38802
- }
38803
- cursor = installs.nextCursor;
38804
- } while (cursor);
38805
- return { ok: true };
38806
- } catch (err) {
38807
- if (isComponentInstallNotFound(err)) {
38808
- return { ok: true };
38809
- }
38810
- const msg = err instanceof Error ? err.message : String(err);
38811
- return { ok: false, message: `Failed to check name collision: ${msg}` };
38812
- }
38813
- }
38814
- function isNotFoundError(err) {
38815
- return isComponentInstallNotFound(err);
38816
- }
38817
- async function installFromManifest(client, org, repo, manifest, source) {
38818
- const pkg = {
38819
- meta: {
38820
- id: manifest.component.id,
38821
- name: manifest.component.name,
38822
- version: manifest.component.version
38823
- },
38824
- manifest,
38825
- rootDir: ""
38826
- };
38827
- return installComponent(client, org, repo, pkg, source);
38828
- }
38829
38141
  // ../../packages/warmhub-cli/package.json
38830
38142
  var package_default2 = {
38831
38143
  name: "@warmhub/warmhub-cli",
@@ -38960,14 +38272,16 @@ async function runCli(argv, opts) {
38960
38272
  teeStderr: debugMode,
38961
38273
  whVersion: version
38962
38274
  });
38963
- process.once("uncaughtException", (e) => {
38275
+ const handleUncaughtException = (e) => {
38964
38276
  logger.crash(e, "uncaughtException");
38965
38277
  process.exit(1);
38966
- });
38967
- process.once("unhandledRejection", (reason) => {
38278
+ };
38279
+ const handleUnhandledRejection = (reason) => {
38968
38280
  logger.crash(reason, "unhandledRejection");
38969
38281
  process.exit(1);
38970
- });
38282
+ };
38283
+ process.once("uncaughtException", handleUncaughtException);
38284
+ process.once("unhandledRejection", handleUnhandledRejection);
38971
38285
  logger.info("cli.start", {
38972
38286
  argv: redactArgv(argv),
38973
38287
  version,
@@ -38977,6 +38291,7 @@ async function runCli(argv, opts) {
38977
38291
  profile: getStringFlag(invocation.flags, "profile", "P") ?? undefined
38978
38292
  });
38979
38293
  let exitCode = 0 /* Ok */;
38294
+ let removeSignalListeners;
38980
38295
  try {
38981
38296
  canonicalizeGlobalFlags({ invocation });
38982
38297
  const retirementHint = lookupInvocationRenameHint(invocation);
@@ -39029,17 +38344,23 @@ async function runCli(argv, opts) {
39029
38344
  const chars = makeChars();
39030
38345
  const ac = new AbortController;
39031
38346
  const liveMode = getBoolFlag(invocation.flags, "live");
39032
- process.on("SIGINT", () => {
38347
+ const handleSigint = () => {
39033
38348
  ac.abort();
39034
38349
  logger.info("cli.cancelled", { signal: "SIGINT" });
39035
38350
  if (!liveMode)
39036
38351
  process.exitCode = 130 /* Cancelled */;
39037
- });
39038
- process.on("SIGTERM", () => {
38352
+ };
38353
+ const handleSigterm = () => {
39039
38354
  ac.abort();
39040
38355
  logger.info("cli.cancelled", { signal: "SIGTERM" });
39041
38356
  process.exitCode = 143;
39042
- });
38357
+ };
38358
+ process.on("SIGINT", handleSigint);
38359
+ process.on("SIGTERM", handleSigterm);
38360
+ removeSignalListeners = () => {
38361
+ process.removeListener("SIGINT", handleSigint);
38362
+ process.removeListener("SIGTERM", handleSigterm);
38363
+ };
39043
38364
  await dispatch({
39044
38365
  client,
39045
38366
  config,
@@ -39098,6 +38419,9 @@ async function runCli(argv, opts) {
39098
38419
  });
39099
38420
  return exitCode;
39100
38421
  } finally {
38422
+ process.removeListener("uncaughtException", handleUncaughtException);
38423
+ process.removeListener("unhandledRejection", handleUnhandledRejection);
38424
+ removeSignalListeners?.();
39101
38425
  logger.info("cli.end", {
39102
38426
  exit_code: exitCode,
39103
38427
  duration_ms: Date.now() - startedAt
@@ -39153,7 +38477,7 @@ function resolveLogLevel(flags, env) {
39153
38477
  // package.json
39154
38478
  var package_default3 = {
39155
38479
  name: "@warmhub/cli",
39156
- version: "0.53.0",
38480
+ version: "0.55.0",
39157
38481
  private: false,
39158
38482
  type: "module",
39159
38483
  description: "The wh CLI for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
@@ -39207,43 +38531,12 @@ var package_default3 = {
39207
38531
  devDependencies: {
39208
38532
  "@warmhub/warmhub-cli": "workspace:*",
39209
38533
  typescript: "5.9.3",
39210
- undici: "6.25.0",
38534
+ undici: "6.27.0",
39211
38535
  vitest: "4.1.5"
39212
38536
  }
39213
38537
  };
39214
38538
 
39215
- // ../../packages/warmhub-cli/src/component-update-source.ts
39216
- function resolveComponentUpdateSource(data) {
39217
- const sourceKind = typeof data.sourceKind === "string" ? data.sourceKind : "";
39218
- const registeredComponentRef = typeof data.registeredComponentRef === "string" ? data.registeredComponentRef : "";
39219
- const source = typeof data.source === "string" ? data.source : "";
39220
- const repoUrl = typeof data.repoUrl === "string" ? data.repoUrl : "";
39221
- const effectiveSource = source || repoUrl;
39222
- if (sourceKind === "system" || effectiveSource === "system") {
39223
- const componentId = typeof data.sourceRef === "string" && data.sourceRef ? data.sourceRef : typeof data.componentId === "string" && data.componentId ? data.componentId : "";
39224
- if (componentId) {
39225
- return { kind: "system", componentId };
39226
- }
39227
- return { kind: "invalid", source: effectiveSource || "system" };
39228
- }
39229
- if (sourceKind === "registered" && registeredComponentRef !== "") {
39230
- return {
39231
- kind: "registered",
39232
- componentRef: registeredComponentRef
39233
- };
39234
- }
39235
- if (effectiveSource === "" || effectiveSource === "local") {
39236
- return { kind: "local" };
39237
- }
39238
- return { kind: "invalid", source: effectiveSource };
39239
- }
39240
-
39241
38539
  // ../../packages/warmhub-cli/src/component-shell.ts
39242
- function rejectRefForRegistered(componentRef, refOverride) {
39243
- if (refOverride !== undefined) {
39244
- throw new CliError(2 /* UserInput */, "USER_INPUT", `'${componentRef}' is a registered component; --ref is not supported (manifest version pinning is unavailable).`, undefined, "Registered components always install the latest published manifest. Re-run without --ref.");
39245
- }
39246
- }
39247
38540
  async function maybeHandleComponentShellBoundary(argv, deps = {}) {
39248
38541
  const parsed = parseArgs(argv);
39249
38542
  const invocation = resolveInvocation(parsed);
@@ -39259,9 +38552,6 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
39259
38552
  const writeErr = deps.err ?? err;
39260
38553
  const debug = getBoolFlag(invocation.flags, "debug") || process.env.WARMHUB_DEBUG === "1";
39261
38554
  let format = "pretty";
39262
- const installFromManifestImpl = deps.installFromManifest ?? installFromManifest;
39263
- const resolveRegisteredInstallImpl = deps.resolveRegisteredInstall ?? resolveRegisteredInstall;
39264
- const callRegisteredSetupImpl = deps.callRegisteredSetup ?? callRegisteredSetup;
39265
38555
  try {
39266
38556
  canonicalizeGlobalFlags({ invocation });
39267
38557
  const formatFlag = getStringFlag(invocation.flags, "format");
@@ -39277,50 +38567,27 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
39277
38567
  config: deps.config,
39278
38568
  client: deps.client
39279
38569
  });
38570
+ const source = invocation.positional[1];
38571
+ if (!source) {
38572
+ return;
38573
+ }
39280
38574
  if (componentShellVerb === "install") {
39281
- const source = invocation.positional[1];
39282
- if (!source) {
39283
- return;
39284
- }
39285
38575
  if (!isRegisteredComponentSource(source)) {
39286
38576
  return;
39287
38577
  }
39288
- rejectRefForRegistered(source, getStringFlag(invocation.flags, "ref"));
39289
- const repoFlag2 = getStringFlag(invocation.flags, "repo") ?? config.defaultRepo;
39290
- return await handleRegisteredInstall({
39291
- componentRef: source,
39292
- repoFlag: repoFlag2,
39293
- client,
39294
- config,
39295
- format,
39296
- writeOut,
39297
- writeErr,
39298
- installFromManifest: installFromManifestImpl,
39299
- resolveRegisteredInstall: resolveRegisteredInstallImpl,
39300
- callRegisteredSetup: callRegisteredSetupImpl
39301
- });
39302
- }
39303
- const componentRef = invocation.positional[1];
39304
- if (!componentRef) {
39305
- return;
39306
- }
39307
- if (!isRegisteredComponentSource(componentRef)) {
39308
- throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid component reference '${componentRef}'. Expected '<org>/<name>' with no extra slashes and no empty parts.`, undefined, "Usage: wh component update <org/name> --repo org/repo");
38578
+ } else if (!isRegisteredComponentSource(source)) {
38579
+ throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid component reference '${source}'. Expected '<org>/<name>' with no extra slashes and no empty parts.`, undefined, "Usage: wh component update <org/name> --repo org/repo");
39309
38580
  }
39310
38581
  const repoFlag = getStringFlag(invocation.flags, "repo") ?? config.defaultRepo;
39311
- const refOverride = getStringFlag(invocation.flags, "ref");
39312
- return await handleComponentUpdate({
39313
- componentRef,
39314
- repoFlag,
39315
- refOverride,
38582
+ const parsedRepo = parseOrgRepo(repoFlag, config);
38583
+ return await performRegisteredInstall({
38584
+ componentRef: source,
38585
+ verb: componentShellVerb === "install" ? "Installed" : "Updated",
39316
38586
  client,
39317
- config,
38587
+ parsedRepo,
39318
38588
  format,
39319
38589
  writeOut,
39320
- writeErr,
39321
- installFromManifest: installFromManifestImpl,
39322
- resolveRegisteredInstall: resolveRegisteredInstallImpl,
39323
- callRegisteredSetup: callRegisteredSetupImpl
38590
+ writeErr
39324
38591
  });
39325
38592
  } catch (error) {
39326
38593
  return printCliError(toCliError2(error), writeErr, {
@@ -39329,91 +38596,40 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
39329
38596
  });
39330
38597
  }
39331
38598
  }
39332
- async function resolveRegisteredInstall(args) {
39333
- const [ownerOrg, componentName] = args.componentRef.split("/");
38599
+ async function performRegisteredInstall(args) {
38600
+ const installRepo = `${args.parsedRepo.org}/${args.parsedRepo.repo}`;
38601
+ let result;
39334
38602
  try {
39335
- return await args.client.component.registry.resolve(ownerOrg, componentName, args.installRepo);
38603
+ result = await args.client.component.install(args.parsedRepo.org, args.parsedRepo.repo, args.componentRef);
39336
38604
  } catch (error) {
39337
- const backendCode = warmHubErrorBackendCode(error);
39338
- const status = warmHubErrorStatus(error);
39339
- const message = error instanceof Error ? error.message : String(error);
39340
- if (backendCode === "NOT_FOUND" || warmHubErrorKind(error) === "NOT_FOUND" && message === "Registered component not found") {
39341
- throw new CliError(2 /* UserInput */, "USER_INPUT", `No component registered as ${args.componentRef}`, undefined, `Register it first with 'wh component register ${args.componentRef.split("/")[1] ?? args.componentRef} --org ${args.componentRef.split("/")[0] ?? "<org>"} --manifest <path>'.`, undefined, backendCode ?? "NOT_FOUND");
38605
+ if (!isMissingRegistrationError(error)) {
38606
+ invalidateInstallSnapshotCache(installRepo);
39342
38607
  }
39343
- if (warmHubErrorKind(error) === "NOT_FOUND" && status === 404 && backendCode === undefined) {
39344
- throw new CliError(4 /* Backend */, "BACKEND", message, error, "The backend may not expose the component-registry routes. Confirm the API URL points at a deployment that supports `wh component install`, or check for a proxy/path mismatch.");
39345
- }
39346
- throw toCliError2(error);
38608
+ throw mapInstallError(error, args.componentRef, args.verb);
39347
38609
  }
39348
- }
39349
- async function callRegisteredSetup(args) {
39350
- const [ownerOrg, componentName] = args.componentRef.split("/");
39351
- return await args.client.component.registry.setupCall(ownerOrg, componentName, {
39352
- installId: args.installId,
39353
- installRepo: args.installRepo,
39354
- expectedManifestHash: args.expectedManifestHash
39355
- });
39356
- }
39357
- async function handleRegisteredInstall(args) {
39358
- const parsedRepo = parseOrgRepo(args.repoFlag, args.config);
39359
- return performRegisteredInstall({
39360
- componentRef: args.componentRef,
39361
- verb: "Installed",
39362
- client: args.client,
39363
- parsedRepo,
39364
- format: args.format,
39365
- writeOut: args.writeOut,
39366
- writeErr: args.writeErr,
39367
- installFromManifest: args.installFromManifest,
39368
- resolveRegisteredInstall: args.resolveRegisteredInstall,
39369
- callRegisteredSetup: args.callRegisteredSetup
39370
- });
39371
- }
39372
- async function performRegisteredInstall(args) {
39373
- const installRepo = `${args.parsedRepo.org}/${args.parsedRepo.repo}`;
39374
- const resolved = await args.resolveRegisteredInstall({
39375
- componentRef: args.componentRef,
39376
- installRepo,
39377
- client: args.client
39378
- });
39379
- const persistedInstallId = readPersistedString(args.persistedInstallData, "installId");
39380
- const installId = persistedInstallId ?? resolved.installId;
39381
38610
  invalidateInstallSnapshotCache(installRepo);
39382
- const result = await args.installFromManifest(args.client, args.parsedRepo.org, args.parsedRepo.repo, resolved.manifest, {
39383
- installId,
39384
- registeredComponentRef: args.componentRef
39385
- });
39386
- if (!result.ok) {
39387
- await writeInstallResult(args.writeOut, args.writeErr, args.format, args.verb, result, installRepo, args.client);
39388
- return 1 /* Runtime */;
38611
+ await writeInstallResult(args.writeOut, args.writeErr, args.format, args.verb, result, installRepo, args.client);
38612
+ return 0 /* Ok */;
38613
+ }
38614
+ function mapInstallError(error, componentRef, verb) {
38615
+ if (isMissingRegistrationError(error)) {
38616
+ const [ownerOrg, name] = componentRef.split("/");
38617
+ const backendCode = warmHubErrorBackendCode(error);
38618
+ return new CliError(2 /* UserInput */, "USER_INPUT", `No component registered as ${componentRef}`, undefined, `Register it first with 'wh component register ${name ?? componentRef} --org ${ownerOrg ?? "<org>"} --manifest <path>'.`, undefined, backendCode ?? "NOT_FOUND");
39389
38619
  }
39390
- if (resolved.hasSetup) {
39391
- let setupResult;
39392
- try {
39393
- setupResult = await args.callRegisteredSetup({
39394
- componentRef: args.componentRef,
39395
- installRepo,
39396
- installId,
39397
- expectedManifestHash: resolved.manifestHash,
39398
- client: args.client
39399
- });
39400
- } catch (error) {
39401
- if (isMissingManifestPermissionError(error)) {
39402
- const backendCode = warmHubErrorBackendCode(error) ?? warmHubErrorKind(error);
39403
- throw new CliError(2 /* UserInput */, "USER_INPUT", error.message, undefined, `Ask an org owner/admin to grant the missing permissions on the install repo, then re-run ${args.verb === "Installed" ? "install" : "update"}.`, undefined, backendCode);
39404
- }
39405
- throw error;
39406
- }
39407
- if (!setupResult.ok) {
39408
- throw new CliError(1 /* Runtime */, "BACKEND", `Component setup failed with status ${setupResult.status}${setupResult.body ? `: ${setupResult.body}` : ""}`);
39409
- }
38620
+ if (isMissingManifestPermissionError(error)) {
38621
+ const backendCode = warmHubErrorBackendCode(error) ?? warmHubErrorKind(error);
38622
+ return new CliError(2 /* UserInput */, "USER_INPUT", error.message, undefined, `Ask an org owner/admin to grant the missing permissions on the install repo, then re-run ${verb === "Installed" ? "install" : "update"}.`, undefined, backendCode);
39410
38623
  }
39411
- await writeInstallResult(args.writeOut, args.writeErr, args.format, args.verb, result, installRepo, args.client);
39412
- return result.ok ? 0 /* Ok */ : 1 /* Runtime */;
38624
+ return error;
39413
38625
  }
39414
- function readPersistedString(data, key) {
39415
- const value = data?.[key];
39416
- return typeof value === "string" && value.length > 0 ? value : undefined;
38626
+ var REGISTRATION_NOT_FOUND_MESSAGE = "Registered component not found";
38627
+ function isMissingRegistrationError(error) {
38628
+ const message = error instanceof Error ? error.message : String(error);
38629
+ if (message !== REGISTRATION_NOT_FOUND_MESSAGE) {
38630
+ return false;
38631
+ }
38632
+ return warmHubErrorBackendCode(error) === "NOT_FOUND" || warmHubErrorKind(error) === "NOT_FOUND";
39417
38633
  }
39418
38634
  function isMissingManifestPermissionError(error) {
39419
38635
  return warmHubErrorKind(error) === "FORBIDDEN" && error instanceof Error && error.message.startsWith("Cannot install: caller is missing repo permissions required by the manifest:");
@@ -39426,14 +38642,6 @@ function warmHubErrorKind(error) {
39426
38642
  const record = error;
39427
38643
  return typeof record.kind === "string" ? record.kind : typeof record.code === "string" ? record.code : undefined;
39428
38644
  }
39429
- function warmHubErrorStatus(error) {
39430
- if (error instanceof WarmHubError)
39431
- return error.status;
39432
- if (!error || typeof error !== "object")
39433
- return;
39434
- const status = error.status;
39435
- return typeof status === "number" ? status : undefined;
39436
- }
39437
38645
  function warmHubErrorBackendCode(error) {
39438
38646
  if (error instanceof WarmHubError)
39439
38647
  return error.backendCode;
@@ -39442,56 +38650,22 @@ function warmHubErrorBackendCode(error) {
39442
38650
  const backendCode = error.backendCode;
39443
38651
  return typeof backendCode === "string" ? backendCode : undefined;
39444
38652
  }
39445
- async function handleComponentUpdate(args) {
39446
- const parsedRepo = parseOrgRepo(args.repoFlag, args.config);
39447
- const installRepo = `${parsedRepo.org}/${parsedRepo.repo}`;
39448
- const componentId = await resolveInstalledComponentRefId(args.client, parsedRepo.org, parsedRepo.repo, args.componentRef);
39449
- const installThing = await args.client.thing.get(parsedRepo.org, parsedRepo.repo, `ComponentInstall/${componentId}`);
39450
- const installData = installThing.data && typeof installThing.data === "object" ? installThing.data : {};
39451
- const source = resolveComponentUpdateSource(installData);
39452
- if (source.kind === "registered") {
39453
- rejectRefForRegistered(source.componentRef, args.refOverride);
39454
- if (source.componentRef !== args.componentRef) {
39455
- throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' resolved to an install for '${source.componentRef}', which is inconsistent with the install record.`);
39456
- }
39457
- return performRegisteredInstall({
39458
- componentRef: source.componentRef,
39459
- persistedInstallData: installData,
39460
- verb: "Updated",
39461
- client: args.client,
39462
- parsedRepo,
39463
- format: args.format,
39464
- writeOut: args.writeOut,
39465
- writeErr: args.writeErr,
39466
- installFromManifest: args.installFromManifest,
39467
- resolveRegisteredInstall: args.resolveRegisteredInstall,
39468
- callRegisteredSetup: args.callRegisteredSetup
39469
- });
39470
- }
39471
- if (source.kind === "system") {
39472
- throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' is a platform-managed system install and cannot be updated via the CLI; it is reconciled automatically by the WarmHub backend.`);
39473
- }
39474
- throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' was not installed from a registered component and can no longer be updated in place.`, undefined, "Register the component (`wh component register <name> --org <org> --manifest <path>`) and reinstall it with `wh component install <org>/<name>`.");
39475
- }
39476
38653
  async function writeInstallResult(writeOut, writeErr, format, verb, result, installRepo, client) {
39477
- if (result.ok) {
39478
- await rebuildInstallSnapshotCache(installRepo, client);
39479
- const reservedWarning = formatReservedNameWarning(result.componentName);
39480
- if (reservedWarning) {
39481
- writeErr(reservedWarning);
39482
- }
38654
+ await rebuildInstallSnapshotCache(installRepo, client);
38655
+ const reservedWarning = formatReservedNameWarning(result.componentName);
38656
+ if (reservedWarning) {
38657
+ writeErr(reservedWarning);
39483
38658
  }
39484
38659
  if (format === "json" || format === "jsonl") {
39485
38660
  writeOut(JSON.stringify(result));
39486
38661
  return;
39487
38662
  }
39488
- if (result.ok) {
39489
- writeOut(`${verb} ${result.componentName} v${result.version} [${result.state}]`);
39490
- return;
38663
+ writeOut(`${verb} ${result.componentName} v${result.version} [${result.state}]`);
38664
+ if (result.errors.length > 0) {
38665
+ writeErr(`Completed with warnings: ${result.errors.join("; ")}`);
39491
38666
  }
39492
- writeOut(`${verb === "Installed" ? "Install" : "Update"} failed: ${result.errors.join("; ")}`);
39493
38667
  }
39494
- // ../../node_modules/.bun/undici@6.25.0/node_modules/undici/index.js
38668
+ // ../../node_modules/.bun/undici@6.27.0/node_modules/undici/index.js
39495
38669
  var Client = require_client();
39496
38670
  var Dispatcher = require_dispatcher();
39497
38671
  var Pool = require_pool();
@@ -39944,4 +39118,4 @@ if (!updateCheckSuppressedByArgv && shouldRunUpdateCheck(updateEligibility)) {
39944
39118
  var interceptedExitCode = await maybeHandleComponentShellBoundary(dispatchArgv);
39945
39119
  process.exitCode = interceptedExitCode === undefined ? await runCli(dispatchArgv, { version: package_default3.version }) : interceptedExitCode;
39946
39120
 
39947
- //# debugId=E69740B781D6D4C864756E2164756E21
39121
+ //# debugId=DD2E54A9CAE4693764756E2164756E21