{
  "_format": "hh-sol-artifact-1",
  "contractName": "Fomo3dHandlerHelper",
  "sourceName": "contracts/V3/handler/Fomo3dHandlerHelper.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVOKE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "addHash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "canSync",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "claimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "playerAddr",
          "type": "address"
        }
      ],
      "name": "getClaimInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint232",
              "name": "balanceTotal",
              "type": "uint232"
            },
            {
              "internalType": "bool",
              "name": "notClaimed",
              "type": "bool"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.ClaimInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleIdHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "playerAddr",
          "type": "address"
        }
      ],
      "name": "getPos",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "exist",
              "type": "bool"
            },
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "counted",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "computed",
              "type": "bool"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.Position",
          "name": "",
          "type": "tuple"
        }
      ],
      "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": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getSyncHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "beginIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endIndex",
          "type": "uint256"
        }
      ],
      "name": "getSyncHashList",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSyncHashListAll",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSyncHashListLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "getTokenBranch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch",
          "name": "",
          "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": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "poolBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "dividendBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "serverBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "teamBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalWeight",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "lastInputTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "gameId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "lastProcessTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "processIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "processInterval",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "coefficient",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "lootCount",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "MAX_INTERVAL",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "POOL_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "SERVER_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "TEAM_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "DYNAMIC_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "treeSnippet",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "defaultParent",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "CLAIM_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8[]",
              "name": "percentages",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.SysParams",
          "name": "sysParams",
          "type": "tuple"
        }
      ],
      "name": "processClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        }
      ],
      "name": "processInput",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "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": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "playerAddr",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint232",
              "name": "balanceTotal",
              "type": "uint232"
            },
            {
              "internalType": "bool",
              "name": "notClaimed",
              "type": "bool"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.ClaimInfo",
          "name": "claimInfo",
          "type": "tuple"
        }
      ],
      "name": "setClaimInfo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleIdHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "playerAddr",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "exist",
              "type": "bool"
            },
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "counted",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "computed",
              "type": "bool"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.Position",
          "name": "pos",
          "type": "tuple"
        }
      ],
      "name": "setPos",
      "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": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "stepCount",
          "type": "uint256"
        }
      ],
      "name": "sync",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "poolBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "dividendBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "serverBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "teamBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalWeight",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "lastInputTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "gameId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "lastProcessTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "processIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "processInterval",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "coefficient",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "lootCount",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "MAX_INTERVAL",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "POOL_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "SERVER_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "TEAM_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "DYNAMIC_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "treeSnippet",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "defaultParent",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "CLAIM_PERCENTAGE",
              "type": "uint8"
            },
            {
              "internalType": "uint8[]",
              "name": "percentages",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.SysParams",
          "name": "sysParams",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "player",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "count",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "weight",
              "type": "uint256"
            }
          ],
          "internalType": "struct Fomo3dHandlerLib.Player[]",
          "name": "players",
          "type": "tuple[]"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "ruleHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "ruleIdHash",
          "type": "bytes32"
        }
      ],
      "name": "sync",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50614c2c806100206000396000f3fe60806040526004361061016d5760003560e01c80639010d07c116100c75780639010d07c146103e857806391d1485414610420578063935ead921461044057806398c9bb8a1461046d578063a05a0fba1461048d578063a0ad622f146104c0578063a217fddf146104e0578063a9afbac8146104f5578063ae28347f14610515578063aff4223714610537578063c93369ec14610557578063ca15c87314610646578063d547741f14610666578063e3b13c9e14610686578063f94a027e146106a65761016d565b806301ffc9a7146101ad5780631cc4f041146101e2578063248a9ca31461020257806324eb1fa7146102415780632e3e5630146102605780632f2ff15d1461028057806334c76b25146102a057806336568abe146102db5780633e8c943a146102fb5780634202c0461461031b57806343e08ad11461033057806354fd4d50146103505780637481c01b146103645780638129fc1c146103b15780638b38b514146103c6575b6101ab6040518060400160405280601c81526020017f466f6d6f336448616e646c657248656c7065722066616c6c6261636b000000008152506106c6565b005b3480156101b957600080fd5b506101cd6101c83660046136c5565b61070c565b60405190151581526020015b60405180910390f35b3480156101ee57600080fd5b506101cd6101fd366004613955565b610737565b34801561020e57600080fd5b5061023361021d366004613972565b6000908152600160208190526040909120015490565b6040519081526020016101d9565b34801561024d57600080fd5b506101ab61025c36600461398b565b5050565b34801561026c57600080fd5b506101ab61027b3660046139bb565b610814565b34801561028c57600080fd5b506101ab61029b366004613a53565b6108be565b3480156102ac57600080fd5b50604080518082018252600c81526b2327a6a799a22422a62822a960a11b602082015290516101d99190613ad3565b3480156102e757600080fd5b506101ab6102f6366004613a53565b6108e9565b34801561030757600080fd5b506101cd610316366004613ae6565b610968565b34801561032757600080fd5b50600454610233565b34801561033c57600080fd5b506101ab61034b366004613972565b610b16565b34801561035c57600080fd5b506000610233565b34801561037057600080fd5b5061038461037f366004613a53565b610b8d565b60408051825181526020808401516001600160e81b031690820152918101511515908201526060016101d9565b3480156103bd57600080fd5b506101ab610c82565b3480156103d257600080fd5b50610233600080516020614aad83398151915281565b3480156103f457600080fd5b5061040861040336600461398b565b610cf9565b6040516001600160a01b0390911681526020016101d9565b34801561042c57600080fd5b506101cd61043b366004613a53565b610d18565b34801561044c57600080fd5b5061046061045b366004613b92565b610d43565b6040516101d99190613c60565b34801561047957600080fd5b506102336104883660046141ca565b610dde565b34801561049957600080fd5b506104ae6104a8366004613972565b50600090565b60405160ff90911681526020016101d9565b3480156104cc57600080fd5b506101ab6104db366004614236565b6112d5565b3480156104ec57600080fd5b50610233600081565b34801561050157600080fd5b506101ab610510366004614290565b611357565b34801561052157600080fd5b5061052a6114e0565b6040516101d9919061431a565b34801561054357600080fd5b506101ab61055236600461435e565b6115bb565b34801561056357600080fd5b50610607610572366004613a53565b6040805160808101825260008082526020820181905291810182905260608101919091525060008281526006602090815260408083206001600160a01b03851684528252918290208251608081018452905460ff8082161515835263ffffffff61010083041693830193909352600160281b81048316151593820193909352600160301b909204161515606082015292915050565b6040516101d9919081511515815260208083015163ffffffff169082015260408083015115159082015260609182015115159181019190915260800190565b34801561065257600080fd5b50610233610661366004613972565b611720565b34801561067257600080fd5b506101ab610681366004613a53565b611737565b34801561069257600080fd5b506102336106a1366004613972565b61175d565b3480156106b257600080fd5b5061052a6106c136600461398b565b611784565b610709816040516024016106da9190613ad3565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526118ec565b50565b60006001600160e01b03198216635a05180f60e01b14806107315750610731826118f5565b92915050565b600080610765836000015184602001518560600151866040015187608001518860a001518960e0015161192a565b6000818152600360209081526040808320815181548085028201840184529381018481529596509394909284928491908401828280156107c457602002820191906000526020600020905b8154815260200190600101908083116107b0575b5050509190925250505060c085015190915060009060ff166107f8576101208501516107f1908390611999565b905061080c565b610120850151610809908390611a2c565b90505b949350505050565b600080516020614aad83398151915261082c81611aa3565b5060009283526006602090815260408085206001600160a01b039490941685529281529282902081518154948301519383015160609093015164ffffffffff1990951690151564ffffffff0019161761010063ffffffff909416939093029290921761ffff60281b1916600160281b9115159190910260ff60301b191617600160301b92151592909202919091179055565b600082815260016020819052604090912001546108da81611aa3565b6108e48383611aad565b505050565b6001600160a01b038116331461095e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61025c8282611acf565b6000600080516020614aad83398151915261098281611aa3565b60006109ab8486602001518760600151886040015189608001518a60a001518b60e0015161192a565b600081815260036020526040812080549293509190036109db578054600181018255600082815260208120909101555b60c086015160009060ff16610a605761012087015160408051845460208181028301840184528201818152610a5994938792849291849190840182828015610a4257602002820191906000526020600020905b815481526020019060010190808311610a2e575b50505050508152505061199990919063ffffffff16565b9050610ad2565b61012087015160408051845460208181028301840184528201818152610acf94938792849291849190840182828015610ab857602002820191906000526020600020905b815481526020019060010190808311610aa4575b505050505081525050611a2c90919063ffffffff16565b90505b80610b0a5760c087015160ff16610af957610120870151610af4908390611af1565b610b0a565b610120870151610b0a908390611ba1565b935050505b5092915050565b600080516020614aad833981519152610b2e81611aa3565b6040805180820190915260088152670c2c8c840d0c2e6d60c31b6020820152610b579083611c19565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b604080516060810182526000808252602082018190529181019190915260408051808201909152601c81527f676574436c61696d496e666f20636c757374657252756c6548617368000000006020820152610be89084611c19565b610c216040518060400160405280601781526020017633b2ba21b630b4b6a4b7333790383630bcb2b920b2323960491b81525083611c5e565b5060008281526005602090815260408083206001600160a01b03851684528252918290208251606081018452815481526001909101546001600160e81b03811692820192909252600160e81b90910460ff1615159181019190915292915050565b6000610c8e6001611ca3565b90508015610ca6576000805461ff0019166101001790555b610cb1600033611d30565b8015610709576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000828152600260205260408120610d119083611d3a565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6040805160208101909152606081526000610d64838a8a8a8a8f600061192a565b600081815260036020908152604080832081518154808502820184018452938101848152959650939490928492849190840182828015610dc357602002820191906000526020600020905b815481526020019060010190808311610daf575b5050509190925250919e9d5050505050505050505050505050565b6000600080516020614aad833981519152610df881611aa3565b610e286040518060400160405280600f81526020016e5f70726f63657373436c61696d203160881b8152506106c6565b6000610e32611d46565b9050610e4a6040518060200160405280606081525090565b600160608301819052606560408085019190915260028452805182815280820190915290602082810190803683375050506101408301526040805160018082528183019092529060208083019080368337505050610160830152600161012083015260408051808201909152600981526818db1d5cdd195c925960ba1b602082015260608801516101000151610ee6919063ffffffff16611c19565b610f236040518060400160405280600b81526020016a1a5b99195e13dd5d1c1d5d60aa1b815250610f1a8960600151611d8d565b61ffff16611c19565b60408051808201909152601381527209eaaa8a0aaa8be869882929abe84a4829c869606b1b6020820152610f58906065611c19565b60008760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190614482565b6001600160a01b0316632c34025e89606001516101000151610fe98b60600151611d8d565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260656044820152606401600060405180830381865afa15801561103b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611063919081019061478e565b9150506110aa6040518060400160405280601e81526020017f67726f7570536c6f742e746f6b656e536c6f744c6973742e6c656e6774680000815250826000015151611c19565b80518051600391906000906110c1576110c161487a565b6020026020010151600001516000015160ff160361114957600061110682600001516000815181106110f5576110f561487a565b602002602001015160000151611db7565b90508060008151811061111b5761111b61487a565b602002602001015184610140015160008151811061113b5761113b61487a565b602002602001018181525050505b5061117a6040518060400160405280600f81526020016e2fb83937b1b2b9b9a1b630b4b6901960891b8152506106c6565b600160ff16876080015160ff16036111be578660600151608001518261016001516000815181106111ad576111ad61487a565b602002602001018181525050611246565b600260ff16876080015160ff16036112045784606001518261016001516000815181106111ed576111ed61487a565b602090810291909101015260006060860152611246565b600360ff16876080015160ff16036112465784604001518261016001516000815181106112335761123361487a565b6020908102919091010152600060408601525b6112766040518060400160405280600f81526020016e5f70726f63657373436c61696d203360881b8152506106c6565b6112808183611f26565b60008681526003602090815260409091208251805184936112a59284929101906135dc565b509050508161016001516000815181106112c1576112c161487a565b602002602001015193505050509392505050565b600080516020614aad8339815191526112ed81611aa3565b60006112f7611d46565b905061130f6040518060200160405280606081525090565b60646040830152600160208301526113278183611f26565b600085815260036020908152604090912082518051849361134c9284929101906135dc565b505050505050505050565b600080516020614aad83398151915261136f81611aa3565b60408051808201909152601c81527f736574436c61696d496e666f20636c757374657252756c65486173680000000060208201526113ad9085611c19565b6113e66040518060400160405280601781526020017639b2ba21b630b4b6a4b7333790383630bcb2b920b2323960491b81525084611c5e565b6114296040518060400160405280601e81526020017f736574436c61696d496e666f20636c61696d496e666f2062616c616e636500008152508360000151611c19565b611458604051806060016040528060248152602001614b646024913983602001516001600160e81b0316611c19565b61147e604051806060016040528060218152602001614b43602191398360400151612525565b5060009283526005602090815260408085206001600160a01b0390941685529281529282902081518155928101516001909301805492909101511515600160e81b026001600160f01b03199092166001600160e81b0390931692909217179055565b60408051808201909152600d81526c0d0c2e6d0cae640d8cadccee8d609b1b602082015260045460609161151391611c19565b6004546000906001600160401b03811115611530576115306136ef565b604051908082528060200260200182016040528015611559578160200160208202803683370190505b50905060005b81518110156115b5576004818154811061157b5761157b61487a565b90600052602060002001548282815181106115985761159861487a565b6020908102919091010152806115ad816148a6565b91505061155f565b50919050565b600080516020614aad8339815191526115d381611aa3565b60408051808201909152601581527403432b63832b91039bcb73190393ab632a430b9b41605d1b60208201526116099084611c19565b60408051808201909152601781527603432b63832b91039bcb73190393ab632a4b22430b9b41604d1b60208201526116419083611c19565b60001960ff8516016117005760005b85518110156116fa5785818151811061166b5761166b61487a565b60200260200101516020015160ff166000036116e8576116e884848884815181106116985761169861487a565b60200260200101516127108b610260015160ff168b87815181106116be576116be61487a565b6020026020010151604001516116d491906148bf565b6116de91906148d6565b600080600061256a565b806116f2816148a6565b915050611650565b50611718565b60011960ff85160161171857611718868684866126b1565b505050505050565b60008181526002602052604081206107319061285f565b6000828152600160208190526040909120015461175381611aa3565b6108e48383611acf565b6000600482815481106117725761177261487a565b90600052602060002001549050919050565b6060818311156117d65760405162461bcd60e51b815260206004820152601f60248201527f626567696e496e646578206c6172676572207468616e20656e64496e646578006044820152606401610955565b6004546117e5906001906148f8565b82106118285760405162461bcd60e51b8152602060048201526012602482015271656e64496e64657820746f6f206c6172676560701b6044820152606401610955565b600061183484846148f8565b61183f90600161490b565b6001600160401b03811115611856576118566136ef565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b50905060005b81518110156118e457600461189a828761490b565b815481106118aa576118aa61487a565b90600052602060002001548282815181106118c7576118c761487a565b6020908102919091010152806118dc816148a6565b915050611885565b509392505050565b61070981612869565b60006001600160e01b03198216637965db0b60e01b148061073157506301ffc9a760e01b6001600160e01b0319831614610731565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6000611a2283600001516000815181106119b5576119b561487a565b6020026020010151600184600060086119ce919061491e565b6119d990600461491e565b6119e490600861491e565b6119ef90600461491e565b6119fa90601061491e565b611a0590601861491e565b611a1090602061491e565b611a1a919061491e565b60ff1661288a565b6001149392505050565b6000611a228360000151600081518110611a4857611a4861487a565b602002602001015160018460006008611a61919061491e565b611a6c90600461491e565b611a7790600861491e565b611a8290600461491e565b611a8d90601061491e565b611a9890601861491e565b611a0590602061491e565b61070981336128a9565b611ab78282612902565b60008281526002602052604090206108e4908261296d565b611ad98282612982565b60008281526002602052604090206108e490826129e9565b611b7b82600001600081548110611b0a57611b0a61487a565b90600052602060002001546001808460006008611b27919061491e565b611b3290600461491e565b611b3d90600861491e565b611b4890600461491e565b611b5390601061491e565b611b5e90601861491e565b611b6990602061491e565b611b73919061491e565b60ff166129fe565b82600001600081548110611b9157611b9161487a565b6000918252602090912001555050565b611b7b82600001600081548110611bba57611bba61487a565b90600052602060002001546001808460006008611bd7919061491e565b611be290600461491e565b611bed90600861491e565b611bf890600461491e565b611c0390601061491e565b611c0e90601861491e565b611b5e90602061491e565b61025c8282604051602401611c2f929190614937565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526118ec565b61025c8282604051602401611c74929190614959565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790526118ec565b60008054610100900460ff1615611cea578160ff166001148015611cc65750303b155b611ce25760405162461bcd60e51b815260040161095590614983565b506000919050565b60005460ff808416911610611d115760405162461bcd60e51b815260040161095590614983565b506000805460ff191660ff92909216919091179055600190565b919050565b61025c8282611aad565b6000610d118383612a23565b611d4e613627565b611d56613627565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006107318260a00151601060006008611da7919061490b565b611db290601061490b565b61288a565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1660011901611e81576000611df484612a4d565b905060ff8116611e7b578360400151600281518110611e1557611e1561487a565b602002602001015182600081518110611e3057611e3061487a565b6020026020010181815250508360400151600381518110611e5357611e5361487a565b602002602001015182600181518110611e6e57611e6e61487a565b6020026020010181815250505b50610731565b825160ff1660021901610731576000611e9984612a4d565b905060ff8116610b0f578360400151600481518110611eba57611eba61487a565b602002602001015182600081518110611ed557611ed561487a565b6020026020010181815250508360400151600581518110611ef857611ef861487a565b602002602001015182600181518110611f1357611f1361487a565b6020026020010181815250505092915050565b60c081015160019015611f415780611f3d816148a6565b9150505b8160e0015161271014611f5c5780611f58816148a6565b9150505b81610100015161271014611f785780611f74816148a6565b9150505b61014082015151151580611f9157506101608201515115155b80611fa157506101a08201515115155b15612013576000826101600151518361014001515111611fe657826101a00151518361016001515111611fda57826101a0015151611fee565b82610160015151611fee565b826101400151515b9050611ffb8160046148bf565b612005908361490b565b60ff90911661012084015290505b61203d6040518060600160405280602e8152602001614acd602e913983610120015160ff16611c19565b806001600160401b03811115612055576120556136ef565b60405190808252806020026020018201604052801561207e578160200160208202803683370190505b508352815161208e908490612a80565b61209c838360200151612ad8565b6120aa838360600151612b11565b6120b8838360400151612b60565b6120c783836101200151612ba4565b6120e8604051806060016040528060258152602001614afb602591396106c6565b60008060019050836080015162ffffff166127101461211d5761210f858560800151612c35565b61211a6001836149d1565b91505b8360a0015163ffffffff166127101461214c5761213e858560a00151612c9c565b6121496002836149d1565b91505b60c0840151156121925760c0840151855182612167816148a6565b9350815181106121795761217961487a565b602090810291909101015261218f6004836149d1565b91505b8360e00151612710146121db5760e08401518551826121b0816148a6565b9350815181106121c2576121c261487a565b60209081029190910101526121d86008836149d1565b91505b83610100015161271014612226576101008401518551826121fb816148a6565b93508151811061220d5761220d61487a565b60209081029190910101526122236010836149d1565b91505b61012084015160ff16156125145760005b84610120015160ff168110156124e25760008561014001515111801561226257508461014001515181105b156122b957846101400151818151811061227e5761227e61487a565b602002602001015186600001518380612296906148a6565b9450815181106122a8576122a861487a565b6020026020010181815250506122e7565b8551600090836122c8816148a6565b9450815181106122da576122da61487a565b6020026020010181815250505b60008561016001515111801561230257508461016001515181105b1561235957846101600151818151811061231e5761231e61487a565b602002602001015186600001518380612336906148a6565b9450815181106123485761234861487a565b602002602001018181525050612387565b855160009083612368816148a6565b94508151811061237a5761237a61487a565b6020026020010181815250505b6000856101800151511180156123a257508461018001515181105b156123fc5784610180015181815181106123be576123be61487a565b602002602001015160ff16866000015183806123d9906148a6565b9450815181106123eb576123eb61487a565b602002602001018181525050612429565b855181908361240a816148a6565b94508151811061241c5761241c61487a565b6020026020010181815250505b6000856101a00151511180156124445750846101a001515181105b156124a457846101a0015181815181106124605761246061487a565b60200260200101516001600160a01b031686600001518380612481906148a6565b9450815181106124935761249361487a565b6020026020010181815250506124d2565b8551600090836124b3816148a6565b9450815181106124c5576124c561487a565b6020026020010181815250505b6124db816148a6565b9050612237565b506124ee6020836149d1565b9150612514604051806080016040528060448152602001614b8860449139865151611c19565b61251e8583612d0f565b5050505050565b61025c828260405160240161253b9291906149ec565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b1790526118ec565b61258c6040518060600160405280602b8152602001614bcc602b913988611c19565b600087815260056020908152604080832088516001600160a01b031684529091529020811561262357600087815260066020908152604080832089516001600160a01b03168452909152902054600160301b900460ff16156125ee57506126a8565b600087815260066020908152604080832089516001600160a01b031684529091529020805460ff60301b1916600160301b1790555b60018101805460ff60e81b1916600160e81b179055848315612657578361264a86836148bf565b61265491906148d6565b90505b815461266490829061490b565b6001600160e81b03908116835560018301546126829183911661490b565b60019290920180546001600160e81b0319166001600160e81b0390931692909217909155505b50505050505050565b600080856020015186600001516126c8919061490b565b90506127076040518060400160405280601b81526020017a5f6c6f6f745072697a65506f6f6c206c6f6f742062616c616e636560281b81525082611c19565b61274a6040518060400160405280601f81526020017f5f6c6f6f745072697a65506f6f6c206c6f6f7420706f6f6c42616c616e6365008152508760000151611c19565b612770604051806060016040528060238152602001614b20602391398760200151611c19565b60005b86610280015151811080156127885750855181105b1561283c57600087610280015182815181106127a6576127a661487a565b602002602001015160ff16905080846127bf919061490b565b93506128038587898560018c516127d691906148f8565b6127e091906148f8565b815181106127f0576127f061487a565b602002602001015186856064600061256a565b816001885161281291906148f8565b61281c91906148f8565b600003612829575061283c565b5080612834816148a6565b915050612773565b506128488260646148f8565b91508115611718576117188385875185898b612d5f565b6000610731825490565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b91821c9160008061289e600180861b6148f8565b909416949350505050565b6128b38282610d18565b61025c576128c0816132ed565b6128cb8360206132ff565b6040516020016128dc929190614a10565b60408051601f198184030181529082905262461bcd60e51b825261095591600401613ad3565b61290c8282610d18565b61025c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d11836001600160a01b03841661349a565b61298c8282610d18565b1561025c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d11836001600160a01b0384166134e9565b600083821b8183612a12600180881b6148f8565b901b19969096161795945050505050565b6000826000018281548110612a3a57612a3a61487a565b9060005260206000200154905092915050565b60006107318260400151600081518110612a6957612a6961487a565b6020026020010151600460ff16600060ff1661288a565b612ab58260000151600081518110612a9a57612a9a61487a565b60200260200101518260ff16600860ff16600060ff166129fe565b82518051600090612ac857612ac861487a565b6020026020010181815250505050565b612ab58260000151600081518110612af257612af261487a565b60200260200101518260ff16600460ff1660006008611b73919061491e565b612ab58260000151600081518110612b2b57612b2b61487a565b60200260200101518260ff16600460ff1660006008612b4a919061491e565b612b5590600461491e565b611b7390600861491e565b612ab58260000151600081518110612b7a57612b7a61487a565b60200260200101518260ff16600860ff1660006008612b99919061491e565b611b7390600461491e565b612ab58260000151600081518110612bbe57612bbe61487a565b60200260200101518260ff16600860ff1660006008612bdd919061491e565b612be890600461491e565b612bf390600861491e565b612bfe90600461491e565b612c0990601061491e565b612c1490601861491e565b612c1f90602061491e565b612c2a90602061491e565b611b7390602061491e565b612ab58260000151600081518110612c4f57612c4f61487a565b60200260200101518262ffffff16601860ff1660006008612c70919061491e565b612c7b90600461491e565b612c8690600861491e565b612c9190600461491e565b611b7390601061491e565b612ab58260000151600081518110612cb657612cb661487a565b60200260200101518263ffffffff16602060ff1660006008612cd8919061491e565b612ce390600461491e565b612cee90600861491e565b612cf990600461491e565b612d0490601061491e565b611b7390601861491e565b612ab58260000151600081518110612d2957612d2961487a565b60200260200101518261ffff16601060ff1660006008612d49919061491e565b612d5490600461491e565b612b9990600861491e565b600060648483602001518460000151612d78919061490b565b612d8291906148bf565b612d8c91906148d6565b8351909150600080876001600160401b03811115612dac57612dac6136ef565b604051908082528060200260200182016040528015612dd5578160200160208202803683370190505b5090506000886001600160401b03811115612df257612df26136ef565b604051908082528060200260200182016040528015612e1b578160200160208202803683370190505b509050612e57604051806040016040528060188152602001775f6c6f6f745072697a65506f6f6c4279576569676874203160401b8152506106c6565b612e966040518060400160405280601c81526020017f5f6c6f6f745072697a65506f6f6c427957656967687420636f756e74000000008152508a611c19565b612ed56040518060400160405280601d81526020017f5f6c6f6f745072697a65506f6f6c4279576569676874206c656e67746800000081525085611c19565b6000612ee26001866148f8565b90505b612eef8a866148f8565b81106130555760408051808201909152601c81527f5f6c6f6f745072697a65506f6f6c427957656967687420696e646578000000006020820152612f489082612f396001896148f8565b612f4391906148f8565b611c19565b878181518110612f5a57612f5a61487a565b6020026020010151600001518382600188612f7591906148f8565b612f7f91906148f8565b81518110612f8f57612f8f61487a565b6001600160a01b0390921660209283029190910182015260008c8152600690915260408120908483612fc260018a6148f8565b612fcc91906148f8565b81518110612fdc57612fdc61487a565b6020908102919091018101516001600160a01b0316825281019190915260400160002054610100900463ffffffff1682826130186001896148f8565b61302291906148f8565b815181106130325761303261487a565b60209081029190910101528015613055578061304d81614a7f565b915050612ee5565b5061308f604051806040016040528060188152602001772fb637b7ba283934bd32a837b7b6213cabb2b4b3b43a101960411b8152506106c6565b600061309c6001866148f8565b90505b6130a98a866148f8565b81106132045760008b81526006602052604081209084836130cb60018a6148f8565b6130d591906148f8565b815181106130e5576130e561487a565b6020908102919091018101516001600160a01b0316825281019190915260400160002054600160281b900460ff166131ec578782826131256001896148f8565b61312f91906148f8565b8151811061313f5761313f61487a565b6020026020010151815181106131575761315761487a565b6020026020010151604001518461316e919061490b565b60008c815260066020526040812091955060019190858461318f858b6148f8565b61319991906148f8565b815181106131a9576131a961487a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000160056101000a81548160ff0219169083151502179055505b801561320457806131fc81614a7f565b91505061309f565b5061323e604051806040016040528060188152602001775f6c6f6f745072697a65506f6f6c4279576569676874203360401b8152506106c6565b600061324b6001866148f8565b90505b6132588a866148f8565b81106132df57600088838361326e60018a6148f8565b61327891906148f8565b815181106132885761328861487a565b6020026020010151815181106132a0576132a061487a565b602002602001015190506132be8d8d838a85604001518a600161256a565b816000036132cc57506132df565b50806132d781614a7f565b91505061324e565b505050505050505050505050565b60606107316001600160a01b03831660145b6060600061330e8360026148bf565b61331990600261490b565b6001600160401b03811115613330576133306136ef565b6040519080825280601f01601f19166020018201604052801561335a576020820181803683370190505b509050600360fc1b816000815181106133755761337561487a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106133a4576133a461487a565b60200101906001600160f81b031916908160001a90535060006133c88460026148bf565b6133d390600161490b565b90505b600181111561344b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106134075761340761487a565b1a60f81b82828151811061341d5761341d61487a565b60200101906001600160f81b031916908160001a90535060049490941c9361344481614a7f565b90506133d6565b508315610d115760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610955565b60008181526001830160205260408120546134e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610731565b506000610731565b600081815260018301602052604081205480156135d257600061350d6001836148f8565b8554909150600090613521906001906148f8565b90508181146135865760008660000182815481106135415761354161487a565b90600052602060002001549050808760000184815481106135645761356461487a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061359757613597614a96565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610731565b6000915050610731565b828054828255906000526020600020908101928215613617579160200282015b828111156136175782518255916020019190600101906135fc565b506136239291506136b0565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b8082111561362357600081556001016136b1565b6000602082840312156136d757600080fd5b81356001600160e01b031981168114610d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613728576137286136ef565b60405290565b604051608081016001600160401b0381118282101715613728576137286136ef565b60405160a081016001600160401b0381118282101715613728576137286136ef565b604080519081016001600160401b0381118282101715613728576137286136ef565b60405161018081016001600160401b0381118282101715613728576137286136ef565b6040516102a081016001600160401b0381118282101715613728576137286136ef565b604051606081016001600160401b0381118282101715613728576137286136ef565b604051601f8201601f191681016001600160401b0381118282101715613824576138246136ef565b604052919050565b6001600160a01b038116811461070957600080fd5b8035611d2b8161382c565b803563ffffffff81168114611d2b57600080fd5b60ff8116811461070957600080fd5b8035611d2b81613860565b803561ffff81168114611d2b57600080fd5b6000610140828403121561389f57600080fd5b6138a7613705565b90506138b282613841565b81526138c060208301613841565b60208201526138d160408301613841565b60408201526138e26060830161384c565b60608201526138f36080830161384c565b608082015261390460a08301613841565b60a082015261391560c0830161386f565b60c082015261392660e0830161387a565b60e082015261010061393981840161386f565b9082015261012061394b83820161386f565b9082015292915050565b6000610140828403121561396857600080fd5b610d11838361388c565b60006020828403121561398457600080fd5b5035919050565b6000806040838503121561399e57600080fd5b50508035926020909101359150565b801515811461070957600080fd5b600080600083850360c08112156139d157600080fd5b8435935060208501356139e38161382c565b92506080603f19820112156139f757600080fd5b50613a0061372e565b6040850135613a0e816139ad565b8152613a1c6060860161384c565b60208201526080850135613a2f816139ad565b604082015260a0850135613a42816139ad565b606082015292959194509192509050565b60008060408385031215613a6657600080fd5b823591506020830135613a788161382c565b809150509250929050565b60005b83811015613a9e578181015183820152602001613a86565b50506000910152565b60008151808452613abf816020860160208601613a83565b601f01601f19169290920160200192915050565b602081526000610d116020830184613aa7565b6000806101608385031215613afa57600080fd5b613b04848461388c565b9150610140830135613a788161382c565b60006001600160401b03821115613b2e57613b2e6136ef565b50601f01601f191660200190565b600082601f830112613b4d57600080fd5b8135613b60613b5b82613b15565b6137fc565b818152846020838601011115613b7557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060006101208a8c031215613bb157600080fd5b8935613bbc8161382c565b985060208a0135613bcc8161382c565b975060408a0135613bdc8161382c565b9650613bea60608b0161384c565b955060808a0135613bfa8161382c565b9450613c0860a08b0161384c565b935060c08a01356001600160401b03811115613c2357600080fd5b613c2f8c828d01613b3c565b935050613c3e60e08b0161387a565b91506101008a0135613c4f8161382c565b809150509295985092959850929598565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015613ca55783518252928401926001929092019190840190613c85565b509695505050505050565b60006001600160401b03821115613cc957613cc96136ef565b5060051b60200190565b600082601f830112613ce457600080fd5b81356020613cf4613b5b83613cb0565b82815260059290921b84018101918181019086841115613d1357600080fd5b8286015b84811015613ca55780356001600160401b0380821115613d3657600080fd5b9088019060a0828b03601f19011215613d4e57600080fd5b613d56613750565b86830135613d6381613860565b8152604083810135613d748161382c565b828901526060848101358284015260808501359083015260a084013583811115613d9e5760008081fd5b8085019450508b603f850112613db657600092508283fd5b878401359250613dc8613b5b84613cb0565b83815260069390931b8401810192888101908d851115613de85760008081fd5b948201945b84861015613e3f5782868f031215613e055760008081fd5b613e0d613772565b613e168761384c565b81528a8701358060040b8114613e2c5760008081fd5b818c015282529482019490890190613ded565b6080840152505085525050918301918301613d17565b600060a08284031215613e6757600080fd5b613e6f613750565b90508135613e7c8161382c565b81526020820135613e8c8161382c565b60208201526040820135613e9f8161382c565b604082015260608201356001600160401b0380821115613ebe57600080fd5b908301906101808286031215613ed357600080fd5b613edb613794565b613ee483613841565b8152613ef260208401613841565b6020820152613f0360408401613841565b6040820152613f1460608401613841565b60608201526080830135608082015260a083013560a0820152613f3960c0840161384c565b60c0820152613f4a60e0840161384c565b60e0820152610100613f5d81850161384c565b90820152610120613f6f84820161386f565b908201526101408381013583811115613f8757600080fd5b613f9388828701613cd3565b8284015250506101608084013583811115613fad57600080fd5b613fb988828701613b3c565b828401525050806060850152505050613fd46080830161386f565b608082015292915050565b600082601f830112613ff057600080fd5b81356020614000613b5b83613cb0565b82815260059290921b8401810191818101908684111561401f57600080fd5b8286015b84811015613ca557803561403681613860565b8352918301918301614023565b60006102a0828403121561405657600080fd5b61405e6137b7565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015261409860a0830161384c565b60a08201526140a960c0830161384c565b60c08201526140ba60e0830161384c565b60e08201526101006140cd81840161384c565b908201526101206140df83820161384c565b908201526101406140f183820161387a565b9082015261016061410383820161387a565b9082015261018061411583820161384c565b908201526101a061412783820161386f565b908201526101c061413983820161386f565b908201526101e061414b83820161386f565b9082015261020061415d83820161386f565b9082015261022061416f838201613841565b90820152610240614181838201613841565b9082015261026061419383820161386f565b90820152610280828101356001600160401b038111156141b257600080fd5b6141be85828601613fdf565b82840152505092915050565b6000806000606084860312156141df57600080fd5b83356001600160401b03808211156141f657600080fd5b61420287838801613e55565b945060208601359350604086013591508082111561421f57600080fd5b5061422c86828701614043565b9150509250925092565b60008060006060848603121561424b57600080fd5b83356001600160401b0381111561426157600080fd5b61426d86828701613e55565b93505060208401359150604084013561428581613860565b809150509250925092565b600080600083850360a08112156142a657600080fd5b8435935060208501356142b88161382c565b92506060603f19820112156142cc57600080fd5b506142d56137da565b6040850135815260608501356001600160e81b03811681146142f657600080fd5b60208201526080850135614309816139ad565b604082015292959194509192509050565b6020808252825182820181905260009190848201906040850190845b8181101561435257835183529284019291840191600101614336565b50909695505050505050565b600080600080600060a0868803121561437657600080fd5b85356001600160401b038082111561438d57600080fd5b61439989838a01614043565b96506020915081880135818111156143b057600080fd5b88019050601f810189136143c357600080fd5b80356143d1613b5b82613cb0565b8181526060918202830184019184820191908c8411156143f057600080fd5b938501935b8385101561444c5780858e03121561440d5760008081fd5b6144156137da565b85356144208161382c565b81528587013561442f81613860565b8188015260408681013590820152835293840193918501916143f5565b81995061445b60408d0161386f565b9a9d999c50999a998a0135996080013598975050505050505050565b8051611d2b8161382c565b60006020828403121561449457600080fd5b8151610d118161382c565b8051611d2b81613860565b600082601f8301126144bb57600080fd5b815160206144cb613b5b83613cb0565b82815260059290921b840181019181810190868411156144ea57600080fd5b8286015b84811015613ca557805183529183019183016144ee565b600082601f83011261451657600080fd5b81516020614526613b5b83613cb0565b82815260059290921b8401810191818101908684111561454557600080fd5b8286015b84811015613ca557805161455c8161382c565b8352918301918301614549565b600082601f83011261457a57600080fd5b8151602061458a613b5b83613cb0565b82815260059290921b840181019181810190868411156145a957600080fd5b8286015b84811015613ca55780516001600160401b03808211156145cc57600080fd5b90880190601f196080838c03820112156145e557600080fd5b6145ed61372e565b87840151838111156145fe57600080fd5b84016060818e038401121561461257600080fd5b61461a6137da565b92508881015161462981613860565b835260408181015161463a8161382c565b848b015260608201518581111561465057600080fd5b61465e8f8c838601016144aa565b828601525083835261467181870161449f565b8a840152606086015193508484111561468957600080fd5b6146978e8b86890101614505565b908301525060808401519150828211156146b057600080fd5b6146be8c89848701016144aa565b606082015286525050509183019183016145ad565b600082601f8301126146e457600080fd5b815160206146f4613b5b83613cb0565b82815260059290921b8401810191818101908684111561471357600080fd5b8286015b84811015613ca55780516001600160401b038111156147365760008081fd5b8701603f810189136147485760008081fd5b84810151604061475a613b5b83613b15565b8281528b8284860101111561476f5760008081fd5b61477e83898301848701613a83565b8652505050918301918301614717565b600080604083850312156147a157600080fd5b82516147ac816139ad565b60208401519092506001600160401b03808211156147c957600080fd5b9084019060a082870312156147dd57600080fd5b6147e5613750565b8251828111156147f457600080fd5b61480088828601614569565b82525061480f6020840161449f565b602082015261482060408401614477565b604082015260608301518281111561483757600080fd5b61484388828601614505565b60608301525060808301518281111561485b57600080fd5b614867888286016146d3565b6080830152508093505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016148b8576148b8614890565b5060010190565b808202811582820484141761073157610731614890565b6000826148f357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561073157610731614890565b8082018082111561073157610731614890565b60ff818116838216019081111561073157610731614890565b60408152600061494a6040830185613aa7565b90508260208301529392505050565b60408152600061496c6040830185613aa7565b905060018060a01b03831660208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b61ffff818116838216019080821115610b0f57610b0f614890565b6040815260006149ff6040830185613aa7565b905082151560208301529392505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614a42816017850160208801613a83565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614a73816028840160208801613a83565b01602801949350505050565b600081614a8e57614a8e614890565b506000190190565b634e487b7160e01b600052603160045260246000fdfe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adc2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320315f6c6f6f745072697a65506f6f6c206c6f6f74206469766964656e6442616c616e6365736574436c61696d496e666f20636c61696d496e666f206e6f74436c61696d6564736574436c61696d496e666f20636c61696d496e666f2062616c616e636520746f74616c2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e67746868656c706572205f636f6d70757465436c61696d416d6f756e7420636c757374657252756c654861736820a2646970667358221220d20d0cb0227a42ec101bf118ac75f85566c069f95db804ef8a52258319f7a73264736f6c63430008110033",
  "deployedBytecode": "0x60806040526004361061016d5760003560e01c80639010d07c116100c75780639010d07c146103e857806391d1485414610420578063935ead921461044057806398c9bb8a1461046d578063a05a0fba1461048d578063a0ad622f146104c0578063a217fddf146104e0578063a9afbac8146104f5578063ae28347f14610515578063aff4223714610537578063c93369ec14610557578063ca15c87314610646578063d547741f14610666578063e3b13c9e14610686578063f94a027e146106a65761016d565b806301ffc9a7146101ad5780631cc4f041146101e2578063248a9ca31461020257806324eb1fa7146102415780632e3e5630146102605780632f2ff15d1461028057806334c76b25146102a057806336568abe146102db5780633e8c943a146102fb5780634202c0461461031b57806343e08ad11461033057806354fd4d50146103505780637481c01b146103645780638129fc1c146103b15780638b38b514146103c6575b6101ab6040518060400160405280601c81526020017f466f6d6f336448616e646c657248656c7065722066616c6c6261636b000000008152506106c6565b005b3480156101b957600080fd5b506101cd6101c83660046136c5565b61070c565b60405190151581526020015b60405180910390f35b3480156101ee57600080fd5b506101cd6101fd366004613955565b610737565b34801561020e57600080fd5b5061023361021d366004613972565b6000908152600160208190526040909120015490565b6040519081526020016101d9565b34801561024d57600080fd5b506101ab61025c36600461398b565b5050565b34801561026c57600080fd5b506101ab61027b3660046139bb565b610814565b34801561028c57600080fd5b506101ab61029b366004613a53565b6108be565b3480156102ac57600080fd5b50604080518082018252600c81526b2327a6a799a22422a62822a960a11b602082015290516101d99190613ad3565b3480156102e757600080fd5b506101ab6102f6366004613a53565b6108e9565b34801561030757600080fd5b506101cd610316366004613ae6565b610968565b34801561032757600080fd5b50600454610233565b34801561033c57600080fd5b506101ab61034b366004613972565b610b16565b34801561035c57600080fd5b506000610233565b34801561037057600080fd5b5061038461037f366004613a53565b610b8d565b60408051825181526020808401516001600160e81b031690820152918101511515908201526060016101d9565b3480156103bd57600080fd5b506101ab610c82565b3480156103d257600080fd5b50610233600080516020614aad83398151915281565b3480156103f457600080fd5b5061040861040336600461398b565b610cf9565b6040516001600160a01b0390911681526020016101d9565b34801561042c57600080fd5b506101cd61043b366004613a53565b610d18565b34801561044c57600080fd5b5061046061045b366004613b92565b610d43565b6040516101d99190613c60565b34801561047957600080fd5b506102336104883660046141ca565b610dde565b34801561049957600080fd5b506104ae6104a8366004613972565b50600090565b60405160ff90911681526020016101d9565b3480156104cc57600080fd5b506101ab6104db366004614236565b6112d5565b3480156104ec57600080fd5b50610233600081565b34801561050157600080fd5b506101ab610510366004614290565b611357565b34801561052157600080fd5b5061052a6114e0565b6040516101d9919061431a565b34801561054357600080fd5b506101ab61055236600461435e565b6115bb565b34801561056357600080fd5b50610607610572366004613a53565b6040805160808101825260008082526020820181905291810182905260608101919091525060008281526006602090815260408083206001600160a01b03851684528252918290208251608081018452905460ff8082161515835263ffffffff61010083041693830193909352600160281b81048316151593820193909352600160301b909204161515606082015292915050565b6040516101d9919081511515815260208083015163ffffffff169082015260408083015115159082015260609182015115159181019190915260800190565b34801561065257600080fd5b50610233610661366004613972565b611720565b34801561067257600080fd5b506101ab610681366004613a53565b611737565b34801561069257600080fd5b506102336106a1366004613972565b61175d565b3480156106b257600080fd5b5061052a6106c136600461398b565b611784565b610709816040516024016106da9190613ad3565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526118ec565b50565b60006001600160e01b03198216635a05180f60e01b14806107315750610731826118f5565b92915050565b600080610765836000015184602001518560600151866040015187608001518860a001518960e0015161192a565b6000818152600360209081526040808320815181548085028201840184529381018481529596509394909284928491908401828280156107c457602002820191906000526020600020905b8154815260200190600101908083116107b0575b5050509190925250505060c085015190915060009060ff166107f8576101208501516107f1908390611999565b905061080c565b610120850151610809908390611a2c565b90505b949350505050565b600080516020614aad83398151915261082c81611aa3565b5060009283526006602090815260408085206001600160a01b039490941685529281529282902081518154948301519383015160609093015164ffffffffff1990951690151564ffffffff0019161761010063ffffffff909416939093029290921761ffff60281b1916600160281b9115159190910260ff60301b191617600160301b92151592909202919091179055565b600082815260016020819052604090912001546108da81611aa3565b6108e48383611aad565b505050565b6001600160a01b038116331461095e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61025c8282611acf565b6000600080516020614aad83398151915261098281611aa3565b60006109ab8486602001518760600151886040015189608001518a60a001518b60e0015161192a565b600081815260036020526040812080549293509190036109db578054600181018255600082815260208120909101555b60c086015160009060ff16610a605761012087015160408051845460208181028301840184528201818152610a5994938792849291849190840182828015610a4257602002820191906000526020600020905b815481526020019060010190808311610a2e575b50505050508152505061199990919063ffffffff16565b9050610ad2565b61012087015160408051845460208181028301840184528201818152610acf94938792849291849190840182828015610ab857602002820191906000526020600020905b815481526020019060010190808311610aa4575b505050505081525050611a2c90919063ffffffff16565b90505b80610b0a5760c087015160ff16610af957610120870151610af4908390611af1565b610b0a565b610120870151610b0a908390611ba1565b935050505b5092915050565b600080516020614aad833981519152610b2e81611aa3565b6040805180820190915260088152670c2c8c840d0c2e6d60c31b6020820152610b579083611c19565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b604080516060810182526000808252602082018190529181019190915260408051808201909152601c81527f676574436c61696d496e666f20636c757374657252756c6548617368000000006020820152610be89084611c19565b610c216040518060400160405280601781526020017633b2ba21b630b4b6a4b7333790383630bcb2b920b2323960491b81525083611c5e565b5060008281526005602090815260408083206001600160a01b03851684528252918290208251606081018452815481526001909101546001600160e81b03811692820192909252600160e81b90910460ff1615159181019190915292915050565b6000610c8e6001611ca3565b90508015610ca6576000805461ff0019166101001790555b610cb1600033611d30565b8015610709576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000828152600260205260408120610d119083611d3a565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6040805160208101909152606081526000610d64838a8a8a8a8f600061192a565b600081815260036020908152604080832081518154808502820184018452938101848152959650939490928492849190840182828015610dc357602002820191906000526020600020905b815481526020019060010190808311610daf575b5050509190925250919e9d5050505050505050505050505050565b6000600080516020614aad833981519152610df881611aa3565b610e286040518060400160405280600f81526020016e5f70726f63657373436c61696d203160881b8152506106c6565b6000610e32611d46565b9050610e4a6040518060200160405280606081525090565b600160608301819052606560408085019190915260028452805182815280820190915290602082810190803683375050506101408301526040805160018082528183019092529060208083019080368337505050610160830152600161012083015260408051808201909152600981526818db1d5cdd195c925960ba1b602082015260608801516101000151610ee6919063ffffffff16611c19565b610f236040518060400160405280600b81526020016a1a5b99195e13dd5d1c1d5d60aa1b815250610f1a8960600151611d8d565b61ffff16611c19565b60408051808201909152601381527209eaaa8a0aaa8be869882929abe84a4829c869606b1b6020820152610f58906065611c19565b60008760600151602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190614482565b6001600160a01b0316632c34025e89606001516101000151610fe98b60600151611d8d565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260656044820152606401600060405180830381865afa15801561103b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611063919081019061478e565b9150506110aa6040518060400160405280601e81526020017f67726f7570536c6f742e746f6b656e536c6f744c6973742e6c656e6774680000815250826000015151611c19565b80518051600391906000906110c1576110c161487a565b6020026020010151600001516000015160ff160361114957600061110682600001516000815181106110f5576110f561487a565b602002602001015160000151611db7565b90508060008151811061111b5761111b61487a565b602002602001015184610140015160008151811061113b5761113b61487a565b602002602001018181525050505b5061117a6040518060400160405280600f81526020016e2fb83937b1b2b9b9a1b630b4b6901960891b8152506106c6565b600160ff16876080015160ff16036111be578660600151608001518261016001516000815181106111ad576111ad61487a565b602002602001018181525050611246565b600260ff16876080015160ff16036112045784606001518261016001516000815181106111ed576111ed61487a565b602090810291909101015260006060860152611246565b600360ff16876080015160ff16036112465784604001518261016001516000815181106112335761123361487a565b6020908102919091010152600060408601525b6112766040518060400160405280600f81526020016e5f70726f63657373436c61696d203360881b8152506106c6565b6112808183611f26565b60008681526003602090815260409091208251805184936112a59284929101906135dc565b509050508161016001516000815181106112c1576112c161487a565b602002602001015193505050509392505050565b600080516020614aad8339815191526112ed81611aa3565b60006112f7611d46565b905061130f6040518060200160405280606081525090565b60646040830152600160208301526113278183611f26565b600085815260036020908152604090912082518051849361134c9284929101906135dc565b505050505050505050565b600080516020614aad83398151915261136f81611aa3565b60408051808201909152601c81527f736574436c61696d496e666f20636c757374657252756c65486173680000000060208201526113ad9085611c19565b6113e66040518060400160405280601781526020017639b2ba21b630b4b6a4b7333790383630bcb2b920b2323960491b81525084611c5e565b6114296040518060400160405280601e81526020017f736574436c61696d496e666f20636c61696d496e666f2062616c616e636500008152508360000151611c19565b611458604051806060016040528060248152602001614b646024913983602001516001600160e81b0316611c19565b61147e604051806060016040528060218152602001614b43602191398360400151612525565b5060009283526005602090815260408085206001600160a01b0390941685529281529282902081518155928101516001909301805492909101511515600160e81b026001600160f01b03199092166001600160e81b0390931692909217179055565b60408051808201909152600d81526c0d0c2e6d0cae640d8cadccee8d609b1b602082015260045460609161151391611c19565b6004546000906001600160401b03811115611530576115306136ef565b604051908082528060200260200182016040528015611559578160200160208202803683370190505b50905060005b81518110156115b5576004818154811061157b5761157b61487a565b90600052602060002001548282815181106115985761159861487a565b6020908102919091010152806115ad816148a6565b91505061155f565b50919050565b600080516020614aad8339815191526115d381611aa3565b60408051808201909152601581527403432b63832b91039bcb73190393ab632a430b9b41605d1b60208201526116099084611c19565b60408051808201909152601781527603432b63832b91039bcb73190393ab632a4b22430b9b41604d1b60208201526116419083611c19565b60001960ff8516016117005760005b85518110156116fa5785818151811061166b5761166b61487a565b60200260200101516020015160ff166000036116e8576116e884848884815181106116985761169861487a565b60200260200101516127108b610260015160ff168b87815181106116be576116be61487a565b6020026020010151604001516116d491906148bf565b6116de91906148d6565b600080600061256a565b806116f2816148a6565b915050611650565b50611718565b60011960ff85160161171857611718868684866126b1565b505050505050565b60008181526002602052604081206107319061285f565b6000828152600160208190526040909120015461175381611aa3565b6108e48383611acf565b6000600482815481106117725761177261487a565b90600052602060002001549050919050565b6060818311156117d65760405162461bcd60e51b815260206004820152601f60248201527f626567696e496e646578206c6172676572207468616e20656e64496e646578006044820152606401610955565b6004546117e5906001906148f8565b82106118285760405162461bcd60e51b8152602060048201526012602482015271656e64496e64657820746f6f206c6172676560701b6044820152606401610955565b600061183484846148f8565b61183f90600161490b565b6001600160401b03811115611856576118566136ef565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b50905060005b81518110156118e457600461189a828761490b565b815481106118aa576118aa61487a565b90600052602060002001548282815181106118c7576118c761487a565b6020908102919091010152806118dc816148a6565b915050611885565b509392505050565b61070981612869565b60006001600160e01b03198216637965db0b60e01b148061073157506301ffc9a760e01b6001600160e01b0319831614610731565b604080516001600160a01b039889166020808301919091529789168183015263ffffffff968716606082015294881660808601529290941660a084015290941660c082015261ffff90911660e08083019190915283518083039091018152610100909101909252815191012090565b6000611a2283600001516000815181106119b5576119b561487a565b6020026020010151600184600060086119ce919061491e565b6119d990600461491e565b6119e490600861491e565b6119ef90600461491e565b6119fa90601061491e565b611a0590601861491e565b611a1090602061491e565b611a1a919061491e565b60ff1661288a565b6001149392505050565b6000611a228360000151600081518110611a4857611a4861487a565b602002602001015160018460006008611a61919061491e565b611a6c90600461491e565b611a7790600861491e565b611a8290600461491e565b611a8d90601061491e565b611a9890601861491e565b611a0590602061491e565b61070981336128a9565b611ab78282612902565b60008281526002602052604090206108e4908261296d565b611ad98282612982565b60008281526002602052604090206108e490826129e9565b611b7b82600001600081548110611b0a57611b0a61487a565b90600052602060002001546001808460006008611b27919061491e565b611b3290600461491e565b611b3d90600861491e565b611b4890600461491e565b611b5390601061491e565b611b5e90601861491e565b611b6990602061491e565b611b73919061491e565b60ff166129fe565b82600001600081548110611b9157611b9161487a565b6000918252602090912001555050565b611b7b82600001600081548110611bba57611bba61487a565b90600052602060002001546001808460006008611bd7919061491e565b611be290600461491e565b611bed90600861491e565b611bf890600461491e565b611c0390601061491e565b611c0e90601861491e565b611b5e90602061491e565b61025c8282604051602401611c2f929190614937565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526118ec565b61025c8282604051602401611c74929190614959565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790526118ec565b60008054610100900460ff1615611cea578160ff166001148015611cc65750303b155b611ce25760405162461bcd60e51b815260040161095590614983565b506000919050565b60005460ff808416911610611d115760405162461bcd60e51b815260040161095590614983565b506000805460ff191660ff92909216919091179055600190565b919050565b61025c8282611aad565b6000610d118383612a23565b611d4e613627565b611d56613627565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006107318260a00151601060006008611da7919061490b565b611db290601061490b565b61288a565b60408051600280825260608083018452926000929190602083019080368337505084519192505060ff1660011901611e81576000611df484612a4d565b905060ff8116611e7b578360400151600281518110611e1557611e1561487a565b602002602001015182600081518110611e3057611e3061487a565b6020026020010181815250508360400151600381518110611e5357611e5361487a565b602002602001015182600181518110611e6e57611e6e61487a565b6020026020010181815250505b50610731565b825160ff1660021901610731576000611e9984612a4d565b905060ff8116610b0f578360400151600481518110611eba57611eba61487a565b602002602001015182600081518110611ed557611ed561487a565b6020026020010181815250508360400151600581518110611ef857611ef861487a565b602002602001015182600181518110611f1357611f1361487a565b6020026020010181815250505092915050565b60c081015160019015611f415780611f3d816148a6565b9150505b8160e0015161271014611f5c5780611f58816148a6565b9150505b81610100015161271014611f785780611f74816148a6565b9150505b61014082015151151580611f9157506101608201515115155b80611fa157506101a08201515115155b15612013576000826101600151518361014001515111611fe657826101a00151518361016001515111611fda57826101a0015151611fee565b82610160015151611fee565b826101400151515b9050611ffb8160046148bf565b612005908361490b565b60ff90911661012084015290505b61203d6040518060600160405280602e8152602001614acd602e913983610120015160ff16611c19565b806001600160401b03811115612055576120556136ef565b60405190808252806020026020018201604052801561207e578160200160208202803683370190505b508352815161208e908490612a80565b61209c838360200151612ad8565b6120aa838360600151612b11565b6120b8838360400151612b60565b6120c783836101200151612ba4565b6120e8604051806060016040528060258152602001614afb602591396106c6565b60008060019050836080015162ffffff166127101461211d5761210f858560800151612c35565b61211a6001836149d1565b91505b8360a0015163ffffffff166127101461214c5761213e858560a00151612c9c565b6121496002836149d1565b91505b60c0840151156121925760c0840151855182612167816148a6565b9350815181106121795761217961487a565b602090810291909101015261218f6004836149d1565b91505b8360e00151612710146121db5760e08401518551826121b0816148a6565b9350815181106121c2576121c261487a565b60209081029190910101526121d86008836149d1565b91505b83610100015161271014612226576101008401518551826121fb816148a6565b93508151811061220d5761220d61487a565b60209081029190910101526122236010836149d1565b91505b61012084015160ff16156125145760005b84610120015160ff168110156124e25760008561014001515111801561226257508461014001515181105b156122b957846101400151818151811061227e5761227e61487a565b602002602001015186600001518380612296906148a6565b9450815181106122a8576122a861487a565b6020026020010181815250506122e7565b8551600090836122c8816148a6565b9450815181106122da576122da61487a565b6020026020010181815250505b60008561016001515111801561230257508461016001515181105b1561235957846101600151818151811061231e5761231e61487a565b602002602001015186600001518380612336906148a6565b9450815181106123485761234861487a565b602002602001018181525050612387565b855160009083612368816148a6565b94508151811061237a5761237a61487a565b6020026020010181815250505b6000856101800151511180156123a257508461018001515181105b156123fc5784610180015181815181106123be576123be61487a565b602002602001015160ff16866000015183806123d9906148a6565b9450815181106123eb576123eb61487a565b602002602001018181525050612429565b855181908361240a816148a6565b94508151811061241c5761241c61487a565b6020026020010181815250505b6000856101a00151511180156124445750846101a001515181105b156124a457846101a0015181815181106124605761246061487a565b60200260200101516001600160a01b031686600001518380612481906148a6565b9450815181106124935761249361487a565b6020026020010181815250506124d2565b8551600090836124b3816148a6565b9450815181106124c5576124c561487a565b6020026020010181815250505b6124db816148a6565b9050612237565b506124ee6020836149d1565b9150612514604051806080016040528060448152602001614b8860449139865151611c19565b61251e8583612d0f565b5050505050565b61025c828260405160240161253b9291906149ec565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b1790526118ec565b61258c6040518060600160405280602b8152602001614bcc602b913988611c19565b600087815260056020908152604080832088516001600160a01b031684529091529020811561262357600087815260066020908152604080832089516001600160a01b03168452909152902054600160301b900460ff16156125ee57506126a8565b600087815260066020908152604080832089516001600160a01b031684529091529020805460ff60301b1916600160301b1790555b60018101805460ff60e81b1916600160e81b179055848315612657578361264a86836148bf565b61265491906148d6565b90505b815461266490829061490b565b6001600160e81b03908116835560018301546126829183911661490b565b60019290920180546001600160e81b0319166001600160e81b0390931692909217909155505b50505050505050565b600080856020015186600001516126c8919061490b565b90506127076040518060400160405280601b81526020017a5f6c6f6f745072697a65506f6f6c206c6f6f742062616c616e636560281b81525082611c19565b61274a6040518060400160405280601f81526020017f5f6c6f6f745072697a65506f6f6c206c6f6f7420706f6f6c42616c616e6365008152508760000151611c19565b612770604051806060016040528060238152602001614b20602391398760200151611c19565b60005b86610280015151811080156127885750855181105b1561283c57600087610280015182815181106127a6576127a661487a565b602002602001015160ff16905080846127bf919061490b565b93506128038587898560018c516127d691906148f8565b6127e091906148f8565b815181106127f0576127f061487a565b602002602001015186856064600061256a565b816001885161281291906148f8565b61281c91906148f8565b600003612829575061283c565b5080612834816148a6565b915050612773565b506128488260646148f8565b91508115611718576117188385875185898b612d5f565b6000610731825490565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b91821c9160008061289e600180861b6148f8565b909416949350505050565b6128b38282610d18565b61025c576128c0816132ed565b6128cb8360206132ff565b6040516020016128dc929190614a10565b60408051601f198184030181529082905262461bcd60e51b825261095591600401613ad3565b61290c8282610d18565b61025c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d11836001600160a01b03841661349a565b61298c8282610d18565b1561025c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d11836001600160a01b0384166134e9565b600083821b8183612a12600180881b6148f8565b901b19969096161795945050505050565b6000826000018281548110612a3a57612a3a61487a565b9060005260206000200154905092915050565b60006107318260400151600081518110612a6957612a6961487a565b6020026020010151600460ff16600060ff1661288a565b612ab58260000151600081518110612a9a57612a9a61487a565b60200260200101518260ff16600860ff16600060ff166129fe565b82518051600090612ac857612ac861487a565b6020026020010181815250505050565b612ab58260000151600081518110612af257612af261487a565b60200260200101518260ff16600460ff1660006008611b73919061491e565b612ab58260000151600081518110612b2b57612b2b61487a565b60200260200101518260ff16600460ff1660006008612b4a919061491e565b612b5590600461491e565b611b7390600861491e565b612ab58260000151600081518110612b7a57612b7a61487a565b60200260200101518260ff16600860ff1660006008612b99919061491e565b611b7390600461491e565b612ab58260000151600081518110612bbe57612bbe61487a565b60200260200101518260ff16600860ff1660006008612bdd919061491e565b612be890600461491e565b612bf390600861491e565b612bfe90600461491e565b612c0990601061491e565b612c1490601861491e565b612c1f90602061491e565b612c2a90602061491e565b611b7390602061491e565b612ab58260000151600081518110612c4f57612c4f61487a565b60200260200101518262ffffff16601860ff1660006008612c70919061491e565b612c7b90600461491e565b612c8690600861491e565b612c9190600461491e565b611b7390601061491e565b612ab58260000151600081518110612cb657612cb661487a565b60200260200101518263ffffffff16602060ff1660006008612cd8919061491e565b612ce390600461491e565b612cee90600861491e565b612cf990600461491e565b612d0490601061491e565b611b7390601861491e565b612ab58260000151600081518110612d2957612d2961487a565b60200260200101518261ffff16601060ff1660006008612d49919061491e565b612d5490600461491e565b612b9990600861491e565b600060648483602001518460000151612d78919061490b565b612d8291906148bf565b612d8c91906148d6565b8351909150600080876001600160401b03811115612dac57612dac6136ef565b604051908082528060200260200182016040528015612dd5578160200160208202803683370190505b5090506000886001600160401b03811115612df257612df26136ef565b604051908082528060200260200182016040528015612e1b578160200160208202803683370190505b509050612e57604051806040016040528060188152602001775f6c6f6f745072697a65506f6f6c4279576569676874203160401b8152506106c6565b612e966040518060400160405280601c81526020017f5f6c6f6f745072697a65506f6f6c427957656967687420636f756e74000000008152508a611c19565b612ed56040518060400160405280601d81526020017f5f6c6f6f745072697a65506f6f6c4279576569676874206c656e67746800000081525085611c19565b6000612ee26001866148f8565b90505b612eef8a866148f8565b81106130555760408051808201909152601c81527f5f6c6f6f745072697a65506f6f6c427957656967687420696e646578000000006020820152612f489082612f396001896148f8565b612f4391906148f8565b611c19565b878181518110612f5a57612f5a61487a565b6020026020010151600001518382600188612f7591906148f8565b612f7f91906148f8565b81518110612f8f57612f8f61487a565b6001600160a01b0390921660209283029190910182015260008c8152600690915260408120908483612fc260018a6148f8565b612fcc91906148f8565b81518110612fdc57612fdc61487a565b6020908102919091018101516001600160a01b0316825281019190915260400160002054610100900463ffffffff1682826130186001896148f8565b61302291906148f8565b815181106130325761303261487a565b60209081029190910101528015613055578061304d81614a7f565b915050612ee5565b5061308f604051806040016040528060188152602001772fb637b7ba283934bd32a837b7b6213cabb2b4b3b43a101960411b8152506106c6565b600061309c6001866148f8565b90505b6130a98a866148f8565b81106132045760008b81526006602052604081209084836130cb60018a6148f8565b6130d591906148f8565b815181106130e5576130e561487a565b6020908102919091018101516001600160a01b0316825281019190915260400160002054600160281b900460ff166131ec578782826131256001896148f8565b61312f91906148f8565b8151811061313f5761313f61487a565b6020026020010151815181106131575761315761487a565b6020026020010151604001518461316e919061490b565b60008c815260066020526040812091955060019190858461318f858b6148f8565b61319991906148f8565b815181106131a9576131a961487a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000160056101000a81548160ff0219169083151502179055505b801561320457806131fc81614a7f565b91505061309f565b5061323e604051806040016040528060188152602001775f6c6f6f745072697a65506f6f6c4279576569676874203360401b8152506106c6565b600061324b6001866148f8565b90505b6132588a866148f8565b81106132df57600088838361326e60018a6148f8565b61327891906148f8565b815181106132885761328861487a565b6020026020010151815181106132a0576132a061487a565b602002602001015190506132be8d8d838a85604001518a600161256a565b816000036132cc57506132df565b50806132d781614a7f565b91505061324e565b505050505050505050505050565b60606107316001600160a01b03831660145b6060600061330e8360026148bf565b61331990600261490b565b6001600160401b03811115613330576133306136ef565b6040519080825280601f01601f19166020018201604052801561335a576020820181803683370190505b509050600360fc1b816000815181106133755761337561487a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106133a4576133a461487a565b60200101906001600160f81b031916908160001a90535060006133c88460026148bf565b6133d390600161490b565b90505b600181111561344b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106134075761340761487a565b1a60f81b82828151811061341d5761341d61487a565b60200101906001600160f81b031916908160001a90535060049490941c9361344481614a7f565b90506133d6565b508315610d115760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610955565b60008181526001830160205260408120546134e157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610731565b506000610731565b600081815260018301602052604081205480156135d257600061350d6001836148f8565b8554909150600090613521906001906148f8565b90508181146135865760008660000182815481106135415761354161487a565b90600052602060002001549050808760000184815481106135645761356461487a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061359757613597614a96565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610731565b6000915050610731565b828054828255906000526020600020908101928215613617579160200282015b828111156136175782518255916020019190600101906135fc565b506136239291506136b0565b5090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b8082111561362357600081556001016136b1565b6000602082840312156136d757600080fd5b81356001600160e01b031981168114610d1157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613728576137286136ef565b60405290565b604051608081016001600160401b0381118282101715613728576137286136ef565b60405160a081016001600160401b0381118282101715613728576137286136ef565b604080519081016001600160401b0381118282101715613728576137286136ef565b60405161018081016001600160401b0381118282101715613728576137286136ef565b6040516102a081016001600160401b0381118282101715613728576137286136ef565b604051606081016001600160401b0381118282101715613728576137286136ef565b604051601f8201601f191681016001600160401b0381118282101715613824576138246136ef565b604052919050565b6001600160a01b038116811461070957600080fd5b8035611d2b8161382c565b803563ffffffff81168114611d2b57600080fd5b60ff8116811461070957600080fd5b8035611d2b81613860565b803561ffff81168114611d2b57600080fd5b6000610140828403121561389f57600080fd5b6138a7613705565b90506138b282613841565b81526138c060208301613841565b60208201526138d160408301613841565b60408201526138e26060830161384c565b60608201526138f36080830161384c565b608082015261390460a08301613841565b60a082015261391560c0830161386f565b60c082015261392660e0830161387a565b60e082015261010061393981840161386f565b9082015261012061394b83820161386f565b9082015292915050565b6000610140828403121561396857600080fd5b610d11838361388c565b60006020828403121561398457600080fd5b5035919050565b6000806040838503121561399e57600080fd5b50508035926020909101359150565b801515811461070957600080fd5b600080600083850360c08112156139d157600080fd5b8435935060208501356139e38161382c565b92506080603f19820112156139f757600080fd5b50613a0061372e565b6040850135613a0e816139ad565b8152613a1c6060860161384c565b60208201526080850135613a2f816139ad565b604082015260a0850135613a42816139ad565b606082015292959194509192509050565b60008060408385031215613a6657600080fd5b823591506020830135613a788161382c565b809150509250929050565b60005b83811015613a9e578181015183820152602001613a86565b50506000910152565b60008151808452613abf816020860160208601613a83565b601f01601f19169290920160200192915050565b602081526000610d116020830184613aa7565b6000806101608385031215613afa57600080fd5b613b04848461388c565b9150610140830135613a788161382c565b60006001600160401b03821115613b2e57613b2e6136ef565b50601f01601f191660200190565b600082601f830112613b4d57600080fd5b8135613b60613b5b82613b15565b6137fc565b818152846020838601011115613b7557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060006101208a8c031215613bb157600080fd5b8935613bbc8161382c565b985060208a0135613bcc8161382c565b975060408a0135613bdc8161382c565b9650613bea60608b0161384c565b955060808a0135613bfa8161382c565b9450613c0860a08b0161384c565b935060c08a01356001600160401b03811115613c2357600080fd5b613c2f8c828d01613b3c565b935050613c3e60e08b0161387a565b91506101008a0135613c4f8161382c565b809150509295985092959850929598565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015613ca55783518252928401926001929092019190840190613c85565b509695505050505050565b60006001600160401b03821115613cc957613cc96136ef565b5060051b60200190565b600082601f830112613ce457600080fd5b81356020613cf4613b5b83613cb0565b82815260059290921b84018101918181019086841115613d1357600080fd5b8286015b84811015613ca55780356001600160401b0380821115613d3657600080fd5b9088019060a0828b03601f19011215613d4e57600080fd5b613d56613750565b86830135613d6381613860565b8152604083810135613d748161382c565b828901526060848101358284015260808501359083015260a084013583811115613d9e5760008081fd5b8085019450508b603f850112613db657600092508283fd5b878401359250613dc8613b5b84613cb0565b83815260069390931b8401810192888101908d851115613de85760008081fd5b948201945b84861015613e3f5782868f031215613e055760008081fd5b613e0d613772565b613e168761384c565b81528a8701358060040b8114613e2c5760008081fd5b818c015282529482019490890190613ded565b6080840152505085525050918301918301613d17565b600060a08284031215613e6757600080fd5b613e6f613750565b90508135613e7c8161382c565b81526020820135613e8c8161382c565b60208201526040820135613e9f8161382c565b604082015260608201356001600160401b0380821115613ebe57600080fd5b908301906101808286031215613ed357600080fd5b613edb613794565b613ee483613841565b8152613ef260208401613841565b6020820152613f0360408401613841565b6040820152613f1460608401613841565b60608201526080830135608082015260a083013560a0820152613f3960c0840161384c565b60c0820152613f4a60e0840161384c565b60e0820152610100613f5d81850161384c565b90820152610120613f6f84820161386f565b908201526101408381013583811115613f8757600080fd5b613f9388828701613cd3565b8284015250506101608084013583811115613fad57600080fd5b613fb988828701613b3c565b828401525050806060850152505050613fd46080830161386f565b608082015292915050565b600082601f830112613ff057600080fd5b81356020614000613b5b83613cb0565b82815260059290921b8401810191818101908684111561401f57600080fd5b8286015b84811015613ca557803561403681613860565b8352918301918301614023565b60006102a0828403121561405657600080fd5b61405e6137b7565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015261409860a0830161384c565b60a08201526140a960c0830161384c565b60c08201526140ba60e0830161384c565b60e08201526101006140cd81840161384c565b908201526101206140df83820161384c565b908201526101406140f183820161387a565b9082015261016061410383820161387a565b9082015261018061411583820161384c565b908201526101a061412783820161386f565b908201526101c061413983820161386f565b908201526101e061414b83820161386f565b9082015261020061415d83820161386f565b9082015261022061416f838201613841565b90820152610240614181838201613841565b9082015261026061419383820161386f565b90820152610280828101356001600160401b038111156141b257600080fd5b6141be85828601613fdf565b82840152505092915050565b6000806000606084860312156141df57600080fd5b83356001600160401b03808211156141f657600080fd5b61420287838801613e55565b945060208601359350604086013591508082111561421f57600080fd5b5061422c86828701614043565b9150509250925092565b60008060006060848603121561424b57600080fd5b83356001600160401b0381111561426157600080fd5b61426d86828701613e55565b93505060208401359150604084013561428581613860565b809150509250925092565b600080600083850360a08112156142a657600080fd5b8435935060208501356142b88161382c565b92506060603f19820112156142cc57600080fd5b506142d56137da565b6040850135815260608501356001600160e81b03811681146142f657600080fd5b60208201526080850135614309816139ad565b604082015292959194509192509050565b6020808252825182820181905260009190848201906040850190845b8181101561435257835183529284019291840191600101614336565b50909695505050505050565b600080600080600060a0868803121561437657600080fd5b85356001600160401b038082111561438d57600080fd5b61439989838a01614043565b96506020915081880135818111156143b057600080fd5b88019050601f810189136143c357600080fd5b80356143d1613b5b82613cb0565b8181526060918202830184019184820191908c8411156143f057600080fd5b938501935b8385101561444c5780858e03121561440d5760008081fd5b6144156137da565b85356144208161382c565b81528587013561442f81613860565b8188015260408681013590820152835293840193918501916143f5565b81995061445b60408d0161386f565b9a9d999c50999a998a0135996080013598975050505050505050565b8051611d2b8161382c565b60006020828403121561449457600080fd5b8151610d118161382c565b8051611d2b81613860565b600082601f8301126144bb57600080fd5b815160206144cb613b5b83613cb0565b82815260059290921b840181019181810190868411156144ea57600080fd5b8286015b84811015613ca557805183529183019183016144ee565b600082601f83011261451657600080fd5b81516020614526613b5b83613cb0565b82815260059290921b8401810191818101908684111561454557600080fd5b8286015b84811015613ca557805161455c8161382c565b8352918301918301614549565b600082601f83011261457a57600080fd5b8151602061458a613b5b83613cb0565b82815260059290921b840181019181810190868411156145a957600080fd5b8286015b84811015613ca55780516001600160401b03808211156145cc57600080fd5b90880190601f196080838c03820112156145e557600080fd5b6145ed61372e565b87840151838111156145fe57600080fd5b84016060818e038401121561461257600080fd5b61461a6137da565b92508881015161462981613860565b835260408181015161463a8161382c565b848b015260608201518581111561465057600080fd5b61465e8f8c838601016144aa565b828601525083835261467181870161449f565b8a840152606086015193508484111561468957600080fd5b6146978e8b86890101614505565b908301525060808401519150828211156146b057600080fd5b6146be8c89848701016144aa565b606082015286525050509183019183016145ad565b600082601f8301126146e457600080fd5b815160206146f4613b5b83613cb0565b82815260059290921b8401810191818101908684111561471357600080fd5b8286015b84811015613ca55780516001600160401b038111156147365760008081fd5b8701603f810189136147485760008081fd5b84810151604061475a613b5b83613b15565b8281528b8284860101111561476f5760008081fd5b61477e83898301848701613a83565b8652505050918301918301614717565b600080604083850312156147a157600080fd5b82516147ac816139ad565b60208401519092506001600160401b03808211156147c957600080fd5b9084019060a082870312156147dd57600080fd5b6147e5613750565b8251828111156147f457600080fd5b61480088828601614569565b82525061480f6020840161449f565b602082015261482060408401614477565b604082015260608301518281111561483757600080fd5b61484388828601614505565b60608301525060808301518281111561485b57600080fd5b614867888286016146d3565b6080830152508093505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016148b8576148b8614890565b5060010190565b808202811582820484141761073157610731614890565b6000826148f357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561073157610731614890565b8082018082111561073157610731614890565b60ff818116838216019081111561073157610731614890565b60408152600061494a6040830185613aa7565b90508260208301529392505050565b60408152600061496c6040830185613aa7565b905060018060a01b03831660208301529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b61ffff818116838216019080821115610b0f57610b0f614890565b6040815260006149ff6040830185613aa7565b905082151560208301529392505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614a42816017850160208801613a83565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614a73816028840160208801613a83565b01602801949350505050565b600081614a8e57614a8e614890565b506000190190565b634e487b7160e01b600052603160045260246000fdfe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adc2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320315f6c6f6f745072697a65506f6f6c206c6f6f74206469766964656e6442616c616e6365736574436c61696d496e666f20636c61696d496e666f206e6f74436c61696d6564736574436c61696d496e666f20636c61696d496e666f2062616c616e636520746f74616c2d2d2d2d2d2d2d2d2d2d2d2d20746f6b656e48616e646c657220736574506172616d7320746f6b656e436f756e742073656c662e76616c75654c6973742e6c656e67746868656c706572205f636f6d70757465436c61696d416d6f756e7420636c757374657252756c654861736820a2646970667358221220d20d0cb0227a42ec101bf118ac75f85566c069f95db804ef8a52258319f7a73264736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
