Skip to content

Commit

Permalink
unified seals
Browse files Browse the repository at this point in the history
  • Loading branch information
zoedberg committed Jan 29, 2025
1 parent 2eefb09 commit 1f4769f
Show file tree
Hide file tree
Showing 10 changed files with 318 additions and 331 deletions.
3 changes: 1 addition & 2 deletions examples/rgb20.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use amplify::hex::FromHex;
use bp::dbc::Method;
use bp::{Outpoint, Txid};
use ifaces::Rgb20;
use rgbstd::containers::{ConsignmentExt, FileContent};
Expand All @@ -16,7 +15,7 @@ fn main() {
let beneficiary = Outpoint::new(beneficiary_txid, 1);

#[allow(clippy::inconsistent_digit_grouping)]
let contract = NonInflatableAsset::testnet(Method::TapretFirst, "ssi:anonymous","TEST", "Test asset", None, Precision::CentiMicro, [(beneficiary, 1_000_000_000_00u64)])
let contract = NonInflatableAsset::testnet("ssi:anonymous","TEST", "Test asset", None, Precision::CentiMicro, [(beneficiary, 1_000_000_000_00u64)])
.expect("invalid contract data");

let contract_id = contract.contract_id();
Expand Down
2 changes: 0 additions & 2 deletions examples/rgb21.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ use std::fs;
use amplify::confinement::SmallBlob;
use amplify::hex::FromHex;
use amplify::{Bytes, Wrapper};
use bp::dbc::Method;
use bp::Txid;
use ifaces::rgb21::{EmbeddedMedia, TokenData};
use ifaces::{IssuerWrapper, Rgb21};
Expand Down Expand Up @@ -50,7 +49,6 @@ fn main() {
stock.import_kit(kit).expect("invalid issuer kit");

let contract = stock.contract_builder(
Method::OpretFirst,
"ssi:anonymous",
UniqueDigitalAsset::schema().schema_id(),
"RGB21Unique",
Expand Down
3 changes: 1 addition & 2 deletions examples/rgb25.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use amplify::hex::FromHex;
use bp::dbc::Method;
use bp::{Outpoint, Txid};
use ifaces::{Rgb25, Rgb25Wrapper};
use rgbstd::containers::{ConsignmentExt, FileContent, Kit};
Expand All @@ -22,7 +21,7 @@ fn main() {
stock.import_kit(kit).expect("invalid issuer kit");

#[allow(clippy::inconsistent_digit_grouping)]
let contract = Rgb25Wrapper::<MemContract>::testnet::<CollectibleFungibleAsset>(Method::TapretFirst, "ssi:anonymous", "Test asset", Precision::CentiMicro)
let contract = Rgb25Wrapper::<MemContract>::testnet::<CollectibleFungibleAsset>("ssi:anonymous", "Test asset", Precision::CentiMicro)
.expect("invalid contract data")
.allocate(beneficiary, 1_000_000_000_00u64.into())
.expect("invalid allocations")
Expand Down
17 changes: 4 additions & 13 deletions src/nia.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ use aluvm::isa::opcodes::INSTR_PUTA;
use aluvm::isa::Instr;
use aluvm::library::{Lib, LibSite};
use amplify::confinement::Confined;
use bp::seals::txout::CloseMethod;
use bp::Outpoint;
use ifaces::{IssuerWrapper, Rgb20, Rgb20Wrapper, LNPBP_IDENTITY};
use rgbstd::containers::ValidContract;
Expand Down Expand Up @@ -189,22 +188,15 @@ impl IssuerWrapper for NonInflatableAsset {

impl NonInflatableAsset {
pub fn testnet(
close_method: CloseMethod,
issuer: &str,
ticker: &str,
name: &str,
details: Option<&str>,
precision: Precision,
allocations: impl IntoIterator<Item = (Outpoint, impl Into<Amount>)>,
) -> Result<ValidContract, InvalidRString> {
let mut issuer = Rgb20Wrapper::<MemContract>::testnet::<Self>(
close_method,
issuer,
ticker,
name,
details,
precision,
)?;
let mut issuer =
Rgb20Wrapper::<MemContract>::testnet::<Self>(issuer, ticker, name, details, precision)?;
for (beneficiary, amount) in allocations {
issuer = issuer
.allocate(beneficiary, amount)
Expand All @@ -218,7 +210,7 @@ impl NonInflatableAsset {
mod test {
use std::str::FromStr;

use bp::seals::txout::{BlindSeal, CloseMethod};
use bp::seals::txout::BlindSeal;
use bp::Txid;
use rgbstd::containers::{BuilderSeal, ConsignmentExt};
use rgbstd::interface::*;
Expand Down Expand Up @@ -261,7 +253,6 @@ mod test {
));

let builder = ContractBuilder::deterministic(
CloseMethod::OpretFirst,
Identity::default(),
NonInflatableAsset::FEATURES.iface(),
NonInflatableAsset::schema(),
Expand All @@ -283,7 +274,7 @@ mod test {

assert_eq!(
contract.contract_id().to_string(),
s!("rgb:YOuqECXu-dD83k1O-anQpcFl-JiArTWz-rxmrARH-uSuhdLE")
s!("rgb:hTs4dfUY-xcVG6Pc-IDdJOZ!-PketwpC-qNBGPPE-wZkBtpI")
);
}
}
Binary file modified test/rgb20-example.rgb
Binary file not shown.
180 changes: 90 additions & 90 deletions test/rgb20-example.rgba
Original file line number Diff line number Diff line change
@@ -1,98 +1,98 @@
-----BEGIN RGB CONSIGNMENT-----
Id: rgb:csg:YDroVEZJ-uaYavlz-uuwUnV6-sJULOoL-WkrJwP9-8eff6pY#time-phoenix-jester
Id: rgb:csg:S$QAvmLs-3dHythm-M87zZPe-8PXToKX-Nthx526-jNoL0dI#virus-arthur-denmark
Version: 2
Type: contract
Contract: rgb:X4ugXRyw-YMe94Ik-rAqeejF-YKZtFEv-QWg5I0N-DhXkBds
Contract: rgb:jr8Ow!SF-J33nyYC-qnfXvqu-JHjbTMU-Whc2VJc-Pvw7jUw
Schema: rgb:sch:RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana
Interface: RGB20Fixed
Check-SHA256: 66075975ed729d0fd68b91fa4536c644e0aa4eb9a89faf19656da27241703e0a
Check-SHA256: 5a6464037634aa0c9ffecbf737a89a7fbffddbcf7cd5812cbac40ad8b4e667cf

0ssI2002ZbAu%+5_6z)DVT-@j4Fp29h04O2(!&-{P<NN-JIMgxlaprv0000D0CRI`I$>^aZh38Qb#nj#
0RRKg2LS*Q00dM;Q&b96Wpi{OVRLh3bN~p^2LS*B00000+6Msu2mk=+c1RZh0004?4*>xH1I1_{3=qW1
JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL0RCRu4vk-THwXaec1RZh0000000000000000000001{4b
Zb@!tY+-a^Vr*qWb8}^Mkc}T^00000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_
VNqyvIaf7iEjUU=H+KL7&<6n5{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP3007Yk09%X4R5&sP
N*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L^+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwm
0004?4*>`O00Ynm0RRC2(FXwl0RY+u0RRC20iX{70RR600juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&
lb}4dCJ6ul0T3qu00E#60RaF10iX{70RR600juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&lb}4dCIA2c
00000000010SZz_LNYK$X?SI11XfR6<MVPB{R!&WDGXgX2u=0cfR=^v4L0bS8HU8WU)OVbJscBHuRauJ
B?krea%!Hk0(I6sCqhFtSs;lPKAoX!0r&<f`@aL{H!tSG|BE#(Vo+CtFZ->o;2qj;#=~;t^vidEtAC%I
lVX)dgF*wOtts}w(E1kon`A59t%UgjW&i*H0009FX>)URWn@!zaBysS0f>xPWn((=JC(Q18jXtb+QHlu
3zu?H+0@$e$59-PgaH5qb8uy20oVM#;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0RaF7bY*gFa{*h6
$5c2n1xg(vzLX+s=TnOlIwpu5x<(TMczEDkZ1({G0SaMrb7gc-cWz~J0ssL4000033~6(7b!B8zb#QQO
c>w?c00eVzWn%#V0RRPbWpZtE0RRC20SaMrb7gc-cWz~J0RaF1009nZb8~fNWKC&vZDDj{XaNXxa$#<B
W@T~!000013So0|Wpqz>Ze?--0RR613So0|Wpqz>Ze?--0RR600S|6(Zbfl*VQfKdZ*^{Ta{&rrb8}^M
Pj_x*asUAcbaG*Cb7p070uE_&b9H58O=)v&VRU0?WOH?JaBO)Xb8uy2X=Z6<WFTR4AYmY9Y;R&=Y#?x9
a$#*{bY*fNWN&42ZYOjgZDDj{XdrZGWguyDb9H58AaiwaaBO)XVQg$~V_|e<WFT~JAarPDAYpTJWpp5K
cWz~Ja}REBZbfl*VQfKdZ*^{Tb47G$Wgv5PZ6I%EAaihKZge1Fb8}^Mb0B1IWpi#PbRcDMbzy8EbZ;PZ
Xk{RCb!{MTW*}j6b7gdMAZczOZ*_EVb#!wy0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#
Q#LJOQD}2HS2boWI7&q~cL78;Au%+5_6z)DVT-@j4Fp29h04O2(!&-{P<NN-JIVefCp*@T*BEM1-nAxf
Qs?Xp-gq0!k(CoEP-QR-U^$SDA7%gm00003&<6x_aAjiv0002d2L*Ixa&2<}0002m2MlR*b9H58Q+04~
Y<U0x0004?4+>#(b7gc-cWz~J00000009su2y}8`ZgXa3asU7T000624{mR6MR9duY(Z^rb#8QX00000
0S;+%b9H58O=)v&VRU0?00000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyv
Iaf7iEjUU=H+KLd000X1U)Cjo-i6E2P9x&mnv%Qki+Oba;k67*blZ=H=TQh>UMA(m1w0!?L{VGDpk+Ov
DhHAKF%fNXr25$w;Zs!r0000000007000000000O%am^tlg}6qop{{FTg974FaQ3n`}K{nn9PGH_DcZ;
0agu`_oR6wvcum54rF6FkJew+k!36?Lqfl$`8gF)R2-|n!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@
LI6M<uyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!V}o0nEa3l8<>f1KA&4t&LI4m}^5aI1iE}_s79e
O?HmEkSbfMtWb&n35^vCNG$%?ywDnvz}K{0G9hl&cB^sg-3J`2zr)xjz`xPycM6D}`pk=G7OeqFKI{;-
SrsrMkU}5;FWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM1OfmAZf|a7*gwADFAe3iZ1@l19{2t5
VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td370(4qMgjGn~{4a
FkgwNr28QlFe*-S#jFZ=4d$x=UULI21Z8+*Y#{__VRL9B24rt+Y+-UF17U4&CIoP7b#p5OWMOk?Edyk4
bS?yXWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7
VRB`3UIuJ$WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~
0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX5rD{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R2B0b{Bo
6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N<*rD#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(iUtA%
ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN224rbxWpi{YTdJ&3iT??W6$?l#{@A?G8j--)
v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>R0ssVVZ*FDSKfd5E4dt|K_z&S8
_x<o;$Bma=F|FzDqP#$vGoEY#1aog~Wy=4LuCs~&piVX+Q;&{e*II?7Wy=Z<NW)n^eyVI=$4I^-7b@t4
MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxC37Wb8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?E
WpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1
b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajK
b7^=s1#@L~Wo|bGWoc(<bT|ZVX>MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr
2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}<N=gD>OG^S@OiTh_
O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}
Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzl
WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ
31dQXVPk7$bWD2$aA|O5d<kPha$#d@Wpq+~1$1d_WMzI<4VL$$c_gyK-vkb1V>yr3U)7OiEGa`mzoq#(
6;V_O`>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0000000000|Nj6000000TX!suv0v9m0LPL+
_79KRH|I99{YEOV7tT#ZPWpkW1p!`O$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S>WJ$5c2n1xg(v
zLX+s=TnOlIwpu5x<(TMczEDkZ1)BN1axJ1bQsH&ZxWNw7!I9y+{RnQn@2DI{;m7<jj@=_gDCb(0R?Sk
WNBgGhp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=xPa<PwCjOfp-EU><uvY*v*VyJx9`-=x0=4G6)zAUH(9jD
Ar2n^2welj7mcZoem^?%L*to!bRZoO^d~aUzM`;8jz95VA_Ef(X>Md`c4>2IVr*pq1Y~7nX#oXeWo~q7
0tIbpY;0)*31nqsX-#QtY-t1vV`Xl1X-#QtY-t4rZE0h2Zw3iuWn*bgX=8G42MS|lZggo)X=8G42n23n
Zf^+)WMyM%PGN3u3JGInZggo*VQy~=1aN6%Zwv@zWn*bjX=85<31ek$bZJm&V{Z-xW@T-3Zx0D%Wn*bZ
Wo>kC5DH^uZggozWo>kC5d>j$bZ-(~UdWP9bIo$ZB3zcMM|oyg?;CQQqXyz&yre57i5(9G0)iue^mXv<
w6)w(d6C|8kgcNIvvn*?253>L0b>G|!V30Z)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQD0sr<;4X&
8%0D>TgISeJ)kNFk^3<bZE>Xf*%skbRRcZ*dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi<nH
X?QjTb7gjAZZ`#GX=iA3I0SBKZe=+FUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*<UrI^>
UrS2@UrbB_UrkK{UrtT}Ur$d0Ur<m2Ur|v4Us6&6UsF>8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rL
VPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!D
b^&*H0eE-;d3gbPdSj|16zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG
%;GuzyszPjx|liD+IRr~000000093000000004kq#k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hf(
#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3J<sl6abXef+K+Rb@1)9wcJs8k=}EVt)knrbu3H<Xi=&GV*-}K
12h6(K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}<N=gD>OG^S@OiTh_O-%w{PEG<}Pfr40
P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3c
XlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQh>TceV><CW
mAB0rjf(Qx!Q2!JmvT|r)Y|jMQ5=qh1p!>4NmyOwH13hJ<Df9N@6^q=n!c$OFAyI$S+vI?4j-^^(~tJj
3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td36}){9I$nc6v6<E4*-nj($pTF88_k051ACjntmza&U>J{u?^n-
fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN21_K0id2nSMuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3
d!V}qb9G{Ld2nSf*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7ZV`yP=b7gcd*z$T8ClZi8YCe|m
_*?{lv>_T7tkE!8{87}TyWT9nkIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUm3Jkg?^%&nV|dnPbn
iKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3J<sl
6abXe1p-LEBNr;@ghiU?gEXK9KMDE{F?;HZBRuDVqlk6qmbmq;7a>H<(%oY0=TGqa6l5KfYJkC@$v(fA
a&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&jRjKPz&##IG7-47St%2#c>Z5R>jkTb_MK
Dq#SE<Vn}$%))Y#k9jx)*&ki4jZw^)YeO<P50WJJ$H7rec8<G{1p@gO2n5}(1bO(?uXL+B(gNn{L2}ut
xi<$D8ry%w457b|%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)sz%rRzT+P7s9j%|JK7ryjGlh`%f(kE
cQ`Dp)4jAIiU9@$26Sm-Yh`j<cPx&vU)M(f$C5$z50Bb6=QgwbMk=ru&P_#5`hlthZeeX@fL_JCQxeEQ
kVIXfYN5c23F83hGCI$$Y9m4lDXjoK2V`Y*VQFl0MYn(@h5^MUvO8NyVMYp&P~kr{`@Vw(r~naH<N-K{
32<^{V`+0~Z*E-!#21aJj($Hn^F!mAeRLol5%ecA&%UCtOO8MBUn1B)zThtn<+N=058)p7{qSMOjh9_9
t?BNfyg->Vo@@XB+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`<nKN_N?|2P1pz~<f5rCoWKZRyu3j3ckV4Jt
hm=C&OmaW<f`73y-iqLds5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=0
58)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`<nKN_N?|2P^{p2n
M9k9NV(jNn@cR^G9g}K+!Jx@Lzn5}xgo%8-2uQvo7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE
0000004D$d000000QnaP1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip#vHLVPOGcVgX}g0c2zWWn}?o
W&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdi$wZ
avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV+b0|P-!RR}^*L`g?QQ&a;|M?xV03jhEB(4Y?i2MYiJ
01F5J01E*E0La=00XZ-L(V!0j2Lu2B0RR910000
0ssI2002ZbAu%+5_6z)DVT-@j4Fp29h04O2(!&-{P<NN-JIMgj`k7|{0000D0CRI`I$>^aZh38Qb#nj#
00Ynm0RR#J1XM*+R0>pOb95kKb8}^M00_|s0RRI40002m2LS*G008KANEZMA00E#60RaF5#b_W55X8zn
H4zBE{5>8*IQdPKz-=hD&5@z8TU{v>0RR91#nkX@jo6il2mt7INEZMA000000000000000000005>9V!
Np5CrVRT_)Y-K@nb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJO
QD}2HS2boWI7&q~cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF
9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK
00E#60SEv91JDNn0098e2LS*90NMuu00962pbr56|Nj61tMHl9i|tU~UItecGJiUoGM{&Ru(|&K_B6qh
pgguF2><{A5GMct0iX{70RR61pbr56|Nj61tMHl9i|tU~UItecGJiUoGM{&Ru(|&K_B6qhpgguF00000
00000000323Q|WxGB8GIcx7Y+R!>~x^Kusb3F_D>3|%=0P4(J<mWA;RHt3oehQzyH*K>M391~BkJ``pp
2L<+WYM!zJb=Ey6LPIrKAc+<}ouO+1_y#HazXRttFXqDki#07`P*;L4`>n3v9olck!*b;G%XfgQf1jL_
VwFaNLIb3&DfYq8`WE_|WGmgRg!utx0000000RtZb8~fNWK(r;aBO)2h>TceV><CWmAB0rjf(Qx!Q2!J
mvT|r)Y|jMQ5=qh0RRMZaAjiw*ZjWY9`LALUza=D8w-q{e*4SCS0#5iEUeSLv>}QC0RRPbWpZtE0b7g5
R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L_3So0|Wpqz>Ze?-;009920009FX>)URWn@!zaBysS
0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~
WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-
cWz~J009Vea$#<BW@T~$4rz09b!B8tX>)C1bYo~_b9HcVY<VDaaAjj@W@%+)AYpSLVIXI0Z(?C=AaG%F
VQpn}WpW^7Z)J0CCv+ffVRU0?AarPDAZc@Rb!B8Ab9HcVY<VDIY;131VRU6=AarjabZBKDVRLh3bRchc
Ze?<F4{mR6MR9duY(Z^rb#8QXMRaIoAaiwXAa7<Mb8uyDbRc1Kb7gdMAY^Z4b8aVeAZ2lNVQe6DZy<DN
Wgv5PZ6I%EAYpTJWpr~OX>K5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuA
HZ5UMXmdGNHD)b1N<}w!0Yo+-F*JVm3;bhYi@((k1VXii%EFn_!xm3acbDfo$^IoLJJycZ7-~`8wI*&-
=j;sLcpJ-+l@lpYWiSk2IgpJXW&i*H000Bf2Ly9)Wn%yU007Yk1$1R{ZF2ws007zt3~6(7b!B8zb#QQO
c>n+a00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICHZf|ZyadlyAL2Yk!Zgg`100001
4rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2H
S2boWI7&q~cK{;*01EbB)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHiJR3zsQCr5KWj&xO
2a)?R5p8j#`q>uYQ&j)}00000000L700000000=vly4G~&lnD!c-+QY#hXVj|NgD}^^LKZ%!4TQO92G|
Rt=W-q<JK=!`}oBWMesx)?d|;Wh^N}LcgW?ITcY<9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb
06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4jZw^)YeO<P50WJJ$H7re
c8<G{DqE_oP>KHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD
6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7W0ssVVZ*FDSKfd5E4dt|K_z&S8_x<o;
$Bma=F|FzDqP#$vGoEY#1aog~Ww3D5kM`0GTIJXW70NMG9a>Vm-pkWcojB&*wsIf|mpsv;oy@J9k$WaE
Ux}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1b1MX7VRL9L17vS>
E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^3
a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8w
a&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)Aa<{~<8e<H$)BgyIuQd>p?nYaleMc%`0D|O6*W?8OW2z$*
=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@IL#ltp_Vr{><)W@$8mW*%&FhDhLgP$wKlOrtu`}L^1_A_h
d2nU14c`8MAg$P-$_ObTP^+;#QB8K<QE0)*aRs7&XJ%jqWNBw*b95?Os;p3n{|Sv13rH;f*u2mhk-*oq
T{0nV)po0K>)l1SfF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEVxS00eGtZe`d%zThtn<+N=058)p7
{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i!&yFls%&4!NWLQ%D(Hko
n&*Qwpawq)`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1
a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvR
D+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi<nH
X?QjTb7gjAZZ`#GX=iA3I0SBKZe=+IV{dG4ZaN8bWo>CgZ)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|U
adl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`
O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_*S<LULhaYh`py
TM1%eV{21vVRL9)3UhHna$#d@Wpq+q1!G}yWprK!Y;R;?b7)@(Vqs%zbZKL2U;$xa0b*hSV`BkiWC3Mm
0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX4~
V?uIaV{2t}OnU@yX>etH31dQXVPk7$bW(i<bZKm4Wqwu-miMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(
QB(-~saSFvJu_4WvuML_T7r2AV9eq<{=Bc@iMp6M)!KLf0000000030{{R3000016cPx&vU)M(f$C5$z
50Bb6=QgwbMk=ru&P_#5`hlti0bX9nl23EZa>OEBma9j3W?1hVa-5?E;$Xa_D<z2?4_k}JR5&sPN*yA;
lp<^AQ;QQiCWsumMiT;fc;H-Y_XYw4bY*yS7|WDz5|hsu4xM=1##_akM=$^Wt^4(jv6#$*DE3PM1#M+y
X<^`ps5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>w#RMNmyOwH13hJ<Df9N@6^q=n!c$OFAyI$S+vI?
4j%vrT?51yjj4`)KRWY6<C%SQARQ6(Co<2zqOePjKk;880}~5rZe(e8X>(~}Y-IohWMyM%0R>}aZggn^
1#M|;Y-s}tWMyM%O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&
ZwUxwWn*bhVQy~<31ek$bZJguZf^?&aA{+23<zXpV`)%nV{Z)!V`Xl1X;5inZw>`!Wo>kC4+&&tV`)ZZ
ZFFxC3S(t%bZJIqZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9
wcJs8k=}EVt)knrbu3H<Xi=&GV*-}K3ie;tC4t_B%h66F;@g^%yYGv6bpPSC3`}&}kA~+_UtT8V#RWVY
MMP0s#-L?ApehHE`!Nx1aisd$7U5G>13m<LWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^L
cs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO+0K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}<N=gD>
OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{N
VF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE
0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5
;yM1jui=Thm^szjcmV(a000000RI30000000DxY_yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJp}>8
I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(xqT91|EKCMyQK|uB0+zx9
Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1
Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-Lu
XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6fj96u3I`KP|
x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;SY72b?vb<OpfI=Z)Xle=zNr;25Fa;Lw8tS1AFy!KkM`0G
TIJXW70NMG9a>Vm-pkWcojB&*wsIf|mjwYFuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8M
Ag$P-$_ObTP^+;#QB8K<QE0)*aRs7&XJ%jq0|az=aAh2@b&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0
pt}cibz*dRaAhyp@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zK
Tm*o$AsQE~(J)#3QPiZn-Ymb5%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#
sHFQL7%(bMbH%I*cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v
0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAw<m5-D2$LPw@K`WF3=gfWe^2KEIc8
afFF{yvqNNuCs~&piVX+Q;&{e*II?7Wy=Z<NW)n^eyVI=#{~gDD{{BQuNq?vw$uLzi?1~hlkP@ao_$9u
VE}^UN!R4e!g7+2c{l^vA6>1DQOuZYLozrIk|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5
HwP6O+keCip}&vI>BTu$F{ZT5Vfz5z=cU#uHd8spTI%43qqz#IM%Vnl;~wy+U0;_w+8Yauo__nw#aAVF
I4rEwy|f{U0R{vHbZKL2WpZ10ERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN;<VQpoAUd6mq639W2
L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>W
aB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aUzM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf
>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;<AVI@cf0Yj>P#rE}NPvxSnUK**8Le1-k
ltSZ7azFKgf3Y*(ir|N+G?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfdm2o1a5C`W!OKy;4cm3v~2hf
;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67V9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;<AVI@fQtrsCg
%+lRr?B`GL`xImylWKs$pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?27200000
00000CjbBd00000`4<QT-L3?A_|>m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp
0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR
8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LLmSP0002cpbr5D3jhHC
3kU!J3jqQE$l3=1IWPdxpbr5D1ONa500000000

-----END RGB CONSIGNMENT-----
Binary file modified test/rgb21-example.rgb
Binary file not shown.
Loading

0 comments on commit 1f4769f

Please sign in to comment.