@fgv/ts-json 1.9.4 → 1.9.6

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.
@@ -256,4 +256,4 @@ class JsonEditor {
256
256
  }
257
257
  }
258
258
  exports.JsonEditor = JsonEditor;
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUV2QixzQ0FBeUc7QUFFekcsdURBQW9HO0FBSXBHOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFVbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxLQUFLLE9BQU87UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFvQyxFQUFFLEtBQXdCO1FBQy9FLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBMkI7UUFDckQsT0FB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LEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBNVBELGdDQTRQQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUsXG4gICAgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLFxuICAgIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLFxuICAgIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlLFxufSBmcm9tICcuL3J1bGVzJztcbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBEZXRhaWxlZFJlc3VsdHMsXG4gICAgbWFwUmVzdWx0cyxcbiAgICBzdWNjZWVkLFxuICAgIHN1Y2NlZWRXaXRoRGV0YWlsLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgSnNvbkFycmF5LCBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbkFycmF5LCBpc0pzb25PYmplY3QsIGlzSnNvblByaW1pdGl2ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vanNvbkVkaXRvclJ1bGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JTdGF0ZSwgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zIH0gZnJvbSAnLi9qc29uRWRpdG9yU3RhdGUnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCB9IGZyb20gJy4uL2pzb25Db250ZXh0JztcblxuLyoqXG4gKiBUaGUgSnNvbkVkaXRvciBjYW4gYmUgdXNlZCB0byBlZGl0IEpTT04gb2JqZWN0cyBpbiBwbGFjZSBvciB0byBjbG9uZSBhbnkgSlNPTiB2YWx1ZSxcbiAqIGFwcGx5aW5nIGEgZGVmYXVsdCBjb250ZXh0IGFuZCBvcHRpb25hbCBzZXQgb2YgZWRpdG9yIHJ1bGVzIHRoYXQgd2VyZSBzdXBwbGllZCBhdFxuICogaW5pdGlhbGl6YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9kZWZhdWx0PzogSnNvbkVkaXRvcjtcblxuICAgIC8qKlxuICAgICAqIEZ1bGwgc2V0IG9mIEBzZWUgSnNvbkVkaXRvck9wdGlvbnMgaW4gZWZmZWN0IGZvciB0aGlzIHJ1bGUuXG4gICAgICovXG4gICAgcHVibGljIG9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zO1xuICAgIHByb3RlY3RlZCBfcnVsZXM6IEpzb25FZGl0b3JSdWxlW107XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Iob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+LCBydWxlcz86IEpzb25FZGl0b3JSdWxlW10pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gSnNvbkVkaXRvci5fZ2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzIHx8IEpzb25FZGl0b3IuZ2V0RGVmYXVsdFJ1bGVzKHRoaXMub3B0aW9ucykub3JUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc2luZ2xldG9uIEBzZWUgSnNvbkVkaXRvciBmb3Igc2ltcGxlIHVzZS4gQXBwbGllcyBhbGwgcnVsZXNcbiAgICAgKiBidXQgd2l0aCBubyBkZWZhdWx0IGNvbnRleHQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZGVmYXVsdCgpOiBKc29uRWRpdG9yIHtcbiAgICAgICAgaWYgKCFKc29uRWRpdG9yLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0RGVmYXVsdFJ1bGVzKCkub3JEZWZhdWx0KCk7XG4gICAgICAgICAgICBKc29uRWRpdG9yLl9kZWZhdWx0ID0gbmV3IEpzb25FZGl0b3IodW5kZWZpbmVkLCBydWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpzb25FZGl0b3IuX2RlZmF1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIGFuIGNvbnRleHQgZm9yIHRoaXMgZWRpdG9yXG4gICAgICogQHBhcmFtIHJ1bGVzIE9wdGlvbmFsIHNldCBvZiBydWxlcyB1c2VkIGJ5IHRoaXMgZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+LCBydWxlcz86IEpzb25FZGl0b3JSdWxlW10pOiBSZXN1bHQ8SnNvbkVkaXRvcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkVkaXRvcihvcHRpb25zLCBydWxlcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgc2V0IG9mIHJ1bGVzIHRvIGJlIGFwcGxpZWQgZm9yIGEgZ2l2ZW4gc2V0IG9mIG9wdGlvbnMuXG4gICAgICogQnkgZGVmYXVsdCwgYWxsIGF2YWlsYWJsZSBydWxlcyAodGVtcGxhdGVzLCBjb25kaXRpb25hbHMsIG11bHRpLXZhbHVlIGFuZCByZWZlcmVuY2VzKVxuICAgICAqIGFyZSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgcnVsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERlZmF1bHRSdWxlcyhvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpOiBSZXN1bHQ8SnNvbkVkaXRvclJ1bGVbXT4ge1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0czxKc29uRWRpdG9yUnVsZT4oW1xuICAgICAgICAgICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAgICAgY29uc3QgY29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkID0gb3B0aW9ucz8uY29udGV4dDtcbiAgICAgICAgbGV0IHZhbGlkYXRpb246IEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9uc3x1bmRlZmluZWQgPSBvcHRpb25zPy52YWxpZGF0aW9uO1xuICAgICAgICBpZiAodmFsaWRhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uID0ge1xuICAgICAgICAgICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogJ2lnbm9yZScsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHsgY29udGV4dCwgdmFsaWRhdGlvbiB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgYSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0IGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBvYmplY3QgdG8gYmUgbWVyZ2VkXG4gICAgICogQHBhcmFtIHJ1bnRpbWVDb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmM6IEpzb25PYmplY3QsIHJ1bnRpbWVDb250ZXh0PzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBKc29uRWRpdG9yU3RhdGUodGhpcywgdGhpcy5vcHRpb25zLCBydW50aW1lQ29udGV4dCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0LCBzcmMsIHN0YXRlKS5vblN1Y2Nlc3MoKG1lcmdlZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmFsaXplQW5kTWVyZ2UobWVyZ2VkLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBtdWx0aXBsZSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0cyBpbnRvIGEgc3VwcGxpZWQgdGFyZ2V0LCB1cGRhdGluZyB0aGUgdGFyZ2V0XG4gICAgICogb2JqZWN0IGFuZCB1c2luZyB0aGUgZGVmYXVsdCBjb250ZXh0IHN1cHBsaWVkIGF0IGNyZWF0aW9uIHRpbWUuXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyY09iamVjdHMgT2JqZWN0cyB0byBiZSBtZXJnZWQgaW50byB0aGUgdGFyZ2V0IG9iamVjdCwgaW4gdGhlIG9yZGVyIHN1cHBsaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdHNJblBsYWNlKHRhcmdldDogSnNvbk9iamVjdCwgc3JjT2JqZWN0czogSnNvbk9iamVjdFtdKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5QbGFjZVdpdGhDb250ZXh0KHRoaXMub3B0aW9ucy5jb250ZXh0LCB0YXJnZXQsIHNyY09iamVjdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBtdWx0aXBsZSBzdXBwbGllZCBzb3VyY2Ugb2JqZWN0cyBpbnRvIGEgc3VwcGxpZWQgdGFyZ2V0LCB1cGRhdGluZyB0aGUgdGFyZ2V0XG4gICAgICogb2JqZWN0IGFuZCB1c2luZyBhbiBvcHRpb25hbCBjb250ZXh0IHN1cHBsaWVkIGluIHRoZSBjYWxsLlxuICAgICAqIEBwYXJhbSBjb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcmNPYmplY3RzIE9iamVjdHMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIHRhcmdldCBvYmplY3QsIGluIHRoZSBvcmRlciBzdXBwbGllZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWVyZ2VPYmplY3RzSW5QbGFjZVdpdGhDb250ZXh0KGNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYmFzZTogSnNvbk9iamVjdCwgc3JjT2JqZWN0czogSnNvbk9iamVjdFtdKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgZm9yIChjb25zdCBzcmMgb2Ygc3JjT2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VSZXN1bHQgPSB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZShiYXNlLCBzcmMsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKG1lcmdlUmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlUmVzdWx0LndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChiYXNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWVwIGNsb25lcyBhIHN1cHBsaWVkIEpTT04gdmFsdWUsIGFwcGx5aW5nIGFsbCBlZGl0b3IgcnVsZXMgYW5kIGEgZGVmYXVsdFxuICAgICAqIG9yIG9wdGlvbmFsbHkgc3VwcGxpZWQgY29udGV4dFxuICAgICAqIEBwYXJhbSBzcmMgVGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIGNsb25lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IEFuIG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgc3VwcGx5aW5nIHZhcmlhYmxlcyBhbmQgcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjbG9uZShzcmM6IEpzb25WYWx1ZSwgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgSnNvbkVkaXRvclN0YXRlKHRoaXMsIHRoaXMub3B0aW9ucywgY29udGV4dCk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHNyYztcbiAgICAgICAgbGV0IHZhbHVlUmVzdWx0ID0gdGhpcy5fZWRpdFZhbHVlKHNyYywgc3RhdGUpO1xuXG4gICAgICAgIHdoaWxlICh2YWx1ZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIHZhbHVlUmVzdWx0ID0gdGhpcy5fZWRpdFZhbHVlKHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykgfHwgKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2lnbm9yZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNKc29uUHJpbWl0aXZlKHZhbHVlKSB8fCAodmFsdWUgPT09IG51bGwpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwodmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdEluUGxhY2Uoe30sIHZhbHVlLCBzdGF0ZS5jb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25BcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jbG9uZUFycmF5KHZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ3VuZGVmaW5lZFByb3BlcnR5VmFsdWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJywgYENhbm5vdCBjb252ZXJ0IGludmFsaWQgSlNPTjogXCIke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cImApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVyZ2VPYmplY3RJblBsYWNlKHRhcmdldDogSnNvbk9iamVjdCwgc3JjOiBKc29uT2JqZWN0LCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XG4gICAgICAgICAgICBpZiAoc3JjLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wUmVzdWx0ID0gdGhpcy5fZWRpdFByb3BlcnR5KGtleSwgc3JjW2tleV0sIHN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcFJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcFJlc3VsdC5kZXRhaWwgPT09ICdkZWZlcnJlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRlZmVyKHByb3BSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VSZXN1bHQgPSB0aGlzLl9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0LCBwcm9wUmVzdWx0LnZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcFJlc3VsdC5kZXRhaWwgPT09ICdpbmFwcGxpY2FibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlUmVzdWx0ID0gdGhpcy5jbG9uZShzcmNba2V5XSwgc3RhdGUuY29udGV4dCkub25TdWNjZXNzKChjbG9uZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tZXJnZUNsb25lZFByb3BlcnR5KHRhcmdldCwga2V5LCBjbG9uZWQsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlUmVzdWx0LmlzRmFpbHVyZSgpICYmICh2YWx1ZVJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiAke3ZhbHVlUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcFJlc3VsdC5kZXRhaWwgIT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7cHJvcFJlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06IENhbm5vdCBtZXJnZSBpbmhlcml0ZWQgcHJvcGVydGllc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHRhcmdldCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZUFycmF5KHNyYzogSnNvbkFycmF5LCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uQXJyYXksIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gc3JjLm1hcCgodikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUodiwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtYXBEZXRhaWxlZFJlc3VsdHM8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KHJlc3VsdHMsIFsnaWdub3JlJ10pLm9uU3VjY2VzcygoY29udmVydGVkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChjb252ZXJ0ZWQpO1xuICAgICAgICB9KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX21lcmdlQ2xvbmVkUHJvcGVydHkodGFyZ2V0OiBKc29uT2JqZWN0LCBrZXk6IHN0cmluZywgbmV3VmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGFyZ2V0W2tleV07XG5cbiAgICAgICAgLy8gbWVyZ2UgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGNsb25lIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgICAvLyBzaW5jZSBjbG9uZSBpdHNlbGYgd2lsbCBoYXZlIGZhaWxlZFxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgICAgICBpZiAoaXNKc29uUHJpbWl0aXZlKG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbk9iamVjdChuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0pzb25PYmplY3QoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKGV4aXN0aW5nLCBuZXdWYWx1ZSwgc3RhdGUuY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNKc29uQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBleGlzdGluZy5jb25jYXQoLi4ubmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXRba2V5XSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGBJbnZhbGlkIEpTT046ICR7SlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpfWAsICdlcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmVkaXRQcm9wZXJ0eShrZXksIHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZWRpdFZhbHVlKHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmVkaXRWYWx1ZSh2YWx1ZSwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQuaXNTdWNjZXNzKCkgfHwgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2ZpbmFsaXplQW5kTWVyZ2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IGRlZmVycmVkID0gc3RhdGUuZGVmZXJyZWQ7XG4gICAgICAgIGlmIChkZWZlcnJlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBydWxlUmVzdWx0ID0gcnVsZS5maW5hbGl6ZVByb3BlcnRpZXMoZGVmZXJyZWQsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQoc3RhdGUuY29udGV4dCwgdGFyZ2V0LCBydWxlUmVzdWx0LnZhbHVlKS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocnVsZVJlc3VsdC5kZXRhaWwgPT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldCwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKHJ1bGVSZXN1bHQubWVzc2FnZSwgcnVsZVJlc3VsdC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0LCAnZWRpdGVkJyk7XG4gICAgfVxufVxuXG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUd2QixzQ0FBeUc7QUFJekcsdURBQW9EO0FBRXBEOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFVbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxLQUFLLE9BQU87UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFvQyxFQUFFLEtBQXdCO1FBQy9FLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBMkI7UUFDckQsT0FB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LEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBNVBELGdDQTRQQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUsXG4gICAgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLFxuICAgIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLFxuICAgIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlLFxufSBmcm9tICcuL3J1bGVzJztcbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBEZXRhaWxlZFJlc3VsdHMsXG4gICAgbWFwUmVzdWx0cyxcbiAgICBzdWNjZWVkLFxuICAgIHN1Y2NlZWRXaXRoRGV0YWlsLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgSUpzb25DbG9uZUVkaXRvciwgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IEpzb25BcnJheSwgSnNvbk9iamVjdCwgSnNvblZhbHVlLCBpc0pzb25BcnJheSwgaXNKc29uT2JqZWN0LCBpc0pzb25QcmltaXRpdmUgfSBmcm9tICcuLi9jb21tb24nO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCB9IGZyb20gJy4uL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25FZGl0b3JSdWxlIH0gZnJvbSAnLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5cbi8qKlxuICogVGhlIEpzb25FZGl0b3IgY2FuIGJlIHVzZWQgdG8gZWRpdCBKU09OIG9iamVjdHMgaW4gcGxhY2Ugb3IgdG8gY2xvbmUgYW55IEpTT04gdmFsdWUsXG4gKiBhcHBseWluZyBhIGRlZmF1bHQgY29udGV4dCBhbmQgb3B0aW9uYWwgc2V0IG9mIGVkaXRvciBydWxlcyB0aGF0IHdlcmUgc3VwcGxpZWQgYXRcbiAqIGluaXRpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSnNvbkVkaXRvciBpbXBsZW1lbnRzIElKc29uQ2xvbmVFZGl0b3Ige1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2RlZmF1bHQ/OiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogRnVsbCBzZXQgb2YgQHNlZSBKc29uRWRpdG9yT3B0aW9ucyBpbiBlZmZlY3QgZm9yIHRoaXMgcnVsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIF9ydWxlczogSnNvbkVkaXRvclJ1bGVbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBKc29uRWRpdG9yLl9nZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXMgfHwgSnNvbkVkaXRvci5nZXREZWZhdWx0UnVsZXModGhpcy5vcHRpb25zKS5vclRocm93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBzaW5nbGV0b24gQHNlZSBKc29uRWRpdG9yIGZvciBzaW1wbGUgdXNlLiBBcHBsaWVzIGFsbCBydWxlc1xuICAgICAqIGJ1dCB3aXRoIG5vIGRlZmF1bHQgY29udGV4dC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldCBkZWZhdWx0KCk6IEpzb25FZGl0b3Ige1xuICAgICAgICBpZiAoIUpzb25FZGl0b3IuX2RlZmF1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXREZWZhdWx0UnVsZXMoKS5vckRlZmF1bHQoKTtcbiAgICAgICAgICAgIEpzb25FZGl0b3IuX2RlZmF1bHQgPSBuZXcgSnNvbkVkaXRvcih1bmRlZmluZWQsIHJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvbkVkaXRvci5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvclxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW4gY29udGV4dCBmb3IgdGhpcyBlZGl0b3JcbiAgICAgKiBAcGFyYW0gcnVsZXMgT3B0aW9uYWwgc2V0IG9mIHJ1bGVzIHVzZWQgYnkgdGhpcyBlZGl0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSk6IFJlc3VsdDxKc29uRWRpdG9yPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yKG9wdGlvbnMsIHJ1bGVzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGVmYXVsdCBzZXQgb2YgcnVsZXMgdG8gYmUgYXBwbGllZCBmb3IgYSBnaXZlbiBzZXQgb2Ygb3B0aW9ucy5cbiAgICAgKiBCeSBkZWZhdWx0LCBhbGwgYXZhaWxhYmxlIHJ1bGVzICh0ZW1wbGF0ZXMsIGNvbmRpdGlvbmFscywgbXVsdGktdmFsdWUgYW5kIHJlZmVyZW5jZXMpXG4gICAgICogYXJlIGFwcGxpZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdXNlZCB0byBpbml0aWFsaXplIGFsbCBydWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVmYXVsdFJ1bGVzKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucyk6IFJlc3VsdDxKc29uRWRpdG9yUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzPEpzb25FZGl0b3JSdWxlPihbXG4gICAgICAgICAgICBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlLmNyZWF0ZShvcHRpb25zKSxcbiAgICAgICAgICAgIE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2dldERlZmF1bHRPcHRpb25zKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPik6IFJlc3VsdDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBjb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQgPSBvcHRpb25zPy5jb250ZXh0O1xuICAgICAgICBsZXQgdmFsaWRhdGlvbjogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zfHVuZGVmaW5lZCA9IG9wdGlvbnM/LnZhbGlkYXRpb247XG4gICAgICAgIGlmICh2YWxpZGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiAnaWdub3JlJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoeyBjb250ZXh0LCB2YWxpZGF0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBhIHN1cHBsaWVkIHNvdXJjZSBvYmplY3QgaW50byBhIHN1cHBsaWVkIHRhcmdldCwgdXBkYXRpbmcgdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9iamVjdCB0byBiZSBtZXJnZWRcbiAgICAgKiBAcGFyYW0gcnVudGltZUNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQ6IEpzb25PYmplY3QsIHNyYzogSnNvbk9iamVjdCwgcnVudGltZUNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IEpzb25FZGl0b3JTdGF0ZSh0aGlzLCB0aGlzLm9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHNyYywgc3RhdGUpLm9uU3VjY2VzcygobWVyZ2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluYWxpemVBbmRNZXJnZShtZXJnZWQsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IGNvbnRleHQgc3VwcGxpZWQgYXQgY3JlYXRpb24gdGltZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICAgKiBAcGFyYW0gc3JjT2JqZWN0cyBPYmplY3RzIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LCBpbiB0aGUgb3JkZXIgc3VwcGxpZWQuXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0c0luUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQodGhpcy5vcHRpb25zLmNvbnRleHQsIHRhcmdldCwgc3JjT2JqZWN0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIGFuIG9wdGlvbmFsIGNvbnRleHQgc3VwcGxpZWQgaW4gdGhlIGNhbGwuXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyY09iamVjdHMgT2JqZWN0cyB0byBiZSBtZXJnZWQgaW50byB0aGUgdGFyZ2V0IG9iamVjdCwgaW4gdGhlIG9yZGVyIHN1cHBsaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQoY29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBiYXNlOiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNyYyBvZiBzcmNPYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKGJhc2UsIHNyYywgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAobWVyZ2VSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VSZXN1bHQud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGJhc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZXAgY2xvbmVzIGEgc3VwcGxpZWQgSlNPTiB2YWx1ZSwgYXBwbHlpbmcgYWxsIGVkaXRvciBydWxlcyBhbmQgYSBkZWZhdWx0XG4gICAgICogb3Igb3B0aW9uYWxseSBzdXBwbGllZCBjb250ZXh0XG4gICAgICogQHBhcmFtIHNyYyBUaGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgY2xvbmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIGNsb25lKHNyYzogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBKc29uRWRpdG9yU3RhdGUodGhpcywgdGhpcy5vcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgbGV0IHZhbHVlID0gc3JjO1xuICAgICAgICBsZXQgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUoc3JjLCBzdGF0ZSk7XG5cbiAgICAgICAgd2hpbGUgKHZhbHVlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlUmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUodmFsdWUsIHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSB8fCAodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnaWdub3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUodmFsdWUpIHx8ICh2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh2YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZSh7fSwgdmFsdWUsIHN0YXRlLmNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbkFycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb25lQXJyYXkodmFsdWUsIHN0YXRlLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbigndW5kZWZpbmVkUHJvcGVydHlWYWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCBgQ2Fubm90IGNvbnZlcnQgaW52YWxpZCBKU09OOiBcIiR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfVwiYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmM6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcmMpIHtcbiAgICAgICAgICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BSZXN1bHQgPSB0aGlzLl9lZGl0UHJvcGVydHkoa2V5LCBzcmNba2V5XSwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZGVmZXIocHJvcFJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHByb3BSZXN1bHQudmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZVJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2luYXBwbGljYWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVSZXN1bHQgPSB0aGlzLmNsb25lKHNyY1trZXldLCBzdGF0ZS5jb250ZXh0KS5vblN1Y2Nlc3MoKGNsb25lZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlQ2xvbmVkUHJvcGVydHkodGFyZ2V0LCBrZXksIGNsb25lZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVSZXN1bHQuaXNGYWlsdXJlKCkgJiYgKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7dmFsdWVSZXN1bHQubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCAhPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogJHtwcm9wUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogQ2Fubm90IG1lcmdlIGluaGVyaXRlZCBwcm9wZXJ0aWVzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Nsb25lQXJyYXkoc3JjOiBKc29uQXJyYXksIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25BcnJheSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBzcmMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSh2LCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcERldGFpbGVkUmVzdWx0czxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ocmVzdWx0cywgWydpZ25vcmUnXSkub25TdWNjZXNzKChjb252ZXJ0ZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNvbnZlcnRlZCk7XG4gICAgICAgIH0pLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVyZ2VDbG9uZWRQcm9wZXJ0eSh0YXJnZXQ6IEpzb25PYmplY3QsIGtleTogc3RyaW5nLCBuZXdWYWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0YXJnZXRba2V5XTtcblxuICAgICAgICAvLyBtZXJnZSBpcyBjYWxsZWQgcmlnaHQgYWZ0ZXIgY2xvbmUgc28gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAgIC8vIHNpbmNlIGNsb25lIGl0c2VsZiB3aWxsIGhhdmUgZmFpbGVkXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uT2JqZWN0KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGlzSnNvbk9iamVjdChleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdEluUGxhY2UoZXhpc3RpbmcsIG5ld1ZhbHVlLCBzdGF0ZS5jb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25BcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0pzb25BcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IGV4aXN0aW5nLmNvbmNhdCguLi5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldFtrZXldLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYEludmFsaWQgSlNPTjogJHtKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSl9YCwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFByb3BlcnR5KGtleSwgdmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpIHx8IChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFZhbHVlKHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmluYWxpemVBbmRNZXJnZSh0YXJnZXQ6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZGVmZXJyZWQgPSBzdGF0ZS5kZWZlcnJlZDtcbiAgICAgICAgaWYgKGRlZmVycmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmZpbmFsaXplUHJvcGVydGllcyhkZWZlcnJlZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0c0luUGxhY2VXaXRoQ29udGV4dChzdGF0ZS5jb250ZXh0LCB0YXJnZXQsIHJ1bGVSZXN1bHQudmFsdWUpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlUmVzdWx0LmRldGFpbCA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0LCAnZWRpdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwocnVsZVJlc3VsdC5tZXNzYWdlLCBydWxlUmVzdWx0LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXQsICdlZGl0ZWQnKTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -1,8 +1,7 @@
1
1
  import { DetailedResult } from '@fgv/ts-utils';
