UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

221 lines (220 loc) • 17.7 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_network_NetworkUtil = require("../network/NetworkUtil.cjs.cjs"); //#region src/entity/Attribute.ts var AttributeIds = { Absorption: "minecraft:absorption", PlayerSaturation: "minecraft:player.saturation", PlayerExhaustion: "minecraft:player.exhaustion", KnockbackResistence: "minecraft:knockback_resistance", Health: "minecraft:health", Movement: "minecraft:movement", FollowRange: "minecraft:follow_range", PlayerHunger: "minecraft:player.hunger", AttackDamage: "minecraft:attack_damage", PlayerLevel: "minecraft:player.level", PlayerExperience: "minecraft:player.experience", UnderwaterMovement: "minecraft:underwater_movement", Luck: "minecraft:luck", FallDamage: "minecraft:fall_damage", HorseJumpStrength: "minecraft:horse.jump_strength", ZombieSpawnReinforcements: "minecraft:zombie.spawn_reinforcements", LavaMovement: "minecraft:lava_movement" }; var Attribute = class Attribute { name; min; max; default; value; /** * Class used to store Attribute data. * * @param {object} data - The attribute data. * @param {string} data.name - The name of the attribute. * @param {number} data.min - The minimum value of the attribute. * @param {number} data.max - The maximum value of the attribute. * @param {number} data.def - The default value of the attribute. * @param {number} data.value - The current value of the attribute. */ constructor({ name, min, max, def, value }) { this.name = name; this.min = min; this.max = max; this.default = def; this.value = value; } networkSerialize(stream) { stream.writeFloatLE(this.min); stream.writeFloatLE(this.max); stream.writeFloatLE(this.value); stream.writeFloatLE(this.default); require_network_NetworkUtil.NetworkUtil.writeString(stream, this.name); stream.writeUnsignedVarInt(0); } static networkDeserialize(stream) { const attr = new Attribute({ min: stream.readFloatLE(), max: stream.readFloatLE(), value: stream.readFloatLE(), def: stream.readFloatLE(), name: require_network_NetworkUtil.NetworkUtil.readString(stream) }); stream.readUnsignedVarInt(); return attr; } getName() { return this.name; } getMin() { return this.min; } getMax() { return this.max; } getDefault() { return this.default; } getValue() { return this.value; } }; var MAX_FLOAT32 = 34028234663852886e22; var Attributes = class { attributes = []; /** * Returns a list of default attributes to send the first time a player spawns. */ getDefaults() { return [ new Attribute({ name: AttributeIds.Absorption, min: 0, max: 16, def: 0, value: 0 }), new Attribute({ name: AttributeIds.PlayerSaturation, min: 0, max: 20, def: 5, value: 4 }), new Attribute({ name: AttributeIds.PlayerExhaustion, min: 0, max: 20, def: 0, value: 0 }), new Attribute({ name: AttributeIds.KnockbackResistence, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.Health, min: 0, max: 20, def: 20, value: 20 }), new Attribute({ name: AttributeIds.Movement, min: 0, max: MAX_FLOAT32, def: .1, value: .1 }), new Attribute({ name: AttributeIds.FollowRange, min: 0, max: 2048, def: 16, value: 16 }), new Attribute({ name: AttributeIds.PlayerHunger, min: 0, max: 20, def: 20, value: 20 }), new Attribute({ name: AttributeIds.AttackDamage, min: 0, max: 1, def: 1, value: 1 }), new Attribute({ name: AttributeIds.PlayerLevel, min: 0, max: 24791, def: 0, value: 0 }), new Attribute({ name: AttributeIds.PlayerExperience, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.UnderwaterMovement, min: 0, max: MAX_FLOAT32, def: .02, value: .02 }), new Attribute({ name: AttributeIds.Luck, min: -1024, max: 1024, def: 0, value: 0 }), new Attribute({ name: AttributeIds.FallDamage, min: 0, max: MAX_FLOAT32, def: 1, value: 1 }), new Attribute({ name: AttributeIds.HorseJumpStrength, min: 0, max: 2, def: .7, value: .7 }), new Attribute({ name: AttributeIds.ZombieSpawnReinforcements, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.LavaMovement, min: 0, max: MAX_FLOAT32, def: .02, value: .02 }) ]; } getAttributes() { return this.attributes; } networkSerialize() {} }; //#endregion exports.Attribute = Attribute; exports.AttributeIds = AttributeIds; exports.Attributes = Attributes; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmNqcy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9BdHRyaWJ1dGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbCB9IGZyb20gJy4uL25ldHdvcmsvTmV0d29ya1V0aWwnO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlSWRzID0ge1xuICAgIEFic29ycHRpb246ICdtaW5lY3JhZnQ6YWJzb3JwdGlvbicsXG4gICAgUGxheWVyU2F0dXJhdGlvbjogJ21pbmVjcmFmdDpwbGF5ZXIuc2F0dXJhdGlvbicsXG4gICAgUGxheWVyRXhoYXVzdGlvbjogJ21pbmVjcmFmdDpwbGF5ZXIuZXhoYXVzdGlvbicsXG4gICAgS25vY2tiYWNrUmVzaXN0ZW5jZTogJ21pbmVjcmFmdDprbm9ja2JhY2tfcmVzaXN0YW5jZScsXG4gICAgSGVhbHRoOiAnbWluZWNyYWZ0OmhlYWx0aCcsXG4gICAgTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6bW92ZW1lbnQnLFxuICAgIEZvbGxvd1JhbmdlOiAnbWluZWNyYWZ0OmZvbGxvd19yYW5nZScsXG4gICAgUGxheWVySHVuZ2VyOiAnbWluZWNyYWZ0OnBsYXllci5odW5nZXInLFxuICAgIEF0dGFja0RhbWFnZTogJ21pbmVjcmFmdDphdHRhY2tfZGFtYWdlJyxcbiAgICBQbGF5ZXJMZXZlbDogJ21pbmVjcmFmdDpwbGF5ZXIubGV2ZWwnLFxuICAgIFBsYXllckV4cGVyaWVuY2U6ICdtaW5lY3JhZnQ6cGxheWVyLmV4cGVyaWVuY2UnLFxuICAgIFVuZGVyd2F0ZXJNb3ZlbWVudDogJ21pbmVjcmFmdDp1bmRlcndhdGVyX21vdmVtZW50JyxcbiAgICBMdWNrOiAnbWluZWNyYWZ0Omx1Y2snLFxuICAgIEZhbGxEYW1hZ2U6ICdtaW5lY3JhZnQ6ZmFsbF9kYW1hZ2UnLFxuICAgIEhvcnNlSnVtcFN0cmVuZ3RoOiAnbWluZWNyYWZ0OmhvcnNlLmp1bXBfc3RyZW5ndGgnLFxuICAgIFpvbWJpZVNwYXduUmVpbmZvcmNlbWVudHM6ICdtaW5lY3JhZnQ6em9tYmllLnNwYXduX3JlaW5mb3JjZW1lbnRzJyxcbiAgICBMYXZhTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6bGF2YV9tb3ZlbWVudCdcbn07XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWluOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBDbGFzcyB1c2VkIHRvIHN0b3JlIEF0dHJpYnV0ZSBkYXRhLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgLSBUaGUgYXR0cmlidXRlIGRhdGEuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEubmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGEubWluIC0gVGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YS5tYXggLSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhLmRlZiAtIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGEudmFsdWUgLSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBkZWYsXG4gICAgICAgIHZhbHVlXG4gICAgfToge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIG1pbjogbnVtYmVyO1xuICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgZGVmOiBudW1iZXI7XG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfSkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMuZGVmYXVsdCA9IGRlZjtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXR3b3JrU2VyaWFsaXplKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogdm9pZCB7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5taW4pO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWF4KTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLnZhbHVlKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLmRlZmF1bHQpO1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyhzdHJlYW0sIHRoaXMubmFtZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZVVuc2lnbmVkVmFySW50KDApOyAvLyBUT0RPOiBtb2RpZmllciBjb3VudFxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbmV0d29ya0Rlc2VyaWFsaXplKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogQXR0cmlidXRlIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgbWluOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG1heDogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICB2YWx1ZTogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBkZWY6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgbmFtZTogTmV0d29ya1V0aWwucmVhZFN0cmluZyhzdHJlYW0pXG4gICAgICAgIH0pO1xuICAgICAgICBzdHJlYW0ucmVhZFVuc2lnbmVkVmFySW50KCk7IC8vIFRPRE86IHNraXAgZm9yIG5vd1xuICAgICAgICByZXR1cm4gYXR0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cblxuY29uc3QgTUFYX0ZMT0FUMzIgPSAzLjQwMjgyMzQ2NjM4NTI4ODZlMzg7XG5leHBvcnQgY2xhc3MgQXR0cmlidXRlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzIHRvIHNlbmQgdGhlIGZpcnN0IHRpbWUgYSBwbGF5ZXIgc3Bhd25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWZhdWx0cygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5BYnNvcnB0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDE2LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyU2F0dXJhdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4aGF1c3Rpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Lbm9ja2JhY2tSZXNpc3RlbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5IZWFsdGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLk1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4xLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkZvbGxvd1JhbmdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwNDgsXG4gICAgICAgICAgICAgICAgZGVmOiAxNixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMTZcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckh1bmdlcixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDIwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAyMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQXR0YWNrRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAxLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJMZXZlbCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyNDc5MSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4cGVyaWVuY2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlVuZGVyd2F0ZXJNb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMDIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuMDJcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkx1Y2ssXG4gICAgICAgICAgICAgICAgbWluOiAtMTAyNCxcbiAgICAgICAgICAgICAgICBtYXg6IDEwMjQsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5GYWxsRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSG9yc2VKdW1wU3RyZW5ndGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuNyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC43XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5ab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MYXZhTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZSgpOiB2b2lkIHt9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxJQUFhLGVBQWU7Q0FDeEIsWUFBWTtDQUNaLGtCQUFrQjtD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