UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

217 lines (216 loc) • 17.5 kB
import { NetworkUtil } from "../network/NetworkUtil.es.js"; //#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); 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: 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 export { Attribute, AttributeIds, Attributes }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvQXR0cmlidXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWwgfSBmcm9tICcuLi9uZXR3b3JrL05ldHdvcmtVdGlsJztcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0ZUlkcyA9IHtcbiAgICBBYnNvcnB0aW9uOiAnbWluZWNyYWZ0OmFic29ycHRpb24nLFxuICAgIFBsYXllclNhdHVyYXRpb246ICdtaW5lY3JhZnQ6cGxheWVyLnNhdHVyYXRpb24nLFxuICAgIFBsYXllckV4aGF1c3Rpb246ICdtaW5lY3JhZnQ6cGxheWVyLmV4aGF1c3Rpb24nLFxuICAgIEtub2NrYmFja1Jlc2lzdGVuY2U6ICdtaW5lY3JhZnQ6a25vY2tiYWNrX3Jlc2lzdGFuY2UnLFxuICAgIEhlYWx0aDogJ21pbmVjcmFmdDpoZWFsdGgnLFxuICAgIE1vdmVtZW50OiAnbWluZWNyYWZ0Om1vdmVtZW50JyxcbiAgICBGb2xsb3dSYW5nZTogJ21pbmVjcmFmdDpmb2xsb3dfcmFuZ2UnLFxuICAgIFBsYXllckh1bmdlcjogJ21pbmVjcmFmdDpwbGF5ZXIuaHVuZ2VyJyxcbiAgICBBdHRhY2tEYW1hZ2U6ICdtaW5lY3JhZnQ6YXR0YWNrX2RhbWFnZScsXG4gICAgUGxheWVyTGV2ZWw6ICdtaW5lY3JhZnQ6cGxheWVyLmxldmVsJyxcbiAgICBQbGF5ZXJFeHBlcmllbmNlOiAnbWluZWNyYWZ0OnBsYXllci5leHBlcmllbmNlJyxcbiAgICBVbmRlcndhdGVyTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6dW5kZXJ3YXRlcl9tb3ZlbWVudCcsXG4gICAgTHVjazogJ21pbmVjcmFmdDpsdWNrJyxcbiAgICBGYWxsRGFtYWdlOiAnbWluZWNyYWZ0OmZhbGxfZGFtYWdlJyxcbiAgICBIb3JzZUp1bXBTdHJlbmd0aDogJ21pbmVjcmFmdDpob3JzZS5qdW1wX3N0cmVuZ3RoJyxcbiAgICBab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzOiAnbWluZWNyYWZ0OnpvbWJpZS5zcGF3bl9yZWluZm9yY2VtZW50cycsXG4gICAgTGF2YU1vdmVtZW50OiAnbWluZWNyYWZ0OmxhdmFfbW92ZW1lbnQnXG59O1xuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbjogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgdXNlZCB0byBzdG9yZSBBdHRyaWJ1dGUgZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIC0gVGhlIGF0dHJpYnV0ZSBkYXRhLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhLm1pbiAtIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGEubWF4IC0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YS5kZWYgLSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhLnZhbHVlIC0gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgICAgICBuYW1lLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgZGVmLFxuICAgICAgICB2YWx1ZVxuICAgIH06IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBtaW46IG51bWJlcjtcbiAgICAgICAgbWF4OiBudW1iZXI7XG4gICAgICAgIGRlZjogbnVtYmVyO1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgIHRoaXMubWF4ID0gbWF4O1xuICAgICAgICB0aGlzLmRlZmF1bHQgPSBkZWY7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IHZvaWQge1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWluKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLm1heCk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy52YWx1ZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5kZWZhdWx0KTtcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcoc3RyZWFtLCB0aGlzLm5hbWUpO1xuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludCgwKTsgLy8gVE9ETzogbW9kaWZpZXIgY291bnRcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5ldHdvcmtEZXNlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IEF0dHJpYnV0ZSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgIG1pbjogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBtYXg6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgdmFsdWU6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgZGVmOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG5hbWU6IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcoc3RyZWFtKVxuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpOyAvLyBUT0RPOiBza2lwIGZvciBub3dcbiAgICAgICAgcmV0dXJuIGF0dHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbmNvbnN0IE1BWF9GTE9BVDMyID0gMy40MDI4MjM0NjYzODUyODg2ZTM4O1xuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGRlZmF1bHQgYXR0cmlidXRlcyB0byBzZW5kIHRoZSBmaXJzdCB0aW1lIGEgcGxheWVyIHNwYXducy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdHMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQWJzb3JwdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxNixcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllclNhdHVyYXRpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiA1LFxuICAgICAgICAgICAgICAgIHZhbHVlOiA0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeGhhdXN0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuS25vY2tiYWNrUmVzaXN0ZW5jZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSGVhbHRoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMjAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDIwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Nb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4xXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Gb2xsb3dSYW5nZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMDQ4LFxuICAgICAgICAgICAgICAgIGRlZjogMTYsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDE2XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJIdW5nZXIsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkF0dGFja0RhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyTGV2ZWwsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjQ3OTEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeHBlcmllbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5VbmRlcndhdGVyTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MdWNrLFxuICAgICAgICAgICAgICAgIG1pbjogLTEwMjQsXG4gICAgICAgICAgICAgICAgbWF4OiAxMDI0LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuRmFsbERhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkhvcnNlSnVtcFN0cmVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuN1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuWm9tYmllU3Bhd25SZWluZm9yY2VtZW50cyxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuTGF2YU1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4wMixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4wMlxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5ldHdvcmtTZXJpYWxpemUoKTogdm9pZCB7fVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUdBLElBQWEsZUFBZTtDQUN4QixZQUFZO0NBQ1osa0JBQWtCO0NBQ2xC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