2
+ import { JsonEditFailureReason, JsonPropertyEditFailureReason } from './common';
2
3
  import { JsonObject, JsonValue } from '../common';
3
4
  import { JsonEditorState } from './jsonEditorState';
4
- export type JsonEditFailureReason = 'ignore' | 'inapplicable' | 'edited' | 'error';
5
- export type JsonPropertyEditFailureReason = JsonEditFailureReason | 'deferred';
6
5
  export interface JsonEditorRule {
7
6
  /**
8
7
  * Called by a JSON editor to possibly edit one of the properties being merged into a target object.
@@ -41,4 +41,4 @@ class JsonEditorRuleBase {
41
41
  }
42
42
  }
43
43
  exports.JsonEditorRuleBase = JsonEditorRuleBase;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9qc29uRWRpdG9yUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCw0Q0FBK0Q7QUE4Qy9EOzs7R0FHRztBQUNILE1BQWEsa0JBQWtCO0lBQzNCLHVCQUF1QjtJQUNoQixZQUFZLENBQUMsSUFBWSxFQUFFLE1BQWlCLEVBQUUsTUFBdUI7UUFDeEUsdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBQSx5QkFBYyxFQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWlCLEVBQUUsTUFBdUI7UUFDdkQsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxTQUF1QixFQUFFLE1BQXVCO1FBQ3RFLE9BQU8sSUFBQSx5QkFBYyxFQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFkRCxnREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZFJlc3VsdCwgZmFpbFdpdGhEZXRhaWwgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmltcG9ydCB7IEpzb25FZGl0b3JTdGF0ZSB9IGZyb20gJy4vanNvbkVkaXRvclN0YXRlJztcblxuZXhwb3J0IHR5cGUgSnNvbkVkaXRGYWlsdXJlUmVhc29uID0gJ2lnbm9yZSd8J2luYXBwbGljYWJsZSd8J2VkaXRlZCd8J2Vycm9yJztcbmV4cG9ydCB0eXBlIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uID0gSnNvbkVkaXRGYWlsdXJlUmVhc29ufCdkZWZlcnJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkVkaXRvclJ1bGUge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhIEpTT04gZWRpdG9yIHRvIHBvc3NpYmx5IGVkaXQgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIGJlaW5nIG1lcmdlZCBpbnRvIGEgdGFyZ2V0IG9iamVjdC5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBFZGl0b3Igc3RhdGUgd2hpY2ggYXBwbGllcyB0byB0aGUgZWRpdFxuICAgICAqIEByZXR1cm5zIElmIHRoZSBwcm9wZXJ0eSB3YXMgZWRpdGVkLCByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVkaXRlZCByZXN1bHRzXG4gICAgICogYW5kIHdpdGggZGV0YWlsICdlZGl0ZWQnLiBJZiB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBkZWZlcnJlZCBmb3IgbGF0ZXIgY29uc2lkZXJhdGlvbiBvciBtZXJnLCBTdWNjZWVkc1xuICAgICAqIHdpdGggZGV0YWlsICdkZWZlcnJlZCcgYW5kIGFuIEpzb25PYmplY3QgdG8gYmUgZmluYWxpemVkLiAgSWYgdGhlIHJ1bGUgZG9lcyBub3QgYWZmZWN0IHRoaXMgcHJvcGVydHksXG4gICAgICogZmFpbHMgd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScuIElmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGVycm9yLCByZXR1cm5zIEZhaWx1cmUgd2l0aFxuICAgICAqIGRldGFpbCAnZXJyb3InLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIGVkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPjtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhIEpTT04gZWRpdG9yIHRvIHBvc3NpYmx5IGVkaXQgYSBwcm9wZXJ0eSB2YWx1ZSBvciBhcnJheSBlbGVtZW50XG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgRWRpdG9yIHN0YXRlIHdoaWNoIGFwcGxpZXMgdG8gdGhlIGVkaXRcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHN1Y2Nlc3Mgd2l0aCB0aGUgSnNvblZhbHVlIHRvIGJlIGluc2VydGVkLCB3aXRoIGRldGFpbCAnZWRpdGVkJyBpZiB0aGUgdmFsdWUgd2FzXG4gICAgICogZWRpdGVkLiAgUmV0dXJucyBmYWlsdXJlIHdpdGggJ2luYXBwbGljYWJsZScgaWYgdGhlIHJ1bGUgZG9lcyBub3QgYWZmZWN0IHRoaXMgdmFsdWUuICBGYWlscyB3aXRoXG4gICAgICogZGV0YWlsICdpZ25vcmUnIGlmIHRoZSB2YWx1ZSBpcyB0byBiZSBpZ25vcmVkLCBvciB3aXRoICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIGVkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+O1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGZvciBlYWNoIHJ1bGUgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgaGF2ZSBiZWVuIG1lcmdlZC4gIEFueSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBkZWZlcnJlZFxuICAgICAqIGR1cmluZyB0aGUgaW5pdGlhbCBlZGl0IHBhc3MgYXJlIHN1cHBsaWVkIGFzIGlucHV0LlxuICAgICAqIEBwYXJhbSBkZWZlcnJlZCBBbnkgb2JqZWN0cyB0aGF0IHdlcmUgZGVmZXJyZWQgZHVyaW5nIHRoZSBmaXJzdCBlZGl0IHBhc3NcbiAgICAgKiBAcGFyYW0gc3RhdGUgRWRpdG9yIHN0YXRlIHdoaWNoIGFwcGxpZXMgdG8gdGhlIGVkaXRcbiAgICAgKiBAcmV0dXJucyBPbiBzdWNjZXNzZnVsIHJldHVybiwgYW55IHJldHVybmVkIG9iamVjdHMgYXJlIG1lcmdlZCBpbiBvcmRlciBhbmQgZmluYWxpemF0aW9uXG4gICAgICogaXMgc3RvcHBlZC4gRmluYWxpemF0aW9uIGlzIGFsc28gc3RvcHBlZCBvbiBGYWlsdXJlIHdpdGggZGV0YWlsICdpZ25vcmUuJyBPbiBmYWlsdXJlXG4gICAgICogd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScsIGZpbmFsaXphdGlvbiBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBydWxlLiBGYWlscyB3aXRoIGFuXG4gICAgICogZXJyb3IgZGV0YWlsICdlcnJvcicgYW5kIGFuIGluZm9ybWF0aXZlIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIGZpbmFsaXplUHJvcGVydGllcyhkZWZlcnJlZDogSnNvbk9iamVjdFtdLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdFtdLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIERlZmF1bHQgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBKc29uRWRpdG9yIHJ1bGUgcmV0dXJucyBpbmFwcGxpY2FibGUgZm9yIGFsbCBvcGVyYXRpb25zIHNvIHRoYXRcbiAqIGRlcml2ZWQgY2xhc3NlcyBuZWVkIG9ubHkgaW1wbGVtZW50IHRoZSBvcGVyYXRpb25zIHRoZXkgYWN0dWFsbHkgc3VwcG9ydC5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JSdWxlQmFzZSBpbXBsZW1lbnRzIEpzb25FZGl0b3JSdWxlIHtcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoX2tleTogc3RyaW5nLCBfdmFsdWU6IEpzb25WYWx1ZSwgX3N0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdFZhbHVlKF92YWx1ZTogSnNvblZhbHVlLCBfc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5hbGl6ZVByb3BlcnRpZXMoX2RlZmVycmVkOiBKc29uT2JqZWN0W10sIF9zdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdFtdLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9qc29uRWRpdG9yUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCw0Q0FBK0Q7QUE0Qy9EOzs7R0FHRztBQUNILE1BQWEsa0JBQWtCO0lBQzNCLHVCQUF1QjtJQUNoQixZQUFZLENBQUMsSUFBWSxFQUFFLE1BQWlCLEVBQUUsTUFBdUI7UUFDeEUsdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBQSx5QkFBYyxFQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWlCLEVBQUUsTUFBdUI7UUFDdkQsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxTQUF1QixFQUFFLE1BQXVCO1FBQ3RFLE9BQU8sSUFBQSx5QkFBYyxFQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFkRCxnREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZFJlc3VsdCwgZmFpbFdpdGhEZXRhaWwgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi9jb21tb24nO1xuXG5pbXBvcnQgeyBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkVkaXRvclJ1bGUge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhIEpTT04gZWRpdG9yIHRvIHBvc3NpYmx5IGVkaXQgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIGJlaW5nIG1lcmdlZCBpbnRvIGEgdGFyZ2V0IG9iamVjdC5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBFZGl0b3Igc3RhdGUgd2hpY2ggYXBwbGllcyB0byB0aGUgZWRpdFxuICAgICAqIEByZXR1cm5zIElmIHRoZSBwcm9wZXJ0eSB3YXMgZWRpdGVkLCByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVkaXRlZCByZXN1bHRzXG4gICAgICogYW5kIHdpdGggZGV0YWlsICdlZGl0ZWQnLiBJZiB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBkZWZlcnJlZCBmb3IgbGF0ZXIgY29uc2lkZXJhdGlvbiBvciBtZXJnLCBTdWNjZWVkc1xuICAgICAqIHdpdGggZGV0YWlsICdkZWZlcnJlZCcgYW5kIGFuIEpzb25PYmplY3QgdG8gYmUgZmluYWxpemVkLiAgSWYgdGhlIHJ1bGUgZG9lcyBub3QgYWZmZWN0IHRoaXMgcHJvcGVydHksXG4gICAgICogZmFpbHMgd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScuIElmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGVycm9yLCByZXR1cm5zIEZhaWx1cmUgd2l0aFxuICAgICAqIGRldGFpbCAnZXJyb3InLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIGVkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPjtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhIEpTT04gZWRpdG9yIHRvIHBvc3NpYmx5IGVkaXQgYSBwcm9wZXJ0eSB2YWx1ZSBvciBhcnJheSBlbGVtZW50XG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgRWRpdG9yIHN0YXRlIHdoaWNoIGFwcGxpZXMgdG8gdGhlIGVkaXRcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHN1Y2Nlc3Mgd2l0aCB0aGUgSnNvblZhbHVlIHRvIGJlIGluc2VydGVkLCB3aXRoIGRldGFpbCAnZWRpdGVkJyBpZiB0aGUgdmFsdWUgd2FzXG4gICAgICogZWRpdGVkLiAgUmV0dXJucyBmYWlsdXJlIHdpdGggJ2luYXBwbGljYWJsZScgaWYgdGhlIHJ1bGUgZG9lcyBub3QgYWZmZWN0IHRoaXMgdmFsdWUuICBGYWlscyB3aXRoXG4gICAgICogZGV0YWlsICdpZ25vcmUnIGlmIHRoZSB2YWx1ZSBpcyB0byBiZSBpZ25vcmVkLCBvciB3aXRoICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIGVkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+O1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGZvciBlYWNoIHJ1bGUgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgaGF2ZSBiZWVuIG1lcmdlZC4gIEFueSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBkZWZlcnJlZFxuICAgICAqIGR1cmluZyB0aGUgaW5pdGlhbCBlZGl0IHBhc3MgYXJlIHN1cHBsaWVkIGFzIGlucHV0LlxuICAgICAqIEBwYXJhbSBkZWZlcnJlZCBBbnkgb2JqZWN0cyB0aGF0IHdlcmUgZGVmZXJyZWQgZHVyaW5nIHRoZSBmaXJzdCBlZGl0IHBhc3NcbiAgICAgKiBAcGFyYW0gc3RhdGUgRWRpdG9yIHN0YXRlIHdoaWNoIGFwcGxpZXMgdG8gdGhlIGVkaXRcbiAgICAgKiBAcmV0dXJucyBPbiBzdWNjZXNzZnVsIHJldHVybiwgYW55IHJldHVybmVkIG9iamVjdHMgYXJlIG1lcmdlZCBpbiBvcmRlciBhbmQgZmluYWxpemF0aW9uXG4gICAgICogaXMgc3RvcHBlZC4gRmluYWxpemF0aW9uIGlzIGFsc28gc3RvcHBlZCBvbiBGYWlsdXJlIHdpdGggZGV0YWlsICdpZ25vcmUuJyBPbiBmYWlsdXJlXG4gICAgICogd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScsIGZpbmFsaXphdGlvbiBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBydWxlLiBGYWlscyB3aXRoIGFuXG4gICAgICogZXJyb3IgZGV0YWlsICdlcnJvcicgYW5kIGFuIGluZm9ybWF0aXZlIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIGZpbmFsaXplUHJvcGVydGllcyhkZWZlcnJlZDogSnNvbk9iamVjdFtdLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdFtdLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIERlZmF1bHQgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBKc29uRWRpdG9yIHJ1bGUgcmV0dXJucyBpbmFwcGxpY2FibGUgZm9yIGFsbCBvcGVyYXRpb25zIHNvIHRoYXRcbiAqIGRlcml2ZWQgY2xhc3NlcyBuZWVkIG9ubHkgaW1wbGVtZW50IHRoZSBvcGVyYXRpb25zIHRoZXkgYWN0dWFsbHkgc3VwcG9ydC5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JSdWxlQmFzZSBpbXBsZW1lbnRzIEpzb25FZGl0b3JSdWxlIHtcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoX2tleTogc3RyaW5nLCBfdmFsdWU6IEpzb25WYWx1ZSwgX3N0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZWRpdFZhbHVlKF92YWx1ZTogSnNvblZhbHVlLCBfc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5hbGl6ZVByb3BlcnRpZXMoX2RlZmVycmVkOiBKc29uT2JqZWN0W10sIF9zdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdFtdLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxufVxuIl19
@@ -1,43 +1,14 @@
1
1
  import { DetailedFailure, Result } from '@fgv/ts-utils';
2
+ import { IJsonCloneEditor, JsonEditFailureReason, JsonEditorOptions, JsonEditorValidationOptions, JsonEditorValidationRules } from './common';
2
3
  import { JsonContext, JsonReferenceMap, TemplateVars, VariableValue } from '../jsonContext';
3
- import { JsonEditFailureReason } from './jsonEditorRule';
4
- import { JsonEditor } from './jsonEditor';
5
4
  import { JsonObject } from '../common';
6
- export type JsonEditorValidationRules = 'invalidPropertyName' | 'invalidPropertyValue' | 'undefinedPropertyValue';
7
- export interface JsonEditorValidationOptions {
8
- /**
9
- * If onInvalidPropertyName is 'error' (default) then any property name
10
- * that is invalid after template rendering causes an error and stops
11
- * conversion. If onInvalidPropertyName is 'ignore', then names which
12
- * are invalid after template rendering are passed through unchanged.
13
- */
14
- onInvalidPropertyName: 'error' | 'ignore';
15
- /**
16
- * If onInvalidPropertyValue is 'error' (default) then any illegal
17
- * property value other than undefined causes an error and stops
18
- * conversion. If onInvalidPropertyValue is 'ignore' then any
19
- * invalid property values are silently ignored.
20
- */
21
- onInvalidPropertyValue: 'error' | 'ignore';
22
- /**
23
- * If onUnknownPropertyValue is error, then any property with
24
- * value undefined will cause an error and stop conversion. If
25
- * onUndefinedPropertyValue is 'ignore' (default) then any
26
- * property with value undefined is silently ignored.
27
- */
28
- onUndefinedPropertyValue: 'error' | 'ignore';
29
- }
30
- export interface JsonEditorOptions {
31
- context?: JsonContext;
32
- validation: JsonEditorValidationOptions;
33
- }
34
5
  export declare class JsonEditorState {
35
6
  protected static _nextId: number;
36
- readonly editor: JsonEditor;
7
+ readonly editor: IJsonCloneEditor;
37
8
  readonly options: JsonEditorOptions;
38
9
  protected readonly _deferred: JsonObject[];
39
10
  protected readonly _id: number;
40
- constructor(editor: JsonEditor, baseOptions: JsonEditorOptions, runtimeContext?: JsonContext);
11
+ constructor(editor: IJsonCloneEditor, baseOptions: JsonEditorOptions, runtimeContext?: JsonContext);
41
12
  get context(): JsonContext | undefined;
42
13
  get deferred(): JsonObject[];
43
14
  protected static _getEffectiveOptions(options: JsonEditorOptions, context?: JsonContext): Result<JsonEditorOptions>;
@@ -83,4 +83,4 @@ class JsonEditorState {
83
83
  }
84
84
  exports.JsonEditorState = JsonEditorState;
85
85
  JsonEditorState._nextId = 0;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFpRjtBQUlqRixzREFBc0Q7QUFxQ3RELE1BQWEsZUFBZTtJQVN4QixZQUFtQixNQUFrQixFQUFFLFdBQThCLEVBQUUsY0FBNEI7UUFIaEYsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNGLElBQUksQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLE9BQU8sS0FBNEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFNUUsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFUyxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBMEIsRUFBRSxPQUFxQjtRQUNuRixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLGtDQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLE9BQU8sSUFBQSxrQkFBTyxFQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQWU7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUE0Qjs7UUFDdkMsT0FBTyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLElBQUksbUNBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksQ0FBQztJQUM5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQTRCOztRQUN2QyxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsY0FBNEI7UUFDMUMsT0FBTyxrQ0FBaUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxXQUFrQyxFQUFFLEdBQTBEO1FBQy9HLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTyxrQ0FBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxjQUFjLENBQ2pCLElBQStCLEVBQy9CLE9BQWdCLEVBQ2hCLFVBQXdDO1FBRXhDLElBQUksTUFBTSxHQUFrQyxPQUFPLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDeEQsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLHFCQUFxQjtnQkFDdEIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLHFCQUFxQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztnQkFDbkYsTUFBTTtZQUNWLEtBQUssc0JBQXNCO2dCQUN2QixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUM5RSxNQUFNO1lBQ1YsS0FBSyx3QkFBd0I7Z0JBQ3pCLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9FLHVCQUF1QjtnQkFDdkIsT0FBTyxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLGtDQUFrQyxDQUFDO2dCQUN4RCxNQUFNO1NBQ2I7UUFDRCx1QkFBdUI7UUFDdkIsT0FBTyxJQUFBLHlCQUFjLEVBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBekVMLDBDQTBFQztBQXpFb0IsdUJBQU8sR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRGYWlsdXJlLCBSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vanNvbkVkaXRvclJ1bGUnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dEhlbHBlciB9IGZyb20gJy4uL2NvbnRleHRIZWxwZXJzJztcbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3InO1xuaW1wb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIEpzb25FZGl0b3JWYWxpZGF0aW9uUnVsZXMgPSAnaW52YWxpZFByb3BlcnR5TmFtZSd8J2ludmFsaWRQcm9wZXJ0eVZhbHVlJ3wndW5kZWZpbmVkUHJvcGVydHlWYWx1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiBvbkludmFsaWRQcm9wZXJ0eU5hbWUgaXMgJ2Vycm9yJyAoZGVmYXVsdCkgdGhlbiBhbnkgcHJvcGVydHkgbmFtZVxuICAgICAqIHRoYXQgaXMgaW52YWxpZCBhZnRlciB0ZW1wbGF0ZSByZW5kZXJpbmcgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wc1xuICAgICAqIGNvbnZlcnNpb24uICBJZiBvbkludmFsaWRQcm9wZXJ0eU5hbWUgaXMgJ2lnbm9yZScsIHRoZW4gbmFtZXMgd2hpY2hcbiAgICAgKiBhcmUgaW52YWxpZCBhZnRlciB0ZW1wbGF0ZSByZW5kZXJpbmcgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZC5cbiAgICAgKi9cbiAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6ICdlcnJvcid8J2lnbm9yZSc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IGlsbGVnYWxcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBvdGhlciB0aGFuIHVuZGVmaW5lZCBjYXVzZXMgYW4gZXJyb3IgYW5kIHN0b3BzXG4gICAgICogY29udmVyc2lvbi4gIElmIG9uSW52YWxpZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgdGhlbiBhbnlcbiAgICAgKiBpbnZhbGlkIHByb3BlcnR5IHZhbHVlcyBhcmUgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25Vbmtub3duUHJvcGVydHlWYWx1ZSBpcyBlcnJvciwgdGhlbiBhbnkgcHJvcGVydHkgd2l0aFxuICAgICAqIHZhbHVlIHVuZGVmaW5lZCB3aWxsIGNhdXNlIGFuIGVycm9yIGFuZCBzdG9wIGNvbnZlcnNpb24uICBJZlxuICAgICAqIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZSBpcyAnaWdub3JlJyAoZGVmYXVsdCkgdGhlbiBhbnlcbiAgICAgKiBwcm9wZXJ0eSB3aXRoIHZhbHVlIHVuZGVmaW5lZCBpcyBzaWxlbnRseSBpZ25vcmVkLlxuICAgICAqL1xuICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uRWRpdG9yT3B0aW9ucyB7XG4gICAgY29udGV4dD86IEpzb25Db250ZXh0O1xuICAgIHZhbGlkYXRpb246IEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JTdGF0ZSB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfbmV4dElkID0gMDtcblxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3I6IEpzb25FZGl0b3I7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZlcnJlZDogSnNvbk9iamVjdFtdID0gW107XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pZDogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvcjogSnNvbkVkaXRvciwgYmFzZU9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zLCBydW50aW1lQ29udGV4dD86IEpzb25Db250ZXh0KSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBKc29uRWRpdG9yU3RhdGUuX2dldEVmZmVjdGl2ZU9wdGlvbnMoYmFzZU9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0KS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2lkID0gSnNvbkVkaXRvclN0YXRlLl9uZXh0SWQrKztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbnRleHQoKTogSnNvbkNvbnRleHR8dW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0OyB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmVycmVkKCk6IEpzb25PYmplY3RbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRFZmZlY3RpdmVPcHRpb25zKG9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIubWVyZ2VDb250ZXh0KG9wdGlvbnMuY29udGV4dCwgY29udGV4dCkub25TdWNjZXNzKChtZXJnZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHsgY29udGV4dDogbWVyZ2VkLCB2YWxpZGF0aW9uOiBvcHRpb25zLnZhbGlkYXRpb24gfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWZlcihvYmo6IEpzb25PYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVmZXJyZWQucHVzaChvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYXJzKGRlZmF1bHRDb250ZXh0PzogSnNvbkNvbnRleHQpOiBUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0Py52YXJzID8/IGRlZmF1bHRDb250ZXh0Py52YXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZWZzKGRlZmF1bHRDb250ZXh0PzogSnNvbkNvbnRleHQpOiBKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dD8ucmVmcyA/PyBkZWZhdWx0Q29udGV4dD8ucmVmcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29udGV4dChkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogSnNvbkNvbnRleHR8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLm1lcmdlQ29udGV4dChkZWZhdWx0Q29udGV4dCwgdGhpcy5vcHRpb25zLmNvbnRleHQpLm9yRGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQsIGFkZDogeyB2YXJzPzogVmFyaWFibGVWYWx1ZVtdLCByZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdIH0pOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoYmFzZUNvbnRleHQpO1xuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIuZXh0ZW5kQ29udGV4dChjb250ZXh0LCBhZGQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsVmFsaWRhdGlvbjxUPUpzb25PYmplY3Q+KFxuICAgICAgICBydWxlOiBKc29uRWRpdG9yVmFsaWRhdGlvblJ1bGVzLFxuICAgICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0aW9uPzogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zLFxuICAgICk6IERldGFpbGVkRmFpbHVyZTxULCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgbGV0IGRldGFpbDogSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBlZmZlY3RpdmUgPSB2YWxpZGF0aW9uID8/IHRoaXMub3B0aW9ucy52YWxpZGF0aW9uO1xuICAgICAgICBzd2l0Y2ggKHJ1bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludmFsaWRQcm9wZXJ0eU5hbWUnOlxuICAgICAgICAgICAgICAgIGRldGFpbCA9IChlZmZlY3RpdmUub25JbnZhbGlkUHJvcGVydHlOYW1lICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2luYXBwbGljYWJsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkUHJvcGVydHlWYWx1ZSc6XG4gICAgICAgICAgICAgICAgZGV0YWlsID0gKGVmZmVjdGl2ZS5vbkludmFsaWRQcm9wZXJ0eVZhbHVlICE9PSAnaWdub3JlJykgPyAnZXJyb3InIDogJ2lnbm9yZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWRQcm9wZXJ0eVZhbHVlJzpcbiAgICAgICAgICAgICAgICBkZXRhaWwgPSAoZWZmZWN0aXZlLm9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZSAhPT0gJ2Vycm9yJykgPyAnaWdub3JlJyA6ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSA/PyAnQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIHRvIEpTT04nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChtZXNzYWdlID8/IHJ1bGUsIGRldGFpbCk7XG4gICAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFpRjtBQUlqRixzREFBc0Q7QUFHdEQsTUFBYSxlQUFlO0lBU3hCLFlBQW1CLE1BQXdCLEVBQUUsV0FBOEIsRUFBRSxjQUE0QjtRQUh0RixjQUFTLEdBQWlCLEVBQUUsQ0FBQztRQUk1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsT0FBTyxLQUE0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU1RSxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxPQUEwQixFQUFFLE9BQXFCO1FBQ25GLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sa0NBQWlCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakYsT0FBTyxJQUFBLGtCQUFPLEVBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBZTtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQTRCOztRQUN2QyxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxPQUFPLENBQUMsY0FBNEI7O1FBQ3ZDLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTywwQ0FBRSxJQUFJLG1DQUFJLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxjQUE0QjtRQUMxQyxPQUFPLGtDQUFpQixDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1RixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQWtDLEVBQUUsR0FBMEQ7UUFDL0csTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxPQUFPLGtDQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLGNBQWMsQ0FDakIsSUFBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsVUFBd0M7UUFFeEMsSUFBSSxNQUFNLEdBQWtDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN4RCxRQUFRLElBQUksRUFBRTtZQUNWLEtBQUsscUJBQXFCO2dCQUN0QixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUNuRixNQUFNO1lBQ1YsS0FBSyxzQkFBc0I7Z0JBQ3ZCLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQzlFLE1BQU07WUFDVixLQUFLLHdCQUF3QjtnQkFDekIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0UsdUJBQXVCO2dCQUN2QixPQUFPLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksa0NBQWtDLENBQUM7Z0JBQ3hELE1BQU07U0FDYjtRQUNELHVCQUF1QjtRQUN2QixPQUFPLElBQUEseUJBQWMsRUFBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUF6RUwsMENBMEVDO0FBekVvQix1QkFBTyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZEZhaWx1cmUsIFJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IElKc29uQ2xvbmVFZGl0b3IsIEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucywgSnNvbkVkaXRvclZhbGlkYXRpb25SdWxlcywgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vanNvbkNvbnRleHQnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dEhlbHBlciB9IGZyb20gJy4uL2NvbnRleHRIZWxwZXJzJztcbmltcG9ydCB7IEpzb25PYmplY3QgfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgSnNvbkVkaXRvclN0YXRlIHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9uZXh0SWQgPSAwO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRvcjogSUpzb25DbG9uZUVkaXRvcjtcblxuICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmVycmVkOiBKc29uT2JqZWN0W10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lkOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yOiBJSnNvbkNsb25lRWRpdG9yLCBiYXNlT3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IEpzb25FZGl0b3JTdGF0ZS5fZ2V0RWZmZWN0aXZlT3B0aW9ucyhiYXNlT3B0aW9ucywgcnVudGltZUNvbnRleHQpLm9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5faWQgPSBKc29uRWRpdG9yU3RhdGUuX25leHRJZCsrO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBKc29uQ29udGV4dHx1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHQ7IH1cblxuICAgIHB1YmxpYyBnZXQgZGVmZXJyZWQoKTogSnNvbk9iamVjdFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2dldEVmZmVjdGl2ZU9wdGlvbnMob3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgICAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQob3B0aW9ucy5jb250ZXh0LCBjb250ZXh0KS5vblN1Y2Nlc3MoKG1lcmdlZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoeyBjb250ZXh0OiBtZXJnZWQsIHZhbGlkYXRpb246IG9wdGlvbnMudmFsaWRhdGlvbiB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlZmVyKG9iajogSnNvbk9iamVjdCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZWZlcnJlZC5wdXNoKG9iaik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhcnMoZGVmYXVsdENvbnRleHQ/OiBKc29uQ29udGV4dCk6IFRlbXBsYXRlVmFyc3x1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHQ/LnZhcnMgPz8gZGVmYXVsdENvbnRleHQ/LnZhcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlZnMoZGVmYXVsdENvbnRleHQ/OiBKc29uQ29udGV4dCk6IEpzb25SZWZlcmVuY2VNYXB8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb250ZXh0Py5yZWZzID8/IGRlZmF1bHRDb250ZXh0Py5yZWZzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb250ZXh0KGRlZmF1bHRDb250ZXh0PzogSnNvbkNvbnRleHQpOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gSnNvbkNvbnRleHRIZWxwZXIubWVyZ2VDb250ZXh0KGRlZmF1bHRDb250ZXh0LCB0aGlzLm9wdGlvbnMuY29udGV4dCkub3JEZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4dGVuZENvbnRleHQoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYWRkOiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChiYXNlQ29udGV4dCk7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0KGNvbnRleHQsIGFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZhaWxWYWxpZGF0aW9uPFQ9SnNvbk9iamVjdD4oXG4gICAgICAgIHJ1bGU6IEpzb25FZGl0b3JWYWxpZGF0aW9uUnVsZXMsXG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICAgIHZhbGlkYXRpb24/OiBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnMsXG4gICAgKTogRGV0YWlsZWRGYWlsdXJlPFQsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBsZXQgZGV0YWlsOiBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiA9ICdlcnJvcic7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZSA9IHZhbGlkYXRpb24gPz8gdGhpcy5vcHRpb25zLnZhbGlkYXRpb247XG4gICAgICAgIHN3aXRjaCAocnVsZSkge1xuICAgICAgICAgICAgY2FzZSAnaW52YWxpZFByb3BlcnR5TmFtZSc6XG4gICAgICAgICAgICAgICAgZGV0YWlsID0gKGVmZmVjdGl2ZS5vbkludmFsaWRQcm9wZXJ0eU5hbWUgIT09ICdpZ25vcmUnKSA/ICdlcnJvcicgOiAnaW5hcHBsaWNhYmxlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJzpcbiAgICAgICAgICAgICAgICBkZXRhaWwgPSAoZWZmZWN0aXZlLm9uSW52YWxpZFByb3BlcnR5VmFsdWUgIT09ICdpZ25vcmUnKSA/ICdlcnJvcicgOiAnaWdub3JlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VuZGVmaW5lZFByb3BlcnR5VmFsdWUnOlxuICAgICAgICAgICAgICAgIGRldGFpbCA9IChlZmZlY3RpdmUub25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlICE9PSAnZXJyb3InKSA/ICdpZ25vcmUnIDogJ2Vycm9yJztcbiAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlID8/ICdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgdG8gSlNPTic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKG1lc3NhZ2UgPz8gcnVsZSwgZGV0YWlsKTtcbiAgICB9XG59XG4iXX0=
@@ -1,7 +1,8 @@
1
1
  import { DetailedResult, Result } from '@fgv/ts-utils';
2
- import { JsonEditFailureReason, JsonEditorRuleBase, JsonPropertyEditFailureReason } from '../jsonEditorRule';
3
- import { JsonEditorOptions, JsonEditorState } from '../jsonEditorState';
2
+ import { JsonEditFailureReason, JsonEditorOptions, JsonPropertyEditFailureReason } from '../common';
4
3
  import { JsonObject, JsonValue } from '../../common';
4
+ import { JsonEditorRuleBase } from '../jsonEditorRule';
5
+ import { JsonEditorState } from '../jsonEditorState';
5
6
  /**
6
7
  * Returned by the _tryMatch method of the @see ConditionalJsonEditorRule
7
8
  * to indicate whether a successful match was due to a matching condition
@@ -23,8 +23,8 @@
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.ConditionalJsonEditorRule = void 0;
25
25
  const ts_utils_1 = require("@fgv/ts-utils");
26
- const jsonEditorRule_1 = require("../jsonEditorRule");
27
26
  const common_1 = require("../../common");
27
+ const jsonEditorRule_1 = require("../jsonEditorRule");
28
28
  /**
29
29
  * The Conditional JSON editor rule evaluates properties with conditional keys,
30
30
  * omitting non-matching keys and merging keys that match, or default keys only
@@ -143,4 +143,4 @@ class ConditionalJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
143
143
  }
144
144
  }
145
145
  exports.ConditionalJsonEditorRule = ConditionalJsonEditorRule;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbkVkaXRvci9ydWxlcy9jb25kaXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCw0Q0FBeUc7QUFDekcsc0RBQTZHO0FBRTdHLHlDQUFtRTtBQStCbkU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxtQ0FBa0I7SUFHN0Q7OztPQUdHO0lBQ0gsWUFBbUIsT0FBb0M7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFvQztRQUNyRCxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0RSxJQUFJLElBQUEscUJBQVksRUFBQyxLQUFLLENBQUMsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEdBQWtDLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDOUM7WUFDRCxPQUFPLElBQUEseUJBQWMsRUFBNEMsR0FBRyxHQUFHLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxN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LEVBQUUsT0FBTyxFQUFFLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsVUFBVSxDQUFDLENBQUM7U0FDMUY7YUFDSSxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLDBCQUEwQixNQUFLLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkYsT0FBTyxJQUFBLDRCQUFpQixFQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFUyxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxRQUFnQjtRQUM1RCxRQUFRLFFBQVEsRUFBRTtZQUNkLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQ2hDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQzlCLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQzlCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQ2hDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQ2hDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1NBQ3BDO1FBQ0Qsb0NBQW9DO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQW5IRCw4REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRSZXN1bHQsIFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWRXaXRoRGV0YWlsIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlQmFzZSwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlIH0gZnJvbSAnLi4vanNvbkVkaXRvclN0YXRlJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuLyoqXG4gKiBSZXR1cm5lZCBieSB0aGUgX3RyeU1hdGNoIG1ldGhvZCBvZiB0aGUgQHNlZSBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlXG4gKiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3VjY2Vzc2Z1bCBtYXRjaCB3YXMgZHVlIHRvIGEgbWF0Y2hpbmcgY29uZGl0aW9uXG4gKiBvciBhIGRlZmF1bHQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uYWxKc29uS2V5UmVzdWx0IGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gICAgbWF0Y2hUeXBlOiAnZGVmYXVsdCd8J21hdGNoJ3wndW5jb25kaXRpb25hbCc7XG59XG5cbi8qKlxuICogT24gYSBzdWNjZXNzZnVsIG1hdGNoLCB0aGUgQHNlZSBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlIHN0b3JlcyBhXG4gKiBDb25kaXRpb25hbEpzb25EZWZlcnJlZE9iamVjdCBkZXNjcmliaW5nIHRoZSBtYXRjaGluZyByZXN1bHQsIHRvXG4gKiBiZSByZXNvbHZlZCBhdCBmaW5hbGl6YXRpb24gdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25hbEpzb25EZWZlcnJlZE9iamVjdCBleHRlbmRzIENvbmRpdGlvbmFsSnNvbktleVJlc3VsdHtcbiAgICB2YWx1ZTogSnNvblZhbHVlO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENvbmRpdGlvbmFsIEpTT04gZWRpdG9yIHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25hbEpzb25SdWxlT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIENvbmRpdGlvbmFsIEpTT04gZWRpdG9yIHJ1bGUgZXZhbHVhdGVzIHByb3BlcnRpZXMgd2l0aCBjb25kaXRpb25hbCBrZXlzLFxuICogb21pdHRpbmcgbm9uLW1hdGNoaW5nIGtleXMgYW5kIG1lcmdpbmcga2V5cyB0aGF0IG1hdGNoLCBvciBkZWZhdWx0IGtleXMgb25seVxuICogaWYgbm8gb3RoZXIga2V5cyBtYXRjaC5cbiAqXG4gKiBUaGUgZGVmYXVsdCBzeW50YXggZm9yIGEgY29uZGl0aW9uYWwga2V5IGlzOlxuICogICAgXCI/dmFsdWUxPXZhbHVlMlwiIC0gbWF0Y2hlcyBpZiB2YWx1ZTEgYW5kIHZhbHVlMiBhcmUgdGhlIHNhbWUsIGlzIGlnbm9yZWQgb3RoZXJ3aXNlLlxuICogICAgXCI/dmFsdWVcIiAtIG1hdGNoZXMgaWYgdmFsdWUgaXMgYSBub24tZW1wdHksIG5vbi13aGl0ZXNwYWNlIHN0cmluZy4gSXMgaWdub3JlZCBvdGhlcndpc2UuXG4gKiAgICBcIj9kZWZhdWx0XCIgLSBtYXRjaGVzIG9ubHkgaWYgbm8gb3RoZXIgY29uZGl0aW9uYWwgYmxvY2tzIGluIHRoZSBzYW1lIG9iamVjdCB3ZXJlIG1hdGNoZWRcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUgZXh0ZW5kcyBKc29uRWRpdG9yUnVsZUJhc2Uge1xuICAgIHByb3RlY3RlZCBfb3B0aW9ucz86IENvbmRpdGlvbmFsSnNvblJ1bGVPcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdXNlZCBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDb25kaXRpb25hbEpzb25SdWxlT3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1c2VkIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogQ29uZGl0aW9uYWxKc29uUnVsZU9wdGlvbnMpOiBSZXN1bHQ8Q29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHkgZm9yIGNvbmRpdGlvbmFsIGFwcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBkZXRhaWwgJ2RlZmVycmVkJyBhbmQgYSBAc2VlIENvbmRpdGlvbmFsSnNvbkRlZmVycmVkT2JqZWN0XG4gICAgICogZm9yIGEgbWF0Y2hpbmcsIGRlZmF1bHQgb3IgdW5jb25kaXRpb25hbCBrZXkuIEZhaWxzIHdpdGggZGV0YWlsICdpZ25vcmUnIGZvciBhXG4gICAgICogbm9uLW1hdGNoaW5nIGNvbmRpdGlvbmFsIGFuZCB3aXRoIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3Vycy4gT3RoZXJ3aXNlXG4gICAgICogZmFpbHMgd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScuXG4gICAgICovXG4gICAgcHVibGljIGVkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3RyeVBhcnNlQ29uZGl0aW9uKGtleSwgc3RhdGUpLm9uU3VjY2VzcygoZGVmZXJyZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0pzb25PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogQ29uZGl0aW9uYWxKc29uRGVmZXJyZWRPYmplY3QgPSB7IC4uLmRlZmVycmVkLCB2YWx1ZSB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChydHJuLCAnZGVmZXJyZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4oYCR7a2V5fTogY29uZGl0aW9uYWwgYm9keSBtdXN0IGJlIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpICYmIChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgcmVzdWx0Lm1lc3NhZ2UsIHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZXMgYW55IGRlZmVycmVkIGNvbmRpdGlvbmFsIHByb3BlcnRpZXMuIElmIHRoZSBvbmx5IGRlZmVycmVkIHByb3BlcnR5IGlzXG4gICAgICogZGVmYXVsdCwgdGhhdCBwcm9wZXJ0eSBpcyBlbWl0dGVkLiBPdGhlcndpc2UgYWxsIG1hdGNoaW5nIHByb3BlcnRpZXMgYXJlIGVtaXR0ZWQuXG4gICAgICogQHBhcmFtIGZpbmFsaXplZCBUaGUgZGVmZXJyZWQgcHJvcGVydGllcyB0byBiZSBjb25zaWRlcmVkIGZvciBtZXJnZVxuICAgICAqIEBwYXJhbSBfc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZmluYWxpemVQcm9wZXJ0aWVzKGZpbmFsaXplZDogSnNvbk9iamVjdFtdLCBfc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3RbXSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGxldCB0b01lcmdlID0gZmluYWxpemVkO1xuICAgICAgICBpZiAoZmluYWxpemVkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGlmIChmaW5hbGl6ZWQuZmluZCgobykgPT4gby5tYXRjaFR5cGUgPT09ICdtYXRjaCcpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0b01lcmdlID0gZmluYWxpemVkLmZpbHRlcigobykgPT4gKG8ubWF0Y2hUeXBlID09PSAnbWF0Y2gnKSB8fCAoby5tYXRjaFR5cGUgPT09ICd1bmNvbmRpdGlvbmFsJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0b01lcmdlLm1hcCgobykgPT4gby52YWx1ZSkuZmlsdGVyKGlzSnNvbk9iamVjdCksICdlZGl0ZWQnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gcHJvcGVydHkga2V5IGlzIGNvbmRpdGlvbmFsLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXNcbiAgICAgKiBtZXRob2QgdG8gdXNlIGEgZGlmZmVyZW50IGZvcm1hdCBmb3IgY29uZGl0aW9uYWwgcHJvcGVydGllcy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGNvbnNpZGVyLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkLlxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBkZXRhaWwgJ2RlZmVycmVkJyBhbmQgYSBAc2VlIENvbmRpdGlvbmFsSnNvbktleVJlc3VsdCBkZXNjcmliaW5nIHRoZVxuICAgICAqIG1hdGNoIGZvciBhIGRlZmF1bHQgb3IgbWF0Y2hpbmcgY29uZGl0aW9uYWwgcHJvcGVydHkuICBGYWlscyB3aXRoIGRldGFpbCAnaWdub3JlJyBmb3JcbiAgICAgKiBhIG5vbi1tYXRjaGluZyBjb25kaXRpb25hbCBwcm9wZXJ0eS4gRmFpbHMgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnNcbiAgICAgKiBvciB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJyBpZiB0aGUga2V5IGRvZXMgbm90IHJlcHJlc2VudCBhIGNvbmRpdGlvbmFsIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdHJ5UGFyc2VDb25kaXRpb24oa2V5OiBzdHJpbmcsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxDb25kaXRpb25hbEpzb25LZXlSZXN1bHQsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnPycpKSB7XG4gICAgICAgICAgICAvLyBpZ25vcmUgZXZlcnl0aGluZyBhZnRlciBhbnkgI1xuICAgICAgICAgICAga2V5ID0ga2V5LnNwbGl0KCcjJylbMF0udHJpbSgpO1xuXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnP2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHsgbWF0Y2hUeXBlOiAnZGVmYXVsdCcgfSwgJ2RlZmVycmVkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0ga2V5LnN1YnN0cmluZygxKS5zcGxpdCgvKD18Pj18PD18Pnw8fCE9KS8pO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY29tcGFyZShwYXJ0c1swXS50cmltKCksIHBhcnRzWzJdLnRyaW0oKSwgcGFydHNbMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgQ29uZGl0aW9uICR7a2V5fSBkb2VzIG5vdCBtYXRjaGAsICdpZ25vcmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHsgbWF0Y2hUeXBlOiAnbWF0Y2gnIH0sICdkZWZlcnJlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzWzBdLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGBDb25kaXRpb24gJHtrZXl9IGRvZXMgbm90IG1hdGNoYCwgJ2lnbm9yZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoeyBtYXRjaFR5cGU6ICdtYXRjaCcgfSwgJ2RlZmVycmVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYE1hbGZvcm1lZCBjb25kaXRpb24gdG9rZW4gJHtrZXl9YDtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIG1lc3NhZ2UsIHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLl9vcHRpb25zPy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyAhPT0gZmFsc2UpICYmIGtleS5zdGFydHNXaXRoKCchJykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh7IG1hdGNoVHlwZTogJ3VuY29uZGl0aW9uYWwnIH0sICdkZWZlcnJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY29tcGFyZShsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSAnPSc6IHJldHVybiBsZWZ0ID09PSByaWdodDtcbiAgICAgICAgICAgIGNhc2UgJz4nOiByZXR1cm4gbGVmdCA+IHJpZ2h0O1xuICAgICAgICAgICAgY2FzZSAnPCc6IHJldHVybiBsZWZ0IDwgcmlnaHQ7XG4gICAgICAgICAgICBjYXNlICc+PSc6IHJldHVybiBsZWZ0ID49IHJpZ2h0O1xuICAgICAgICAgICAgY2FzZSAnPD0nOiByZXR1cm4gbGVmdCA8PSByaWdodDtcbiAgICAgICAgICAgIGNhc2UgJyE9JzogcmV0dXJuIGxlZnQgIT09IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB1bnJlYWNoYWJsZVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbkVkaXRvci9ydWxlcy9jb25kaXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCw0Q0FBeUc7QUFFekcseUNBQW1FO0FBQ25FLHNEQUF1RDtBQWdDdkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxtQ0FBa0I7SUFHN0Q7OztPQUdHO0lBQ0gsWUFBbUIsT0FBb0M7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFvQztRQUNyRCxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0RSxJQUFJLElBQUEscUJBQVksRUFBQyxLQUFLLENBQUMsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEdBQWtDLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDOUM7WUFDRCxPQUFPLElBQUEseUJBQWMsRUFBNEMsR0FBRyxHQUFHLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxN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LEVBQUUsT0FBTyxFQUFFLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsVUFBVSxDQUFDLENBQUM7U0FDMUY7YUFDSSxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLDBCQUEwQixNQUFLLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkYsT0FBTyxJQUFBLDRCQUFpQixFQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFUyxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxRQUFnQjtRQUM1RCxRQUFRLFFBQVEsRUFBRTtZQUNkLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQ2hDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQzlCLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQzlCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQ2hDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQ2hDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1NBQ3BDO1FBQ0Qsb0NBQW9DO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQW5IRCw4REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRSZXN1bHQsIFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWRXaXRoRGV0YWlsIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JPcHRpb25zLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uRWRpdG9yUnVsZUJhc2UgfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuLi9qc29uRWRpdG9yU3RhdGUnO1xuXG4vKipcbiAqIFJldHVybmVkIGJ5IHRoZSBfdHJ5TWF0Y2ggbWV0aG9kIG9mIHRoZSBAc2VlIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGVcbiAqIHRvIGluZGljYXRlIHdoZXRoZXIgYSBzdWNjZXNzZnVsIG1hdGNoIHdhcyBkdWUgdG8gYSBtYXRjaGluZyBjb25kaXRpb25cbiAqIG9yIGEgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25hbEpzb25LZXlSZXN1bHQgZXh0ZW5kcyBKc29uT2JqZWN0IHtcbiAgICBtYXRjaFR5cGU6ICdkZWZhdWx0J3wnbWF0Y2gnfCd1bmNvbmRpdGlvbmFsJztcbn1cblxuLyoqXG4gKiBPbiBhIHN1Y2Nlc3NmdWwgbWF0Y2gsIHRoZSBAc2VlIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUgc3RvcmVzIGFcbiAqIENvbmRpdGlvbmFsSnNvbkRlZmVycmVkT2JqZWN0IGRlc2NyaWJpbmcgdGhlIG1hdGNoaW5nIHJlc3VsdCwgdG9cbiAqIGJlIHJlc29sdmVkIGF0IGZpbmFsaXphdGlvbiB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbmFsSnNvbkRlZmVycmVkT2JqZWN0IGV4dGVuZHMgQ29uZGl0aW9uYWxKc29uS2V5UmVzdWx0e1xuICAgIHZhbHVlOiBKc29uVmFsdWU7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQ29uZGl0aW9uYWwgSlNPTiBlZGl0b3IgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbmFsSnNvblJ1bGVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgIC8qKlxuICAgICAqIElmIHRydWUgKGRlZmF1bHQpIHRoZW4gcHJvcGVydGllcyB3aXRoIHVuY29uZGl0aW9uYWwgbmFtZXNcbiAgICAgKiAod2hpY2ggc3RhcnQgd2l0aCAhKSBhcmUgZmxhdHRlbmVkLlxuICAgICAqL1xuICAgIGZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgQ29uZGl0aW9uYWwgSlNPTiBlZGl0b3IgcnVsZSBldmFsdWF0ZXMgcHJvcGVydGllcyB3aXRoIGNvbmRpdGlvbmFsIGtleXMsXG4gKiBvbWl0dGluZyBub24tbWF0Y2hpbmcga2V5cyBhbmQgbWVyZ2luZyBrZXlzIHRoYXQgbWF0Y2gsIG9yIGRlZmF1bHQga2V5cyBvbmx5XG4gKiBpZiBubyBvdGhlciBrZXlzIG1hdGNoLlxuICpcbiAqIFRoZSBkZWZhdWx0IHN5bnRheCBmb3IgYSBjb25kaXRpb25hbCBrZXkgaXM6XG4gKiAgICBcIj92YWx1ZTE9dmFsdWUyXCIgLSBtYXRjaGVzIGlmIHZhbHVlMSBhbmQgdmFsdWUyIGFyZSB0aGUgc2FtZSwgaXMgaWdub3JlZCBvdGhlcndpc2UuXG4gKiAgICBcIj92YWx1ZVwiIC0gbWF0Y2hlcyBpZiB2YWx1ZSBpcyBhIG5vbi1lbXB0eSwgbm9uLXdoaXRlc3BhY2Ugc3RyaW5nLiBJcyBpZ25vcmVkIG90aGVyd2lzZS5cbiAqICAgIFwiP2RlZmF1bHRcIiAtIG1hdGNoZXMgb25seSBpZiBubyBvdGhlciBjb25kaXRpb25hbCBibG9ja3MgaW4gdGhlIHNhbWUgb2JqZWN0IHdlcmUgbWF0Y2hlZFxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSBleHRlbmRzIEpzb25FZGl0b3JSdWxlQmFzZSB7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zPzogQ29uZGl0aW9uYWxKc29uUnVsZU9wdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1c2VkIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IENvbmRpdGlvbmFsSnNvblJ1bGVPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBDb25kaXRpb25hbEpzb25SdWxlT3B0aW9ucyk6IFJlc3VsdDxDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlKG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSBmb3IgY29uZGl0aW9uYWwgYXBwbGljYXRpb24uXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqIEByZXR1cm5zIFJldHVybnMgU3VjY2VzcyB3aXRoIGRldGFpbCAnZGVmZXJyZWQnIGFuZCBhIEBzZWUgQ29uZGl0aW9uYWxKc29uRGVmZXJyZWRPYmplY3RcbiAgICAgKiBmb3IgYSBtYXRjaGluZywgZGVmYXVsdCBvciB1bmNvbmRpdGlvbmFsIGtleS4gRmFpbHMgd2l0aCBkZXRhaWwgJ2lnbm9yZScgZm9yIGFcbiAgICAgKiBub24tbWF0Y2hpbmcgY29uZGl0aW9uYWwgYW5kIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzLiBPdGhlcndpc2VcbiAgICAgKiBmYWlscyB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fdHJ5UGFyc2VDb25kaXRpb24oa2V5LCBzdGF0ZSkub25TdWNjZXNzKChkZWZlcnJlZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSnNvbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBydHJuOiBDb25kaXRpb25hbEpzb25EZWZlcnJlZE9iamVjdCA9IHsgLi4uZGVmZXJyZWQsIHZhbHVlIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHJ0cm4sICdkZWZlcnJlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsPEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPihgJHtrZXl9OiBjb25kaXRpb25hbCBib2R5IG11c3QgYmUgb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkgJiYgKHJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCByZXN1bHQubWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmFsaXplcyBhbnkgZGVmZXJyZWQgY29uZGl0aW9uYWwgcHJvcGVydGllcy4gSWYgdGhlIG9ubHkgZGVmZXJyZWQgcHJvcGVydHkgaXNcbiAgICAgKiBkZWZhdWx0LCB0aGF0IHByb3BlcnR5IGlzIGVtaXR0ZWQuIE90aGVyd2lzZSBhbGwgbWF0Y2hpbmcgcHJvcGVydGllcyBhcmUgZW1pdHRlZC5cbiAgICAgKiBAcGFyYW0gZmluYWxpemVkIFRoZSBkZWZlcnJlZCBwcm9wZXJ0aWVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIG1lcmdlXG4gICAgICogQHBhcmFtIF9zdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5hbGl6ZVByb3BlcnRpZXMoZmluYWxpemVkOiBKc29uT2JqZWN0W10sIF9zdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdFtdLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgbGV0IHRvTWVyZ2UgPSBmaW5hbGl6ZWQ7XG4gICAgICAgIGlmIChmaW5hbGl6ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaWYgKGZpbmFsaXplZC5maW5kKChvKSA9PiBvLm1hdGNoVHlwZSA9PT0gJ21hdGNoJykgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRvTWVyZ2UgPSBmaW5hbGl6ZWQuZmlsdGVyKChvKSA9PiAoby5tYXRjaFR5cGUgPT09ICdtYXRjaCcpIHx8IChvLm1hdGNoVHlwZSA9PT0gJ3VuY29uZGl0aW9uYWwnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHRvTWVyZ2UubWFwKChvKSA9PiBvLnZhbHVlKS5maWx0ZXIoaXNKc29uT2JqZWN0KSwgJ2VkaXRlZCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBwcm9wZXJ0eSBrZXkgaXMgY29uZGl0aW9uYWwuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpc1xuICAgICAqIG1ldGhvZCB0byB1c2UgYSBkaWZmZXJlbnQgZm9ybWF0IGZvciBjb25kaXRpb25hbCBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gY29uc2lkZXIuXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgb2YgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWQuXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIGRldGFpbCAnZGVmZXJyZWQnIGFuZCBhIEBzZWUgQ29uZGl0aW9uYWxKc29uS2V5UmVzdWx0IGRlc2NyaWJpbmcgdGhlXG4gICAgICogbWF0Y2ggZm9yIGEgZGVmYXVsdCBvciBtYXRjaGluZyBjb25kaXRpb25hbCBwcm9wZXJ0eS4gIEZhaWxzIHdpdGggZGV0YWlsICdpZ25vcmUnIGZvclxuICAgICAqIGEgbm9uLW1hdGNoaW5nIGNvbmRpdGlvbmFsIHByb3BlcnR5LiBGYWlscyB3aXRoIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3Vyc1xuICAgICAqIG9yIHdpdGggZGV0YWlsICdpbmFwcGxpY2FibGUnIGlmIHRoZSBrZXkgZG9lcyBub3QgcmVwcmVzZW50IGEgY29uZGl0aW9uYWwgcHJvcGVydHkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90cnlQYXJzZUNvbmRpdGlvbihrZXk6IHN0cmluZywgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PENvbmRpdGlvbmFsSnNvbktleVJlc3VsdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCc/JykpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIGFueSAjXG4gICAgICAgICAgICBrZXkgPSBrZXkuc3BsaXQoJyMnKVswXS50cmltKCk7XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICc/ZGVmYXVsdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoeyBtYXRjaFR5cGU6ICdkZWZhdWx0JyB9LCAnZGVmZXJyZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBrZXkuc3Vic3RyaW5nKDEpLnNwbGl0KC8oPXw+PXw8PXw+fDx8IT0pLyk7XG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jb21wYXJlKHBhcnRzWzBdLnRyaW0oKSwgcGFydHNbMl0udHJpbSgpLCBwYXJ0c1sxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGBDb25kaXRpb24gJHtrZXl9IGRvZXMgbm90IG1hdGNoYCwgJ2lnbm9yZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoeyBtYXRjaFR5cGU6ICdtYXRjaCcgfSwgJ2RlZmVycmVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFydHNbMF0udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYENvbmRpdGlvbiAke2tleX0gZG9lcyBub3QgbWF0Y2hgLCAnaWdub3JlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh7IG1hdGNoVHlwZTogJ21hdGNoJyB9LCAnZGVmZXJyZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTWFsZm9ybWVkIGNvbmRpdGlvbiB0b2tlbiAke2tleX1gO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKHRoaXMuX29wdGlvbnM/LmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzICE9PSBmYWxzZSkgJiYga2V5LnN0YXJ0c1dpdGgoJyEnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHsgbWF0Y2hUeXBlOiAndW5jb25kaXRpb25hbCcgfSwgJ2RlZmVycmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb21wYXJlKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICBjYXNlICc9JzogcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgICAgICAgICAgY2FzZSAnPic6IHJldHVybiBsZWZ0ID4gcmlnaHQ7XG4gICAgICAgICAgICBjYXNlICc8JzogcmV0dXJuIGxlZnQgPCByaWdodDtcbiAgICAgICAgICAgIGNhc2UgJz49JzogcmV0dXJuIGxlZnQgPj0gcmlnaHQ7XG4gICAgICAgICAgICBjYXNlICc8PSc6IHJldHVybiBsZWZ0IDw9IHJpZ2h0O1xuICAgICAgICAgICAgY2FzZSAnIT0nOiByZXR1cm4gbGVmdCAhPT0gcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IHVucmVhY2hhYmxlXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -1,8 +1,9 @@
1
1
  import { DetailedResult, Result } from '@fgv/ts-utils';
2
2
  import { JsonContext, VariableValue } from '../../jsonContext';
3
- import { JsonEditFailureReason, JsonEditorRuleBase, JsonPropertyEditFailureReason } from '../jsonEditorRule';
4
- import { JsonEditorOptions, JsonEditorState } from '../jsonEditorState';
3
+ import { JsonEditFailureReason, JsonEditorOptions, JsonPropertyEditFailureReason } from '../common';
5
4
  import { JsonObject, JsonValue } from '../../common';
5
+ import { JsonEditorRuleBase } from '../jsonEditorRule';
6
+ import { JsonEditorState } from '../jsonEditorState';
6
7
  /**
7
8
  * Represents the parts of a multi-value property key.
8
9
  */
@@ -126,4 +126,4 @@ class MultiValueJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
126
126
  }
