{
  "_format": "hh-sol-artifact-1",
  "contractName": "X2EarnRewardsPool",
  "sourceName": "contracts/X2EarnRewardsPool.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "AppPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "AppUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        }
      ],
      "name": "NewDeposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "lowLevelData",
          "type": "bytes"
        }
      ],
      "name": "RegisterActionFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "proof",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "distributor",
          "type": "address"
        }
      ],
      "name": "RewardDistributed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "metadata",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "distributor",
          "type": "address"
        }
      ],
      "name": "RewardMetadata",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enable",
          "type": "bool"
        }
      ],
      "name": "RewardsPoolBalanceEnabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "availableFunds",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rewardsPoolBalance",
          "type": "uint256"
        }
      ],
      "name": "RewardsPoolBalanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "teamWallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "withdrawer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "TeamWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "CONTRACTS_ADDRESS_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "IMPACT_KEY_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "newKey",
          "type": "string"
        }
      ],
      "name": "addImpactKey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "availableFunds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "b3tr",
      "outputs": [
        {
          "internalType": "contract IB3TR",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "proofTypes",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "proofValues",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "impactCodes",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "impactValues",
          "type": "uint256[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "buildProof",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "decreaseRewardsPoolBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "distributeReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "proof",
          "type": "string"
        }
      ],
      "name": "distributeRewardDeprecated",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "actionRound",
          "type": "uint256"
        }
      ],
      "name": "distributeRewardForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "proofTypes",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "proofValues",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "impactCodes",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "impactValues",
          "type": "uint256[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "distributeRewardWithProof",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "proofTypes",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "proofValues",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "impactCodes",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "impactValues",
          "type": "uint256[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "metadata",
          "type": "string"
        }
      ],
      "name": "distributeRewardWithProofAndMetadata",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "proofTypes",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "proofValues",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "impactCodes",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "impactValues",
          "type": "uint256[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "metadata",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "actionRound",
          "type": "uint256"
        }
      ],
      "name": "distributeRewardWithProofAndMetadataForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "proofTypes",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "proofValues",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "impactCodes",
          "type": "string[]"
        },
        {
          "internalType": "uint256[]",
          "name": "impactValues",
          "type": "uint256[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "actionRound",
          "type": "uint256"
        }
      ],
      "name": "distributeRewardWithProofForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "enableRewardsPoolForNewApp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllowedImpactKeys",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "increaseRewardsPoolBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_contractsManagerAdmin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_upgrader",
          "type": "address"
        },
        {
          "internalType": "contract IB3TR",
          "name": "_b3tr",
          "type": "address"
        },
        {
          "internalType": "contract IX2EarnApps",
          "name": "_x2EarnApps",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_impactKeyManager",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "_initialImpactKeys",
          "type": "string[]"
        }
      ],
      "name": "initializeV2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_veBetterPassport",
          "type": "address"
        }
      ],
      "name": "initializeV3",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "isDistributionPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "isRewardsPoolEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "pauseDistribution",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "keyToRemove",
          "type": "string"
        }
      ],
      "name": "removeImpactKey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "rewardsPoolBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IVeBetterPassport",
          "name": "_veBetterPassport",
          "type": "address"
        }
      ],
      "name": "setVeBetterPassport",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IX2EarnApps",
          "name": "_x2EarnApps",
          "type": "address"
        }
      ],
      "name": "setX2EarnApps",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IXAllocationVotingGovernor",
          "name": "_xAllocationVoting",
          "type": "address"
        }
      ],
      "name": "setXAllocationVoting",
      "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": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "enable",
          "type": "bool"
        }
      ],
      "name": "toggleRewardsPoolBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "totalBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "unpauseDistribution",
      "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": "veBetterPassport",
      "outputs": [
        {
          "internalType": "contract IVeBetterPassport",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "x2EarnApps",
      "outputs": [
        {
          "internalType": "contract IX2EarnApps",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615cd76200010460003960008181613dbf01528181613de80152613f300152615cd76000f3fe60806040526004361061023c5760003560e01c806250ea6f146102e957806301ffc9a7146103145780630eb11eb8146103445780631459457a14610366578063150b7a02146103865780631a25071f146103bf578063248a9ca3146103df5780632a308afa1461040d5780632f2ff15d1461042d5780633101cfcb1461044d57806333653f5d1461046d57806336568abe14610482578063389caa86146104a25780633d47fe94146104c257806340a6fc0b146104e25780634879ed08146105025780634f1ef2861461052f5780634fd7ff4d1461054257806352d1902d1461056257806354fd4d5014610577578063582a486a146105a157806360dbdd08146105b657806369933c78146105d65780636b2c1bb8146105f65780636d63ecab146106165780637b9245321461063657806389bcfa31146106565780638a7793b1146106765780638e023afe1461069657806391d14854146106b6578063952f2133146106d65780639aaaa380146106f85780639cb6454f14610718578063a217fddf1461073a578063a21d5eac1461074f578063ad0f96b11461076f578063ad3cb1cc1461078f578063ae630ec8146107c0578063b3c93dab146107e2578063b51fc44514610802578063b81ddb2e14610822578063bc197c8114610842578063c9630cb014610862578063cfe706b314610882578063d547741f146108a2578063f23a6e61146108c2578063f2744334146108e2578063f72c0d8b14610902578063f7335f1114610924578063fdbfad9b1461094457610294565b366102945760405162461bcd60e51b815260206004820152602f6024820152600080516020615c8283398151915260448201526e081b9bdd081858d8d95c1d08159155608a1b60648201526084015b60405180910390fd5b60405162461bcd60e51b81526020600482015260366024820152600080516020615c82833981519152604482015275206e6f74206163636570742063616c6c732f6461746160501b606482015260840161028b565b3480156102f557600080fd5b506102fe610964565b60405161030b9190614557565b60405180910390f35b34801561032057600080fd5b5061033461032f36600461456b565b610982565b604051901515815260200161030b565b34801561035057600080fd5b5061036461035f36600461478d565b6109b9565b005b34801561037257600080fd5b506103646103813660046148a7565b6109eb565b34801561039257600080fd5b506103a66103a1366004614918565b610d48565b6040516001600160e01b0319909116815260200161030b565b3480156103cb57600080fd5b506103646103da366004614983565b610da3565b3480156103eb57600080fd5b506103ff6103fa366004614983565b610f15565b60405190815260200161030b565b34801561041957600080fd5b5061036461042836600461499c565b610f35565b34801561043957600080fd5b50610364610448366004614ac1565b610f5d565b34801561045957600080fd5b50610364610468366004614af1565b610f7f565b34801561047957600080fd5b506102fe611072565b34801561048e57600080fd5b5061036461049d366004614ac1565b611090565b3480156104ae57600080fd5b506103646104bd366004614b0e565b6110c8565b3480156104ce57600080fd5b506103646104dd366004614af1565b6112b4565b3480156104ee57600080fd5b506103646104fd366004614af1565b6113e5565b34801561050e57600080fd5b5061052261051d366004614b5d565b611453565b60405161030b9190614c7e565b61036461053d366004614c91565b6115ab565b34801561054e57600080fd5b5061036461055d366004614cd6565b6115ca565b34801561056e57600080fd5b506103ff611834565b34801561058357600080fd5b506040805180820190915260018152600760fb1b6020820152610522565b3480156105ad57600080fd5b506102fe611852565b3480156105c257600080fd5b506103ff6105d1366004614983565b61186d565b3480156105e257600080fd5b506103646105f1366004614cf8565b61188d565b34801561060257600080fd5b50610364610611366004614d42565b6118d4565b34801561062257600080fd5b50610364610631366004614983565b6118f0565b34801561064257600080fd5b50610364610651366004614e41565b611ac1565b34801561066257600080fd5b50610364610671366004614f36565b611ae6565b34801561068257600080fd5b50610334610691366004614983565b611b47565b3480156106a257600080fd5b506103646106b1366004614cd6565b611b6a565b3480156106c257600080fd5b506103346106d1366004614ac1565b611d76565b3480156106e257600080fd5b506103ff600080516020615c0283398151915281565b34801561070457600080fd5b50610364610713366004614f80565b611dac565b34801561072457600080fd5b506103ff600080516020615be283398151915281565b34801561074657600080fd5b506103ff600081565b34801561075b57600080fd5b5061036461076a366004614983565b612019565b34801561077b57600080fd5b5061036461078a366004614fa5565b6121f8565b34801561079b57600080fd5b50610522604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107cc57600080fd5b506107d5612245565b60405161030b919061500f565b3480156107ee57600080fd5b506103646107fd366004614af1565b612329565b34801561080e57600080fd5b506103ff61081d366004614983565b612397565b34801561082e57600080fd5b5061033461083d366004614983565b6123d4565b34801561084e57600080fd5b506103a661085d366004615071565b6123f7565b34801561086e57600080fd5b5061033461087d366004614cd6565b61246c565b34801561088e57600080fd5b5061036461089d3660046150cc565b612642565b3480156108ae57600080fd5b506103646108bd366004614ac1565b6129df565b3480156108ce57600080fd5b506103a66108dd36600461511b565b6129fb565b3480156108ee57600080fd5b506103ff6108fd366004614983565b612a57565b34801561090e57600080fd5b506103ff600080516020615b6283398151915281565b34801561093057600080fd5b5061036461093f366004614cf8565b612a77565b34801561095057600080fd5b5061036461095f366004614f36565b612aa9565b60008061096f612ce8565b600501546001600160a01b031692915050565b60006001600160e01b03198216637965db0b60e01b14806109b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6109c98989898989898989612d0c565b6109d589898984612d64565b6109e0898989612db8565b505050505050505050565b60006109f561320f565b805490915060ff600160401b82041615906001600160401b0316600081158015610a1c5750825b90506000826001600160401b03166001148015610a385750303b155b905081158015610a46575080155b15610a645760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a8d57845460ff60401b1916600160401b1785555b6001600160a01b038a16610af85760405162461bcd60e51b815260206004820152602c60248201527f58324561726e52657761726473506f6f6c3a2061646d696e206973207468652060448201526b7a65726f206164647265737360a01b606482015260840161028b565b6001600160a01b038916610b745760405162461bcd60e51b815260206004820152603e60248201527f58324561726e52657761726473506f6f6c3a20636f6e747261637473206d616e60448201527f616765722061646d696e20697320746865207a65726f20616464726573730000606482015260840161028b565b6001600160a01b038816610be25760405162461bcd60e51b815260206004820152602f60248201527f58324561726e52657761726473506f6f6c3a207570677261646572206973207460448201526e6865207a65726f206164647265737360881b606482015260840161028b565b6001600160a01b038716610c4c5760405162461bcd60e51b815260206004820152602b60248201527f58324561726e52657761726473506f6f6c3a206233747220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161028b565b6001600160a01b038616610c725760405162461bcd60e51b815260040161028b90615183565b610c7a613233565b610c82613233565b610c8a61323d565b610c9560008b61324d565b50610cae600080516020615b628339815191528961324d565b50610cc7600080516020615c028339815191528a61324d565b506000610cd2612ce8565b80546001600160a01b03808b166001600160a01b031992831617835560019092018054928a1692909116919091179055508315610d3c57845460ff60401b19168555604051600080516020615b4283398151915290610d33906001906151d4565b60405180910390a15b50505050505050505050565b60405162461bcd60e51b81526020600482015260396024820152600080516020615c82833981519152604482015278206e6f74206163636570742045524337323120746f6b656e7360381b606482015260009060840161028b565b6000610dad612ce8565b60018101549091506001600160a01b03163314610e175760405162461bcd60e51b81526020600482015260346024820152600080516020615ba283398151915260448201527308160c91585c9b905c1c1cc818dbdb9d1c9858dd60621b606482015260840161028b565b6000610e21612ce8565b600084815260078201602052604090205490915060ff1615610e8b5760405162461bcd60e51b815260206004820152602f6024820152600080516020615b0283398151915260448201526e185b1c9958591e48195b98589b1959608a1b606482015260840161028b565b600083815260088201602052604090205460ff1615610ebc5760405162461bcd60e51b815260040161028b906151e8565b6000838152600782016020908152604091829020805460ff19166001908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b7791015b60405180910390a2505050565b600080610f206132ee565b60009384526020525050604090206001015490565b610f458a8a8a8a8a8a8a8a612d0c565b610f518a8a8a85612d64565b610d3c8a8a8a84613312565b610f6682610f15565b610f6f816138ce565b610f79838361324d565b50505050565b60036000610f8b61320f565b8054909150600160401b900460ff1680610fb2575080546001600160401b03808416911610155b15610fd05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b0383166110155760405162461bcd60e51b815260040161028b9061521f565b600061101f612ce8565b60050180546001600160a01b0319166001600160a01b03861617905550805460ff60401b19168155604051600080516020615b42833981519152906110659084906151d4565b60405180910390a1505050565b60008061107d612ce8565b600101546001600160a01b031692915050565b6001600160a01b03811633146110b95760405163334bd91960e11b815260040160405180910390fd5b6110c382826138db565b505050565b600260006110d461320f565b8054909150600160401b900460ff16806110fb575080546001600160401b03808416911610155b156111195760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b0384166111ae5760405162461bcd60e51b815260206004820152603760248201527f58324561726e52657761726473506f6f6c3a20696d706163744b65794d616e6160448201527667657220697320746865207a65726f206164647265737360481b606482015260840161028b565b60008351116112155760405162461bcd60e51b815260206004820152602d60248201527f58324561726e52657761726473506f6f6c3a20696e697469616c496d7061637460448201526c4b65797320697320656d70747960981b606482015260840161028b565b61122d600080516020615be28339815191528561324d565b506000611238612ce8565b905060005b845181101561127b5761126985828151811061125b5761125b615276565b602002602001015183613953565b80611273816152a2565b91505061123d565b5050805460ff60401b19168155604051600080516020615b42833981519152906112a69084906151d4565b60405180910390a150505050565b6112cc600080516020615c0283398151915233611d76565b806112ea57506112ea600080516020615b6283398151915233611d76565b61133f5760405162461bcd60e51b81526020600482015260326024820152600080516020615ba28339815191526044820152711030b236b4b71037b9103ab833b930b232b960711b606482015260840161028b565b6001600160a01b0381166113b65760405162461bcd60e51b815260206004820152603860248201527f58324561726e52657761726473506f6f6c3a2078416c6c6f636174696f6e566f60448201527774696e6720697320746865207a65726f206164647265737360401b606482015260840161028b565b60006113c0612ce8565b60090180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080516020615c028339815191526113fd816138ce565b6001600160a01b0382166114235760405162461bcd60e51b815260040161028b90615183565b600061142d612ce8565b60010180546001600160a01b0319166001600160a01b0394909416939093179092555050565b60606000808751118015611468575060008651115b9050600080865111801561147d575060008551115b8451909150151582158015611490575081155b156114af576040518060200160405280600081525093505050506115a2565b604080516c3d913b32b939b4b7b7111d101960991b60208201528151600d818303018152602d90910190915281156115065780866040516020016114f49291906152bb565b60405160208183030381529060405290505b83156115405760006115188b8b613a1f565b9050818160405160200161152d929190615315565b6040516020818303038152906040529150505b821561157a5760006115528989613bfa565b9050818160405160200161156792919061535a565b6040516020818303038152906040529150505b8060405160200161158b91906153a0565b60408051601f198184030181529190529450505050505b95945050505050565b6115b3613db4565b6115bc82613e59565b6115c68282613e71565b5050565b60006115d4612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164491906153c5565b6116605760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906116949086903390600401615427565b602060405180830381865afa1580156116b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d591906153c5565b6116f15760405162461bcd60e51b815260040161028b9061543e565b60008381526006820160205260409020548211156117725760405162461bcd60e51b815260206004820152603860248201527f58324561726e52657761726473506f6f6c3a2064656372656173696e6720756e604482015277646572207265776172647320706f6f6c2062616c616e636560401b606482015260840161028b565b60008381526007820160205260409020805460ff191660011790556000838152600682016020526040812080548492906117ad908490615476565b90915550506000838152600282016020526040812080548492906117d2908490615489565b90915550506000838152600282016020908152604080832054600685018352928190205481518681529283019390935281019190915283907f7edf7f16b6ec1a7be78507b450fd1504bc48e72ff18e5b620a6f0fd24717f49d90606001610f08565b600061183e613f25565b50600080516020615b828339815191525b90565b60008061185d612ce8565b546001600160a01b031692915050565b600080611878612ce8565b60009384526006016020525050604090205490565b336001600160a01b0316826001600160a01b031685600080516020615bc283398151915286856040516118c192919061549c565b60405180910390a4610f79848484612db8565b6118e48989898989898989612d0c565b6109e089898984613312565b60006118fa612ce8565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a91906153c5565b6119865760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906119ba9085903390600401615427565b602060405180830381865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906153c5565b611a175760405162461bcd60e51b815260040161028b906154b5565b600082815260088201602052604090205460ff16611a7b5760405162461bcd60e51b815260206004820152602d6024820152600080516020615c2283398151915260448201526c1a5cc81b9bdd081c185d5cd959609a1b606482015260840161028b565b6000828152600882016020526040808220805460ff1916905551339184917f23a8a3a8a84537d60bdd2345bf190d189d31179dbbb1c6aefe29166ad8f6579a9190a35050565b611ad18888888888888888612d0c565b611adc888888612db8565b5050505050505050565b600080516020615be2833981519152611aff8133611d76565b158015611b145750611b12600033611d76565b155b15611b315760405162461bcd60e51b815260040161028b906154f8565b6000611b3b612ce8565b90506110c38382613953565b600080611b52612ce8565b60009384526008016020525050604090205460ff1690565b6000611b74612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be491906153c5565b611c005760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611c349086903390600401615427565b602060405180830381865afa158015611c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7591906153c5565b611c915760405162461bcd60e51b815260040161028b9061543e565b6000838152600282016020526040902054821115611d165760405162461bcd60e51b815260206004820152603c60248201527f58324561726e52657761726473506f6f6c3a20696e6372656173696e6720616d60448201527b6f756e74206578636565647320617661696c61626c652066756e647360201b606482015260840161028b565b60008381526007820160205260409020805460ff19166001179055600083815260068201602052604081208054849290611d51908490615489565b90915550506000838152600282016020526040812080548492906117d2908490615476565b600080611d816132ee565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611db6612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2691906153c5565b611e425760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611e769086903390600401615427565b602060405180830381865afa158015611e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb791906153c5565b611ed35760405162461bcd60e51b815260040161028b9061543e565b600083815260078201602052604090205482151560ff909116151503611f4d5760405162461bcd60e51b815260206004820152603b6024820152600080516020615b0283398151915260448201527a697320616c726561647920696e206465736972656420737461746560281b606482015260840161028b565b600083815260088201602052604090205460ff1615611f7e5760405162461bcd60e51b815260040161028b906151e8565b81611fc8576000838152600682016020908152604080832054600285019092528220805491929091611fb1908490615489565b909155505060008381526006820160205260408120555b6000838152600782016020908152604091829020805460ff1916851515908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b779101610f08565b6000612023612ce8565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa15801561206f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209391906153c5565b6120af5760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906120e39085903390600401615427565b602060405180830381865afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906153c5565b6121405760405162461bcd60e51b815260040161028b906154b5565b600082815260088201602052604090205460ff16156121af5760405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a2061707020616c72656164792070604482015264185d5cd95960da1b606482015260840161028b565b6000828152600882016020526040808220805460ff1916600117905551339184917facca5e415b8aed07cbd321de9d16effb4a77548130d6e3f218adb63b40d53f489190a35050565b336001600160a01b0316836001600160a01b031686600080516020615bc28339815191528760405161222a9190615561565b60405180910390a461223e85858584613312565b5050505050565b60606000612251612ce8565b6004810180546040805160208084028201810190925282815293945060009084015b8282101561231f57838290600052602060002001805461229290615579565b80601f01602080910402602001604051908101604052809291908181526020018280546122be90615579565b801561230b5780601f106122e05761010080835404028352916020019161230b565b820191906000526020600020905b8154815290600101906020018083116122ee57829003601f168201915b505050505081526020019060010190612273565b5050505091505090565b600080516020615c02833981519152612341816138ce565b6001600160a01b0382166123675760405162461bcd60e51b815260040161028b9061521f565b6000612371612ce8565b60050180546001600160a01b0319166001600160a01b0394909416939093179092555050565b6000806123a2612ce8565b600084815260068201602090815260408083205460028501909252909120549192506123cd91615489565b9392505050565b6000806123df612ce8565b60009384526007016020525050604090205460ff1690565b60405162461bcd60e51b815260206004820152604d6024820152600080516020615c8283398151915260448201527f206e6f7420616363657074206261746368207472616e7366657273206f66204560648201526c52433131353520746f6b656e7360981b608482015260009060a40161028b565b600080612477612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e791906153c5565b6125035760405162461bcd60e51b815260040161028b906153e2565b600083815260028201602052604081208054869290612523908490615489565b909155505080546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a291906153c5565b6126015760405162461bcd60e51b815260206004820152602a60248201527f58324561726e52657761726473506f6f6c3a206465706f736974207472616e7360448201526919995c8819985a5b195960b21b606482015260840161028b565b604051848152339084907fb129470ed4a80566812579bd667bb40c9cc246b5470797f9291f8a27cd3d16309060200160405180910390a35060019392505050565b61264a613f6e565b6000612654612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa1580156126a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c491906153c5565b6126e05760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906127149086903390600401615427565b602060405180830381865afa158015612731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275591906153c5565b6127715760405162461bcd60e51b815260040161028b906154b5565b60008381526002820160205260409020548411156127d55760405162461bcd60e51b815260206004820152602d6024820152600080516020615b2283398151915260448201526c66696369656e742066756e647360981b606482015260840161028b565b80546040516370a0823160e01b815285916001600160a01b0316906370a0823190612804903090600401614557565b602060405180830381865afa158015612821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284591906155b3565b10156128635760405162461bcd60e51b815260040161028b906155cc565b6001810154604051631772503b60e01b8152600481018590526000916001600160a01b031690631772503b90602401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d3919061561d565b90508482600201600086815260200190815260200160002060008282546128fa9190615476565b9091555050815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612930908490899060040161563a565b6020604051808303816000875af115801561294f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297391906153c5565b61298f5760405162461bcd60e51b815260040161028b90615653565b806001600160a01b0316847fd9ffa9a1a748d0d5a7264f97f319a08a8d4925854093354e05965ff93e46d8048733876040516129cd939291906156a7565b60405180910390a350506110c3613fa4565b6129e882610f15565b6129f1816138ce565b610f7983836138db565b60405162461bcd60e51b815260206004820152603a6024820152600080516020615c82833981519152604482015279206e6f7420616363657074204552433131353520746f6b656e7360301b606482015260009060840161028b565b600080612a62612ce8565b60009384526002016020525050604090205490565b336001600160a01b0316826001600160a01b031685600080516020615bc2833981519152866040516118c19190615561565b600080516020615be2833981519152612ac28133611d76565b158015612ad75750612ad5600033611d76565b155b15612af45760405162461bcd60e51b815260040161028b906154f8565b6000612afe612ce8565b905060008160030184604051612b1491906156d1565b908152602001604051809103902054905060008111612b755760405162461bcd60e51b815260206004820181905260248201527f58324561726e52657761726473506f6f6c3a204b6579206e6f7420666f756e64604482015260640161028b565b60048201805460009190612b8b90600190615476565b81548110612b9b57612b9b615276565b906000526020600020018054612bb090615579565b80601f0160208091040260200160405190810160405280929190818152602001828054612bdc90615579565b8015612c295780601f10612bfe57610100808354040283529160200191612c29565b820191906000526020600020905b815481529060010190602001808311612c0c57829003601f168201915b505050505090508083600401600184612c429190615476565b81548110612c5257612c52615276565b906000526020600020019081612c68919061573b565b50818360030182604051612c7c91906156d1565b9081526040519081900360200190205560048301805480612c9f57612c9f6157fa565b600190038181906000526020600020016000612cbb9190614509565b90558260030185604051612ccf91906156d1565b9081526020016040518091039020600090555050505050565b7f7c0dcc5654efea34bf150fefe2d7f927494d4026026590e81037cb4c7a9cdc0090565b6000612d1b8686868686611453565b9050336001600160a01b0316876001600160a01b03168a600080516020615bc28339815191528b85604051612d5192919061549c565b60405180910390a4505050505050505050565b336001600160a01b0316826001600160a01b0316857fc56b89dcf339c479f6e2af79e456c592b86e3014b888582db81d00ff7c51c1c68685604051612daa92919061549c565b60405180910390a450505050565b612dc0613f6e565b6000612dca612ce8565b600085815260088201602052604090205490915060ff1615612dfe5760405162461bcd60e51b815260040161028b906151e8565b600181015460405163181efec960e21b8152600481018690526001600160a01b039091169063607bfb2490602401602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6d91906153c5565b612e895760405162461bcd60e51b815260040161028b906153e2565b600181015460405163b58a754760e01b81526001600160a01b039091169063b58a754790612ebd9087903390600401615427565b602060405180830381865afa158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe91906153c5565b612f1a5760405162461bcd60e51b815260040161028b90615810565b80546040516370a0823160e01b815284916001600160a01b0316906370a0823190612f49903090600401614557565b602060405180830381865afa158015612f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8a91906155b3565b1015612fa85760405162461bcd60e51b815260040161028b906155cc565b600084815260078201602052604090205460ff161561301c576000848152600682016020526040902054831115612ff15760405162461bcd60e51b815260040161028b9061585b565b600084815260068201602052604081208054859290613011908490615476565b909155506130729050565b600084815260028201602052604090205483111561304c5760405162461bcd60e51b815260040161028b906158b2565b60008481526002820160205260408120805485929061306c908490615476565b90915550505b805460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906130a3908590879060040161563a565b6020604051808303816000875af11580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e691906153c5565b6131025760405162461bcd60e51b815260040161028b90615653565b6005810154604051630b7af06960e41b81526001600160a01b039091169063b7af069090613136908590889060040161563a565b600060405180830381600087803b15801561315057600080fd5b505af1925050508015613161575060015b6132065761316d6158f7565b806308c379a0036131b75750613181615912565b8061318c57506131b9565b600080516020615c42833981519152816040516131a9919061599b565b60405180910390a150613206565b505b3d8080156131e3576040519150601f19603f3d011682016040523d82523d6000602084013e6131e8565b606091505b50600080516020615c42833981519152816040516131a991906159c5565b506110c3613fa4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61323b613fb5565b565b613245613fb5565b61323b613fda565b6000806132586132ee565b90506132648484611d76565b6132e4576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561329a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109b3565b60009150506109b3565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61331a613f6e565b600081116133795760405162461bcd60e51b815260206004820152602660248201527f58324561726e52657761726473506f6f6c3a20616374696f6e526f756e64206960448201526573207a65726f60d01b606482015260840161028b565b6000613383612ce8565b60098101549091506001600160a01b03161580159061341a57508060090160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341691906155b3565b8211155b6134835760405162461bcd60e51b815260206004820152603460248201527f58324561726e52657761726473506f6f6c3a20616374696f6e526f756e6420656044820152731e18d959591cc818dd5c9c995b9d081c9bdd5b9960621b606482015260840161028b565b600085815260088201602052604090205460ff16156134b45760405162461bcd60e51b815260040161028b906151e8565b600181015460405163181efec960e21b8152600481018790526001600160a01b039091169063607bfb2490602401602060405180830381865afa1580156134ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352391906153c5565b61353f5760405162461bcd60e51b815260040161028b906153e2565b600181015460405163b58a754760e01b81526001600160a01b039091169063b58a7547906135739088903390600401615427565b602060405180830381865afa158015613590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b491906153c5565b6135d05760405162461bcd60e51b815260040161028b90615810565b80546040516370a0823160e01b815285916001600160a01b0316906370a08231906135ff903090600401614557565b602060405180830381865afa15801561361c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364091906155b3565b101561365e5760405162461bcd60e51b815260040161028b906155cc565b600085815260078201602052604090205460ff16156136d25760008581526006820160205260409020548411156136a75760405162461bcd60e51b815260040161028b9061585b565b6000858152600682016020526040812080548692906136c7908490615476565b909155506137289050565b60008581526002820160205260409020548411156137025760405162461bcd60e51b815260040161028b906158b2565b600085815260028201602052604081208054869290613722908490615476565b90915550505b805460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90613759908690889060040161563a565b6020604051808303816000875af1158015613778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379c91906153c5565b6137b85760405162461bcd60e51b815260040161028b90615653565b6005810154604051635801b70f60e01b81526001600160a01b038581166004830152602482018890526044820185905290911690635801b70f90606401600060405180830381600087803b15801561380f57600080fd5b505af1925050508015613820575060015b6138c55761382c6158f7565b806308c379a0036138765750613840615912565b8061384b5750613878565b600080516020615c4283398151915281604051613868919061599b565b60405180910390a1506138c5565b505b3d8080156138a2576040519150601f19603f3d011682016040523d82523d6000602084013e6138a7565b606091505b50600080516020615c428339815191528160405161386891906159c5565b50610f79613fa4565b6138d88133613fe2565b50565b6000806138e66132ee565b90506138f28484611d76565b156132e4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109b3565b806003018260405161396591906156d1565b9081526020016040518091039020546000146139d15760405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a204b657920616c72656164792065604482015264786973747360d81b606482015260840161028b565b60048101805460018101825560009182526020909120016139f2838261573b565b5060048101546040516003830190613a0b9085906156d1565b908152604051908190036020019020555050565b60608151835114613a7e5760405162461bcd60e51b81526020600482015260356024820152600080516020615c62833981519152604482015274383aba103632b733ba3439903337b910283937b7b360591b606482015260840161028b565b6000604051602001613a8f906159fe565b604051602081830303815290604052905060005b8451811015613bd057613ace858281518110613ac157613ac1615276565b602002602001015161400d565b15613b685781858281518110613ae657613ae6615276565b6020026020010151858381518110613b0057613b00615276565b6020026020010151604051602001613b1a93929190615a0b565b604051602081830303815290604052915060018551613b399190615476565b811015613b635781604051602001613b519190615a7c565b60405160208183030381529060405291505b613bbe565b60405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a20496e76616c69642070726f6f66604482015264207479706560d81b606482015260840161028b565b80613bc8816152a2565b915050613aa3565b5080604051602001613be291906153a0565b60408051808303601f19018152919052949350505050565b60608151835114613c5a5760405162461bcd60e51b81526020600482015260366024820152600080516020615c628339815191526044820152751c1d5d081b195b99dd1a1cc8199bdc88125b5c1858dd60521b606482015260840161028b565b6000604051602001613c6b906159fe565b604051602081830303815290604052905060005b8351811015613bd057613caa858281518110613c9d57613c9d615276565b6020026020010151614170565b15613d4c5781858281518110613cc257613cc2615276565b6020026020010151613cec868481518110613cdf57613cdf615276565b60200260200101516141a9565b604051602001613cfe93929190615aa1565b604051602081830303815290604052915060018451613d1d9190615476565b811015613d475781604051602001613d359190615a7c565b60405160208183030381529060405291505b613da2565b60405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a20496e76616c696420696d70616360448201526474206b657960d81b606482015260840161028b565b80613dac816152a2565b915050613c7f565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613e3b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613e2f600080516020615b82833981519152546001600160a01b031690565b6001600160a01b031614155b1561323b5760405163703e46dd60e11b815260040160405180910390fd5b600080516020615b628339815191526115c6816138ce565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ecb575060408051601f3d908101601f19168201909252613ec8918101906155b3565b60015b613eea5781604051634c9c8ce360e01b815260040161028b9190614557565b600080516020615b828339815191528114613f1b57604051632a87526960e21b81526004810182905260240161028b565b6110c3838361423b565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461323b5760405163703e46dd60e11b815260040160405180910390fd5b6000613f78614291565b805490915060011901613f9e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613fae614291565b6001905550565b613fbd6142b5565b61323b57604051631afcd79f60e31b815260040160405180910390fd5b613fa4613fb5565b613fec8282611d76565b6115c657808260405163e2517d3f60e01b815260040161028b92919061563a565b60405164696d61676560d81b6020820152600090602501604051602081830303815290604052805190602001208260405160200161404b91906156d1565b6040516020818303038152906040528051906020012014806140ba5750604051636c696e6b60e01b602082015260240160405160208183030381529060405280519060200120826040516020016140a291906156d1565b60405160208183030381529060405280519060200120145b806141125750604051631d195e1d60e21b602082015260240160405160208183030381529060405280519060200120826040516020016140fa91906156d1565b60405160208183030381529060405280519060200120145b806109b3575060405164766964656f60d81b6020820152602501604051602081830303815290604052805190602001208260405160200161415391906156d1565b604051602081830303815290604052805190602001201492915050565b60008061417b612ce8565b90506000816003018460405161419191906156d1565b90815260200160405180910390205411915050919050565b606060006141b6836142cf565b60010190506000816001600160401b038111156141d5576141d56145ba565b6040519080825280601f01601f1916602001820160405280156141ff576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461420957509392505050565b614244826143a5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115614289576110c38282614401565b6115c661446e565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006142bf61320f565b54600160401b900460ff16919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061430e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614338576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061435657662386f26fc10000830492506010015b6305f5e100831061436e576305f5e100830492506008015b612710831061438257612710830492506004015b60648310614394576064830492506002015b600a83106109b35760010192915050565b806001600160a01b03163b6000036143d25780604051634c9c8ce360e01b815260040161028b9190614557565b600080516020615b8283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161441e91906156d1565b600060405180830381855af49150503d8060008114614459576040519150601f19603f3d011682016040523d82523d6000602084013e61445e565b606091505b50915091506115a285838361448d565b341561323b5760405163b398979f60e01b815260040160405180910390fd5b6060826144a25761449d826144e0565b6123cd565b81511580156144b957506001600160a01b0384163b155b156144d95783604051639996b31560e01b815260040161028b9190614557565b5092915050565b8051156144f05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461451590615579565b6000825580601f10614525575050565b601f0160209004906000526020600020908101906138d891905b80821115614553576000815560010161453f565b5090565b6001600160a01b0391909116815260200190565b60006020828403121561457d57600080fd5b81356001600160e01b0319811681146123cd57600080fd5b6001600160a01b03811681146138d857600080fd5b80356145b581614595565b919050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156145f5576145f56145ba565b6040525050565b60006001600160401b03821115614615576146156145ba565b5060051b60200190565b600082601f83011261463057600080fd5b81356001600160401b03811115614649576146496145ba565b604051614660601f8301601f1916602001826145d0565b81815284602083860101111561467557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126146a357600080fd5b813560206146b0826145fc565b6040516146bd82826145d0565b83815260059390931b85018201928281019150868411156146dd57600080fd5b8286015b8481101561471c5780356001600160401b038111156147005760008081fd5b61470e8986838b010161461f565b8452509183019183016146e1565b509695505050505050565b600082601f83011261473857600080fd5b81356020614745826145fc565b60405161475282826145d0565b83815260059390931b850182019282810191508684111561477257600080fd5b8286015b8481101561471c5780358352918301918301614776565b60008060008060008060008060006101208a8c0312156147ac57600080fd5b8935985060208a013597506147c360408b016145aa565b965060608a01356001600160401b03808211156147df57600080fd5b6147eb8d838e01614692565b975060808c013591508082111561480157600080fd5b61480d8d838e01614692565b965060a08c013591508082111561482357600080fd5b61482f8d838e01614692565b955060c08c013591508082111561484557600080fd5b6148518d838e01614727565b945060e08c013591508082111561486757600080fd5b6148738d838e0161461f565b93506101008c013591508082111561488a57600080fd5b506148978c828d0161461f565b9150509295985092959850929598565b600080600080600060a086880312156148bf57600080fd5b85356148ca81614595565b945060208601356148da81614595565b935060408601356148ea81614595565b925060608601356148fa81614595565b9150608086013561490a81614595565b809150509295509295909350565b6000806000806080858703121561492e57600080fd5b843561493981614595565b9350602085013561494981614595565b92506040850135915060608501356001600160401b0381111561496b57600080fd5b6149778782880161461f565b91505092959194509250565b60006020828403121561499557600080fd5b5035919050565b6000806000806000806000806000806101408b8d0312156149bc57600080fd5b8a35995060208b013598506149d360408c016145aa565b975060608b01356001600160401b03808211156149ef57600080fd5b6149fb8e838f01614692565b985060808d0135915080821115614a1157600080fd5b614a1d8e838f01614692565b975060a08d0135915080821115614a3357600080fd5b614a3f8e838f01614692565b965060c08d0135915080821115614a5557600080fd5b614a618e838f01614727565b955060e08d0135915080821115614a7757600080fd5b614a838e838f0161461f565b94506101008d0135915080821115614a9a57600080fd5b50614aa78d828e0161461f565b9250506101208b013590509295989b9194979a5092959850565b60008060408385031215614ad457600080fd5b823591506020830135614ae681614595565b809150509250929050565b600060208284031215614b0357600080fd5b81356123cd81614595565b60008060408385031215614b2157600080fd5b8235614b2c81614595565b915060208301356001600160401b03811115614b4757600080fd5b614b5385828601614692565b9150509250929050565b600080600080600060a08688031215614b7557600080fd5b85356001600160401b0380821115614b8c57600080fd5b614b9889838a01614692565b96506020880135915080821115614bae57600080fd5b614bba89838a01614692565b95506040880135915080821115614bd057600080fd5b614bdc89838a01614692565b94506060880135915080821115614bf257600080fd5b614bfe89838a01614727565b93506080880135915080821115614c1457600080fd5b50614c218882890161461f565b9150509295509295909350565b60005b83811015614c49578181015183820152602001614c31565b50506000910152565b60008151808452614c6a816020860160208601614c2e565b601f01601f19169290920160200192915050565b6020815260006123cd6020830184614c52565b60008060408385031215614ca457600080fd5b8235614caf81614595565b915060208301356001600160401b03811115614cca57600080fd5b614b538582860161461f565b60008060408385031215614ce957600080fd5b50508035926020909101359150565b60008060008060808587031215614d0e57600080fd5b84359350602085013592506040850135614d2781614595565b915060608501356001600160401b0381111561496b57600080fd5b60008060008060008060008060006101208a8c031215614d6157600080fd5b8935985060208a01359750614d7860408b016145aa565b965060608a01356001600160401b0380821115614d9457600080fd5b614da08d838e01614692565b975060808c0135915080821115614db657600080fd5b614dc28d838e01614692565b965060a08c0135915080821115614dd857600080fd5b614de48d838e01614692565b955060c08c0135915080821115614dfa57600080fd5b614e068d838e01614727565b945060e08c0135915080821115614e1c57600080fd5b50614e298c828d0161461f565b9250506101008a013590509295985092959850929598565b600080600080600080600080610100898b031215614e5e57600080fd5b8835975060208901359650614e7560408a016145aa565b955060608901356001600160401b0380821115614e9157600080fd5b614e9d8c838d01614692565b965060808b0135915080821115614eb357600080fd5b614ebf8c838d01614692565b955060a08b0135915080821115614ed557600080fd5b614ee18c838d01614692565b945060c08b0135915080821115614ef757600080fd5b614f038c838d01614727565b935060e08b0135915080821115614f1957600080fd5b50614f268b828c0161461f565b9150509295985092959890939650565b600060208284031215614f4857600080fd5b81356001600160401b03811115614f5e57600080fd5b614f6a8482850161461f565b949350505050565b80151581146138d857600080fd5b60008060408385031215614f9357600080fd5b823591506020830135614ae681614f72565b600080600080600060a08688031215614fbd57600080fd5b85359450602086013593506040860135614fd681614595565b925060608601356001600160401b03811115614ff157600080fd5b614ffd8882890161461f565b95989497509295608001359392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561506457603f19888603018452615052858351614c52565b94509285019290850190600101615036565b5092979650505050505050565b600080600080600060a0868803121561508957600080fd5b853561509481614595565b945060208601356150a481614595565b935060408601356001600160401b03808211156150c057600080fd5b614bdc89838a01614727565b6000806000606084860312156150e157600080fd5b833592506020840135915060408401356001600160401b0381111561510557600080fd5b6151118682870161461f565b9150509250925092565b600080600080600060a0868803121561513357600080fd5b853561513e81614595565b9450602086013561514e81614595565b9350604086013592506060860135915060808601356001600160401b0381111561517757600080fd5b614c218882890161461f565b60208082526031908201527f58324561726e52657761726473506f6f6c3a2078324561726e4170707320697360408201527020746865207a65726f206164647265737360781b606082015260800190565b6001600160401b0391909116815260200190565b6020808252602990820152600080516020615c228339815191526040820152681a5cc81c185d5cd95960ba1b606082015260800190565b60208082526037908201527f58324561726e52657761726473506f6f6c3a20766542657474657250617373706040820152766f727420697320746865207a65726f206164647265737360481b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016152b4576152b461528c565b5060010190565b600083516152cd818460208801614c2e565b7016113232b9b1b934b83a34b7b7111d101160791b90830190815283516152fb816011840160208801614c2e565b601160f91b60119290910191820152601201949350505050565b60008351615327818460208801614c2e565b6901611383937b7b3111d160b51b908301908152835161534e81600a840160208801614c2e565b01600a01949350505050565b6000835161536c818460208801614c2e565b6a0161134b6b830b1ba111d160ad1b908301908152835161539481600b840160208801614c2e565b01600b01949350505050565b600082516153b2818460208701614c2e565b607d60f81b920191825250600101919050565b6000602082840312156153d757600080fd5b81516123cd81614f72565b60208082526025908201527f58324561726e52657761726473506f6f6c3a2061707020646f6573206e6f7420604082015264195e1a5cdd60da1b606082015260800190565b9182526001600160a01b0316602082015260400190565b6020808252602a90820152600080516020615ba28339815191526040820152691030b8381030b236b4b760b11b606082015260800190565b818103818111156109b3576109b361528c565b808201808211156109b3576109b361528c565b828152604060208201526000614f6a6040830184614c52565b60208082526023908201527f58324561726e52657761726473506f6f6c3a206e6f7420616e2061707020616460408201526236b4b760e91b606082015260800190565b60208082526043908201527f58324561726e52657761726473506f6f6c3a2073656e646572206973206e6f7460408201527f20616e2061646d696e206e6f72206861732074686520726571756972656420726060820152626f6c6560e81b608082015260a00190565b90815260406020820181905260009082015260600190565b600181811c9082168061558d57607f821691505b6020821081036155ad57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156155c557600080fd5b5051919050565b60208082526031908201527f58324561726e52657761726473506f6f6c3a20696e73756666696369656e7420604082015270199d5b991cc81bdb8818dbdb9d1c9858dd607a1b606082015260800190565b60006020828403121561562f57600080fd5b81516123cd81614595565b6001600160a01b03929092168252602082015260400190565b60208082526034908201527f58324561726e52657761726473506f6f6c3a20416c6c6f636174696f6e207472604082015273185b9cd9995c881d1bc8185c1c0819985a5b195960621b606082015260800190565b8381526001600160a01b03831660208201526060604082018190526000906115a290830184614c52565b600082516156e3818460208701614c2e565b9190910192915050565b601f8211156110c357600081815260208120601f850160051c810160208610156157145750805b601f850160051c820191505b8181101561573357828155600101615720565b505050505050565b81516001600160401b03811115615754576157546145ba565b615768816157628454615579565b846156ed565b602080601f83116001811461579d57600084156157855750858301515b600019600386901b1c1916600185901b178555615733565b600085815260208120601f198616915b828110156157cc578886015182559484019460019091019084016157ad565b50858210156157ea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b6020808252602b908201527f58324561726e52657761726473506f6f6c3a206e6f742061207265776172642060408201526a3234b9ba3934b13aba37b960a91b606082015260800190565b60208082526037908201527f58324561726e52657761726473506f6f6c3a206e6f7420656e6f7567682066756040820152761b991cc81a5b881d1a19481c995dd85c991cc81c1bdbdb604a1b606082015260800190565b6020808252603790820152600080516020615b2283398151915260408201527666696369656e7420617661696c61626c652066756e647360481b606082015260800190565b600060033d111561184f5760046000803e5060005160e01c90565b600060443d10156159205790565b6040516003193d81016004833e81513d6001600160401b03808311602484018310171561594f57505050505090565b82850191508151818111156159675750505050505090565b843d87010160208285010111156159815750505050505090565b615990602082860101876145d0565b509095945050505050565b6040815260006159ae6040830184614c52565b828103602093840152600081529190910192915050565b60408152600f60408201526e2637bb96b632bb32b61032b93937b960891b60608201526080602082015260006123cd6080830184614c52565b607b60f81b815260010190565b60008451615a1d818460208901614c2e565b601160f91b9083018181528551909190615a3e816001850160208a01614c2e565b61111d60f11b60019390910192830152600382018190528451615a68816004850160208901614c2e565b600492019182015260050195945050505050565b60008251615a8e818460208701614c2e565b600b60fa1b920191825250600101919050565b60008451615ab3818460208901614c2e565b601160f91b9083019081528451615ad1816001840160208901614c2e565b61111d60f11b600192909101918201528351615af4816003840160208801614c2e565b016003019594505050505056fe58324561726e52657761726473506f6f6c3a207265776172647320706f6f6c2058324561726e52657761726473506f6f6c3a206170702068617320696e737566c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc58324561726e52657761726473506f6f6c3a2063616c6c6572206973206e6f744811710b0c25cc7e05baf214b3a939cf893f1cbff4d0b219e680f069a4f204a28126eb6027e2d11d8787280faa15fe8ec1ac780cdd182c8ce003d51018705f9856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b758324561726e52657761726473506f6f6c3a20646973747269627574696f6e2060d31a41349f4f78a019d64d088a78b27da96d17d6b2de5bac97516e9c0df12858324561726e52657761726473506f6f6c3a204d69736d61746368656420696e58324561726e52657761726473506f6f6c3a20636f6e747261637420646f6573a2646970667358221220323a95592ec13afc004246d6739c7b03fc8b3340d53f37206b1312e9a682e95364736f6c63430008140033",
  "deployedBytecode": "0x60806040526004361061023c5760003560e01c806250ea6f146102e957806301ffc9a7146103145780630eb11eb8146103445780631459457a14610366578063150b7a02146103865780631a25071f146103bf578063248a9ca3146103df5780632a308afa1461040d5780632f2ff15d1461042d5780633101cfcb1461044d57806333653f5d1461046d57806336568abe14610482578063389caa86146104a25780633d47fe94146104c257806340a6fc0b146104e25780634879ed08146105025780634f1ef2861461052f5780634fd7ff4d1461054257806352d1902d1461056257806354fd4d5014610577578063582a486a146105a157806360dbdd08146105b657806369933c78146105d65780636b2c1bb8146105f65780636d63ecab146106165780637b9245321461063657806389bcfa31146106565780638a7793b1146106765780638e023afe1461069657806391d14854146106b6578063952f2133146106d65780639aaaa380146106f85780639cb6454f14610718578063a217fddf1461073a578063a21d5eac1461074f578063ad0f96b11461076f578063ad3cb1cc1461078f578063ae630ec8146107c0578063b3c93dab146107e2578063b51fc44514610802578063b81ddb2e14610822578063bc197c8114610842578063c9630cb014610862578063cfe706b314610882578063d547741f146108a2578063f23a6e61146108c2578063f2744334146108e2578063f72c0d8b14610902578063f7335f1114610924578063fdbfad9b1461094457610294565b366102945760405162461bcd60e51b815260206004820152602f6024820152600080516020615c8283398151915260448201526e081b9bdd081858d8d95c1d08159155608a1b60648201526084015b60405180910390fd5b60405162461bcd60e51b81526020600482015260366024820152600080516020615c82833981519152604482015275206e6f74206163636570742063616c6c732f6461746160501b606482015260840161028b565b3480156102f557600080fd5b506102fe610964565b60405161030b9190614557565b60405180910390f35b34801561032057600080fd5b5061033461032f36600461456b565b610982565b604051901515815260200161030b565b34801561035057600080fd5b5061036461035f36600461478d565b6109b9565b005b34801561037257600080fd5b506103646103813660046148a7565b6109eb565b34801561039257600080fd5b506103a66103a1366004614918565b610d48565b6040516001600160e01b0319909116815260200161030b565b3480156103cb57600080fd5b506103646103da366004614983565b610da3565b3480156103eb57600080fd5b506103ff6103fa366004614983565b610f15565b60405190815260200161030b565b34801561041957600080fd5b5061036461042836600461499c565b610f35565b34801561043957600080fd5b50610364610448366004614ac1565b610f5d565b34801561045957600080fd5b50610364610468366004614af1565b610f7f565b34801561047957600080fd5b506102fe611072565b34801561048e57600080fd5b5061036461049d366004614ac1565b611090565b3480156104ae57600080fd5b506103646104bd366004614b0e565b6110c8565b3480156104ce57600080fd5b506103646104dd366004614af1565b6112b4565b3480156104ee57600080fd5b506103646104fd366004614af1565b6113e5565b34801561050e57600080fd5b5061052261051d366004614b5d565b611453565b60405161030b9190614c7e565b61036461053d366004614c91565b6115ab565b34801561054e57600080fd5b5061036461055d366004614cd6565b6115ca565b34801561056e57600080fd5b506103ff611834565b34801561058357600080fd5b506040805180820190915260018152600760fb1b6020820152610522565b3480156105ad57600080fd5b506102fe611852565b3480156105c257600080fd5b506103ff6105d1366004614983565b61186d565b3480156105e257600080fd5b506103646105f1366004614cf8565b61188d565b34801561060257600080fd5b50610364610611366004614d42565b6118d4565b34801561062257600080fd5b50610364610631366004614983565b6118f0565b34801561064257600080fd5b50610364610651366004614e41565b611ac1565b34801561066257600080fd5b50610364610671366004614f36565b611ae6565b34801561068257600080fd5b50610334610691366004614983565b611b47565b3480156106a257600080fd5b506103646106b1366004614cd6565b611b6a565b3480156106c257600080fd5b506103346106d1366004614ac1565b611d76565b3480156106e257600080fd5b506103ff600080516020615c0283398151915281565b34801561070457600080fd5b50610364610713366004614f80565b611dac565b34801561072457600080fd5b506103ff600080516020615be283398151915281565b34801561074657600080fd5b506103ff600081565b34801561075b57600080fd5b5061036461076a366004614983565b612019565b34801561077b57600080fd5b5061036461078a366004614fa5565b6121f8565b34801561079b57600080fd5b50610522604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107cc57600080fd5b506107d5612245565b60405161030b919061500f565b3480156107ee57600080fd5b506103646107fd366004614af1565b612329565b34801561080e57600080fd5b506103ff61081d366004614983565b612397565b34801561082e57600080fd5b5061033461083d366004614983565b6123d4565b34801561084e57600080fd5b506103a661085d366004615071565b6123f7565b34801561086e57600080fd5b5061033461087d366004614cd6565b61246c565b34801561088e57600080fd5b5061036461089d3660046150cc565b612642565b3480156108ae57600080fd5b506103646108bd366004614ac1565b6129df565b3480156108ce57600080fd5b506103a66108dd36600461511b565b6129fb565b3480156108ee57600080fd5b506103ff6108fd366004614983565b612a57565b34801561090e57600080fd5b506103ff600080516020615b6283398151915281565b34801561093057600080fd5b5061036461093f366004614cf8565b612a77565b34801561095057600080fd5b5061036461095f366004614f36565b612aa9565b60008061096f612ce8565b600501546001600160a01b031692915050565b60006001600160e01b03198216637965db0b60e01b14806109b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6109c98989898989898989612d0c565b6109d589898984612d64565b6109e0898989612db8565b505050505050505050565b60006109f561320f565b805490915060ff600160401b82041615906001600160401b0316600081158015610a1c5750825b90506000826001600160401b03166001148015610a385750303b155b905081158015610a46575080155b15610a645760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a8d57845460ff60401b1916600160401b1785555b6001600160a01b038a16610af85760405162461bcd60e51b815260206004820152602c60248201527f58324561726e52657761726473506f6f6c3a2061646d696e206973207468652060448201526b7a65726f206164647265737360a01b606482015260840161028b565b6001600160a01b038916610b745760405162461bcd60e51b815260206004820152603e60248201527f58324561726e52657761726473506f6f6c3a20636f6e747261637473206d616e60448201527f616765722061646d696e20697320746865207a65726f20616464726573730000606482015260840161028b565b6001600160a01b038816610be25760405162461bcd60e51b815260206004820152602f60248201527f58324561726e52657761726473506f6f6c3a207570677261646572206973207460448201526e6865207a65726f206164647265737360881b606482015260840161028b565b6001600160a01b038716610c4c5760405162461bcd60e51b815260206004820152602b60248201527f58324561726e52657761726473506f6f6c3a206233747220697320746865207a60448201526a65726f206164647265737360a81b606482015260840161028b565b6001600160a01b038616610c725760405162461bcd60e51b815260040161028b90615183565b610c7a613233565b610c82613233565b610c8a61323d565b610c9560008b61324d565b50610cae600080516020615b628339815191528961324d565b50610cc7600080516020615c028339815191528a61324d565b506000610cd2612ce8565b80546001600160a01b03808b166001600160a01b031992831617835560019092018054928a1692909116919091179055508315610d3c57845460ff60401b19168555604051600080516020615b4283398151915290610d33906001906151d4565b60405180910390a15b50505050505050505050565b60405162461bcd60e51b81526020600482015260396024820152600080516020615c82833981519152604482015278206e6f74206163636570742045524337323120746f6b656e7360381b606482015260009060840161028b565b6000610dad612ce8565b60018101549091506001600160a01b03163314610e175760405162461bcd60e51b81526020600482015260346024820152600080516020615ba283398151915260448201527308160c91585c9b905c1c1cc818dbdb9d1c9858dd60621b606482015260840161028b565b6000610e21612ce8565b600084815260078201602052604090205490915060ff1615610e8b5760405162461bcd60e51b815260206004820152602f6024820152600080516020615b0283398151915260448201526e185b1c9958591e48195b98589b1959608a1b606482015260840161028b565b600083815260088201602052604090205460ff1615610ebc5760405162461bcd60e51b815260040161028b906151e8565b6000838152600782016020908152604091829020805460ff19166001908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b7791015b60405180910390a2505050565b600080610f206132ee565b60009384526020525050604090206001015490565b610f458a8a8a8a8a8a8a8a612d0c565b610f518a8a8a85612d64565b610d3c8a8a8a84613312565b610f6682610f15565b610f6f816138ce565b610f79838361324d565b50505050565b60036000610f8b61320f565b8054909150600160401b900460ff1680610fb2575080546001600160401b03808416911610155b15610fd05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b0383166110155760405162461bcd60e51b815260040161028b9061521f565b600061101f612ce8565b60050180546001600160a01b0319166001600160a01b03861617905550805460ff60401b19168155604051600080516020615b42833981519152906110659084906151d4565b60405180910390a1505050565b60008061107d612ce8565b600101546001600160a01b031692915050565b6001600160a01b03811633146110b95760405163334bd91960e11b815260040160405180910390fd5b6110c382826138db565b505050565b600260006110d461320f565b8054909150600160401b900460ff16806110fb575080546001600160401b03808416911610155b156111195760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b0384166111ae5760405162461bcd60e51b815260206004820152603760248201527f58324561726e52657761726473506f6f6c3a20696d706163744b65794d616e6160448201527667657220697320746865207a65726f206164647265737360481b606482015260840161028b565b60008351116112155760405162461bcd60e51b815260206004820152602d60248201527f58324561726e52657761726473506f6f6c3a20696e697469616c496d7061637460448201526c4b65797320697320656d70747960981b606482015260840161028b565b61122d600080516020615be28339815191528561324d565b506000611238612ce8565b905060005b845181101561127b5761126985828151811061125b5761125b615276565b602002602001015183613953565b80611273816152a2565b91505061123d565b5050805460ff60401b19168155604051600080516020615b42833981519152906112a69084906151d4565b60405180910390a150505050565b6112cc600080516020615c0283398151915233611d76565b806112ea57506112ea600080516020615b6283398151915233611d76565b61133f5760405162461bcd60e51b81526020600482015260326024820152600080516020615ba28339815191526044820152711030b236b4b71037b9103ab833b930b232b960711b606482015260840161028b565b6001600160a01b0381166113b65760405162461bcd60e51b815260206004820152603860248201527f58324561726e52657761726473506f6f6c3a2078416c6c6f636174696f6e566f60448201527774696e6720697320746865207a65726f206164647265737360401b606482015260840161028b565b60006113c0612ce8565b60090180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080516020615c028339815191526113fd816138ce565b6001600160a01b0382166114235760405162461bcd60e51b815260040161028b90615183565b600061142d612ce8565b60010180546001600160a01b0319166001600160a01b0394909416939093179092555050565b60606000808751118015611468575060008651115b9050600080865111801561147d575060008551115b8451909150151582158015611490575081155b156114af576040518060200160405280600081525093505050506115a2565b604080516c3d913b32b939b4b7b7111d101960991b60208201528151600d818303018152602d90910190915281156115065780866040516020016114f49291906152bb565b60405160208183030381529060405290505b83156115405760006115188b8b613a1f565b9050818160405160200161152d929190615315565b6040516020818303038152906040529150505b821561157a5760006115528989613bfa565b9050818160405160200161156792919061535a565b6040516020818303038152906040529150505b8060405160200161158b91906153a0565b60408051601f198184030181529190529450505050505b95945050505050565b6115b3613db4565b6115bc82613e59565b6115c68282613e71565b5050565b60006115d4612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164491906153c5565b6116605760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906116949086903390600401615427565b602060405180830381865afa1580156116b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d591906153c5565b6116f15760405162461bcd60e51b815260040161028b9061543e565b60008381526006820160205260409020548211156117725760405162461bcd60e51b815260206004820152603860248201527f58324561726e52657761726473506f6f6c3a2064656372656173696e6720756e604482015277646572207265776172647320706f6f6c2062616c616e636560401b606482015260840161028b565b60008381526007820160205260409020805460ff191660011790556000838152600682016020526040812080548492906117ad908490615476565b90915550506000838152600282016020526040812080548492906117d2908490615489565b90915550506000838152600282016020908152604080832054600685018352928190205481518681529283019390935281019190915283907f7edf7f16b6ec1a7be78507b450fd1504bc48e72ff18e5b620a6f0fd24717f49d90606001610f08565b600061183e613f25565b50600080516020615b828339815191525b90565b60008061185d612ce8565b546001600160a01b031692915050565b600080611878612ce8565b60009384526006016020525050604090205490565b336001600160a01b0316826001600160a01b031685600080516020615bc283398151915286856040516118c192919061549c565b60405180910390a4610f79848484612db8565b6118e48989898989898989612d0c565b6109e089898984613312565b60006118fa612ce8565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a91906153c5565b6119865760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906119ba9085903390600401615427565b602060405180830381865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906153c5565b611a175760405162461bcd60e51b815260040161028b906154b5565b600082815260088201602052604090205460ff16611a7b5760405162461bcd60e51b815260206004820152602d6024820152600080516020615c2283398151915260448201526c1a5cc81b9bdd081c185d5cd959609a1b606482015260840161028b565b6000828152600882016020526040808220805460ff1916905551339184917f23a8a3a8a84537d60bdd2345bf190d189d31179dbbb1c6aefe29166ad8f6579a9190a35050565b611ad18888888888888888612d0c565b611adc888888612db8565b5050505050505050565b600080516020615be2833981519152611aff8133611d76565b158015611b145750611b12600033611d76565b155b15611b315760405162461bcd60e51b815260040161028b906154f8565b6000611b3b612ce8565b90506110c38382613953565b600080611b52612ce8565b60009384526008016020525050604090205460ff1690565b6000611b74612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be491906153c5565b611c005760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611c349086903390600401615427565b602060405180830381865afa158015611c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7591906153c5565b611c915760405162461bcd60e51b815260040161028b9061543e565b6000838152600282016020526040902054821115611d165760405162461bcd60e51b815260206004820152603c60248201527f58324561726e52657761726473506f6f6c3a20696e6372656173696e6720616d60448201527b6f756e74206578636565647320617661696c61626c652066756e647360201b606482015260840161028b565b60008381526007820160205260409020805460ff19166001179055600083815260068201602052604081208054849290611d51908490615489565b90915550506000838152600282016020526040812080548492906117d2908490615476565b600080611d816132ee565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611db6612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2691906153c5565b611e425760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc90611e769086903390600401615427565b602060405180830381865afa158015611e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb791906153c5565b611ed35760405162461bcd60e51b815260040161028b9061543e565b600083815260078201602052604090205482151560ff909116151503611f4d5760405162461bcd60e51b815260206004820152603b6024820152600080516020615b0283398151915260448201527a697320616c726561647920696e206465736972656420737461746560281b606482015260840161028b565b600083815260088201602052604090205460ff1615611f7e5760405162461bcd60e51b815260040161028b906151e8565b81611fc8576000838152600682016020908152604080832054600285019092528220805491929091611fb1908490615489565b909155505060008381526006820160205260408120555b6000838152600782016020908152604091829020805460ff1916851515908117909155915191825284917e931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b779101610f08565b6000612023612ce8565b600181015460405163181efec960e21b8152600481018590529192506001600160a01b03169063607bfb2490602401602060405180830381865afa15801561206f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209391906153c5565b6120af5760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906120e39085903390600401615427565b602060405180830381865afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906153c5565b6121405760405162461bcd60e51b815260040161028b906154b5565b600082815260088201602052604090205460ff16156121af5760405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a2061707020616c72656164792070604482015264185d5cd95960da1b606482015260840161028b565b6000828152600882016020526040808220805460ff1916600117905551339184917facca5e415b8aed07cbd321de9d16effb4a77548130d6e3f218adb63b40d53f489190a35050565b336001600160a01b0316836001600160a01b031686600080516020615bc28339815191528760405161222a9190615561565b60405180910390a461223e85858584613312565b5050505050565b60606000612251612ce8565b6004810180546040805160208084028201810190925282815293945060009084015b8282101561231f57838290600052602060002001805461229290615579565b80601f01602080910402602001604051908101604052809291908181526020018280546122be90615579565b801561230b5780601f106122e05761010080835404028352916020019161230b565b820191906000526020600020905b8154815290600101906020018083116122ee57829003601f168201915b505050505081526020019060010190612273565b5050505091505090565b600080516020615c02833981519152612341816138ce565b6001600160a01b0382166123675760405162461bcd60e51b815260040161028b9061521f565b6000612371612ce8565b60050180546001600160a01b0319166001600160a01b0394909416939093179092555050565b6000806123a2612ce8565b600084815260068201602090815260408083205460028501909252909120549192506123cd91615489565b9392505050565b6000806123df612ce8565b60009384526007016020525050604090205460ff1690565b60405162461bcd60e51b815260206004820152604d6024820152600080516020615c8283398151915260448201527f206e6f7420616363657074206261746368207472616e7366657273206f66204560648201526c52433131353520746f6b656e7360981b608482015260009060a40161028b565b600080612477612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e791906153c5565b6125035760405162461bcd60e51b815260040161028b906153e2565b600083815260028201602052604081208054869290612523908490615489565b909155505080546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a291906153c5565b6126015760405162461bcd60e51b815260206004820152602a60248201527f58324561726e52657761726473506f6f6c3a206465706f736974207472616e7360448201526919995c8819985a5b195960b21b606482015260840161028b565b604051848152339084907fb129470ed4a80566812579bd667bb40c9cc246b5470797f9291f8a27cd3d16309060200160405180910390a35060019392505050565b61264a613f6e565b6000612654612ce8565b600181015460405163181efec960e21b8152600481018690529192506001600160a01b03169063607bfb2490602401602060405180830381865afa1580156126a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c491906153c5565b6126e05760405162461bcd60e51b815260040161028b906153e2565b600181015460405163238e8a7760e21b81526001600160a01b0390911690638e3a29dc906127149086903390600401615427565b602060405180830381865afa158015612731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275591906153c5565b6127715760405162461bcd60e51b815260040161028b906154b5565b60008381526002820160205260409020548411156127d55760405162461bcd60e51b815260206004820152602d6024820152600080516020615b2283398151915260448201526c66696369656e742066756e647360981b606482015260840161028b565b80546040516370a0823160e01b815285916001600160a01b0316906370a0823190612804903090600401614557565b602060405180830381865afa158015612821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284591906155b3565b10156128635760405162461bcd60e51b815260040161028b906155cc565b6001810154604051631772503b60e01b8152600481018590526000916001600160a01b031690631772503b90602401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d3919061561d565b90508482600201600086815260200190815260200160002060008282546128fa9190615476565b9091555050815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612930908490899060040161563a565b6020604051808303816000875af115801561294f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297391906153c5565b61298f5760405162461bcd60e51b815260040161028b90615653565b806001600160a01b0316847fd9ffa9a1a748d0d5a7264f97f319a08a8d4925854093354e05965ff93e46d8048733876040516129cd939291906156a7565b60405180910390a350506110c3613fa4565b6129e882610f15565b6129f1816138ce565b610f7983836138db565b60405162461bcd60e51b815260206004820152603a6024820152600080516020615c82833981519152604482015279206e6f7420616363657074204552433131353520746f6b656e7360301b606482015260009060840161028b565b600080612a62612ce8565b60009384526002016020525050604090205490565b336001600160a01b0316826001600160a01b031685600080516020615bc2833981519152866040516118c19190615561565b600080516020615be2833981519152612ac28133611d76565b158015612ad75750612ad5600033611d76565b155b15612af45760405162461bcd60e51b815260040161028b906154f8565b6000612afe612ce8565b905060008160030184604051612b1491906156d1565b908152602001604051809103902054905060008111612b755760405162461bcd60e51b815260206004820181905260248201527f58324561726e52657761726473506f6f6c3a204b6579206e6f7420666f756e64604482015260640161028b565b60048201805460009190612b8b90600190615476565b81548110612b9b57612b9b615276565b906000526020600020018054612bb090615579565b80601f0160208091040260200160405190810160405280929190818152602001828054612bdc90615579565b8015612c295780601f10612bfe57610100808354040283529160200191612c29565b820191906000526020600020905b815481529060010190602001808311612c0c57829003601f168201915b505050505090508083600401600184612c429190615476565b81548110612c5257612c52615276565b906000526020600020019081612c68919061573b565b50818360030182604051612c7c91906156d1565b9081526040519081900360200190205560048301805480612c9f57612c9f6157fa565b600190038181906000526020600020016000612cbb9190614509565b90558260030185604051612ccf91906156d1565b9081526020016040518091039020600090555050505050565b7f7c0dcc5654efea34bf150fefe2d7f927494d4026026590e81037cb4c7a9cdc0090565b6000612d1b8686868686611453565b9050336001600160a01b0316876001600160a01b03168a600080516020615bc28339815191528b85604051612d5192919061549c565b60405180910390a4505050505050505050565b336001600160a01b0316826001600160a01b0316857fc56b89dcf339c479f6e2af79e456c592b86e3014b888582db81d00ff7c51c1c68685604051612daa92919061549c565b60405180910390a450505050565b612dc0613f6e565b6000612dca612ce8565b600085815260088201602052604090205490915060ff1615612dfe5760405162461bcd60e51b815260040161028b906151e8565b600181015460405163181efec960e21b8152600481018690526001600160a01b039091169063607bfb2490602401602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6d91906153c5565b612e895760405162461bcd60e51b815260040161028b906153e2565b600181015460405163b58a754760e01b81526001600160a01b039091169063b58a754790612ebd9087903390600401615427565b602060405180830381865afa158015612eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efe91906153c5565b612f1a5760405162461bcd60e51b815260040161028b90615810565b80546040516370a0823160e01b815284916001600160a01b0316906370a0823190612f49903090600401614557565b602060405180830381865afa158015612f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8a91906155b3565b1015612fa85760405162461bcd60e51b815260040161028b906155cc565b600084815260078201602052604090205460ff161561301c576000848152600682016020526040902054831115612ff15760405162461bcd60e51b815260040161028b9061585b565b600084815260068201602052604081208054859290613011908490615476565b909155506130729050565b600084815260028201602052604090205483111561304c5760405162461bcd60e51b815260040161028b906158b2565b60008481526002820160205260408120805485929061306c908490615476565b90915550505b805460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906130a3908590879060040161563a565b6020604051808303816000875af11580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e691906153c5565b6131025760405162461bcd60e51b815260040161028b90615653565b6005810154604051630b7af06960e41b81526001600160a01b039091169063b7af069090613136908590889060040161563a565b600060405180830381600087803b15801561315057600080fd5b505af1925050508015613161575060015b6132065761316d6158f7565b806308c379a0036131b75750613181615912565b8061318c57506131b9565b600080516020615c42833981519152816040516131a9919061599b565b60405180910390a150613206565b505b3d8080156131e3576040519150601f19603f3d011682016040523d82523d6000602084013e6131e8565b606091505b50600080516020615c42833981519152816040516131a991906159c5565b506110c3613fa4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61323b613fb5565b565b613245613fb5565b61323b613fda565b6000806132586132ee565b90506132648484611d76565b6132e4576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561329a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109b3565b60009150506109b3565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61331a613f6e565b600081116133795760405162461bcd60e51b815260206004820152602660248201527f58324561726e52657761726473506f6f6c3a20616374696f6e526f756e64206960448201526573207a65726f60d01b606482015260840161028b565b6000613383612ce8565b60098101549091506001600160a01b03161580159061341a57508060090160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341691906155b3565b8211155b6134835760405162461bcd60e51b815260206004820152603460248201527f58324561726e52657761726473506f6f6c3a20616374696f6e526f756e6420656044820152731e18d959591cc818dd5c9c995b9d081c9bdd5b9960621b606482015260840161028b565b600085815260088201602052604090205460ff16156134b45760405162461bcd60e51b815260040161028b906151e8565b600181015460405163181efec960e21b8152600481018790526001600160a01b039091169063607bfb2490602401602060405180830381865afa1580156134ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352391906153c5565b61353f5760405162461bcd60e51b815260040161028b906153e2565b600181015460405163b58a754760e01b81526001600160a01b039091169063b58a7547906135739088903390600401615427565b602060405180830381865afa158015613590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b491906153c5565b6135d05760405162461bcd60e51b815260040161028b90615810565b80546040516370a0823160e01b815285916001600160a01b0316906370a08231906135ff903090600401614557565b602060405180830381865afa15801561361c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364091906155b3565b101561365e5760405162461bcd60e51b815260040161028b906155cc565b600085815260078201602052604090205460ff16156136d25760008581526006820160205260409020548411156136a75760405162461bcd60e51b815260040161028b9061585b565b6000858152600682016020526040812080548692906136c7908490615476565b909155506137289050565b60008581526002820160205260409020548411156137025760405162461bcd60e51b815260040161028b906158b2565b600085815260028201602052604081208054869290613722908490615476565b90915550505b805460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90613759908690889060040161563a565b6020604051808303816000875af1158015613778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379c91906153c5565b6137b85760405162461bcd60e51b815260040161028b90615653565b6005810154604051635801b70f60e01b81526001600160a01b038581166004830152602482018890526044820185905290911690635801b70f90606401600060405180830381600087803b15801561380f57600080fd5b505af1925050508015613820575060015b6138c55761382c6158f7565b806308c379a0036138765750613840615912565b8061384b5750613878565b600080516020615c4283398151915281604051613868919061599b565b60405180910390a1506138c5565b505b3d8080156138a2576040519150601f19603f3d011682016040523d82523d6000602084013e6138a7565b606091505b50600080516020615c428339815191528160405161386891906159c5565b50610f79613fa4565b6138d88133613fe2565b50565b6000806138e66132ee565b90506138f28484611d76565b156132e4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109b3565b806003018260405161396591906156d1565b9081526020016040518091039020546000146139d15760405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a204b657920616c72656164792065604482015264786973747360d81b606482015260840161028b565b60048101805460018101825560009182526020909120016139f2838261573b565b5060048101546040516003830190613a0b9085906156d1565b908152604051908190036020019020555050565b60608151835114613a7e5760405162461bcd60e51b81526020600482015260356024820152600080516020615c62833981519152604482015274383aba103632b733ba3439903337b910283937b7b360591b606482015260840161028b565b6000604051602001613a8f906159fe565b604051602081830303815290604052905060005b8451811015613bd057613ace858281518110613ac157613ac1615276565b602002602001015161400d565b15613b685781858281518110613ae657613ae6615276565b6020026020010151858381518110613b0057613b00615276565b6020026020010151604051602001613b1a93929190615a0b565b604051602081830303815290604052915060018551613b399190615476565b811015613b635781604051602001613b519190615a7c565b60405160208183030381529060405291505b613bbe565b60405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a20496e76616c69642070726f6f66604482015264207479706560d81b606482015260840161028b565b80613bc8816152a2565b915050613aa3565b5080604051602001613be291906153a0565b60408051808303601f19018152919052949350505050565b60608151835114613c5a5760405162461bcd60e51b81526020600482015260366024820152600080516020615c628339815191526044820152751c1d5d081b195b99dd1a1cc8199bdc88125b5c1858dd60521b606482015260840161028b565b6000604051602001613c6b906159fe565b604051602081830303815290604052905060005b8351811015613bd057613caa858281518110613c9d57613c9d615276565b6020026020010151614170565b15613d4c5781858281518110613cc257613cc2615276565b6020026020010151613cec868481518110613cdf57613cdf615276565b60200260200101516141a9565b604051602001613cfe93929190615aa1565b604051602081830303815290604052915060018451613d1d9190615476565b811015613d475781604051602001613d359190615a7c565b60405160208183030381529060405291505b613da2565b60405162461bcd60e51b815260206004820152602560248201527f58324561726e52657761726473506f6f6c3a20496e76616c696420696d70616360448201526474206b657960d81b606482015260840161028b565b80613dac816152a2565b915050613c7f565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613e3b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613e2f600080516020615b82833981519152546001600160a01b031690565b6001600160a01b031614155b1561323b5760405163703e46dd60e11b815260040160405180910390fd5b600080516020615b628339815191526115c6816138ce565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ecb575060408051601f3d908101601f19168201909252613ec8918101906155b3565b60015b613eea5781604051634c9c8ce360e01b815260040161028b9190614557565b600080516020615b828339815191528114613f1b57604051632a87526960e21b81526004810182905260240161028b565b6110c3838361423b565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461323b5760405163703e46dd60e11b815260040160405180910390fd5b6000613f78614291565b805490915060011901613f9e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613fae614291565b6001905550565b613fbd6142b5565b61323b57604051631afcd79f60e31b815260040160405180910390fd5b613fa4613fb5565b613fec8282611d76565b6115c657808260405163e2517d3f60e01b815260040161028b92919061563a565b60405164696d61676560d81b6020820152600090602501604051602081830303815290604052805190602001208260405160200161404b91906156d1565b6040516020818303038152906040528051906020012014806140ba5750604051636c696e6b60e01b602082015260240160405160208183030381529060405280519060200120826040516020016140a291906156d1565b60405160208183030381529060405280519060200120145b806141125750604051631d195e1d60e21b602082015260240160405160208183030381529060405280519060200120826040516020016140fa91906156d1565b60405160208183030381529060405280519060200120145b806109b3575060405164766964656f60d81b6020820152602501604051602081830303815290604052805190602001208260405160200161415391906156d1565b604051602081830303815290604052805190602001201492915050565b60008061417b612ce8565b90506000816003018460405161419191906156d1565b90815260200160405180910390205411915050919050565b606060006141b6836142cf565b60010190506000816001600160401b038111156141d5576141d56145ba565b6040519080825280601f01601f1916602001820160405280156141ff576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461420957509392505050565b614244826143a5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115614289576110c38282614401565b6115c661446e565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006142bf61320f565b54600160401b900460ff16919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061430e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614338576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061435657662386f26fc10000830492506010015b6305f5e100831061436e576305f5e100830492506008015b612710831061438257612710830492506004015b60648310614394576064830492506002015b600a83106109b35760010192915050565b806001600160a01b03163b6000036143d25780604051634c9c8ce360e01b815260040161028b9190614557565b600080516020615b8283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161441e91906156d1565b600060405180830381855af49150503d8060008114614459576040519150601f19603f3d011682016040523d82523d6000602084013e61445e565b606091505b50915091506115a285838361448d565b341561323b5760405163b398979f60e01b815260040160405180910390fd5b6060826144a25761449d826144e0565b6123cd565b81511580156144b957506001600160a01b0384163b155b156144d95783604051639996b31560e01b815260040161028b9190614557565b5092915050565b8051156144f05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461451590615579565b6000825580601f10614525575050565b601f0160209004906000526020600020908101906138d891905b80821115614553576000815560010161453f565b5090565b6001600160a01b0391909116815260200190565b60006020828403121561457d57600080fd5b81356001600160e01b0319811681146123cd57600080fd5b6001600160a01b03811681146138d857600080fd5b80356145b581614595565b919050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156145f5576145f56145ba565b6040525050565b60006001600160401b03821115614615576146156145ba565b5060051b60200190565b600082601f83011261463057600080fd5b81356001600160401b03811115614649576146496145ba565b604051614660601f8301601f1916602001826145d0565b81815284602083860101111561467557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126146a357600080fd5b813560206146b0826145fc565b6040516146bd82826145d0565b83815260059390931b85018201928281019150868411156146dd57600080fd5b8286015b8481101561471c5780356001600160401b038111156147005760008081fd5b61470e8986838b010161461f565b8452509183019183016146e1565b509695505050505050565b600082601f83011261473857600080fd5b81356020614745826145fc565b60405161475282826145d0565b83815260059390931b850182019282810191508684111561477257600080fd5b8286015b8481101561471c5780358352918301918301614776565b60008060008060008060008060006101208a8c0312156147ac57600080fd5b8935985060208a013597506147c360408b016145aa565b965060608a01356001600160401b03808211156147df57600080fd5b6147eb8d838e01614692565b975060808c013591508082111561480157600080fd5b61480d8d838e01614692565b965060a08c013591508082111561482357600080fd5b61482f8d838e01614692565b955060c08c013591508082111561484557600080fd5b6148518d838e01614727565b945060e08c013591508082111561486757600080fd5b6148738d838e0161461f565b93506101008c013591508082111561488a57600080fd5b506148978c828d0161461f565b9150509295985092959850929598565b600080600080600060a086880312156148bf57600080fd5b85356148ca81614595565b945060208601356148da81614595565b935060408601356148ea81614595565b925060608601356148fa81614595565b9150608086013561490a81614595565b809150509295509295909350565b6000806000806080858703121561492e57600080fd5b843561493981614595565b9350602085013561494981614595565b92506040850135915060608501356001600160401b0381111561496b57600080fd5b6149778782880161461f565b91505092959194509250565b60006020828403121561499557600080fd5b5035919050565b6000806000806000806000806000806101408b8d0312156149bc57600080fd5b8a35995060208b013598506149d360408c016145aa565b975060608b01356001600160401b03808211156149ef57600080fd5b6149fb8e838f01614692565b985060808d0135915080821115614a1157600080fd5b614a1d8e838f01614692565b975060a08d0135915080821115614a3357600080fd5b614a3f8e838f01614692565b965060c08d0135915080821115614a5557600080fd5b614a618e838f01614727565b955060e08d0135915080821115614a7757600080fd5b614a838e838f0161461f565b94506101008d0135915080821115614a9a57600080fd5b50614aa78d828e0161461f565b9250506101208b013590509295989b9194979a5092959850565b60008060408385031215614ad457600080fd5b823591506020830135614ae681614595565b809150509250929050565b600060208284031215614b0357600080fd5b81356123cd81614595565b60008060408385031215614b2157600080fd5b8235614b2c81614595565b915060208301356001600160401b03811115614b4757600080fd5b614b5385828601614692565b9150509250929050565b600080600080600060a08688031215614b7557600080fd5b85356001600160401b0380821115614b8c57600080fd5b614b9889838a01614692565b96506020880135915080821115614bae57600080fd5b614bba89838a01614692565b95506040880135915080821115614bd057600080fd5b614bdc89838a01614692565b94506060880135915080821115614bf257600080fd5b614bfe89838a01614727565b93506080880135915080821115614c1457600080fd5b50614c218882890161461f565b9150509295509295909350565b60005b83811015614c49578181015183820152602001614c31565b50506000910152565b60008151808452614c6a816020860160208601614c2e565b601f01601f19169290920160200192915050565b6020815260006123cd6020830184614c52565b60008060408385031215614ca457600080fd5b8235614caf81614595565b915060208301356001600160401b03811115614cca57600080fd5b614b538582860161461f565b60008060408385031215614ce957600080fd5b50508035926020909101359150565b60008060008060808587031215614d0e57600080fd5b84359350602085013592506040850135614d2781614595565b915060608501356001600160401b0381111561496b57600080fd5b60008060008060008060008060006101208a8c031215614d6157600080fd5b8935985060208a01359750614d7860408b016145aa565b965060608a01356001600160401b0380821115614d9457600080fd5b614da08d838e01614692565b975060808c0135915080821115614db657600080fd5b614dc28d838e01614692565b965060a08c0135915080821115614dd857600080fd5b614de48d838e01614692565b955060c08c0135915080821115614dfa57600080fd5b614e068d838e01614727565b945060e08c0135915080821115614e1c57600080fd5b50614e298c828d0161461f565b9250506101008a013590509295985092959850929598565b600080600080600080600080610100898b031215614e5e57600080fd5b8835975060208901359650614e7560408a016145aa565b955060608901356001600160401b0380821115614e9157600080fd5b614e9d8c838d01614692565b965060808b0135915080821115614eb357600080fd5b614ebf8c838d01614692565b955060a08b0135915080821115614ed557600080fd5b614ee18c838d01614692565b945060c08b0135915080821115614ef757600080fd5b614f038c838d01614727565b935060e08b0135915080821115614f1957600080fd5b50614f268b828c0161461f565b9150509295985092959890939650565b600060208284031215614f4857600080fd5b81356001600160401b03811115614f5e57600080fd5b614f6a8482850161461f565b949350505050565b80151581146138d857600080fd5b60008060408385031215614f9357600080fd5b823591506020830135614ae681614f72565b600080600080600060a08688031215614fbd57600080fd5b85359450602086013593506040860135614fd681614595565b925060608601356001600160401b03811115614ff157600080fd5b614ffd8882890161461f565b95989497509295608001359392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561506457603f19888603018452615052858351614c52565b94509285019290850190600101615036565b5092979650505050505050565b600080600080600060a0868803121561508957600080fd5b853561509481614595565b945060208601356150a481614595565b935060408601356001600160401b03808211156150c057600080fd5b614bdc89838a01614727565b6000806000606084860312156150e157600080fd5b833592506020840135915060408401356001600160401b0381111561510557600080fd5b6151118682870161461f565b9150509250925092565b600080600080600060a0868803121561513357600080fd5b853561513e81614595565b9450602086013561514e81614595565b9350604086013592506060860135915060808601356001600160401b0381111561517757600080fd5b614c218882890161461f565b60208082526031908201527f58324561726e52657761726473506f6f6c3a2078324561726e4170707320697360408201527020746865207a65726f206164647265737360781b606082015260800190565b6001600160401b0391909116815260200190565b6020808252602990820152600080516020615c228339815191526040820152681a5cc81c185d5cd95960ba1b606082015260800190565b60208082526037908201527f58324561726e52657761726473506f6f6c3a20766542657474657250617373706040820152766f727420697320746865207a65726f206164647265737360481b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016152b4576152b461528c565b5060010190565b600083516152cd818460208801614c2e565b7016113232b9b1b934b83a34b7b7111d101160791b90830190815283516152fb816011840160208801614c2e565b601160f91b60119290910191820152601201949350505050565b60008351615327818460208801614c2e565b6901611383937b7b3111d160b51b908301908152835161534e81600a840160208801614c2e565b01600a01949350505050565b6000835161536c818460208801614c2e565b6a0161134b6b830b1ba111d160ad1b908301908152835161539481600b840160208801614c2e565b01600b01949350505050565b600082516153b2818460208701614c2e565b607d60f81b920191825250600101919050565b6000602082840312156153d757600080fd5b81516123cd81614f72565b60208082526025908201527f58324561726e52657761726473506f6f6c3a2061707020646f6573206e6f7420604082015264195e1a5cdd60da1b606082015260800190565b9182526001600160a01b0316602082015260400190565b6020808252602a90820152600080516020615ba28339815191526040820152691030b8381030b236b4b760b11b606082015260800190565b818103818111156109b3576109b361528c565b808201808211156109b3576109b361528c565b828152604060208201526000614f6a6040830184614c52565b60208082526023908201527f58324561726e52657761726473506f6f6c3a206e6f7420616e2061707020616460408201526236b4b760e91b606082015260800190565b60208082526043908201527f58324561726e52657761726473506f6f6c3a2073656e646572206973206e6f7460408201527f20616e2061646d696e206e6f72206861732074686520726571756972656420726060820152626f6c6560e81b608082015260a00190565b90815260406020820181905260009082015260600190565b600181811c9082168061558d57607f821691505b6020821081036155ad57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156155c557600080fd5b5051919050565b60208082526031908201527f58324561726e52657761726473506f6f6c3a20696e73756666696369656e7420604082015270199d5b991cc81bdb8818dbdb9d1c9858dd607a1b606082015260800190565b60006020828403121561562f57600080fd5b81516123cd81614595565b6001600160a01b03929092168252602082015260400190565b60208082526034908201527f58324561726e52657761726473506f6f6c3a20416c6c6f636174696f6e207472604082015273185b9cd9995c881d1bc8185c1c0819985a5b195960621b606082015260800190565b8381526001600160a01b03831660208201526060604082018190526000906115a290830184614c52565b600082516156e3818460208701614c2e565b9190910192915050565b601f8211156110c357600081815260208120601f850160051c810160208610156157145750805b601f850160051c820191505b8181101561573357828155600101615720565b505050505050565b81516001600160401b03811115615754576157546145ba565b615768816157628454615579565b846156ed565b602080601f83116001811461579d57600084156157855750858301515b600019600386901b1c1916600185901b178555615733565b600085815260208120601f198616915b828110156157cc578886015182559484019460019091019084016157ad565b50858210156157ea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b6020808252602b908201527f58324561726e52657761726473506f6f6c3a206e6f742061207265776172642060408201526a3234b9ba3934b13aba37b960a91b606082015260800190565b60208082526037908201527f58324561726e52657761726473506f6f6c3a206e6f7420656e6f7567682066756040820152761b991cc81a5b881d1a19481c995dd85c991cc81c1bdbdb604a1b606082015260800190565b6020808252603790820152600080516020615b2283398151915260408201527666696369656e7420617661696c61626c652066756e647360481b606082015260800190565b600060033d111561184f5760046000803e5060005160e01c90565b600060443d10156159205790565b6040516003193d81016004833e81513d6001600160401b03808311602484018310171561594f57505050505090565b82850191508151818111156159675750505050505090565b843d87010160208285010111156159815750505050505090565b615990602082860101876145d0565b509095945050505050565b6040815260006159ae6040830184614c52565b828103602093840152600081529190910192915050565b60408152600f60408201526e2637bb96b632bb32b61032b93937b960891b60608201526080602082015260006123cd6080830184614c52565b607b60f81b815260010190565b60008451615a1d818460208901614c2e565b601160f91b9083018181528551909190615a3e816001850160208a01614c2e565b61111d60f11b60019390910192830152600382018190528451615a68816004850160208901614c2e565b600492019182015260050195945050505050565b60008251615a8e818460208701614c2e565b600b60fa1b920191825250600101919050565b60008451615ab3818460208901614c2e565b601160f91b9083019081528451615ad1816001840160208901614c2e565b61111d60f11b600192909101918201528351615af4816003840160208801614c2e565b016003019594505050505056fe58324561726e52657761726473506f6f6c3a207265776172647320706f6f6c2058324561726e52657761726473506f6f6c3a206170702068617320696e737566c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc58324561726e52657761726473506f6f6c3a2063616c6c6572206973206e6f744811710b0c25cc7e05baf214b3a939cf893f1cbff4d0b219e680f069a4f204a28126eb6027e2d11d8787280faa15fe8ec1ac780cdd182c8ce003d51018705f9856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b758324561726e52657761726473506f6f6c3a20646973747269627574696f6e2060d31a41349f4f78a019d64d088a78b27da96d17d6b2de5bac97516e9c0df12858324561726e52657761726473506f6f6c3a204d69736d61746368656420696e58324561726e52657761726473506f6f6c3a20636f6e747261637420646f6573a2646970667358221220323a95592ec13afc004246d6739c7b03fc8b3340d53f37206b1312e9a682e95364736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
