aws-cdk-neuronx-patterns
Version:
> [!WARNING] > This library is experimental module.
128 lines • 15.2 kB
JavaScript
;
var _a, _b, _c;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NeuronxInstanceType = exports.Trainium1Chips = exports.Inferentia2Chips = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const ec2 = require("aws-cdk-lib/aws-ec2");
class Inferentia2Chips {
constructor(chips) {
this.chips = chips;
this.neuronxCores = chips * 2;
this.acceleratorMemory = aws_cdk_lib_1.Size.gibibytes(16 * this.neuronxCores);
}
}
exports.Inferentia2Chips = Inferentia2Chips;
_a = JSII_RTTI_SYMBOL_1;
Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.23" };
class Trainium1Chips {
constructor(chips) {
this.chips = chips;
this.neuronxCores = chips * 2;
this.acceleratorMemory = aws_cdk_lib_1.Size.gibibytes(16 * this.neuronxCores);
}
}
exports.Trainium1Chips = Trainium1Chips;
_b = JSII_RTTI_SYMBOL_1;
Trainium1Chips[_b] = { fqn: "aws-cdk-neuronx-patterns.Trainium1Chips", version: "0.0.23" };
class NeuronxInstanceTypeBase {
constructor(props) {
this.instanceType = props.instanceType;
this.vCpu = props.vCpu;
this.memory = props.memory;
this.acceleratorChips = props.acceleratorChips;
}
/**
* Return the instance type as a string
* @returns The instance type as a string
*/
toString() {
return this.instanceType.toString();
}
}
class Inferentia2InstanceType extends NeuronxInstanceTypeBase {
get supportedTensorParallelism() {
return [1, 2, 4, 8, 24].filter((tp) => tp <= this.acceleratorChips.neuronxCores);
}
constructor(props) {
super({
instanceType: props.instanceType,
vCpu: props.vCpu,
memory: props.memory,
acceleratorChips: new Inferentia2Chips(props.chips),
});
}
}
class Trainium1InstanceType extends NeuronxInstanceTypeBase {
get supportedTensorParallelism() {
return [1, 2, 8, 16, 32].filter((tp) => tp <= this.acceleratorChips.neuronxCores);
}
constructor(props) {
super({
instanceType: props.instanceType,
vCpu: props.vCpu,
memory: props.memory,
acceleratorChips: new Trainium1Chips(props.chips),
});
}
}
class NeuronxInstanceType {
}
exports.NeuronxInstanceType = NeuronxInstanceType;
_c = JSII_RTTI_SYMBOL_1;
NeuronxInstanceType[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.23" };
/**
* inf2.xlarge
*/
NeuronxInstanceType.INF2_XLARGE = new Inferentia2InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE),
vCpu: 4,
memory: aws_cdk_lib_1.Size.gibibytes(16),
chips: 1,
});
/**
* inf2.8xlarge
*/
NeuronxInstanceType.INF2_8XLARGE = new Inferentia2InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE8),
vCpu: 32,
memory: aws_cdk_lib_1.Size.gibibytes(128),
chips: 1,
});
/**
* inf2.24xlarge
*/
NeuronxInstanceType.INF2_24XLARGE = new Inferentia2InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE24),
vCpu: 96,
memory: aws_cdk_lib_1.Size.gibibytes(384),
chips: 6,
});
/**
* inf2.48xlarge
*/
NeuronxInstanceType.INF2_48XLARGE = new Inferentia2InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE48),
vCpu: 192,
memory: aws_cdk_lib_1.Size.gibibytes(768),
chips: 12,
});
/**
* trn1.2xlarge
*/
NeuronxInstanceType.TRN1_2XLARGE = new Trainium1InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.TRN1, ec2.InstanceSize.XLARGE2),
vCpu: 8,
memory: aws_cdk_lib_1.Size.gibibytes(32),
chips: 1,
});
/**
* trn1.32xlarge
*/
NeuronxInstanceType.TRN1_32XLARGE = new Trainium1InstanceType({
instanceType: ec2.InstanceType.of(ec2.InstanceClass.TRN1, ec2.InstanceSize.XLARGE32),
vCpu: 128,
memory: aws_cdk_lib_1.Size.gibibytes(512),
chips: 16,
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1pbnN0YW5jZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2UvbmV1cm9ueC9uZXVyb254LWluc3RhbmNlLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBbUM7QUFDbkMsMkNBQTJDO0FBVzNDLE1BQWEsZ0JBQWdCO0lBRzNCLFlBQXFCLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsa0JBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDOztBQU5ILDRDQU9DOzs7QUFFRCxNQUFhLGNBQWM7SUFHekIsWUFBcUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7O0FBTkgsd0NBT0M7OztBQVNELE1BQWUsdUJBQXVCO0lBTXBDLFlBQVksS0FLWDtRQUNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFF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WUFBWSxDQUFDLFFBQVEsQ0FDMUI7SUFDRCxJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDM0IsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDLENBQUM7QUFDTDs7R0FFRztBQUNvQixnQ0FBWSxHQUNqQyxJQUFJLHFCQUFxQixDQUFDO0lBQ3hCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDL0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ3RCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN6QjtJQUNELElBQUksRUFBRSxDQUFDO0lBQ1AsTUFBTSxFQUFFLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMxQixLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMsQ0FBQztBQUNMOztHQUVHO0FBQ29CLGlDQUFhLEdBQ2xDLElBQUkscUJBQXFCLENBQUM7SUFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFDdEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQzFCO0lBQ0QsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsa0JBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzNCLEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IGNoaXBzOiBudW1iZXI7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbn1cblxuZXhwb3J0IGNsYXNzIEluZmVyZW50aWEyQ2hpcHMgaW1wbGVtZW50cyBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2hpcHM6IG51bWJlcikge1xuICAgIHRoaXMubmV1cm9ueENvcmVzID0gY2hpcHMgKiAyO1xuICAgIHRoaXMuYWNjZWxlcmF0b3JNZW1vcnkgPSBTaXplLmdpYmlieXRlcygxNiAqIHRoaXMubmV1cm9ueENvcmVzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhaW5pdW0xQ2hpcHMgaW1wbGVtZW50cyBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2hpcHM6IG51bWJlcikge1xuICAgIHRoaXMubmV1cm9ueENvcmVzID0gY2hpcHMgKiAyO1xuICAgIHRoaXMuYWNjZWxlcmF0b3JNZW1vcnkgPSBTaXplLmdpYmlieXRlcygxNiAqIHRoaXMubmV1cm9ueENvcmVzKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBJTmV1cm9ueEluc3RhbmNlVHlwZSB7XG4gIHJlYWRvbmx5IHN1cHBvcnRlZFRlbnNvclBhcmFsbGVsaXNtOiBudW1iZXJbXTtcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB2Q3B1OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1lbW9yeTogU2l6ZTtcbiAgcmVhZG9ubHkgYWNjZWxlcmF0b3JDaGlwczogSUFjY2VsZXJhdG9yQ2hpcHM7XG59XG5cbmFic3RyYWN0IGNsYXNzIE5ldXJvbnhJbnN0YW5jZVR5cGVCYXNlIGltcGxlbWVudHMgSU5ldXJvbnhJbnN0YW5jZVR5cGUge1xuICByZWFkb25seSBhY2NlbGVyYXRvckNoaXBzOiBJQWNjZWxlcmF0b3JDaGlwcztcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB2Q3B1OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1lbW9yeTogU2l6ZTtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgc3VwcG9ydGVkVGVuc29yUGFyYWxsZWxpc206IG51bWJlcltdO1xuICBjb25zdHJ1Y3Rvcihwcm9wczoge1xuICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZTtcbiAgICB2Q3B1OiBudW1iZXI7XG4gICAgbWVtb3J5OiBTaXplO1xuICAgIGFjY2VsZXJhdG9yQ2hpcHM6IElBY2NlbGVyYXRvckNoaXBzO1xuICB9KSB7XG4gICAgdGhpcy5pbnN0YW5jZVR5cGUgPSBwcm9wcy5pbnN0YW5jZVR5cGU7XG4gICAgdGhpcy52Q3B1ID0gcHJvcHMudkNwdTtcbiAgICB0aGlzLm1lbW9yeSA9IHByb3BzLm1lbW9yeTtcbiAgICB0aGlzLmFjY2VsZXJhdG9yQ2hpcHMgPSBwcm9wcy5hY2NlbGVyYXRvckNoaXBzO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGluc3RhbmNlIHR5cGUgYXMgYSBzdHJpbmdcbiAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIHR5cGUgYXMgYSBzdHJpbmdcbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlVHlwZS50b1N0cmluZygpO1xuICB9XG59XG5cbmNsYXNzIEluZmVyZW50aWEySW5zdGFuY2VUeXBlIGV4dGVuZHMgTmV1cm9ueEluc3RhbmNlVHlwZUJhc2Uge1xuICBnZXQgc3VwcG9ydGVkVGVuc29yUGFyYWxsZWxpc20oKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbMSwgMiwgNCwgOCwgMjRdLmZpbHRlcihcbiAgICAgICh0cCkgPT4gdHAgPD0gdGhpcy5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyxcbiAgICApO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByb3BzOiB7XG4gICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICAgIHZDcHU6IG51bWJlcjtcbiAgICBtZW1vcnk6IFNpemU7XG4gICAgY2hpcHM6IG51bWJlcjtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgdkNwdTogcHJvcHMudkNwdSxcbiAgICAgIG1lbW9yeTogcHJvcHMubWVtb3J5LFxuICAgICAgYWNjZWxlcmF0b3JDaGlwczogbmV3IEluZmVyZW50aWEyQ2hpcHMocHJvcHMuY2hpcHMpLFxuICAgIH0pO1xuICB9XG59XG5jbGFzcyBUcmFpbml1bTFJbnN0YW5jZVR5cGUgZXh0ZW5kcyBOZXVyb254SW5zdGFuY2VUeXBlQmFzZSB7XG4gIGdldCBzdXBwb3J0ZWRUZW5zb3JQYXJhbGxlbGlzbSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsxLCAyLCA4LCAxNiwgMzJdLmZpbHRlcihcbiAgICAgICh0cCkgPT4gdHAgPD0gdGhpcy5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyxcbiAgICApO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByb3BzOiB7XG4gICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICAgIHZDcHU6IG51bWJlcjtcbiAgICBtZW1vcnk6IFNpemU7XG4gICAgY2hpcHM6IG51bWJlcjtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgdkNwdTogcHJvcHMudkNwdSxcbiAgICAgIG1lbW9yeTogcHJvcHMubWVtb3J5LFxuICAgICAgYWNjZWxlcmF0b3JDaGlwczogbmV3IFRyYWluaXVtMUNoaXBzKHByb3BzLmNoaXBzKSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmV1cm9ueEluc3RhbmNlVHlwZSB7XG4gIC8qKlxuICAgKiBpbmYyLnhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyX1hMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBJbmZlcmVudGlhMkluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLklORjIsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFLFxuICAgICAgKSxcbiAgICAgIHZDcHU6IDQsXG4gICAgICBtZW1vcnk6IFNpemUuZ2liaWJ5dGVzKDE2KSxcbiAgICAgIGNoaXBzOiAxLFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi44eGxhcmdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElORjJfOFhMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBJbmZlcmVudGlhMkluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLklORjIsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFOCxcbiAgICAgICksXG4gICAgICB2Q3B1OiAzMixcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoMTI4KSxcbiAgICAgIGNoaXBzOiAxLFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi4yNHhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyXzI0WExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IEluZmVyZW50aWEySW5zdGFuY2VUeXBlKHtcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuSU5GMixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5YTEFSR0UyNCxcbiAgICAgICksXG4gICAgICB2Q3B1OiA5NixcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoMzg0KSxcbiAgICAgIGNoaXBzOiA2LFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi40OHhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyXzQ4WExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IEluZmVyZW50aWEySW5zdGFuY2VUeXBlKHtcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuSU5GMixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5YTEFSR0U0OCxcbiAgICAgICksXG4gICAgICB2Q3B1OiAxOTIsXG4gICAgICBtZW1vcnk6IFNpemUuZ2liaWJ5dGVzKDc2OCksXG4gICAgICBjaGlwczogMTIsXG4gICAgfSk7XG4gIC8qKlxuICAgKiB0cm4xLjJ4bGFyZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJOMV8yWExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IFRyYWluaXVtMUluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLlRSTjEsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFMixcbiAgICAgICksXG4gICAgICB2Q3B1OiA4LFxuICAgICAgbWVtb3J5OiBTaXplLmdpYmlieXRlcygzMiksXG4gICAgICBjaGlwczogMSxcbiAgICB9KTtcbiAgLyoqXG4gICAqIHRybjEuMzJ4bGFyZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJOMV8zMlhMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBUcmFpbml1bTFJbnN0YW5jZVR5cGUoe1xuICAgICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlLm9mKFxuICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UUk4xLFxuICAgICAgICBlYzIuSW5zdGFuY2VTaXplLlhMQVJHRTMyLFxuICAgICAgKSxcbiAgICAgIHZDcHU6IDEyOCxcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoNTEyKSxcbiAgICAgIGNoaXBzOiAxNixcbiAgICB9KTtcbn1cbiJdfQ==