@campnetwork/origin 1.3.0-alpha.0 → 1.3.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/core.cjs +287 -112
- package/dist/core.d.ts +137 -8
- package/dist/core.esm.d.ts +137 -8
- package/dist/core.esm.js +299 -125
- package/dist/react/index.esm.d.ts +127 -8
- package/dist/react/index.esm.js +1480 -916
- package/package.json +2 -1
package/dist/react/index.esm.js
CHANGED
|
@@ -3695,1237 +3695,1237 @@ var batchPurchaseAbi = [
|
|
|
3695
3695
|
|
|
3696
3696
|
var disputeAbi = [
|
|
3697
3697
|
{
|
|
3698
|
-
type: "constructor",
|
|
3699
3698
|
inputs: [
|
|
3700
3699
|
],
|
|
3701
|
-
stateMutability: "nonpayable"
|
|
3700
|
+
stateMutability: "nonpayable",
|
|
3701
|
+
type: "constructor"
|
|
3702
3702
|
},
|
|
3703
3703
|
{
|
|
3704
|
-
type: "function",
|
|
3705
|
-
name: "UPGRADE_INTERFACE_VERSION",
|
|
3706
3704
|
inputs: [
|
|
3707
|
-
],
|
|
3708
|
-
outputs: [
|
|
3709
3705
|
{
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3706
|
+
internalType: "address",
|
|
3707
|
+
name: "target",
|
|
3708
|
+
type: "address"
|
|
3713
3709
|
}
|
|
3714
3710
|
],
|
|
3715
|
-
|
|
3711
|
+
name: "AddressEmptyCode",
|
|
3712
|
+
type: "error"
|
|
3716
3713
|
},
|
|
3717
3714
|
{
|
|
3718
|
-
type: "function",
|
|
3719
|
-
name: "cancelDispute",
|
|
3720
3715
|
inputs: [
|
|
3721
|
-
{
|
|
3722
|
-
name: "id",
|
|
3723
|
-
type: "uint256",
|
|
3724
|
-
internalType: "uint256"
|
|
3725
|
-
}
|
|
3726
3716
|
],
|
|
3727
|
-
|
|
3717
|
+
name: "AlreadyVoted",
|
|
3718
|
+
type: "error"
|
|
3719
|
+
},
|
|
3720
|
+
{
|
|
3721
|
+
inputs: [
|
|
3728
3722
|
],
|
|
3729
|
-
|
|
3723
|
+
name: "CoolDownPeriodActive",
|
|
3724
|
+
type: "error"
|
|
3725
|
+
},
|
|
3726
|
+
{
|
|
3727
|
+
inputs: [
|
|
3728
|
+
],
|
|
3729
|
+
name: "CoolDownPeriodOver",
|
|
3730
|
+
type: "error"
|
|
3730
3731
|
},
|
|
3731
3732
|
{
|
|
3732
|
-
type: "function",
|
|
3733
|
-
name: "disputeAssertion",
|
|
3734
3733
|
inputs: [
|
|
3735
3734
|
{
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
|
|
3739
|
-
},
|
|
3740
|
-
{
|
|
3741
|
-
name: "_counterEvidenceHash",
|
|
3742
|
-
type: "bytes32",
|
|
3743
|
-
internalType: "bytes32"
|
|
3735
|
+
internalType: "address",
|
|
3736
|
+
name: "implementation",
|
|
3737
|
+
type: "address"
|
|
3744
3738
|
}
|
|
3745
3739
|
],
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
stateMutability: "nonpayable"
|
|
3740
|
+
name: "ERC1967InvalidImplementation",
|
|
3741
|
+
type: "error"
|
|
3749
3742
|
},
|
|
3750
3743
|
{
|
|
3751
|
-
type: "function",
|
|
3752
|
-
name: "disputeBond",
|
|
3753
3744
|
inputs: [
|
|
3754
3745
|
],
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
|
|
3760
|
-
}
|
|
3746
|
+
name: "ERC1967NonPayable",
|
|
3747
|
+
type: "error"
|
|
3748
|
+
},
|
|
3749
|
+
{
|
|
3750
|
+
inputs: [
|
|
3761
3751
|
],
|
|
3762
|
-
|
|
3752
|
+
name: "EvidenceAlreadyUsed",
|
|
3753
|
+
type: "error"
|
|
3763
3754
|
},
|
|
3764
3755
|
{
|
|
3765
|
-
type: "function",
|
|
3766
|
-
name: "disputeCoolDownPeriod",
|
|
3767
3756
|
inputs: [
|
|
3768
3757
|
],
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
}
|
|
3758
|
+
name: "FailedCall",
|
|
3759
|
+
type: "error"
|
|
3760
|
+
},
|
|
3761
|
+
{
|
|
3762
|
+
inputs: [
|
|
3775
3763
|
],
|
|
3776
|
-
|
|
3764
|
+
name: "InvalidBondFeeBps",
|
|
3765
|
+
type: "error"
|
|
3777
3766
|
},
|
|
3778
3767
|
{
|
|
3779
|
-
type: "function",
|
|
3780
|
-
name: "disputeCounter",
|
|
3781
3768
|
inputs: [
|
|
3782
3769
|
],
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
}
|
|
3770
|
+
name: "InvalidChildIpId",
|
|
3771
|
+
type: "error"
|
|
3772
|
+
},
|
|
3773
|
+
{
|
|
3774
|
+
inputs: [
|
|
3789
3775
|
],
|
|
3790
|
-
|
|
3776
|
+
name: "InvalidDisputeStatus",
|
|
3777
|
+
type: "error"
|
|
3791
3778
|
},
|
|
3792
3779
|
{
|
|
3793
|
-
type: "function",
|
|
3794
|
-
name: "disputeJudgementPeriod",
|
|
3795
3780
|
inputs: [
|
|
3796
3781
|
],
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
}
|
|
3782
|
+
name: "InvalidDisputeTag",
|
|
3783
|
+
type: "error"
|
|
3784
|
+
},
|
|
3785
|
+
{
|
|
3786
|
+
inputs: [
|
|
3803
3787
|
],
|
|
3804
|
-
|
|
3788
|
+
name: "InvalidEvidenceHash",
|
|
3789
|
+
type: "error"
|
|
3805
3790
|
},
|
|
3806
3791
|
{
|
|
3807
|
-
type: "function",
|
|
3808
|
-
name: "disputeQuorum",
|
|
3809
3792
|
inputs: [
|
|
3810
3793
|
],
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
}
|
|
3794
|
+
name: "InvalidInitialization",
|
|
3795
|
+
type: "error"
|
|
3796
|
+
},
|
|
3797
|
+
{
|
|
3798
|
+
inputs: [
|
|
3817
3799
|
],
|
|
3818
|
-
|
|
3800
|
+
name: "InvalidTargetIp",
|
|
3801
|
+
type: "error"
|
|
3819
3802
|
},
|
|
3820
3803
|
{
|
|
3821
|
-
type: "function",
|
|
3822
|
-
name: "disputeToken",
|
|
3823
3804
|
inputs: [
|
|
3824
3805
|
],
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
}
|
|
3806
|
+
name: "NoVotingPower",
|
|
3807
|
+
type: "error"
|
|
3808
|
+
},
|
|
3809
|
+
{
|
|
3810
|
+
inputs: [
|
|
3831
3811
|
],
|
|
3832
|
-
|
|
3812
|
+
name: "NotAParentIp",
|
|
3813
|
+
type: "error"
|
|
3833
3814
|
},
|
|
3834
3815
|
{
|
|
3835
|
-
type: "function",
|
|
3836
|
-
name: "disputes",
|
|
3837
3816
|
inputs: [
|
|
3838
|
-
{
|
|
3839
|
-
name: "",
|
|
3840
|
-
type: "uint256",
|
|
3841
|
-
internalType: "uint256"
|
|
3842
|
-
}
|
|
3843
3817
|
],
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
},
|
|
3850
|
-
{
|
|
3851
|
-
name: "targetId",
|
|
3852
|
-
type: "uint256",
|
|
3853
|
-
internalType: "uint256"
|
|
3854
|
-
},
|
|
3855
|
-
{
|
|
3856
|
-
name: "disputeTag",
|
|
3857
|
-
type: "bytes32",
|
|
3858
|
-
internalType: "bytes32"
|
|
3859
|
-
},
|
|
3860
|
-
{
|
|
3861
|
-
name: "disputeEvidenceHash",
|
|
3862
|
-
type: "bytes32",
|
|
3863
|
-
internalType: "bytes32"
|
|
3864
|
-
},
|
|
3865
|
-
{
|
|
3866
|
-
name: "counterEvidenceHash",
|
|
3867
|
-
type: "bytes32",
|
|
3868
|
-
internalType: "bytes32"
|
|
3869
|
-
},
|
|
3870
|
-
{
|
|
3871
|
-
name: "disputeTimestamp",
|
|
3872
|
-
type: "uint256",
|
|
3873
|
-
internalType: "uint256"
|
|
3874
|
-
},
|
|
3875
|
-
{
|
|
3876
|
-
name: "assertionTimestamp",
|
|
3877
|
-
type: "uint256",
|
|
3878
|
-
internalType: "uint256"
|
|
3879
|
-
},
|
|
3880
|
-
{
|
|
3881
|
-
name: "yesVotes",
|
|
3882
|
-
type: "uint256",
|
|
3883
|
-
internalType: "uint256"
|
|
3884
|
-
},
|
|
3885
|
-
{
|
|
3886
|
-
name: "noVotes",
|
|
3887
|
-
type: "uint256",
|
|
3888
|
-
internalType: "uint256"
|
|
3889
|
-
},
|
|
3890
|
-
{
|
|
3891
|
-
name: "status",
|
|
3892
|
-
type: "uint8",
|
|
3893
|
-
internalType: "enum DisputeModule.DisputeStatus"
|
|
3894
|
-
},
|
|
3895
|
-
{
|
|
3896
|
-
name: "bondAmount",
|
|
3897
|
-
type: "uint256",
|
|
3898
|
-
internalType: "uint256"
|
|
3899
|
-
},
|
|
3900
|
-
{
|
|
3901
|
-
name: "protocolFeeAmount",
|
|
3902
|
-
type: "uint256",
|
|
3903
|
-
internalType: "uint256"
|
|
3904
|
-
}
|
|
3818
|
+
name: "NotInitializing",
|
|
3819
|
+
type: "error"
|
|
3820
|
+
},
|
|
3821
|
+
{
|
|
3822
|
+
inputs: [
|
|
3905
3823
|
],
|
|
3906
|
-
|
|
3824
|
+
name: "NotInitiator",
|
|
3825
|
+
type: "error"
|
|
3907
3826
|
},
|
|
3908
3827
|
{
|
|
3909
|
-
type: "function",
|
|
3910
|
-
name: "hasVoted",
|
|
3911
3828
|
inputs: [
|
|
3912
|
-
{
|
|
3913
|
-
name: "",
|
|
3914
|
-
type: "uint256",
|
|
3915
|
-
internalType: "uint256"
|
|
3916
|
-
},
|
|
3917
|
-
{
|
|
3918
|
-
name: "",
|
|
3919
|
-
type: "address",
|
|
3920
|
-
internalType: "address"
|
|
3921
|
-
}
|
|
3922
3829
|
],
|
|
3923
|
-
|
|
3830
|
+
name: "NotTokenOwner",
|
|
3831
|
+
type: "error"
|
|
3832
|
+
},
|
|
3833
|
+
{
|
|
3834
|
+
inputs: [
|
|
3924
3835
|
{
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3836
|
+
internalType: "address",
|
|
3837
|
+
name: "owner",
|
|
3838
|
+
type: "address"
|
|
3928
3839
|
}
|
|
3929
3840
|
],
|
|
3930
|
-
|
|
3841
|
+
name: "OwnableInvalidOwner",
|
|
3842
|
+
type: "error"
|
|
3931
3843
|
},
|
|
3932
3844
|
{
|
|
3933
|
-
type: "function",
|
|
3934
|
-
name: "initialize",
|
|
3935
3845
|
inputs: [
|
|
3936
3846
|
{
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
},
|
|
3941
|
-
{
|
|
3942
|
-
name: "_marketplace",
|
|
3943
|
-
type: "address",
|
|
3944
|
-
internalType: "contract IMarketplace"
|
|
3945
|
-
},
|
|
3946
|
-
{
|
|
3947
|
-
name: "_disputeToken",
|
|
3948
|
-
type: "address",
|
|
3949
|
-
internalType: "contract IERC20"
|
|
3950
|
-
},
|
|
3951
|
-
{
|
|
3952
|
-
name: "_disputeBond",
|
|
3953
|
-
type: "uint256",
|
|
3954
|
-
internalType: "uint256"
|
|
3955
|
-
},
|
|
3956
|
-
{
|
|
3957
|
-
name: "_disputeCoolDownPeriod",
|
|
3958
|
-
type: "uint256",
|
|
3959
|
-
internalType: "uint256"
|
|
3960
|
-
},
|
|
3961
|
-
{
|
|
3962
|
-
name: "_disputeJudgementPeriod",
|
|
3963
|
-
type: "uint256",
|
|
3964
|
-
internalType: "uint256"
|
|
3965
|
-
},
|
|
3966
|
-
{
|
|
3967
|
-
name: "_bondFeeBPS",
|
|
3968
|
-
type: "uint16",
|
|
3969
|
-
internalType: "uint16"
|
|
3970
|
-
},
|
|
3971
|
-
{
|
|
3972
|
-
name: "_stakingThreshold",
|
|
3973
|
-
type: "uint256",
|
|
3974
|
-
internalType: "uint256"
|
|
3975
|
-
},
|
|
3976
|
-
{
|
|
3977
|
-
name: "_stakingVault",
|
|
3978
|
-
type: "address",
|
|
3979
|
-
internalType: "contract ICampStakingVault"
|
|
3847
|
+
internalType: "address",
|
|
3848
|
+
name: "account",
|
|
3849
|
+
type: "address"
|
|
3980
3850
|
}
|
|
3981
3851
|
],
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
stateMutability: "nonpayable"
|
|
3852
|
+
name: "OwnableUnauthorizedAccount",
|
|
3853
|
+
type: "error"
|
|
3985
3854
|
},
|
|
3986
3855
|
{
|
|
3987
|
-
type: "function",
|
|
3988
|
-
name: "ipToken",
|
|
3989
3856
|
inputs: [
|
|
3990
3857
|
],
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
name: "",
|
|
3994
|
-
type: "address",
|
|
3995
|
-
internalType: "contract IIpNFT"
|
|
3996
|
-
}
|
|
3997
|
-
],
|
|
3998
|
-
stateMutability: "view"
|
|
3858
|
+
name: "ParentNotDisputed",
|
|
3859
|
+
type: "error"
|
|
3999
3860
|
},
|
|
4000
3861
|
{
|
|
4001
|
-
type: "function",
|
|
4002
|
-
name: "isUsedEvidenceHash",
|
|
4003
3862
|
inputs: [
|
|
4004
|
-
{
|
|
4005
|
-
name: "",
|
|
4006
|
-
type: "bytes32",
|
|
4007
|
-
internalType: "bytes32"
|
|
4008
|
-
}
|
|
4009
|
-
],
|
|
4010
|
-
outputs: [
|
|
4011
|
-
{
|
|
4012
|
-
name: "",
|
|
4013
|
-
type: "bool",
|
|
4014
|
-
internalType: "bool"
|
|
4015
|
-
}
|
|
4016
3863
|
],
|
|
4017
|
-
|
|
3864
|
+
name: "SelfAssertionNotAllowed",
|
|
3865
|
+
type: "error"
|
|
4018
3866
|
},
|
|
4019
3867
|
{
|
|
4020
|
-
type: "function",
|
|
4021
|
-
name: "marketplace",
|
|
4022
3868
|
inputs: [
|
|
4023
3869
|
],
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
name: "",
|
|
4027
|
-
type: "address",
|
|
4028
|
-
internalType: "contract IMarketplace"
|
|
4029
|
-
}
|
|
4030
|
-
],
|
|
4031
|
-
stateMutability: "view"
|
|
3870
|
+
name: "StakedAfterDispute",
|
|
3871
|
+
type: "error"
|
|
4032
3872
|
},
|
|
4033
3873
|
{
|
|
4034
|
-
type: "function",
|
|
4035
|
-
name: "owner",
|
|
4036
3874
|
inputs: [
|
|
4037
3875
|
],
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
name: "",
|
|
4041
|
-
type: "address",
|
|
4042
|
-
internalType: "address"
|
|
4043
|
-
}
|
|
4044
|
-
],
|
|
4045
|
-
stateMutability: "view"
|
|
3876
|
+
name: "TagNotAllowed",
|
|
3877
|
+
type: "error"
|
|
4046
3878
|
},
|
|
4047
3879
|
{
|
|
4048
|
-
type: "function",
|
|
4049
|
-
name: "protocolDisputeFee",
|
|
4050
3880
|
inputs: [
|
|
4051
3881
|
],
|
|
4052
|
-
|
|
3882
|
+
name: "UUPSUnauthorizedCallContext",
|
|
3883
|
+
type: "error"
|
|
3884
|
+
},
|
|
3885
|
+
{
|
|
3886
|
+
inputs: [
|
|
4053
3887
|
{
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
3888
|
+
internalType: "bytes32",
|
|
3889
|
+
name: "slot",
|
|
3890
|
+
type: "bytes32"
|
|
4057
3891
|
}
|
|
4058
3892
|
],
|
|
4059
|
-
|
|
3893
|
+
name: "UUPSUnsupportedProxiableUUID",
|
|
3894
|
+
type: "error"
|
|
4060
3895
|
},
|
|
4061
3896
|
{
|
|
4062
|
-
type: "function",
|
|
4063
|
-
name: "proxiableUUID",
|
|
4064
3897
|
inputs: [
|
|
4065
3898
|
],
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
}
|
|
3899
|
+
name: "VotingPeriodActive",
|
|
3900
|
+
type: "error"
|
|
3901
|
+
},
|
|
3902
|
+
{
|
|
3903
|
+
inputs: [
|
|
4072
3904
|
],
|
|
4073
|
-
|
|
3905
|
+
name: "VotingPeriodOver",
|
|
3906
|
+
type: "error"
|
|
4074
3907
|
},
|
|
4075
3908
|
{
|
|
4076
|
-
|
|
4077
|
-
name: "raiseDispute",
|
|
3909
|
+
anonymous: false,
|
|
4078
3910
|
inputs: [
|
|
4079
3911
|
{
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
3912
|
+
indexed: true,
|
|
3913
|
+
internalType: "uint256",
|
|
3914
|
+
name: "tokenId",
|
|
3915
|
+
type: "uint256"
|
|
4083
3916
|
},
|
|
4084
3917
|
{
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
3918
|
+
indexed: true,
|
|
3919
|
+
internalType: "address",
|
|
3920
|
+
name: "buyer",
|
|
3921
|
+
type: "address"
|
|
4088
3922
|
},
|
|
4089
3923
|
{
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
outputs: [
|
|
3924
|
+
indexed: false,
|
|
3925
|
+
internalType: "uint32",
|
|
3926
|
+
name: "periods",
|
|
3927
|
+
type: "uint32"
|
|
3928
|
+
},
|
|
4096
3929
|
{
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
3930
|
+
indexed: false,
|
|
3931
|
+
internalType: "uint256",
|
|
3932
|
+
name: "newExpiry",
|
|
3933
|
+
type: "uint256"
|
|
3934
|
+
},
|
|
3935
|
+
{
|
|
3936
|
+
indexed: false,
|
|
3937
|
+
internalType: "uint256",
|
|
3938
|
+
name: "amountPaid",
|
|
3939
|
+
type: "uint256"
|
|
4100
3940
|
}
|
|
4101
3941
|
],
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
{
|
|
4105
|
-
type: "function",
|
|
4106
|
-
name: "renounceOwnership",
|
|
4107
|
-
inputs: [
|
|
4108
|
-
],
|
|
4109
|
-
outputs: [
|
|
4110
|
-
],
|
|
4111
|
-
stateMutability: "nonpayable"
|
|
3942
|
+
name: "AccessPurchased",
|
|
3943
|
+
type: "event"
|
|
4112
3944
|
},
|
|
4113
3945
|
{
|
|
4114
|
-
|
|
4115
|
-
name: "resolveDispute",
|
|
3946
|
+
anonymous: false,
|
|
4116
3947
|
inputs: [
|
|
4117
3948
|
{
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
3949
|
+
indexed: true,
|
|
3950
|
+
internalType: "uint256",
|
|
3951
|
+
name: "agentId",
|
|
3952
|
+
type: "uint256"
|
|
3953
|
+
},
|
|
3954
|
+
{
|
|
3955
|
+
indexed: true,
|
|
3956
|
+
internalType: "uint256",
|
|
3957
|
+
name: "ipNftId",
|
|
3958
|
+
type: "uint256"
|
|
3959
|
+
},
|
|
3960
|
+
{
|
|
3961
|
+
indexed: false,
|
|
3962
|
+
internalType: "address",
|
|
3963
|
+
name: "agentAddress",
|
|
3964
|
+
type: "address"
|
|
4121
3965
|
}
|
|
4122
3966
|
],
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
stateMutability: "nonpayable"
|
|
3967
|
+
name: "AgentRegistered",
|
|
3968
|
+
type: "event"
|
|
4126
3969
|
},
|
|
4127
3970
|
{
|
|
4128
|
-
|
|
4129
|
-
name: "setDisputeQuorum",
|
|
3971
|
+
anonymous: false,
|
|
4130
3972
|
inputs: [
|
|
4131
3973
|
{
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
3974
|
+
indexed: true,
|
|
3975
|
+
internalType: "address",
|
|
3976
|
+
name: "appRegistry",
|
|
3977
|
+
type: "address"
|
|
4135
3978
|
}
|
|
4136
3979
|
],
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
stateMutability: "nonpayable"
|
|
3980
|
+
name: "AppRegistryUpdated",
|
|
3981
|
+
type: "event"
|
|
4140
3982
|
},
|
|
4141
3983
|
{
|
|
4142
|
-
|
|
4143
|
-
name: "stakingThreshold",
|
|
3984
|
+
anonymous: false,
|
|
4144
3985
|
inputs: [
|
|
4145
|
-
],
|
|
4146
|
-
outputs: [
|
|
4147
3986
|
{
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
3987
|
+
indexed: true,
|
|
3988
|
+
internalType: "uint256",
|
|
3989
|
+
name: "id",
|
|
3990
|
+
type: "uint256"
|
|
3991
|
+
},
|
|
3992
|
+
{
|
|
3993
|
+
indexed: true,
|
|
3994
|
+
internalType: "uint256",
|
|
3995
|
+
name: "childIp",
|
|
3996
|
+
type: "uint256"
|
|
3997
|
+
},
|
|
3998
|
+
{
|
|
3999
|
+
indexed: false,
|
|
4000
|
+
internalType: "uint256",
|
|
4001
|
+
name: "parentIp",
|
|
4002
|
+
type: "uint256"
|
|
4151
4003
|
}
|
|
4152
4004
|
],
|
|
4153
|
-
|
|
4005
|
+
name: "ChildIpTagged",
|
|
4006
|
+
type: "event"
|
|
4154
4007
|
},
|
|
4155
4008
|
{
|
|
4156
|
-
|
|
4157
|
-
name: "stakingVault",
|
|
4009
|
+
anonymous: false,
|
|
4158
4010
|
inputs: [
|
|
4159
|
-
],
|
|
4160
|
-
outputs: [
|
|
4161
4011
|
{
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4012
|
+
indexed: true,
|
|
4013
|
+
internalType: "uint256",
|
|
4014
|
+
name: "tokenId",
|
|
4015
|
+
type: "uint256"
|
|
4016
|
+
},
|
|
4017
|
+
{
|
|
4018
|
+
indexed: true,
|
|
4019
|
+
internalType: "address",
|
|
4020
|
+
name: "creator",
|
|
4021
|
+
type: "address"
|
|
4165
4022
|
}
|
|
4166
4023
|
],
|
|
4167
|
-
|
|
4024
|
+
name: "DataDeleted",
|
|
4025
|
+
type: "event"
|
|
4168
4026
|
},
|
|
4169
4027
|
{
|
|
4170
|
-
|
|
4171
|
-
name: "tagChildIp",
|
|
4028
|
+
anonymous: false,
|
|
4172
4029
|
inputs: [
|
|
4173
4030
|
{
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4031
|
+
indexed: true,
|
|
4032
|
+
internalType: "uint256",
|
|
4033
|
+
name: "tokenId",
|
|
4034
|
+
type: "uint256"
|
|
4177
4035
|
},
|
|
4178
4036
|
{
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4037
|
+
indexed: true,
|
|
4038
|
+
internalType: "address",
|
|
4039
|
+
name: "creator",
|
|
4040
|
+
type: "address"
|
|
4041
|
+
},
|
|
4042
|
+
{
|
|
4043
|
+
indexed: false,
|
|
4044
|
+
internalType: "bytes32",
|
|
4045
|
+
name: "contentHash",
|
|
4046
|
+
type: "bytes32"
|
|
4047
|
+
},
|
|
4048
|
+
{
|
|
4049
|
+
indexed: false,
|
|
4050
|
+
internalType: "uint256[]",
|
|
4051
|
+
name: "parents",
|
|
4052
|
+
type: "uint256[]"
|
|
4182
4053
|
}
|
|
4183
4054
|
],
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
stateMutability: "nonpayable"
|
|
4055
|
+
name: "DataMinted",
|
|
4056
|
+
type: "event"
|
|
4187
4057
|
},
|
|
4188
4058
|
{
|
|
4189
|
-
|
|
4190
|
-
name: "transferOwnership",
|
|
4059
|
+
anonymous: false,
|
|
4191
4060
|
inputs: [
|
|
4192
4061
|
{
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4062
|
+
indexed: true,
|
|
4063
|
+
internalType: "uint256",
|
|
4064
|
+
name: "id",
|
|
4065
|
+
type: "uint256"
|
|
4066
|
+
},
|
|
4067
|
+
{
|
|
4068
|
+
indexed: false,
|
|
4069
|
+
internalType: "bytes32",
|
|
4070
|
+
name: "counterEvidenceHash",
|
|
4071
|
+
type: "bytes32"
|
|
4196
4072
|
}
|
|
4197
4073
|
],
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
stateMutability: "nonpayable"
|
|
4074
|
+
name: "DisputeAssertion",
|
|
4075
|
+
type: "event"
|
|
4201
4076
|
},
|
|
4202
4077
|
{
|
|
4203
|
-
|
|
4204
|
-
name: "upgradeToAndCall",
|
|
4078
|
+
anonymous: false,
|
|
4205
4079
|
inputs: [
|
|
4206
4080
|
{
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
{
|
|
4212
|
-
name: "data",
|
|
4213
|
-
type: "bytes",
|
|
4214
|
-
internalType: "bytes"
|
|
4081
|
+
indexed: true,
|
|
4082
|
+
internalType: "uint256",
|
|
4083
|
+
name: "id",
|
|
4084
|
+
type: "uint256"
|
|
4215
4085
|
}
|
|
4216
4086
|
],
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
stateMutability: "payable"
|
|
4087
|
+
name: "DisputeCancelled",
|
|
4088
|
+
type: "event"
|
|
4220
4089
|
},
|
|
4221
4090
|
{
|
|
4222
|
-
|
|
4223
|
-
name: "voteOnDispute",
|
|
4091
|
+
anonymous: false,
|
|
4224
4092
|
inputs: [
|
|
4225
4093
|
{
|
|
4094
|
+
indexed: true,
|
|
4095
|
+
internalType: "uint256",
|
|
4226
4096
|
name: "id",
|
|
4227
|
-
type: "uint256"
|
|
4228
|
-
internalType: "uint256"
|
|
4097
|
+
type: "uint256"
|
|
4229
4098
|
},
|
|
4230
4099
|
{
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4100
|
+
indexed: false,
|
|
4101
|
+
internalType: "bool",
|
|
4102
|
+
name: "judgement",
|
|
4103
|
+
type: "bool"
|
|
4234
4104
|
}
|
|
4235
4105
|
],
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
stateMutability: "nonpayable"
|
|
4106
|
+
name: "DisputeJudged",
|
|
4107
|
+
type: "event"
|
|
4239
4108
|
},
|
|
4240
4109
|
{
|
|
4241
|
-
|
|
4242
|
-
name: "AccessPurchased",
|
|
4110
|
+
anonymous: false,
|
|
4243
4111
|
inputs: [
|
|
4244
4112
|
{
|
|
4245
|
-
name: "tokenId",
|
|
4246
|
-
type: "uint256",
|
|
4247
|
-
indexed: true,
|
|
4248
|
-
internalType: "uint256"
|
|
4249
|
-
},
|
|
4250
|
-
{
|
|
4251
|
-
name: "buyer",
|
|
4252
|
-
type: "address",
|
|
4253
4113
|
indexed: true,
|
|
4254
|
-
internalType: "address"
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
name: "periods",
|
|
4258
|
-
type: "uint32",
|
|
4259
|
-
indexed: false,
|
|
4260
|
-
internalType: "uint32"
|
|
4261
|
-
},
|
|
4262
|
-
{
|
|
4263
|
-
name: "newExpiry",
|
|
4264
|
-
type: "uint256",
|
|
4265
|
-
indexed: false,
|
|
4266
|
-
internalType: "uint256"
|
|
4267
|
-
},
|
|
4268
|
-
{
|
|
4269
|
-
name: "amountPaid",
|
|
4270
|
-
type: "uint256",
|
|
4271
|
-
indexed: false,
|
|
4272
|
-
internalType: "uint256"
|
|
4114
|
+
internalType: "address",
|
|
4115
|
+
name: "disputeModule",
|
|
4116
|
+
type: "address"
|
|
4273
4117
|
}
|
|
4274
4118
|
],
|
|
4275
|
-
|
|
4119
|
+
name: "DisputeModuleUpdated",
|
|
4120
|
+
type: "event"
|
|
4276
4121
|
},
|
|
4277
4122
|
{
|
|
4278
|
-
|
|
4279
|
-
name: "AgentRegistered",
|
|
4123
|
+
anonymous: false,
|
|
4280
4124
|
inputs: [
|
|
4281
4125
|
{
|
|
4282
|
-
name: "agentId",
|
|
4283
|
-
type: "uint256",
|
|
4284
4126
|
indexed: true,
|
|
4285
|
-
internalType: "uint256"
|
|
4127
|
+
internalType: "uint256",
|
|
4128
|
+
name: "id",
|
|
4129
|
+
type: "uint256"
|
|
4286
4130
|
},
|
|
4287
4131
|
{
|
|
4288
|
-
name: "ipNftId",
|
|
4289
|
-
type: "uint256",
|
|
4290
4132
|
indexed: true,
|
|
4291
|
-
internalType: "
|
|
4133
|
+
internalType: "address",
|
|
4134
|
+
name: "initiator",
|
|
4135
|
+
type: "address"
|
|
4136
|
+
},
|
|
4137
|
+
{
|
|
4138
|
+
indexed: true,
|
|
4139
|
+
internalType: "uint256",
|
|
4140
|
+
name: "targetId",
|
|
4141
|
+
type: "uint256"
|
|
4292
4142
|
},
|
|
4293
4143
|
{
|
|
4294
|
-
name: "agentAddress",
|
|
4295
|
-
type: "address",
|
|
4296
4144
|
indexed: false,
|
|
4297
|
-
internalType: "
|
|
4145
|
+
internalType: "bytes32",
|
|
4146
|
+
name: "disputeTag",
|
|
4147
|
+
type: "bytes32"
|
|
4298
4148
|
}
|
|
4299
4149
|
],
|
|
4300
|
-
|
|
4150
|
+
name: "DisputeRaised",
|
|
4151
|
+
type: "event"
|
|
4301
4152
|
},
|
|
4302
4153
|
{
|
|
4303
|
-
|
|
4304
|
-
name: "AppRegistryUpdated",
|
|
4154
|
+
anonymous: false,
|
|
4305
4155
|
inputs: [
|
|
4306
4156
|
{
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4310
|
-
|
|
4157
|
+
indexed: false,
|
|
4158
|
+
internalType: "uint64",
|
|
4159
|
+
name: "version",
|
|
4160
|
+
type: "uint64"
|
|
4311
4161
|
}
|
|
4312
4162
|
],
|
|
4313
|
-
|
|
4163
|
+
name: "Initialized",
|
|
4164
|
+
type: "event"
|
|
4314
4165
|
},
|
|
4315
4166
|
{
|
|
4316
|
-
|
|
4317
|
-
name: "ChildIpTagged",
|
|
4167
|
+
anonymous: false,
|
|
4318
4168
|
inputs: [
|
|
4319
4169
|
{
|
|
4320
|
-
name: "id",
|
|
4321
|
-
type: "uint256",
|
|
4322
|
-
indexed: true,
|
|
4323
|
-
internalType: "uint256"
|
|
4324
|
-
},
|
|
4325
|
-
{
|
|
4326
|
-
name: "childIp",
|
|
4327
|
-
type: "uint256",
|
|
4328
4170
|
indexed: true,
|
|
4329
|
-
internalType: "
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
name: "parentIp",
|
|
4333
|
-
type: "uint256",
|
|
4334
|
-
indexed: false,
|
|
4335
|
-
internalType: "uint256"
|
|
4171
|
+
internalType: "address",
|
|
4172
|
+
name: "marketPlace",
|
|
4173
|
+
type: "address"
|
|
4336
4174
|
}
|
|
4337
4175
|
],
|
|
4338
|
-
|
|
4176
|
+
name: "MarketPlaceUpdated",
|
|
4177
|
+
type: "event"
|
|
4339
4178
|
},
|
|
4340
4179
|
{
|
|
4341
|
-
|
|
4342
|
-
name: "DataDeleted",
|
|
4180
|
+
anonymous: false,
|
|
4343
4181
|
inputs: [
|
|
4344
4182
|
{
|
|
4345
|
-
name: "tokenId",
|
|
4346
|
-
type: "uint256",
|
|
4347
4183
|
indexed: true,
|
|
4348
|
-
internalType: "
|
|
4184
|
+
internalType: "address",
|
|
4185
|
+
name: "previousOwner",
|
|
4186
|
+
type: "address"
|
|
4349
4187
|
},
|
|
4350
4188
|
{
|
|
4351
|
-
name: "creator",
|
|
4352
|
-
type: "address",
|
|
4353
4189
|
indexed: true,
|
|
4354
|
-
internalType: "address"
|
|
4190
|
+
internalType: "address",
|
|
4191
|
+
name: "newOwner",
|
|
4192
|
+
type: "address"
|
|
4355
4193
|
}
|
|
4356
4194
|
],
|
|
4357
|
-
|
|
4195
|
+
name: "OwnershipTransferred",
|
|
4196
|
+
type: "event"
|
|
4358
4197
|
},
|
|
4359
4198
|
{
|
|
4360
|
-
|
|
4361
|
-
name: "DataMinted",
|
|
4199
|
+
anonymous: false,
|
|
4362
4200
|
inputs: [
|
|
4363
4201
|
{
|
|
4364
|
-
name: "tokenId",
|
|
4365
|
-
type: "uint256",
|
|
4366
|
-
indexed: true,
|
|
4367
|
-
internalType: "uint256"
|
|
4368
|
-
},
|
|
4369
|
-
{
|
|
4370
|
-
name: "creator",
|
|
4371
|
-
type: "address",
|
|
4372
4202
|
indexed: true,
|
|
4373
|
-
internalType: "
|
|
4203
|
+
internalType: "uint256",
|
|
4204
|
+
name: "childIpId",
|
|
4205
|
+
type: "uint256"
|
|
4374
4206
|
},
|
|
4375
4207
|
{
|
|
4376
|
-
name: "contentHash",
|
|
4377
|
-
type: "bytes32",
|
|
4378
4208
|
indexed: false,
|
|
4379
|
-
internalType: "
|
|
4209
|
+
internalType: "uint256[]",
|
|
4210
|
+
name: "parentIds",
|
|
4211
|
+
type: "uint256[]"
|
|
4380
4212
|
},
|
|
4381
4213
|
{
|
|
4382
|
-
name: "parents",
|
|
4383
|
-
type: "uint256[]",
|
|
4384
4214
|
indexed: false,
|
|
4385
|
-
internalType: "
|
|
4215
|
+
internalType: "uint16",
|
|
4216
|
+
name: "totalRoyaltyBps",
|
|
4217
|
+
type: "uint16"
|
|
4386
4218
|
}
|
|
4387
4219
|
],
|
|
4388
|
-
|
|
4220
|
+
name: "ParentIpsSet",
|
|
4221
|
+
type: "event"
|
|
4389
4222
|
},
|
|
4390
4223
|
{
|
|
4391
|
-
|
|
4392
|
-
name: "DisputeAssertion",
|
|
4224
|
+
anonymous: false,
|
|
4393
4225
|
inputs: [
|
|
4394
4226
|
{
|
|
4395
|
-
name: "id",
|
|
4396
|
-
type: "uint256",
|
|
4397
|
-
indexed: true,
|
|
4398
|
-
internalType: "uint256"
|
|
4399
|
-
},
|
|
4400
|
-
{
|
|
4401
|
-
name: "counterEvidenceHash",
|
|
4402
|
-
type: "bytes32",
|
|
4403
4227
|
indexed: false,
|
|
4404
|
-
internalType: "
|
|
4228
|
+
internalType: "uint16",
|
|
4229
|
+
name: "newFeeBps",
|
|
4230
|
+
type: "uint16"
|
|
4405
4231
|
}
|
|
4406
4232
|
],
|
|
4407
|
-
|
|
4233
|
+
name: "ProtocolFeeUpdated",
|
|
4234
|
+
type: "event"
|
|
4408
4235
|
},
|
|
4409
4236
|
{
|
|
4410
|
-
|
|
4411
|
-
name: "DisputeCancelled",
|
|
4237
|
+
anonymous: false,
|
|
4412
4238
|
inputs: [
|
|
4413
4239
|
{
|
|
4414
|
-
name: "id",
|
|
4415
|
-
type: "uint256",
|
|
4416
4240
|
indexed: true,
|
|
4417
|
-
internalType: "uint256"
|
|
4241
|
+
internalType: "uint256",
|
|
4242
|
+
name: "tokenId",
|
|
4243
|
+
type: "uint256"
|
|
4244
|
+
},
|
|
4245
|
+
{
|
|
4246
|
+
indexed: false,
|
|
4247
|
+
internalType: "uint256",
|
|
4248
|
+
name: "royaltyAmount",
|
|
4249
|
+
type: "uint256"
|
|
4250
|
+
},
|
|
4251
|
+
{
|
|
4252
|
+
indexed: false,
|
|
4253
|
+
internalType: "address",
|
|
4254
|
+
name: "creator",
|
|
4255
|
+
type: "address"
|
|
4256
|
+
},
|
|
4257
|
+
{
|
|
4258
|
+
indexed: false,
|
|
4259
|
+
internalType: "uint256",
|
|
4260
|
+
name: "protocolAmount",
|
|
4261
|
+
type: "uint256"
|
|
4418
4262
|
}
|
|
4419
4263
|
],
|
|
4420
|
-
|
|
4264
|
+
name: "RoyaltyPaid",
|
|
4265
|
+
type: "event"
|
|
4421
4266
|
},
|
|
4422
4267
|
{
|
|
4423
|
-
|
|
4424
|
-
name: "DisputeJudged",
|
|
4268
|
+
anonymous: false,
|
|
4425
4269
|
inputs: [
|
|
4426
4270
|
{
|
|
4427
|
-
name: "id",
|
|
4428
|
-
type: "uint256",
|
|
4429
4271
|
indexed: true,
|
|
4430
|
-
internalType: "
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
name: "judgement",
|
|
4434
|
-
type: "bool",
|
|
4435
|
-
indexed: false,
|
|
4436
|
-
internalType: "bool"
|
|
4272
|
+
internalType: "address",
|
|
4273
|
+
name: "signer",
|
|
4274
|
+
type: "address"
|
|
4437
4275
|
}
|
|
4438
4276
|
],
|
|
4439
|
-
|
|
4277
|
+
name: "SignerUpdated",
|
|
4278
|
+
type: "event"
|
|
4440
4279
|
},
|
|
4441
4280
|
{
|
|
4442
|
-
|
|
4443
|
-
name: "DisputeModuleUpdated",
|
|
4281
|
+
anonymous: false,
|
|
4444
4282
|
inputs: [
|
|
4445
4283
|
{
|
|
4446
|
-
name: "disputeModule",
|
|
4447
|
-
type: "address",
|
|
4448
4284
|
indexed: true,
|
|
4449
|
-
internalType: "
|
|
4285
|
+
internalType: "uint256",
|
|
4286
|
+
name: "tokenId",
|
|
4287
|
+
type: "uint256"
|
|
4288
|
+
},
|
|
4289
|
+
{
|
|
4290
|
+
indexed: false,
|
|
4291
|
+
internalType: "enum IIpNFT.DataStatus",
|
|
4292
|
+
name: "status",
|
|
4293
|
+
type: "uint8"
|
|
4450
4294
|
}
|
|
4451
4295
|
],
|
|
4452
|
-
|
|
4296
|
+
name: "StatusUpdated",
|
|
4297
|
+
type: "event"
|
|
4453
4298
|
},
|
|
4454
4299
|
{
|
|
4455
|
-
|
|
4456
|
-
name: "DisputeRaised",
|
|
4300
|
+
anonymous: false,
|
|
4457
4301
|
inputs: [
|
|
4458
4302
|
{
|
|
4459
|
-
name: "id",
|
|
4460
|
-
type: "uint256",
|
|
4461
4303
|
indexed: true,
|
|
4462
|
-
internalType: "uint256"
|
|
4304
|
+
internalType: "uint256",
|
|
4305
|
+
name: "tokenId",
|
|
4306
|
+
type: "uint256"
|
|
4463
4307
|
},
|
|
4464
4308
|
{
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4309
|
+
indexed: false,
|
|
4310
|
+
internalType: "uint128",
|
|
4311
|
+
name: "newPrice",
|
|
4312
|
+
type: "uint128"
|
|
4469
4313
|
},
|
|
4470
4314
|
{
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4315
|
+
indexed: false,
|
|
4316
|
+
internalType: "uint32",
|
|
4317
|
+
name: "newDuration",
|
|
4318
|
+
type: "uint32"
|
|
4475
4319
|
},
|
|
4476
4320
|
{
|
|
4477
|
-
name: "disputeTag",
|
|
4478
|
-
type: "bytes32",
|
|
4479
4321
|
indexed: false,
|
|
4480
|
-
internalType: "
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
},
|
|
4485
|
-
{
|
|
4486
|
-
type: "event",
|
|
4487
|
-
name: "Initialized",
|
|
4488
|
-
inputs: [
|
|
4322
|
+
internalType: "uint16",
|
|
4323
|
+
name: "newRoyaltyBps",
|
|
4324
|
+
type: "uint16"
|
|
4325
|
+
},
|
|
4489
4326
|
{
|
|
4490
|
-
name: "version",
|
|
4491
|
-
type: "uint64",
|
|
4492
4327
|
indexed: false,
|
|
4493
|
-
internalType: "
|
|
4328
|
+
internalType: "address",
|
|
4329
|
+
name: "paymentToken",
|
|
4330
|
+
type: "address"
|
|
4494
4331
|
}
|
|
4495
4332
|
],
|
|
4496
|
-
|
|
4333
|
+
name: "TermsUpdated",
|
|
4334
|
+
type: "event"
|
|
4497
4335
|
},
|
|
4498
4336
|
{
|
|
4499
|
-
|
|
4500
|
-
name: "MarketPlaceUpdated",
|
|
4337
|
+
anonymous: false,
|
|
4501
4338
|
inputs: [
|
|
4502
4339
|
{
|
|
4503
|
-
name: "marketPlace",
|
|
4504
|
-
type: "address",
|
|
4505
4340
|
indexed: true,
|
|
4506
|
-
internalType: "address"
|
|
4341
|
+
internalType: "address",
|
|
4342
|
+
name: "newTreasury",
|
|
4343
|
+
type: "address"
|
|
4507
4344
|
}
|
|
4508
4345
|
],
|
|
4509
|
-
|
|
4346
|
+
name: "TreasuryUpdated",
|
|
4347
|
+
type: "event"
|
|
4510
4348
|
},
|
|
4511
4349
|
{
|
|
4512
|
-
|
|
4513
|
-
name: "OwnershipTransferred",
|
|
4350
|
+
anonymous: false,
|
|
4514
4351
|
inputs: [
|
|
4515
4352
|
{
|
|
4516
|
-
name: "previousOwner",
|
|
4517
|
-
type: "address",
|
|
4518
|
-
indexed: true,
|
|
4519
|
-
internalType: "address"
|
|
4520
|
-
},
|
|
4521
|
-
{
|
|
4522
|
-
name: "newOwner",
|
|
4523
|
-
type: "address",
|
|
4524
4353
|
indexed: true,
|
|
4525
|
-
internalType: "address"
|
|
4354
|
+
internalType: "address",
|
|
4355
|
+
name: "implementation",
|
|
4356
|
+
type: "address"
|
|
4526
4357
|
}
|
|
4527
4358
|
],
|
|
4528
|
-
|
|
4359
|
+
name: "Upgraded",
|
|
4360
|
+
type: "event"
|
|
4529
4361
|
},
|
|
4530
4362
|
{
|
|
4531
|
-
|
|
4532
|
-
name: "ParentIpsSet",
|
|
4363
|
+
anonymous: false,
|
|
4533
4364
|
inputs: [
|
|
4534
4365
|
{
|
|
4535
|
-
name: "childIpId",
|
|
4536
|
-
type: "uint256",
|
|
4537
4366
|
indexed: true,
|
|
4538
|
-
internalType: "uint256"
|
|
4367
|
+
internalType: "uint256",
|
|
4368
|
+
name: "id",
|
|
4369
|
+
type: "uint256"
|
|
4370
|
+
},
|
|
4371
|
+
{
|
|
4372
|
+
indexed: true,
|
|
4373
|
+
internalType: "address",
|
|
4374
|
+
name: "voter",
|
|
4375
|
+
type: "address"
|
|
4539
4376
|
},
|
|
4540
4377
|
{
|
|
4541
|
-
name: "parentIds",
|
|
4542
|
-
type: "uint256[]",
|
|
4543
4378
|
indexed: false,
|
|
4544
|
-
internalType: "
|
|
4379
|
+
internalType: "bool",
|
|
4380
|
+
name: "support",
|
|
4381
|
+
type: "bool"
|
|
4545
4382
|
},
|
|
4546
4383
|
{
|
|
4547
|
-
name: "totalRoyaltyBps",
|
|
4548
|
-
type: "uint16",
|
|
4549
4384
|
indexed: false,
|
|
4550
|
-
internalType: "
|
|
4385
|
+
internalType: "uint256",
|
|
4386
|
+
name: "weight",
|
|
4387
|
+
type: "uint256"
|
|
4551
4388
|
}
|
|
4552
4389
|
],
|
|
4553
|
-
|
|
4390
|
+
name: "Voted",
|
|
4391
|
+
type: "event"
|
|
4554
4392
|
},
|
|
4555
4393
|
{
|
|
4556
|
-
type: "event",
|
|
4557
|
-
name: "ProtocolFeeUpdated",
|
|
4558
4394
|
inputs: [
|
|
4395
|
+
],
|
|
4396
|
+
name: "UPGRADE_INTERFACE_VERSION",
|
|
4397
|
+
outputs: [
|
|
4559
4398
|
{
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
internalType: "uint16"
|
|
4399
|
+
internalType: "string",
|
|
4400
|
+
name: "",
|
|
4401
|
+
type: "string"
|
|
4564
4402
|
}
|
|
4565
4403
|
],
|
|
4566
|
-
|
|
4404
|
+
stateMutability: "view",
|
|
4405
|
+
type: "function"
|
|
4567
4406
|
},
|
|
4568
4407
|
{
|
|
4569
|
-
type: "event",
|
|
4570
|
-
name: "RoyaltyPaid",
|
|
4571
4408
|
inputs: [
|
|
4572
4409
|
{
|
|
4573
|
-
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4410
|
+
internalType: "uint256",
|
|
4411
|
+
name: "id",
|
|
4412
|
+
type: "uint256"
|
|
4413
|
+
}
|
|
4414
|
+
],
|
|
4415
|
+
name: "cancelDispute",
|
|
4416
|
+
outputs: [
|
|
4417
|
+
],
|
|
4418
|
+
stateMutability: "nonpayable",
|
|
4419
|
+
type: "function"
|
|
4420
|
+
},
|
|
4421
|
+
{
|
|
4422
|
+
inputs: [
|
|
4584
4423
|
{
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
internalType: "address"
|
|
4424
|
+
internalType: "uint256",
|
|
4425
|
+
name: "id",
|
|
4426
|
+
type: "uint256"
|
|
4589
4427
|
},
|
|
4590
4428
|
{
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
internalType: "uint256"
|
|
4429
|
+
internalType: "bytes32",
|
|
4430
|
+
name: "_counterEvidenceHash",
|
|
4431
|
+
type: "bytes32"
|
|
4595
4432
|
}
|
|
4596
4433
|
],
|
|
4597
|
-
|
|
4434
|
+
name: "disputeAssertion",
|
|
4435
|
+
outputs: [
|
|
4436
|
+
],
|
|
4437
|
+
stateMutability: "nonpayable",
|
|
4438
|
+
type: "function"
|
|
4598
4439
|
},
|
|
4599
4440
|
{
|
|
4600
|
-
type: "event",
|
|
4601
|
-
name: "SignerUpdated",
|
|
4602
4441
|
inputs: [
|
|
4442
|
+
],
|
|
4443
|
+
name: "disputeBond",
|
|
4444
|
+
outputs: [
|
|
4603
4445
|
{
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
internalType: "address"
|
|
4446
|
+
internalType: "uint256",
|
|
4447
|
+
name: "",
|
|
4448
|
+
type: "uint256"
|
|
4608
4449
|
}
|
|
4609
4450
|
],
|
|
4610
|
-
|
|
4451
|
+
stateMutability: "view",
|
|
4452
|
+
type: "function"
|
|
4611
4453
|
},
|
|
4612
4454
|
{
|
|
4613
|
-
type: "event",
|
|
4614
|
-
name: "StatusUpdated",
|
|
4615
4455
|
inputs: [
|
|
4456
|
+
],
|
|
4457
|
+
name: "disputeCoolDownPeriod",
|
|
4458
|
+
outputs: [
|
|
4616
4459
|
{
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4620
|
-
internalType: "uint256"
|
|
4621
|
-
},
|
|
4622
|
-
{
|
|
4623
|
-
name: "status",
|
|
4624
|
-
type: "uint8",
|
|
4625
|
-
indexed: false,
|
|
4626
|
-
internalType: "enum IIpNFT.DataStatus"
|
|
4460
|
+
internalType: "uint256",
|
|
4461
|
+
name: "",
|
|
4462
|
+
type: "uint256"
|
|
4627
4463
|
}
|
|
4628
4464
|
],
|
|
4629
|
-
|
|
4465
|
+
stateMutability: "view",
|
|
4466
|
+
type: "function"
|
|
4630
4467
|
},
|
|
4631
4468
|
{
|
|
4632
|
-
type: "event",
|
|
4633
|
-
name: "TermsUpdated",
|
|
4634
4469
|
inputs: [
|
|
4470
|
+
],
|
|
4471
|
+
name: "disputeCounter",
|
|
4472
|
+
outputs: [
|
|
4635
4473
|
{
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
type: "uint32",
|
|
4650
|
-
indexed: false,
|
|
4651
|
-
internalType: "uint32"
|
|
4652
|
-
},
|
|
4653
|
-
{
|
|
4654
|
-
name: "newRoyaltyBps",
|
|
4655
|
-
type: "uint16",
|
|
4656
|
-
indexed: false,
|
|
4657
|
-
internalType: "uint16"
|
|
4658
|
-
},
|
|
4474
|
+
internalType: "uint256",
|
|
4475
|
+
name: "",
|
|
4476
|
+
type: "uint256"
|
|
4477
|
+
}
|
|
4478
|
+
],
|
|
4479
|
+
stateMutability: "view",
|
|
4480
|
+
type: "function"
|
|
4481
|
+
},
|
|
4482
|
+
{
|
|
4483
|
+
inputs: [
|
|
4484
|
+
],
|
|
4485
|
+
name: "disputeJudgementPeriod",
|
|
4486
|
+
outputs: [
|
|
4659
4487
|
{
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
|
|
4663
|
-
internalType: "address"
|
|
4488
|
+
internalType: "uint256",
|
|
4489
|
+
name: "",
|
|
4490
|
+
type: "uint256"
|
|
4664
4491
|
}
|
|
4665
4492
|
],
|
|
4666
|
-
|
|
4493
|
+
stateMutability: "view",
|
|
4494
|
+
type: "function"
|
|
4667
4495
|
},
|
|
4668
4496
|
{
|
|
4669
|
-
type: "event",
|
|
4670
|
-
name: "TreasuryUpdated",
|
|
4671
4497
|
inputs: [
|
|
4498
|
+
],
|
|
4499
|
+
name: "disputeQuorum",
|
|
4500
|
+
outputs: [
|
|
4672
4501
|
{
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
internalType: "address"
|
|
4502
|
+
internalType: "uint256",
|
|
4503
|
+
name: "",
|
|
4504
|
+
type: "uint256"
|
|
4677
4505
|
}
|
|
4678
4506
|
],
|
|
4679
|
-
|
|
4507
|
+
stateMutability: "view",
|
|
4508
|
+
type: "function"
|
|
4680
4509
|
},
|
|
4681
4510
|
{
|
|
4682
|
-
type: "event",
|
|
4683
|
-
name: "Upgraded",
|
|
4684
4511
|
inputs: [
|
|
4512
|
+
],
|
|
4513
|
+
name: "disputeToken",
|
|
4514
|
+
outputs: [
|
|
4685
4515
|
{
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
internalType: "address"
|
|
4516
|
+
internalType: "contract IERC20",
|
|
4517
|
+
name: "",
|
|
4518
|
+
type: "address"
|
|
4690
4519
|
}
|
|
4691
4520
|
],
|
|
4692
|
-
|
|
4521
|
+
stateMutability: "view",
|
|
4522
|
+
type: "function"
|
|
4693
4523
|
},
|
|
4694
4524
|
{
|
|
4695
|
-
type: "event",
|
|
4696
|
-
name: "Voted",
|
|
4697
4525
|
inputs: [
|
|
4698
4526
|
{
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4527
|
+
internalType: "uint256",
|
|
4528
|
+
name: "",
|
|
4529
|
+
type: "uint256"
|
|
4530
|
+
}
|
|
4531
|
+
],
|
|
4532
|
+
name: "disputes",
|
|
4533
|
+
outputs: [
|
|
4534
|
+
{
|
|
4535
|
+
internalType: "address",
|
|
4536
|
+
name: "initiator",
|
|
4537
|
+
type: "address"
|
|
4703
4538
|
},
|
|
4704
4539
|
{
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
internalType: "address"
|
|
4540
|
+
internalType: "uint256",
|
|
4541
|
+
name: "targetId",
|
|
4542
|
+
type: "uint256"
|
|
4709
4543
|
},
|
|
4710
4544
|
{
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
internalType: "bool"
|
|
4545
|
+
internalType: "bytes32",
|
|
4546
|
+
name: "disputeTag",
|
|
4547
|
+
type: "bytes32"
|
|
4715
4548
|
},
|
|
4716
4549
|
{
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4550
|
+
internalType: "bytes32",
|
|
4551
|
+
name: "disputeEvidenceHash",
|
|
4552
|
+
type: "bytes32"
|
|
4553
|
+
},
|
|
4554
|
+
{
|
|
4555
|
+
internalType: "bytes32",
|
|
4556
|
+
name: "counterEvidenceHash",
|
|
4557
|
+
type: "bytes32"
|
|
4558
|
+
},
|
|
4559
|
+
{
|
|
4560
|
+
internalType: "uint256",
|
|
4561
|
+
name: "disputeTimestamp",
|
|
4562
|
+
type: "uint256"
|
|
4563
|
+
},
|
|
4564
|
+
{
|
|
4565
|
+
internalType: "uint256",
|
|
4566
|
+
name: "assertionTimestamp",
|
|
4567
|
+
type: "uint256"
|
|
4568
|
+
},
|
|
4569
|
+
{
|
|
4570
|
+
internalType: "uint256",
|
|
4571
|
+
name: "yesVotes",
|
|
4572
|
+
type: "uint256"
|
|
4573
|
+
},
|
|
4574
|
+
{
|
|
4575
|
+
internalType: "uint256",
|
|
4576
|
+
name: "noVotes",
|
|
4577
|
+
type: "uint256"
|
|
4578
|
+
},
|
|
4579
|
+
{
|
|
4580
|
+
internalType: "enum DisputeModule.DisputeStatus",
|
|
4581
|
+
name: "status",
|
|
4582
|
+
type: "uint8"
|
|
4583
|
+
},
|
|
4584
|
+
{
|
|
4585
|
+
internalType: "uint256",
|
|
4586
|
+
name: "bondAmount",
|
|
4587
|
+
type: "uint256"
|
|
4588
|
+
},
|
|
4589
|
+
{
|
|
4590
|
+
internalType: "uint256",
|
|
4591
|
+
name: "protocolFeeAmount",
|
|
4592
|
+
type: "uint256"
|
|
4721
4593
|
}
|
|
4722
4594
|
],
|
|
4723
|
-
|
|
4595
|
+
stateMutability: "view",
|
|
4596
|
+
type: "function"
|
|
4724
4597
|
},
|
|
4725
4598
|
{
|
|
4726
|
-
type: "error",
|
|
4727
|
-
name: "AddressEmptyCode",
|
|
4728
4599
|
inputs: [
|
|
4729
4600
|
{
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4601
|
+
internalType: "uint256",
|
|
4602
|
+
name: "",
|
|
4603
|
+
type: "uint256"
|
|
4604
|
+
},
|
|
4605
|
+
{
|
|
4606
|
+
internalType: "address",
|
|
4607
|
+
name: "",
|
|
4608
|
+
type: "address"
|
|
4733
4609
|
}
|
|
4734
|
-
]
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
type: "error",
|
|
4738
|
-
name: "AlreadyVoted",
|
|
4739
|
-
inputs: [
|
|
4740
|
-
]
|
|
4741
|
-
},
|
|
4742
|
-
{
|
|
4743
|
-
type: "error",
|
|
4744
|
-
name: "CoolDownPeriodActive",
|
|
4745
|
-
inputs: [
|
|
4746
|
-
]
|
|
4747
|
-
},
|
|
4748
|
-
{
|
|
4749
|
-
type: "error",
|
|
4750
|
-
name: "CoolDownPeriodOver",
|
|
4751
|
-
inputs: [
|
|
4752
|
-
]
|
|
4753
|
-
},
|
|
4754
|
-
{
|
|
4755
|
-
type: "error",
|
|
4756
|
-
name: "ERC1967InvalidImplementation",
|
|
4757
|
-
inputs: [
|
|
4610
|
+
],
|
|
4611
|
+
name: "hasVoted",
|
|
4612
|
+
outputs: [
|
|
4758
4613
|
{
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4614
|
+
internalType: "bool",
|
|
4615
|
+
name: "",
|
|
4616
|
+
type: "bool"
|
|
4762
4617
|
}
|
|
4763
|
-
]
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
type: "error",
|
|
4767
|
-
name: "ERC1967NonPayable",
|
|
4768
|
-
inputs: [
|
|
4769
|
-
]
|
|
4770
|
-
},
|
|
4771
|
-
{
|
|
4772
|
-
type: "error",
|
|
4773
|
-
name: "EvidenceAlreadyUsed",
|
|
4774
|
-
inputs: [
|
|
4775
|
-
]
|
|
4776
|
-
},
|
|
4777
|
-
{
|
|
4778
|
-
type: "error",
|
|
4779
|
-
name: "FailedCall",
|
|
4780
|
-
inputs: [
|
|
4781
|
-
]
|
|
4782
|
-
},
|
|
4783
|
-
{
|
|
4784
|
-
type: "error",
|
|
4785
|
-
name: "InvalidBondFeeBps",
|
|
4786
|
-
inputs: [
|
|
4787
|
-
]
|
|
4788
|
-
},
|
|
4789
|
-
{
|
|
4790
|
-
type: "error",
|
|
4791
|
-
name: "InvalidChildIpId",
|
|
4792
|
-
inputs: [
|
|
4793
|
-
]
|
|
4794
|
-
},
|
|
4795
|
-
{
|
|
4796
|
-
type: "error",
|
|
4797
|
-
name: "InvalidDisputeStatus",
|
|
4798
|
-
inputs: [
|
|
4799
|
-
]
|
|
4618
|
+
],
|
|
4619
|
+
stateMutability: "view",
|
|
4620
|
+
type: "function"
|
|
4800
4621
|
},
|
|
4801
4622
|
{
|
|
4802
|
-
type: "error",
|
|
4803
|
-
name: "InvalidDisputeTag",
|
|
4804
4623
|
inputs: [
|
|
4805
|
-
|
|
4624
|
+
{
|
|
4625
|
+
internalType: "contract IIpNFT",
|
|
4626
|
+
name: "_ipToken",
|
|
4627
|
+
type: "address"
|
|
4628
|
+
},
|
|
4629
|
+
{
|
|
4630
|
+
internalType: "contract IMarketplace",
|
|
4631
|
+
name: "_marketplace",
|
|
4632
|
+
type: "address"
|
|
4633
|
+
},
|
|
4634
|
+
{
|
|
4635
|
+
internalType: "contract IERC20",
|
|
4636
|
+
name: "_disputeToken",
|
|
4637
|
+
type: "address"
|
|
4638
|
+
},
|
|
4639
|
+
{
|
|
4640
|
+
internalType: "uint256",
|
|
4641
|
+
name: "_disputeBond",
|
|
4642
|
+
type: "uint256"
|
|
4643
|
+
},
|
|
4644
|
+
{
|
|
4645
|
+
internalType: "uint256",
|
|
4646
|
+
name: "_disputeCoolDownPeriod",
|
|
4647
|
+
type: "uint256"
|
|
4648
|
+
},
|
|
4649
|
+
{
|
|
4650
|
+
internalType: "uint256",
|
|
4651
|
+
name: "_disputeJudgementPeriod",
|
|
4652
|
+
type: "uint256"
|
|
4653
|
+
},
|
|
4654
|
+
{
|
|
4655
|
+
internalType: "uint16",
|
|
4656
|
+
name: "_bondFeeBPS",
|
|
4657
|
+
type: "uint16"
|
|
4658
|
+
},
|
|
4659
|
+
{
|
|
4660
|
+
internalType: "uint256",
|
|
4661
|
+
name: "_stakingThreshold",
|
|
4662
|
+
type: "uint256"
|
|
4663
|
+
},
|
|
4664
|
+
{
|
|
4665
|
+
internalType: "contract ICampStakingVault",
|
|
4666
|
+
name: "_stakingVault",
|
|
4667
|
+
type: "address"
|
|
4668
|
+
}
|
|
4669
|
+
],
|
|
4670
|
+
name: "initialize",
|
|
4671
|
+
outputs: [
|
|
4672
|
+
],
|
|
4673
|
+
stateMutability: "nonpayable",
|
|
4674
|
+
type: "function"
|
|
4806
4675
|
},
|
|
4807
4676
|
{
|
|
4808
|
-
type: "error",
|
|
4809
|
-
name: "InvalidEvidenceHash",
|
|
4810
4677
|
inputs: [
|
|
4811
|
-
]
|
|
4678
|
+
],
|
|
4679
|
+
name: "ipToken",
|
|
4680
|
+
outputs: [
|
|
4681
|
+
{
|
|
4682
|
+
internalType: "contract IIpNFT",
|
|
4683
|
+
name: "",
|
|
4684
|
+
type: "address"
|
|
4685
|
+
}
|
|
4686
|
+
],
|
|
4687
|
+
stateMutability: "view",
|
|
4688
|
+
type: "function"
|
|
4812
4689
|
},
|
|
4813
4690
|
{
|
|
4814
|
-
type: "error",
|
|
4815
|
-
name: "InvalidInitialization",
|
|
4816
4691
|
inputs: [
|
|
4817
|
-
|
|
4692
|
+
{
|
|
4693
|
+
internalType: "bytes32",
|
|
4694
|
+
name: "",
|
|
4695
|
+
type: "bytes32"
|
|
4696
|
+
}
|
|
4697
|
+
],
|
|
4698
|
+
name: "isUsedEvidenceHash",
|
|
4699
|
+
outputs: [
|
|
4700
|
+
{
|
|
4701
|
+
internalType: "bool",
|
|
4702
|
+
name: "",
|
|
4703
|
+
type: "bool"
|
|
4704
|
+
}
|
|
4705
|
+
],
|
|
4706
|
+
stateMutability: "view",
|
|
4707
|
+
type: "function"
|
|
4818
4708
|
},
|
|
4819
4709
|
{
|
|
4820
|
-
type: "error",
|
|
4821
|
-
name: "InvalidTargetIp",
|
|
4822
4710
|
inputs: [
|
|
4823
|
-
]
|
|
4711
|
+
],
|
|
4712
|
+
name: "marketplace",
|
|
4713
|
+
outputs: [
|
|
4714
|
+
{
|
|
4715
|
+
internalType: "contract IMarketplace",
|
|
4716
|
+
name: "",
|
|
4717
|
+
type: "address"
|
|
4718
|
+
}
|
|
4719
|
+
],
|
|
4720
|
+
stateMutability: "view",
|
|
4721
|
+
type: "function"
|
|
4824
4722
|
},
|
|
4825
4723
|
{
|
|
4826
|
-
type: "error",
|
|
4827
|
-
name: "NoVotingPower",
|
|
4828
4724
|
inputs: [
|
|
4829
|
-
]
|
|
4725
|
+
],
|
|
4726
|
+
name: "owner",
|
|
4727
|
+
outputs: [
|
|
4728
|
+
{
|
|
4729
|
+
internalType: "address",
|
|
4730
|
+
name: "",
|
|
4731
|
+
type: "address"
|
|
4732
|
+
}
|
|
4733
|
+
],
|
|
4734
|
+
stateMutability: "view",
|
|
4735
|
+
type: "function"
|
|
4830
4736
|
},
|
|
4831
4737
|
{
|
|
4832
|
-
type: "error",
|
|
4833
|
-
name: "NotAParentIp",
|
|
4834
4738
|
inputs: [
|
|
4835
|
-
]
|
|
4739
|
+
],
|
|
4740
|
+
name: "protocolDisputeFee",
|
|
4741
|
+
outputs: [
|
|
4742
|
+
{
|
|
4743
|
+
internalType: "uint256",
|
|
4744
|
+
name: "",
|
|
4745
|
+
type: "uint256"
|
|
4746
|
+
}
|
|
4747
|
+
],
|
|
4748
|
+
stateMutability: "view",
|
|
4749
|
+
type: "function"
|
|
4836
4750
|
},
|
|
4837
4751
|
{
|
|
4838
|
-
type: "error",
|
|
4839
|
-
name: "NotInitializing",
|
|
4840
4752
|
inputs: [
|
|
4841
|
-
]
|
|
4753
|
+
],
|
|
4754
|
+
name: "proxiableUUID",
|
|
4755
|
+
outputs: [
|
|
4756
|
+
{
|
|
4757
|
+
internalType: "bytes32",
|
|
4758
|
+
name: "",
|
|
4759
|
+
type: "bytes32"
|
|
4760
|
+
}
|
|
4761
|
+
],
|
|
4762
|
+
stateMutability: "view",
|
|
4763
|
+
type: "function"
|
|
4842
4764
|
},
|
|
4843
4765
|
{
|
|
4844
|
-
type: "error",
|
|
4845
|
-
name: "NotInitiator",
|
|
4846
4766
|
inputs: [
|
|
4847
|
-
|
|
4767
|
+
{
|
|
4768
|
+
internalType: "uint256",
|
|
4769
|
+
name: "_targetIpId",
|
|
4770
|
+
type: "uint256"
|
|
4771
|
+
},
|
|
4772
|
+
{
|
|
4773
|
+
internalType: "bytes32",
|
|
4774
|
+
name: "_disputeEvidenceHash",
|
|
4775
|
+
type: "bytes32"
|
|
4776
|
+
},
|
|
4777
|
+
{
|
|
4778
|
+
internalType: "bytes32",
|
|
4779
|
+
name: "_disputeTag",
|
|
4780
|
+
type: "bytes32"
|
|
4781
|
+
}
|
|
4782
|
+
],
|
|
4783
|
+
name: "raiseDispute",
|
|
4784
|
+
outputs: [
|
|
4785
|
+
{
|
|
4786
|
+
internalType: "uint256",
|
|
4787
|
+
name: "id",
|
|
4788
|
+
type: "uint256"
|
|
4789
|
+
}
|
|
4790
|
+
],
|
|
4791
|
+
stateMutability: "nonpayable",
|
|
4792
|
+
type: "function"
|
|
4848
4793
|
},
|
|
4849
4794
|
{
|
|
4850
|
-
type: "error",
|
|
4851
|
-
name: "NotTokenOwner",
|
|
4852
4795
|
inputs: [
|
|
4853
|
-
]
|
|
4796
|
+
],
|
|
4797
|
+
name: "renounceOwnership",
|
|
4798
|
+
outputs: [
|
|
4799
|
+
],
|
|
4800
|
+
stateMutability: "nonpayable",
|
|
4801
|
+
type: "function"
|
|
4854
4802
|
},
|
|
4855
4803
|
{
|
|
4856
|
-
type: "error",
|
|
4857
|
-
name: "OwnableInvalidOwner",
|
|
4858
4804
|
inputs: [
|
|
4859
4805
|
{
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4806
|
+
internalType: "uint256",
|
|
4807
|
+
name: "id",
|
|
4808
|
+
type: "uint256"
|
|
4863
4809
|
}
|
|
4864
|
-
]
|
|
4810
|
+
],
|
|
4811
|
+
name: "resolveDispute",
|
|
4812
|
+
outputs: [
|
|
4813
|
+
],
|
|
4814
|
+
stateMutability: "nonpayable",
|
|
4815
|
+
type: "function"
|
|
4865
4816
|
},
|
|
4866
4817
|
{
|
|
4867
|
-
type: "error",
|
|
4868
|
-
name: "OwnableUnauthorizedAccount",
|
|
4869
4818
|
inputs: [
|
|
4870
4819
|
{
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4820
|
+
internalType: "uint256",
|
|
4821
|
+
name: "_disputeQuorum",
|
|
4822
|
+
type: "uint256"
|
|
4874
4823
|
}
|
|
4875
|
-
]
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
]
|
|
4882
|
-
},
|
|
4883
|
-
{
|
|
4884
|
-
type: "error",
|
|
4885
|
-
name: "SelfAssertionNotAllowed",
|
|
4886
|
-
inputs: [
|
|
4887
|
-
]
|
|
4824
|
+
],
|
|
4825
|
+
name: "setDisputeQuorum",
|
|
4826
|
+
outputs: [
|
|
4827
|
+
],
|
|
4828
|
+
stateMutability: "nonpayable",
|
|
4829
|
+
type: "function"
|
|
4888
4830
|
},
|
|
4889
4831
|
{
|
|
4890
|
-
type: "error",
|
|
4891
|
-
name: "StakedAfterDispute",
|
|
4892
4832
|
inputs: [
|
|
4893
|
-
]
|
|
4833
|
+
],
|
|
4834
|
+
name: "stakingThreshold",
|
|
4835
|
+
outputs: [
|
|
4836
|
+
{
|
|
4837
|
+
internalType: "uint256",
|
|
4838
|
+
name: "",
|
|
4839
|
+
type: "uint256"
|
|
4840
|
+
}
|
|
4841
|
+
],
|
|
4842
|
+
stateMutability: "view",
|
|
4843
|
+
type: "function"
|
|
4894
4844
|
},
|
|
4895
4845
|
{
|
|
4896
|
-
type: "error",
|
|
4897
|
-
name: "TagNotAllowed",
|
|
4898
4846
|
inputs: [
|
|
4899
|
-
]
|
|
4847
|
+
],
|
|
4848
|
+
name: "stakingVault",
|
|
4849
|
+
outputs: [
|
|
4850
|
+
{
|
|
4851
|
+
internalType: "contract ICampStakingVault",
|
|
4852
|
+
name: "",
|
|
4853
|
+
type: "address"
|
|
4854
|
+
}
|
|
4855
|
+
],
|
|
4856
|
+
stateMutability: "view",
|
|
4857
|
+
type: "function"
|
|
4900
4858
|
},
|
|
4901
4859
|
{
|
|
4902
|
-
type: "error",
|
|
4903
|
-
name: "UUPSUnauthorizedCallContext",
|
|
4904
4860
|
inputs: [
|
|
4905
|
-
|
|
4861
|
+
{
|
|
4862
|
+
internalType: "uint256",
|
|
4863
|
+
name: "_childIpId",
|
|
4864
|
+
type: "uint256"
|
|
4865
|
+
},
|
|
4866
|
+
{
|
|
4867
|
+
internalType: "uint256",
|
|
4868
|
+
name: "_infringerDisputeId",
|
|
4869
|
+
type: "uint256"
|
|
4870
|
+
}
|
|
4871
|
+
],
|
|
4872
|
+
name: "tagChildIp",
|
|
4873
|
+
outputs: [
|
|
4874
|
+
],
|
|
4875
|
+
stateMutability: "nonpayable",
|
|
4876
|
+
type: "function"
|
|
4906
4877
|
},
|
|
4907
4878
|
{
|
|
4908
|
-
type: "error",
|
|
4909
|
-
name: "UUPSUnsupportedProxiableUUID",
|
|
4910
4879
|
inputs: [
|
|
4911
4880
|
{
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4881
|
+
internalType: "address",
|
|
4882
|
+
name: "newOwner",
|
|
4883
|
+
type: "address"
|
|
4915
4884
|
}
|
|
4916
|
-
]
|
|
4885
|
+
],
|
|
4886
|
+
name: "transferOwnership",
|
|
4887
|
+
outputs: [
|
|
4888
|
+
],
|
|
4889
|
+
stateMutability: "nonpayable",
|
|
4890
|
+
type: "function"
|
|
4917
4891
|
},
|
|
4918
4892
|
{
|
|
4919
|
-
type: "error",
|
|
4920
|
-
name: "VotingPeriodActive",
|
|
4921
4893
|
inputs: [
|
|
4922
|
-
|
|
4894
|
+
{
|
|
4895
|
+
internalType: "address",
|
|
4896
|
+
name: "newImplementation",
|
|
4897
|
+
type: "address"
|
|
4898
|
+
},
|
|
4899
|
+
{
|
|
4900
|
+
internalType: "bytes",
|
|
4901
|
+
name: "data",
|
|
4902
|
+
type: "bytes"
|
|
4903
|
+
}
|
|
4904
|
+
],
|
|
4905
|
+
name: "upgradeToAndCall",
|
|
4906
|
+
outputs: [
|
|
4907
|
+
],
|
|
4908
|
+
stateMutability: "payable",
|
|
4909
|
+
type: "function"
|
|
4923
4910
|
},
|
|
4924
4911
|
{
|
|
4925
|
-
type: "error",
|
|
4926
|
-
name: "VotingPeriodOver",
|
|
4927
4912
|
inputs: [
|
|
4928
|
-
|
|
4913
|
+
{
|
|
4914
|
+
internalType: "uint256",
|
|
4915
|
+
name: "id",
|
|
4916
|
+
type: "uint256"
|
|
4917
|
+
},
|
|
4918
|
+
{
|
|
4919
|
+
internalType: "bool",
|
|
4920
|
+
name: "support",
|
|
4921
|
+
type: "bool"
|
|
4922
|
+
}
|
|
4923
|
+
],
|
|
4924
|
+
name: "voteOnDispute",
|
|
4925
|
+
outputs: [
|
|
4926
|
+
],
|
|
4927
|
+
stateMutability: "nonpayable",
|
|
4928
|
+
type: "function"
|
|
4929
4929
|
}
|
|
4930
4930
|
];
|
|
4931
4931
|
|
|
@@ -5694,16 +5694,16 @@ var constants = {
|
|
|
5694
5694
|
const ENVIRONMENTS = {
|
|
5695
5695
|
DEVELOPMENT: {
|
|
5696
5696
|
NAME: "DEVELOPMENT",
|
|
5697
|
-
AUTH_HUB_BASE_API: "https://
|
|
5698
|
-
AUTH_ENDPOINT: "auth-testnet",
|
|
5697
|
+
AUTH_HUB_BASE_API: "https://origin-backend-iota.vercel.app",
|
|
5699
5698
|
ORIGIN_DASHBOARD: "https://origin.campnetwork.xyz",
|
|
5700
|
-
DATANFT_CONTRACT_ADDRESS: "
|
|
5701
|
-
MARKETPLACE_CONTRACT_ADDRESS: "
|
|
5699
|
+
DATANFT_CONTRACT_ADDRESS: "0x4d9aF5800701A4A686Df6b096A27B81486de36eB",
|
|
5700
|
+
MARKETPLACE_CONTRACT_ADDRESS: "0x68B202caA162C418d3A2DF92F29fA1CAF90C58c1",
|
|
5702
5701
|
BATCH_PURCHASE_CONTRACT_ADDRESS: "0xaF0cF04DBfeeAcEdC77Dc68A91381AFB967B8518",
|
|
5703
|
-
|
|
5704
|
-
|
|
5702
|
+
DISPUTE_CONTRACT_ADDRESS: "0x45719337b1450b0D105cA671972be4263E6A9380",
|
|
5703
|
+
APP_REGISTRY_CONTRACT_ADDRESS: "0x2096eb980Dd590DDF690Cb698572b80552B6F9Bb",
|
|
5704
|
+
// TODO: Add actual contract addresse when deployed
|
|
5705
5705
|
FRACTIONALIZER_CONTRACT_ADDRESS: "",
|
|
5706
|
-
|
|
5706
|
+
USDC_CONTRACT_ADDRESS: "0x8a2B28364102Bea189D99A475C494330Ef2bDD0B",
|
|
5707
5707
|
CHAIN: testnet,
|
|
5708
5708
|
IPNFT_ABI: ipnftMainnetAbi,
|
|
5709
5709
|
MARKETPLACE_ABI: marketplaceMainnetAbi,
|
|
@@ -5716,7 +5716,6 @@ const ENVIRONMENTS = {
|
|
|
5716
5716
|
PRODUCTION: {
|
|
5717
5717
|
NAME: "PRODUCTION",
|
|
5718
5718
|
AUTH_HUB_BASE_API: "https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",
|
|
5719
|
-
AUTH_ENDPOINT: "auth-mainnet",
|
|
5720
5719
|
ORIGIN_DASHBOARD: "https://origin.campnetwork.xyz",
|
|
5721
5720
|
DATANFT_CONTRACT_ADDRESS: "0x39EeE1C3989f0dD543Dee60f8582F7F81F522C38",
|
|
5722
5721
|
MARKETPLACE_CONTRACT_ADDRESS: "0xc69BAa987757d054455fC0f2d9797684E9FB8b9C",
|
|
@@ -5725,6 +5724,7 @@ const ENVIRONMENTS = {
|
|
|
5725
5724
|
DISPUTE_CONTRACT_ADDRESS: "",
|
|
5726
5725
|
FRACTIONALIZER_CONTRACT_ADDRESS: "",
|
|
5727
5726
|
APP_REGISTRY_CONTRACT_ADDRESS: "",
|
|
5727
|
+
USDC_CONTRACT_ADDRESS: "",
|
|
5728
5728
|
CHAIN: mainnet,
|
|
5729
5729
|
IPNFT_ABI: ipnftMainnetAbi,
|
|
5730
5730
|
MARKETPLACE_ABI: marketplaceMainnetAbi,
|
|
@@ -5775,36 +5775,104 @@ const SECONDS_IN_HOUR = 3600;
|
|
|
5775
5775
|
const SECONDS_IN_DAY = 86400;
|
|
5776
5776
|
const SECONDS_IN_WEEK = 604800;
|
|
5777
5777
|
/**
|
|
5778
|
-
* Uploads
|
|
5778
|
+
* Uploads chunks to respective presigned URLs with progress tracking.
|
|
5779
5779
|
* Falls back to a simple fetch request if XMLHttpRequest is not available.
|
|
5780
|
-
* @param {
|
|
5781
|
-
* @param {string}
|
|
5780
|
+
* @param {Blob[]} chunks - The file to upload.
|
|
5781
|
+
* @param {string[]} urls - The URL to upload the file to.
|
|
5782
5782
|
* @param {UploadProgressCallback} onProgress - A callback function to track upload progress.
|
|
5783
5783
|
* @returns {Promise<string>} - A promise that resolves with the response from the server.
|
|
5784
5784
|
*/
|
|
5785
|
-
const uploadWithProgress = (
|
|
5785
|
+
const uploadWithProgress = (chunks, urls, onProgress) => {
|
|
5786
|
+
const MAX_RETRIES = 3;
|
|
5787
|
+
const CONCURRENCY_LIMIT = 4; // Parallel uploads for performance
|
|
5788
|
+
const parts = [];
|
|
5789
|
+
let failedParts = [];
|
|
5790
|
+
let isAborted = false;
|
|
5791
|
+
let completedChunks = 0;
|
|
5792
|
+
const totalChunks = chunks.length;
|
|
5786
5793
|
return new Promise((resolve, reject) => {
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5794
|
+
function updateProgress() {
|
|
5795
|
+
const progress = (completedChunks / totalChunks) * 100;
|
|
5796
|
+
onProgress(progress);
|
|
5797
|
+
}
|
|
5798
|
+
function uploadPart(blob_1, url_1, partNumber_1) {
|
|
5799
|
+
return __awaiter(this, arguments, void 0, function* (blob, url, partNumber, retryCount = 0) {
|
|
5800
|
+
var _a;
|
|
5801
|
+
try {
|
|
5802
|
+
const response = yield axios.put(url, blob, {
|
|
5803
|
+
headers: { "Content-Type": blob.type || "application/octet-stream" },
|
|
5804
|
+
timeout: 300000, // 5 minutes per part
|
|
5805
|
+
});
|
|
5806
|
+
const etag = (_a = response.headers.etag) === null || _a === void 0 ? void 0 : _a.replace(/"/g, "");
|
|
5807
|
+
if (!etag) {
|
|
5808
|
+
throw new Error(`Missing ETag for part ${partNumber}`);
|
|
5796
5809
|
}
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5805
|
-
|
|
5806
|
-
|
|
5807
|
-
|
|
5810
|
+
return { ETag: etag, PartNumber: partNumber };
|
|
5811
|
+
}
|
|
5812
|
+
catch (error) {
|
|
5813
|
+
if (retryCount < MAX_RETRIES) {
|
|
5814
|
+
const delay = 1000 * Math.pow(2, retryCount); // Exponential backoff
|
|
5815
|
+
yield new Promise((resolve) => setTimeout(resolve, delay));
|
|
5816
|
+
return uploadPart(blob, url, partNumber, retryCount + 1);
|
|
5817
|
+
}
|
|
5818
|
+
throw new Error(`Part ${partNumber} failed after ${MAX_RETRIES} retries: ${error.message}`);
|
|
5819
|
+
}
|
|
5820
|
+
});
|
|
5821
|
+
}
|
|
5822
|
+
function uploadAllParts() {
|
|
5823
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
5824
|
+
const uploadPromises = [];
|
|
5825
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
5826
|
+
if (isAborted)
|
|
5827
|
+
break;
|
|
5828
|
+
const uploadPromise = (() => __awaiter(this, void 0, void 0, function* () {
|
|
5829
|
+
try {
|
|
5830
|
+
if (failedParts.includes(i))
|
|
5831
|
+
return;
|
|
5832
|
+
const result = yield uploadPart(chunks[i], urls[i], i + 1);
|
|
5833
|
+
parts.push(result);
|
|
5834
|
+
completedChunks++;
|
|
5835
|
+
updateProgress();
|
|
5836
|
+
}
|
|
5837
|
+
catch (error) {
|
|
5838
|
+
console.error(`Part ${i + 1} failed:`, error);
|
|
5839
|
+
failedParts.push(i);
|
|
5840
|
+
if (failedParts.length > totalChunks * 0.1) {
|
|
5841
|
+
// Fail fast if >10% fail
|
|
5842
|
+
throw error;
|
|
5843
|
+
}
|
|
5844
|
+
}
|
|
5845
|
+
}))();
|
|
5846
|
+
uploadPromises.push(uploadPromise);
|
|
5847
|
+
// Limit concurrency
|
|
5848
|
+
if (uploadPromises.length >= CONCURRENCY_LIMIT) {
|
|
5849
|
+
yield Promise.race(uploadPromises);
|
|
5850
|
+
// Remove settled promises to continue
|
|
5851
|
+
uploadPromises.splice(0, uploadPromises.length, ...(yield Promise.allSettled(uploadPromises))
|
|
5852
|
+
.map((_, idx) => uploadPromises[idx])
|
|
5853
|
+
.filter(Boolean));
|
|
5854
|
+
}
|
|
5855
|
+
}
|
|
5856
|
+
yield Promise.allSettled(uploadPromises);
|
|
5857
|
+
if (isAborted) {
|
|
5858
|
+
reject(new Error("Upload aborted by user"));
|
|
5859
|
+
return;
|
|
5860
|
+
}
|
|
5861
|
+
if (failedParts.length > 0) {
|
|
5862
|
+
reject(new Error(`Failed to upload ${failedParts.length}/${totalChunks} parts: ${failedParts.join(", ")}`));
|
|
5863
|
+
return;
|
|
5864
|
+
}
|
|
5865
|
+
parts.sort((a, b) => a.PartNumber - b.PartNumber);
|
|
5866
|
+
resolve(parts);
|
|
5867
|
+
});
|
|
5868
|
+
}
|
|
5869
|
+
// Expose abort method
|
|
5870
|
+
uploadWithProgress.abort = () => {
|
|
5871
|
+
isAborted = true;
|
|
5872
|
+
axios.isCancel("Upload aborted");
|
|
5873
|
+
};
|
|
5874
|
+
updateProgress(); // Initial 0%
|
|
5875
|
+
uploadAllParts().catch(reject);
|
|
5808
5876
|
});
|
|
5809
5877
|
};
|
|
5810
5878
|
const toSeconds = (duration, licenseDurationUnit) => {
|
|
@@ -5866,6 +5934,19 @@ const validateRoyaltyBps = (royaltyBps) => {
|
|
|
5866
5934
|
return false;
|
|
5867
5935
|
}
|
|
5868
5936
|
};
|
|
5937
|
+
const splitFileIntoChunks = (file, chunkSize) => {
|
|
5938
|
+
const chunks = [];
|
|
5939
|
+
let start = 0;
|
|
5940
|
+
while (start < file.size) {
|
|
5941
|
+
chunks.push(file.slice(start, start + chunkSize));
|
|
5942
|
+
start += chunkSize;
|
|
5943
|
+
}
|
|
5944
|
+
return chunks;
|
|
5945
|
+
};
|
|
5946
|
+
const getBaseApiUrl = (environment) => {
|
|
5947
|
+
const authEndpoint = environment.NAME === "PRODUCTION" ? "/auth-mainnet" : "";
|
|
5948
|
+
return environment.AUTH_HUB_BASE_API + authEndpoint;
|
|
5949
|
+
};
|
|
5869
5950
|
|
|
5870
5951
|
/**
|
|
5871
5952
|
* Mints a Data NFT with a signature.
|
|
@@ -5878,13 +5959,13 @@ const validateRoyaltyBps = (royaltyBps) => {
|
|
|
5878
5959
|
* @param licenseTerms The terms of the license for the NFT.
|
|
5879
5960
|
* @param deadline The deadline for the minting operation.
|
|
5880
5961
|
* @param signature The signature for the minting operation.
|
|
5881
|
-
* @param appId Optional app ID for the minting operation.
|
|
5962
|
+
* @param appId Optional app ID for the minting operation.
|
|
5882
5963
|
* @returns A promise that resolves when the minting is complete.
|
|
5883
5964
|
*/
|
|
5884
5965
|
function mintWithSignature(to, tokenId, parents, isIp, hash, uri, licenseTerms, deadline, signature, appId) {
|
|
5885
5966
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5886
5967
|
var _a;
|
|
5887
|
-
// use provided appId,
|
|
5968
|
+
// use provided appId, else use instance appId, else default to empty string
|
|
5888
5969
|
const effectiveAppId = (_a = appId !== null && appId !== void 0 ? appId : this.appId) !== null && _a !== void 0 ? _a : "";
|
|
5889
5970
|
return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS, this.environment.IPNFT_ABI, "mintWithSignature", [
|
|
5890
5971
|
to,
|
|
@@ -5910,8 +5991,10 @@ function mintWithSignature(to, tokenId, parents, isIp, hash, uri, licenseTerms,
|
|
|
5910
5991
|
* @param parents The IDs of the parent NFTs, if applicable.
|
|
5911
5992
|
* @return A promise that resolves with the registration data.
|
|
5912
5993
|
*/
|
|
5913
|
-
function registerIpNFT(source, deadline, licenseTerms, metadata, fileKey, parents) {
|
|
5994
|
+
function registerIpNFT(source, deadline, licenseTerms, metadata, isIp, fileKey, parents, appId) {
|
|
5914
5995
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5996
|
+
var _a;
|
|
5997
|
+
const effectiveAppId = (_a = appId !== null && appId !== void 0 ? appId : this.appId) !== null && _a !== void 0 ? _a : "";
|
|
5915
5998
|
const body = {
|
|
5916
5999
|
source,
|
|
5917
6000
|
deadline: Number(deadline),
|
|
@@ -5922,13 +6005,15 @@ function registerIpNFT(source, deadline, licenseTerms, metadata, fileKey, parent
|
|
|
5922
6005
|
paymentToken: licenseTerms.paymentToken,
|
|
5923
6006
|
licenseType: licenseTerms.licenseType,
|
|
5924
6007
|
},
|
|
6008
|
+
appId: effectiveAppId,
|
|
6009
|
+
isIp,
|
|
5925
6010
|
metadata,
|
|
5926
6011
|
parentId: parents ? parents.map((p) => p.toString()) : [],
|
|
5927
6012
|
};
|
|
5928
6013
|
if (fileKey !== undefined) {
|
|
5929
6014
|
body.fileKey = fileKey;
|
|
5930
6015
|
}
|
|
5931
|
-
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
6016
|
+
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/register`, {
|
|
5932
6017
|
method: "POST",
|
|
5933
6018
|
headers: {
|
|
5934
6019
|
Authorization: `Bearer ${this.getJwt()}`,
|
|
@@ -6541,7 +6626,7 @@ const X402_INTENT_TYPES = {
|
|
|
6541
6626
|
};
|
|
6542
6627
|
|
|
6543
6628
|
const fetchTokenData = (origin, tokenId, headers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
6544
|
-
const response = yield fetch(`${origin.environment.AUTH_HUB_BASE_API}
|
|
6629
|
+
const response = yield fetch(`${origin.environment.AUTH_HUB_BASE_API}/origin/data/${tokenId}`, {
|
|
6545
6630
|
method: "GET",
|
|
6546
6631
|
headers: Object.assign({ "Content-Type": "application/json" }, headers),
|
|
6547
6632
|
});
|
|
@@ -6704,11 +6789,12 @@ function getCurrentAccount() {
|
|
|
6704
6789
|
|
|
6705
6790
|
/**
|
|
6706
6791
|
* Raises a dispute against an IP NFT.
|
|
6707
|
-
*
|
|
6792
|
+
* Automatically handles token approval for ERC20 bonds or native token value.
|
|
6793
|
+
* Includes the protocol dispute fee in the transaction.
|
|
6708
6794
|
*
|
|
6709
6795
|
* @param targetIpId The token ID of the IP NFT to dispute.
|
|
6710
6796
|
* @param evidenceHash The hash of evidence supporting the dispute.
|
|
6711
|
-
* @param disputeTag A tag identifying the type of dispute.
|
|
6797
|
+
* @param disputeTag A tag identifying the type of dispute (bytes32).
|
|
6712
6798
|
* @returns A promise that resolves with the transaction result including the dispute ID.
|
|
6713
6799
|
*
|
|
6714
6800
|
* @example
|
|
@@ -6716,13 +6802,276 @@ function getCurrentAccount() {
|
|
|
6716
6802
|
* const result = await origin.raiseDispute(
|
|
6717
6803
|
* 1n,
|
|
6718
6804
|
* "0x1234...", // evidence hash
|
|
6719
|
-
* "
|
|
6805
|
+
* "0x0100000000000000000000000000000000000000000000000000000000000000" // dispute tag (bytes32)
|
|
6720
6806
|
* );
|
|
6721
6807
|
* ```
|
|
6722
6808
|
*/
|
|
6723
6809
|
function raiseDispute(targetIpId, evidenceHash, disputeTag) {
|
|
6724
6810
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6725
|
-
|
|
6811
|
+
const publicClient = getPublicClient();
|
|
6812
|
+
const disputeContractAddress = this.environment
|
|
6813
|
+
.DISPUTE_CONTRACT_ADDRESS;
|
|
6814
|
+
const disputeAbi = this.environment.DISPUTE_ABI;
|
|
6815
|
+
// Get dispute bond amount, protocol fee, and token address from the contract
|
|
6816
|
+
const [disputeBond, protocolFee, disputeToken] = yield Promise.all([
|
|
6817
|
+
publicClient.readContract({
|
|
6818
|
+
address: disputeContractAddress,
|
|
6819
|
+
abi: disputeAbi,
|
|
6820
|
+
functionName: "disputeBond",
|
|
6821
|
+
}),
|
|
6822
|
+
publicClient.readContract({
|
|
6823
|
+
address: disputeContractAddress,
|
|
6824
|
+
abi: disputeAbi,
|
|
6825
|
+
functionName: "protocolDisputeFee",
|
|
6826
|
+
}),
|
|
6827
|
+
publicClient.readContract({
|
|
6828
|
+
address: disputeContractAddress,
|
|
6829
|
+
abi: disputeAbi,
|
|
6830
|
+
functionName: "disputeToken",
|
|
6831
|
+
}),
|
|
6832
|
+
]);
|
|
6833
|
+
const isNativeToken = disputeToken === zeroAddress;
|
|
6834
|
+
const totalAmount = disputeBond + protocolFee;
|
|
6835
|
+
if (!isNativeToken) {
|
|
6836
|
+
// ERC20 token: approve the dispute contract to spend the total amount
|
|
6837
|
+
yield this.approveERC20IfNeeded(disputeToken, disputeContractAddress, totalAmount);
|
|
6838
|
+
}
|
|
6839
|
+
// Call the raiseDispute contract method
|
|
6840
|
+
// Pass the total (bond + protocol fee) as msg.value if using native token
|
|
6841
|
+
return this.callContractMethod(disputeContractAddress, disputeAbi, "raiseDispute", [targetIpId, evidenceHash, disputeTag], {
|
|
6842
|
+
waitForReceipt: true,
|
|
6843
|
+
value: isNativeToken ? totalAmount : undefined,
|
|
6844
|
+
});
|
|
6845
|
+
});
|
|
6846
|
+
}
|
|
6847
|
+
|
|
6848
|
+
// base-x encoding / decoding
|
|
6849
|
+
// Copyright (c) 2018 base-x contributors
|
|
6850
|
+
// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
|
|
6851
|
+
// Distributed under the MIT software license, see the accompanying
|
|
6852
|
+
// file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
|
6853
|
+
function base (ALPHABET) {
|
|
6854
|
+
if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
|
|
6855
|
+
const BASE_MAP = new Uint8Array(256);
|
|
6856
|
+
for (let j = 0; j < BASE_MAP.length; j++) {
|
|
6857
|
+
BASE_MAP[j] = 255;
|
|
6858
|
+
}
|
|
6859
|
+
for (let i = 0; i < ALPHABET.length; i++) {
|
|
6860
|
+
const x = ALPHABET.charAt(i);
|
|
6861
|
+
const xc = x.charCodeAt(0);
|
|
6862
|
+
if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
|
|
6863
|
+
BASE_MAP[xc] = i;
|
|
6864
|
+
}
|
|
6865
|
+
const BASE = ALPHABET.length;
|
|
6866
|
+
const LEADER = ALPHABET.charAt(0);
|
|
6867
|
+
const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
|
|
6868
|
+
const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
|
|
6869
|
+
function encode (source) {
|
|
6870
|
+
// eslint-disable-next-line no-empty
|
|
6871
|
+
if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {
|
|
6872
|
+
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
6873
|
+
} else if (Array.isArray(source)) {
|
|
6874
|
+
source = Uint8Array.from(source);
|
|
6875
|
+
}
|
|
6876
|
+
if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
|
|
6877
|
+
if (source.length === 0) { return '' }
|
|
6878
|
+
// Skip & count leading zeroes.
|
|
6879
|
+
let zeroes = 0;
|
|
6880
|
+
let length = 0;
|
|
6881
|
+
let pbegin = 0;
|
|
6882
|
+
const pend = source.length;
|
|
6883
|
+
while (pbegin !== pend && source[pbegin] === 0) {
|
|
6884
|
+
pbegin++;
|
|
6885
|
+
zeroes++;
|
|
6886
|
+
}
|
|
6887
|
+
// Allocate enough space in big-endian base58 representation.
|
|
6888
|
+
const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
|
|
6889
|
+
const b58 = new Uint8Array(size);
|
|
6890
|
+
// Process the bytes.
|
|
6891
|
+
while (pbegin !== pend) {
|
|
6892
|
+
let carry = source[pbegin];
|
|
6893
|
+
// Apply "b58 = b58 * 256 + ch".
|
|
6894
|
+
let i = 0;
|
|
6895
|
+
for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
|
|
6896
|
+
carry += (256 * b58[it1]) >>> 0;
|
|
6897
|
+
b58[it1] = (carry % BASE) >>> 0;
|
|
6898
|
+
carry = (carry / BASE) >>> 0;
|
|
6899
|
+
}
|
|
6900
|
+
if (carry !== 0) { throw new Error('Non-zero carry') }
|
|
6901
|
+
length = i;
|
|
6902
|
+
pbegin++;
|
|
6903
|
+
}
|
|
6904
|
+
// Skip leading zeroes in base58 result.
|
|
6905
|
+
let it2 = size - length;
|
|
6906
|
+
while (it2 !== size && b58[it2] === 0) {
|
|
6907
|
+
it2++;
|
|
6908
|
+
}
|
|
6909
|
+
// Translate the result into a string.
|
|
6910
|
+
let str = LEADER.repeat(zeroes);
|
|
6911
|
+
for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
|
|
6912
|
+
return str
|
|
6913
|
+
}
|
|
6914
|
+
function decodeUnsafe (source) {
|
|
6915
|
+
if (typeof source !== 'string') { throw new TypeError('Expected String') }
|
|
6916
|
+
if (source.length === 0) { return new Uint8Array() }
|
|
6917
|
+
let psz = 0;
|
|
6918
|
+
// Skip and count leading '1's.
|
|
6919
|
+
let zeroes = 0;
|
|
6920
|
+
let length = 0;
|
|
6921
|
+
while (source[psz] === LEADER) {
|
|
6922
|
+
zeroes++;
|
|
6923
|
+
psz++;
|
|
6924
|
+
}
|
|
6925
|
+
// Allocate enough space in big-endian base256 representation.
|
|
6926
|
+
const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
|
|
6927
|
+
const b256 = new Uint8Array(size);
|
|
6928
|
+
// Process the characters.
|
|
6929
|
+
while (psz < source.length) {
|
|
6930
|
+
// Find code of next character
|
|
6931
|
+
const charCode = source.charCodeAt(psz);
|
|
6932
|
+
// Base map can not be indexed using char code
|
|
6933
|
+
if (charCode > 255) { return }
|
|
6934
|
+
// Decode character
|
|
6935
|
+
let carry = BASE_MAP[charCode];
|
|
6936
|
+
// Invalid character
|
|
6937
|
+
if (carry === 255) { return }
|
|
6938
|
+
let i = 0;
|
|
6939
|
+
for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
|
|
6940
|
+
carry += (BASE * b256[it3]) >>> 0;
|
|
6941
|
+
b256[it3] = (carry % 256) >>> 0;
|
|
6942
|
+
carry = (carry / 256) >>> 0;
|
|
6943
|
+
}
|
|
6944
|
+
if (carry !== 0) { throw new Error('Non-zero carry') }
|
|
6945
|
+
length = i;
|
|
6946
|
+
psz++;
|
|
6947
|
+
}
|
|
6948
|
+
// Skip leading zeroes in b256.
|
|
6949
|
+
let it4 = size - length;
|
|
6950
|
+
while (it4 !== size && b256[it4] === 0) {
|
|
6951
|
+
it4++;
|
|
6952
|
+
}
|
|
6953
|
+
const vch = new Uint8Array(zeroes + (size - it4));
|
|
6954
|
+
let j = zeroes;
|
|
6955
|
+
while (it4 !== size) {
|
|
6956
|
+
vch[j++] = b256[it4++];
|
|
6957
|
+
}
|
|
6958
|
+
return vch
|
|
6959
|
+
}
|
|
6960
|
+
function decode (string) {
|
|
6961
|
+
const buffer = decodeUnsafe(string);
|
|
6962
|
+
if (buffer) { return buffer }
|
|
6963
|
+
throw new Error('Non-base' + BASE + ' character')
|
|
6964
|
+
}
|
|
6965
|
+
return {
|
|
6966
|
+
encode,
|
|
6967
|
+
decodeUnsafe,
|
|
6968
|
+
decode
|
|
6969
|
+
}
|
|
6970
|
+
}
|
|
6971
|
+
|
|
6972
|
+
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
6973
|
+
var bs58 = base(ALPHABET);
|
|
6974
|
+
|
|
6975
|
+
// RFC 4648 base32 alphabet (lowercase)
|
|
6976
|
+
const BASE32_ALPHABET = "abcdefghijklmnopqrstuvwxyz234567";
|
|
6977
|
+
function base32Decode(str) {
|
|
6978
|
+
const lookup = {};
|
|
6979
|
+
for (let i = 0; i < BASE32_ALPHABET.length; i++) {
|
|
6980
|
+
lookup[BASE32_ALPHABET[i]] = i;
|
|
6981
|
+
}
|
|
6982
|
+
let bits = 0;
|
|
6983
|
+
let value = 0;
|
|
6984
|
+
const result = [];
|
|
6985
|
+
for (const char of str.toLowerCase()) {
|
|
6986
|
+
if (!(char in lookup)) {
|
|
6987
|
+
throw new Error(`Invalid base32 character: ${char}`);
|
|
6988
|
+
}
|
|
6989
|
+
value = (value << 5) | lookup[char];
|
|
6990
|
+
bits += 5;
|
|
6991
|
+
if (bits >= 8) {
|
|
6992
|
+
bits -= 8;
|
|
6993
|
+
result.push((value >> bits) & 0xff);
|
|
6994
|
+
}
|
|
6995
|
+
}
|
|
6996
|
+
return new Uint8Array(result);
|
|
6997
|
+
}
|
|
6998
|
+
/**
|
|
6999
|
+
* Encode a CID to bytes32 by extracting the 32-byte SHA-256 digest.
|
|
7000
|
+
* Supports both CIDv0 (starts with "Qm") and CIDv1 (starts with "bafy").
|
|
7001
|
+
*/
|
|
7002
|
+
function encodeCidToBytes32(cid) {
|
|
7003
|
+
let digest;
|
|
7004
|
+
if (cid.startsWith("Qm")) {
|
|
7005
|
+
// CIDv0: base58-encoded multihash (0x1220 + 32-byte digest)
|
|
7006
|
+
const decoded = bs58.decode(cid);
|
|
7007
|
+
if (decoded[0] !== 0x12 || decoded[1] !== 0x20 || decoded.length !== 34) {
|
|
7008
|
+
throw new Error("Invalid CIDv0: expected SHA-256 multihash");
|
|
7009
|
+
}
|
|
7010
|
+
digest = decoded.slice(2);
|
|
7011
|
+
}
|
|
7012
|
+
else if (cid.startsWith("b")) {
|
|
7013
|
+
// CIDv1: multibase 'b' prefix + base32-encoded (version + codec + multihash)
|
|
7014
|
+
const decoded = base32Decode(cid.slice(1));
|
|
7015
|
+
// CIDv1 structure: version (1 byte) + codec (varint) + multihash
|
|
7016
|
+
// For raw codec with sha2-256: 0x01 + 0x55 + 0x12 + 0x20 + 32-byte digest
|
|
7017
|
+
// For dag-pb with sha2-256: 0x01 + 0x70 + 0x12 + 0x20 + 32-byte digest
|
|
7018
|
+
if (decoded[0] !== 0x01 || decoded.length !== 36) {
|
|
7019
|
+
throw new Error("Invalid CIDv1: expected version 1 with 36 bytes");
|
|
7020
|
+
}
|
|
7021
|
+
const codec = decoded[1];
|
|
7022
|
+
if (codec !== 0x55 && codec !== 0x70) {
|
|
7023
|
+
throw new Error(`Invalid CIDv1: unsupported codec 0x${codec.toString(16)}`);
|
|
7024
|
+
}
|
|
7025
|
+
if (decoded[2] !== 0x12 || decoded[3] !== 0x20) {
|
|
7026
|
+
throw new Error("Invalid CIDv1: expected SHA-256 hash");
|
|
7027
|
+
}
|
|
7028
|
+
digest = decoded.slice(4);
|
|
7029
|
+
}
|
|
7030
|
+
else {
|
|
7031
|
+
throw new Error("Unsupported CID format: must start with 'Qm' or 'b'");
|
|
7032
|
+
}
|
|
7033
|
+
return `0x${Buffer.from(digest).toString("hex")}`;
|
|
7034
|
+
}
|
|
7035
|
+
|
|
7036
|
+
/**
|
|
7037
|
+
* Raises a dispute with automatic evidence upload to IPFS.
|
|
7038
|
+
* Uploads evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
|
|
7039
|
+
* and calls raiseDispute.
|
|
7040
|
+
*
|
|
7041
|
+
* The CID is encoded by stripping the 0x1220 multihash prefix from CIDv0,
|
|
7042
|
+
* leaving only the 32-byte SHA-256 digest. This encoding is reversible,
|
|
7043
|
+
* allowing the original CID to be reconstructed from the on-chain data.
|
|
7044
|
+
*
|
|
7045
|
+
* @param targetIpId The token ID of the IP NFT to dispute.
|
|
7046
|
+
* @param evidence The evidence JSON object to upload to IPFS.
|
|
7047
|
+
* @param disputeTag A tag identifying the type of dispute.
|
|
7048
|
+
* @returns A promise that resolves with the transaction result, IPFS CID, and evidence hash.
|
|
7049
|
+
*
|
|
7050
|
+
* @example
|
|
7051
|
+
* ```typescript
|
|
7052
|
+
* const result = await origin.raiseDisputeSmart(
|
|
7053
|
+
* 1n,
|
|
7054
|
+
* { reason: "copyright", details: "Unauthorized use of copyrighted material" },
|
|
7055
|
+
* "0x696e6672696e67656d656e74..." // dispute tag
|
|
7056
|
+
* );
|
|
7057
|
+
*
|
|
7058
|
+
* // The CID can be recovered from evidenceHash using decodeCidFromBytes32
|
|
7059
|
+
* console.log("Evidence CID:", result.evidenceCid);
|
|
7060
|
+
*
|
|
7061
|
+
* // Fetch evidence via IPFS gateway
|
|
7062
|
+
* // https://ipfs.io/ipfs/{result.evidenceCid}
|
|
7063
|
+
* ```
|
|
7064
|
+
*/
|
|
7065
|
+
function raiseDisputeSmart(targetIpId, evidence, disputeTag) {
|
|
7066
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7067
|
+
const cid = yield this.uploadJSONToIPFS(evidence);
|
|
7068
|
+
const evidenceHash = encodeCidToBytes32(cid);
|
|
7069
|
+
const transactionResult = yield this.raiseDispute(targetIpId, evidenceHash, disputeTag);
|
|
7070
|
+
return {
|
|
7071
|
+
transactionResult,
|
|
7072
|
+
evidenceCid: cid,
|
|
7073
|
+
evidenceHash,
|
|
7074
|
+
};
|
|
6726
7075
|
});
|
|
6727
7076
|
}
|
|
6728
7077
|
|
|
@@ -6745,6 +7094,48 @@ function disputeAssertion(disputeId, counterEvidenceHash) {
|
|
|
6745
7094
|
});
|
|
6746
7095
|
}
|
|
6747
7096
|
|
|
7097
|
+
/**
|
|
7098
|
+
* Asserts a dispute with automatic counter-evidence upload to IPFS.
|
|
7099
|
+
* Uploads counter-evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
|
|
7100
|
+
* and calls disputeAssertion.
|
|
7101
|
+
*
|
|
7102
|
+
* The CID is encoded by stripping the 0x1220 multihash prefix from CIDv0,
|
|
7103
|
+
* leaving only the 32-byte SHA-256 digest. This encoding is reversible,
|
|
7104
|
+
* allowing the original CID to be reconstructed from the on-chain data.
|
|
7105
|
+
*
|
|
7106
|
+
* Must be called by the owner of the disputed IP within the cooldown period.
|
|
7107
|
+
*
|
|
7108
|
+
* @param disputeId The ID of the dispute to assert.
|
|
7109
|
+
* @param counterEvidence The counter-evidence JSON object to upload to IPFS.
|
|
7110
|
+
* @returns A promise that resolves with the transaction result, IPFS CID, and counter-evidence hash.
|
|
7111
|
+
*
|
|
7112
|
+
* @example
|
|
7113
|
+
* ```typescript
|
|
7114
|
+
* const result = await origin.disputeAssertionSmart(
|
|
7115
|
+
* 1n,
|
|
7116
|
+
* { description: "This is my original work", proofUrl: "https://..." }
|
|
7117
|
+
* );
|
|
7118
|
+
*
|
|
7119
|
+
* // The CID can be recovered from counterEvidenceHash using decodeCidFromBytes32
|
|
7120
|
+
* console.log("Counter-evidence CID:", result.counterEvidenceCid);
|
|
7121
|
+
*
|
|
7122
|
+
* // Fetch counter-evidence via IPFS gateway
|
|
7123
|
+
* // https://ipfs.io/ipfs/{result.counterEvidenceCid}
|
|
7124
|
+
* ```
|
|
7125
|
+
*/
|
|
7126
|
+
function disputeAssertionSmart(disputeId, counterEvidence) {
|
|
7127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7128
|
+
const cid = yield this.uploadJSONToIPFS(counterEvidence);
|
|
7129
|
+
const counterEvidenceHash = encodeCidToBytes32(cid);
|
|
7130
|
+
const transactionResult = yield this.disputeAssertion(disputeId, counterEvidenceHash);
|
|
7131
|
+
return {
|
|
7132
|
+
transactionResult,
|
|
7133
|
+
counterEvidenceCid: cid,
|
|
7134
|
+
counterEvidenceHash,
|
|
7135
|
+
};
|
|
7136
|
+
});
|
|
7137
|
+
}
|
|
7138
|
+
|
|
6748
7139
|
/**
|
|
6749
7140
|
* Votes on a dispute as a CAMP token staker.
|
|
6750
7141
|
* Only users who staked before the dispute was raised can vote.
|
|
@@ -6844,7 +7235,23 @@ function tagChildIp(childIpId, infringerDisputeId) {
|
|
|
6844
7235
|
*/
|
|
6845
7236
|
function getDispute(disputeId) {
|
|
6846
7237
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6847
|
-
|
|
7238
|
+
const result = yield this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS, this.environment.DISPUTE_ABI, "disputes", [disputeId]);
|
|
7239
|
+
// Contract returns a tuple, map it to the Dispute interface
|
|
7240
|
+
const [initiator, targetId, disputeTag, disputeEvidenceHash, counterEvidenceHash, disputeTimestamp, assertionTimestamp, yesVotes, noVotes, status, bondAmount, protocolFeeAmount,] = result;
|
|
7241
|
+
return {
|
|
7242
|
+
initiator,
|
|
7243
|
+
targetId,
|
|
7244
|
+
disputeTag,
|
|
7245
|
+
disputeEvidenceHash,
|
|
7246
|
+
counterEvidenceHash,
|
|
7247
|
+
disputeTimestamp,
|
|
7248
|
+
assertionTimestamp,
|
|
7249
|
+
yesVotes,
|
|
7250
|
+
noVotes,
|
|
7251
|
+
status: status,
|
|
7252
|
+
bondAmount,
|
|
7253
|
+
protocolFeeAmount,
|
|
7254
|
+
};
|
|
6848
7255
|
});
|
|
6849
7256
|
}
|
|
6850
7257
|
|
|
@@ -7126,6 +7533,71 @@ function getDisputeProgress(disputeId) {
|
|
|
7126
7533
|
});
|
|
7127
7534
|
}
|
|
7128
7535
|
|
|
7536
|
+
/**
|
|
7537
|
+
* Gets the requirements for raising a dispute, including balance check.
|
|
7538
|
+
*
|
|
7539
|
+
* @param userAddress The address to check balance for.
|
|
7540
|
+
* @returns A promise that resolves with the dispute requirements.
|
|
7541
|
+
*
|
|
7542
|
+
* @example
|
|
7543
|
+
* ```typescript
|
|
7544
|
+
* const requirements = await origin.getDisputeRequirements(walletAddress);
|
|
7545
|
+
* if (!requirements.hasSufficientBalance) {
|
|
7546
|
+
* console.log(`Need ${requirements.totalRequired} but only have ${requirements.userBalance}`);
|
|
7547
|
+
* }
|
|
7548
|
+
* ```
|
|
7549
|
+
*/
|
|
7550
|
+
function getDisputeRequirements(userAddress) {
|
|
7551
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7552
|
+
const publicClient = getPublicClient();
|
|
7553
|
+
const disputeContractAddress = this.environment
|
|
7554
|
+
.DISPUTE_CONTRACT_ADDRESS;
|
|
7555
|
+
const disputeAbi = this.environment.DISPUTE_ABI;
|
|
7556
|
+
// Get dispute parameters from the contract
|
|
7557
|
+
const [bondAmount, protocolFee, tokenAddress] = yield Promise.all([
|
|
7558
|
+
publicClient.readContract({
|
|
7559
|
+
address: disputeContractAddress,
|
|
7560
|
+
abi: disputeAbi,
|
|
7561
|
+
functionName: "disputeBond",
|
|
7562
|
+
}),
|
|
7563
|
+
publicClient.readContract({
|
|
7564
|
+
address: disputeContractAddress,
|
|
7565
|
+
abi: disputeAbi,
|
|
7566
|
+
functionName: "protocolDisputeFee",
|
|
7567
|
+
}),
|
|
7568
|
+
publicClient.readContract({
|
|
7569
|
+
address: disputeContractAddress,
|
|
7570
|
+
abi: disputeAbi,
|
|
7571
|
+
functionName: "disputeToken",
|
|
7572
|
+
}),
|
|
7573
|
+
]);
|
|
7574
|
+
const isNativeToken = tokenAddress === zeroAddress;
|
|
7575
|
+
const totalRequired = bondAmount + protocolFee;
|
|
7576
|
+
// Get user's balance
|
|
7577
|
+
let userBalance;
|
|
7578
|
+
if (isNativeToken) {
|
|
7579
|
+
userBalance = yield publicClient.getBalance({ address: userAddress });
|
|
7580
|
+
}
|
|
7581
|
+
else {
|
|
7582
|
+
userBalance = (yield publicClient.readContract({
|
|
7583
|
+
address: tokenAddress,
|
|
7584
|
+
abi: erc20Abi,
|
|
7585
|
+
functionName: "balanceOf",
|
|
7586
|
+
args: [userAddress],
|
|
7587
|
+
}));
|
|
7588
|
+
}
|
|
7589
|
+
return {
|
|
7590
|
+
bondAmount,
|
|
7591
|
+
protocolFee,
|
|
7592
|
+
totalRequired,
|
|
7593
|
+
tokenAddress,
|
|
7594
|
+
isNativeToken,
|
|
7595
|
+
userBalance,
|
|
7596
|
+
hasSufficientBalance: userBalance >= totalRequired,
|
|
7597
|
+
};
|
|
7598
|
+
});
|
|
7599
|
+
}
|
|
7600
|
+
|
|
7129
7601
|
/**
|
|
7130
7602
|
* Fractionalizes an IP NFT into fungible ERC20 tokens.
|
|
7131
7603
|
* The NFT is transferred to the fractionalizer contract and a new ERC20 token is created.
|
|
@@ -7497,10 +7969,11 @@ function getAppInfo(appId) {
|
|
|
7497
7969
|
/**
|
|
7498
7970
|
* Approves a spender to spend a specified amount of tokens on behalf of the owner.
|
|
7499
7971
|
* If the current allowance is less than the specified amount, it will perform the approval.
|
|
7972
|
+
* Waits for the approval transaction to be confirmed before returning.
|
|
7500
7973
|
* @param {ApproveParams} params - The parameters for the approval.
|
|
7501
7974
|
*/
|
|
7502
7975
|
function approveIfNeeded(_a) {
|
|
7503
|
-
return __awaiter(this, arguments, void 0, function* ({ walletClient, publicClient, tokenAddress, owner, spender, amount, }) {
|
|
7976
|
+
return __awaiter(this, arguments, void 0, function* ({ walletClient, publicClient, tokenAddress, owner, spender, amount, chain, }) {
|
|
7504
7977
|
const allowance = yield publicClient.readContract({
|
|
7505
7978
|
address: tokenAddress,
|
|
7506
7979
|
abi: erc20Abi,
|
|
@@ -7508,14 +7981,21 @@ function approveIfNeeded(_a) {
|
|
|
7508
7981
|
args: [owner, spender],
|
|
7509
7982
|
});
|
|
7510
7983
|
if (allowance < amount) {
|
|
7511
|
-
yield walletClient.writeContract({
|
|
7984
|
+
const txHash = yield walletClient.writeContract({
|
|
7512
7985
|
address: tokenAddress,
|
|
7513
7986
|
account: owner,
|
|
7514
7987
|
abi: erc20Abi,
|
|
7515
7988
|
functionName: "approve",
|
|
7516
7989
|
args: [spender, amount],
|
|
7517
|
-
chain
|
|
7990
|
+
chain,
|
|
7991
|
+
});
|
|
7992
|
+
// Wait for the approval transaction to be confirmed with extra confirmations
|
|
7993
|
+
yield publicClient.waitForTransactionReceipt({
|
|
7994
|
+
hash: txHash,
|
|
7995
|
+
confirmations: 2,
|
|
7518
7996
|
});
|
|
7997
|
+
// Small delay to ensure RPC nodes have synced the new state
|
|
7998
|
+
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
7519
7999
|
}
|
|
7520
8000
|
});
|
|
7521
8001
|
}
|
|
@@ -7684,6 +8164,7 @@ function bulkBuyAccessSmart(tokenIds, options) {
|
|
|
7684
8164
|
owner: buyer,
|
|
7685
8165
|
spender: this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,
|
|
7686
8166
|
amount: erc20.amount,
|
|
8167
|
+
chain: this.environment.CHAIN,
|
|
7687
8168
|
});
|
|
7688
8169
|
}
|
|
7689
8170
|
// Execute the purchase
|
|
@@ -7715,6 +8196,8 @@ class Origin {
|
|
|
7715
8196
|
typeof environment === "string"
|
|
7716
8197
|
? ENVIRONMENTS[environment]
|
|
7717
8198
|
: environment || ENVIRONMENTS["DEVELOPMENT"];
|
|
8199
|
+
this.environment.AUTH_HUB_BASE_API +=
|
|
8200
|
+
environment === "PRODUCTION" ? "/auth-mainnet" : "";
|
|
7718
8201
|
this.baseParentId = baseParentId;
|
|
7719
8202
|
this.appId = appId;
|
|
7720
8203
|
// DataNFT methods
|
|
@@ -7748,7 +8231,9 @@ class Origin {
|
|
|
7748
8231
|
this.checkActiveStatus = checkActiveStatus.bind(this);
|
|
7749
8232
|
// Dispute module methods
|
|
7750
8233
|
this.raiseDispute = raiseDispute.bind(this);
|
|
8234
|
+
this.raiseDisputeSmart = raiseDisputeSmart.bind(this);
|
|
7751
8235
|
this.disputeAssertion = disputeAssertion.bind(this);
|
|
8236
|
+
this.disputeAssertionSmart = disputeAssertionSmart.bind(this);
|
|
7752
8237
|
this.voteOnDispute = voteOnDispute.bind(this);
|
|
7753
8238
|
this.resolveDispute = resolveDispute.bind(this);
|
|
7754
8239
|
this.cancelDispute = cancelDispute.bind(this);
|
|
@@ -7756,6 +8241,7 @@ class Origin {
|
|
|
7756
8241
|
this.getDispute = getDispute.bind(this);
|
|
7757
8242
|
this.canVoteOnDispute = canVoteOnDispute.bind(this);
|
|
7758
8243
|
this.getDisputeProgress = getDisputeProgress.bind(this);
|
|
8244
|
+
this.getDisputeRequirements = getDisputeRequirements.bind(this);
|
|
7759
8245
|
// Fractionalizer module methods
|
|
7760
8246
|
this.fractionalize = fractionalize.bind(this);
|
|
7761
8247
|
this.redeem = redeem.bind(this);
|
|
@@ -7773,6 +8259,46 @@ class Origin {
|
|
|
7773
8259
|
setViemClient(client) {
|
|
7774
8260
|
this.viemClient = client;
|
|
7775
8261
|
}
|
|
8262
|
+
/**
|
|
8263
|
+
* Approves an ERC20 token for spending by a spender address if the current allowance is insufficient.
|
|
8264
|
+
* Waits for the approval transaction to be confirmed before returning.
|
|
8265
|
+
* @param tokenAddress The address of the ERC20 token.
|
|
8266
|
+
* @param spender The address that will be approved to spend the tokens.
|
|
8267
|
+
* @param amount The amount of tokens to approve.
|
|
8268
|
+
*/
|
|
8269
|
+
approveERC20IfNeeded(tokenAddress, spender, amount) {
|
|
8270
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
8271
|
+
const account = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_resolveWalletAddress).call(this);
|
|
8272
|
+
yield approveIfNeeded({
|
|
8273
|
+
walletClient: this.viemClient,
|
|
8274
|
+
publicClient: getPublicClient(),
|
|
8275
|
+
tokenAddress,
|
|
8276
|
+
owner: account,
|
|
8277
|
+
spender,
|
|
8278
|
+
amount,
|
|
8279
|
+
chain: this.environment.CHAIN,
|
|
8280
|
+
});
|
|
8281
|
+
});
|
|
8282
|
+
}
|
|
8283
|
+
/**
|
|
8284
|
+
* Uploads a JSON object to IPFS and returns the resulting CID.
|
|
8285
|
+
* @param data The JSON object to upload.
|
|
8286
|
+
* @returns The CID of the uploaded JSON.
|
|
8287
|
+
* @throws {APIError} If the upload fails.
|
|
8288
|
+
*/
|
|
8289
|
+
uploadJSONToIPFS(data) {
|
|
8290
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
8291
|
+
const jsonString = JSON.stringify(data);
|
|
8292
|
+
const file = new File([jsonString], "evidence.json", {
|
|
8293
|
+
type: "application/json",
|
|
8294
|
+
});
|
|
8295
|
+
const cid = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_uploadToIPFS).call(this, file);
|
|
8296
|
+
if (!cid) {
|
|
8297
|
+
throw new APIError("Failed to upload evidence to IPFS");
|
|
8298
|
+
}
|
|
8299
|
+
return cid;
|
|
8300
|
+
});
|
|
8301
|
+
}
|
|
7776
8302
|
/**
|
|
7777
8303
|
* Mints a file-based IpNFT.
|
|
7778
8304
|
* @param file The file to mint.
|
|
@@ -7826,10 +8352,12 @@ class Origin {
|
|
|
7826
8352
|
}
|
|
7827
8353
|
let registration;
|
|
7828
8354
|
try {
|
|
7829
|
-
registration = yield this.registerIpNFT("file", deadline, license, metadata,
|
|
8355
|
+
registration = yield this.registerIpNFT("file", deadline, license, metadata, true, // isIp
|
|
8356
|
+
info.key, // fileKey
|
|
8357
|
+
parents, this.appId);
|
|
7830
8358
|
}
|
|
7831
8359
|
catch (error) {
|
|
7832
|
-
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key,
|
|
8360
|
+
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
|
|
7833
8361
|
throw new Error(`Failed to register IpNFT: ${error instanceof Error ? error.message : String(error)}`);
|
|
7834
8362
|
}
|
|
7835
8363
|
const { tokenId, signerAddress, creatorContentHash, signature, uri } = registration;
|
|
@@ -7841,14 +8369,14 @@ class Origin {
|
|
|
7841
8369
|
throw new Error("Failed to register IpNFT: Missing required fields in registration response.");
|
|
7842
8370
|
}
|
|
7843
8371
|
try {
|
|
7844
|
-
const mintResult = yield this.mintWithSignature(account, tokenId, parents || [], true, creatorContentHash, uri, license, deadline, signature);
|
|
8372
|
+
const mintResult = yield this.mintWithSignature(account, tokenId, parents || [], true, creatorContentHash, uri, license, deadline, signature, this.appId);
|
|
7845
8373
|
if (["0x1", "success"].indexOf(mintResult.receipt.status) === -1) {
|
|
7846
|
-
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key,
|
|
8374
|
+
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
|
|
7847
8375
|
throw new Error(`Minting failed with status: ${mintResult.receipt.status}`);
|
|
7848
8376
|
}
|
|
7849
8377
|
}
|
|
7850
8378
|
catch (error) {
|
|
7851
|
-
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key,
|
|
8379
|
+
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, info.key, info.uploadId, []);
|
|
7852
8380
|
throw new Error(`Minting transaction failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
7853
8381
|
}
|
|
7854
8382
|
return tokenId.toString();
|
|
@@ -7875,7 +8403,9 @@ class Origin {
|
|
|
7875
8403
|
let parents = this.baseParentId ? [this.baseParentId] : [];
|
|
7876
8404
|
let registration;
|
|
7877
8405
|
try {
|
|
7878
|
-
registration = yield this.registerIpNFT(source, deadline, license, metadata,
|
|
8406
|
+
registration = yield this.registerIpNFT(source, deadline, license, metadata, true, // isIp
|
|
8407
|
+
undefined, // fileKey
|
|
8408
|
+
parents, this.appId);
|
|
7879
8409
|
}
|
|
7880
8410
|
catch (error) {
|
|
7881
8411
|
throw new Error(`Failed to register Social IpNFT: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -7889,7 +8419,7 @@ class Origin {
|
|
|
7889
8419
|
throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");
|
|
7890
8420
|
}
|
|
7891
8421
|
try {
|
|
7892
|
-
const mintResult = yield this.mintWithSignature(account, tokenId, parents, true, creatorContentHash, uri, license, deadline, signature);
|
|
8422
|
+
const mintResult = yield this.mintWithSignature(account, tokenId, parents, true, creatorContentHash, uri, license, deadline, signature, this.appId);
|
|
7893
8423
|
if (["0x1", "success"].indexOf(mintResult.receipt.status) === -1) {
|
|
7894
8424
|
throw new Error(`Minting Social IpNFT failed with status: ${mintResult.receipt.status}`);
|
|
7895
8425
|
}
|
|
@@ -8106,6 +8636,7 @@ class Origin {
|
|
|
8106
8636
|
owner: account,
|
|
8107
8637
|
spender: this.environment.MARKETPLACE_CONTRACT_ADDRESS,
|
|
8108
8638
|
amount: totalCost,
|
|
8639
|
+
chain: this.environment.CHAIN,
|
|
8109
8640
|
});
|
|
8110
8641
|
return this.buyAccess(account, tokenId, totalCost, duration, paymentToken, protocolFeeBps, appFeeBps);
|
|
8111
8642
|
});
|
|
@@ -8118,7 +8649,7 @@ class Origin {
|
|
|
8118
8649
|
*/
|
|
8119
8650
|
getData(tokenId) {
|
|
8120
8651
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8121
|
-
const response = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
8652
|
+
const response = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/data/${tokenId}`, {
|
|
8122
8653
|
method: "GET",
|
|
8123
8654
|
headers: {
|
|
8124
8655
|
Authorization: `Bearer ${this.jwt}`,
|
|
@@ -8280,14 +8811,15 @@ class Origin {
|
|
|
8280
8811
|
});
|
|
8281
8812
|
}
|
|
8282
8813
|
}
|
|
8283
|
-
_Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_generateURL(file) {
|
|
8814
|
+
_Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_generateURL(file, partCount) {
|
|
8284
8815
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8285
8816
|
try {
|
|
8286
|
-
const uploadRes = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
8817
|
+
const uploadRes = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url`, {
|
|
8287
8818
|
method: "POST",
|
|
8288
8819
|
body: JSON.stringify({
|
|
8289
8820
|
name: file.name,
|
|
8290
8821
|
type: file.type,
|
|
8822
|
+
partCount,
|
|
8291
8823
|
}),
|
|
8292
8824
|
headers: {
|
|
8293
8825
|
Authorization: `Bearer ${this.jwt}`,
|
|
@@ -8308,14 +8840,15 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
|
|
|
8308
8840
|
throw error;
|
|
8309
8841
|
}
|
|
8310
8842
|
});
|
|
8311
|
-
}, _Origin_setOriginStatus = function _Origin_setOriginStatus(key,
|
|
8843
|
+
}, _Origin_setOriginStatus = function _Origin_setOriginStatus(key, uploadId, parts) {
|
|
8312
8844
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8313
8845
|
try {
|
|
8314
|
-
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
8846
|
+
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/update-status`, {
|
|
8315
8847
|
method: "PATCH",
|
|
8316
8848
|
body: JSON.stringify({
|
|
8317
|
-
status,
|
|
8318
8849
|
fileKey: key,
|
|
8850
|
+
uploadId,
|
|
8851
|
+
parts,
|
|
8319
8852
|
}),
|
|
8320
8853
|
headers: {
|
|
8321
8854
|
Authorization: `Bearer ${this.jwt}`,
|
|
@@ -8339,7 +8872,7 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
|
|
|
8339
8872
|
if (!image)
|
|
8340
8873
|
return null;
|
|
8341
8874
|
try {
|
|
8342
|
-
const presignedResponse = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
8875
|
+
const presignedResponse = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url-ipfs`, {
|
|
8343
8876
|
method: "POST",
|
|
8344
8877
|
headers: {
|
|
8345
8878
|
"Content-Type": "application/json",
|
|
@@ -8388,8 +8921,11 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
|
|
|
8388
8921
|
}, _Origin_uploadFile = function _Origin_uploadFile(file, options) {
|
|
8389
8922
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8390
8923
|
let uploadInfo;
|
|
8924
|
+
let chunks;
|
|
8925
|
+
const CHUNK_SIZE = 10 * 1024 * 1024;
|
|
8391
8926
|
try {
|
|
8392
|
-
|
|
8927
|
+
chunks = splitFileIntoChunks(file, CHUNK_SIZE);
|
|
8928
|
+
uploadInfo = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_generateURL).call(this, file, chunks.length);
|
|
8393
8929
|
}
|
|
8394
8930
|
catch (error) {
|
|
8395
8931
|
console.error("Failed to generate upload URL:", error);
|
|
@@ -8398,12 +8934,13 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
|
|
|
8398
8934
|
if (!uploadInfo) {
|
|
8399
8935
|
throw new Error("Failed to generate upload URL: No upload info returned");
|
|
8400
8936
|
}
|
|
8937
|
+
let uploadResult;
|
|
8401
8938
|
try {
|
|
8402
|
-
yield uploadWithProgress(
|
|
8939
|
+
uploadResult = yield uploadWithProgress(chunks, uploadInfo.urls, (options === null || options === void 0 ? void 0 : options.progressCallback) || (() => { }));
|
|
8403
8940
|
}
|
|
8404
8941
|
catch (error) {
|
|
8405
8942
|
try {
|
|
8406
|
-
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key,
|
|
8943
|
+
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, uploadInfo.uploadId, uploadResult || []);
|
|
8407
8944
|
}
|
|
8408
8945
|
catch (statusError) {
|
|
8409
8946
|
console.error("Failed to update status to failed:", statusError);
|
|
@@ -8412,7 +8949,7 @@ _Origin_instances = new WeakSet(), _Origin_generateURL = function _Origin_genera
|
|
|
8412
8949
|
throw new Error(`Failed to upload file: ${errorMessage}`);
|
|
8413
8950
|
}
|
|
8414
8951
|
try {
|
|
8415
|
-
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key,
|
|
8952
|
+
yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_setOriginStatus).call(this, uploadInfo.key, uploadInfo.uploadId, uploadResult);
|
|
8416
8953
|
}
|
|
8417
8954
|
catch (statusError) {
|
|
8418
8955
|
console.error("Failed to update status to success:", statusError);
|
|
@@ -8676,7 +9213,7 @@ class Auth {
|
|
|
8676
9213
|
* @param {StorageAdapter} [options.storage] Custom storage adapter. Defaults to localStorage in browser, memory storage in Node.js.
|
|
8677
9214
|
* @throws {APIError} - Throws an error if the clientId is not provided.
|
|
8678
9215
|
*/
|
|
8679
|
-
constructor({ clientId, redirectUri, environment = "DEVELOPMENT", baseParentId, storage, }) {
|
|
9216
|
+
constructor({ clientId, appId, redirectUri, environment = "DEVELOPMENT", baseParentId, storage, }) {
|
|
8680
9217
|
_Auth_instances.add(this);
|
|
8681
9218
|
_Auth_triggers.set(this, void 0);
|
|
8682
9219
|
_Auth_isNodeEnvironment.set(this, void 0);
|
|
@@ -8685,6 +9222,9 @@ class Auth {
|
|
|
8685
9222
|
if (!clientId) {
|
|
8686
9223
|
throw new ValidationError("clientId is required");
|
|
8687
9224
|
}
|
|
9225
|
+
if (!appId) {
|
|
9226
|
+
throw new ValidationError("appId is required");
|
|
9227
|
+
}
|
|
8688
9228
|
if (["PRODUCTION", "DEVELOPMENT"].indexOf(environment) === -1) {
|
|
8689
9229
|
throw new ValidationError(`Invalid environment "${environment}". Must be "DEVELOPMENT" or "PRODUCTION"`);
|
|
8690
9230
|
}
|
|
@@ -8693,9 +9233,12 @@ class Auth {
|
|
|
8693
9233
|
(__classPrivateFieldGet(this, _Auth_isNodeEnvironment, "f") ? new MemoryStorage() : new BrowserStorage()), "f");
|
|
8694
9234
|
this.viem = null;
|
|
8695
9235
|
this.environment = ENVIRONMENTS[environment];
|
|
9236
|
+
this.environment.AUTH_HUB_BASE_API +=
|
|
9237
|
+
environment === "PRODUCTION" ? "/auth-mainnet" : "";
|
|
8696
9238
|
this.baseParentId = baseParentId;
|
|
8697
9239
|
this.redirectUri = createRedirectUriObject(redirectUri);
|
|
8698
9240
|
this.clientId = clientId;
|
|
9241
|
+
this.appId = appId;
|
|
8699
9242
|
this.isAuthenticated = false;
|
|
8700
9243
|
this.jwt = null;
|
|
8701
9244
|
this.origin = null;
|
|
@@ -8924,7 +9467,7 @@ class Auth {
|
|
|
8924
9467
|
this.isAuthenticated = true;
|
|
8925
9468
|
this.userId = res.userId;
|
|
8926
9469
|
this.jwt = res.token;
|
|
8927
|
-
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.
|
|
9470
|
+
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
|
|
8928
9471
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:jwt", this.jwt);
|
|
8929
9472
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:wallet-address", this.walletAddress);
|
|
8930
9473
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:user-id", this.userId);
|
|
@@ -8988,7 +9531,7 @@ class Auth {
|
|
|
8988
9531
|
this.isAuthenticated = true;
|
|
8989
9532
|
this.userId = res.userId;
|
|
8990
9533
|
this.jwt = res.token;
|
|
8991
|
-
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.
|
|
9534
|
+
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
|
|
8992
9535
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:jwt", this.jwt);
|
|
8993
9536
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:wallet-address", this.walletAddress);
|
|
8994
9537
|
yield __classPrivateFieldGet(this, _Auth_storage, "f").setItem("camp-sdk:user-id", this.userId);
|
|
@@ -9030,7 +9573,7 @@ class Auth {
|
|
|
9030
9573
|
if (!this.isAuthenticated) {
|
|
9031
9574
|
throw new AuthenticationError("User must be authenticated to get linked social accounts");
|
|
9032
9575
|
}
|
|
9033
|
-
const connections = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
9576
|
+
const connections = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/connections-sdk`, {
|
|
9034
9577
|
method: "GET",
|
|
9035
9578
|
headers: {
|
|
9036
9579
|
Authorization: `Bearer ${this.jwt}`,
|
|
@@ -9384,7 +9927,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
|
|
|
9384
9927
|
this.walletAddress = walletAddress;
|
|
9385
9928
|
this.userId = userId;
|
|
9386
9929
|
this.jwt = jwt;
|
|
9387
|
-
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.
|
|
9930
|
+
this.origin = new Origin(this.environment, this.jwt, this.viem, this.baseParentId, this.appId);
|
|
9388
9931
|
this.isAuthenticated = true;
|
|
9389
9932
|
if (provider) {
|
|
9390
9933
|
this.setProvider({
|
|
@@ -9418,7 +9961,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
|
|
|
9418
9961
|
}, _Auth_fetchNonce = function _Auth_fetchNonce() {
|
|
9419
9962
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9420
9963
|
try {
|
|
9421
|
-
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
9964
|
+
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/nonce`, {
|
|
9422
9965
|
method: "POST",
|
|
9423
9966
|
headers: {
|
|
9424
9967
|
"Content-Type": "application/json",
|
|
@@ -9441,7 +9984,7 @@ _Auth_triggers = new WeakMap(), _Auth_isNodeEnvironment = new WeakMap(), _Auth_s
|
|
|
9441
9984
|
}, _Auth_verifySignature = function _Auth_verifySignature(message, signature) {
|
|
9442
9985
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9443
9986
|
try {
|
|
9444
|
-
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}
|
|
9987
|
+
const res = yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/verify`, {
|
|
9445
9988
|
method: "POST",
|
|
9446
9989
|
headers: {
|
|
9447
9990
|
"Content-Type": "application/json",
|
|
@@ -9536,6 +10079,7 @@ const UserProvider = ({ children }) => {
|
|
|
9536
10079
|
var _a, _b, _c;
|
|
9537
10080
|
const { authenticated } = useAuthState();
|
|
9538
10081
|
const { auth, environment } = useContext(CampContext);
|
|
10082
|
+
const apiUrl = getBaseApiUrl(environment);
|
|
9539
10083
|
if (!auth && typeof window !== "undefined") {
|
|
9540
10084
|
throw new Error("Auth instance is not available");
|
|
9541
10085
|
}
|
|
@@ -9544,7 +10088,7 @@ const UserProvider = ({ children }) => {
|
|
|
9544
10088
|
queryFn: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
9545
10089
|
if (!authenticated || !(auth === null || auth === void 0 ? void 0 : auth.jwt))
|
|
9546
10090
|
return null;
|
|
9547
|
-
const response = yield fetch(`${
|
|
10091
|
+
const response = yield fetch(`${apiUrl}/client-user/user`, {
|
|
9548
10092
|
method: "GET",
|
|
9549
10093
|
headers: {
|
|
9550
10094
|
Authorization: `Bearer ${auth.jwt}`,
|
|
@@ -9714,6 +10258,10 @@ const BinIcon = ({ w, h }) => (React.createElement("svg", { clipRule: "evenodd",
|
|
|
9714
10258
|
const CampIcon = ({ customStyles }) => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 571.95 611.12", height: "1rem", width: "1rem", fill: "currentColor", style: customStyles },
|
|
9715
10259
|
React.createElement("path", { d: "m563.25 431.49-66.17-51.46c-11.11-8.64-27.28-5.06-33.82 7.4-16.24 30.9-41.69 56.36-70.85 73.73l-69.35-69.35c-3.73-3.73-8.79-5.83-14.07-5.83s-10.34 2.1-14.07 5.83l-73.78 73.78c-57.37-30.39-96.55-90.71-96.55-160.03 0-99.79 81.19-180.98 180.98-180.98 60.35 0 118.17 26.28 156.39 89.44 6.85 11.32 21.92 14.33 32.59 6.51l64.21-47.06c9.53-6.98 12.06-20.15 5.78-30.16C508.83 54.41 411.43 0 305.56 0 137.07 0 0 137.07 0 305.56s137.07 305.56 305.56 305.56c57.6 0 113.72-16.13 162.31-46.63A306.573 306.573 0 0 0 568.8 460.8c5.78-9.78 3.42-22.34-5.55-29.31Zm-301.42 49.69 47.15-47.15 44.69 44.69c-15.92 5.1-32.2 7.83-48.1 7.83-15.08 0-29.72-1.87-43.74-5.36Zm42.36-222.47c-.07 1.49-.08 21.29 49.54 55.11 37.02 25.24 19.68 75.52 12.1 92.05a147.07 147.07 0 0 0-20.12-38.91c-12.73-17.59-26.87-28.9-36.74-35.59-10.38 6.36-27.41 18.74-41.07 40.02-8.27 12.89-12.82 25.16-15.42 34.48l-.03-.05c-15.1-40.6-9.75-60.88-1.95-71.9 6.12-8.65 17.24-20.6 17.24-20.6 9.71-9.66 19.96-19.06 29.82-38.17 6.06-11.75 6.59-15.84 6.63-16.45Z", fill: "#000", strokeWidth: "0" }),
|
|
9716
10260
|
React.createElement("path", { d: "M267.74 313.33s-11.11 11.95-17.24 20.6c-7.8 11.02-13.14 31.3 1.95 71.9-86.02-75.3 2.56-152.15.79-146.3-6.58 21.75 14.49 53.8 14.49 53.8Zm20.98-23.66c3.01-4.27 5.97-9.06 8.8-14.55 6.62-12.83 6.64-16.54 6.64-16.54s-2.09 20.02 49.53 55.21c37.02 25.24 19.68 75.52 12.1 92.05 0 0 43.69-27.86 37.49-74.92-7.45-56.61-38.08-51.5-60.84-93.43-21.23-39.11 15.03-70.44 15.03-70.44s-48.54-2.61-70.76 48.42c-23.42 53.77 2 74.21 2 74.21Z", fill: "#ff6d01", strokeWidth: "0" })));
|
|
10261
|
+
const USDCIcon = ({ customStyles }) => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", "data-name": "86977684-12db-4850-8f30-233a7c267d11", viewBox: "0 0 2000 2000", height: "1rem", width: "1rem", style: customStyles },
|
|
10262
|
+
React.createElement("path", { d: "M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z", fill: "#2775ca" }),
|
|
10263
|
+
React.createElement("path", { d: "M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z", fill: "#fff" }),
|
|
10264
|
+
React.createElement("path", { d: "M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zM1229.17 295.83c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z", fill: "#fff" })));
|
|
9717
10265
|
const DiscordIcon = () => (React.createElement("svg", { viewBox: "0 0 42 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
9718
10266
|
React.createElement("path", { d: "M41.1302 23.4469V24.2363C41.0328 24.2948 41.0717 24.3923 41.062 24.4702C41.0328 24.8991 40.9938 25.3279 40.9645 25.7568C40.9548 25.9322 40.8866 26.0589 40.7306 26.1661C37.7092 28.3396 34.4247 30.0062 30.8672 31.1173C30.6528 31.1856 30.5358 31.1563 30.3994 30.9711C29.6879 29.977 29.0446 28.9439 28.4696 27.862C28.3624 27.6573 28.4111 27.5989 28.6061 27.5209C29.532 27.17 30.4286 26.7509 31.2961 26.2733C31.8419 25.981 31.8224 25.9907 31.3546 25.5911C31.1109 25.3767 30.9062 25.3474 30.5943 25.4936C27.7971 26.7509 24.8634 27.4624 21.7933 27.5989C18.0507 27.7645 14.4542 27.092 11.0235 25.6008C10.5069 25.3767 10.1463 25.3669 9.75645 25.7763C9.59076 25.9517 9.54202 25.9907 9.77594 26.1271C10.7213 26.6534 11.6862 27.131 12.6999 27.5014C12.963 27.5989 12.963 27.6963 12.8461 27.9205C12.2905 28.9634 11.6667 29.9575 10.9942 30.9224C10.8383 31.1466 10.6921 31.1953 10.429 31.1173C6.91049 29.9965 3.65518 28.3591 0.663021 26.2051C0.497331 26.0784 0.419365 25.9615 0.409619 25.747C0.409619 25.4156 0.360879 25.094 0.341386 24.7626C0.156204 21.9752 0.292661 19.2072 0.789729 16.4489C1.66691 11.5952 3.61619 7.18007 6.33545 3.08656C6.43291 2.94037 6.54012 2.8429 6.69607 2.76493C9.25938 1.61485 11.9202 0.805904 14.6784 0.308836C14.8538 0.279597 14.961 0.308829 15.0488 0.484265C15.3217 1.04956 15.6141 1.6051 15.887 2.17039C15.9844 2.37507 16.0624 2.4628 16.3158 2.42381C19.2397 2.01446 22.1734 2.02421 25.0973 2.42381C25.2923 2.45305 25.3702 2.39457 25.4385 2.22889C25.7114 1.65385 26.0038 1.08854 26.2767 0.513503C26.3644 0.32832 26.4813 0.26985 26.686 0.308836C29.4248 0.805904 32.066 1.61486 34.6099 2.74545C34.7853 2.82342 34.912 2.94037 35.0192 3.10606C38.4305 8.18395 40.5454 13.7297 40.9938 19.8699C41.0133 20.1623 40.9548 20.4742 41.101 20.7666V21.4976C41.0035 21.634 41.0328 21.7997 41.0425 21.9459C41.0718 22.4527 40.9645 22.9693 41.101 23.4761L41.1302 23.4469ZM23.8108 17.063C23.8108 18.0961 24.035 18.9148 24.5223 19.6458C25.8868 21.7218 28.5963 21.9069 30.1655 20.0259C31.53 18.3885 31.4618 15.8349 29.9998 14.2755C28.7815 12.9792 26.8225 12.8038 25.419 13.8856C24.3371 14.7238 23.8595 15.8739 23.8206 17.063H23.8108ZM17.5731 17.3748C17.5731 16.6244 17.4756 16.0103 17.2027 15.4353C16.5595 14.1 15.5361 13.2424 14.0059 13.1936C12.4952 13.1449 11.4328 13.9246 10.7408 15.2111C9.88315 16.829 10.1366 18.7881 11.3549 20.1623C12.5829 21.5463 14.6102 21.7315 16.0526 20.5619C17.0955 19.714 17.5438 18.5737 17.5828 17.3748H17.5731Z", fill: "#5865F2" })));
|
|
9719
10267
|
const TwitterIcon = () => (React.createElement("svg", { viewBox: "0 0 33 27", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -9933,7 +10481,7 @@ const CampContext = createContext({
|
|
|
9933
10481
|
* @param {string} props.environment The environment to use ("DEVELOPMENT" or "PRODUCTION")
|
|
9934
10482
|
* @returns {JSX.Element} The CampProvider component
|
|
9935
10483
|
*/
|
|
9936
|
-
const CampProvider = ({ clientId, redirectUri, children, environment = "DEVELOPMENT", baseParentId, }) => {
|
|
10484
|
+
const CampProvider = ({ clientId, appId, redirectUri, children, environment = "DEVELOPMENT", baseParentId, }) => {
|
|
9937
10485
|
const isServer = typeof window === "undefined";
|
|
9938
10486
|
const normalizedBaseParentId = typeof baseParentId === "string" ? BigInt(baseParentId) : baseParentId;
|
|
9939
10487
|
const [auth, setAuth] = useState(!isServer
|
|
@@ -9946,6 +10494,7 @@ const CampProvider = ({ clientId, redirectUri, children, environment = "DEVELOPM
|
|
|
9946
10494
|
: "",
|
|
9947
10495
|
environment: environment,
|
|
9948
10496
|
baseParentId: normalizedBaseParentId,
|
|
10497
|
+
appId: appId,
|
|
9949
10498
|
})
|
|
9950
10499
|
: null);
|
|
9951
10500
|
const wagmiContext = typeof window !== "undefined" ? useContext(WagmiContext) : undefined;
|
|
@@ -9990,8 +10539,8 @@ const useWalletConnectProvider = (projectId, chain) => {
|
|
|
9990
10539
|
return walletConnectProvider;
|
|
9991
10540
|
};
|
|
9992
10541
|
|
|
9993
|
-
var css_248z = ".buttons-module_button__4Ogad{background-color:#ff6f00;border:none;border-radius:0;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-size:.875rem;font-weight:600;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;position:relative;text-transform:uppercase;width:100%}.buttons-module_button__4Ogad:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_button__4Ogad:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;text-transform:uppercase;transition:background-color .15s;width:13rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;border:1px solid #ddd;display:flex;gap:.5rem;justify-content:flex-start;padding:.5rem;position:relative;transition:border-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #ff6f00;outline-offset:2px}.buttons-module_provider-button__6JY7s:hover{border-color:#ff6f00}.buttons-module_provider-button__6JY7s:hover:not(:disabled){cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-family:Geist Mono,monospace;font-size:.7rem;text-transform:uppercase}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;overflow-y:auto;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;padding:0 .5rem 0 0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;margin-bottom:.75rem;margin-top:1rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_remove-file-button__Q1FMa:disabled{background-color:#b8b8b8;border-color:#b8b8b8;color:#fff;cursor:not-allowed}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_upload-file-button__vTwWd:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_file-preview__yuM5i{max-height:8rem;max-width:100%}audio.buttons-module_file-preview__yuM5i{min-height:4rem}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;margin-top:8px;min-height:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;min-height:100%;transition:width .3s ease}.buttons-module_date-picker__V6gRM{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_date-picker__V6gRM input{border:1px solid #ccc;border-radius:4px;font-size:14px;padding:6px 10px}.buttons-module_percentage-slider__M84tC{display:flex;flex-direction:row;font-family:sans-serif;gap:8px;justify-content:space-between;width:100%}.buttons-module_percentage-slider__M84tC input[type=range]{width:100%}.buttons-module_percentage-slider__M84tC label{min-width:50px}.buttons-module_fancy-input-container__s-zVw{align-items:center;border:1px solid #ccc;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;position:relative;width:100%}.buttons-module_fancy-input-container__s-zVw textarea.buttons-module_fancy-input__RpSOF{background:transparent;border:none;box-sizing:border-box;color:#222;font-family:inherit;font-size:1rem;line-height:1.4;max-height:12rem;outline:none;overflow-y:auto;padding:10px;resize:none;width:100%}.buttons-module_fancy-input__RpSOF{background:transparent;border:none;flex:1;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_fancy-input-label__d-sG7{align-self:flex-start;color:#777;font-family:Geist Mono,monospace;font-size:.8rem;font-weight:500;margin-top:.25rem;padding:0 .25rem;pointer-events:none;text-transform:uppercase}.buttons-module_input-divider__RVasJ{background-color:#ccc;height:24px;margin:0;min-width:1px}.buttons-module_input-icon-container__MUYKL{align-items:center;background-color:#f8f9fa;display:flex;justify-content:center;min-width:40px;padding:6px 10px}.buttons-module_input-icon-container__MUYKL svg{height:16px;width:16px}.buttons-module_duration-input-container__Rh9Na{align-items:stretch;border:1px solid #ccc;box-sizing:border-box;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;width:100%}.buttons-module_duration-input__-gt3p{background:transparent;flex:1;min-width:0}.buttons-module_duration-input__-gt3p,.buttons-module_duration-unit-select__VKFf6{border:none;box-sizing:border-box;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_duration-unit-select__VKFf6{background-color:#f8f9fa;border-left:1px solid #ccc;cursor:pointer;flex:0 0 auto;width:auto}.buttons-module_price-input-container__teIRS:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:hover,.buttons-module_price-input-container__teIRS:hover{border-color:#999}.buttons-module_duration-unit-select__VKFf6:focus,.buttons-module_duration-unit-select__VKFf6:hover{background-color:#e9ecef}.buttons-module_preview-option-container__0bzt-{align-items:center;display:flex;margin-top:.5rem;width:100%}.buttons-module_checkbox-label__ODwgG{align-items:center;color:#333;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.buttons-module_checkbox-input__FvUIp{accent-color:#ff6f00;cursor:pointer;height:1.125rem;width:1.125rem}.buttons-module_checkbox-label__ODwgG span{line-height:1.2}.buttons-module_preview-image-section__BjtiC{margin-top:.5rem}.buttons-module_preview-image-controls__l6gv5,.buttons-module_preview-image-section__BjtiC{display:flex;flex-direction:column;gap:.5rem;width:100%}.buttons-module_select-preview-button__0HQfm{background-color:#f8f9fa;border:1px solid #ccc;color:#333;cursor:pointer;font-family:Geist Mono,monospace;font-size:.875rem;padding:.75rem;text-transform:uppercase;transition:all .2s;width:100%}.buttons-module_select-preview-button__0HQfm:hover:not(:disabled){background-color:#e9ecef;border-color:#999}.buttons-module_select-preview-button__0HQfm:disabled{background-color:#e9ecef;color:#999;cursor:not-allowed;opacity:.6}.buttons-module_preview-image-preview__c-6n5{align-items:center;background-color:#f8f9fa;border:1px solid #ccc;display:flex;gap:.75rem;padding:.75rem}.buttons-module_preview-thumbnail__fJWXt{flex-shrink:0;height:3rem;-o-object-fit:cover;object-fit:cover;width:3rem}.buttons-module_preview-filename__FW-Gz{color:#333;flex:1;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_remove-preview-button__Skqgb{align-items:center;background-color:transparent;border:1px solid #ff6f00;color:#ff6f00;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:.5rem;transition:all .2s}.buttons-module_remove-preview-button__Skqgb:hover:not(:disabled){background-color:#cc4e02;border-color:#cc4e02;color:#fff}.buttons-module_remove-preview-button__Skqgb:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;opacity:.6}.buttons-module_percentage-icon__MxmJh{color:#555;font-size:.875rem;font-weight:600}\n/*# sourceMappingURL=data:application/json;base64,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QVBuQiw0QkFBNkIsQ0FDN0Isd0JBQXlCLENBQ3pCLGFBQWMsQ0FDZCxjQUFlLENBR2YsWUFBYSxDQURiLGFBQWMsQ0FHZCxzQkFBdUIsQ0FUdkIsYUFBZSxDQUtmLGtCQUtGLENBRUEsa0VBQ0Usd0JBQXlCLENBQ3pCLG9CQUFxQixDQUNyQixVQUNGLENBRUEsc0RBQ0UsaUJBQWtCLENBQ2xCLFVBQVcsQ0FDWCxrQkFBbUIsQ0FDbkIsVUFDRixDQUVBLHVDQUdFLFVBQVcsQ0FGWCxpQkFBbUIsQ0FDbkIsZUFFRiIsImZpbGUiOiJidXR0b25zLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMXJlbTtcbiAgcGFkZGluZy1ibG9jazogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG5cbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY29ubmVjdC1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAqL1xuICBwYWRkaW5nLWlubGluZTogMi41cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDVyZW07XG4gIGhlaWdodDogMi43NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMzMzcmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHdpZHRoOiAxM3JlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XG59XG5cbi5jb25uZWN0LWJ1dHRvbiAuYnV0dG9uLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiAzcmVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpO1xuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbSAwIDAgMC43NXJlbTsgKi9cbn1cblxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiBzdmcge1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xufVxuXG4uY29ubmVjdC1idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbn1cblxuLmNvbm5lY3QtYnV0dG9uOmhvdmVyIC5idXR0b24taWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NzUpO1xufVxuXG4uY29ubmVjdC1idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4uY29ubmVjdC1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgKi9cbiAgLyogYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTsgKi9cbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBnYXA6IDAuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cztcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBzb2xpZCAjZmY2ZjAwO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyAqL1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgLyogYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgKi9cbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIGltZyB7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gLnByb3ZpZGVyLWljb24ge1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3BhbiB7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ucHJvdmlkZXItbmFtZSB7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ucHJvdmlkZXItbGFiZWwge1xuICBjb2xvcjogIzc3NztcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vKiBcImRlZmF1bHRcIiB2YXJpYW50ICovXG4ubGluay1idXR0b24tZGVmYXVsdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiBub25lO1xuICB3aWR0aDogN3JlbTtcbiAgaGVpZ2h0OiAyLjZyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQ6OmFmdGVyIHtcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yLjdyZW07XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDJyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXM7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkOmhvdmVyOjphZnRlciB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCk6aG92ZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTQ7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLmRpc2NvcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50aWt0b2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg4Y2M7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0IC5idXR0b24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiAwLjVyZW07XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwLjVyZW07XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uYnV0dG9uLWNvbnRhaW5lciAuc29jaWFsLWljb24gc3ZnIHtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiBzdmcgcGF0aCB7XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5saW5rLWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcGFkZGluZzogMC4xNXJlbTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQgLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyBzdmcgcGF0aCB7XG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcbn1cblxuLyogXCJpY29uXCIgdmFyaWFudCAqL1xuLmxpbmstYnV0dG9uLWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogM3JlbTtcbiAgbWluLWhlaWdodDogM3JlbTtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAqL1xuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldCwgcmdiYSg0NiwgNTQsIDgwLCAwLjA3NSkgMCAxcHggMXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4YjhiODtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQ6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMi43cmVtO1xuICBsZWZ0OiAtMXJlbTtcbiAgcmlnaHQ6IC0xcmVtO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICBib3JkZXItcmFkaXVzOiAwLjM1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xuICBjb2xvcjogd2hpdGU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgcGFkZGluZzogMC4yNXJlbTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSk7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkOmhvdmVyOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudHdpdHRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGExZjI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpLnNwb3RpZnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTU0O1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS5kaXNjb3JkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcyODlkYTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudGlrdG9rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudGVsZWdyYW0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4OGNjO1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IDE7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcge1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmxpbmstYnV0dG9uLWljb24gLmljb24tY29udGFpbmVyID4gc3ZnIHBhdGgge1xuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4ubGluay1idXR0b24taWNvbiAuY2FtcC1sb2dvIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgcmlnaHQ6IC0wLjVyZW07XG4gIGJvdHRvbTogLTAuNXJlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28gc3ZnIHtcbiAgd2lkdGg6IDEuMXJlbTtcbiAgaGVpZ2h0OiAxLjFyZW07XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIC5jYW1wLWxvZ28gc3ZnIHBhdGgge1xuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XG59XG5cbi5ub3QtbGlua2VkIHN2ZyBwYXRoIHtcbiAgZmlsbDogI2I4YjhiOCAhaW1wb3J0YW50O1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAycHggZGFzaGVkICNjY2M7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIHBhZGRpbmc6IDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICM3Nzc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzLCBib3JkZXItY29sb3IgMC4ycztcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMnJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLyogaGVpZ2h0OiAzMDBweDsgKi9cbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogI2UyZTJlMjtcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5kcmFnZ2luZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5kcmFnZ2luZyAuZmlsZS1wcmV2aWV3IHtcbiAgb3BhY2l0eTogMC4yO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG59XG5cbi5maWxlLXVwbG9hZC1jb250YWluZXIuZmlsZS1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAvKiBoZWlnaHQ6IGF1dG87ICovXG4gIC8qIG1pbi1oZWlnaHQ6IGF1dG87ICovXG59XG5cbi5maWxlLWlucHV0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnNlbGVjdGVkLWZpbGUtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiAwLjI1cmVtO1xufVxuXG4ucmVtb3ZlLWZpbGUtYnV0dG9uIHtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmY2ZjAwO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjVyZW07ICovXG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgY29sb3I6ICNmZjZmMDA7XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucmVtb3ZlLWZpbGUtYnV0dG9uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4YjhiODtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgYm9yZGVyLWNvbG9yOiAjYjhiOGI4O1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi51cGxvYWQtZmlsZS1idXR0b24ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnVwbG9hZC1maWxlLWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi51cGxvYWQtZmlsZS1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uZmlsZS1wcmV2aWV3IHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiA4cmVtO1xufVxuYXVkaW8uZmlsZS1wcmV2aWV3IHtcbiAgbWluLWhlaWdodDogNHJlbTtcbn1cblxuLmZpbGUtcHJldmlldy10ZXh0IHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmZpbGUtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjMzMzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgbWluLWhlaWdodDogZml0LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnVwbG9hZC1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjI1cmVtO1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMgLnVwbG9hZC1maWxlLWJ1dHRvbiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLnVwbG9hZC1idXR0b25zIC5yZW1vdmUtZmlsZS1idXR0b24ge1xuICBmbGV4LWdyb3c6IDA7XG59XG5cbi5hY2NlcHRlZC10eXBlcyB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNzc3O1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmxvYWRpbmctYmFyLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi10b3A6IDhweDtcbn1cblxuLmxvYWRpbmctYmFyIHtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xufVxuXG4uZGF0ZS1waWNrZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA2cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4uZGF0ZS1waWNrZXIgaW5wdXQge1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5wZXJjZW50YWdlLXNsaWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDhweDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnBlcmNlbnRhZ2Utc2xpZGVyIGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucGVyY2VudGFnZS1zbGlkZXIgbGFiZWwge1xuICBtaW4td2lkdGg6IDUwcHg7XG59XG5cbi5mYW5jeS1pbnB1dC1jb250YWluZXIge1xuICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGdhcDogMDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5mYW5jeS1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEuZmFuY3ktaW5wdXQge1xuICByZXNpemU6IG5vbmU7XG4gIG1heC1oZWlnaHQ6IDEycmVtO1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICMyMjI7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5mYW5jeS1pbnB1dCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmbGV4OiAxO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLmZhbmN5LWlucHV0LWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGNvbG9yOiAjNzc3O1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwIDAuMjVyZW07XG4gIC8qIHotaW5kZXg6IDI7ICovXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbn1cblxuLmlucHV0LWRpdmlkZXIge1xuICBtaW4td2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICBtYXJnaW46IDA7XG59XG5cbi5pbnB1dC1pY29uLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgbWluLXdpZHRoOiA0MHB4O1xufVxuXG4uaW5wdXQtaWNvbi1jb250YWluZXIgc3ZnIHtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbn1cblxuLmR1cmF0aW9uLWlucHV0LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBnYXA6IDA7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAvKiBib3JkZXItcmFkaXVzOiA0cHg7ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5kdXJhdGlvbi1pbnB1dCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmbGV4OiAxO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Qge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnByaWNlLWlucHV0LWNvbnRhaW5lcjpmb2N1cy13aXRoaW4ge1xuICBib3JkZXItY29sb3I6ICNmZjZmMDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmY2ZjAwO1xufVxuXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZjZmMDA7XG59XG5cbi5wcmljZS1pbnB1dC1jb250YWluZXI6aG92ZXIsXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Q6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4uZHVyYXRpb24tdW5pdC1zZWxlY3Q6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4ucHJldmlldy1vcHRpb24tY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmNoZWNrYm94LWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uY2hlY2tib3gtaW5wdXQge1xuICB3aWR0aDogMS4xMjVyZW07XG4gIGhlaWdodDogMS4xMjVyZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYWNjZW50LWNvbG9yOiAjZmY2ZjAwO1xufVxuXG4uY2hlY2tib3gtbGFiZWwgc3BhbiB7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5wcmV2aWV3LWltYWdlLXNlY3Rpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLnByZXZpZXctaW1hZ2UtY29udHJvbHMge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b24ge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgY29sb3I6ICMzMzM7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uc2VsZWN0LXByZXZpZXctYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgYm9yZGVyLWNvbG9yOiAjOTk5O1xufVxuXG4uc2VsZWN0LXByZXZpZXctYnV0dG9uOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgY29sb3I6ICM5OTk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLnByZXZpZXctaW1hZ2UtcHJldmlldyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC43NXJlbTtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbn1cblxuLnByZXZpZXctdGh1bWJuYWlsIHtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucHJldmlldy1maWxlbmFtZSB7XG4gIGZsZXg6IDE7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjMzMzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZjZmMDA7XG4gIGNvbG9yOiAjZmY2ZjAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5yZW1vdmUtcHJldmlldy1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJvcmRlci1jb2xvcjogI2NjYztcbiAgY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLnBlcmNlbnRhZ2UtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjNTU1O1xufVxuIl19 */";
|
|
9994
|
-
var buttonStyles = {"button":"buttons-module_button__4Ogad","connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1","date-picker":"buttons-module_date-picker__V6gRM","percentage-slider":"buttons-module_percentage-slider__M84tC","fancy-input-container":"buttons-module_fancy-input-container__s-zVw","fancy-input":"buttons-module_fancy-input__RpSOF","fancy-input-label":"buttons-module_fancy-input-label__d-sG7","input-divider":"buttons-module_input-divider__RVasJ","input-icon-container":"buttons-module_input-icon-container__MUYKL","duration-input-container":"buttons-module_duration-input-container__Rh9Na","duration-input":"buttons-module_duration-input__-gt3p","duration-unit-select":"buttons-module_duration-unit-select__VKFf6","price-input-container":"buttons-module_price-input-container__teIRS","preview-option-container":"buttons-module_preview-option-container__0bzt-","checkbox-label":"buttons-module_checkbox-label__ODwgG","checkbox-input":"buttons-module_checkbox-input__FvUIp","preview-image-section":"buttons-module_preview-image-section__BjtiC","preview-image-controls":"buttons-module_preview-image-controls__l6gv5","select-preview-button":"buttons-module_select-preview-button__0HQfm","preview-image-preview":"buttons-module_preview-image-preview__c-6n5","preview-thumbnail":"buttons-module_preview-thumbnail__fJWXt","preview-filename":"buttons-module_preview-filename__FW-Gz","remove-preview-button":"buttons-module_remove-preview-button__Skqgb","percentage-icon":"buttons-module_percentage-icon__MxmJh"};
|
|
10542
|
+
var css_248z = ".buttons-module_button__4Ogad{background-color:#ff6f00;border:none;border-radius:0;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-size:.875rem;font-weight:600;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;position:relative;text-transform:uppercase;width:100%}.buttons-module_button__4Ogad:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_button__4Ogad:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Geist Mono,monospace;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;text-transform:uppercase;transition:background-color .15s;width:13rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;border:1px solid #ddd;display:flex;gap:.5rem;justify-content:flex-start;padding:.5rem;position:relative;transition:border-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #ff6f00;outline-offset:2px}.buttons-module_provider-button__6JY7s:hover{border-color:#ff6f00}.buttons-module_provider-button__6JY7s:hover:not(:disabled){cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-family:Geist Mono,monospace;font-size:.7rem;text-transform:uppercase}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;overflow-y:auto;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;padding:0 .5rem 0 0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;margin-bottom:.75rem;margin-top:1rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_remove-file-button__Q1FMa:disabled{background-color:#b8b8b8;border-color:#b8b8b8;color:#fff;cursor:not-allowed}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_upload-file-button__vTwWd:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_file-preview__yuM5i{max-height:8rem;max-width:100%}audio.buttons-module_file-preview__yuM5i{min-height:4rem}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;margin-top:8px;min-height:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;min-height:100%;transition:width .3s ease}.buttons-module_date-picker__V6gRM{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_date-picker__V6gRM input{border:1px solid #ccc;border-radius:4px;font-size:14px;padding:6px 10px}.buttons-module_percentage-slider__M84tC{display:flex;flex-direction:row;font-family:sans-serif;gap:8px;justify-content:space-between;width:100%}.buttons-module_percentage-slider__M84tC input[type=range]{width:100%}.buttons-module_percentage-slider__M84tC label{min-width:50px}.buttons-module_fancy-input-container__s-zVw{align-items:center;border:1px solid #ccc;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;position:relative;width:100%}.buttons-module_fancy-input-container__s-zVw textarea.buttons-module_fancy-input__RpSOF{background:transparent;border:none;box-sizing:border-box;color:#222;font-family:inherit;font-size:1rem;line-height:1.4;max-height:12rem;outline:none;overflow-y:auto;padding:10px;resize:none;width:100%}.buttons-module_fancy-input__RpSOF{background:transparent;border:none;flex:1;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_fancy-input-label__d-sG7{align-self:flex-start;color:#777;font-family:Geist Mono,monospace;font-size:.8rem;font-weight:500;margin-top:.25rem;padding:0 .25rem;pointer-events:none;text-transform:uppercase}.buttons-module_input-divider__RVasJ{background-color:#ccc;height:24px;margin:0;min-width:1px}.buttons-module_input-icon-container__MUYKL{align-items:center;background-color:#f8f9fa;display:flex;justify-content:center;min-width:40px;padding:6px 10px}.buttons-module_input-icon-container__MUYKL svg{height:16px;width:16px}.buttons-module_duration-input-container__Rh9Na{align-items:stretch;border:1px solid #ccc;box-sizing:border-box;display:flex;font-family:sans-serif;gap:0;min-height:2.5rem;overflow:hidden;width:100%}.buttons-module_duration-input__-gt3p{background:transparent;flex:1;min-width:0}.buttons-module_duration-input__-gt3p,.buttons-module_duration-unit-select__VKFf6{border:none;box-sizing:border-box;font-family:sans-serif;outline:none;padding:6px 10px}.buttons-module_duration-unit-select__VKFf6{background-color:#f8f9fa;border-left:1px solid #ccc;cursor:pointer;flex:0 0 auto;width:auto}.buttons-module_price-input-container__teIRS:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:focus-within{border-color:#ff6f00;box-shadow:0 0 0 1px #ff6f00}.buttons-module_duration-input-container__Rh9Na:hover,.buttons-module_price-input-container__teIRS:hover{border-color:#999}.buttons-module_duration-unit-select__VKFf6:focus,.buttons-module_duration-unit-select__VKFf6:hover{background-color:#e9ecef}.buttons-module_license-type-select__XHtlm{background-color:#f8f9fa;border:none;box-sizing:border-box;cursor:pointer;font-family:sans-serif;min-height:2.5rem;outline:none;padding:6px 10px;width:100%}.buttons-module_license-type-select__XHtlm:focus,.buttons-module_license-type-select__XHtlm:hover{background-color:#e9ecef}.buttons-module_preview-option-container__0bzt-{align-items:center;display:flex;margin-top:.5rem;width:100%}.buttons-module_checkbox-label__ODwgG{align-items:center;color:#333;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.buttons-module_checkbox-input__FvUIp{accent-color:#ff6f00;cursor:pointer;height:1.125rem;width:1.125rem}.buttons-module_checkbox-label__ODwgG span{line-height:1.2}.buttons-module_preview-image-section__BjtiC{margin-top:.5rem}.buttons-module_preview-image-controls__l6gv5,.buttons-module_preview-image-section__BjtiC{display:flex;flex-direction:column;gap:.5rem;width:100%}.buttons-module_select-preview-button__0HQfm{background-color:#f8f9fa;border:1px solid #ccc;color:#333;cursor:pointer;font-family:Geist Mono,monospace;font-size:.875rem;padding:.75rem;text-transform:uppercase;transition:all .2s;width:100%}.buttons-module_select-preview-button__0HQfm:hover:not(:disabled){background-color:#e9ecef;border-color:#999}.buttons-module_select-preview-button__0HQfm:disabled{background-color:#e9ecef;color:#999;cursor:not-allowed;opacity:.6}.buttons-module_preview-image-preview__c-6n5{align-items:center;background-color:#f8f9fa;border:1px solid #ccc;display:flex;gap:.75rem;padding:.75rem}.buttons-module_preview-thumbnail__fJWXt{flex-shrink:0;height:3rem;-o-object-fit:cover;object-fit:cover;width:3rem}.buttons-module_preview-filename__FW-Gz{color:#333;flex:1;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_remove-preview-button__Skqgb{align-items:center;background-color:transparent;border:1px solid #ff6f00;color:#ff6f00;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:.5rem;transition:all .2s}.buttons-module_remove-preview-button__Skqgb:hover:not(:disabled){background-color:#cc4e02;border-color:#cc4e02;color:#fff}.buttons-module_remove-preview-button__Skqgb:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;opacity:.6}.buttons-module_percentage-icon__MxmJh{color:#555;font-size:.875rem;font-weight:600}\n/*# sourceMappingURL=data:application/json;base64,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Q1osbUJBQWlCLENBQWpCLGdCQUFpQixDQUZqQixVQUlGLENBRUEsd0NBR0UsVUFBVyxDQUZYLE1BQU8sQ0FDUCxpQkFBbUIsQ0FFbkIsZUFBZ0IsQ0FDaEIsc0JBQXVCLENBQ3ZCLGtCQUNGLENBRUEsNkNBU0Usa0JBQW1CLENBUG5CLDRCQUE2QixDQUM3Qix3QkFBeUIsQ0FDekIsYUFBYyxDQUNkLGNBQWUsQ0FHZixZQUFhLENBRGIsYUFBYyxDQUdkLHNCQUF1QixDQVR2QixhQUFlLENBS2Ysa0JBS0YsQ0FFQSxrRUFDRSx3QkFBeUIsQ0FDekIsb0JBQXFCLENBQ3JCLFVBQ0YsQ0FFQSxzREFDRSxpQkFBa0IsQ0FDbEIsVUFBVyxDQUNYLGtCQUFtQixDQUNuQixVQUNGLENBRUEsdUNBR0UsVUFBVyxDQUZYLGlCQUFtQixDQUNuQixlQUVGIiwiZmlsZSI6ImJ1dHRvbnMubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBwYWRkaW5nOiAxcmVtO1xuICBwYWRkaW5nLWJsb2NrOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcblxuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5jb25uZWN0LWJ1dHRvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIHBhZGRpbmctaW5saW5lOiAyLjVyZW07XG4gIHBhZGRpbmctbGVmdDogNXJlbTtcbiAgaGVpZ2h0OiAyLjc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4zMzNyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgd2lkdGg6IDEzcmVtO1xuICBmb250LWZhbWlseTogXCJHZWlzdCBNb25vXCIsIG1vbm9zcGFjZTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0O1xuICBkaXNwbGF5OiBncmlkO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xuICAvKiBib3JkZXItcmFkaXVzOiAwLjc1cmVtIDAgMCAwLjc1cmVtOyAqL1xufVxuXG4uY29ubmVjdC1idXR0b24gLmJ1dHRvbi1pY29uIHN2ZyB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyLWNvbG9yOiAjY2M0ZTAyO1xufVxuXG4uY29ubmVjdC1idXR0b246aG92ZXIgLmJ1dHRvbi1pY29uIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY3NSk7XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi5jb25uZWN0LWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5wcm92aWRlci1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgLyogYm9yZGVyLXJhZGl1czogMC41cmVtOyAqL1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOyAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGdhcDogMC41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzO1xufVxuXG4ucHJvdmlkZXItYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogMXB4IHNvbGlkICNmZjZmMDA7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5wcm92aWRlci1idXR0b246aG92ZXIge1xuICBib3JkZXItY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJhY2tncm91bmQtY29sb3I6ICNlZWU7ICovXG59XG5cbi5wcm92aWRlci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOyAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wcm92aWRlci1idXR0b24gaW1nIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbiAucHJvdmlkZXItaWNvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLnByb3ZpZGVyLWJ1dHRvbiBzcGFuIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDFyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1uYW1lIHtcbiAgY29sb3I6ICMzMzM7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1sYWJlbCB7XG4gIGNvbG9yOiAjNzc3O1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qIFwiZGVmYXVsdFwiIHZhcmlhbnQgKi9cbi5saW5rLWJ1dHRvbi1kZWZhdWx0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiA3cmVtO1xuICBoZWlnaHQ6IDIuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbTsgKi9cbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGI4Yjg7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIk5vdCBjb25uZWN0ZWRcIjtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTIuN3JlbTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogMnJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4zNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcbiAgY29sb3I6IHdoaXRlO1xuICBkaXNwbGF5OiBncmlkO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuMjVyZW07XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjI1cztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjVyZW0pO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKTpob3Zlcjo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnR3aXR0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS5zcG90aWZ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1NDtcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuZGlzY29yZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3Mjg5ZGE7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnRpa3RvayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG59XG5cbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnRlbGVncmFtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODhjYztcbn1cblxuLmxpbmstYnV0dG9uLWRlZmF1bHQgLmJ1dHRvbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDAuNXJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiBzdmcge1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHN2ZyBwYXRoIHtcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmJ1dHRvbi1jb250YWluZXIgLmxpbmstaWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xufVxuXG4uYnV0dG9uLWNvbnRhaW5lciAuY2FtcC1sb2dvIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBwYWRkaW5nOiAwLjE1cmVtO1xufVxuXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZCAuYnV0dG9uLWNvbnRhaW5lciAuY2FtcC1sb2dvIHN2ZyBwYXRoIHtcbiAgZmlsbDogI2I4YjhiOCAhaW1wb3J0YW50O1xufVxuXG4vKiBcImljb25cIiB2YXJpYW50ICovXG4ubGluay1idXR0b24taWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLXdpZHRoOiAzcmVtO1xuICBtaW4taGVpZ2h0OiAzcmVtO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDByZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubGluay1idXR0b24taWNvbjpkaXNhYmxlZDo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb250ZW50OiBcIk5vdCBjb25uZWN0ZWRcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yLjdyZW07XG4gIGxlZnQ6IC0xcmVtO1xuICByaWdodDogLTFyZW07XG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXM7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4ubGluay1idXR0b24taWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcbn1cblxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTQ7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpLmRpc2NvcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50aWt0b2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDg4Y2M7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5pY29uLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogMTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5pY29uLWNvbnRhaW5lciA+IHN2ZyB7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcgcGF0aCB7XG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxLjVyZW07XG4gIGhlaWdodDogMS41cmVtO1xuICByaWdodDogLTAuNXJlbTtcbiAgYm90dG9tOiAtMC41cmVtO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLmxpbmstYnV0dG9uLWljb24gLmNhbXAtbG9nbyBzdmcge1xuICB3aWR0aDogMS4xcmVtO1xuICBoZWlnaHQ6IDEuMXJlbTtcbn1cblxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQgLmNhbXAtbG9nbyBzdmcgcGF0aCB7XG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcbn1cblxuLm5vdC1saW5rZWQgc3ZnIHBhdGgge1xuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XG59XG5cbi5maWxlLXVwbG9hZC1jb250YWluZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IDJweCBkYXNoZWQgI2NjYztcbiAgLyogYm9yZGVyLXJhZGl1czogMC43NXJlbTsgKi9cbiAgcGFkZGluZzogMXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzc3NztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGJvcmRlci1jb2xvciAwLjJzO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEycmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAvKiBoZWlnaHQ6IDMwMHB4OyAqL1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyO1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xufVxuXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIC5maWxlLXByZXZpZXcge1xuICBvcGFjaXR5OiAwLjI7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbn1cblxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5maWxlLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIC8qIGhlaWdodDogYXV0bzsgKi9cbiAgLyogbWluLWhlaWdodDogYXV0bzsgKi9cbn1cblxuLmZpbGUtaW5wdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uc2VsZWN0ZWQtZmlsZS1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBnYXA6IDAuMjVyZW07XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b24ge1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZjZmMDA7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgKi9cbiAgcGFkZGluZzogMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBjb2xvcjogI2ZmNmYwMDtcbn1cblxuLnJlbW92ZS1maWxlLWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5yZW1vdmUtZmlsZS1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBib3JkZXItY29sb3I6ICNiOGI4Yjg7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnVwbG9hZC1maWxlLWJ1dHRvbiB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4udXBsb2FkLWZpbGUtYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnVwbG9hZC1maWxlLWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGI4Yjg7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5maWxlLXByZXZpZXcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDhyZW07XG59XG5hdWRpby5maWxlLXByZXZpZXcge1xuICBtaW4taGVpZ2h0OiA0cmVtO1xufVxuXG4uZmlsZS1wcmV2aWV3LXRleHQge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzMzMztcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uZmlsZS1uYW1lIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtaW4taGVpZ2h0OiBmaXQtY29udGVudDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuMjVyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi51cGxvYWQtYnV0dG9ucyAudXBsb2FkLWZpbGUtYnV0dG9uIHtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4udXBsb2FkLWJ1dHRvbnMgLnJlbW92ZS1maWxlLWJ1dHRvbiB7XG4gIGZsZXgtZ3JvdzogMDtcbn1cblxuLmFjY2VwdGVkLXR5cGVzIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICM3Nzc7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4ubG9hZGluZy1iYXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXRvcDogOHB4O1xufVxuXG4ubG9hZGluZy1iYXIge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG59XG5cbi5kYXRlLXBpY2tlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDZweDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG59XG5cbi5kYXRlLXBpY2tlciBpbnB1dCB7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnBlcmNlbnRhZ2Utc2xpZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogOHB4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ucGVyY2VudGFnZS1zbGlkZXIgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5wZXJjZW50YWdlLXNsaWRlciBsYWJlbCB7XG4gIG1pbi13aWR0aDogNTBweDtcbn1cblxuLmZhbmN5LWlucHV0LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZ2FwOiAwO1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmZhbmN5LWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5mYW5jeS1pbnB1dCB7XG4gIHJlc2l6ZTogbm9uZTtcbiAgbWF4LWhlaWdodDogMTJyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBjb2xvcjogIzIyMjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmZhbmN5LWlucHV0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uZmFuY3ktaW5wdXQtbGFiZWwge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6ICM3Nzc7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmc6IDAgMC4yNXJlbTtcbiAgLyogei1pbmRleDogMjsgKi9cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBcIkdlaXN0IE1vbm9cIiwgbW9ub3NwYWNlO1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xufVxuXG4uaW5wdXQtZGl2aWRlciB7XG4gIG1pbi13aWR0aDogMXB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gIG1hcmdpbjogMDtcbn1cblxuLmlucHV0LWljb24tY29udGFpbmVyIHtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBtaW4td2lkdGg6IDQwcHg7XG59XG5cbi5pbnB1dC1pY29uLWNvbnRhaW5lciBzdmcge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xufVxuXG4uZHVyYXRpb24taW5wdXQtY29udGFpbmVyIHtcbiAgbWluLWhlaWdodDogMi41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGdhcDogMDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDRweDsgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLmR1cmF0aW9uLWlucHV0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleDogMCAwIGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ucHJpY2UtaW5wdXQtY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZjZmMDA7XG59XG5cbi5kdXJhdGlvbi1pbnB1dC1jb250YWluZXI6Zm9jdXMtd2l0aGluIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmNmYwMDtcbn1cblxuLnByaWNlLWlucHV0LWNvbnRhaW5lcjpob3Zlcixcbi5kdXJhdGlvbi1pbnB1dC1jb250YWluZXI6aG92ZXIge1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5kdXJhdGlvbi11bml0LXNlbGVjdDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5saWNlbnNlLXR5cGUtc2VsZWN0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbn1cblxuLmxpY2Vuc2UtdHlwZS1zZWxlY3Q6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xufVxuXG4ubGljZW5zZS10eXBlLXNlbGVjdDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5wcmV2aWV3LW9wdGlvbi1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4uY2hlY2tib3gtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzMzMztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jaGVja2JveC1pbnB1dCB7XG4gIHdpZHRoOiAxLjEyNXJlbTtcbiAgaGVpZ2h0OiAxLjEyNXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBhY2NlbnQtY29sb3I6ICNmZjZmMDA7XG59XG5cbi5jaGVja2JveC1sYWJlbCBzcGFuIHtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnByZXZpZXctaW1hZ2Utc2VjdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4ucHJldmlldy1pbWFnZS1jb250cm9scyB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLnNlbGVjdC1wcmV2aWV3LWJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC1mYW1pbHk6IFwiR2Vpc3QgTW9ub1wiLCBtb25vc3BhY2U7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItY29sb3I6ICM5OTk7XG59XG5cbi5zZWxlY3QtcHJldmlldy1idXR0b246ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBjb2xvcjogIzk5OTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ucHJldmlldy1pbWFnZS1wcmV2aWV3IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xufVxuXG4ucHJldmlldy10aHVtYm5haWwge1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5wcmV2aWV3LWZpbGVuYW1lIHtcbiAgZmxleDogMTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMzM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ucmVtb3ZlLXByZXZpZXctYnV0dG9uIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmNmYwMDtcbiAgY29sb3I6ICNmZjZmMDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnJlbW92ZS1wcmV2aWV3LWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ucmVtb3ZlLXByZXZpZXctYnV0dG9uOmRpc2FibGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjY2NjO1xuICBjb2xvcjogI2NjYztcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ucGVyY2VudGFnZS1pY29uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICM1NTU7XG59XG4iXX0= */";
|
|
10543
|
+
var buttonStyles = {"button":"buttons-module_button__4Ogad","connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1","date-picker":"buttons-module_date-picker__V6gRM","percentage-slider":"buttons-module_percentage-slider__M84tC","fancy-input-container":"buttons-module_fancy-input-container__s-zVw","fancy-input":"buttons-module_fancy-input__RpSOF","fancy-input-label":"buttons-module_fancy-input-label__d-sG7","input-divider":"buttons-module_input-divider__RVasJ","input-icon-container":"buttons-module_input-icon-container__MUYKL","duration-input-container":"buttons-module_duration-input-container__Rh9Na","duration-input":"buttons-module_duration-input__-gt3p","duration-unit-select":"buttons-module_duration-unit-select__VKFf6","price-input-container":"buttons-module_price-input-container__teIRS","license-type-select":"buttons-module_license-type-select__XHtlm","preview-option-container":"buttons-module_preview-option-container__0bzt-","checkbox-label":"buttons-module_checkbox-label__ODwgG","checkbox-input":"buttons-module_checkbox-input__FvUIp","preview-image-section":"buttons-module_preview-image-section__BjtiC","preview-image-controls":"buttons-module_preview-image-controls__l6gv5","select-preview-button":"buttons-module_select-preview-button__0HQfm","preview-image-preview":"buttons-module_preview-image-preview__c-6n5","preview-thumbnail":"buttons-module_preview-thumbnail__fJWXt","preview-filename":"buttons-module_preview-filename__FW-Gz","remove-preview-button":"buttons-module_remove-preview-button__Skqgb","percentage-icon":"buttons-module_percentage-icon__MxmJh"};
|
|
9995
10544
|
styleInject(css_248z);
|
|
9996
10545
|
|
|
9997
10546
|
/**
|
|
@@ -10169,6 +10718,7 @@ const FancyInput = ({ value, onChange, step, placeholder, type = "text", icon, l
|
|
|
10169
10718
|
*/
|
|
10170
10719
|
const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
|
|
10171
10720
|
const auth = useAuth();
|
|
10721
|
+
useContext(CampContext);
|
|
10172
10722
|
const { isAllowListed } = useUser();
|
|
10173
10723
|
const effectiveMaxFileSize = isAllowListed ? undefined : maxFileSize;
|
|
10174
10724
|
const [isDragging, setIsDragging] = useState(false);
|
|
@@ -10185,18 +10735,21 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
|
|
|
10185
10735
|
const [isValidInput, setIsValidInput] = useState(false);
|
|
10186
10736
|
const [previewImage, setPreviewImage] = useState(null);
|
|
10187
10737
|
const [useBaseAssetAsPreview, setUseBaseAssetAsPreview] = useState(false);
|
|
10738
|
+
const [licenseType, setLicenseType] = useState(LicenseType.DURATION_BASED);
|
|
10188
10739
|
const isAllImagesAccepted = accept
|
|
10189
10740
|
? accept.split(",").every((type) => type.trim().startsWith("image/"))
|
|
10190
10741
|
: false;
|
|
10191
10742
|
const validateInputs = () => {
|
|
10192
|
-
const isDurationValid =
|
|
10193
|
-
|
|
10743
|
+
const isDurationValid = licenseType === LicenseType.DURATION_BASED
|
|
10744
|
+
? validateDuration(licenseDuration, durationUnit)
|
|
10745
|
+
: true; // Duration not needed for SINGLE_PAYMENT/X402
|
|
10746
|
+
const isPriceValid = validatePrice(price);
|
|
10194
10747
|
const isRoyaltyValid = validateRoyaltyBps(royaltyBps);
|
|
10195
10748
|
setIsValidInput(isDurationValid && isPriceValid && isRoyaltyValid);
|
|
10196
10749
|
};
|
|
10197
10750
|
useEffect(() => {
|
|
10198
10751
|
validateInputs();
|
|
10199
|
-
}, [price, licenseDuration, durationUnit, royaltyBps]);
|
|
10752
|
+
}, [price, licenseDuration, durationUnit, royaltyBps, licenseType]);
|
|
10200
10753
|
useEffect(() => {
|
|
10201
10754
|
// use base asset as preview is checked, clear custom preview image
|
|
10202
10755
|
if (useBaseAssetAsPreview) {
|
|
@@ -10211,10 +10764,12 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
|
|
|
10211
10764
|
if (selectedFile) {
|
|
10212
10765
|
setIsUploading(true);
|
|
10213
10766
|
try {
|
|
10214
|
-
const durationInSeconds =
|
|
10767
|
+
const durationInSeconds = licenseType === LicenseType.DURATION_BASED
|
|
10768
|
+
? toSeconds(licenseDuration, durationUnit)
|
|
10769
|
+
: 0; // Duration must be 0 for SINGLE_PAYMENT/X402
|
|
10215
10770
|
const priceInWei = parseEther(price || "0");
|
|
10216
10771
|
const computedRoyaltyBps = Math.floor(parseFloat(royaltyBps) * 100); // percentage to basis points
|
|
10217
|
-
const license = createLicenseTerms(priceInWei, durationInSeconds, computedRoyaltyBps, zeroAddress);
|
|
10772
|
+
const license = createLicenseTerms(priceInWei, durationInSeconds, computedRoyaltyBps, zeroAddress, licenseType);
|
|
10218
10773
|
const metadata = {
|
|
10219
10774
|
name: selectedFile.name,
|
|
10220
10775
|
description: `File uploaded by ${auth === null || auth === void 0 ? void 0 : auth.walletAddress} via the Origin SDK`,
|
|
@@ -10359,22 +10914,31 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
|
|
|
10359
10914
|
selectedFile ? (React.createElement("div", { className: buttonStyles["selected-file-container"] },
|
|
10360
10915
|
renderFilePreview(),
|
|
10361
10916
|
React.createElement("span", { className: buttonStyles["file-name"] }, selectedFile.name),
|
|
10362
|
-
React.createElement(
|
|
10917
|
+
React.createElement("span", { className: buttonStyles["fancy-input-label"] }, "License Type"),
|
|
10918
|
+
React.createElement("div", { className: buttonStyles["duration-input-container"] },
|
|
10919
|
+
React.createElement("select", { className: buttonStyles["license-type-select"], value: licenseType, onChange: (e) => setLicenseType(Number(e.target.value)) },
|
|
10920
|
+
React.createElement("option", { value: LicenseType.DURATION_BASED }, "Subscription (Time-limited)"),
|
|
10921
|
+
React.createElement("option", { value: LicenseType.SINGLE_PAYMENT }, "One-Time Purchase (Perpetual)"),
|
|
10922
|
+
React.createElement("option", { value: LicenseType.X402 }, "X402 (Pay-per-view)"))),
|
|
10923
|
+
React.createElement(FancyInput, { type: "number", step: 0.0001, placeholder: licenseType === LicenseType.X402 ? "Price per view" : "Price", value: price, label: licenseType === LicenseType.X402
|
|
10924
|
+
? "Price in $USDC"
|
|
10925
|
+
: "Price in $CAMP", onChange: (e) => {
|
|
10363
10926
|
const value = e.target.value;
|
|
10364
10927
|
setPrice(value);
|
|
10365
|
-
}, icon: React.createElement(CampIcon, null) }),
|
|
10366
|
-
React.createElement(
|
|
10367
|
-
|
|
10368
|
-
React.createElement("
|
|
10369
|
-
|
|
10370
|
-
|
|
10371
|
-
|
|
10372
|
-
|
|
10373
|
-
|
|
10374
|
-
|
|
10375
|
-
|
|
10376
|
-
|
|
10377
|
-
|
|
10928
|
+
}, icon: licenseType === LicenseType.X402 ? React.createElement(USDCIcon, null) : React.createElement(CampIcon, null) }),
|
|
10929
|
+
licenseType === LicenseType.DURATION_BASED && (React.createElement(React.Fragment, null,
|
|
10930
|
+
React.createElement("span", { className: buttonStyles["fancy-input-label"] }, "License Duration"),
|
|
10931
|
+
React.createElement("div", { className: buttonStyles["duration-input-container"] },
|
|
10932
|
+
React.createElement("input", { type: "number", placeholder: "Duration", className: buttonStyles["duration-input"], value: licenseDuration > 0 ? licenseDuration.toString() : "", onChange: (e) => {
|
|
10933
|
+
const value = e.target.value;
|
|
10934
|
+
setLicenseDuration(value ? Number(value) : 0);
|
|
10935
|
+
} }),
|
|
10936
|
+
React.createElement("select", { className: buttonStyles["duration-unit-select"], value: durationUnit, onChange: (e) => {
|
|
10937
|
+
setDurationUnit(e.target.value);
|
|
10938
|
+
} },
|
|
10939
|
+
React.createElement("option", { value: "hours" }, "Hours"),
|
|
10940
|
+
React.createElement("option", { value: "days" }, "Days"),
|
|
10941
|
+
React.createElement("option", { value: "weeks" }, "Weeks"))))),
|
|
10378
10942
|
React.createElement(FancyInput, { type: "number", step: 0.1, placeholder: "Royalty %", label: "Royalty %", value: royaltyBps.toString(), onChange: (e) => {
|
|
10379
10943
|
const value = e.target.value;
|
|
10380
10944
|
setRoyaltyBps(value);
|