tnode_assoc method

TreapNode tnode_assoc(
  1. int rank$7,
  2. int krank$3,
  3. dynamic k$8,
  4. dynamic v$4,
  5. int cmp$6(
    1. dynamic x$1,
    2. dynamic n$1
    ),
)

Implementation

lcoc_core.TreapNode tnode_assoc(dc.int rank$7, dc.int krank$3, dc.dynamic k$8, dc.dynamic v$4, dc.int Function(dc.dynamic, dc.dynamic, ) cmp$6, ){
assert((){
late final dc.bool $if_$14;
if((lcoc_core.$EQ_.$_invoke$2((0==rank$7), arr.length.isEven, ))){
$if_$14=true;
}else{
$if_$14=false;
}
return $if_$14;
}(), (){
final dc.List<dc.dynamic> fl$61=(dc.List<dc.dynamic>.filled(3, (lcoc_core.symbol.$_invoke$2(null, "=", )), ));
final dc.List<dc.dynamic> fl$62=(dc.List<dc.dynamic>.filled(2, (lcoc_core.symbol.$_invoke$2(null, "zero?", )), ));
fl$62[1]=(lcoc_core.symbol.$_invoke$2(null, "rank", ));
final lcoc_core.PersistentList $112=lcoc_core.$_list_lit(fl$62, );
final dc.List<dc.dynamic> fl$63=(dc.List<dc.dynamic>.filled(4, const lcoc_core.Keyword(null, "line", 878494669, ), ));
fl$63[1]=7552;
fl$63[2]=const lcoc_core.Keyword(null, "column", 3362807310, );
fl$63[3]=16;
final lcoc_core.PersistentHashMap $113=lcoc_core.$_map_lit(fl$63, );
final dc.dynamic $114=lcoc_core.with_meta($112, $113, );
fl$61[1]=$114;
final dc.List<dc.dynamic> fl$64=(dc.List<dc.dynamic>.filled(2, (lcoc_core.symbol.$_invoke$2(null, "even?", )), ));
final dc.List<dc.dynamic> fl$65=(dc.List<dc.dynamic>.filled(2, (lcoc_core.symbol.$_invoke$2(null, "alength", )), ));
fl$65[1]=(lcoc_core.symbol.$_invoke$2(null, "arr", ));
final lcoc_core.PersistentList $116=lcoc_core.$_list_lit(fl$65, );
final dc.List<dc.dynamic> fl$66=(dc.List<dc.dynamic>.filled(4, const lcoc_core.Keyword(null, "line", 878494669, ), ));
fl$66[1]=7552;
fl$66[2]=const lcoc_core.Keyword(null, "column", 3362807310, );
fl$66[3]=36;
final lcoc_core.PersistentHashMap $117=lcoc_core.$_map_lit(fl$66, );
final dc.dynamic $118=lcoc_core.with_meta($116, $117, );
fl$64[1]=$118;
final lcoc_core.PersistentList $115=lcoc_core.$_list_lit(fl$64, );
final dc.List<dc.dynamic> fl$67=(dc.List<dc.dynamic>.filled(4, const lcoc_core.Keyword(null, "line", 878494669, ), ));
fl$67[1]=7552;
fl$67[2]=const lcoc_core.Keyword(null, "column", 3362807310, );
fl$67[3]=29;
final lcoc_core.PersistentHashMap $119=lcoc_core.$_map_lit(fl$67, );
final dc.dynamic $120=lcoc_core.with_meta($115, $119, );
fl$61[2]=$120;
final lcoc_core.PersistentList $111=lcoc_core.$_list_lit(fl$61, );
final dc.List<dc.dynamic> fl$68=(dc.List<dc.dynamic>.filled(4, const lcoc_core.Keyword(null, "line", 878494669, ), ));
fl$68[1]=7552;
fl$68[2]=const lcoc_core.Keyword(null, "column", 3362807310, );
fl$68[3]=13;
final lcoc_core.PersistentHashMap $121=lcoc_core.$_map_lit(fl$68, );
final dc.dynamic $122=lcoc_core.with_meta($111, $121, );
final dc.String $123=(lcoc_core.pr_str.$_invoke$1($122, ));
final dc.String $124=(lcoc_core.str.$_invoke$2("Assert failed: ", $123, ));
return $124;
}());
assert((){
late final dc.bool $if_$15;
if((krank$3<=rank$7)){
$if_$15=true;
}else{
$if_$15=false;
}
return $if_$15;
}(), (){
final dc.List<dc.dynamic> fl$69=(dc.List<dc.dynamic>.filled(3, (lcoc_core.symbol.$_invoke$2(null, "<=", )), ));
fl$69[1]=(lcoc_core.symbol.$_invoke$2(null, "krank", ));
fl$69[2]=(lcoc_core.symbol.$_invoke$2(null, "rank", ));
final lcoc_core.PersistentList $125=lcoc_core.$_list_lit(fl$69, );
final dc.List<dc.dynamic> fl$70=(dc.List<dc.dynamic>.filled(4, const lcoc_core.Keyword(null, "line", 878494669, ), ));
fl$70[1]=7553;
fl$70[2]=const lcoc_core.Keyword(null, "column", 3362807310, );
fl$70[3]=13;
final lcoc_core.PersistentHashMap $126=lcoc_core.$_map_lit(fl$70, );
final dc.dynamic $127=lcoc_core.with_meta($125, $126, );
final dc.String $128=(lcoc_core.pr_str.$_invoke$1($127, ));
final dc.String $129=(lcoc_core.str.$_invoke$2("Assert failed: ", $128, ));
return $129;
}());
if((0==rank$7)){
final dc.int i$10=(this.tnode_leaf_search(k$8, cmp$6, ));
if(i$10.isEven){
final dc.int size$8472_$AUTO_$19=(((i$10-0)+2)+(arr.length-(i$10+2)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$19=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$19, null, ));
final dc.int to$8469_$AUTO_$27=i$10;
late final dc.int pos$8467_$AUTO_$62;
dc.int i$8470_$AUTO_$27=0;
dc.int j$8471_$AUTO_$27=0;
do {
if((j$8471_$AUTO_$27<to$8469_$AUTO_$27)){
final dc.dynamic v$8083_$AUTO_$51=(arr[j$8471_$AUTO_$27]);
dest$8468_$AUTO_$19[i$8470_$AUTO_$27]=v$8083_$AUTO_$51;
i$8470_$AUTO_$27=(1+i$8470_$AUTO_$27);
j$8471_$AUTO_$27=(1+j$8471_$AUTO_$27);
continue;
}
pos$8467_$AUTO_$62=i$8470_$AUTO_$27;
break;
} while(true);
final dc.dynamic v$8083_$AUTO_$52=k$8;
dest$8468_$AUTO_$19[pos$8467_$AUTO_$62]=v$8083_$AUTO_$52;
final dc.int pos$8467_$AUTO_$63=(1+pos$8467_$AUTO_$62);
final dc.dynamic v$8083_$AUTO_$53=v$4;
dest$8468_$AUTO_$19[pos$8467_$AUTO_$63]=v$8083_$AUTO_$53;
final dc.int pos$8467_$AUTO_$64=(1+pos$8467_$AUTO_$63);
final dc.int to$8469_$AUTO_$28=arr.length;
late final dc.int pos$8467_$AUTO_$65;
dc.int i$8470_$AUTO_$28=pos$8467_$AUTO_$64;
dc.int j$8471_$AUTO_$28=(i$10+2);
do {
if((j$8471_$AUTO_$28<to$8469_$AUTO_$28)){
final dc.dynamic v$8083_$AUTO_$54=(arr[j$8471_$AUTO_$28]);
dest$8468_$AUTO_$19[i$8470_$AUTO_$28]=v$8083_$AUTO_$54;
i$8470_$AUTO_$28=(1+i$8470_$AUTO_$28);
j$8471_$AUTO_$28=(1+j$8471_$AUTO_$28);
continue;
}
pos$8467_$AUTO_$65=i$8470_$AUTO_$28;
break;
} while(true);
return lcoc_core.TreapNode(cnt, dest$8468_$AUTO_$19, );
}
final dc.int arg$7=(1+cnt);
final dc.int size$8472_$AUTO_$20=((((1+i$10)-0)+2)+(arr.length-(1+i$10)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$20=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$20, null, ));
final dc.int to$8469_$AUTO_$29=(1+i$10);
late final dc.int pos$8467_$AUTO_$67;
dc.int i$8470_$AUTO_$29=0;
dc.int j$8471_$AUTO_$29=0;
do {
if((j$8471_$AUTO_$29<to$8469_$AUTO_$29)){
final dc.dynamic v$8083_$AUTO_$55=(arr[j$8471_$AUTO_$29]);
dest$8468_$AUTO_$20[i$8470_$AUTO_$29]=v$8083_$AUTO_$55;
i$8470_$AUTO_$29=(1+i$8470_$AUTO_$29);
j$8471_$AUTO_$29=(1+j$8471_$AUTO_$29);
continue;
}
pos$8467_$AUTO_$67=i$8470_$AUTO_$29;
break;
} while(true);
final dc.dynamic v$8083_$AUTO_$56=k$8;
dest$8468_$AUTO_$20[pos$8467_$AUTO_$67]=v$8083_$AUTO_$56;
final dc.int pos$8467_$AUTO_$68=(1+pos$8467_$AUTO_$67);
final dc.dynamic v$8083_$AUTO_$57=v$4;
dest$8468_$AUTO_$20[pos$8467_$AUTO_$68]=v$8083_$AUTO_$57;
final dc.int pos$8467_$AUTO_$69=(1+pos$8467_$AUTO_$68);
final dc.int to$8469_$AUTO_$30=arr.length;
late final dc.int pos$8467_$AUTO_$70;
dc.int i$8470_$AUTO_$30=pos$8467_$AUTO_$69;
dc.int j$8471_$AUTO_$30=(1+i$10);
do {
if((j$8471_$AUTO_$30<to$8469_$AUTO_$30)){
final dc.dynamic v$8083_$AUTO_$58=(arr[j$8471_$AUTO_$30]);
dest$8468_$AUTO_$20[i$8470_$AUTO_$30]=v$8083_$AUTO_$58;
i$8470_$AUTO_$30=(1+i$8470_$AUTO_$30);
j$8471_$AUTO_$30=(1+j$8471_$AUTO_$30);
continue;
}
pos$8467_$AUTO_$70=i$8470_$AUTO_$30;
break;
} while(true);
return lcoc_core.TreapNode(arg$7, dest$8468_$AUTO_$20, );
}
if((lcoc_core.$EQ_.$_invoke$2(rank$7, krank$3, ))){
final dc.int i$11=(this.tnode_branch_search(k$8, cmp$6, ));
if(i$11.isOdd){
final dc.int size$8472_$AUTO_$21=(((i$11-0)+2)+(arr.length-(2+i$11)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$21=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$21, null, ));
final dc.int to$8469_$AUTO_$31=i$11;
late final dc.int pos$8467_$AUTO_$72;
dc.int i$8470_$AUTO_$31=0;
dc.int j$8471_$AUTO_$31=0;
do {
if((j$8471_$AUTO_$31<to$8469_$AUTO_$31)){
final dc.dynamic v$8083_$AUTO_$59=(arr[j$8471_$AUTO_$31]);
dest$8468_$AUTO_$21[i$8470_$AUTO_$31]=v$8083_$AUTO_$59;
i$8470_$AUTO_$31=(1+i$8470_$AUTO_$31);
j$8471_$AUTO_$31=(1+j$8471_$AUTO_$31);
continue;
}
pos$8467_$AUTO_$72=i$8470_$AUTO_$31;
break;
} while(true);
final dc.dynamic v$8083_$AUTO_$60=k$8;
dest$8468_$AUTO_$21[pos$8467_$AUTO_$72]=v$8083_$AUTO_$60;
final dc.int pos$8467_$AUTO_$73=(1+pos$8467_$AUTO_$72);
final lcoc_core.TreapNode v$8083_$AUTO_$61=(((arr[(1+i$11)]) as lcoc_core.TreapNode).tnode_set_leftmost((rank$7-1), k$8, v$4, ));
dest$8468_$AUTO_$21[pos$8467_$AUTO_$73]=v$8083_$AUTO_$61;
final dc.int pos$8467_$AUTO_$74=(1+pos$8467_$AUTO_$73);
final dc.int to$8469_$AUTO_$32=arr.length;
late final dc.int pos$8467_$AUTO_$75;
dc.int i$8470_$AUTO_$32=pos$8467_$AUTO_$74;
dc.int j$8471_$AUTO_$32=(2+i$11);
do {
if((j$8471_$AUTO_$32<to$8469_$AUTO_$32)){
final dc.dynamic v$8083_$AUTO_$62=(arr[j$8471_$AUTO_$32]);
dest$8468_$AUTO_$21[i$8470_$AUTO_$32]=v$8083_$AUTO_$62;
i$8470_$AUTO_$32=(1+i$8470_$AUTO_$32);
j$8471_$AUTO_$32=(1+j$8471_$AUTO_$32);
continue;
}
pos$8467_$AUTO_$75=i$8470_$AUTO_$32;
break;
} while(true);
return lcoc_core.TreapNode(cnt, dest$8468_$AUTO_$21, );
}
final dc.int size$8472_$AUTO_$22=(((i$11-0)+3)+(arr.length-(1+i$11)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$22=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$22, null, ));
final dc.int to$8469_$AUTO_$33=i$11;
late final dc.int pos$8467_$AUTO_$77;
dc.int i$8470_$AUTO_$33=0;
dc.int j$8471_$AUTO_$33=0;
do {
if((j$8471_$AUTO_$33<to$8469_$AUTO_$33)){
final dc.dynamic v$8083_$AUTO_$63=(arr[j$8471_$AUTO_$33]);
dest$8468_$AUTO_$22[i$8470_$AUTO_$33]=v$8083_$AUTO_$63;
i$8470_$AUTO_$33=(1+i$8470_$AUTO_$33);
j$8471_$AUTO_$33=(1+j$8471_$AUTO_$33);
continue;
}
pos$8467_$AUTO_$77=i$8470_$AUTO_$33;
break;
} while(true);
dest$8468_$AUTO_$22[pos$8467_$AUTO_$77]=null;
final dc.int pos$8467_$AUTO_$78=(1+pos$8467_$AUTO_$77);
final dc.dynamic v$8083_$AUTO_$65=k$8;
dest$8468_$AUTO_$22[pos$8467_$AUTO_$78]=v$8083_$AUTO_$65;
final dc.int pos$8467_$AUTO_$79=(1+pos$8467_$AUTO_$78);
dest$8468_$AUTO_$22[pos$8467_$AUTO_$79]=null;
final dc.int pos$8467_$AUTO_$80=(1+pos$8467_$AUTO_$79);
final dc.int to$8469_$AUTO_$34=arr.length;
late final dc.int pos$8467_$AUTO_$81;
dc.int i$8470_$AUTO_$34=pos$8467_$AUTO_$80;
dc.int j$8471_$AUTO_$34=(1+i$11);
do {
if((j$8471_$AUTO_$34<to$8469_$AUTO_$34)){
final dc.dynamic v$8083_$AUTO_$67=(arr[j$8471_$AUTO_$34]);
dest$8468_$AUTO_$22[i$8470_$AUTO_$34]=v$8083_$AUTO_$67;
i$8470_$AUTO_$34=(1+i$8470_$AUTO_$34);
j$8471_$AUTO_$34=(1+j$8471_$AUTO_$34);
continue;
}
pos$8467_$AUTO_$81=i$8470_$AUTO_$34;
break;
} while(true);
final dc.List<dc.dynamic> arr$PRIME_$1=dest$8468_$AUTO_$22;
final dc.int inc_cnt$1=(((arr[i$11]) as lcoc_core.TreapNode).tnode_split((rank$7-1), k$8, v$4, arr$PRIME_$1, i$11, arr$PRIME_$1, (2+i$11), cmp$6, ));
return lcoc_core.TreapNode((inc_cnt$1+cnt), arr$PRIME_$1, );
}
final dc.int i$12=(this.tnode_branch_search(k$8, cmp$6, ));
if(i$12.isOdd){
final lcoc_core.TreapNode lnode$3=((arr[(i$12-1)]) as lcoc_core.TreapNode);
final lcoc_core.TreapNode rnode$1=((arr[(1+i$12)]) as lcoc_core.TreapNode);
final dc.int size$8472_$AUTO_$23=((((i$12-1)-0)+1)+(arr.length-(2+i$12)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$23=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$23, null, ));
final dc.int to$8469_$AUTO_$35=(i$12-1);
late final dc.int pos$8467_$AUTO_$83;
dc.int i$8470_$AUTO_$35=0;
dc.int j$8471_$AUTO_$35=0;
do {
if((j$8471_$AUTO_$35<to$8469_$AUTO_$35)){
final dc.dynamic v$8083_$AUTO_$68=(arr[j$8471_$AUTO_$35]);
dest$8468_$AUTO_$23[i$8470_$AUTO_$35]=v$8083_$AUTO_$68;
i$8470_$AUTO_$35=(1+i$8470_$AUTO_$35);
j$8471_$AUTO_$35=(1+j$8471_$AUTO_$35);
continue;
}
pos$8467_$AUTO_$83=i$8470_$AUTO_$35;
break;
} while(true);
final lcoc_core.TreapNode v$8083_$AUTO_$69=(rnode$1.tnode_partial_zip(lnode$3, (rank$7-1), krank$3, k$8, v$4, ));
dest$8468_$AUTO_$23[pos$8467_$AUTO_$83]=v$8083_$AUTO_$69;
final dc.int pos$8467_$AUTO_$84=(1+pos$8467_$AUTO_$83);
final dc.int to$8469_$AUTO_$36=arr.length;
late final dc.int pos$8467_$AUTO_$85;
dc.int i$8470_$AUTO_$36=pos$8467_$AUTO_$84;
dc.int j$8471_$AUTO_$36=(2+i$12);
do {
if((j$8471_$AUTO_$36<to$8469_$AUTO_$36)){
final dc.dynamic v$8083_$AUTO_$70=(arr[j$8471_$AUTO_$36]);
dest$8468_$AUTO_$23[i$8470_$AUTO_$36]=v$8083_$AUTO_$70;
i$8470_$AUTO_$36=(1+i$8470_$AUTO_$36);
j$8471_$AUTO_$36=(1+j$8471_$AUTO_$36);
continue;
}
pos$8467_$AUTO_$85=i$8470_$AUTO_$36;
break;
} while(true);
return lcoc_core.TreapNode(cnt, dest$8468_$AUTO_$23, );
}
final lcoc_core.TreapNode child$3=((arr[i$12]) as lcoc_core.TreapNode);
final lcoc_core.TreapNode child$PRIME_$2=(child$3.tnode_assoc((rank$7-1), krank$3, k$8, v$4, cmp$6, ));
final dc.int arg$8=((cnt-child$3.cnt)+child$PRIME_$2.cnt);
final dc.int size$8472_$AUTO_$24=(((i$12-0)+1)+(arr.length-(1+i$12)));
final dc.List<dc.dynamic> dest$8468_$AUTO_$24=(dc.List<dc.dynamic>.filled(size$8472_$AUTO_$24, null, ));
final dc.int to$8469_$AUTO_$37=i$12;
late final dc.int pos$8467_$AUTO_$87;
dc.int i$8470_$AUTO_$37=0;
dc.int j$8471_$AUTO_$37=0;
do {
if((j$8471_$AUTO_$37<to$8469_$AUTO_$37)){
final dc.dynamic v$8083_$AUTO_$71=(arr[j$8471_$AUTO_$37]);
dest$8468_$AUTO_$24[i$8470_$AUTO_$37]=v$8083_$AUTO_$71;
i$8470_$AUTO_$37=(1+i$8470_$AUTO_$37);
j$8471_$AUTO_$37=(1+j$8471_$AUTO_$37);
continue;
}
pos$8467_$AUTO_$87=i$8470_$AUTO_$37;
break;
} while(true);
final lcoc_core.TreapNode v$8083_$AUTO_$72=child$PRIME_$2;
dest$8468_$AUTO_$24[pos$8467_$AUTO_$87]=v$8083_$AUTO_$72;
final dc.int pos$8467_$AUTO_$88=(1+pos$8467_$AUTO_$87);
final dc.int to$8469_$AUTO_$38=arr.length;
late final dc.int pos$8467_$AUTO_$89;
dc.int i$8470_$AUTO_$38=pos$8467_$AUTO_$88;
dc.int j$8471_$AUTO_$38=(1+i$12);
do {
if((j$8471_$AUTO_$38<to$8469_$AUTO_$38)){
final dc.dynamic v$8083_$AUTO_$73=(arr[j$8471_$AUTO_$38]);
dest$8468_$AUTO_$24[i$8470_$AUTO_$38]=v$8083_$AUTO_$73;
i$8470_$AUTO_$38=(1+i$8470_$AUTO_$38);
j$8471_$AUTO_$38=(1+j$8471_$AUTO_$38);
continue;
}
pos$8467_$AUTO_$89=i$8470_$AUTO_$38;
break;
} while(true);
return lcoc_core.TreapNode(arg$8, dest$8468_$AUTO_$24, );
}