127
127
  }
128
128
  exports.MultiValueJsonEditorRule = MultiValueJsonEditorRule;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGl2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL211bHRpdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQThIO0FBRTlILHNEQUE2RztBQWtDN0c7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsbUNBQWtCO0lBRzVEOzs7T0FHRztJQUNILFlBQW1CLE9BQTJCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBMkI7UUFDNUMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsS0FBc0I7UUFDckUsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFELE9BQU8sSUFBQSxxQkFBVSxFQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDOUUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFL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LE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0o7QUFsR0QsNERBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGFsbFN1Y2NlZWQsIGNhcHR1cmVSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkNvbnRleHQsIFZhcmlhYmxlVmFsdWUgfSBmcm9tICcuLi8uLi9qc29uQ29udGV4dCc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlQmFzZSwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlIH0gZnJvbSAnLi4vanNvbkVkaXRvclN0YXRlJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcGFydHMgb2YgYSBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBrZXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlWYWx1ZVByb3BlcnR5UGFydHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBvcmlnaW5hbCBtYXRjaGVkIHRva2VuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdG9rZW46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHByb2plY3QgZWFjaCBwb3NzaWJsZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGludG8gdGhlIGNoaWxkIHZhbHVlcyBvciBvYmplY3RzIGJlaW5nXG4gICAgICogcmVzb2x2ZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJvcGVydHlWYXJpYWJsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNldCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgZXhwYW5kZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBwcm9wZXJ0eVZhbHVlczogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCB0aGUgcmVzb2x2ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBhbiBhcnJheVxuICAgICAqIHdpdGggdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5VmFyaWFibGUuIElmIGZhbHNlLFxuICAgICAqIHZhbHVlcyBhcmUgYWRkZWQgYXMgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHdpdGggbmFtZXNcbiAgICAgKiB0aGF0IGNvcnJlc3BvbmQgdGhlIHZhbHVlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGFzQXJyYXk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIE11bHRpLVZhbHVlIEpTT04gZWRpdG9yIHJ1bGUgZXhwYW5kcyBtYXRjaGluZyBrZXlzIG11bHRpcGxlXG4gKiB0aW1lcywgcHJvamVjdGluZyB0aGUgdmFsdWUgaW50byB0aGUgdGVtcGxhdGUgY29udGV4dCBmb3IgYW55XG4gKiBjaGlsZCBvYmplY3RzIHJlbmRlcmVkIGJ5IHRoZSBydWxlLlxuICpcbiAqIFRoZSBkZWZhdWx0IHN5bnRheCBmb3IgYSBtdWx0aS12YWx1ZSBrZXkgaXM6XG4gKiAgXCJbW3Zhcl1dPXZhbHVlMSx2YWx1ZTIsdmFsdWUzXCJcbiAqIFdoZXJlIFwidmFyXCIgaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG9cbiAqIGNoaWxkIHRlbXBsYXRlIHJlc29sdXRpb24sIGFuZCBcInZhbHVlMSx2YWx1ZTIsdmFsdWUzXCIgaXMgYVxuICogY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdmFsdWVzIHRvIGJlIGV4cGFuZGVkLlxuICovXG5leHBvcnQgY2xhc3MgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlIGV4dGVuZHMgSnNvbkVkaXRvclJ1bGVCYXNlIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zKTogUmVzdWx0PE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSBmb3IgbXVsdGktdmFsdWUgZXhwYW5zaW9uLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZnVsbHktcmVzb2x2ZWQgY2hpbGRcbiAgICAgKiB2YWx1ZXMgdG8gYmUgbWVyZ2VkIGZvciBtYXRjaGluZyBtdWx0aS12YWx1ZSBwcm9wZXJ0eS4gRmFpbHMgd2l0aFxuICAgICAqIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3VycyBvciB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJyBpZlxuICAgICAqIHRoZSBwcm9wZXJ0eSBrZXkgaXMgbm90IGEgY29uZGl0aW9uYWwgcHJvcGVydHkuXG4gICAgICovXG4gICAgcHVibGljIGVkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IGpzb246IEpzb25PYmplY3QgPSB7fTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fdHJ5UGFyc2Uoa2V5LCBzdGF0ZSkub25TdWNjZXNzKChwYXJ0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFsbFN1Y2NlZWQocGFydHMucHJvcGVydHlWYWx1ZXMubWFwKChwdikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZXJpdmVDb250ZXh0KHN0YXRlLCBbcGFydHMucHJvcGVydHlWYXJpYWJsZSwgcHZdKS5vblN1Y2Nlc3MoKGN0eCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZWRpdG9yLmNsb25lKHZhbHVlLCBjdHgpLm9uU3VjY2VzcygoY2xvbmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uW3B2XSA9IGNsb25lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChjbG9uZWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLCBqc29uKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5hc0FycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5UnRybjogSnNvbk9iamVjdCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBhcnJheVJ0cm5bcGFydHMucHJvcGVydHlWYXJpYWJsZV0gPSBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXMoanNvbikpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChhcnJheVJ0cm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChqc29uKTtcbiAgICAgICAgICAgIH0pLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpICYmIChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgcmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9kZXJpdmVDb250ZXh0KHN0YXRlOiBKc29uRWRpdG9yU3RhdGUsIC4uLnZhbHVlczogVmFyaWFibGVWYWx1ZVtdKTogUmVzdWx0PEpzb25Db250ZXh0fHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gc3RhdGUuZXh0ZW5kQ29udGV4dCh0aGlzLl9vcHRpb25zPy5jb250ZXh0LCB7IHZhcnM6IHZhbHVlcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gcHJvcGVydHkga2V5IGlzIG11bHRpLXZhbHVlLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXNcbiAgICAgKiBtZXRob2QgdG8gdXNlIGEgZGlmZmVyZW50IGZvcm1hdCBmb3IgbXVsdGktdmFsdWUgcHJvcGVydGllcy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGNvbnNpZGVyLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkLlxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBkZXRhaWwgJ2RlZmVycmVkJyBhbmQgYSBAc2VlIE11bHRpVmFsdWVQcm9wZXJ0eVBhcnRzIGRlc2NyaWJpbmcgdGhlXG4gICAgICogbWF0Y2ggZm9yIG1hdGNoaW5nIG11bHRpLXZhbHVlIHByb3BlcnR5LiAgRmFpbHMgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnNcbiAgICAgKiBvciB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJyBpZiB0aGUga2V5IGRvZXMgbm90IHJlcHJlc2VudCBhIG11bHRpLXZhbHVlIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdHJ5UGFyc2UodG9rZW46IHN0cmluZywgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PE11bHRpVmFsdWVQcm9wZXJ0eVBhcnRzLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBsZXQgYXNBcnJheSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0b2tlbi5zdGFydHNXaXRoKCdbWycpKSB7XG4gICAgICAgICAgICBwYXJ0cyA9IHRva2VuLnN1YnN0cmluZygyKS5zcGxpdCgnXV09Jyk7XG4gICAgICAgICAgICBhc0FycmF5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0b2tlbi5zdGFydHNXaXRoKCcqJykpIHtcbiAgICAgICAgICAgIHBhcnRzID0gdG9rZW4uc3Vic3RyaW5nKDEpLnNwbGl0KCc9Jyk7XG4gICAgICAgICAgICBhc0FycmF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwodG9rZW4sICdpbmFwcGxpY2FibGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTWFsZm9ybWVkIG11bHRpLXZhbHVlIHByb3BlcnR5OiAke3Rva2VufWA7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB0aGlzLl9vcHRpb25zPy52YWxpZGF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJ0c1sxXS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCd1bnJlc29sdmVkIHRlbXBsYXRlJywgJ2luYXBwbGljYWJsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvcGVydHlWYXJpYWJsZSA9IHBhcnRzWzBdO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlcyA9IHBhcnRzWzFdLnNwbGl0KCcsJyk7XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh7IHRva2VuLCBwcm9wZXJ0eVZhcmlhYmxlLCBwcm9wZXJ0eVZhbHVlcywgYXNBcnJheSB9KTtcbiAgICB9XG59XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGl2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL211bHRpdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQThIO0FBSzlILHNEQUF1RDtBQWlDdkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsbUNBQWtCO0lBRzVEOzs7T0FHRztJQUNILFlBQW1CLE9BQTJCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBMkI7UUFDNUMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsS0FBc0I7UUFDckUsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFELE9BQU8sSUFBQSxxQkFBVSxFQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDOUUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFL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LE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0o7QUFsR0QsNERBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGFsbFN1Y2NlZWQsIGNhcHR1cmVSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkNvbnRleHQsIFZhcmlhYmxlVmFsdWUgfSBmcm9tICcuLi8uLi9qc29uQ29udGV4dCc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JPcHRpb25zLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5pbXBvcnQgeyBKc29uRWRpdG9yUnVsZUJhc2UgfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuLi9qc29uRWRpdG9yU3RhdGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHBhcnRzIG9mIGEgbXVsdGktdmFsdWUgcHJvcGVydHkga2V5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpVmFsdWVQcm9wZXJ0eVBhcnRzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgb3JpZ2luYWwgbWF0Y2hlZCB0b2tlblxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRva2VuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdXNlZCB0byBwcm9qZWN0IGVhY2ggcG9zc2libGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBpbnRvIHRoZSBjaGlsZCB2YWx1ZXMgb3Igb2JqZWN0cyBiZWluZ1xuICAgICAqIHJlc29sdmVkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByb3BlcnR5VmFyaWFibGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZXQgb2YgcHJvcGVydHkgdmFsdWVzIHRvIGJlIGV4cGFuZGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJvcGVydHlWYWx1ZXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlIHJlc29sdmVkIHZhbHVlcyBhcmUgYWRkZWQgYXMgYW4gYXJyYXlcbiAgICAgKiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVZhcmlhYmxlLiBJZiBmYWxzZSxcbiAgICAgKiB2YWx1ZXMgYXJlIGFkZGVkIGFzIGluZGl2aWR1YWwgcHJvcGVydGllcyB3aXRoIG5hbWVzXG4gICAgICogdGhhdCBjb3JyZXNwb25kIHRoZSB2YWx1ZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBhc0FycmF5OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBNdWx0aS1WYWx1ZSBKU09OIGVkaXRvciBydWxlIGV4cGFuZHMgbWF0Y2hpbmcga2V5cyBtdWx0aXBsZVxuICogdGltZXMsIHByb2plY3RpbmcgdGhlIHZhbHVlIGludG8gdGhlIHRlbXBsYXRlIGNvbnRleHQgZm9yIGFueVxuICogY2hpbGQgb2JqZWN0cyByZW5kZXJlZCBieSB0aGUgcnVsZS5cbiAqXG4gKiBUaGUgZGVmYXVsdCBzeW50YXggZm9yIGEgbXVsdGktdmFsdWUga2V5IGlzOlxuICogIFwiW1t2YXJdXT12YWx1ZTEsdmFsdWUyLHZhbHVlM1wiXG4gKiBXaGVyZSBcInZhclwiIGlzIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvXG4gKiBjaGlsZCB0ZW1wbGF0ZSByZXNvbHV0aW9uLCBhbmQgXCJ2YWx1ZTEsdmFsdWUyLHZhbHVlM1wiIGlzIGFcbiAqIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHZhbHVlcyB0byBiZSBleHBhbmRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZSBleHRlbmRzIEpzb25FZGl0b3JSdWxlQmFzZSB7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucyk6IFJlc3VsdDxNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZShvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHkgZm9yIG11bHRpLXZhbHVlIGV4cGFuc2lvbi5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgUmV0dXJucyBTdWNjZXNzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZ1bGx5LXJlc29sdmVkIGNoaWxkXG4gICAgICogdmFsdWVzIHRvIGJlIG1lcmdlZCBmb3IgbWF0Y2hpbmcgbXVsdGktdmFsdWUgcHJvcGVydHkuIEZhaWxzIHdpdGhcbiAgICAgKiBkZXRhaWwgJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnMgb3Igd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScgaWZcbiAgICAgKiB0aGUgcHJvcGVydHkga2V5IGlzIG5vdCBhIGNvbmRpdGlvbmFsIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBqc29uOiBKc29uT2JqZWN0ID0ge307XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3RyeVBhcnNlKGtleSwgc3RhdGUpLm9uU3VjY2VzcygocGFydHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhbGxTdWNjZWVkKHBhcnRzLnByb3BlcnR5VmFsdWVzLm1hcCgocHYpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVyaXZlQ29udGV4dChzdGF0ZSwgW3BhcnRzLnByb3BlcnR5VmFyaWFibGUsIHB2XSkub25TdWNjZXNzKChjdHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmVkaXRvci5jbG9uZSh2YWx1ZSwgY3R4KS5vblN1Y2Nlc3MoKGNsb25lZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbltwdl0gPSBjbG9uZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoY2xvbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSwganNvbikub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFydHMuYXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJheVJ0cm46IEpzb25PYmplY3QgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlSdHJuW3BhcnRzLnByb3BlcnR5VmFyaWFibGVdID0gQXJyYXkuZnJvbShPYmplY3QudmFsdWVzKGpzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYXJyYXlSdHJuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanNvbik7XG4gICAgICAgICAgICB9KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSAmJiAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZGVyaXZlQ29udGV4dChzdGF0ZTogSnNvbkVkaXRvclN0YXRlLCAuLi52YWx1ZXM6IFZhcmlhYmxlVmFsdWVbXSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmV4dGVuZENvbnRleHQodGhpcy5fb3B0aW9ucz8uY29udGV4dCwgeyB2YXJzOiB2YWx1ZXMgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIHByb3BlcnR5IGtleSBpcyBtdWx0aS12YWx1ZS4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzXG4gICAgICogbWV0aG9kIHRvIHVzZSBhIGRpZmZlcmVudCBmb3JtYXQgZm9yIG11bHRpLXZhbHVlIHByb3BlcnRpZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBjb25zaWRlci5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZC5cbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggZGV0YWlsICdkZWZlcnJlZCcgYW5kIGEgQHNlZSBNdWx0aVZhbHVlUHJvcGVydHlQYXJ0cyBkZXNjcmliaW5nIHRoZVxuICAgICAqIG1hdGNoIGZvciBtYXRjaGluZyBtdWx0aS12YWx1ZSBwcm9wZXJ0eS4gIEZhaWxzIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzXG4gICAgICogb3Igd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScgaWYgdGhlIGtleSBkb2VzIG5vdCByZXByZXNlbnQgYSBtdWx0aS12YWx1ZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RyeVBhcnNlKHRva2VuOiBzdHJpbmcsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxNdWx0aVZhbHVlUHJvcGVydHlQYXJ0cywgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGxldCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgbGV0IGFzQXJyYXkgPSBmYWxzZTtcblxuICAgICAgICBpZiAodG9rZW4uc3RhcnRzV2l0aCgnW1snKSkge1xuICAgICAgICAgICAgcGFydHMgPSB0b2tlbi5zdWJzdHJpbmcoMikuc3BsaXQoJ11dPScpO1xuICAgICAgICAgICAgYXNBcnJheSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodG9rZW4uc3RhcnRzV2l0aCgnKicpKSB7XG4gICAgICAgICAgICBwYXJ0cyA9IHRva2VuLnN1YnN0cmluZygxKS5zcGxpdCgnPScpO1xuICAgICAgICAgICAgYXNBcnJheSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKHRva2VuLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYE1hbGZvcm1lZCBtdWx0aS12YWx1ZSBwcm9wZXJ0eTogJHt0b2tlbn1gO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFydHNbMV0uaW5jbHVkZXMoJ3t7JykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgndW5yZXNvbHZlZCB0ZW1wbGF0ZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFyaWFibGUgPSBwYXJ0c1swXTtcbiAgICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZXMgPSBwYXJ0c1sxXS5zcGxpdCgnLCcpO1xuICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoeyB0b2tlbiwgcHJvcGVydHlWYXJpYWJsZSwgcHJvcGVydHlWYWx1ZXMsIGFzQXJyYXkgfSk7XG4gICAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { DetailedResult, Result } from '@fgv/ts-utils';
