@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
1,480 lines • 84.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PermissionManager__factory = void 0;
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
const ethers_1 = require("ethers");
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "string",
name: "role",
type: "string",
},
{
indexed: false,
internalType: "string",
name: "resource",
type: "string",
},
{
indexed: false,
internalType: "string[]",
name: "permissionsToAdd",
type: "string[]",
},
{
indexed: false,
internalType: "bool",
name: "allowed",
type: "bool",
},
],
name: "AddedPermissions",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "who",
type: "address",
},
{
indexed: false,
internalType: "string[]",
name: "groupsToAddTo",
type: "string[]",
},
],
name: "AddedToGroups",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "previousAdmin",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "newAdmin",
type: "address",
},
],
name: "AdminChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "beacon",
type: "address",
},
],
name: "BeaconUpgraded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "string",
name: "groupTo",
type: "string",
},
{
indexed: false,
internalType: "string[]",
name: "rolesToGrant",
type: "string[]",
},
],
name: "GrantedGroupRoles",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "string[]",
name: "rolesToGrant",
type: "string[]",
},
],
name: "GrantedRoles",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint8",
name: "version",
type: "uint8",
},
],
name: "Initialized",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "target",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "linkedMemberStorage",
type: "address",
},
],
name: "LinkedStorageToVetoGroup",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "who",
type: "address",
},
{
indexed: false,
internalType: "string[]",
name: "groupsToRemoveFrom",
type: "string[]",
},
],
name: "RemovedFromGroups",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "string",
name: "role",
type: "string",
},
{
indexed: false,
internalType: "string",
name: "resource",
type: "string",
},
{
indexed: false,
internalType: "string[]",
name: "permissionsToRemove",
type: "string[]",
},
{
indexed: false,
internalType: "bool",
name: "allowed",
type: "bool",
},
],
name: "RemovedPermissions",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "string",
name: "groupFrom",
type: "string",
},
{
indexed: false,
internalType: "string[]",
name: "rolesToRevoke",
type: "string[]",
},
],
name: "RevokedGroupRoles",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: false,
internalType: "string[]",
name: "rolesToRevoke",
type: "string[]",
},
],
name: "RevokedRoles",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "bool",
name: "defaultGroupEnabled",
type: "bool",
},
],
name: "ToggledDefaultGroup",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "implementation",
type: "address",
},
],
name: "Upgraded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "target",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "linkedMemberStorage",
type: "address",
},
],
name: "VetoGroupAdded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "target",
type: "address",
},
],
name: "VetoGroupRemoved",
type: "event",
},
{
inputs: [],
name: "ALL_PERMISSION",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "ALL_RESOURCE",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "CREATE_PERMISSION",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "DELETE_PERMISSION",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "MASTER_ROLE",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "PERMISSION_MANAGER_RESOURCE",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "RBAC_RESOURCE",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "READ_PERMISSION",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "UPDATE_PERMISSION",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "contract DAORegistry",
name: "daoRegistry_",
type: "address",
},
{
internalType: "address",
name: "master_",
type: "address",
},
{
internalType: "string",
name: "resource_",
type: "string",
},
],
name: "__PermissionManager_init",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "member_",
type: "address",
},
{
internalType: "string[]",
name: "groups_",
type: "string[]",
},
],
name: "addMemberToGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "role_",
type: "string",
},
{
components: [
{
internalType: "string",
name: "resource",
type: "string",
},
{
internalType: "string[]",
name: "permissions",
type: "string[]",
},
],
internalType: "struct IRBAC.ResourceWithPermissions[]",
name: "permissionsToAdd_",
type: "tuple[]",
},
{
internalType: "bool",
name: "allowed_",
type: "bool",
},
],
name: "addPermissionsToRole",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "who_",
type: "address",
},
{
internalType: "string[]",
name: "groupsToAddTo_",
type: "string[]",
},
],
name: "addUserToGroups",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
{
internalType: "contract DAOMemberStorage",
name: "linkedMemberStorage_",
type: "address",
},
],
name: "addVetoGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "target",
type: "address",
},
{
internalType: "contract DAOMemberStorage",
name: "linkedMemberStorage",
type: "address",
},
],
internalType: "struct IPermissionManager.VetoGroup[]",
name: "vetoGroups_",
type: "tuple[]",
},
],
name: "addVetoGroups",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account_",
type: "address",
},
{
internalType: "string",
name: "permission_",
type: "string",
},
],
name: "checkPermission",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "moduleName_",
type: "string",
},
],
name: "confExternalModule",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "string",
name: "moduleName",
type: "string",
},
{
internalType: "address",
name: "moduleAddress",
type: "address",
},
{
internalType: "string",
name: "connectorRoleName",
type: "string",
},
{
internalType: "enum ModuleAdditionType",
name: "moduleType",
type: "uint8",
},
{
components: [
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "bytes",
name: "value",
type: "bytes",
},
{
internalType: "enum ParameterType",
name: "solidityType",
type: "uint8",
},
],
internalType: "struct Parameter[]",
name: "constitutionParameters",
type: "tuple[]",
},
{
internalType: "string",
name: "votingName",
type: "string",
},
{
components: [
{
components: [
{
internalType: "string",
name: "votingSituationName",
type: "string",
},
{
components: [
{
internalType: "uint256",
name: "votingPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "vetoPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "proposalExecutionPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredQuorum",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredMajority",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredVetoQuorum",
type: "uint256",
},
{
internalType: "uint256",
name: "votingType",
type: "uint256",
},
{
internalType: "string",
name: "votingTarget",
type: "string",
},
{
internalType: "uint256",
name: "votingMinAmount",
type: "uint256",
},
],
internalType: "struct IDAOVoting.DAOVotingValues",
name: "votingValues",
type: "tuple",
},
],
internalType: "struct IDAOVoting.InitialSituation",
name: "initialSituation",
type: "tuple",
},
{
internalType: "string",
name: "externalLink",
type: "string",
},
],
internalType: "struct IDAOVoting.ExtendedSituation",
name: "situation",
type: "tuple",
},
{
internalType: "address",
name: "vetoGroupSource",
type: "address",
},
{
internalType: "bytes",
name: "initCallData",
type: "bytes",
},
{
internalType: "bytes32",
name: "salt",
type: "bytes32",
},
],
internalType: "struct DAOModuleContractorParameters",
name: "daoModuleParams_",
type: "tuple",
},
],
name: "deployModuleViaFactory",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "string",
name: "panelName",
type: "string",
},
{
internalType: "address",
name: "votingToken",
type: "address",
},
{
components: [
{
components: [
{
internalType: "string",
name: "votingSituationName",
type: "string",
},
{
components: [
{
internalType: "uint256",
name: "votingPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "vetoPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "proposalExecutionPeriod",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredQuorum",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredMajority",
type: "uint256",
},
{
internalType: "uint256",
name: "requiredVetoQuorum",
type: "uint256",
},
{
internalType: "uint256",
name: "votingType",
type: "uint256",
},
{
internalType: "string",
name: "votingTarget",
type: "string",
},
{
internalType: "uint256",
name: "votingMinAmount",
type: "uint256",
},
],
internalType: "struct IDAOVoting.DAOVotingValues",
name: "votingValues",
type: "tuple",
},
],
internalType: "struct IDAOVoting.InitialSituation",
name: "initialSituation",
type: "tuple",
},
{
internalType: "string",
name: "externalLink",
type: "string",
},
],
internalType: "struct IDAOVoting.ExtendedSituation[]",
name: "situations",
type: "tuple[]",
},
{
components: [
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "bytes",
name: "value",
type: "bytes",
},
{
internalType: "enum ParameterType",
name: "solidityType",
type: "uint8",
},
],
internalType: "struct Parameter[]",
name: "initialParameters",
type: "tuple[]",
},
{
internalType: "address[]",
name: "initialMembers",
type: "address[]",
},
],
internalType: "struct DAOPanelConstructorParameters",
name: "daoPanelParams_",
type: "tuple",
},
],
name: "deployPanelViaFactory",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "getDAORegistry",
outputs: [
{
internalType: "contract DAORegistry",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getDefaultGroupEnabled",
outputs: [
{
internalType: "bool",
name: "defaultGroupEnabled_",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getExistingVetoGroupTargets",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "group_",
type: "string",
},
],
name: "getGroupRoles",
outputs: [
{
internalType: "string[]",
name: "roles_",
type: "string[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getResource",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "role_",
type: "string",
},
],
name: "getRolePermissions",
outputs: [
{
components: [
{
internalType: "string",
name: "resource",
type: "string",
},
{
internalType: "string[]",
name: "permissions",
type: "string[]",
},
],
internalType: "struct IRBAC.ResourceWithPermissions[]",
name: "allowed_",
type: "tuple[]",
},
{
components: [
{
internalType: "string",
name: "resource",
type: "string",
},
{
internalType: "string[]",
name: "permissions",
type: "string[]",
},
],
internalType: "struct IRBAC.ResourceWithPermissions[]",
name: "disallowed_",
type: "tuple[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "who_",
type: "address",
},
],
name: "getUserGroups",
outputs: [
{
internalType: "string[]",
name: "groups_",
type: "string[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "who_",
type: "address",
},
],
name: "getUserRoles",
outputs: [
{
internalType: "string[]",
name: "roles_",
type: "string[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
],
name: "getVetoGroupInfo",
outputs: [
{
components: [
{
internalType: "address",
name: "target",
type: "address",
},
{
internalType: "contract DAOMemberStorage",
name: "linkedMemberStorage",
type: "address",
},
],
internalType: "struct IPermissionManager.VetoGroup",
name: "",
type: "tuple",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
],
name: "getVetoGroupMembers",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
],
name: "getVetoMembersCount",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "groupTo_",
type: "string",
},
{
internalType: "string[]",
name: "rolesToGrant_",
type: "string[]",
},
],
name: "grantGroupRoles",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to_",
type: "address",
},
{
internalType: "string[]",
name: "rolesToGrant_",
type: "string[]",
},
],
name: "grantRoles",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "who_",
type: "address",
},
{
internalType: "string",
name: "resource_",
type: "string",
},
{
internalType: "string",
name: "permission_",
type: "string",
},
],
name: "hasPermission",
outputs: [
{
internalType: "bool",
name: "isAllowed_",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "implementation",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
{
internalType: "address",
name: "member_",
type: "address",
},
],
name: "isUserInVetoGroup",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
],
name: "isVetoGroupExists",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
{
internalType: "contract DAOMemberStorage",
name: "linkedMemberStorage_",
type: "address",
},
],
name: "linkStorageToVetoGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes[]",
name: "data",
type: "bytes[]",
},
],
name: "multicall",
outputs: [
{
internalType: "bytes[]",
name: "results",
type: "bytes[]",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "proxiableUUID",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "member_",
type: "address",
},
{
internalType: "string[]",
name: "groups_",
type: "string[]",
},
],
name: "removeMemberFromGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "role_",
type: "string",
},
{
components: [
{
internalType: "string",
name: "resource",
type: "string",
},
{
internalType: "string[]",
name: "permissions",
type: "string[]",
},
],
internalType: "struct IRBAC.ResourceWithPermissions[]",
name: "permissionsToRemove_",
type: "tuple[]",
},
{
internalType: "bool",
name: "allowed_",
type: "bool",
},
],
name: "removePermissionsFromRole",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "who_",
type: "address",
},
{
internalType: "string[]",
name: "groupsToRemoveFrom_",
type: "string[]",
},
],
name: "removeUserFromGroups",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target_",
type: "address",
},
],
name: "removeVetoGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "groupFrom_",
type: "string",
},
{
internalType: "string[]",
name: "rolesToRevoke_",
type: "string[]",
},
],
name: "revokeGroupRoles",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "from_",
type: "address",
},
{
internalType: "string[]",
name: "rolesToRevoke_",
type: "string[]",
},
],
name: "revokeRoles",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "contract DAORegistry",
name: "daoRegistry_",
type: "address",
},
],
name: "setDAORegistry",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes4",
name: "interfaceId",
type: "bytes4",
},
],
name: "supportsInterface",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "toggleDefaultGroup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "newImplementation",
type: "address",
},
],
name: "upgradeTo",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "newImplementation",
type: "address",
},
{
internalType: "bytes",
name: "data",
type: "bytes",
},
],
name: "upgradeToAndCall",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [],
name: "version",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
];
const _bytecode = "0x60a080604052346100315730608052615080908161003782396080518181816113d9015281816118db01526119a50152f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80622f5bc01461033c57806301ffc9a71461033757806303bc0b3e146103325780630423b79f1461032d57806306a36aee146103285780630b441407146103235780630c69c28a1461031e5780630ead6f1e146103195780630fe908ec14610314578063141c98951461030f57806315ddcefc1461030a57806321a9ec211461030557806330cae1681461030057806331dbd475146102835780633659cfe6146102fb57806337ff630d146102f65780633da04e4a146102f15780634a9e12c51461024c5780634e63adc1146102ec5780634f0d84e3146102e75780634f1ef286146102e2578063524e62b2146102dd57806352d1902d146102d857806354fd4d50146102d35780635c60da1b146102ce5780636cb6f26c146102c9578063733352b3146102c457806375e025e7146102bf5780637951c6da146102ba5780637cb9cdfa146102b557806381c5492b146102b05780638412ccd8146102ab5780638e5cc2b7146102a657806396b5f936146102a15780639a9aa8d41461029c578063a4fc6c2314610297578063ac9650d814610292578063b3e657fb1461028d578063b832a5a214610288578063bb65dc8314610283578063d41de1271461027e578063d8ad4e1c14610279578063dc22486314610274578063e136fea51461026f578063e876a9541461026a578063ec183fc614610265578063ee2f6ce514610260578063f1c7d41b1461025b578063fc981a3614610256578063fcddfd4a146102515763ff846fb91461024c57600080fd5b6116fe565b612640565b612618565b6125bf565b612589565b6123f0565b6122d2565b6122ad565b612291565b61221e565b6121c0565b611393565b6121a4565b612166565b6120df565b612059565b612030565b611f74565b611f5b565b611f32565b611ea3565b611d55565b611cf3565b611bcf565b611bb3565b611ad3565b611a9d565b611a57565b611992565b611963565b611897565b611869565b611727565b6116a5565b611607565b6113af565b6110e0565b610f6c565b610f2e565b610e9d565b610e7b565b610d94565b610ca1565b61099c565b610908565b610871565b6107e9565b610726565b6105f5565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761037257604052565b610341565b606081019081106001600160401b0382111761037257604052565b6001600160401b03811161037257604052565b90601f801991011681019081106001600160401b0382111761037257604052565b6040519061012082018281106001600160401b0382111761037257604052565b6040519060a082018281106001600160401b0382111761037257604052565b6040519061014082018281106001600160401b0382111761037257604052565b6001600160401b03811161037257601f01601f191660200190565b81601f820112156104875780359061045782610425565b9261046560405194856103a5565b8284526020838301011161048757816000926020809301838601378301015290565b600080fd5b602060031982011261048757600435906001600160401b038211610487576104b691600401610440565b90565b60005b8381106104cc5750506000910152565b81810151838201526020016104bc565b906020916104f5815180928185528580860191016104b9565b601f01601f1916010190565b9080825190818152602080910160059082808560051b8701019601946000926000935b86851061053657505050505050505090565b909192939495969786601f19808684030187528a518261055f60408351908088528701906104dc565b91015193838183039101528351808252838201918480838a1b83010196019387905b8382106105a457505050505050806001929a019501950193969594929190610524565b919395806105bf898588600196989a9c03018a528a516104dc565b9801960192018c9594929391610581565b90916105e76104b693604084526040840190610501565b916020818403910152610501565b34610487576106033661048c565b61061f61060f82612669565b6001600052602052604060002090565b61063a61062b83612669565b60008052602052604060002090565b9061065361062b61064d61060f8661268f565b9461268f565b9061065e8154612727565b916106698454612727565b9060005b84518110156106c1578061068360019286613d4b565b61068d828861279d565b51526106ac6106a7896106a0848a61279d565b5151612701565b613d58565b60206106b8838961279d565b5101520161066d565b5091509260005b845181101561071057806106de60019284613d4b565b6106e8828861279d565b51526106fb6106a7856106a0848a61279d565b6020610707838961279d565b510152016106c8565b505050610722604051928392836105d0565b0390f35b346104875760203660031901126104875760043563ffffffff60e01b81168091036104875761072290634efd6d0960e01b81149081156107bc575b81156107ab575b811561079a575b8115610789575b5060405190151581529081906020820190565b6301ffc9a760e01b14905038610776565b6363c8929f60e01b8114915061076f565b630cbef19360e41b81149150610768565b63139c0b2360e31b81149150610761565b600091031261048757565b9060206104b69281815201906104dc565b346104875760003660031901126104875761072260405161080981610357565b60048152631491505160e21b60208201526040519182916020835260208301906104dc565b6001600160a01b0381160361048757565b359061084a8261082e565b565b6040906003190112610487576004356108648161082e565b906024356104b68161082e565b34610487576108986108823661084c565b9061089361088e6127b6565b613dad565b613ea8565b005b90808251908181526020809101926020808460051b8301019501936000915b8483106108c95750505050505090565b90919293949584806108e7600193601f198682030187528a516104dc565b98019301930191949392906108b9565b9060206104b692818152019061089a565b3461048757602080600319360112610487576004356109268161082e565b6001600160a01b031660009081526003602052604090208054610948816109bc565b9161095660405193846103a5565b81835260208301906000526020600020936000915b838310610980576040518061072287826108f7565b600182819261098e896112f0565b81520196019201919461096b565b346104875760003660031901126104875760206004541515604051908152f35b6001600160401b0381116103725760051b60200190565b91909160408082850312610487578051916109ed83610357565b829481356001600160401b039081811161048757830193808584031261048757805190610a1982610357565b85358381116104875784610a2e918801610440565b8252602095868101359084821161048757016101208186031261048757610a536103c6565b918135835287820135888401528082013590830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e08101358481116104875785610aa8918301610440565b60e083015261010080910135908201528582015285528383013590811161048757610ad39201610440565b910152565b81601f8201121561048757803591602091610af2846109bc565b93610b0060405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610b2b5750505050505090565b82356001600160401b038111610487578691610b4c848480948901016109d3565b815201920191610b1b565b9080601f8301121561048757813591602091610b72846109bc565b93604091610b8360405196876103a5565b818652848087019260051b8501019381851161048757858101925b858410610baf575050505050505090565b6001600160401b0390843582811161048757830160609081601f19828803011261048757875193610bdf85610377565b8a82013581811161048757878c610bf892850101610440565b85528882013590811161048757868b610c1392840101610440565b8a850152013590600682101561048757828993928885940152815201930192610b9e565b9080601f83011215610487576020908235610c51816109bc565b93610c5f60405195866103a5565b81855260208086019260051b82010192831161048757602001905b828210610c88575050505090565b8380918335610c968161082e565b815201910190610c7a565b3461048757600319602036820112610487576004908135906001600160401b03908183116104875760a090833603011261048757610cdd6103e6565b918084013582811161048757610cf890853691840101610440565b8352610d066024820161083f565b6020840152604481013582811161048757610d2690853691840101610ad8565b6040840152606481013582811161048757610d4690853691840101610b57565b606084015260848101359182116104875761089893610d689236920101610c37565b6080820152612802565b60405190610d7f82610357565b600682526555504441544560d01b6020830152565b3461048757600036600319011261048757610722610db0610d72565b6040519182916020835260208301906104dc565b81601f8201121561048757803591602091610dde846109bc565b93610dec60405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610e175750505050505090565b82356001600160401b038111610487578691610e3884848094890101610440565b815201920191610e07565b90604060031983011261048757600435610e5c8161082e565b91602435906001600160401b038211610487576104b691600401610dc4565b3461048757610898610e8c36610e43565b90610e9861088e612b59565b61422b565b34610487576020366003190112610487576000600435610ebc