@uiowa/uiowa-mfk-material
Version:
mfk, uiowa-mfk
176 lines • 14 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Uiowa MFK Type
*
* class type contains 10 required MFK fields and 1 optional BFR field.
* there are also several common methods ready to use.
*/
export class Mfk {
/**
* Uiowa MFK. constructor takes a MFK string.
*
* Non-numeric characters will be stripped out automatically.
*
* Example usages:
* ```typescript
* let m1 = new Mfk();
* const m2 = new Mfk('010-11-1010-00000-00000000-6218-000-00000-00-1111');
* const m3 = new Mfk('0201210120100100000000621900000111123555');
* ```
* @param {?=} mfkString
*/
constructor(mfkString = null) {
this.FUND = '';
this.ORG = '';
this.DEPT = '';
this.SUBDEPT = '';
this.GRANTPGM = '';
this.IACT = '';
this.OACT = '';
this.DACT = '';
this.FN = '';
this.CCTR = '';
this.BRF = '';
if (mfkString) {
this.parseString(mfkString);
}
}
/**
* cast an object to type of MFK
*
* --> plain JSON object doesn't have type at run time.
* @param {?} obj
* @return {?}
*/
static cast(obj) {
/** @type {?} */
const mfk = new Mfk();
Object.keys(obj).forEach((/**
* @param {?} key
* @return {?}
*/
key => (mfk[key.toUpperCase()] = obj[key])));
return mfk;
}
/**
* Compare values of all 10 fields
*
* @param {?} mfk An MFK
* @return {?}
*/
equals(mfk) {
return (this.FUND === mfk.FUND &&
this.ORG === mfk.ORG &&
this.DEPT === mfk.DEPT &&
this.SUBDEPT === mfk.SUBDEPT &&
this.GRANTPGM === mfk.GRANTPGM &&
this.IACT === mfk.IACT &&
this.DACT === mfk.DACT &&
this.OACT === mfk.OACT &&
this.FN === mfk.FN &&
this.CCTR === mfk.CCTR);
}
/**
* convert MFK to a 40 digit string.
* @param {?=} separator (Optional) the separator between MFK parts. Default: "".
* @return {?} MFK string
*/
to40String(separator = '') {
return Object.keys(this)
.filter((/**
* @param {?} k
* @return {?}
*/
(k) => k !== 'BRF'))
.map((/**
* @param {?} k
* @return {?}
*/
k => this[k]))
.join(separator);
}
/**
* Get MFK format validation message. It checkes this MFK's first 10 fields are numeric strings or not.
* @return {?}
*/
validateFormat() {
/** @type {?} */
const mfkString = this.to40String();
if (mfkString.length !== 40) {
return `MFK is not 40 digits long.`;
}
if (isNaN(Number(mfkString))) {
return `MFK [${mfkString}] should be all numbers.`;
}
return null;
}
/**
* check if this MFK is in an array of Favorite MFKs.
*
* @param {?} favoriteMfks an array of Favorite MFKs.
* @return {?} boolean
*/
isIn(favoriteMfks) {
if (!favoriteMfks || favoriteMfks.length < 1) {
return false;
}
return favoriteMfks.some((/**
* @param {?} x
* @return {?}
*/
x => x.matches(this)));
}
/**
* MFK module internal method.
* @param {?} input
* @return {?}
*/
parseString(input) {
/** @type {?} */
const s = input.replace(/\D/g, '');
if (!s || s.length < 40) {
return;
}
this.FUND = s.substring(0, 3);
this.ORG = s.substring(3, 5);
this.DEPT = s.substring(5, 9);
this.SUBDEPT = s.substring(9, 14);
this.GRANTPGM = s.substring(14, 22);
this.IACT = s.substring(22, 26);
this.OACT = s.substring(26, 29);
this.DACT = s.substring(29, 34);
this.FN = s.substring(34, 36);
this.CCTR = s.substring(36, 40);
if (s.length >= 42) {
this.BRF = s.substring(40, 42);
}
}
}
if (false) {
/** @type {?} */
Mfk.prototype.FUND;
/** @type {?} */
Mfk.prototype.ORG;
/** @type {?} */
Mfk.prototype.DEPT;
/** @type {?} */
Mfk.prototype.SUBDEPT;
/** @type {?} */
Mfk.prototype.GRANTPGM;
/** @type {?} */
Mfk.prototype.IACT;
/** @type {?} */
Mfk.prototype.OACT;
/** @type {?} */
Mfk.prototype.DACT;
/** @type {?} */
Mfk.prototype.FN;
/** @type {?} */
Mfk.prototype.CCTR;
/** @type {?} */
Mfk.prototype.BRF;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZrLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVpb3dhL3Vpb3dhLW1may1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvbWZrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQSxNQUFNLE9BQU8sR0FBRzs7Ozs7Ozs7Ozs7Ozs7SUF5QmQsWUFBWSxZQUFvQixJQUFJO1FBeEJwQyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQWVQLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7Ozs7Ozs7O0lBT0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFROztjQUNaLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87Ozs7UUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDckUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7Ozs7O0lBT0QsTUFBTSxDQUFDLEdBQVE7UUFDYixPQUFPLENBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSTtZQUN0QixJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUk7WUFDdEIsSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTztZQUM1QixJQUFJLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxRQUFRO1lBQzlCLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUk7WUFDdEIsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSTtZQUN0QixJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJO1lBQ3RCLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUN2QixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBT0QsVUFBVSxDQUFDLFlBQW9CLEVBQUU7UUFDL0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNyQixNQUFNOzs7O1FBQUMsQ0FBQyxDQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUM7YUFDdEMsR0FBRzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO2FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDOzs7OztJQUtELGNBQWM7O2NBQ04sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDbkMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUMzQixPQUFPLDRCQUE0QixDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxRQUFRLFNBQVMsMEJBQTBCLENBQUM7U0FDcEQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7Ozs7SUFRRCxJQUFJLENBQUMsWUFBMkI7UUFDOUIsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO0lBQ2pELENBQUM7Ozs7OztJQUtELFdBQVcsQ0FBQyxLQUFhOztjQUNqQixDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7WUFDdkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0NBQ0Y7OztJQTFIQyxtQkFBVTs7SUFDVixrQkFBUzs7SUFDVCxtQkFBVTs7SUFDVixzQkFBYTs7SUFDYix1QkFBYzs7SUFDZCxtQkFBVTs7SUFDVixtQkFBVTs7SUFDVixtQkFBVTs7SUFDVixpQkFBUTs7SUFDUixtQkFBVTs7SUFDVixrQkFBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhdm9yaXRlTWZrIH0gZnJvbSAnLi9mYXZvcml0ZS1tZmsnO1xyXG5pbXBvcnQgeyBJTWZrIH0gZnJvbSAnLi9tZmsuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBVaW93YSBNRksgVHlwZVxyXG4gKlxyXG4gKiBjbGFzcyB0eXBlIGNvbnRhaW5zIDEwIHJlcXVpcmVkIE1GSyBmaWVsZHMgYW5kIDEgb3B0aW9uYWwgQkZSIGZpZWxkLlxyXG4gKiB0aGVyZSBhcmUgYWxzbyBzZXZlcmFsIGNvbW1vbiBtZXRob2RzIHJlYWR5IHRvIHVzZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBNZmsgaW1wbGVtZW50cyBJTWZrIHtcclxuICBGVU5EID0gJyc7XHJcbiAgT1JHID0gJyc7XHJcbiAgREVQVCA9ICcnO1xyXG4gIFNVQkRFUFQgPSAnJztcclxuICBHUkFOVFBHTSA9ICcnO1xyXG4gIElBQ1QgPSAnJztcclxuICBPQUNUID0gJyc7XHJcbiAgREFDVCA9ICcnO1xyXG4gIEZOID0gJyc7XHJcbiAgQ0NUUiA9ICcnO1xyXG4gIEJSRiA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBVaW93YSBNRksuIGNvbnN0cnVjdG9yIHRha2VzIGEgTUZLIHN0cmluZy5cclxuICAgKlxyXG4gICAqIE5vbi1udW1lcmljIGNoYXJhY3RlcnMgd2lsbCBiZSBzdHJpcHBlZCBvdXQgYXV0b21hdGljYWxseS5cclxuICAgKlxyXG4gICAqIEV4YW1wbGUgdXNhZ2VzOlxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBsZXQgbTEgPSBuZXcgTWZrKCk7XHJcbiAgICogY29uc3QgbTIgPSBuZXcgTWZrKCcwMTAtMTEtMTAxMC0wMDAwMC0wMDAwMDAwMC02MjE4LTAwMC0wMDAwMC0wMC0xMTExJyk7XHJcbiAgICogY29uc3QgbTMgPSBuZXcgTWZrKCcwMjAxMjEwMTIwMTAwMTAwMDAwMDAwNjIxOTAwMDAwMTExMTIzNTU1Jyk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IobWZrU3RyaW5nOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAobWZrU3RyaW5nKSB7XHJcbiAgICAgIHRoaXMucGFyc2VTdHJpbmcobWZrU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNhc3QgYW4gb2JqZWN0IHRvIHR5cGUgb2YgTUZLXHJcbiAgICpcclxuICAgKiAtLT4gcGxhaW4gSlNPTiBvYmplY3QgZG9lc24ndCBoYXZlIHR5cGUgYXQgcnVuIHRpbWUuXHJcbiAgICovXHJcbiAgc3RhdGljIGNhc3Qob2JqOiBhbnkpOiBNZmsge1xyXG4gICAgY29uc3QgbWZrID0gbmV3IE1maygpO1xyXG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiAobWZrW2tleS50b1VwcGVyQ2FzZSgpXSA9IG9ialtrZXldKSk7XHJcbiAgICByZXR1cm4gbWZrO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyZSB2YWx1ZXMgb2YgYWxsIDEwIGZpZWxkc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIG1mayBBbiBNRktcclxuICAgKi9cclxuICBlcXVhbHMobWZrOiBNZmspOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuRlVORCA9PT0gbWZrLkZVTkQgJiZcclxuICAgICAgdGhpcy5PUkcgPT09IG1may5PUkcgJiZcclxuICAgICAgdGhpcy5ERVBUID09PSBtZmsuREVQVCAmJlxyXG4gICAgICB0aGlzLlNVQkRFUFQgPT09IG1may5TVUJERVBUICYmXHJcbiAgICAgIHRoaXMuR1JBTlRQR00gPT09IG1may5HUkFOVFBHTSAmJlxyXG4gICAgICB0aGlzLklBQ1QgPT09IG1may5JQUNUICYmXHJcbiAgICAgIHRoaXMuREFDVCA9PT0gbWZrLkRBQ1QgJiZcclxuICAgICAgdGhpcy5PQUNUID09PSBtZmsuT0FDVCAmJlxyXG4gICAgICB0aGlzLkZOID09PSBtZmsuRk4gJiZcclxuICAgICAgdGhpcy5DQ1RSID09PSBtZmsuQ0NUUlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbnZlcnQgTUZLIHRvIGEgNDAgZGlnaXQgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSAgIHNlcGFyYXRvciAgIChPcHRpb25hbCkgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIE1GSyBwYXJ0cy4gRGVmYXVsdDogXCJcIi5cclxuICAgKiBAcmV0dXJucyBNRksgc3RyaW5nXHJcbiAgICovXHJcbiAgdG80MFN0cmluZyhzZXBhcmF0b3I6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzKVxyXG4gICAgICAuZmlsdGVyKChrOiBrZXlvZiBJTWZrKSA9PiBrICE9PSAnQlJGJylcclxuICAgICAgLm1hcChrID0+IHRoaXNba10pXHJcbiAgICAgIC5qb2luKHNlcGFyYXRvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgTUZLIGZvcm1hdCB2YWxpZGF0aW9uIG1lc3NhZ2UuIEl0IGNoZWNrZXMgdGhpcyBNRksncyBmaXJzdCAxMCBmaWVsZHMgYXJlIG51bWVyaWMgc3RyaW5ncyBvciBub3QuXHJcbiAgICovXHJcbiAgdmFsaWRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1ma1N0cmluZyA9IHRoaXMudG80MFN0cmluZygpO1xyXG4gICAgaWYgKG1ma1N0cmluZy5sZW5ndGggIT09IDQwKSB7XHJcbiAgICAgIHJldHVybiBgTUZLIGlzIG5vdCA0MCBkaWdpdHMgbG9uZy5gO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihtZmtTdHJpbmcpKSkge1xyXG4gICAgICByZXR1cm4gYE1GSyBbJHttZmtTdHJpbmd9XSBzaG91bGQgYmUgYWxsIG51bWJlcnMuYDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgaWYgdGhpcyBNRksgaXMgaW4gYW4gYXJyYXkgb2YgRmF2b3JpdGUgTUZLcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSAgIGZhdm9yaXRlTWZrcyAgIGFuIGFycmF5IG9mIEZhdm9yaXRlIE1GS3MuXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGlzSW4oZmF2b3JpdGVNZmtzOiBGYXZvcml0ZU1ma1tdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWZhdm9yaXRlTWZrcyB8fCBmYXZvcml0ZU1ma3MubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmF2b3JpdGVNZmtzLnNvbWUoeCA9PiB4Lm1hdGNoZXModGhpcykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTUZLIG1vZHVsZSBpbnRlcm5hbCBtZXRob2QuXHJcbiAgICovXHJcbiAgcGFyc2VTdHJpbmcoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcyA9IGlucHV0LnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBpZiAoIXMgfHwgcy5sZW5ndGggPCA0MCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkZVTkQgPSBzLnN1YnN0cmluZygwLCAzKTtcclxuICAgIHRoaXMuT1JHID0gcy5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICB0aGlzLkRFUFQgPSBzLnN1YnN0cmluZyg1LCA5KTtcclxuICAgIHRoaXMuU1VCREVQVCA9IHMuc3Vic3RyaW5nKDksIDE0KTtcclxuICAgIHRoaXMuR1JBTlRQR00gPSBzLnN1YnN0cmluZygxNCwgMjIpO1xyXG4gICAgdGhpcy5JQUNUID0gcy5zdWJzdHJpbmcoMjIsIDI2KTtcclxuICAgIHRoaXMuT0FDVCA9IHMuc3Vic3RyaW5nKDI2LCAyOSk7XHJcbiAgICB0aGlzLkRBQ1QgPSBzLnN1YnN0cmluZygyOSwgMzQpO1xyXG4gICAgdGhpcy5GTiA9IHMuc3Vic3RyaW5nKDM0LCAzNik7XHJcbiAgICB0aGlzLkNDVFIgPSBzLnN1YnN0cmluZygzNiwgNDApO1xyXG4gICAgaWYgKHMubGVuZ3RoID49IDQyKSB7XHJcbiAgICAgIHRoaXMuQlJGID0gcy5zdWJzdHJpbmcoNDAsIDQyKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19