2
- import { JsonEditFailureReason, JsonEditorRuleBase, JsonPropertyEditFailureReason } from '../jsonEditorRule';
3
- import { JsonEditorOptions, JsonEditorState } from '../jsonEditorState';
2
+ import { JsonEditFailureReason, JsonEditorOptions, JsonPropertyEditFailureReason } from '../common';
4
3
  import { JsonObject, JsonValue } from '../../common';
5
4
  import { JsonContext } from '../../jsonContext';
5
+ import { JsonEditorRuleBase } from '../jsonEditorRule';
6
+ import { JsonEditorState } from '../jsonEditorState';
6
7
  /**
7
8
  * The Reference JSON editor rule replaces property keys or values that match
8
9
  * some known object with a copy of that referenced object, formatted according
@@ -23,8 +23,8 @@
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.ReferenceJsonEditorRule = void 0;
25
25
  const ts_utils_1 = require("@fgv/ts-utils");
26
- const jsonEditorRule_1 = require("../jsonEditorRule");
27
26
  const common_1 = require("../../common");
27
+ const jsonEditorRule_1 = require("../jsonEditorRule");
28
28
  /**
29
29
  * The Reference JSON editor rule replaces property keys or values that match
30
30
  * some known object with a copy of that referenced object, formatted according
@@ -155,4 +155,4 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
155
155
  }
156
156
  }
157
157
  exports.ReferenceJsonEditorRule = ReferenceJsonEditorRule;
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL3JlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQStHO0FBQy9HLHNEQUE2RztBQUU3Ryx5Q0FBbUY7QUFHbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUEyQjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQTJCO1FBQzVDLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsS0FBc0I7O1FBQ3JFLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQztRQUM3Qyx1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQiw2REFBNkQ7WUFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLFdBQVcs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QyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2xHO1NBQ0o7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sY0FBYyxDQUFDLEtBQXNCLEVBQUUsUUFBbUI7O1FBQ2hFLE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFBLHFCQUFZLEVBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDbkMsT0FBTyxJQUFBLGVBQUksRUFBQyxzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEY7UUFDRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNKO0FBakhELDBEQWlIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZFJlc3VsdCwgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBmYWlsLCBmYWlsV2l0aERldGFpbCwgc3VjY2VlZFdpdGhEZXRhaWwgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvclJ1bGVCYXNlLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4uL2pzb25FZGl0b3JSdWxlJztcbmltcG9ydCB7IEpzb25FZGl0b3JPcHRpb25zLCBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuLi9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbk9iamVjdCwgSnNvblZhbHVlLCBpc0pzb25PYmplY3QsIHBpY2tKc29uT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEpzb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vanNvbkNvbnRleHQnO1xuXG4vKipcbiAqIFRoZSBSZWZlcmVuY2UgSlNPTiBlZGl0b3IgcnVsZSByZXBsYWNlcyBwcm9wZXJ0eSBrZXlzIG9yIHZhbHVlcyB0aGF0IG1hdGNoXG4gKiBzb21lIGtub3duIG9iamVjdCB3aXRoIGEgY29weSBvZiB0aGF0IHJlZmVyZW5jZWQgb2JqZWN0LCBmb3JtYXR0ZWQgYWNjb3JkaW5nXG4gKiB0byB0aGUgY3VycmVudCBjb250ZXh0LlxuICpcbiAqIEEgcHJvcGVydHkga2V5IGlzIG1hdGNoZWQgaWYgaXQgbWF0Y2hlcyBhbnkga25vd24gcmVmZXJlbmNlYWJsZSB2YWx1ZS5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyAnZGVmYXVsdCcsIHRoZW4gdGhlIGVudGlyZSBvYmplY3QgaXMgZm9ybWF0dGVkXG4gKiAgIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCwgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIElmIHRoZSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgaXMgc29tZSBvdGhlciBzdHJpbmcsIHRoZW4gdGhlIGVudGlyZVxuICogICBvYmplY3QgaXMgZm9ybWF0dGVkIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCwgYW5kIHRoZSBjaGlsZCBvZiB0aGUgcmVzdWx0aW5nXG4gKiAgIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIHBhdGggaXMgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIElmIHRoZSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgaXMgYW4gb2JqZWN0LCB0aGVuIHRoZSBlbnRpcmUgb2JqZWN0IGlzXG4gKiAgIGZvcm1hdHRlZCB3aXRoIHRoZSBjdXJyZW50IGNvbnRleHQgZXh0ZW5kZWQgdG8gaW5jbHVkZSBhbnkgcHJvcGVydGllcyBvZlxuICogICB0aGF0IG9iamVjdCwgZmxhdHRlbmVkLCBhbmQgbWVyZ2VkIGludG8gdGhlIGN1cnJlbnQgb2JqZWN0LlxuICogLSBJdCBpcyBhbiBlcnJvciBpZiB0aGUgcmVmZXJlbmNlZCB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LlxuICpcbiAqIEFueSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBpcyBtYXRjaGVkIGlmIGl0IG1hdGNoZXMgYW55IGtub3duXG4gKiByZWZlcmVuY2VhYmxlIHZhbHVlLiBUaGUgcmVmZXJlbmNlZCB2YWx1ZSBpcyByZXBsYWNlZCBieSB0aGUgcmVmZXJlbmNlZFxuICogdmFsdWUsIGZvcm1hdHRlZCB1c2luZyB0aGUgY3VycmVudCBlZGl0b3IgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlIGV4dGVuZHMgSnNvbkVkaXRvclJ1bGVCYXNlIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zKTogUmVzdWx0PFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHkgZm9yIHJlZmVyZW5jZSBleHBhbnNpb24uXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqIEByZXR1cm5zIElmIHRoZSByZWZlcmVuY2UgaXMgc3VjY2Vzc2Z1bCwgcmV0dXJucyBTdWNjZXNzIHdpdGggYSBKc29uT2JqZWN0IHRvXG4gICAgICogYmUgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuIEZhaWxzIHdpdGggZGV0YWlsICdpbmFwcGxpY2FibGUnXG4gICAgICogZm9yIG5vbi1yZWZlcmVuY2Uga2V5cyBvciB3aXRoIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb247XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IHJlZnMgPSBzdGF0ZS5nZXRSZWZzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICBpZiAocmVmcz8uaGFzKGtleSkpIHtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gYXBwbHkgYW55IHJ1bGVzIHRvIHRoZSB2YWx1ZSBiZWZvcmUgd2UgZXZhbHVhdGUgaXRcbiAgICAgICAgICAgIGNvbnN0IGNsb25lUmVzdWx0ID0gc3RhdGUuZWRpdG9yLmNsb25lKHZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChjbG9uZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gY2xvbmVSZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtjbG9uZVJlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRSZXN1bHQgPSB0aGlzLl9leHRlbmRDb250ZXh0KHN0YXRlLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoY29udGV4dFJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9ialJlc3VsdCA9IHJlZnMuZ2V0SnNvbk9iamVjdChrZXksIGNvbnRleHRSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIGd1YXJkZWQgYnkgdGhlIGhhcyBhYm92ZSBzbyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgICAgICAgICAgICBpZiAob2JqUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgfHwgKHZhbHVlID09PSAnZGVmYXVsdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWw8SnNvbk9iamVjdCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPihvYmpSZXN1bHQudmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNrUmVzdWx0ID0gcGlja0pzb25PYmplY3Qob2JqUmVzdWx0LnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaWNrUmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtwaWNrUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIG1lc3NhZ2UsIHZhbGlkYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWNrUmVzdWx0LndpdGhEZXRhaWwoJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvYmpSZXN1bHQuZGV0YWlsICE9PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2tleX06ICR7b2JqUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2tleX06ICR7Y29udGV4dFJlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHksIGFycmF5IG9yIGxpdGVyYWwgdmFsdWUgZm9yIHJlZmVyZW5jZSByZXBsYWNlbWVudC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGV2YWx1YXRlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IHJlZnMgPSBzdGF0ZS5nZXRSZWZzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuXG4gICAgICAgIGlmIChyZWZzICYmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzdGF0ZS5nZXRDb250ZXh0KHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVmcy5nZXRKc29uVmFsdWUodmFsdWUsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChyZXN1bHQudmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJywgcmVzdWx0Lm1lc3NhZ2UsIHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRlbXBsYXRlIHZhcmlhYmxlcyB0byB1c2UgZ2l2ZW4gdGhlIHZhbHVlIG9mIHNvbWUgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVkIGFcbiAgICAgKiByZXNvdXJjZSBwbHVzIHRoZSBiYXNlIHRlbXBsYXRlIGNvbnRleHQuXG4gICAgICogQHBhcmFtIHN1cHBsaWVkIFRoZSBzdHJpbmcgb3Igb2JqZWN0IHN1cHBsaWVkIGluIHRoZSBzb3VyY2UganNvblxuICAgICAqIEBwYXJhbSBiYXNlVmFycyBUaGUgY29udGV4dCBpbiBlZmZlY3QgYXQgdGhlIHBvaW50IG9mIHJlc29sdXRpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2V4dGVuZENvbnRleHQoc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSwgc3VwcGxpZWQ6IEpzb25WYWx1ZSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgYWRkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBpZiAoaXNKc29uT2JqZWN0KHN1cHBsaWVkKSkge1xuICAgICAgICAgICAgYWRkLnZhcnMgPSBPYmplY3QuZW50cmllcyhzdXBwbGllZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHN1cHBsaWVkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYEludmFsaWQgdGVtcGxhdGUgcGF0aCBvciBjb250ZXh0OiBcIiR7SlNPTi5zdHJpbmdpZnkoc3VwcGxpZWQpfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlLmV4dGVuZENvbnRleHQodGhpcy5fb3B0aW9ucz8uY29udGV4dCwgYWRkKTtcbiAgICB9XG59XG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL3JlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQStHO0FBRS9HLHlDQUFtRjtBQUVuRixzREFBdUQ7QUFHdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUEyQjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQTJCO1FBQzVDLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsS0FBc0I7O1FBQ3JFLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQztRQUM3Qyx1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQiw2REFBNkQ7WUFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLFdBQVcs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QyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2xHO1NBQ0o7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sY0FBYyxDQUFDLEtBQXNCLEVBQUUsUUFBbUI7O1FBQ2hFLE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFBLHFCQUFZLEVBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDbkMsT0FBTyxJQUFBLGVBQUksRUFBQyxzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEY7UUFDRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNKO0FBakhELDBEQWlIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZFJlc3VsdCwgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBmYWlsLCBmYWlsV2l0aERldGFpbCwgc3VjY2VlZFdpdGhEZXRhaWwgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0LCBwaWNrSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uQ29udGV4dCB9IGZyb20gJy4uLy4uL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25FZGl0b3JSdWxlQmFzZSB9IGZyb20gJy4uL2pzb25FZGl0b3JSdWxlJztcbmltcG9ydCB7IEpzb25FZGl0b3JTdGF0ZSB9IGZyb20gJy4uL2pzb25FZGl0b3JTdGF0ZSc7XG5cbi8qKlxuICogVGhlIFJlZmVyZW5jZSBKU09OIGVkaXRvciBydWxlIHJlcGxhY2VzIHByb3BlcnR5IGtleXMgb3IgdmFsdWVzIHRoYXQgbWF0Y2hcbiAqIHNvbWUga25vd24gb2JqZWN0IHdpdGggYSBjb3B5IG9mIHRoYXQgcmVmZXJlbmNlZCBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmdcbiAqIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gKlxuICogQSBwcm9wZXJ0eSBrZXkgaXMgbWF0Y2hlZCBpZiBpdCBtYXRjaGVzIGFueSBrbm93biByZWZlcmVuY2VhYmxlIHZhbHVlLlxuICogLSBJZiB0aGUgdmFsdWUgb2YgdGhlIG1hdGNoZWQga2V5IGlzICdkZWZhdWx0JywgdGhlbiB0aGUgZW50aXJlIG9iamVjdCBpcyBmb3JtYXR0ZWRcbiAqICAgd2l0aCB0aGUgY3VycmVudCBjb250ZXh0LCBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyBzb21lIG90aGVyIHN0cmluZywgdGhlbiB0aGUgZW50aXJlXG4gKiAgIG9iamVjdCBpcyBmb3JtYXR0ZWQgd2l0aCB0aGUgY3VycmVudCBjb250ZXh0LCBhbmQgdGhlIGNoaWxkIG9mIHRoZSByZXN1bHRpbmdcbiAqICAgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpcyBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyBhbiBvYmplY3QsIHRoZW4gdGhlIGVudGlyZSBvYmplY3QgaXNcbiAqICAgZm9ybWF0dGVkIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCBleHRlbmRlZCB0byBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzIG9mXG4gKiAgIHRoYXQgb2JqZWN0LCBmbGF0dGVuZWQsIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIEl0IGlzIGFuIGVycm9yIGlmIHRoZSByZWZlcmVuY2VkIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QuXG4gKlxuICogQW55IHByb3BlcnR5LCBhcnJheSBvciBsaXRlcmFsIHZhbHVlIGlzIG1hdGNoZWQgaWYgaXQgbWF0Y2hlcyBhbnkga25vd25cbiAqIHJlZmVyZW5jZWFibGUgdmFsdWUuIFRoZSByZWZlcmVuY2VkIHZhbHVlIGlzIHJlcGxhY2VkIGJ5IHRoZSByZWZlcmVuY2VkXG4gKiB2YWx1ZSwgZm9ybWF0dGVkIHVzaW5nIHRoZSBjdXJyZW50IGVkaXRvciBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUgZXh0ZW5kcyBKc29uRWRpdG9yUnVsZUJhc2Uge1xuICAgIHByb3RlY3RlZCBfb3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpOiBSZXN1bHQ8UmVmZXJlbmNlSnNvbkVkaXRvclJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlKG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSBmb3IgcmVmZXJlbmNlIGV4cGFuc2lvbi5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgSWYgdGhlIHJlZmVyZW5jZSBpcyBzdWNjZXNzZnVsLCByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIEpzb25PYmplY3QgdG9cbiAgICAgKiBiZSBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC4gRmFpbHMgd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZSdcbiAgICAgKiBmb3Igbm9uLXJlZmVyZW5jZSBrZXlzIG9yIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbjtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgcmVmcyA9IHN0YXRlLmdldFJlZnModGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG4gICAgICAgIGlmIChyZWZzPy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgLy8gbmVlZCB0byBhcHBseSBhbnkgcnVsZXMgdG8gdGhlIHZhbHVlIGJlZm9yZSB3ZSBldmFsdWF0ZSBpdFxuICAgICAgICAgICAgY29uc3QgY2xvbmVSZXN1bHQgPSBzdGF0ZS5lZGl0b3IuY2xvbmUodmFsdWUsIHN0YXRlLmNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNsb25lUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjbG9uZVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtrZXl9OiAke2Nsb25lUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udGV4dFJlc3VsdCA9IHRoaXMuX2V4dGVuZENvbnRleHQoc3RhdGUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0UmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqUmVzdWx0ID0gcmVmcy5nZXRKc29uT2JqZWN0KGtleSwgY29udGV4dFJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gZ3VhcmRlZCBieSB0aGUgaGFzIGFib3ZlIHNvIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgICAgICAgICAgICAgIGlmIChvYmpSZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB8fCAodmFsdWUgPT09ICdkZWZhdWx0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KG9ialJlc3VsdC52YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2tSZXN1bHQgPSBwaWNrSnNvbk9iamVjdChvYmpSZXN1bHQudmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBpY2tSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtrZXl9OiAke3BpY2tSZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tSZXN1bHQud2l0aERldGFpbCgnZWRpdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9ialJlc3VsdC5kZXRhaWwgIT09ICd1bmtub3duJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtvYmpSZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtjb250ZXh0UmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBmb3IgcmVmZXJlbmNlIHJlcGxhY2VtZW50LlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgZXZhbHVhdGVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICovXG4gICAgcHVibGljIGVkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgcmVmcyA9IHN0YXRlLmdldFJlZnModGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJlZnMgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHN0YXRlLmdldENvbnRleHQodGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZWZzLmdldEpzb25WYWx1ZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHJlc3VsdC52YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCByZXN1bHQubWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGVtcGxhdGUgdmFyaWFibGVzIHRvIHVzZSBnaXZlbiB0aGUgdmFsdWUgb2Ygc29tZSBwcm9wZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZWQgYVxuICAgICAqIHJlc291cmNlIHBsdXMgdGhlIGJhc2UgdGVtcGxhdGUgY29udGV4dC5cbiAgICAgKiBAcGFyYW0gc3VwcGxpZWQgVGhlIHN0cmluZyBvciBvYmplY3Qgc3VwcGxpZWQgaW4gdGhlIHNvdXJjZSBqc29uXG4gICAgICogQHBhcmFtIGJhc2VWYXJzIFRoZSBjb250ZXh0IGluIGVmZmVjdCBhdCB0aGUgcG9pbnQgb2YgcmVzb2x1dGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZXh0ZW5kQ29udGV4dChzdGF0ZTogSnNvbkVkaXRvclN0YXRlLCBzdXBwbGllZDogSnNvblZhbHVlKTogUmVzdWx0PEpzb25Db250ZXh0fHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBhZGQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGlmIChpc0pzb25PYmplY3Qoc3VwcGxpZWQpKSB7XG4gICAgICAgICAgICBhZGQudmFycyA9IE9iamVjdC5lbnRyaWVzKHN1cHBsaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygc3VwcGxpZWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbChgSW52YWxpZCB0ZW1wbGF0ZSBwYXRoIG9yIGNvbnRleHQ6IFwiJHtKU09OLnN0cmluZ2lmeShzdXBwbGllZCl9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGUuZXh0ZW5kQ29udGV4dCh0aGlzLl9vcHRpb25zPy5jb250ZXh0LCBhZGQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,8 @@
1
1
  import { DetailedResult, Result } from '@fgv/ts-utils';
2
- import { JsonEditFailureReason, JsonEditorRuleBase, JsonPropertyEditFailureReason } from '../jsonEditorRule';
3
- import { JsonEditorOptions, JsonEditorState } from '../jsonEditorState';
2
+ import { JsonEditFailureReason, JsonEditorOptions, JsonPropertyEditFailureReason } from '../common';
4
3
  import { JsonObject, JsonValue } from '../../common';
4
+ import { JsonEditorRuleBase } from '../jsonEditorRule';
5
+ import { JsonEditorState } from '../jsonEditorState';
5
6
  /**
6
7
  * Configuration options for the Templated JSON editor rule
7
8
  */