Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
49658b66
Commit
49658b66
authored
Jul 16, 2019
by
liuyuhang
Committed by
33cn
Aug 14, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add prob rule
parent
503acbfc
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
185 additions
and
121 deletions
+185
-121
boardaction.go
plugin/dapp/autonomy/executor/boardaction.go
+29
-13
projectaction.go
plugin/dapp/autonomy/executor/projectaction.go
+53
-17
ruleaction.go
plugin/dapp/autonomy/executor/ruleaction.go
+2
-2
board.proto
plugin/dapp/autonomy/proto/board.proto
+7
-5
project.proto
plugin/dapp/autonomy/proto/project.proto
+1
-1
board.pb.go
plugin/dapp/autonomy/types/board.pb.go
+48
-38
project.pb.go
plugin/dapp/autonomy/types/project.pb.go
+45
-45
No files found.
plugin/dapp/autonomy/executor/boardaction.go
View file @
49658b66
...
...
@@ -52,9 +52,26 @@ func (a *action) propBoard(prob *auty.ProposalBoard) (*types.Receipt, error) {
return
nil
,
types
.
ErrInvalidParam
}
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
lockAmount
)
// 获取当前生效提案规则,并且将不修改的规则补齐
rule
:=
&
auty
.
RuleConfig
{}
value
,
err
:=
a
.
db
.
Get
(
activeRuleID
())
if
err
==
nil
{
err
=
types
.
Decode
(
value
,
rule
)
if
err
!=
nil
{
alog
.
Error
(
"propBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"decode ProposalRule failed"
,
err
)
return
nil
,
err
}
}
else
{
// 载入系统默认值
rule
.
BoardAttendProb
=
participationRate
rule
.
BoardPassProb
=
approveRate
rule
.
OpposeProb
=
opposeRate
rule
.
ProposalAmount
=
lockAmount
rule
.
PubAmountThreshold
=
largeAmount
}
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
rule
.
ProposalAmount
)
if
err
!=
nil
{
alog
.
Error
(
"propBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen amount"
,
lock
Amount
)
alog
.
Error
(
"propBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen amount"
,
rule
.
Proposal
Amount
)
return
nil
,
err
}
...
...
@@ -66,6 +83,7 @@ func (a *action) propBoard(prob *auty.ProposalBoard) (*types.Receipt, error) {
cur
:=
&
auty
.
AutonomyProposalBoard
{
PropBoard
:
prob
,
CurRule
:
rule
,
VoteResult
:
&
auty
.
VoteResult
{},
Status
:
auty
.
AutonomyStatusProposalBoard
,
Address
:
a
.
fromaddr
,
...
...
@@ -73,9 +91,7 @@ func (a *action) propBoard(prob *auty.ProposalBoard) (*types.Receipt, error) {
Index
:
a
.
index
,
}
key
:=
propBoardID
(
common
.
ToHex
(
a
.
txhash
))
value
:=
types
.
Encode
(
cur
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
value
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propBoardID
(
common
.
ToHex
(
a
.
txhash
)),
Value
:
types
.
Encode
(
cur
)})
receiptLog
:=
getReceiptLog
(
nil
,
cur
,
auty
.
TyLogPropBoard
)
logs
=
append
(
logs
,
receiptLog
)
...
...
@@ -126,9 +142,9 @@ func (a *action) rvkPropBoard(rvkProb *auty.RevokeProposalBoard) (*types.Receipt
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"rvkPropBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
lock
Amount
,
"err"
,
err
)
alog
.
Error
(
"rvkPropBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
cur
.
CurRule
.
Proposal
Amount
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
...
@@ -226,12 +242,12 @@ func (a *action) votePropBoard(voteProb *auty.VoteProposalBoard) (*types.Receipt
if
cur
.
VoteResult
.
TotalVotes
!=
0
&&
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
!=
0
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
BoardAttendProb
)
/
100.0
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
cur
.
CurRule
.
OpposeProb
)
/
100.0
{
cur
.
VoteResult
.
Pass
=
true
cur
.
PropBoard
.
RealEndBlockHeight
=
a
.
height
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropBoard "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
@@ -309,8 +325,8 @@ func (a *action) tmintPropBoard(tmintProb *auty.TerminateProposalBoard) (*types.
cur
.
VoteResult
.
TotalVotes
=
int32
(
account
.
Balance
/
ticketPrice
)
}
if
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
if
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
BoardAttendProb
)
/
100.0
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
cur
.
CurRule
.
OpposeProb
)
/
100.0
{
cur
.
VoteResult
.
Pass
=
true
}
else
{
cur
.
VoteResult
.
Pass
=
false
...
...
@@ -319,7 +335,7 @@ func (a *action) tmintPropBoard(tmintProb *auty.TerminateProposalBoard) (*types.
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
plugin/dapp/autonomy/executor/projectaction.go
View file @
49658b66
...
...
@@ -48,9 +48,26 @@ func (a *action) propProject(prob *auty.ProposalProject) (*types.Receipt, error)
return
nil
,
err
}
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
lockAmount
)
// 获取当前生效提案规则,并且将不修改的规则补齐
rule
:=
&
auty
.
RuleConfig
{}
value
,
err
=
a
.
db
.
Get
(
activeRuleID
())
if
err
==
nil
{
err
=
types
.
Decode
(
value
,
rule
)
if
err
!=
nil
{
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"decode ProposalRule failed"
,
err
)
return
nil
,
err
}
}
else
{
// 载入系统默认值
rule
.
BoardAttendProb
=
participationRate
rule
.
BoardPassProb
=
approveRate
rule
.
OpposeProb
=
opposeRate
rule
.
ProposalAmount
=
lockAmount
rule
.
PubAmountThreshold
=
largeAmount
}
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
rule
.
ProposalAmount
)
if
err
!=
nil
{
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen amount"
,
lock
Amount
)
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen amount"
,
rule
.
Proposal
Amount
)
return
nil
,
err
}
...
...
@@ -61,11 +78,12 @@ func (a *action) propProject(prob *auty.ProposalProject) (*types.Receipt, error)
kv
=
append
(
kv
,
receipt
.
KV
...
)
var
isPubVote
bool
if
prob
.
Amount
>=
largeAmount
{
if
prob
.
Amount
>=
rule
.
PubAmountThreshold
{
isPubVote
=
true
}
cur
:=
&
auty
.
AutonomyProposalProject
{
PropProject
:
prob
,
CurRule
:
rule
,
Boards
:
pboard
.
Boards
,
BoardVoteRes
:
&
auty
.
VoteResult
{},
PubVote
:
&
auty
.
PublicVote
{
Publicity
:
isPubVote
},
...
...
@@ -124,9 +142,9 @@ func (a *action) rvkPropProject(rvkProb *auty.RevokeProposalProject) (*types.Rec
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"rvkPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
lock
Amount
,
"err"
,
err
)
alog
.
Error
(
"rvkPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
cur
.
CurRule
.
Proposal
Amount
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
...
@@ -224,11 +242,11 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
!=
0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
BoardAttendProb
)
/
100.0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
cur
.
CurRule
.
BoardPassProb
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
@@ -246,6 +264,14 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
cur
.
PubVote
.
PubPass
=
true
}
else
{
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
// 提案通过,将工程金额从基金付款给承包商
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
autonomyAddr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen to contractor fail"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
}
value
=
types
.
Encode
(
&
cur
)
...
...
@@ -351,7 +377,7 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
cur
.
PubVote
.
PubPass
=
false
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"pubVotePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
@@ -362,8 +388,10 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
key
:=
propProjectID
(
voteProb
.
ProposalID
)
cur
.
Status
=
auty
.
AutonomyStatusPubVotePropProject
ty
:=
auty
.
TyLogPubVotePropProject
if
!
cur
.
PubVote
.
PubPass
{
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
ty
=
auty
.
TyLogTmintPropProject
}
value
=
types
.
Encode
(
&
cur
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
value
})
...
...
@@ -371,10 +399,6 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
// 更新VotesRecord
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
VotesRecord
(
voteProb
.
ProposalID
),
Value
:
types
.
Encode
(
&
votes
)})
ty
:=
auty
.
TyLogPubVotePropProject
if
cur
.
BoardVoteRes
.
Pass
{
ty
=
auty
.
TyLogTmintPropProject
}
receiptLog
:=
getProjectReceiptLog
(
pre
,
&
cur
,
int32
(
ty
))
logs
=
append
(
logs
,
receiptLog
)
...
...
@@ -452,8 +476,8 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
!=
0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
BoardAttendProb
)
/
100.0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
cur
.
CurRule
.
BoardPassProb
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
}
else
{
cur
.
BoardVoteRes
.
Pass
=
false
...
...
@@ -478,14 +502,26 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"
vote
PropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"
tmint
PropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
if
(
cur
.
PubVote
.
Publicity
&&
cur
.
PubVote
.
PubPass
)
||
// 需要公示且公示通过
(
!
cur
.
PubVote
.
Publicity
&&
cur
.
BoardVoteRes
.
Pass
){
// 不需要公示且董事会通过
// 提案通过,将工程金额从基金付款给承包商
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
autonomyAddr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"tmintPropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen to contractor fail"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propProjectID
(
tmintProb
.
ProposalID
),
Value
:
types
.
Encode
(
&
cur
)})
...
...
plugin/dapp/autonomy/executor/ruleaction.go
View file @
49658b66
...
...
@@ -237,7 +237,7 @@ func (a *action) votePropRule(voteProb *auty.VoteProposalRule) (*types.Receipt,
cur
.
VoteResult
.
Pass
=
true
cur
.
PropRule
.
RealEndBlockHeight
=
a
.
height
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
Rule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropRule "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
@@ -325,7 +325,7 @@ func (a *action) tmintPropRule(tmintProb *auty.TerminateProposalRule) (*types.Re
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lock
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
Rule
.
Proposal
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropRule "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
...
...
plugin/dapp/autonomy/proto/board.proto
View file @
49658b66
...
...
@@ -11,13 +11,15 @@ package types;
message
AutonomyProposalBoard
{
ProposalBoard
propBoard
=
1
;
// 投票该提案的规则
RuleConfig
curRule
=
2
;
// 全体持票人投票结果
VoteResult
voteResult
=
2
;
VoteResult
voteResult
=
3
;
// 状态
int32
status
=
3
;
string
address
=
4
;
int64
height
=
5
;
int32
index
=
6
;
int32
status
=
4
;
string
address
=
5
;
int64
height
=
6
;
int32
index
=
7
;
}
// action
...
...
plugin/dapp/autonomy/proto/project.proto
View file @
49658b66
...
...
@@ -11,7 +11,7 @@ package types;
message
AutonomyProposalProject
{
ProposalProject
propProject
=
1
;
// 投票该提案的规则
RuleConfig
C
urRule
=
2
;
RuleConfig
c
urRule
=
2
;
// 投票该提案的董事会成员
repeated
string
boards
=
3
;
// 董事会投票结果
...
...
plugin/dapp/autonomy/types/board.pb.go
View file @
49658b66
...
...
@@ -14,13 +14,15 @@ var _ = math.Inf
type
AutonomyProposalBoard
struct
{
PropBoard
*
ProposalBoard
`protobuf:"bytes,1,opt,name=propBoard" json:"propBoard,omitempty"`
// 投票该提案的规则
CurRule
*
RuleConfig
`protobuf:"bytes,2,opt,name=curRule" json:"curRule,omitempty"`
// 全体持票人投票结果
VoteResult
*
VoteResult
`protobuf:"bytes,
2
,opt,name=voteResult" json:"voteResult,omitempty"`
VoteResult
*
VoteResult
`protobuf:"bytes,
3
,opt,name=voteResult" json:"voteResult,omitempty"`
// 状态
Status
int32
`protobuf:"varint,
3
,opt,name=status" json:"status,omitempty"`
Address
string
`protobuf:"bytes,
4
,opt,name=address" json:"address,omitempty"`
Height
int64
`protobuf:"varint,
5
,opt,name=height" json:"height,omitempty"`
Index
int32
`protobuf:"varint,
6
,opt,name=index" json:"index,omitempty"`
Status
int32
`protobuf:"varint,
4
,opt,name=status" json:"status,omitempty"`
Address
string
`protobuf:"bytes,
5
,opt,name=address" json:"address,omitempty"`
Height
int64
`protobuf:"varint,
6
,opt,name=height" json:"height,omitempty"`
Index
int32
`protobuf:"varint,
7
,opt,name=index" json:"index,omitempty"`
}
func
(
m
*
AutonomyProposalBoard
)
Reset
()
{
*
m
=
AutonomyProposalBoard
{}
}
...
...
@@ -35,6 +37,13 @@ func (m *AutonomyProposalBoard) GetPropBoard() *ProposalBoard {
return
nil
}
func
(
m
*
AutonomyProposalBoard
)
GetCurRule
()
*
RuleConfig
{
if
m
!=
nil
{
return
m
.
CurRule
}
return
nil
}
func
(
m
*
AutonomyProposalBoard
)
GetVoteResult
()
*
VoteResult
{
if
m
!=
nil
{
return
m
.
VoteResult
...
...
@@ -316,37 +325,38 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"board.proto"
,
fileDescriptor1
)
}
var
fileDescriptor1
=
[]
byte
{
// 499 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x94
,
0x54
,
0x4d
,
0x6f
,
0xd4
,
0x30
,
0x10
,
0x95
,
0xbb
,
0x9b
,
0xb4
,
0x99
,
0xaa
,
0xa8
,
0x35
,
0xdb
,
0x12
,
0x55
,
0x15
,
0x8a
,
0x72
,
0x40
,
0x11
,
0x87
,
0x15
,
0x94
,
0x0f
,
0x21
,
0x6e
,
0xac
,
0x40
,
0x02
,
0x09
,
0x24
,
0xb0
,
0x80
,
0xbb
,
0x9b
,
0x0c
,
0x6c
,
0xd4
,
0x24
,
0x36
,
0x8e
,
0xb3
,
0x22
,
0x37
,
0x7e
,
0x29
,
0x57
,
0xfe
,
0x06
,
0xca
,
0xc4
,
0xdb
,
0x6c
,
0xca
,
0x0a
,
0xe8
,
0x2d
,
0x6f
,
0xfc
,
0x9e
,
0x3d
,
0x63
,
0xbf
,
0x17
,
0xd8
,
0xbf
,
0x50
,
0xd2
,
0x64
,
0x73
,
0x6d
,
0x94
,
0x55
,
0xdc
,
0xb3
,
0xad
,
0xc6
,
0xfa
,
0xf4
,
0xa0
,
0x48
,
0x55
,
0x59
,
0xaa
,
0xaa
,
0xaf
,
0xc6
,
0x3f
,
0x19
,
0x1c
,
0xbf
,
0x68
,
0xac
,
0xaa
,
0x54
,
0xd9
,
0xbe
,
0x37
,
0x4a
,
0xab
,
0x5a
,
0x16
,
0x8b
,
0x4e
,
0xc5
,
0xcf
,
0x21
,
0xd0
,
0x46
,
0x69
,
0x02
,
0x21
,
0x8b
,
0x58
,
0xb2
,
0x7f
,
0x3e
,
0x9b
,
0xd3
,
0x1e
,
0xf3
,
0x11
,
0x51
,
0x0c
,
0x34
,
0xfe
,
0x10
,
0x60
,
0xa5
,
0x2c
,
0x0a
,
0xac
,
0x9b
,
0xc2
,
0x86
,
0x3b
,
0x24
,
0x3a
,
0x72
,
0xa2
,
0xcf
,
0x57
,
0x0b
,
0x62
,
0x83
,
0xc4
,
0x4f
,
0xc0
,
0xaf
,
0xad
,
0xb4
,
0x4d
,
0x1d
,
0x4e
,
0x22
,
0x96
,
0x78
,
0xc2
,
0x21
,
0x1e
,
0xc2
,
0xae
,
0xcc
,
0x32
,
0x83
,
0x75
,
0x1d
,
0x4e
,
0x23
,
0x96
,
0x04
,
0x62
,
0x0d
,
0x3b
,
0xc5
,
0x12
,
0xf3
,
0xaf
,
0x4b
,
0x1b
,
0x7a
,
0x11
,
0x4b
,
0x26
,
0xc2
,
0x21
,
0x3e
,
0x03
,
0x2f
,
0xaf
,
0x32
,
0xfc
,
0x1e
,
0xfa
,
0xb4
,
0x51
,
0x0f
,
0xe2
,
0x5f
,
0x0c
,
0x0e
,
0xc6
,
0x83
,
0x71
,
0x98
,
0xb6
,
0x28
,
0x0d
,
0xcd
,
0xe4
,
0x09
,
0xfa
,
0xee
,
0xb4
,
0xa5
,
0xaa
,
0xec
,
0x92
,
0x7a
,
0xf6
,
0x44
,
0x0f
,
0xf8
,
0x21
,
0x4c
,
0x32
,
0xd9
,
0xba
,
0xc6
,
0xba
,
0xcf
,
0xee
,
0x6c
,
0xba
,
0xd3
,
0xae
,
0xa9
,
0x49
,
0x12
,
0x08
,
0x87
,
0xf8
,
0x7d
,
0x38
,
0xac
,
0xad
,
0x34
,
0x76
,
0x51
,
0xa8
,
0xf4
,
0xf2
,
0xf5
,
0x66
,
0x77
,
0x7f
,
0xd4
,
0xf9
,
0x3d
,
0xb8
,
0x85
,
0x55
,
0xb6
,
0xc9
,
0xf4
,
0x89
,
0x79
,
0xad
,
0xca
,
0xe7
,
0xc0
,
0x0d
,
0xca
,
0xe2
,
0xd5
,
0x98
,
0xbb
,
0x4b
,
0xdc
,
0x2d
,
0x2b
,
0xf1
,
0x13
,
0xb8
,
0x2d
,
0x70
,
0xa5
,
0x2e
,
0x71
,
0x3c
,
0xee
,
0x5d
,
0x00
,
0xed
,
0x0a
,
0x6f
,
0x5e
,
0xd2
,
0xd0
,
0x81
,
0xd8
,
0xa8
,
0xc4
,
0xef
,
0xe0
,
0xa8
,
0x7b
,
0x9a
,
0x1b
,
0x89
,
0xe8
,
0x75
,
0xb4
,
0x36
,
0x6a
,
0x85
,
0x74
,
0x63
,
0x7b
,
0x62
,
0x0d
,
0xe3
,
0x67
,
0x70
,
0xf2
,
0x11
,
0x4d
,
0x99
,
0x57
,
0xf2
,
0x86
,
0x7b
,
0xc6
,
0x3f
,
0x18
,
0xcc
,
0x04
,
0xa6
,
0x98
,
0x6b
,
0x3b
,
0x16
,
0x3e
,
0x80
,
0xa9
,
0x36
,
0xb8
,
0x72
,
0x26
,
0x3c
,
0x73
,
0x7e
,
0xda
,
0xea
,
0x5a
,
0x41
,
0x4c
,
0xfe
,
0x14
,
0x76
,
0xd3
,
0xc6
,
0x18
,
0xac
,
0xd6
,
0x26
,
0xfc
,
0xbb
,
0x68
,
0x4d
,
0x8e
,
0xbf
,
0x00
,
0x7f
,
0xab
,
0x52
,
0x59
,
0x8c
,
0xcf
,
0x7f
,
0x0c
,
0x3e
,
0x59
,
0x3c
,
0xfb
,
0xaf
,
0x0e
,
0x1c
,
0x97
,
0x9f
,
0xc2
,
0x5e
,
0x97
,
0x34
,
0xac
,
0x6c
,
0x1d
,
0xee
,
0x90
,
0x59
,
0xae
,
0x70
,
0xdc
,
0xc2
,
0xb1
,
0xc0
,
0x6f
,
0x1f
,
0x1a
,
0x34
,
0xd7
,
0x42
,
0x37
,
0xa4
,
0x81
,
0x8d
,
0xd2
,
0x30
,
0x03
,
0x2f
,
0x55
,
0x8d
,
0x1b
,
0xc7
,
0x13
,
0x3d
,
0xe0
,
0x67
,
0x10
,
0x64
,
0xb9
,
0xc1
,
0xd4
,
0xe6
,
0xaa
,
0x72
,
0x2e
,
0x1d
,
0x0a
,
0x43
,
0x1e
,
0xa6
,
0x64
,
0x19
,
0x97
,
0x87
,
0x4f
,
0x70
,
0x47
,
0xa0
,
0x2e
,
0xda
,
0x2d
,
0x87
,
0x3f
,
0xa7
,
0xc4
,
0x2f
,
0x7a
,
0x7f
,
0xb3
,
0x68
,
0xf2
,
0xcf
,
0x51
,
0x07
,
0xfa
,
0x85
,
0x4f
,
0xbf
,
0x93
,
0x47
,
0xbf
,
0x03
,
0x00
,
0x00
,
0xff
,
0xff
,
0x3f
,
0xce
,
0x7c
,
0xf0
,
0x73
,
0x04
,
0x00
,
0x00
,
// 523 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x94
,
0x54
,
0x5d
,
0x6f
,
0xd3
,
0x30
,
0x14
,
0x55
,
0xda
,
0xa6
,
0x5d
,
0xef
,
0x34
,
0xb4
,
0x99
,
0x6e
,
0x44
,
0xd3
,
0x84
,
0xaa
,
0x3c
,
0xa0
,
0x0a
,
0xa4
,
0x0a
,
0xc6
,
0x87
,
0x10
,
0x6f
,
0x14
,
0x90
,
0x40
,
0x02
,
0x09
,
0xae
,
0x80
,
0x77
,
0x2f
,
0xb9
,
0x5b
,
0xa3
,
0xa5
,
0xb6
,
0x71
,
0x9c
,
0x8a
,
0xbc
,
0xf1
,
0xce
,
0x0f
,
0xe5
,
0x6f
,
0xa0
,
0xdc
,
0xb8
,
0x6b
,
0x33
,
0x2a
,
0x60
,
0x6f
,
0x39
,
0x37
,
0xe7
,
0xd8
,
0xf7
,
0xda
,
0xe7
,
0x18
,
0x76
,
0xcf
,
0xb4
,
0xb4
,
0xe9
,
0xd4
,
0x58
,
0xed
,
0xb4
,
0x08
,
0x5d
,
0x65
,
0xa8
,
0x38
,
0xde
,
0xcb
,
0x13
,
0xbd
,
0x58
,
0x68
,
0xd5
,
0x54
,
0xe3
,
0x9f
,
0x1d
,
0x38
,
0x7c
,
0x59
,
0x3a
,
0xad
,
0xf4
,
0xa2
,
0xfa
,
0x68
,
0xb5
,
0xd1
,
0x85
,
0xcc
,
0x67
,
0xb5
,
0x4a
,
0x9c
,
0xc2
,
0xd0
,
0x58
,
0x6d
,
0x18
,
0x44
,
0xc1
,
0x38
,
0x98
,
0xec
,
0x9e
,
0x8e
,
0xa6
,
0xbc
,
0xc6
,
0xb4
,
0x45
,
0xc4
,
0x35
,
0x4d
,
0x3c
,
0x80
,
0x41
,
0x52
,
0x5a
,
0x2c
,
0x73
,
0x8a
,
0x3a
,
0xac
,
0x38
,
0xf0
,
0x8a
,
0xba
,
0xf4
,
0x4a
,
0xab
,
0xf3
,
0xec
,
0x02
,
0x57
,
0x0c
,
0xf1
,
0x08
,
0x60
,
0xa9
,
0x1d
,
0x21
,
0x15
,
0x65
,
0xee
,
0xa2
,
0x6e
,
0x8b
,
0xff
,
0xf5
,
0xea
,
0x07
,
0x6e
,
0x90
,
0xc4
,
0x11
,
0xf4
,
0x0b
,
0x27
,
0x5d
,
0x59
,
0x44
,
0xbd
,
0x71
,
0x30
,
0x09
,
0xd1
,
0x23
,
0x11
,
0xc1
,
0x40
,
0xa6
,
0xa9
,
0xa5
,
0xa2
,
0x88
,
0xc2
,
0x71
,
0x30
,
0x19
,
0xe2
,
0x0a
,
0xd6
,
0x8a
,
0x39
,
0x65
,
0x17
,
0x73
,
0x17
,
0xf5
,
0xc7
,
0xc1
,
0xa4
,
0x8b
,
0x1e
,
0x89
,
0x11
,
0x84
,
0x99
,
0x4a
,
0xe9
,
0x7b
,
0x34
,
0xe0
,
0x85
,
0x1a
,
0x10
,
0xff
,
0x0a
,
0x60
,
0xaf
,
0x7d
,
0x0a
,
0x02
,
0x7a
,
0x15
,
0x49
,
0xcb
,
0x07
,
0x10
,
0x22
,
0x7f
,
0xd7
,
0xda
,
0x85
,
0x56
,
0x6e
,
0xce
,
0x33
,
0x86
,
0xd8
,
0x00
,
0xb1
,
0x0f
,
0xdd
,
0x54
,
0x56
,
0x3c
,
0x47
,
0x88
,
0xf5
,
0x67
,
0xbd
,
0x37
,
0x5f
,
0x40
,
0xdd
,
0x6d
,
0x77
,
0x32
,
0x44
,
0x8f
,
0xc4
,
0x7d
,
0xd8
,
0x2f
,
0x9c
,
0xb4
,
0x6e
,
0x96
,
0xeb
,
0xe4
,
0xf2
,
0x6d
,
0xd3
,
0x5d
,
0xc8
,
0xdd
,
0xfd
,
0x51
,
0x17
,
0xf7
,
0xe0
,
0x16
,
0xa9
,
0x74
,
0x93
,
0xd9
,
0xcc
,
0x71
,
0xad
,
0x2a
,
0xa6
,
0x20
,
0x2c
,
0xc9
,
0xfc
,
0x4d
,
0x9b
,
0x3b
,
0x60
,
0xee
,
0x96
,
0x3f
,
0xf1
,
0x53
,
0xb8
,
0x8d
,
0xb4
,
0xd4
,
0x97
,
0xd4
,
0x1e
,
0xf7
,
0x2e
,
0x80
,
0xf1
,
0x85
,
0x77
,
0xaf
,
0x79
,
0xe8
,
0x21
,
0x6e
,
0x54
,
0xe2
,
0x0f
,
0x70
,
0x50
,
0x5f
,
0xcd
,
0x8d
,
0x44
,
0x7c
,
0x3b
,
0xc6
,
0x58
,
0xbd
,
0x6c
,
0x5c
,
0xb1
,
0x83
,
0x2b
,
0x18
,
0x3f
,
0x87
,
0xa3
,
0xcf
,
0x64
,
0x17
,
0x99
,
0x92
,
0x37
,
0x5c
,
0x33
,
0xfe
,
0x11
,
0xc0
,
0x08
,
0x29
,
0xa1
,
0xcc
,
0xb8
,
0xb6
,
0xf0
,
0x21
,
0xf4
,
0x8c
,
0xa5
,
0xa5
,
0x77
,
0xec
,
0x89
,
0xf7
,
0xd3
,
0x56
,
0x8b
,
0x23
,
0x33
,
0xc5
,
0x33
,
0x36
,
0xad
,
0x25
,
0xe5
,
0xbc
,
0x69
,
0xff
,
0x2e
,
0x5a
,
0x91
,
0xe3
,
0x73
,
0x10
,
0xef
,
0x75
,
0x22
,
0xf3
,
0xf6
,
0xfe
,
0x4f
,
0xa0
,
0xcf
,
0x79
,
0x48
,
0xff
,
0xab
,
0x03
,
0xcf
,
0x15
,
0xc7
,
0xb0
,
0x53
,
0xc7
,
0x92
,
0x94
,
0x2b
,
0xa2
,
0x0e
,
0x9b
,
0xe5
,
0x0a
,
0xc7
,
0x15
,
0x1c
,
0x22
,
0x7d
,
0xfb
,
0x54
,
0x92
,
0xbd
,
0x96
,
0xd0
,
0x75
,
0x1a
,
0x82
,
0x56
,
0x1a
,
0x46
,
0x10
,
0x26
,
0xba
,
0xf4
,
0xe3
,
0x84
,
0xd8
,
0x00
,
0x71
,
0x02
,
0xc3
,
0x34
,
0xb3
,
0x94
,
0xb8
,
0x4c
,
0x2b
,
0xef
,
0xd2
,
0x75
,
0x61
,
0x9d
,
0x87
,
0x1e
,
0x5b
,
0xc6
,
0xe7
,
0xe1
,
0x0b
,
0xdc
,
0x41
,
0x32
,
0x79
,
0xb5
,
0x65
,
0xf3
,
0x17
,
0xfc
,
0x3c
,
0xcc
,
0x1a
,
0x7f
,
0x07
,
0xe3
,
0xee
,
0x3f
,
0x47
,
0x5d
,
0xd3
,
0xcf
,
0xfa
,
0xfc
,
0xf6
,
0x3c
,
0xfe
,
0x1d
,
0x00
,
0x00
,
0xff
,
0xff
,
0x86
,
0xfa
,
0x5a
,
0x11
,
0xa0
,
0x04
,
0x00
,
0x00
,
}
plugin/dapp/autonomy/types/project.pb.go
View file @
49658b66
...
...
@@ -15,7 +15,7 @@ var _ = math.Inf
type
AutonomyProposalProject
struct
{
PropProject
*
ProposalProject
`protobuf:"bytes,1,opt,name=propProject" json:"propProject,omitempty"`
// 投票该提案的规则
CurRule
*
RuleConfig
`protobuf:"bytes,2,opt,name=
CurRule" json:"C
urRule,omitempty"`
CurRule
*
RuleConfig
`protobuf:"bytes,2,opt,name=
curRule" json:"c
urRule,omitempty"`
// 投票该提案的董事会成员
Boards
[]
string
`protobuf:"bytes,3,rep,name=boards" json:"boards,omitempty"`
// 董事会投票结果
...
...
@@ -432,48 +432,48 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"project.proto"
,
fileDescriptor3
)
}
var
fileDescriptor3
=
[]
byte
{
// 68
4
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x94
,
0x55
,
0x
5d
,
0x6f
,
0xd3
,
0x30
,
0x14
,
0x55
,
0x
97
,
0xa6
,
0x5d
,
0x6f
,
0xbb
,
0x0f
,
0xbc
,
0xd1
,
0x99
,
0x09
,
0x4d
,
0x55
,
0x1e
,
0x50
,
0x
05
,
0x52
,
0x85
,
0x86
,
0x10
,
0x13
,
0x6f
,
0xfb
,
0x40
,
0x02
,
0x09
,
0x8d
,
0x62
,
0x10
,
0xaf
,
0xc8
,
0x
4d
,
0xbc
,
0x2d
,
0x5b
,
0x1a
,
0x1b
,
0xc7
,
0x99
,
0xa8
,
0x78
,
0xe7
,
0x57
,
0xf2
,
0x3f
,
0x78
,
0x45
,
0x
be
,
0x76
,
0x68
,
0xd3
,
0x0d
,
0xb1
,
0xbd
,
0xf9
,
0x9c
,
0x7b
,
0xce
,
0x4d
,
0x7d
,
0x6d
,
0x9f
,
0xc2
,
0x
9a
,
0xd2
,
0xf2
,
0x52
,
0xc4
,
0x66
,
0xa4
,
0xb4
,
0x34
,
0x92
,
0x84
,
0x66
,
0xa6
,
0x44
,
0xb1
,
0xbb
,
0x
96
,
0xc5
,
0x72
,
0x3a
,
0x95
,
0xb9
,
0x63
,
0xa3
,
0x5f
,
0x2b
,
0xb0
,
0x73
,
0x58
,
0x1a
,
0x99
,
0xcb
,
0x
e9
,
0x6c
,
0xac
,
0xa5
,
0x92
,
0x05
,
0xcf
,
0xc6
,
0xce
,
0x47
,
0x0e
,
0xa0
,
0xab
,
0xb4
,
0x54
,
0x1e
,
0x
d2
,
0xc6
,
0xa0
,
0x31
,
0xec
,
0xee
,
0xf7
,
0x47
,
0xd8
,
0x67
,
0xb4
,
0x24
,
0x66
,
0x8b
,
0x52
,
0xf2
,
0x
0c
,
0xda
,
0xc7
,
0xa5
,
0x66
,
0x65
,
0x26
,
0xe8
,
0x0a
,
0xba
,
0x1e
,
0x78
,
0x97
,
0xa5
,
0x8e
,
0x65
,
0x
7e
,
0x96
,
0x9e
,
0xb3
,
0x4a
,
0x41
,
0xfa
,
0xd0
,
0x9a
,
0x48
,
0xae
,
0x93
,
0x82
,
0x06
,
0x83
,
0x60
,
0x
d8
,
0x61
,
0x1e
,
0x91
,
0x97
,
0xd0
,
0xc3
,
0xd5
,
0x17
,
0x69
,
0x04
,
0x13
,
0x05
,
0x6d
,
0xd6
,
0x3a
,
0x
79
,
0xb6
,
0xcc
,
0x0c
,
0xab
,
0xc9
,
0xec
,
0xb7
,
0x55
,
0x39
,
0xb1
,
0x88
,
0x86
,
0x35
,
0xc7
,
0xb8
,
0x9
c
,
0x64
,
0x69
,
0x8c
,
0xb2
,
0x4a
,
0x61
,
0xbf
,
0x5d
,
0x18
,
0x6e
,
0xca
,
0x82
,
0xb6
,
0x06
,
0x8d
,
0x
61
,
0xc8
,
0x3c
,
0x22
,
0x14
,
0xda
,
0x3c
,
0x49
,
0xb4
,
0x28
,
0x0a
,
0xda
,
0x1e
,
0x34
,
0x86
,
0x1d
,
0x
56
,
0x41
,
0xeb
,
0xb8
,
0x10
,
0xe9
,
0xf9
,
0x85
,
0xa1
,
0xab
,
0x83
,
0xc6
,
0x30
,
0x60
,
0x1e
,
0x91
,
0x
6d
,
0x08
,
0xd3
,
0x3c
,
0x11
,
0xdf
,
0x69
,
0x07
,
0x1b
,
0x39
,
0x10
,
0xfd
,
0x0e
,
0x60
,
0x63
,
0x79
,
0x
ac
,
0x04
,
0x9a
,
0x33
,
0xc1
,
0x35
,
0xce
,
0x33
,
0x64
,
0xb8
,
0xb6
,
0xee
,
0xa9
,
0xcc
,
0xcd
,
0x05
,
0x
8e
,
0x2b
,
0x64
,
0x0e
,
0x90
,
0x4d
,
0x08
,
0x12
,
0x3e
,
0xa3
,
0x01
,
0x72
,
0x76
,
0x49
,
0xf6
,
0x00
,
0x
ce
,
0x52
,
0x5d
,
0x98
,
0x4f
,
0x86
,
0x9f
,
0x0b
,
0x9c
,
0x48
,
0x87
,
0x2d
,
0x30
,
0xe4
,
0x31
,
0x74
,
0x
32
,
0x5e
,
0x95
,
0x43
,
0x2c
,
0xcf
,
0x09
,
0xeb
,
0x56
,
0x5a
,
0x26
,
0x65
,
0x6c
,
0x52
,
0x99
,
0xe3
,
0x
8e
,
0x3b
,
0x6c
,
0x81
,
0x21
,
0x03
,
0xe8
,
0x26
,
0xa2
,
0x88
,
0x75
,
0xaa
,
0x50
,
0xe0
,
0x76
,
0xbe
,
0x
48
,
0xd9
,
0x0e
,
0xb1
,
0xcc
,
0x8d
,
0xe6
,
0xb1
,
0x91
,
0x1a
,
0x27
,
0xd0
,
0x61
,
0x0b
,
0x8c
,
0x9
d
,
0x
0e
,
0x9f
,
0xca
,
0x32
,
0x37
,
0x38
,
0x86
,
0x80
,
0x79
,
0x44
,
0x22
,
0xe8
,
0xb9
,
0xd5
,
0x89
,
0x30
,
0x
3c
,
0xcd
,
0x28
,
0xa0
,
0xb3
,
0xc6
,
0x59
,
0xaf
,
0x91
,
0x87
,
0x49
,
0xa2
,
0x69
,
0x17
,
0xab
,
0x1e
,
0x
91
,
0xa7
,
0xb0
,
0x59
,
0x18
,
0xae
,
0xcd
,
0x51
,
0x26
,
0xe3
,
0xab
,
0xb7
,
0x6e
,
0xf6
,
0x3d
,
0xec
,
0x
7e
,
0x83
,
0x27
,
0x4f
,
0x60
,
0x5d
,
0xe4
,
0xc9
,
0xa2
,
0x72
,
0x0d
,
0x95
,
0x4b
,
0x2c
,
0x19
,
0x01
,
0x
d1
,
0x82
,
0x67
,
0x6f
,
0xea
,
0xda
,
0x75
,
0xd4
,
0xde
,
0x52
,
0x21
,
0xcf
,
0x61
,
0xcb
,
0xbf
,
0xa6
,
0x
53
,
0x21
,
0x5c
,
0xe5
,
0xb4
,
0x9c
,
0xd2
,
0x0d
,
0x3c
,
0x99
,
0xdb
,
0x4a
,
0xd1
,
0x2b
,
0x78
,
0xc8
,
0x
c4
,
0xb5
,
0xbc
,
0x12
,
0xcb
,
0xc7
,
0xef
,
0x0e
,
0x01
,
0xa9
,
0x77
,
0x27
,
0x78
,
0x09
,
0xdc
,
0x21
,
0x
78
,
0x26
,
0xfa
,
0x00
,
0x5b
,
0xf6
,
0x6a
,
0xde
,
0xd3
,
0x86
,
0x37
,
0x56
,
0x29
,
0x2d
,
0xaf
,
0xdd
,
0x
93
,
0x5b
,
0x65
,
0x15
,
0x8c
,
0xc6
,
0xd0
,
0x1f
,
0xbb
,
0xeb
,
0x7e
,
0xdf
,
0x9e
,
0x7d
,
0x68
,
0x49
,
0x
a5
,
0x64
,
0x51
,
0xb5
,
0xf4
,
0x28
,
0x7a
,
0x0d
,
0xf4
,
0xb3
,
0xd0
,
0xd3
,
0x34
,
0xe7
,
0xf7
,
0xee
,
0x1
9
,
0xfd
,
0x6c
,
0x40
,
0x9f
,
0x89
,
0x58
,
0xa4
,
0xca
,
0x2c
,
0x5b
,
0xf7
,
0xa1
,
0xa9
,
0xb4
,
0xb8
,
0x
f6
,
0x41
,
0xb3
,
0xe7
,
0x9f
,
0xed
,
0x3f
,
0xd2
,
0x89
,
0xa1
,
0x96
,
0x1c
,
0x40
,
0x3b
,
0x2e
,
0xb5
,
0x
16
,
0xb9
,
0xf1
,
0x49
,
0xf3
,
0x3f
,
0x5b
,
0x25
,
0x8f
,
0x32
,
0xd8
,
0x7e
,
0x2f
,
0x63
,
0x2c
,
0x2c
,
0x
a5
,
0x5e
,
0xdb
,
0x45
,
0xd9
,
0xe5
,
0x1d
,
0x7f
,
0x48
,
0x25
,
0x27
,
0xbb
,
0xb0
,
0x6a
,
0xb3
,
0x55
,
0x
e4
,
0xa6
,
0xa0
,
0x2b
,
0x18
,
0x65
,
0x7f
,
0x71
,
0xf4
,
0x03
,
0x76
,
0x98
,
0xf8
,
0xf6
,
0xb1
,
0x14
,
0x
fa
,
0x46
,
0xcc
,
0xce
,
0x33
,
0xa8
,
0x51
,
0xcb
,
0xa0
,
0x6d
,
0x08
,
0x63
,
0x7c
,
0x4a
,
0x3e
,
0x13
,
0x
10
,
0xd8
,
0x17
,
0x9e
,
0xa4
,
0x5a
,
0xb8
,
0x27
,
0xec
,
0x92
,
0x61
,
0x4e
,
0xcc
,
0x53
,
0xa8
,
0x89
,
0x
57
,
0xd9
,
0xa7
,
0xd0
,
0x57
,
0x78
,
0xc4
,
0x84
,
0xca
,
0x66
,
0xb7
,
0x7e
,
0xfe
,
0x08
,
0x7a
,
0x0b
,
0x
d1
,
0x6d
,
0x7f
,
0x44
,
0x70
,
0x87
,
0x4d
,
0xd7
,
0x3c
,
0x93
,
0x16
,
0xfe
,
0x99
,
0xbc
,
0xf8
,
0x1
3
,
0x
00
,
0x00
,
0xff
,
0xff
,
0x8d
,
0x4a
,
0xb0
,
0x36
,
0x73
,
0x06
,
0x00
,
0x00
,
// 68
6
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x94
,
0x55
,
0x
4d
,
0x6f
,
0x13
,
0x3b
,
0x14
,
0x55
,
0x
3a
,
0x99
,
0xa4
,
0xb9
,
0x49
,
0x3f
,
0x9e
,
0xdb
,
0x97
,
0xfa
,
0x55
,
0x4f
,
0x55
,
0x34
,
0x
8b
,
0xa7
,
0xe8
,
0x21
,
0x45
,
0xa8
,
0x08
,
0x51
,
0xb1
,
0x6b
,
0x29
,
0x12
,
0x48
,
0xa8
,
0x04
,
0x83
,
0x
d8
,
0xa2
,
0xc9
,
0xcc
,
0x6d
,
0x3b
,
0xed
,
0x64
,
0x6c
,
0x3c
,
0x9e
,
0x8a
,
0x88
,
0x3d
,
0xbf
,
0x92
,
0x
ff
,
0xc1
,
0x16
,
0xf9
,
0xda
,
0x43
,
0x3e
,
0x5a
,
0x44
,
0xbb
,
0xf3
,
0x39
,
0xf7
,
0x9c
,
0x3b
,
0xf1
,
0x
b5
,
0x7d
,
0x02
,
0x1b
,
0x4a
,
0xcb
,
0x2b
,
0x4c
,
0xcc
,
0x48
,
0x69
,
0x69
,
0x24
,
0x0b
,
0xcd
,
0x4c
,
0x
61
,
0xb9
,
0xbf
,
0x91
,
0x27
,
0x72
,
0x3a
,
0x95
,
0x85
,
0x63
,
0xa3
,
0xef
,
0x6b
,
0xb0
,
0x77
,
0x5c
,
0x
19
,
0x59
,
0xc8
,
0xe9
,
0x6c
,
0xac
,
0xa5
,
0x92
,
0x65
,
0x9c
,
0x8f
,
0x9d
,
0x8f
,
0x1d
,
0x41
,
0x57
,
0x
69
,
0xa9
,
0x3c
,
0xe4
,
0x8d
,
0x41
,
0x63
,
0xd8
,
0x3d
,
0xec
,
0x8f
,
0xa8
,
0xcf
,
0x68
,
0x45
,
0x2c
,
0x
16
,
0xa5
,
0xec
,
0x11
,
0xb4
,
0x93
,
0x4a
,
0x8b
,
0x2a
,
0x47
,
0xbe
,
0x46
,
0xae
,
0xbf
,
0xbc
,
0xcb
,
0x
52
,
0x2f
,
0x64
,
0x71
,
0x9e
,
0x5d
,
0x88
,
0x5a
,
0xc1
,
0xfa
,
0xd0
,
0x9a
,
0xc8
,
0x58
,
0xa7
,
0x25
,
0x
0f
,
0x06
,
0xc1
,
0xb0
,
0x23
,
0x3c
,
0x62
,
0x4f
,
0xa1
,
0x47
,
0xab
,
0x8f
,
0xd2
,
0xa0
,
0xc0
,
0x92
,
0x
37
,
0x97
,
0x3a
,
0x79
,
0xb6
,
0xca
,
0x8d
,
0x58
,
0x92
,
0xd9
,
0x6f
,
0xab
,
0x6a
,
0x62
,
0x11
,
0x0f
,
0x9
7
,
0x1c
,
0xe3
,
0x6a
,
0x92
,
0x67
,
0x09
,
0xc9
,
0x6a
,
0x85
,
0xfd
,
0x76
,
0x69
,
0x62
,
0x53
,
0x95
,
0x
bc
,
0x35
,
0x68
,
0x0c
,
0x43
,
0xe1
,
0x11
,
0xe3
,
0xd0
,
0x8e
,
0xd3
,
0x54
,
0x63
,
0x59
,
0xf2
,
0xf6
,
0x
a0
,
0x31
,
0xec
,
0x88
,
0x1a
,
0x5a
,
0xc7
,
0x25
,
0x66
,
0x17
,
0x97
,
0x86
,
0xaf
,
0x0f
,
0x1a
,
0xc3
,
0x
40
,
0x78
,
0xc4
,
0x76
,
0x21
,
0xcc
,
0x8a
,
0x14
,
0xbf
,
0xf0
,
0x0e
,
0x35
,
0x72
,
0x20
,
0xfa
,
0x11
,
0x
c0
,
0xd6
,
0xea
,
0x58
,
0x19
,
0x34
,
0x67
,
0x18
,
0x6b
,
0x9a
,
0x67
,
0x28
,
0x68
,
0x6d
,
0xdd
,
0x53
,
0x
59
,
0x98
,
0x4b
,
0x1a
,
0x57
,
0x28
,
0x1c
,
0x60
,
0xdb
,
0x10
,
0xa4
,
0xf1
,
0x8c
,
0x07
,
0xc4
,
0xd9
,
0x
25
,
0x3b
,
0x00
,
0x38
,
0xcf
,
0x74
,
0x69
,
0xde
,
0x9b
,
0xf8
,
0x02
,
0x69
,
0x22
,
0x1d
,
0xb1
,
0xc0
,
0x
b0
,
0x7f
,
0xa1
,
0x93
,
0xc7
,
0x75
,
0x39
,
0xa4
,
0xf2
,
0x9c
,
0xb0
,
0x6e
,
0xa5
,
0x65
,
0x5a
,
0x25
,
0x
26
,
0x93
,
0x05
,
0xed
,
0xb8
,
0x23
,
0x16
,
0x18
,
0x36
,
0x80
,
0x6e
,
0x8a
,
0x65
,
0xa2
,
0x33
,
0x45
,
0x
02
,
0xb7
,
0xf3
,
0x45
,
0xca
,
0x76
,
0x48
,
0x64
,
0x61
,
0x74
,
0x9c
,
0x18
,
0xa9
,
0x69
,
0x02
,
0x1
d
,
0x
b1
,
0xc0
,
0xd8
,
0xe9
,
0xc4
,
0x53
,
0x59
,
0x15
,
0x86
,
0xc6
,
0x10
,
0x08
,
0x8f
,
0x58
,
0x04
,
0x3d
,
0x
b7
,
0x3a
,
0x45
,
0x13
,
0x67
,
0x39
,
0x07
,
0x72
,
0x2e
,
0x71
,
0xd6
,
0x6b
,
0xe4
,
0x71
,
0x9a
,
0x6a
,
0x
de
,
0xa5
,
0xaa
,
0x47
,
0xec
,
0x7f
,
0xd8
,
0x2e
,
0x4d
,
0xac
,
0xcd
,
0x49
,
0x2e
,
0x93
,
0xeb
,
0x57
,
0x
6e
,
0xf6
,
0x3d
,
0xea
,
0x7e
,
0x8b
,
0x67
,
0xff
,
0xc1
,
0x26
,
0x16
,
0xe9
,
0xa2
,
0x72
,
0x83
,
0x94
,
0x
2b
,
0x2c
,
0x1b
,
0x01
,
0xd3
,
0x18
,
0xe7
,
0x2f
,
0x97
,
0xb5
,
0x9b
,
0xa4
,
0xbd
,
0xa3
,
0xc2
,
0x1e
,
0x
c3
,
0x8e
,
0x7f
,
0x4d
,
0x67
,
0x88
,
0xae
,
0x72
,
0x56
,
0x4d
,
0xf9
,
0x16
,
0x9d
,
0xcc
,
0x5d
,
0xa5
,
0x
e8
,
0x19
,
0xfc
,
0x2d
,
0xf0
,
0x46
,
0x5e
,
0xe3
,
0xea
,
0xf1
,
0xbb
,
0x43
,
0x20
,
0xea
,
0xf5
,
0x29
,
0x
5d
,
0x02
,
0x77
,
0x08
,
0x9e
,
0x89
,
0xde
,
0xc2
,
0x8e
,
0xbd
,
0x9a
,
0x0f
,
0xb4
,
0xd1
,
0x8d
,
0x55
,
0x
4a
,
0xcb
,
0x1b
,
0xf7
,
0xe4
,
0xd6
,
0x45
,
0x0d
,
0xa3
,
0x31
,
0xf4
,
0xc7
,
0xee
,
0xba
,
0x3f
,
0xb4
,
0x
67
,
0x1f
,
0x5a
,
0x52
,
0x29
,
0x59
,
0xd6
,
0x2d
,
0x3d
,
0x8a
,
0x9e
,
0x03
,
0xff
,
0x80
,
0x7a
,
0x9a
,
0x1
5
,
0xf1
,
0x83
,
0x7b
,
0x46
,
0xdf
,
0x1a
,
0xd0
,
0x17
,
0x98
,
0x60
,
0xa6
,
0xcc
,
0xaa
,
0xf5
,
0x10
,
0x
9a
,
0x4a
,
0xe3
,
0x8d
,
0x0f
,
0x9a
,
0x03
,
0xff
,
0x6c
,
0x7f
,
0x93
,
0x4e
,
0x82
,
0xb4
,
0xec
,
0x88
,
0x
92
,
0x46
,
0x63
,
0x61
,
0x7c
,
0xd2
,
0xfc
,
0xc9
,
0x56
,
0xcb
,
0xa3
,
0x1c
,
0x76
,
0xdf
,
0xc8
,
0x84
,
0x
0a
,
0x2b
,
0xa9
,
0xd7
,
0x76
,
0x51
,
0x76
,
0x75
,
0xcf
,
0x1f
,
0x52
,
0xcb
,
0xd9
,
0x3e
,
0xac
,
0xdb
,
0x
6c
,
0xc5
,
0xc2
,
0x94
,
0x7c
,
0x8d
,
0xa2
,
0xec
,
0x17
,
0x8e
,
0xbe
,
0xc2
,
0x9e
,
0xc0
,
0xcf
,
0xef
,
0x
2a
,
0xd4
,
0xb7
,
0x62
,
0x76
,
0x9e
,
0x41
,
0x8d
,
0xa5
,
0x0c
,
0xda
,
0x85
,
0x30
,
0xa1
,
0xa7
,
0xe4
,
0x
33
,
0x81
,
0x80
,
0x7d
,
0xe1
,
0x69
,
0xa6
,
0xd1
,
0x3d
,
0x61
,
0x97
,
0x0c
,
0x73
,
0x62
,
0x9e
,
0x42
,
0x
4d
,
0xba
,
0xca
,
0x3e
,
0x85
,
0x3e
,
0xc1
,
0x3f
,
0x02
,
0x55
,
0x3e
,
0xbb
,
0xf3
,
0xf3
,
0x27
,
0xd0
,
0x
5b
,
0x88
,
0x6e
,
0xfb
,
0x23
,
0x82
,
0x7b
,
0x6c
,
0x7a
,
0xc9
,
0x33
,
0x69
,
0xd1
,
0x9f
,
0xc9
,
0x9
3
,
0x
9f
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0x2e
,
0x98
,
0xa5
,
0xae
,
0x73
,
0x06
,
0x00
,
0x00
,
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment