@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.
- package/compositeJsonMap.d.ts +47 -0
- package/compositeJsonMap.js +97 -0
- package/contextHelpers.js +3 -3
- package/index.d.ts +3 -2
- package/index.js +3 -2
- package/jsonConverter.js +1 -1
- package/jsonEditor/common.d.ts +36 -0
- package/jsonEditor/common.js +3 -0
- package/jsonEditor/index.d.ts +1 -0
- package/jsonEditor/index.js +3 -2
- package/jsonEditor/jsonEditor.d.ts +4 -3
- package/jsonEditor/jsonEditor.js +1 -1
- package/jsonEditor/jsonEditorRule.d.ts +1 -2
- package/jsonEditor/jsonEditorRule.js +1 -1
- package/jsonEditor/jsonEditorState.d.ts +3 -32
- package/jsonEditor/jsonEditorState.js +1 -1
- package/jsonEditor/rules/conditional.d.ts +3 -2
- package/jsonEditor/rules/conditional.js +2 -2
- package/jsonEditor/rules/multivalue.d.ts +3 -2
- package/jsonEditor/rules/multivalue.js +1 -1
- package/jsonEditor/rules/references.d.ts +3 -2
- package/jsonEditor/rules/references.js +2 -2
- package/jsonEditor/rules/templates.d.ts +3 -2
- package/jsonEditor/rules/templates.js +1 -1
- package/jsonReferenceMap.d.ts +1 -45
- package/jsonReferenceMap.js +3 -73
- package/package.json +9 -9
|
@@ -112,4 +112,4 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
exports.TemplatedJsonEditorRule = TemplatedJsonEditorRule;
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb25FZGl0b3IvcnVsZXMvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILDRDQUF5RztBQUN6RyxzREFBNkc7QUFJN0csd0RBQWdDO0FBZ0JoQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUFrQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWtDO1FBQ25ELE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFnQixFQUFFLEtBQXNCOztRQUNyRSx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUM7UUFFN0MsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsYUFBYSxHQUFHLHVCQUF1QixDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sSUFBSSxHQUFlLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsT0FBTyxJQUFBLDRCQUFpQixFQUFvQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLHNCQUFzQixHQUFHLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxpQkFBaUIsTUFBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ25FLE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sT0FBTyxHQUFHLHdCQUF3QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9ELHVCQUF1QjtnQkFDdkIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNGO1lBQ0QsT0FBTyxZQUFZLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLE9BQU8sQ0FBQyxRQUFnQixFQUFFLEtBQXNCOztRQUN0RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSjtBQXJGRCwwREFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRSZXN1bHQsIFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWRXaXRoRGV0YWlsIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlQmFzZSwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlIH0gZnJvbSAnLi4vanNvbkVkaXRvclN0YXRlJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgVGVtcGxhdGVkIEpTT04gZWRpdG9yIHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPiB7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgdGhlbiB0ZW1wbGF0ZXMgaW4gcHJvcGVydHkgbmFtZXMgYXJlIHJlbmRlcmVkXG4gICAgICovXG4gICAgdXNlTmFtZVRlbXBsYXRlcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgdGhlbiB0ZW1wbGF0ZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFyZSByZW5kZXJlZFxuICAgICAqL1xuICAgIHVzZVZhbHVlVGVtcGxhdGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgVGVtcGxhdGVkIEpTT04gZWRpdG9yIHJ1bGUgYXBwbGllcyBtdXN0YWNoZSByZW5kZXJpbmcgYXMgYXBwcm9wcmlhdGVcbiAqIHRvIGFueSBrZXlzIG9yIHZhbHVlcyBpbiB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlIGV4dGVuZHMgSnNvbkVkaXRvclJ1bGVCYXNlIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM/OiBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogVGVtcGxhdGVkSnNvblJ1bGVPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFRlbXBsYXRlZEpzb25SdWxlT3B0aW9ucyk6IFJlc3VsdDxUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUob3B0aW9ucykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIHByb3BlcnR5IG5hbWUgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgU3VjY2VlZHMgd2l0aCBkZXRhaWwgJ2VkaXRlZCcgYW5kIGFuIG9iamVjdCB0byBiZSBmbGF0dGVuZWQgYW5kIG1lcmdlZFxuICAgICAqIGlmIHRoZSBrZXkgY29udGFpbmVkIGEgdGVtcGxhdGUuIEZhaWxzIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJyZWRcbiAgICAgKiBvciB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJyBpZiB0aGUgcHJvcGVydHkga2V5IGRvZXMgbm90IGNvbnRhaW4gYSB0ZW1wbGF0ZVxuICAgICAqIG9yIGlmIG5hbWUgcmVuZGVyaW5nIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucz8udXNlTmFtZVRlbXBsYXRlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3JlbmRlcihrZXksIHN0YXRlKS5vblN1Y2Nlc3MoKG5ld0tleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuZXdLZXkubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBgVGVtcGxhdGUgXCIke2tleX1cIiByZW5kZXJzIGVtcHR5IG5hbWUuYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbk9iamVjdCA9IHt9O1xuICAgICAgICAgICAgICAgIHJ0cm5bbmV3S2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KHJ0cm4sICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoKHJlc3VsdC5pc0ZhaWx1cmUoKSAmJiByZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ2Fubm90IHJlbmRlciBuYW1lICR7a2V5fTogJHtyZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIG1lc3NhZ2UsIHZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBmb3IgdGVtcGxhdGUgcmVuZGVyaW5nXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKiBAcmV0dXJucyBTdWNjZWVkcyB3aXRoIGRldGFpbCAnZWRpdGVkJyBpZiB0aGUgdmFsdWUgY29udGFpbmVkIGEgdGVtcGxhdGUgYW5kIHdhcyBlZGl0ZWQuXG4gICAgICogRmFpbHMgd2l0aCAnaWdub3JlJyBpZiB0aGUgcmVuZGVyZWQgdmFsdWUgc2hvdWxkIGJlIGlnbm9yZWQsIHdpdGggJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnNcbiAgICAgKiBvciB3aXRoICdpbmFwcGxpY2FibGUnIGlmIHRoZSB2YWx1ZSB3YXMgbm90IGEgc3RyaW5nIHdpdGggYSB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFZhbHVlKHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBpZiAoKHRoaXMuX29wdGlvbnM/LnVzZVZhbHVlVGVtcGxhdGVzICE9PSBmYWxzZSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJSZXN1bHQgPSB0aGlzLl9yZW5kZXIodmFsdWUsIHN0YXRlKS5vblN1Y2Nlc3MoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHJlbmRlclJlc3VsdC5pc0ZhaWx1cmUoKSAmJiAocmVuZGVyUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYENhbm5vdCByZW5kZXIgdmFsdWU6ICR7cmVuZGVyUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCBtZXNzYWdlLCB0aGlzLl9vcHRpb25zPy52YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZW5kZXJSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZW5kZXIodGVtcGxhdGU6IHN0cmluZywgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PHN0cmluZywgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHZhcnMgPSBzdGF0ZS5nZXRWYXJzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICBpZiAodmFycyAmJiB0ZW1wbGF0ZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gTXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLCB2YXJzKSkud2l0aERldGFpbCgnZXJyb3InLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxufVxuIl19
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb25FZGl0b3IvcnVsZXMvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILDRDQUF5RztBQUd6RyxzREFBdUQ7QUFHdkQsd0RBQWdDO0FBZ0JoQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUFrQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWtDO1FBQ25ELE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFnQixFQUFFLEtBQXNCOztRQUNyRSx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUM7UUFFN0MsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsYUFBYSxHQUFHLHVCQUF1QixDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sSUFBSSxHQUFlLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsT0FBTyxJQUFBLDRCQUFpQixFQUFvQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLHNCQUFzQixHQUFHLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxpQkFBaUIsTUFBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ25FLE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sT0FBTyxHQUFHLHdCQUF3QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9ELHVCQUF1QjtnQkFDdkIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNGO1lBQ0QsT0FBTyxZQUFZLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLE9BQU8sQ0FBQyxRQUFnQixFQUFFLEtBQXNCOztRQUN0RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSjtBQXJGRCwwREFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRSZXN1bHQsIFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWRXaXRoRGV0YWlsIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JPcHRpb25zLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGVCYXNlIH0gZnJvbSAnLi4vanNvbkVkaXRvclJ1bGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvclN0YXRlIH0gZnJvbSAnLi4vanNvbkVkaXRvclN0YXRlJztcblxuaW1wb3J0IE11c3RhY2hlIGZyb20gJ211c3RhY2hlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBUZW1wbGF0ZWQgSlNPTiBlZGl0b3IgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlZEpzb25SdWxlT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+IHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHRlbXBsYXRlcyBpbiBwcm9wZXJ0eSBuYW1lcyBhcmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHRlbXBsYXRlcyBpbiBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHJlbmRlcmVkXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBUZW1wbGF0ZWQgSlNPTiBlZGl0b3IgcnVsZSBhcHBsaWVzIG11c3RhY2hlIHJlbmRlcmluZyBhcyBhcHByb3ByaWF0ZVxuICogdG8gYW55IGtleXMgb3IgdmFsdWVzIGluIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkLlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUgZXh0ZW5kcyBKc29uRWRpdG9yUnVsZUJhc2Uge1xuICAgIHByb3RlY3RlZCBfb3B0aW9ucz86IFRlbXBsYXRlZEpzb25SdWxlT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogVGVtcGxhdGVkSnNvblJ1bGVPcHRpb25zKTogUmVzdWx0PFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZShvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHkgbmFtZSBmb3IgdGVtcGxhdGUgcmVuZGVyaW5nLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKiBAcmV0dXJucyBTdWNjZWVkcyB3aXRoIGRldGFpbCAnZWRpdGVkJyBhbmQgYW4gb2JqZWN0IHRvIGJlIGZsYXR0ZW5lZCBhbmQgbWVyZ2VkXG4gICAgICogaWYgdGhlIGtleSBjb250YWluZWQgYSB0ZW1wbGF0ZS4gRmFpbHMgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnJlZFxuICAgICAqIG9yIHdpdGggZGV0YWlsICdpbmFwcGxpY2FibGUnIGlmIHRoZSBwcm9wZXJ0eSBrZXkgZG9lcyBub3QgY29udGFpbiBhIHRlbXBsYXRlXG4gICAgICogb3IgaWYgbmFtZSByZW5kZXJpbmcgaXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgcHVibGljIGVkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSB0aGlzLl9vcHRpb25zPy52YWxpZGF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25zPy51c2VOYW1lVGVtcGxhdGVzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcmVuZGVyKGtleSwgc3RhdGUpLm9uU3VjY2VzcygobmV3S2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0tleS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIGBUZW1wbGF0ZSBcIiR7a2V5fVwiIHJlbmRlcnMgZW1wdHkgbmFtZS5gKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBydHJuOiBKc29uT2JqZWN0ID0ge307XG4gICAgICAgICAgICAgICAgcnRybltuZXdLZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsPEpzb25PYmplY3QsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ocnRybiwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICgocmVzdWx0LmlzRmFpbHVyZSgpICYmIHJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBDYW5ub3QgcmVuZGVyIG5hbWUgJHtrZXl9OiAke3Jlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIHByb3BlcnR5LCBhcnJheSBvciBsaXRlcmFsIHZhbHVlIGZvciB0ZW1wbGF0ZSByZW5kZXJpbmdcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqIEByZXR1cm5zIFN1Y2NlZWRzIHdpdGggZGV0YWlsICdlZGl0ZWQnIGlmIHRoZSB2YWx1ZSBjb250YWluZWQgYSB0ZW1wbGF0ZSBhbmQgd2FzIGVkaXRlZC5cbiAgICAgKiBGYWlscyB3aXRoICdpZ25vcmUnIGlmIHRoZSByZW5kZXJlZCB2YWx1ZSBzaG91bGQgYmUgaWdub3JlZCwgd2l0aCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3Vyc1xuICAgICAqIG9yIHdpdGggJ2luYXBwbGljYWJsZScgaWYgdGhlIHZhbHVlIHdhcyBub3QgYSBzdHJpbmcgd2l0aCBhIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmICgodGhpcy5fb3B0aW9ucz8udXNlVmFsdWVUZW1wbGF0ZXMgIT09IGZhbHNlKSAmJiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgJiYgdmFsdWUuaW5jbHVkZXMoJ3t7JykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlclJlc3VsdCA9IHRoaXMuX3JlbmRlcih2YWx1ZSwgc3RhdGUpLm9uU3VjY2VzcygobmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAocmVuZGVyUmVzdWx0LmlzRmFpbHVyZSgpICYmIChyZW5kZXJSZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ2Fubm90IHJlbmRlciB2YWx1ZTogJHtyZW5kZXJSZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlWYWx1ZScsIG1lc3NhZ2UsIHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlbmRlcih0ZW1wbGF0ZTogc3RyaW5nLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8c3RyaW5nLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgdmFycyA9IHN0YXRlLmdldFZhcnModGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG4gICAgICAgIGlmICh2YXJzICYmIHRlbXBsYXRlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBNdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsIHZhcnMpKS53aXRoRGV0YWlsKCdlcnJvcicsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG59XG4iXX0=
|
package/jsonReferenceMap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DetailedResult, Result } from '@fgv/ts-utils';
|
|
2
2
|
import { JsonContext, JsonReferenceMap, JsonReferenceMapFailureReason } from './jsonContext';
|
|
3
3
|
import { JsonObject, JsonValue } from './common';
|
|
4
|
-
import { JsonEditor } from './jsonEditor';
|
|
4
|
+
import { JsonEditor } from './jsonEditor/jsonEditor';
|
|
5
5
|
export interface ReferenceMapKeyPolicyValidateOptions {
|
|
6
6
|
makeValid?: boolean;
|
|
7
7
|
}
|
|
@@ -136,47 +136,3 @@ export declare class PrefixedJsonMap extends SimpleJsonMap {
|
|
|
136
136
|
static createPrefixed(prefixOptions: KeyPrefixOptions, values?: MapOrRecord<JsonValue>, context?: JsonContext, editor?: JsonEditor): Result<PrefixedJsonMap>;
|
|
137
137
|
protected static _toPolicy(prefixOptions: string | KeyPrefixOptions): ReferenceMapKeyPolicy<JsonValue>;
|
|
138
138
|
}
|
|
139
|
-
/**
|
|
140
|
-
* A CompositeJsonMap presents a composed view of one or more other
|
|
141
|
-
* JsonReferenceMaps.
|
|
142
|
-
*/
|
|
143
|
-
export declare class CompositeJsonMap implements JsonReferenceMap {
|
|
144
|
-
protected _maps: JsonReferenceMap[];
|
|
145
|
-
protected constructor(maps: JsonReferenceMap[]);
|
|
146
|
-
/**
|
|
147
|
-
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
148
|
-
* @param maps one or more object maps to be composed
|
|
149
|
-
*/
|
|
150
|
-
static create(maps: JsonReferenceMap[]): Result<CompositeJsonMap>;
|
|
151
|
-
/**
|
|
152
|
-
* Determine if a key might be valid for this map but does not determine
|
|
153
|
-
* if key actually exists. Allows key range to be constrained.
|
|
154
|
-
* @param key key to be tested
|
|
155
|
-
* @returns true if the key is in the valid range, false otherwise.
|
|
156
|
-
*/
|
|
157
|
-
keyIsInRange(key: string): boolean;
|
|
158
|
-
/**
|
|
159
|
-
* Determines if an object with the specified key actually exists in the map.
|
|
160
|
-
* @param key key to be tested
|
|
161
|
-
* @returns true if an object with the specified key exists, false otherwise.
|
|
162
|
-
*/
|
|
163
|
-
has(key: string): boolean;
|
|
164
|
-
/**
|
|
165
|
-
* Gets a JSON object specified by key.
|
|
166
|
-
* @param key key of the object to be retrieved
|
|
167
|
-
* @param context optional @see JsonContext used to format the object
|
|
168
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
169
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
170
|
-
* could not be formatted.
|
|
171
|
-
*/
|
|
172
|
-
getJsonObject(key: string, context?: JsonContext): DetailedResult<JsonObject, JsonReferenceMapFailureReason>;
|
|
173
|
-
/**
|
|
174
|
-
* Gets a JSON value specified by key.
|
|
175
|
-
* @param key key of the object to be retrieved
|
|
176
|
-
* @param context Optional @see JsonContext used to format the value
|
|
177
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
178
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
179
|
-
* could not be formatted.
|
|
180
|
-
*/
|
|
181
|
-
getJsonValue(key: string, context?: JsonContext): DetailedResult<JsonValue, JsonReferenceMapFailureReason>;
|
|
182
|
-
}
|
package/jsonReferenceMap.js
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
* SOFTWARE.
|
|
22
22
|
*/
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.
|
|
24
|
+
exports.PrefixedJsonMap = exports.SimpleJsonMap = exports.SimpleJsonMapBase = exports.PrefixKeyPolicy = exports.ReferenceMapKeyPolicy = void 0;
|
|
25
25
|
const ts_utils_1 = require("@fgv/ts-utils");
|
|
26
26
|
const common_1 = require("./common");
|
|
27
|
-
const jsonEditor_1 = require("./jsonEditor");
|
|
27
|
+
const jsonEditor_1 = require("./jsonEditor/jsonEditor");
|
|
28
28
|
/**
|
|
29
29
|
* Policy object responsible for validating or correcting
|
|
30
30
|
* keys in a reference map
|
|
@@ -199,74 +199,4 @@ class PrefixedJsonMap extends SimpleJsonMap {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
exports.PrefixedJsonMap = PrefixedJsonMap;
|
|
202
|
-
/**
|
|
203
|
-
* A CompositeJsonMap presents a composed view of one or more other
|
|
204
|
-
* JsonReferenceMaps.
|
|
205
|
-
*/
|
|
206
|
-
class CompositeJsonMap {
|
|
207
|
-
constructor(maps) {
|
|
208
|
-
this._maps = maps;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
212
|
-
* @param maps one or more object maps to be composed
|
|
213
|
-
*/
|
|
214
|
-
static create(maps) {
|
|
215
|
-
return (0, ts_utils_1.captureResult)(() => new CompositeJsonMap(maps));
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Determine if a key might be valid for this map but does not determine
|
|
219
|
-
* if key actually exists. Allows key range to be constrained.
|
|
220
|
-
* @param key key to be tested
|
|
221
|
-
* @returns true if the key is in the valid range, false otherwise.
|
|
222
|
-
*/
|
|
223
|
-
keyIsInRange(key) {
|
|
224
|
-
return this._maps.find((map) => map.keyIsInRange(key)) !== undefined;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Determines if an object with the specified key actually exists in the map.
|
|
228
|
-
* @param key key to be tested
|
|
229
|
-
* @returns true if an object with the specified key exists, false otherwise.
|
|
230
|
-
*/
|
|
231
|
-
has(key) {
|
|
232
|
-
return this._maps.find((map) => map.has(key)) !== undefined;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Gets a JSON object specified by key.
|
|
236
|
-
* @param key key of the object to be retrieved
|
|
237
|
-
* @param context optional @see JsonContext used to format the object
|
|
238
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
239
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
240
|
-
* could not be formatted.
|
|
241
|
-
*/
|
|
242
|
-
getJsonObject(key, context) {
|
|
243
|
-
return this.getJsonValue(key, context).onSuccess((jv) => {
|
|
244
|
-
if (!(0, common_1.isJsonObject)(jv)) {
|
|
245
|
-
return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
|
|
246
|
-
}
|
|
247
|
-
return (0, ts_utils_1.succeedWithDetail)(jv);
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Gets a JSON value specified by key.
|
|
252
|
-
* @param key key of the object to be retrieved
|
|
253
|
-
* @param context Optional @see JsonContext used to format the value
|
|
254
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
255
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
256
|
-
* could not be formatted.
|
|
257
|
-
*/
|
|
258
|
-
// eslint-disable-next-line no-use-before-define
|
|
259
|
-
getJsonValue(key, context) {
|
|
260
|
-
for (const map of this._maps) {
|
|
261
|
-
if (map.keyIsInRange(key)) {
|
|
262
|
-
const result = map.getJsonValue(key, context);
|
|
263
|
-
if (result.isSuccess() || (result.detail === 'error')) {
|
|
264
|
-
return result;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
return (0, ts_utils_1.failWithDetail)(`${key}: value not found`, 'unknown');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
exports.CompositeJsonMap = CompositeJsonMap;
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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S0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9rZXlQb2xpY3kgPSBrZXlQb2xpY3kgPz8gbmV3IFJlZmVyZW5jZU1hcEtleVBvbGljeSgpO1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLl9rZXlQb2xpY3kudmFsaWRhdGVNYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvTWFwPFQ+KHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+KTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIFQ+KCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEodmFsdWVzIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZFRvTWFwKHZhbHVlcywgKF9rLCB2KSA9PiBzdWNjZWVkKHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZSBpZiBrZXkgYWN0dWFsbHlcbiAgICAgKiBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleVBvbGljeS5pc1ZhbGlkKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgQHNlZSBTaW1wbGVKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSnNvbk1hcE9wdGlvbnMge1xuICAgIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+LFxuICAgIGVkaXRvcj86IEpzb25FZGl0b3IsXG59XG5cbi8qKlxuICogQSBTaW1wbGVKc29uTWFwIHByZXNlbnRzIGEgdmlldyBvZiBhIHNpbXBsZSBtYXAgb2YgQHNlZSBKc29uVmFsdWVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwQmFzZTxKc29uVmFsdWU+IHtcbiAgICBwcm90ZWN0ZWQgX2VkaXRvcj86IEpzb25FZGl0b3I7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zPy5rZXlQb2xpY3kpO1xuICAgICAgICB0aGlzLl9lZGl0b3IgPSBvcHRpb25zPy5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFNpbXBsZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgb2JqZWN0c1xuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uT2JqZWN0IHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBAc2VlIFNpbXBsZUpzb25NYXBPcHRpb25zIGZvciBpbml0aWFsaXphdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlU2ltcGxlKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKTogUmVzdWx0PFNpbXBsZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFNpbXBsZUpzb25NYXAodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0ID8/IHRoaXMuX2NvbnRleHQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogSlNPTiB2YWx1ZSBub3QgZm91bmRgLCAndW5rbm93bicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9uZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZSh2YWx1ZTogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmICghdGhpcy5fZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKc29uRWRpdG9yLmNyZWF0ZSgpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IG5lYXJseSBpbXBvc3NpYmxlIHRvIHJlcHJvZHVjZVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChyZXN1bHQubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3IgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvci5jbG9uZSh2YWx1ZSwgY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgUHJlZml4ZWRKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UHJlZml4T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByZWZpeCBzaG91bGQgYmUgYWRkZWQgYXV0b21hdGljYWxseSBhcyBuZWVkZWQgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKi9cbiAgICBhZGRQcmVmaXg/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBiZSBlbmZvcmNlZFxuICAgICAqL1xuICAgIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgUHJlZml4ZWRKc29uTWFwIGVuZm9yY2VzIGEgc3VwcGxpZWQgcHJlZml4IGZvciBhbGwgY29udGFpbmVkIHZhbHVlcywgb3B0aW9uYWxseVxuICogYWRkaW5nIHRoZSBwcmVmaXggYXMgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpLlxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4ZWRKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4IEEgc3RyaW5nIHByZWZpeCB0byBiZSBlbmZvcmNlZCBmb3IgYW5kIGFkZGVkIHRvIGtleSBuYW1lcyBhcyBuZWNlc3NhcnlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeDogc3RyaW5nLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeE9wdGlvbnMgQSBLZXlQcmVmaXhPcHRpb25zIGluZGljYXRpbmcgdGhlIHByZWZpeCB0byBlbmZvcmNlIGFuZCB3aGV0aGVyIHRoYXQgcHJlZml4IHNob3VsZFxuICAgICAqIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgaWYgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgcmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBQcmVmaXhlZEpzb25NYXAodmFsdWVzLCBjb250ZXh0LCB7IGtleVBvbGljeTogdGhpcy5fdG9Qb2xpY3kocHJlZml4T3B0aW9ucyksIGVkaXRvciB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9Qb2xpY3kocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMpOiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJlZml4T3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMsIHsgbWFrZVZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMucHJlZml4LCB7IG1ha2VWYWxpZDogKHByZWZpeE9wdGlvbnMuYWRkUHJlZml4ICE9PSBmYWxzZSkgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgQ29tcG9zaXRlSnNvbk1hcCBwcmVzZW50cyBhIGNvbXBvc2VkIHZpZXcgb2Ygb25lIG9yIG1vcmUgb3RoZXJcbiAqIEpzb25SZWZlcmVuY2VNYXBzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRlSnNvbk1hcCBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCBfbWFwczogSnNvblJlZmVyZW5jZU1hcFtdO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG1hcHM6IEpzb25SZWZlcmVuY2VNYXBbXSkge1xuICAgICAgICB0aGlzLl9tYXBzID0gbWFwcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29tcG9zaXRlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBtYXBzXG4gICAgICogQHBhcmFtIG1hcHMgb25lIG9yIG1vcmUgb2JqZWN0IG1hcHMgdG8gYmUgY29tcG9zZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pOiBSZXN1bHQ8Q29tcG9zaXRlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29tcG9zaXRlSnNvbk1hcChtYXBzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lXG4gICAgICogaWYga2V5IGFjdHVhbGx5IGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5oYXMoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBtYXAgb2YgdGhpcy5fbWFwcykge1xuICAgICAgICAgICAgaWYgKG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1hcC5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpIHx8IChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICB9XG59XG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0Qsd0RBQXFEO0FBTXJEOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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QzthQUNsRDtZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSjtBQS9DRCxzQ0ErQ0M7QUFpQkQ7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGFBQWE7SUFDOUMsWUFBc0IsTUFBK0IsRUFBRSxPQUFxQixFQUFFLE9BQThCO1FBQ3hHLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFvQk0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFzQyxFQUFFLE1BQStCLEVBQUUsT0FBcUIsRUFBRSxNQUFtQjtRQUM1SSxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFUyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQXNDO1FBQzdELElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RyxDQUFDO0NBQ0o7QUFqQ0QsMENBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMge1xuICAgIG1ha2VWYWxpZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUG9saWN5IG9iamVjdCByZXNwb25zaWJsZSBmb3IgdmFsaWRhdGluZyBvciBjb3JyZWN0aW5nXG4gKiBrZXlzIGluIGEgcmVmZXJlbmNlIG1hcFxuICovXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmF1bHRPcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfaXNWYWxpZDogKGtleTogc3RyaW5nLCBpdGVtPzogVCkgPT4gYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zLCBpc1ZhbGlkPzogKGtleTogc3RyaW5nLCBpdGVtPzogVCkgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkID8/IFJlZmVyZW5jZU1hcEtleVBvbGljeS5kZWZhdWx0S2V5UHJlZGljYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdEtleVByZWRpY2F0ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKGtleS5sZW5ndGggPiAwKSAmJiAoIWtleS5pbmNsdWRlcygne3snKSkgJiYgKCFrZXkuc3RhcnRzV2l0aCgnPycpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZChrZXk6IHN0cmluZywgaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQoa2V5LCBpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBfb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pID8gc3VjY2VlZChrZXkpIDogZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZUl0ZW1zKGl0ZW1zOiBbc3RyaW5nLCBUXVtdLCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PFtzdHJpbmcsIFRdW10+IHtcbiAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZSguLi5pdGVtLCBvcHRpb25zKS5vblN1Y2Nlc3MoKHZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoW3ZhbGlkLCBpdGVtWzFdXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZU1hcChtYXA6IE1hcDxzdHJpbmcsIFQ+LCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlSXRlbXMoQXJyYXkuZnJvbShtYXAuZW50cmllcygpKSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcCh2YWxpZCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVmaXhLZXlQb2xpY3k8VD4gZXh0ZW5kcyBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4ge1xuICAgIHB1YmxpYyByZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZywgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIF9pdGVtPzogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgodGhpcy5wcmVmaXgpICYmIChrZXkgIT09IHRoaXMucHJlZml4KSAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShrZXk6IHN0cmluZywgaXRlbT86IFQsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IG1ha2VWYWxpZCA9IChvcHRpb25zID8/IHRoaXMuX2RlZmF1bHRPcHRpb25zKT8ubWFrZVZhbGlkID09PSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKGtleSwgaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFrZVZhbGlkICYmIFJlZmVyZW5jZU1hcEtleVBvbGljeS5kZWZhdWx0S2V5UHJlZGljYXRlKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGAke3RoaXMucHJlZml4fSR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsKGAke2tleX06IGludmFsaWQga2V5YCk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXBPclJlY29yZDxUPiA9IE1hcDxzdHJpbmcsIFQ+fFJlY29yZDxzdHJpbmcsIFQ+O1xuXG4vKipcbiAqIEEgU2ltcGxlSnNvbk1hcCBwcmVzZW50cyBhIHZpZXcgb2YgYSBzaW1wbGUgbWFwIG9mIEBzZWUgSnNvblZhbHVlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVKc29uTWFwQmFzZTxUPiBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfa2V5UG9saWN5OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF92YWx1ZXM6IE1hcDxzdHJpbmcsIFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY29udGV4dD86IEpzb25Db250ZXh0O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPikge1xuICAgICAgICB2YWx1ZXMgPSBTaW1wbGVKc29uTWFwQmFzZS5fdG9NYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2tleVBvbGljeSA9IGtleVBvbGljeSA/PyBuZXcgUmVmZXJlbmNlTWFwS2V5UG9saWN5KCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuX2tleVBvbGljeS52YWxpZGF0ZU1hcCh2YWx1ZXMpLm9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9NYXA8VD4odmFsdWVzPzogTWFwT3JSZWNvcmQ8VD4pOiBSZXN1bHQ8TWFwPHN0cmluZywgVD4+IHtcbiAgICAgICAgaWYgKHZhbHVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgTWFwPHN0cmluZywgVD4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoISh2YWx1ZXMgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVjb3JkVG9NYXAodmFsdWVzLCAoX2ssIHYpID0+IHN1Y2NlZWQodikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lIGlmIGtleSBhY3R1YWxseVxuICAgICAqIGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5UG9saWN5LmlzVmFsaWQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIG9iamVjdCBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgb2JqZWN0XG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SnNvbk9iamVjdChrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCkub25TdWNjZXNzKChqdikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0pzb25PYmplY3QoanYpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IG5vdCBhbiBvYmplY3RgLCAnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChqdik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHZhbHVlIHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgcHVibGljIGFic3RyYWN0IGdldEpzb25WYWx1ZShrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj47XG59XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgYSBAc2VlIFNpbXBsZUpzb25NYXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVKc29uTWFwT3B0aW9ucyB7XG4gICAga2V5UG9saWN5PzogUmVmZXJlbmNlTWFwS2V5UG9saWN5PEpzb25WYWx1ZT4sXG4gICAgZWRpdG9yPzogSnNvbkVkaXRvcixcbn1cblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlSnNvbk1hcCBleHRlbmRzIFNpbXBsZUpzb25NYXBCYXNlPEpzb25WYWx1ZT4ge1xuICAgIHByb3RlY3RlZCBfZWRpdG9yPzogSnNvbkVkaXRvcjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcih2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnM/LmtleVBvbGljeSk7XG4gICAgICAgIHRoaXMuX2VkaXRvciA9IG9wdGlvbnM/LmVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgU2ltcGxlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBvYmplY3RzXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgUmVjb3JkIG9mIHRoZSBAc2VlIEpzb25PYmplY3QgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIEBzZWUgU2ltcGxlSnNvbk1hcE9wdGlvbnMgZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTaW1wbGUodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpOiBSZXN1bHQ8U2ltcGxlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgU2ltcGxlSnNvbk1hcCh2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQgPz8gdGhpcy5fY29udGV4dDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl92YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBKU09OIHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb25lKHZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Nsb25lKHZhbHVlOiBKc29uVmFsdWUsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9lZGl0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEpzb25FZGl0b3IuY3JlYXRlKCk7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbmVhcmx5IGltcG9zc2libGUgdG8gcmVwcm9kdWNlXG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKHJlc3VsdC5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2VkaXRvciA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yLmNsb25lKHZhbHVlLCBjb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgYSBQcmVmaXhlZEpzb25NYXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQcmVmaXhPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcHJlZml4IHNob3VsZCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5IGFzIG5lZWRlZCAoZGVmYXVsdCB0cnVlKVxuICAgICAqL1xuICAgIGFkZFByZWZpeD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHJlZml4IHRvIGJlIGVuZm9yY2VkXG4gICAgICovXG4gICAgcHJlZml4OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBQcmVmaXhlZEpzb25NYXAgZW5mb3JjZXMgYSBzdXBwbGllZCBwcmVmaXggZm9yIGFsbCBjb250YWluZWQgdmFsdWVzLCBvcHRpb25hbGx5XG4gKiBhZGRpbmcgdGhlIHByZWZpeCBhcyBuZWNlc3NhcnkgKGRlZmF1bHQgdHJ1ZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmaXhlZEpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUHJlZml4ZWRKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBwcmVmaXggQSBzdHJpbmcgcHJlZml4IHRvIGJlIGVuZm9yY2VkIGZvciBhbmQgYWRkZWQgdG8ga2V5IG5hbWVzIGFzIG5lY2Vzc2FyeVxuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBlZGl0b3IgT3B0aW9uYWwgQHNlZSBKc29uRWRpdG9yIHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4OiBzdHJpbmcsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4T3B0aW9ucyBBIEtleVByZWZpeE9wdGlvbnMgaW5kaWNhdGluZyB0aGUgcHJlZml4IHRvIGVuZm9yY2UgYW5kIHdoZXRoZXIgdGhhdCBwcmVmaXggc2hvdWxkXG4gICAgICogYmUgYWRkZWQgYXV0b21hdGljYWxseSBpZiBuZWNlc3NhcnkgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciByZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IEtleVByZWZpeE9wdGlvbnMsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+O1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFByZWZpeGVkSnNvbk1hcCh2YWx1ZXMsIGNvbnRleHQsIHsga2V5UG9saWN5OiB0aGlzLl90b1BvbGljeShwcmVmaXhPcHRpb25zKSwgZWRpdG9yIH0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF90b1BvbGljeShwcmVmaXhPcHRpb25zOiBzdHJpbmd8S2V5UHJlZml4T3B0aW9ucyk6IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmVmaXhPcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhLZXlQb2xpY3kocHJlZml4T3B0aW9ucywgeyBtYWtlVmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhLZXlQb2xpY3kocHJlZml4T3B0aW9ucy5wcmVmaXgsIHsgbWFrZVZhbGlkOiAocHJlZml4T3B0aW9ucy5hZGRQcmVmaXggIT09IGZhbHNlKSB9KTtcbiAgICB9XG59XG5cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fgv/ts-json",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.6",
|
|
4
4
|
"description": "Typescript utilities for working with JSON",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -24,22 +24,22 @@
|
|
|
24
24
|
"author": "Erik Fortune",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@fgv/ts-utils": "^1.9.
|
|
27
|
+
"@fgv/ts-utils": "^1.9.4",
|
|
28
28
|
"@fgv/ts-utils-jest": "^1.9.4",
|
|
29
|
-
"@types/jest": "^29.
|
|
29
|
+
"@types/jest": "^29.5.0",
|
|
30
30
|
"@types/mustache": "^4.2.2",
|
|
31
|
-
"@types/node": "^18.
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
33
|
-
"@typescript-eslint/parser": "^5.
|
|
34
|
-
"eslint": "^8.
|
|
31
|
+
"@types/node": "^18.15.10",
|
|
32
|
+
"@typescript-eslint/eslint-plugin": "^5.56.0",
|
|
33
|
+
"@typescript-eslint/parser": "^5.56.0",
|
|
34
|
+
"eslint": "^8.36.0",
|
|
35
35
|
"eslint-config-standard": "^17.0.0",
|
|
36
36
|
"eslint-plugin-import": "^2.27.5",
|
|
37
37
|
"eslint-plugin-node": "^11.1.0",
|
|
38
38
|
"eslint-plugin-promise": "^6.1.1",
|
|
39
|
-
"jest": "^29.
|
|
39
|
+
"jest": "^29.5.0",
|
|
40
40
|
"jest-extended": "^3.2.4",
|
|
41
41
|
"mustache": "^4.2.0",
|
|
42
|
-
"rimraf": "^4.
|
|
42
|
+
"rimraf": "^4.4.1",
|
|
43
43
|
"ts-jest": "^29.0.5",
|
|
44
44
|
"ts-node": "^10.9.1",
|
|
45
45
|
"typescript": "^4.9.5"
|