{
  "_format": "hh3-artifact-1",
  "contractName": "IssuanceAllocatorTestHarness",
  "sourceName": "contracts/test/allocate/IssuanceAllocatorTestHarness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_graphToken",
          "type": "address"
        }
      ],
      "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": "defaultTarget",
          "type": "address"
        }
      ],
      "name": "CannotSetAllocationForDefaultTarget",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "CannotSetDefaultToAllocatedTarget",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EnforcedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ExpectedPause",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "GovernorCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "GraphTokenCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        }
      ],
      "name": "InsufficientAllocationAvailable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "oldRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "unallocated",
          "type": "uint256"
        }
      ],
      "name": "InsufficientUnallocatedForRateDecrease",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TargetAddressCannotBeZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "TargetDoesNotSupportIIssuanceTarget",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxBlock",
          "type": "uint256"
        }
      ],
      "name": "ToBlockOutOfRange",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "DefaultTargetUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "fromBlock",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        }
      ],
      "name": "IssuanceDistributed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldIssuancePerBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newIssuancePerBlock",
          "type": "uint256"
        }
      ],
      "name": "IssuancePerBlockUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "fromBlock",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        }
      ],
      "name": "IssuanceSelfMintAllowance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "fromBlock",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        }
      ],
      "name": "IssuanceSelfMintAllowanceAggregate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "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": "enum SelfMintingEventMode",
          "name": "oldMode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum SelfMintingEventMode",
          "name": "newMode",
          "type": "uint8"
        }
      ],
      "name": "SelfMintingEventModeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "offsetBefore",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "offsetAfter",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "fromBlock",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        }
      ],
      "name": "SelfMintingOffsetAccumulated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "offsetBefore",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "offsetAfter",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalForPeriod",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "fromBlock",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "toBlock",
          "type": "uint256"
        }
      ],
      "name": "SelfMintingOffsetReconciled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAllocatorMintingRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newSelfMintingRate",
          "type": "uint256"
        }
      ],
      "name": "TargetAllocationUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GOVERNOR_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MILLION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "OPERATOR_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "distributeIssuance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "distributePendingIssuance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "toBlockNumber",
          "type": "uint256"
        }
      ],
      "name": "distributePendingIssuance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allocatedRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toBlockNumber",
          "type": "uint256"
        }
      ],
      "name": "exposedDistributePendingProportionally",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blocks",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "available",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allocatedTotal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toBlockNumber",
          "type": "uint256"
        }
      ],
      "name": "exposedDistributePendingWithFullRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "forceTargetNoChangeNotificationBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDistributionState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "lastDistributionBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastSelfMintingBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfMintingOffset",
              "type": "uint256"
            }
          ],
          "internalType": "struct DistributionState",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIssuancePerBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMembers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSelfMintingEventMode",
      "outputs": [
        {
          "internalType": "enum SelfMintingEventMode",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "getTargetAllocation",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "totalAllocationRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocatorMintingRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfMintingRate",
              "type": "uint256"
            }
          ],
          "internalType": "struct Allocation",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getTargetAt",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTargetCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "getTargetData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "allocatorMintingRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfMintingRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastChangeNotifiedBlock",
              "type": "uint256"
            }
          ],
          "internalType": "struct AllocationTarget",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "getTargetIssuancePerBlock",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "allocatorIssuanceRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocatorIssuanceBlockAppliedTo",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfIssuanceRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfIssuanceBlockAppliedTo",
              "type": "uint256"
            }
          ],
          "internalType": "struct TargetIssuancePerBlock",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTargets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalAllocation",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "totalAllocationRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "allocatorMintingRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "selfMintingRate",
              "type": "uint256"
            }
          ],
          "internalType": "struct Allocation",
          "name": "allocation",
          "type": "tuple"
        }
      ],
      "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": "address",
          "name": "_governor",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "notifyTarget",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setDefaultTarget",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minDistributedBlock",
          "type": "uint256"
        }
      ],
      "name": "setDefaultTarget",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newIssuancePerBlock",
          "type": "uint256"
        }
      ],
      "name": "setIssuancePerBlock",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newIssuancePerBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minDistributedBlock",
          "type": "uint256"
        }
      ],
      "name": "setIssuancePerBlock",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum SelfMintingEventMode",
          "name": "newMode",
          "type": "uint8"
        }
      ],
      "name": "setSelfMintingEventMode",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuanceTarget",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allocatorMintingRate",
          "type": "uint256"
        }
      ],
      "name": "setTargetAllocation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuanceTarget",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allocatorMintingRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "selfMintingRate",
          "type": "uint256"
        }
      ],
      "name": "setTargetAllocation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuanceTarget",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allocatorMintingRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "selfMintingRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minDistributedBlock",
          "type": "uint256"
        }
      ],
      "name": "setTargetAllocation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a03461012e57601f612def38819003918201601f19168301916001600160401b038311848410176101325780849260209460405283398101031261012e57516001600160a01b0381169081900361012e57801561011f576080525f516020612dcf5f395f51905f525460ff8160401c16610110576002600160401b03196001600160401b038216016100ba575b604051612c88908161014782396080518181816120670152818161214e0152818161228001526128f30152f35b6001600160401b0319166001600160401b039081175f516020612dcf5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61008d565b63f92ee8a960e01b5f5260045ffd5b6369e4eeb360e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611066575080631156bdc11461103757806313a7855d14610ffd57806315d3b5d814610f84578063248a9ca314610f665780632f2ff15d14610f355780633067cb4c14610e8d57806332bc934c14610e7057806336568abe14610e2c578063389ed26714610e055780633af5b07314610dda5780633f4ba83a14610d5c578063443990fa14610d1a5780634887693c14610ce757806348c3c62e14610c6157806349bdfcb014610c245780634a1293b714610bfe57806352c0e18c14610bb85780635c975abb14610b8a57806363fe3b5614610b21578063647b368214610adb578063697cf32214610aa657806379d5fc5414610a835780637c92330b14610a335780638456cb59146109b257806384c484221461095257806387ee921c146109295780639010d07c146108d857806391d148541461088357806393c911a814610855578063a217fddf1461083b578063a3246ad3146107bb578063c2cb354414610773578063c4d66de814610401578063c627b7a4146103d0578063ca15c8731461039a578063ccc5749014610373578063d012a15b14610322578063d48beb1b146102fd578063d547741f146102c7578063e038978e146102a3578063ee56977e146102335763f5b541a6146101f5575f80fd5b3461022f575f36600319011261022f5760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b3461022f575f36600319011261022f5761024b6112bb565b5060606102566115c3565b6001810154906003600282015491015490604051926102748461127d565b8352602083015260408201526102a160405180926040809180518452602081015160208501520151910152565bf35b3461022f57606036600319011261022f576102c56044356024356004356121ee565b005b3461022f57604036600319011261022f576102c56004356102e661114f565b906102f86102f3826112fa565b61144e565b61164d565b3461022f57608036600319011261022f576102c5606435604435602435600435611fe4565b3461022f57604036600319011261022f576020610359610340611165565b6103486113a9565b610350611494565b60243590611e6e565b5f5f516020612bf35f395f51905f525d6040519015158152f35b3461022f575f36600319011261022f5760206040515f516020612b735f395f51905f528152f35b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f52602052602060405f2054604051908152f35b3461022f57604036600319011261022f576103e96113a9565b6103f1611494565b60206103596024356004356114c9565b3461022f57602036600319011261022f5761041a611165565b5f516020612c335f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161076b575b6001149081610761575b159081610758575b506107495767ffffffffffffffff1981166001175f516020612c335f395f51905f52558261071d575b5061048b612ac7565b610493612ac7565b6001600160a01b03811690811561070e575f516020612b735f395f51905f525f8181525f516020612b935f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556105f993929182905f516020612af35f395f51905f529080a45f516020612bd35f395f51905f525f8181525f516020612b935f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b935f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a4612355565b6106bc575b506106076115c3565b600581018054600160401b8110156106a8576106289160018201815561134b565b81549060018060a01b039060031b1b1916905560078101600260ff1982541617905560014391015561065657005b60ff60401b195f516020612c335f395f51905f5254165f516020612c335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b735f395f51905f525f525f516020612b135f395f51905f52602052610707907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e6129b3565b50816105fe565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612c335f395f51905f525582610482565b63f92ee8a960e01b5f5260045ffd5b90501584610459565b303b159150610451565b849150610447565b3461022f57608036600319011261022f576020610359610791611165565b6107996113a9565b6107a1611494565b6064359060443590602435906001600160a01b0316611b07565b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b818110610825576108218561081581870382611299565b6040519182918261117b565b0390f35b82548452602090930192600192830192016107fe565b3461022f575f36600319011261022f5760206040515f8152f35b3461022f575f36600319011261022f57602060ff60076108736115c3565b0154166102a160405180926111bd565b3461022f57604036600319011261022f5761089c61114f565b6004355f525f516020612b935f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461022f57604036600319011261022f576004355f525f516020612b135f395f51905f52602052602061091060243560405f2061134b565b905460405160039290921b1c6001600160a01b03168152f35b3461022f57602036600319011261022f576020610910600435600561094c6115c3565b0161134b565b3461022f57602036600319011261022f5761096b611165565b6109736112bb565b50600461097e6115c3565b019060018060a01b03165f52602052606060405f20600181549101546109a48183611318565b91604051926102748461127d565b3461022f575f36600319011261022f576109ca6113f2565b5f516020612bb35f395f51905f525460ff8116610a245760019060ff1916175f516020612bb35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b3461022f57604036600319011261022f576020610a4e611165565b60243590610a5a6113a9565b6004610a646115c3565b019060018060a01b03165f52825280600260405f200155604051908152f35b3461022f575f36600319011261022f576020610a9d6115c3565b54604051908152f35b3461022f57602036600319011261022f576020610359610ac4611165565b610acc6113a9565b610ad4611494565b4390611e6e565b3461022f57606036600319011261022f576020610359610af9611165565b610b016113a9565b610b09611494565b439060443590602435906001600160a01b0316611b07565b3461022f575f36600319011261022f576005610b3b6115c3565b016040519081602082549182815201915f5260205f20905f5b818110610b6b576108218561081581870382611299565b82546001600160a01b0316845260209093019260019283019201610b54565b3461022f575f36600319011261022f57602060ff5f516020612bb35f395f51905f5254166040519015158152f35b3461022f57602036600319011261022f57610bd16113a9565b610bd9611494565b6020610be66004356116a2565b5f5f516020612bf35f395f51905f525d604051908152f35b3461022f575f36600319011261022f5760206005610c1a6115c3565b0154604051908152f35b3461022f575f36600319011261022f576001610c3e6115c3565b01544303610c52576020435b604051908152f35b6020610c5c611e24565b610c4a565b3461022f57602036600319011261022f57610c7a611165565b610c826112bb565b506004610c8d6115c3565b019060018060a01b03165f52602052606060405f20600260405191610cb18361127d565b8054835260018101546020840152015460408201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f576020610359610d05611165565b610d0d6113a9565b610d15611494565b611d9f565b3461022f57604036600319011261022f576020610359610d38611165565b610d406113a9565b610d48611494565b4390602435906001600160a01b0316611857565b3461022f575f36600319011261022f57610d746113f2565b5f516020612bb35f395f51905f525460ff811615610dcb5760ff19165f516020612bb35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461022f575f36600319011261022f57610df26113a9565b610dfa611494565b6020610be6436116a2565b3461022f575f36600319011261022f5760206040515f516020612bd35f395f51905f528152f35b3461022f57604036600319011261022f57610e4561114f565b336001600160a01b03821603610e61576102c59060043561164d565b63334bd91960e11b5f5260045ffd5b3461022f575f36600319011261022f576020604051620f42408152f35b3461022f57602036600319011261022f576080610ea8611165565b5f6060604051610eb781611261565b8281528260208201528260408201520152610ed06115c3565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610f0681611261565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b3461022f57604036600319011261022f576102c5600435610f5461114f565b90610f616102f3826112fa565b611607565b3461022f57602036600319011261022f576020610c4a6004356112fa565b3461022f575f36600319011261022f576060610f9e6112bb565b610fd7610fa96115c3565b6006610fc582545f80526004840160205260405f2054906112d9565b918285520154908160408501526112d9565b60208201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f57600435600381101561022f5761102d6020916110286113a9565b6111de565b6040519015158152f35b3461022f57602036600319011261022f576110506113a9565b611058611494565b6020610359436004356114c9565b3461022f57602036600319011261022f576004359063ffffffff60e01b821680920361022f57602091631e768dff60e21b811490811561113e575b811561112d575b811561111c575b81156110bd575b5015158152f35b631cf1473b60e31b8114915081156110d7575b50836110b6565b635a05180f60e01b8114915081156110f1575b50836110d0565b637965db0b60e01b81149150811561110b575b50836110ea565b6301ffc9a760e01b14905083611104565b632461e31760e11b811491506110af565b63a896602d60e01b811491506110a8565b6350d8541d60e01b811491506110a1565b602435906001600160a01b038216820361022f57565b600435906001600160a01b038216820361022f57565b60206040818301928281528451809452019201905f5b81811061119e5750505090565b82516001600160a01b0316845260209384019390920191600101611191565b9060038210156111ca5752565b634e487b7160e01b5f52602160045260245ffd5b60076111e86115c3565b019060ff82541660038110156111ca5760038210156111ca57808214611259576112536040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff8316179055611249845180946111bd565b60208301906111bd565ba1600190565b505050600190565b6080810190811067ffffffffffffffff8211176106a857604052565b6060810190811067ffffffffffffffff8211176106a857604052565b90601f8019910116810190811067ffffffffffffffff8211176106a857604052565b604051906112c88261127d565b5f6040838281528260208201520152565b919082039182116112e657565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b935f395f51905f52602052600160405f20015490565b919082018092116112e657565b805415611337575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015611337575f5260205f2001905f90565b80549190600160401b8310156106a857826113839160016113a79501815561134b565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612b335f395f51905f52602052604090205460ff16156113ce57565b63e2517d3f60e01b5f52336004525f516020612b735f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff161561142a57565b63e2517d3f60e01b5f52336004525f516020612bd35f395f51905f5260245260445ffd5b5f8181525f516020612b935f395f51905f526020908152604080832033845290915290205460ff161561147e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612bf35f395f51905f525c6114ba5760015f516020612bf35f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b6114d16115c3565b8054928383146115ba576114e3611e24565b106115b357611518600582016115126114fb82611325565b905460039190911b1c6001600160a01b0316611d9f565b50611325565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546115458185611318565b85116115995792849281926115867f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c09761158185604099611318565b6112d9565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd48152602082526115fc604083611299565b9051902060ff191690565b61161182826123ed565b918261161c57505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b0316906129b3565b5090565b611657828261248b565b918261166257505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b031690612a16565b818102929181159184041417156112e657565b6116aa612527565b6116b26115c3565b600181018054838111158061184d575b15611833576116d190846112d9565b91821561182d57838154926116e6858561168f565b92826003820154958587105f146118265761170187876112d9565b925b836117a8575b50505050556117166115c3565b9043850361178a575f935b848403611734575b505060039150015590565b61173e90866112d9565b600181018091116112e6577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f80611729565b828110156117a25761179c81846112d9565b93611721565b5f61179c565b6117e86117f0926117bb60058401611325565b905460039190911b1c6001600160a01b03165f9081526004840160205260409020600690930154906112d9565b9054906112d9565b6117fa888261168f565b80841015611815575061180c926121ee565b5f828180611709565b90506118219288611fe4565b61180c565b5f92611703565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b50438411156116c2565b90916118645f848461270d565b1561125957611871611e24565b10611b015761187f81611d9f565b506118966114fb60056118906115c3565b01611325565b5061189f6115c3565b600481019060018060a01b0383165f528160205260405f20916118c460058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611903916001916118f891611318565b940193845490611318565b808611611aeb579160069161191b87611929956112d9565b9055019182549054906112d9565b90556119336115c3565b6001600160a01b0382165f9081526004820160205260409020908315801590611ae4575b156119c257915f6001835f516020612c135f395f51905f5295846040965415806119b7575b6119a4575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b60056119b09201611360565b5f84611981565b50838301541561197c565b5050906119cd6115c3565b916001600160a01b03811690600584019060015b825480821015611ac657846119f6838661134b565b905460039190911b1c6001600160a01b031614611a1657506001016119e1565b905f9692939495961982019182116112e657611383611a38611a51938761134b565b905460039190911b1c6001600160a01b0316918661134b565b8254908115611ab2575f516020612c135f395f51905f52946040946004935f190190611a95611a80838361134b565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611989565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612c135f395f51905f5292935060409150611989565b505f611957565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611b1682848661270d565b156115ba57611b23611e24565b106115b357611b3183611d9f565b50611b426114fb60056118906115c3565b50611b4b6115c3565b600481019060018060a01b0385165f528160205260405f2091611b7060058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ba4916001916118f891611318565b80611baf8688611318565b11611bba8688611318565b90611d8a57506006611bec938693611bd9856115818b611be7976112d9565b9055019384549054906112d9565b611318565b9055611bf66115c3565b6001600160a01b0384165f9081526004820160205260409020908315801590611d81575b15611c86579180600183604095885f516020612c135f395f51905f52989996541580611c7b575b611c68575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611c749201611360565b5f85611c46565b508383015415611c41565b505091611c916115c3565b926001600160a01b03821691600585019160015b835480821015611d625785611cba838761134b565b905460039190911b1c6001600160a01b031614611cda5750600101611ca5565b905f979293949596971982019182116112e657611383611cfd611d16938861134b565b905460039190911b1c6001600160a01b0316918761134b565b8354908115611ab2575f516020612c135f395f51905f52956040956004935f190190611d45611a80838361134b565b555f52016020525f60028482208281558260018201550155611c4e565b50509091505f516020612c135f395f51905f5293945060409250611c4e565b50821515611c1a565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611dfc576004611db86115c3565b01815f52602052600260405f20018054431115611e1d57439055803b1561022f575f8091600460405180948193631efc6b4160e11b83525af18015611e1257611e02575b50600190565b5f611e0c91611299565b5f611dfc565b6040513d5f823e3d90fd5b5050600190565b611e2c6115c3565b611e34612527565b60ff5f516020612bb35f395f51905f525416611e67576003015415611e5f57611e5c436116a2565b90565b611e5c612859565b6001015490565b611e766115c3565b906005820190611e8582611325565b90546001600160a01b038381169660039390931b9190911c169390858514611fd957835460015b818110611f9c575050611ebd611e24565b10611f93576004611ef691611ed186611d9f565b50611edb84611d9f565b500191855f5282602052611383600260405f20015494611325565b6001600160a01b0383165f90815260208290526040808220868352912090808203611f75575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f80611f1c565b50505050505f90565b87611fa7828861134b565b905460039190911b1c6001600160a01b031614611fc657600101611eac565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b939093929192611ff26115c3565b600181015492600184018094116112e657600196956004600584019301975b835481101561210b57612024818561134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919086908061205b575b50506001915001612011565b906120659161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e966120fb575b50604051908152a4855f61204f565b5f61210591611299565b5f6120ec565b509193949590965061211d92506112d9565b908161212a575b50505050565b61213390611325565b905460039190911b1c6001600160a01b0316908115612124577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561022f576040516340c10f1960e01b81526001600160a01b038416600482015260248101829052915f908390604490829084905af1908115611e12575f516020612b535f395f51905f52926020926121de575b50604051908152a45f808080612124565b5f6121e891611299565b5f6121cd565b9190916121f96115c3565b92801580801561234d575b61234657600185015492600184018094116112e65760048601969560050160015b815481101561233b57612238818361134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919085908061226f575b50506001915001612225565b612279908661168f565b90612327577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e96612317575b50604051908152a4845f612263565b5f61232191611299565b5f612308565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612204565b6001600160a01b0381165f9081525f516020612b335f395f51905f52602052604090205460ff166123e8576001600160a01b03165f8181525f516020612b335f395f51905f5260205260408120805460ff191660011790553391905f516020612b735f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b61252f6115c3565b600281019081544381146127085761254781436112d9565b92600182018092116112e6576003830180549060ff5f516020612bb35f395f51905f52541680156126ff575b6126a4575b505043905560068201548061258d5750505050565b60ff60078401541660038110156111ca576002810361265057505060058201805493600490930192905f5b8581106125cf575050505050505b5f808080612124565b806125dc6001928461134b565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612611575b50505050016125b8565b61261a9161168f565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f858186612607565b919390925090600114612666575b5050506125c6565b61266f9161168f565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f808061265e565b6126bb6126b587600688015461168f565b83611318565b80915580820315612578576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f80612578565b50811515612573565b505050565b6001600160a01b03169190821561284a576127266115c3565b6005810161275061273682611325565b905460039190911b1c6001600160a01b0316861491611325565b905460039190911b1c6001600160a01b0316906128385750600490845f520160205260405f208282825414918261282a575b50506115b3571590811591612820575b5061279d5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa908115611e12575f916127e5575b50611dfc5763a5fe861560e01b5f5260045260245ffd5b90506020813d602011612818575b8161280060209383611299565b8101031261022f5751801515810361022f575f6127ce565b3d91506127f3565b905015155f612792565b60010154149050825f612782565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b6128616115c3565b90600182019182549061287482436112d9565b9081156129ac57600183018093116112e6575f94936004600583019201955b825481101561299f576128a6818461134b565b905460039190911b1c6001600160a01b03169081156129965760018060a01b0382165f52876020528460405f2054806128e7575b5050600191505b01612893565b906128f19161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b1561022f576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af1908115611e12576001948992612986575b506040519283525f516020612b535f395f51905f5260204394a4845f6128da565b5f61299091611299565b5f612965565b600191506128e1565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f146115b3578054600160401b8110156106a857612a036129ed82600187940185558461134b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612abf575f1981018181116112e65782545f198101919082116112e657818103612a8a575b50505080548015611ab2575f190190612a6b828261134b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612aaa612a9a6129ed938661134b565b90549060031b1c9283928661134b565b90555f528360205260405f20555f8080612a52565b505050505f90565b60ff5f516020612c335f395f51905f525460401c1615612ae357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d46b54882b4d4a139f908e1d4575b13fb4288eda84825de64ac62fbf8e30007664736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00",
  "deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611066575080631156bdc11461103757806313a7855d14610ffd57806315d3b5d814610f84578063248a9ca314610f665780632f2ff15d14610f355780633067cb4c14610e8d57806332bc934c14610e7057806336568abe14610e2c578063389ed26714610e055780633af5b07314610dda5780633f4ba83a14610d5c578063443990fa14610d1a5780634887693c14610ce757806348c3c62e14610c6157806349bdfcb014610c245780634a1293b714610bfe57806352c0e18c14610bb85780635c975abb14610b8a57806363fe3b5614610b21578063647b368214610adb578063697cf32214610aa657806379d5fc5414610a835780637c92330b14610a335780638456cb59146109b257806384c484221461095257806387ee921c146109295780639010d07c146108d857806391d148541461088357806393c911a814610855578063a217fddf1461083b578063a3246ad3146107bb578063c2cb354414610773578063c4d66de814610401578063c627b7a4146103d0578063ca15c8731461039a578063ccc5749014610373578063d012a15b14610322578063d48beb1b146102fd578063d547741f146102c7578063e038978e146102a3578063ee56977e146102335763f5b541a6146101f5575f80fd5b3461022f575f36600319011261022f5760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b3461022f575f36600319011261022f5761024b6112bb565b5060606102566115c3565b6001810154906003600282015491015490604051926102748461127d565b8352602083015260408201526102a160405180926040809180518452602081015160208501520151910152565bf35b3461022f57606036600319011261022f576102c56044356024356004356121ee565b005b3461022f57604036600319011261022f576102c56004356102e661114f565b906102f86102f3826112fa565b61144e565b61164d565b3461022f57608036600319011261022f576102c5606435604435602435600435611fe4565b3461022f57604036600319011261022f576020610359610340611165565b6103486113a9565b610350611494565b60243590611e6e565b5f5f516020612bf35f395f51905f525d6040519015158152f35b3461022f575f36600319011261022f5760206040515f516020612b735f395f51905f528152f35b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f52602052602060405f2054604051908152f35b3461022f57604036600319011261022f576103e96113a9565b6103f1611494565b60206103596024356004356114c9565b3461022f57602036600319011261022f5761041a611165565b5f516020612c335f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161076b575b6001149081610761575b159081610758575b506107495767ffffffffffffffff1981166001175f516020612c335f395f51905f52558261071d575b5061048b612ac7565b610493612ac7565b6001600160a01b03811690811561070e575f516020612b735f395f51905f525f8181525f516020612b935f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556105f993929182905f516020612af35f395f51905f529080a45f516020612bd35f395f51905f525f8181525f516020612b935f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b935f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a4612355565b6106bc575b506106076115c3565b600581018054600160401b8110156106a8576106289160018201815561134b565b81549060018060a01b039060031b1b1916905560078101600260ff1982541617905560014391015561065657005b60ff60401b195f516020612c335f395f51905f5254165f516020612c335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b735f395f51905f525f525f516020612b135f395f51905f52602052610707907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e6129b3565b50816105fe565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612c335f395f51905f525582610482565b63f92ee8a960e01b5f5260045ffd5b90501584610459565b303b159150610451565b849150610447565b3461022f57608036600319011261022f576020610359610791611165565b6107996113a9565b6107a1611494565b6064359060443590602435906001600160a01b0316611b07565b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b818110610825576108218561081581870382611299565b6040519182918261117b565b0390f35b82548452602090930192600192830192016107fe565b3461022f575f36600319011261022f5760206040515f8152f35b3461022f575f36600319011261022f57602060ff60076108736115c3565b0154166102a160405180926111bd565b3461022f57604036600319011261022f5761089c61114f565b6004355f525f516020612b935f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461022f57604036600319011261022f576004355f525f516020612b135f395f51905f52602052602061091060243560405f2061134b565b905460405160039290921b1c6001600160a01b03168152f35b3461022f57602036600319011261022f576020610910600435600561094c6115c3565b0161134b565b3461022f57602036600319011261022f5761096b611165565b6109736112bb565b50600461097e6115c3565b019060018060a01b03165f52602052606060405f20600181549101546109a48183611318565b91604051926102748461127d565b3461022f575f36600319011261022f576109ca6113f2565b5f516020612bb35f395f51905f525460ff8116610a245760019060ff1916175f516020612bb35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b3461022f57604036600319011261022f576020610a4e611165565b60243590610a5a6113a9565b6004610a646115c3565b019060018060a01b03165f52825280600260405f200155604051908152f35b3461022f575f36600319011261022f576020610a9d6115c3565b54604051908152f35b3461022f57602036600319011261022f576020610359610ac4611165565b610acc6113a9565b610ad4611494565b4390611e6e565b3461022f57606036600319011261022f576020610359610af9611165565b610b016113a9565b610b09611494565b439060443590602435906001600160a01b0316611b07565b3461022f575f36600319011261022f576005610b3b6115c3565b016040519081602082549182815201915f5260205f20905f5b818110610b6b576108218561081581870382611299565b82546001600160a01b0316845260209093019260019283019201610b54565b3461022f575f36600319011261022f57602060ff5f516020612bb35f395f51905f5254166040519015158152f35b3461022f57602036600319011261022f57610bd16113a9565b610bd9611494565b6020610be66004356116a2565b5f5f516020612bf35f395f51905f525d604051908152f35b3461022f575f36600319011261022f5760206005610c1a6115c3565b0154604051908152f35b3461022f575f36600319011261022f576001610c3e6115c3565b01544303610c52576020435b604051908152f35b6020610c5c611e24565b610c4a565b3461022f57602036600319011261022f57610c7a611165565b610c826112bb565b506004610c8d6115c3565b019060018060a01b03165f52602052606060405f20600260405191610cb18361127d565b8054835260018101546020840152015460408201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f576020610359610d05611165565b610d0d6113a9565b610d15611494565b611d9f565b3461022f57604036600319011261022f576020610359610d38611165565b610d406113a9565b610d48611494565b4390602435906001600160a01b0316611857565b3461022f575f36600319011261022f57610d746113f2565b5f516020612bb35f395f51905f525460ff811615610dcb5760ff19165f516020612bb35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461022f575f36600319011261022f57610df26113a9565b610dfa611494565b6020610be6436116a2565b3461022f575f36600319011261022f5760206040515f516020612bd35f395f51905f528152f35b3461022f57604036600319011261022f57610e4561114f565b336001600160a01b03821603610e61576102c59060043561164d565b63334bd91960e11b5f5260045ffd5b3461022f575f36600319011261022f576020604051620f42408152f35b3461022f57602036600319011261022f576080610ea8611165565b5f6060604051610eb781611261565b8281528260208201528260408201520152610ed06115c3565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610f0681611261565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b3461022f57604036600319011261022f576102c5600435610f5461114f565b90610f616102f3826112fa565b611607565b3461022f57602036600319011261022f576020610c4a6004356112fa565b3461022f575f36600319011261022f576060610f9e6112bb565b610fd7610fa96115c3565b6006610fc582545f80526004840160205260405f2054906112d9565b918285520154908160408501526112d9565b60208201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f57600435600381101561022f5761102d6020916110286113a9565b6111de565b6040519015158152f35b3461022f57602036600319011261022f576110506113a9565b611058611494565b6020610359436004356114c9565b3461022f57602036600319011261022f576004359063ffffffff60e01b821680920361022f57602091631e768dff60e21b811490811561113e575b811561112d575b811561111c575b81156110bd575b5015158152f35b631cf1473b60e31b8114915081156110d7575b50836110b6565b635a05180f60e01b8114915081156110f1575b50836110d0565b637965db0b60e01b81149150811561110b575b50836110ea565b6301ffc9a760e01b14905083611104565b632461e31760e11b811491506110af565b63a896602d60e01b811491506110a8565b6350d8541d60e01b811491506110a1565b602435906001600160a01b038216820361022f57565b600435906001600160a01b038216820361022f57565b60206040818301928281528451809452019201905f5b81811061119e5750505090565b82516001600160a01b0316845260209384019390920191600101611191565b9060038210156111ca5752565b634e487b7160e01b5f52602160045260245ffd5b60076111e86115c3565b019060ff82541660038110156111ca5760038210156111ca57808214611259576112536040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff8316179055611249845180946111bd565b60208301906111bd565ba1600190565b505050600190565b6080810190811067ffffffffffffffff8211176106a857604052565b6060810190811067ffffffffffffffff8211176106a857604052565b90601f8019910116810190811067ffffffffffffffff8211176106a857604052565b604051906112c88261127d565b5f6040838281528260208201520152565b919082039182116112e657565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b935f395f51905f52602052600160405f20015490565b919082018092116112e657565b805415611337575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015611337575f5260205f2001905f90565b80549190600160401b8310156106a857826113839160016113a79501815561134b565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612b335f395f51905f52602052604090205460ff16156113ce57565b63e2517d3f60e01b5f52336004525f516020612b735f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff161561142a57565b63e2517d3f60e01b5f52336004525f516020612bd35f395f51905f5260245260445ffd5b5f8181525f516020612b935f395f51905f526020908152604080832033845290915290205460ff161561147e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612bf35f395f51905f525c6114ba5760015f516020612bf35f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b6114d16115c3565b8054928383146115ba576114e3611e24565b106115b357611518600582016115126114fb82611325565b905460039190911b1c6001600160a01b0316611d9f565b50611325565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546115458185611318565b85116115995792849281926115867f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c09761158185604099611318565b6112d9565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd48152602082526115fc604083611299565b9051902060ff191690565b61161182826123ed565b918261161c57505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b0316906129b3565b5090565b611657828261248b565b918261166257505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b031690612a16565b818102929181159184041417156112e657565b6116aa612527565b6116b26115c3565b600181018054838111158061184d575b15611833576116d190846112d9565b91821561182d57838154926116e6858561168f565b92826003820154958587105f146118265761170187876112d9565b925b836117a8575b50505050556117166115c3565b9043850361178a575f935b848403611734575b505060039150015590565b61173e90866112d9565b600181018091116112e6577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f80611729565b828110156117a25761179c81846112d9565b93611721565b5f61179c565b6117e86117f0926117bb60058401611325565b905460039190911b1c6001600160a01b03165f9081526004840160205260409020600690930154906112d9565b9054906112d9565b6117fa888261168f565b80841015611815575061180c926121ee565b5f828180611709565b90506118219288611fe4565b61180c565b5f92611703565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b50438411156116c2565b90916118645f848461270d565b1561125957611871611e24565b10611b015761187f81611d9f565b506118966114fb60056118906115c3565b01611325565b5061189f6115c3565b600481019060018060a01b0383165f528160205260405f20916118c460058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611903916001916118f891611318565b940193845490611318565b808611611aeb579160069161191b87611929956112d9565b9055019182549054906112d9565b90556119336115c3565b6001600160a01b0382165f9081526004820160205260409020908315801590611ae4575b156119c257915f6001835f516020612c135f395f51905f5295846040965415806119b7575b6119a4575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b60056119b09201611360565b5f84611981565b50838301541561197c565b5050906119cd6115c3565b916001600160a01b03811690600584019060015b825480821015611ac657846119f6838661134b565b905460039190911b1c6001600160a01b031614611a1657506001016119e1565b905f9692939495961982019182116112e657611383611a38611a51938761134b565b905460039190911b1c6001600160a01b0316918661134b565b8254908115611ab2575f516020612c135f395f51905f52946040946004935f190190611a95611a80838361134b565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611989565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612c135f395f51905f5292935060409150611989565b505f611957565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611b1682848661270d565b156115ba57611b23611e24565b106115b357611b3183611d9f565b50611b426114fb60056118906115c3565b50611b4b6115c3565b600481019060018060a01b0385165f528160205260405f2091611b7060058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ba4916001916118f891611318565b80611baf8688611318565b11611bba8688611318565b90611d8a57506006611bec938693611bd9856115818b611be7976112d9565b9055019384549054906112d9565b611318565b9055611bf66115c3565b6001600160a01b0384165f9081526004820160205260409020908315801590611d81575b15611c86579180600183604095885f516020612c135f395f51905f52989996541580611c7b575b611c68575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611c749201611360565b5f85611c46565b508383015415611c41565b505091611c916115c3565b926001600160a01b03821691600585019160015b835480821015611d625785611cba838761134b565b905460039190911b1c6001600160a01b031614611cda5750600101611ca5565b905f979293949596971982019182116112e657611383611cfd611d16938861134b565b905460039190911b1c6001600160a01b0316918761134b565b8354908115611ab2575f516020612c135f395f51905f52956040956004935f190190611d45611a80838361134b565b555f52016020525f60028482208281558260018201550155611c4e565b50509091505f516020612c135f395f51905f5293945060409250611c4e565b50821515611c1a565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611dfc576004611db86115c3565b01815f52602052600260405f20018054431115611e1d57439055803b1561022f575f8091600460405180948193631efc6b4160e11b83525af18015611e1257611e02575b50600190565b5f611e0c91611299565b5f611dfc565b6040513d5f823e3d90fd5b5050600190565b611e2c6115c3565b611e34612527565b60ff5f516020612bb35f395f51905f525416611e67576003015415611e5f57611e5c436116a2565b90565b611e5c612859565b6001015490565b611e766115c3565b906005820190611e8582611325565b90546001600160a01b038381169660039390931b9190911c169390858514611fd957835460015b818110611f9c575050611ebd611e24565b10611f93576004611ef691611ed186611d9f565b50611edb84611d9f565b500191855f5282602052611383600260405f20015494611325565b6001600160a01b0383165f90815260208290526040808220868352912090808203611f75575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f80611f1c565b50505050505f90565b87611fa7828861134b565b905460039190911b1c6001600160a01b031614611fc657600101611eac565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b939093929192611ff26115c3565b600181015492600184018094116112e657600196956004600584019301975b835481101561210b57612024818561134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919086908061205b575b50506001915001612011565b906120659161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e966120fb575b50604051908152a4855f61204f565b5f61210591611299565b5f6120ec565b509193949590965061211d92506112d9565b908161212a575b50505050565b61213390611325565b905460039190911b1c6001600160a01b0316908115612124577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561022f576040516340c10f1960e01b81526001600160a01b038416600482015260248101829052915f908390604490829084905af1908115611e12575f516020612b535f395f51905f52926020926121de575b50604051908152a45f808080612124565b5f6121e891611299565b5f6121cd565b9190916121f96115c3565b92801580801561234d575b61234657600185015492600184018094116112e65760048601969560050160015b815481101561233b57612238818361134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919085908061226f575b50506001915001612225565b612279908661168f565b90612327577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e96612317575b50604051908152a4845f612263565b5f61232191611299565b5f612308565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612204565b6001600160a01b0381165f9081525f516020612b335f395f51905f52602052604090205460ff166123e8576001600160a01b03165f8181525f516020612b335f395f51905f5260205260408120805460ff191660011790553391905f516020612b735f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b61252f6115c3565b600281019081544381146127085761254781436112d9565b92600182018092116112e6576003830180549060ff5f516020612bb35f395f51905f52541680156126ff575b6126a4575b505043905560068201548061258d5750505050565b60ff60078401541660038110156111ca576002810361265057505060058201805493600490930192905f5b8581106125cf575050505050505b5f808080612124565b806125dc6001928461134b565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612611575b50505050016125b8565b61261a9161168f565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f858186612607565b919390925090600114612666575b5050506125c6565b61266f9161168f565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f808061265e565b6126bb6126b587600688015461168f565b83611318565b80915580820315612578576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f80612578565b50811515612573565b505050565b6001600160a01b03169190821561284a576127266115c3565b6005810161275061273682611325565b905460039190911b1c6001600160a01b0316861491611325565b905460039190911b1c6001600160a01b0316906128385750600490845f520160205260405f208282825414918261282a575b50506115b3571590811591612820575b5061279d5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa908115611e12575f916127e5575b50611dfc5763a5fe861560e01b5f5260045260245ffd5b90506020813d602011612818575b8161280060209383611299565b8101031261022f5751801515810361022f575f6127ce565b3d91506127f3565b905015155f612792565b60010154149050825f612782565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b6128616115c3565b90600182019182549061287482436112d9565b9081156129ac57600183018093116112e6575f94936004600583019201955b825481101561299f576128a6818461134b565b905460039190911b1c6001600160a01b03169081156129965760018060a01b0382165f52876020528460405f2054806128e7575b5050600191505b01612893565b906128f19161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b1561022f576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af1908115611e12576001948992612986575b506040519283525f516020612b535f395f51905f5260204394a4845f6128da565b5f61299091611299565b5f612965565b600191506128e1565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f146115b3578054600160401b8110156106a857612a036129ed82600187940185558461134b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612abf575f1981018181116112e65782545f198101919082116112e657818103612a8a575b50505080548015611ab2575f190190612a6b828261134b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612aaa612a9a6129ed938661134b565b90549060031b1c9283928661134b565b90555f528360205260405f20555f8080612a52565b505050505f90565b60ff5f516020612c335f395f51905f525460401c1615612ae357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d46b54882b4d4a139f908e1d4575b13fb4288eda84825de64ac62fbf8e30007664736f6c63430008210033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {
    "14015": [
      {
        "length": 32,
        "start": 8295
      },
      {
        "length": 32,
        "start": 8526
      },
      {
        "length": 32,
        "start": 8832
      },
      {
        "length": 32,
        "start": 10483
      }
    ]
  },
  "inputSourceName": "project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol",
  "buildInfoId": "solc-0_8_33-4b238b4fe0cedd7be5f2b0aa5999a5f7433e9c71"
}